Skip to content

Conversation

@ShGKme
Copy link
Contributor

@ShGKme ShGKme commented Nov 7, 2025

☑️ Resolves

🖼️ Screenshots

🏚️ Before 🏡 After
image image

@ShGKme ShGKme requested a review from kra-mo November 7, 2025 21:10
@ShGKme ShGKme self-assigned this Nov 7, 2025
@ShGKme ShGKme added bug Something isn't working 2. developing labels Nov 7, 2025
@nickvergessen
Copy link
Member

Radio groups don't look well with long text even on a normal screen

Yeah, that immediately jumped my eye as well. Should stay with a dropdown there I think

@ShGKme ShGKme marked this pull request as draft November 10, 2025 18:32
@ShGKme ShGKme force-pushed the fix/settings-degisn branch from de19227 to b94f779 Compare November 10, 2025 19:42
@ShGKme ShGKme added this to the 🪴 Next Release milestone Nov 10, 2025
@ShGKme ShGKme marked this pull request as ready for review November 10, 2025 19:43
@ShGKme ShGKme changed the title [WIP] fix(talk/settings): new design fix(talk/settings): adjust to new design Nov 10, 2025
@ShGKme ShGKme force-pushed the fix/settings-degisn branch from b94f779 to 4346729 Compare November 10, 2025 20:07
@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 10, 2025

Full settings for the complete view image

Copy link
Contributor

@Antreesy Antreesy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise nice splitting

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall be better exposed in vue-lib, I guess?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exposing it would require keeping its API. I'd avoid it until we know well it works.
In this specific case it can be removed after:

</NcButton>
</NcFormBox>

<NcButton :class="itemClass" wide @click="modelValue = 1">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can put a 'Reset' button to the side of zoom scale (like this)?
Image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushed an update

import SettingsFormGroup from './components/SettingsFormGroup.vue'
import SettingsSelect from './components/SettingsSelect.vue'
import SettingsSubsection from './components/SettingsSubsection.vue'
import { ZOOM_MAX, ZOOM_MIN } from '../../../constants.js'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these constants still used?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, on the backend

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 11, 2025

Updated Zoom setting, see screenshots


<script setup lang="ts" generic="T extends string | null">
import { computed, useId, useTemplateRef } from 'vue'
import IconUnfoldMoreHorizontal from 'vue-material-design-icons/UnfoldMoreHorizontal.vue'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would use the arrow bottom that we use in the NcSelect components

Image

Or is that "deprecated" and will be replaced everywhere?
I think the double arrow makes less sense then expanding the list, even when the direction is "wrong"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would use the arrow bottom that we use in the NcSelect components

There is no way to detect the open state to make it UP on open like in a fully custom select.

That is why unfold (arrow up + down) is often the default select icon.

@nickvergessen

This comment was marked as off-topic.

@ShGKme

This comment was marked as off-topic.

@ShGKme

This comment was marked as off-topic.

kra-mo
kra-mo previously requested changes Nov 11, 2025
Copy link
Member

@kra-mo kra-mo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks quite nice. Some smaller points of feedback:

  • The reset split button could have a bit more left/right padding, enough to align the icon with trailing icons in FormBox* components.
  • The two options related to secondary speakers should probably have their own group to indicate that they are more related to each other than any other two notification options. Even better would be if they could be in the same box, but not sure if that works with the split button.
  • "Notifications and sounds" could be renamed to "Notifications & Sounds" for consistency
  • "Theme" could be moved below "Appearance" for structure.
  • The zoom controls are indeed a bit tricky. For now, I'm thinking:
Image

This gets rid of the slider but it makes it so you don't need to move your mouse too much to click on plus after you clicked on minus and vice versa.

It would get rid of the keyboard shortcuts, but that's probably fine? Ideally, they would be in the actual Keyboard shortcuts section anyway, but I'm guessing we don't want to insert them there?

@kra-mo
Copy link
Member

kra-mo commented Nov 11, 2025

I loved having icons :(

This is something I'd be willing to revisit later by the way. But probably worth it only after we move to Material Symbols.

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 11, 2025

The reset split button could have a bit more left/right padding, enough to align the icon with trailing icons in FormBox* components.

🥲👍

(Needs more hacking or new components or making our buttons FormBox compatible by default/additionally)

The two options related to secondary speakers should probably have their own group to indicate that they are more related to each other than any other two notification options. Even better would be if they could be in the same box, but not sure if that works with the split button.

👍

"Notifications and sounds" could be renamed to "Notifications & Sounds" for consistency

👍

It would get rid of the keyboard shortcuts, but that's probably fine? Ideally, they would be in the actual Keyboard shortcuts section anyway, but I'm guessing we don't want to insert them there?

Possible with some additional work, will do it later. Though, makes more sense if we have many desktop-specific shortcuts.

  • "Theme" could be moved below "Appearance" for structure.

It cannot, because from the new settings design structure, a radio group has the same structuring level as a general group (it is also a group).

Level 1: Settings Section (labelled)
Level 2: A group (form group or radio group, labelled)
Level 3: Visual box - subgroup (buttons in the radio group, list of switches)

The zoom controls are indeed a bit tricky. For now, I'm thinking:

Then:

  • Manual input is lost - not possible to select a value in between anymore
  • The button named as "Zoom" visually and from a11y has a "Reset" icon and acts like a reset, which is a semantic and accessibility issue
  • Slider is quite a classic element for the zoom, does it look bad :( ?

@kra-mo
Copy link
Member

kra-mo commented Nov 13, 2025

It cannot, because from the new settings design structure, a radio group has the same structuring level as a general group (it is also a group).

Sorry, I meant below as in just swapping their positions, not putting one inside the other. It's still more structured that way if a more general thing is above a more specific thing.

Manual input is lost - not possible to select a value in between anymore

If we do increments of 5%, that is probably fine. The difference between 103% and 105% is not very relevant. The difference between 100% and 105% could be.

The button named as "Zoom" visually and from a11y has a "Reset" icon and acts like a reset, which is a semantic and accessibility issue

Pf, I understand what you mean. I was thinking of for example Firefox, where you can click on the percentage to reset the zoom… maybe it is fine to change the a11y label/description manually here to accommodate this? I'm guessing that's what would be done if there was no original "Zoom" title in the UI and it was just the percentage (which was my original idea, I just decided that the title could be put here).

Slider is quite a classic element for the zoom, does it look bad :( ?

It doesn't look too bad haha, it's just that in this particular case, where it zooms the UI, I'm not sure how useful it is anyway, because:

  • If it applies the zoom adjustment immediately, then your cursor will move relative to the bar when the UI size changes, which makes adjustments in the slider difficult or impossible because it jumps around.
  • If it doesn't apply it immediately, and you have to manually apply it or let go of your cursor, it diminishes the value of the slider since you don't get any feedback and you have to press-release, press-release, press-release to see what happens, so it might as well be a button.

And as I said before, adjustments like 103% vs. 105% aren't that different and people would probably want a more round number anyway, so for coarser adjustments, I think a button makes more sense too.

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 13, 2025

If we do increments of 5%, that is probably fine. The difference between 103% and 105% is not very relevant. The difference between 100% and 105% could be.

Then if I want 400%, I need to click 60 times

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 13, 2025

  • If it applies the zoom adjustment immediately, then your cursor will move relative to the bar when the UI size changes, which makes adjustments in the slider difficult or impossible because it jumps around.

That is why it has an internal value, which only applies zoom once you released the mouse, but not while you are zooming.

So this case is explicitly handled.

@ShGKme ShGKme force-pushed the fix/settings-degisn branch from c36c8b4 to 0960176 Compare November 15, 2025 20:33
@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 15, 2025

  • Rebased to resolved conflict after dependabot merges

@kra-mo
Copy link
Member

kra-mo commented Nov 18, 2025

I'm not ready to lose functionality in favour of visuals...

To be clear: I am not advocating for my proposal in terms of visuals. There should never be a need to give up functionality in favor of it.

I'm only advocating for it from a practical POV:

  • The + and - buttons being far apart on the existing slider make them harder to use than if they were next to each other.
  • The two main advantages of a scale aren't here:
    • There is no clearly defined start and end (10%-200%? 50%-300%? both of these could be valid), so seeing the range is not practical.
    • The UI (and thereby the slider) zooming after the release of one's cursor makes fine adjustments just as hard as with buttons, as outlined above.

You raised a good point about it being difficult to jump big ranges in my initial proposal. I think with a dropdown and the buttons, we wouldn't lose anything by going with the more straightforward design and we would gain clarity/ease of use.

With that said, I do not think the slider looks particularly good, no. But if you choose to go ahead with it, I would try to adjust it to fit it into the style better.

Please let me know what you think.

@kra-mo
Copy link
Member

kra-mo commented Nov 18, 2025

Making it "below' doesn't actually make it structurally inside "Appearance". If we want to make it inside - we need 1 more structural level

Not semantically, but generally, it does. This type of organization is still an important part of the part of layouts like this imo and I used similar thinking to organize other settings dialogs.

"Theme" is the setting most of the users will use - I'd prefer to keep it on top

I did also think about theme being a more common option, but I thought that it has such a distinctive selector and it would still be pretty high up (you never have to scroll to see it) that it wouldn't be an issue.

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 18, 2025

The + and - buttons being far apart on the existing slider make them harder to use than if they were next to each other.

They used to be really far (on the opposite sides of the slider), but now they are on the sides of the input, quite close, aren't they?

There is no clearly defined start and end (10%-200%? 50%-300%? both of these could be valid), so seeing the range is not practical.

I can add the start, end and 100% labels

Please let me know what you think.

Regarding Zoom, I'm fine removing the slider, but I don't want to lose the manual input to have an exact zoom you need.

I did also think about theme being a more common option, but I thought that it has such a distinctive selector and it would still be pretty high up (you never have to scroll to see it) that it wouldn't be an issue.

We'll have more "Appearance" settings later (soon), including tray-related

@kra-mo
Copy link
Member

kra-mo commented Nov 18, 2025

They used to be really far (on the opposite sides of the slider), but now they are on the sides of the input, quite close, aren't they?

Better, but for buttons like this, it's always nice to have them directly next to each other.

Regarding Zoom, I'm fine removing the slider, but I don't want to lose the manual input to have an exact zoom you need.

Ah ok. In that case, can we have a combined dropdown and input?

image

That way, we still don't need reset as you can select 100%, but you can also manually enter the zoom level.

We'll have more "Appearance" settings later (soon), including tray-related

Ok, fair enough

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 19, 2025

Ah ok. In that case, can we have a combined dropdown and input?

Yes, but:

  1. We don't have a select in this design. The label will be outside.
  2. Either it will be wide (with an empty space after short "100%" string), or we have a short select with empty space in the row.

Also, the values are not beautiful to the end user

image

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 19, 2025

Another proposal, keeping the reset button and with an button to edit the value manually.

image

@nickvergessen nickvergessen dismissed kra-mo’s stale review November 19, 2025 13:33

Dismissing to move forward with something that should not be discussed this long

@kra-mo
Copy link
Member

kra-mo commented Nov 20, 2025

We don't have a select in this design. The label will be outside.

That's fine for now as long as the label is aligned (as I've been nagging you about in DMs, sorry!)

Either it will be wide (with an empty space after short "100%" string), or we have a short select with empty space in the row.

It being wide is OK. If there's gonna be whitespace either way, it might as well increase the click target instead of contribute to the empty void :)

Also, the values are not beautiful to the end user

Oh no, as I said earlier, if we go with a dropdown, I would show only larger fixed, amounts in there. Browsers and other apps do this with increments. So for example:

50%
75%
100%
125%
150%
200%
300%

Then the buttons could still adjust the zoom level by 5% increments for finer adjustments.

Another proposal, keeping the reset button and with an button to edit the value manually.

You know, that's fine by me, I like it. I'm still not entirely sure about the reset button as you can just select 100%, but it looks fine… And if there is no reset button, I'd also move the edit button to the right to keep the text aligned. But your call, really.

The only question: Would the edit button edit the value in-line? Would it spawn a dialog or just an input field nearby?

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 20, 2025

Oh no, as I said earlier, if we go with a dropdown, I would show only larger fixed, amounts in there. Browsers and other apps do this with increments. So for example:

50% 75% 100% 125% 150% 200% 300%

Then the buttons could still adjust the zoom level by 5% increments for finer adjustments.

It had a different change for a reason.

Moving from 50% to 100% (+50%) makes everything twice as large, which is a significant change.
Moving from 400% to 450% (also +50%) is not very noticeable and feels like moving from 100% to 125%.

In the web-browsers it is always annoying that you can Zoom with a mouse/keyboard, and the zooming in is slower and slower while zooming out is faster and faster.

That is why we use the factor.

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 20, 2025

The only question: Would the edit button edit the value in-line? Would it spawn a dialog or just an input field nearby?

Inline, replacing the select

@kra-mo
Copy link
Member

kra-mo commented Nov 20, 2025

The only question: Would the edit button edit the value in-line? Would it spawn a dialog or just an input field nearby?

Inline, replacing the select

Can I see how that looks?

@kra-mo
Copy link
Member

kra-mo commented Nov 20, 2025

That is why we use the factor.

Ok, that is very fair, it just indeed doesn't look very nice and people might want to match their zoom level for the app to one offered by the browser which usually round them to 5.

How about keeping them roughly the same, just rounding them a bit? This would mean the increments would be 5, 10, 15, 25:

60%
65%
70%
75%
80%
90%
100%
110%
120%
130%
145%
160%
175%
200%
225%
250%
275%
300%
325%

Signed-off-by: Grigorii K. Shartsev <[email protected]>
Signed-off-by: Grigorii K. Shartsev <[email protected]>
Signed-off-by: Grigorii K. Shartsev <[email protected]>
@ShGKme ShGKme force-pushed the fix/settings-degisn branch from 0960176 to fe9c156 Compare November 21, 2025 14:18
@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 21, 2025

  • Rebased to resolve conflict
  • Update to @nextcloud/vue v9.3.0
  • Reworked the zoom setting (again)

Screenshot is updated.

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 21, 2025

@Antreesy @DorraJaouad If you want to have a look again - let me know. Otherwise you can merge 👀

@ShGKme
Copy link
Contributor Author

ShGKme commented Nov 21, 2025

Additions about the Zoom:

Manual input replaces select and the edit button. Enter applies the zoom and focus the button again.
image

Select has only every second value rounded to 5:
image

Copy link
Contributor

@Antreesy Antreesy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code-wise OK, zoom value is not limited to min and max (+- buttons can still change it)

Signed-off-by: Grigorii K. Shartsev <[email protected]>
@ShGKme ShGKme force-pushed the fix/settings-degisn branch from fe9c156 to 833ebc8 Compare November 21, 2025 15:58
Comment on lines +85 to +104
<NcFormBox class="zoom-box__row" row>
<UiFormBoxSplitButton
:label="t('talk_desktop', 'Zoom out')"
hide-label
:disabled="modelValue / STEP_FACTOR < ZOOM_MIN"
@click="modelValue /= STEP_FACTOR">
<template #icon>
<IconMinus :size="20" />
</template>
</UiFormBoxSplitButton>

<UiFormBoxSplitButton
:label="t('talk_desktop', 'Zoom in')"
hide-label
:disabled="modelValue * STEP_FACTOR > ZOOM_MAX"
@click="modelValue *= STEP_FACTOR">
<template #icon>
<IconPlus :size="20" />
</template>
</UiFormBoxSplitButton>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code-wise OK, zoom value is not limited to min and max (+- buttons can still change it)

Fixed with disabled

image

@ShGKme ShGKme merged commit 7242d5c into main Nov 21, 2025
11 checks passed
@ShGKme ShGKme deleted the fix/settings-degisn branch November 21, 2025 16:00
@ShGKme ShGKme mentioned this pull request Nov 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants