reshaped 3.8.0-canary.1 → 3.8.0-canary.11
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 +97 -18
- package/dist/bundle.css +1 -1
- package/dist/bundle.d.ts +1 -1
- package/dist/bundle.js +11 -11
- package/dist/components/Accordion/AccordionControlled.js +1 -0
- package/dist/components/Actionable/Actionable.js +17 -3
- package/dist/components/Actionable/Actionable.module.css +1 -1
- package/dist/components/Actionable/Actionable.types.d.ts +15 -3
- package/dist/components/Actionable/tests/Actionable.stories.d.ts +13 -1
- package/dist/components/Actionable/tests/Actionable.stories.js +127 -7
- package/dist/components/Alert/tests/Alert.stories.d.ts +6 -5
- package/dist/components/Alert/tests/Alert.stories.js +15 -2
- package/dist/components/Autocomplete/Autocomplete.js +2 -2
- package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
- package/dist/components/Badge/Badge.module.css +1 -1
- package/dist/components/Badge/tests/Badge.stories.d.ts +5 -0
- package/dist/components/Badge/tests/Badge.stories.js +34 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -0
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -4
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +57 -1
- package/dist/components/Button/Button.js +2 -2
- package/dist/components/Button/Button.types.d.ts +1 -1
- package/dist/components/Button/tests/Button.stories.d.ts +54 -12
- package/dist/components/Button/tests/Button.stories.js +725 -588
- package/dist/components/Calendar/CalendarMonth.js +1 -0
- package/dist/components/Card/Card.d.ts +1 -1
- package/dist/components/Card/Card.module.css +1 -1
- package/dist/components/Card/tests/Card.stories.d.ts +29 -7
- package/dist/components/Card/tests/Card.stories.js +110 -65
- package/dist/components/Carousel/Carousel.js +1 -0
- package/dist/components/Carousel/Carousel.module.css +1 -1
- package/dist/components/Checkbox/Checkbox.module.css +1 -1
- package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +20 -4
- package/dist/components/Checkbox/tests/Checkbox.stories.js +150 -79
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +9 -2
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +67 -35
- package/dist/components/Container/tests/Container.stories.d.ts +2 -0
- package/dist/components/Container/tests/Container.stories.js +14 -0
- package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +10 -1
- package/dist/components/ContextMenu/tests/ContextMenu.stories.js +57 -13
- package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +5 -0
- package/dist/components/Dismissible/tests/Dismissible.stories.js +30 -1
- package/dist/components/Divider/tests/Divider.stories.d.ts +8 -3
- package/dist/components/Divider/tests/Divider.stories.js +71 -41
- package/dist/components/DropdownMenu/DropdownMenu.js +4 -4
- package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +2 -2
- package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +35 -6
- package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +222 -115
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +0 -15
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +0 -106
- package/dist/components/FileUpload/FileUpload.module.css +1 -1
- package/dist/components/Flyout/Flyout.module.css +1 -1
- package/dist/components/Flyout/Flyout.types.d.ts +7 -7
- package/dist/components/Flyout/FlyoutContent.js +4 -1
- package/dist/components/Flyout/FlyoutControlled.js +10 -3
- package/dist/components/Flyout/index.d.ts +1 -1
- package/dist/components/Flyout/tests/Flyout.stories.d.ts +8 -0
- package/dist/components/Flyout/tests/Flyout.stories.js +81 -33
- package/dist/components/Flyout/useFlyout.d.ts +1 -7
- package/dist/components/Flyout/useFlyout.js +5 -1
- package/dist/components/Flyout/utilities/calculatePosition.d.ts +3 -2
- package/dist/components/Flyout/utilities/calculatePosition.js +47 -22
- package/dist/components/Flyout/utilities/flyout.js +3 -2
- package/dist/components/Flyout/utilities/getPositionFallbacks.js +3 -3
- package/dist/components/Flyout/utilities/isFullyVisible.d.ts +0 -2
- package/dist/components/Flyout/utilities/isFullyVisible.js +5 -7
- package/dist/components/FormControl/FormControl.context.d.ts +1 -1
- package/dist/components/FormControl/tests/FormControl.stories.d.ts +2 -0
- package/dist/components/FormControl/tests/FormControl.stories.js +35 -0
- package/dist/components/Hidden/tests/Hidden.stories.d.ts +2 -0
- package/dist/components/Hidden/tests/Hidden.stories.js +9 -0
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +2 -0
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +9 -0
- package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +2 -0
- package/dist/components/Hotkey/tests/Hotkey.stories.js +15 -0
- package/dist/components/Icon/Icon.js +2 -2
- package/dist/components/Icon/Icon.types.d.ts +1 -1
- package/dist/components/Icon/tests/Icon.stories.d.ts +3 -0
- package/dist/components/Icon/tests/Icon.stories.js +29 -1
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/Link/Link.js +2 -2
- package/dist/components/Link/Link.types.d.ts +1 -1
- package/dist/components/Link/tests/Link.stories.d.ts +29 -6
- package/dist/components/Link/tests/Link.stories.js +141 -58
- package/dist/components/Link/tests/Link.test.stories.d.ts +1 -13
- package/dist/components/Link/tests/Link.test.stories.js +0 -76
- package/dist/components/Loader/tests/Loader.stories.d.ts +11 -2
- package/dist/components/Loader/tests/Loader.stories.js +52 -25
- package/dist/components/Loader/tests/Loader.test.stories.d.ts +0 -3
- package/dist/components/Loader/tests/Loader.test.stories.js +0 -21
- package/dist/components/MenuItem/MenuItem.js +2 -2
- package/dist/components/MenuItem/MenuItem.module.css +1 -1
- package/dist/components/MenuItem/MenuItem.types.d.ts +1 -1
- package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +37 -7
- package/dist/components/MenuItem/tests/MenuItem.stories.js +218 -112
- package/dist/components/Modal/Modal.js +1 -1
- package/dist/components/Modal/Modal.module.css +1 -1
- package/dist/components/Modal/tests/Modal.stories.d.ts +49 -10
- package/dist/components/Modal/tests/Modal.stories.js +350 -210
- package/dist/components/Overlay/Overlay.js +2 -1
- package/dist/components/Overlay/tests/Overlay.stories.d.ts +15 -1
- package/dist/components/Overlay/tests/Overlay.stories.js +135 -1
- package/dist/components/Pagination/tests/Pagination.stories.d.ts +14 -1
- package/dist/components/Pagination/tests/Pagination.stories.js +93 -15
- package/dist/components/PinField/tests/PinField.stories.d.ts +1 -1
- package/dist/components/PinField/tests/PinField.stories.js +1 -1
- package/dist/components/Popover/Popover.js +2 -2
- package/dist/components/Popover/Popover.module.css +1 -1
- package/dist/components/Popover/Popover.types.d.ts +3 -1
- package/dist/components/Progress/tests/Progress.stories.d.ts +19 -4
- package/dist/components/Progress/tests/Progress.stories.js +85 -49
- package/dist/components/Radio/Radio.module.css +1 -1
- package/dist/components/Radio/tests/Radio.stories.d.ts +25 -4
- package/dist/components/Radio/tests/Radio.stories.js +147 -65
- package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +9 -2
- package/dist/components/RadioGroup/tests/RadioGroup.stories.js +64 -38
- package/dist/components/Reshaped/Reshaped.css +1 -1
- package/dist/components/Scrim/tests/Scrim.stories.d.ts +10 -2
- package/dist/components/Scrim/tests/Scrim.stories.js +51 -31
- package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
- package/dist/components/Select/Select.d.ts +8 -1
- package/dist/components/Select/Select.js +22 -48
- package/dist/components/Select/Select.module.css +1 -1
- package/dist/components/Select/Select.types.d.ts +83 -38
- package/dist/components/Select/SelectCustom.d.ts +3 -0
- package/dist/components/Select/SelectCustom.js +12 -0
- package/dist/components/Select/SelectCustomControlled.d.ts +4 -0
- package/dist/components/Select/SelectCustomControlled.js +105 -0
- package/dist/components/Select/SelectCustomUncontrolled.d.ts +4 -0
- package/dist/components/Select/SelectCustomUncontrolled.js +18 -0
- package/dist/components/Select/SelectEndContent.d.ts +3 -0
- package/dist/components/Select/SelectEndContent.js +12 -0
- package/dist/components/Select/SelectNative.d.ts +4 -0
- package/dist/components/Select/SelectNative.js +29 -0
- package/dist/components/Select/SelectOption.d.ts +4 -0
- package/dist/components/Select/SelectOption.js +13 -0
- package/dist/components/Select/SelectOptionGroup.d.ts +4 -0
- package/dist/components/Select/SelectOptionGroup.js +9 -0
- package/dist/components/Select/SelectRoot.d.ts +4 -0
- package/dist/components/Select/SelectRoot.js +21 -0
- package/dist/components/Select/SelectStartContent.d.ts +3 -0
- package/dist/components/Select/SelectStartContent.js +20 -0
- package/dist/components/Select/SelectTrigger.d.ts +4 -0
- package/dist/components/Select/SelectTrigger.js +16 -0
- package/dist/components/Select/tests/Select.stories.d.ts +38 -10
- package/dist/components/Select/tests/Select.stories.js +504 -175
- package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +10 -2
- package/dist/components/Skeleton/tests/Skeleton.stories.js +46 -28
- package/dist/components/Slider/Slider.module.css +1 -1
- package/dist/components/Stepper/Stepper.js +2 -2
- package/dist/components/Stepper/Stepper.types.d.ts +2 -0
- package/dist/components/Stepper/tests/Stepper.stories.d.ts +18 -3
- package/dist/components/Stepper/tests/Stepper.stories.js +99 -47
- package/dist/components/Switch/Switch.module.css +1 -1
- package/dist/components/Switch/tests/Switch.stories.d.ts +10 -2
- package/dist/components/Switch/tests/Switch.stories.js +77 -23
- package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -10
- package/dist/components/Switch/tests/Switch.test.stories.js +0 -68
- package/dist/components/Table/Table.js +5 -3
- package/dist/components/Table/Table.module.css +1 -1
- package/dist/components/Table/tests/Table.stories.d.ts +25 -5
- package/dist/components/Table/tests/Table.stories.js +274 -177
- package/dist/components/Table/tests/Table.test.stories.d.ts +0 -5
- package/dist/components/Table/tests/Table.test.stories.js +0 -82
- package/dist/components/Tabs/Tabs.module.css +1 -1
- package/dist/components/Tabs/TabsControlled.js +1 -0
- package/dist/components/Text/Text.module.css +1 -1
- package/dist/components/TextArea/TextArea.module.css +1 -1
- package/dist/components/TextArea/tests/TextArea.stories.d.ts +41 -9
- package/dist/components/TextArea/tests/TextArea.stories.js +179 -93
- package/dist/components/TextField/TextField.js +1 -1
- package/dist/components/TextField/TextField.module.css +1 -1
- package/dist/components/TextField/tests/TextField.stories.d.ts +41 -11
- package/dist/components/TextField/tests/TextField.stories.js +206 -132
- package/dist/components/TextField/tests/TextField.test.stories.d.ts +0 -13
- package/dist/components/TextField/tests/TextField.test.stories.js +0 -88
- package/dist/components/Theme/Theme.module.css +1 -1
- package/dist/components/Timeline/Timeline.js +2 -2
- package/dist/components/Timeline/tests/Timeline.stories.d.ts +10 -2
- package/dist/components/Timeline/tests/Timeline.stories.js +69 -45
- package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +0 -2
- package/dist/components/Timeline/tests/Timeline.test.stories.js +0 -21
- package/dist/components/Toast/ToastContainer.js +1 -0
- package/dist/components/Toast/ToastRegion.js +1 -0
- package/dist/components/Toast/tests/Toast.stories.d.ts +32 -8
- package/dist/components/Toast/tests/Toast.stories.js +111 -37
- package/dist/components/ToggleButton/ToggleButton.types.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +1 -0
- package/dist/components/Tooltip/Tooltip.js +1 -1
- package/dist/components/Tooltip/Tooltip.types.d.ts +2 -2
- package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +18 -4
- package/dist/components/Tooltip/tests/Tooltip.stories.js +139 -107
- package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +0 -6
- package/dist/components/Tooltip/tests/Tooltip.test.stories.js +0 -29
- package/dist/components/View/View.js +11 -4
- package/dist/components/View/tests/View.stories.d.ts +4 -0
- package/dist/components/View/tests/View.stories.js +39 -0
- package/dist/components/_private/Expandable/Expandable.js +3 -1
- package/dist/components/_private/Portal/Portal.js +4 -1
- package/dist/hooks/_private/useIsDismissible.d.ts +1 -0
- package/dist/hooks/_private/useIsDismissible.js +6 -6
- package/dist/hooks/_private/usePrevious.js +1 -0
- package/dist/hooks/tests/useDrag.stories.js +1 -1
- package/dist/hooks/useOnClickOutside.js +0 -2
- package/dist/hooks/useScrollLock.js +5 -3
- package/dist/index.d.ts +1 -1
- package/dist/styles/resolvers/align/align.css +1 -1
- package/dist/styles/resolvers/aspectRatio/aspectRatio.css +1 -1
- package/dist/styles/resolvers/bleed/bleed.module.css +1 -1
- package/dist/styles/resolvers/justify/justify.css +1 -1
- package/dist/styles/resolvers/maxHeight/maxHeight.module.css +1 -1
- package/dist/styles/resolvers/maxWidth/maxWidth.module.css +1 -1
- package/dist/styles/resolvers/minHeight/minHeight.module.css +1 -1
- package/dist/styles/resolvers/minWidth/minWidth.module.css +1 -1
- package/dist/styles/resolvers/position/position.css +1 -1
- package/dist/styles/resolvers/textAlign/textAlign.css +1 -1
- package/dist/styles/resolvers/width/width.module.css +1 -1
- package/dist/utilities/scroll/disable.js +2 -2
- package/dist/utilities/scroll/index.d.ts +1 -1
- package/dist/utilities/scroll/index.js +1 -1
- package/dist/utilities/scroll/lock.d.ts +1 -2
- package/dist/utilities/scroll/lock.js +16 -15
- package/dist/utilities/scroll/lockSafari.js +1 -0
- package/package.json +23 -23
- package/dist/components/Actionable/tests/Actionable.test.stories.d.ts +0 -32
- package/dist/components/Actionable/tests/Actionable.test.stories.js +0 -130
- package/dist/components/Alert/tests/Alert.test.stories.d.ts +0 -15
- package/dist/components/Alert/tests/Alert.test.stories.js +0 -26
- package/dist/components/Badge/tests/Badge.test.stories.d.ts +0 -20
- package/dist/components/Badge/tests/Badge.test.stories.js +0 -46
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +0 -23
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +0 -76
- package/dist/components/Button/tests/Button.test.stories.d.ts +0 -27
- package/dist/components/Button/tests/Button.test.stories.js +0 -112
- package/dist/components/Card/tests/Card.test.stories.d.ts +0 -35
- package/dist/components/Card/tests/Card.test.stories.js +0 -54
- package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +0 -25
- package/dist/components/Checkbox/tests/Checkbox.test.stories.js +0 -104
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +0 -22
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +0 -78
- package/dist/components/Container/tests/Container.test.stories.d.ts +0 -15
- package/dist/components/Container/tests/Container.test.stories.js +0 -26
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +0 -25
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +0 -53
- package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +0 -19
- package/dist/components/Dismissible/tests/Dismissible.test.stories.js +0 -42
- package/dist/components/Divider/tests/Divider.test.stories.d.ts +0 -18
- package/dist/components/Divider/tests/Divider.test.stories.js +0 -47
- package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +0 -20
- package/dist/components/FormControl/tests/FormControl.test.stories.js +0 -49
- package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +0 -15
- package/dist/components/Hidden/tests/Hidden.test.stories.js +0 -20
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +0 -15
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +0 -20
- package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +0 -15
- package/dist/components/Hotkey/tests/Hotkey.test.stories.js +0 -26
- package/dist/components/Icon/tests/Icon.test.stories.d.ts +0 -16
- package/dist/components/Icon/tests/Icon.test.stories.js +0 -35
- package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +0 -26
- package/dist/components/MenuItem/tests/MenuItem.test.stories.js +0 -100
- package/dist/components/Modal/tests/Modal.test.stories.d.ts +0 -31
- package/dist/components/Modal/tests/Modal.test.stories.js +0 -149
- package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +0 -28
- package/dist/components/Overlay/tests/Overlay.test.stories.js +0 -148
- package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +0 -23
- package/dist/components/Pagination/tests/Pagination.test.stories.js +0 -86
- package/dist/components/Progress/tests/Progress.test.stories.d.ts +0 -16
- package/dist/components/Progress/tests/Progress.test.stories.js +0 -35
- package/dist/components/Radio/tests/Radio.test.stories.d.ts +0 -30
- package/dist/components/Radio/tests/Radio.test.stories.js +0 -118
- package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +0 -22
- package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +0 -78
- package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +0 -15
- package/dist/components/Scrim/tests/Scrim.test.stories.js +0 -25
- package/dist/components/Select/tests/Select.test.stories.d.ts +0 -27
- package/dist/components/Select/tests/Select.test.stories.js +0 -132
- package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +0 -15
- package/dist/components/Skeleton/tests/Skeleton.test.stories.js +0 -23
- package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +0 -20
- package/dist/components/Stepper/tests/Stepper.test.stories.js +0 -28
- package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +0 -28
- package/dist/components/TextArea/tests/TextArea.test.stories.js +0 -99
- package/dist/components/Toast/tests/Toast.test.stories.d.ts +0 -16
- package/dist/components/Toast/tests/Toast.test.stories.js +0 -101
- package/dist/components/View/tests/View.test.stories.d.ts +0 -24
- package/dist/components/View/tests/View.test.stories.js +0 -50
@@ -1,6 +1,4 @@
|
|
1
|
-
import { expect, fn, userEvent, within, waitFor } from "storybook/test";
|
2
1
|
import Tooltip from "../index.js";
|
3
|
-
import Button from "../../Button/index.js";
|
4
2
|
export default {
|
5
3
|
title: "Components/Tooltip/tests",
|
6
4
|
component: Tooltip,
|
@@ -11,30 +9,3 @@ export default {
|
|
11
9
|
chromatic: { disableSnapshot: true },
|
12
10
|
},
|
13
11
|
};
|
14
|
-
export const defaultActive = {
|
15
|
-
name: "uncontrolled",
|
16
|
-
args: {
|
17
|
-
handleOpen: fn(),
|
18
|
-
handleClose: fn(),
|
19
|
-
},
|
20
|
-
render: (args) => (<Tooltip text="Content" onOpen={args.handleOpen} onClose={args.handleClose}>
|
21
|
-
{(attributes) => <Button attributes={attributes}>Trigger</Button>}
|
22
|
-
</Tooltip>),
|
23
|
-
play: async ({ canvasElement, args }) => {
|
24
|
-
const canvas = within(canvasElement.ownerDocument.body);
|
25
|
-
const trigger = canvas.getAllByRole("button")[0];
|
26
|
-
await userEvent.hover(trigger);
|
27
|
-
await waitFor(() => {
|
28
|
-
expect(args.handleOpen).toHaveBeenCalledTimes(1);
|
29
|
-
expect(args.handleOpen).toHaveBeenCalledWith();
|
30
|
-
});
|
31
|
-
const item = canvas.getByText("Content");
|
32
|
-
expect(item).toBeInTheDocument();
|
33
|
-
await userEvent.unhover(trigger);
|
34
|
-
await waitFor(() => {
|
35
|
-
expect(args.handleClose).toHaveBeenCalledTimes(1);
|
36
|
-
expect(args.handleClose).toHaveBeenCalledWith({});
|
37
|
-
expect(item).not.toBeInTheDocument();
|
38
|
-
});
|
39
|
-
},
|
40
|
-
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { createElement as _createElement } from "react";
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
3
|
-
import React from "react";
|
3
|
+
import React, { isValidElement } from "react";
|
4
4
|
import { classNames, responsiveClassNames, responsiveVariables } from "../../utilities/props.js";
|
5
5
|
import Divider from "../Divider/index.js";
|
6
6
|
import Hidden from "../Hidden/index.js";
|
@@ -100,13 +100,15 @@ const View = (props) => {
|
|
100
100
|
return (_jsx("div", { className: dividerClassName, children: _jsx(Divider, { vertical: isDividerVertical, blank: true }) }, `${key}-divider`));
|
101
101
|
};
|
102
102
|
const renderItem = ({ className, child, index }) => {
|
103
|
-
const
|
104
|
-
const
|
103
|
+
const isElement = isValidElement(child);
|
104
|
+
const isItem = isElement && child.type === ViewItem;
|
105
|
+
const isView = isElement && child.type === View;
|
105
106
|
const key = child.key;
|
106
107
|
const dividerElement = !!index && divided && renderDivider({ className, key });
|
107
108
|
let itemElement;
|
108
109
|
if (isItem) {
|
109
110
|
itemElement = React.cloneElement(child, {
|
111
|
+
// @ts-expect-error -- child is guaranteed to be an element
|
110
112
|
className: classNames(className, child.props.className),
|
111
113
|
});
|
112
114
|
}
|
@@ -120,10 +122,13 @@ const View = (props) => {
|
|
120
122
|
itemElement = (_jsx("div", { className: className, children: child }, key));
|
121
123
|
}
|
122
124
|
// Passing grow here because it's responsive and nowrap should follow it
|
125
|
+
// @ts-expect-error -- child is guaranteed to be an element
|
123
126
|
if ((isItem || isView) && child.props?.grow) {
|
127
|
+
// @ts-expect-error -- child is guaranteed to be an element
|
124
128
|
nowrap = child.props.grow;
|
125
129
|
isFlex = true;
|
126
130
|
}
|
131
|
+
// @ts-expect-error -- child is guaranteed to be an element
|
127
132
|
if (isItem && child.props?.gap === "auto")
|
128
133
|
nowrap = true;
|
129
134
|
return (_jsxs(React.Fragment, { children: [dividerElement, itemElement] }, key ? `${key}-fragment` : undefined));
|
@@ -134,8 +139,10 @@ const View = (props) => {
|
|
134
139
|
if (!child)
|
135
140
|
return null;
|
136
141
|
const usedIndex = renderedItemIndex;
|
142
|
+
// eslint-disable-next-line react-hooks/immutability
|
137
143
|
renderedItemIndex += 1;
|
138
|
-
if (child.type === Hidden) {
|
144
|
+
if (isValidElement(child) && child.type === Hidden) {
|
145
|
+
// @ts-expect-error -- child is guaranteed to be an element
|
139
146
|
const { children: hiddenChild, ...hiddenProps } = child.props;
|
140
147
|
const key = child.key || index;
|
141
148
|
return (_createElement(Hidden, { ...hiddenProps, key: key }, renderItem({ child: hiddenChild, index: usedIndex })));
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import { type ViewProps } from "./..";
|
3
|
+
import { StoryObj } from "@storybook/react-vite";
|
3
4
|
declare const _default: {
|
4
5
|
title: string;
|
5
6
|
component: {
|
@@ -137,3 +138,6 @@ export declare const testComposition: {
|
|
137
138
|
name: string;
|
138
139
|
render: () => React.JSX.Element;
|
139
140
|
};
|
141
|
+
export declare const asProp: StoryObj;
|
142
|
+
export declare const className: StoryObj;
|
143
|
+
export declare const itemClassName: StoryObj;
|
@@ -9,6 +9,7 @@ import MenuItem from "../../MenuItem/index.js";
|
|
9
9
|
import Button from "../../Button/index.js";
|
10
10
|
import IconPlus from "../../../icons/Plus.js";
|
11
11
|
import useToggle from "../../../hooks/useToggle.js";
|
12
|
+
import { expect } from "storybook/test";
|
12
13
|
export default {
|
13
14
|
title: "Utility components/View",
|
14
15
|
component: View,
|
@@ -1288,3 +1289,41 @@ export const testComposition = {
|
|
1288
1289
|
</Example.Item>
|
1289
1290
|
</Example>),
|
1290
1291
|
};
|
1292
|
+
export const asProp = {
|
1293
|
+
name: "as",
|
1294
|
+
render: () => (<View as="ul">
|
1295
|
+
<View.Item as="li">Content</View.Item>
|
1296
|
+
</View>),
|
1297
|
+
play: async ({ canvas }) => {
|
1298
|
+
const list = canvas.getByRole("list");
|
1299
|
+
const item = canvas.getByRole("listitem");
|
1300
|
+
expect(list).toBeInTheDocument();
|
1301
|
+
expect(item).toBeInTheDocument();
|
1302
|
+
},
|
1303
|
+
};
|
1304
|
+
export const className = {
|
1305
|
+
name: "className, attributes",
|
1306
|
+
render: () => (<div data-testid="root">
|
1307
|
+
<View className="test-classname" attributes={{ id: "test-id" }}>
|
1308
|
+
Content
|
1309
|
+
</View>
|
1310
|
+
</div>),
|
1311
|
+
play: async ({ canvas }) => {
|
1312
|
+
const root = canvas.getByTestId("root").firstChild;
|
1313
|
+
expect(root).toHaveClass("test-classname");
|
1314
|
+
expect(root).toHaveAttribute("id", "test-id");
|
1315
|
+
},
|
1316
|
+
};
|
1317
|
+
export const itemClassName = {
|
1318
|
+
name: "item className, attributes",
|
1319
|
+
render: () => (<div data-testid="root">
|
1320
|
+
<View.Item className="test-classname" attributes={{ id: "test-id" }}>
|
1321
|
+
Content
|
1322
|
+
</View.Item>
|
1323
|
+
</div>),
|
1324
|
+
play: async ({ canvas }) => {
|
1325
|
+
const root = canvas.getByTestId("root").firstChild;
|
1326
|
+
expect(root).toHaveClass("test-classname");
|
1327
|
+
expect(root).toHaveAttribute("id", "test-id");
|
1328
|
+
},
|
1329
|
+
};
|
@@ -10,7 +10,9 @@ const Expandable = (props) => {
|
|
10
10
|
const rootRef = React.useRef(null);
|
11
11
|
const mountedRef = React.useRef(false);
|
12
12
|
const [animatedHeight, setAnimatedHeight] = React.useState(active ? "auto" : null);
|
13
|
-
const contentClassNames = classNames(s.root,
|
13
|
+
const contentClassNames = classNames(s.root,
|
14
|
+
// eslint-disable-next-line react-hooks/refs
|
15
|
+
mountedRef.current && animatedHeight !== "auto" && s["--animated"]);
|
14
16
|
const handleTransitionEnd = (e) => {
|
15
17
|
if (e.propertyName !== "height")
|
16
18
|
return;
|
@@ -18,18 +18,20 @@ const Portal = (props) => {
|
|
18
18
|
const { children, targetRef } = props;
|
19
19
|
const mountedToggle = useToggle();
|
20
20
|
const rootRef = React.useRef(null);
|
21
|
+
// eslint-disable-next-line react-hooks/refs
|
21
22
|
const rootNode = rootRef.current?.getRootNode();
|
22
23
|
const isShadowDom = rootNode instanceof ShadowRoot;
|
23
24
|
const defaultTargetEl = isShadowDom ? rootNode : document.body;
|
24
25
|
/**
|
25
26
|
* Check for parent portal to render inside it
|
26
|
-
* To avoid z-
|
27
|
+
* To avoid z-index issues
|
27
28
|
* Example:
|
28
29
|
* Dropdown rendered on the page should render under the modal
|
29
30
|
* Dropdown inside the modal should render above it
|
30
31
|
*/
|
31
32
|
const portal = usePortalScope();
|
32
33
|
const nextScopeRef = targetRef || portal.scopeRef;
|
34
|
+
// eslint-disable-next-line react-hooks/refs
|
33
35
|
const targetEl = nextScopeRef?.current || defaultTargetEl;
|
34
36
|
useIsomorphicLayoutEffect(() => {
|
35
37
|
mountedToggle.activate();
|
@@ -37,6 +39,7 @@ const Portal = (props) => {
|
|
37
39
|
}, []);
|
38
40
|
/* Preserve the current theme when rendered in body */
|
39
41
|
return [
|
42
|
+
// eslint-disable-next-line react-hooks/refs
|
40
43
|
ReactDOM.createPortal(_jsx(Theme, { children: children }), targetEl),
|
41
44
|
// Make sure this element doesn't affect components using :last-child when their children use portals
|
42
45
|
!mountedToggle.active && _jsx("div", { ref: rootRef, className: s.root }, "root"),
|
@@ -4,7 +4,6 @@
|
|
4
4
|
*/
|
5
5
|
import React from "react";
|
6
6
|
import useElementId from "../useElementId.js";
|
7
|
-
import { onNextFrame } from "../../utilities/animation.js";
|
8
7
|
let queue = {};
|
9
8
|
let latestId = null;
|
10
9
|
const removeFromQueue = (id) => {
|
@@ -23,12 +22,12 @@ const addToQueue = (id, contentRef, triggerRef) => {
|
|
23
22
|
latestId = id;
|
24
23
|
};
|
25
24
|
const useIsDismissible = (args) => {
|
26
|
-
const { active, contentRef, triggerRef } = args;
|
25
|
+
const { active, contentRef, triggerRef, hasTrigger = true } = args;
|
27
26
|
const id = useElementId();
|
28
27
|
React.useEffect(() => {
|
29
28
|
if (!active)
|
30
29
|
return;
|
31
|
-
|
30
|
+
addToQueue(id, contentRef, triggerRef);
|
32
31
|
return () => removeFromQueue(id);
|
33
32
|
}, [active, id, contentRef, triggerRef]);
|
34
33
|
return React.useCallback(() => {
|
@@ -38,10 +37,11 @@ const useIsDismissible = (args) => {
|
|
38
37
|
const latestTrigger = latest?.triggerRef?.current;
|
39
38
|
const prev = latest?.parentId ? queue[latest.parentId] : undefined;
|
40
39
|
const prevContent = prev?.contentRef.current;
|
40
|
+
const nested = prevContent && latestTrigger && prevContent.contains(latestTrigger);
|
41
41
|
// Don't block independently rendered components that are not nested in each other
|
42
|
-
if (
|
42
|
+
if (hasTrigger && !nested)
|
43
43
|
return true;
|
44
|
-
return latestId === id;
|
45
|
-
}, [id, active]);
|
44
|
+
return !latestId || latestId === id;
|
45
|
+
}, [id, active, hasTrigger]);
|
46
46
|
};
|
47
47
|
export default useIsDismissible;
|
@@ -5,7 +5,7 @@ import useDrag from "../_private/useDrag.js";
|
|
5
5
|
import useToggle from "../useToggle.js";
|
6
6
|
import Button from "../../components/Button/index.js";
|
7
7
|
export default {
|
8
|
-
title: "Internal/
|
8
|
+
title: "Internal/useDrag",
|
9
9
|
parameters: {
|
10
10
|
chromatic: { disableSnapshot: true },
|
11
11
|
},
|
@@ -1,18 +1,20 @@
|
|
1
1
|
"use client";
|
2
2
|
import React from "react";
|
3
|
-
import { lockScroll
|
3
|
+
import { lockScroll } from "../utilities/scroll/index.js";
|
4
4
|
const useScrollLock = (options) => {
|
5
5
|
const { containerRef, originRef } = options || {};
|
6
6
|
const [locked, setLocked] = React.useState(false);
|
7
|
+
const unlockScrollRef = React.useRef(null);
|
7
8
|
const handleLockScroll = React.useCallback(() => {
|
8
|
-
lockScroll({
|
9
|
+
unlockScrollRef.current = lockScroll({
|
9
10
|
containerEl: containerRef?.current,
|
10
11
|
originEl: originRef?.current,
|
11
12
|
cb: () => setLocked(true),
|
12
13
|
});
|
13
14
|
}, [containerRef, originRef]);
|
14
15
|
const handleUnlockScroll = React.useCallback(() => {
|
15
|
-
|
16
|
+
unlockScrollRef.current?.(() => setLocked(false));
|
17
|
+
unlockScrollRef.current = null;
|
16
18
|
}, []);
|
17
19
|
return React.useMemo(() => ({
|
18
20
|
scrollLocked: locked,
|
package/dist/index.d.ts
CHANGED
@@ -103,7 +103,7 @@ export type { ContainerProps } from "./components/Container";
|
|
103
103
|
export { default as Dismissible } from "./components/Dismissible";
|
104
104
|
export type { DismissibleProps } from "./components/Dismissible";
|
105
105
|
export { default as Flyout } from "./components/Flyout";
|
106
|
-
export type { FlyoutProps, FlyoutInstance } from "./components/Flyout";
|
106
|
+
export type { FlyoutProps, FlyoutInstance, FlyoutTriggerAttributes } from "./components/Flyout";
|
107
107
|
export { default as FormControl } from "./components/FormControl";
|
108
108
|
export type { FormControlProps } from "./components/FormControl";
|
109
109
|
export { default as Grid } from "./components/Grid";
|
@@ -1 +1 @@
|
|
1
|
-
[style*="--rs-align-
|
1
|
+
[style*="--rs-align-"]{align-items:var(--rs-align)!important;--rs-align-s: ;--rs-align-m:var(--rs-align-s);--rs-align-l:var(--rs-align-m);--rs-align-xl:var(--rs-align-l);--rs-align:var(--rs-align-s)}@media (--rs-viewport-m ){[style*="--rs-align-"]{--rs-align:var(--rs-align-m)}}@media (--rs-viewport-l ){[style*="--rs-align-"]{--rs-align:var(--rs-align-l)}}@media (--rs-viewport-xl ){[style*="--rs-align-"]{--rs-align:var(--rs-align-xl)}}
|
@@ -1 +1 @@
|
|
1
|
-
[style*="--rs-ratio-
|
1
|
+
[style*="--rs-ratio-"]{--rs-ratio-s:0;--rs-ratio-m:var(--rs-ratio-s);--rs-ratio-l:var(--rs-ratio-m);--rs-ratio-xl:var(--rs-ratio-l);--rs-ratio:var(--rs-ratio-s)}[style*="--rs-ratio-s:"]:empty,[style*="--rs-ratio-s:"]:not(:empty)>*{aspect-ratio:var(--rs-ratio)}[style*="--rs-ratio-s:"]>img{object-fit:cover}@media (--rs-viewport-m ){[style*="--rs-ratio-"]{--rs-ratio:var(--rs-ratio-m)}}@media (--rs-viewport-l ){[style*="--rs-ratio-"]{--rs-ratio:var(--rs-ratio-l)}}@media (--rs-viewport-xl ){[style*="--rs-ratio-"]{--rs-ratio:var(--rs-ratio-xl)}}
|
@@ -1 +1 @@
|
|
1
|
-
.root[style*="--rs-bleed-
|
1
|
+
.root[style*="--rs-bleed-"]{margin-left:calc(var(--rs-unit-x1) * var(--rs-bleed) * -1);margin-right:calc(var(--rs-unit-x1) * var(--rs-bleed) * -1);--rs-bleed-s:0;--rs-bleed-m:var(--rs-bleed-s);--rs-bleed-l:var(--rs-bleed-m);--rs-bleed-xl:var(--rs-bleed-l);--rs-bleed:var(--rs-bleed-s)}.--bleed{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}@media (--rs-viewport-m ){.root[style*="--rs-bleed-"]{--rs-bleed:var(--rs-bleed-m)}.--bleed-true--m{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--m{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}@media (--rs-viewport-l ){.root[style*="--rs-bleed-"]{--rs-bleed:var(--rs-bleed-l)}.--bleed-true--l{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--l{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}@media (--rs-viewport-xl ){.root[style*="--rs-bleed-"]{--rs-bleed:var(--rs-bleed-xl)}.--bleed-true--xl{border-left-style:none!important;border-radius:0!important;border-right-style:none!important}.--bleed-false--xl{border-left-style:solid!important;border-radius:var(--rs-radius)!important;border-right-style:solid!important}}
|
@@ -1 +1 @@
|
|
1
|
-
[style*="--rs-justify-
|
1
|
+
[style*="--rs-justify-"]{justify-content:var(--rs-justify)!important;--rs-justify-s: ;--rs-justify-m:var(--rs-justify-s);--rs-justify-l:var(--rs-justify-m);--rs-justify-xl:var(--rs-justify-l);--rs-justify:var(--rs-justify-s)}@media (--rs-viewport-m ){[style*="--rs-justify-"]{--rs-justify:var(--rs-justify-m)}}@media (--rs-viewport-l ){[style*="--rs-justify-"]{--rs-justify:var(--rs-justify-l)}}@media (--rs-viewport-xl ){[style*="--rs-justify-"]{--rs-justify:var(--rs-justify-xl)}}
|
@@ -1 +1 @@
|
|
1
|
-
.root[style*="--rs-max-h-
|
1
|
+
.root[style*="--rs-max-h-"]{--rs-max-h-s:none;--rs-max-h-m:var(--rs-max-h-s);--rs-max-h-l:var(--rs-max-h-m);--rs-max-h-xl:var(--rs-max-h-l);--rs-max-h:var(--rs-max-h-s)}.--type-literal{max-height:var(--rs-max-h)!important}.--type-unit{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-max-h-"]{--rs-max-h:var(--rs-max-h-m)}.--type-literal--m{max-height:var(--rs-max-h)!important}.--type-unit--m{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-max-h-"]{--rs-max-h:var(--rs-max-h-l)}.--type-literal--l{max-height:var(--rs-max-h)!important}.--type-unit--l{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-max-h-"]{--rs-max-h:var(--rs-max-h-xl)}.--type-literal--xl{max-height:var(--rs-max-h)!important}.--type-unit--xl{max-height:calc(var(--rs-max-h) * var(--rs-unit-x1))!important}}
|
@@ -1 +1 @@
|
|
1
|
-
.root[style*="--rs-max-w-
|
1
|
+
.root[style*="--rs-max-w-"]{--rs-max-w-s:none;--rs-max-w-m:var(--rs-max-w-s);--rs-max-w-l:var(--rs-max-w-m);--rs-max-w-xl:var(--rs-max-w-l);--rs-max-w:var(--rs-max-w-s)}.--type-literal{max-width:var(--rs-max-w)!important}.--type-unit{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-max-w-"]{--rs-max-w:var(--rs-max-w-m)}.--type-literal--m{max-width:var(--rs-max-w)!important}.--type-unit--m{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-max-w-"]{--rs-max-w:var(--rs-max-w-l)}.--type-literal--l{max-width:var(--rs-max-w)!important}.--type-unit--l{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-max-w-"]{--rs-max-w:var(--rs-max-w-xl)}.--type-literal--xl{max-width:var(--rs-max-w)!important}.--type-unit--xl{max-width:calc(var(--rs-max-w) * var(--rs-unit-x1))!important}}
|
@@ -1 +1 @@
|
|
1
|
-
.root[style*="--rs-min-h-
|
1
|
+
.root[style*="--rs-min-h-"]{--rs-min-h-s:none;--rs-min-h-m:var(--rs-min-h-s);--rs-min-h-l:var(--rs-min-h-m);--rs-min-h-xl:var(--rs-min-h-l);--rs-min-h:var(--rs-min-h-s)}.--type-literal{min-height:var(--rs-min-h)!important}.--type-unit{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-min-h-"]{--rs-min-h:var(--rs-min-h-m)}.--type-literal--m{min-height:var(--rs-min-h)!important}.--type-unit--m{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-min-h-"]{--rs-min-h:var(--rs-min-h-l)}.--type-literal--l{min-height:var(--rs-min-h)!important}.--type-unit--l{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-min-h-"]{--rs-min-h:var(--rs-min-h-xl)}.--type-literal--xl{min-height:var(--rs-min-h)!important}.--type-unit--xl{min-height:calc(var(--rs-min-h) * var(--rs-unit-x1))!important}}
|
@@ -1 +1 @@
|
|
1
|
-
.root[style*="--rs-min-w-
|
1
|
+
.root[style*="--rs-min-w-"]{--rs-min-w-s:none;--rs-min-w-m:var(--rs-min-w-s);--rs-min-w-l:var(--rs-min-w-m);--rs-min-w-xl:var(--rs-min-w-l);--rs-min-w:var(--rs-min-w-s)}.--type-literal{min-width:var(--rs-min-w)!important}.--type-unit{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-min-w-"]{--rs-min-w:var(--rs-min-w-m)}.--type-literal--m{min-width:var(--rs-min-w)!important}.--type-unit--m{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-min-w-"]{--rs-min-w:var(--rs-min-w-l)}.--type-literal--l{min-width:var(--rs-min-w)!important}.--type-unit--l{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-min-w-"]{--rs-min-w:var(--rs-min-w-xl)}.--type-literal--xl{min-width:var(--rs-min-w)!important}.--type-unit--xl{min-width:calc(var(--rs-min-w) * var(--rs-unit-x1))!important}}
|
@@ -1 +1 @@
|
|
1
|
-
[style*="--rs-position-
|
1
|
+
[style*="--rs-position-"]{position:var(--rs-position)!important;--rs-position-s: ;--rs-position-m:var(--rs-position-s);--rs-position-l:var(--rs-position-m);--rs-position-xl:var(--rs-position-l);--rs-position:var(--rs-position-s)}@media (--rs-viewport-m ){[style*="--rs-position-"]{--rs-position:var(--rs-position-m)}}@media (--rs-viewport-l ){[style*="--rs-position-"]{--rs-position:var(--rs-position-l)}}@media (--rs-viewport-xl ){[style*="--rs-position-"]{--rs-position:var(--rs-position-xl)}}
|
@@ -1 +1 @@
|
|
1
|
-
[style*="--rs-text-align-
|
1
|
+
[style*="--rs-text-align-"]{text-align:var(--rs-text-align)!important;--rs-text-align-s: ;--rs-text-align-m:var(--rs-text-align-s);--rs-text-align-l:var(--rs-text-align-m);--rs-text-align-xl:var(--rs-text-align-l);--rs-text-align:var(--rs-text-align-s)}@media (--rs-viewport-m ){[style*="--rs-text-align-"]{--rs-text-align:var(--rs-text-align-m)}}@media (--rs-viewport-l ){[style*="--rs-text-align-"]{--rs-text-align:var(--rs-text-align-l)}}@media (--rs-viewport-xl ){[style*="--rs-text-align-"]{--rs-text-align:var(--rs-text-align-xl)}}
|
@@ -1 +1 @@
|
|
1
|
-
.root[style*="--rs-w-
|
1
|
+
.root[style*="--rs-w-"]{--rs-w-s:auto;--rs-w-m:var(--rs-w-s);--rs-w-l:var(--rs-w-m);--rs-w-xl:var(--rs-w-l);--rs-w:var(--rs-w-s)}.--type-literal{width:var(--rs-w)!important}.--type-unit{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}@media (--rs-viewport-m ){.root[style*="--rs-w-"]{--rs-w:var(--rs-w-m)}.--type-literal--m{width:var(--rs-w)!important}.--type-unit--m{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-l ){.root[style*="--rs-w-"]{--rs-w:var(--rs-w-l)}.--type-literal--l{width:var(--rs-w)!important}.--type-unit--l{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}@media (--rs-viewport-xl ){.root[style*="--rs-w-"]{--rs-w:var(--rs-w-xl)}.--type-literal--xl{width:var(--rs-w)!important}.--type-unit--xl{width:calc(var(--rs-w) * var(--rs-unit-x1))!important}}
|
@@ -4,8 +4,8 @@ export const preventDefault = (e) => e.preventDefault();
|
|
4
4
|
* without locking the page with overflow
|
5
5
|
*/
|
6
6
|
export const disableScroll = () => {
|
7
|
-
window.addEventListener("wheel", preventDefault
|
8
|
-
window.addEventListener("touchmove", preventDefault
|
7
|
+
window.addEventListener("wheel", preventDefault);
|
8
|
+
window.addEventListener("touchmove", preventDefault);
|
9
9
|
};
|
10
10
|
export const enableScroll = () => {
|
11
11
|
window.removeEventListener("wheel", preventDefault);
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export { disableScroll, enableScroll } from "./disable";
|
2
|
-
export { lockScroll
|
2
|
+
export { lockScroll } from "./lock";
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export { disableScroll, enableScroll } from "./disable.js";
|
2
|
-
export { lockScroll
|
2
|
+
export { lockScroll } from "./lock.js";
|
@@ -3,31 +3,32 @@ import { findClosestScrollableContainer } from "../dom/index.js";
|
|
3
3
|
import lockSafariScroll from "./lockSafari.js";
|
4
4
|
import lockStandardScroll from "./lockStandard.js";
|
5
5
|
let bodyLockedCount = 0;
|
6
|
-
let reset = () => { };
|
7
6
|
export const lockScroll = (args) => {
|
8
|
-
const isIOSLock = isIOS()
|
7
|
+
const isIOSLock = isIOS();
|
8
|
+
let reset = () => { };
|
9
9
|
let container = document.body;
|
10
|
-
if (args.originEl
|
10
|
+
if (args.originEl)
|
11
11
|
container = findClosestScrollableContainer({ el: args.originEl });
|
12
|
-
|
13
|
-
if (args.containerEl && !isIOSLock)
|
12
|
+
if (args.containerEl)
|
14
13
|
container = args.containerEl;
|
15
|
-
|
14
|
+
const lockedBodyScroll = container === document.body;
|
15
|
+
if (lockedBodyScroll)
|
16
16
|
bodyLockedCount += 1;
|
17
|
-
|
17
|
+
console.log("bodyLockedCount", { bodyLockedCount, lockedBodyScroll, isIOSLock });
|
18
|
+
if (lockedBodyScroll && bodyLockedCount > 1)
|
18
19
|
return;
|
19
|
-
if (isIOSLock) {
|
20
|
+
if (isIOSLock && lockedBodyScroll) {
|
20
21
|
reset = lockSafariScroll();
|
21
22
|
}
|
22
23
|
else {
|
23
24
|
reset = lockStandardScroll({ container });
|
24
25
|
}
|
25
26
|
args.cb?.();
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
return (cb) => {
|
28
|
+
if (lockedBodyScroll)
|
29
|
+
bodyLockedCount -= 1;
|
30
|
+
console.log("bodyLockedCount remove", bodyLockedCount, lockedBodyScroll);
|
31
|
+
reset();
|
32
|
+
cb?.();
|
33
|
+
};
|
33
34
|
};
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "reshaped",
|
3
3
|
"description": "Professionally crafted design system in React & Figma for building products of any scale and complexity",
|
4
|
-
"version": "3.8.0-canary.
|
4
|
+
"version": "3.8.0-canary.11",
|
5
5
|
"license": "MIT",
|
6
6
|
"email": "hello@reshaped.so",
|
7
7
|
"homepage": "https://reshaped.so",
|
@@ -89,8 +89,8 @@
|
|
89
89
|
"release:minor": "node bin/release.js minor",
|
90
90
|
"release:major": "node bin/release.js major",
|
91
91
|
"release:lib": "pnpm build && pnpm publish",
|
92
|
-
"release:canary": "pnpm build && yarn publish --tag canary",
|
93
|
-
"release:test": "pnpm build && pnpm pack --
|
92
|
+
"release:canary": "pnpm build && yarn publish --tag canary && git push --follow-tags",
|
93
|
+
"release:test": "pnpm build && pnpm pack --out reshaped-test.tgz",
|
94
94
|
"release:copy": "sh ./bin/release-copy.sh",
|
95
95
|
"chromatic": "chromatic -b build:chromatic --project-token=$(cat .chromatic)",
|
96
96
|
"test:vrt": "pnpm chromatic",
|
@@ -110,34 +110,34 @@
|
|
110
110
|
"@commitlint/cli": "19.8.1",
|
111
111
|
"@commitlint/config-conventional": "19.8.1",
|
112
112
|
"@commitlint/types": "19.8.1",
|
113
|
-
"@eslint/js": "9.
|
113
|
+
"@eslint/js": "9.37.0",
|
114
114
|
"@size-limit/preset-big-lib": "11.2.0",
|
115
|
-
"@storybook/addon-a11y": "9.1.
|
116
|
-
"@storybook/addon-docs": "9.1.
|
117
|
-
"@storybook/addon-vitest": "9.1.
|
118
|
-
"@storybook/react": "9.1.
|
119
|
-
"@storybook/react-vite": "9.1.
|
115
|
+
"@storybook/addon-a11y": "9.1.10",
|
116
|
+
"@storybook/addon-docs": "9.1.10",
|
117
|
+
"@storybook/addon-vitest": "9.1.10",
|
118
|
+
"@storybook/react": "9.1.10",
|
119
|
+
"@storybook/react-vite": "9.1.10",
|
120
120
|
"@testing-library/user-event": "14.6.1",
|
121
121
|
"@types/culori": "4.0.1",
|
122
122
|
"@types/events": "3.0.3",
|
123
|
-
"@types/node": "24.
|
124
|
-
"@types/react": "19.1
|
125
|
-
"@types/react-dom": "19.
|
123
|
+
"@types/node": "24.7.0",
|
124
|
+
"@types/react": "19.2.1",
|
125
|
+
"@types/react-dom": "19.2.0",
|
126
126
|
"@vitejs/plugin-react": "4.6.0",
|
127
127
|
"@vitest/browser": "3.2.4",
|
128
128
|
"@vitest/coverage-istanbul": "3.2.4",
|
129
129
|
"@vitest/coverage-v8": "3.2.4",
|
130
|
-
"chromatic": "13.
|
130
|
+
"chromatic": "13.3.0",
|
131
131
|
"conventional-changelog-cli": "5.0.0",
|
132
132
|
"cz-conventional-changelog": "3.3.0",
|
133
|
-
"eslint": "9.
|
133
|
+
"eslint": "9.37.0",
|
134
134
|
"eslint-config-prettier": "10.1.8",
|
135
135
|
"eslint-plugin-jsx-a11y": "6.10.2",
|
136
136
|
"eslint-plugin-prettier": "5.5.4",
|
137
137
|
"eslint-plugin-react": "7.37.5",
|
138
|
-
"eslint-plugin-react-hooks": "
|
139
|
-
"lefthook": "1.13.
|
140
|
-
"playwright": "1.
|
138
|
+
"eslint-plugin-react-hooks": "6.1.1",
|
139
|
+
"lefthook": "1.13.6",
|
140
|
+
"playwright": "1.56.0",
|
141
141
|
"postcss": "8.5.6",
|
142
142
|
"postcss-cli": "11.0.1",
|
143
143
|
"postcss-each": "1.1.0",
|
@@ -148,14 +148,14 @@
|
|
148
148
|
"react-shadow": "20.6.0",
|
149
149
|
"resolve-tspaths": "0.8.23",
|
150
150
|
"size-limit": "11.2.0",
|
151
|
-
"storybook": "9.1.
|
152
|
-
"stylelint": "16.
|
151
|
+
"storybook": "9.1.10",
|
152
|
+
"stylelint": "16.25.0",
|
153
153
|
"stylelint-config-prettier": "9.0.5",
|
154
|
-
"stylelint-config-standard": "39.0.
|
154
|
+
"stylelint-config-standard": "39.0.1",
|
155
155
|
"ts-node": "10.9.2",
|
156
|
-
"typescript": "5.9.
|
157
|
-
"typescript-eslint": "8.
|
158
|
-
"vite": "7.1.
|
156
|
+
"typescript": "5.9.3",
|
157
|
+
"typescript-eslint": "8.46.0",
|
158
|
+
"vite": "7.1.9",
|
159
159
|
"vite-tsconfig-paths": "5.1.4",
|
160
160
|
"vitest": "3.2.4",
|
161
161
|
"vitest-browser-react": "1.0.1"
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import { StoryObj } from "@storybook/react-vite";
|
2
|
-
import { fn } from "storybook/test";
|
3
|
-
declare const _default: {
|
4
|
-
title: string;
|
5
|
-
component: import("react").ForwardRefExoticComponent<import("./..").ActionableProps & import("react").RefAttributes<import("./..").ActionableRef>>;
|
6
|
-
parameters: {
|
7
|
-
iframe: {
|
8
|
-
url: string;
|
9
|
-
};
|
10
|
-
chromatic: {
|
11
|
-
disableSnapshot: boolean;
|
12
|
-
};
|
13
|
-
};
|
14
|
-
};
|
15
|
-
export default _default;
|
16
|
-
export declare const children: StoryObj;
|
17
|
-
export declare const href: StoryObj;
|
18
|
-
export declare const attributesHref: StoryObj;
|
19
|
-
export declare const onClick: StoryObj<{
|
20
|
-
handleClick: ReturnType<typeof fn>;
|
21
|
-
}>;
|
22
|
-
export declare const hrefOnClick: StoryObj<{
|
23
|
-
handleClick: ReturnType<typeof fn>;
|
24
|
-
}>;
|
25
|
-
export declare const as: StoryObj;
|
26
|
-
export declare const type: StoryObj<{
|
27
|
-
handleSubmit: ReturnType<typeof fn>;
|
28
|
-
}>;
|
29
|
-
export declare const stopPropagation: StoryObj<{
|
30
|
-
handleParentClick: ReturnType<typeof fn>;
|
31
|
-
}>;
|
32
|
-
export declare const className: StoryObj;
|