Skip to content

Commit

Permalink
feat(ui5-avatar-group): update focus handling (#8550)
Browse files Browse the repository at this point in the history
Adjusted ui5-avatar-group focus display rules. On desktop, focus outline
is always visible. For mobile, focus outline only appears with an
external keyboard, it remains hidden for touch focus.

Related to: #8320
  • Loading branch information
kgogov committed Apr 15, 2024
1 parent 1acae01 commit 0bb5c9d
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
5 changes: 5 additions & 0 deletions packages/main/src/AvatarGroup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
isEnter,
isSpace,
} from "@ui5/webcomponents-base/dist/Keys.js";
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
import Button from "./Button.js";
import AvatarSize from "./types/AvatarSize.js";
import AvatarGroupType from "./types/AvatarGroupType.js";
Expand Down Expand Up @@ -393,6 +394,10 @@ class AvatarGroup extends UI5Element {
}

onEnterDOM() {
if (isDesktop()) {
this.setAttribute("desktop", "");
}

ResizeHandler.register(this, this._onResizeHandler);
}

Expand Down
21 changes: 18 additions & 3 deletions packages/main/src/themes/AvatarGroup.css
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
outline: none;
}

:host([type="Group"]) .ui5-avatar-group-items:focus {
:host([type="Group"][desktop]) .ui5-avatar-group-items:focus-within,
:host([type="Group"]) .ui5-avatar-group-items:focus-visible {
outline: var(--_ui5_avatar_outline);
outline-offset: var(--_ui5_avatar_focus_offset);
border-radius: var(--_ui5_avatar_group_focus_border_radius);
Expand All @@ -38,6 +39,14 @@
pointer-events: none;
}

.ui5-avatar-group-overflow-btn {
overflow: visible;
}

.ui5-avatar-group-overflow-btn::part(button) {
min-width: auto;
}

::slotted([ui5-button]:not([hidden])),
.ui5-avatar-group-overflow-btn:not([hidden]) {
--_ui5_button_base_padding: 0;
Expand All @@ -47,10 +56,16 @@
z-index: 0; /* prevent last visible avatar from covering half of the button */
}

::slotted([ui5-button][focused]),
.ui5-avatar-group-overflow-btn[focused] {
::slotted([ui5-button][desktop]:focus-within),
.ui5-avatar-group-overflow-btn[desktop]:focus-within {
outline: var(--_ui5_avatar_outline);
outline-offset: var(--_ui5_avatar_overflow_button_focus_offset);
}

.ui5-avatar-group-overflow-btn::part(button):focus-visible:after {
outline: var(--_ui5_avatar_outline);
outline-offset: var(--_ui5_avatar_focus_offset);
border-radius: 50%;
}

.ui5-avatar-group-overflow-btn.ui5-avatar-group-overflow-btn-xs {
Expand Down
2 changes: 2 additions & 0 deletions packages/main/src/themes/base/Avatar-parameters.css
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
--_ui5_avatar_focus_width: 0.0625rem;
--_ui5_avatar_focus_color: var(--sapContent_FocusColor);

--_ui5_avatar_overflow_button_focus_offset: 0.0625rem;

--_ui5_avatar_fontsize_XS: 0.75rem;
--_ui5_avatar_fontsize_S: 1.125rem;
--_ui5_avatar_fontsize_M: 1.625rem;
Expand Down

0 comments on commit 0bb5c9d

Please sign in to comment.