Skip to content

Commit ccc9b83

Browse files
fix(menu): move s1/express focus indicator to right side for rtl (#3581)
Because `--spectrum-menu-item-focus-indicator-border-width` is set in `.spectrum-Menu`, but this custom prop relies on the definition of `--spectrum-menu-item-focus-indicator-direction-scalar`, which was scoped to `.spectrum-Menu-item`. This change defines that scalar custom property and thus moves the focus indicator to the right side for rtl. - Moves definition of `--spectrum-menu-item-focus-indicator-direction-scalar` to `.spectrum-Menu` to ensure it is available when `--spectrum-menu-item-focus-indicator-border-width` is set. - Use `--spectrum-menu-item-focus-indicator-width` rather than border-width in calculations that do not require scalar - Minor refactoring to better utilize custom properties
1 parent 2a821f5 commit ccc9b83

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

.changeset/green-ghosts-collect.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@spectrum-css/menu": patch
3+
---
4+
5+
Adjusts RTL mode menu item focus indicator side for S1/Express.

components/menu/dist/metadata.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@
8989
".spectrum-Menu-item:active > .spectrum-Menu-itemLabel",
9090
".spectrum-Menu-item:active > .spectrum-Menu-itemValue",
9191
".spectrum-Menu-item:active > .spectrum-Menu-sectionHeading",
92-
".spectrum-Menu-item:dir(rtl)",
9392
".spectrum-Menu-item:focus",
9493
".spectrum-Menu-item:focus > .spectrum-Menu-checkmark",
9594
".spectrum-Menu-item:focus > .spectrum-Menu-chevron",
@@ -134,11 +133,12 @@
134133
".spectrum-Menu.spectrum-Menu--sizeL",
135134
".spectrum-Menu.spectrum-Menu--sizeS",
136135
".spectrum-Menu.spectrum-Menu--sizeXL",
136+
".spectrum-Menu:dir(rtl)",
137137
".spectrum-Menu:lang(ja)",
138138
".spectrum-Menu:lang(ko)",
139139
".spectrum-Menu:lang(zh)",
140-
"[dir=\"rtl\"] .spectrum-Menu .spectrum-Menu-chevron",
141-
"[dir=\"rtl\"] .spectrum-Menu-item"
140+
"[dir=\"rtl\"] .spectrum-Menu",
141+
"[dir=\"rtl\"] .spectrum-Menu .spectrum-Menu-chevron"
142142
],
143143
"modifiers": [
144144
"--mod-menu-back-heading-color",

components/menu/index.css

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
.spectrum-Menu-item--collapsible.is-open {
6868
&:hover,
6969
&:focus-within {
70-
box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color)));
70+
box-shadow: var(--spectrum-menu-item-focus-indicator-shadow) var(--spectrum-menu-item-focus-indicator-border-width) 0 0 0 var(--spectrum-menu-item-focus-indicator-color-default);
7171
}
7272

7373
&:hover,
@@ -87,7 +87,7 @@
8787
--spectrum-menu-item-label-line-height: var(--spectrum-line-height-100);
8888
--spectrum-menu-item-label-line-height-cjk: var(--spectrum-cjk-line-height-100);
8989
--spectrum-menu-item-label-to-description-spacing: var(--spectrum-menu-item-label-to-description);
90-
--spectrum-menu-item-focus-indicator-width: var(--spectrum-border-width-200);
90+
--spectrum-menu-item-focus-indicator-width: var(--mod-menu-item-focus-indicator-width, var(--spectrum-border-width-200));
9191
--spectrum-menu-item-focus-indicator-color: var(--spectrum-blue-800);
9292
--spectrum-menu-item-label-to-value-area-min-spacing: var(--spectrum-spacing-100);
9393

@@ -167,7 +167,7 @@
167167
--spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start: calc((var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width)));
168168

169169
--spectrum-menu-item-focus-indicator-color-default: var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color)));
170-
--spectrum-menu-item-focus-indicator-border-width: calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1));
170+
--spectrum-menu-item-focus-indicator-border-width: calc(var(--spectrum-menu-item-focus-indicator-width) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1));
171171

172172
&.spectrum-Menu--sizeS {
173173
--spectrum-menu-item-min-height: var(--spectrum-component-height-75);
@@ -249,6 +249,10 @@
249249

250250
--spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-extra-large);
251251
}
252+
253+
&:dir(rtl) {
254+
--spectrum-menu-item-focus-indicator-direction-scalar: -1;
255+
}
252256
}
253257

254258
.spectrum-Menu {
@@ -396,7 +400,7 @@
396400
padding-block-end: var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text));
397401
padding-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content));
398402

399-
margin: calc((var(--spectrum-menu-item-focus-indicator-offset) + var(--spectrum-menu-item-focus-indicator-border-width)) * var(--spectrum-menu-item-spacing-multiplier));
403+
margin: calc((var(--spectrum-menu-item-focus-indicator-offset) + var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-spacing-multiplier));
400404
text-decoration: none;
401405

402406
display: grid;
@@ -484,10 +488,6 @@
484488
}
485489
}
486490

487-
&:dir(rtl) {
488-
--spectrum-menu-item-focus-indicator-direction-scalar: -1;
489-
}
490-
491491
&:hover {
492492
background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-hover, var(--spectrum-menu-item-background-color-hover)));
493493

@@ -603,7 +603,7 @@
603603
.spectrum-Menu-item:focus-visible,
604604
.spectrum-Menu-back:focus-visible {
605605
box-shadow: var(--spectrum-menu-item-focus-indicator-shadow) var(--spectrum-menu-item-focus-indicator-border-width) 0 0 0 var(--spectrum-menu-item-focus-indicator-color-default);
606-
outline: var(--spectrum-menu-item-focus-indicator-border-width) var(--spectrum-menu-item-focus-indicator-outline-style) var(--spectrum-menu-item-focus-indicator-color-default);
606+
outline: var(--spectrum-menu-item-focus-indicator-width) var(--spectrum-menu-item-focus-indicator-outline-style) var(--spectrum-menu-item-focus-indicator-color-default);
607607
outline-offset: var(--spectrum-menu-item-focus-indicator-offset);
608608
border-radius: var(--spectrum-menu-item-corner-radius);
609609
}

0 commit comments

Comments
 (0)