@basic-ui/core 0.0.36 → 0.0.39
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/build/cjs/index.js +84 -83
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/Accordion.d.ts +1 -1
- package/build/esm/Accordion/Accordion.js +23 -17
- package/build/esm/Accordion/Accordion.js.map +1 -1
- package/build/esm/Accordion/AccordionBody.d.ts +1 -1
- package/build/esm/Accordion/AccordionBody.js +24 -15
- package/build/esm/Accordion/AccordionBody.js.map +1 -1
- package/build/esm/Accordion/AccordionHeader.d.ts +1 -1
- package/build/esm/Accordion/AccordionHeader.js +46 -31
- package/build/esm/Accordion/AccordionHeader.js.map +1 -1
- package/build/esm/Accordion/AccordionItem.d.ts +1 -1
- package/build/esm/Accordion/AccordionItem.js +18 -18
- package/build/esm/Accordion/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/context.d.ts +1 -1
- package/build/esm/Accordion/context.js +12 -10
- package/build/esm/Accordion/context.js.map +1 -1
- package/build/esm/Accordion/index.d.ts +0 -0
- package/build/esm/Accordion/index.js +0 -0
- package/build/esm/Accordion/index.js.map +0 -0
- package/build/esm/Accordion/scopeQuery.d.ts +0 -0
- package/build/esm/Accordion/scopeQuery.js +0 -0
- package/build/esm/Accordion/scopeQuery.js.map +0 -0
- package/build/esm/CheckBox/CheckBox.d.ts +1 -1
- package/build/esm/CheckBox/CheckBox.js +20 -12
- package/build/esm/CheckBox/CheckBox.js.map +1 -1
- package/build/esm/CheckBox/index.d.ts +0 -0
- package/build/esm/CheckBox/index.js +0 -0
- package/build/esm/CheckBox/index.js.map +0 -0
- package/build/esm/ComboBox/Combobox.d.ts +1 -1
- package/build/esm/ComboBox/Combobox.js +55 -48
- package/build/esm/ComboBox/Combobox.js.map +1 -1
- package/build/esm/ComboBox/ComboboxButton.d.ts +1 -1
- package/build/esm/ComboBox/ComboboxButton.js +20 -20
- package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
- package/build/esm/ComboBox/ComboboxInput.d.ts +1 -1
- package/build/esm/ComboBox/ComboboxInput.js +53 -50
- package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
- package/build/esm/ComboBox/ComboboxLabel.d.ts +1 -1
- package/build/esm/ComboBox/ComboboxLabel.js +12 -12
- package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
- package/build/esm/ComboBox/ComboboxList.d.ts +1 -1
- package/build/esm/ComboBox/ComboboxList.js +16 -17
- package/build/esm/ComboBox/ComboboxList.js.map +1 -1
- package/build/esm/ComboBox/ComboboxOption.d.ts +1 -1
- package/build/esm/ComboBox/ComboboxOption.js +32 -34
- package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
- package/build/esm/ComboBox/ComboboxPopover.d.ts +1 -1
- package/build/esm/ComboBox/ComboboxPopover.js +16 -17
- package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
- package/build/esm/ComboBox/cities.d.ts +0 -0
- package/build/esm/ComboBox/cities.js +0 -0
- package/build/esm/ComboBox/cities.js.map +0 -0
- package/build/esm/ComboBox/context.d.ts +3 -3
- package/build/esm/ComboBox/context.js +6 -5
- package/build/esm/ComboBox/context.js.map +1 -1
- package/build/esm/ComboBox/hooks.d.ts +1 -1
- package/build/esm/ComboBox/hooks.js +82 -115
- package/build/esm/ComboBox/hooks.js.map +1 -1
- package/build/esm/ComboBox/index.d.ts +0 -0
- package/build/esm/ComboBox/index.js +0 -0
- package/build/esm/ComboBox/index.js.map +0 -0
- package/build/esm/ComboBox/makeHash.d.ts +0 -0
- package/build/esm/ComboBox/makeHash.js +3 -3
- package/build/esm/ComboBox/makeHash.js.map +1 -1
- package/build/esm/ComboBox/scopeQuery.d.ts +0 -0
- package/build/esm/ComboBox/scopeQuery.js +0 -0
- package/build/esm/ComboBox/scopeQuery.js.map +0 -0
- package/build/esm/FocusLock/FocusLock.d.ts +1 -1
- package/build/esm/FocusLock/FocusLock.js +18 -16
- package/build/esm/FocusLock/FocusLock.js.map +1 -1
- package/build/esm/FocusLock/index.d.ts +0 -0
- package/build/esm/FocusLock/index.js +0 -0
- package/build/esm/FocusLock/index.js.map +0 -0
- package/build/esm/FocusLock/tabUtils.d.ts +1 -0
- package/build/esm/FocusLock/tabUtils.js +14 -2
- package/build/esm/FocusLock/tabUtils.js.map +1 -1
- package/build/esm/FocusLock/useFocusLock.d.ts +0 -0
- package/build/esm/FocusLock/useFocusLock.js +14 -22
- package/build/esm/FocusLock/useFocusLock.js.map +1 -1
- package/build/esm/List/List.d.ts +1 -1
- package/build/esm/List/List.js +6 -6
- package/build/esm/List/List.js.map +1 -1
- package/build/esm/List/ListItem.d.ts +1 -1
- package/build/esm/List/ListItem.js +6 -6
- package/build/esm/List/ListItem.js.map +1 -1
- package/build/esm/List/context.d.ts +0 -0
- package/build/esm/List/context.js +3 -3
- package/build/esm/List/context.js.map +1 -1
- package/build/esm/List/index.d.ts +0 -0
- package/build/esm/List/index.js +0 -0
- package/build/esm/List/index.js.map +0 -0
- package/build/esm/Menu/Menu.d.ts +1 -1
- package/build/esm/Menu/Menu.js +31 -23
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuButton.d.ts +1 -1
- package/build/esm/Menu/MenuButton.js +29 -25
- package/build/esm/Menu/MenuButton.js.map +1 -1
- package/build/esm/Menu/MenuItem.d.ts +1 -1
- package/build/esm/Menu/MenuItem.js +26 -27
- package/build/esm/Menu/MenuItem.js.map +1 -1
- package/build/esm/Menu/MenuList.d.ts +1 -1
- package/build/esm/Menu/MenuList.js +62 -45
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.d.ts +2 -2
- package/build/esm/Menu/MenuPopover.js +9 -10
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/context.d.ts +1 -1
- package/build/esm/Menu/context.js +11 -8
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/index.d.ts +0 -0
- package/build/esm/Menu/index.js +0 -0
- package/build/esm/Menu/index.js.map +0 -0
- package/build/esm/Menu/scope.d.ts +0 -0
- package/build/esm/Menu/scope.js +0 -0
- package/build/esm/Menu/scope.js.map +0 -0
- package/build/esm/Modal/Modal.d.ts +2 -2
- package/build/esm/Modal/Modal.js +14 -12
- package/build/esm/Modal/Modal.js.map +1 -1
- package/build/esm/Modal/ModalBackdrop.d.ts +1 -1
- package/build/esm/Modal/ModalBackdrop.js +21 -19
- package/build/esm/Modal/ModalBackdrop.js.map +1 -1
- package/build/esm/Modal/index.d.ts +0 -0
- package/build/esm/Modal/index.js +0 -0
- package/build/esm/Modal/index.js.map +0 -0
- package/build/esm/Popper/Popper.d.ts +2 -2
- package/build/esm/Popper/Popper.js +51 -36
- package/build/esm/Popper/Popper.js.map +1 -1
- package/build/esm/Popper/PopperArrow.d.ts +1 -1
- package/build/esm/Popper/PopperArrow.js +9 -9
- package/build/esm/Popper/PopperArrow.js.map +1 -1
- package/build/esm/Popper/context.d.ts +1 -1
- package/build/esm/Popper/context.js +5 -3
- package/build/esm/Popper/context.js.map +1 -1
- package/build/esm/Popper/index.d.ts +0 -0
- package/build/esm/Popper/index.js +0 -0
- package/build/esm/Popper/index.js.map +0 -0
- package/build/esm/Portal/Portal.d.ts +1 -1
- package/build/esm/Portal/Portal.js +6 -5
- package/build/esm/Portal/Portal.js.map +1 -1
- package/build/esm/Portal/index.d.ts +0 -0
- package/build/esm/Portal/index.js +0 -0
- package/build/esm/Portal/index.js.map +0 -0
- package/build/esm/RadioButton/RadioButton.d.ts +2 -2
- package/build/esm/RadioButton/RadioButton.js +13 -13
- package/build/esm/RadioButton/RadioButton.js.map +1 -1
- package/build/esm/RadioButton/RadioGroup.d.ts +2 -2
- package/build/esm/RadioButton/RadioGroup.js +25 -18
- package/build/esm/RadioButton/RadioGroup.js.map +1 -1
- package/build/esm/RadioButton/context.d.ts +0 -0
- package/build/esm/RadioButton/context.js +6 -5
- package/build/esm/RadioButton/context.js.map +1 -1
- package/build/esm/RadioButton/index.d.ts +0 -0
- package/build/esm/RadioButton/index.js +0 -0
- package/build/esm/RadioButton/index.js.map +0 -0
- package/build/esm/SkipNav/SkipNav.d.ts +1 -1
- package/build/esm/SkipNav/SkipNav.js +6 -6
- package/build/esm/SkipNav/SkipNav.js.map +1 -1
- package/build/esm/SkipNav/index.d.ts +0 -0
- package/build/esm/SkipNav/index.js +0 -0
- package/build/esm/SkipNav/index.js.map +0 -0
- package/build/esm/Spinner/Spinner.d.ts +1 -1
- package/build/esm/Spinner/Spinner.js +42 -31
- package/build/esm/Spinner/Spinner.js.map +1 -1
- package/build/esm/Spinner/SpinnerButton.d.ts +1 -1
- package/build/esm/Spinner/SpinnerButton.js +12 -12
- package/build/esm/Spinner/SpinnerButton.js.map +1 -1
- package/build/esm/Spinner/context.d.ts +0 -0
- package/build/esm/Spinner/context.js +6 -5
- package/build/esm/Spinner/context.js.map +1 -1
- package/build/esm/Spinner/index.d.ts +0 -0
- package/build/esm/Spinner/index.js +0 -0
- package/build/esm/Spinner/index.js.map +0 -0
- package/build/esm/Tabs/Tab.d.ts +1 -1
- package/build/esm/Tabs/Tab.js +30 -29
- package/build/esm/Tabs/Tab.js.map +1 -1
- package/build/esm/Tabs/TabList.d.ts +1 -1
- package/build/esm/Tabs/TabList.js +27 -23
- package/build/esm/Tabs/TabList.js.map +1 -1
- package/build/esm/Tabs/TabPanel.d.ts +1 -1
- package/build/esm/Tabs/TabPanel.js +13 -12
- package/build/esm/Tabs/TabPanel.js.map +1 -1
- package/build/esm/Tabs/TabPanels.d.ts +1 -1
- package/build/esm/Tabs/TabPanels.js +14 -12
- package/build/esm/Tabs/TabPanels.js.map +1 -1
- package/build/esm/Tabs/Tabs.d.ts +1 -1
- package/build/esm/Tabs/Tabs.js +28 -14
- package/build/esm/Tabs/Tabs.js.map +1 -1
- package/build/esm/Tabs/context.d.ts +1 -1
- package/build/esm/Tabs/context.js +12 -10
- package/build/esm/Tabs/context.js.map +1 -1
- package/build/esm/Tabs/index.d.ts +0 -0
- package/build/esm/Tabs/index.js +0 -0
- package/build/esm/Tabs/index.js.map +0 -0
- package/build/esm/Tabs/scopeQuery.d.ts +0 -0
- package/build/esm/Tabs/scopeQuery.js +0 -0
- package/build/esm/Tabs/scopeQuery.js.map +0 -0
- package/build/esm/Tooltip/Tooltip.d.ts +2 -1
- package/build/esm/Tooltip/Tooltip.js +17 -15
- package/build/esm/Tooltip/Tooltip.js.map +1 -1
- package/build/esm/Tooltip/index.d.ts +0 -0
- package/build/esm/Tooltip/index.js +0 -0
- package/build/esm/Tooltip/index.js.map +0 -0
- package/build/esm/Tooltip/stateMachine.d.ts +0 -0
- package/build/esm/Tooltip/stateMachine.js +56 -80
- package/build/esm/Tooltip/stateMachine.js.map +1 -1
- package/build/esm/Tooltip/useTooltip.d.ts +1 -1
- package/build/esm/Tooltip/useTooltip.js +32 -31
- package/build/esm/Tooltip/useTooltip.js.map +1 -1
- package/build/esm/hooks/index.d.ts +0 -1
- package/build/esm/hooks/index.js +0 -1
- package/build/esm/hooks/index.js.map +1 -1
- package/build/esm/hooks/useAutoFocus.d.ts +0 -0
- package/build/esm/hooks/useAutoFocus.js +6 -2
- package/build/esm/hooks/useAutoFocus.js.map +1 -1
- package/build/esm/hooks/useChildrenCounter.d.ts +1 -1
- package/build/esm/hooks/useChildrenCounter.js +6 -4
- package/build/esm/hooks/useChildrenCounter.js.map +1 -1
- package/build/esm/hooks/useControlledState.d.ts +1 -1
- package/build/esm/hooks/useControlledState.js +7 -2
- package/build/esm/hooks/useControlledState.js.map +1 -1
- package/build/esm/hooks/useFocusReturn.d.ts +2 -1
- package/build/esm/hooks/useFocusReturn.js +25 -14
- package/build/esm/hooks/useFocusReturn.js.map +1 -1
- package/build/esm/hooks/useFocusState.d.ts +0 -0
- package/build/esm/hooks/useFocusState.js +13 -9
- package/build/esm/hooks/useFocusState.js.map +1 -1
- package/build/esm/hooks/useGestureHandlers.d.ts +0 -0
- package/build/esm/hooks/useGestureHandlers.js +59 -63
- package/build/esm/hooks/useGestureHandlers.js.map +1 -1
- package/build/esm/hooks/useMeasure.d.ts +0 -0
- package/build/esm/hooks/useMeasure.js +13 -7
- package/build/esm/hooks/useMeasure.js.map +1 -1
- package/build/esm/hooks/useOnClickOutside.d.ts +0 -0
- package/build/esm/hooks/useOnClickOutside.js +5 -4
- package/build/esm/hooks/useOnClickOutside.js.map +1 -1
- package/build/esm/hooks/useOnKeyDown.d.ts +0 -0
- package/build/esm/hooks/useOnKeyDown.js +4 -3
- package/build/esm/hooks/useOnKeyDown.js.map +1 -1
- package/build/esm/hooks/useReducerMachine.d.ts +1 -1
- package/build/esm/hooks/useReducerMachine.js +13 -10
- package/build/esm/hooks/useReducerMachine.js.map +1 -1
- package/build/esm/hooks/useRemoveBodyScroll.d.ts +0 -0
- package/build/esm/hooks/useRemoveBodyScroll.js +14 -21
- package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
- package/build/esm/hooks/useScope.d.ts +1 -1
- package/build/esm/hooks/useScope.js +10 -12
- package/build/esm/hooks/useScope.js.map +1 -1
- package/build/esm/hooks/useThrottle.d.ts +0 -0
- package/build/esm/hooks/useThrottle.js +10 -5
- package/build/esm/hooks/useThrottle.js.map +1 -1
- package/build/esm/index.d.ts +0 -0
- package/build/esm/index.js +0 -0
- package/build/esm/index.js.map +0 -0
- package/build/esm/utils/assignRef.d.ts +1 -1
- package/build/esm/utils/assignRef.js +7 -3
- package/build/esm/utils/assignRef.js.map +1 -1
- package/build/esm/utils/clamp.d.ts +0 -0
- package/build/esm/utils/clamp.js +0 -0
- package/build/esm/utils/clamp.js.map +0 -0
- package/build/esm/utils/createSubscription.d.ts +0 -0
- package/build/esm/utils/createSubscription.js +7 -5
- package/build/esm/utils/createSubscription.js.map +1 -1
- package/build/esm/utils/getCircularIndex.d.ts +0 -0
- package/build/esm/utils/getCircularIndex.js +0 -0
- package/build/esm/utils/getCircularIndex.js.map +0 -0
- package/build/esm/utils/index.d.ts +0 -0
- package/build/esm/utils/index.js +0 -0
- package/build/esm/utils/index.js.map +0 -0
- package/build/esm/utils/rubberBandClamp.d.ts +0 -0
- package/build/esm/utils/rubberBandClamp.js +5 -2
- package/build/esm/utils/rubberBandClamp.js.map +1 -1
- package/build/esm/utils/wrapEvent.d.ts +0 -0
- package/build/esm/utils/wrapEvent.js +7 -3
- package/build/esm/utils/wrapEvent.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -7151
- package/package.json +13 -13
- package/src/Accordion/Accordion.story.tsx +6 -4
- package/src/Accordion/Accordion.tsx +4 -2
- package/src/Accordion/AccordionBody.tsx +4 -4
- package/src/Accordion/AccordionHeader.tsx +7 -8
- package/src/Accordion/AccordionItem.tsx +5 -4
- package/src/Accordion/context.ts +2 -1
- package/src/CheckBox/CheckBox.tsx +2 -1
- package/src/ComboBox/ComboBox.story.tsx +11 -9
- package/src/ComboBox/Combobox.tsx +9 -11
- package/src/ComboBox/ComboboxButton.tsx +4 -9
- package/src/ComboBox/ComboboxInput.tsx +2 -1
- package/src/ComboBox/ComboboxLabel.tsx +2 -1
- package/src/ComboBox/ComboboxList.tsx +2 -1
- package/src/ComboBox/ComboboxOption.tsx +1 -1
- package/src/ComboBox/ComboboxPopover.tsx +2 -1
- package/src/ComboBox/context.ts +4 -3
- package/src/ComboBox/hooks.tsx +6 -9
- package/src/FocusLock/FocusLock.tsx +2 -1
- package/src/FocusLock/tabUtils.ts +12 -0
- package/src/FocusLock/useFocusLock.ts +5 -11
- package/src/List/List.story.tsx +5 -4
- package/src/List/List.tsx +1 -1
- package/src/List/ListItem.tsx +1 -1
- package/src/Menu/Menu.story.tsx +15 -13
- package/src/Menu/Menu.tsx +5 -4
- package/src/Menu/MenuButton.tsx +7 -11
- package/src/Menu/MenuItem.tsx +6 -7
- package/src/Menu/MenuList.tsx +4 -8
- package/src/Menu/MenuPopover.tsx +4 -2
- package/src/Menu/context.ts +2 -1
- package/src/Modal/Modal.story.tsx +35 -19
- package/src/Modal/Modal.tsx +6 -4
- package/src/Modal/ModalBackdrop.tsx +2 -1
- package/src/Modal/NavDrawer.story.tsx +8 -7
- package/src/Popper/Popper.story.tsx +15 -19
- package/src/Popper/Popper.tsx +12 -7
- package/src/Popper/PopperArrow.tsx +2 -1
- package/src/Popper/context.ts +2 -1
- package/src/Portal/Portal.tsx +1 -1
- package/src/RadioButton/RadioButton.story.tsx +13 -9
- package/src/RadioButton/RadioButton.tsx +4 -2
- package/src/RadioButton/RadioGroup.tsx +6 -4
- package/src/SkipNav/SkipNav.tsx +1 -1
- package/src/Spinner/Spinner.story.tsx +6 -5
- package/src/Spinner/Spinner.tsx +2 -1
- package/src/Spinner/SpinnerButton.tsx +2 -1
- package/src/Tabs/Tab.story.tsx +10 -8
- package/src/Tabs/Tab.tsx +4 -4
- package/src/Tabs/TabList.tsx +11 -3
- package/src/Tabs/TabPanel.tsx +2 -1
- package/src/Tabs/TabPanels.tsx +1 -1
- package/src/Tabs/Tabs.tsx +2 -1
- package/src/Tabs/context.ts +2 -1
- package/src/Tooltip/Tooltip.story.tsx +8 -6
- package/src/Tooltip/Tooltip.tsx +3 -7
- package/src/Tooltip/stateMachine.ts +1 -1
- package/src/Tooltip/useTooltip.ts +4 -3
- package/src/hooks/index.ts +0 -1
- package/src/hooks/useAutoFocus.ts +9 -1
- package/src/hooks/useChildrenCounter.ts +2 -1
- package/src/hooks/useControlledState.ts +3 -1
- package/src/hooks/useFocusReturn.ts +33 -13
- package/src/hooks/useFocusState.ts +1 -0
- package/src/hooks/useReducerMachine.ts +2 -1
- package/src/hooks/useRemoveBodyScroll.ts +10 -18
- package/src/hooks/useScope.ts +2 -1
- package/src/utils/assignRef.ts +1 -1
- package/build/esm/hooks/useId.d.ts +0 -3
- package/build/esm/hooks/useId.js +0 -16
- package/build/esm/hooks/useId.js.map +0 -1
- package/src/hooks/useId.ts +0 -18
package/build/cjs/index.js
CHANGED
|
@@ -28,10 +28,36 @@ const {
|
|
|
28
28
|
} = accordionItemContext;
|
|
29
29
|
const useAccordionItemContext = () => react.useContext(accordionItemContext);
|
|
30
30
|
|
|
31
|
+
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(',');
|
|
32
|
+
/* This is naive and will not consider tabIndex */
|
|
33
|
+
|
|
34
|
+
const getTabblableNodes = parentNode => {
|
|
35
|
+
if (!parentNode) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return Array.from(parentNode.querySelectorAll(tabblable));
|
|
40
|
+
};
|
|
41
|
+
function focusOnChildNode(parentNode, itemIndex) {
|
|
42
|
+
const elements = getTabblableNodes(parentNode);
|
|
43
|
+
|
|
44
|
+
if (elements.length > 0) {
|
|
45
|
+
elements[itemIndex === -1 ? elements.length - 1 : 0].focus();
|
|
46
|
+
} else {
|
|
47
|
+
const currentTabIndex = parentNode.tabIndex;
|
|
48
|
+
parentNode.tabIndex = 0;
|
|
49
|
+
parentNode.focus();
|
|
50
|
+
parentNode.tabIndex = currentTabIndex;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
31
54
|
function useAutoFocus(open, elementRef) {
|
|
32
55
|
react.useEffect(() => {
|
|
33
56
|
if (open) {
|
|
34
|
-
|
|
57
|
+
// We will only autoFocus on the first child if the currently active element isn't already trapped inside the modal
|
|
58
|
+
if (elementRef.current && !elementRef.current.contains(document.activeElement)) {
|
|
59
|
+
focusOnChildNode(elementRef.current, 0);
|
|
60
|
+
}
|
|
35
61
|
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36
62
|
|
|
37
63
|
}, [open]);
|
|
@@ -151,25 +177,36 @@ function useChildrenCounterChild(itemsRef, itemIndexRef, obj, disabled = false)
|
|
|
151
177
|
}
|
|
152
178
|
}
|
|
153
179
|
|
|
154
|
-
function useFocusReturn(open) {
|
|
155
|
-
const previousFocusRef = react.useRef(
|
|
180
|
+
function useFocusReturn(open, rootEl) {
|
|
181
|
+
const previousFocusRef = react.useRef((() => {
|
|
182
|
+
if (open && typeof document !== 'undefined' && document.activeElement instanceof HTMLElement) {
|
|
183
|
+
return document.activeElement;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return null;
|
|
187
|
+
})());
|
|
156
188
|
react.useEffect(() => {
|
|
157
189
|
if (open) {
|
|
190
|
+
var _rootEl$current;
|
|
191
|
+
|
|
158
192
|
// once opened, keep track of the element that triggered
|
|
159
193
|
// the Modal opening
|
|
160
|
-
previousFocusRef.current = document.activeElement
|
|
161
|
-
|
|
194
|
+
if (!previousFocusRef.current && document.activeElement instanceof HTMLElement && !((_rootEl$current = rootEl.current) != null && _rootEl$current.contains(document.activeElement))) {
|
|
195
|
+
previousFocusRef.current = document.activeElement;
|
|
196
|
+
}
|
|
162
197
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (
|
|
168
|
-
|
|
198
|
+
const rootElement = rootEl.current;
|
|
199
|
+
const previousElement = previousFocusRef.current;
|
|
200
|
+
return () => {
|
|
201
|
+
// on unmount, return focus to that element
|
|
202
|
+
if (previousElement && !(rootElement != null && rootElement.contains(document.activeElement))) {
|
|
203
|
+
previousElement.focus({
|
|
204
|
+
preventScroll: true
|
|
205
|
+
});
|
|
169
206
|
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}, [open]);
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}, [open, rootEl]);
|
|
173
210
|
}
|
|
174
211
|
|
|
175
212
|
function useFocusState(props = {}) {
|
|
@@ -196,21 +233,6 @@ function useFocusState(props = {}) {
|
|
|
196
233
|
};
|
|
197
234
|
}
|
|
198
235
|
|
|
199
|
-
// the lifetime of the app before it gets reloaded, I mean ... come on.
|
|
200
|
-
// I don't even know what xillion that is.
|
|
201
|
-
// /me googles
|
|
202
|
-
// Oh duh, quadrillion. Nine quadrillion components. I think we're okay.
|
|
203
|
-
|
|
204
|
-
let id = 0;
|
|
205
|
-
|
|
206
|
-
const genId = () => `${++id}`;
|
|
207
|
-
|
|
208
|
-
function useId(preferredId) {
|
|
209
|
-
const [id, setId] = react.useState(preferredId);
|
|
210
|
-
react.useEffect(() => setId(genId()), []);
|
|
211
|
-
return id;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
236
|
function useOnClickOutside(ref, handler, active = true) {
|
|
215
237
|
const listener = react.useCallback(event => {
|
|
216
238
|
// Do nothing if clicking ref's element or descendent elements
|
|
@@ -277,40 +299,33 @@ function useReducerMachine(chart, reducer, initialData) {
|
|
|
277
299
|
return [state, data, transition];
|
|
278
300
|
}
|
|
279
301
|
|
|
302
|
+
let scrollBodyCount = 0;
|
|
280
303
|
function useRemoveBodyScroll(open) {
|
|
281
304
|
react.useEffect(() => {
|
|
282
305
|
if (open) {
|
|
283
|
-
|
|
306
|
+
scrollBodyCount += 1; // calculate scrollbar width if mounting the first scroll lock
|
|
284
307
|
|
|
285
308
|
let scrollBarWidth = 0;
|
|
286
309
|
|
|
287
|
-
if (
|
|
310
|
+
if (scrollBodyCount === 1) {
|
|
288
311
|
scrollBarWidth = window.innerWidth - document.body.clientWidth;
|
|
289
312
|
}
|
|
290
313
|
|
|
291
314
|
document.body.style.overflow = 'hidden';
|
|
292
315
|
|
|
293
316
|
if (scrollBarWidth > 0) {
|
|
294
|
-
document.body.style.
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
window.__SCROLL_BODY_COUNT__ = locksCount;
|
|
299
|
-
}
|
|
317
|
+
document.body.style.marginRight = `${scrollBarWidth}px`;
|
|
318
|
+
}
|
|
300
319
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const locksCount = window.__SCROLL_BODY_COUNT__ - 1;
|
|
320
|
+
return () => {
|
|
321
|
+
scrollBodyCount -= 1;
|
|
304
322
|
|
|
305
|
-
if (
|
|
323
|
+
if (scrollBodyCount === 0) {
|
|
306
324
|
document.body.style.overflow = '';
|
|
307
|
-
document.body.style.
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
window.__SCROLL_BODY_COUNT__ = locksCount;
|
|
312
|
-
}
|
|
313
|
-
};
|
|
325
|
+
document.body.style.marginRight = '';
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
}
|
|
314
329
|
}, [open]);
|
|
315
330
|
}
|
|
316
331
|
|
|
@@ -648,7 +663,7 @@ const AccordionItem = /*#__PURE__*/react.forwardRef(function AccordionItem(props
|
|
|
648
663
|
} = props,
|
|
649
664
|
otherProps = _objectWithoutPropertiesLoose__default['default'](props, ["as", "expanded", "onChange"]);
|
|
650
665
|
|
|
651
|
-
const id = useId();
|
|
666
|
+
const id = react.useId();
|
|
652
667
|
const headerId = id ? `accordion-header-${id}` : undefined;
|
|
653
668
|
const bodyId = id ? `accordion-body-${id}` : undefined;
|
|
654
669
|
const contextValue = {
|
|
@@ -1272,8 +1287,8 @@ const Combobox = /*#__PURE__*/react.forwardRef(function Combobox(_ref, ref) {
|
|
|
1272
1287
|
lastActionType: INIT
|
|
1273
1288
|
};
|
|
1274
1289
|
const [state, data, transition] = useReducerMachine(stateChart, comboboxReducer, defaultData);
|
|
1275
|
-
listboxIdRef.current = useId();
|
|
1276
|
-
labelIdRef.current = useId();
|
|
1290
|
+
listboxIdRef.current = react.useId();
|
|
1291
|
+
labelIdRef.current = react.useId();
|
|
1277
1292
|
const context = react.useMemo(() => ({
|
|
1278
1293
|
data,
|
|
1279
1294
|
inputRef,
|
|
@@ -1667,17 +1682,6 @@ const ComboboxPopover = /*#__PURE__*/react.forwardRef(function ComboboxPopover(_
|
|
|
1667
1682
|
}));
|
|
1668
1683
|
});
|
|
1669
1684
|
|
|
1670
|
-
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(',');
|
|
1671
|
-
/* This is naive and will not consider tabIndex */
|
|
1672
|
-
|
|
1673
|
-
const getTabblableNodes = parentNode => {
|
|
1674
|
-
if (!parentNode) {
|
|
1675
|
-
return [];
|
|
1676
|
-
}
|
|
1677
|
-
|
|
1678
|
-
return Array.from(parentNode.querySelectorAll(tabblable));
|
|
1679
|
-
};
|
|
1680
|
-
|
|
1681
1685
|
const focusLockStack = [];
|
|
1682
1686
|
function useFocusLock(ref, opts) {
|
|
1683
1687
|
const {
|
|
@@ -1700,19 +1704,12 @@ function useFocusLock(ref, opts) {
|
|
|
1700
1704
|
}
|
|
1701
1705
|
|
|
1702
1706
|
if (event.target === lockEndRef.current) {
|
|
1703
|
-
rootEl
|
|
1707
|
+
focusOnChildNode(rootEl, 0);
|
|
1704
1708
|
} else if (event.target === lockStartRef.current) {
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
if (nodes.length > 0) {
|
|
1708
|
-
const nodeToFocus = nodes.length - 1;
|
|
1709
|
-
nodes[nodeToFocus].focus();
|
|
1710
|
-
} else {
|
|
1711
|
-
rootEl.focus();
|
|
1712
|
-
}
|
|
1709
|
+
focusOnChildNode(rootEl, -1);
|
|
1713
1710
|
} else if (document !== event.target && rootEl !== event.target && !rootEl.contains(event.target)) {
|
|
1714
1711
|
event.preventDefault();
|
|
1715
|
-
rootEl
|
|
1712
|
+
focusOnChildNode(rootEl, 0);
|
|
1716
1713
|
}
|
|
1717
1714
|
};
|
|
1718
1715
|
|
|
@@ -1797,7 +1794,7 @@ const Menu = /*#__PURE__*/react.forwardRef(function Menu(props, forwardedRef) {
|
|
|
1797
1794
|
const [open, onChange] = useControlledState(openProp, onChangeProp, defaultOpen, setState => (e, isOpen) => {
|
|
1798
1795
|
setState(isOpen);
|
|
1799
1796
|
});
|
|
1800
|
-
menuListIdRef.current = useId();
|
|
1797
|
+
menuListIdRef.current = react.useId();
|
|
1801
1798
|
const value = {
|
|
1802
1799
|
menuListIdRef,
|
|
1803
1800
|
openWithArrowKeyRef,
|
|
@@ -1830,7 +1827,8 @@ const MenuButton = /*#__PURE__*/react.forwardRef(function MenuButton(props, forw
|
|
|
1830
1827
|
buttonRef,
|
|
1831
1828
|
onChange
|
|
1832
1829
|
} = useMenuContext();
|
|
1833
|
-
const
|
|
1830
|
+
const buttonIdGenerated = react.useId();
|
|
1831
|
+
const buttonId = preferredId || buttonIdGenerated;
|
|
1834
1832
|
|
|
1835
1833
|
const handleKeyDown = e => {
|
|
1836
1834
|
if (disabled) {
|
|
@@ -1891,7 +1889,6 @@ const MenuItem = /*#__PURE__*/react.forwardRef(function MenuItem(props, forwarde
|
|
|
1891
1889
|
otherProps = _objectWithoutPropertiesLoose__default['default'](props, ["as", "disabled", "onSelect", "onClick", "onKeyDown"]);
|
|
1892
1890
|
|
|
1893
1891
|
const {
|
|
1894
|
-
menuListIdRef,
|
|
1895
1892
|
onChange,
|
|
1896
1893
|
buttonRef
|
|
1897
1894
|
} = useMenuContext();
|
|
@@ -1900,7 +1897,7 @@ const MenuItem = /*#__PURE__*/react.forwardRef(function MenuItem(props, forwarde
|
|
|
1900
1897
|
onNavigate
|
|
1901
1898
|
} = useMenuListContext();
|
|
1902
1899
|
const ref = react.useRef();
|
|
1903
|
-
const
|
|
1900
|
+
const itemId = react.useId();
|
|
1904
1901
|
const isActive = ref.current && ref.current === navigationItem;
|
|
1905
1902
|
const handleSelect = wrapEvent(onSelect, e => {
|
|
1906
1903
|
var _buttonRef$current;
|
|
@@ -1932,7 +1929,7 @@ const MenuItem = /*#__PURE__*/react.forwardRef(function MenuItem(props, forwarde
|
|
|
1932
1929
|
|
|
1933
1930
|
return /*#__PURE__*/jsxRuntime.jsx(Comp, _extends__default['default']({
|
|
1934
1931
|
ref: assignMultipleRefs(ref, forwardedRef),
|
|
1935
|
-
id: disabled ? undefined :
|
|
1932
|
+
id: disabled ? undefined : itemId,
|
|
1936
1933
|
"data-menu-item": "",
|
|
1937
1934
|
"data-highlighted": isActive ? '' : undefined,
|
|
1938
1935
|
role: "menuitem",
|
|
@@ -2192,6 +2189,11 @@ const Popper = /*#__PURE__*/react.memo( /*#__PURE__*/react.forwardRef(function P
|
|
|
2192
2189
|
popperEngineInstance.current = null;
|
|
2193
2190
|
};
|
|
2194
2191
|
}, [anchorEl, modifiers, placement, strategy, defaultModifiers]);
|
|
2192
|
+
useEnhancedEffect(() => {
|
|
2193
|
+
var _popperEngineInstance;
|
|
2194
|
+
|
|
2195
|
+
(_popperEngineInstance = popperEngineInstance.current) == null ? void 0 : _popperEngineInstance.forceUpdate();
|
|
2196
|
+
}, [props.hidden || props['aria-hidden']]);
|
|
2195
2197
|
const contextValue = {
|
|
2196
2198
|
arrowRef
|
|
2197
2199
|
};
|
|
@@ -2277,7 +2279,7 @@ const Modal = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
2277
2279
|
otherProps = _objectWithoutPropertiesLoose__default['default'](_ref, ["as", "children", "trapFocus", "style"]);
|
|
2278
2280
|
|
|
2279
2281
|
const modalRef = react.useRef(null);
|
|
2280
|
-
useFocusReturn(trapFocus);
|
|
2282
|
+
useFocusReturn(trapFocus, modalRef);
|
|
2281
2283
|
useRemoveBodyScroll(trapFocus);
|
|
2282
2284
|
useAutoFocus(trapFocus, modalRef);
|
|
2283
2285
|
return /*#__PURE__*/jsxRuntime.jsx(FocusLock, {
|
|
@@ -2289,7 +2291,7 @@ const Modal = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
2289
2291
|
role: "dialog",
|
|
2290
2292
|
"aria-modal": "true",
|
|
2291
2293
|
style: style,
|
|
2292
|
-
tabIndex:
|
|
2294
|
+
tabIndex: -1
|
|
2293
2295
|
}, otherProps, {
|
|
2294
2296
|
children: children
|
|
2295
2297
|
}))
|
|
@@ -2395,7 +2397,7 @@ const RadioGroup = /*#__PURE__*/react.forwardRef(function RadioGroup(props, forw
|
|
|
2395
2397
|
const [value, onChange] = useControlledState(valueProp, onChangeProp, defaultValue, setValue => (e, value) => {
|
|
2396
2398
|
setValue(value);
|
|
2397
2399
|
});
|
|
2398
|
-
const fallbackId = useId();
|
|
2400
|
+
const fallbackId = react.useId();
|
|
2399
2401
|
return /*#__PURE__*/jsxRuntime.jsx(RadioGroupProvider, {
|
|
2400
2402
|
value: {
|
|
2401
2403
|
value,
|
|
@@ -2686,7 +2688,7 @@ const TabList = /*#__PURE__*/react.forwardRef(function TabList(props, forwardedR
|
|
|
2686
2688
|
const ref = react.useRef();
|
|
2687
2689
|
const tabsScope = useScope(ref);
|
|
2688
2690
|
const tabsContext = useTabsContext();
|
|
2689
|
-
const id = useId();
|
|
2691
|
+
const id = react.useId();
|
|
2690
2692
|
|
|
2691
2693
|
if (!tabsContext) {
|
|
2692
2694
|
throw new Error('Missing <Tabs /> in the component tree');
|
|
@@ -2968,7 +2970,7 @@ function useTooltip(childProps, childRef, tooltipProps) {
|
|
|
2968
2970
|
} = childProps;
|
|
2969
2971
|
const anchorEl = react.useRef(null);
|
|
2970
2972
|
const [visible, setVisible] = react.useState(false);
|
|
2971
|
-
const id = useId(
|
|
2973
|
+
const id = react.useId();
|
|
2972
2974
|
react.useEffect(() => {
|
|
2973
2975
|
subscription.subscribe(() => {
|
|
2974
2976
|
setVisible((state.current.state === Visible || state.current.state === LeavingVisible) && state.current.id === id);
|
|
@@ -3132,7 +3134,6 @@ exports.useControlledState = useControlledState;
|
|
|
3132
3134
|
exports.useFocusReturn = useFocusReturn;
|
|
3133
3135
|
exports.useFocusState = useFocusState;
|
|
3134
3136
|
exports.useGestureHandlers = useGestureHandlers;
|
|
3135
|
-
exports.useId = useId;
|
|
3136
3137
|
exports.useMeasure = useMeasure;
|
|
3137
3138
|
exports.useOnClickOutside = useOnClickOutside;
|
|
3138
3139
|
exports.useOnKeyDown = useOnKeyDown;
|