Skip to content

Commit 6239d49

Browse files
feat(tabs): high contrast mode-related fixes
Looking at WHCM revealed a few issues: - disabled selection indicator color was not being applied; instead disabled selected tab text was a different color - would have been great to have a test for disabled items, better late than never - we were setting an unneeded margin-inline-start on the focus indicator for the vertical variant that made WHCM look a little off - other refactoring and simplificaion of WHCM styles
1 parent 738ac94 commit 6239d49

File tree

3 files changed

+47
-46
lines changed

3 files changed

+47
-46
lines changed

components/tabs/dist/metadata.json

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,29 @@
44
".spectrum--large .spectrum-Tabs",
55
".spectrum--large .spectrum-Tabs.spectrum-Tabs--compact",
66
".spectrum-Tabs",
7-
".spectrum-Tabs .is-selected:before",
8-
".spectrum-Tabs .is-selected:focus",
9-
".spectrum-Tabs .is-selected:focus-visible",
107
".spectrum-Tabs .spectrum-Picker-button",
11-
".spectrum-Tabs .spectrum-Tabs-item .spectrum-Icon",
12-
".spectrum-Tabs .spectrum-Tabs-item .spectrum-Tabs-itemLabel",
8+
".spectrum-Tabs .spectrum-Tabs-item.is-selected",
9+
".spectrum-Tabs .spectrum-Tabs-item.is-selected .spectrum-Icon",
10+
".spectrum-Tabs .spectrum-Tabs-item.is-selected.is-disabled .spectrum-Icon",
11+
".spectrum-Tabs .spectrum-Tabs-item.is-selected.is-disabled .spectrum-Tabs-selectionIndicator",
1312
".spectrum-Tabs--horizontal",
1413
".spectrum-Tabs--horizontal .spectrum-Tabs-item",
1514
".spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator",
1615
".spectrum-Tabs--horizontal.spectrum-Tabs--compact",
1716
".spectrum-Tabs--vertical",
1817
".spectrum-Tabs--vertical .spectrum-Icon",
1918
".spectrum-Tabs--vertical .spectrum-Tabs-item",
20-
".spectrum-Tabs--vertical .spectrum-Tabs-item:before",
2119
".spectrum-Tabs--vertical .spectrum-Tabs-selectionIndicator",
2220
".spectrum-Tabs--vertical-right",
2321
".spectrum-Tabs--vertical-right .spectrum-Icon",
2422
".spectrum-Tabs--vertical-right .spectrum-Tabs-item",
25-
".spectrum-Tabs--vertical-right .spectrum-Tabs-item:before",
2623
".spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator",
2724
".spectrum-Tabs-item",
2825
".spectrum-Tabs-item .spectrum-Icon",
2926
".spectrum-Tabs-item .spectrum-Icon + .spectrum-Tabs-itemLabel",
3027
".spectrum-Tabs-item.is-disabled",
3128
".spectrum-Tabs-item.is-disabled .spectrum-Tabs-itemLabel",
29+
".spectrum-Tabs-item.is-disabled .spectrum-Tabs-selectionIndicator",
3230
".spectrum-Tabs-item.is-selected",
3331
".spectrum-Tabs-item.is-selected.is-disabled",
3432
".spectrum-Tabs-item.is-selected:focus-visible",
@@ -40,8 +38,7 @@
4038
".spectrum-Tabs-itemLabel",
4139
".spectrum-Tabs-itemLabel:empty",
4240
".spectrum-Tabs-selectionIndicator",
43-
".spectrum-Tabs.spectrum-Tabs--compact",
44-
".spectrum-Tabs.spectrum-Tabs--vertical.spectrum-Tabs--compact .spectrum-Tabs-item:before"
41+
".spectrum-Tabs.spectrum-Tabs--compact"
4542
],
4643
"modifiers": [
4744
"--mod-tabs-animation-duration",
@@ -162,14 +159,14 @@
162159
],
163160
"passthroughs": ["--mod-picker-block-size"],
164161
"high-contrast": [
162+
"--highcontrast-tabs-background-color-selected",
165163
"--highcontrast-tabs-color",
166164
"--highcontrast-tabs-color-disabled",
167165
"--highcontrast-tabs-color-hover",
168166
"--highcontrast-tabs-color-key-focus",
169167
"--highcontrast-tabs-color-selected",
170168
"--highcontrast-tabs-color-selected-hover",
171169
"--highcontrast-tabs-color-selected-key-focus",
172-
"--highcontrast-tabs-focus-indicator-background-color",
173170
"--highcontrast-tabs-focus-indicator-color",
174171
"--highcontrast-tabs-selection-indicator-color",
175172
"--highcontrast-tabs-selection-indicator-color-disabled"

components/tabs/index.css

Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@
181181
}
182182

183183
&.is-disabled {
184-
color: var(--spectrum-tabs-selection-indicator-color-disabled);
184+
color: var(--spectrum-tabs-color-disabled);
185185
}
186186
}
187187

@@ -192,6 +192,10 @@
192192
.spectrum-Tabs-itemLabel {
193193
cursor: default;
194194
}
195+
196+
.spectrum-Tabs-selectionIndicator {
197+
background-color: var(--spectrum-tabs-selection-indicator-color-disabled);
198+
}
195199
}
196200

197201
&:focus-visible {
@@ -275,10 +279,6 @@
275279

276280
margin-inline-start: var(--spectrum-tabs-start-to-edge);
277281
margin-inline-end: var(--spectrum-tabs-start-to-edge);
278-
279-
&::before {
280-
margin-inline-start: calc(-1 * var(--spectrum-tabs-focus-indicator-gap));
281-
}
282282
}
283283

284284
.spectrum-Icon {
@@ -302,49 +302,36 @@
302302

303303
@media (forced-colors: active) {
304304
.spectrum-Tabs {
305-
--highcontrast-tabs-selection-indicator-color: Highlight;
306-
--highcontrast-tabs-focus-indicator-color: CanvasText;
307-
--highcontrast-tabs-focus-indicator-background-color: Highlight;
308-
305+
--highcontrast-tabs-background-color-selected: SelectedItem;
306+
--highcontrast-tabs-color-selected: SelectedItemText;
307+
--highcontrast-tabs-color-selected-key-focus: SelectedItemText;
308+
--highcontrast-tabs-color-selected-hover: SelectedItemText;
309+
--highcontrast-tabs-selection-indicator-color: CanvasText;
310+
--highcontrast-tabs-focus-indicator-color: Highlight;
309311
--highcontrast-tabs-color: ButtonText;
310312
--highcontrast-tabs-color-hover: ButtonText;
311-
--highcontrast-tabs-color-selected: HighlightText;
312313
--highcontrast-tabs-color-key-focus: ButtonText;
313314
--highcontrast-tabs-color-disabled: GrayText;
314315
--highcontrast-tabs-selection-indicator-color-disabled: GrayText;
315-
--highcontrast-tabs-color-selected-hover: HighlightText;
316-
--highcontrast-tabs-color-selected-key-focus: HighlightText;
317316

318-
/* Prevents black box behind text on Highlight background */
317+
/* Prevents black box behind text on SelectedItem background */
319318
forced-color-adjust: none;
320319

321-
.spectrum-Tabs-item {
322-
.spectrum-Icon {
323-
z-index: 1;
324-
position: relative;
325-
}
326-
327-
.spectrum-Tabs-itemLabel {
328-
position: relative;
329-
z-index: 1;
330-
}
331-
}
332-
333-
.is-selected {
334-
&::before {
335-
background-color: var(--highcontrast-tabs-focus-indicator-background-color);
336-
}
320+
.spectrum-Tabs-item.is-selected {
321+
background-color: var(--highcontrast-tabs-background-color-selected);
337322

338-
&:focus,
339-
&:focus-visible {
323+
.spectrum-Icon {
340324
color: var(--highcontrast-tabs-color-selected);
341325
}
342-
}
343326

344-
&.spectrum-Tabs--vertical.spectrum-Tabs--compact .spectrum-Tabs-item {
345-
&::before {
346-
block-size: 100%;
347-
inset-block-start: 0;
327+
&.is-disabled {
328+
.spectrum-Icon {
329+
color: var(--highcontrast-tabs-color-disabled);
330+
}
331+
332+
.spectrum-Tabs-selectionIndicator {
333+
background-color: var(--highcontrast-tabs-selection-indicator-color-disabled);
334+
}
348335
}
349336
}
350337
}

components/tabs/stories/tabs.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,23 @@ export const TabsGroups = Variants({
7878
}
7979
]
8080
},
81+
{
82+
testHeading: "Disabled tabs",
83+
withStates: false,
84+
content: [
85+
{
86+
label: "Selected tab",
87+
icon: "Archive",
88+
isSelected: true,
89+
isDisabled: true,
90+
},
91+
{
92+
label: "Unselected tab",
93+
icon: "File",
94+
isDisabled: true,
95+
}
96+
]
97+
},
8198
{
8299
testHeading: "With anchor tags",
83100
useAnchors: true,

0 commit comments

Comments
 (0)