@salt-ds/lab 1.0.0-alpha.28 → 1.0.0-alpha.29

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.
Files changed (71) hide show
  1. package/css/salt-lab.css +33 -110
  2. package/dist-cjs/color-chooser/ColorChooser.css.js +1 -1
  3. package/dist-cjs/color-chooser/ColorChooser.js +52 -55
  4. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  5. package/dist-cjs/index.js +4 -8
  6. package/dist-cjs/index.js.map +1 -1
  7. package/dist-cjs/overlay/Overlay.css.js +1 -1
  8. package/dist-cjs/overlay/Overlay.js +89 -60
  9. package/dist-cjs/overlay/Overlay.js.map +1 -1
  10. package/dist-cjs/overlay/OverlayContext.js +43 -0
  11. package/dist-cjs/overlay/OverlayContext.js.map +1 -0
  12. package/dist-cjs/overlay/OverlayPanel.js +64 -0
  13. package/dist-cjs/overlay/OverlayPanel.js.map +1 -0
  14. package/dist-cjs/overlay/OverlayPanelBase.js +65 -0
  15. package/dist-cjs/overlay/OverlayPanelBase.js.map +1 -0
  16. package/dist-cjs/overlay/OverlayTrigger.js +40 -0
  17. package/dist-cjs/overlay/OverlayTrigger.js.map +1 -0
  18. package/dist-es/color-chooser/ColorChooser.css.js +1 -1
  19. package/dist-es/color-chooser/ColorChooser.js +53 -56
  20. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  21. package/dist-es/index.js +2 -4
  22. package/dist-es/index.js.map +1 -1
  23. package/dist-es/overlay/Overlay.css.js +1 -1
  24. package/dist-es/overlay/Overlay.js +91 -62
  25. package/dist-es/overlay/Overlay.js.map +1 -1
  26. package/dist-es/overlay/OverlayContext.js +38 -0
  27. package/dist-es/overlay/OverlayContext.js.map +1 -0
  28. package/dist-es/overlay/OverlayPanel.js +60 -0
  29. package/dist-es/overlay/OverlayPanel.js.map +1 -0
  30. package/dist-es/overlay/OverlayPanelBase.js +57 -0
  31. package/dist-es/overlay/OverlayPanelBase.js.map +1 -0
  32. package/dist-es/overlay/OverlayTrigger.js +36 -0
  33. package/dist-es/overlay/OverlayTrigger.js.map +1 -0
  34. package/dist-types/index.d.ts +0 -1
  35. package/dist-types/overlay/Overlay.d.ts +6 -14
  36. package/dist-types/overlay/OverlayContext.d.ts +26 -0
  37. package/dist-types/overlay/OverlayPanel.d.ts +4 -0
  38. package/dist-types/overlay/OverlayPanelBase.d.ts +2 -0
  39. package/dist-types/overlay/OverlayTrigger.d.ts +5 -0
  40. package/dist-types/overlay/index.d.ts +2 -1
  41. package/package.json +2 -2
  42. package/dist-cjs/file-drop-zone/FileDropZone.css.js +0 -6
  43. package/dist-cjs/file-drop-zone/FileDropZone.css.js.map +0 -1
  44. package/dist-cjs/file-drop-zone/FileDropZone.js +0 -94
  45. package/dist-cjs/file-drop-zone/FileDropZone.js.map +0 -1
  46. package/dist-cjs/file-drop-zone/FileDropZoneIcon.js +0 -25
  47. package/dist-cjs/file-drop-zone/FileDropZoneIcon.js.map +0 -1
  48. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js +0 -52
  49. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +0 -1
  50. package/dist-cjs/file-drop-zone/internal/utils.js +0 -30
  51. package/dist-cjs/file-drop-zone/internal/utils.js.map +0 -1
  52. package/dist-cjs/overlay/useOverlay.js +0 -97
  53. package/dist-cjs/overlay/useOverlay.js.map +0 -1
  54. package/dist-es/file-drop-zone/FileDropZone.css.js +0 -4
  55. package/dist-es/file-drop-zone/FileDropZone.css.js.map +0 -1
  56. package/dist-es/file-drop-zone/FileDropZone.js +0 -90
  57. package/dist-es/file-drop-zone/FileDropZone.js.map +0 -1
  58. package/dist-es/file-drop-zone/FileDropZoneIcon.js +0 -21
  59. package/dist-es/file-drop-zone/FileDropZoneIcon.js.map +0 -1
  60. package/dist-es/file-drop-zone/FileDropZoneTrigger.js +0 -48
  61. package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +0 -1
  62. package/dist-es/file-drop-zone/internal/utils.js +0 -25
  63. package/dist-es/file-drop-zone/internal/utils.js.map +0 -1
  64. package/dist-es/overlay/useOverlay.js +0 -93
  65. package/dist-es/overlay/useOverlay.js.map +0 -1
  66. package/dist-types/file-drop-zone/FileDropZone.d.ts +0 -17
  67. package/dist-types/file-drop-zone/FileDropZoneIcon.d.ts +0 -9
  68. package/dist-types/file-drop-zone/FileDropZoneTrigger.d.ts +0 -22
  69. package/dist-types/file-drop-zone/index.d.ts +0 -3
  70. package/dist-types/file-drop-zone/internal/utils.d.ts +0 -3
  71. package/dist-types/overlay/useOverlay.d.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"Overlay.js","sources":["../src/overlay/Overlay.tsx"],"sourcesContent":["import { Button, makePrefixer, UseFloatingUIProps, useId } from \"@salt-ds/core\";\nimport { CloseIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ComponentProps, ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { Portal } from \"../portal\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport { useWindow as usePortalWindow } from \"../window\";\n\nimport overlayCSS from \"./Overlay.css\";\n\ninterface ADAExceptions {\n showClose?: boolean;\n}\n\nexport interface OverlayProps\n extends ComponentPropsWithoutRef<\"div\">,\n Partial<Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\">> {\n /**\n * object that houses ada related props.\n * adaExceptions.showClose defaults to true. It can be removed at the risk of ADA compliance\n */\n adaExceptions?: ADAExceptions;\n arrowProps?: ComponentProps<\"div\">;\n variant?: \"primary\" | \"secondary\";\n}\n\nconst withBaseName = makePrefixer(\"saltOverlay\");\n\nexport const Overlay = forwardRef<HTMLDivElement, OverlayProps>(\n (\n {\n adaExceptions: { showClose } = {\n showClose: true,\n },\n arrowProps,\n children,\n className,\n open,\n onOpenChange,\n variant = \"primary\",\n ...rest\n },\n ref\n ) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-overlay\",\n css: overlayCSS,\n window: targetWindow,\n });\n\n // Will need to figure out a better way to assign popper id's for the electron windows\n const id = useId();\n const Window = usePortalWindow();\n\n const handleCloseButton = () => {\n onOpenChange?.(false);\n };\n\n if (!open) {\n return null;\n }\n\n return (\n <Portal>\n <Window\n className={clsx(withBaseName(), className, {\n [withBaseName(variant)]: variant === \"secondary\",\n })}\n id={id}\n ref={ref}\n {...rest}\n >\n <div\n className={clsx(withBaseName(\"content\"))}\n data-testid=\"overlay-content\"\n >\n {showClose && (\n <Button\n onClick={handleCloseButton}\n className={withBaseName(\"close\")}\n variant=\"secondary\"\n >\n <CloseIcon\n accessible-text=\"close overlay\"\n className={withBaseName(\"closeIcon\")}\n />\n </Button>\n )}\n {children}\n <div className={withBaseName(\"arrow\")} {...arrowProps} />\n </div>\n </Window>\n </Portal>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","overlayCSS","useId","usePortalWindow","jsx","Portal","clsx","jsxs","Button","CloseIcon"],"mappings":";;;;;;;;;;;;;;;;AA6BA,MAAM,YAAA,GAAeA,kBAAa,aAAa,CAAA,CAAA;AAExC,MAAM,OAAU,GAAAC,gBAAA;AAAA,EACrB,CACE;AAAA,IACE,aAAA,EAAe,EAAE,SAAA,EAAc,GAAA;AAAA,MAC7B,SAAW,EAAA,IAAA;AAAA,KACb;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAU,GAAA,SAAA;AAAA,IACP,GAAA,IAAA;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,cAAA;AAAA,MACR,GAAK,EAAAC,SAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAGD,IAAA,MAAM,KAAKC,UAAM,EAAA,CAAA;AACjB,IAAA,MAAM,SAASC,uBAAgB,EAAA,CAAA;AAE/B,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAe,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACjB,CAAA;AAEA,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAA,uBACGC,cAAA,CAAAC,aAAA,EAAA;AAAA,MACC,QAAC,kBAAAD,cAAA,CAAA,MAAA,EAAA;AAAA,QACC,SAAW,EAAAE,SAAA,CAAK,YAAa,EAAA,EAAG,SAAW,EAAA;AAAA,UACzC,CAAC,YAAA,CAAa,OAAO,CAAA,GAAI,OAAY,KAAA,WAAA;AAAA,SACtC,CAAA;AAAA,QACD,EAAA;AAAA,QACA,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,UACC,SAAW,EAAAD,SAAA,CAAK,YAAa,CAAA,SAAS,CAAC,CAAA;AAAA,UACvC,aAAY,EAAA,iBAAA;AAAA,UAEX,QAAA,EAAA;AAAA,YAAA,SAAA,oBACEF,cAAA,CAAAI,WAAA,EAAA;AAAA,cACC,OAAS,EAAA,iBAAA;AAAA,cACT,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,cAC/B,OAAQ,EAAA,WAAA;AAAA,cAER,QAAC,kBAAAJ,cAAA,CAAAK,eAAA,EAAA;AAAA,gBACC,iBAAgB,EAAA,eAAA;AAAA,gBAChB,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,eACrC,CAAA;AAAA,aACF,CAAA;AAAA,YAED,QAAA;AAAA,4BACAL,cAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,cAAI,GAAG,UAAA;AAAA,aAAY,CAAA;AAAA,WAAA;AAAA,SACzD,CAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"Overlay.js","sources":["../src/overlay/Overlay.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n SyntheticEvent,\n useMemo,\n useRef,\n} from \"react\";\nimport { OverlayContext } from \"./OverlayContext\";\nimport { useControlled, useFloatingUI, useId } from \"@salt-ds/core\";\nimport {\n flip,\n offset,\n shift,\n limitShift,\n arrow,\n useClick,\n useDismiss,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\n\nexport interface OverlayProps extends ComponentPropsWithoutRef<\"div\"> {\n open?: boolean;\n onOpenChange?: (event: SyntheticEvent, newOpen: boolean) => void;\n /*\n * Set the placement of the Overlay component relative to the trigger element. Defaults to `top`.\n */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /*\n * Use in controlled version to close Overlay.\n */\n onClose?: (event: SyntheticEvent) => void;\n}\n\nexport const Overlay = forwardRef<HTMLDivElement, OverlayProps>(\n function Overlay(props, ref) {\n const {\n children,\n open,\n onOpenChange,\n placement: placementProp = \"top\",\n id: idProp,\n onClose,\n ...rest\n } = props;\n\n const id = useId(idProp);\n const arrowRef = useRef<SVGSVGElement | null>(null);\n\n const [openState, setOpenState] = useControlled({\n controlled: open,\n default: false,\n name: \"Overlay\",\n state: \"open\",\n });\n\n const {\n x,\n y,\n strategy,\n context,\n elements,\n floating,\n reference,\n middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n placement,\n } = useFloatingUI({\n open: openState,\n onOpenChange: setOpenState,\n placement: placementProp,\n middleware: [\n offset(11),\n flip(),\n shift({ limiter: limitShift() }),\n arrow({ element: arrowRef }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useRole(context, { role: \"dialog\" }),\n useClick(context),\n useDismiss(context),\n ]);\n\n const floatingStyles = useMemo(() => {\n return {\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.offsetWidth,\n height: elements.floating?.offsetHeight,\n };\n }, [elements.floating, strategy, x, y]);\n\n const setOpen = (event: SyntheticEvent, newOpen: boolean) => {\n setOpenState(newOpen);\n onOpenChange?.(event, newOpen);\n };\n\n const arrowProps = {\n ref: arrowRef,\n context,\n style: {\n position: strategy,\n left: arrowX ?? 0,\n top: arrowY ?? 0,\n },\n };\n\n const handleCloseButton = (event: SyntheticEvent) => {\n setOpen(event, false);\n onClose?.(event);\n };\n\n return (\n <OverlayContext.Provider\n value={{\n id: id ?? \"\",\n openState,\n setOpen,\n floatingStyles,\n placement,\n context,\n arrowProps,\n floating,\n reference,\n handleCloseButton,\n getFloatingProps,\n getReferenceProps,\n }}\n >\n <div ref={ref} {...rest}>\n {children}\n </div>\n </OverlayContext.Provider>\n );\n }\n);\n"],"names":["forwardRef","Overlay","useId","useRef","useControlled","useFloatingUI","offset","flip","shift","limitShift","arrow","useInteractions","useRole","useClick","useDismiss","useMemo","jsx","OverlayContext"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@salt-ds/core');
6
+ var React = require('react');
7
+
8
+ const OverlayContext = core.createContext(
9
+ "OverlayContext",
10
+ {
11
+ id: "",
12
+ openState: false,
13
+ setOpen() {
14
+ return void 0;
15
+ },
16
+ floatingStyles: {
17
+ top: 0,
18
+ left: 0,
19
+ position: ""
20
+ },
21
+ placement: "",
22
+ context: {},
23
+ arrowProps: {},
24
+ handleCloseButton() {
25
+ return void 0;
26
+ },
27
+ reference: {},
28
+ floating: {},
29
+ getFloatingProps() {
30
+ return {};
31
+ },
32
+ getReferenceProps() {
33
+ return {};
34
+ }
35
+ }
36
+ );
37
+ function useOverlayContext() {
38
+ return React.useContext(OverlayContext);
39
+ }
40
+
41
+ exports.OverlayContext = OverlayContext;
42
+ exports.useOverlayContext = useOverlayContext;
43
+ //# sourceMappingURL=OverlayContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayContext.js","sources":["../src/overlay/OverlayContext.ts"],"sourcesContent":["import {\n FloatingArrowProps,\n FloatingContext,\n Placement,\n ReferenceType,\n Strategy,\n} from \"@floating-ui/react\";\nimport { createContext, useFloatingUI } from \"@salt-ds/core\";\nimport { SyntheticEvent, useContext } from \"react\";\n\ntype FloatingReturn = ReturnType<typeof useFloatingUI>;\ntype FloatingStyleProps = {\n top: number;\n left: number;\n position: Strategy;\n width?: number;\n height?: number;\n};\n\nexport interface OverlayContextValue {\n id: string;\n openState: boolean;\n setOpen: (event: SyntheticEvent, newOpen: boolean) => void;\n floatingStyles: FloatingStyleProps;\n placement: Placement;\n arrowProps: FloatingArrowProps;\n context: FloatingContext;\n reference?: (node: ReferenceType | null) => void;\n floating?: (node: HTMLElement | null) => void;\n handleCloseButton: (event: SyntheticEvent) => void;\n getFloatingProps: (\n userProps?: React.HTMLProps<HTMLElement> | undefined\n ) => Record<string, unknown>;\n getReferenceProps: (\n userProps?: React.HTMLProps<Element> | undefined\n ) => Record<string, unknown>;\n}\n\nexport const OverlayContext = createContext<OverlayContextValue>(\n \"OverlayContext\",\n {\n id: \"\",\n openState: false,\n setOpen() {\n return undefined;\n },\n floatingStyles: {\n top: 0,\n left: 0,\n position: \"\" as Strategy,\n },\n placement: \"\" as Placement,\n context: {} as FloatingContext,\n arrowProps: {} as FloatingArrowProps,\n handleCloseButton() {\n return undefined;\n },\n reference: {} as FloatingReturn[\"reference\"],\n floating: {} as FloatingReturn[\"floating\"],\n getFloatingProps() {\n return {} as Record<string, unknown>;\n },\n getReferenceProps() {\n return {} as Record<string, unknown>;\n },\n }\n);\n\nexport function useOverlayContext() {\n return useContext(OverlayContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;AAsCO,MAAM,cAAiB,GAAAA,kBAAA;AAAA,EAC5B,gBAAA;AAAA,EACA;AAAA,IACE,EAAI,EAAA,EAAA;AAAA,IACJ,SAAW,EAAA,KAAA;AAAA,IACX,OAAU,GAAA;AACR,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AAAA,IACA,cAAgB,EAAA;AAAA,MACd,GAAK,EAAA,CAAA;AAAA,MACL,IAAM,EAAA,CAAA;AAAA,MACN,QAAU,EAAA,EAAA;AAAA,KACZ;AAAA,IACA,SAAW,EAAA,EAAA;AAAA,IACX,SAAS,EAAC;AAAA,IACV,YAAY,EAAC;AAAA,IACb,iBAAoB,GAAA;AAClB,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AAAA,IACA,WAAW,EAAC;AAAA,IACZ,UAAU,EAAC;AAAA,IACX,gBAAmB,GAAA;AACjB,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAAA,IACA,iBAAoB,GAAA;AAClB,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAAA,GACF;AACF,EAAA;AAEO,SAAS,iBAAoB,GAAA;AAClC,EAAA,OAAOC,iBAAW,cAAc,CAAA,CAAA;AAClC;;;;;"}
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@salt-ds/core');
8
+ var clsx = require('clsx');
9
+ var OverlayContext = require('./OverlayContext.js');
10
+ var react = require('@floating-ui/react');
11
+ var OverlayPanelBase = require('./OverlayPanelBase.js');
12
+
13
+ const withBaseName = core.makePrefixer("saltOverlayPanel");
14
+ const OverlayPanel = React.forwardRef(
15
+ function OverlayPanel2(props, ref) {
16
+ const { className, ...rest } = props;
17
+ const { Component: FloatingComponent } = core.useFloatingComponent();
18
+ const {
19
+ id,
20
+ openState,
21
+ floatingStyles,
22
+ placement,
23
+ context,
24
+ getFloatingProps,
25
+ floating
26
+ } = OverlayContext.useOverlayContext();
27
+ const handleRef = core.useForkRef(floating, ref);
28
+ const { top, left, width, height, position } = floatingStyles;
29
+ const getOverlayProps = () => {
30
+ return getFloatingProps({
31
+ "data-placement": placement,
32
+ ref: floating,
33
+ id: `${id}-panel`
34
+ });
35
+ };
36
+ if (!openState)
37
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
38
+ return /* @__PURE__ */ jsxRuntime.jsx(react.FloatingOverlay, {
39
+ children: /* @__PURE__ */ jsxRuntime.jsx(FloatingComponent, {
40
+ open: openState,
41
+ className: clsx.clsx(withBaseName(), className),
42
+ "aria-modal": "true",
43
+ "aria-labelledby": `${id}-header`,
44
+ "aria-describedby": `${id}-content`,
45
+ ...getOverlayProps(),
46
+ ref: handleRef,
47
+ width,
48
+ height,
49
+ top,
50
+ left,
51
+ position,
52
+ focusManagerProps: {
53
+ context
54
+ },
55
+ children: /* @__PURE__ */ jsxRuntime.jsx(OverlayPanelBase.OverlayPanelBase, {
56
+ ...rest
57
+ })
58
+ })
59
+ });
60
+ }
61
+ );
62
+
63
+ exports.OverlayPanel = OverlayPanel;
64
+ //# sourceMappingURL=OverlayPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayPanel.js","sources":["../src/overlay/OverlayPanel.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n ForwardedRef,\n forwardRef,\n HTMLProps,\n} from \"react\";\nimport { makePrefixer, useFloatingComponent, useForkRef } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { useOverlayContext } from \"./OverlayContext\";\nimport { FloatingOverlay } from \"@floating-ui/react\";\nimport { OverlayPanelBase } from \"./OverlayPanelBase\";\n\nconst withBaseName = makePrefixer(\"saltOverlayPanel\");\n\nexport interface OverlayPanelProps extends ComponentPropsWithoutRef<\"div\"> {}\n\nexport const OverlayPanel = forwardRef<HTMLDivElement, OverlayPanelProps>(\n function OverlayPanel(props, ref: ForwardedRef<HTMLDivElement>) {\n const { className, ...rest } = props;\n\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const {\n id,\n openState,\n floatingStyles,\n placement,\n context,\n getFloatingProps,\n floating,\n } = useOverlayContext();\n\n const handleRef = useForkRef<HTMLDivElement>(floating, ref);\n\n const { top, left, width, height, position } = floatingStyles;\n\n const getOverlayProps = (): HTMLProps<HTMLDivElement> => {\n return getFloatingProps({\n // @ts-ignore data-placement does not exist\n \"data-placement\": placement,\n ref: floating,\n id: `${id}-panel`,\n });\n };\n\n if (!openState) return <></>;\n\n return (\n <FloatingOverlay>\n <FloatingComponent\n open={openState}\n className={clsx(withBaseName(), className)}\n aria-modal=\"true\"\n aria-labelledby={`${id}-header`}\n aria-describedby={`${id}-content`}\n {...getOverlayProps()}\n ref={handleRef}\n width={width}\n height={height}\n top={top}\n left={left}\n position={position}\n focusManagerProps={{\n context: context,\n }}\n >\n <OverlayPanelBase {...rest} />\n </FloatingComponent>\n </FloatingOverlay>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","OverlayPanel","useFloatingComponent","useOverlayContext","useForkRef","jsx","Fragment","FloatingOverlay","clsx","OverlayPanelBase"],"mappings":";;;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA,CAAA;AAI7C,MAAM,YAAe,GAAAC,gBAAA;AAAA,EAC1B,SAASC,aAAa,CAAA,KAAA,EAAO,GAAmC,EAAA;AAC9D,IAAM,MAAA,EAAE,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAE/B,IAAA,MAAM,EAAE,SAAA,EAAW,iBAAkB,EAAA,GAAIC,yBAAqB,EAAA,CAAA;AAE9D,IAAM,MAAA;AAAA,MACJ,EAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,QAAA;AAAA,QACEC,gCAAkB,EAAA,CAAA;AAEtB,IAAM,MAAA,SAAA,GAAYC,eAA2B,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;AAE1D,IAAA,MAAM,EAAE,GAAK,EAAA,IAAA,EAAM,KAAO,EAAA,MAAA,EAAQ,UAAa,GAAA,cAAA,CAAA;AAE/C,IAAA,MAAM,kBAAkB,MAAiC;AACvD,MAAA,OAAO,gBAAiB,CAAA;AAAA,QAEtB,gBAAkB,EAAA,SAAA;AAAA,QAClB,GAAK,EAAA,QAAA;AAAA,QACL,IAAI,CAAG,EAAA,EAAA,CAAA,MAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAA,IAAI,CAAC,SAAA;AAAW,MAAA,uBAASC,cAAA,CAAAC,mBAAA,EAAA,EAAA,CAAA,CAAA;AAEzB,IAAA,uBACGD,cAAA,CAAAE,qBAAA,EAAA;AAAA,MACC,QAAC,kBAAAF,cAAA,CAAA,iBAAA,EAAA;AAAA,QACC,IAAM,EAAA,SAAA;AAAA,QACN,SAAW,EAAAG,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,YAAW,EAAA,MAAA;AAAA,QACX,mBAAiB,CAAG,EAAA,EAAA,CAAA,OAAA,CAAA;AAAA,QACpB,oBAAkB,CAAG,EAAA,EAAA,CAAA,QAAA,CAAA;AAAA,QACpB,GAAG,eAAgB,EAAA;AAAA,QACpB,GAAK,EAAA,SAAA;AAAA,QACL,KAAA;AAAA,QACA,MAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,iBAAmB,EAAA;AAAA,UACjB,OAAA;AAAA,SACF;AAAA,QAEA,QAAC,kBAAAH,cAAA,CAAAI,iCAAA,EAAA;AAAA,UAAkB,GAAG,IAAA;AAAA,SAAM,CAAA;AAAA,OAC9B,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('@floating-ui/react');
7
+ var Overlay = require('./Overlay.css.js');
8
+ var window = require('@salt-ds/window');
9
+ var styles = require('@salt-ds/styles');
10
+ var core = require('@salt-ds/core');
11
+ var icons = require('@salt-ds/icons');
12
+ var OverlayContext = require('./OverlayContext.js');
13
+ var clsx = require('clsx');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
18
+
19
+ const withBaseName = core.makePrefixer("saltOverlayPanelBase");
20
+ const OverlayPanelBase = (props) => {
21
+ const targetWindow = window.useWindow();
22
+ styles.useComponentCssInjection({
23
+ testId: "salt-overlay",
24
+ css: Overlay,
25
+ window: targetWindow
26
+ });
27
+ const { arrowProps, handleCloseButton } = OverlayContext.useOverlayContext();
28
+ const { children, className, ...rest } = props;
29
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
30
+ children: [
31
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
32
+ className: clsx__default["default"](withBaseName("container"), className),
33
+ ...rest,
34
+ children: [
35
+ /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
36
+ onClick: handleCloseButton,
37
+ variant: "secondary",
38
+ className: withBaseName("closeButton"),
39
+ "aria-label": "Close Overlay",
40
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, {
41
+ "aria-hidden": true
42
+ })
43
+ }),
44
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
45
+ className: withBaseName("content"),
46
+ children
47
+ })
48
+ ]
49
+ }),
50
+ /* @__PURE__ */ jsxRuntime.jsx(react.FloatingArrow, {
51
+ ...arrowProps,
52
+ strokeWidth: 1,
53
+ fill: "var(--overlay-background)",
54
+ stroke: "var(--overlay-borderColor)",
55
+ style: {
56
+ height: "calc(var(--salt-size-adornment) + 6px)",
57
+ width: "calc(var(--salt-size-adornment) + 8px)"
58
+ }
59
+ })
60
+ ]
61
+ });
62
+ };
63
+
64
+ exports.OverlayPanelBase = OverlayPanelBase;
65
+ //# sourceMappingURL=OverlayPanelBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayPanelBase.js","sources":["../src/overlay/OverlayPanelBase.tsx"],"sourcesContent":["import { FloatingArrow } from \"@floating-ui/react\";\n\nimport overlayCss from \"./Overlay.css\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { Button, makePrefixer } from \"@salt-ds/core\";\nimport { CloseIcon } from \"@salt-ds/icons\";\nimport { ComponentPropsWithoutRef } from \"react\";\nimport { useOverlayContext } from \"./OverlayContext\";\nimport clsx from \"clsx\";\n\nconst withBaseName = makePrefixer(\"saltOverlayPanelBase\");\n\n// OverlayPanelBase component needed for CSS style injection\nexport const OverlayPanelBase = (props: ComponentPropsWithoutRef<\"div\">) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-overlay\",\n css: overlayCss,\n window: targetWindow,\n });\n\n const { arrowProps, handleCloseButton } = useOverlayContext();\n const { children, className, ...rest } = props;\n\n return (\n <>\n <div className={clsx(withBaseName(\"container\"), className)} {...rest}>\n <Button\n onClick={handleCloseButton}\n variant=\"secondary\"\n className={withBaseName(\"closeButton\")}\n aria-label=\"Close Overlay\"\n >\n <CloseIcon aria-hidden />\n </Button>\n <div className={withBaseName(\"content\")}>{children}</div>\n </div>\n\n <FloatingArrow\n {...arrowProps}\n strokeWidth={1}\n fill=\"var(--overlay-background)\"\n stroke=\"var(--overlay-borderColor)\"\n style={{\n height: \"calc(var(--salt-size-adornment) + 6px)\", // FIXME: +6px to account for Floating UI's FloatingArrow positioning calculation\n width: \"calc(var(--salt-size-adornment) + 8px)\", // FIXME: +8px to account for Floating UI's FloatingArrow positioning calculation\n }}\n />\n </>\n );\n};\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","overlayCss","useOverlayContext","jsxs","Fragment","clsx","jsx","Button","CloseIcon","FloatingArrow"],"mappings":";;;;;;;;;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAG3C,MAAA,gBAAA,GAAmB,CAAC,KAA2C,KAAA;AAC1E,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,cAAA;AAAA,IACR,GAAK,EAAAC,OAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,UAAA,EAAY,iBAAkB,EAAA,GAAIC,gCAAkB,EAAA,CAAA;AAC5D,EAAA,MAAM,EAAE,QAAA,EAAU,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAEzC,EACE,uBAAAC,eAAA,CAAAC,mBAAA,EAAA;AAAA,IACE,QAAA,EAAA;AAAA,sBAACD,eAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAW,EAAAE,wBAAA,CAAK,YAAa,CAAA,WAAW,GAAG,SAAS,CAAA;AAAA,QAAI,GAAG,IAAA;AAAA,QAC9D,QAAA,EAAA;AAAA,0BAACC,cAAA,CAAAC,WAAA,EAAA;AAAA,YACC,OAAS,EAAA,iBAAA;AAAA,YACT,OAAQ,EAAA,WAAA;AAAA,YACR,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,YACrC,YAAW,EAAA,eAAA;AAAA,YAEX,QAAC,kBAAAD,cAAA,CAAAE,eAAA,EAAA;AAAA,cAAU,aAAW,EAAA,IAAA;AAAA,aAAC,CAAA;AAAA,WACzB,CAAA;AAAA,0BACCF,cAAA,CAAA,KAAA,EAAA;AAAA,YAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,YAAI,QAAA;AAAA,WAAS,CAAA;AAAA,SAAA;AAAA,OACrD,CAAA;AAAA,sBAECA,cAAA,CAAAG,mBAAA,EAAA;AAAA,QACE,GAAG,UAAA;AAAA,QACJ,WAAa,EAAA,CAAA;AAAA,QACb,IAAK,EAAA,2BAAA;AAAA,QACL,MAAO,EAAA,4BAAA;AAAA,QACP,KAAO,EAAA;AAAA,UACL,MAAQ,EAAA,wCAAA;AAAA,UACR,KAAO,EAAA,wCAAA;AAAA,SACT;AAAA,OACF,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@salt-ds/core');
8
+ var OverlayContext = require('./OverlayContext.js');
9
+
10
+ function OverlayTrigger(props) {
11
+ const { children } = props;
12
+ const { setOpen, reference, getReferenceProps, id } = OverlayContext.useOverlayContext();
13
+ const triggerRef = core.useForkRef(
14
+ React.isValidElement(children) ? children.ref : null,
15
+ reference
16
+ );
17
+ if (!children || !React.isValidElement(children)) {
18
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
19
+ children
20
+ });
21
+ }
22
+ const handleClick = (event) => {
23
+ setOpen(event, true);
24
+ };
25
+ const getTriggerProps = () => getReferenceProps({
26
+ ref: reference,
27
+ onClick: handleClick,
28
+ id: `${id}-trigger`,
29
+ "aria-controls": `${id}-panel`
30
+ });
31
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
32
+ children: React.cloneElement(children, {
33
+ ...core.mergeProps(getTriggerProps(), children.props),
34
+ ref: triggerRef
35
+ })
36
+ });
37
+ }
38
+
39
+ exports.OverlayTrigger = OverlayTrigger;
40
+ //# sourceMappingURL=OverlayTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayTrigger.js","sources":["../src/overlay/OverlayTrigger.tsx"],"sourcesContent":["import { cloneElement, isValidElement, ReactNode, MouseEvent } from \"react\";\nimport { mergeProps, useForkRef } from \"@salt-ds/core\";\nimport { useOverlayContext } from \"./OverlayContext\";\n\nexport interface OverlayTriggerProps {\n children?: ReactNode;\n}\n\nexport function OverlayTrigger(props: OverlayTriggerProps) {\n const { children } = props;\n\n const { setOpen, reference, getReferenceProps, id } = useOverlayContext();\n\n const triggerRef = useForkRef(\n // @ts-ignore error TS2339 missing property ref\n isValidElement(children) ? children.ref : null,\n reference\n );\n\n if (!children || !isValidElement(children)) {\n return <>{children}</>;\n }\n const handleClick = (event: MouseEvent) => {\n setOpen(event, true);\n };\n\n const getTriggerProps = () =>\n getReferenceProps({\n ref: reference,\n onClick: handleClick,\n id: `${id}-trigger`,\n \"aria-controls\": `${id}-panel`,\n });\n\n return (\n <>\n {cloneElement(children, {\n ...mergeProps(getTriggerProps(), children.props),\n ref: triggerRef,\n })}\n </>\n );\n}\n"],"names":["useOverlayContext","useForkRef","isValidElement","jsx","Fragment","mergeProps"],"mappings":";;;;;;;;;AAQO,SAAS,eAAe,KAA4B,EAAA;AACzD,EAAM,MAAA,EAAE,UAAa,GAAA,KAAA,CAAA;AAErB,EAAA,MAAM,EAAE,OAAS,EAAA,SAAA,EAAW,iBAAmB,EAAA,EAAA,KAAOA,gCAAkB,EAAA,CAAA;AAExE,EAAA,MAAM,UAAa,GAAAC,eAAA;AAAA,IAEjBC,oBAAe,CAAA,QAAQ,CAAI,GAAA,QAAA,CAAS,GAAM,GAAA,IAAA;AAAA,IAC1C,SAAA;AAAA,GACF,CAAA;AAEA,EAAA,IAAI,CAAC,QAAA,IAAY,CAACA,oBAAA,CAAe,QAAQ,CAAG,EAAA;AAC1C,IAAO,uBAAAC,cAAA,CAAAC,mBAAA,EAAA;AAAA,MAAG,QAAA;AAAA,KAAS,CAAA,CAAA;AAAA,GACrB;AACA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAsB,KAAA;AACzC,IAAA,OAAA,CAAQ,OAAO,IAAI,CAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,MACtB,iBAAkB,CAAA;AAAA,IAChB,GAAK,EAAA,SAAA;AAAA,IACL,OAAS,EAAA,WAAA;AAAA,IACT,IAAI,CAAG,EAAA,EAAA,CAAA,QAAA,CAAA;AAAA,IACP,iBAAiB,CAAG,EAAA,EAAA,CAAA,MAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AAEH,EACE,uBAAAD,cAAA,CAAAC,mBAAA,EAAA;AAAA,IACG,6BAAa,QAAU,EAAA;AAAA,MACtB,GAAGC,eAAA,CAAW,eAAgB,EAAA,EAAG,SAAS,KAAK,CAAA;AAAA,MAC/C,GAAK,EAAA,UAAA;AAAA,KACN,CAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".saltColorChooser-overlayButtonSwatch {\n margin-right: 10px;\n height: calc(2 * var(--salt-size-unit));\n width: calc(2 * var(--salt-size-unit));\n}\n\n.saltColorChooser-overlayButtonSwatchWithBorder {\n border: 0.2px solid var(--salt-editable-borderColor);\n}\n\n.saltColorChooser-overlayButtonSwatchTransparent {\n height: calc(var(--salt-size-container-spacing) - 2px) !important;\n width: calc(var(--salt-size-container-spacing) - 2px) !important;\n border: 1px solid var(--salt-status-negative-foreground);\n /* RGBA using red-700 */\n background: linear-gradient(\n to top left,\n rgba(166, 21, 11, 0) 0%,\n rgba(166, 21, 11, 0) calc(50% - 0.8px),\n rgba(166, 21, 11, 1) 50%,\n rgba(166, 21, 11, 0) calc(50% + 0.8px),\n rgba(166, 21, 11, 0) 100%\n );\n}\n\n.saltColorChooser-overlayButtonText {\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--saltButton-fontFamily, var(--salt-text-fontFamily));\n font-size: var(--salt-text-fontSize);\n letter-spacing: normal;\n}\n\n.saltColorChooser-overlayButton {\n background: transparent;\n text-transform: none;\n justify-content: flex-start;\n}\n\n.saltColorChooser-overlayButtonHiddenLabel {\n width: var(--salt-size-container-spacing);\n display: contents;\n}\n\n.saltColorChooser-overlayButtonClose {\n margin: 5px;\n}\n\n.saltColorChooser-defaultButton {\n float: right;\n background: transparent;\n padding: 6px 2px 6px 2px;\n height: var(--salt-size-stackable);\n}\n\n.saltColorChooser-defaultButton {\n border-bottom: var(--salt-size-border) var(--salt-editable-borderStyle) var(--salt-editable-borderColor);\n}\n\n.saltColorChooser-overlayContent {\n max-width: 100%;\n}\n\n.saltColorChooser-refreshIcon {\n padding-right: 5px;\n}\n";
1
+ var css_248z = ".saltColorChooser-overlayButtonSwatch {\n margin-right: 10px;\n height: calc(2 * var(--salt-size-unit));\n width: calc(2 * var(--salt-size-unit));\n}\n\n.saltColorChooser-overlayButtonSwatchWithBorder {\n border: 0.2px solid var(--salt-editable-borderColor);\n}\n\n.saltColorChooser-overlayButtonSwatchTransparent {\n height: calc(var(--salt-size-container-spacing) - 2px) !important;\n width: calc(var(--salt-size-container-spacing) - 2px) !important;\n border: 1px solid var(--salt-status-negative-foreground);\n /* RGBA using red-700 */\n background: linear-gradient(\n to top left,\n rgba(166, 21, 11, 0) 0%,\n rgba(166, 21, 11, 0) calc(50% - 0.8px),\n rgba(166, 21, 11, 1) 50%,\n rgba(166, 21, 11, 0) calc(50% + 0.8px),\n rgba(166, 21, 11, 0) 100%\n );\n}\n\n.saltColorChooser-overlayButtonText {\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--saltButton-fontFamily, var(--salt-text-fontFamily));\n font-size: var(--salt-text-fontSize);\n letter-spacing: normal;\n}\n\n.saltColorChooser-overlayButton {\n background: transparent;\n text-transform: none;\n justify-content: flex-start;\n}\n\n.saltColorChooser-overlayButtonHiddenLabel {\n width: var(--salt-size-container-spacing);\n display: contents;\n}\n\n.saltColorChooser-defaultButton {\n float: right;\n background: transparent;\n padding: 6px 2px 6px 2px;\n height: var(--salt-size-stackable);\n}\n\n.saltColorChooser-defaultButton {\n border-bottom: var(--salt-size-border) var(--salt-editable-borderStyle) var(--salt-editable-borderColor);\n}\n\n.saltColorChooser-overlayContent {\n max-width: 100%;\n}\n\n.saltColorChooser-refreshIcon {\n padding-right: 5px;\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=ColorChooser.css.js.map
@@ -1,8 +1,9 @@
1
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState } from 'react';
3
3
  import { clsx } from 'clsx';
4
4
  import { Overlay } from '../overlay/Overlay.js';
5
- import { useOverlay } from '../overlay/useOverlay.js';
5
+ import { OverlayTrigger } from '../overlay/OverlayTrigger.js';
6
+ import { OverlayPanel } from '../overlay/OverlayPanel.js';
6
7
  import { makePrefixer, Button } from '@salt-ds/core';
7
8
  import { RefreshIcon } from '@salt-ds/icons';
8
9
  import { isTransparent } from './color-utils.js';
@@ -14,6 +15,7 @@ import { createTabsMapping } from './createTabsMapping.js';
14
15
  import { useWindow } from '@salt-ds/window';
15
16
  import { useComponentCssInjection } from '@salt-ds/styles';
16
17
  import css_248z from './ColorChooser.css.js';
18
+ import { useOverlayContext } from '../overlay/OverlayContext.js';
17
19
 
18
20
  const withBaseName = makePrefixer("saltColorChooser");
19
21
  function getActiveTab(hexValue, tabs, saltColorOverrides) {
@@ -90,72 +92,67 @@ const ColorChooser = ({
90
92
  const onTabClick = (index) => {
91
93
  setActiveTab(index);
92
94
  };
93
- const { getTriggerProps, getOverlayProps } = useOverlay({
95
+ const OverlayContent = () => {
96
+ const { id } = useOverlayContext();
97
+ return /* @__PURE__ */ jsxs("div", {
98
+ id: `${id}-content`,
99
+ className: clsx(withBaseName("overlayContent")),
100
+ "data-testid": "overlay-content",
101
+ children: [
102
+ /* @__PURE__ */ jsxs(Button, {
103
+ "data-testid": "default-button",
104
+ variant: "secondary",
105
+ className: clsx(withBaseName("defaultButton")),
106
+ onClick: onDefaultSelected,
107
+ children: [
108
+ /* @__PURE__ */ jsx(RefreshIcon, {
109
+ className: clsx(withBaseName("refreshIcon"))
110
+ }),
111
+ "Default"
112
+ ]
113
+ }),
114
+ /* @__PURE__ */ jsx(DictTabs, {
115
+ tabs: tabsMapping,
116
+ hexValue: color == null ? void 0 : color.hex,
117
+ onTabClick,
118
+ activeTab
119
+ })
120
+ ]
121
+ });
122
+ };
123
+ return /* @__PURE__ */ jsxs(Overlay, {
94
124
  placement: "bottom",
95
- open,
96
- onOpenChange: handleOpenChange
97
- });
98
- return /* @__PURE__ */ jsxs(Fragment, {
125
+ "data-testid": "color-chooser-overlay",
99
126
  children: [
100
- /* @__PURE__ */ jsxs(Button, {
101
- ...getTriggerProps({
127
+ /* @__PURE__ */ jsx(OverlayTrigger, {
128
+ children: /* @__PURE__ */ jsxs(Button, {
102
129
  className: clsx(withBaseName("overlayButton"), {
103
130
  [withBaseName("overlayButtonHiddenLabel")]: hideLabel
104
131
  }),
105
132
  "data-testid": "color-chooser-overlay-button",
106
133
  disabled: readOnly,
107
- ...buttonProps
108
- }),
109
- children: [
110
- color && /* @__PURE__ */ jsx("div", {
111
- className: clsx(withBaseName("overlayButtonSwatch"), {
112
- [withBaseName("overlayButtonSwatchWithBorder")]: color == null ? void 0 : color.hex.startsWith("#ffffff"),
113
- [withBaseName("overlayButtonSwatchTransparent")]: isTransparent(
114
- color == null ? void 0 : color.hex
115
- )
116
- }),
117
- style: {
118
- backgroundColor: color == null ? void 0 : color.hex
119
- }
120
- }),
121
- !hideLabel && /* @__PURE__ */ jsx("div", {
122
- className: withBaseName("overlayButtonText"),
123
- children: (_c = displayColorName != null ? displayColorName : placeholder) != null ? _c : "No color selected"
124
- })
125
- ]
126
- }),
127
- /* @__PURE__ */ jsx(Overlay, {
128
- ...getOverlayProps({
129
- adaExceptions: {
130
- showClose: false
131
- },
132
- "data-testid": "color-chooser-overlay",
133
- className: clsx(withBaseName("overlayButtonClose"))
134
- }),
135
- children: /* @__PURE__ */ jsxs("div", {
136
- className: clsx(withBaseName("overlayContent")),
137
- "data-testid": "overlay-content",
134
+ ...buttonProps,
138
135
  children: [
139
- /* @__PURE__ */ jsxs(Button, {
140
- "data-testid": "default-button",
141
- variant: "secondary",
142
- className: clsx(withBaseName("defaultButton")),
143
- onClick: onDefaultSelected,
144
- children: [
145
- /* @__PURE__ */ jsx(RefreshIcon, {
146
- className: clsx(withBaseName("refreshIcon"))
147
- }),
148
- "Default"
149
- ]
136
+ color && /* @__PURE__ */ jsx("div", {
137
+ className: clsx(withBaseName("overlayButtonSwatch"), {
138
+ [withBaseName("overlayButtonSwatchWithBorder")]: color == null ? void 0 : color.hex.startsWith("#ffffff"),
139
+ [withBaseName("overlayButtonSwatchTransparent")]: isTransparent(
140
+ color == null ? void 0 : color.hex
141
+ )
142
+ }),
143
+ style: {
144
+ backgroundColor: color == null ? void 0 : color.hex
145
+ }
150
146
  }),
151
- /* @__PURE__ */ jsx(DictTabs, {
152
- tabs: tabsMapping,
153
- hexValue: color == null ? void 0 : color.hex,
154
- onTabClick,
155
- activeTab
147
+ !hideLabel && /* @__PURE__ */ jsx("div", {
148
+ className: withBaseName("overlayButtonText"),
149
+ children: (_c = displayColorName != null ? displayColorName : placeholder) != null ? _c : "No color selected"
156
150
  })
157
151
  ]
158
152
  })
153
+ }),
154
+ /* @__PURE__ */ jsx(OverlayPanel, {
155
+ children: /* @__PURE__ */ jsx(OverlayContent, {})
159
156
  })
160
157
  ]
161
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ColorChooser.js","sources":["../src/color-chooser/ColorChooser.tsx"],"sourcesContent":["import { ChangeEvent, useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { Overlay, useOverlay } from \"../overlay\";\nimport { Button, ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport { RefreshIcon } from \"@salt-ds/icons\";\nimport { Color } from \"./Color\";\nimport { isTransparent } from \"./color-utils\";\n\nimport {\n convertColorMapValueToHex,\n getColorNameByHexValue,\n getHexValue,\n hexValueWithoutAlpha,\n} from \"./ColorHelpers\";\nimport { saltColorMap } from \"./colorMap\";\nimport { ColorChooserTabs, DictTabs } from \"./DictTabs\";\nimport { getColorPalettes } from \"./GetColorPalettes\";\nimport { createTabsMapping } from \"./createTabsMapping\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport colorChooserCss from \"./ColorChooser.css\";\n\nconst withBaseName = makePrefixer(\"saltColorChooser\");\n\nfunction getActiveTab(\n hexValue: string | undefined,\n tabs: ColorChooserTabs,\n saltColorOverrides: Record<string, string> | undefined\n): number {\n if (tabs.Swatches && tabs[\"Color Picker\"]) {\n const hexNoAlpha: string | undefined = hexValueWithoutAlpha(hexValue);\n const colors = saltColorOverrides ?? saltColorMap;\n // if hexNoAlpha is a Salt color or null/undefined then set the active tab as Swatches\n if (\n hexNoAlpha &&\n !Object.keys(colors).find(\n (key: string) =>\n convertColorMapValueToHex(colors[key])?.toLowerCase() ===\n hexNoAlpha?.toLowerCase()\n )\n ) {\n return 1;\n }\n }\n return 0;\n}\n\nexport interface ColorChooserProps {\n color: Color | undefined;\n defaultAlpha?: number;\n disableAlphaChooser?: boolean;\n displayHexOnly?: boolean;\n hideLabel?: boolean;\n onClear: () => void; // called when user clicks \"default\" button\n onSelect: (\n color: Color | undefined,\n finalSelection: boolean,\n event?: ChangeEvent\n ) => void;\n placeholder?: string;\n buttonProps?: Partial<ButtonProps>;\n saltColorOverrides?: Record<string, string>;\n showSwatches?: boolean;\n showColorPicker?: boolean;\n readOnly?: boolean;\n}\n\nexport const ColorChooser = ({\n onClear,\n onSelect,\n color,\n showSwatches = true,\n showColorPicker = true,\n defaultAlpha = 1,\n disableAlphaChooser = false,\n hideLabel = false,\n placeholder,\n buttonProps,\n saltColorOverrides,\n readOnly = false,\n displayHexOnly = false,\n}: ColorChooserProps): JSX.Element => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-color-chooser\",\n css: colorChooserCss,\n window: targetWindow,\n });\n\n const [open, setOpen] = useState(false);\n\n const allColors: string[][] = saltColorOverrides\n ? getColorPalettes(saltColorOverrides)\n : getColorPalettes();\n const displayColorName = displayHexOnly\n ? getHexValue(color?.hex, disableAlphaChooser)\n : getColorNameByHexValue(\n color?.hex,\n disableAlphaChooser,\n saltColorOverrides\n );\n\n const handleOpenChange = (open: boolean) => setOpen(open);\n\n const alphaForTabs = isTransparent(color?.hex)\n ? defaultAlpha\n : color?.rgba?.a ?? defaultAlpha;\n\n const tabsMapping = createTabsMapping({\n swatches: showSwatches,\n colorPicker: showColorPicker,\n disableAlphaChooser,\n allColors,\n color,\n alpha: alphaForTabs,\n handleColorChange: onSelect,\n displayColorName,\n placeholder,\n onDialogClosed: () => {\n setOpen(false);\n },\n });\n\n const [activeTab, setActiveTab] = useState<number>(\n getActiveTab(color?.hex, tabsMapping, saltColorOverrides)\n );\n const onDefaultSelected = (): void => {\n if (activeTab === 0 && showSwatches) {\n onClear();\n handleOpenChange(false);\n } else {\n onClear();\n }\n };\n const onTabClick = (index: number): void => {\n setActiveTab(index);\n };\n\n const { getTriggerProps, getOverlayProps } = useOverlay({\n placement: \"bottom\",\n open,\n onOpenChange: handleOpenChange,\n });\n\n return (\n <>\n <Button\n {...getTriggerProps<typeof Button>({\n className: clsx(withBaseName(\"overlayButton\"), {\n [withBaseName(\"overlayButtonHiddenLabel\")]: hideLabel,\n }),\n // @ts-ignore\n \"data-testid\": \"color-chooser-overlay-button\",\n disabled: readOnly,\n ...buttonProps,\n })}\n >\n {color && (\n <div\n className={clsx(withBaseName(\"overlayButtonSwatch\"), {\n [withBaseName(\"overlayButtonSwatchWithBorder\")]:\n color?.hex.startsWith(\"#ffffff\"),\n [withBaseName(\"overlayButtonSwatchTransparent\")]: isTransparent(\n color?.hex\n ),\n })}\n style={{\n backgroundColor: color?.hex,\n }}\n />\n )}\n {!hideLabel && (\n <div className={withBaseName(\"overlayButtonText\")}>\n {displayColorName ?? placeholder ?? \"No color selected\"}\n </div>\n )}\n </Button>\n <Overlay\n {...getOverlayProps({\n adaExceptions: {\n showClose: false,\n },\n // @ts-ignore\n \"data-testid\": \"color-chooser-overlay\",\n className: clsx(withBaseName(\"overlayButtonClose\")),\n })}\n >\n <div\n className={clsx(withBaseName(\"overlayContent\"))}\n data-testid=\"overlay-content\"\n >\n <Button\n data-testid=\"default-button\"\n variant=\"secondary\"\n className={clsx(withBaseName(\"defaultButton\"))}\n onClick={onDefaultSelected}\n >\n <RefreshIcon className={clsx(withBaseName(\"refreshIcon\"))} />\n Default\n </Button>\n <DictTabs\n tabs={tabsMapping}\n hexValue={color?.hex}\n onTabClick={onTabClick}\n activeTab={activeTab}\n />\n </div>\n </Overlay>\n </>\n );\n};\n"],"names":["colorChooserCss","open"],"mappings":"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"}
1
+ {"version":3,"file":"ColorChooser.js","sources":["../src/color-chooser/ColorChooser.tsx"],"sourcesContent":["import { ChangeEvent, useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport { Overlay, OverlayPanel, OverlayTrigger } from \"../overlay\";\nimport { Button, ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport { RefreshIcon } from \"@salt-ds/icons\";\nimport { Color } from \"./Color\";\nimport { isTransparent } from \"./color-utils\";\n\nimport {\n convertColorMapValueToHex,\n getColorNameByHexValue,\n getHexValue,\n hexValueWithoutAlpha,\n} from \"./ColorHelpers\";\nimport { saltColorMap } from \"./colorMap\";\nimport { ColorChooserTabs, DictTabs } from \"./DictTabs\";\nimport { getColorPalettes } from \"./GetColorPalettes\";\nimport { createTabsMapping } from \"./createTabsMapping\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport colorChooserCss from \"./ColorChooser.css\";\nimport { useOverlayContext } from \"../overlay/OverlayContext\";\n\nconst withBaseName = makePrefixer(\"saltColorChooser\");\n\nfunction getActiveTab(\n hexValue: string | undefined,\n tabs: ColorChooserTabs,\n saltColorOverrides: Record<string, string> | undefined\n): number {\n if (tabs.Swatches && tabs[\"Color Picker\"]) {\n const hexNoAlpha: string | undefined = hexValueWithoutAlpha(hexValue);\n const colors = saltColorOverrides ?? saltColorMap;\n // if hexNoAlpha is a Salt color or null/undefined then set the active tab as Swatches\n if (\n hexNoAlpha &&\n !Object.keys(colors).find(\n (key: string) =>\n convertColorMapValueToHex(colors[key])?.toLowerCase() ===\n hexNoAlpha?.toLowerCase()\n )\n ) {\n return 1;\n }\n }\n return 0;\n}\n\nexport interface ColorChooserProps {\n color: Color | undefined;\n defaultAlpha?: number;\n disableAlphaChooser?: boolean;\n displayHexOnly?: boolean;\n hideLabel?: boolean;\n onClear: () => void; // called when user clicks \"default\" button\n onSelect: (\n color: Color | undefined,\n finalSelection: boolean,\n event?: ChangeEvent\n ) => void;\n placeholder?: string;\n buttonProps?: Partial<ButtonProps>;\n saltColorOverrides?: Record<string, string>;\n showSwatches?: boolean;\n showColorPicker?: boolean;\n readOnly?: boolean;\n}\n\nexport const ColorChooser = ({\n onClear,\n onSelect,\n color,\n showSwatches = true,\n showColorPicker = true,\n defaultAlpha = 1,\n disableAlphaChooser = false,\n hideLabel = false,\n placeholder,\n buttonProps,\n saltColorOverrides,\n readOnly = false,\n displayHexOnly = false,\n}: ColorChooserProps): JSX.Element => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-color-chooser\",\n css: colorChooserCss,\n window: targetWindow,\n });\n\n const [open, setOpen] = useState(false);\n\n const allColors: string[][] = saltColorOverrides\n ? getColorPalettes(saltColorOverrides)\n : getColorPalettes();\n const displayColorName = displayHexOnly\n ? getHexValue(color?.hex, disableAlphaChooser)\n : getColorNameByHexValue(\n color?.hex,\n disableAlphaChooser,\n saltColorOverrides\n );\n\n const handleOpenChange = (open: boolean) => setOpen(open);\n\n const alphaForTabs = isTransparent(color?.hex)\n ? defaultAlpha\n : color?.rgba?.a ?? defaultAlpha;\n\n const tabsMapping = createTabsMapping({\n swatches: showSwatches,\n colorPicker: showColorPicker,\n disableAlphaChooser,\n allColors,\n color,\n alpha: alphaForTabs,\n handleColorChange: onSelect,\n displayColorName,\n placeholder,\n onDialogClosed: () => {\n setOpen(false);\n },\n });\n\n const [activeTab, setActiveTab] = useState<number>(\n getActiveTab(color?.hex, tabsMapping, saltColorOverrides)\n );\n const onDefaultSelected = (): void => {\n if (activeTab === 0 && showSwatches) {\n onClear();\n handleOpenChange(false);\n } else {\n onClear();\n }\n };\n\n const onTabClick = (index: number): void => {\n setActiveTab(index);\n };\n\n const OverlayContent = () => {\n const { id } = useOverlayContext();\n\n return (\n <div\n id={`${id}-content`}\n className={clsx(withBaseName(\"overlayContent\"))}\n data-testid=\"overlay-content\"\n >\n <Button\n data-testid=\"default-button\"\n variant=\"secondary\"\n className={clsx(withBaseName(\"defaultButton\"))}\n onClick={onDefaultSelected}\n >\n <RefreshIcon className={clsx(withBaseName(\"refreshIcon\"))} />\n Default\n </Button>\n <DictTabs\n tabs={tabsMapping}\n hexValue={color?.hex}\n onTabClick={onTabClick}\n activeTab={activeTab}\n />\n </div>\n );\n };\n\n return (\n <Overlay placement=\"bottom\" data-testid=\"color-chooser-overlay\">\n <OverlayTrigger>\n <Button\n className={clsx(withBaseName(\"overlayButton\"), {\n [withBaseName(\"overlayButtonHiddenLabel\")]: hideLabel,\n })}\n // @ts-ignore\n data-testid=\"color-chooser-overlay-button\"\n disabled={readOnly}\n {...buttonProps}\n >\n {color && (\n <div\n className={clsx(withBaseName(\"overlayButtonSwatch\"), {\n [withBaseName(\"overlayButtonSwatchWithBorder\")]:\n color?.hex.startsWith(\"#ffffff\"),\n [withBaseName(\"overlayButtonSwatchTransparent\")]: isTransparent(\n color?.hex\n ),\n })}\n style={{\n backgroundColor: color?.hex,\n }}\n />\n )}\n {!hideLabel && (\n <div className={withBaseName(\"overlayButtonText\")}>\n {displayColorName ?? placeholder ?? \"No color selected\"}\n </div>\n )}\n </Button>\n </OverlayTrigger>\n <OverlayPanel>\n <OverlayContent />\n </OverlayPanel>\n </Overlay>\n );\n};\n"],"names":["colorChooserCss","open"],"mappings":"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"}
package/dist-es/index.js CHANGED
@@ -71,9 +71,6 @@ export { Dropdown } from './dropdown/Dropdown.js';
71
71
  export { useDropdownBase } from './dropdown/useDropdownBase.js';
72
72
  export { DropdownNext } from './dropdown-next/DropdownNext.js';
73
73
  export { EditableLabel } from './editable-label/EditableLabel.js';
74
- export { FileDropZone } from './file-drop-zone/FileDropZone.js';
75
- export { FileDropZoneIcon } from './file-drop-zone/FileDropZoneIcon.js';
76
- export { FileDropZoneTrigger } from './file-drop-zone/FileDropZoneTrigger.js';
77
74
  export { FormFieldLegacy as FormField } from './form-field-legacy/FormFieldLegacy.js';
78
75
  export { FormLabel } from './form-field-legacy/FormLabel.js';
79
76
  export { FormFieldLegacyContext } from './form-field-context-legacy/FormFieldLegacyContext.js';
@@ -102,7 +99,8 @@ export { MetricContent } from './metric/MetricContent.js';
102
99
  export { Option } from './option/Option.js';
103
100
  export { OptionGroup } from './option/OptionGroup.js';
104
101
  export { Overlay } from './overlay/Overlay.js';
105
- export { useOverlay } from './overlay/useOverlay.js';
102
+ export { OverlayTrigger } from './overlay/OverlayTrigger.js';
103
+ export { OverlayPanel } from './overlay/OverlayPanel.js';
106
104
  export { ParentChildItem } from './parent-child-item/ParentChildItem.js';
107
105
  export { ParentChildLayout } from './parent-child-layout/ParentChildLayout.js';
108
106
  export { Portal } from './portal/Portal.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Experimental - Overlay css variable API */\n.saltOverlay {\n --overlay-text-color: var(--salt-content-primary-foreground);\n --overlay-spacing: var(--salt-size-unit);\n --overlay-fontSize: var(--salt-text-fontSize);\n --overlay-background: var(--salt-container-primary-background);\n --overlay-borderColor: var(--salt-container-primary-borderColor);\n /* TODO: z-index audit, provide z index here or rely on popper */\n --overlay-zindex: var(--salt-zIndex-flyover);\n}\n\n.saltOverlay-secondary.saltOverlay {\n --overlay-background: var(--salt-container-secondary-background);\n --overlay-borderColor: var(--salt-container-secondary-borderColor);\n}\n\n.saltOverlay-content {\n display: flex;\n padding: calc(var(--overlay-spacing) * 2);\n font-size: var(--overlay-fontSize);\n\n border: 1px solid var(--overlay-borderColor);\n box-shadow: var(--salt-overlayable-shadow-popout);\n line-height: var(--salt-text-lineHeight);\n background: var(--overlay-background);\n color: var(--overlay-text-color);\n position: relative;\n opacity: 1;\n overflow: visible;\n z-index: var(--overlay-zindex);\n}\n\n.saltOverlay-arrow,\n.saltOverlay-arrow::after {\n border: 8px solid transparent;\n position: absolute;\n}\n\n.saltOverlay-arrow::after {\n content: \"\";\n}\n\n.saltOverlay[data-placement^=\"top\"] .saltOverlay-arrow {\n border-top-color: var(--overlay-borderColor);\n bottom: -17px;\n}\n\n.saltOverlay[data-placement^=\"bottom\"] .saltOverlay-arrow {\n border-bottom-color: var(--overlay-borderColor);\n top: -17px;\n}\n\n.saltOverlay[data-placement^=\"left\"] .saltOverlay-arrow {\n border-left-color: var(--overlay-borderColor);\n right: -17px;\n}\n\n.saltOverlay[data-placement^=\"right\"] .saltOverlay-arrow {\n border-right-color: var(--overlay-borderColor);\n left: -17px;\n}\n\n.saltOverlay[data-placement^=\"top\"] .saltOverlay-arrow::after {\n border-top-color: var(--overlay-background);\n bottom: -7px;\n left: calc(100% - 8px);\n}\n\n.saltOverlay[data-placement^=\"bottom\"] .saltOverlay-arrow::after {\n border-bottom-color: var(--overlay-background);\n top: -7px;\n left: calc(100% - 8px);\n}\n\n.saltOverlay[data-placement^=\"left\"] .saltOverlay-arrow::after {\n border-left-color: var(--overlay-background);\n right: -7px;\n top: calc(100% - 8px);\n}\n\n.saltOverlay[data-placement^=\"right\"] .saltOverlay-arrow::after {\n border-right-color: var(--overlay-background);\n left: -7px;\n top: calc(100% - 8px);\n}\n\n/* Close Button */\n.saltOverlay-close {\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--salt-zIndex-default);\n}\n";
1
+ var css_248z = ".saltOverlayPanel {\n --overlay-borderColor: var(--saltOverlay-borderColor, var(--salt-container-primary-borderColor));\n --overlay-background: var(--saltOverlay-background, var(--salt-container-primary-background));\n}\n\n.saltOverlayPanel {\n font-family: var(--salt-text-fontFamily);\n font-size: var(--saltOverlay-fontSize, var(--salt-text-fontSize));\n font-weight: var(--saltOverlay-fontWeight, var(--salt-text-fontWeight));\n line-height: var(--saltOverlay-lineHeight, var(--salt-text-lineHeight));\n\n border-color: var(--overlay-borderColor);\n border-style: var(--saltOverlay-borderStyle, var(--salt-container-borderStyle));\n border-width: var(--saltOverlay-borderWidth, var(--salt-size-border));\n\n background: var(--overlay-background);\n box-shadow: var(--saltOverlay-boxShadow, var(--salt-overlayable-shadow-popout));\n\n color: var(--saltOverlay-text-color, var(--salt-text-primary-foreground));\n z-index: var(--saltOverlay-zIndex, var(--salt-zIndex-flyover));\n width: max-content;\n}\n\n.saltOverlayPanelBase-container {\n animation: fade-in var(--salt-duration-perceptible) ease-in-out;\n position: relative;\n}\n\n@keyframes fade-in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n.saltOverlayPanelBase-content {\n overflow: auto;\n padding: var(--saltOverlay-content-padding, var(--salt-spacing-100) 0 var(--salt-spacing-100) var(--salt-spacing-100));\n}\n\n.saltButton-secondary.saltOverlayPanelBase-closeButton {\n position: sticky;\n top: 0;\n float: right;\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=Overlay.css.js.map