reshaped 3.2.6-rc.0 → 3.3.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 +39 -0
- package/dist/bundle.css +1 -1
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.js +11 -11
- package/dist/cjs/themes/_generator/definitions/figma.js +1 -0
- package/dist/cjs/themes/_generator/definitions/reshaped.js +5 -4
- package/dist/cjs/themes/_generator/tokens/duration/duration.types.d.ts +1 -1
- package/dist/cjs/themes/_generator/transform.js +17 -7
- package/dist/cjs/themes/_generator/utilities/generateColors.js +6 -6
- package/dist/cjs/themes/_generator/utilities/resolveTokenReference.js +1 -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/Alert/tests/Alert.stories.d.ts +5 -4
- package/dist/components/Alert/tests/Alert.stories.js +3 -2
- package/dist/components/Autocomplete/Autocomplete.js +3 -3
- package/dist/components/Autocomplete/Autocomplete.types.d.ts +8 -9
- package/dist/components/Badge/Badge.module.css +1 -1
- package/dist/components/Button/Button.module.css +1 -1
- package/dist/components/Card/Card.js +1 -1
- package/dist/components/ContextMenu/ContextMenu.d.ts +10 -0
- package/dist/components/ContextMenu/ContextMenu.js +37 -0
- package/dist/components/ContextMenu/ContextMenu.module.css +1 -0
- package/dist/components/ContextMenu/ContextMenu.types.d.ts +2 -0
- package/dist/components/ContextMenu/ContextMenu.types.js +1 -0
- package/dist/components/ContextMenu/index.d.ts +2 -0
- package/dist/components/ContextMenu/index.js +1 -0
- package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +18 -0
- package/dist/components/ContextMenu/tests/ContextMenu.stories.js +27 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +1 -2
- package/dist/components/DropdownMenu/DropdownMenu.js +2 -2
- package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +4 -4
- package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +1 -1
- package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +8 -0
- package/dist/components/FormControl/FormControl.context.d.ts +86 -86
- package/dist/components/Grid/Grid.js +5 -1
- package/dist/components/Hotkey/Hotkey.module.css +1 -1
- package/dist/components/Modal/Modal.js +3 -3
- package/dist/components/Modal/Modal.module.css +1 -1
- package/dist/components/Modal/Modal.types.d.ts +1 -1
- package/dist/components/Overlay/Overlay.js +5 -2
- package/dist/components/Overlay/Overlay.types.d.ts +2 -0
- package/dist/components/Popover/Popover.js +1 -1
- package/dist/components/Popover/Popover.types.d.ts +1 -1
- package/dist/components/Resizable/Resizable.js +2 -2
- package/dist/components/Resizable/Resizable.module.css +1 -1
- package/dist/components/Resizable/Resizable.types.d.ts +3 -1
- package/dist/components/Resizable/tests/Resizable.stories.js +34 -1
- package/dist/components/ScrollArea/ScrollArea.js +9 -9
- package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
- package/dist/components/ScrollArea/ScrollArea.types.d.ts +1 -4
- package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +6 -4
- package/dist/components/ScrollArea/tests/ScrollArea.stories.js +28 -2
- package/dist/components/Table/Table.js +4 -3
- package/dist/components/Table/Table.module.css +1 -1
- package/dist/components/Table/Table.types.d.ts +2 -0
- package/dist/components/Table/tests/Table.stories.d.ts +1 -1
- package/dist/components/Table/tests/Table.stories.js +13 -1
- package/dist/components/Tabs/Tabs.module.css +1 -1
- package/dist/components/Tabs/Tabs.types.d.ts +2 -0
- package/dist/components/Tabs/TabsContext.d.ts +2 -2
- package/dist/components/Tabs/TabsItem.js +16 -10
- package/dist/components/Tabs/TabsList.js +12 -3
- package/dist/components/Tabs/TabsPanel.js +3 -3
- package/dist/components/Text/Text.js +2 -1
- package/dist/components/TextField/TextField.js +4 -4
- package/dist/components/TextField/TextField.module.css +1 -1
- package/dist/components/TextField/TextField.types.d.ts +1 -0
- package/dist/components/Toast/Toast.js +3 -2
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.js +4 -4
- package/dist/components/Tooltip/Tooltip.types.d.ts +1 -1
- package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +1 -1
- package/dist/components/View/View.js +8 -3
- package/dist/components/View/View.module.css +1 -1
- package/dist/components/View/View.types.d.ts +5 -5
- package/dist/components/View/tests/View.stories.js +6 -0
- package/dist/components/_private/Flyout/Flyout.module.css +1 -1
- package/dist/components/_private/Flyout/Flyout.types.d.ts +2 -1
- package/dist/components/_private/Flyout/FlyoutContent.js +6 -4
- package/dist/components/_private/Flyout/FlyoutControlled.js +12 -9
- package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +1 -0
- package/dist/components/_private/Flyout/tests/Flyout.stories.js +16 -1
- package/dist/components/_private/Flyout/useFlyout.d.ts +6 -11
- package/dist/components/_private/Flyout/useFlyout.js +19 -30
- package/dist/components/_private/Flyout/utilities/isFullyVisible.d.ts +6 -0
- package/dist/components/_private/Flyout/utilities/isFullyVisible.js +16 -0
- package/dist/components/_private/Portal/Portal.js +5 -2
- package/dist/hooks/_private/useOnClickOutside.d.ts +1 -1
- package/dist/hooks/_private/useOnClickOutside.js +8 -5
- package/dist/hooks/_private/useSingletonKeyboardMode.js +4 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/styles/align/align.css +1 -0
- package/dist/styles/align/index.d.ts +2 -1
- package/dist/styles/align/index.js +3 -3
- package/dist/styles/aspectRatio/aspectRatio.css +1 -0
- package/dist/styles/aspectRatio/index.d.ts +2 -1
- package/dist/styles/aspectRatio/index.js +2 -2
- package/dist/styles/bleed/bleed.module.css +1 -1
- package/dist/styles/bleed/index.js +2 -5
- package/dist/styles/height/height.module.css +1 -1
- package/dist/styles/height/index.js +2 -2
- package/dist/styles/inset/index.d.ts +2 -1
- package/dist/styles/inset/index.js +4 -7
- package/dist/styles/inset/inset.css +1 -0
- package/dist/styles/justify/index.d.ts +2 -1
- package/dist/styles/justify/index.js +3 -3
- package/dist/styles/justify/justify.css +1 -0
- package/dist/styles/maxHeight/index.js +2 -2
- package/dist/styles/maxHeight/maxHeight.module.css +1 -1
- package/dist/styles/maxWidth/index.js +2 -2
- package/dist/styles/maxWidth/maxWidth.module.css +1 -1
- package/dist/styles/minHeight/index.js +2 -2
- package/dist/styles/minHeight/minHeight.module.css +1 -1
- package/dist/styles/minWidth/index.js +2 -2
- package/dist/styles/minWidth/minWidth.module.css +1 -1
- package/dist/styles/padding/index.d.ts +2 -1
- package/dist/styles/padding/index.js +2 -2
- package/dist/styles/padding/padding.css +1 -0
- package/dist/styles/position/index.d.ts +2 -1
- package/dist/styles/position/index.js +4 -4
- package/dist/styles/position/position.css +1 -0
- package/dist/styles/textAlign/index.d.ts +2 -1
- package/dist/styles/textAlign/index.js +3 -3
- package/dist/styles/textAlign/textAlign.css +1 -0
- package/dist/styles/types.d.ts +5 -0
- package/dist/styles/width/index.js +2 -2
- package/dist/styles/width/width.module.css +1 -1
- package/dist/themes/_generator/definitions/figma.js +1 -0
- package/dist/themes/_generator/definitions/reshaped.js +5 -4
- package/dist/themes/_generator/tests/themes.stories.d.ts +4 -3
- package/dist/themes/_generator/tests/themes.stories.js +3 -2
- package/dist/themes/_generator/tokens/duration/duration.types.d.ts +1 -1
- package/dist/themes/_generator/utilities/generateColors.js +6 -6
- package/dist/themes/_generator/utilities/resolveTokenReference.js +1 -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/types/global.d.ts +4 -0
- package/dist/utilities/a11y/TrapFocus.js +1 -0
- package/dist/utilities/a11y/focus.d.ts +1 -1
- package/dist/utilities/a11y/focus.js +4 -1
- package/dist/utilities/a11y/tests/TrapFocus.stories.d.ts +6 -0
- package/dist/utilities/a11y/tests/TrapFocus.stories.js +59 -0
- package/dist/utilities/dom/find.d.ts +10 -0
- package/dist/utilities/dom/find.js +35 -0
- package/dist/utilities/dom/flyout.d.ts +2 -1
- package/dist/utilities/dom/flyout.js +13 -18
- package/dist/utilities/dom/index.d.ts +2 -1
- package/dist/utilities/dom/index.js +2 -1
- package/dist/utilities/scroll/lock.js +6 -2
- package/package.json +32 -32
- package/dist/styles/align/align.module.css +0 -1
- package/dist/styles/aspectRatio/aspectRatio.module.css +0 -1
- package/dist/styles/inset/inset.module.css +0 -1
- package/dist/styles/justify/justify.module.css +0 -1
- package/dist/styles/padding/padding.module.css +0 -1
- package/dist/styles/position/position.module.css +0 -1
- package/dist/styles/textAlign/textAlign.module.css +0 -1
@@ -1 +1 @@
|
|
1
|
-
.root{--rs-view-gaps-count-multiplier:1;--rs-view-z:auto;--rs-view-gap-value:calc(var(--rs-view-gap) * var(--rs-unit-x1));--rs-view-border-width:0px;gap:var(--rs-view-gap-value);z-index:var(--rs-view-z)}.item{--rs-view-item-gap:calc(var(--rs-unit-x1) * var(--rs-view-item-gap-before) - var(--rs-view-gap-value));order:var(--rs-view-item-order)}.--padding{padding:calc(var(--rs-unit-x1) * var(--rs-view-p-vertical, var(--rs-view-p-top)) - var(--rs-view-border-width)) calc(var(--rs-unit-x1) * var(--rs-view-p-horizontal, var(--rs-view-p-start)) - var(--rs-view-border-width))}.--padding-top{padding-top:calc(var(--rs-unit-x1) * var(--rs-view-p-top))}.--padding-bottom{padding-bottom:calc(var(--rs-unit-x1) * var(--rs-view-p-bottom))}.--padding-start{padding-inline-start:calc(var(--rs-unit-x1) * var(--rs-view-p-start))}.--padding-end{padding-inline-end:calc(var(--rs-unit-x1) * var(--rs-view-p-end))}.--animated{transition:var(--rs-duration-medium) var(--rs-easing-standard);transition-property:background-color,color,border-color,box-shadow}.--align-text-start{text-align:start}.--align-text-center{text-align:center}.--align-text-end{text-align:end}.--bg-neutral{background-color:var(--rs-color-background-neutral);color:var(--rs-color-on-background-neutral)}.--bg-positive{background-color:var(--rs-color-background-positive);color:var(--rs-color-on-background-positive)}.--bg-warning{background-color:var(--rs-color-background-warning);color:var(--rs-color-on-background-warning)}.--bg-critical{background-color:var(--rs-color-background-critical);color:var(--rs-color-on-background-critical)}.--bg-primary{background-color:var(--rs-color-background-primary);color:var(--rs-color-on-background-primary)}.--bg-neutral-faded{background-color:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-neutral)}.--bg-positive-faded{background-color:var(--rs-color-background-positive-faded);color:var(--rs-color-foreground-neutral)}.--bg-warning-faded{background-color:var(--rs-color-background-warning-faded);color:var(--rs-color-foreground-neutral)}.--bg-critical-faded{background-color:var(--rs-color-background-critical-faded);color:var(--rs-color-foreground-neutral)}.--bg-primary-faded{background-color:var(--rs-color-background-primary-faded)}.--bg-page,.--bg-primary-faded{color:var(--rs-color-foreground-neutral)}.--bg-page{background-color:var(--rs-color-background-page)}.--bg-page-faded{background-color:var(--rs-color-background-page-faded)}.--bg-disabled,.--bg-page-faded{color:var(--rs-color-foreground-neutral)}.--bg-disabled{background-color:var(--rs-color-background-disabled)}.--bg-disabled-faded{background-color:var(--rs-color-background-disabled-faded);color:var(--rs-color-foreground-neutral)}.--bg-elevation-base{background-color:var(--rs-color-background-elevation-base);color:var(--rs-color-foreground-neutral)}.--bg-elevation-raised{background-color:var(--rs-color-background-elevation-raised);color:var(--rs-color-foreground-neutral)}.--bg-elevation-overlay{background-color:var(--rs-color-background-elevation-overlay);color:var(--rs-color-foreground-neutral)}.--bg-brand{background-color:var(--rs-color-brand);color:var(--rs-color-on-brand)}.--bg-white{background-color:var(--rs-color-white);color:var(--rs-color-black)}.--bg-black{background-color:var(--rs-color-black);color:var(--rs-color-white)}.--shadow-raised{box-shadow:var(--rs-shadow-raised)}.--shadow-overlay{box-shadow:var(--rs-shadow-overlay)}.--overflow-hidden{overflow:hidden}.--overflow-auto{overflow:auto}.--divided{--rs-view-gaps-count-multiplier:2}.--flex{display:flex;flex-direction:column;justify-content:flex-start}.--direction-column{flex-direction:column;flex-wrap:nowrap}.--direction-column>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column>.item--gap-auto{margin-top:auto}.--direction-column-reverse{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse>.item--gap-auto{margin-top:auto}.--direction-row{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row>.item--gap-auto{margin-inline-start:auto}.--direction-row>button{width:auto!important}.--direction-row-reverse{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse>button{width:auto!important}.--nowrap{flex-wrap:nowrap}.--nowrap>*{flex-shrink:0}.--wrap{flex-wrap:wrap}@media (--rs-viewport-m ){.--nowrap-false--m,.--wrap-true--m{flex-wrap:wrap}.--nowrap-true--m,.--wrap-false--m{flex-wrap:nowrap}}@media (--rs-viewport-l ){.--nowrap-false--l,.--wrap-true--l{flex-wrap:wrap}.--nowrap-true--l,.--wrap-false--l{flex-wrap:nowrap}}@media (--rs-viewport-xl ){.--nowrap-false--xl,.--wrap-true--xl{flex-wrap:wrap}.--nowrap-true--xl,.--wrap-false--xl{flex-wrap:nowrap}}.divider{align-self:stretch}.item--grow{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--columns{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-1{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-1,.item--columns-2{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-2{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3,.item--columns-4{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-4{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5,.item--columns-6{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-6{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7,.item--columns-8{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-8{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10,.item--columns-9{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-10{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11,.item--columns-12{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-12{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto{width:auto}@media (--rs-viewport-m ){.item--columns-1--m{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--m{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--m{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--m{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--m{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--m{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--m{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--m{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--m{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--m{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--m{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--m{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--m{width:auto}}@media (--rs-viewport-l ){.item--columns-1--l{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--l{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--l{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--l{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--l{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--l{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--l{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--l{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--l{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--l{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--l{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--l{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--l{width:auto}}@media (--rs-viewport-xl ){.item--columns-1--xl{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--xl{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--xl{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--xl{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--xl{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--xl{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--xl{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--xl{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--xl{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--xl{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--xl{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--xl{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--xl{width:auto}}.--padding{--rs-view-p-vertical-s:0;--rs-view-p-vertical-m:var(--rs-view-p-vertical-s);--rs-view-p-vertical-l:var(--rs-view-p-vertical-m);--rs-view-p-vertical-xl:var(--rs-view-p-vertical-l);--rs-view-p-vertical:var(--rs-view-p-vertical-s);--rs-view-p-horizontal-s:0;--rs-view-p-horizontal-m:var(--rs-view-p-horizontal-s);--rs-view-p-horizontal-l:var(--rs-view-p-horizontal-m);--rs-view-p-horizontal-xl:var(--rs-view-p-horizontal-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-s)}.--padding-top{--rs-view-p-top-s:0;--rs-view-p-top-m:var(--rs-view-p-top-s);--rs-view-p-top-l:var(--rs-view-p-top-m);--rs-view-p-top-xl:var(--rs-view-p-top-l);--rs-view-p-top:var(--rs-view-p-top-s)}.--padding-bottom{--rs-view-p-bottom-s:0;--rs-view-p-bottom-m:var(--rs-view-p-bottom-s);--rs-view-p-bottom-l:var(--rs-view-p-bottom-m);--rs-view-p-bottom-xl:var(--rs-view-p-bottom-l);--rs-view-p-bottom:var(--rs-view-p-bottom-s)}.--padding-start{--rs-view-p-start-s:0;--rs-view-p-start-m:var(--rs-view-p-start-s);--rs-view-p-start-l:var(--rs-view-p-start-m);--rs-view-p-start-xl:var(--rs-view-p-start-l);--rs-view-p-start:var(--rs-view-p-start-s)}.--padding-end{--rs-view-p-end-s:0;--rs-view-p-end-m:var(--rs-view-p-end-s);--rs-view-p-end-l:var(--rs-view-p-end-m);--rs-view-p-end-xl:var(--rs-view-p-end-l);--rs-view-p-end:var(--rs-view-p-end-s)}.root{--rs-view-gap-s:0;--rs-view-gap-m:var(--rs-view-gap-s);--rs-view-gap-l:var(--rs-view-gap-m);--rs-view-gap-xl:var(--rs-view-gap-l);--rs-view-gap:var(--rs-view-gap-s)}.root>.item{--rs-view-item-order-s:0;--rs-view-item-order-m:var(--rs-view-item-order-s);--rs-view-item-order-l:var(--rs-view-item-order-m);--rs-view-item-order-xl:var(--rs-view-item-order-l);--rs-view-item-order:var(--rs-view-item-order-s);--rs-view-item-gap-before-s:initial;--rs-view-item-gap-before-m:var(--rs-view-item-gap-before-s);--rs-view-item-gap-before-l:var(--rs-view-item-gap-before-m);--rs-view-item-gap-before-xl:var(--rs-view-item-gap-before-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-s)}@media (--rs-viewport-m ){.--direction-column--m{flex-direction:column;flex-wrap:nowrap}.--direction-column--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--m>.item--gap-auto{margin-top:auto}.--direction-column-reverse--m{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--m>.item--gap-auto{margin-top:auto}.--direction-row--m{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--m>.item--gap-auto{margin-inline-start:auto}.--direction-row--m>button{width:auto!important}.--direction-row-reverse--m{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--m>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--m>button{width:auto!important}.item--grow-true--m{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--m{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-m);--rs-view-p-horizontal:var(--rs-view-p-horizontal-m)}.--padding-top{--rs-view-p-top:var(--rs-view-p-top-m)}.--padding-bottom{--rs-view-p-bottom:var(--rs-view-p-bottom-m)}.--padding-start{--rs-view-p-start:var(--rs-view-p-start-m)}.--padding-end{--rs-view-p-end:var(--rs-view-p-end-m)}.root{--rs-view-gap:var(--rs-view-gap-m)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-m);--rs-view-item-gap-before:var(--rs-view-item-gap-before-m)}}@media (--rs-viewport-l ){.--direction-column--l{flex-direction:column;flex-wrap:nowrap}.--direction-column--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--l>.item--gap-auto{margin-top:auto}.--direction-column-reverse--l{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--l>.item--gap-auto{margin-top:auto}.--direction-row--l{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--l>.item--gap-auto{margin-inline-start:auto}.--direction-row--l>button{width:auto!important}.--direction-row-reverse--l{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--l>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--l>button{width:auto!important}.item--grow-true--l{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--l{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-l)}.--padding-top{--rs-view-p-top:var(--rs-view-p-top-l)}.--padding-bottom{--rs-view-p-bottom:var(--rs-view-p-bottom-l)}.--padding-start{--rs-view-p-start:var(--rs-view-p-start-l)}.--padding-end{--rs-view-p-end:var(--rs-view-p-end-l)}.root{--rs-view-gap:var(--rs-view-gap-l)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-l)}}@media (--rs-viewport-xl ){.--direction-column--xl{flex-direction:column;flex-wrap:nowrap}.--direction-column--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--xl>.item--gap-auto{margin-top:auto}.--direction-column-reverse--xl{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--xl>.item--gap-auto{margin-top:auto}.--direction-row--xl{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row--xl>button{width:auto!important}.--direction-row-reverse--xl{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--xl>button{width:auto!important}.item--grow-true--xl{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--xl{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-xl);--rs-view-p-horizontal:var(--rs-view-p-horizontal-xl)}.--padding-top{--rs-view-p-top:var(--rs-view-p-top-xl)}.--padding-bottom{--rs-view-p-bottom:var(--rs-view-p-bottom-xl)}.--padding-start{--rs-view-p-start:var(--rs-view-p-start-xl)}.--padding-end{--rs-view-p-end:var(--rs-view-p-end-xl)}.root{--rs-view-gap:var(--rs-view-gap-xl)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-xl);--rs-view-item-gap-before:var(--rs-view-item-gap-before-xl)}}
|
1
|
+
.root{--rs-view-gaps-count-multiplier:1;--rs-view-z:auto;--rs-view-gap-value:calc(var(--rs-view-gap) * var(--rs-unit-x1));--rs-view-border-width:0px;gap:var(--rs-view-gap-value);position:relative;z-index:var(--rs-view-z)}.item{--rs-view-item-gap:calc(var(--rs-unit-x1) * var(--rs-view-item-gap-before) - var(--rs-view-gap-value));order:var(--rs-view-item-order)}.--padding{padding:calc(var(--rs-unit-x1) * var(--rs-view-p-vertical, var(--rs-view-p-top)) - var(--rs-view-border-width)) calc(var(--rs-unit-x1) * var(--rs-view-p-horizontal, var(--rs-view-p-start)) - var(--rs-view-border-width));--rs-view-p-vertical-s:0;--rs-view-p-vertical-m:var(--rs-view-p-vertical-s);--rs-view-p-vertical-l:var(--rs-view-p-vertical-m);--rs-view-p-vertical-xl:var(--rs-view-p-vertical-l);--rs-view-p-vertical:var(--rs-view-p-vertical-s);--rs-view-p-horizontal-s:0;--rs-view-p-horizontal-m:var(--rs-view-p-horizontal-s);--rs-view-p-horizontal-l:var(--rs-view-p-horizontal-m);--rs-view-p-horizontal-xl:var(--rs-view-p-horizontal-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-s)}.root[style*="--rs-view-p-top"]{padding-top:calc(var(--rs-unit-x1) * var(--rs-view-p-top));--rs-view-p-top-s:0;--rs-view-p-top-m:var(--rs-view-p-top-s);--rs-view-p-top-l:var(--rs-view-p-top-m);--rs-view-p-top-xl:var(--rs-view-p-top-l);--rs-view-p-top:var(--rs-view-p-top-s)}.root[style*="--rs-view-p-bottom"]{padding-bottom:calc(var(--rs-unit-x1) * var(--rs-view-p-bottom));--rs-view-p-bottom-s:0;--rs-view-p-bottom-m:var(--rs-view-p-bottom-s);--rs-view-p-bottom-l:var(--rs-view-p-bottom-m);--rs-view-p-bottom-xl:var(--rs-view-p-bottom-l);--rs-view-p-bottom:var(--rs-view-p-bottom-s)}.root[style*="--rs-view-p-start"]{padding-inline-start:calc(var(--rs-unit-x1) * var(--rs-view-p-start));--rs-view-p-start-s:0;--rs-view-p-start-m:var(--rs-view-p-start-s);--rs-view-p-start-l:var(--rs-view-p-start-m);--rs-view-p-start-xl:var(--rs-view-p-start-l);--rs-view-p-start:var(--rs-view-p-start-s)}.root[style*="--rs-view-p-end"]{padding-inline-end:calc(var(--rs-unit-x1) * var(--rs-view-p-end));--rs-view-p-end-s:0;--rs-view-p-end-m:var(--rs-view-p-end-s);--rs-view-p-end-l:var(--rs-view-p-end-m);--rs-view-p-end-xl:var(--rs-view-p-end-l);--rs-view-p-end:var(--rs-view-p-end-s)}.--animated{transition:var(--rs-duration-medium) var(--rs-easing-standard);transition-property:background-color,color,border-color,box-shadow}.--align-text-start{text-align:start}.--align-text-center{text-align:center}.--align-text-end{text-align:end}.--bg-neutral{background-color:var(--rs-color-background-neutral);color:var(--rs-color-on-background-neutral)}.--bg-positive{background-color:var(--rs-color-background-positive);color:var(--rs-color-on-background-positive)}.--bg-warning{background-color:var(--rs-color-background-warning);color:var(--rs-color-on-background-warning)}.--bg-critical{background-color:var(--rs-color-background-critical);color:var(--rs-color-on-background-critical)}.--bg-primary{background-color:var(--rs-color-background-primary);color:var(--rs-color-on-background-primary)}.--bg-neutral-faded{background-color:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-neutral)}.--bg-positive-faded{background-color:var(--rs-color-background-positive-faded);color:var(--rs-color-foreground-neutral)}.--bg-warning-faded{background-color:var(--rs-color-background-warning-faded);color:var(--rs-color-foreground-neutral)}.--bg-critical-faded{background-color:var(--rs-color-background-critical-faded);color:var(--rs-color-foreground-neutral)}.--bg-primary-faded{background-color:var(--rs-color-background-primary-faded)}.--bg-page,.--bg-primary-faded{color:var(--rs-color-foreground-neutral)}.--bg-page{background-color:var(--rs-color-background-page)}.--bg-page-faded{background-color:var(--rs-color-background-page-faded)}.--bg-disabled,.--bg-page-faded{color:var(--rs-color-foreground-neutral)}.--bg-disabled{background-color:var(--rs-color-background-disabled)}.--bg-disabled-faded{background-color:var(--rs-color-background-disabled-faded);color:var(--rs-color-foreground-neutral)}.--bg-elevation-base{background-color:var(--rs-color-background-elevation-base);color:var(--rs-color-foreground-neutral)}.--bg-elevation-raised{background-color:var(--rs-color-background-elevation-raised);color:var(--rs-color-foreground-neutral)}.--bg-elevation-overlay{background-color:var(--rs-color-background-elevation-overlay);color:var(--rs-color-foreground-neutral)}.--bg-brand{background-color:var(--rs-color-brand);color:var(--rs-color-on-brand)}.--bg-white{background-color:var(--rs-color-white);color:var(--rs-color-black)}.--bg-black{background-color:var(--rs-color-black);color:var(--rs-color-white)}.--shadow-raised{box-shadow:var(--rs-shadow-raised)}.--shadow-overlay{box-shadow:var(--rs-shadow-overlay)}.--overflow-hidden{overflow:hidden}.--overflow-auto{overflow:auto}.--divided{--rs-view-gaps-count-multiplier:2}.--flex{display:flex;flex-direction:column;justify-content:flex-start}.--direction-column{flex-direction:column;flex-wrap:nowrap}.--direction-column>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column>.item--gap-auto{margin-top:auto}.--direction-column-reverse{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse>.item--gap-auto{margin-top:auto}.--direction-row{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row>.item--gap-auto{margin-inline-start:auto}.--direction-row>button{width:auto!important}.--direction-row-reverse{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse>button{width:auto!important}.--nowrap{flex-wrap:nowrap}.--nowrap>*{flex-shrink:0}.--wrap{flex-wrap:wrap}@media (--rs-viewport-m ){.--nowrap-false--m,.--wrap-true--m{flex-wrap:wrap}.--nowrap-true--m,.--wrap-false--m{flex-wrap:nowrap}}@media (--rs-viewport-l ){.--nowrap-false--l,.--wrap-true--l{flex-wrap:wrap}.--nowrap-true--l,.--wrap-false--l{flex-wrap:nowrap}}@media (--rs-viewport-xl ){.--nowrap-false--xl,.--wrap-true--xl{flex-wrap:wrap}.--nowrap-true--xl,.--wrap-false--xl{flex-wrap:nowrap}}.divider{align-self:stretch}.item--grow{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--columns{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-1{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-1,.item--columns-2{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-2{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3,.item--columns-4{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-4{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5,.item--columns-6{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-6{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7,.item--columns-8{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-8{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10,.item--columns-9{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-10{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11,.item--columns-12{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-12{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto{width:auto}@media (--rs-viewport-m ){.item--columns-1--m{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--m{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--m{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--m{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--m{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--m{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--m{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--m{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--m{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--m{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--m{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--m{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--m{width:auto}}@media (--rs-viewport-l ){.item--columns-1--l{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--l{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--l{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--l{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--l{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--l{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--l{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--l{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--l{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--l{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--l{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--l{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--l{width:auto}}@media (--rs-viewport-xl ){.item--columns-1--xl{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--xl{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--xl{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--xl{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--xl{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--xl{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--xl{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--xl{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--xl{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--xl{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--xl{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--xl{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--xl{width:auto}}.root{--rs-view-gap-s:0;--rs-view-gap-m:var(--rs-view-gap-s);--rs-view-gap-l:var(--rs-view-gap-m);--rs-view-gap-xl:var(--rs-view-gap-l);--rs-view-gap:var(--rs-view-gap-s)}.root>.item{--rs-view-item-order-s:0;--rs-view-item-order-m:var(--rs-view-item-order-s);--rs-view-item-order-l:var(--rs-view-item-order-m);--rs-view-item-order-xl:var(--rs-view-item-order-l);--rs-view-item-order:var(--rs-view-item-order-s);--rs-view-item-gap-before-s:initial;--rs-view-item-gap-before-m:var(--rs-view-item-gap-before-s);--rs-view-item-gap-before-l:var(--rs-view-item-gap-before-m);--rs-view-item-gap-before-xl:var(--rs-view-item-gap-before-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-s)}@media (--rs-viewport-m ){.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-m);--rs-view-p-horizontal:var(--rs-view-p-horizontal-m)}.root[style*="--rs-view-p-top"]{--rs-view-p-top:var(--rs-view-p-top-m)}.root[style*="--rs-view-p-bottom"]{--rs-view-p-bottom:var(--rs-view-p-bottom-m)}.root[style*="--rs-view-p-start"]{--rs-view-p-start:var(--rs-view-p-start-m)}.root[style*="--rs-view-p-end"]{--rs-view-p-end:var(--rs-view-p-end-m)}.--direction-column--m{flex-direction:column;flex-wrap:nowrap}.--direction-column--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--m>.item--gap-auto{margin-top:auto}.--direction-column-reverse--m{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--m>.item--gap-auto{margin-top:auto}.--direction-row--m{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--m>.item--gap-auto{margin-inline-start:auto}.--direction-row--m>button{width:auto!important}.--direction-row-reverse--m{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--m>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--m>button{width:auto!important}.item--grow-true--m{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--m{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.root{--rs-view-gap:var(--rs-view-gap-m)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-m);--rs-view-item-gap-before:var(--rs-view-item-gap-before-m)}}@media (--rs-viewport-l ){.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-l)}.root[style*="--rs-view-p-top"]{--rs-view-p-top:var(--rs-view-p-top-l)}.root[style*="--rs-view-p-bottom"]{--rs-view-p-bottom:var(--rs-view-p-bottom-l)}.root[style*="--rs-view-p-start"]{--rs-view-p-start:var(--rs-view-p-start-l)}.root[style*="--rs-view-p-end"]{--rs-view-p-end:var(--rs-view-p-end-l)}.--direction-column--l{flex-direction:column;flex-wrap:nowrap}.--direction-column--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--l>.item--gap-auto{margin-top:auto}.--direction-column-reverse--l{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--l>.item--gap-auto{margin-top:auto}.--direction-row--l{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--l>.item--gap-auto{margin-inline-start:auto}.--direction-row--l>button{width:auto!important}.--direction-row-reverse--l{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--l>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--l>button{width:auto!important}.item--grow-true--l{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--l{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.root{--rs-view-gap:var(--rs-view-gap-l)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-l)}}@media (--rs-viewport-xl ){.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-xl);--rs-view-p-horizontal:var(--rs-view-p-horizontal-xl)}.root[style*="--rs-view-p-top"]{--rs-view-p-top:var(--rs-view-p-top-xl)}.root[style*="--rs-view-p-bottom"]{--rs-view-p-bottom:var(--rs-view-p-bottom-xl)}.root[style*="--rs-view-p-start"]{--rs-view-p-start:var(--rs-view-p-start-xl)}.root[style*="--rs-view-p-end"]{--rs-view-p-end:var(--rs-view-p-end-xl)}.--direction-column--xl{flex-direction:column;flex-wrap:nowrap}.--direction-column--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--xl>.item--gap-auto{margin-top:auto}.--direction-column-reverse--xl{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--xl>.item--gap-auto{margin-top:auto}.--direction-row--xl{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row--xl>button{width:auto!important}.--direction-row-reverse--xl{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--xl>button{width:auto!important}.item--grow-true--xl{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--xl{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.root{--rs-view-gap:var(--rs-view-gap-xl)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-xl);--rs-view-item-gap-before:var(--rs-view-item-gap-before-xl)}}
|
@@ -32,11 +32,11 @@ export type Props<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
|
32
32
|
borderColor?: G.Responsive<TStyles.BorderColor>;
|
33
33
|
borderRadius?: G.Responsive<TStyles.Radius>;
|
34
34
|
position?: G.Responsive<TStyles.Position>;
|
35
|
-
inset?: G.Responsive<
|
36
|
-
insetStart?: G.Responsive<
|
37
|
-
insetEnd?: G.Responsive<
|
38
|
-
insetTop?: G.Responsive<
|
39
|
-
insetBottom?: G.Responsive<
|
35
|
+
inset?: G.Responsive<TStyles.Inset>;
|
36
|
+
insetStart?: G.Responsive<TStyles.Inset>;
|
37
|
+
insetEnd?: G.Responsive<TStyles.Inset>;
|
38
|
+
insetTop?: G.Responsive<TStyles.Inset>;
|
39
|
+
insetBottom?: G.Responsive<TStyles.Inset>;
|
40
40
|
zIndex?: number;
|
41
41
|
shadow?: "raised" | "overlay";
|
42
42
|
overflow?: "hidden" | "auto";
|
@@ -678,6 +678,12 @@ export const inset = () => (<Example>
|
|
678
678
|
<View backgroundColor="neutral" position="absolute" insetBottom={4} height={10} width={10}/>
|
679
679
|
</View>
|
680
680
|
</Example.Item>
|
681
|
+
|
682
|
+
<Example.Item title="responsive, [s] insetBottom: 4 [m+] insetEnd: 4">
|
683
|
+
<View backgroundColor="neutral-faded" width={25} height={25}>
|
684
|
+
<View backgroundColor="neutral" position="absolute" insetBottom={{ s: 4, m: "auto" }} insetEnd={{ s: "auto", m: 4 }} height={10} width={10}/>
|
685
|
+
</View>
|
686
|
+
</Example.Item>
|
681
687
|
</Example>);
|
682
688
|
const Animated = () => {
|
683
689
|
const [background, setBackground] = React.useState("neutral");
|
@@ -1 +1 @@
|
|
1
|
-
.content{--rs-flyout-gap:0;--rs-flyout-origin-x:50%;--rs-flyout-origin-y:50%;position:absolute}.inner{opacity:0;transform:scale(.
|
1
|
+
.content{--rs-flyout-gap:0;--rs-flyout-origin-x:50%;--rs-flyout-origin-y:50%;pointer-events:none;position:absolute}.content.--hover,.inner{pointer-events:all}.inner{opacity:0;transform:scale(.9) translateY(0);transform-origin:var(--rs-flyout-origin-x) var(--rs-flyout-origin-y);transition:1ms var(--rs-easing-accelerate)}.content.--width-trigger .inner{transform:scale(1) translateY(var(--rs-unit-x2))}.content.--position-top,.content.--position-top-end,.content.--position-top-start{--rs-flyout-origin-y:100%;padding-bottom:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom,.content.--position-bottom-end,.content.--position-bottom-start{--rs-flyout-origin-y:0%;padding-top:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom-start,.content.--position-top-start{--rs-flyout-origin-x:0%}.content.--position-bottom-end,.content.--position-top-end{--rs-flyout-origin-x:100%}.content.--position-start,.content.--position-start-bottom,.content.--position-start-top{--rs-flyout-origin-x:100%;padding-right:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end,.content.--position-end-bottom,.content.--position-end-top{--rs-flyout-origin-x:0%;padding-left:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end-top,.content.--position-start-top{--rs-flyout-origin-y:0%}.content.--position-end-bottom,.content.--position-start-bottom{--rs-flyout-origin-y:100%}.content.--visible .inner{opacity:1;transform:scale(1) translateY(0)}.content.--animated .inner{transition-duration:var(--rs-duration-rapid);transition-property:opacity,transform}.content.--animated.--visible .inner{transition-duration:var(--rs-duration-fast);transition-timing-function:var(--rs-easing-decelerate)}.content.--hover-disabled{pointer-events:none}
|
@@ -83,6 +83,7 @@ type BaseProps = {
|
|
83
83
|
disableHideAnimation?: boolean;
|
84
84
|
disableContentHover?: boolean;
|
85
85
|
disableCloseOnOutsideClick?: boolean;
|
86
|
+
originCoordinates?: G.Coordinates;
|
86
87
|
children?: React.ReactNode;
|
87
88
|
onOpen?: () => void;
|
88
89
|
onClose?: () => void;
|
@@ -114,7 +115,7 @@ export type ContextProps = {
|
|
114
115
|
id: string;
|
115
116
|
flyout: UseFlyoutData;
|
116
117
|
width?: Width;
|
117
|
-
triggerElRef
|
118
|
+
triggerElRef?: React.RefObject<HTMLButtonElement>;
|
118
119
|
flyoutElRef: React.RefObject<HTMLDivElement>;
|
119
120
|
handleClose: (options?: {
|
120
121
|
closeParents?: boolean;
|
@@ -4,7 +4,7 @@ import React from "react";
|
|
4
4
|
import { classNames } from "../../../utilities/helpers.js";
|
5
5
|
import useIsomorphicLayoutEffect from "../../../hooks/useIsomorphicLayoutEffect.js";
|
6
6
|
import Portal from "../Portal/index.js";
|
7
|
-
import {
|
7
|
+
import { findClosestRenderContainer } from "../../../utilities/dom/index.js";
|
8
8
|
import cooldown from "./utilities/cooldown.js";
|
9
9
|
import { useFlyoutContext, ContentProvider } from "./Flyout.context.js";
|
10
10
|
import s from "./Flyout.module.css";
|
@@ -28,7 +28,7 @@ const FlyoutContent = (props) => {
|
|
28
28
|
}, [handleTransitionStart, flyoutElRef, status]);
|
29
29
|
if (status === "idle" || !mounted)
|
30
30
|
return null;
|
31
|
-
const contentClassNames = classNames(s.content, status === "visible" && s["--visible"],
|
31
|
+
const contentClassNames = classNames(s.content, triggerType === "hover" && s["--hover"], status === "visible" && s["--visible"],
|
32
32
|
// animating only when we're opening the first flyout or closing the last flyout within the same cooldown
|
33
33
|
// content is rendered only once flyout is already warm so checking for timer instead
|
34
34
|
(cooldown.status === "cooling" || !cooldown.timer || isSubmenu || triggerType !== "hover") &&
|
@@ -52,8 +52,10 @@ const FlyoutContent = (props) => {
|
|
52
52
|
...styles,
|
53
53
|
"--rs-flyout-gap": contentGap,
|
54
54
|
}, ref: flyoutElRef, onTransitionEnd: handleTransitionEnd, onMouseEnter: triggerType === "hover" ? handleMouseEnter : undefined, onMouseLeave: triggerType === "hover" ? handleMouseLeave : undefined, onMouseDown: handleContentMouseDown, onTouchStart: handleContentMouseDown, onMouseUp: handleContentMouseUp, onTouchEnd: handleContentMouseUp, children: _jsx("div", { role: role, ...attributes, id: id, "aria-modal": triggerType === "click", style: contentAttributes?.style, className: innerClassNames, children: children }) }) }));
|
55
|
-
const closestScrollable =
|
56
|
-
const scrollableRef = closestScrollable === document.body
|
55
|
+
const closestScrollable = triggerElRef && findClosestRenderContainer({ el: triggerElRef.current });
|
56
|
+
const scrollableRef = closestScrollable === document.body || !closestScrollable
|
57
|
+
? undefined
|
58
|
+
: { current: closestScrollable };
|
57
59
|
return _jsx(Portal, { targetRef: containerRef || scrollableRef, children: content });
|
58
60
|
};
|
59
61
|
export default FlyoutContent;
|
@@ -15,7 +15,7 @@ import cooldown from "./utilities/cooldown.js";
|
|
15
15
|
import { Provider, useFlyoutTriggerContext, useFlyoutContext, useFlyoutContentContext, } from "./Flyout.context.js";
|
16
16
|
import useHandlerRef from "../../../hooks/useHandlerRef.js";
|
17
17
|
const FlyoutRoot = (props) => {
|
18
|
-
const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, trapFocusMode, width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, contentGap = 2, contentShift, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, } = props;
|
18
|
+
const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, trapFocusMode, width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, originCoordinates, contentGap = 2, contentShift, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, } = props;
|
19
19
|
const fallbackPositions = props.fallbackPositions === false || forcePosition ? [] : props.fallbackPositions;
|
20
20
|
const onOpenRef = useHandlerRef(onOpen);
|
21
21
|
const onCloseRef = useHandlerRef(onClose);
|
@@ -33,7 +33,7 @@ const FlyoutRoot = (props) => {
|
|
33
33
|
*/
|
34
34
|
const triggerElRef = (!parentFlyoutContentContext && parentFlyoutTriggerContext?.triggerElRef) ||
|
35
35
|
internalTriggerElRef;
|
36
|
-
const triggerBoundsRef = React.useRef(
|
36
|
+
const triggerBoundsRef = React.useRef();
|
37
37
|
const flyoutElRef = React.useRef(null);
|
38
38
|
const id = useElementId(passedId);
|
39
39
|
const timerRef = React.useRef();
|
@@ -44,7 +44,7 @@ const FlyoutRoot = (props) => {
|
|
44
44
|
const transitionStartedRef = React.useRef(false);
|
45
45
|
// Lock blur event while pressing anywhere inside the flyout content
|
46
46
|
const lockedBlurEffects = React.useRef(false);
|
47
|
-
// Focus shouldn't
|
47
|
+
// Focus shouldn't return back to the trigger when user intentionally clicks outside the flyout
|
48
48
|
const shouldReturnFocusRef = React.useRef(true);
|
49
49
|
// Touch devices trigger onMouseEnter but we don't need to apply regular hover timeouts
|
50
50
|
// So we're saving a flag on touch start and then change the mouse enter behavior
|
@@ -52,7 +52,7 @@ const FlyoutRoot = (props) => {
|
|
52
52
|
const flyout = useFlyout({
|
53
53
|
triggerElRef,
|
54
54
|
flyoutElRef,
|
55
|
-
triggerBoundsRef,
|
55
|
+
triggerBounds: originCoordinates ?? triggerBoundsRef.current,
|
56
56
|
width,
|
57
57
|
position: passedPosition,
|
58
58
|
defaultActive: resolvedActive,
|
@@ -74,11 +74,12 @@ const FlyoutRoot = (props) => {
|
|
74
74
|
* Called from the internal actions
|
75
75
|
*/
|
76
76
|
const handleOpen = React.useCallback(() => {
|
77
|
-
|
78
|
-
|
77
|
+
if (lockedRef.current)
|
78
|
+
return;
|
79
|
+
if (isRendered && triggerType !== "hover")
|
79
80
|
return;
|
80
81
|
onOpenRef.current?.();
|
81
|
-
}, [isRendered,
|
82
|
+
}, [onOpenRef, isRendered, triggerType]);
|
82
83
|
const handleClose = React.useCallback((options) => {
|
83
84
|
const isLocked = triggerType === "click" && !isDismissible();
|
84
85
|
const canClose = !isLocked && (isRendered || disabled);
|
@@ -164,7 +165,7 @@ const FlyoutRoot = (props) => {
|
|
164
165
|
* After animation has started, we're sure about the correct bounds
|
165
166
|
* so drop the cache to make flyout work when trigger moves around
|
166
167
|
*/
|
167
|
-
triggerBoundsRef.current =
|
168
|
+
triggerBoundsRef.current = undefined;
|
168
169
|
}, [resolvedActive]);
|
169
170
|
const handleTransitionEnd = React.useCallback((e) => {
|
170
171
|
if (flyoutElRef.current !== e.currentTarget || e.propertyName !== "transform")
|
@@ -277,12 +278,14 @@ const FlyoutRoot = (props) => {
|
|
277
278
|
}), [handleOpen, handleClose, updatePosition]);
|
278
279
|
useHotkeys({ Escape: () => handleClose() }, [handleClose]);
|
279
280
|
useOnClickOutside([flyoutElRef, triggerElRef], () => {
|
281
|
+
if (!isRendered)
|
282
|
+
return;
|
280
283
|
if (disableCloseOnOutsideClick)
|
281
284
|
return;
|
282
285
|
// Clicking outside changes focused element so we don't need to set it back ourselves
|
283
286
|
shouldReturnFocusRef.current = false;
|
284
287
|
handleClose();
|
285
|
-
});
|
288
|
+
}, [isRendered]);
|
286
289
|
return (_jsx(Provider, { value: {
|
287
290
|
id,
|
288
291
|
flyout,
|
@@ -5,6 +5,7 @@ declare const _default: {
|
|
5
5
|
export default _default;
|
6
6
|
export declare const position: () => React.JSX.Element;
|
7
7
|
export declare const dynamicPosition: () => React.JSX.Element;
|
8
|
+
export declare const originCoordinates: () => React.JSX.Element;
|
8
9
|
export declare const modes: () => React.JSX.Element;
|
9
10
|
export declare const width: () => React.JSX.Element;
|
10
11
|
export declare const offset: () => React.JSX.Element;
|
@@ -51,6 +51,21 @@ export const position = () => (<div style={{ paddingTop: 200 }}>
|
|
51
51
|
export const dynamicPosition = () => (<div style={{ position: "absolute", top: 0, left: "50%" }}>
|
52
52
|
<Demo position="top"/>
|
53
53
|
</div>);
|
54
|
+
export const originCoordinates = () => {
|
55
|
+
const [coordinates, setCoordinates] = React.useState(null);
|
56
|
+
return (<Example>
|
57
|
+
<Example.Item>
|
58
|
+
<View height={25} width={25} attributes={{
|
59
|
+
onContextMenu: (e) => {
|
60
|
+
e.preventDefault();
|
61
|
+
setCoordinates({ x: e.clientX, y: e.clientY });
|
62
|
+
},
|
63
|
+
}} backgroundColor="neutral-faded" borderRadius="medium"/>
|
64
|
+
<br /> <br />
|
65
|
+
<Demo position="top" originCoordinates={coordinates} active={!!coordinates} onClose={() => setCoordinates(null)}/>
|
66
|
+
</Example.Item>
|
67
|
+
</Example>);
|
68
|
+
};
|
54
69
|
export const modes = () => (<Example>
|
55
70
|
<Example.Item title="dialog click">
|
56
71
|
<Demo position="bottom-start" trapFocusMode="dialog">
|
@@ -187,7 +202,7 @@ export const customPortalTarget = () => {
|
|
187
202
|
return (<Example>
|
188
203
|
<Example.Item title="Custom containerRef">
|
189
204
|
<View padding={4} paddingInline={40} height={50} overflow="auto" backgroundColor="neutral-faded" borderRadius="small" attributes={{ ref: portalRef }}>
|
190
|
-
<Flyout position="bottom-end"
|
205
|
+
<Flyout position="bottom-end" active>
|
191
206
|
<Flyout.Trigger>{(attributes) => <button {...attributes}>Open</button>}</Flyout.Trigger>
|
192
207
|
<Flyout.Content>
|
193
208
|
<div style={{
|
@@ -1,22 +1,17 @@
|
|
1
1
|
import React from "react";
|
2
|
+
import type * as G from "../../../types/global";
|
2
3
|
import type * as T from "./Flyout.types";
|
3
|
-
|
4
|
-
* Typings
|
5
|
-
*/
|
6
|
-
type ElementRef = React.RefObject<HTMLElement>;
|
7
|
-
type PassedFlyoutOptions = {
|
4
|
+
type UseFlyout = (args: {
|
8
5
|
width?: T.Width;
|
9
6
|
position?: T.Position;
|
10
7
|
defaultActive?: boolean;
|
11
8
|
fallbackPositions?: T.Position[];
|
12
|
-
container?: HTMLElement | null;
|
13
|
-
};
|
14
|
-
type UseFlyout = (args: PassedFlyoutOptions & {
|
15
|
-
triggerElRef: ElementRef;
|
16
|
-
flyoutElRef: ElementRef;
|
17
|
-
triggerBoundsRef: React.RefObject<DOMRect | undefined>;
|
18
9
|
contentGap?: number;
|
19
10
|
contentShift?: number;
|
11
|
+
container?: HTMLElement | null;
|
12
|
+
triggerElRef: React.RefObject<HTMLElement>;
|
13
|
+
flyoutElRef: React.RefObject<HTMLElement>;
|
14
|
+
triggerBounds?: DOMRect | G.Coordinates;
|
20
15
|
}) => Pick<T.State, "styles" | "position" | "status"> & {
|
21
16
|
updatePosition: (options?: {
|
22
17
|
sync?: boolean;
|
@@ -1,23 +1,9 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import useRTL from "../../../hooks/useRTL.js";
|
3
|
-
import {
|
3
|
+
import { findClosestRenderContainer, getShadowRoot, getRectFromCoordinates } from "../../../utilities/dom/index.js";
|
4
4
|
import calculatePosition from "./utilities/calculatePosition.js";
|
5
5
|
import getPositionFallbacks from "./utilities/getPositionFallbacks.js";
|
6
|
-
|
7
|
-
* Check if element visually fits on the screen
|
8
|
-
*/
|
9
|
-
const fullyVisible = (args) => {
|
10
|
-
const { styles, scopeOffset } = args;
|
11
|
-
const htmlEl = document.documentElement;
|
12
|
-
const pageLeft = htmlEl.scrollLeft;
|
13
|
-
const pageRight = pageLeft + htmlEl.clientWidth;
|
14
|
-
const pageTop = htmlEl.scrollTop;
|
15
|
-
const pageBottom = pageTop + htmlEl.clientHeight;
|
16
|
-
return (styles.left + scopeOffset.left >= pageLeft &&
|
17
|
-
styles.left + styles.width + scopeOffset.left <= pageRight &&
|
18
|
-
styles.top + scopeOffset.top >= pageTop &&
|
19
|
-
styles.top + styles.height + scopeOffset.top <= pageBottom);
|
20
|
-
};
|
6
|
+
import isFullyVisible from "./utilities/isFullyVisible.js";
|
21
7
|
/**
|
22
8
|
* Order of keys here is responsible for the order of styles applied
|
23
9
|
*/
|
@@ -33,7 +19,6 @@ const resetStyles = {
|
|
33
19
|
left: 0,
|
34
20
|
top: 0,
|
35
21
|
position: "fixed",
|
36
|
-
// opacity: 0,
|
37
22
|
visibility: "hidden",
|
38
23
|
animation: "none",
|
39
24
|
transition: "none",
|
@@ -46,9 +31,12 @@ const flyout = (args) => {
|
|
46
31
|
const { triggerEl, flyoutEl, triggerBounds: passedTriggerBounds, contentShift = 0, contentGap = 0, ...options } = args;
|
47
32
|
const { position, fallbackPositions, width, container, lastUsedFallback, onFallback } = options;
|
48
33
|
const targetClone = flyoutEl.cloneNode(true);
|
49
|
-
const triggerBounds = passedTriggerBounds || triggerEl.getBoundingClientRect();
|
50
34
|
const baseUnit = getComputedStyle(flyoutEl).getPropertyValue("--rs-unit-x1");
|
51
35
|
const unitModifier = baseUnit ? parseInt(baseUnit) : 0;
|
36
|
+
const triggerBounds = passedTriggerBounds || triggerEl?.getBoundingClientRect();
|
37
|
+
if (!triggerBounds)
|
38
|
+
return;
|
39
|
+
const resolvedTriggerBounds = getRectFromCoordinates(triggerBounds);
|
52
40
|
// Reset all styles applied on the previous hook execution
|
53
41
|
targetClone.style.cssText = "";
|
54
42
|
Object.keys(resetStyles).forEach((key) => {
|
@@ -58,17 +46,17 @@ const flyout = (args) => {
|
|
58
46
|
});
|
59
47
|
if (width) {
|
60
48
|
if (width === "trigger") {
|
61
|
-
targetClone.style.width = `${
|
49
|
+
targetClone.style.width = `${resolvedTriggerBounds.width}px`;
|
62
50
|
}
|
63
51
|
else if (width !== "full") {
|
64
52
|
targetClone.style.width = width;
|
65
53
|
}
|
66
54
|
}
|
67
|
-
const shadowRoot = getShadowRoot(triggerEl);
|
55
|
+
const shadowRoot = triggerEl && getShadowRoot(triggerEl);
|
68
56
|
// Insert inside shadow root if possible to make sure styles are applied correctly
|
69
57
|
(shadowRoot || document.body).appendChild(targetClone);
|
70
58
|
const flyoutBounds = targetClone.getBoundingClientRect();
|
71
|
-
const containerParent = container ||
|
59
|
+
const containerParent = container || (triggerEl ? findClosestRenderContainer({ el: triggerEl }) : document.body);
|
72
60
|
const containerBounds = containerParent.getBoundingClientRect();
|
73
61
|
const scopeOffset = {
|
74
62
|
top: containerBounds.top + document.documentElement.scrollTop - containerParent.scrollTop,
|
@@ -79,14 +67,14 @@ const flyout = (args) => {
|
|
79
67
|
testOrder.some((currentPosition) => {
|
80
68
|
const tested = calculatePosition({
|
81
69
|
...options,
|
82
|
-
triggerBounds,
|
70
|
+
triggerBounds: resolvedTriggerBounds,
|
83
71
|
flyoutBounds,
|
84
72
|
scopeOffset,
|
85
73
|
position: currentPosition,
|
86
74
|
contentGap: contentGap * unitModifier,
|
87
75
|
contentShift: contentShift * unitModifier,
|
88
76
|
});
|
89
|
-
const visible =
|
77
|
+
const visible = isFullyVisible(tested);
|
90
78
|
const validPosition = visible || fallbackPositions?.length === 0;
|
91
79
|
// Saving first try in case non of the options work
|
92
80
|
if (validPosition || lastUsedFallback === currentPosition) {
|
@@ -96,7 +84,7 @@ const flyout = (args) => {
|
|
96
84
|
return validPosition;
|
97
85
|
});
|
98
86
|
if (!calculated) {
|
99
|
-
throw new Error(`Reshaped
|
87
|
+
throw new Error(`[Reshaped] Can't calculate styles for the ${position} position`);
|
100
88
|
}
|
101
89
|
targetClone.parentNode?.removeChild(targetClone);
|
102
90
|
return calculated;
|
@@ -132,11 +120,11 @@ const flyoutReducer = (state, action) => {
|
|
132
120
|
return state;
|
133
121
|
return { ...state, status: "idle", styles: resetStyles };
|
134
122
|
default:
|
135
|
-
throw new Error("Invalid reducer type");
|
123
|
+
throw new Error("[Reshaped] Invalid flyout reducer type");
|
136
124
|
}
|
137
125
|
};
|
138
126
|
const useFlyout = (args) => {
|
139
|
-
const { triggerElRef, flyoutElRef,
|
127
|
+
const { triggerElRef, flyoutElRef, triggerBounds, contentGap, contentShift, ...options } = args;
|
140
128
|
const { position: defaultPosition = "bottom", fallbackPositions, width, container } = options;
|
141
129
|
const lastUsedFallbackRef = React.useRef(defaultPosition);
|
142
130
|
// Memo the array internally to avoid new arrays triggering useCallback
|
@@ -165,12 +153,12 @@ const useFlyout = (args) => {
|
|
165
153
|
lastUsedFallbackRef.current = position;
|
166
154
|
}, []);
|
167
155
|
const updatePosition = React.useCallback((options) => {
|
168
|
-
if (!
|
156
|
+
if (!flyoutElRef.current)
|
169
157
|
return;
|
170
158
|
const nextFlyoutData = flyout({
|
171
159
|
triggerEl: triggerElRef.current,
|
172
160
|
flyoutEl: flyoutElRef.current,
|
173
|
-
triggerBounds
|
161
|
+
triggerBounds,
|
174
162
|
width,
|
175
163
|
position: defaultPosition,
|
176
164
|
fallbackPositions: cachedFallbackPositions,
|
@@ -181,8 +169,9 @@ const useFlyout = (args) => {
|
|
181
169
|
contentGap,
|
182
170
|
contentShift,
|
183
171
|
});
|
184
|
-
if (nextFlyoutData)
|
172
|
+
if (nextFlyoutData) {
|
185
173
|
dispatch({ type: "position", payload: { ...nextFlyoutData, sync: options?.sync } });
|
174
|
+
}
|
186
175
|
}, [
|
187
176
|
container,
|
188
177
|
defaultPosition,
|
@@ -190,7 +179,7 @@ const useFlyout = (args) => {
|
|
190
179
|
isRTL,
|
191
180
|
flyoutElRef,
|
192
181
|
triggerElRef,
|
193
|
-
|
182
|
+
triggerBounds,
|
194
183
|
width,
|
195
184
|
contentGap,
|
196
185
|
contentShift,
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/**
|
2
|
+
* Check if element visually fits on the screen
|
3
|
+
*/
|
4
|
+
const isFullyVisible = (args) => {
|
5
|
+
const { styles, scopeOffset } = args;
|
6
|
+
const htmlEl = document.documentElement;
|
7
|
+
const pageLeft = htmlEl.scrollLeft;
|
8
|
+
const pageRight = pageLeft + htmlEl.clientWidth;
|
9
|
+
const pageTop = htmlEl.scrollTop;
|
10
|
+
const pageBottom = pageTop + htmlEl.clientHeight;
|
11
|
+
return (styles.left + scopeOffset.left >= pageLeft &&
|
12
|
+
styles.left + styles.width + scopeOffset.left <= pageRight &&
|
13
|
+
styles.top + scopeOffset.top >= pageTop &&
|
14
|
+
styles.top + styles.height + scopeOffset.top <= pageBottom);
|
15
|
+
};
|
16
|
+
export default isFullyVisible;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
"use client";
|
2
|
-
import { jsx as _jsx
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
3
3
|
import React from "react";
|
4
4
|
import ReactDOM from "react-dom";
|
5
5
|
import Theme from "../../Theme/index.js";
|
@@ -29,7 +29,10 @@ const Portal = (props) => {
|
|
29
29
|
const nextScopeRef = targetRef || portal.scopeRef;
|
30
30
|
const targetEl = nextScopeRef?.current || defaultTargetEl;
|
31
31
|
/* Preserve the current theme when rendered in body */
|
32
|
-
return
|
32
|
+
return [
|
33
|
+
ReactDOM.createPortal(_jsx(Theme, { children: children }), targetEl),
|
34
|
+
_jsx("div", { ref: rootRef, className: s.root }, "root"),
|
35
|
+
];
|
33
36
|
};
|
34
37
|
function PortalScope(props) {
|
35
38
|
const { children } = props;
|
@@ -1,3 +1,3 @@
|
|
1
1
|
import React from "react";
|
2
|
-
declare const useOnClickOutside: (refs: React.RefObject<HTMLElement>[], handler: (event: Event) => void) => void;
|
2
|
+
declare const useOnClickOutside: (refs: React.RefObject<HTMLElement>[], handler: (event: Event) => void, deps: any[]) => void;
|
3
3
|
export default useOnClickOutside;
|
@@ -1,17 +1,20 @@
|
|
1
1
|
import useHandlerRef from "../useHandlerRef.js";
|
2
2
|
import React from "react";
|
3
|
-
const useOnClickOutside = (refs, handler) => {
|
3
|
+
const useOnClickOutside = (refs, handler, deps) => {
|
4
4
|
const handlerRef = useHandlerRef(handler);
|
5
5
|
React.useEffect(() => {
|
6
6
|
if (!handlerRef.current)
|
7
7
|
return;
|
8
8
|
const handleClick = (event) => {
|
9
|
+
if (event instanceof MouseEvent && event.button === 2) {
|
10
|
+
return;
|
11
|
+
}
|
9
12
|
let isInside = false;
|
10
13
|
const clickedEl = event.composedPath()[0];
|
11
14
|
refs.forEach((elRef) => {
|
12
|
-
if (!elRef.current
|
13
|
-
|
14
|
-
|
15
|
+
if (!elRef.current)
|
16
|
+
return;
|
17
|
+
if (elRef.current === clickedEl || elRef.current.contains(clickedEl)) {
|
15
18
|
isInside = true;
|
16
19
|
}
|
17
20
|
});
|
@@ -27,6 +30,6 @@ const useOnClickOutside = (refs, handler) => {
|
|
27
30
|
document.removeEventListener("touchstart", handleClick);
|
28
31
|
};
|
29
32
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
30
|
-
}, [handlerRef, ...refs]);
|
33
|
+
}, [handlerRef, ...refs, ...deps]);
|
31
34
|
};
|
32
35
|
export default useOnClickOutside;
|
@@ -1,10 +1,14 @@
|
|
1
1
|
import React from "react";
|
2
|
+
import * as keys from "../../constants/keys.js";
|
2
3
|
import { enableKeyboardMode, disableKeyboardMode } from "../../utilities/a11y/index.js";
|
3
4
|
const useSingletonKeyboardMode = () => {
|
4
5
|
React.useEffect(() => {
|
5
6
|
const handleKeyDown = (e) => {
|
6
7
|
if (e.metaKey || e.altKey || e.ctrlKey)
|
7
8
|
return;
|
9
|
+
// Prevent focus ring from appearing when using mouse but closing with esc
|
10
|
+
if (e.key === keys.ESC)
|
11
|
+
return;
|
8
12
|
enableKeyboardMode();
|
9
13
|
};
|
10
14
|
const handleClick = () => {
|
package/dist/index.d.ts
CHANGED
@@ -31,6 +31,8 @@ export { default as CheckboxGroup } from "./components/CheckboxGroup";
|
|
31
31
|
export type { CheckboxGroupProps } from "./components/CheckboxGroup";
|
32
32
|
export { default as Container } from "./components/Container";
|
33
33
|
export type { ContainerProps } from "./components/Container";
|
34
|
+
export { default as ContextMenu } from "./components/ContextMenu";
|
35
|
+
export type { ContextMenuProps } from "./components/ContextMenu";
|
34
36
|
export { default as Dismissible } from "./components/Dismissible";
|
35
37
|
export type { DismissibleProps } from "./components/Dismissible";
|
36
38
|
export { default as Divider } from "./components/Divider";
|
package/dist/index.js
CHANGED
@@ -16,6 +16,7 @@ export { default as Carousel } from "./components/Carousel/index.js";
|
|
16
16
|
export { default as Checkbox } from "./components/Checkbox/index.js";
|
17
17
|
export { default as CheckboxGroup } from "./components/CheckboxGroup/index.js";
|
18
18
|
export { default as Container } from "./components/Container/index.js";
|
19
|
+
export { default as ContextMenu } from "./components/ContextMenu/index.js";
|
19
20
|
export { default as Dismissible } from "./components/Dismissible/index.js";
|
20
21
|
export { default as Divider } from "./components/Divider/index.js";
|
21
22
|
export { default as DropdownMenu } from "./components/DropdownMenu/index.js";
|
@@ -0,0 +1 @@
|
|
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,10 +1,10 @@
|
|
1
|
-
import {
|
2
|
-
import
|
1
|
+
import { responsiveVariables } from "../../utilities/helpers.js";
|
2
|
+
import "./align.css";
|
3
3
|
const getAlignStyles = (value) => {
|
4
4
|
if (!value)
|
5
5
|
return null;
|
6
6
|
return {
|
7
|
-
|
7
|
+
variables: responsiveVariables("--rs-align", value),
|
8
8
|
};
|
9
9
|
};
|
10
10
|
export default getAlignStyles;
|