@simplybusiness/mobius 4.3.0 → 4.3.2
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 +16 -0
- package/dist/cjs/components/Drawer/Drawer.js +37 -20
- package/dist/cjs/components/Drawer/Drawer.js.map +1 -1
- package/dist/cjs/components/Modal/Modal.js +31 -21
- package/dist/cjs/components/Modal/Modal.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/components/Drawer/Drawer.js +37 -20
- package/dist/esm/components/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/Modal/Modal.js +31 -21
- package/dist/esm/components/Modal/Modal.js.map +1 -1
- package/dist/types/components/Accordion/Accordion.d.ts +34 -0
- package/dist/types/components/Accordion/Accordion.stories.d.ts +10 -0
- package/dist/types/components/Accordion/Accordion.test.d.ts +1 -0
- package/dist/types/components/Accordion/index.d.ts +1 -0
- package/dist/types/components/Alert/Alert.d.ts +16 -0
- package/dist/types/components/Alert/Alert.stories.d.ts +7 -0
- package/dist/types/components/Alert/Alert.test.d.ts +1 -0
- package/dist/types/components/Alert/index.d.ts +1 -0
- package/dist/types/components/Box/Box.d.ts +15 -0
- package/dist/types/components/Box/Box.stories.d.ts +7 -0
- package/dist/types/components/Box/Box.test.d.ts +1 -0
- package/dist/types/components/Box/index.d.ts +1 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbItem.d.ts +15 -0
- package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts +12 -0
- package/dist/types/components/Breadcrumbs/Breadcrumbs.stories.d.ts +7 -0
- package/dist/types/components/Breadcrumbs/Breadcrumbs.test.d.ts +1 -0
- package/dist/types/components/Breadcrumbs/index.d.ts +2 -0
- package/dist/types/components/Button/Button.d.ts +31 -0
- package/dist/types/components/Button/Button.stories.d.ts +19 -0
- package/dist/types/components/Button/Button.test.d.ts +1 -0
- package/dist/types/components/Button/Loading.d.ts +2 -0
- package/dist/types/components/Button/index.d.ts +1 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +3 -0
- package/dist/types/components/Checkbox/Checkbox.stories.d.ts +10 -0
- package/dist/types/components/Checkbox/Checkbox.test.d.ts +1 -0
- package/dist/types/components/Checkbox/CheckboxGroup.d.ts +3 -0
- package/dist/types/components/Checkbox/CheckboxGroup.stories.d.ts +9 -0
- package/dist/types/components/Checkbox/CheckboxGroup.test.d.ts +1 -0
- package/dist/types/components/Checkbox/index.d.ts +3 -0
- package/dist/types/components/Checkbox/types.d.ts +56 -0
- package/dist/types/components/Container/Container.d.ts +15 -0
- package/dist/types/components/Container/Container.stories.d.ts +6 -0
- package/dist/types/components/Container/Container.test.d.ts +1 -0
- package/dist/types/components/Container/index.d.ts +1 -0
- package/dist/types/components/Divider/Divider.d.ts +11 -0
- package/dist/types/components/Divider/Divider.stories.d.ts +6 -0
- package/dist/types/components/Divider/Divider.test.d.ts +1 -0
- package/dist/types/components/Divider/index.d.ts +1 -0
- package/dist/types/components/Drawer/Content.d.ts +10 -0
- package/dist/types/components/Drawer/Drawer.d.ts +6 -0
- package/dist/types/components/Drawer/Drawer.stories.d.ts +8 -0
- package/dist/types/components/Drawer/Drawer.test.d.ts +1 -0
- package/dist/types/components/Drawer/Header.d.ts +10 -0
- package/dist/types/components/Drawer/index.d.ts +9 -0
- package/dist/types/components/Drawer/types.d.ts +17 -0
- package/dist/types/components/DropdownMenu/DropdownMenu.d.ts +15 -0
- package/dist/types/components/DropdownMenu/DropdownMenu.stories.d.ts +7 -0
- package/dist/types/components/DropdownMenu/DropdownMenu.test.d.ts +1 -0
- package/dist/types/components/DropdownMenu/Item.d.ts +15 -0
- package/dist/types/components/DropdownMenu/index.d.ts +10 -0
- package/dist/types/components/ErrorMessage/ErrorMessage.d.ts +9 -0
- package/dist/types/components/ErrorMessage/ErrorMessage.stories.d.ts +7 -0
- package/dist/types/components/ErrorMessage/ErrorMessage.test.d.ts +1 -0
- package/dist/types/components/ErrorMessage/index.d.ts +1 -0
- package/dist/types/components/Fieldset/Fieldset.d.ts +17 -0
- package/dist/types/components/Fieldset/Fieldset.stories.d.ts +7 -0
- package/dist/types/components/Fieldset/Fieldset.test.d.ts +1 -0
- package/dist/types/components/Fieldset/index.d.ts +1 -0
- package/dist/types/components/Flex/Flex.d.ts +4 -0
- package/dist/types/components/Flex/Flex.stories.d.ts +7 -0
- package/dist/types/components/Flex/Flex.test.d.ts +1 -0
- package/dist/types/components/Flex/index.d.ts +2 -0
- package/dist/types/components/Flex/propUtils.d.ts +8 -0
- package/dist/types/components/Flex/propUtils.test.d.ts +1 -0
- package/dist/types/components/Flex/types.d.ts +33 -0
- package/dist/types/components/Grid/Grid.d.ts +28 -0
- package/dist/types/components/Grid/Grid.stories.d.ts +11 -0
- package/dist/types/components/Grid/Grid.test.d.ts +1 -0
- package/dist/types/components/Grid/Item.d.ts +30 -0
- package/dist/types/components/Grid/index.d.ts +9 -0
- package/dist/types/components/Icon/Icon.d.ts +2 -0
- package/dist/types/components/Icon/Icon.stories.d.ts +7 -0
- package/dist/types/components/Icon/Icon.test.d.ts +1 -0
- package/dist/types/components/Icon/IconStyle.d.ts +1 -0
- package/dist/types/components/Icon/index.d.ts +2 -0
- package/dist/types/components/Icon/types.d.ts +13 -0
- package/dist/types/components/Image/Image.d.ts +17 -0
- package/dist/types/components/Image/Image.stories.d.ts +6 -0
- package/dist/types/components/Image/Image.test.d.ts +1 -0
- package/dist/types/components/Image/index.d.ts +1 -0
- package/dist/types/components/Label/Label.d.ts +13 -0
- package/dist/types/components/Label/Label.stories.d.ts +6 -0
- package/dist/types/components/Label/Label.test.d.ts +1 -0
- package/dist/types/components/Label/index.d.ts +1 -0
- package/dist/types/components/Link/Link.d.ts +24 -0
- package/dist/types/components/Link/Link.stories.d.ts +7 -0
- package/dist/types/components/Link/Link.test.d.ts +1 -0
- package/dist/types/components/Link/index.d.ts +1 -0
- package/dist/types/components/LinkButton/LinkButton.d.ts +15 -0
- package/dist/types/components/LinkButton/LinkButton.stories.d.ts +6 -0
- package/dist/types/components/LinkButton/LinkButton.test.d.ts +1 -0
- package/dist/types/components/LinkButton/index.d.ts +1 -0
- package/dist/types/components/List/List.d.ts +17 -0
- package/dist/types/components/List/List.stories.d.ts +10 -0
- package/dist/types/components/List/List.test.d.ts +1 -0
- package/dist/types/components/List/ListItem.d.ts +14 -0
- package/dist/types/components/List/index.d.ts +2 -0
- package/dist/types/components/LoadingIndicator/LoadingIndicator.d.ts +8 -0
- package/dist/types/components/LoadingIndicator/LoadingIndicator.stories.d.ts +9 -0
- package/dist/types/components/LoadingIndicator/LoadingIndicator.test.d.ts +1 -0
- package/dist/types/components/LoadingIndicator/index.d.ts +1 -0
- package/dist/types/components/Logo/Logo.d.ts +14 -0
- package/dist/types/components/Logo/Logo.stories.d.ts +6 -0
- package/dist/types/components/Logo/Logo.test.d.ts +1 -0
- package/dist/types/components/Logo/index.d.ts +1 -0
- package/dist/types/components/Modal/Content.d.ts +10 -0
- package/dist/types/components/Modal/Header.d.ts +10 -0
- package/dist/types/components/Modal/Modal.d.ts +6 -0
- package/dist/types/components/Modal/Modal.stories.d.ts +10 -0
- package/dist/types/components/Modal/Modal.test.d.ts +1 -0
- package/dist/types/components/Modal/index.d.ts +9 -0
- package/dist/types/components/Modal/types.d.ts +31 -0
- package/dist/types/components/NumberField/NumberField.d.ts +35 -0
- package/dist/types/components/NumberField/NumberField.stories.d.ts +10 -0
- package/dist/types/components/NumberField/NumberField.test.d.ts +1 -0
- package/dist/types/components/NumberField/index.d.ts +1 -0
- package/dist/types/components/Option/Option.d.ts +10 -0
- package/dist/types/components/Option/index.d.ts +1 -0
- package/dist/types/components/PasswordField/PasswordField.d.ts +5 -0
- package/dist/types/components/PasswordField/PasswordField.stories.d.ts +6 -0
- package/dist/types/components/PasswordField/PasswordField.test.d.ts +1 -0
- package/dist/types/components/PasswordField/ShowHideButton.d.ts +5 -0
- package/dist/types/components/PasswordField/index.d.ts +1 -0
- package/dist/types/components/Popover/Popover.d.ts +15 -0
- package/dist/types/components/Popover/Popover.stories.d.ts +7 -0
- package/dist/types/components/Popover/Popover.test.d.ts +1 -0
- package/dist/types/components/Popover/index.d.ts +1 -0
- package/dist/types/components/Progress/Progress.d.ts +20 -0
- package/dist/types/components/Progress/Progress.stories.d.ts +9 -0
- package/dist/types/components/Progress/Progress.test.d.ts +1 -0
- package/dist/types/components/Progress/index.d.ts +1 -0
- package/dist/types/components/Radio/Radio.d.ts +53 -0
- package/dist/types/components/Radio/Radio.stories.d.ts +12 -0
- package/dist/types/components/Radio/Radio.test.d.ts +1 -0
- package/dist/types/components/Radio/RadioButton.d.ts +3 -0
- package/dist/types/components/Radio/RadioButton.stories.d.ts +11 -0
- package/dist/types/components/Radio/RadioButton.test.d.ts +1 -0
- package/dist/types/components/Radio/RadioGroup.d.ts +30 -0
- package/dist/types/components/Radio/index.d.ts +3 -0
- package/dist/types/components/SVG/SVG.d.ts +11 -0
- package/dist/types/components/SVG/SVG.stories.d.ts +6 -0
- package/dist/types/components/SVG/SVG.test.d.ts +1 -0
- package/dist/types/components/SVG/index.d.ts +1 -0
- package/dist/types/components/Segment/Segment.d.ts +16 -0
- package/dist/types/components/Segment/Segment.stories.d.ts +19 -0
- package/dist/types/components/Segment/SegmentGroup.d.ts +13 -0
- package/dist/types/components/Segment/index.d.ts +2 -0
- package/dist/types/components/Select/Select.d.ts +20 -0
- package/dist/types/components/Select/Select.stories.d.ts +10 -0
- package/dist/types/components/Select/Select.test.d.ts +1 -0
- package/dist/types/components/Select/index.d.ts +1 -0
- package/dist/types/components/Slider/Slider.d.ts +19 -0
- package/dist/types/components/Slider/Slider.stories.d.ts +10 -0
- package/dist/types/components/Slider/Slider.test.d.ts +1 -0
- package/dist/types/components/Slider/helpers.d.ts +5 -0
- package/dist/types/components/Slider/helpers.test.d.ts +1 -0
- package/dist/types/components/Slider/index.d.ts +1 -0
- package/dist/types/components/Table/Body.d.ts +9 -0
- package/dist/types/components/Table/Cell.d.ts +11 -0
- package/dist/types/components/Table/Foot.d.ts +9 -0
- package/dist/types/components/Table/Head.d.ts +9 -0
- package/dist/types/components/Table/HeaderCell.d.ts +9 -0
- package/dist/types/components/Table/Row.d.ts +9 -0
- package/dist/types/components/Table/Table.d.ts +11 -0
- package/dist/types/components/Table/Table.stories.d.ts +7 -0
- package/dist/types/components/Table/Table.test.d.ts +1 -0
- package/dist/types/components/Table/index.d.ts +20 -0
- package/dist/types/components/Text/Text.d.ts +21 -0
- package/dist/types/components/Text/Text.stories.d.ts +10 -0
- package/dist/types/components/Text/Text.test.d.ts +1 -0
- package/dist/types/components/Text/index.d.ts +1 -0
- package/dist/types/components/TextArea/TextArea.d.ts +13 -0
- package/dist/types/components/TextArea/TextArea.stories.d.ts +11 -0
- package/dist/types/components/TextArea/TextArea.test.d.ts +1 -0
- package/dist/types/components/TextArea/index.d.ts +1 -0
- package/dist/types/components/TextAreaInput/TextAreaInput.d.ts +14 -0
- package/dist/types/components/TextAreaInput/TextAreaInput.test.d.ts +1 -0
- package/dist/types/components/TextAreaInput/index.d.ts +1 -0
- package/dist/types/components/TextField/TextField.d.ts +19 -0
- package/dist/types/components/TextField/TextField.stories.d.ts +20 -0
- package/dist/types/components/TextField/TextField.test.d.ts +1 -0
- package/dist/types/components/TextField/adornmentWithClassName.d.ts +2 -0
- package/dist/types/components/TextField/index.d.ts +1 -0
- package/dist/types/components/Title/Title.d.ts +15 -0
- package/dist/types/components/Title/Title.stories.d.ts +6 -0
- package/dist/types/components/Title/Title.test.d.ts +1 -0
- package/dist/types/components/Title/index.d.ts +1 -0
- package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts +11 -0
- package/dist/types/components/VisuallyHidden/VisuallyHidden.stories.d.ts +6 -0
- package/dist/types/components/VisuallyHidden/index.d.ts +1 -0
- package/dist/types/components/index.d.ts +40 -0
- package/dist/types/hooks/index.d.ts +7 -0
- package/dist/types/hooks/useBodyScrollLock/index.d.ts +1 -0
- package/dist/types/hooks/useBodyScrollLock/useBodyScrollLock.d.ts +3 -0
- package/dist/types/hooks/useBodyScrollLock/useBodyScrollLock.test.d.ts +1 -0
- package/dist/types/hooks/useBreakpoint/index.d.ts +1 -0
- package/dist/types/hooks/useBreakpoint/useBreakpoint.d.ts +14 -0
- package/dist/types/hooks/useBreakpoint/useBreakpoint.stories.d.ts +7 -0
- package/dist/types/hooks/useBreakpoint/useBreakpoint.test.d.ts +1 -0
- package/dist/types/hooks/useButton/index.d.ts +1 -0
- package/dist/types/hooks/useButton/useButton.d.ts +35 -0
- package/dist/types/hooks/useButton/useButton.test.d.ts +1 -0
- package/dist/types/hooks/useLabel/index.d.ts +1 -0
- package/dist/types/hooks/useLabel/useLabel.d.ts +27 -0
- package/dist/types/hooks/useLabel/useLabel.test.d.ts +1 -0
- package/dist/types/hooks/useOnClickOutside/index.d.ts +1 -0
- package/dist/types/hooks/useOnClickOutside/useOnClickOutside.d.ts +2 -0
- package/dist/types/hooks/useTextField/index.d.ts +2 -0
- package/dist/types/hooks/useTextField/types.d.ts +26 -0
- package/dist/types/hooks/useTextField/useTextField.d.ts +2 -0
- package/dist/types/hooks/useTextField/useTextField.test.d.ts +1 -0
- package/dist/types/hooks/useWindowEvent/index.d.ts +1 -0
- package/dist/types/hooks/useWindowEvent/useWindowEvent.d.ts +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/types/components.d.ts +2 -0
- package/dist/types/types/dom.d.ts +3 -0
- package/dist/types/types/events.d.ts +45 -0
- package/dist/types/types/icon.d.ts +9 -0
- package/dist/types/types/index.d.ts +5 -0
- package/dist/types/types/size.d.ts +1 -0
- package/dist/types/utils/StoryContainer.d.ts +1 -0
- package/dist/types/utils/changeCSS.d.ts +1 -0
- package/dist/types/utils/excludeControls.d.ts +1 -0
- package/dist/types/utils/excludeControls.test.d.ts +1 -0
- package/dist/types/utils/index.d.ts +7 -0
- package/dist/types/utils/jestHTMLDialogPolyfill.d.ts +1 -0
- package/dist/types/utils/jestMockMatchMedia.d.ts +1 -0
- package/dist/types/utils/mergeRefs.d.ts +2 -0
- package/dist/types/utils/polyfill-tests.d.ts +1 -0
- package/dist/types/utils/sizeClasses.d.ts +16 -0
- package/dist/types/utils/sizeClasses.test.d.ts +1 -0
- package/dist/types/utils/spaceDelimitedList.d.ts +1 -0
- package/dist/types/utils/spaceDelimitedList.test.d.ts +1 -0
- package/package.json +9 -11
- package/src/components/Drawer/Drawer.tsx +40 -20
- package/src/components/Modal/Modal.mdx +0 -1
- package/src/components/Modal/Modal.stories.tsx +1 -1
- package/src/components/Modal/Modal.test.tsx +0 -13
- package/src/components/Modal/Modal.tsx +31 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.3.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 047db6d: Fix intermittent iOS <=15.2 issue when dialog-polyfill loads
|
|
8
|
+
- 424ba56: Fix exported types
|
|
9
|
+
- Updated dependencies [424ba56]
|
|
10
|
+
- @simplybusiness/icons@4.2.8
|
|
11
|
+
|
|
12
|
+
## 4.3.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- ee6a685: Fix an issue where `<Drawer>` positions incorrectly on iPhone/iPad rotation. This also fixes `<Modal>` positioning in iOS <= 15.2
|
|
17
|
+
- 7af10a5: Fix runtime errors for `<Modal>` and `<Drawer>` when using dialog-polyfill on iOS <= 15.2
|
|
18
|
+
|
|
3
19
|
## 4.3.0
|
|
4
20
|
|
|
5
21
|
### Minor Changes
|
|
@@ -62,11 +62,12 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
62
62
|
}
|
|
63
63
|
return newObj;
|
|
64
64
|
}
|
|
65
|
+
const TRANSITION_CLASS_NAME = "--transition";
|
|
65
66
|
const Drawer = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
66
67
|
const { isOpen, className, closeLabel, direction, announce = "Drawer opened on screen", onOpen, onClose, children } = props;
|
|
67
68
|
const hasOpened = (0, _react.useRef)(false);
|
|
68
69
|
const modalRef = (0, _react.useRef)(null);
|
|
69
|
-
const
|
|
70
|
+
const hasDialogSupport = (0, _polyfilltests.supportsDialog)();
|
|
70
71
|
// Fire onOpen once
|
|
71
72
|
if (onOpen && !hasOpened.current) {
|
|
72
73
|
onOpen();
|
|
@@ -75,43 +76,58 @@ const Drawer = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
75
76
|
(0, _useBodyScrollLock.useBodyScrollLock)({
|
|
76
77
|
enabled: isOpen
|
|
77
78
|
});
|
|
78
|
-
// Add close handler, to enable closing
|
|
79
|
+
// Add close handler, to enable closing transitions
|
|
79
80
|
const handleClose = (0, _react.useCallback)((event)=>{
|
|
80
81
|
if (event) {
|
|
81
82
|
event.preventDefault();
|
|
82
83
|
event.stopPropagation();
|
|
83
84
|
}
|
|
84
85
|
const doClose = ()=>{
|
|
85
|
-
|
|
86
|
+
var _modalRef_current;
|
|
87
|
+
(_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.close();
|
|
86
88
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
87
89
|
};
|
|
88
|
-
// Delay close to allow exit
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
// Delay close to allow backdrop exit transition
|
|
91
|
+
if (hasDialogSupport) {
|
|
92
|
+
var _modalRef_current, _modalRef_current1;
|
|
93
|
+
(_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.classList.remove(TRANSITION_CLASS_NAME);
|
|
94
|
+
(_modalRef_current1 = modalRef.current) === null || _modalRef_current1 === void 0 ? void 0 : _modalRef_current1.addEventListener("transitionend", ()=>{
|
|
95
|
+
doClose();
|
|
96
|
+
}, {
|
|
97
|
+
once: true
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
92
100
|
doClose();
|
|
93
|
-
}
|
|
94
|
-
once: true
|
|
95
|
-
});
|
|
101
|
+
}
|
|
96
102
|
}, [
|
|
97
103
|
onClose,
|
|
98
|
-
|
|
104
|
+
hasDialogSupport
|
|
99
105
|
]);
|
|
100
|
-
const modalClasses = (0, _dedupe.default)("mobius", "mobius/Drawer", `--${direction}`, className
|
|
106
|
+
const modalClasses = (0, _dedupe.default)("mobius", "mobius/Drawer", `--${direction}`, className, {
|
|
107
|
+
"--should-transition": hasDialogSupport
|
|
108
|
+
});
|
|
101
109
|
// Add polyfill for HTML Dialog in old browsers
|
|
102
110
|
(0, _react.useEffect)(()=>{
|
|
103
111
|
async function toggleModal() {
|
|
104
|
-
var _modalRef_current;
|
|
105
|
-
if (!
|
|
112
|
+
var _modalRef_current, _modalRef_current1;
|
|
113
|
+
if (!hasDialogSupport && typeof window !== "undefined" && modalRef.current !== null) {
|
|
106
114
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
107
115
|
const { default: dialogPolyfill } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("dialog-polyfill")));
|
|
108
|
-
|
|
116
|
+
try {
|
|
117
|
+
dialogPolyfill.registerDialog(modalRef.current);
|
|
118
|
+
} catch (error) {
|
|
119
|
+
// In iOS 15 <= 15.2 this intermittently fails with
|
|
120
|
+
// TypeError: null is not an object (evaluating 'element.showModal')
|
|
121
|
+
// Checking showModal presence through hasOwnProperty is falsy natively, truthy with polyfill 🤷🏼♂️
|
|
122
|
+
console.error("Failed to load dialog-polyfill", error);
|
|
123
|
+
}
|
|
109
124
|
}
|
|
110
|
-
if (isOpen) {
|
|
111
|
-
var
|
|
112
|
-
(
|
|
125
|
+
if (isOpen && !((_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.open)) {
|
|
126
|
+
var _modalRef_current2, _modalRef_current3;
|
|
127
|
+
(_modalRef_current2 = modalRef.current) === null || _modalRef_current2 === void 0 ? void 0 : _modalRef_current2.showModal();
|
|
128
|
+
(_modalRef_current3 = modalRef.current) === null || _modalRef_current3 === void 0 ? void 0 : _modalRef_current3.classList.add(TRANSITION_CLASS_NAME);
|
|
113
129
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
114
|
-
} else if ((
|
|
130
|
+
} else if (!isOpen && ((_modalRef_current1 = modalRef.current) === null || _modalRef_current1 === void 0 ? void 0 : _modalRef_current1.open)) {
|
|
115
131
|
handleClose();
|
|
116
132
|
}
|
|
117
133
|
}
|
|
@@ -119,7 +135,8 @@ const Drawer = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
119
135
|
}, [
|
|
120
136
|
isOpen,
|
|
121
137
|
onOpen,
|
|
122
|
-
handleClose
|
|
138
|
+
handleClose,
|
|
139
|
+
hasDialogSupport
|
|
123
140
|
]);
|
|
124
141
|
return /*#__PURE__*/ (0, _jsxruntime.jsxs)("dialog", {
|
|
125
142
|
ref: (0, _utils.mergeRefs)([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport {\n Children,\n Ref,\n SyntheticEvent,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { useBodyScrollLock } from \"../../hooks/useBodyScrollLock\";\nimport { supportsDialog } from \"../../utils/polyfill-tests\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\nimport { DrawerProps } from \"./types\";\nimport { mergeRefs } from \"../../utils\";\n\nexport type DialogElementType = HTMLDialogElement;\nexport type DialogRef = Ref<DialogElementType>;\n\nconst Drawer = forwardRef((props: DrawerProps, ref: DialogRef) => {\n const {\n isOpen,\n className,\n closeLabel,\n direction,\n announce = \"Drawer opened on screen\",\n onOpen,\n onClose,\n children,\n } = props;\n const hasOpened = useRef<boolean>(false);\n const modalRef = useRef<HTMLDialogElement>(null);\n const
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport {\n Children,\n Ref,\n SyntheticEvent,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { useBodyScrollLock } from \"../../hooks/useBodyScrollLock\";\nimport { supportsDialog } from \"../../utils/polyfill-tests\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\nimport { DrawerProps } from \"./types\";\nimport { mergeRefs } from \"../../utils\";\n\nexport type DialogElementType = HTMLDialogElement;\nexport type DialogRef = Ref<DialogElementType>;\n\nconst TRANSITION_CLASS_NAME = \"--transition\";\n\nconst Drawer = forwardRef((props: DrawerProps, ref: DialogRef) => {\n const {\n isOpen,\n className,\n closeLabel,\n direction,\n announce = \"Drawer opened on screen\",\n onOpen,\n onClose,\n children,\n } = props;\n const hasOpened = useRef<boolean>(false);\n const modalRef = useRef<HTMLDialogElement | null>(null);\n const hasDialogSupport = supportsDialog();\n\n // Fire onOpen once\n if (onOpen && !hasOpened.current) {\n onOpen();\n hasOpened.current = true;\n }\n\n useBodyScrollLock({ enabled: isOpen });\n\n // Add close handler, to enable closing transitions\n const handleClose = useCallback(\n (event?: SyntheticEvent<HTMLElement, Event>) => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const doClose = () => {\n modalRef.current?.close();\n onClose?.();\n };\n\n // Delay close to allow backdrop exit transition\n if (hasDialogSupport) {\n modalRef.current?.classList.remove(TRANSITION_CLASS_NAME);\n modalRef.current?.addEventListener(\n \"transitionend\",\n () => {\n doClose();\n },\n { once: true },\n );\n } else {\n doClose();\n }\n },\n [onClose, hasDialogSupport],\n );\n\n const modalClasses = classNames(\n \"mobius\",\n \"mobius/Drawer\",\n `--${direction}`,\n className,\n {\n \"--should-transition\": hasDialogSupport,\n },\n );\n\n // Add polyfill for HTML Dialog in old browsers\n useEffect(() => {\n async function toggleModal() {\n if (\n !hasDialogSupport &&\n typeof window !== \"undefined\" &&\n modalRef.current !== null\n ) {\n // eslint-disable-next-line import/no-extraneous-dependencies\n const { default: dialogPolyfill } = await import(\"dialog-polyfill\");\n try {\n dialogPolyfill.registerDialog(modalRef.current);\n } catch (error) {\n // In iOS 15 <= 15.2 this intermittently fails with\n // TypeError: null is not an object (evaluating 'element.showModal')\n // Checking showModal presence through hasOwnProperty is falsy natively, truthy with polyfill 🤷🏼♂️\n console.error(\"Failed to load dialog-polyfill\", error);\n }\n }\n\n if (isOpen && !modalRef.current?.open) {\n modalRef.current?.showModal();\n modalRef.current?.classList.add(TRANSITION_CLASS_NAME);\n onOpen?.();\n } else if (!isOpen && modalRef.current?.open) {\n handleClose();\n }\n }\n\n toggleModal();\n }, [isOpen, onOpen, handleClose, hasDialogSupport]);\n\n return (\n <dialog\n ref={mergeRefs([modalRef, ref])}\n onCancel={handleClose}\n className={modalClasses}\n aria-describedby=\"screen-reader-announce\"\n >\n <VisuallyHidden>\n <div id=\"screen-reader-announce\">{announce}</div>\n </VisuallyHidden>\n {Children.map(children, child => {\n if (isValidElement(child)) {\n return cloneElement(child, {\n onClose: handleClose,\n closeLabel,\n } as any);\n }\n\n return child;\n })}\n </dialog>\n );\n});\n\nDrawer.displayName = \"Drawer\";\nexport { Drawer };\n"],"names":["Drawer","TRANSITION_CLASS_NAME","forwardRef","props","ref","isOpen","className","closeLabel","direction","announce","onOpen","onClose","children","hasOpened","useRef","modalRef","hasDialogSupport","supportsDialog","current","useBodyScrollLock","enabled","handleClose","useCallback","event","preventDefault","stopPropagation","doClose","close","classList","remove","addEventListener","once","modalClasses","classNames","useEffect","toggleModal","window","default","dialogPolyfill","registerDialog","error","console","open","showModal","add","dialog","mergeRefs","onCancel","aria-describedby","VisuallyHidden","div","id","Children","map","child","isValidElement","cloneElement","displayName"],"mappings":"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"}
|
|
@@ -61,8 +61,8 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
61
61
|
}
|
|
62
62
|
return newObj;
|
|
63
63
|
}
|
|
64
|
+
const TRANSITION_CLASS_NAME = "--transition";
|
|
64
65
|
const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
65
|
-
var _window;
|
|
66
66
|
const { isOpen, onClose, onOpen, children, className, closeLabel, isFullScreen, animation, // Deprecated props below
|
|
67
67
|
size, appElement, preventCloseOnEsc, shouldFocusAfterRender, parentSelector } = props;
|
|
68
68
|
const hasWarnedAboutMissingLabels = (0, _react.useRef)(false);
|
|
@@ -75,8 +75,7 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
75
75
|
}
|
|
76
76
|
const hasOpened = (0, _react.useRef)(false);
|
|
77
77
|
const modalRef = (0, _react.useRef)(null);
|
|
78
|
-
const
|
|
79
|
-
const noPreference = (_window = window) === null || _window === void 0 ? void 0 : _window.matchMedia("(prefers-reduced-motion: no-preference)");
|
|
78
|
+
const hasDialogSupport = (0, _polyfilltests.supportsDialog)();
|
|
80
79
|
// Fire onOpen once
|
|
81
80
|
if (onOpen && !hasOpened.current) {
|
|
82
81
|
onOpen();
|
|
@@ -92,13 +91,15 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
92
91
|
event.stopPropagation();
|
|
93
92
|
}
|
|
94
93
|
const doClose = ()=>{
|
|
95
|
-
|
|
94
|
+
var _modalRef_current;
|
|
95
|
+
(_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.close();
|
|
96
96
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
97
97
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
// Delay close to allow backdrop exit transition
|
|
99
|
+
if (hasDialogSupport && animation) {
|
|
100
|
+
var _modalRef_current, _modalRef_current1;
|
|
101
|
+
(_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.classList.remove(TRANSITION_CLASS_NAME);
|
|
102
|
+
(_modalRef_current1 = modalRef.current) === null || _modalRef_current1 === void 0 ? void 0 : _modalRef_current1.addEventListener("transitionend", ()=>{
|
|
102
103
|
doClose();
|
|
103
104
|
}, {
|
|
104
105
|
once: true
|
|
@@ -107,31 +108,39 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
107
108
|
doClose();
|
|
108
109
|
}
|
|
109
110
|
}, [
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
onClose,
|
|
112
|
+
hasDialogSupport,
|
|
113
|
+
animation
|
|
113
114
|
]);
|
|
114
115
|
const modalClasses = (0, _dedupe.default)("mobius", "mobius/Modal", {
|
|
115
|
-
|
|
116
|
+
"--no-dialog-support": !hasDialogSupport,
|
|
117
|
+
"--should-transition": hasDialogSupport && animation,
|
|
116
118
|
"--slide-up": animation === "slideUp",
|
|
117
119
|
"--fade": animation === "fade",
|
|
118
|
-
"--has-reduced-motion": !noPreference.matches,
|
|
119
120
|
"--is-fullscreen": isFullScreen
|
|
120
121
|
}, className);
|
|
121
122
|
// Add polyfill for HTML Dialog in old browsers
|
|
122
123
|
(0, _react.useEffect)(()=>{
|
|
123
124
|
async function toggleModal() {
|
|
124
|
-
var _modalRef_current;
|
|
125
|
-
if (!
|
|
125
|
+
var _modalRef_current, _modalRef_current1;
|
|
126
|
+
if (!hasDialogSupport && typeof window !== "undefined" && modalRef.current !== null) {
|
|
126
127
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
127
128
|
const { default: dialogPolyfill } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("dialog-polyfill")));
|
|
128
|
-
|
|
129
|
+
try {
|
|
130
|
+
dialogPolyfill.registerDialog(modalRef.current);
|
|
131
|
+
} catch (error) {
|
|
132
|
+
// In iOS 15 <= 15.2 this intermittently fails with
|
|
133
|
+
// TypeError: null is not an object (evaluating 'element.showModal')
|
|
134
|
+
// Checking showModal presence through hasOwnProperty is falsy natively, truthy with polyfill 🤷🏼♂️
|
|
135
|
+
console.error("Failed to load dialog-polyfill", error);
|
|
136
|
+
}
|
|
129
137
|
}
|
|
130
|
-
if (isOpen) {
|
|
131
|
-
var
|
|
132
|
-
(
|
|
138
|
+
if (isOpen && !((_modalRef_current = modalRef.current) === null || _modalRef_current === void 0 ? void 0 : _modalRef_current.open)) {
|
|
139
|
+
var _modalRef_current2, _modalRef_current3;
|
|
140
|
+
(_modalRef_current2 = modalRef.current) === null || _modalRef_current2 === void 0 ? void 0 : _modalRef_current2.showModal();
|
|
141
|
+
(_modalRef_current3 = modalRef.current) === null || _modalRef_current3 === void 0 ? void 0 : _modalRef_current3.classList.add(TRANSITION_CLASS_NAME);
|
|
133
142
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
134
|
-
} else if ((
|
|
143
|
+
} else if (!isOpen && ((_modalRef_current1 = modalRef.current) === null || _modalRef_current1 === void 0 ? void 0 : _modalRef_current1.open)) {
|
|
135
144
|
handleClose();
|
|
136
145
|
}
|
|
137
146
|
}
|
|
@@ -139,7 +148,8 @@ const Modal = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
139
148
|
}, [
|
|
140
149
|
isOpen,
|
|
141
150
|
onOpen,
|
|
142
|
-
handleClose
|
|
151
|
+
handleClose,
|
|
152
|
+
hasDialogSupport
|
|
143
153
|
]);
|
|
144
154
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)("dialog", {
|
|
145
155
|
ref: (0, _utils.mergeRefs)([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport {\n Children,\n Ref,\n SyntheticEvent,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { useBodyScrollLock } from \"../../hooks/useBodyScrollLock\";\nimport { supportsDialog } from \"../../utils/polyfill-tests\";\nimport { ModalProps } from \"./types\";\nimport { mergeRefs } from \"../../utils\";\n\nexport type ModalElementType = HTMLDialogElement;\nexport type ModalRef = Ref<ModalElementType>;\n\nconst Modal = forwardRef((props: ModalProps, ref: ModalRef) => {\n const {\n isOpen,\n onClose,\n onOpen,\n children,\n className,\n closeLabel,\n isFullScreen,\n animation,\n // Deprecated props below\n size,\n appElement,\n preventCloseOnEsc,\n shouldFocusAfterRender,\n parentSelector,\n } = props;\n const hasWarnedAboutMissingLabels = useRef<boolean>(false);\n // Handle deprecated props\n if (!hasWarnedAboutMissingLabels.current) {\n if (\n size ||\n appElement ||\n preventCloseOnEsc ||\n shouldFocusAfterRender ||\n parentSelector\n ) {\n console.warn(\n `Deprecation warning: Mobius Modal no longer supports the following props: size, appElement, preventCloseOnEsc, shouldFocusAfterRender and parentSelector.`,\n );\n hasWarnedAboutMissingLabels.current = true;\n }\n }\n\n const hasOpened = useRef<boolean>(false);\n const modalRef = useRef<HTMLDialogElement>(null);\n const
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport {\n Children,\n Ref,\n SyntheticEvent,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { useBodyScrollLock } from \"../../hooks/useBodyScrollLock\";\nimport { supportsDialog } from \"../../utils/polyfill-tests\";\nimport { ModalProps } from \"./types\";\nimport { mergeRefs } from \"../../utils\";\n\nexport type ModalElementType = HTMLDialogElement;\nexport type ModalRef = Ref<ModalElementType>;\n\nconst TRANSITION_CLASS_NAME = \"--transition\";\n\nconst Modal = forwardRef((props: ModalProps, ref: ModalRef) => {\n const {\n isOpen,\n onClose,\n onOpen,\n children,\n className,\n closeLabel,\n isFullScreen,\n animation,\n // Deprecated props below\n size,\n appElement,\n preventCloseOnEsc,\n shouldFocusAfterRender,\n parentSelector,\n } = props;\n const hasWarnedAboutMissingLabels = useRef<boolean>(false);\n // Handle deprecated props\n if (!hasWarnedAboutMissingLabels.current) {\n if (\n size ||\n appElement ||\n preventCloseOnEsc ||\n shouldFocusAfterRender ||\n parentSelector\n ) {\n console.warn(\n `Deprecation warning: Mobius Modal no longer supports the following props: size, appElement, preventCloseOnEsc, shouldFocusAfterRender and parentSelector.`,\n );\n hasWarnedAboutMissingLabels.current = true;\n }\n }\n\n const hasOpened = useRef<boolean>(false);\n const modalRef = useRef<HTMLDialogElement | null>(null);\n const hasDialogSupport = supportsDialog();\n\n // Fire onOpen once\n if (onOpen && !hasOpened.current) {\n onOpen();\n hasOpened.current = true;\n }\n\n useBodyScrollLock({ enabled: isOpen });\n\n // Add close handler, to enable closing animations\n const handleClose = useCallback(\n (event?: SyntheticEvent<HTMLElement, Event>) => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n const doClose = () => {\n modalRef.current?.close();\n onClose?.();\n };\n\n // Delay close to allow backdrop exit transition\n if (hasDialogSupport && animation) {\n modalRef.current?.classList.remove(TRANSITION_CLASS_NAME);\n modalRef.current?.addEventListener(\n \"transitionend\",\n () => {\n doClose();\n },\n { once: true },\n );\n } else {\n doClose();\n }\n },\n [onClose, hasDialogSupport, animation],\n );\n\n const modalClasses = classNames(\n \"mobius\",\n \"mobius/Modal\",\n {\n \"--no-dialog-support\": !hasDialogSupport, // This class is used to correctly position modal in x/y middle on iOS <= 15.2\n \"--should-transition\": hasDialogSupport && animation,\n \"--slide-up\": animation === \"slideUp\",\n \"--fade\": animation === \"fade\",\n \"--is-fullscreen\": isFullScreen,\n },\n className,\n );\n\n // Add polyfill for HTML Dialog in old browsers\n useEffect(() => {\n async function toggleModal() {\n if (\n !hasDialogSupport &&\n typeof window !== \"undefined\" &&\n modalRef.current !== null\n ) {\n // eslint-disable-next-line import/no-extraneous-dependencies\n const { default: dialogPolyfill } = await import(\"dialog-polyfill\");\n\n try {\n dialogPolyfill.registerDialog(modalRef.current);\n } catch (error) {\n // In iOS 15 <= 15.2 this intermittently fails with\n // TypeError: null is not an object (evaluating 'element.showModal')\n // Checking showModal presence through hasOwnProperty is falsy natively, truthy with polyfill 🤷🏼♂️\n console.error(\"Failed to load dialog-polyfill\", error);\n }\n }\n\n if (isOpen && !modalRef.current?.open) {\n modalRef.current?.showModal();\n modalRef.current?.classList.add(TRANSITION_CLASS_NAME);\n onOpen?.();\n } else if (!isOpen && modalRef.current?.open) {\n handleClose();\n }\n }\n\n toggleModal();\n }, [isOpen, onOpen, handleClose, hasDialogSupport]);\n\n return (\n <dialog\n ref={mergeRefs([modalRef, ref])}\n onCancel={handleClose}\n className={modalClasses}\n >\n {Children.map(children, child => {\n if (isValidElement(child)) {\n return cloneElement(child, {\n onClose: handleClose,\n closeLabel,\n } as any);\n }\n\n return child;\n })}\n </dialog>\n );\n});\n\nModal.displayName = \"Modal\";\nexport { Modal };\n"],"names":["Modal","TRANSITION_CLASS_NAME","forwardRef","props","ref","isOpen","onClose","onOpen","children","className","closeLabel","isFullScreen","animation","size","appElement","preventCloseOnEsc","shouldFocusAfterRender","parentSelector","hasWarnedAboutMissingLabels","useRef","current","console","warn","hasOpened","modalRef","hasDialogSupport","supportsDialog","useBodyScrollLock","enabled","handleClose","useCallback","event","preventDefault","stopPropagation","doClose","close","classList","remove","addEventListener","once","modalClasses","classNames","useEffect","toggleModal","window","default","dialogPolyfill","registerDialog","error","open","showModal","add","dialog","mergeRefs","onCancel","Children","map","child","isValidElement","cloneElement","displayName"],"mappings":"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"}
|