@charcuterie/ui 3.15.0 → 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Combobox/Combobox.d.ts.map +1 -1
- package/dist/Combobox/Combobox.js +35 -0
- package/dist/Combobox/Combobox.js.map +1 -1
- package/dist/RadioGroup/RadioGroup.d.ts +49 -1
- package/dist/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup/RadioGroup.js +58 -3
- package/dist/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/RadioGroup/RadioGroupOption.d.ts +13 -2
- package/dist/RadioGroup/RadioGroupOption.d.ts.map +1 -1
- package/dist/RadioGroup/RadioGroupOption.js +62 -5
- package/dist/RadioGroup/RadioGroupOption.js.map +1 -1
- package/package.json +1 -1
- package/src/Combobox/Combobox.stories.tsx +16 -5
- package/src/Combobox/Combobox.test.tsx +45 -7
- package/src/Combobox/Combobox.tsx +44 -0
- package/src/RadioGroup/RadioGroup.mdx +62 -0
- package/src/RadioGroup/RadioGroup.stories.tsx +164 -1
- package/src/RadioGroup/RadioGroup.test.tsx +179 -2
- package/src/RadioGroup/RadioGroup.tsx +107 -3
- package/src/RadioGroup/RadioGroupOption.tsx +122 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAMzD,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAC7C,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAA;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,CAAA;
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAMzD,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAC7C,iEAAiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAA;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,CAAA;AAmCD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GAAI,4MAmBtB,aAAa,KAAG,SAwuBlB,CAAA"}
|
|
@@ -7,6 +7,12 @@ import { useAnchoredOverlay } from "../Overlay/useAnchoredOverlay.js";
|
|
|
7
7
|
import { toClassName } from "../toClassName.js";
|
|
8
8
|
import { ComboboxOption } from "./ComboboxOption.js";
|
|
9
9
|
const AUTO_VIRTUALIZE_THRESHOLD = 100;
|
|
10
|
+
/**
|
|
11
|
+
* How many frames the open seed will wait for the panel to be capped
|
|
12
|
+
* before it gives up on centring the chosen row. A few is all
|
|
13
|
+
* floating-ui's `size` middleware needs.
|
|
14
|
+
*/
|
|
15
|
+
const SEED_SCROLL_ATTEMPTS = 5;
|
|
10
16
|
const getOptionText = (item) => (item.textValue ??
|
|
11
17
|
(typeof item.label === "string" ? item.label : "")).toLowerCase();
|
|
12
18
|
const nextEnabledIndex = (options, from, step) => {
|
|
@@ -139,6 +145,17 @@ export const Combobox = ({ className, emptyLabel = "No matches", error, footer,
|
|
|
139
145
|
// centring, so it is told which index to wait for and skips every pass
|
|
140
146
|
// short of it.
|
|
141
147
|
const pendingSeedIndex = useRef(null);
|
|
148
|
+
// Retrying the seed's centring scroll. `useAnchoredOverlay` caps the
|
|
149
|
+
// panel's height by writing `style.maxHeight` straight onto the
|
|
150
|
+
// floating element inside floating-ui's `size` middleware —
|
|
151
|
+
// deliberately outside the `floatingStyles` React manages, so a
|
|
152
|
+
// keystroke cannot wipe it. The cost lands here: it arrives a frame
|
|
153
|
+
// after the open seed, announces itself with no re-render, and until
|
|
154
|
+
// it does the list stands at its full content height with **nothing to
|
|
155
|
+
// scroll**. A seed scroll issued then is dropped without a trace,
|
|
156
|
+
// which is how the first build of this fix highlighted the chosen row
|
|
157
|
+
// and still left it off screen in a real app.
|
|
158
|
+
const [seedScrollAttempt, setSeedScrollAttempt] = useState(0);
|
|
142
159
|
useEffect(() => {
|
|
143
160
|
if (!isVisible) {
|
|
144
161
|
hasSeededOnOpen.current = false;
|
|
@@ -160,6 +177,7 @@ export const Combobox = ({ className, emptyLabel = "No matches", error, footer,
|
|
|
160
177
|
}
|
|
161
178
|
hasSeededOnOpen.current = true;
|
|
162
179
|
pendingSeedIndex.current = openSeedIndex;
|
|
180
|
+
setSeedScrollAttempt(0);
|
|
163
181
|
setActiveIndex(openSeedIndex);
|
|
164
182
|
}, [
|
|
165
183
|
isVisible,
|
|
@@ -309,6 +327,22 @@ export const Combobox = ({ className, emptyLabel = "No matches", error, footer,
|
|
|
309
327
|
// stale highlight now would drag the list off the chosen row.
|
|
310
328
|
return;
|
|
311
329
|
}
|
|
330
|
+
const list = listElement.current;
|
|
331
|
+
if (isSeeding &&
|
|
332
|
+
seedScrollAttempt < SEED_SCROLL_ATTEMPTS &&
|
|
333
|
+
list !== null &&
|
|
334
|
+
list.scrollHeight <= list.clientHeight) {
|
|
335
|
+
// Nothing to scroll yet — the panel is still at its full height.
|
|
336
|
+
// Hold the seed and look again next frame rather than scroll a
|
|
337
|
+
// container that cannot move. Bounded, so a list that genuinely
|
|
338
|
+
// fits its panel stops instead of spinning.
|
|
339
|
+
const frame = requestAnimationFrame(() => {
|
|
340
|
+
setSeedScrollAttempt((attempt) => attempt + 1);
|
|
341
|
+
});
|
|
342
|
+
return () => {
|
|
343
|
+
cancelAnimationFrame(frame);
|
|
344
|
+
};
|
|
345
|
+
}
|
|
312
346
|
pendingSeedIndex.current = null;
|
|
313
347
|
// The open seed centres its row; an arrow move only pulls the next
|
|
314
348
|
// one just into view. "nearest" on open would park the chosen row
|
|
@@ -332,6 +366,7 @@ export const Combobox = ({ className, emptyLabel = "No matches", error, footer,
|
|
|
332
366
|
isWindowed,
|
|
333
367
|
listboxId,
|
|
334
368
|
rowVirtualizer.scrollToIndex,
|
|
369
|
+
seedScrollAttempt,
|
|
335
370
|
]);
|
|
336
371
|
// ─── Attached mode: drive the consumer's input ──────────────────────
|
|
337
372
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
import type { ControlSize } from "@charcuterie/tokens";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Which shape the options are drawn in. The control is the same
|
|
5
|
+
* `radiogroup` either way — this is layout, and it is a prop rather
|
|
6
|
+
* than a second component because nothing about the semantics, the
|
|
7
|
+
* keyboard model or the element changes with it.
|
|
8
|
+
*
|
|
9
|
+
* - `row` — the default. Each option is a line of prose beside its
|
|
10
|
+
* radio, stacked down the page. The form-length list.
|
|
11
|
+
* - `tile` — each option is a bordered card carrying a name, an
|
|
12
|
+
* optional line of help and a selected surface, and the group is
|
|
13
|
+
* a grid that gains columns with the CONTAINER's width.
|
|
14
|
+
*/
|
|
15
|
+
export type RadioItemShape = "row" | "tile";
|
|
3
16
|
export type RadioItem = {
|
|
17
|
+
/**
|
|
18
|
+
* A line of help under the label. Drawn one step down the type
|
|
19
|
+
* ramp in `content-muted`, inside the option's accessible name —
|
|
20
|
+
* a hint a screen reader never reads is a hint half the audience
|
|
21
|
+
* does not have.
|
|
22
|
+
*/
|
|
23
|
+
hint?: ReactNode;
|
|
24
|
+
/**
|
|
25
|
+
* Leading content, before the name. A `Badge`, an app's own icon,
|
|
26
|
+
* a count. `tile` only: a row already leads with its radio, and a
|
|
27
|
+
* second leading mark either side of it has nowhere to sit.
|
|
28
|
+
*/
|
|
29
|
+
icon?: ReactNode;
|
|
4
30
|
/**
|
|
5
31
|
* A disabled option is simply **not registered** with the roving
|
|
6
32
|
* group, so the arrow keys skip it without any command in
|
|
@@ -13,6 +39,11 @@ export type RadioItem = {
|
|
|
13
39
|
};
|
|
14
40
|
export type RadioGroupProps = {
|
|
15
41
|
className?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Draws each option as a card in a grid instead of a row in a
|
|
44
|
+
* stack. Defaults to `row`.
|
|
45
|
+
*/
|
|
46
|
+
itemShape?: RadioItemShape;
|
|
16
47
|
items: readonly RadioItem[];
|
|
17
48
|
/**
|
|
18
49
|
* Shows which option is chosen at full contrast but refuses to move
|
|
@@ -23,6 +54,13 @@ export type RadioGroupProps = {
|
|
|
23
54
|
isReadOnly?: boolean;
|
|
24
55
|
/** The group's accessible name. Required. */
|
|
25
56
|
label: string;
|
|
57
|
+
/**
|
|
58
|
+
* The narrowest a tile track may be, in CSS px. `tile` only.
|
|
59
|
+
*
|
|
60
|
+
* It is the grid's floor and not the tile's width: tracks below it
|
|
61
|
+
* are not created, and the ones that are share the row evenly.
|
|
62
|
+
*/
|
|
63
|
+
minTileInlineSize?: number;
|
|
26
64
|
onChange?: (selectedValue: string | null) => void;
|
|
27
65
|
/** **Initial** only. Charcuterie owns it from then on. */
|
|
28
66
|
selectedValue?: string;
|
|
@@ -49,6 +87,16 @@ export type RadioGroupProps = {
|
|
|
49
87
|
* choice from a named set is a radio group, and its arrow keys both
|
|
50
88
|
* move focus and check — APG's one activation mode, the same reason
|
|
51
89
|
* `SegmentedControl` has no `manual` prop.
|
|
90
|
+
*
|
|
91
|
+
* ### `itemShape="tile"` is the choice tile
|
|
92
|
+
*
|
|
93
|
+
* A bordered card carrying a name, a line of help and a selected
|
|
94
|
+
* surface, in a grid that gains columns with its container. It is a
|
|
95
|
+
* prop and not a third component because **only the box changes**:
|
|
96
|
+
* the element, the role, the roving tabindex, selection-follows-focus
|
|
97
|
+
* and `isReadOnly` are the ones already tested here. `SegmentedControl`
|
|
98
|
+
* earns its own file by being a different control — one connected
|
|
99
|
+
* strip, no radio affordance; a tile is this control with a border.
|
|
52
100
|
*/
|
|
53
|
-
export declare const RadioGroup: ({ className, items, isReadOnly, label, onChange, selectedValue, size, }: RadioGroupProps) => ReactNode;
|
|
101
|
+
export declare const RadioGroup: ({ className, itemShape, items, isReadOnly, label, minTileInlineSize, onChange, selectedValue, size, }: RadioGroupProps) => ReactNode;
|
|
54
102
|
//# sourceMappingURL=RadioGroup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAMrD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAA;AAE3C,MAAM,MAAM,SAAS,GAAG;IACtB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACjD,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,UAAU,GAAI,uGAUxB,eAAe,KAAG,SA4JpB,CAAA"}
|
|
@@ -8,6 +8,44 @@ const GAP_CLASS = {
|
|
|
8
8
|
md: "gap-1.5",
|
|
9
9
|
lg: "gap-2",
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Wider than the row gaps: rows are separated by their leading, and
|
|
13
|
+
* tiles by nothing but the gap, so the same 6px that reads as a list
|
|
14
|
+
* reads as a seam between two cards.
|
|
15
|
+
*/
|
|
16
|
+
const TILE_GAP_CLASS = {
|
|
17
|
+
sm: "gap-1.5",
|
|
18
|
+
md: "gap-2",
|
|
19
|
+
lg: "gap-3",
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* `auto-fill`, and deliberately not `auto-fit`.
|
|
23
|
+
*
|
|
24
|
+
* `auto-fit` collapses the empty tracks and lets the ones that
|
|
25
|
+
* remain share the whole row, so six tiles in a 2560px container
|
|
26
|
+
* become six 420px slabs — the full-width-row shape in a new
|
|
27
|
+
* costume. `auto-fill` keeps the empty tracks, so a tile stays a
|
|
28
|
+
* tile and the grid simply has room to spare.
|
|
29
|
+
*
|
|
30
|
+
* `min(…, 100%)` is what stops the floor overflowing a container
|
|
31
|
+
* narrower than one tile, which is the Narrow View and is otherwise
|
|
32
|
+
* a horizontal scrollbar on a phone.
|
|
33
|
+
*
|
|
34
|
+
* The floor arrives as a custom property rather than an interpolated
|
|
35
|
+
* class because Tailwind scans source *text* for complete class
|
|
36
|
+
* strings: `` `grid-cols-[…${n}px…]` `` generates nothing, paints
|
|
37
|
+
* nothing and reports nothing. One written-out literal reading
|
|
38
|
+
* `var(--charcuterie-tile-min-inline-size)` covers every width an
|
|
39
|
+
* app can ask for — the same reason `Card`'s accent edge goes
|
|
40
|
+
* through one property.
|
|
41
|
+
*
|
|
42
|
+
* This is **not** `useAdaptiveColumns`, and the difference is the
|
|
43
|
+
* question being asked. That hook buys a column with height, for an
|
|
44
|
+
* unbounded gallery that will scroll; a radio group is a bounded set
|
|
45
|
+
* of options inside a form section, where the only question is how
|
|
46
|
+
* many fit across the box it was given.
|
|
47
|
+
*/
|
|
48
|
+
const TILE_COLUMNS_CLASS = "grid-cols-[repeat(auto-fill,minmax(min(var(--charcuterie-tile-min-inline-size),100%),1fr))]";
|
|
11
49
|
/**
|
|
12
50
|
* One choice out of many, each on its own row with a label the size
|
|
13
51
|
* of prose — the stacked sibling of `SegmentedControl`.
|
|
@@ -29,10 +67,21 @@ const GAP_CLASS = {
|
|
|
29
67
|
* choice from a named set is a radio group, and its arrow keys both
|
|
30
68
|
* move focus and check — APG's one activation mode, the same reason
|
|
31
69
|
* `SegmentedControl` has no `manual` prop.
|
|
70
|
+
*
|
|
71
|
+
* ### `itemShape="tile"` is the choice tile
|
|
72
|
+
*
|
|
73
|
+
* A bordered card carrying a name, a line of help and a selected
|
|
74
|
+
* surface, in a grid that gains columns with its container. It is a
|
|
75
|
+
* prop and not a third component because **only the box changes**:
|
|
76
|
+
* the element, the role, the roving tabindex, selection-follows-focus
|
|
77
|
+
* and `isReadOnly` are the ones already tested here. `SegmentedControl`
|
|
78
|
+
* earns its own file by being a different control — one connected
|
|
79
|
+
* strip, no radio affordance; a tile is this control with a border.
|
|
32
80
|
*/
|
|
33
|
-
export const RadioGroup = ({ className, items, isReadOnly = false, label, onChange, selectedValue, size = "md", }) => {
|
|
81
|
+
export const RadioGroup = ({ className, itemShape = "row", items, isReadOnly = false, label, minTileInlineSize = 200, onChange, selectedValue, size = "md", }) => {
|
|
34
82
|
const groupRef = useRef(null);
|
|
35
83
|
const optionElements = useRef(new Map());
|
|
84
|
+
const isTile = itemShape === "tile";
|
|
36
85
|
const initialValue = selectedValue ??
|
|
37
86
|
items.find((one) => !one.isDisabled)?.value ??
|
|
38
87
|
null;
|
|
@@ -78,7 +127,9 @@ export const RadioGroup = ({ className, items, isReadOnly = false, label, onChan
|
|
|
78
127
|
}
|
|
79
128
|
optionElements.current.get(activeValue)?.focus();
|
|
80
129
|
}, [activeValue]);
|
|
81
|
-
return (_jsx("div", { "aria-label": label, "aria-readonly": isReadOnly || undefined, className: toClassName(
|
|
130
|
+
return (_jsx("div", { "aria-label": label, "aria-readonly": isReadOnly || undefined, className: toClassName(isTile
|
|
131
|
+
? toClassName("grid", TILE_COLUMNS_CLASS)
|
|
132
|
+
: "flex flex-col", isTile ? TILE_GAP_CLASS[size] : GAP_CLASS[size], className), onKeyDown: (keyEvent) => {
|
|
82
133
|
const commands = {
|
|
83
134
|
ArrowDown: focus.next,
|
|
84
135
|
ArrowLeft: focus.previous,
|
|
@@ -105,7 +156,11 @@ export const RadioGroup = ({ className, items, isReadOnly = false, label, onChan
|
|
|
105
156
|
keyEvent.preventDefault();
|
|
106
157
|
select(activeValue);
|
|
107
158
|
}
|
|
108
|
-
}, ref: groupRef,
|
|
159
|
+
}, ref: groupRef, style: isTile
|
|
160
|
+
? {
|
|
161
|
+
"--charcuterie-tile-min-inline-size": `${minTileInlineSize}px`,
|
|
162
|
+
}
|
|
163
|
+
: undefined, role: "radiogroup", children: items.map((item) => (_jsx(RadioGroupOption, { isChecked: checkedValue === item.value, isReadOnly: isReadOnly, item: item, itemShape: itemShape, onChoose: chooseOption, registerFocus: focus.register, registerSelection: selection.register, size: size,
|
|
109
164
|
// The roving-tabindex rule read from the core rather than
|
|
110
165
|
// restated here: exactly one option is in the tab order, so
|
|
111
166
|
// Tab enters and leaves the group once.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { ControlSize } from "@charcuterie/tokens";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
|
-
import type { RadioItem } from "./RadioGroup.tsx";
|
|
3
|
+
import type { RadioItem, RadioItemShape } from "./RadioGroup.tsx";
|
|
4
4
|
export type RadioGroupOptionProps = {
|
|
5
5
|
isChecked: boolean;
|
|
6
6
|
isReadOnly: boolean;
|
|
7
7
|
item: RadioItem;
|
|
8
|
+
itemShape: RadioItemShape;
|
|
8
9
|
onChoose: (value: string) => void;
|
|
9
10
|
/** `RovingFocus.register` — membership of the arrow-key group. */
|
|
10
11
|
registerFocus: (value: string) => () => void;
|
|
@@ -22,6 +23,16 @@ export type RadioGroupOptionProps = {
|
|
|
22
23
|
* with a background, so the checked dot can be centred by the grid
|
|
23
24
|
* and sized independently of the ring — a filled `bg-intent-accent`
|
|
24
25
|
* ring with no inner dot reads as a checkbox, not a radio.
|
|
26
|
+
*
|
|
27
|
+
* ### The tile shape is the same element with a border
|
|
28
|
+
*
|
|
29
|
+
* `itemShape="tile"` swaps `inline-flex` for `flex` — a grid item
|
|
30
|
+
* stretches to its track, and an inline box would sit at
|
|
31
|
+
* max-content inside it — adds the card's padding and border, and
|
|
32
|
+
* moves the ring to the top of a two-line label. The radio dot is
|
|
33
|
+
* still there and is still the thing a screen reader reads: a tile
|
|
34
|
+
* with its border taken away is this row, which is why the two are
|
|
35
|
+
* one component.
|
|
25
36
|
*/
|
|
26
|
-
export declare const RadioGroupOption: ({ isChecked, isReadOnly, item, onChoose, registerFocus, registerSelection, size, tabIndex, trackElement, }: RadioGroupOptionProps) => ReactNode;
|
|
37
|
+
export declare const RadioGroupOption: ({ isChecked, isReadOnly, item, itemShape, onChoose, registerFocus, registerSelection, size, tabIndex, trackElement, }: RadioGroupOptionProps) => ReactNode;
|
|
27
38
|
//# sourceMappingURL=RadioGroupOption.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroupOption.d.ts","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroupOption.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"RadioGroupOption.d.ts","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroupOption.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACf,MAAM,kBAAkB,CAAA;AAEzB,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,SAAS,CAAA;IACf,SAAS,EAAE,cAAc,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,kEAAkE;IAClE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,CAAA;IAC5C,0DAA0D;IAC1D,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,CAAA;IAChD,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAC9B,IAAI,CAAA;CACV,CAAA;AAqDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,GAAI,uHAW9B,qBAAqB,KAAG,SA0J1B,CAAA"}
|
|
@@ -20,6 +20,32 @@ const TEXT_SIZE_CLASS = {
|
|
|
20
20
|
md: "text-md",
|
|
21
21
|
lg: "text-lg",
|
|
22
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* One step down from the option's own text, and never below `xs`:
|
|
25
|
+
* a hint that keeps shrinking with the density axis is the 11px
|
|
26
|
+
* caption the 2026-08-10 ramp rebuild exists to have removed.
|
|
27
|
+
*/
|
|
28
|
+
const HINT_TEXT_CLASS = {
|
|
29
|
+
sm: "text-xs",
|
|
30
|
+
md: "text-xs",
|
|
31
|
+
lg: "text-sm",
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* A tile is a card, so its padding is a card's rather than a
|
|
35
|
+
* control's — enough that the border reads as a box around content
|
|
36
|
+
* and not as an outline on a line of text.
|
|
37
|
+
*/
|
|
38
|
+
const TILE_PADDING_CLASS = {
|
|
39
|
+
sm: "px-3 py-2.5",
|
|
40
|
+
md: "px-3.5 py-3",
|
|
41
|
+
lg: "px-4 py-3.5",
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* The box, and only the box. Every state below it is a **border and
|
|
45
|
+
* a surface**, never colour alone — the same reason `Stepper`
|
|
46
|
+
* refuses to say "done" with a hue.
|
|
47
|
+
*/
|
|
48
|
+
const TILE_BOX_CLASS = "rounded-lg border border-border-subtle bg-surface-raised";
|
|
23
49
|
/**
|
|
24
50
|
* Its own file for the same reason `SegmentedOption` is: **both
|
|
25
51
|
* registrations are effects**, and an effect cannot run in a loop.
|
|
@@ -28,9 +54,20 @@ const TEXT_SIZE_CLASS = {
|
|
|
28
54
|
* with a background, so the checked dot can be centred by the grid
|
|
29
55
|
* and sized independently of the ring — a filled `bg-intent-accent`
|
|
30
56
|
* ring with no inner dot reads as a checkbox, not a radio.
|
|
57
|
+
*
|
|
58
|
+
* ### The tile shape is the same element with a border
|
|
59
|
+
*
|
|
60
|
+
* `itemShape="tile"` swaps `inline-flex` for `flex` — a grid item
|
|
61
|
+
* stretches to its track, and an inline box would sit at
|
|
62
|
+
* max-content inside it — adds the card's padding and border, and
|
|
63
|
+
* moves the ring to the top of a two-line label. The radio dot is
|
|
64
|
+
* still there and is still the thing a screen reader reads: a tile
|
|
65
|
+
* with its border taken away is this row, which is why the two are
|
|
66
|
+
* one component.
|
|
31
67
|
*/
|
|
32
|
-
export const RadioGroupOption = ({ isChecked, isReadOnly, item, onChoose, registerFocus, registerSelection, size, tabIndex, trackElement, }) => {
|
|
33
|
-
const { isDisabled = false, label, value } = item;
|
|
68
|
+
export const RadioGroupOption = ({ isChecked, isReadOnly, item, itemShape, onChoose, registerFocus, registerSelection, size, tabIndex, trackElement, }) => {
|
|
69
|
+
const { hint, icon, isDisabled = false, label, value, } = item;
|
|
70
|
+
const isTile = itemShape === "tile";
|
|
34
71
|
useEffect(() => registerSelection(value), [registerSelection, value]);
|
|
35
72
|
useEffect(() => {
|
|
36
73
|
if (isDisabled) {
|
|
@@ -38,7 +75,14 @@ export const RadioGroupOption = ({ isChecked, isReadOnly, item, onChoose, regist
|
|
|
38
75
|
}
|
|
39
76
|
return registerFocus(value);
|
|
40
77
|
}, [isDisabled, registerFocus, value]);
|
|
41
|
-
return (_jsxs("button", { "aria-checked": isChecked, className: toClassName("
|
|
78
|
+
return (_jsxs("button", { "aria-checked": isChecked, className: toClassName("gap-2 text-content-secondary text-start transition-colors duration-(--duration-fast) ease-standard", isTile
|
|
79
|
+
? toClassName("flex min-w-0 items-start", TILE_BOX_CLASS, TILE_PADDING_CLASS[size])
|
|
80
|
+
: toClassName("inline-flex rounded-sm",
|
|
81
|
+
// A hint puts a second line under the label, and a ring
|
|
82
|
+
// centred against both sits beside neither.
|
|
83
|
+
hint === undefined
|
|
84
|
+
? "items-center"
|
|
85
|
+
: "items-start"), TEXT_SIZE_CLASS[size],
|
|
42
86
|
// Disabled turns the whole option down with `opacity-60`, the
|
|
43
87
|
// same family treatment as `Checkbox` and `Switch`, rather than
|
|
44
88
|
// fading the ring to a token that disappeared on a pale theme.
|
|
@@ -48,7 +92,18 @@ export const RadioGroupOption = ({ isChecked, isReadOnly, item, onChoose, regist
|
|
|
48
92
|
? "cursor-not-allowed opacity-60"
|
|
49
93
|
: isReadOnly
|
|
50
94
|
? "cursor-default"
|
|
51
|
-
:
|
|
95
|
+
: isTile
|
|
96
|
+
? "cursor-pointer hover:border-border-strong"
|
|
97
|
+
: "cursor-pointer hover:text-content-primary",
|
|
98
|
+
// The selected tile carries the accent on its EDGE and lifts
|
|
99
|
+
// its surface. A tile that said "chosen" with a background
|
|
100
|
+
// alone would be the one state a monochrome ePaper build
|
|
101
|
+
// cannot show at all.
|
|
102
|
+
isTile && isChecked
|
|
103
|
+
? isReadOnly
|
|
104
|
+
? "border-intent-neutral-solid bg-surface-overlay"
|
|
105
|
+
: "border-intent-accent-solid bg-surface-overlay"
|
|
106
|
+
: "", FOCUS_RING_CLASS), disabled: isDisabled, onClick: () => {
|
|
52
107
|
onChoose(value);
|
|
53
108
|
}, ref: (element) => {
|
|
54
109
|
trackElement(value, element);
|
|
@@ -70,6 +125,8 @@ export const RadioGroupOption = ({ isChecked, isReadOnly, item, onChoose, regist
|
|
|
70
125
|
? "border-intent-accent-solid"
|
|
71
126
|
: "border-border-strong", RING_SIZE_CLASS[size]), children: _jsx("span", { className: toClassName("rounded-full transition-transform duration-(--duration-fast) ease-standard", isReadOnly
|
|
72
127
|
? "bg-intent-neutral-solid"
|
|
73
|
-
: "bg-intent-accent-solid", isChecked ? "scale-100" : "scale-0", DOT_SIZE_CLASS[size]) }) }), _jsx("span", { children: label })
|
|
128
|
+
: "bg-intent-accent-solid", isChecked ? "scale-100" : "scale-0", DOT_SIZE_CLASS[size]) }) }), hint === undefined && !isTile ? (_jsx("span", { children: label })) : (_jsxs("span", { className: "flex min-w-0 flex-col gap-0.5 wrap-anywhere", children: [icon !== undefined && isTile ? (_jsx("span", { "aria-hidden": true, className: "flex", children: icon })) : null, _jsx("span", { className: isTile
|
|
129
|
+
? "font-semibold text-content-primary"
|
|
130
|
+
: undefined, children: label }), hint === undefined ? null : (_jsx("span", { className: toClassName("font-normal text-content-muted", HINT_TEXT_CLASS[size]), children: hint }))] }))] }));
|
|
74
131
|
};
|
|
75
132
|
//# sourceMappingURL=RadioGroupOption.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroupOption.js","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroupOption.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"RadioGroupOption.js","sourceRoot":"","sources":["../../src/RadioGroup/RadioGroupOption.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -23,6 +23,18 @@ const LANGUAGES_DISABLED_FIRST: ListboxItem[] = [
|
|
|
23
23
|
{ label: "French", value: "fra" },
|
|
24
24
|
]
|
|
25
25
|
|
|
26
|
+
// Long enough to overflow the panel's height cap, short enough to stay
|
|
27
|
+
// under `AUTO_VIRTUALIZE_THRESHOLD` — the shape most app pickers have,
|
|
28
|
+
// and the one that exercises the plain DOM scroll path.
|
|
29
|
+
const MANY_SHORT: ListboxItem[] = Array.from(
|
|
30
|
+
{ length: 62 },
|
|
31
|
+
(_unused, index) => ({
|
|
32
|
+
label: `Item ${index + 1}`,
|
|
33
|
+
textValue: `Item ${index + 1}`,
|
|
34
|
+
value: `item-${index + 1}`,
|
|
35
|
+
}),
|
|
36
|
+
)
|
|
37
|
+
|
|
26
38
|
// A long list, to trip the auto-virtualization threshold.
|
|
27
39
|
const MANY: ListboxItem[] = Array.from(
|
|
28
40
|
{ length: 500 },
|
|
@@ -542,15 +554,14 @@ export const ChosenValueOnOpen: Story = {
|
|
|
542
554
|
isVisible: false,
|
|
543
555
|
onDismiss: () => {},
|
|
544
556
|
onSelect: () => {},
|
|
545
|
-
options:
|
|
546
|
-
selectedValue: "
|
|
557
|
+
options: MANY_SHORT,
|
|
558
|
+
selectedValue: "item-58",
|
|
547
559
|
trigger: <Button>Search languages</Button>,
|
|
548
560
|
},
|
|
549
561
|
render: () => (
|
|
550
562
|
<ComboboxHarness
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
selectedValue="por"
|
|
563
|
+
options={MANY_SHORT}
|
|
564
|
+
selectedValue="item-58"
|
|
554
565
|
triggerLabel="Search languages"
|
|
555
566
|
/>
|
|
556
567
|
),
|
|
@@ -478,9 +478,11 @@ test("opening lands on the chosen option, not the top of the list", async () =>
|
|
|
478
478
|
role: "combobox",
|
|
479
479
|
})
|
|
480
480
|
|
|
481
|
-
//
|
|
481
|
+
// Item 58 of 62, far past the panel's height cap — index 0 would be
|
|
482
|
+
// the old behaviour, and a row still off screen would be the fix
|
|
483
|
+
// landing only halfway.
|
|
482
484
|
const chosen = mounted.body.getByRole("option", {
|
|
483
|
-
name: "
|
|
485
|
+
name: "Item 58",
|
|
484
486
|
})
|
|
485
487
|
|
|
486
488
|
await waitFor(() => {
|
|
@@ -515,9 +517,9 @@ test("typing reseeds the highlight to the top match, not the chosen row", async
|
|
|
515
517
|
role: "combobox",
|
|
516
518
|
})
|
|
517
519
|
|
|
518
|
-
// Matches "
|
|
519
|
-
//
|
|
520
|
-
await userEvent.type(input, "
|
|
520
|
+
// Matches "Item 1", "Item 10"… — the open seed must not drag the
|
|
521
|
+
// highlight down to the chosen row.
|
|
522
|
+
await userEvent.type(input, "1")
|
|
521
523
|
|
|
522
524
|
await waitFor(() => {
|
|
523
525
|
expect(input).toHaveAttribute(
|
|
@@ -538,7 +540,7 @@ test("reopening after a pick lands on what was just picked", async () => {
|
|
|
538
540
|
await userEvent.click(trigger)
|
|
539
541
|
|
|
540
542
|
await userEvent.click(
|
|
541
|
-
mounted.body.getByRole("option", { name: "
|
|
543
|
+
mounted.body.getByRole("option", { name: "Item 3" }),
|
|
542
544
|
)
|
|
543
545
|
|
|
544
546
|
await waitFor(() => {
|
|
@@ -554,7 +556,7 @@ test("reopening after a pick lands on what was just picked", async () => {
|
|
|
554
556
|
await waitFor(() => {
|
|
555
557
|
expect(reopened).toHaveAttribute(
|
|
556
558
|
"aria-activedescendant",
|
|
557
|
-
mounted.body.getByRole("option", { name: "
|
|
559
|
+
mounted.body.getByRole("option", { name: "Item 3" })
|
|
558
560
|
.id,
|
|
559
561
|
)
|
|
560
562
|
})
|
|
@@ -578,3 +580,39 @@ test("a windowed list scrolls its chosen option into the window on open", async
|
|
|
578
580
|
body.queryByRole("option", { name: "Track 1" }),
|
|
579
581
|
).toBeNull()
|
|
580
582
|
})
|
|
583
|
+
|
|
584
|
+
test("the chosen row is scrolled into view, not merely highlighted", async () => {
|
|
585
|
+
const mounted = await mountStory(ChosenValueOnOpen)
|
|
586
|
+
|
|
587
|
+
await userEvent.click(
|
|
588
|
+
expectAgentDrivable(mounted.canvas, {
|
|
589
|
+
name: "Search languages",
|
|
590
|
+
role: "button",
|
|
591
|
+
}),
|
|
592
|
+
)
|
|
593
|
+
|
|
594
|
+
const chosen = mounted.body.getByRole("option", {
|
|
595
|
+
name: "Item 58",
|
|
596
|
+
})
|
|
597
|
+
|
|
598
|
+
// The panel's height cap is written imperatively by floating-ui's
|
|
599
|
+
// `size` middleware, a frame after the open seed runs — so this is the
|
|
600
|
+
// assertion the first version of this fix passed while the row sat off
|
|
601
|
+
// screen in the real app. Highlighting it is not the same as showing
|
|
602
|
+
// it.
|
|
603
|
+
await waitFor(() => {
|
|
604
|
+
const list = chosen.closest("[role=listbox]")
|
|
605
|
+
|
|
606
|
+
expect(list).not.toBeNull()
|
|
607
|
+
|
|
608
|
+
const listBox = (
|
|
609
|
+
list as HTMLElement
|
|
610
|
+
).getBoundingClientRect()
|
|
611
|
+
const rowBox = chosen.getBoundingClientRect()
|
|
612
|
+
|
|
613
|
+
expect(rowBox.top).toBeGreaterThanOrEqual(listBox.top)
|
|
614
|
+
expect(rowBox.bottom).toBeLessThanOrEqual(
|
|
615
|
+
listBox.bottom,
|
|
616
|
+
)
|
|
617
|
+
})
|
|
618
|
+
})
|