Skip to content

Commit f3fa4d4

Browse files
committed
fix: updates after feedback from design
1 parent 904da35 commit f3fa4d4

File tree

16 files changed

+306
-257
lines changed

16 files changed

+306
-257
lines changed

components/actionbutton/dist/metadata.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@
1414
".spectrum-ActionButton-label",
1515
".spectrum-ActionButton-label:empty",
1616
".spectrum-ActionButton.is-disabled",
17-
".spectrum-ActionButton.spectrum-ActionButton--emphasized:has([aria-pressed=\"true\"])",
17+
".spectrum-ActionButton.spectrum-ActionButton--emphasized:is([aria-pressed=\"true\"])",
1818
".spectrum-ActionButton.spectrum-ActionButton--quiet",
19-
".spectrum-ActionButton.spectrum-ActionButton--quiet:disabled:not(:has([aria-pressed=\"true\"]))",
20-
".spectrum-ActionButton.spectrum-ActionButton--quiet:has([aria-pressed=\"true\"])",
19+
".spectrum-ActionButton.spectrum-ActionButton--quiet:disabled:not(:is([aria-pressed=\"true\"]))",
20+
".spectrum-ActionButton.spectrum-ActionButton--quiet:is([aria-pressed=\"true\"])",
2121
".spectrum-ActionButton.spectrum-ActionButton--staticBlack",
2222
".spectrum-ActionButton.spectrum-ActionButton--staticBlack.spectrum-ActionButton--quiet",
23-
".spectrum-ActionButton.spectrum-ActionButton--staticBlack:has([aria-pressed=\"true\"])",
23+
".spectrum-ActionButton.spectrum-ActionButton--staticBlack:is([aria-pressed=\"true\"])",
2424
".spectrum-ActionButton.spectrum-ActionButton--staticWhite",
2525
".spectrum-ActionButton.spectrum-ActionButton--staticWhite.spectrum-ActionButton--quiet",
26-
".spectrum-ActionButton.spectrum-ActionButton--staticWhite:has([aria-pressed=\"true\"])",
26+
".spectrum-ActionButton.spectrum-ActionButton--staticWhite:is([aria-pressed=\"true\"])",
2727
".spectrum-ActionButton::-moz-focus-inner",
2828
".spectrum-ActionButton:active",
2929
".spectrum-ActionButton:after",
@@ -33,8 +33,8 @@
3333
".spectrum-ActionButton:focus-visible",
3434
".spectrum-ActionButton:focus-visible:after",
3535
".spectrum-ActionButton:has(.spectrum-ActionButton-icon)",
36-
".spectrum-ActionButton:has([aria-pressed=\"true\"])",
3736
".spectrum-ActionButton:hover",
37+
".spectrum-ActionButton:is([aria-pressed=\"true\"])",
3838
".spectrum-ActionButton:not(:has(.spectrum-ActionButton-label))",
3939
"a.spectrum-ActionButton"
4040
],

components/actionbutton/index.css

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ governing permissions and limitations under the License.
4747
--spectrum-actionbutton-line-height: var(--spectrum-actionbutton-height);
4848

4949
--spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-100);
50-
--spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-medium);
50+
--spectrum-actionbutton-edge-to-hold-icon: var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-action-button-edge-to-hold-icon-medium));
5151
--spectrum-actionbutton-edge-to-visual: var(--spectrum-component-edge-to-visual-100);
5252
--spectrum-actionbutton-edge-to-text: var(--spectrum-component-edge-to-text-100);
5353
--spectrum-actionbutton-edge-to-visual-only: var(--spectrum-component-edge-to-visual-only-100);
@@ -66,7 +66,7 @@ governing permissions and limitations under the License.
6666
--spectrum-actionbutton-background-color-focus: var(--spectrum-gray-200);
6767
--spectrum-actionbutton-background-color-disabled: transparent;
6868

69-
&:has([aria-pressed="true"]) {
69+
&:is([aria-pressed="true"]) {
7070
--spectrum-actionbutton-background-color-disabled: var(--spectrum-disabled-background-color);
7171
}
7272
}
@@ -119,7 +119,7 @@ governing permissions and limitations under the License.
119119
}
120120
}
121121

122-
&:has([aria-pressed="true"]) {
122+
&:is([aria-pressed="true"]) {
123123
--mod-actionbutton-background-color-default: var(--mod-actionbutton-background-color-default-selected, var(--spectrum-neutral-background-color-selected-default));
124124
--mod-actionbutton-background-color-hover: var(--mod-actionbutton-background-color-hover-selected, var(--spectrum-neutral-background-color-selected-hover));
125125
--mod-actionbutton-background-color-down: var(--mod-actionbutton-background-color-down-selected, var(--spectrum-neutral-background-color-selected-down));
@@ -179,7 +179,7 @@ governing permissions and limitations under the License.
179179
--spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-50);
180180
--spectrum-actionbutton-font-size: var(--spectrum-font-size-50);
181181
--spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-50);
182-
--spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-small);
182+
--spectrum-actionbutton-edge-to-hold-icon: var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-action-button-edge-to-hold-icon-extra-small));
183183
--spectrum-actionbutton-edge-to-visual: var(--spectrum-component-edge-to-visual-50);
184184
--spectrum-actionbutton-edge-to-text: var(--spectrum-component-edge-to-text-50);
185185
--spectrum-actionbutton-edge-to-visual-only: var(--spectrum-component-edge-to-visual-only-50);
@@ -196,7 +196,7 @@ governing permissions and limitations under the License.
196196
--spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-75);
197197
--spectrum-actionbutton-font-size: var(--spectrum-font-size-75);
198198
--spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-75);
199-
--spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-small);
199+
--spectrum-actionbutton-edge-to-hold-icon: var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-action-button-edge-to-hold-icon-small));
200200
--spectrum-actionbutton-edge-to-visual: var(--spectrum-component-edge-to-visual-75);
201201
--spectrum-actionbutton-edge-to-text: var(--spectrum-component-edge-to-text-75);
202202
--spectrum-actionbutton-edge-to-visual-only: var(--spectrum-component-edge-to-visual-only-75);
@@ -213,7 +213,7 @@ governing permissions and limitations under the License.
213213
--spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-200);
214214
--spectrum-actionbutton-font-size: var(--spectrum-font-size-200);
215215
--spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-200);
216-
--spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-large);
216+
--spectrum-actionbutton-edge-to-hold-icon: var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-action-button-edge-to-hold-icon-large));
217217
--spectrum-actionbutton-edge-to-visual: var(--spectrum-component-edge-to-visual-200);
218218
--spectrum-actionbutton-edge-to-text: var(--spectrum-component-edge-to-text-200);
219219
--spectrum-actionbutton-edge-to-visual-only: var(--spectrum-component-edge-to-visual-only-200);
@@ -228,7 +228,7 @@ governing permissions and limitations under the License.
228228
--spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-300);
229229
--spectrum-actionbutton-font-size: var(--spectrum-font-size-300);
230230
--spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-300);
231-
--spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-large);
231+
--spectrum-actionbutton-edge-to-hold-icon: var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-action-button-edge-to-hold-icon-extra-large));
232232
--spectrum-actionbutton-edge-to-visual: var(--spectrum-component-edge-to-visual-300);
233233
--spectrum-actionbutton-edge-to-text: var(--spectrum-component-edge-to-text-300);
234234
--spectrum-actionbutton-edge-to-visual-only: var(--spectrum-component-edge-to-visual-only-300);
@@ -253,6 +253,18 @@ governing permissions and limitations under the License.
253253
background-color: var(--highcontrast-actionbutton-background-color-default, var(--mod-actionbutton-background-color-default, var(--spectrum-actionbutton-background-color-default)));
254254
color: var(--highcontrast-actionbutton-content-color-default, var(--mod-actionbutton-content-color-default, var(--spectrum-actionbutton-content-color-default)));
255255

256+
transition: border-color var(--highcontrast-actionbutton-animation-duration, var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration))) ease-in-out;
257+
258+
&::after {
259+
position: absolute;
260+
inset: 0;
261+
margin: calc((var(--mod-actionbutton-focus-indicator-gap, var(--spectrum-actionbutton-focus-indicator-gap)) + var(--spectrum-actionbutton-border-width)) * -1);
262+
border-radius: var(--mod-actionbutton-focus-indicator-border-radius, var(--spectrum-actionbutton-focus-indicator-border-radius));
263+
transition: box-shadow var(--highcontrast-actionbutton-animation-duration, var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration))) ease-in-out;
264+
pointer-events: none;
265+
content: "";
266+
}
267+
256268
&:hover {
257269
background-color: var(--highcontrast-actionbutton-background-color-default, var(--mod-actionbutton-background-color-hover, var(--spectrum-actionbutton-background-color-hover)));
258270
color: var(--highcontrast-actionbutton-content-color-default, var(--mod-actionbutton-content-color-hover, var(--spectrum-actionbutton-content-color-hover)));
@@ -261,6 +273,13 @@ governing permissions and limitations under the License.
261273
&:focus-visible {
262274
background-color: var(--highcontrast-actionbutton-background-color-default, var(--mod-actionbutton-background-color-focus, var(--spectrum-actionbutton-background-color-focus)));
263275
color: var(--highcontrast-actionbutton-content-color-default, var(--mod-actionbutton-content-color-focus, var(--spectrum-actionbutton-content-color-focus)));
276+
277+
box-shadow: none;
278+
outline: none;
279+
280+
&::after {
281+
box-shadow: 0 0 0 var(--mod-actionbutton-focus-indicator-thickness, var(--spectrum-actionbutton-focus-indicator-thickness)) var(--highcontrast-actionbutton-focus-indicator-color, var(--mod-actionbutton-focus-indicator-color, var(--spectrum-actionbutton-focus-indicator-color)));
282+
}
264283
}
265284

266285
&:active {
@@ -314,34 +333,22 @@ a.spectrum-ActionButton {
314333

315334
.spectrum-ActionButton-hold {
316335
position: absolute;
317-
inset-inline-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--spectrum-actionbutton-border-width));
318-
inset-block-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--spectrum-actionbutton-border-width));
336+
inset-inline-end: calc(var(--spectrum-actionbutton-edge-to-hold-icon) - var(--spectrum-actionbutton-border-width));
337+
inset-block-end: calc(var(--spectrum-actionbutton-edge-to-hold-icon) - var(--spectrum-actionbutton-border-width));
338+
display: block;
319339
color: inherit;
340+
background-color: currentColor;
320341
transform: var(--spectrum-logical-rotation);
321-
}
322342

323-
/* Focus indicator */
324-
.spectrum-ActionButton {
325-
transition: border-color var(--highcontrast-actionbutton-animation-duration, var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration))) ease-in-out;
326-
327-
&::after {
328-
position: absolute;
329-
inset: 0;
330-
margin: calc((var(--mod-actionbutton-focus-indicator-gap, var(--spectrum-actionbutton-focus-indicator-gap)) + var(--spectrum-actionbutton-border-width)) * -1);
331-
border-radius: var(--mod-actionbutton-focus-indicator-border-radius, var(--spectrum-actionbutton-focus-indicator-border-radius));
332-
transition: box-shadow var(--highcontrast-actionbutton-animation-duration, var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration))) ease-in-out;
333-
pointer-events: none;
334-
content: "";
335-
}
336-
337-
&:focus-visible {
338-
box-shadow: none;
339-
outline: none;
343+
inline-size: 5px;
344+
block-size: 5px;
340345

341-
&::after {
342-
box-shadow: 0 0 0 var(--mod-actionbutton-focus-indicator-thickness, var(--spectrum-actionbutton-focus-indicator-thickness)) var(--highcontrast-actionbutton-focus-indicator-color, var(--mod-actionbutton-focus-indicator-color, var(--spectrum-actionbutton-focus-indicator-color)));
343-
}
344-
}
346+
/**
347+
* A few things to note here:
348+
* - cw = clockwise, ccw = counter-clockwise
349+
*/
350+
aspect-ratio: 1;
351+
clip-path: shape(from 2.96% 82.89%, line to 82.92% 2.91%, arc to 100% 9.98% of 9.89% 9.84% small cw, vline to 84.97%, arc by -15.02% 15.03% of 15.02% 15.03% small cw, hline to 10.03%, arc by -7.09% -17.11% of 10.01% 10.02% small cw);
345352
}
346353

347354
@media (forced-colors: active) {
@@ -389,7 +396,7 @@ a.spectrum-ActionButton {
389396
--highcontrast-actionbutton-background-color-disabled: Canvas;
390397
--highcontrast-actionbutton-content-color-default: CanvasText;
391398

392-
&:disabled:not(:has([aria-pressed="true"])) {
399+
&:disabled:not(:is([aria-pressed="true"])) {
393400
--highcontrast-actionbutton-border-color: Canvas;
394401
}
395402
}
@@ -402,7 +409,7 @@ a.spectrum-ActionButton {
402409
}
403410

404411
/* Selected always shows as a solid highlighted color. */
405-
&:has([aria-pressed="true"]) {
412+
&:is([aria-pressed="true"]) {
406413
--highcontrast-actionbutton-border-color: Highlight;
407414
--highcontrast-actionbutton-background-color-default: Highlight;
408415
--highcontrast-actionbutton-content-color-default: HighlightText;

components/actionbutton/stories/actionbutton.stories.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,17 @@ export default {
6868
control: "select",
6969
options: ["true", "menu", "listbox", "tree", "grid", "dialog", "false"],
7070
},
71+
showPopup: {
72+
name: "Show popup",
73+
description: "If the button triggers a popup action, this should be set to reflect the type of element that pops-up.",
74+
type: { name: "boolean" },
75+
table: {
76+
type: { summary: "boolean" },
77+
category: "Accessibility",
78+
},
79+
control: "boolean",
80+
if: { arg: "hasPopup", truthy: true },
81+
},
7182
isOpen: {
7283
...isOpen,
7384
if: { arg: "hasPopup", truthy: true },
@@ -83,6 +94,7 @@ export default {
8394
isQuiet: false,
8495
isEmphasized: false,
8596
hasPopup: "false",
97+
showPopup: false,
8698
isActive: false,
8799
isFocused: false,
88100
isHovered: false,

components/actionbutton/stories/template.js

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export const Template = ({
7474
aria-label=${ifDefined(hideLabel ? label : undefined)}
7575
aria-haspopup=${ifDefined(hasPopup && hasPopup !== "false" ? hasPopup : undefined)}
7676
aria-controls=${hasPopup && hasPopup !== "false" ? popupId : undefined}
77-
aria-pressed=${isSelected ? "true" : "false"}
77+
aria-pressed=${ifDefined(isSelected ? "true" : undefined)}
7878
aria-expanded=${ifDefined(hasPopup && hasPopup !== "false" ? isOpen ? "true" : "false" : undefined)}
7979
class=${classMap({
8080
[rootClass]: true,
@@ -107,20 +107,7 @@ export const Template = ({
107107
updateArgs({ isFocused: false });
108108
}}
109109
>
110-
${when(showPopup && hasPopup && hasPopup !== "false", () =>
111-
Icon({
112-
size,
113-
iconName: "CornerTriangle" + ({
114-
xs: "75",
115-
s: "75",
116-
m: "100",
117-
l: "200",
118-
xl: "300",
119-
}[size] || "100"),
120-
setName: "ui",
121-
customClasses: [`${rootClass}-hold`],
122-
}, context)
123-
)}
110+
${when(showPopup && hasPopup && hasPopup !== "false", () => html`<span class=${classMap({ [`${rootClass}-hold`]: true })}></span>`)}
124111
${when(iconName, () =>
125112
Icon({
126113
size,

0 commit comments

Comments
 (0)