@salt-ds/core 1.73.0 → 1.74.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 +56 -0
- package/css/salt-core.css +269 -28
- package/dist-cjs/drawer/Drawer.css.js +1 -1
- package/dist-cjs/drawer/Drawer.js +54 -6
- package/dist-cjs/drawer/Drawer.js.map +1 -1
- package/dist-cjs/drawer/DrawerContext.js +2 -0
- package/dist-cjs/drawer/DrawerContext.js.map +1 -1
- package/dist-cjs/drawer/DrawerFooter.css.js +1 -1
- package/dist-cjs/drawer/DrawerHeader.css.js +1 -1
- package/dist-cjs/drawer/DrawerHeader.js +6 -3
- package/dist-cjs/drawer/DrawerHeader.js.map +1 -1
- package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js +6 -0
- package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
- package/dist-cjs/drawer/internal/DrawerResizeGuide.js +44 -0
- package/dist-cjs/drawer/internal/DrawerResizeGuide.js.map +1 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js +6 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.js +43 -0
- package/dist-cjs/drawer/internal/DrawerResizeHandle.js.map +1 -0
- package/dist-cjs/drawer/internal/useDrawerResize.js +519 -0
- package/dist-cjs/drawer/internal/useDrawerResize.js.map +1 -0
- package/dist-cjs/link-button/LinkButton.css.js +1 -1
- package/dist-cjs/menu/MenuAlignmentContext.js +55 -0
- package/dist-cjs/menu/MenuAlignmentContext.js.map +1 -0
- package/dist-cjs/menu/MenuBase.js +9 -3
- package/dist-cjs/menu/MenuBase.js.map +1 -1
- package/dist-cjs/menu/MenuGroup.js +42 -3
- package/dist-cjs/menu/MenuGroup.js.map +1 -1
- package/dist-cjs/menu/MenuGroupContext.js +27 -0
- package/dist-cjs/menu/MenuGroupContext.js.map +1 -0
- package/dist-cjs/menu/MenuItem.css.js +1 -1
- package/dist-cjs/menu/MenuItem.js +176 -50
- package/dist-cjs/menu/MenuItem.js.map +1 -1
- package/dist-cjs/menu/MenuPanel.js +12 -3
- package/dist-cjs/menu/MenuPanel.js.map +1 -1
- package/dist-cjs/menu/MenuPanelContext.js +3 -1
- package/dist-cjs/menu/MenuPanelContext.js.map +1 -1
- package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
- package/dist-cjs/tree/TreeNodeTrigger.css.js +1 -1
- package/dist-cjs/tree/TreeNodeTrigger.js +0 -1
- package/dist-cjs/tree/TreeNodeTrigger.js.map +1 -1
- package/dist-es/drawer/Drawer.css.js +1 -1
- package/dist-es/drawer/Drawer.js +54 -6
- package/dist-es/drawer/Drawer.js.map +1 -1
- package/dist-es/drawer/DrawerContext.js +2 -0
- package/dist-es/drawer/DrawerContext.js.map +1 -1
- package/dist-es/drawer/DrawerFooter.css.js +1 -1
- package/dist-es/drawer/DrawerHeader.css.js +1 -1
- package/dist-es/drawer/DrawerHeader.js +6 -3
- package/dist-es/drawer/DrawerHeader.js.map +1 -1
- package/dist-es/drawer/internal/DrawerResizeGuide.css.js +4 -0
- package/dist-es/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
- package/dist-es/drawer/internal/DrawerResizeGuide.js +42 -0
- package/dist-es/drawer/internal/DrawerResizeGuide.js.map +1 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.css.js +4 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.js +41 -0
- package/dist-es/drawer/internal/DrawerResizeHandle.js.map +1 -0
- package/dist-es/drawer/internal/useDrawerResize.js +517 -0
- package/dist-es/drawer/internal/useDrawerResize.js.map +1 -0
- package/dist-es/link-button/LinkButton.css.js +1 -1
- package/dist-es/menu/MenuAlignmentContext.js +50 -0
- package/dist-es/menu/MenuAlignmentContext.js.map +1 -0
- package/dist-es/menu/MenuBase.js +9 -3
- package/dist-es/menu/MenuBase.js.map +1 -1
- package/dist-es/menu/MenuGroup.js +44 -5
- package/dist-es/menu/MenuGroup.js.map +1 -1
- package/dist-es/menu/MenuGroupContext.js +23 -0
- package/dist-es/menu/MenuGroupContext.js.map +1 -0
- package/dist-es/menu/MenuItem.css.js +1 -1
- package/dist-es/menu/MenuItem.js +177 -51
- package/dist-es/menu/MenuItem.js.map +1 -1
- package/dist-es/menu/MenuPanel.js +12 -3
- package/dist-es/menu/MenuPanel.js.map +1 -1
- package/dist-es/menu/MenuPanelContext.js +3 -1
- package/dist-es/menu/MenuPanelContext.js.map +1 -1
- package/dist-es/toggle-button/ToggleButton.css.js +1 -1
- package/dist-es/tree/TreeNodeTrigger.css.js +1 -1
- package/dist-es/tree/TreeNodeTrigger.js +0 -1
- package/dist-es/tree/TreeNodeTrigger.js.map +1 -1
- package/dist-types/drawer/Drawer.d.ts +6 -0
- package/dist-types/drawer/DrawerContext.d.ts +3 -0
- package/dist-types/drawer/DrawerHeader.d.ts +1 -1
- package/dist-types/drawer/internal/DrawerResizeGuide.d.ts +7 -0
- package/dist-types/drawer/internal/DrawerResizeHandle.d.ts +8 -0
- package/dist-types/drawer/internal/index.d.ts +3 -0
- package/dist-types/drawer/internal/useDrawerResize.d.ts +34 -0
- package/dist-types/menu/MenuAlignmentContext.d.ts +14 -0
- package/dist-types/menu/MenuGroup.d.ts +26 -4
- package/dist-types/menu/MenuGroupContext.d.ts +10 -0
- package/dist-types/menu/MenuItem.d.ts +4 -0
- package/dist-types/menu/MenuPanelContext.d.ts +2 -0
- package/package.json +1 -1
|
@@ -10,6 +10,7 @@ var useForkRef = require('../utils/useForkRef.js');
|
|
|
10
10
|
require('../utils/useId.js');
|
|
11
11
|
require('../salt-provider/SaltProvider.js');
|
|
12
12
|
require('../viewport/ViewportProvider.js');
|
|
13
|
+
var MenuAlignmentContext = require('./MenuAlignmentContext.js');
|
|
13
14
|
var MenuContext = require('./MenuContext.js');
|
|
14
15
|
var MenuPanelBase = require('./MenuPanelBase.js');
|
|
15
16
|
var MenuPanelContext = require('./MenuPanelContext.js');
|
|
@@ -32,11 +33,19 @@ const MenuPanel = React.forwardRef(
|
|
|
32
33
|
isNested
|
|
33
34
|
} = MenuContext.useMenuContext();
|
|
34
35
|
const handleRef = useForkRef.useForkRef(ref, refs == null ? void 0 : refs.setFloating);
|
|
36
|
+
const [hasSelectionIcon, registerPanelSelectionIcon] = MenuAlignmentContext.useSlotRegistry();
|
|
37
|
+
const alignment = MenuAlignmentContext.useMenuAlignmentScope();
|
|
35
38
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
36
39
|
MenuPanelContext.MenuPanelContext.Provider,
|
|
37
40
|
{
|
|
38
|
-
value: {
|
|
39
|
-
|
|
41
|
+
value: {
|
|
42
|
+
activeIndex,
|
|
43
|
+
getItemProps,
|
|
44
|
+
setFocusInside,
|
|
45
|
+
hasSelectionIcon,
|
|
46
|
+
registerPanelSelectionIcon
|
|
47
|
+
},
|
|
48
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(MenuAlignmentContext.MenuAlignmentContext.Provider, { value: alignment, children: /* @__PURE__ */ jsxRuntime.jsx(react.FloatingList, { elementsRef, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
40
49
|
FloatingComponent,
|
|
41
50
|
{
|
|
42
51
|
open: openState,
|
|
@@ -55,7 +64,7 @@ const MenuPanel = React.forwardRef(
|
|
|
55
64
|
...rest,
|
|
56
65
|
children: /* @__PURE__ */ jsxRuntime.jsx(MenuPanelBase.MenuPanelBase, { children })
|
|
57
66
|
}
|
|
58
|
-
) })
|
|
67
|
+
) }) })
|
|
59
68
|
}
|
|
60
69
|
);
|
|
61
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPanel.js","sources":["../src/menu/MenuPanel.tsx"],"sourcesContent":["import { FloatingList } from \"@floating-ui/react\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { makePrefixer, useFloatingComponent, useForkRef } from \"../utils\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { MenuPanelBase } from \"./MenuPanelBase\";\nimport { MenuPanelContext } from \"./MenuPanelContext\";\n\nexport interface MenuPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the menu panel.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuPanel\");\n\nexport const MenuPanel = forwardRef<HTMLDivElement, MenuPanelProps>(\n function MenuPanel(props, ref) {\n const { children, className, ...rest } = props;\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const {\n getItemProps,\n openState,\n getFloatingProps,\n refs,\n getPanelPosition,\n context,\n elementsRef,\n activeIndex,\n setFocusInside,\n isNested,\n } = useMenuContext();\n\n const handleRef = useForkRef<HTMLDivElement>(ref, refs?.setFloating);\n\n return (\n <MenuPanelContext.Provider\n value={{
|
|
1
|
+
{"version":3,"file":"MenuPanel.js","sources":["../src/menu/MenuPanel.tsx"],"sourcesContent":["import { FloatingList } from \"@floating-ui/react\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { makePrefixer, useFloatingComponent, useForkRef } from \"../utils\";\nimport {\n MenuAlignmentContext,\n useMenuAlignmentScope,\n useSlotRegistry,\n} from \"./MenuAlignmentContext\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { MenuPanelBase } from \"./MenuPanelBase\";\nimport { MenuPanelContext } from \"./MenuPanelContext\";\n\nexport interface MenuPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the menu panel.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuPanel\");\n\nexport const MenuPanel = forwardRef<HTMLDivElement, MenuPanelProps>(\n function MenuPanel(props, ref) {\n const { children, className, ...rest } = props;\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const {\n getItemProps,\n openState,\n getFloatingProps,\n refs,\n getPanelPosition,\n context,\n elementsRef,\n activeIndex,\n setFocusInside,\n isNested,\n } = useMenuContext();\n\n const handleRef = useForkRef<HTMLDivElement>(ref, refs?.setFloating);\n\n const [hasSelectionIcon, registerPanelSelectionIcon] = useSlotRegistry();\n // Items outside a MenuGroup align with each other.\n const alignment = useMenuAlignmentScope();\n\n return (\n <MenuPanelContext.Provider\n value={{\n activeIndex,\n getItemProps,\n setFocusInside,\n hasSelectionIcon,\n registerPanelSelectionIcon,\n }}\n >\n <MenuAlignmentContext.Provider value={alignment}>\n <FloatingList elementsRef={elementsRef}>\n <FloatingComponent\n open={openState}\n role=\"menu\"\n {...getFloatingProps()}\n {...getPanelPosition()}\n className={clsx(withBaseName(), className)}\n focusManagerProps={\n context\n ? {\n context,\n initialFocus: isNested ? -1 : 0,\n returnFocus: !isNested,\n modal: false,\n }\n : undefined\n }\n tabIndex={-1}\n ref={handleRef}\n {...rest}\n >\n <MenuPanelBase>{children}</MenuPanelBase>\n </FloatingComponent>\n </FloatingList>\n </MenuAlignmentContext.Provider>\n </MenuPanelContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuPanel","useFloatingComponent","useMenuContext","useForkRef","useSlotRegistry","useMenuAlignmentScope","jsx","MenuPanelContext","MenuAlignmentContext","FloatingList","clsx","MenuPanelBase"],"mappings":";;;;;;;;;;;;;;;;;AAwBA,MAAM,YAAA,GAAeA,0BAAa,eAAe,CAAA;AAE1C,MAAM,SAAA,GAAYC,gBAAA;AAAA,EACvB,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAW,iBAAA,EAAkB,GAAIC,kCAAA,EAAqB;AAE9D,IAAA,MAAM;AAAA,MACJ,YAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,gBAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACEC,0BAAA,EAAe;AAEnB,IAAA,MAAM,SAAA,GAAYC,qBAAA,CAA2B,GAAA,EAAK,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAW,CAAA;AAEnE,IAAA,MAAM,CAAC,gBAAA,EAAkB,0BAA0B,CAAA,GAAIC,oCAAA,EAAgB;AAEvE,IAAA,MAAM,YAAYC,0CAAA,EAAsB;AAExC,IAAA,uBACEC,cAAA;AAAA,MAACC,iCAAA,CAAiB,QAAA;AAAA,MAAjB;AAAA,QACC,KAAA,EAAO;AAAA,UACL,WAAA;AAAA,UACA,YAAA;AAAA,UACA,cAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAD,cAAA,CAACE,0CAAqB,QAAA,EAArB,EAA8B,OAAO,SAAA,EACpC,QAAA,kBAAAF,cAAA,CAACG,sBAAa,WAAA,EACZ,QAAA,kBAAAH,cAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,SAAA;AAAA,YACN,IAAA,EAAK,MAAA;AAAA,YACJ,GAAG,gBAAA,EAAiB;AAAA,YACpB,GAAG,gBAAA,EAAiB;AAAA,YACrB,SAAA,EAAWI,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,YACzC,mBACE,OAAA,GACI;AAAA,cACE,OAAA;AAAA,cACA,YAAA,EAAc,WAAW,EAAA,GAAK,CAAA;AAAA,cAC9B,aAAa,CAAC,QAAA;AAAA,cACd,KAAA,EAAO;AAAA,aACT,GACA,MAAA;AAAA,YAEN,QAAA,EAAU,EAAA;AAAA,YACV,GAAA,EAAK,SAAA;AAAA,YACJ,GAAG,IAAA;AAAA,YAEJ,QAAA,kBAAAJ,cAAA,CAACK,+BAAe,QAAA,EAAS;AAAA;AAAA,WAE7B,CAAA,EACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
|
|
@@ -14,7 +14,9 @@ const MenuPanelContext = createContext.createContext(
|
|
|
14
14
|
{
|
|
15
15
|
activeIndex: null,
|
|
16
16
|
getItemProps: () => ({}),
|
|
17
|
-
setFocusInside: () => void 0
|
|
17
|
+
setFocusInside: () => void 0,
|
|
18
|
+
hasSelectionIcon: false,
|
|
19
|
+
registerPanelSelectionIcon: () => () => void 0
|
|
18
20
|
}
|
|
19
21
|
);
|
|
20
22
|
function useMenuPanelContext() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPanelContext.js","sources":["../src/menu/MenuPanelContext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { createContext } from \"../utils\";\nimport type { MenuContextValue } from \"./MenuContext\";\n\nexport interface MenuPanelContextValue\n extends Pick<\n MenuContextValue,\n \"getItemProps\" | \"activeIndex\" | \"setFocusInside\"\n > {}\n\nexport const MenuPanelContext = createContext<MenuPanelContextValue>(\n \"MenuPanelContext\",\n {\n activeIndex: null,\n getItemProps: () => ({}),\n setFocusInside: () => undefined,\n },\n);\n\nexport function useMenuPanelContext() {\n return useContext(MenuPanelContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"MenuPanelContext.js","sources":["../src/menu/MenuPanelContext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { createContext } from \"../utils\";\nimport type { MenuContextValue } from \"./MenuContext\";\n\nexport interface MenuPanelContextValue\n extends Pick<\n MenuContextValue,\n \"getItemProps\" | \"activeIndex\" | \"setFocusInside\"\n > {\n hasSelectionIcon: boolean;\n registerPanelSelectionIcon: () => () => void;\n}\n\nexport const MenuPanelContext = createContext<MenuPanelContextValue>(\n \"MenuPanelContext\",\n {\n activeIndex: null,\n getItemProps: () => ({}),\n setFocusInside: () => undefined,\n hasSelectionIcon: false,\n registerPanelSelectionIcon: () => () => undefined,\n },\n);\n\nexport function useMenuPanelContext() {\n return useContext(MenuPanelContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;;;;;AAaO,MAAM,gBAAA,GAAmBA,2BAAA;AAAA,EAC9B,kBAAA;AAAA,EACA;AAAA,IACE,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,OAAO,EAAC,CAAA;AAAA,IACtB,gBAAgB,MAAM,MAAA;AAAA,IACtB,gBAAA,EAAkB,KAAA;AAAA,IAClB,0BAAA,EAA4B,MAAM,MAAM;AAAA;AAE5C;AAEO,SAAS,mBAAA,GAAsB;AACpC,EAAA,OAAOC,iBAAW,gBAAgB,CAAA;AACpC;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltToggleButton {\n --toggleButton-borderWidth: var(--salt-size-fixed-100);\n\n align-items: center;\n appearance: none;\n background: var(--toggleButton-background);\n border-color: var(--toggleButton-borderColor, transparent);\n border-style: solid;\n border-width: var(--toggleButton-borderWidth);\n border-radius: var(--salt-palette-corner-weak, 0);\n box-sizing: border-box;\n color: var(--toggleButton-text-color);\n cursor: var(--salt-cursor-hover);\n display: inline-flex;\n gap: var(--salt-spacing-50);\n height: var(--salt-size-base);\n justify-content: center;\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-action-fontWeight);\n font-family: var(--salt-text-action-fontFamily);\n letter-spacing: var(--salt-text-action-letterSpacing);\n text-transform: var(--salt-text-action-textTransform);\n padding: 0 calc(var(--salt-spacing-100) - var(--toggleButton-borderWidth));\n margin: 0;\n min-width: unset;\n position: relative;\n text-align: var(--salt-text-action-textAlign);\n text-decoration: none;\n transition: none;\n width: auto;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.saltToggleButton:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n}\n\n@media (hover: hover) {\n .saltToggleButton:hover {\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n }\n}\n\n.saltToggleButton:active {\n background: var(--toggleButton-background-active);\n color: var(--toggleButton-text-color-active);\n border-color: var(--toggleButton-borderColor-active);\n}\n\n.saltToggleButton[aria-checked=\"true\"],\n.saltToggleButton[aria-pressed=\"true\"] {\n background: var(--toggleButton-background-selected);\n color: var(--toggleButton-text-color-selected);\n cursor: var(--salt-cursor-active);\n border-color: var(--toggleButton-borderColor-selected);\n}\n\n.saltToggleButton[aria-checked=\"true\"]:hover {\n cursor: unset;\n}\n\n.saltToggleButton[aria-pressed=\"true\"]:hover {\n background: var(--toggleButton-background-selectedHover);\n border-color: var(--toggleButton-borderColor-selectedHover);\n}\n\n.saltToggleButton[aria-disabled=\"true\"] {\n background: var(--toggleButton-background);\n color: var(--toggleButton-text-color);\n cursor: var(--salt-cursor-disabled);\n border-color: var(--toggleButton-borderColor);\n\n opacity: 0.4;\n}\n\n.saltToggleButton[aria-checked=\"true\"].saltToggleButton[aria-disabled=\"true\"],\n.saltToggleButton[aria-pressed=\"true\"].saltToggleButton[aria-disabled=\"true\"] {\n background: var(--toggleButton-background-selected);\n color: var(--toggleButton-text-color-selected);\n border-color: var(--toggleButton-borderColor-selected);\n}\n\n.saltToggleButton.saltToggleButton-readOnly {\n background: var(--toggleButton-background);\n color: var(--toggleButton-text-color);\n cursor: var(--salt-cursor-disabled);\n border-color: var(--toggleButton-borderColor);\n\n opacity: 0.4;\n}\n\n.saltToggleButton[aria-checked=\"true\"].saltToggleButton-readOnly,\n.saltToggleButton[aria-pressed=\"true\"].saltToggleButton-readOnly {\n background: var(--toggleButton-background-selected);\n color: var(--toggleButton-text-color-selected);\n border-color: var(--toggleButton-borderColor-selected);\n\n opacity: unset;\n}\n\n.saltToggleButton-neutral.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-foreground-selected);\n --toggleButton-background: var(--salt-actionable-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-bold-background-hover);\n}\n\n.saltToggleButton-accented.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-accented-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-accented-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-accented-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-accented-foreground-selected);\n --toggleButton-background: var(--salt-actionable-accented-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-accented-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-accented-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-accented-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-accented-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-accented-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-accented-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-accented-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-accented-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-accented-bold-background-hover);\n}\n\n.saltToggleButton-positive.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-positive-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-positive-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-positive-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-positive-foreground-selected);\n --toggleButton-background: var(--salt-actionable-positive-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-positive-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-positive-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-positive-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-positive-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-positive-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-positive-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-positive-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-positive-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-accented-bold-background-hover);\n}\n\n.saltToggleButton-negative.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-negative-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-negative-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-negative-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-negative-foreground-selected);\n --toggleButton-background: var(--salt-actionable-negative-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-negative-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-negative-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-negative-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-negative-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-negative-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-negative-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-negative-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-negative-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-negative-bold-background-hover);\n}\n\n.saltToggleButton-caution.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-caution-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-caution-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-caution-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-caution-foreground-selected);\n --toggleButton-background: var(--salt-actionable-caution-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-caution-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-caution-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-caution-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-caution-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-caution-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-caution-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-caution-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-caution-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-caution-bold-background-hover);\n}\n\n.saltToggleButton-neutral.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-foreground);\n --toggleButton-text-color-selected: var(--salt-actionable-foreground-selected);\n --toggleButton-background: var(--salt-actionable-background);\n --toggleButton-background-hover: var(--salt-actionable-background-hover);\n --toggleButton-background-active: var(--salt-actionable-background);\n --toggleButton-background-selected: var(--salt-actionable-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-borderColor);\n --toggleButton-borderColor-active: var(--salt-actionable-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-bold-background-hover);\n}\n\n.saltToggleButton-accented.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-accented-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-accented-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-accented-foreground);\n --toggleButton-text-color-selected: var(--salt-actionable-accented-foreground-selected);\n --toggleButton-background: var(--salt-actionable-accented-background);\n --toggleButton-background-hover: var(--salt-actionable-accented-background-hover);\n --toggleButton-background-active: var(--salt-actionable-accented-background);\n --toggleButton-background-selected: var(--salt-actionable-accented-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-accented-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-accented-borderColor);\n --toggleButton-borderColor-active: var(--salt-actionable-accented-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-accented-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-accented-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-accented-bold-background-hover);\n}\n\n.saltToggleButton-positive.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-positive-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-positive-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-positive-foreground);\n --toggleButton-text-color-selected: var(--salt-actionable-positive-foreground-selected);\n --toggleButton-background: var(--salt-actionable-positive-background);\n --toggleButton-background-hover: var(--salt-actionable-positive-background-hover);\n --toggleButton-background-active: var(--salt-actionable-positive-background);\n --toggleButton-background-selected: var(--salt-actionable-positive-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-positive-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-positive-borderColor);\n --toggleButton-borderColor-active: var(--salt-actionable-positive-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-positive-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-positive-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-positive-bold-background-hover);\n}\n\n.saltToggleButton-negative.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-negative-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-negative-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-negative-foreground);\n --toggleButton-text-color-selected: var(--salt-actionable-negative-foreground-selected);\n --toggleButton-background: var(--salt-actionable-negative-background);\n --toggleButton-background-hover: var(--salt-actionable-negative-background-hover);\n --toggleButton-background-active: var(--salt-actionable-negative-background);\n --toggleButton-background-selected: var(--salt-actionable-negative-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-negative-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-negative-borderColor);\n --toggleButton-borderColor-active: var(--salt-actionable-negative-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-negative-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-negative-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-negative-bold-background-hover);\n}\n\n.saltToggleButton-caution.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-caution-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-caution-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-caution-foreground);\n --toggleButton-text-color-selected: var(--salt-actionable-caution-foreground-selected);\n --toggleButton-background: var(--salt-actionable-caution-background);\n --toggleButton-background-hover: var(--salt-actionable-caution-background-hover);\n --toggleButton-background-active: var(--salt-actionable-caution-background);\n --toggleButton-background-selected: var(--salt-actionable-caution-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-caution-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-caution-borderColor);\n --toggleButton-borderColor-active: var(--salt-actionable-caution-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-caution-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-caution-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-caution-bold-background-hover);\n}\n";
|
|
3
|
+
var css_248z = ".saltToggleButton {\n --toggleButton-borderWidth: var(--salt-size-fixed-100);\n\n align-items: center;\n appearance: none;\n background: var(--toggleButton-background);\n border-color: var(--toggleButton-borderColor, transparent);\n border-style: solid;\n border-width: var(--toggleButton-borderWidth);\n border-radius: var(--salt-palette-corner-weak, 0);\n box-sizing: border-box;\n color: var(--toggleButton-text-color);\n cursor: var(--salt-cursor-hover);\n display: inline-flex;\n gap: var(--salt-spacing-50);\n height: var(--salt-size-base);\n justify-content: center;\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-action-fontWeight);\n font-family: var(--salt-text-action-fontFamily);\n letter-spacing: var(--salt-text-action-letterSpacing);\n text-transform: var(--salt-text-action-textTransform);\n padding: 0 calc(var(--salt-spacing-100) - var(--toggleButton-borderWidth));\n margin: 0;\n min-width: unset;\n position: relative;\n text-align: var(--salt-text-action-textAlign);\n text-decoration: none;\n transition: none;\n width: auto;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.saltToggleButton:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n}\n\n@media (hover: hover) {\n .saltToggleButton:hover {\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n }\n}\n\n.saltToggleButton:active {\n background: var(--toggleButton-background-active);\n color: var(--toggleButton-text-color-active);\n border-color: var(--toggleButton-borderColor-active);\n}\n\n.saltToggleButton[aria-checked=\"true\"],\n.saltToggleButton[aria-pressed=\"true\"] {\n background: var(--toggleButton-background-selected);\n color: var(--toggleButton-text-color-selected);\n cursor: var(--salt-cursor-active);\n border-color: var(--toggleButton-borderColor-selected);\n}\n\n.saltToggleButton[aria-checked=\"true\"]:hover {\n cursor: unset;\n}\n\n.saltToggleButton[aria-pressed=\"true\"]:hover {\n background: var(--toggleButton-background-selectedHover);\n color: var(--toggleButton-text-color-selectedHover);\n border-color: var(--toggleButton-borderColor-selectedHover);\n}\n\n.saltToggleButton[aria-disabled=\"true\"] {\n background: var(--toggleButton-background);\n color: var(--toggleButton-text-color);\n cursor: var(--salt-cursor-disabled);\n border-color: var(--toggleButton-borderColor);\n\n opacity: 0.4;\n}\n\n.saltToggleButton[aria-checked=\"true\"].saltToggleButton[aria-disabled=\"true\"],\n.saltToggleButton[aria-pressed=\"true\"].saltToggleButton[aria-disabled=\"true\"] {\n background: var(--toggleButton-background-selected);\n color: var(--toggleButton-text-color-selected);\n border-color: var(--toggleButton-borderColor-selected);\n}\n\n.saltToggleButton.saltToggleButton-readOnly {\n background: var(--toggleButton-background);\n color: var(--toggleButton-text-color);\n cursor: var(--salt-cursor-disabled);\n border-color: var(--toggleButton-borderColor);\n\n opacity: 0.4;\n}\n\n.saltToggleButton[aria-checked=\"true\"].saltToggleButton-readOnly,\n.saltToggleButton[aria-pressed=\"true\"].saltToggleButton-readOnly {\n background: var(--toggleButton-background-selected);\n color: var(--toggleButton-text-color-selected);\n border-color: var(--toggleButton-borderColor-selected);\n\n opacity: unset;\n}\n\n.saltToggleButton-neutral.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-bold-background-hover);\n}\n\n.saltToggleButton-accented.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-accented-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-accented-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-accented-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-accented-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-accented-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-accented-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-accented-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-accented-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-accented-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-accented-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-accented-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-accented-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-accented-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-accented-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-accented-bold-background-hover);\n}\n\n.saltToggleButton-positive.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-positive-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-positive-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-positive-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-positive-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-positive-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-positive-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-positive-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-positive-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-positive-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-positive-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-positive-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-positive-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-positive-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-positive-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-positive-bold-background-hover);\n}\n\n.saltToggleButton-negative.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-negative-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-negative-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-negative-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-negative-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-negative-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-negative-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-negative-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-negative-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-negative-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-negative-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-negative-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-negative-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-negative-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-negative-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-negative-bold-background-hover);\n}\n\n.saltToggleButton-caution.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-caution-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-caution-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-caution-subtle-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-caution-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-caution-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-caution-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-caution-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-caution-subtle-background-active);\n --toggleButton-background-selected: var(--salt-actionable-caution-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-caution-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-caution-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-caution-subtle-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-caution-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-caution-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-caution-bold-background-hover);\n}\n\n.saltToggleButton-neutral.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-background);\n --toggleButton-background-hover: var(--salt-actionable-background-hover);\n --toggleButton-background-active: var(--salt-actionable-background-active);\n --toggleButton-background-selected: var(--salt-actionable-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-bold-background-hover);\n}\n\n.saltToggleButton-accented.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-accented-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-accented-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-accented-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-accented-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-accented-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-accented-background);\n --toggleButton-background-hover: var(--salt-actionable-accented-background-hover);\n --toggleButton-background-active: var(--salt-actionable-accented-background-active);\n --toggleButton-background-selected: var(--salt-actionable-accented-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-accented-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-accented-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-accented-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-accented-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-accented-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-accented-bold-background-hover);\n}\n\n.saltToggleButton-positive.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-positive-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-positive-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-positive-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-positive-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-positive-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-positive-background);\n --toggleButton-background-hover: var(--salt-actionable-positive-background-hover);\n --toggleButton-background-active: var(--salt-actionable-positive-background-active);\n --toggleButton-background-selected: var(--salt-actionable-positive-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-positive-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-positive-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-positive-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-positive-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-positive-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-positive-bold-background-hover);\n}\n\n.saltToggleButton-negative.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-negative-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-negative-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-negative-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-negative-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-negative-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-negative-background);\n --toggleButton-background-hover: var(--salt-actionable-negative-background-hover);\n --toggleButton-background-active: var(--salt-actionable-negative-background-active);\n --toggleButton-background-selected: var(--salt-actionable-negative-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-negative-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-negative-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-negative-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-negative-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-negative-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-negative-bold-background-hover);\n}\n\n.saltToggleButton-caution.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-caution-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-caution-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-caution-foreground-active);\n --toggleButton-text-color-selected: var(--salt-actionable-caution-foreground-selected);\n --toggleButton-text-color-selectedHover: var(--salt-actionable-caution-bold-foreground-hover);\n --toggleButton-background: var(--salt-actionable-caution-background);\n --toggleButton-background-hover: var(--salt-actionable-caution-background-hover);\n --toggleButton-background-active: var(--salt-actionable-caution-background-active);\n --toggleButton-background-selected: var(--salt-actionable-caution-background-selected);\n --toggleButton-borderColor: var(--salt-actionable-caution-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-caution-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-caution-borderColor-active);\n --toggleButton-borderColor-selected: var(--salt-actionable-caution-borderColor-selected);\n --toggleButton-borderColor-selectedHover: var(--salt-actionable-caution-bold-borderColor-hover);\n --toggleButton-background-selectedHover: var(--salt-actionable-caution-bold-background-hover);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=ToggleButton.css.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".saltTreeNodeTrigger {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--salt-spacing-100);\n width: 100%;\n\n padding-top: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-bottom: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-right: var(--salt-spacing-100);\n /* Keep a fixed spacing-100 outer left padding for all nodes, then add one\n indent step per additional level. Each indent step = (icon column width +\n inter-item gap).\n Level-1 nodes get no extra indent; level-2 gets 1 step, level-3 gets 2, etc.\n */\n --saltTreeNodeTrigger-iconSize: max(var(--salt-size-icon), 12px);\n --saltTreeNodeTrigger-indentStep: calc(var(--saltTreeNodeTrigger-iconSize) + var(--salt-spacing-100));\n --saltTreeNodeTrigger-iconOffsetY: calc((var(--salt-text-lineHeight) - var(--saltTreeNodeTrigger-iconSize)) / 2);\n --saltTreeNodeTrigger-checkboxOffsetY: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2);\n padding-left: calc(var(--salt-spacing-100) + (var(--saltTreeNodeTrigger-indentStep) * (var(--saltTreeNode-level, 1) - 1)));\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n/* Account for selectable and icon token size differences */\n.saltTree-multiselect .saltTreeNodeTrigger {\n --saltTreeNodeTrigger-indentStep: calc(((var(--saltTreeNodeTrigger-iconSize) + var(--salt-size-selectable)) / 2) + var(--salt-spacing-100));\n}\n\n.saltTreeNodeTrigger:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode-selected > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n box-shadow:\n 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected),\n 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);\n position: relative;\n z-index: var(--salt-zIndex-default);\n}\n\n.saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n}\n\n.saltTreeNode-disabled > .saltTreeNodeTrigger,\n.saltTreeNode-disabled:hover > .saltTreeNodeTrigger {\n opacity: 0.4;\n cursor: var(--salt-cursor-disabled);\n\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n.saltTreeNodeTrigger > .saltTreeNode-checkbox {\n margin-top: var(--saltTreeNodeTrigger-checkboxOffsetY);\n margin-bottom: 0;\n}\n\n.saltTreeNodeTrigger > .saltTreeNodeExpansionIcon,\n.saltTreeNodeTrigger > .saltTreeNode-icon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n}\n\n.saltTreeNodeTrigger > .saltIcon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n flex-shrink: 0;\n color: var(--salt-content-primary-foreground);\n}\n";
|
|
3
|
+
var css_248z = ".saltTreeNodeTrigger {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--salt-spacing-100);\n width: 100%;\n\n padding-top: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-bottom: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-right: var(--salt-spacing-100);\n /* Keep a fixed spacing-100 outer left padding for all nodes, then add one\n indent step per additional level. Each indent step = (icon column width +\n inter-item gap).\n Level-1 nodes get no extra indent; level-2 gets 1 step, level-3 gets 2, etc.\n */\n --saltTreeNodeTrigger-iconSize: max(var(--salt-size-icon), 12px);\n --saltTreeNodeTrigger-indentStep: calc(var(--saltTreeNodeTrigger-iconSize) + var(--salt-spacing-100));\n --saltTreeNodeTrigger-iconOffsetY: calc((var(--salt-text-lineHeight) - var(--saltTreeNodeTrigger-iconSize)) / 2);\n --saltTreeNodeTrigger-checkboxOffsetY: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2);\n padding-left: calc(var(--salt-spacing-100) + (var(--saltTreeNodeTrigger-indentStep) * (var(--saltTreeNode-level, 1) - 1)));\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n/* Account for selectable and icon token size differences */\n.saltTree-multiselect .saltTreeNodeTrigger {\n --saltTreeNodeTrigger-indentStep: calc(((var(--saltTreeNodeTrigger-iconSize) + var(--salt-size-selectable)) / 2) + var(--salt-spacing-100));\n}\n\n.saltTreeNodeTrigger:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode-selected > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n box-shadow:\n 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected),\n 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);\n position: relative;\n z-index: var(--salt-zIndex-default);\n}\n\n.saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n}\n\n.saltTreeNode-disabled > .saltTreeNodeTrigger,\n.saltTreeNode-disabled:hover > .saltTreeNodeTrigger {\n opacity: 0.4;\n cursor: var(--salt-cursor-disabled);\n\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n.saltTreeNode-selected.saltTreeNode-disabled > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n}\n\n.saltTreeNodeTrigger > .saltTreeNode-checkbox {\n margin-top: var(--saltTreeNodeTrigger-checkboxOffsetY);\n margin-bottom: 0;\n}\n\n.saltTreeNodeTrigger > .saltTreeNodeExpansionIcon,\n.saltTreeNodeTrigger > .saltTreeNode-icon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n}\n\n.saltTreeNodeTrigger > .saltIcon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n flex-shrink: 0;\n color: var(--salt-content-primary-foreground);\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=TreeNodeTrigger.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeTrigger.js","sources":["../src/tree/TreeNodeTrigger.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type FocusEvent,\n forwardRef,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { CheckboxIcon } from \"../checkbox\";\nimport { makePrefixer, useForkRef } from \"../utils\";\nimport { useTreeContext, useTreeNodeContext } from \"./TreeContext\";\nimport { TreeNodeExpansionIcon } from \"./TreeNodeExpansionIcon\";\nimport treeNodeTriggerCss from \"./TreeNodeTrigger.css\";\n\nexport interface TreeNodeTriggerProps extends ComponentPropsWithoutRef<\"li\"> {}\n\nconst withBaseName = makePrefixer(\"saltTreeNodeTrigger\");\nconst withNodeBaseName = makePrefixer(\"saltTreeNode\");\n\n/**\n * The forwarded ref points to the inner trigger content span (for tooltip positioning),\n * while the <li> handles focus, ARIA, and event handling.\n */\nexport const TreeNodeTrigger = forwardRef<\n HTMLSpanElement,\n TreeNodeTriggerProps\n>(function TreeNodeTrigger(props, ref) {\n const {\n className,\n children,\n style,\n onClick,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tree-node-trigger\",\n css: treeNodeTriggerCss,\n window: targetWindow,\n });\n\n const nodeContext = useTreeNodeContext();\n if (!nodeContext) {\n throw new Error(\"TreeNodeTrigger must be used within a TreeNode\");\n }\n\n const {\n value,\n level,\n hasChildren,\n expanded,\n disabled,\n id,\n nodeRef,\n setNodeRef,\n selected,\n indeterminate,\n nodeChildren,\n } = nodeContext;\n\n const {\n multiselect,\n activeNode,\n setActiveNode,\n select,\n tabbableNodeId,\n registerElement,\n } = useTreeContext();\n\n const triggerContentRef = useForkRef(useRef<HTMLSpanElement>(null), ref);\n const wasMouseDownRef = useRef(false);\n const [focusVisible, setFocusVisible] = useState(false);\n\n const isActive = activeNode === value;\n\n const isTabbable = tabbableNodeId === value;\n\n useEffect(() => {\n if (nodeRef.current) {\n return registerElement(value, nodeRef.current);\n }\n }, [value, registerElement, nodeRef]);\n\n const handleClick = (event: MouseEvent<HTMLLIElement>) => {\n onClick?.(event);\n if (disabled) return;\n const target = event.target as HTMLElement;\n if (target.closest(\".saltTreeNodeExpansionIcon\")) return;\n const nestedTreeItem = target.closest('[role=\"treeitem\"]');\n if (nestedTreeItem && nestedTreeItem !== nodeRef.current) {\n return;\n }\n setActiveNode(value);\n select(event, value);\n };\n\n const handleFocus = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onFocus?.(event);\n if (!wasMouseDownRef.current) {\n setFocusVisible(true);\n }\n wasMouseDownRef.current = false;\n setActiveNode(value);\n };\n\n const handleBlur = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onBlur?.(event);\n setFocusVisible(false);\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLLIElement>) => {\n wasMouseDownRef.current = true;\n onMouseDown?.(event);\n };\n\n return (\n <li\n ref={setNodeRef}\n id={id}\n role=\"treeitem\"\n aria-expanded={hasChildren ? expanded : undefined}\n aria-selected={multiselect ? undefined : selected}\n aria-checked={\n multiselect ? (indeterminate ? \"mixed\" : selected) : undefined\n }\n aria-level={level}\n aria-disabled={disabled || undefined}\n tabIndex={isTabbable ? 0 : -1}\n className={clsx(\n withNodeBaseName(),\n {\n [withNodeBaseName(\"expanded\")]: expanded,\n [withNodeBaseName(\"selected\")]: selected && !multiselect,\n [withNodeBaseName(\"active\")]: isActive,\n [withNodeBaseName(\"disabled\")]: disabled,\n [withNodeBaseName(\"hasChildren\")]: hasChildren,\n [withNodeBaseName(\"focusVisible\")]: focusVisible,\n },\n className,\n )}\n style={\n {\n \"--saltTreeNode-level\": level,\n ...style,\n } as CSSProperties\n }\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseDown={handleMouseDown}\n onKeyDown={onKeyDown}\n {...rest}\n >\n <span ref={triggerContentRef} className={withBaseName()}>\n <TreeNodeExpansionIcon />\n {multiselect && (\n <CheckboxIcon\n checked={selected}\n indeterminate={indeterminate}\n
|
|
1
|
+
{"version":3,"file":"TreeNodeTrigger.js","sources":["../src/tree/TreeNodeTrigger.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type FocusEvent,\n forwardRef,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { CheckboxIcon } from \"../checkbox\";\nimport { makePrefixer, useForkRef } from \"../utils\";\nimport { useTreeContext, useTreeNodeContext } from \"./TreeContext\";\nimport { TreeNodeExpansionIcon } from \"./TreeNodeExpansionIcon\";\nimport treeNodeTriggerCss from \"./TreeNodeTrigger.css\";\n\nexport interface TreeNodeTriggerProps extends ComponentPropsWithoutRef<\"li\"> {}\n\nconst withBaseName = makePrefixer(\"saltTreeNodeTrigger\");\nconst withNodeBaseName = makePrefixer(\"saltTreeNode\");\n\n/**\n * The forwarded ref points to the inner trigger content span (for tooltip positioning),\n * while the <li> handles focus, ARIA, and event handling.\n */\nexport const TreeNodeTrigger = forwardRef<\n HTMLSpanElement,\n TreeNodeTriggerProps\n>(function TreeNodeTrigger(props, ref) {\n const {\n className,\n children,\n style,\n onClick,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tree-node-trigger\",\n css: treeNodeTriggerCss,\n window: targetWindow,\n });\n\n const nodeContext = useTreeNodeContext();\n if (!nodeContext) {\n throw new Error(\"TreeNodeTrigger must be used within a TreeNode\");\n }\n\n const {\n value,\n level,\n hasChildren,\n expanded,\n disabled,\n id,\n nodeRef,\n setNodeRef,\n selected,\n indeterminate,\n nodeChildren,\n } = nodeContext;\n\n const {\n multiselect,\n activeNode,\n setActiveNode,\n select,\n tabbableNodeId,\n registerElement,\n } = useTreeContext();\n\n const triggerContentRef = useForkRef(useRef<HTMLSpanElement>(null), ref);\n const wasMouseDownRef = useRef(false);\n const [focusVisible, setFocusVisible] = useState(false);\n\n const isActive = activeNode === value;\n\n const isTabbable = tabbableNodeId === value;\n\n useEffect(() => {\n if (nodeRef.current) {\n return registerElement(value, nodeRef.current);\n }\n }, [value, registerElement, nodeRef]);\n\n const handleClick = (event: MouseEvent<HTMLLIElement>) => {\n onClick?.(event);\n if (disabled) return;\n const target = event.target as HTMLElement;\n if (target.closest(\".saltTreeNodeExpansionIcon\")) return;\n const nestedTreeItem = target.closest('[role=\"treeitem\"]');\n if (nestedTreeItem && nestedTreeItem !== nodeRef.current) {\n return;\n }\n setActiveNode(value);\n select(event, value);\n };\n\n const handleFocus = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onFocus?.(event);\n if (!wasMouseDownRef.current) {\n setFocusVisible(true);\n }\n wasMouseDownRef.current = false;\n setActiveNode(value);\n };\n\n const handleBlur = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onBlur?.(event);\n setFocusVisible(false);\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLLIElement>) => {\n wasMouseDownRef.current = true;\n onMouseDown?.(event);\n };\n\n return (\n <li\n ref={setNodeRef}\n id={id}\n role=\"treeitem\"\n aria-expanded={hasChildren ? expanded : undefined}\n aria-selected={multiselect ? undefined : selected}\n aria-checked={\n multiselect ? (indeterminate ? \"mixed\" : selected) : undefined\n }\n aria-level={level}\n aria-disabled={disabled || undefined}\n tabIndex={isTabbable ? 0 : -1}\n className={clsx(\n withNodeBaseName(),\n {\n [withNodeBaseName(\"expanded\")]: expanded,\n [withNodeBaseName(\"selected\")]: selected && !multiselect,\n [withNodeBaseName(\"active\")]: isActive,\n [withNodeBaseName(\"disabled\")]: disabled,\n [withNodeBaseName(\"hasChildren\")]: hasChildren,\n [withNodeBaseName(\"focusVisible\")]: focusVisible,\n },\n className,\n )}\n style={\n {\n \"--saltTreeNode-level\": level,\n ...style,\n } as CSSProperties\n }\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseDown={handleMouseDown}\n onKeyDown={onKeyDown}\n {...rest}\n >\n <span ref={triggerContentRef} className={withBaseName()}>\n <TreeNodeExpansionIcon />\n {multiselect && (\n <CheckboxIcon\n checked={selected}\n indeterminate={indeterminate}\n className={withNodeBaseName(\"checkbox\")}\n />\n )}\n {children}\n </span>\n\n {hasChildren && expanded && (\n <ul role=\"group\" className={withNodeBaseName(\"group\")}>\n {nodeChildren}\n </ul>\n )}\n </li>\n );\n});\n"],"names":["makePrefixer","forwardRef","TreeNodeTrigger","useWindow","useComponentCssInjection","treeNodeTriggerCss","useTreeNodeContext","useTreeContext","useForkRef","useRef","useState","useEffect","jsxs","clsx","jsx","TreeNodeExpansionIcon","CheckboxIcon"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var css_248z = "/* Styles applied to Drawer component */\n.saltDrawer {\n background: var(--drawer-background);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 100%;\n overflow: auto;\n /* Legacy padding for unsectioned drawers only. */\n padding: var(--
|
|
1
|
+
var css_248z = "/* Styles applied to Drawer component */\n.saltDrawer {\n --drawer-padding: var(--salt-spacing-300);\n\n background: var(--drawer-background);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 100%;\n overflow: auto;\n /* Legacy padding for unsectioned drawers only. */\n padding: var(--drawer-padding);\n box-shadow: var(--salt-overlayable-shadow-modal);\n z-index: var(--salt-zIndex-drawer);\n position: fixed;\n top: 0;\n box-sizing: border-box;\n}\n\n.saltDrawer.saltDrawer-sectioned {\n --drawer-padding: 0px;\n}\n\n.saltDrawer-resizing {\n user-select: none;\n}\n\n@supports selector(:has(*)) {\n .saltDrawer:has(> .saltDrawerHeader, > .saltDrawerContent, > .saltDrawerFooter),\n .saltDrawer-inner:has(> .saltDrawerHeader, > .saltDrawerContent, > .saltDrawerFooter) {\n --drawer-padding: 0px;\n }\n}\n\n.saltDrawer-resizable {\n --drawer-resizeHandleSize: var(--salt-size-fixed-600);\n --drawer-resizeHandleOutset: var(--salt-spacing-150);\n --drawer-resizeHandleGutter: calc(var(--drawer-resizeHandleSize) + var(--drawer-resizeHandleOutset));\n /* With the gutter, approximates spacing-300 beside the handle */\n --drawer-resizeHandlePadding: var(--salt-spacing-100);\n overflow: visible;\n padding: 0;\n}\n\n/* Styles applied to the scrolling inner element of a resizable drawer */\n.saltDrawer-inner {\n /* min() keeps sectioned drawers at 0, as their sections own the padding */\n --drawer-innerResizeHandlePadding: min(var(--drawer-padding), var(--drawer-resizeHandlePadding));\n\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-height: 0;\n min-width: 0;\n overflow: auto;\n padding: var(--drawer-padding);\n box-sizing: border-box;\n}\n\n/* Reserve the handle's inner hit target */\n.saltDrawer-resizable.saltDrawer-left {\n padding-right: var(--drawer-resizeHandleGutter);\n}\n\n.saltDrawer-resizable.saltDrawer-right {\n padding-left: var(--drawer-resizeHandleGutter);\n}\n\n.saltDrawer-resizable.saltDrawer-top {\n padding-bottom: var(--drawer-resizeHandleGutter);\n}\n\n.saltDrawer-resizable.saltDrawer-bottom {\n padding-top: var(--drawer-resizeHandleGutter);\n}\n\n/* Reduce the padding beside the handle */\n.saltDrawer-resizable.saltDrawer-left > .saltDrawer-inner {\n padding-right: var(--drawer-innerResizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-right > .saltDrawer-inner {\n padding-left: var(--drawer-innerResizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-top > .saltDrawer-inner {\n padding-bottom: var(--drawer-innerResizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-bottom > .saltDrawer-inner {\n padding-top: var(--drawer-innerResizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-left > .saltDrawer-inner > :is(.saltDrawerHeader, .saltDrawerContent, .saltDrawerFooter) {\n padding-right: var(--drawer-resizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-right > .saltDrawer-inner > :is(.saltDrawerHeader, .saltDrawerContent, .saltDrawerFooter) {\n padding-left: var(--drawer-resizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-top > .saltDrawer-inner > :is(.saltDrawerHeader, .saltDrawerContent, .saltDrawerFooter):last-child {\n padding-bottom: var(--drawer-resizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-bottom > .saltDrawer-inner > :is(.saltDrawerHeader, .saltDrawerContent, .saltDrawerFooter):first-child {\n padding-top: var(--drawer-resizeHandlePadding);\n}\n\n/* Keeps the header accent bar level with the header's content */\n.saltDrawer-resizable.saltDrawer-top > .saltDrawer-inner > .saltDrawerHeader-withAccent:last-child::before {\n bottom: var(--drawer-resizeHandlePadding);\n}\n\n.saltDrawer-resizable.saltDrawer-bottom > .saltDrawer-inner > .saltDrawerHeader-withAccent:first-child::before {\n top: var(--drawer-resizeHandlePadding);\n}\n\n/* Keeps the deprecated close button in the corner, clear of the handle */\n.saltDrawer-resizable.saltDrawer-left .saltButton-secondary.saltDrawerCloseButton {\n margin-right: calc(-1 * var(--drawer-innerResizeHandlePadding));\n}\n\n.saltDrawer-resizable.saltDrawer-bottom .saltButton-secondary.saltDrawerCloseButton {\n margin-top: calc(-1 * var(--drawer-innerResizeHandlePadding));\n}\n\n/* Resize limits stay at least --salt-size-base and leave room on screen for the handle's outside target */\n.saltDrawer-resizable {\n --drawer-resizeLimit: calc(100% - var(--drawer-resizeHandleOutset));\n --drawer-minResize: min(max(var(--saltDrawer-minResize, 0px), var(--salt-size-base)), var(--drawer-resizeLimit));\n --drawer-maxResize: min(var(--saltDrawer-maxResize, 100%), var(--drawer-resizeLimit));\n}\n\n.saltDrawer-resizable.saltDrawer-left,\n.saltDrawer-resizable.saltDrawer-right {\n min-width: var(--drawer-minResize);\n max-width: var(--drawer-maxResize);\n}\n\n.saltDrawer-resizable.saltDrawer-top,\n.saltDrawer-resizable.saltDrawer-bottom {\n min-height: var(--drawer-minResize);\n max-height: var(--drawer-maxResize);\n}\n\n/* Styles applied when variant = \"primary\" */\n.saltDrawer-primary {\n --drawer-background: var(--salt-container-primary-background);\n}\n\n/* Styles applied when variant = \"secondary\" */\n.saltDrawer-secondary {\n --drawer-background: var(--salt-container-secondary-background);\n}\n\n/* Styles applied when variant = \"tertiary\" */\n.saltDrawer-tertiary {\n --drawer-background: var(--salt-container-tertiary-background);\n}\n\n/* Styles applied when position = \"top\" */\n.saltDrawer-top {\n left: 0;\n right: 0;\n bottom: auto;\n}\n\n/* Styles applied when position = \"top\" and the component mounts */\n.saltDrawer-top.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-bottom);\n}\n\n/* Styles applied when position = \"top\" and the component unmounts */\n.saltDrawer-top.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-bottom);\n}\n\n/* Styles applied when position = \"right\" */\n.saltDrawer-right {\n left: auto;\n right: 0;\n height: 100%;\n}\n\n/* Styles applied when position = \"right\" and the component mounts */\n.saltDrawer-right.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-right);\n}\n\n/* Styles applied when position = \"right\" and the component unmounts */\n.saltDrawer-right.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-right);\n}\n\n/* Styles applied when position = \"left\" */\n.saltDrawer-left {\n left: 0;\n right: auto;\n height: 100%;\n}\n\n/* Styles applied when position = \"left\" and the component mounts */\n.saltDrawer-left.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-left);\n}\n\n/* Styles applied when position = \"left\" and the component unmounts */\n.saltDrawer-left.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-left);\n}\n\n/* Styles applied when position = \"bottom\" */\n.saltDrawer-bottom {\n left: 0;\n right: 0;\n bottom: 0;\n top: auto;\n}\n\n/* Styles applied when position = \"bottom\" and the component mounts */\n.saltDrawer-bottom.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-top);\n}\n\n/* Styles applied when position = \"bottom\" and the component unmounts */\n.saltDrawer-bottom.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-top);\n}\n";
|
|
2
2
|
|
|
3
3
|
export { css_248z as default };
|
|
4
4
|
//# sourceMappingURL=Drawer.css.js.map
|
package/dist-es/drawer/Drawer.js
CHANGED
|
@@ -14,6 +14,9 @@ import '../viewport/ViewportProvider.js';
|
|
|
14
14
|
import css_248z from './Drawer.css.js';
|
|
15
15
|
import { DrawerContext } from './DrawerContext.js';
|
|
16
16
|
import { hasDrawerSection } from './hasDrawerSection.js';
|
|
17
|
+
import { DrawerResizeGuide } from './internal/DrawerResizeGuide.js';
|
|
18
|
+
import { DrawerResizeHandle } from './internal/DrawerResizeHandle.js';
|
|
19
|
+
import { useDrawerResize } from './internal/useDrawerResize.js';
|
|
17
20
|
|
|
18
21
|
const ConditionalScrimWrapper = ({
|
|
19
22
|
condition,
|
|
@@ -41,8 +44,10 @@ const Drawer = forwardRef(
|
|
|
41
44
|
variant = "primary",
|
|
42
45
|
disableDismiss,
|
|
43
46
|
disableScrim,
|
|
47
|
+
resizable = false,
|
|
44
48
|
initialFocus,
|
|
45
49
|
id,
|
|
50
|
+
style,
|
|
46
51
|
"aria-labelledby": ariaLabelledBy,
|
|
47
52
|
"aria-describedby": ariaDescribedBy,
|
|
48
53
|
...rest
|
|
@@ -63,11 +68,29 @@ const Drawer = forwardRef(
|
|
|
63
68
|
const { Component: FloatingComponent } = useFloatingComponent();
|
|
64
69
|
const { context, floating, elements } = useFloatingUI({
|
|
65
70
|
open: showComponent,
|
|
66
|
-
onOpenChange
|
|
71
|
+
onOpenChange: (newOpen, event) => {
|
|
72
|
+
if (!newOpen && isCancelResizeEvent(event)) return;
|
|
73
|
+
onOpenChange == null ? void 0 : onOpenChange(newOpen);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
const {
|
|
77
|
+
sizeStyle,
|
|
78
|
+
isResizing,
|
|
79
|
+
isHovered,
|
|
80
|
+
isPlacing,
|
|
81
|
+
isCancelResizeEvent,
|
|
82
|
+
separatorProps,
|
|
83
|
+
guideProps
|
|
84
|
+
} = useDrawerResize({
|
|
85
|
+
enabled: resizable,
|
|
86
|
+
position,
|
|
87
|
+
element: elements.floating
|
|
67
88
|
});
|
|
68
89
|
const { getFloatingProps } = useInteractions([
|
|
69
90
|
useClick(context),
|
|
70
|
-
useDismiss(context, {
|
|
91
|
+
useDismiss(context, {
|
|
92
|
+
outsidePress: disableDismiss ? false : () => !isPlacing
|
|
93
|
+
})
|
|
71
94
|
]);
|
|
72
95
|
const handleRef = useForkRef(floating, ref);
|
|
73
96
|
useEffect(() => {
|
|
@@ -84,14 +107,16 @@ const Drawer = forwardRef(
|
|
|
84
107
|
const contextValue = useMemo(
|
|
85
108
|
() => ({
|
|
86
109
|
drawerId,
|
|
110
|
+
position,
|
|
111
|
+
resizable,
|
|
87
112
|
headerId,
|
|
88
113
|
setHeaderId,
|
|
89
114
|
descriptionId,
|
|
90
115
|
setDescriptionId
|
|
91
116
|
}),
|
|
92
|
-
[drawerId, headerId, descriptionId]
|
|
117
|
+
[drawerId, position, resizable, headerId, descriptionId]
|
|
93
118
|
);
|
|
94
|
-
return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(ConditionalScrimWrapper, { condition: showComponent && !disableScrim, children: /* @__PURE__ */
|
|
119
|
+
return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(ConditionalScrimWrapper, { condition: showComponent && !disableScrim, children: /* @__PURE__ */ jsxs(
|
|
95
120
|
FloatingComponent,
|
|
96
121
|
{
|
|
97
122
|
id: drawerId,
|
|
@@ -115,13 +140,36 @@ const Drawer = forwardRef(
|
|
|
115
140
|
[withBaseName("enterAnimation")]: open,
|
|
116
141
|
[withBaseName("exitAnimation")]: !open,
|
|
117
142
|
[withBaseName(variant)]: variant,
|
|
118
|
-
[withBaseName("sectioned")]: sectioned
|
|
143
|
+
[withBaseName("sectioned")]: sectioned,
|
|
144
|
+
[withBaseName("resizable")]: resizable,
|
|
145
|
+
[withBaseName("resizing")]: isResizing
|
|
119
146
|
},
|
|
120
147
|
className
|
|
121
148
|
),
|
|
122
149
|
...getFloatingProps(),
|
|
123
150
|
...rest,
|
|
124
|
-
|
|
151
|
+
style: {
|
|
152
|
+
...style,
|
|
153
|
+
...sizeStyle
|
|
154
|
+
},
|
|
155
|
+
children: [
|
|
156
|
+
resizable ? (
|
|
157
|
+
// Keeps the content's scrollbar clear of the resize handle.
|
|
158
|
+
/* @__PURE__ */ jsx("div", { className: withBaseName("inner"), children })
|
|
159
|
+
) : children,
|
|
160
|
+
resizable && /* @__PURE__ */ jsx(
|
|
161
|
+
DrawerResizeHandle,
|
|
162
|
+
{
|
|
163
|
+
position,
|
|
164
|
+
resizing: isResizing,
|
|
165
|
+
hovered: isHovered,
|
|
166
|
+
"aria-label": "Resize drawer",
|
|
167
|
+
"aria-controls": drawerId,
|
|
168
|
+
...separatorProps
|
|
169
|
+
}
|
|
170
|
+
),
|
|
171
|
+
isPlacing && /* @__PURE__ */ jsx(DrawerResizeGuide, { position, ...guideProps })
|
|
172
|
+
]
|
|
125
173
|
}
|
|
126
174
|
) }) });
|
|
127
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","sources":["../src/drawer/Drawer.tsx"],"sourcesContent":["import {\n type FloatingFocusManager,\n useClick,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type PropsWithChildren,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Scrim } from \"../scrim\";\nimport {\n makePrefixer,\n useFloatingComponent,\n useFloatingUI,\n useForkRef,\n useId,\n} from \"../utils\";\nimport drawerCss from \"./Drawer.css\";\nimport { DrawerContext } from \"./DrawerContext\";\nimport { hasDrawerSection } from \"./hasDrawerSection\";\n\ninterface ConditionalScrimWrapperProps extends PropsWithChildren {\n condition: boolean;\n}\n\nconst ConditionalScrimWrapper = ({\n condition,\n children,\n}: ConditionalScrimWrapperProps) => {\n return condition ? <Scrim fixed> {children} </Scrim> : <>{children} </>;\n};\n\nexport interface DrawerProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Defines the drawer position within the screen. Defaults to `left`.\n */\n position?: \"left\" | \"top\" | \"right\" | \"bottom\";\n /**\n * Display or hide the component.\n */\n open?: boolean;\n /**\n * Callback function triggered when open state changes.\n */\n onOpenChange?: (newOpen: boolean) => void;\n /**\n * Change background color palette\n */\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n /**\n * Prevent the drawer closing on click away\n * */\n disableDismiss?: boolean;\n /**\n * Prevent Scrim from rendering\n * */\n disableScrim?: boolean;\n /**\n * Which element to initially focus. Can be either a number (tabbable index as specified by the order) or a ref.\n * Default value is 0 (first tabbable element).\n * */\n initialFocus?: ComponentPropsWithoutRef<\n typeof FloatingFocusManager\n >[\"initialFocus\"];\n}\n\nconst withBaseName = makePrefixer(\"saltDrawer\");\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>(\n function Drawer(props, ref) {\n const {\n children,\n className,\n position = \"left\",\n open = false,\n onOpenChange,\n variant = \"primary\",\n disableDismiss,\n disableScrim,\n initialFocus,\n id,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-drawer\",\n css: drawerCss,\n window: targetWindow,\n });\n\n const drawerId = useId(id);\n\n const sectioned = hasDrawerSection(children);\n\n const [showComponent, setShowComponent] = useState(false);\n const [headerId, setHeaderId] = useState<string | undefined>(undefined);\n const [descriptionId, setDescriptionId] = useState<string | undefined>(\n undefined,\n );\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const { context, floating, elements } = useFloatingUI({\n open: showComponent,\n onOpenChange,\n });\n\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context, { outsidePress: !disableDismiss }),\n ]);\n\n const handleRef = useForkRef<HTMLDivElement>(floating, ref);\n\n useEffect(() => {\n if (open && !showComponent) {\n setShowComponent(true);\n }\n\n if (!open && showComponent) {\n const animate = setTimeout(() => {\n setShowComponent(false);\n }, 300); // var(--salt-duration-perceptible)\n return () => clearTimeout(animate);\n }\n }, [open, showComponent]);\n\n const contextValue = useMemo(\n () => ({\n drawerId,\n headerId,\n setHeaderId,\n descriptionId,\n setDescriptionId,\n }),\n [drawerId, headerId, descriptionId],\n );\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <ConditionalScrimWrapper condition={showComponent && !disableScrim}>\n <FloatingComponent\n id={drawerId}\n open={showComponent}\n ref={handleRef}\n role={\"dialog\"}\n width={elements.floating?.offsetWidth}\n height={elements.floating?.offsetHeight}\n aria-modal=\"true\"\n aria-labelledby={clsx(ariaLabelledBy, headerId) || undefined}\n aria-describedby={clsx(ariaDescribedBy, descriptionId) || undefined}\n focusManagerProps={{\n context: context,\n initialFocus,\n outsideElementsInert: true,\n }}\n className={clsx(\n withBaseName(),\n withBaseName(position),\n {\n [withBaseName(\"enterAnimation\")]: open,\n [withBaseName(\"exitAnimation\")]: !open,\n [withBaseName(variant)]: variant,\n [withBaseName(\"sectioned\")]: sectioned,\n },\n className,\n )}\n {...getFloatingProps()}\n {...rest}\n >\n {children}\n </FloatingComponent>\n </ConditionalScrimWrapper>\n </DrawerContext.Provider>\n );\n },\n);\n"],"names":["Drawer","drawerCss"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Drawer.js","sources":["../src/drawer/Drawer.tsx"],"sourcesContent":["import {\n type FloatingFocusManager,\n useClick,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type PropsWithChildren,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Scrim } from \"../scrim\";\nimport {\n makePrefixer,\n useFloatingComponent,\n useFloatingUI,\n useForkRef,\n useId,\n} from \"../utils\";\nimport drawerCss from \"./Drawer.css\";\nimport { DrawerContext } from \"./DrawerContext\";\nimport { hasDrawerSection } from \"./hasDrawerSection\";\nimport {\n DrawerResizeGuide,\n DrawerResizeHandle,\n useDrawerResize,\n} from \"./internal\";\n\ninterface ConditionalScrimWrapperProps extends PropsWithChildren {\n condition: boolean;\n}\n\nconst ConditionalScrimWrapper = ({\n condition,\n children,\n}: ConditionalScrimWrapperProps) => {\n return condition ? <Scrim fixed> {children} </Scrim> : <>{children} </>;\n};\n\nexport interface DrawerProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Defines the drawer position within the screen. Defaults to `left`.\n */\n position?: \"left\" | \"top\" | \"right\" | \"bottom\";\n /**\n * Display or hide the component.\n */\n open?: boolean;\n /**\n * Callback function triggered when open state changes.\n */\n onOpenChange?: (newOpen: boolean) => void;\n /**\n * Change background color palette\n */\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n /**\n * Prevent the drawer closing on click away\n * */\n disableDismiss?: boolean;\n /**\n * Prevent Scrim from rendering\n * */\n disableScrim?: boolean;\n /**\n * Allow the user to resize the drawer. Set size limits with the `--saltDrawer-minResize`/`--saltDrawer-maxResize`\n * variables, which apply to the width of `left` and `right` drawers and the height of `top` and `bottom` drawers.\n * The drawer never shrinks below `--salt-size-base`, unless `min-width`/`min-height` is set directly.\n * */\n resizable?: boolean;\n /**\n * Which element to initially focus. Can be either a number (tabbable index as specified by the order) or a ref.\n * Default value is 0 (first tabbable element).\n * */\n initialFocus?: ComponentPropsWithoutRef<\n typeof FloatingFocusManager\n >[\"initialFocus\"];\n}\n\nconst withBaseName = makePrefixer(\"saltDrawer\");\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>(\n function Drawer(props, ref) {\n const {\n children,\n className,\n position = \"left\",\n open = false,\n onOpenChange,\n variant = \"primary\",\n disableDismiss,\n disableScrim,\n resizable = false,\n initialFocus,\n id,\n style,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-drawer\",\n css: drawerCss,\n window: targetWindow,\n });\n\n const drawerId = useId(id);\n\n const sectioned = hasDrawerSection(children);\n\n const [showComponent, setShowComponent] = useState(false);\n const [headerId, setHeaderId] = useState<string | undefined>(undefined);\n const [descriptionId, setDescriptionId] = useState<string | undefined>(\n undefined,\n );\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const { context, floating, elements } = useFloatingUI({\n open: showComponent,\n onOpenChange: (newOpen, event) => {\n if (!newOpen && isCancelResizeEvent(event)) return;\n onOpenChange?.(newOpen);\n },\n });\n\n const {\n sizeStyle,\n isResizing,\n isHovered,\n isPlacing,\n isCancelResizeEvent,\n separatorProps,\n guideProps,\n } = useDrawerResize({\n enabled: resizable,\n position,\n element: elements.floating,\n });\n\n const { getFloatingProps } = useInteractions([\n useClick(context),\n useDismiss(context, {\n outsidePress: disableDismiss ? false : () => !isPlacing,\n }),\n ]);\n\n const handleRef = useForkRef<HTMLDivElement>(floating, ref);\n\n useEffect(() => {\n if (open && !showComponent) {\n setShowComponent(true);\n }\n\n if (!open && showComponent) {\n const animate = setTimeout(() => {\n setShowComponent(false);\n }, 300); // var(--salt-duration-perceptible)\n return () => clearTimeout(animate);\n }\n }, [open, showComponent]);\n\n const contextValue = useMemo(\n () => ({\n drawerId,\n position,\n resizable,\n headerId,\n setHeaderId,\n descriptionId,\n setDescriptionId,\n }),\n [drawerId, position, resizable, headerId, descriptionId],\n );\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <ConditionalScrimWrapper condition={showComponent && !disableScrim}>\n <FloatingComponent\n id={drawerId}\n open={showComponent}\n ref={handleRef}\n role={\"dialog\"}\n width={elements.floating?.offsetWidth}\n height={elements.floating?.offsetHeight}\n aria-modal=\"true\"\n aria-labelledby={clsx(ariaLabelledBy, headerId) || undefined}\n aria-describedby={clsx(ariaDescribedBy, descriptionId) || undefined}\n focusManagerProps={{\n context: context,\n initialFocus,\n outsideElementsInert: true,\n }}\n className={clsx(\n withBaseName(),\n withBaseName(position),\n {\n [withBaseName(\"enterAnimation\")]: open,\n [withBaseName(\"exitAnimation\")]: !open,\n [withBaseName(variant)]: variant,\n [withBaseName(\"sectioned\")]: sectioned,\n [withBaseName(\"resizable\")]: resizable,\n [withBaseName(\"resizing\")]: isResizing,\n },\n className,\n )}\n {...getFloatingProps()}\n {...rest}\n style={{\n ...style,\n ...sizeStyle,\n }}\n >\n {resizable ? (\n // Keeps the content's scrollbar clear of the resize handle.\n <div className={withBaseName(\"inner\")}>{children}</div>\n ) : (\n children\n )}\n {resizable && (\n <DrawerResizeHandle\n position={position}\n resizing={isResizing}\n hovered={isHovered}\n aria-label=\"Resize drawer\"\n aria-controls={drawerId}\n {...separatorProps}\n />\n )}\n {isPlacing && (\n <DrawerResizeGuide position={position} {...guideProps} />\n )}\n </FloatingComponent>\n </ConditionalScrimWrapper>\n </DrawerContext.Provider>\n );\n },\n);\n"],"names":["Drawer","drawerCss"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContext.js","sources":["../src/drawer/DrawerContext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { createContext } from \"../utils\";\n\nexport interface DrawerContextValue {\n drawerId?: string;\n headerId?: string;\n setHeaderId?: (id: string | undefined) => void;\n descriptionId?: string;\n setDescriptionId?: (id: string | undefined) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue>(\n \"DrawerContext\",\n {\n drawerId: undefined,\n headerId: undefined,\n setHeaderId: () => {},\n descriptionId: undefined,\n setDescriptionId: () => {},\n },\n);\n\nexport const useDrawerContext = () => {\n return useContext(DrawerContext);\n};\n"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"DrawerContext.js","sources":["../src/drawer/DrawerContext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { createContext } from \"../utils\";\nimport type { DrawerProps } from \"./Drawer\";\n\nexport interface DrawerContextValue {\n drawerId?: string;\n position?: DrawerProps[\"position\"];\n resizable?: boolean;\n headerId?: string;\n setHeaderId?: (id: string | undefined) => void;\n descriptionId?: string;\n setDescriptionId?: (id: string | undefined) => void;\n}\n\nexport const DrawerContext = createContext<DrawerContextValue>(\n \"DrawerContext\",\n {\n drawerId: undefined,\n position: undefined,\n resizable: false,\n headerId: undefined,\n setHeaderId: () => {},\n descriptionId: undefined,\n setDescriptionId: () => {},\n },\n);\n\nexport const useDrawerContext = () => {\n return useContext(DrawerContext);\n};\n"],"names":[],"mappings":";;;;;;;;;AAcO,MAAM,aAAA,GAAgB,aAAA;AAAA,EAC3B,eAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU,MAAA;AAAA,IACV,QAAA,EAAU,MAAA;AAAA,IACV,SAAA,EAAW,KAAA;AAAA,IACX,QAAA,EAAU,MAAA;AAAA,IACV,aAAa,MAAM;AAAA,IAAC,CAAA;AAAA,IACpB,aAAA,EAAe,MAAA;AAAA,IACf,kBAAkB,MAAM;AAAA,IAAC;AAAA;AAE7B;AAEO,MAAM,mBAAmB,MAAM;AACpC,EAAA,OAAO,WAAW,aAAa,CAAA;AACjC;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var css_248z = ".saltDrawerFooter {\n padding: var(--salt-spacing-300);\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: var(--salt-spacing-100);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n";
|
|
1
|
+
var css_248z = ".saltDrawerFooter {\n padding: var(--salt-spacing-300);\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: var(--salt-spacing-100);\n flex-shrink: 0;\n box-sizing: border-box;\n flex-wrap: wrap;\n}\n";
|
|
2
2
|
|
|
3
3
|
export { css_248z as default };
|
|
4
4
|
//# sourceMappingURL=DrawerFooter.css.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var css_248z = ".saltDrawerHeader {\n padding: var(--salt-spacing-300);\n display: flex;\n gap: var(--salt-spacing-100);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n\n.saltDrawerHeader-header {\n margin: 0;\n}\n\n.saltDrawerHeader-container {\n flex-grow: 1;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-50);\n padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);\n
|
|
1
|
+
var css_248z = ".saltDrawerHeader {\n padding: var(--salt-spacing-300);\n display: flex;\n gap: var(--salt-spacing-100);\n flex-shrink: 0;\n box-sizing: border-box;\n}\n\n.saltDrawerHeader-header {\n margin: 0;\n}\n\n.saltDrawerHeader-container {\n flex-grow: 1;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-50);\n align-items: flex-start;\n min-width: 0;\n word-break: break-word;\n}\n\n/* Centres the title's first line on the actions */\n.saltDrawerHeader-withCenteredTitle .saltDrawerHeader-container {\n padding-top: calc((var(--salt-size-base) - var(--salt-text-h2-lineHeight)) / 2);\n}\n\n.saltDrawerHeader-header > .saltText {\n display: block;\n margin: 0;\n}\n\n.saltDrawerHeader-actionsContainer {\n align-self: flex-start;\n display: flex;\n}\n\n.saltDrawerHeader-withAccent {\n position: relative;\n}\n\n.saltDrawerHeader-withAccent::before {\n content: \"\";\n position: absolute;\n top: var(--salt-spacing-300);\n bottom: var(--salt-spacing-300);\n left: 0;\n width: var(--salt-size-bar);\n background: var(--salt-sentiment-accent-background);\n}\n";
|
|
2
2
|
|
|
3
3
|
export { css_248z as default };
|
|
4
4
|
//# sourceMappingURL=DrawerHeader.css.js.map
|
|
@@ -28,7 +28,7 @@ const DrawerHeader = forwardRef(
|
|
|
28
28
|
actions,
|
|
29
29
|
className,
|
|
30
30
|
description,
|
|
31
|
-
disableAccent,
|
|
31
|
+
disableAccent: disableAccentProp,
|
|
32
32
|
header,
|
|
33
33
|
preheader,
|
|
34
34
|
...rest
|
|
@@ -39,11 +39,13 @@ const DrawerHeader = forwardRef(
|
|
|
39
39
|
css: css_248z,
|
|
40
40
|
window: targetWindow
|
|
41
41
|
});
|
|
42
|
-
const { setHeaderId, setDescriptionId } = useDrawerContext();
|
|
42
|
+
const { position, resizable, setHeaderId, setDescriptionId } = useDrawerContext();
|
|
43
|
+
const disableAccent = disableAccentProp ?? (Boolean(resizable) && position === "right");
|
|
43
44
|
const headingId = useId();
|
|
44
45
|
const descriptionId = useId();
|
|
45
46
|
const hasHeading = Boolean(header || preheader);
|
|
46
47
|
const hasDescription = Boolean(description);
|
|
48
|
+
const centeredTitle = Boolean(actions) && !preheader;
|
|
47
49
|
useIsomorphicLayoutEffect(() => {
|
|
48
50
|
setHeaderId == null ? void 0 : setHeaderId(hasHeading ? headingId : void 0);
|
|
49
51
|
return () => {
|
|
@@ -62,7 +64,8 @@ const DrawerHeader = forwardRef(
|
|
|
62
64
|
className: clsx(
|
|
63
65
|
withBaseName(),
|
|
64
66
|
{
|
|
65
|
-
[withBaseName("withAccent")]: !disableAccent
|
|
67
|
+
[withBaseName("withAccent")]: !disableAccent,
|
|
68
|
+
[withBaseName("withCenteredTitle")]: centeredTitle
|
|
66
69
|
},
|
|
67
70
|
className
|
|
68
71
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerHeader.js","sources":["../src/drawer/DrawerHeader.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { H2, Text } from \"../text\";\nimport { makePrefixer, useId, useIsomorphicLayoutEffect } from \"../utils\";\nimport { useDrawerContext } from \"./DrawerContext\";\nimport drawerHeaderCss from \"./DrawerHeader.css\";\n\nconst withBaseName = makePrefixer(\"saltDrawerHeader\");\n\nexport interface DrawerHeaderProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Hides the accent bar in the Drawer Header. Defaults to `false`.\n */\n disableAccent?: boolean;\n /**\n * Displays the header at the top of the Drawer\n */\n header?: ReactNode;\n /**\n * Displays the preheader just above the header\n **/\n preheader?: ReactNode;\n /**\n * Description text is displayed just below the header\n **/\n description?: ReactNode;\n /**\n * Actions to be displayed in header\n */\n actions?: ReactNode;\n}\n\nexport const DrawerHeader = forwardRef<HTMLDivElement, DrawerHeaderProps>(\n function DrawerHeader(props, ref) {\n const {\n actions,\n className,\n description,\n disableAccent,\n header,\n preheader,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-drawer-header\",\n css: drawerHeaderCss,\n window: targetWindow,\n });\n\n const { setHeaderId, setDescriptionId }
|
|
1
|
+
{"version":3,"file":"DrawerHeader.js","sources":["../src/drawer/DrawerHeader.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { H2, Text } from \"../text\";\nimport { makePrefixer, useId, useIsomorphicLayoutEffect } from \"../utils\";\nimport { useDrawerContext } from \"./DrawerContext\";\nimport drawerHeaderCss from \"./DrawerHeader.css\";\n\nconst withBaseName = makePrefixer(\"saltDrawerHeader\");\n\nexport interface DrawerHeaderProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Hides the accent bar in the Drawer Header. Defaults to `true` when the Drawer is resizable and positioned `right`, otherwise `false`.\n */\n disableAccent?: boolean;\n /**\n * Displays the header at the top of the Drawer\n */\n header?: ReactNode;\n /**\n * Displays the preheader just above the header\n **/\n preheader?: ReactNode;\n /**\n * Description text is displayed just below the header\n **/\n description?: ReactNode;\n /**\n * Actions to be displayed in header\n */\n actions?: ReactNode;\n}\n\nexport const DrawerHeader = forwardRef<HTMLDivElement, DrawerHeaderProps>(\n function DrawerHeader(props, ref) {\n const {\n actions,\n className,\n description,\n disableAccent: disableAccentProp,\n header,\n preheader,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-drawer-header\",\n css: drawerHeaderCss,\n window: targetWindow,\n });\n\n const { position, resizable, setHeaderId, setDescriptionId } =\n useDrawerContext();\n const disableAccent =\n disableAccentProp ?? (Boolean(resizable) && position === \"right\");\n const headingId = useId();\n const descriptionId = useId();\n const hasHeading = Boolean(header || preheader);\n const hasDescription = Boolean(description);\n const centeredTitle = Boolean(actions) && !preheader;\n\n useIsomorphicLayoutEffect(() => {\n setHeaderId?.(hasHeading ? headingId : undefined);\n\n return () => {\n setHeaderId?.(undefined);\n };\n }, [hasHeading, headingId, setHeaderId]);\n\n useIsomorphicLayoutEffect(() => {\n setDescriptionId?.(hasDescription ? descriptionId : undefined);\n\n return () => {\n setDescriptionId?.(undefined);\n };\n }, [hasDescription, descriptionId, setDescriptionId]);\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"withAccent\")]: !disableAccent,\n [withBaseName(\"withCenteredTitle\")]: centeredTitle,\n },\n className,\n )}\n ref={ref}\n {...rest}\n >\n <div className={withBaseName(\"container\")}>\n {hasHeading && (\n <H2 id={headingId} className={withBaseName(\"header\")}>\n {preheader && (\n <Text as=\"span\" color=\"primary\">\n {preheader}\n </Text>\n )}\n {header}\n </H2>\n )}\n {description && (\n <Text\n id={descriptionId}\n color=\"secondary\"\n className={withBaseName(\"description\")}\n >\n {description}\n </Text>\n )}\n </div>\n {actions && (\n <div className={withBaseName(\"actionsContainer\")}>{actions}</div>\n )}\n </div>\n );\n },\n);\n"],"names":["DrawerHeader","drawerHeaderCss"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var css_248z = "/* Styles applied to root element */\n.saltDrawerResizeGuide {\n --drawerResizeGuide-borderColor: var(--salt-content-secondary-foreground);\n --drawerResizeGuide-borderWidth: var(--salt-size-fixed-200);\n\n position: fixed;\n inset: 0;\n z-index: calc(var(--salt-zIndex-drawer) + 1);\n touch-action: none;\n user-select: none;\n}\n\n/* Styles applied to the guide line */\n.saltDrawerResizeGuide::before {\n content: \"\";\n position: absolute;\n box-sizing: border-box;\n pointer-events: none;\n}\n\n/* Styles applied for left and right drawers */\n.saltDrawerResizeGuide-vertical {\n cursor: var(--salt-cursor-drag-ew);\n}\n\n.saltDrawerResizeGuide-vertical::before {\n top: 0;\n bottom: 0;\n left: var(--drawerResizeGuide-offset, 0px);\n width: 0;\n border-left: var(--drawerResizeGuide-borderWidth) var(--salt-borderStyle-dashed) var(--drawerResizeGuide-borderColor);\n transform: translateX(-50%);\n}\n\n/* Styles applied for top and bottom drawers */\n.saltDrawerResizeGuide-horizontal {\n cursor: var(--salt-cursor-drag-ns);\n}\n\n.saltDrawerResizeGuide-horizontal::before {\n left: 0;\n right: 0;\n top: var(--drawerResizeGuide-offset, 0px);\n height: 0;\n border-top: var(--drawerResizeGuide-borderWidth) var(--salt-borderStyle-dashed) var(--drawerResizeGuide-borderColor);\n transform: translateY(-50%);\n}\n";
|
|
2
|
+
|
|
3
|
+
export { css_248z as default };
|
|
4
|
+
//# sourceMappingURL=DrawerResizeGuide.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerResizeGuide.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { FloatingPortal } from '@floating-ui/react';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import { clsx } from 'clsx';
|
|
6
|
+
import { forwardRef } from 'react';
|
|
7
|
+
import { useTheme, SaltProviderNext, SaltProvider } from '../../salt-provider/SaltProvider.js';
|
|
8
|
+
import { makePrefixer } from '../../utils/makePrefixer.js';
|
|
9
|
+
import '../../utils/useFloatingUI/useFloatingUI.js';
|
|
10
|
+
import '../../utils/useId.js';
|
|
11
|
+
import '../../viewport/ViewportProvider.js';
|
|
12
|
+
import css_248z from './DrawerResizeGuide.css.js';
|
|
13
|
+
|
|
14
|
+
const withBaseName = makePrefixer("saltDrawerResizeGuide");
|
|
15
|
+
const DrawerResizeGuide = forwardRef(function DrawerResizeGuide2(props, ref) {
|
|
16
|
+
const { position, className, ...rest } = props;
|
|
17
|
+
const targetWindow = useWindow();
|
|
18
|
+
useComponentCssInjection({
|
|
19
|
+
testId: "salt-drawer-resize-guide",
|
|
20
|
+
css: css_248z,
|
|
21
|
+
window: targetWindow
|
|
22
|
+
});
|
|
23
|
+
const { themeNext } = useTheme();
|
|
24
|
+
const ChosenSaltProvider = themeNext ? SaltProviderNext : SaltProvider;
|
|
25
|
+
const vertical = position === "left" || position === "right";
|
|
26
|
+
return /* @__PURE__ */ jsx(FloatingPortal, { children: /* @__PURE__ */ jsx(ChosenSaltProvider, { applyClassesTo: "scope", children: /* @__PURE__ */ jsx(
|
|
27
|
+
"div",
|
|
28
|
+
{
|
|
29
|
+
ref,
|
|
30
|
+
"aria-hidden": true,
|
|
31
|
+
className: clsx(
|
|
32
|
+
withBaseName(),
|
|
33
|
+
withBaseName(vertical ? "vertical" : "horizontal"),
|
|
34
|
+
className
|
|
35
|
+
),
|
|
36
|
+
...rest
|
|
37
|
+
}
|
|
38
|
+
) }) });
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export { DrawerResizeGuide };
|
|
42
|
+
//# sourceMappingURL=DrawerResizeGuide.js.map
|