reshaped 3.2.0-canary.6 → 3.2.0
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 +1 -35
- package/dist/bundle.css +1 -1
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.js +11 -12
- package/dist/cjs/constants/breakpoints.d.ts +6 -0
- package/dist/cjs/constants/breakpoints.js +7 -0
- package/dist/cjs/themes/_generator/definitions/reshaped.js +8 -4
- package/dist/cjs/themes/_generator/tokens/viewport/viewport.transforms.js +10 -1
- package/dist/cjs/themes/figma/theme.css +1 -1
- package/dist/cjs/themes/reshaped/theme.css +1 -1
- package/dist/cjs/themes/slate/theme.css +1 -1
- package/dist/components/Actionable/Actionable.d.ts +1 -1
- package/dist/components/Actionable/Actionable.module.css +1 -1
- package/dist/components/Autocomplete/Autocomplete.js +2 -2
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/Button/Button.module.css +1 -1
- 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 +1 -1
- package/dist/components/Checkbox/Checkbox.module.css +1 -1
- package/dist/components/Divider/Divider.js +4 -3
- package/dist/components/Divider/Divider.module.css +1 -1
- package/dist/components/Divider/Divider.types.d.ts +3 -0
- package/dist/components/Divider/tests/Divider.stories.d.ts +1 -0
- package/dist/components/Divider/tests/Divider.stories.js +21 -0
- package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +1 -1
- package/dist/components/FormControl/FormControl.context.d.ts +2 -1
- package/dist/components/Grid/Grid.d.ts +6 -0
- package/dist/components/Grid/Grid.js +46 -0
- package/dist/components/Grid/Grid.module.css +1 -0
- package/dist/components/Grid/Grid.types.d.ts +31 -0
- package/dist/components/Grid/Grid.types.js +1 -0
- package/dist/components/Grid/index.d.ts +2 -0
- package/dist/components/Grid/index.js +1 -0
- package/dist/components/Grid/tests/Grid.stories.d.ts +18 -0
- package/dist/components/Grid/tests/Grid.stories.js +170 -0
- package/dist/components/Icon/Icon.module.css +1 -1
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/Link/tests/Link.stories.d.ts +1 -1
- package/dist/components/Loader/Loader.module.css +1 -1
- package/dist/components/Loader/Loader.types.d.ts +1 -1
- package/dist/components/Loader/tests/Loader.stories.js +5 -3
- package/dist/components/Modal/Modal.js +7 -4
- package/dist/components/Modal/Modal.module.css +1 -1
- package/dist/components/Modal/Modal.types.d.ts +1 -1
- package/dist/components/Modal/tests/Modal.stories.d.ts +1 -0
- package/dist/components/Modal/tests/Modal.stories.js +28 -1
- package/dist/components/Overlay/Overlay.js +45 -27
- package/dist/components/Overlay/Overlay.module.css +1 -1
- package/dist/components/Overlay/Overlay.types.d.ts +1 -0
- package/dist/components/Popover/Popover.js +2 -4
- package/dist/components/Popover/Popover.types.d.ts +1 -1
- package/dist/components/Radio/Radio.module.css +1 -1
- package/dist/components/Resizable/Resizable.module.css +1 -1
- package/dist/components/ScrollArea/ScrollArea.js +1 -1
- package/dist/components/Slider/Slider.module.css +1 -1
- package/dist/components/Slider/SliderControlled.js +2 -1
- package/dist/components/Switch/Switch.module.css +1 -1
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/Tabs/Tabs.module.css +1 -1
- package/dist/components/Tabs/TabsContext.d.ts +1 -1
- package/dist/components/Tabs/TabsItem.d.ts +1 -1
- package/dist/components/Tabs/TabsItem.js +2 -3
- package/dist/components/Tabs/TabsList.js +1 -1
- package/dist/components/Tabs/tests/Tabs.stories.d.ts +15 -13
- package/dist/components/Tabs/tests/Tabs.stories.js +71 -8
- package/dist/components/TextField/TextField.js +5 -1
- package/dist/components/TextField/TextField.module.css +1 -1
- package/dist/components/TextField/tests/TextField.stories.js +4 -0
- package/dist/components/Toast/ToastContainer.js +1 -2
- package/dist/components/Toast/ToastRegion.js +1 -1
- package/dist/components/View/View.js +7 -3
- package/dist/components/View/View.module.css +1 -1
- package/dist/components/View/View.types.d.ts +2 -2
- package/dist/components/_private/Flyout/Flyout.module.css +1 -1
- package/dist/components/_private/Flyout/Flyout.types.d.ts +11 -3
- package/dist/components/_private/Flyout/FlyoutContent.js +1 -1
- package/dist/components/_private/Flyout/FlyoutControlled.js +25 -15
- package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +3 -1
- package/dist/components/_private/Flyout/tests/Flyout.stories.js +54 -32
- package/dist/components/_private/Flyout/useFlyout.d.ts +2 -1
- package/dist/components/_private/Flyout/useFlyout.js +45 -55
- package/dist/components/_private/Flyout/utilities/calculatePosition.js +16 -11
- package/dist/components/_private/Flyout/utilities/getPositionFallbacks.d.ts +3 -0
- package/dist/components/_private/Flyout/utilities/getPositionFallbacks.js +39 -0
- package/dist/config/tailwind.d.ts +1 -1
- package/dist/constants/breakpoints.d.ts +6 -0
- package/dist/constants/breakpoints.js +5 -0
- package/dist/hooks/_private/useIsDismissible.js +7 -14
- package/dist/hooks/_private/useSingletonKeyboardMode.js +1 -1
- package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +1 -2
- package/dist/hooks/tests/useResponsiveClientValue.stories.js +1 -2
- package/dist/hooks/useDrag.js +2 -1
- package/dist/hooks/useResponsiveClientValue.js +22 -11
- package/dist/hooks/useScrollLock.d.ts +4 -1
- package/dist/hooks/useScrollLock.js +14 -40
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/styles/align/align.module.css +1 -0
- package/dist/styles/align/index.d.ts +3 -0
- package/dist/styles/align/index.js +10 -0
- package/dist/styles/justify/index.d.ts +3 -0
- package/dist/styles/justify/index.js +10 -0
- package/dist/styles/justify/justify.module.css +1 -0
- package/dist/styles/types.d.ts +2 -0
- package/dist/themes/_generator/definitions/reshaped.js +5 -4
- package/dist/themes/_generator/tokens/viewport/viewport.transforms.js +10 -1
- package/dist/themes/figma/theme.css +1 -1
- package/dist/themes/reshaped/theme.css +1 -1
- package/dist/themes/slate/theme.css +1 -1
- package/dist/utilities/a11y/TrapFocus.d.ts +1 -1
- package/dist/utilities/a11y/TrapFocus.js +1 -1
- package/dist/utilities/a11y/focus.js +1 -1
- package/dist/utilities/a11y/index.d.ts +4 -0
- package/dist/utilities/a11y/index.js +3 -0
- package/dist/utilities/css.d.ts +7 -0
- package/dist/utilities/css.js +18 -0
- package/dist/utilities/dom/flyout.d.ts +1 -0
- package/dist/utilities/{dom.js → dom/flyout.js} +1 -19
- package/dist/utilities/dom/index.d.ts +3 -0
- package/dist/utilities/dom/index.js +3 -0
- package/dist/utilities/dom/shadowDom.d.ts +1 -0
- package/dist/utilities/dom/shadowDom.js +4 -0
- package/dist/utilities/dom/userSelect.d.ts +2 -0
- package/dist/utilities/dom/userSelect.js +6 -0
- package/dist/utilities/platform.d.ts +1 -0
- package/dist/utilities/platform.js +15 -0
- package/dist/utilities/scroll/disable.d.ts +7 -0
- package/dist/utilities/scroll/disable.js +13 -0
- package/dist/utilities/scroll/helpers.d.ts +1 -0
- package/dist/utilities/scroll/helpers.js +17 -0
- package/dist/utilities/scroll/index.d.ts +2 -0
- package/dist/utilities/scroll/index.js +2 -0
- package/dist/utilities/scroll/lock.d.ts +5 -0
- package/dist/utilities/scroll/lock.js +24 -0
- package/dist/utilities/scroll/lockSafari.d.ts +2 -0
- package/dist/utilities/scroll/lockSafari.js +21 -0
- package/dist/utilities/scroll/lockStandard.d.ts +2 -0
- package/dist/utilities/scroll/lockStandard.js +17 -0
- package/dist/utilities/storybook/Placeholder.d.ts +1 -0
- package/dist/utilities/storybook/Placeholder.js +2 -2
- package/package.json +45 -48
- package/dist/utilities/dom.d.ts +0 -6
@@ -0,0 +1,46 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { classNames, responsiveVariables, responsivePropDependency } from "../../utilities/helpers.js";
|
3
|
+
import getAlignStyles from "../../styles/align/index.js";
|
4
|
+
import getJustifyStyles from "../../styles/justify/index.js";
|
5
|
+
import s from "./Grid.module.css";
|
6
|
+
const GridItem = (props) => {
|
7
|
+
const { area, colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, children, className, as: TagName = "div", attributes, } = props;
|
8
|
+
const itemClassNames = classNames(s.item, className);
|
9
|
+
const resolvedColSpan = responsivePropDependency(colSpan, (value) => value && `span ${value}`);
|
10
|
+
const resolvedRowSpan = responsivePropDependency(rowSpan, (value) => value && `span ${value}`);
|
11
|
+
const rootVariables = {
|
12
|
+
...responsiveVariables("--rs-grid-area", area),
|
13
|
+
...responsiveVariables("--rs-grid-col-end", resolvedColSpan),
|
14
|
+
// both span and end use the same css variable but end has a higher prioerity
|
15
|
+
...responsiveVariables("--rs-grid-col-end", colEnd),
|
16
|
+
...responsiveVariables("--rs-grid-col-start", colStart),
|
17
|
+
...responsiveVariables("--rs-grid-row-end", resolvedRowSpan),
|
18
|
+
...responsiveVariables("--rs-grid-row-end", rowEnd),
|
19
|
+
...responsiveVariables("--rs-grid-row-start", rowStart),
|
20
|
+
};
|
21
|
+
return (_jsx(TagName, { ...attributes, className: itemClassNames, style: rootVariables, children: children }));
|
22
|
+
};
|
23
|
+
const Grid = (props) => {
|
24
|
+
const { areas, columns, rows, gap, align, justify, autoColumns, autoRows, autoFlow, children, className, as: TagName = "div", attributes, } = props;
|
25
|
+
const alignStyles = getAlignStyles(align);
|
26
|
+
const justifyStyles = getJustifyStyles(justify);
|
27
|
+
const resolvedRows = responsivePropDependency(rows, (value) => typeof value === "number" ? `repeat(${value}, 1fr)` : value);
|
28
|
+
const resolvedColumns = responsivePropDependency(columns, (value) => typeof value === "number" ? `repeat(${value}, 1fr)` : value);
|
29
|
+
const resolvedAreas = responsivePropDependency(areas, (value) => value
|
30
|
+
? `"${value?.join('" "')}"
|
31
|
+
`
|
32
|
+
: undefined);
|
33
|
+
const rootClassNames = classNames(s.root, alignStyles?.classNames, justifyStyles?.classNames, className);
|
34
|
+
const rootVariables = {
|
35
|
+
...responsiveVariables("--rs-grid-gap", gap),
|
36
|
+
...responsiveVariables("--rs-grid-rows", resolvedRows),
|
37
|
+
...responsiveVariables("--rs-grid-columns", resolvedColumns),
|
38
|
+
...responsiveVariables("--rs-grid-areas", resolvedAreas),
|
39
|
+
...responsiveVariables("--rs-grid-auto-flow", autoFlow),
|
40
|
+
...responsiveVariables("--rs-grid-auto-columns", autoColumns),
|
41
|
+
...responsiveVariables("--rs-grid-auto-rows", autoRows),
|
42
|
+
};
|
43
|
+
return (_jsx(TagName, { ...attributes, className: rootClassNames, style: rootVariables, children: children }));
|
44
|
+
};
|
45
|
+
Grid.Item = GridItem;
|
46
|
+
export default Grid;
|
@@ -0,0 +1 @@
|
|
1
|
+
.root{display:grid}.root[style*="--rs-grid-gap"]{--rs-grid-gap-value:calc(var(--rs-grid-gap) * var(--rs-unit-x1));gap:var(--rs-grid-gap-value);--rs-grid-gap-s:0;--rs-grid-gap-m:var(--rs-grid-gap-s);--rs-grid-gap-l:var(--rs-grid-gap-m);--rs-grid-gap-xl:var(--rs-grid-gap-l);--rs-grid-gap:var(--rs-grid-gap-s)}.root[style*="--rs-grid-rows"]{grid-template-rows:var(--rs-grid-rows);--rs-grid-rows-s: ;--rs-grid-rows-m:var(--rs-grid-rows-s);--rs-grid-rows-l:var(--rs-grid-rows-m);--rs-grid-rows-xl:var(--rs-grid-rows-l);--rs-grid-rows:var(--rs-grid-rows-s)}.root[style*="--rs-grid-columns"]{grid-template-columns:var(--rs-grid-columns);--rs-grid-columns-s: ;--rs-grid-columns-m:var(--rs-grid-columns-s);--rs-grid-columns-l:var(--rs-grid-columns-m);--rs-grid-columns-xl:var(--rs-grid-columns-l);--rs-grid-columns:var(--rs-grid-columns-s)}.root[style*="--rs-grid-areas"]{grid-template-areas:var(--rs-grid-areas);--rs-grid-areas-s: ;--rs-grid-areas-m:var(--rs-grid-areas-s);--rs-grid-areas-l:var(--rs-grid-areas-m);--rs-grid-areas-xl:var(--rs-grid-areas-l);--rs-grid-areas:var(--rs-grid-areas-s)}.root[style*="--rs-grid-auto-flow"]{grid-auto-flow:var(--rs-grid-auto-flow);--rs-grid-auto-flow-s: ;--rs-grid-auto-flow-m:var(--rs-grid-auto-flow-s);--rs-grid-auto-flow-l:var(--rs-grid-auto-flow-m);--rs-grid-auto-flow-xl:var(--rs-grid-auto-flow-l);--rs-grid-auto-flow:var(--rs-grid-auto-flow-s)}.root[style*="--rs-grid-auto-columns"]{grid-auto-columns:var(--rs-grid-auto-columns);--rs-grid-auto-columns-s: ;--rs-grid-auto-columns-m:var(--rs-grid-auto-columns-s);--rs-grid-auto-columns-l:var(--rs-grid-auto-columns-m);--rs-grid-auto-columns-xl:var(--rs-grid-auto-columns-l);--rs-grid-auto-columns:var(--rs-grid-auto-columns-s)}.root[style*="--rs-grid-auto-rows"]{grid-auto-rows:var(--rs-grid-auto-rows);--rs-grid-auto-rows-s: ;--rs-grid-auto-rows-m:var(--rs-grid-auto-rows-s);--rs-grid-auto-rows-l:var(--rs-grid-auto-rows-m);--rs-grid-auto-rows-xl:var(--rs-grid-auto-rows-l);--rs-grid-auto-rows:var(--rs-grid-auto-rows-s)}.item[style*="--rs-grid-area"]{grid-area:var(--rs-grid-area);--rs-grid-area-s: ;--rs-grid-area-m:var(--rs-grid-area-s);--rs-grid-area-l:var(--rs-grid-area-m);--rs-grid-area-xl:var(--rs-grid-area-l);--rs-grid-area:var(--rs-grid-area-s)}.item[style*="--rs-grid-col-start"]{grid-column-start:var(--rs-grid-col-start);--rs-grid-col-start-s: ;--rs-grid-col-start-m:var(--rs-grid-col-start-s);--rs-grid-col-start-l:var(--rs-grid-col-start-m);--rs-grid-col-start-xl:var(--rs-grid-col-start-l);--rs-grid-col-start:var(--rs-grid-col-start-s)}.item[style*="--rs-grid-col-end"]{grid-column-end:var(--rs-grid-col-end);--rs-grid-col-end-s: ;--rs-grid-col-end-m:var(--rs-grid-col-end-s);--rs-grid-col-end-l:var(--rs-grid-col-end-m);--rs-grid-col-end-xl:var(--rs-grid-col-end-l);--rs-grid-col-end:var(--rs-grid-col-end-s)}.item[style*="--rs-grid-row-start"]{grid-row-start:var(--rs-grid-row-start);--rs-grid-row-start-s: ;--rs-grid-row-start-m:var(--rs-grid-row-start-s);--rs-grid-row-start-l:var(--rs-grid-row-start-m);--rs-grid-row-start-xl:var(--rs-grid-row-start-l);--rs-grid-row-start:var(--rs-grid-row-start-s)}.item[style*="--rs-grid-row-end"]{grid-row-end:var(--rs-grid-row-end);--rs-grid-row-end-s: ;--rs-grid-row-end-m:var(--rs-grid-row-end-s);--rs-grid-row-end-l:var(--rs-grid-row-end-m);--rs-grid-row-end-xl:var(--rs-grid-row-end-l);--rs-grid-row-end:var(--rs-grid-row-end-s)}@media (--rs-viewport-m ){.root[style*="--rs-grid-gap"]{--rs-grid-gap:var(--rs-grid-gap-m)}.root[style*="--rs-grid-rows"]{--rs-grid-rows:var(--rs-grid-rows-m)}.root[style*="--rs-grid-columns"]{--rs-grid-columns:var(--rs-grid-columns-m)}.root[style*="--rs-grid-areas"]{--rs-grid-areas:var(--rs-grid-areas-m)}.root[style*="--rs-grid-auto-flow"]{--rs-grid-auto-flow:var(--rs-grid-auto-flow-m)}.root[style*="--rs-grid-auto-columns"]{--rs-grid-auto-columns:var(--rs-grid-auto-columns-m)}.root[style*="--rs-grid-auto-rows"]{--rs-grid-auto-rows:var(--rs-grid-auto-rows-m)}.item[style*="--rs-grid-area"]{--rs-grid-area:var(--rs-grid-area-m)}.item[style*="--rs-grid-col-start"]{--rs-grid-col-start:var(--rs-grid-col-start-m)}.item[style*="--rs-grid-col-end"]{--rs-grid-col-end:var(--rs-grid-col-end-m)}.item[style*="--rs-grid-row-start"]{--rs-grid-row-start:var(--rs-grid-row-start-m)}.item[style*="--rs-grid-row-end"]{--rs-grid-row-end:var(--rs-grid-row-end-m)}}@media (--rs-viewport-l ){.root[style*="--rs-grid-gap"]{--rs-grid-gap:var(--rs-grid-gap-l)}.root[style*="--rs-grid-rows"]{--rs-grid-rows:var(--rs-grid-rows-l)}.root[style*="--rs-grid-columns"]{--rs-grid-columns:var(--rs-grid-columns-l)}.root[style*="--rs-grid-areas"]{--rs-grid-areas:var(--rs-grid-areas-l)}.root[style*="--rs-grid-auto-flow"]{--rs-grid-auto-flow:var(--rs-grid-auto-flow-l)}.root[style*="--rs-grid-auto-columns"]{--rs-grid-auto-columns:var(--rs-grid-auto-columns-l)}.root[style*="--rs-grid-auto-rows"]{--rs-grid-auto-rows:var(--rs-grid-auto-rows-l)}.item[style*="--rs-grid-area"]{--rs-grid-area:var(--rs-grid-area-l)}.item[style*="--rs-grid-col-start"]{--rs-grid-col-start:var(--rs-grid-col-start-l)}.item[style*="--rs-grid-col-end"]{--rs-grid-col-end:var(--rs-grid-col-end-l)}.item[style*="--rs-grid-row-start"]{--rs-grid-row-start:var(--rs-grid-row-start-l)}.item[style*="--rs-grid-row-end"]{--rs-grid-row-end:var(--rs-grid-row-end-l)}}@media (--rs-viewport-xl ){.root[style*="--rs-grid-gap"]{--rs-grid-gap:var(--rs-grid-gap-xl)}.root[style*="--rs-grid-rows"]{--rs-grid-rows:var(--rs-grid-rows-xl)}.root[style*="--rs-grid-columns"]{--rs-grid-columns:var(--rs-grid-columns-xl)}.root[style*="--rs-grid-areas"]{--rs-grid-areas:var(--rs-grid-areas-xl)}.root[style*="--rs-grid-auto-flow"]{--rs-grid-auto-flow:var(--rs-grid-auto-flow-xl)}.root[style*="--rs-grid-auto-columns"]{--rs-grid-auto-columns:var(--rs-grid-auto-columns-xl)}.root[style*="--rs-grid-auto-rows"]{--rs-grid-auto-rows:var(--rs-grid-auto-rows-xl)}.item[style*="--rs-grid-area"]{--rs-grid-area:var(--rs-grid-area-xl)}.item[style*="--rs-grid-col-start"]{--rs-grid-col-start:var(--rs-grid-col-start-xl)}.item[style*="--rs-grid-col-end"]{--rs-grid-col-end:var(--rs-grid-col-end-xl)}.item[style*="--rs-grid-row-start"]{--rs-grid-row-start:var(--rs-grid-row-start-xl)}.item[style*="--rs-grid-row-end"]{--rs-grid-row-end:var(--rs-grid-row-end-xl)}}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import type { Property } from "csstype";
|
2
|
+
import type * as G from "../../types/global";
|
3
|
+
import type * as TStyles from "../../styles/types";
|
4
|
+
export type Props<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
5
|
+
gap?: G.Responsive<number>;
|
6
|
+
align?: G.Responsive<TStyles.Align>;
|
7
|
+
justify?: G.Responsive<TStyles.Justify>;
|
8
|
+
rows?: G.Responsive<number | Property.GridTemplateRows>;
|
9
|
+
columns?: G.Responsive<number | Property.GridTemplateColumns>;
|
10
|
+
areas?: G.Responsive<string[]>;
|
11
|
+
autoFlow?: G.Responsive<Property.GridAutoFlow>;
|
12
|
+
autoColumns?: G.Responsive<Property.GridAutoColumns>;
|
13
|
+
autoRows?: G.Responsive<Property.GridAutoRows>;
|
14
|
+
children?: React.ReactNode;
|
15
|
+
as?: TagName;
|
16
|
+
className?: G.ClassName;
|
17
|
+
attributes?: G.Attributes<TagName>;
|
18
|
+
};
|
19
|
+
export type ItemProps<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
20
|
+
area?: string;
|
21
|
+
colStart?: G.Responsive<number>;
|
22
|
+
colEnd?: G.Responsive<number>;
|
23
|
+
colSpan?: G.Responsive<number>;
|
24
|
+
rowStart?: G.Responsive<number>;
|
25
|
+
rowEnd?: G.Responsive<number>;
|
26
|
+
rowSpan?: G.Responsive<number>;
|
27
|
+
children?: React.ReactNode;
|
28
|
+
as?: TagName;
|
29
|
+
className?: G.ClassName;
|
30
|
+
attributes?: G.Attributes<TagName>;
|
31
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from "./Grid.js";
|
@@ -0,0 +1,18 @@
|
|
1
|
+
declare const _default: {
|
2
|
+
title: string;
|
3
|
+
component: {
|
4
|
+
<As extends keyof JSX.IntrinsicElements = "div">(props: import("./..").GridProps<As>): import("react").JSX.Element;
|
5
|
+
Item: <As extends keyof JSX.IntrinsicElements = "div">(props: import("./..").GridItemProps<As>) => import("react").JSX.Element;
|
6
|
+
};
|
7
|
+
parameters: {
|
8
|
+
iframe: {
|
9
|
+
url: string;
|
10
|
+
};
|
11
|
+
};
|
12
|
+
};
|
13
|
+
export default _default;
|
14
|
+
export declare const base: () => import("react").JSX.Element;
|
15
|
+
export declare const layout: () => import("react").JSX.Element;
|
16
|
+
export declare const itemLayout: () => import("react").JSX.Element;
|
17
|
+
export declare const areas: () => import("react").JSX.Element;
|
18
|
+
export declare const auto: () => import("react").JSX.Element;
|
@@ -0,0 +1,170 @@
|
|
1
|
+
import { Example } from "../../../utilities/storybook/index.js";
|
2
|
+
import Grid from "../index.js";
|
3
|
+
import View from "../../View/index.js";
|
4
|
+
export default {
|
5
|
+
title: "Utilities/Grid",
|
6
|
+
component: Grid,
|
7
|
+
parameters: {
|
8
|
+
iframe: {
|
9
|
+
url: "https://reshaped.so/docs/utilities/grid",
|
10
|
+
},
|
11
|
+
},
|
12
|
+
};
|
13
|
+
export const base = () => (<Example>
|
14
|
+
<Example.Item title="gap: 2">
|
15
|
+
<Grid gap={2} columns={2}>
|
16
|
+
{[1, 2].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
17
|
+
{i}
|
18
|
+
</View>))}
|
19
|
+
</Grid>
|
20
|
+
</Example.Item>
|
21
|
+
<Example.Item title="align: center">
|
22
|
+
<Grid gap={2} columns={2} align="center">
|
23
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4}>
|
24
|
+
1
|
25
|
+
</View>
|
26
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={8}>
|
27
|
+
2
|
28
|
+
</View>
|
29
|
+
</Grid>
|
30
|
+
</Example.Item>
|
31
|
+
<Example.Item title="justify: center">
|
32
|
+
<Grid gap={2} columns="200px 200px" justify="center">
|
33
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4}>
|
34
|
+
1
|
35
|
+
</View>
|
36
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4}>
|
37
|
+
2
|
38
|
+
</View>
|
39
|
+
</Grid>
|
40
|
+
</Example.Item>
|
41
|
+
</Example>);
|
42
|
+
export const layout = () => (<Example>
|
43
|
+
<Example.Item title="simple: 2 rows, 3 columns">
|
44
|
+
<Grid gap={4} columns={3} rows={2}>
|
45
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
46
|
+
{i}
|
47
|
+
</View>))}
|
48
|
+
</Grid>
|
49
|
+
</Example.Item>
|
50
|
+
<Example.Item title="columns template, 1fr 2fr 1fr">
|
51
|
+
<Grid gap={4} columns="1fr 2fr 1fr" rows={2}>
|
52
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
53
|
+
{i}
|
54
|
+
</View>))}
|
55
|
+
</Grid>
|
56
|
+
</Example.Item>
|
57
|
+
<Example.Item title="rows template, 1fr 2fr">
|
58
|
+
<Grid gap={4} columns={3} rows="1fr 2fr">
|
59
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
60
|
+
{i}
|
61
|
+
</View>))}
|
62
|
+
</Grid>
|
63
|
+
</Example.Item>
|
64
|
+
<Example.Item title="responsive">
|
65
|
+
<Grid gap={4} columns={{ s: 3, m: "1fr 2fr 1fr" }} rows={{ s: 2, m: "1fr 2fr" }}>
|
66
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
67
|
+
{i}
|
68
|
+
</View>))}
|
69
|
+
</Grid>
|
70
|
+
</Example.Item>
|
71
|
+
</Example>);
|
72
|
+
export const itemLayout = () => (<Example>
|
73
|
+
<Example.Item title="column, start 1, end 3">
|
74
|
+
<Grid gap={4} columns={3} rows={2}>
|
75
|
+
<Grid.Item colStart={1} colEnd={3}>
|
76
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
77
|
+
1
|
78
|
+
</View>
|
79
|
+
</Grid.Item>
|
80
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
81
|
+
{i}
|
82
|
+
</View>))}
|
83
|
+
</Grid>
|
84
|
+
</Example.Item>
|
85
|
+
<Example.Item title="column, start 1, span 2">
|
86
|
+
<Grid gap={4} columns={3} rows={2}>
|
87
|
+
<Grid.Item colStart={1} colSpan={2}>
|
88
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
89
|
+
1
|
90
|
+
</View>
|
91
|
+
</Grid.Item>
|
92
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
93
|
+
{i}
|
94
|
+
</View>))}
|
95
|
+
</Grid>
|
96
|
+
</Example.Item>
|
97
|
+
|
98
|
+
<Example.Item title="row, start 1, end 3">
|
99
|
+
<Grid gap={4} columns={3} rows={2}>
|
100
|
+
<Grid.Item rowStart={1} rowEnd={3}>
|
101
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
102
|
+
1
|
103
|
+
</View>
|
104
|
+
</Grid.Item>
|
105
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
106
|
+
{i}
|
107
|
+
</View>))}
|
108
|
+
</Grid>
|
109
|
+
</Example.Item>
|
110
|
+
|
111
|
+
<Example.Item title="row, start 1, span 2">
|
112
|
+
<Grid gap={4} columns={3} rows={2}>
|
113
|
+
<Grid.Item rowStart={1} rowSpan={2}>
|
114
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
115
|
+
1
|
116
|
+
</View>
|
117
|
+
</Grid.Item>
|
118
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
119
|
+
{i}
|
120
|
+
</View>))}
|
121
|
+
</Grid>
|
122
|
+
</Example.Item>
|
123
|
+
|
124
|
+
<Example.Item title="responsive">
|
125
|
+
<Grid gap={4} columns={3} rows={2}>
|
126
|
+
<Grid.Item rowStart={1} rowSpan={{ s: 1, m: 2 }} colStart={1} colSpan={{ s: 1, m: 2 }}>
|
127
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
128
|
+
1
|
129
|
+
</View>
|
130
|
+
</Grid.Item>
|
131
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
132
|
+
{i}
|
133
|
+
</View>))}
|
134
|
+
</Grid>
|
135
|
+
</Example.Item>
|
136
|
+
</Example>);
|
137
|
+
export const areas = () => (<Example>
|
138
|
+
<Example.Item title="simple: 2 rows, 3 columns">
|
139
|
+
<Grid gap={4} rows={2} areas={["a .", "a b"]}>
|
140
|
+
{["a", "b"].map((area) => (<Grid.Item area={area} key={area}>
|
141
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
142
|
+
{area}
|
143
|
+
</View>
|
144
|
+
</Grid.Item>))}
|
145
|
+
</Grid>
|
146
|
+
</Example.Item>
|
147
|
+
</Example>);
|
148
|
+
export const auto = () => (<Example>
|
149
|
+
<Example.Item title="auto flow: column">
|
150
|
+
<Grid gap={4} autoFlow="column" rows={2} columns={2}>
|
151
|
+
{[1, 2, 3].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
152
|
+
{i}
|
153
|
+
</View>))}
|
154
|
+
</Grid>
|
155
|
+
</Example.Item>
|
156
|
+
<Example.Item title="auto rows">
|
157
|
+
<Grid gap={4} autoRows="100px" columns={2}>
|
158
|
+
{[1, 2, 3].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
159
|
+
{i}
|
160
|
+
</View>))}
|
161
|
+
</Grid>
|
162
|
+
</Example.Item>
|
163
|
+
<Example.Item title="auto columns">
|
164
|
+
<Grid gap={4} autoColumns="100px" autoFlow="column">
|
165
|
+
{[1, 2, 3].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
166
|
+
{i}
|
167
|
+
</View>))}
|
168
|
+
</Grid>
|
169
|
+
</Example.Item>
|
170
|
+
</Example>);
|
@@ -1 +1 @@
|
|
1
|
-
.root{aspect-ratio:1;display:flex;justify-content:center}.--auto{aspect-ratio:auto;justify-content:flex-start;width:auto}.root svg{display:block;height:100%;min-width:100
|
1
|
+
.root{aspect-ratio:1;display:flex;justify-content:center}.--auto{aspect-ratio:auto;justify-content:flex-start;width:auto}.root svg{display:block;height:100%;min-width:100%;width:auto}.--color-neutral{color:var(--rs-color-foreground-neutral)}.--color-neutral-faded{color:var(--rs-color-foreground-neutral-faded)}.--color-primary{color:var(--rs-color-foreground-primary)}.--color-positive{color:var(--rs-color-foreground-positive)}.--color-warning{color:var(--rs-color-foreground-warning)}.--color-critical{color:var(--rs-color-foreground-critical)}.--color-disabled{color:var(--rs-color-foreground-disabled)}
|
@@ -2,5 +2,5 @@ declare const Link: import("react").ForwardRefExoticComponent<Pick<import("../Ac
|
|
2
2
|
icon?: import("../Icon").IconProps["svg"];
|
3
3
|
color?: "inherit" | "critical" | "primary" | "positive" | "warning";
|
4
4
|
variant?: "plain" | "underline";
|
5
|
-
} & import("react").RefAttributes<
|
5
|
+
} & import("react").RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
6
6
|
export default Link;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
declare const _default: {
|
2
2
|
title: string;
|
3
|
-
component: import("react").ForwardRefExoticComponent<Pick<import("../../Actionable").ActionableProps, "children" | "
|
3
|
+
component: import("react").ForwardRefExoticComponent<Pick<import("../../Actionable").ActionableProps, "children" | "disabled" | "className" | "attributes" | "type" | "onClick" | "href"> & {
|
4
4
|
icon?: import("../../Icon").IconProps["svg"];
|
5
5
|
color?: "inherit" | "critical" | "primary" | "positive" | "warning";
|
6
6
|
variant?: "plain" | "underline";
|
@@ -1 +1 @@
|
|
1
|
-
@keyframes rs-reshaped-loader{0%{transform:rotate(0deg)}50%{transform:rotate(540deg)}to{transform:rotate(3turn)}}.root{animation:rs-reshaped-loader 2.2s cubic-bezier(.445,.05,.55,.95) infinite;display:block;height:var(--rs-loader-size);position:relative;width:var(--rs-loader-size)}.root:after,.root:before{background:var(--rs-loader-color);border-radius:50%;content:"";height:var(--rs-loader-stroke);position:absolute;top:50%;transform:translateY(-50%);width:var(--rs-loader-stroke);z-index:2}.root:before{left:0}.root:after{right:0}.inner:after,.inner:before{border:var(--rs-loader-stroke) solid var(--rs-loader-color);border-radius:50%;content:"";inset:0;position:absolute}.inner:before{opacity:.28}.inner:after{border-bottom-color:transparent;border-left-color:transparent;transform:rotate(-45deg)}.--color-inherit{--rs-loader-color:currentcolor}.--color-primary{--rs-loader-color:var(--rs-color-border-primary)}.--color-positive{--rs-loader-color:var(--rs-color-border-positive)}.--color-critical{--rs-loader-color:var(--rs-color-border-critical)}.--size-small{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}@media (--rs-viewport-m ){.--size-small--m{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--m{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}}@media (--rs-viewport-l ){.--size-small--l{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--l{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--xl{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}}
|
1
|
+
@keyframes rs-reshaped-loader{0%{transform:rotate(0deg)}50%{transform:rotate(540deg)}to{transform:rotate(3turn)}}.root{animation:rs-reshaped-loader 2.2s cubic-bezier(.445,.05,.55,.95) infinite;display:block;height:var(--rs-loader-size);position:relative;width:var(--rs-loader-size)}.root:after,.root:before{background:var(--rs-loader-color);border-radius:50%;content:"";height:var(--rs-loader-stroke);position:absolute;top:50%;transform:translateY(-50%);width:var(--rs-loader-stroke);z-index:2}.root:before{left:0}.root:after{right:0}.inner:after,.inner:before{border:var(--rs-loader-stroke) solid var(--rs-loader-color);border-radius:50%;content:"";inset:0;position:absolute}.inner:before{opacity:.28}.inner:after{border-bottom-color:transparent;border-left-color:transparent;transform:rotate(-45deg)}.--color-inherit{--rs-loader-color:currentcolor}.--color-primary{--rs-loader-color:var(--rs-color-border-primary)}.--color-positive{--rs-loader-color:var(--rs-color-border-positive)}.--color-critical{--rs-loader-color:var(--rs-color-border-critical)}.--size-small{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}@media (--rs-viewport-m ){.--size-small--m{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--m{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large--m{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}}@media (--rs-viewport-l ){.--size-small--l{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--l{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large--l{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--xl{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large--xl{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type * as G from "../../types/global";
|
2
2
|
export type Props = {
|
3
|
-
size?: G.Responsive<"small" | "medium">;
|
3
|
+
size?: G.Responsive<"small" | "medium" | "large">;
|
4
4
|
color?: "primary" | "critical" | "positive" | "inherit";
|
5
5
|
className?: G.ClassName;
|
6
6
|
attributes?: G.Attributes<"span">;
|
@@ -10,13 +10,15 @@ export default {
|
|
10
10
|
},
|
11
11
|
};
|
12
12
|
export const size = () => {
|
13
|
-
const attributes = {};
|
14
13
|
return (<Example>
|
15
14
|
<Example.Item title="size: medium">
|
16
|
-
<Loader size="medium"
|
15
|
+
<Loader size="medium"/>
|
17
16
|
</Example.Item>
|
18
17
|
<Example.Item title="size: small">
|
19
|
-
<Loader size="small"
|
18
|
+
<Loader size="small"/>
|
19
|
+
</Example.Item>
|
20
|
+
<Example.Item title="size: large">
|
21
|
+
<Loader size="large"/>
|
20
22
|
</Example.Item>
|
21
23
|
<Example.Item title={["responsive size", "[s] small", "[m+] medium"]}>
|
22
24
|
<Loader size={{ s: "small", m: "medium" }}/>
|
@@ -2,7 +2,8 @@
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
3
3
|
import React from "react";
|
4
4
|
import { classNames, responsiveVariables, responsiveClassNames } from "../../utilities/helpers.js";
|
5
|
-
import { enableUserSelect, disableUserSelect } from "../../utilities/dom.js";
|
5
|
+
import { enableUserSelect, disableUserSelect } from "../../utilities/dom/index.js";
|
6
|
+
import { enableScroll, disableScroll } from "../../utilities/scroll/index.js";
|
6
7
|
import useResponsiveClientValue from "../../hooks/useResponsiveClientValue.js";
|
7
8
|
import Text from "../Text/index.js";
|
8
9
|
import Overlay from "../Overlay/index.js";
|
@@ -40,7 +41,7 @@ const ModalSubtitle = (props) => {
|
|
40
41
|
return (_jsx(Text, { variant: "body-3", color: "neutral-faded", attributes: { id: `${id}-subtitle` }, children: children }));
|
41
42
|
};
|
42
43
|
const Modal = (props) => {
|
43
|
-
const { children, onClose, onOpen, active, size, padding = 4, position = "center", overflow, transparentOverlay, blurredOverlay, ariaLabel, autoFocus = true, disableSwipeGesture, disableCloseOnOutsideClick, overlayClassName, className, attributes, } = props;
|
44
|
+
const { children, onClose, onOpen, active, size, padding = 4, position = "center", overflow, transparentOverlay, blurredOverlay, ariaLabel, autoFocus = true, disableSwipeGesture, disableCloseOnOutsideClick, containerRef, overlayClassName, className, attributes, } = props;
|
44
45
|
const onCloseRef = useHandlerRef(onClose);
|
45
46
|
const id = useElementId();
|
46
47
|
const clientPosition = useResponsiveClientValue(position);
|
@@ -90,6 +91,7 @@ const Modal = (props) => {
|
|
90
91
|
if (clientPosition === "start" && e.targetTouches[0].clientX < DRAG_EDGE_BOUNDARY)
|
91
92
|
return;
|
92
93
|
disableUserSelect();
|
94
|
+
disableScroll();
|
93
95
|
setDragging(true);
|
94
96
|
};
|
95
97
|
// Once modal is closed - reset its drag data
|
@@ -107,6 +109,7 @@ const Modal = (props) => {
|
|
107
109
|
return;
|
108
110
|
const handleDragEnd = () => {
|
109
111
|
enableUserSelect();
|
112
|
+
enableScroll();
|
110
113
|
setDragging(false);
|
111
114
|
// Close only when dragging in the closing direction
|
112
115
|
// Changing to a different direction will keep the modal opened
|
@@ -165,10 +168,10 @@ const Modal = (props) => {
|
|
165
168
|
setHideProgress(progress / 2);
|
166
169
|
dragDistanceRef.current = dragDistance;
|
167
170
|
}, [dragDistance, clientPosition, rootRef]);
|
168
|
-
return (_jsx(Overlay, { onClose: onClose, onOpen: onOpen, disableCloseOnClick: disableCloseOnOutsideClick, active: active, transparent: transparentOverlay || hideProgress, blurred: blurredOverlay, className: overlayClassName, attributes: {
|
171
|
+
return (_jsx(Overlay, { onClose: onClose, onOpen: onOpen, disableCloseOnClick: disableCloseOnOutsideClick, active: active, transparent: transparentOverlay || hideProgress, blurred: blurredOverlay, className: overlayClassName, containerRef: containerRef, attributes: {
|
169
172
|
onTouchStart: handleDragStart,
|
170
173
|
}, children: ({ active }) => {
|
171
|
-
const rootClassNames = classNames(s.root, className, paddingStyles?.classNames, active && s["--active"], dragging && s["--dragging"], overflow && s[`--overflow-${overflow}`], responsiveClassNames(s, "--position", position));
|
174
|
+
const rootClassNames = classNames(s.root, className, paddingStyles?.classNames, active && s["--active"], dragging && s["--dragging"], overflow && s[`--overflow-${overflow}`], containerRef && s["--contained"], responsiveClassNames(s, "--position", position));
|
172
175
|
return (_jsx(Context.Provider, { value: value, children: _jsx("div", { ...attributes, style: {
|
173
176
|
...paddingStyles?.variables,
|
174
177
|
...responsiveVariables("--rs-modal-size", size),
|
@@ -1 +1 @@
|
|
1
|
-
.root{background:var(--rs-color-background-elevation-overlay);box-shadow:var(--rs-shadow-overlay);color:var(--rs-color-foreground-neutral);transition:var(--rs-easing-accelerate) var(--rs-duration-medium);transition-property:transform,opacity;will-change:transform}.root:focus-visible{box-shadow:var(--rs-focus-shadow);outline:none}.root{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);--rs-modal-size-m:var(--rs-modal-size-s);--rs-modal-size-l:var(--rs-modal-size-m);--rs-modal-size-xl:var(--rs-modal-size-l);--rs-modal-size:var(--rs-modal-size-s)}.--position-center{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100vw - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center.--active,[dir=rtl] .--position-center.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100vh - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom.--active,[dir=rtl] .--position-bottom.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start{transform:translate(100%)}.--position-start.--active,[dir=rtl] .--position-start.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end{transform:translate(-100%)}.--position-end.--active,[dir=rtl] .--position-end.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen.--active,[dir=rtl] .--position-full-screen.--active{opacity:1;transform:translate(0)!important}.--active,[dir=rtl] .--active{transition-timing-function:var(--rs-easing-decelerate)}.--dragging{transition:none}.--overflow-visible{overflow:visible}@media (--rs-viewport-m ){.root{--rs-modal-size:var(--rs-modal-size-m)}.--position-center--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100vw - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--m.--active,[dir=rtl] .--position-center--m.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--m{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100vh - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom--m.--active,[dir=rtl] .--position-bottom--m.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--m{transform:translate(100%)}.--position-start--m.--active,[dir=rtl] .--position-start--m.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--m{transform:translate(-100%)}.--position-end--m.--active,[dir=rtl] .--position-end--m.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--m{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--m.--active,[dir=rtl] .--position-full-screen--m.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-l ){.root{--rs-modal-size:var(--rs-modal-size-l)}.--position-center--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100vw - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--l.--active,[dir=rtl] .--position-center--l.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--l{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100vh - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom--l.--active,[dir=rtl] .--position-bottom--l.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--l{transform:translate(100%)}.--position-start--l.--active,[dir=rtl] .--position-start--l.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--l{transform:translate(-100%)}.--position-end--l.--active,[dir=rtl] .--position-end--l.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--l{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--l.--active,[dir=rtl] .--position-full-screen--l.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-xl ){.root{--rs-modal-size:var(--rs-modal-size-xl)}.--position-center--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100vw - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--xl.--active,[dir=rtl] .--position-center--xl.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--xl{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100vh - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom--xl.--active,[dir=rtl] .--position-bottom--xl.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--xl{transform:translate(100%)}.--position-start--xl.--active,[dir=rtl] .--position-start--xl.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100vw - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--xl{transform:translate(-100%)}.--position-end--xl.--active,[dir=rtl] .--position-end--xl.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--xl{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--xl.--active,[dir=rtl] .--position-full-screen--xl.--active{opacity:1;transform:translate(0)!important}}
|
1
|
+
.root{background:var(--rs-color-background-elevation-overlay);box-shadow:var(--rs-shadow-overlay);color:var(--rs-color-foreground-neutral);transition:var(--rs-easing-accelerate) var(--rs-duration-medium);transition-property:transform,opacity;will-change:transform}[data-rs-keyboard] .root:focus{box-shadow:var(--rs-focus-shadow);outline:none}.root{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);--rs-modal-size-m:var(--rs-modal-size-s);--rs-modal-size-l:var(--rs-modal-size-m);--rs-modal-size-xl:var(--rs-modal-size-l);--rs-modal-size:var(--rs-modal-size-s)}.--position-center{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100% - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center.--active,[dir=rtl] .--position-center.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100% - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom.--contained{position:absolute}.--position-bottom.--active,[dir=rtl] .--position-bottom.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}.--position-start.--contained{position:absolute}[dir=rtl] .--position-start{transform:translate(100%)}.--position-start.--active,[dir=rtl] .--position-start.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}.--position-end.--contained{position:absolute}[dir=rtl] .--position-end{transform:translate(-100%)}.--position-end.--active,[dir=rtl] .--position-end.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen.--contained{position:absolute}.--position-full-screen.--active,[dir=rtl] .--position-full-screen.--active{opacity:1;transform:translate(0)!important}.--active,[dir=rtl] .--active{transition-timing-function:var(--rs-easing-decelerate)}.--dragging{transition:none}.--overflow-visible{overflow:visible}@media (--rs-viewport-m ){.root{--rs-modal-size:var(--rs-modal-size-m)}.--position-center--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100% - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--m.--active,[dir=rtl] .--position-center--m.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--m{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100% - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom--m.--contained{position:absolute}.--position-bottom--m.--active,[dir=rtl] .--position-bottom--m.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}.--position-start--m.--contained{position:absolute}[dir=rtl] .--position-start--m{transform:translate(100%)}.--position-start--m.--active,[dir=rtl] .--position-start--m.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}.--position-end--m.--contained{position:absolute}[dir=rtl] .--position-end--m{transform:translate(-100%)}.--position-end--m.--active,[dir=rtl] .--position-end--m.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--m{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--m.--contained{position:absolute}.--position-full-screen--m.--active,[dir=rtl] .--position-full-screen--m.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-l ){.root{--rs-modal-size:var(--rs-modal-size-l)}.--position-center--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100% - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--l.--active,[dir=rtl] .--position-center--l.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--l{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100% - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom--l.--contained{position:absolute}.--position-bottom--l.--active,[dir=rtl] .--position-bottom--l.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}.--position-start--l.--contained{position:absolute}[dir=rtl] .--position-start--l{transform:translate(100%)}.--position-start--l.--active,[dir=rtl] .--position-start--l.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}.--position-end--l.--contained{position:absolute}[dir=rtl] .--position-end--l{transform:translate(-100%)}.--position-end--l.--active,[dir=rtl] .--position-end--l.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--l{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--l.--contained{position:absolute}.--position-full-screen--l.--active,[dir=rtl] .--position-full-screen--l.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-xl ){.root{--rs-modal-size:var(--rs-modal-size-xl)}.--position-center--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(100% - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--xl.--active,[dir=rtl] .--position-center--xl.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--xl{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(100% - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:fixed;transform:translateY(100%);width:100%}.--position-bottom--xl.--contained{position:absolute}.--position-bottom--xl.--active,[dir=rtl] .--position-bottom--xl.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(-100%);width:var(--rs-modal-size)}.--position-start--xl.--contained{position:absolute}[dir=rtl] .--position-start--xl{transform:translate(100%)}.--position-start--xl.--active,[dir=rtl] .--position-start--xl.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(100% - var(--rs-unit-x4));opacity:1;overflow:auto;position:fixed;transform:translate(100%);width:var(--rs-modal-size)}.--position-end--xl.--contained{position:absolute}[dir=rtl] .--position-end--xl{transform:translate(-100%)}.--position-end--xl.--active,[dir=rtl] .--position-end--xl.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--xl{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:100%;opacity:0;overflow:auto;position:fixed;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--xl.--contained{position:absolute}.--position-full-screen--xl.--active,[dir=rtl] .--position-full-screen--xl.--active{opacity:1;transform:translate(0)!important}}
|
@@ -21,5 +21,6 @@ export declare const overflow: () => React.JSX.Element;
|
|
21
21
|
export declare const composition: () => React.JSX.Element;
|
22
22
|
export declare const overlay: () => React.JSX.Element;
|
23
23
|
export declare const flags: () => React.JSX.Element;
|
24
|
+
export declare const containerRef: () => React.JSX.Element;
|
24
25
|
export declare const edgeCases: () => React.JSX.Element;
|
25
26
|
export declare const trapFocusEdgeCases: () => React.JSX.Element;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React from "react";
|
2
|
-
import { Example } from "../../../utilities/storybook/index.js";
|
2
|
+
import { Example, Placeholder } from "../../../utilities/storybook/index.js";
|
3
3
|
import Modal from "../index.js";
|
4
4
|
import View from "../../View/index.js";
|
5
5
|
import Button from "../../Button/index.js";
|
@@ -137,6 +137,33 @@ export const flags = () => {
|
|
137
137
|
</Example.Item>
|
138
138
|
</Example>);
|
139
139
|
};
|
140
|
+
export const containerRef = () => {
|
141
|
+
const containerRef = React.useRef(null);
|
142
|
+
const containerRef2 = React.useRef(null);
|
143
|
+
const toggle = useToggle();
|
144
|
+
const toggle2 = useToggle();
|
145
|
+
return (<Example>
|
146
|
+
<Example.Item title={["in scrollable container", "scroll and then open"]}>
|
147
|
+
<View attributes={{ ref: containerRef2 }} borderRadius="medium" height="400px" overflow="auto" backgroundColor="neutral-faded" padding={4}>
|
148
|
+
<View gap={4} align="start">
|
149
|
+
<Button onClick={toggle2.activate}>Open modal</Button>
|
150
|
+
<View height="500px" backgroundColor="primary" width="500px" borderRadius="medium"/>
|
151
|
+
</View>
|
152
|
+
<Modal containerRef={containerRef2} active={toggle2.active} onClose={toggle2.deactivate} position="end">
|
153
|
+
<Placeholder />
|
154
|
+
</Modal>
|
155
|
+
</View>
|
156
|
+
</Example.Item>
|
157
|
+
<Example.Item title="in static container">
|
158
|
+
<View attributes={{ ref: containerRef }} borderRadius="medium" height="400px" overflow="hidden" backgroundColor="neutral-faded" padding={4}>
|
159
|
+
<Button onClick={toggle.activate}>Open modal</Button>
|
160
|
+
<Modal containerRef={containerRef} active={toggle.active} onClose={toggle.deactivate} position="end">
|
161
|
+
<Placeholder />
|
162
|
+
</Modal>
|
163
|
+
</View>
|
164
|
+
</Example.Item>
|
165
|
+
</Example>);
|
166
|
+
};
|
140
167
|
export const edgeCases = () => {
|
141
168
|
const menuModalToggle = useToggle();
|
142
169
|
const scrollModalToggle = useToggle();
|