@basic-ui/core 0.0.54 → 0.0.56
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/README.md +3 -3
- package/build/cjs/index.js +364 -591
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/Accordion.d.ts +9 -9
- package/build/esm/Accordion/Accordion.js +20 -29
- package/build/esm/Accordion/Accordion.js.map +1 -1
- package/build/esm/Accordion/AccordionBody.d.ts +6 -6
- package/build/esm/Accordion/AccordionBody.js +18 -32
- package/build/esm/Accordion/AccordionBody.js.map +1 -1
- package/build/esm/Accordion/AccordionHeader.d.ts +7 -7
- package/build/esm/Accordion/AccordionHeader.js +37 -74
- package/build/esm/Accordion/AccordionHeader.js.map +1 -1
- package/build/esm/Accordion/AccordionItem.d.ts +9 -9
- package/build/esm/Accordion/AccordionItem.js +19 -22
- package/build/esm/Accordion/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/context.d.ts +19 -19
- package/build/esm/Accordion/context.js +16 -13
- package/build/esm/Accordion/context.js.map +1 -1
- package/build/esm/Accordion/index.d.ts +4 -4
- package/build/esm/Accordion/index.js.map +1 -1
- package/build/esm/Accordion/scopeQuery.d.ts +2 -2
- package/build/esm/Accordion/scopeQuery.js.map +1 -1
- package/build/esm/CheckBox/CheckBox.d.ts +7 -7
- package/build/esm/CheckBox/CheckBox.js +15 -25
- package/build/esm/CheckBox/CheckBox.js.map +1 -1
- package/build/esm/CheckBox/index.d.ts +1 -1
- package/build/esm/CheckBox/index.js.map +1 -1
- package/build/esm/ComboBox/Combobox.d.ts +18 -18
- package/build/esm/ComboBox/Combobox.js +52 -59
- package/build/esm/ComboBox/Combobox.js.map +1 -1
- package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
- package/build/esm/ComboBox/ComboboxButton.js +23 -28
- package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
- package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
- package/build/esm/ComboBox/ComboboxInput.js +67 -70
- package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
- package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
- package/build/esm/ComboBox/ComboboxLabel.js +15 -17
- package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
- package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
- package/build/esm/ComboBox/ComboboxList.js +19 -20
- package/build/esm/ComboBox/ComboboxList.js.map +1 -1
- package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
- package/build/esm/ComboBox/ComboboxOption.js +41 -45
- package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
- package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
- package/build/esm/ComboBox/ComboboxPopover.js +22 -21
- package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
- package/build/esm/ComboBox/cities.d.ts +5 -5
- package/build/esm/ComboBox/cities.js.map +1 -1
- package/build/esm/ComboBox/context.d.ts +30 -30
- package/build/esm/ComboBox/context.js +5 -6
- package/build/esm/ComboBox/context.js.map +1 -1
- package/build/esm/ComboBox/hooks.d.ts +37 -37
- package/build/esm/ComboBox/hooks.js +175 -148
- package/build/esm/ComboBox/hooks.js.map +1 -1
- package/build/esm/ComboBox/index.d.ts +8 -8
- package/build/esm/ComboBox/index.js.map +1 -1
- package/build/esm/ComboBox/makeHash.d.ts +1 -1
- package/build/esm/ComboBox/makeHash.js +3 -6
- package/build/esm/ComboBox/makeHash.js.map +1 -1
- package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
- package/build/esm/ComboBox/scopeQuery.js.map +1 -1
- package/build/esm/FocusLock/FocusLock.d.ts +9 -9
- package/build/esm/FocusLock/FocusLock.js +26 -32
- package/build/esm/FocusLock/FocusLock.js.map +1 -1
- package/build/esm/FocusLock/index.d.ts +1 -1
- package/build/esm/FocusLock/index.js.map +1 -1
- package/build/esm/FocusLock/tabUtils.d.ts +3 -3
- package/build/esm/FocusLock/tabUtils.js +5 -7
- package/build/esm/FocusLock/tabUtils.js.map +1 -1
- package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
- package/build/esm/FocusLock/useFocusLock.js +14 -19
- package/build/esm/FocusLock/useFocusLock.js.map +1 -1
- package/build/esm/List/List.d.ts +7 -7
- package/build/esm/List/List.js +9 -11
- package/build/esm/List/List.js.map +1 -1
- package/build/esm/List/ListItem.d.ts +7 -7
- package/build/esm/List/ListItem.js +9 -11
- package/build/esm/List/ListItem.js.map +1 -1
- package/build/esm/List/context.d.ts +4 -4
- package/build/esm/List/context.js +6 -6
- package/build/esm/List/context.js.map +1 -1
- package/build/esm/List/index.d.ts +2 -2
- package/build/esm/List/index.js.map +1 -1
- package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
- package/build/esm/Menu/ContextMenuTrigger.js +32 -37
- package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
- package/build/esm/Menu/Menu.d.ts +10 -10
- package/build/esm/Menu/Menu.js +33 -49
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuButton.d.ts +11 -11
- package/build/esm/Menu/MenuButton.js +28 -44
- package/build/esm/Menu/MenuButton.js.map +1 -1
- package/build/esm/Menu/MenuItem.d.ts +8 -8
- package/build/esm/Menu/MenuItem.js +29 -38
- package/build/esm/Menu/MenuItem.js.map +1 -1
- package/build/esm/Menu/MenuList.d.ts +7 -7
- package/build/esm/Menu/MenuList.js +61 -116
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.d.ts +8 -8
- package/build/esm/Menu/MenuPopover.js +16 -19
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/context.d.ts +25 -25
- package/build/esm/Menu/context.js +14 -12
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
- package/build/esm/Menu/fixtures/countryList.js +1 -1
- package/build/esm/Menu/fixtures/countryList.js.map +1 -1
- package/build/esm/Menu/index.d.ts +6 -6
- package/build/esm/Menu/index.js.map +1 -1
- package/build/esm/Menu/scope.d.ts +1 -1
- package/build/esm/Menu/scope.js.map +1 -1
- package/build/esm/Modal/Modal.d.ts +9 -9
- package/build/esm/Modal/Modal.js +13 -18
- package/build/esm/Modal/Modal.js.map +1 -1
- package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
- package/build/esm/Modal/ModalBackdrop.js +24 -33
- package/build/esm/Modal/ModalBackdrop.js.map +1 -1
- package/build/esm/Modal/index.d.ts +2 -2
- package/build/esm/Modal/index.js.map +1 -1
- package/build/esm/Popper/Popper.d.ts +35 -35
- package/build/esm/Popper/Popper.js +44 -60
- package/build/esm/Popper/Popper.js.map +1 -1
- package/build/esm/Popper/PopperArrow.d.ts +6 -6
- package/build/esm/Popper/PopperArrow.js +11 -16
- package/build/esm/Popper/PopperArrow.js.map +1 -1
- package/build/esm/Popper/context.d.ts +6 -6
- package/build/esm/Popper/context.js +3 -5
- package/build/esm/Popper/context.js.map +1 -1
- package/build/esm/Popper/index.d.ts +3 -3
- package/build/esm/Popper/index.js.map +1 -1
- package/build/esm/Portal/Portal.d.ts +7 -7
- package/build/esm/Portal/Portal.js +9 -11
- package/build/esm/Portal/Portal.js.map +1 -1
- package/build/esm/Portal/PortalSelectorProvider.d.ts +8 -8
- package/build/esm/Portal/PortalSelectorProvider.js +6 -4
- package/build/esm/Portal/PortalSelectorProvider.js.map +1 -1
- package/build/esm/Portal/index.d.ts +2 -2
- package/build/esm/Portal/index.js.map +1 -1
- package/build/esm/RadioButton/RadioButton.d.ts +10 -10
- package/build/esm/RadioButton/RadioButton.js +17 -23
- package/build/esm/RadioButton/RadioButton.js.map +1 -1
- package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
- package/build/esm/RadioButton/RadioGroup.js +19 -28
- package/build/esm/RadioButton/RadioGroup.js.map +1 -1
- package/build/esm/RadioButton/context.d.ts +9 -9
- package/build/esm/RadioButton/context.js +8 -6
- package/build/esm/RadioButton/context.js.map +1 -1
- package/build/esm/RadioButton/index.d.ts +2 -2
- package/build/esm/RadioButton/index.js.map +1 -1
- package/build/esm/SkipNav/SkipNav.d.ts +7 -7
- package/build/esm/SkipNav/SkipNav.js +9 -11
- package/build/esm/SkipNav/SkipNav.js.map +1 -1
- package/build/esm/SkipNav/index.d.ts +1 -1
- package/build/esm/SkipNav/index.js.map +1 -1
- package/build/esm/Slider/Slider.d.ts +197 -197
- package/build/esm/Slider/Slider.js +422 -489
- package/build/esm/Slider/Slider.js.map +1 -1
- package/build/esm/Slider/index.d.ts +1 -1
- package/build/esm/Slider/index.js.map +1 -1
- package/build/esm/Spinner/Spinner.d.ts +12 -12
- package/build/esm/Spinner/Spinner.js +31 -59
- package/build/esm/Spinner/Spinner.js.map +1 -1
- package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
- package/build/esm/Spinner/SpinnerButton.js +14 -19
- package/build/esm/Spinner/SpinnerButton.js.map +1 -1
- package/build/esm/Spinner/context.d.ts +12 -12
- package/build/esm/Spinner/context.js +8 -7
- package/build/esm/Spinner/context.js.map +1 -1
- package/build/esm/Spinner/index.d.ts +2 -2
- package/build/esm/Spinner/index.js.map +1 -1
- package/build/esm/Tabs/Tab.d.ts +7 -7
- package/build/esm/Tabs/Tab.js +32 -50
- package/build/esm/Tabs/Tab.js.map +1 -1
- package/build/esm/Tabs/TabList.d.ts +9 -9
- package/build/esm/Tabs/TabList.js +24 -34
- package/build/esm/Tabs/TabList.js.map +1 -1
- package/build/esm/Tabs/TabPanel.d.ts +8 -8
- package/build/esm/Tabs/TabPanel.js +16 -23
- package/build/esm/Tabs/TabPanel.js.map +1 -1
- package/build/esm/Tabs/TabPanels.d.ts +8 -8
- package/build/esm/Tabs/TabPanels.js +15 -20
- package/build/esm/Tabs/TabPanels.js.map +1 -1
- package/build/esm/Tabs/Tabs.d.ts +10 -10
- package/build/esm/Tabs/Tabs.js +17 -33
- package/build/esm/Tabs/Tabs.js.map +1 -1
- package/build/esm/Tabs/context.d.ts +17 -17
- package/build/esm/Tabs/context.js +16 -13
- package/build/esm/Tabs/context.js.map +1 -1
- package/build/esm/Tabs/index.d.ts +5 -5
- package/build/esm/Tabs/index.js.map +1 -1
- package/build/esm/Tabs/scopeQuery.d.ts +1 -1
- package/build/esm/Tabs/scopeQuery.js.map +1 -1
- package/build/esm/Tooltip/Tooltip.d.ts +10 -10
- package/build/esm/Tooltip/Tooltip.js +20 -30
- package/build/esm/Tooltip/Tooltip.js.map +1 -1
- package/build/esm/Tooltip/index.d.ts +1 -1
- package/build/esm/Tooltip/index.js.map +1 -1
- package/build/esm/Tooltip/stateMachine.d.ts +28 -28
- package/build/esm/Tooltip/stateMachine.js +95 -81
- package/build/esm/Tooltip/stateMachine.js.map +1 -1
- package/build/esm/Tooltip/useTooltip.d.ts +10 -10
- package/build/esm/Tooltip/useTooltip.js +38 -50
- package/build/esm/Tooltip/useTooltip.js.map +1 -1
- package/build/esm/hooks/index.d.ts +13 -13
- package/build/esm/hooks/index.js.map +1 -1
- package/build/esm/hooks/useAutoFocus.d.ts +2 -2
- package/build/esm/hooks/useAutoFocus.js +3 -3
- package/build/esm/hooks/useAutoFocus.js.map +1 -1
- package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
- package/build/esm/hooks/useChildrenCounter.js +6 -8
- package/build/esm/hooks/useChildrenCounter.js.map +1 -1
- package/build/esm/hooks/useControlledState.d.ts +3 -3
- package/build/esm/hooks/useControlledState.js +6 -16
- package/build/esm/hooks/useControlledState.js.map +1 -1
- package/build/esm/hooks/useFocusReturn.d.ts +2 -2
- package/build/esm/hooks/useFocusReturn.js +8 -12
- package/build/esm/hooks/useFocusReturn.js.map +1 -1
- package/build/esm/hooks/useFocusState.d.ts +11 -11
- package/build/esm/hooks/useFocusState.js +9 -15
- package/build/esm/hooks/useFocusState.js.map +1 -1
- package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
- package/build/esm/hooks/useGestureHandlers.js +80 -100
- package/build/esm/hooks/useGestureHandlers.js.map +1 -1
- package/build/esm/hooks/useMeasure.d.ts +7 -7
- package/build/esm/hooks/useMeasure.js +7 -15
- package/build/esm/hooks/useMeasure.js.map +1 -1
- package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
- package/build/esm/hooks/useOnClickOutside.js +4 -6
- package/build/esm/hooks/useOnClickOutside.js.map +1 -1
- package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
- package/build/esm/hooks/useOnKeyDown.js +3 -4
- package/build/esm/hooks/useOnKeyDown.js.map +1 -1
- package/build/esm/hooks/useReducerMachine.d.ts +24 -24
- package/build/esm/hooks/useReducerMachine.js +15 -26
- package/build/esm/hooks/useReducerMachine.js.map +1 -1
- package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
- package/build/esm/hooks/useRemoveBodyScroll.js +9 -14
- package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
- package/build/esm/hooks/useScope.d.ts +11 -11
- package/build/esm/hooks/useScope.js +12 -14
- package/build/esm/hooks/useScope.js.map +1 -1
- package/build/esm/hooks/useThrottle.d.ts +1 -1
- package/build/esm/hooks/useThrottle.js +5 -10
- package/build/esm/hooks/useThrottle.js.map +1 -1
- package/build/esm/index.d.ts +15 -15
- package/build/esm/index.js +4 -2
- package/build/esm/index.js.map +1 -1
- package/build/esm/styles.d.js +2 -0
- package/build/esm/styles.d.js.map +1 -0
- package/build/esm/utils/assign-ref.d.ts +3 -3
- package/build/esm/utils/assign-ref.js +3 -5
- package/build/esm/utils/assign-ref.js.map +1 -1
- package/build/esm/utils/can-use-dom.d.ts +1 -1
- package/build/esm/utils/can-use-dom.js.map +1 -1
- package/build/esm/utils/clamp.d.ts +1 -1
- package/build/esm/utils/clamp.js.map +1 -1
- package/build/esm/utils/context.d.ts +7 -7
- package/build/esm/utils/context.js +13 -20
- package/build/esm/utils/context.js.map +1 -1
- package/build/esm/utils/create-subscription.d.ts +4 -4
- package/build/esm/utils/create-subscription.js +5 -10
- package/build/esm/utils/create-subscription.js.map +1 -1
- package/build/esm/utils/get-circular-index.d.ts +1 -1
- package/build/esm/utils/get-circular-index.js +0 -1
- package/build/esm/utils/get-circular-index.js.map +1 -1
- package/build/esm/utils/index.d.ts +10 -10
- package/build/esm/utils/index.js.map +1 -1
- package/build/esm/utils/is-right-click.d.ts +6 -6
- package/build/esm/utils/is-right-click.js +4 -4
- package/build/esm/utils/is-right-click.js.map +1 -1
- package/build/esm/utils/owner-document.d.ts +7 -7
- package/build/esm/utils/owner-document.js +6 -6
- package/build/esm/utils/owner-document.js.map +1 -1
- package/build/esm/utils/polymorphic.d.ts +39 -39
- package/build/esm/utils/polymorphic.js.map +1 -1
- package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
- package/build/esm/utils/rubber-band-clamp.js +2 -5
- package/build/esm/utils/rubber-band-clamp.js.map +1 -1
- package/build/esm/utils/use-stable-callback.d.ts +16 -16
- package/build/esm/utils/use-stable-callback.js +24 -26
- package/build/esm/utils/use-stable-callback.js.map +1 -1
- package/build/esm/utils/wrap-event.d.ts +3 -3
- package/build/esm/utils/wrap-event.js +2 -5
- package/build/esm/utils/wrap-event.js.map +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/Accordion/Accordion.story.tsx +74 -74
- package/src/Accordion/Accordion.tsx +59 -59
- package/src/Accordion/AccordionBody.tsx +52 -52
- package/src/Accordion/AccordionHeader.tsx +166 -167
- package/src/Accordion/AccordionItem.tsx +50 -50
- package/src/Accordion/context.ts +37 -37
- package/src/Accordion/index.ts +4 -4
- package/src/Accordion/scopeQuery.ts +7 -7
- package/src/Accordion/styles.css +21 -21
- package/src/CheckBox/CheckBox.tsx +41 -41
- package/src/CheckBox/index.ts +1 -1
- package/src/ComboBox/ComboBox.story.tsx +120 -120
- package/src/ComboBox/Combobox.tsx +148 -148
- package/src/ComboBox/ComboboxButton.tsx +61 -61
- package/src/ComboBox/ComboboxInput.tsx +187 -187
- package/src/ComboBox/ComboboxLabel.tsx +33 -33
- package/src/ComboBox/ComboboxList.tsx +47 -47
- package/src/ComboBox/ComboboxOption.tsx +110 -111
- package/src/ComboBox/ComboboxPopover.tsx +64 -64
- package/src/ComboBox/cities.ts +23194 -23194
- package/src/ComboBox/context.ts +35 -35
- package/src/ComboBox/hooks.tsx +448 -451
- package/src/ComboBox/index.ts +8 -8
- package/src/ComboBox/makeHash.ts +19 -19
- package/src/ComboBox/scopeQuery.ts +6 -6
- package/src/ComboBox/styles.css +32 -32
- package/src/FocusLock/FocusLock.tsx +66 -66
- package/src/FocusLock/index.ts +1 -1
- package/src/FocusLock/tabUtils.ts +40 -40
- package/src/FocusLock/useFocusLock.ts +55 -56
- package/src/List/List.story.tsx +18 -18
- package/src/List/List.tsx +17 -17
- package/src/List/ListItem.tsx +23 -23
- package/src/List/context.ts +19 -19
- package/src/List/index.ts +2 -2
- package/src/Menu/ContextMenu.story.tsx +73 -73
- package/src/Menu/ContextMenuTrigger.tsx +76 -76
- package/src/Menu/Menu.story.tsx +160 -160
- package/src/Menu/Menu.tsx +82 -83
- package/src/Menu/MenuButton.tsx +83 -83
- package/src/Menu/MenuComplex.story.tsx +58 -58
- package/src/Menu/MenuItem.tsx +87 -88
- package/src/Menu/MenuList.tsx +254 -254
- package/src/Menu/MenuPopover.tsx +35 -35
- package/src/Menu/context.ts +44 -44
- package/src/Menu/fixtures/countryList.ts +198 -198
- package/src/Menu/index.ts +6 -6
- package/src/Menu/scope.ts +7 -7
- package/src/Menu/styles.css +42 -42
- package/src/Modal/Modal.story.tsx +262 -258
- package/src/Modal/Modal.tsx +48 -48
- package/src/Modal/ModalBackdrop.tsx +78 -78
- package/src/Modal/NavDrawer.story.tsx +161 -158
- package/src/Modal/index.ts +2 -2
- package/src/Modal/styles.css +46 -46
- package/src/Popper/Popper.story.tsx +279 -263
- package/src/Popper/Popper.tsx +1 -1
- package/src/Popper/PopperArrow.tsx +35 -35
- package/src/Popper/context.ts +10 -10
- package/src/Popper/index.ts +3 -3
- package/src/Popper/styles.css +60 -60
- package/src/RadioButton/RadioButton.story.tsx +78 -77
- package/src/RadioButton/RadioButton.tsx +55 -55
- package/src/RadioButton/RadioGroup.tsx +60 -60
- package/src/RadioButton/context.ts +17 -17
- package/src/RadioButton/index.ts +2 -2
- package/src/SkipNav/SkipNav.tsx +16 -16
- package/src/SkipNav/index.tsx +1 -1
- package/src/Slider/Slider.story.tsx +45 -45
- package/src/Slider/Slider.tsx +1115 -1120
- package/src/Slider/index.ts +1 -1
- package/src/Slider/styles.css +131 -131
- package/src/Spinner/Spinner.story.tsx +31 -31
- package/src/Spinner/Spinner.tsx +117 -117
- package/src/Spinner/SpinnerButton.tsx +54 -54
- package/src/Spinner/context.ts +20 -20
- package/src/Spinner/index.ts +2 -2
- package/src/Spinner/styles.css +23 -23
- package/src/Tabs/Tab.story.tsx +80 -80
- package/src/Tabs/Tab.tsx +136 -136
- package/src/Tabs/TabList.tsx +71 -71
- package/src/Tabs/TabPanel.tsx +53 -53
- package/src/Tabs/TabPanels.tsx +30 -30
- package/src/Tabs/Tabs.tsx +46 -46
- package/src/Tabs/context.ts +30 -30
- package/src/Tabs/index.tsx +5 -5
- package/src/Tabs/scopeQuery.ts +6 -6
- package/src/Tooltip/Tooltip.story.tsx +61 -61
- package/src/Tooltip/Tooltip.tsx +53 -50
- package/src/Tooltip/index.ts +1 -1
- package/src/Tooltip/stateMachine.ts +192 -192
- package/src/Tooltip/styles.css +17 -17
- package/src/Tooltip/useTooltip.ts +136 -136
- package/src/hooks/index.ts +13 -13
- package/src/hooks/useAutoFocus.ts +22 -22
- package/src/hooks/useChildrenCounter.ts +51 -51
- package/src/hooks/useControlledState.ts +1 -6
- package/src/hooks/useFocusReturn.ts +43 -43
- package/src/hooks/useFocusState.ts +30 -30
- package/src/hooks/useGestureHandlers.ts +282 -286
- package/src/hooks/useMeasure.ts +33 -33
- package/src/hooks/useOnClickOutside.ts +32 -32
- package/src/hooks/useOnKeyDown.ts +19 -19
- package/src/hooks/useReducerMachine.ts +60 -60
- package/src/hooks/useRemoveBodyScroll.ts +38 -39
- package/src/hooks/useScope.ts +52 -52
- package/src/hooks/useThrottle.ts +19 -19
- package/src/index.ts +20 -20
- package/src/styles.d.ts +1 -0
- package/src/utils/assign-ref.ts +27 -27
- package/src/utils/can-use-dom.ts +7 -7
- package/src/utils/clamp.ts +3 -3
- package/src/utils/context.tsx +48 -48
- package/src/utils/create-subscription.ts +16 -16
- package/src/utils/get-circular-index.ts +7 -7
- package/src/utils/index.ts +10 -10
- package/src/utils/is-right-click.ts +14 -14
- package/src/utils/owner-document.ts +13 -13
- package/src/utils/polymorphic.ts +82 -78
- package/src/utils/rubber-band-clamp.ts +25 -25
- package/src/utils/use-stable-callback.ts +57 -58
- package/src/utils/wrap-event.ts +22 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function makeHash(str: string): number;
|
|
1
|
+
export declare function makeHash(str: string): number;
|
|
@@ -6,18 +6,15 @@
|
|
|
6
6
|
// don't know how it works, tbqh)
|
|
7
7
|
// https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript
|
|
8
8
|
export function makeHash(str) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
let hash = 0;
|
|
11
10
|
if (str.length === 0) {
|
|
12
11
|
return hash;
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var char = str.charCodeAt(i);
|
|
13
|
+
for (let i = 0; i < str.length; i++) {
|
|
14
|
+
const char = str.charCodeAt(i);
|
|
17
15
|
hash = (hash << 5) - hash + char;
|
|
18
16
|
hash = hash & hash;
|
|
19
17
|
}
|
|
20
|
-
|
|
21
18
|
return hash;
|
|
22
19
|
}
|
|
23
20
|
//# sourceMappingURL=makeHash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeHash.js","names":["makeHash","str","hash","length","i","char","charCodeAt"],"sources":["../../../src/ComboBox/makeHash.ts"],"sourcesContent":["// We don't want to track the active descendant with indexes because nothing is\
|
|
1
|
+
{"version":3,"file":"makeHash.js","names":["makeHash","str","hash","length","i","char","charCodeAt"],"sources":["../../../src/ComboBox/makeHash.ts"],"sourcesContent":["// We don't want to track the active descendant with indexes because nothing is\n// more annoying in a combobox than having it change values RIGHT AS YOU HIT\n// ENTER. That only happens if you use the index as your data, rather than\n// *your data as your data*. We use this to generate a unique ID based on the\n// value of each item. This function is short, sweet, and good enough™ (I also\n// don't know how it works, tbqh)\n// https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript\nexport function makeHash(str: string) {\n let hash = 0;\n if (str.length === 0) {\n return hash;\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return hash;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,QAAQA,CAACC,GAAW,EAAE;EACpC,IAAIC,IAAI,GAAG,CAAC;EACZ,IAAID,GAAG,CAACE,MAAM,KAAK,CAAC,EAAE;IACpB,OAAOD,IAAI;EACb;EACA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,GAAG,CAACE,MAAM,EAAEC,CAAC,EAAE,EAAE;IACnC,MAAMC,IAAI,GAAGJ,GAAG,CAACK,UAAU,CAACF,CAAC,CAAC;IAC9BF,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAIA,IAAI,GAAGG,IAAI;IAChCH,IAAI,GAAGA,IAAI,GAAGA,IAAI;EACpB;EACA,OAAOA,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function scopeQuery(nodeType: string, props: Record<string, unknown>): boolean;
|
|
1
|
+
export declare function scopeQuery(nodeType: string, props: Record<string, unknown>): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopeQuery.js","names":["scopeQuery","nodeType","props"],"sources":["../../../src/ComboBox/scopeQuery.ts"],"sourcesContent":["export function scopeQuery(\
|
|
1
|
+
{"version":3,"file":"scopeQuery.js","names":["scopeQuery","nodeType","props"],"sources":["../../../src/ComboBox/scopeQuery.ts"],"sourcesContent":["export function scopeQuery(\n nodeType: string,\n props: Record<string, unknown>\n): boolean {\n return props['data-reach-combobox-option'] === '';\n}\n"],"mappings":"AAAA,OAAO,SAASA,UAAUA,CACxBC,QAAgB,EAChBC,KAA8B,EACrB;EACT,OAAOA,KAAK,CAAC,4BAA4B,CAAC,KAAK,EAAE;AACnD","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { ElementType, FC, HTMLAttributes, MutableRefObject, ReactNode } from 'react';
|
|
2
|
-
export interface FocusLockProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
-
as?: ElementType<any>;
|
|
4
|
-
innerAs?: ElementType<any>;
|
|
5
|
-
children?: ReactNode;
|
|
6
|
-
childRef: MutableRefObject<HTMLElement | null>;
|
|
7
|
-
enabled?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare const FocusLock: FC<FocusLockProps>;
|
|
1
|
+
import type { ElementType, FC, HTMLAttributes, MutableRefObject, ReactNode } from 'react';
|
|
2
|
+
export interface FocusLockProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
as?: ElementType<any>;
|
|
4
|
+
innerAs?: ElementType<any>;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
childRef: MutableRefObject<HTMLElement | null>;
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const FocusLock: FC<FocusLockProps>;
|
|
@@ -1,54 +1,48 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["as", "childRef", "enabled", "style", "children"];
|
|
4
1
|
import { useRef } from 'react';
|
|
5
2
|
import { useFocusLock } from './useFocusLock';
|
|
6
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
otherProps = _objectWithoutProperties(props, _excluded);
|
|
19
|
-
|
|
20
|
-
var lockStartRef = useRef(null);
|
|
21
|
-
var lockEndRef = useRef(null);
|
|
3
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
export const FocusLock = function FocusLock(props) {
|
|
5
|
+
const {
|
|
6
|
+
as: Comp = 'div',
|
|
7
|
+
childRef,
|
|
8
|
+
enabled = false,
|
|
9
|
+
style = {},
|
|
10
|
+
children,
|
|
11
|
+
...otherProps
|
|
12
|
+
} = props;
|
|
13
|
+
const lockStartRef = useRef(null);
|
|
14
|
+
const lockEndRef = useRef(null);
|
|
22
15
|
useFocusLock(childRef, {
|
|
23
|
-
enabled
|
|
24
|
-
lockStartRef
|
|
25
|
-
lockEndRef
|
|
16
|
+
enabled,
|
|
17
|
+
lockStartRef,
|
|
18
|
+
lockEndRef
|
|
26
19
|
});
|
|
27
|
-
|
|
28
|
-
var lockStyle = _extends({
|
|
20
|
+
const lockStyle = {
|
|
29
21
|
width: 1,
|
|
30
22
|
height: 0,
|
|
31
23
|
padding: 0,
|
|
32
24
|
overflow: 'hidden',
|
|
33
25
|
position: 'fixed',
|
|
34
26
|
top: 1,
|
|
35
|
-
left: 1
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
left: 1,
|
|
28
|
+
...style
|
|
29
|
+
};
|
|
38
30
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
39
|
-
children: [/*#__PURE__*/_jsx(Comp,
|
|
31
|
+
children: [/*#__PURE__*/_jsx(Comp, {
|
|
40
32
|
ref: lockStartRef,
|
|
41
33
|
"data-focus-lock-start": "",
|
|
42
34
|
"aria-hidden": true,
|
|
43
35
|
tabIndex: 0,
|
|
44
|
-
style: lockStyle
|
|
45
|
-
|
|
36
|
+
style: lockStyle,
|
|
37
|
+
...otherProps
|
|
38
|
+
}), children, /*#__PURE__*/_jsx(Comp, {
|
|
46
39
|
ref: lockEndRef,
|
|
47
40
|
"data-focus-lock-end": "",
|
|
48
41
|
"aria-hidden": true,
|
|
49
42
|
tabIndex: 0,
|
|
50
|
-
style: lockStyle
|
|
51
|
-
|
|
43
|
+
style: lockStyle,
|
|
44
|
+
...otherProps
|
|
45
|
+
})]
|
|
52
46
|
});
|
|
53
47
|
};
|
|
54
48
|
//# sourceMappingURL=FocusLock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusLock.js","names":["useRef","useFocusLock","FocusLock","props","as","Comp","childRef","enabled","style","children","otherProps","lockStartRef","lockEndRef","lockStyle","width","height","padding","overflow","position","top","left"],"sources":["../../../src/FocusLock/FocusLock.tsx"],"sourcesContent":["import type {\
|
|
1
|
+
{"version":3,"file":"FocusLock.js","names":["useRef","useFocusLock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","FocusLock","props","as","Comp","childRef","enabled","style","children","otherProps","lockStartRef","lockEndRef","lockStyle","width","height","padding","overflow","position","top","left","ref","tabIndex"],"sources":["../../../src/FocusLock/FocusLock.tsx"],"sourcesContent":["import type {\n ElementType,\n FC,\n HTMLAttributes,\n MutableRefObject,\n ReactNode,\n} from 'react';\nimport { useRef } from 'react';\n\nimport { useFocusLock } from './useFocusLock';\n\nexport interface FocusLockProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n childRef: MutableRefObject<HTMLElement | null>;\n enabled?: boolean;\n}\n\nexport const FocusLock: FC<FocusLockProps> = function FocusLock(props) {\n const {\n as: Comp = 'div',\n childRef,\n enabled = false,\n style = {},\n children,\n ...otherProps\n } = props;\n const lockStartRef = useRef<HTMLElement>(null);\n const lockEndRef = useRef<HTMLElement>(null);\n\n useFocusLock(childRef, { enabled, lockStartRef, lockEndRef });\n\n const lockStyle = {\n width: 1,\n height: 0,\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: 1,\n left: 1,\n ...style,\n };\n\n return (\n <>\n <Comp\n ref={lockStartRef}\n data-focus-lock-start=\"\"\n aria-hidden={true}\n tabIndex={0}\n style={lockStyle}\n {...otherProps}\n />\n {children}\n <Comp\n ref={lockEndRef}\n data-focus-lock-end=\"\"\n aria-hidden={true}\n tabIndex={0}\n style={lockStyle}\n {...otherProps}\n />\n </>\n );\n};\n"],"mappings":"AAOA,SAASA,MAAM,QAAQ,OAAO;AAE9B,SAASC,YAAY,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAU9C,OAAO,MAAMC,SAA6B,GAAG,SAASA,SAASA,CAACC,KAAK,EAAE;EACrE,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAG,KAAK;IAChBC,QAAQ;IACRC,OAAO,GAAG,KAAK;IACfC,KAAK,GAAG,CAAC,CAAC;IACVC,QAAQ;IACR,GAAGC;EACL,CAAC,GAAGP,KAAK;EACT,MAAMQ,YAAY,GAAGjB,MAAM,CAAc,IAAI,CAAC;EAC9C,MAAMkB,UAAU,GAAGlB,MAAM,CAAc,IAAI,CAAC;EAE5CC,YAAY,CAACW,QAAQ,EAAE;IAAEC,OAAO;IAAEI,YAAY;IAAEC;EAAW,CAAC,CAAC;EAE7D,MAAMC,SAAS,GAAG;IAChBC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE,CAAC;IACVC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,OAAO;IACjBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACP,GAAGZ;EACL,CAAC;EAED,oBACEP,KAAA,CAAAF,SAAA;IAAAU,QAAA,gBACEZ,IAAA,CAACQ,IAAI;MACHgB,GAAG,EAAEV,YAAa;MAClB,yBAAsB,EAAE;MACxB,eAAa,IAAK;MAClBW,QAAQ,EAAE,CAAE;MACZd,KAAK,EAAEK,SAAU;MAAA,GACbH;IAAU,CACf,CAAC,EACDD,QAAQ,eACTZ,IAAA,CAACQ,IAAI;MACHgB,GAAG,EAAET,UAAW;MAChB,uBAAoB,EAAE;MACtB,eAAa,IAAK;MAClBU,QAAQ,EAAE,CAAE;MACZd,KAAK,EAAEK,SAAU;MAAA,GACbH;IAAU,CACf,CAAC;EAAA,CACF,CAAC;AAEP,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './FocusLock';
|
|
1
|
+
export * from './FocusLock';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/FocusLock/index.ts"],"sourcesContent":["export * from './FocusLock';\
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/FocusLock/index.ts"],"sourcesContent":["export * from './FocusLock';\n"],"mappings":"AAAA,cAAc,aAAa","ignoreList":[]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const tabblable: string;
|
|
2
|
-
export declare const getTabblableNodes: (parentNode: HTMLElement | null) => HTMLElement[];
|
|
3
|
-
export declare function focusOnChildNode(parentNode: HTMLElement, itemIndex: 0 | -1): void;
|
|
1
|
+
export declare const tabblable: string;
|
|
2
|
+
export declare const getTabblableNodes: (parentNode: HTMLElement | null) => HTMLElement[];
|
|
3
|
+
export declare function focusOnChildNode(parentNode: HTMLElement, itemIndex: 0 | -1): void;
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
export
|
|
2
|
-
/* This is naive and will not consider tabIndex */
|
|
1
|
+
export const tabblable = ['button:enabled:not([readonly])', 'select:enabled:not([readonly])', 'textarea:enabled:not([readonly])', 'input:enabled:not([readonly])', 'a[href]', 'area[href]', 'iframe', 'object', 'embed', '[tabindex]', '[contenteditable]', '[autofocus]'].join(',');
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
/* This is naive and will not consider tabIndex */
|
|
4
|
+
export const getTabblableNodes = parentNode => {
|
|
5
5
|
if (!parentNode) {
|
|
6
6
|
return [];
|
|
7
7
|
}
|
|
8
|
-
|
|
9
8
|
return Array.from(parentNode.querySelectorAll(tabblable));
|
|
10
9
|
};
|
|
11
10
|
export function focusOnChildNode(parentNode, itemIndex) {
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const elements = getTabblableNodes(parentNode);
|
|
14
12
|
if (elements.length > 0) {
|
|
15
13
|
elements[itemIndex === -1 ? elements.length - 1 : 0].focus();
|
|
16
14
|
} else {
|
|
17
|
-
|
|
15
|
+
const currentTabIndex = parentNode.tabIndex;
|
|
18
16
|
parentNode.tabIndex = 0;
|
|
19
17
|
parentNode.focus();
|
|
20
18
|
parentNode.tabIndex = currentTabIndex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabUtils.js","names":["tabblable","join","getTabblableNodes","parentNode","Array","from","querySelectorAll","focusOnChildNode","itemIndex","elements","length","focus","currentTabIndex","tabIndex"],"sources":["../../../src/FocusLock/tabUtils.ts"],"sourcesContent":["export const tabblable = [\
|
|
1
|
+
{"version":3,"file":"tabUtils.js","names":["tabblable","join","getTabblableNodes","parentNode","Array","from","querySelectorAll","focusOnChildNode","itemIndex","elements","length","focus","currentTabIndex","tabIndex"],"sources":["../../../src/FocusLock/tabUtils.ts"],"sourcesContent":["export const tabblable = [\n 'button:enabled:not([readonly])',\n 'select:enabled:not([readonly])',\n 'textarea:enabled:not([readonly])',\n 'input:enabled:not([readonly])',\n\n 'a[href]',\n 'area[href]',\n\n 'iframe',\n 'object',\n 'embed',\n\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n].join(',');\n\n/* This is naive and will not consider tabIndex */\nexport const getTabblableNodes = (\n parentNode: HTMLElement | null\n): HTMLElement[] => {\n if (!parentNode) {\n return [];\n }\n\n return Array.from(parentNode.querySelectorAll(tabblable));\n};\n\nexport function focusOnChildNode(parentNode: HTMLElement, itemIndex: 0 | -1) {\n const elements = getTabblableNodes(parentNode);\n if (elements.length > 0) {\n elements[itemIndex === -1 ? elements.length - 1 : 0].focus();\n } else {\n const currentTabIndex = parentNode.tabIndex;\n parentNode.tabIndex = 0;\n parentNode.focus();\n parentNode.tabIndex = currentTabIndex;\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,SAAS,GAAG,CACvB,gCAAgC,EAChC,gCAAgC,EAChC,kCAAkC,EAClC,+BAA+B,EAE/B,SAAS,EACT,YAAY,EAEZ,QAAQ,EACR,QAAQ,EACR,OAAO,EAEP,YAAY,EACZ,mBAAmB,EACnB,aAAa,CACd,CAACC,IAAI,CAAC,GAAG,CAAC;;AAEX;AACA,OAAO,MAAMC,iBAAiB,GAC5BC,UAA8B,IACZ;EAClB,IAAI,CAACA,UAAU,EAAE;IACf,OAAO,EAAE;EACX;EAEA,OAAOC,KAAK,CAACC,IAAI,CAACF,UAAU,CAACG,gBAAgB,CAACN,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED,OAAO,SAASO,gBAAgBA,CAACJ,UAAuB,EAAEK,SAAiB,EAAE;EAC3E,MAAMC,QAAQ,GAAGP,iBAAiB,CAACC,UAAU,CAAC;EAC9C,IAAIM,QAAQ,CAACC,MAAM,GAAG,CAAC,EAAE;IACvBD,QAAQ,CAACD,SAAS,KAAK,CAAC,CAAC,GAAGC,QAAQ,CAACC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;EAC9D,CAAC,MAAM;IACL,MAAMC,eAAe,GAAGT,UAAU,CAACU,QAAQ;IAC3CV,UAAU,CAACU,QAAQ,GAAG,CAAC;IACvBV,UAAU,CAACQ,KAAK,CAAC,CAAC;IAClBR,UAAU,CAACU,QAAQ,GAAGD,eAAe;EACvC;AACF","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { MutableRefObject } from 'react';
|
|
2
|
-
export interface FocusLockOptions {
|
|
3
|
-
enabled: boolean;
|
|
4
|
-
lockStartRef: MutableRefObject<HTMLElement | null>;
|
|
5
|
-
lockEndRef: MutableRefObject<HTMLElement | null>;
|
|
6
|
-
}
|
|
7
|
-
export declare function useFocusLock(ref: MutableRefObject<HTMLElement | null>, opts: FocusLockOptions): void;
|
|
1
|
+
import type { MutableRefObject } from 'react';
|
|
2
|
+
export interface FocusLockOptions {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
lockStartRef: MutableRefObject<HTMLElement | null>;
|
|
5
|
+
lockEndRef: MutableRefObject<HTMLElement | null>;
|
|
6
|
+
}
|
|
7
|
+
export declare function useFocusLock(ref: MutableRefObject<HTMLElement | null>, opts: FocusLockOptions): void;
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { focusOnChildNode } from './tabUtils';
|
|
3
|
-
|
|
3
|
+
const focusLockStack = [];
|
|
4
4
|
export function useFocusLock(ref, opts) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
const {
|
|
6
|
+
enabled = true,
|
|
7
|
+
lockStartRef,
|
|
8
|
+
lockEndRef
|
|
9
|
+
} = opts;
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const rootEl = ref.current;
|
|
12
12
|
if (enabled && rootEl) {
|
|
13
13
|
focusLockStack.push(rootEl);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var isActiveFocusLock = focusLockStack[focusLockStack.length - 1] === rootEl;
|
|
17
|
-
|
|
14
|
+
const listener = event => {
|
|
15
|
+
const isActiveFocusLock = focusLockStack[focusLockStack.length - 1] === rootEl;
|
|
18
16
|
if (!isActiveFocusLock) {
|
|
19
17
|
// Not the currently focused lock. Forget about it.
|
|
20
18
|
return;
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
if (event.target === lockEndRef.current) {
|
|
24
21
|
focusOnChildNode(rootEl, 0);
|
|
25
22
|
} else if (event.target === lockStartRef.current) {
|
|
@@ -29,15 +26,13 @@ export function useFocusLock(ref, opts) {
|
|
|
29
26
|
focusOnChildNode(rootEl, 0);
|
|
30
27
|
}
|
|
31
28
|
};
|
|
32
|
-
|
|
33
29
|
document.addEventListener('focusin', listener);
|
|
34
|
-
return
|
|
35
|
-
document.removeEventListener('focusin', listener);
|
|
36
|
-
|
|
30
|
+
return () => {
|
|
31
|
+
document.removeEventListener('focusin', listener);
|
|
37
32
|
focusLockStack.pop();
|
|
38
33
|
};
|
|
39
|
-
}
|
|
40
|
-
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
36
|
}, [enabled]);
|
|
42
37
|
}
|
|
43
38
|
//# sourceMappingURL=useFocusLock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFocusLock.js","names":["useEffect","focusOnChildNode","focusLockStack","useFocusLock","ref","opts","enabled","lockStartRef","lockEndRef","rootEl","current","push","listener","event","isActiveFocusLock","length","target","document","contains","preventDefault","addEventListener","removeEventListener","pop"],"sources":["../../../src/FocusLock/useFocusLock.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\
|
|
1
|
+
{"version":3,"file":"useFocusLock.js","names":["useEffect","focusOnChildNode","focusLockStack","useFocusLock","ref","opts","enabled","lockStartRef","lockEndRef","rootEl","current","push","listener","event","isActiveFocusLock","length","target","document","contains","preventDefault","addEventListener","removeEventListener","pop"],"sources":["../../../src/FocusLock/useFocusLock.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nimport { focusOnChildNode } from './tabUtils';\n\nexport interface FocusLockOptions {\n enabled: boolean;\n lockStartRef: MutableRefObject<HTMLElement | null>;\n lockEndRef: MutableRefObject<HTMLElement | null>;\n}\n\nconst focusLockStack: HTMLElement[] = [];\nexport function useFocusLock(\n ref: MutableRefObject<HTMLElement | null>,\n opts: FocusLockOptions\n) {\n const { enabled = true, lockStartRef, lockEndRef } = opts;\n\n useEffect(() => {\n const rootEl = ref.current;\n if (enabled && rootEl) {\n focusLockStack.push(rootEl);\n\n const listener = (event: FocusEvent) => {\n const isActiveFocusLock =\n focusLockStack[focusLockStack.length - 1] === rootEl;\n if (!isActiveFocusLock) {\n // Not the currently focused lock. Forget about it.\n return;\n }\n\n if (event.target === lockEndRef.current) {\n focusOnChildNode(rootEl, 0);\n } else if (event.target === lockStartRef.current) {\n focusOnChildNode(rootEl, -1);\n } else if (\n document !== event.target &&\n rootEl !== event.target &&\n !rootEl.contains(event.target as any)\n ) {\n event.preventDefault();\n focusOnChildNode(rootEl, 0);\n }\n };\n\n document.addEventListener('focusin', listener);\n return () => {\n document.removeEventListener('focusin', listener);\n\n focusLockStack.pop();\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled]);\n}\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,gBAAgB,QAAQ,YAAY;AAQ7C,MAAMC,cAA6B,GAAG,EAAE;AACxC,OAAO,SAASC,YAAYA,CAC1BC,GAAyC,EACzCC,IAAsB,EACtB;EACA,MAAM;IAAEC,OAAO,GAAG,IAAI;IAAEC,YAAY;IAAEC;EAAW,CAAC,GAAGH,IAAI;EAEzDL,SAAS,CAAC,MAAM;IACd,MAAMS,MAAM,GAAGL,GAAG,CAACM,OAAO;IAC1B,IAAIJ,OAAO,IAAIG,MAAM,EAAE;MACrBP,cAAc,CAACS,IAAI,CAACF,MAAM,CAAC;MAE3B,MAAMG,QAAQ,GAAIC,KAAiB,IAAK;QACtC,MAAMC,iBAAiB,GACrBZ,cAAc,CAACA,cAAc,CAACa,MAAM,GAAG,CAAC,CAAC,KAAKN,MAAM;QACtD,IAAI,CAACK,iBAAiB,EAAE;UACtB;UACA;QACF;QAEA,IAAID,KAAK,CAACG,MAAM,KAAKR,UAAU,CAACE,OAAO,EAAE;UACvCT,gBAAgB,CAACQ,MAAM,EAAE,CAAC,CAAC;QAC7B,CAAC,MAAM,IAAII,KAAK,CAACG,MAAM,KAAKT,YAAY,CAACG,OAAO,EAAE;UAChDT,gBAAgB,CAACQ,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,MAAM,IACLQ,QAAQ,KAAKJ,KAAK,CAACG,MAAM,IACzBP,MAAM,KAAKI,KAAK,CAACG,MAAM,IACvB,CAACP,MAAM,CAACS,QAAQ,CAACL,KAAK,CAACG,MAAa,CAAC,EACrC;UACAH,KAAK,CAACM,cAAc,CAAC,CAAC;UACtBlB,gBAAgB,CAACQ,MAAM,EAAE,CAAC,CAAC;QAC7B;MACF,CAAC;MAEDQ,QAAQ,CAACG,gBAAgB,CAAC,SAAS,EAAER,QAAQ,CAAC;MAC9C,OAAO,MAAM;QACXK,QAAQ,CAACI,mBAAmB,CAAC,SAAS,EAAET,QAAQ,CAAC;QAEjDV,cAAc,CAACoB,GAAG,CAAC,CAAC;MACtB,CAAC;IACH;IACA;EACF,CAAC,EAAE,CAAChB,OAAO,CAAC,CAAC;AACf","ignoreList":[]}
|
package/build/esm/List/List.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
export interface ListProps extends HTMLAttributes<HTMLUListElement> {
|
|
3
|
-
as?: ElementType<any>;
|
|
4
|
-
innerAs?: ElementType<any>;
|
|
5
|
-
children?: ReactNode;
|
|
6
|
-
}
|
|
7
|
-
export declare const List: import("react").ForwardRefExoticComponent<ListProps & import("react").RefAttributes<HTMLUListElement>>;
|
|
1
|
+
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface ListProps extends HTMLAttributes<HTMLUListElement> {
|
|
3
|
+
as?: ElementType<any>;
|
|
4
|
+
innerAs?: ElementType<any>;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare const List: import("react").ForwardRefExoticComponent<ListProps & import("react").RefAttributes<HTMLUListElement>>;
|
package/build/esm/List/List.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["as"];
|
|
4
1
|
import { forwardRef } from 'react';
|
|
5
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return /*#__PURE__*/_jsx(Comp,
|
|
12
|
-
ref: forwardedRef
|
|
13
|
-
|
|
3
|
+
export const List = /*#__PURE__*/forwardRef(function List(props, forwardedRef) {
|
|
4
|
+
const {
|
|
5
|
+
as: Comp = 'ul',
|
|
6
|
+
...otherProps
|
|
7
|
+
} = props;
|
|
8
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
9
|
+
ref: forwardedRef,
|
|
10
|
+
...otherProps
|
|
11
|
+
});
|
|
14
12
|
});
|
|
15
13
|
//# sourceMappingURL=List.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.js","names":["forwardRef","List","props","forwardedRef","as","Comp","otherProps"],"sources":["../../../src/List/List.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes, ReactNode } from 'react';\
|
|
1
|
+
{"version":3,"file":"List.js","names":["forwardRef","jsx","_jsx","List","props","forwardedRef","as","Comp","otherProps","ref"],"sources":["../../../src/List/List.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nexport interface ListProps extends HTMLAttributes<HTMLUListElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n}\n\nexport const List = forwardRef<HTMLUListElement, ListProps>(function List(\n props,\n forwardedRef\n) {\n const { as: Comp = 'ul', ...otherProps } = props;\n\n return <Comp ref={forwardedRef} {...otherProps} />;\n});\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQnC,OAAO,MAAMC,IAAI,gBAAGH,UAAU,CAA8B,SAASG,IAAIA,CACvEC,KAAK,EACLC,YAAY,EACZ;EACA,MAAM;IAAEC,EAAE,EAAEC,IAAI,GAAG,IAAI;IAAE,GAAGC;EAAW,CAAC,GAAGJ,KAAK;EAEhD,oBAAOF,IAAA,CAACK,IAAI;IAACE,GAAG,EAAEJ,YAAa;IAAA,GAAKG;EAAU,CAAG,CAAC;AACpD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
export interface ListItemProps extends HTMLAttributes<HTMLLIElement> {
|
|
3
|
-
as?: ElementType<any>;
|
|
4
|
-
innerAs?: ElementType<any>;
|
|
5
|
-
children?: ReactNode;
|
|
6
|
-
}
|
|
7
|
-
export declare const ListItem: import("react").ForwardRefExoticComponent<ListItemProps & import("react").RefAttributes<HTMLLIElement>>;
|
|
1
|
+
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface ListItemProps extends HTMLAttributes<HTMLLIElement> {
|
|
3
|
+
as?: ElementType<any>;
|
|
4
|
+
innerAs?: ElementType<any>;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare const ListItem: import("react").ForwardRefExoticComponent<ListItemProps & import("react").RefAttributes<HTMLLIElement>>;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["as"];
|
|
4
1
|
import { forwardRef } from 'react';
|
|
5
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return /*#__PURE__*/_jsx(Comp,
|
|
3
|
+
export const ListItem = /*#__PURE__*/forwardRef(function ListItem(props, forwardedRef) {
|
|
4
|
+
const {
|
|
5
|
+
as: Comp = 'li',
|
|
6
|
+
...otherProps
|
|
7
|
+
} = props;
|
|
8
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
12
9
|
tabIndex: -1,
|
|
13
10
|
"data-list-item": "",
|
|
14
|
-
ref: forwardedRef
|
|
15
|
-
|
|
11
|
+
ref: forwardedRef,
|
|
12
|
+
...otherProps
|
|
13
|
+
});
|
|
16
14
|
});
|
|
17
15
|
//# sourceMappingURL=ListItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.js","names":["forwardRef","ListItem","props","forwardedRef","as","Comp","otherProps"],"sources":["../../../src/List/ListItem.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes, ReactNode } from 'react';\
|
|
1
|
+
{"version":3,"file":"ListItem.js","names":["forwardRef","jsx","_jsx","ListItem","props","forwardedRef","as","Comp","otherProps","tabIndex","ref"],"sources":["../../../src/List/ListItem.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nexport interface ListItemProps extends HTMLAttributes<HTMLLIElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n}\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(\n function ListItem(props, forwardedRef) {\n const { as: Comp = 'li', ...otherProps } = props;\n\n return (\n <Comp\n tabIndex={-1}\n data-list-item=\"\"\n ref={forwardedRef}\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQnC,OAAO,MAAMC,QAAQ,gBAAGH,UAAU,CAChC,SAASG,QAAQA,CAACC,KAAK,EAAEC,YAAY,EAAE;EACrC,MAAM;IAAEC,EAAE,EAAEC,IAAI,GAAG,IAAI;IAAE,GAAGC;EAAW,CAAC,GAAGJ,KAAK;EAEhD,oBACEF,IAAA,CAACK,IAAI;IACHE,QAAQ,EAAE,CAAC,CAAE;IACb,kBAAe,EAAE;IACjBC,GAAG,EAAEL,YAAa;IAAA,GACdG;EAAU,CACf,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface ListContextProps {
|
|
2
|
-
id: string | undefined;
|
|
3
|
-
}
|
|
4
|
-
export declare const useListContext: () => ListContextProps;
|
|
1
|
+
export interface ListContextProps {
|
|
2
|
+
id: string | undefined;
|
|
3
|
+
}
|
|
4
|
+
export declare const useListContext: () => ListContextProps;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { createContext, useContext } from 'react';
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
ListContext.displayName = 'ListContext';
|
|
5
|
-
export var useListContext = function useListContext() {
|
|
6
|
-
var ctx = useContext(ListContext);
|
|
3
|
+
// List Component
|
|
7
4
|
|
|
5
|
+
const ListContext = /*#__PURE__*/createContext(null);
|
|
6
|
+
ListContext.displayName = 'ListContext';
|
|
7
|
+
export const useListContext = () => {
|
|
8
|
+
const ctx = useContext(ListContext);
|
|
8
9
|
if (!ctx) {
|
|
9
10
|
throw new Error('useListContext must be used within a ListContext.Provider');
|
|
10
11
|
}
|
|
11
|
-
|
|
12
12
|
return ctx;
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":["createContext","useContext","ListContext","displayName","useListContext","ctx","Error"],"sources":["../../../src/List/context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\
|
|
1
|
+
{"version":3,"file":"context.js","names":["createContext","useContext","ListContext","displayName","useListContext","ctx","Error"],"sources":["../../../src/List/context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n// List Component\nexport interface ListContextProps {\n id: string | undefined;\n}\n\nconst ListContext = createContext<ListContextProps | null>(null);\nListContext.displayName = 'ListContext';\n\nexport const useListContext = (): ListContextProps => {\n const ctx = useContext(ListContext);\n if (!ctx) {\n throw new Error(\n 'useListContext must be used within a ListContext.Provider'\n );\n }\n return ctx;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAEjD;;AAKA,MAAMC,WAAW,gBAAGF,aAAa,CAA0B,IAAI,CAAC;AAChEE,WAAW,CAACC,WAAW,GAAG,aAAa;AAEvC,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAwB;EACpD,MAAMC,GAAG,GAAGJ,UAAU,CAACC,WAAW,CAAC;EACnC,IAAI,CAACG,GAAG,EAAE;IACR,MAAM,IAAIC,KAAK,CACb,2DACF,CAAC;EACH;EACA,OAAOD,GAAG;AACZ,CAAC","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './List';
|
|
2
|
-
export * from './ListItem';
|
|
1
|
+
export * from './List';
|
|
2
|
+
export * from './ListItem';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/List/index.ts"],"sourcesContent":["export * from './List';\
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/List/index.ts"],"sourcesContent":["export * from './List';\nexport * from './ListItem';\n"],"mappings":"AAAA,cAAc,QAAQ;AACtB,cAAc,YAAY","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { ElementType, HTMLAttributes } from 'react';
|
|
2
|
-
export
|
|
3
|
-
as?: ElementType<any>;
|
|
4
|
-
innerAs?: ElementType<any>;
|
|
5
|
-
disabled?: boolean;
|
|
6
|
-
};
|
|
7
|
-
export declare const ContextMenuTrigger: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
|
|
8
|
-
as?: ElementType<any
|
|
9
|
-
innerAs?: ElementType<any
|
|
10
|
-
disabled?: boolean
|
|
11
|
-
} & import("react").RefAttributes<HTMLElement>>;
|
|
1
|
+
import type { ElementType, HTMLAttributes } from 'react';
|
|
2
|
+
export type ContextMenuTriggerProps = HTMLAttributes<HTMLElement> & {
|
|
3
|
+
as?: ElementType<any>;
|
|
4
|
+
innerAs?: ElementType<any>;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const ContextMenuTrigger: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
|
|
8
|
+
as?: ElementType<any>;
|
|
9
|
+
innerAs?: ElementType<any>;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
} & import("react").RefAttributes<HTMLElement>>;
|