@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
package/css/salt-lab.css CHANGED
@@ -299,9 +299,6 @@
299
299
  width: var(--salt-size-container-spacing);
300
300
  display: contents;
301
301
  }
302
- .saltColorChooser-overlayButtonClose {
303
- margin: 5px;
304
- }
305
302
  .saltColorChooser-defaultButton {
306
303
  float: right;
307
304
  background: transparent;
@@ -1231,43 +1228,6 @@
1231
1228
  outline: none;
1232
1229
  }
1233
1230
 
1234
- /* src/file-drop-zone/FileDropZone.css */
1235
- .saltFileDropZone {
1236
- color: var(--saltFileDropZone-text-color, var(--salt-text-primary-foreground));
1237
- display: inline-flex;
1238
- background: var(--saltFileDropZone-background, var(--salt-container-primary-background));
1239
- text-align: center;
1240
- align-items: center;
1241
- justify-content: center;
1242
- border: var(--saltFileDropZone-border, var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-container-primary-borderColor));
1243
- flex-direction: column;
1244
- padding: var(--salt-spacing-200);
1245
- gap: var(--salt-spacing-200);
1246
- width: 100%;
1247
- font-size: var(--saltFileDropZone-fontSize, var(--salt-text-fontSize));
1248
- font-family: var(--saltFileDropZone-fontFamily, var(--salt-text-fontFamily));
1249
- line-height: var(--saltFileDropZone-lineHeight, var(--salt-text-lineHeight));
1250
- }
1251
- .saltFileDropZone-active {
1252
- background: var(--salt-target-background-hover);
1253
- border: var(--salt-size-border-strong) var(--salt-target-borderStyle-hover) var(--salt-target-borderColor-hover);
1254
- }
1255
- .saltFileDropZone-error {
1256
- border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-status-error-borderColor);
1257
- }
1258
- .saltFileDropZone-success {
1259
- border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-status-success-borderColor);
1260
- }
1261
- .saltFileDropZone .input-hidden {
1262
- display: none;
1263
- }
1264
- .saltFileDropZone-disabled {
1265
- background: var(--salt-container-primary-background-disabled);
1266
- border: var(--salt-size-border-strong) var(--salt-target-borderStyle) var(--salt-container-primary-borderColor-disabled);
1267
- cursor: var(--salt-target-cursor-disabled);
1268
- color: var(--salt-content-primary-foreground-disabled);
1269
- }
1270
-
1271
1231
  /* src/form-field-legacy/FormActivationIndicator.css */
1272
1232
  .salt-density-touch {
1273
1233
  --formFieldLegacy-activationIndicator-icon-size: 7px;
@@ -2432,81 +2392,44 @@
2432
2392
  }
2433
2393
 
2434
2394
  /* src/overlay/Overlay.css */
2435
- .saltOverlay {
2436
- --overlay-text-color: var(--salt-content-primary-foreground);
2437
- --overlay-spacing: var(--salt-size-unit);
2438
- --overlay-fontSize: var(--salt-text-fontSize);
2439
- --overlay-background: var(--salt-container-primary-background);
2440
- --overlay-borderColor: var(--salt-container-primary-borderColor);
2441
- --overlay-zindex: var(--salt-zIndex-flyover);
2442
- }
2443
- .saltOverlay-secondary.saltOverlay {
2444
- --overlay-background: var(--salt-container-secondary-background);
2445
- --overlay-borderColor: var(--salt-container-secondary-borderColor);
2446
- }
2447
- .saltOverlay-content {
2448
- display: flex;
2449
- padding: calc(var(--overlay-spacing) * 2);
2450
- font-size: var(--overlay-fontSize);
2451
- border: 1px solid var(--overlay-borderColor);
2452
- box-shadow: var(--salt-overlayable-shadow-popout);
2453
- line-height: var(--salt-text-lineHeight);
2454
- background: var(--overlay-background);
2455
- color: var(--overlay-text-color);
2456
- position: relative;
2457
- opacity: 1;
2458
- overflow: visible;
2459
- z-index: var(--overlay-zindex);
2460
- }
2461
- .saltOverlay-arrow,
2462
- .saltOverlay-arrow::after {
2463
- border: 8px solid transparent;
2464
- position: absolute;
2465
- }
2466
- .saltOverlay-arrow::after {
2467
- content: "";
2468
- }
2469
- .saltOverlay[data-placement^=top] .saltOverlay-arrow {
2470
- border-top-color: var(--overlay-borderColor);
2471
- bottom: -17px;
2395
+ .saltOverlayPanel {
2396
+ --overlay-borderColor: var(--saltOverlay-borderColor, var(--salt-container-primary-borderColor));
2397
+ --overlay-background: var(--saltOverlay-background, var(--salt-container-primary-background));
2472
2398
  }
2473
- .saltOverlay[data-placement^=bottom] .saltOverlay-arrow {
2474
- border-bottom-color: var(--overlay-borderColor);
2475
- top: -17px;
2476
- }
2477
- .saltOverlay[data-placement^=left] .saltOverlay-arrow {
2478
- border-left-color: var(--overlay-borderColor);
2479
- right: -17px;
2480
- }
2481
- .saltOverlay[data-placement^=right] .saltOverlay-arrow {
2482
- border-right-color: var(--overlay-borderColor);
2483
- left: -17px;
2484
- }
2485
- .saltOverlay[data-placement^=top] .saltOverlay-arrow::after {
2486
- border-top-color: var(--overlay-background);
2487
- bottom: -7px;
2488
- left: calc(100% - 8px);
2399
+ .saltOverlayPanel {
2400
+ font-family: var(--salt-text-fontFamily);
2401
+ font-size: var(--saltOverlay-fontSize, var(--salt-text-fontSize));
2402
+ font-weight: var(--saltOverlay-fontWeight, var(--salt-text-fontWeight));
2403
+ line-height: var(--saltOverlay-lineHeight, var(--salt-text-lineHeight));
2404
+ border-color: var(--overlay-borderColor);
2405
+ border-style: var(--saltOverlay-borderStyle, var(--salt-container-borderStyle));
2406
+ border-width: var(--saltOverlay-borderWidth, var(--salt-size-border));
2407
+ background: var(--overlay-background);
2408
+ box-shadow: var(--saltOverlay-boxShadow, var(--salt-overlayable-shadow-popout));
2409
+ color: var(--saltOverlay-text-color, var(--salt-text-primary-foreground));
2410
+ z-index: var(--saltOverlay-zIndex, var(--salt-zIndex-flyover));
2411
+ width: max-content;
2489
2412
  }
2490
- .saltOverlay[data-placement^=bottom] .saltOverlay-arrow::after {
2491
- border-bottom-color: var(--overlay-background);
2492
- top: -7px;
2493
- left: calc(100% - 8px);
2413
+ .saltOverlayPanelBase-container {
2414
+ animation: fade-in var(--salt-duration-perceptible) ease-in-out;
2415
+ position: relative;
2494
2416
  }
2495
- .saltOverlay[data-placement^=left] .saltOverlay-arrow::after {
2496
- border-left-color: var(--overlay-background);
2497
- right: -7px;
2498
- top: calc(100% - 8px);
2417
+ @keyframes fade-in {
2418
+ 0% {
2419
+ opacity: 0;
2420
+ }
2421
+ 100% {
2422
+ opacity: 1;
2423
+ }
2499
2424
  }
2500
- .saltOverlay[data-placement^=right] .saltOverlay-arrow::after {
2501
- border-right-color: var(--overlay-background);
2502
- left: -7px;
2503
- top: calc(100% - 8px);
2425
+ .saltOverlayPanelBase-content {
2426
+ overflow: auto;
2427
+ padding: var(--saltOverlay-content-padding, var(--salt-spacing-100) 0 var(--salt-spacing-100) var(--salt-spacing-100));
2504
2428
  }
2505
- .saltOverlay-close {
2506
- position: absolute;
2507
- right: 0;
2429
+ .saltButton-secondary.saltOverlayPanelBase-closeButton {
2430
+ position: sticky;
2508
2431
  top: 0;
2509
- z-index: var(--salt-zIndex-default);
2432
+ float: right;
2510
2433
  }
2511
2434
 
2512
2435
  /* src/parent-child-item/ParentChildItem.css */
@@ -4530,4 +4453,4 @@
4530
4453
  margin: calc(var(--salt-size-unit) / 2) 0;
4531
4454
  }
4532
4455
 
4533
- /* src/1b733dc3-fa31-49b0-a310-7267703d59d9.css */
4456
+ /* src/27e047fc-7972-45b3-8cb5-dc5a2753214f.css */
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- 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";
3
+ 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";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=ColorChooser.css.js.map
@@ -6,7 +6,8 @@ var jsxRuntime = require('react/jsx-runtime');
6
6
  var React = require('react');
7
7
  var clsx = require('clsx');
8
8
  var Overlay = require('../overlay/Overlay.js');
9
- var useOverlay = require('../overlay/useOverlay.js');
9
+ var OverlayTrigger = require('../overlay/OverlayTrigger.js');
10
+ var OverlayPanel = require('../overlay/OverlayPanel.js');
10
11
  var core = require('@salt-ds/core');
11
12
  var icons = require('@salt-ds/icons');
12
13
  var colorUtils = require('./color-utils.js');
@@ -18,6 +19,7 @@ var createTabsMapping = require('./createTabsMapping.js');
18
19
  var window = require('@salt-ds/window');
19
20
  var styles = require('@salt-ds/styles');
20
21
  var ColorChooser$1 = require('./ColorChooser.css.js');
22
+ var OverlayContext = require('../overlay/OverlayContext.js');
21
23
 
22
24
  const withBaseName = core.makePrefixer("saltColorChooser");
23
25
  function getActiveTab(hexValue, tabs, saltColorOverrides) {
@@ -94,72 +96,67 @@ const ColorChooser = ({
94
96
  const onTabClick = (index) => {
95
97
  setActiveTab(index);
96
98
  };
97
- const { getTriggerProps, getOverlayProps } = useOverlay.useOverlay({
99
+ const OverlayContent = () => {
100
+ const { id } = OverlayContext.useOverlayContext();
101
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
102
+ id: `${id}-content`,
103
+ className: clsx.clsx(withBaseName("overlayContent")),
104
+ "data-testid": "overlay-content",
105
+ children: [
106
+ /* @__PURE__ */ jsxRuntime.jsxs(core.Button, {
107
+ "data-testid": "default-button",
108
+ variant: "secondary",
109
+ className: clsx.clsx(withBaseName("defaultButton")),
110
+ onClick: onDefaultSelected,
111
+ children: [
112
+ /* @__PURE__ */ jsxRuntime.jsx(icons.RefreshIcon, {
113
+ className: clsx.clsx(withBaseName("refreshIcon"))
114
+ }),
115
+ "Default"
116
+ ]
117
+ }),
118
+ /* @__PURE__ */ jsxRuntime.jsx(DictTabs.DictTabs, {
119
+ tabs: tabsMapping,
120
+ hexValue: color == null ? void 0 : color.hex,
121
+ onTabClick,
122
+ activeTab
123
+ })
124
+ ]
125
+ });
126
+ };
127
+ return /* @__PURE__ */ jsxRuntime.jsxs(Overlay.Overlay, {
98
128
  placement: "bottom",
99
- open,
100
- onOpenChange: handleOpenChange
101
- });
102
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
129
+ "data-testid": "color-chooser-overlay",
103
130
  children: [
104
- /* @__PURE__ */ jsxRuntime.jsxs(core.Button, {
105
- ...getTriggerProps({
131
+ /* @__PURE__ */ jsxRuntime.jsx(OverlayTrigger.OverlayTrigger, {
132
+ children: /* @__PURE__ */ jsxRuntime.jsxs(core.Button, {
106
133
  className: clsx.clsx(withBaseName("overlayButton"), {
107
134
  [withBaseName("overlayButtonHiddenLabel")]: hideLabel
108
135
  }),
109
136
  "data-testid": "color-chooser-overlay-button",
110
137
  disabled: readOnly,
111
- ...buttonProps
112
- }),
113
- children: [
114
- color && /* @__PURE__ */ jsxRuntime.jsx("div", {
115
- className: clsx.clsx(withBaseName("overlayButtonSwatch"), {
116
- [withBaseName("overlayButtonSwatchWithBorder")]: color == null ? void 0 : color.hex.startsWith("#ffffff"),
117
- [withBaseName("overlayButtonSwatchTransparent")]: colorUtils.isTransparent(
118
- color == null ? void 0 : color.hex
119
- )
120
- }),
121
- style: {
122
- backgroundColor: color == null ? void 0 : color.hex
123
- }
124
- }),
125
- !hideLabel && /* @__PURE__ */ jsxRuntime.jsx("div", {
126
- className: withBaseName("overlayButtonText"),
127
- children: (_c = displayColorName != null ? displayColorName : placeholder) != null ? _c : "No color selected"
128
- })
129
- ]
130
- }),
131
- /* @__PURE__ */ jsxRuntime.jsx(Overlay.Overlay, {
132
- ...getOverlayProps({
133
- adaExceptions: {
134
- showClose: false
135
- },
136
- "data-testid": "color-chooser-overlay",
137
- className: clsx.clsx(withBaseName("overlayButtonClose"))
138
- }),
139
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
140
- className: clsx.clsx(withBaseName("overlayContent")),
141
- "data-testid": "overlay-content",
138
+ ...buttonProps,
142
139
  children: [
143
- /* @__PURE__ */ jsxRuntime.jsxs(core.Button, {
144
- "data-testid": "default-button",
145
- variant: "secondary",
146
- className: clsx.clsx(withBaseName("defaultButton")),
147
- onClick: onDefaultSelected,
148
- children: [
149
- /* @__PURE__ */ jsxRuntime.jsx(icons.RefreshIcon, {
150
- className: clsx.clsx(withBaseName("refreshIcon"))
151
- }),
152
- "Default"
153
- ]
140
+ color && /* @__PURE__ */ jsxRuntime.jsx("div", {
141
+ className: clsx.clsx(withBaseName("overlayButtonSwatch"), {
142
+ [withBaseName("overlayButtonSwatchWithBorder")]: color == null ? void 0 : color.hex.startsWith("#ffffff"),
143
+ [withBaseName("overlayButtonSwatchTransparent")]: colorUtils.isTransparent(
144
+ color == null ? void 0 : color.hex
145
+ )
146
+ }),
147
+ style: {
148
+ backgroundColor: color == null ? void 0 : color.hex
149
+ }
154
150
  }),
155
- /* @__PURE__ */ jsxRuntime.jsx(DictTabs.DictTabs, {
156
- tabs: tabsMapping,
157
- hexValue: color == null ? void 0 : color.hex,
158
- onTabClick,
159
- activeTab
151
+ !hideLabel && /* @__PURE__ */ jsxRuntime.jsx("div", {
152
+ className: withBaseName("overlayButtonText"),
153
+ children: (_c = displayColorName != null ? displayColorName : placeholder) != null ? _c : "No color selected"
160
154
  })
161
155
  ]
162
156
  })
157
+ }),
158
+ /* @__PURE__ */ jsxRuntime.jsx(OverlayPanel.OverlayPanel, {
159
+ children: /* @__PURE__ */ jsxRuntime.jsx(OverlayContent, {})
163
160
  })
164
161
  ]
165
162
  });
@@ -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":["makePrefixer","hexValueWithoutAlpha","saltColorMap","convertColorMapValueToHex","useWindow","useComponentCssInjection","colorChooserCss","useState","getColorPalettes","getHexValue","getColorNameByHexValue","open","isTransparent","createTabsMapping","useOverlay","jsxs","Fragment","Button","clsx","jsx","Overlay","RefreshIcon","DictTabs"],"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":["makePrefixer","hexValueWithoutAlpha","saltColorMap","convertColorMapValueToHex","useWindow","useComponentCssInjection","colorChooserCss","useState","getColorPalettes","getHexValue","getColorNameByHexValue","open","isTransparent","createTabsMapping","useOverlayContext","jsxs","clsx","Button","jsx","RefreshIcon","DictTabs","Overlay","OverlayTrigger","OverlayPanel"],"mappings":"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"}
package/dist-cjs/index.js CHANGED
@@ -75,9 +75,6 @@ var Dropdown = require('./dropdown/Dropdown.js');
75
75
  var useDropdownBase = require('./dropdown/useDropdownBase.js');
76
76
  var DropdownNext = require('./dropdown-next/DropdownNext.js');
77
77
  var EditableLabel = require('./editable-label/EditableLabel.js');
78
- var FileDropZone = require('./file-drop-zone/FileDropZone.js');
79
- var FileDropZoneIcon = require('./file-drop-zone/FileDropZoneIcon.js');
80
- var FileDropZoneTrigger = require('./file-drop-zone/FileDropZoneTrigger.js');
81
78
  var FormFieldLegacy = require('./form-field-legacy/FormFieldLegacy.js');
82
79
  var FormLabel = require('./form-field-legacy/FormLabel.js');
83
80
  var FormFieldLegacyContext = require('./form-field-context-legacy/FormFieldLegacyContext.js');
@@ -106,7 +103,8 @@ var MetricContent = require('./metric/MetricContent.js');
106
103
  var Option = require('./option/Option.js');
107
104
  var OptionGroup = require('./option/OptionGroup.js');
108
105
  var Overlay = require('./overlay/Overlay.js');
109
- var useOverlay = require('./overlay/useOverlay.js');
106
+ var OverlayTrigger = require('./overlay/OverlayTrigger.js');
107
+ var OverlayPanel = require('./overlay/OverlayPanel.js');
110
108
  var ParentChildItem = require('./parent-child-item/ParentChildItem.js');
111
109
  var ParentChildLayout = require('./parent-child-layout/ParentChildLayout.js');
112
110
  var Portal = require('./portal/Portal.js');
@@ -233,9 +231,6 @@ exports.Dropdown = Dropdown.Dropdown;
233
231
  exports.useDropdownBase = useDropdownBase.useDropdownBase;
234
232
  exports.DropdownNext = DropdownNext.DropdownNext;
235
233
  exports.EditableLabel = EditableLabel.EditableLabel;
236
- exports.FileDropZone = FileDropZone.FileDropZone;
237
- exports.FileDropZoneIcon = FileDropZoneIcon.FileDropZoneIcon;
238
- exports.FileDropZoneTrigger = FileDropZoneTrigger.FileDropZoneTrigger;
239
234
  exports.FormField = FormFieldLegacy.FormFieldLegacy;
240
235
  exports.FormLabel = FormLabel.FormLabel;
241
236
  exports.FormFieldLegacyContext = FormFieldLegacyContext.FormFieldLegacyContext;
@@ -266,7 +261,8 @@ exports.MetricContent = MetricContent.MetricContent;
266
261
  exports.Option = Option.Option;
267
262
  exports.OptionGroup = OptionGroup.OptionGroup;
268
263
  exports.Overlay = Overlay.Overlay;
269
- exports.useOverlay = useOverlay.useOverlay;
264
+ exports.OverlayTrigger = OverlayTrigger.OverlayTrigger;
265
+ exports.OverlayPanel = OverlayPanel.OverlayPanel;
270
266
  exports.ParentChildItem = ParentChildItem.ParentChildItem;
271
267
  exports.ParentChildLayout = ParentChildLayout.ParentChildLayout;
272
268
  exports.Portal = Portal.Portal;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- 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";
3
+ 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";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Overlay.css.js.map
@@ -3,73 +3,102 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var core = require('@salt-ds/core');
7
- var icons = require('@salt-ds/icons');
8
- var clsx = require('clsx');
9
6
  var React = require('react');
10
- var Portal = require('../portal/Portal.js');
11
- var styles = require('@salt-ds/styles');
12
- var window = require('@salt-ds/window');
13
- var WindowContext = require('../window/WindowContext.js');
14
- require('../window/ElectronWindow.js');
15
- var Overlay$1 = require('./Overlay.css.js');
7
+ var OverlayContext = require('./OverlayContext.js');
8
+ var core = require('@salt-ds/core');
9
+ var react = require('@floating-ui/react');
16
10
 
17
- const withBaseName = core.makePrefixer("saltOverlay");
18
11
  const Overlay = React.forwardRef(
19
- ({
20
- adaExceptions: { showClose } = {
21
- showClose: true
22
- },
23
- arrowProps,
24
- children,
25
- className,
26
- open,
27
- onOpenChange,
28
- variant = "primary",
29
- ...rest
30
- }, ref) => {
31
- const targetWindow = window.useWindow();
32
- styles.useComponentCssInjection({
33
- testId: "salt-overlay",
34
- css: Overlay$1,
35
- window: targetWindow
12
+ function Overlay2(props, ref) {
13
+ const {
14
+ children,
15
+ open,
16
+ onOpenChange,
17
+ placement: placementProp = "top",
18
+ id: idProp,
19
+ onClose,
20
+ ...rest
21
+ } = props;
22
+ const id = core.useId(idProp);
23
+ const arrowRef = React.useRef(null);
24
+ const [openState, setOpenState] = core.useControlled({
25
+ controlled: open,
26
+ default: false,
27
+ name: "Overlay",
28
+ state: "open"
29
+ });
30
+ const {
31
+ x,
32
+ y,
33
+ strategy,
34
+ context,
35
+ elements,
36
+ floating,
37
+ reference,
38
+ middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },
39
+ placement
40
+ } = core.useFloatingUI({
41
+ open: openState,
42
+ onOpenChange: setOpenState,
43
+ placement: placementProp,
44
+ middleware: [
45
+ react.offset(11),
46
+ react.flip(),
47
+ react.shift({ limiter: react.limitShift() }),
48
+ react.arrow({ element: arrowRef })
49
+ ]
36
50
  });
37
- const id = core.useId();
38
- const Window = WindowContext.useWindow();
39
- const handleCloseButton = () => {
40
- onOpenChange == null ? void 0 : onOpenChange(false);
51
+ const { getReferenceProps, getFloatingProps } = react.useInteractions([
52
+ react.useRole(context, { role: "dialog" }),
53
+ react.useClick(context),
54
+ react.useDismiss(context)
55
+ ]);
56
+ const floatingStyles = React.useMemo(() => {
57
+ var _a, _b;
58
+ return {
59
+ top: y != null ? y : 0,
60
+ left: x != null ? x : 0,
61
+ position: strategy,
62
+ width: (_a = elements.floating) == null ? void 0 : _a.offsetWidth,
63
+ height: (_b = elements.floating) == null ? void 0 : _b.offsetHeight
64
+ };
65
+ }, [elements.floating, strategy, x, y]);
66
+ const setOpen = (event, newOpen) => {
67
+ setOpenState(newOpen);
68
+ onOpenChange == null ? void 0 : onOpenChange(event, newOpen);
69
+ };
70
+ const arrowProps = {
71
+ ref: arrowRef,
72
+ context,
73
+ style: {
74
+ position: strategy,
75
+ left: arrowX != null ? arrowX : 0,
76
+ top: arrowY != null ? arrowY : 0
77
+ }
78
+ };
79
+ const handleCloseButton = (event) => {
80
+ setOpen(event, false);
81
+ onClose == null ? void 0 : onClose(event);
41
82
  };
42
- if (!open) {
43
- return null;
44
- }
45
- return /* @__PURE__ */ jsxRuntime.jsx(Portal.Portal, {
46
- children: /* @__PURE__ */ jsxRuntime.jsx(Window, {
47
- className: clsx.clsx(withBaseName(), className, {
48
- [withBaseName(variant)]: variant === "secondary"
49
- }),
50
- id,
83
+ return /* @__PURE__ */ jsxRuntime.jsx(OverlayContext.OverlayContext.Provider, {
84
+ value: {
85
+ id: id != null ? id : "",
86
+ openState,
87
+ setOpen,
88
+ floatingStyles,
89
+ placement,
90
+ context,
91
+ arrowProps,
92
+ floating,
93
+ reference,
94
+ handleCloseButton,
95
+ getFloatingProps,
96
+ getReferenceProps
97
+ },
98
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", {
51
99
  ref,
52
100
  ...rest,
53
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
54
- className: clsx.clsx(withBaseName("content")),
55
- "data-testid": "overlay-content",
56
- children: [
57
- showClose && /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
58
- onClick: handleCloseButton,
59
- className: withBaseName("close"),
60
- variant: "secondary",
61
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, {
62
- "accessible-text": "close overlay",
63
- className: withBaseName("closeIcon")
64
- })
65
- }),
66
- children,
67
- /* @__PURE__ */ jsxRuntime.jsx("div", {
68
- className: withBaseName("arrow"),
69
- ...arrowProps
70
- })
71
- ]
72
- })
101
+ children
73
102
  })
74
103
  });
75
104
  }