@astryxdesign/core 0.1.2-canary.bd8c3d3 → 0.1.2-canary.bfcbf64
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/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +11 -5
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +20 -4
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +11 -11
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +4 -2
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +12 -4
- package/dist/ContextMenu/ContextMenu.d.ts +6 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +58 -7
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +17 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +9 -4
- package/dist/DateTimeInput/DateTimeInput.d.ts +7 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +15 -3
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +12 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +25 -4
- package/dist/Field/Field.d.ts +19 -2
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +4 -0
- package/dist/Field/FieldLabel.d.ts +21 -2
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +37 -22
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +27 -6
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +4 -1
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +33 -1
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +36 -5
- package/dist/Layout/padding.stylex.d.ts +51 -0
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +63 -0
- package/dist/Link/Link.d.ts +7 -1
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +12 -4
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +35 -6
- package/dist/MultiSelector/hooks.d.ts +12 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +14 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +17 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +7 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +8 -0
- package/dist/ProgressBar/ProgressBar.js +1 -1
- package/dist/RadioList/RadioList.d.ts +1 -1
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +76 -3
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +6 -2
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +15 -8
- package/dist/Selector/hooks.d.ts +8 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +14 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +8 -2
- package/dist/Stack/Stack.d.ts +28 -1
- package/dist/Stack/Stack.d.ts.map +1 -1
- package/dist/Stack/Stack.js +17 -1
- package/dist/Stack/StackItem.d.ts +12 -1
- package/dist/Stack/StackItem.d.ts.map +1 -1
- package/dist/Stack/StackItem.js +8 -1
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +6 -0
- package/dist/TabList/TabList.d.ts +15 -4
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +58 -4
- package/dist/TabList/TabListContext.d.ts +5 -0
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +5 -0
- package/dist/TabList/TabMenu.js +2 -0
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +14 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +132 -3
- package/dist/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +7 -3
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +78 -2
- package/dist/TreeList/TreeListItem.d.ts +10 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +44 -10
- package/dist/TreeList/treeListItem.markers.stylex.d.ts +16 -0
- package/dist/TreeList/treeListItem.markers.stylex.d.ts.map +1 -0
- package/dist/TreeList/treeListItem.markers.stylex.js +22 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +41 -3
- package/dist/astryx.css +3 -0
- package/dist/astryx.umd.js +47 -47
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/index.d.ts +10 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +6 -2
- package/dist/hooks/useAnnounce.d.ts +40 -0
- package/dist/hooks/useAnnounce.d.ts.map +1 -0
- package/dist/hooks/useAnnounce.js +142 -0
- package/dist/hooks/useClickableContainer.d.ts +16 -1
- package/dist/hooks/useClickableContainer.d.ts.map +1 -1
- package/dist/hooks/useClickableContainer.js +16 -4
- package/dist/hooks/useFocusTrap.d.ts +18 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +65 -0
- package/dist/hooks/useListFocus.d.ts +79 -8
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +262 -48
- package/dist/hooks/useLongPress.d.ts +21 -0
- package/dist/hooks/useLongPress.d.ts.map +1 -0
- package/dist/hooks/useLongPress.js +89 -0
- package/dist/hooks/useTreeFocus.d.ts +133 -0
- package/dist/hooks/useTreeFocus.d.ts.map +1 -0
- package/dist/hooks/useTreeFocus.js +274 -0
- package/dist/hooks/useTypeahead.d.ts +63 -0
- package/dist/hooks/useTypeahead.d.ts.map +1 -0
- package/dist/hooks/useTypeahead.js +117 -0
- package/package.json +1 -1
- package/src/Avatar/Avatar.test.tsx +37 -0
- package/src/Avatar/Avatar.tsx +10 -5
- package/src/Breadcrumbs/BreadcrumbItem.tsx +20 -5
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
- package/src/Calendar/Calendar.test.tsx +25 -0
- package/src/Calendar/Calendar.tsx +10 -12
- package/src/CheckboxInput/CheckboxInput.test.tsx +14 -25
- package/src/CheckboxInput/CheckboxInput.tsx +4 -2
- package/src/CheckboxList/CheckboxList.test.tsx +30 -14
- package/src/CheckboxList/CheckboxList.tsx +18 -3
- package/src/ContextMenu/ContextMenu.doc.mjs +6 -0
- package/src/ContextMenu/ContextMenu.test.tsx +115 -1
- package/src/ContextMenu/ContextMenu.tsx +75 -4
- package/src/DateInput/DateInput.test.tsx +59 -0
- package/src/DateInput/DateInput.tsx +24 -7
- package/src/DateRangeInput/DateRangeInput.test.tsx +69 -18
- package/src/DateRangeInput/DateRangeInput.tsx +7 -3
- package/src/DateTimeInput/DateTimeInput.doc.mjs +7 -0
- package/src/DateTimeInput/DateTimeInput.test.tsx +99 -6
- package/src/DateTimeInput/DateTimeInput.tsx +32 -3
- package/src/Dialog/Dialog.tsx +12 -0
- package/src/DropdownMenu/DropdownMenu.test.tsx +26 -4
- package/src/DropdownMenu/DropdownMenu.tsx +36 -2
- package/src/Field/Field.test.tsx +32 -0
- package/src/Field/Field.tsx +23 -5
- package/src/Field/FieldLabel.tsx +53 -17
- package/src/FileInput/FileInput.test.tsx +104 -49
- package/src/FileInput/FileInput.tsx +27 -3
- package/src/InputGroup/InputGroup.test.tsx +21 -63
- package/src/InputGroup/InputGroup.tsx +4 -1
- package/src/Kbd/Kbd.test.tsx +22 -4
- package/src/Kbd/Kbd.tsx +35 -3
- package/src/Layer/useLayer.tsx +52 -5
- package/src/Layout/padding.stylex.ts +52 -0
- package/src/Link/Link.doc.mjs +14 -0
- package/src/Link/Link.test.tsx +32 -0
- package/src/Link/Link.tsx +23 -1
- package/src/MultiSelector/MultiSelector.test.tsx +124 -2
- package/src/MultiSelector/MultiSelector.tsx +50 -9
- package/src/MultiSelector/hooks.ts +27 -0
- package/src/NavMenu/NavHeadingMenu.test.tsx +32 -1
- package/src/NavMenu/NavHeadingMenu.tsx +30 -2
- package/src/NumberInput/NumberInput.test.tsx +72 -38
- package/src/NumberInput/NumberInput.tsx +12 -1
- package/src/Pagination/Pagination.test.tsx +58 -5
- package/src/Pagination/Pagination.tsx +12 -0
- package/src/ProgressBar/ProgressBar.test.tsx +34 -26
- package/src/ProgressBar/ProgressBar.tsx +1 -1
- package/src/RadioList/RadioList.test.tsx +129 -14
- package/src/RadioList/RadioList.tsx +103 -8
- package/src/SegmentedControl/SegmentedControl.test.tsx +35 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +4 -1
- package/src/Selector/Selector.test.tsx +53 -0
- package/src/Selector/Selector.tsx +15 -8
- package/src/Selector/hooks.ts +23 -0
- package/src/Skeleton/Skeleton.test.tsx +25 -0
- package/src/Skeleton/Skeleton.tsx +11 -1
- package/src/Stack/Stack.doc.mjs +57 -0
- package/src/Stack/Stack.test.tsx +55 -5
- package/src/Stack/Stack.tsx +53 -1
- package/src/Stack/StackItem.test.tsx +23 -0
- package/src/Stack/StackItem.tsx +20 -0
- package/src/TabList/Tab.tsx +6 -0
- package/src/TabList/TabList.doc.mjs +6 -0
- package/src/TabList/TabList.test.tsx +167 -0
- package/src/TabList/TabList.tsx +72 -9
- package/src/TabList/TabListContext.ts +7 -3
- package/src/TabList/TabMenu.tsx +3 -3
- package/src/Toast/Toast.tsx +14 -0
- package/src/Toast/ToastViewport.test.tsx +204 -0
- package/src/Toast/ToastViewport.tsx +167 -21
- package/src/Toolbar/Toolbar.test.tsx +45 -0
- package/src/Toolbar/Toolbar.tsx +5 -2
- package/src/TreeList/TreeList.test.tsx +273 -0
- package/src/TreeList/TreeList.tsx +84 -1
- package/src/TreeList/TreeListItem.tsx +42 -2
- package/src/TreeList/treeListItem.markers.stylex.ts +20 -0
- package/src/Typeahead/BaseTypeahead.tsx +48 -2
- package/src/Typeahead/Typeahead.test.tsx +125 -0
- package/src/hooks/index.ts +21 -2
- package/src/hooks/useAnnounce.test.tsx +101 -0
- package/src/hooks/useAnnounce.ts +168 -0
- package/src/hooks/useClickableContainer.ts +16 -4
- package/src/hooks/useFocusTrap.test.tsx +67 -3
- package/src/hooks/useFocusTrap.ts +75 -0
- package/src/hooks/useListFocus.doc.mjs +49 -10
- package/src/hooks/useListFocus.test.tsx +269 -0
- package/src/hooks/useListFocus.ts +339 -54
- package/src/hooks/useLongPress.test.tsx +134 -0
- package/src/hooks/useLongPress.ts +119 -0
- package/src/hooks/useTreeFocus.doc.mjs +126 -0
- package/src/hooks/useTreeFocus.test.tsx +214 -0
- package/src/hooks/useTreeFocus.ts +464 -0
- package/src/hooks/useTypeahead.test.tsx +109 -0
- package/src/hooks/useTypeahead.ts +183 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selector.d.ts","sourceRoot":"","sources":["../../src/Selector/Selector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EASZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAU5D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AActD,OAAO,KAAK,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAYpE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AA6P9C,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB,CACzB,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CACjD,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,cAAc,CAAC;IACpD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,OAAO,EAAE,CAAC,EAAE,CAAC;IAIb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAEjC;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,KAAK,yBAAyB,CAC5B,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAC/C,iBAAiB,CAAC,CAAC,CAAC,GAAG;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD,CAAC;AAEF,KAAK,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAC3E,iBAAiB,CAAC,CAAC,CAAC,GAAG;IACrB;;;;;OAKG;IACH,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,CAAC;AAEJ,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IACvE,yBAAyB,CAAC,CAAC,CAAC,GAC5B,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAW9B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,kBAAkB,EACnD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Selector.d.ts","sourceRoot":"","sources":["../../src/Selector/Selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -290,6 +290,18 @@ export function Selector(props) {
|
|
|
290
290
|
marginBlockStart: `-${selectedItemOffset}px`
|
|
291
291
|
} : undefined;
|
|
292
292
|
|
|
293
|
+
// Clear the current value. Shared by the clear button and the keyboard
|
|
294
|
+
// Delete/Backspace path so clearing is reachable without a mouse.
|
|
295
|
+
const clearValue = useCallback(() => {
|
|
296
|
+
onChange?.(null);
|
|
297
|
+
if (changeAction) {
|
|
298
|
+
startTransition(async () => {
|
|
299
|
+
setOptimisticValue(undefined);
|
|
300
|
+
await changeAction(null);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}, [onChange, changeAction, startTransition, setOptimisticValue]);
|
|
304
|
+
|
|
293
305
|
// Selector behavior (keyboard nav, typeahead, selection)
|
|
294
306
|
const {
|
|
295
307
|
highlightedIndex,
|
|
@@ -323,6 +335,7 @@ export function Selector(props) {
|
|
|
323
335
|
});
|
|
324
336
|
}
|
|
325
337
|
}, [onChange, changeAction, startTransition, setOptimisticValue]),
|
|
338
|
+
onClear: hasClear ? clearValue : undefined,
|
|
326
339
|
listboxId
|
|
327
340
|
});
|
|
328
341
|
|
|
@@ -342,14 +355,8 @@ export function Selector(props) {
|
|
|
342
355
|
// Handle clear button click
|
|
343
356
|
const handleClear = useCallback(e => {
|
|
344
357
|
e.stopPropagation(); // Don't open dropdown
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
startTransition(async () => {
|
|
348
|
-
setOptimisticValue(undefined);
|
|
349
|
-
await changeAction(null);
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
}, [onChange, changeAction, startTransition, setOptimisticValue]);
|
|
358
|
+
clearValue();
|
|
359
|
+
}, [clearValue]);
|
|
353
360
|
|
|
354
361
|
// Render search input
|
|
355
362
|
const renderSearch = useCallback(() => {
|
package/dist/Selector/hooks.d.ts
CHANGED
|
@@ -31,6 +31,13 @@ interface UseComboboxOptions {
|
|
|
31
31
|
onOpen: () => void;
|
|
32
32
|
onClose: () => void;
|
|
33
33
|
onSelect?: (value: string) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Clear the current value. When provided, pressing Delete or Backspace on the
|
|
36
|
+
* closed trigger clears the selection — a keyboard equivalent of the clear
|
|
37
|
+
* button, so clearing is not mouse-only. No-op when the popup is open (arrow
|
|
38
|
+
* navigation owns those keys there) or when there is no value.
|
|
39
|
+
*/
|
|
40
|
+
onClear?: () => void;
|
|
34
41
|
listboxId: string;
|
|
35
42
|
}
|
|
36
43
|
interface UseComboboxResult {
|
|
@@ -45,6 +52,6 @@ interface UseComboboxResult {
|
|
|
45
52
|
/**
|
|
46
53
|
* Handles keyboard navigation, typeahead search, and selection for combobox/listbox patterns.
|
|
47
54
|
*/
|
|
48
|
-
export declare function useCombobox({ selectableItems, value, isDisabled, isOpen, hasSearch, onOpen, onClose, onSelect, listboxId, }: UseComboboxOptions): UseComboboxResult;
|
|
55
|
+
export declare function useCombobox({ selectableItems, value, isDisabled, isOpen, hasSearch, onOpen, onClose, onSelect, onClear, listboxId, }: UseComboboxOptions): UseComboboxResult;
|
|
49
56
|
export {};
|
|
50
57
|
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/Selector/hooks.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAMhD,UAAU,4BAA4B;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7C,UAAU,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,UAAU,2BAA2B;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE,4BAA4B,GAAG,2BAA2B,CA6E5D;AAMD,UAAU,kBAAkB;IAC1B,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,iBAAiB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,eAAe,EACf,KAAK,EACL,UAAkB,EAClB,MAAM,EACN,SAAiB,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,GACV,EAAE,kBAAkB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/Selector/hooks.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAMhD,UAAU,4BAA4B;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7C,UAAU,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,UAAU,2BAA2B;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE,4BAA4B,GAAG,2BAA2B,CA6E5D;AAMD,UAAU,kBAAkB;IAC1B,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,iBAAiB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,eAAe,EACf,KAAK,EACL,UAAkB,EAClB,MAAM,EACN,SAAiB,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,GACV,EAAE,kBAAkB,GAAG,iBAAiB,CAoNxC"}
|
package/dist/Selector/hooks.js
CHANGED
|
@@ -110,6 +110,7 @@ export function useCombobox({
|
|
|
110
110
|
onOpen,
|
|
111
111
|
onClose,
|
|
112
112
|
onSelect,
|
|
113
|
+
onClear,
|
|
113
114
|
listboxId
|
|
114
115
|
}) {
|
|
115
116
|
const [highlightedIndex, setHighlightedIndex] = useState(-1);
|
|
@@ -223,6 +224,18 @@ export function useCombobox({
|
|
|
223
224
|
setHighlightedIndex(enabledIndices[enabledIndices.length - 1]);
|
|
224
225
|
}
|
|
225
226
|
break;
|
|
227
|
+
case 'Delete':
|
|
228
|
+
case 'Backspace':
|
|
229
|
+
// Keyboard equivalent of the clear button (comboboxes-2): clear the
|
|
230
|
+
// value from the closed trigger so clearing is not mouse-only. When
|
|
231
|
+
// hasSearch is active these keys must edit the search text instead,
|
|
232
|
+
// and when the popup is open arrow navigation owns interaction, so
|
|
233
|
+
// only handle the closed non-search case with a clearable value.
|
|
234
|
+
if (!hasSearch && !isOpen && onClear != null && value != null) {
|
|
235
|
+
e.preventDefault();
|
|
236
|
+
onClear();
|
|
237
|
+
}
|
|
238
|
+
break;
|
|
226
239
|
default:
|
|
227
240
|
if (!hasSearch && e.key.length === 1 && !e.ctrlKey && !e.metaKey) {
|
|
228
241
|
const newTypeahead = typeahead + e.key.toLowerCase();
|
|
@@ -243,7 +256,7 @@ export function useCombobox({
|
|
|
243
256
|
}
|
|
244
257
|
break;
|
|
245
258
|
}
|
|
246
|
-
}, [isDisabled, isOpen, onOpen, closeAndReset, selectableItems, highlightedIndex, selectItem, findSelectedIndex, getEnabledIndices, typeahead, hasSearch]);
|
|
259
|
+
}, [isDisabled, isOpen, onOpen, closeAndReset, selectableItems, highlightedIndex, selectItem, findSelectedIndex, getEnabledIndices, typeahead, hasSearch, onClear, value]);
|
|
247
260
|
return {
|
|
248
261
|
highlightedIndex,
|
|
249
262
|
setHighlightedIndex,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../src/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../src/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAwD3C,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;EAuBhB,CAAC;AAgBH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAMvD,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAc,EACd,MAAe,EACf,MAAM,EAAE,UAAc,EACtB,KAAS,EACT,aAAa,EAAE,MAAM,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,aAAa,+BA0Bf;yBArCe,QAAQ"}
|
|
@@ -57,7 +57,7 @@ const styles = {
|
|
|
57
57
|
kILWW9: "xpz12be",
|
|
58
58
|
k44tkh: "xqgcaz",
|
|
59
59
|
ko0y90: "xa4qsjk",
|
|
60
|
-
kKVMdj: "xeuoslp",
|
|
60
|
+
kKVMdj: "xeuoslp x1aquc0h",
|
|
61
61
|
kyAemX: "x193epu2",
|
|
62
62
|
$$css: true
|
|
63
63
|
}
|
|
@@ -144,7 +144,13 @@ export function Skeleton({
|
|
|
144
144
|
...props
|
|
145
145
|
}) {
|
|
146
146
|
return /*#__PURE__*/_jsx("div", {
|
|
147
|
-
ref: ref
|
|
147
|
+
ref: ref
|
|
148
|
+
// Purely decorative loading placeholder — hide from assistive tech so it
|
|
149
|
+
// isn't announced as empty content. The surrounding region should convey
|
|
150
|
+
// the loading/busy state (e.g. aria-busy) (complex-20). Consumers can
|
|
151
|
+
// override via props if a specific skeleton must be exposed.
|
|
152
|
+
,
|
|
153
|
+
"aria-hidden": "true",
|
|
148
154
|
"data-testid": testId,
|
|
149
155
|
...mergeProps(themeProps('skeleton'), stylex.props(styles.root, styles.animate, radiusStyles[radiusProp], dynamicStyles.dimensions(width, height), dynamicStyles.animationDelay(index), xstyle), className, style),
|
|
150
156
|
...props
|
package/dist/Stack/Stack.d.ts
CHANGED
|
@@ -82,6 +82,33 @@ export interface StackProps extends BaseProps<HTMLElement> {
|
|
|
82
82
|
* Accepts numeric spacing steps: 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10.
|
|
83
83
|
*/
|
|
84
84
|
gap?: SpacingStep;
|
|
85
|
+
/**
|
|
86
|
+
* Inner padding on all sides, using the spacing scale.
|
|
87
|
+
* Accepts numeric spacing steps: 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10.
|
|
88
|
+
*
|
|
89
|
+
* Matches the `padding` prop on `Card`, `LayoutContent`, and `LayoutPanel`.
|
|
90
|
+
*/
|
|
91
|
+
padding?: SpacingStep;
|
|
92
|
+
/**
|
|
93
|
+
* Inline (horizontal) padding, using the spacing scale.
|
|
94
|
+
* Overrides `padding` on the inline axis when both are set.
|
|
95
|
+
*/
|
|
96
|
+
paddingInline?: SpacingStep;
|
|
97
|
+
/**
|
|
98
|
+
* Block (vertical) padding, using the spacing scale.
|
|
99
|
+
* Overrides `padding` on the block axis when both are set.
|
|
100
|
+
*/
|
|
101
|
+
paddingBlock?: SpacingStep;
|
|
102
|
+
/**
|
|
103
|
+
* Enables scrollable overflow (`overflow: auto`) for the stack.
|
|
104
|
+
*
|
|
105
|
+
* Matches the `isScrollable` prop on `LayoutContent` and `LayoutPanel`.
|
|
106
|
+
* When the stack is itself a flex child that should scroll, pair it with
|
|
107
|
+
* a parent `StackItem size="fill" isScrollable` (StackItem applies the
|
|
108
|
+
* `min-height: 0` reset that flex scroll regions require).
|
|
109
|
+
* @default false
|
|
110
|
+
*/
|
|
111
|
+
isScrollable?: boolean;
|
|
85
112
|
/**
|
|
86
113
|
* Whether items should wrap.
|
|
87
114
|
* - `nowrap`: Items stay on one line (default)
|
|
@@ -145,7 +172,7 @@ export interface StackProps extends BaseProps<HTMLElement> {
|
|
|
145
172
|
* </Stack>
|
|
146
173
|
* ```
|
|
147
174
|
*/
|
|
148
|
-
export declare function Stack({ direction, hAlign, vAlign, justify, align, gap, width, height, wrap, as: element, xstyle, className, style, children, ref, ...props }: StackProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
175
|
+
export declare function Stack({ direction, hAlign, vAlign, justify, align, gap, padding, paddingInline, paddingBlock, isScrollable, width, height, wrap, as: element, xstyle, className, style, children, ref, ...props }: StackProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
149
176
|
export declare namespace Stack {
|
|
150
177
|
var displayName: string;
|
|
151
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/Stack/Stack.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/Stack/Stack.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAc9C;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAEtE,MAAM,WAAW,UAAW,SAAQ,SAAS,CAAC,WAAW,CAAC;IACxD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAE7B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAE5B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAE3B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;OAGG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;IAEjB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,KAAK,CAAC,EACpB,SAAsB,EACtB,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,EACL,GAAG,EACH,OAAO,EACP,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,IAAI,EACJ,EAAE,EAAE,OAAe,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,UAAU,0FA4DZ;yBAjFe,KAAK"}
|
package/dist/Stack/Stack.js
CHANGED
|
@@ -15,8 +15,15 @@
|
|
|
15
15
|
import { createElement } from 'react';
|
|
16
16
|
import * as stylex from '@stylexjs/stylex';
|
|
17
17
|
import { stack } from "./stack.stylex.js";
|
|
18
|
+
import { paddingInlineStyles, paddingBlockStyles } from "../Layout/padding.stylex.js";
|
|
18
19
|
import { mergeProps } from "../utils/index.js";
|
|
19
20
|
import { themeProps } from "../utils/themeProps.js";
|
|
21
|
+
const overflowStyles = {
|
|
22
|
+
scrollable: {
|
|
23
|
+
kVQacm: "xysyzu8",
|
|
24
|
+
$$css: true
|
|
25
|
+
}
|
|
26
|
+
};
|
|
20
27
|
|
|
21
28
|
/**
|
|
22
29
|
* Alignment values accepted by Stack.
|
|
@@ -60,6 +67,10 @@ export function Stack({
|
|
|
60
67
|
justify,
|
|
61
68
|
align,
|
|
62
69
|
gap,
|
|
70
|
+
padding,
|
|
71
|
+
paddingInline,
|
|
72
|
+
paddingBlock,
|
|
73
|
+
isScrollable,
|
|
63
74
|
width,
|
|
64
75
|
height,
|
|
65
76
|
wrap,
|
|
@@ -78,13 +89,18 @@ export function Stack({
|
|
|
78
89
|
// Map hAlign/vAlign to mainAlign/crossAlign based on direction
|
|
79
90
|
const mainAlign = direction === 'horizontal' ? resolvedHAlign : resolvedVAlign;
|
|
80
91
|
const crossAlign = direction === 'horizontal' ? resolvedVAlign : resolvedHAlign;
|
|
92
|
+
|
|
93
|
+
// Resolve padding to per-axis values: `padding` sets both axes; `paddingInline`
|
|
94
|
+
// / `paddingBlock` take precedence on their own axis when provided.
|
|
95
|
+
const resolvedPaddingInline = paddingInline ?? padding;
|
|
96
|
+
const resolvedPaddingBlock = paddingBlock ?? padding;
|
|
81
97
|
const stylexProps = stylex.props(...stack({
|
|
82
98
|
direction,
|
|
83
99
|
crossAlign,
|
|
84
100
|
mainAlign,
|
|
85
101
|
gap,
|
|
86
102
|
wrap
|
|
87
|
-
}), xstyle);
|
|
103
|
+
}), resolvedPaddingInline != null && paddingInlineStyles[resolvedPaddingInline], resolvedPaddingBlock != null && paddingBlockStyles[resolvedPaddingBlock], isScrollable && overflowStyles.scrollable, xstyle);
|
|
88
104
|
|
|
89
105
|
// Build inline style for dynamic sizing values
|
|
90
106
|
const sizingStyle = {
|
|
@@ -28,6 +28,17 @@ export interface StackItemProps extends BaseProps<HTMLElement> {
|
|
|
28
28
|
* @default "static"
|
|
29
29
|
*/
|
|
30
30
|
size?: StackItemSize;
|
|
31
|
+
/**
|
|
32
|
+
* Enables scrollable overflow (`overflow: auto`) for the item.
|
|
33
|
+
*
|
|
34
|
+
* StackItem already applies the flex `min-height: 0` / `min-width: 0`
|
|
35
|
+
* reset, so `<StackItem size="fill" isScrollable>` is a complete scroll
|
|
36
|
+
* region — it grows to fill the stack and scrolls its own overflow with
|
|
37
|
+
* no extra style plumbing. Matches `isScrollable` on `LayoutContent`
|
|
38
|
+
* and `LayoutPanel`.
|
|
39
|
+
* @default false
|
|
40
|
+
*/
|
|
41
|
+
isScrollable?: boolean;
|
|
31
42
|
/**
|
|
32
43
|
* The element type to render.
|
|
33
44
|
* @default 'div'
|
|
@@ -73,7 +84,7 @@ export interface StackItemProps extends BaseProps<HTMLElement> {
|
|
|
73
84
|
* </HStack>
|
|
74
85
|
* ```
|
|
75
86
|
*/
|
|
76
|
-
export declare function StackItem({ crossAlignSelf, size, as: element, xstyle, className, style, children, ref, ...props }: StackItemProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
87
|
+
export declare function StackItem({ crossAlignSelf, size, isScrollable, as: element, xstyle, className, style, children, ref, ...props }: StackItemProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
77
88
|
export declare namespace StackItem {
|
|
78
89
|
var displayName: string;
|
|
79
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackItem.d.ts","sourceRoot":"","sources":["../../src/Stack/StackItem.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"StackItem.d.ts","sourceRoot":"","sources":["../../src/Stack/StackItem.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAU5B,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;OAGG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;IAEzC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;IAEjB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EACxB,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,EAAE,EAAE,OAAe,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,0FAqBhB;yBAhCe,SAAS"}
|
package/dist/Stack/StackItem.js
CHANGED
|
@@ -16,6 +16,12 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
16
16
|
import { stackItem } from "./stackItem.stylex.js";
|
|
17
17
|
import { mergeProps } from "../utils/index.js";
|
|
18
18
|
import { themeProps } from "../utils/themeProps.js";
|
|
19
|
+
const overflowStyles = {
|
|
20
|
+
scrollable: {
|
|
21
|
+
kVQacm: "xysyzu8",
|
|
22
|
+
$$css: true
|
|
23
|
+
}
|
|
24
|
+
};
|
|
19
25
|
/**
|
|
20
26
|
* Stack item component for controlling individual item behavior within a stack.
|
|
21
27
|
*
|
|
@@ -33,6 +39,7 @@ import { themeProps } from "../utils/themeProps.js";
|
|
|
33
39
|
export function StackItem({
|
|
34
40
|
crossAlignSelf,
|
|
35
41
|
size,
|
|
42
|
+
isScrollable,
|
|
36
43
|
as: element = 'div',
|
|
37
44
|
xstyle,
|
|
38
45
|
className,
|
|
@@ -44,7 +51,7 @@ export function StackItem({
|
|
|
44
51
|
const stylexProps = stylex.props(...stackItem({
|
|
45
52
|
crossAlignSelf,
|
|
46
53
|
size
|
|
47
|
-
}), xstyle);
|
|
54
|
+
}), isScrollable && overflowStyles.scrollable, xstyle);
|
|
48
55
|
return /*#__PURE__*/createElement(element, {
|
|
49
56
|
ref: ref,
|
|
50
57
|
...mergeProps(themeProps('stack-item', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../src/TabList/Tab.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAAc,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAYzD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAKrD,MAAM,WAAW,QAAS,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5D;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAoID;;;;;;;;;;;GAWG;AACH,wBAAgB,GAAG,CAAC,EAClB,EAAE,EACF,GAAG,EACH,KAAK,EACL,KAAK,EACL,aAAqB,EACrB,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,SAAS,EACb,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../src/TabList/Tab.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAAc,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAYzD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAKrD,MAAM,WAAW,QAAS,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5D;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAoID;;;;;;;;;;;GAWG;AACH,wBAAgB,GAAG,CAAC,EAClB,EAAE,EACF,GAAG,EACH,KAAK,EACL,KAAK,EACL,aAAqB,EACrB,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,SAAS,EACb,EAAE,QAAQ,qBA2GV;yBAzHe,GAAG"}
|
package/dist/TabList/Tab.js
CHANGED
|
@@ -186,7 +186,13 @@ export function Tab({
|
|
|
186
186
|
'aria-label': label
|
|
187
187
|
} : {}),
|
|
188
188
|
[EDGE_COMP_ATTR]: '',
|
|
189
|
+
'data-tab-value': value,
|
|
189
190
|
'aria-current': isSelected ? 'page' : undefined,
|
|
191
|
+
// Roving tabindex: the tab strip is a single Tab stop. The selected tab is
|
|
192
|
+
// the tabbable one; the rest are reachable via arrow keys (handled by
|
|
193
|
+
// TabList's onKeyDown). When no tab is selected, TabList's repair effect
|
|
194
|
+
// makes the first stop tabbable.
|
|
195
|
+
tabIndex: isSelected ? 0 : -1,
|
|
190
196
|
...mergeProps(themeProps('tab', {
|
|
191
197
|
selected: isSelected ? 'selected' : null
|
|
192
198
|
}), stylex.props(styles.base, sizeStyles[size], isSelected && styles.selected, isFill && layoutStyles.fill, tabScope, xstyle), className, style)
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file TabList.tsx
|
|
3
|
-
* @input Uses React, StyleX, TabListContext
|
|
3
|
+
* @input Uses React, StyleX, TabListContext, useListFocus
|
|
4
4
|
* @output Exports TabList component and TabListProps type
|
|
5
|
-
* @position Nav wrapper; provides TabListContext to Tab and TabMenu children
|
|
5
|
+
* @position Nav wrapper; provides TabListContext to Tab and TabMenu children.
|
|
6
|
+
* Owns roving-tabindex keyboard navigation (Arrow/Home/End) across the tab
|
|
7
|
+
* strip via the shared useListFocus hook so it is a single Tab stop.
|
|
6
8
|
*
|
|
7
9
|
* SYNC: When modified, update:
|
|
8
10
|
* - /packages/core/src/TabList/TabList.doc.mjs
|
|
@@ -12,7 +14,7 @@
|
|
|
12
14
|
*/
|
|
13
15
|
import React, { type ReactNode } from 'react';
|
|
14
16
|
import type { BaseProps } from '../BaseProps';
|
|
15
|
-
import type { TabListSize } from './TabListContext';
|
|
17
|
+
import type { TabListOrientation, TabListSize } from './TabListContext';
|
|
16
18
|
export interface TabListProps extends Omit<BaseProps<HTMLElement>, 'onChange'> {
|
|
17
19
|
ref?: React.Ref<HTMLElement>;
|
|
18
20
|
/**
|
|
@@ -41,6 +43,15 @@ export interface TabListProps extends Omit<BaseProps<HTMLElement>, 'onChange'> {
|
|
|
41
43
|
* @default false
|
|
42
44
|
*/
|
|
43
45
|
hasDivider?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Orientation of the tab strip, controlling which arrow keys move
|
|
48
|
+
* focus between tabs.
|
|
49
|
+
* - `'horizontal'` (default): ArrowLeft / ArrowRight (ArrowUp / ArrowDown
|
|
50
|
+
* also work per the WAI-ARIA APG).
|
|
51
|
+
* - `'vertical'`: ArrowUp / ArrowDown (ArrowLeft / ArrowRight also work).
|
|
52
|
+
* @default 'horizontal'
|
|
53
|
+
*/
|
|
54
|
+
orientation?: TabListOrientation;
|
|
44
55
|
/**
|
|
45
56
|
* Tab and TabMenu children.
|
|
46
57
|
*/
|
|
@@ -62,7 +73,7 @@ export interface TabListProps extends Omit<BaseProps<HTMLElement>, 'onChange'> {
|
|
|
62
73
|
* </TabList>
|
|
63
74
|
* ```
|
|
64
75
|
*/
|
|
65
|
-
export declare function TabList({ ref, value, onChange, size: sizeProp, layout, hasDivider, xstyle, className, style, children, ...restProps }: TabListProps): React.JSX.Element;
|
|
76
|
+
export declare function TabList({ ref, value, onChange, size: sizeProp, layout, hasDivider, orientation, xstyle, className, style, children, ...restProps }: TabListProps): React.JSX.Element;
|
|
66
77
|
export declare namespace TabList {
|
|
67
78
|
var displayName: string;
|
|
68
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../src/TabList/TabList.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../src/TabList/TabList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,kBAAkB,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAsBtE,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAC5E,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,GAAG,EACH,KAAK,EACL,QAAQ,EACR,IAAI,EAAE,QAAQ,EACd,MAAc,EACd,UAAkB,EAClB,WAA0B,EAC1B,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,SAAS,EACb,EAAE,YAAY,qBAoEd;yBAjFe,OAAO"}
|
package/dist/TabList/TabList.js
CHANGED
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file TabList.tsx
|
|
7
|
-
* @input Uses React, StyleX, TabListContext
|
|
7
|
+
* @input Uses React, StyleX, TabListContext, useListFocus
|
|
8
8
|
* @output Exports TabList component and TabListProps type
|
|
9
|
-
* @position Nav wrapper; provides TabListContext to Tab and TabMenu children
|
|
9
|
+
* @position Nav wrapper; provides TabListContext to Tab and TabMenu children.
|
|
10
|
+
* Owns roving-tabindex keyboard navigation (Arrow/Home/End) across the tab
|
|
11
|
+
* strip via the shared useListFocus hook so it is a single Tab stop.
|
|
10
12
|
*
|
|
11
13
|
* SYNC: When modified, update:
|
|
12
14
|
* - /packages/core/src/TabList/TabList.doc.mjs
|
|
@@ -20,10 +22,22 @@ import "../theme/tokens.stylex.js";
|
|
|
20
22
|
import { borderVars, colorVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
21
23
|
import { TabListContext } from "./TabListContext.js";
|
|
22
24
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
23
|
-
import { mergeProps } from "../utils/index.js";
|
|
25
|
+
import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
26
|
+
import { useListFocus } from "../hooks/useListFocus.js";
|
|
27
|
+
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
24
28
|
import { EDGE_COMP_ATTR } from "../Layout/edgeCompensation.stylex.js";
|
|
25
29
|
import { themeProps } from "../utils/themeProps.js";
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Selector matching the focusable stops in the tab strip: every Tab
|
|
33
|
+
* (`[data-tab-value]`) and every TabMenu trigger (`[data-tab-menu]`),
|
|
34
|
+
* in DOM order. Disabled stops are filtered out by the handler.
|
|
35
|
+
*/
|
|
26
36
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
37
|
+
const TAB_STOP_SELECTOR = '[data-tab-value],[data-tab-menu]';
|
|
38
|
+
function isDisabledStop(el) {
|
|
39
|
+
return el.getAttribute('aria-disabled') === 'true' || el instanceof HTMLButtonElement && el.disabled;
|
|
40
|
+
}
|
|
27
41
|
const styles = {
|
|
28
42
|
nav: {
|
|
29
43
|
k1xSpc: "x78zum5",
|
|
@@ -68,6 +82,7 @@ export function TabList({
|
|
|
68
82
|
size: sizeProp,
|
|
69
83
|
layout = 'hug',
|
|
70
84
|
hasDivider = false,
|
|
85
|
+
orientation = 'horizontal',
|
|
71
86
|
xstyle,
|
|
72
87
|
className,
|
|
73
88
|
style,
|
|
@@ -75,17 +90,56 @@ export function TabList({
|
|
|
75
90
|
...restProps
|
|
76
91
|
}) {
|
|
77
92
|
const size = useSize(sizeProp, 'md');
|
|
93
|
+
|
|
94
|
+
// Roving-tabindex keyboard navigation across the tab strip via the shared
|
|
95
|
+
// hook. `orientation: 'both'` accepts both arrow axes per the WAI-ARIA APG
|
|
96
|
+
// allowance for tab strips (ArrowRight/ArrowDown advance, ArrowLeft/ArrowUp
|
|
97
|
+
// retreat) regardless of the component's `orientation` prop, which only
|
|
98
|
+
// drives the reported `aria-orientation`.
|
|
99
|
+
const {
|
|
100
|
+
listRef,
|
|
101
|
+
handleKeyDown
|
|
102
|
+
} = useListFocus({
|
|
103
|
+
itemSelector: TAB_STOP_SELECTOR,
|
|
104
|
+
orientation: 'both'
|
|
105
|
+
});
|
|
78
106
|
const contextValue = useMemo(() => ({
|
|
79
107
|
value,
|
|
80
108
|
onChange,
|
|
81
109
|
size,
|
|
82
110
|
layout
|
|
83
111
|
}), [value, onChange, size, layout]);
|
|
112
|
+
|
|
113
|
+
// Roving tabindex: the tab strip is a single Tab stop. Individual Tabs set
|
|
114
|
+
// tabIndex={0} on the selected tab and -1 on the rest (see Tab.tsx). If the
|
|
115
|
+
// selected value doesn't correspond to any focusable stop (e.g. selection
|
|
116
|
+
// lives in a collapsed TabMenu that renders no matching stop, or there is no
|
|
117
|
+
// selection at all), no stop would be tabbable — this effect repairs that by
|
|
118
|
+
// making the first stop tabbable. useListFocus handles arrow navigation but
|
|
119
|
+
// not the initial tabbable stop, so this stays. Same pattern as the
|
|
120
|
+
// SegmentedControl fix.
|
|
121
|
+
useIsomorphicLayoutEffect(() => {
|
|
122
|
+
const nav = listRef.current;
|
|
123
|
+
if (nav == null) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const stops = Array.from(nav.querySelectorAll(TAB_STOP_SELECTOR));
|
|
127
|
+
if (stops.length === 0) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const hasTabbable = stops.some(el => el.tabIndex === 0);
|
|
131
|
+
if (!hasTabbable) {
|
|
132
|
+
const firstEnabled = stops.find(el => !isDisabledStop(el)) ?? stops[0];
|
|
133
|
+
firstEnabled.tabIndex = 0;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
84
136
|
return /*#__PURE__*/_jsx(TabListContext, {
|
|
85
137
|
value: contextValue,
|
|
86
138
|
children: /*#__PURE__*/_jsx("nav", {
|
|
87
|
-
ref: ref,
|
|
139
|
+
ref: mergeRefs(ref, listRef),
|
|
88
140
|
"aria-label": "Tabs",
|
|
141
|
+
"aria-orientation": orientation,
|
|
142
|
+
onKeyDown: handleKeyDown,
|
|
89
143
|
[EDGE_COMP_ATTR]: '',
|
|
90
144
|
...restProps,
|
|
91
145
|
...mergeProps(themeProps('tab-list', {
|
|
@@ -9,6 +9,11 @@ export type TabListSize = 'sm' | 'md' | 'lg';
|
|
|
9
9
|
* - `'fill'`: tabs stretch equally to fill the container width.
|
|
10
10
|
*/
|
|
11
11
|
export type TabListLayout = 'hug' | 'fill';
|
|
12
|
+
/**
|
|
13
|
+
* Orientation of the tab strip. Controls which arrow keys move focus
|
|
14
|
+
* between tabs and the reported `aria-orientation`.
|
|
15
|
+
*/
|
|
16
|
+
export type TabListOrientation = 'horizontal' | 'vertical';
|
|
12
17
|
/**
|
|
13
18
|
* Context for communicating value/onChange/size/layout from TabList to children.
|
|
14
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabListContext.d.ts","sourceRoot":"","sources":["../../src/TabList/TabListContext.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"TabListContext.d.ts","sourceRoot":"","sources":["../../src/TabList/TabListContext.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAG9E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CASvD"}
|
|
@@ -23,6 +23,11 @@ import { createContext, use } from 'react';
|
|
|
23
23
|
* - `'fill'`: tabs stretch equally to fill the container width.
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Orientation of the tab strip. Controls which arrow keys move focus
|
|
28
|
+
* between tabs and the reported `aria-orientation`.
|
|
29
|
+
*/
|
|
30
|
+
|
|
26
31
|
/**
|
|
27
32
|
* Context for communicating value/onChange/size/layout from TabList to children.
|
|
28
33
|
*/
|
package/dist/TabList/TabMenu.js
CHANGED
|
@@ -172,6 +172,8 @@ export function TabMenu({
|
|
|
172
172
|
"aria-haspopup": "menu",
|
|
173
173
|
"aria-expanded": popover.isOpen,
|
|
174
174
|
"aria-controls": menuId,
|
|
175
|
+
"data-tab-menu": "",
|
|
176
|
+
tabIndex: hasSelectedOption ? 0 : -1,
|
|
175
177
|
onClick: handleToggle,
|
|
176
178
|
...mergeProps(themeProps('tab-menu'), stylex.props(styles.trigger, sizeStyles[size], hasSelectedOption && styles.triggerSelected, tabScope, xstyle), className, style),
|
|
177
179
|
children: [/*#__PURE__*/_jsx("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/Toast/Toast.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBrC,OAAO,KAAK,EAAC,SAAS,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAyD3D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,SAAiB,EACjB,SAAS,GACV,EAAE,UAAU,+
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/Toast/Toast.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBrC,OAAO,KAAK,EAAC,SAAS,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAyD3D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,SAAiB,EACjB,SAAS,GACV,EAAE,UAAU,+BAiHZ;yBAzHe,KAAK"}
|
package/dist/Toast/Toast.js
CHANGED
|
@@ -88,6 +88,20 @@ export function Toast({
|
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
}, [autoHideDuration, startTimer]);
|
|
91
|
+
|
|
92
|
+
// Pause the auto-hide timer while the window is not focused, so a toast
|
|
93
|
+
// doesn't silently expire while the user is in another window or tab.
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (!isAutoHide) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
window.addEventListener('blur', pauseTimer);
|
|
99
|
+
window.addEventListener('focus', resumeTimer);
|
|
100
|
+
return () => {
|
|
101
|
+
window.removeEventListener('blur', pauseTimer);
|
|
102
|
+
window.removeEventListener('focus', resumeTimer);
|
|
103
|
+
};
|
|
104
|
+
}, [isAutoHide, pauseTimer, resumeTimer]);
|
|
91
105
|
const handleDismiss = useCallback(() => {
|
|
92
106
|
onDismiss('manual');
|
|
93
107
|
}, [onDismiss]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastViewport.d.ts","sourceRoot":"","sources":["../../src/Toast/ToastViewport.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToastViewport.d.ts","sourceRoot":"","sources":["../../src/Toast/ToastViewport.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAa,aAAa,EAAqB,MAAM,SAAS,CAAC;AA2D3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACtE;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAsB,EACtB,UAAc,EACd,KAAK,EACL,UAAiB,EACjB,QAAQ,GACT,EAAE,kBAAkB,+BAqSpB;yBA3Se,aAAa"}
|