@astryxdesign/core 0.1.2 → 0.1.3-canary.102854d
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/CHANGELOG.md +165 -0
- package/README.md +12 -12
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +11 -5
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +24 -5
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +31 -12
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +0 -1
- package/dist/Calendar/Calendar.d.ts +5 -4
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +124 -61
- package/dist/Calendar/dayCellUtils.d.ts +67 -5
- package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
- package/dist/Calendar/dayCellUtils.js +139 -18
- package/dist/Calendar/hooks/index.d.ts +0 -2
- package/dist/Calendar/hooks/index.d.ts.map +1 -1
- package/dist/Calendar/hooks/index.js +1 -2
- package/dist/Calendar/index.d.ts +3 -3
- package/dist/Calendar/index.d.ts.map +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/Calendar/styles.d.ts +3 -9
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +3 -11
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +17 -3
- package/dist/Center/Center.d.ts +11 -1
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +9 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +0 -1
- package/dist/Chat/ChatMessageList.d.ts +14 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -0
- package/dist/Chat/useTriggerMenu.d.ts +8 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +15 -3
- package/dist/CheckboxInput/CheckboxInput.d.ts +23 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +51 -9
- package/dist/CheckboxList/CheckboxList.d.ts +13 -1
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +39 -9
- package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +0 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +9 -5
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +51 -37
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +5 -5
- package/dist/ContextMenu/ContextMenu.d.ts +12 -5
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +96 -11
- package/dist/DateInput/DateInput.d.ts +23 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +167 -99
- package/dist/DateRangeInput/DateRangeInput.d.ts +23 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +42 -9
- package/dist/DateTimeInput/DateTimeInput.d.ts +35 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +78 -15
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +12 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +1 -8
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +42 -14
- 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 +41 -26
- package/dist/FileInput/FileInput.d.ts +22 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +56 -10
- package/dist/Grid/Grid.d.ts +11 -1
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +32 -6
- package/dist/InputGroup/InputGroup.d.ts +4 -3
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +16 -6
- package/dist/InputGroup/InputGroupContext.d.ts +4 -0
- package/dist/InputGroup/InputGroupContext.d.ts.map +1 -1
- package/dist/InputGroup/InputGroupContext.js +2 -2
- package/dist/InputGroup/groupStyles.d.ts +1 -1
- package/dist/InputGroup/groupStyles.d.ts.map +1 -1
- package/dist/InputGroup/groupStyles.js +3 -3
- package/dist/InputGroup/index.d.ts +1 -0
- package/dist/InputGroup/index.d.ts.map +1 -1
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +33 -1
- package/dist/Layer/layerAnimations.stylex.d.ts +4 -0
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +8 -4
- package/dist/Layer/useLayer.d.ts +10 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +64 -9
- package/dist/Layout/Layout.d.ts +4 -11
- package/dist/Layout/Layout.d.ts.map +1 -1
- package/dist/Layout/Layout.js +10 -11
- package/dist/Layout/LayoutFooter.d.ts +2 -2
- package/dist/Layout/LayoutFooter.d.ts.map +1 -1
- package/dist/Layout/LayoutHeader.d.ts +2 -2
- package/dist/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/Layout/LayoutPanel.d.ts +2 -2
- package/dist/Layout/LayoutPanel.d.ts.map +1 -1
- 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/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +4 -2
- package/dist/Link/Link.d.ts +16 -1
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +18 -7
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +7 -0
- package/dist/MoreMenu/MoreMenu.d.ts +1 -7
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MoreMenu/MoreMenu.js +0 -2
- package/dist/MultiSelector/MultiSelector.d.ts +27 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +141 -42
- 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 +34 -3
- package/dist/NumberInput/NumberInput.d.ts +23 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +62 -12
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +15 -1
- package/dist/Popover/Popover.d.ts +18 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +5 -2
- package/dist/Popover/usePopover.d.ts +38 -3
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +24 -9
- package/dist/PowerSearch/PowerSearch.d.ts +11 -1
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +6 -1
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +3 -5
- package/dist/RadioList/RadioList.d.ts +20 -2
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +105 -9
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +13 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts +13 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +78 -44
- package/dist/SegmentedControl/SegmentedControlContext.d.ts +7 -0
- package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +13 -2
- package/dist/Selector/Selector.d.ts +24 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +122 -43
- 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/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +2 -0
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +8 -2
- package/dist/Slider/Slider.d.ts +21 -0
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +36 -9
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +38 -23
- package/dist/Stack/Stack.d.ts.map +1 -1
- package/dist/Stack/Stack.js +25 -1
- package/dist/Stack/StackItem.d.ts +12 -23
- package/dist/Stack/StackItem.d.ts.map +1 -1
- package/dist/Stack/StackItem.js +8 -1
- package/dist/Switch/Switch.d.ts +23 -2
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +41 -11
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +6 -0
- package/dist/TabList/TabList.d.ts +16 -4
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +87 -10
- 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.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +6 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +13 -9
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +10 -1
- package/dist/Table/TableCell.d.ts +8 -1
- package/dist/Table/TableCell.d.ts.map +1 -1
- package/dist/Table/TableCell.js +79 -10
- package/dist/Table/TableHeaderCell.d.ts +8 -1
- package/dist/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/Table/TableHeaderCell.js +16 -16
- package/dist/Table/index.d.ts +4 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +3 -2
- package/dist/Table/plugins/pagination/paginateData.d.ts +2 -1
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +8 -3
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +6 -1
- package/dist/Table/plugins/rowExpansion/index.d.ts +3 -0
- package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -0
- package/dist/Table/plugins/rowExpansion/index.js +3 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +90 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +398 -0
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +59 -3
- package/dist/Table/tableContextMenu.d.ts +37 -0
- package/dist/Table/tableContextMenu.d.ts.map +1 -0
- package/dist/Table/tableContextMenu.js +140 -0
- package/dist/Table/types.d.ts +66 -0
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/TextArea/TextArea.d.ts +22 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +41 -9
- package/dist/TextInput/TextInput.d.ts +23 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +55 -10
- package/dist/TimeInput/TimeInput.d.ts +23 -1
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +147 -76
- 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 +131 -3
- package/dist/Tokenizer/Tokenizer.d.ts +12 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +26 -4
- package/dist/Toolbar/Toolbar.d.ts +3 -3
- package/dist/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +51 -7
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +56 -9
- package/dist/TopNav/TopNavHeading.d.ts +7 -1
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +8 -0
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +72 -2
- package/dist/TreeList/TreeListItem.d.ts +11 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +51 -12
- 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 +13 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +69 -6
- package/dist/Typeahead/Typeahead.d.ts +26 -3
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +65 -29
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +61 -0
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
- package/dist/VisuallyHidden/VisuallyHidden.js +65 -0
- package/dist/VisuallyHidden/index.d.ts +11 -0
- package/dist/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/VisuallyHidden/index.js +13 -0
- package/dist/astryx.css +22 -0
- package/dist/astryx.umd.js +55 -55
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/focusableSelector.d.ts +22 -0
- package/dist/hooks/focusableSelector.d.ts.map +1 -0
- package/dist/hooks/focusableSelector.js +24 -0
- package/dist/hooks/index.d.ts +12 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +7 -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/useEntryAnimation.d.ts.map +1 -1
- package/dist/hooks/useEntryAnimation.js +4 -4
- package/dist/hooks/useFocusTrap.d.ts +18 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +87 -3
- package/dist/hooks/useGridFocus.d.ts +88 -1
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +261 -62
- package/dist/hooks/useKeyboardHint.d.ts +82 -0
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -0
- package/dist/hooks/useKeyboardHint.js +220 -0
- package/dist/hooks/useListFocus.d.ts +78 -7
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +305 -52
- 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 +157 -0
- package/dist/hooks/useTreeFocus.d.ts.map +1 -0
- package/dist/hooks/useTreeFocus.js +337 -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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/utils/dateTypes.d.ts +12 -0
- package/dist/utils/dateTypes.d.ts.map +1 -1
- package/dist/utils/dateTypes.js +41 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/inputAria.d.ts +29 -0
- package/dist/utils/inputAria.d.ts.map +1 -0
- package/dist/utils/inputAria.js +30 -0
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +5 -2
- package/docs.mjs +2 -2
- package/package.json +12 -8
- package/src/Avatar/Avatar.doc.mjs +2 -2
- package/src/Avatar/Avatar.test.tsx +37 -0
- package/src/Avatar/Avatar.tsx +10 -5
- package/src/Breadcrumbs/BreadcrumbItem.tsx +25 -7
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
- package/src/Button/Button.tsx +42 -22
- package/src/ButtonGroup/ButtonGroup.test.tsx +9 -9
- package/src/ButtonGroup/ButtonGroup.tsx +0 -1
- package/src/Calendar/Calendar.doc.mjs +4 -4
- package/src/Calendar/Calendar.test.tsx +247 -30
- package/src/Calendar/Calendar.tsx +173 -86
- package/src/Calendar/dayCellUtils.test.ts +306 -1
- package/src/Calendar/dayCellUtils.ts +206 -13
- package/src/Calendar/hooks/index.ts +0 -6
- package/src/Calendar/index.ts +1 -3
- package/src/Calendar/styles.ts +4 -9
- package/src/Carousel/Carousel.doc.mjs +7 -1
- package/src/Carousel/Carousel.test.tsx +20 -0
- package/src/Carousel/Carousel.tsx +16 -1
- package/src/Center/Center.doc.mjs +12 -2
- package/src/Center/Center.tsx +28 -3
- package/src/Chat/ChatComposerInput.test.tsx +26 -7
- package/src/Chat/ChatComposerInput.tsx +0 -1
- package/src/Chat/ChatDictationButton.doc.mjs +1 -1
- package/src/Chat/ChatMessageList.doc.mjs +8 -0
- package/src/Chat/ChatMessageList.test.tsx +18 -0
- package/src/Chat/ChatMessageList.tsx +16 -0
- package/src/Chat/useTriggerMenu.tsx +22 -4
- package/src/CheckboxInput/CheckboxInput.doc.mjs +10 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +172 -27
- package/src/CheckboxInput/CheckboxInput.tsx +78 -6
- package/src/CheckboxList/CheckboxList.doc.mjs +9 -0
- package/src/CheckboxList/CheckboxList.test.tsx +192 -26
- package/src/CheckboxList/CheckboxList.tsx +56 -3
- package/src/CheckboxList/CheckboxListContext.tsx +7 -0
- package/src/CheckboxList/CheckboxListItem.tsx +0 -3
- package/src/Citation/Citation.doc.mjs +10 -0
- package/src/Citation/Citation.test.tsx +121 -0
- package/src/Citation/Citation.tsx +15 -3
- package/src/CodeBlock/CodeBlock.test.tsx +115 -0
- package/src/CodeBlock/CodeBlock.tsx +63 -33
- package/src/CommandPalette/CommandPalette.test.tsx +47 -1
- package/src/CommandPalette/CommandPalette.tsx +9 -21
- package/src/ContextMenu/ContextMenu.doc.mjs +4 -4
- package/src/ContextMenu/ContextMenu.test.tsx +155 -1
- package/src/ContextMenu/ContextMenu.tsx +129 -16
- package/src/DateInput/DateInput.doc.mjs +291 -56
- package/src/DateInput/DateInput.test.tsx +248 -2
- package/src/DateInput/DateInput.tsx +196 -100
- package/src/DateRangeInput/DateRangeInput.doc.mjs +251 -46
- package/src/DateRangeInput/DateRangeInput.test.tsx +182 -20
- package/src/DateRangeInput/DateRangeInput.tsx +63 -5
- package/src/DateTimeInput/DateTimeInput.doc.mjs +368 -67
- package/src/DateTimeInput/DateTimeInput.test.tsx +279 -11
- package/src/DateTimeInput/DateTimeInput.tsx +125 -17
- package/src/Dialog/Dialog.doc.mjs +2 -2
- package/src/Dialog/Dialog.tsx +12 -0
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -8
- package/src/DropdownMenu/DropdownMenu.test.tsx +56 -42
- package/src/DropdownMenu/DropdownMenu.tsx +52 -18
- package/src/Field/Field.doc.mjs +59 -18
- package/src/Field/Field.test.tsx +32 -0
- package/src/Field/Field.tsx +23 -5
- package/src/Field/FieldLabel.tsx +55 -17
- package/src/FileInput/FileInput.doc.mjs +17 -0
- package/src/FileInput/FileInput.test.tsx +283 -49
- package/src/FileInput/FileInput.tsx +76 -4
- package/src/Grid/Grid.doc.mjs +17 -4
- package/src/Grid/Grid.test.tsx +43 -30
- package/src/Grid/Grid.tsx +38 -3
- package/src/Icon/Icon.doc.mjs +3 -3
- package/src/InputGroup/InputGroup.doc.mjs +111 -23
- package/src/InputGroup/InputGroup.test.tsx +257 -60
- package/src/InputGroup/InputGroup.tsx +23 -5
- package/src/InputGroup/InputGroupContext.ts +9 -4
- package/src/InputGroup/groupStyles.ts +7 -1
- package/src/InputGroup/index.ts +1 -0
- package/src/Kbd/Kbd.test.tsx +22 -4
- package/src/Kbd/Kbd.tsx +35 -3
- package/src/Layer/layerAnimations.stylex.ts +20 -4
- package/src/Layer/useLayer.doc.mjs +5 -0
- package/src/Layer/useLayer.test.tsx +111 -0
- package/src/Layer/useLayer.tsx +90 -9
- package/src/Layout/Layout.tsx +8 -16
- package/src/Layout/LayoutFooter.doc.mjs +4 -4
- package/src/Layout/LayoutFooter.tsx +3 -3
- package/src/Layout/LayoutHeader.doc.mjs +4 -4
- package/src/Layout/LayoutHeader.tsx +3 -3
- package/src/Layout/LayoutPanel.tsx +3 -3
- package/src/Layout/__tests__/edgeCompensation.test.tsx +72 -0
- package/src/Layout/padding.stylex.ts +52 -0
- package/src/Lightbox/Lightbox.doc.mjs +9 -0
- package/src/Lightbox/Lightbox.test.tsx +53 -5
- package/src/Lightbox/Lightbox.tsx +9 -4
- package/src/Link/Link.doc.mjs +14 -0
- package/src/Link/Link.test.tsx +50 -0
- package/src/Link/Link.tsx +39 -4
- package/src/Markdown/Markdown.test.tsx +11 -0
- package/src/Markdown/Markdown.tsx +7 -0
- package/src/MetadataList/MetadataListItem.doc.mjs +4 -0
- package/src/MoreMenu/MoreMenu.doc.mjs +2 -17
- package/src/MoreMenu/MoreMenu.tsx +0 -9
- package/src/MultiSelector/MultiSelector.doc.mjs +35 -0
- package/src/MultiSelector/MultiSelector.test.tsx +375 -8
- package/src/MultiSelector/MultiSelector.tsx +194 -48
- package/src/MultiSelector/hooks.ts +27 -0
- package/src/NavMenu/NavHeadingMenu.test.tsx +77 -1
- package/src/NavMenu/NavHeadingMenu.tsx +50 -3
- package/src/NumberInput/NumberInput.doc.mjs +17 -0
- package/src/NumberInput/NumberInput.test.tsx +242 -40
- package/src/NumberInput/NumberInput.tsx +89 -11
- package/src/Pagination/Pagination.doc.mjs +3 -3
- package/src/Pagination/Pagination.test.tsx +117 -5
- package/src/Pagination/Pagination.tsx +21 -1
- package/src/Popover/Popover.doc.mjs +26 -0
- package/src/Popover/Popover.test.tsx +121 -0
- package/src/Popover/Popover.tsx +23 -2
- package/src/Popover/usePopover.doc.mjs +9 -3
- package/src/Popover/usePopover.tsx +70 -12
- package/src/PowerSearch/PowerSearch.doc.mjs +15 -0
- package/src/PowerSearch/PowerSearch.test.tsx +97 -1
- package/src/PowerSearch/PowerSearch.tsx +16 -3
- package/src/ProgressBar/ProgressBar.test.tsx +34 -26
- package/src/ProgressBar/ProgressBar.tsx +3 -4
- package/src/RadioList/RadioList.doc.mjs +9 -0
- package/src/RadioList/RadioList.test.tsx +252 -16
- package/src/RadioList/RadioList.tsx +166 -10
- package/src/RadioList/RadioListItem.tsx +14 -2
- package/src/SegmentedControl/SegmentedControl.doc.mjs +9 -0
- package/src/SegmentedControl/SegmentedControl.test.tsx +214 -42
- package/src/SegmentedControl/SegmentedControl.tsx +102 -54
- package/src/SegmentedControl/SegmentedControlContext.ts +7 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +14 -1
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.doc.mjs +31 -0
- package/src/Selector/Selector.test.tsx +387 -15
- package/src/Selector/Selector.tsx +175 -67
- package/src/Selector/hooks.ts +23 -0
- package/src/SideNav/SideNav.test.tsx +48 -0
- package/src/SideNav/SideNavHeading.tsx +8 -2
- package/src/SideNav/SideNavItem.tsx +2 -4
- package/src/Skeleton/Skeleton.test.tsx +25 -0
- package/src/Skeleton/Skeleton.tsx +11 -1
- package/src/Slider/Slider.doc.mjs +15 -0
- package/src/Slider/Slider.test.tsx +155 -2
- package/src/Slider/Slider.tsx +53 -5
- package/src/Spinner/Spinner.tsx +7 -1
- package/src/Stack/Stack.doc.mjs +77 -0
- package/src/Stack/Stack.test.tsx +55 -5
- package/src/Stack/Stack.tsx +73 -24
- package/src/Stack/StackItem.test.tsx +23 -0
- package/src/Stack/StackItem.tsx +20 -23
- package/src/Switch/Switch.doc.mjs +15 -0
- package/src/Switch/Switch.test.tsx +162 -27
- package/src/Switch/Switch.tsx +61 -21
- package/src/TabList/Tab.tsx +6 -0
- package/src/TabList/TabList.doc.mjs +9 -3
- package/src/TabList/TabList.test.tsx +251 -0
- package/src/TabList/TabList.tsx +103 -12
- package/src/TabList/TabListContext.ts +7 -3
- package/src/TabList/TabMenu.tsx +6 -3
- package/src/Table/BaseTable.tsx +24 -18
- package/src/Table/Table.doc.mjs +2 -0
- package/src/Table/Table.test.tsx +10 -0
- package/src/Table/Table.tsx +8 -0
- package/src/Table/TableCell.tsx +105 -24
- package/src/Table/TableHeaderCell.tsx +28 -29
- package/src/Table/index.ts +8 -2
- package/src/Table/plugins/pagination/paginateData.ts +10 -3
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +16 -0
- package/src/Table/plugins/pagination/useTablePagination.tsx +8 -1
- package/src/Table/plugins/rowExpansion/index.ts +7 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +155 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +590 -0
- package/src/Table/plugins/sortable/useTableSortable.test.tsx +91 -2
- package/src/Table/plugins/sortable/useTableSortable.tsx +53 -1
- package/src/Table/tableContextMenu.test.tsx +181 -0
- package/src/Table/tableContextMenu.tsx +160 -0
- package/src/Table/types.ts +74 -0
- package/src/Table/useTableColumnResize.doc.mjs +3 -3
- package/src/Table/useTablePagination.doc.mjs +4 -1
- package/src/Table/useTableRowExpansion.doc.mjs +63 -0
- package/src/Table/useTableSortable.doc.mjs +4 -1
- package/src/Table/useTableStickyColumns.doc.mjs +2 -2
- package/src/Text/Text.doc.mjs +18 -18
- package/src/TextArea/TextArea.doc.mjs +17 -0
- package/src/TextArea/TextArea.test.tsx +167 -35
- package/src/TextArea/TextArea.tsx +62 -15
- package/src/TextInput/TextInput.doc.mjs +17 -0
- package/src/TextInput/TextInput.test.tsx +168 -34
- package/src/TextInput/TextInput.tsx +77 -9
- package/src/Thumbnail/Thumbnail.doc.mjs +4 -4
- package/src/TimeInput/TimeInput.doc.mjs +345 -60
- package/src/TimeInput/TimeInput.test.tsx +255 -7
- package/src/TimeInput/TimeInput.tsx +176 -70
- package/src/Timestamp/Timestamp.doc.mjs +19 -19
- package/src/Toast/Toast.tsx +14 -0
- package/src/Toast/ToastViewport.test.tsx +214 -0
- package/src/Toast/ToastViewport.tsx +167 -21
- package/src/Tokenizer/Tokenizer.doc.mjs +29 -14
- package/src/Tokenizer/Tokenizer.test.tsx +105 -1
- package/src/Tokenizer/Tokenizer.tsx +37 -1
- package/src/Toolbar/Toolbar.test.tsx +109 -6
- package/src/Toolbar/Toolbar.tsx +59 -5
- package/src/Tooltip/Tooltip.test.tsx +68 -0
- package/src/Tooltip/useTooltip.tsx +55 -8
- package/src/TopNav/TopNav.test.tsx +50 -0
- package/src/TopNav/TopNavHeading.tsx +17 -1
- package/src/TreeList/TreeList.test.tsx +295 -6
- package/src/TreeList/TreeList.tsx +73 -1
- package/src/TreeList/TreeListItem.tsx +51 -5
- package/src/TreeList/treeListItem.markers.stylex.ts +20 -0
- package/src/Typeahead/BaseTypeahead.tsx +93 -9
- package/src/Typeahead/Typeahead.doc.mjs +146 -30
- package/src/Typeahead/Typeahead.test.tsx +331 -1
- package/src/Typeahead/Typeahead.tsx +105 -33
- package/src/VisuallyHidden/VisuallyHidden.doc.mjs +80 -0
- package/src/VisuallyHidden/VisuallyHidden.test.tsx +76 -0
- package/src/VisuallyHidden/VisuallyHidden.tsx +113 -0
- package/src/VisuallyHidden/index.ts +15 -0
- package/src/docs-script.test.mjs +50 -0
- package/src/hooks/focusableSelector.ts +25 -0
- package/src/hooks/index.ts +28 -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/useEntryAnimation.ts +16 -4
- package/src/hooks/useFocusTrap.test.tsx +132 -0
- package/src/hooks/useFocusTrap.ts +98 -4
- package/src/hooks/useGridFocus.doc.mjs +40 -2
- package/src/hooks/useGridFocus.test.tsx +132 -0
- package/src/hooks/useGridFocus.ts +343 -67
- package/src/hooks/useKeyboardHint.doc.mjs +101 -0
- package/src/hooks/useKeyboardHint.test.tsx +70 -0
- package/src/hooks/useKeyboardHint.tsx +332 -0
- package/src/hooks/useListFocus.doc.mjs +50 -10
- package/src/hooks/useListFocus.test.tsx +375 -0
- package/src/hooks/useListFocus.ts +395 -57
- package/src/hooks/useLongPress.test.tsx +134 -0
- package/src/hooks/useLongPress.ts +119 -0
- package/src/hooks/useTreeFocus.doc.mjs +140 -0
- package/src/hooks/useTreeFocus.test.tsx +214 -0
- package/src/hooks/useTreeFocus.ts +559 -0
- package/src/hooks/useTypeahead.test.tsx +109 -0
- package/src/hooks/useTypeahead.ts +183 -0
- package/src/index.ts +1 -0
- package/src/theme/derivedVarRegistry.test.ts +10 -5
- package/src/utils/dateTypes.test.ts +40 -0
- package/src/utils/dateTypes.ts +40 -0
- package/src/utils/index.ts +9 -0
- package/src/utils/inputAria.test.ts +39 -0
- package/src/utils/inputAria.ts +58 -0
- package/src/utils/timeParser.test.ts +10 -0
- package/src/utils/timeParser.ts +5 -2
- package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts +0 -57
- package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts.map +0 -1
- package/dist/Calendar/hooks/useCalendarRovingTabindex.js +0 -96
- package/src/Calendar/hooks/useCalendarRovingTabindex.ts +0 -118
|
@@ -18,10 +18,11 @@
|
|
|
18
18
|
import { useCallback, useId, useMemo, useOptimistic, useTransition } from 'react';
|
|
19
19
|
import { Field } from "../Field/Field.js";
|
|
20
20
|
import { List } from "../List/List.js";
|
|
21
|
+
import { useTooltip } from "../Tooltip/index.js";
|
|
21
22
|
import { mergeProps } from "../utils/index.js";
|
|
22
23
|
import { themeProps } from "../utils/themeProps.js";
|
|
23
24
|
import { CheckboxListContext } from "./CheckboxListContext.js";
|
|
24
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
26
|
const EMPTY_ARRAY = [];
|
|
26
27
|
/**
|
|
27
28
|
* A checkbox group component for multi-value selection.
|
|
@@ -52,6 +53,7 @@ export function CheckboxList({
|
|
|
52
53
|
density = 'balanced',
|
|
53
54
|
hasDividers = false,
|
|
54
55
|
isDisabled = false,
|
|
56
|
+
disabledMessage,
|
|
55
57
|
isReadOnly = false,
|
|
56
58
|
children,
|
|
57
59
|
ref,
|
|
@@ -62,6 +64,7 @@ export function CheckboxList({
|
|
|
62
64
|
'data-testid': dataTestId
|
|
63
65
|
}) {
|
|
64
66
|
const inputID = useId();
|
|
67
|
+
const labelID = useId();
|
|
65
68
|
const descriptionID = useId();
|
|
66
69
|
const statusMessageID = useId();
|
|
67
70
|
const [, startTransition] = useTransition();
|
|
@@ -71,6 +74,19 @@ export function CheckboxList({
|
|
|
71
74
|
// Tracks which item has a pending `changeAction`. Auto-reverts to null when
|
|
72
75
|
// the transition settles, so the spinner clears without manual cleanup.
|
|
73
76
|
const [loadingValue, setLoadingValue] = useOptimistic(null);
|
|
77
|
+
|
|
78
|
+
// Disabled-reason tooltip. Applies to the whole-group disabled state. Disabled
|
|
79
|
+
// controls swallow pointer events, so the tooltip listeners attach to the
|
|
80
|
+
// group container and the checkboxes stay perceivable via aria-disabled
|
|
81
|
+
// instead of the disabled attribute. Toggling is blocked in the item.
|
|
82
|
+
const showsDisabledMessage = isDisabled && !!disabledMessage;
|
|
83
|
+
const disabledMessageTooltip = useTooltip({
|
|
84
|
+
placement: 'above',
|
|
85
|
+
// The group container is not naturally focusable; focusin bubbles up from
|
|
86
|
+
// the checkboxes, so always attach focus listeners.
|
|
87
|
+
focusTrigger: 'always',
|
|
88
|
+
isEnabled: showsDisabledMessage
|
|
89
|
+
});
|
|
74
90
|
const handleChange = useCallback((newValues, toggledValue) => {
|
|
75
91
|
onChange?.(newValues);
|
|
76
92
|
if (changeAction) {
|
|
@@ -87,16 +103,19 @@ export function CheckboxList({
|
|
|
87
103
|
value: isCollectionMode ? optimisticValue : undefined,
|
|
88
104
|
onChange: isCollectionMode ? handleChange : undefined,
|
|
89
105
|
isDisabled,
|
|
106
|
+
hasDisabledMessage: showsDisabledMessage,
|
|
90
107
|
isReadOnly,
|
|
91
108
|
loadingValue
|
|
92
|
-
}), [isCollectionMode, optimisticValue, handleChange, isDisabled, isReadOnly, loadingValue]);
|
|
93
|
-
return /*#__PURE__*/
|
|
109
|
+
}), [isCollectionMode, optimisticValue, handleChange, isDisabled, showsDisabledMessage, isReadOnly, loadingValue]);
|
|
110
|
+
return /*#__PURE__*/_jsxs(Field, {
|
|
94
111
|
ref: ref,
|
|
95
112
|
"data-testid": dataTestId,
|
|
96
113
|
label: label,
|
|
97
114
|
isLabelHidden: isLabelHidden,
|
|
98
115
|
description: description,
|
|
99
116
|
inputID: inputID,
|
|
117
|
+
labelID: labelID,
|
|
118
|
+
isGroupLabel: true,
|
|
100
119
|
descriptionID: description ? descriptionID : undefined,
|
|
101
120
|
isDisabled: isDisabled,
|
|
102
121
|
status: status ? {
|
|
@@ -111,14 +130,25 @@ export function CheckboxList({
|
|
|
111
130
|
className,
|
|
112
131
|
style
|
|
113
132
|
}),
|
|
114
|
-
children: /*#__PURE__*/_jsx(CheckboxListContext, {
|
|
133
|
+
children: [/*#__PURE__*/_jsx(CheckboxListContext, {
|
|
115
134
|
value: contextValue,
|
|
116
|
-
children: /*#__PURE__*/_jsx(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
135
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
136
|
+
ref: el => {
|
|
137
|
+
// Anchor + hover/focus listeners for the disabled-message tooltip.
|
|
138
|
+
// Handlers are gated internally by isEnabled, so attaching
|
|
139
|
+
// unconditionally is safe.
|
|
140
|
+
disabledMessageTooltip.ref(el);
|
|
141
|
+
},
|
|
142
|
+
role: "group",
|
|
143
|
+
"aria-labelledby": labelID,
|
|
144
|
+
"aria-describedby": [description ? descriptionID : null, status?.message ? statusMessageID : null, showsDisabledMessage ? disabledMessageTooltip.describedBy : null].filter(Boolean).join(' ') || undefined,
|
|
145
|
+
children: /*#__PURE__*/_jsx(List, {
|
|
146
|
+
density: density,
|
|
147
|
+
hasDividers: hasDividers,
|
|
148
|
+
children: children
|
|
149
|
+
})
|
|
120
150
|
})
|
|
121
|
-
})
|
|
151
|
+
}), showsDisabledMessage && disabledMessageTooltip.renderTooltip(disabledMessage)]
|
|
122
152
|
});
|
|
123
153
|
}
|
|
124
154
|
CheckboxList.displayName = 'CheckboxList';
|
|
@@ -8,6 +8,13 @@ export interface CheckboxListContextValue {
|
|
|
8
8
|
*/
|
|
9
9
|
onChange?: (values: string[], toggledValue?: string) => void;
|
|
10
10
|
isDisabled: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* True when the whole group is disabled *and* a `disabledMessage` is set. In
|
|
13
|
+
* that mode items stay focusable via `aria-disabled` (instead of the native
|
|
14
|
+
* `disabled` attribute) so the group's disabled-reason tooltip is keyboard-
|
|
15
|
+
* and AT-discoverable; toggling is still blocked.
|
|
16
|
+
*/
|
|
17
|
+
hasDisabledMessage?: boolean;
|
|
11
18
|
isReadOnly: boolean;
|
|
12
19
|
/**
|
|
13
20
|
* The value of the item with a pending `changeAction`, or null when idle.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxListContext.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListContext.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,eAAO,MAAM,mBAAmB,0DACsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"CheckboxListContext.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListContext.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,eAAO,MAAM,mBAAmB,0DACsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxListItem.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAM,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoB5C,MAAM,WAAW,qBAAsB,SAAQ,SAAS,CAAC,aAAa,CAAC;IACrE;;;;;;OAMG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAChC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,UAAU,EAAE,cAAsB,EAClC,SAAS,EAAE,aAAqB,EAChC,SAAS,EACT,OAAO,EACP,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,SAAS,EACb,EAAE,qBAAqB,+
|
|
1
|
+
{"version":3,"file":"CheckboxListItem.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAM,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoB5C,MAAM,WAAW,qBAAsB,SAAQ,SAAS,CAAC,aAAa,CAAC;IACrE;;;;;;OAMG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAChC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,UAAU,EAAE,cAAsB,EAClC,SAAS,EAAE,aAAqB,EAChC,SAAS,EACT,OAAO,EACP,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,SAAS,EACb,EAAE,qBAAqB,+BAkGvB;yBAhHe,gBAAgB"}
|
|
@@ -135,7 +135,6 @@ export function CheckboxListItem({
|
|
|
135
135
|
endContent: endContent,
|
|
136
136
|
isDisabled: effectiveDisabled,
|
|
137
137
|
onClick: isInteractive ? handleToggle : undefined,
|
|
138
|
-
"aria-checked": resolvedChecked === 'indeterminate' ? 'mixed' : resolvedChecked,
|
|
139
138
|
"aria-busy": isBusy || undefined,
|
|
140
139
|
xstyle: [resolvedChecked === true && !effectiveDisabled && !effectiveReadOnly && styles.selected, xstyle],
|
|
141
140
|
className: className,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Citation.d.ts","sourceRoot":"","sources":["../../src/Citation/Citation.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC3D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"Citation.d.ts","sourceRoot":"","sources":["../../src/Citation/Citation.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC3D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC9B;AAuGD,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,MAAM,EACN,MAAM,EACN,OAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CA8EpC;yBAxFe,QAAQ"}
|
|
@@ -50,7 +50,7 @@ const styles = {
|
|
|
50
50
|
},
|
|
51
51
|
labelHover: {
|
|
52
52
|
kWkggS: "xe9uy6x",
|
|
53
|
-
kMwMTN: "x140uwzg",
|
|
53
|
+
kMwMTN: "xv1l7n4 x140uwzg",
|
|
54
54
|
$$css: true
|
|
55
55
|
},
|
|
56
56
|
number: {
|
|
@@ -61,7 +61,7 @@ const styles = {
|
|
|
61
61
|
kGuDYH: "x141an7d",
|
|
62
62
|
k63SB2: "x2mo6ok",
|
|
63
63
|
kLWn49: "x1ltkj2j",
|
|
64
|
-
kMwMTN: "
|
|
64
|
+
kMwMTN: "xv1l7n4",
|
|
65
65
|
kWkggS: "xgcxg3y",
|
|
66
66
|
kaIpWk: "xjspbzw",
|
|
67
67
|
k7Eaqz: "x16asifk",
|
|
@@ -75,7 +75,7 @@ const styles = {
|
|
|
75
75
|
$$css: true
|
|
76
76
|
},
|
|
77
77
|
numberHover: {
|
|
78
|
-
kWkggS: "xe9uy6x",
|
|
78
|
+
kWkggS: "xgcxg3y xe9uy6x",
|
|
79
79
|
$$css: true
|
|
80
80
|
}
|
|
81
81
|
};
|
|
@@ -94,6 +94,10 @@ export function Citation({
|
|
|
94
94
|
const href = source.url;
|
|
95
95
|
const icon = source.icon;
|
|
96
96
|
const Tag = href ? 'a' : 'span';
|
|
97
|
+
// `doc-noteref` is a reference role — only appropriate on the interactive
|
|
98
|
+
// link form. On a plain (unlinked) span it is not a permitted role
|
|
99
|
+
// (axe: aria-allowed-role), so omit it there; the aria-label still names it.
|
|
100
|
+
const noteRole = href ? 'doc-noteref' : undefined;
|
|
97
101
|
const linkProps = href ? {
|
|
98
102
|
href,
|
|
99
103
|
target: '_blank',
|
|
@@ -109,7 +113,7 @@ export function Citation({
|
|
|
109
113
|
return /*#__PURE__*/_jsx(Tag, {
|
|
110
114
|
...rest,
|
|
111
115
|
ref: elementRef,
|
|
112
|
-
role:
|
|
116
|
+
role: noteRole,
|
|
113
117
|
"aria-label": `Citation ${number}: ${title}`,
|
|
114
118
|
"data-testid": testId,
|
|
115
119
|
...linkProps,
|
|
@@ -122,7 +126,7 @@ export function Citation({
|
|
|
122
126
|
return /*#__PURE__*/_jsxs(Tag, {
|
|
123
127
|
...rest,
|
|
124
128
|
ref: elementRef,
|
|
125
|
-
role:
|
|
129
|
+
role: noteRole,
|
|
126
130
|
"aria-label": `Citation ${number}: ${title}`,
|
|
127
131
|
"data-testid": testId,
|
|
128
132
|
...linkProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAsU5C,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC7C;AAgOD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBAkMhB;yBAzNe,SAAS"}
|
|
@@ -413,7 +413,9 @@ export function CodeBlock({
|
|
|
413
413
|
});
|
|
414
414
|
const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsx("button", {
|
|
415
415
|
type: "button",
|
|
416
|
-
onClick:
|
|
416
|
+
onClick: e => {
|
|
417
|
+
// Stop propagation so copying does not toggle the collapsible header.
|
|
418
|
+
e.stopPropagation();
|
|
417
419
|
void handleCopy();
|
|
418
420
|
},
|
|
419
421
|
"aria-label": copied ? 'Copied' : 'Copy code',
|
|
@@ -428,53 +430,65 @@ export function CodeBlock({
|
|
|
428
430
|
children: copyIcon
|
|
429
431
|
}) : null;
|
|
430
432
|
const headerEl = showHeader ? /*#__PURE__*/_jsxs("div", {
|
|
431
|
-
role: canCollapse ? 'button' : undefined,
|
|
432
|
-
tabIndex: canCollapse ? 0 : undefined,
|
|
433
|
-
"aria-expanded": canCollapse ? !isCollapsed : undefined,
|
|
434
|
-
onClick: canCollapse ? () => setIsCollapsed(prev => !prev) : undefined,
|
|
435
|
-
onKeyDown: canCollapse ? e => {
|
|
436
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
437
|
-
e.preventDefault();
|
|
438
|
-
setIsCollapsed(prev => !prev);
|
|
439
|
-
}
|
|
440
|
-
} : undefined,
|
|
441
433
|
...{
|
|
442
434
|
0: {
|
|
443
435
|
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1"
|
|
444
436
|
},
|
|
445
|
-
2: {
|
|
446
|
-
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh"
|
|
447
|
-
},
|
|
448
437
|
1: {
|
|
449
|
-
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1
|
|
450
|
-
},
|
|
451
|
-
3: {
|
|
452
|
-
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh x1ypdohk x87ps6o"
|
|
438
|
+
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1 x92x3c3 x1q0q8m5 xw8gpjh"
|
|
453
439
|
}
|
|
454
|
-
}[!!hasLineNumbers <<
|
|
455
|
-
children: [/*#__PURE__*/
|
|
440
|
+
}[!!hasLineNumbers << 0],
|
|
441
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
442
|
+
role: canCollapse ? 'button' : undefined,
|
|
443
|
+
tabIndex: canCollapse ? 0 : undefined,
|
|
444
|
+
"aria-expanded": canCollapse ? !isCollapsed : undefined,
|
|
445
|
+
onClick: canCollapse ? () => setIsCollapsed(prev => !prev) : undefined,
|
|
446
|
+
onKeyDown: canCollapse ? e => {
|
|
447
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
448
|
+
e.preventDefault();
|
|
449
|
+
setIsCollapsed(prev => !prev);
|
|
450
|
+
}
|
|
451
|
+
} : undefined,
|
|
456
452
|
...{
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
453
|
+
0: {
|
|
454
|
+
className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h"
|
|
455
|
+
},
|
|
456
|
+
1: {
|
|
457
|
+
className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h x1ypdohk x87ps6o"
|
|
458
|
+
}
|
|
459
|
+
}[!!canCollapse << 0],
|
|
460
|
+
children: /*#__PURE__*/_jsxs("span", {
|
|
460
461
|
...{
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
462
|
+
className: "x78zum5 x6s0dn4 xzye2dw x141an7d x9m5x89 x1e4wzip x1mjzq1q x1ghz6dp x1ltkj2j"
|
|
463
|
+
},
|
|
464
|
+
children: [title, title && languageLabel ? ' — ' : '', languageLabel, canCollapse && /*#__PURE__*/_jsx("span", {
|
|
465
|
+
...{
|
|
466
|
+
0: {
|
|
467
|
+
className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92"
|
|
468
|
+
},
|
|
469
|
+
1: {
|
|
470
|
+
className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg x1mjzq1q x11xpdln xuedmi6 xlr8y92 x19jd1h0"
|
|
471
|
+
}
|
|
472
|
+
}[!!isCollapsed << 0],
|
|
473
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
474
|
+
icon: "chevronDown",
|
|
475
|
+
size: "xsm",
|
|
476
|
+
color: "inherit"
|
|
477
|
+
})
|
|
478
|
+
})]
|
|
479
|
+
})
|
|
474
480
|
}), copyButtonEl]
|
|
475
481
|
}) : null;
|
|
476
482
|
const codeBody = /*#__PURE__*/_jsx("div", {
|
|
477
|
-
ref: scrollContainerRef
|
|
483
|
+
ref: scrollContainerRef
|
|
484
|
+
// The scroll container is keyboard-focusable so keyboard users can
|
|
485
|
+
// scroll long or wide code that overflows the viewport. Uses
|
|
486
|
+
// role="group" (not "region") so multiple code blocks on a page don't
|
|
487
|
+
// create duplicate same-named landmarks (axe: landmark-unique).
|
|
488
|
+
,
|
|
489
|
+
tabIndex: 0,
|
|
490
|
+
role: "group",
|
|
491
|
+
"aria-label": languageLabel ?? 'Code',
|
|
478
492
|
...mergeProps({
|
|
479
493
|
className: "xw2csxc x1odjw0f"
|
|
480
494
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/CommandPalette/CommandPalette.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAU/D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACtD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAEzD;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AA6GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EACxE,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,UAAU,EACV,eAA8B,EAC9B,kBAAqC,EACrC,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,KAAyB,EACzB,KAAW,EACX,SAAe,GAChB,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAkRxB;yBAlSe,cAAc"}
|
|
@@ -314,12 +314,12 @@ export function CommandPalette({
|
|
|
314
314
|
isBusy
|
|
315
315
|
}), [optimisticSearch, setOptimisticSearch, runSearch, value, setValue, listId, combobox.highlightedIndex, combobox.setHighlightedIndex, combobox.getItemId, selectableItems, optimisticResults, selectItem, handleKeyDown, handleClose, isOpen, isBusy]);
|
|
316
316
|
|
|
317
|
-
//
|
|
318
|
-
//
|
|
319
|
-
//
|
|
320
|
-
//
|
|
317
|
+
// `search` is the committed query the on-screen results correspond to (it
|
|
318
|
+
// still holds the previous query while a transition is pending). Keeping both
|
|
319
|
+
// flags ungated by `isPending` makes them exhaustive over the empty case, so
|
|
320
|
+
// the empty state is never unmounted and re-added mid-search (which flashed).
|
|
321
321
|
const showEmptyBootstrap = search === '' && optimisticResults.length === 0;
|
|
322
|
-
const showEmptySearch =
|
|
322
|
+
const showEmptySearch = search !== '' && optimisticResults.length === 0;
|
|
323
323
|
let listContent;
|
|
324
324
|
if (showEmptyBootstrap) {
|
|
325
325
|
listContent = /*#__PURE__*/_jsx(CommandPaletteEmpty, {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
import React from 'react';
|
|
25
25
|
import type { ReactNode } from 'react';
|
|
26
26
|
import type { BaseProps } from '../BaseProps';
|
|
27
|
+
import type { StyleXStyles } from '../theme/types';
|
|
27
28
|
import type { DropdownMenuOption, DropdownMenuItemData, DropdownMenuDivider, DropdownMenuSection } from '../DropdownMenu/DropdownMenu';
|
|
28
29
|
export type ContextMenuItemData = DropdownMenuItemData;
|
|
29
30
|
export type ContextMenuDivider = DropdownMenuDivider;
|
|
@@ -32,6 +33,13 @@ export type ContextMenuOption = DropdownMenuOption;
|
|
|
32
33
|
interface ContextMenuBaseProps extends BaseProps {
|
|
33
34
|
/** Ref forwarded to the trigger wrapper element. */
|
|
34
35
|
ref?: React.Ref<HTMLDivElement>;
|
|
36
|
+
/**
|
|
37
|
+
* Styles applied to the trigger wrapper element (the right-click target).
|
|
38
|
+
* By default the trigger is a plain block that hugs its content — pass a
|
|
39
|
+
* fill style (e.g. `width/height: 100%`) when the whole parent area should
|
|
40
|
+
* be right-clickable (as the Table does for full-cell context menus).
|
|
41
|
+
*/
|
|
42
|
+
triggerXstyle?: StyleXStyles | StyleXStyles[];
|
|
35
43
|
/** The trigger area — right-click on this to open the menu. */
|
|
36
44
|
children: ReactNode;
|
|
37
45
|
/** Custom menu width. @default '160px' */
|
|
@@ -39,11 +47,10 @@ interface ContextMenuBaseProps extends BaseProps {
|
|
|
39
47
|
/** Size of menu items. @default 'md' */
|
|
40
48
|
size?: 'sm' | 'md' | 'lg';
|
|
41
49
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* @default true
|
|
50
|
+
* Accessible name for the menu surface, announced when it opens.
|
|
51
|
+
* @default 'Context menu'
|
|
45
52
|
*/
|
|
46
|
-
|
|
53
|
+
label?: string;
|
|
47
54
|
/** When true, right-click shows the native browser context menu instead. */
|
|
48
55
|
isDisabled?: boolean;
|
|
49
56
|
/** Called when the menu opens or closes. */
|
|
@@ -84,7 +91,7 @@ export type ContextMenuProps = ContextMenuDataProps | ContextMenuCompoundProps;
|
|
|
84
91
|
* </ContextMenu>
|
|
85
92
|
* ```
|
|
86
93
|
*/
|
|
87
|
-
export declare function ContextMenu({ children, menuWidth, size,
|
|
94
|
+
export declare function ContextMenu({ children, menuWidth, size, label, isDisabled, onOpenChange, ref, className, style, xstyle, triggerXstyle, 'data-testid': testId, ...props }: ContextMenuProps): React.JSX.Element;
|
|
88
95
|
export declare namespace ContextMenu {
|
|
89
96
|
var displayName: string;
|
|
90
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAqBrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAsCtC,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAMnD,UAAU,oBAAqB,SAAQ,SAAS;IAC9C,oDAAoD;IACpD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IAC9C,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,wCAAwC;IACxC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,oBAAqB,SAAQ,oBAAoB;IACzD,gDAAgD;IAChD,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,UAAU,wBAAyB,SAAQ,oBAAoB;IAC7D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;AAM/E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,IAAW,EACX,KAAsB,EACtB,UAAkB,EAClB,YAAY,EACZ,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,aAAa,EACb,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAwOlB;yBAtPe,WAAW"}
|
|
@@ -30,6 +30,8 @@ import { useLayer } from "../Layer/useLayer.js";
|
|
|
30
30
|
import { renderDropdownItems } from "../DropdownMenu/renderDropdownItems.js";
|
|
31
31
|
import { DropdownMenuContext } from "../DropdownMenu/DropdownMenuContext.js";
|
|
32
32
|
import { useListFocus } from "../hooks/useListFocus.js";
|
|
33
|
+
import { useTypeahead } from "../hooks/useTypeahead.js";
|
|
34
|
+
import { useLongPress } from "../hooks/useLongPress.js";
|
|
33
35
|
import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
|
|
34
36
|
import "../theme/tokens.stylex.js";
|
|
35
37
|
import { colorVars, spacingVars, radiusVars, durationVars, easeVars, shadowVars } from "../theme/tokens.stylex.js";
|
|
@@ -37,6 +39,10 @@ import { mergeProps } from "../utils/index.js";
|
|
|
37
39
|
import { themeProps } from "../utils/themeProps.js";
|
|
38
40
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
39
41
|
const styles = {
|
|
42
|
+
trigger: {
|
|
43
|
+
k7VYTy: "xpdipgo",
|
|
44
|
+
$$css: true
|
|
45
|
+
},
|
|
40
46
|
menu: {
|
|
41
47
|
kB7OPa: "x9f619",
|
|
42
48
|
k1xSpc: "x78zum5",
|
|
@@ -107,13 +113,14 @@ export function ContextMenu({
|
|
|
107
113
|
children,
|
|
108
114
|
menuWidth,
|
|
109
115
|
size = 'md',
|
|
110
|
-
|
|
116
|
+
label = 'Context menu',
|
|
111
117
|
isDisabled = false,
|
|
112
118
|
onOpenChange,
|
|
113
119
|
ref,
|
|
114
120
|
className,
|
|
115
121
|
style,
|
|
116
122
|
xstyle,
|
|
123
|
+
triggerXstyle,
|
|
117
124
|
'data-testid': testId,
|
|
118
125
|
...props
|
|
119
126
|
}) {
|
|
@@ -124,12 +131,21 @@ export function ContextMenu({
|
|
|
124
131
|
x: 0,
|
|
125
132
|
y: 0
|
|
126
133
|
});
|
|
134
|
+
// Element focused before the menu opened, restored when it closes so focus
|
|
135
|
+
// does not fall to <body> after Escape or outside-click dismissal.
|
|
136
|
+
const triggerFocusRef = useRef(null);
|
|
127
137
|
const [isOpen, setIsOpen] = useState(false);
|
|
128
138
|
const layer = useLayer({
|
|
129
139
|
mode: 'fixed',
|
|
130
140
|
onHide: useCallback(() => {
|
|
131
141
|
setIsOpen(false);
|
|
132
142
|
onOpenChange?.(false);
|
|
143
|
+
// Restore focus to the element that was focused before opening.
|
|
144
|
+
const toRestore = triggerFocusRef.current;
|
|
145
|
+
triggerFocusRef.current = null;
|
|
146
|
+
if (toRestore && document.contains(toRestore)) {
|
|
147
|
+
toRestore.focus();
|
|
148
|
+
}
|
|
133
149
|
}, [onOpenChange]),
|
|
134
150
|
onShow: useCallback(() => {
|
|
135
151
|
setIsOpen(true);
|
|
@@ -143,13 +159,22 @@ export function ContextMenu({
|
|
|
143
159
|
const {
|
|
144
160
|
listRef,
|
|
145
161
|
handleKeyDown: listNavKeyDown,
|
|
146
|
-
focusFirst
|
|
162
|
+
focusFirst,
|
|
163
|
+
focusItem
|
|
147
164
|
} = useListFocus({
|
|
148
165
|
itemSelector: '[role="menuitem"]:not([aria-disabled="true"])',
|
|
149
166
|
wrap: false,
|
|
150
167
|
onEscape: closeMenu
|
|
151
168
|
});
|
|
152
169
|
|
|
170
|
+
// First-character typeahead over the enabled menu items (menus-11).
|
|
171
|
+
const getMenuItems = useCallback(() => listRef.current ? Array.from(listRef.current.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')) : [], [listRef]);
|
|
172
|
+
const typeahead = useTypeahead({
|
|
173
|
+
getItemLabels: () => getMenuItems().map(el => el.textContent),
|
|
174
|
+
onMatch: focusItem,
|
|
175
|
+
getCurrentIndex: () => getMenuItems().findIndex(el => el === document.activeElement || el.contains(document.activeElement))
|
|
176
|
+
});
|
|
177
|
+
|
|
153
178
|
// Dismiss on any click outside the menu. We use popover="manual" (not
|
|
154
179
|
// "auto") because the native light-dismiss treats the mouseup from the
|
|
155
180
|
// opening right-click as a dismiss event. Handling it ourselves via
|
|
@@ -169,6 +194,30 @@ export function ContextMenu({
|
|
|
169
194
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
170
195
|
};
|
|
171
196
|
}, [isOpen, closeMenu, listRef]);
|
|
197
|
+
|
|
198
|
+
// Dismiss on Escape from anywhere while open. The menu div's own onKeyDown
|
|
199
|
+
// only fires when focus is inside the menu; a document-level listener is
|
|
200
|
+
// kept as a reliable fallback Escape path (e.g. if focus has moved out of
|
|
201
|
+
// the menu). Guards against IME composition-cancel.
|
|
202
|
+
useEffect(() => {
|
|
203
|
+
if (!isOpen) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const handleEscape = e => {
|
|
207
|
+
if (e.key !== 'Escape') {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (e.isComposing || e.keyCode === 229) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
e.preventDefault();
|
|
214
|
+
closeMenu();
|
|
215
|
+
};
|
|
216
|
+
document.addEventListener('keydown', handleEscape);
|
|
217
|
+
return () => {
|
|
218
|
+
document.removeEventListener('keydown', handleEscape);
|
|
219
|
+
};
|
|
220
|
+
}, [isOpen, closeMenu]);
|
|
172
221
|
const listKeyDown = useCallback(e => {
|
|
173
222
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
174
223
|
e.preventDefault();
|
|
@@ -178,22 +227,56 @@ export function ContextMenu({
|
|
|
178
227
|
}
|
|
179
228
|
return;
|
|
180
229
|
}
|
|
230
|
+
if (typeahead.onKeyDown(e)) {
|
|
231
|
+
e.preventDefault();
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
181
234
|
listNavKeyDown(e);
|
|
182
|
-
}, [listNavKeyDown]);
|
|
235
|
+
}, [listNavKeyDown, typeahead]);
|
|
183
236
|
const handleContextMenu = useCallback(e => {
|
|
184
237
|
if (isDisabled) {
|
|
185
238
|
return;
|
|
186
239
|
}
|
|
187
240
|
e.preventDefault();
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
241
|
+
// A keyboard-initiated contextmenu (Shift+F10 / the Menu key) fires a
|
|
242
|
+
// `contextmenu` event whose coordinates are (0, 0) in several browsers.
|
|
243
|
+
// Detect that and anchor the menu to the trigger's box instead, so the
|
|
244
|
+
// menu is reachable without a pointer (menus-8).
|
|
245
|
+
const isKeyboardInvoked = e.clientX === 0 && e.clientY === 0 && e.detail === 0;
|
|
246
|
+
if (isKeyboardInvoked && e.currentTarget instanceof HTMLElement) {
|
|
247
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
248
|
+
positionRef.current = {
|
|
249
|
+
x: rect.left,
|
|
250
|
+
y: rect.bottom
|
|
251
|
+
};
|
|
252
|
+
} else {
|
|
253
|
+
positionRef.current = {
|
|
254
|
+
x: e.clientX,
|
|
255
|
+
y: e.clientY
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
// Remember the element focused before opening so we can restore it on
|
|
259
|
+
// close (Escape or outside-click), instead of dropping focus to <body>.
|
|
260
|
+
triggerFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : e.currentTarget;
|
|
192
261
|
layer.show();
|
|
193
|
-
|
|
262
|
+
requestAnimationFrame(() => focusFirst());
|
|
263
|
+
}, [isDisabled, layer, focusFirst]);
|
|
264
|
+
|
|
265
|
+
// Touch long-press invocation (menus-8). iOS Safari never synthesizes a
|
|
266
|
+
// `contextmenu` event on long-press, so a context menu is otherwise
|
|
267
|
+
// unreachable on touch. Open the menu at the touch point once the press is
|
|
268
|
+
// held long enough (see useLongPress for timer/move-cancel/cleanup logic).
|
|
269
|
+
const longPressHandlers = useLongPress({
|
|
270
|
+
disabled: isDisabled,
|
|
271
|
+
onLongPress: useCallback(point => {
|
|
272
|
+
positionRef.current = {
|
|
273
|
+
x: point.x,
|
|
274
|
+
y: point.y
|
|
275
|
+
};
|
|
276
|
+
layer.show();
|
|
194
277
|
requestAnimationFrame(() => focusFirst());
|
|
195
|
-
}
|
|
196
|
-
}
|
|
278
|
+
}, [layer, focusFirst])
|
|
279
|
+
});
|
|
197
280
|
const popoverXstyle = menuWidth ? styles.popoverCustomWidth(menuWidth) : styles.popover;
|
|
198
281
|
const contextValue = useMemo(() => ({
|
|
199
282
|
closeMenu,
|
|
@@ -204,13 +287,15 @@ export function ContextMenu({
|
|
|
204
287
|
children: [/*#__PURE__*/_jsx("div", {
|
|
205
288
|
ref: ref,
|
|
206
289
|
onContextMenu: handleContextMenu,
|
|
207
|
-
|
|
290
|
+
...longPressHandlers,
|
|
208
291
|
"data-testid": testId,
|
|
292
|
+
...stylex.props(styles.trigger, ...(triggerXstyle ? Array.isArray(triggerXstyle) ? triggerXstyle : [triggerXstyle] : [])),
|
|
209
293
|
children: children
|
|
210
294
|
}), layer.render(/*#__PURE__*/_jsx("div", {
|
|
211
295
|
ref: listRef,
|
|
212
296
|
id: menuId,
|
|
213
297
|
role: "menu",
|
|
298
|
+
"aria-label": label,
|
|
214
299
|
onKeyDown: listKeyDown,
|
|
215
300
|
...mergeProps(themeProps('context-menu'), stylex.props(styles.menu, xstyle), className, style),
|
|
216
301
|
children: /*#__PURE__*/_jsx(DropdownMenuContext, {
|
|
@@ -50,6 +50,28 @@ export interface DateInputProps extends Omit<BaseProps, 'onChange' | 'defaultVal
|
|
|
50
50
|
* @default false
|
|
51
51
|
*/
|
|
52
52
|
isDisabled?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Explains why the input is disabled. When set together with
|
|
55
|
+
* `isDisabled`, the input shows a tooltip with this text on hover and
|
|
56
|
+
* keyboard focus, and the field stays focusable (via `aria-disabled`)
|
|
57
|
+
* so the reason is discoverable by keyboard and assistive technology.
|
|
58
|
+
* Typing and calendar activation stay blocked.
|
|
59
|
+
*
|
|
60
|
+
* Use this instead of wrapping a disabled input in `Tooltip` — disabled
|
|
61
|
+
* controls don't emit the pointer events an external tooltip needs.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```
|
|
65
|
+
* <DateInput
|
|
66
|
+
* label="Event date"
|
|
67
|
+
* value={date}
|
|
68
|
+
* onChange={setDate}
|
|
69
|
+
* isDisabled
|
|
70
|
+
* disabledMessage="You need the Editor role to change this"
|
|
71
|
+
* />
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
disabledMessage?: string;
|
|
53
75
|
/**
|
|
54
76
|
* The selected date in ISO format (YYYY-MM-DD).
|
|
55
77
|
*/
|
|
@@ -132,7 +154,7 @@ export interface DateInputProps extends Omit<BaseProps, 'onChange' | 'defaultVal
|
|
|
132
154
|
* />
|
|
133
155
|
* ```
|
|
134
156
|
*/
|
|
135
|
-
export declare function DateInput({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, value, onChange, changeAction, isLoading, min, max, dateConstraints, placeholder, size, status, labelTooltip, hasClear, numberOfMonths, width, xstyle, className, style, ref, ...rest }: DateInputProps): import("react").JSX.Element;
|
|
157
|
+
export declare function DateInput({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, value, onChange, changeAction, isLoading, min, max, dateConstraints, placeholder, size: sizeProp, status, labelTooltip, hasClear, numberOfMonths, width, xstyle, className, style, ref, ...rest }: DateInputProps): import("react").JSX.Element;
|
|
136
158
|
export declare namespace DateInput {
|
|
137
159
|
var displayName: string;
|
|
138
160
|
}
|