@12-apps/ui 6.24.5 → 6.24.7

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 (50) hide show
  1. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +4 -4
  2. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +5 -5
  3. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +3 -3
  4. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +2 -2
  5. package/dist/_internal/components/data-display/DataViews/data-views-search.js +1 -1
  6. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +2 -2
  7. package/dist/_internal/components/data-display/Sheet/Sheet.js +4 -4
  8. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +1 -1
  9. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +1 -1
  10. package/dist/_internal/components/data-display/index.js +4 -4
  11. package/dist/_internal/components/index.js +5 -5
  12. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +5 -5
  13. package/dist/_internal/components/navigation/index.js +5 -5
  14. package/dist/{chunk-OTH7H3IP.js → chunk-4J5EN4FQ.js} +4 -4
  15. package/dist/{chunk-I3E2QHTH.js → chunk-6NSIZ2ZO.js} +2 -2
  16. package/dist/{chunk-53PDVLRK.js → chunk-6OORHAE7.js} +2 -2
  17. package/dist/{chunk-6JZE4IIN.js → chunk-7MR2JCJW.js} +36 -13
  18. package/dist/chunk-7MR2JCJW.js.map +1 -0
  19. package/dist/{chunk-GVA5CYKP.js → chunk-BUQ2JUND.js} +2 -2
  20. package/dist/{chunk-LWRMKF7D.js → chunk-H5VEJDEK.js} +2 -2
  21. package/dist/{chunk-A7Q5AQVD.js → chunk-HZVFAGLZ.js} +29 -14
  22. package/dist/chunk-HZVFAGLZ.js.map +1 -0
  23. package/dist/{chunk-M2K7BPHX.js → chunk-JBMBFYFA.js} +8 -3
  24. package/dist/chunk-JBMBFYFA.js.map +1 -0
  25. package/dist/{chunk-ZXOT3U6U.js → chunk-QPLWDSYG.js} +2 -2
  26. package/dist/{chunk-POUWN4PX.js → chunk-U437KFDI.js} +1 -1
  27. package/dist/chunk-U437KFDI.js.map +1 -0
  28. package/dist/data-display/DataViews.js +5 -5
  29. package/dist/data-display/Sheet.js +4 -4
  30. package/dist/navigation/AppHeader.js +5 -5
  31. package/dist/types/components/data-display/DataViews/data-views-search.d.ts.map +1 -1
  32. package/dist/types/components/data-display/Sheet/Sheet.body.d.ts.map +1 -1
  33. package/dist/types/components/data-display/Sheet/Sheet.parts.d.ts.map +1 -1
  34. package/dist/types/components/data-display/Sheet/Sheet.styles.d.ts.map +1 -1
  35. package/package.json +1 -1
  36. package/src/components/data-display/DataViews/data-views-search.tsx +62 -14
  37. package/src/components/data-display/Sheet/Sheet.body.tsx +6 -1
  38. package/src/components/data-display/Sheet/Sheet.md +4 -2
  39. package/src/components/data-display/Sheet/Sheet.parts.tsx +4 -0
  40. package/src/components/data-display/Sheet/Sheet.styles.ts +77 -17
  41. package/dist/chunk-6JZE4IIN.js.map +0 -1
  42. package/dist/chunk-A7Q5AQVD.js.map +0 -1
  43. package/dist/chunk-M2K7BPHX.js.map +0 -1
  44. package/dist/chunk-POUWN4PX.js.map +0 -1
  45. /package/dist/{chunk-OTH7H3IP.js.map → chunk-4J5EN4FQ.js.map} +0 -0
  46. /package/dist/{chunk-I3E2QHTH.js.map → chunk-6NSIZ2ZO.js.map} +0 -0
  47. /package/dist/{chunk-53PDVLRK.js.map → chunk-6OORHAE7.js.map} +0 -0
  48. /package/dist/{chunk-GVA5CYKP.js.map → chunk-BUQ2JUND.js.map} +0 -0
  49. /package/dist/{chunk-LWRMKF7D.js.map → chunk-H5VEJDEK.js.map} +0 -0
  50. /package/dist/{chunk-ZXOT3U6U.js.map → chunk-QPLWDSYG.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  DataViewsGrid
4
- } from "../../../../chunk-53PDVLRK.js";
5
- import "../../../../chunk-LWRMKF7D.js";
4
+ } from "../../../../chunk-6OORHAE7.js";
5
+ import "../../../../chunk-H5VEJDEK.js";
6
6
  import "../../../../chunk-BPLFM2GL.js";
7
7
  import "../../../../chunk-E55CJV65.js";
8
8
  import "../../../../chunk-PN5CQKA2.js";
9
9
  import "../../../../chunk-5OIH36KX.js";
10
- import "../../../../chunk-I3E2QHTH.js";
10
+ import "../../../../chunk-6NSIZ2ZO.js";
11
11
  import "../../../../chunk-5WNQJ5KS.js";
12
12
  import "../../../../chunk-EJQW2IYW.js";
13
13
  import "../../../../chunk-6LGWJFQK.js";
@@ -24,7 +24,7 @@ import "../../../../chunk-IAGOUTI6.js";
24
24
  import "../../../../chunk-EMMPNB6D.js";
25
25
  import "../../../../chunk-KX75HM5U.js";
26
26
  import "../../../../chunk-XKV5ZIBG.js";
27
- import "../../../../chunk-A7Q5AQVD.js";
27
+ import "../../../../chunk-HZVFAGLZ.js";
28
28
  import "../../../../chunk-OGGHD64H.js";
29
29
  import "../../../../chunk-CZPU5TW3.js";
30
30
  import "../../../../chunk-6VP2L3DJ.js";
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import {
3
3
  DataViewsTableBase
4
- } from "../../../../chunk-ZXOT3U6U.js";
4
+ } from "../../../../chunk-QPLWDSYG.js";
5
5
  import "../../../../chunk-4X4KM4ZB.js";
6
- import "../../../../chunk-53PDVLRK.js";
6
+ import "../../../../chunk-6OORHAE7.js";
7
7
  import "../../../../chunk-ZOLAYP2D.js";
8
- import "../../../../chunk-LWRMKF7D.js";
8
+ import "../../../../chunk-H5VEJDEK.js";
9
9
  import "../../../../chunk-BPLFM2GL.js";
10
10
  import "../../../../chunk-E55CJV65.js";
11
11
  import "../../../../chunk-PN5CQKA2.js";
12
12
  import "../../../../chunk-5OIH36KX.js";
13
- import "../../../../chunk-I3E2QHTH.js";
13
+ import "../../../../chunk-6NSIZ2ZO.js";
14
14
  import "../../../../chunk-5WNQJ5KS.js";
15
15
  import "../../../../chunk-EJQW2IYW.js";
16
16
  import "../../../../chunk-6LGWJFQK.js";
@@ -27,7 +27,7 @@ import "../../../../chunk-IAGOUTI6.js";
27
27
  import "../../../../chunk-EMMPNB6D.js";
28
28
  import "../../../../chunk-KX75HM5U.js";
29
29
  import "../../../../chunk-XKV5ZIBG.js";
30
- import "../../../../chunk-A7Q5AQVD.js";
30
+ import "../../../../chunk-HZVFAGLZ.js";
31
31
  import "../../../../chunk-OGGHD64H.js";
32
32
  import "../../../../chunk-CZPU5TW3.js";
33
33
  import "../../../../chunk-6VP2L3DJ.js";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import {
3
3
  GridShell
4
- } from "../../../../chunk-LWRMKF7D.js";
4
+ } from "../../../../chunk-H5VEJDEK.js";
5
5
  import "../../../../chunk-BPLFM2GL.js";
6
6
  import "../../../../chunk-E55CJV65.js";
7
7
  import "../../../../chunk-PN5CQKA2.js";
8
8
  import "../../../../chunk-5OIH36KX.js";
9
- import "../../../../chunk-I3E2QHTH.js";
9
+ import "../../../../chunk-6NSIZ2ZO.js";
10
10
  import "../../../../chunk-5WNQJ5KS.js";
11
11
  import "../../../../chunk-EJQW2IYW.js";
12
12
  import "../../../../chunk-6LGWJFQK.js";
@@ -23,7 +23,7 @@ import "../../../../chunk-IAGOUTI6.js";
23
23
  import "../../../../chunk-EMMPNB6D.js";
24
24
  import "../../../../chunk-KX75HM5U.js";
25
25
  import "../../../../chunk-XKV5ZIBG.js";
26
- import "../../../../chunk-A7Q5AQVD.js";
26
+ import "../../../../chunk-HZVFAGLZ.js";
27
27
  import "../../../../chunk-OGGHD64H.js";
28
28
  import "../../../../chunk-CZPU5TW3.js";
29
29
  import "../../../../chunk-6VP2L3DJ.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  InlineFilterControls
4
- } from "../../../../chunk-I3E2QHTH.js";
4
+ } from "../../../../chunk-6NSIZ2ZO.js";
5
5
  import "../../../../chunk-5WNQJ5KS.js";
6
6
  import "../../../../chunk-EJQW2IYW.js";
7
7
  import "../../../../chunk-6LGWJFQK.js";
@@ -11,7 +11,7 @@ import "../../../../chunk-FV36LFPX.js";
11
11
  import "../../../../chunk-GCZJH4XL.js";
12
12
  import "../../../../chunk-F4RR4666.js";
13
13
  import "../../../../chunk-CBOB5AV6.js";
14
- import "../../../../chunk-A7Q5AQVD.js";
14
+ import "../../../../chunk-HZVFAGLZ.js";
15
15
  import "../../../../chunk-KHG57NAE.js";
16
16
  import "../../../../chunk-4NS4PJJH.js";
17
17
  import "../../../../chunk-J3JGO6Y6.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CollapsedSearch,
4
4
  InlineKeyword
5
- } from "../../../../chunk-A7Q5AQVD.js";
5
+ } from "../../../../chunk-HZVFAGLZ.js";
6
6
  import "../../../../chunk-KHG57NAE.js";
7
7
  import "../../../../chunk-6DPAWXZ3.js";
8
8
  import "../../../../chunk-PZ5AY32C.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SheetBody
3
- } from "../../../../chunk-M2K7BPHX.js";
4
- import "../../../../chunk-POUWN4PX.js";
3
+ } from "../../../../chunk-JBMBFYFA.js";
4
+ import "../../../../chunk-U437KFDI.js";
5
5
  import "../../../../chunk-F52N6ACD.js";
6
6
  import "../../../../chunk-HPK33ACY.js";
7
7
  import "../../../../chunk-V5IOLAIS.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  Sheet
3
- } from "../../../../chunk-OTH7H3IP.js";
4
- import "../../../../chunk-M2K7BPHX.js";
5
- import "../../../../chunk-6JZE4IIN.js";
3
+ } from "../../../../chunk-4J5EN4FQ.js";
4
+ import "../../../../chunk-JBMBFYFA.js";
5
+ import "../../../../chunk-7MR2JCJW.js";
6
6
  import {
7
7
  SheetContent,
8
8
  SheetFooter,
9
9
  SheetHeader,
10
10
  SheetOverlay
11
- } from "../../../../chunk-POUWN4PX.js";
11
+ } from "../../../../chunk-U437KFDI.js";
12
12
  import "../../../../chunk-OLZTGVBT.js";
13
13
  import "../../../../chunk-CRN4KKNI.js";
14
14
  import "../../../../chunk-F52N6ACD.js";
@@ -3,7 +3,7 @@ import {
3
3
  SheetFooter,
4
4
  SheetHeader,
5
5
  SheetOverlay
6
- } from "../../../../chunk-POUWN4PX.js";
6
+ } from "../../../../chunk-U437KFDI.js";
7
7
  import "../../../../chunk-F52N6ACD.js";
8
8
  import "../../../../chunk-HPK33ACY.js";
9
9
  import "../../../../chunk-PZ5AY32C.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  panelSx
3
- } from "../../../../chunk-6JZE4IIN.js";
3
+ } from "../../../../chunk-7MR2JCJW.js";
4
4
  import "../../../../chunk-F52N6ACD.js";
5
5
  import "../../../../chunk-V5IOLAIS.js";
6
6
  import "../../../../chunk-7ZPUN7TV.js";
@@ -16,15 +16,15 @@ import "../../../chunk-ZEG2LNBY.js";
16
16
  import "../../../chunk-ITACE45O.js";
17
17
  import {
18
18
  Sheet
19
- } from "../../../chunk-OTH7H3IP.js";
20
- import "../../../chunk-M2K7BPHX.js";
21
- import "../../../chunk-6JZE4IIN.js";
19
+ } from "../../../chunk-4J5EN4FQ.js";
20
+ import "../../../chunk-JBMBFYFA.js";
21
+ import "../../../chunk-7MR2JCJW.js";
22
22
  import {
23
23
  SheetContent,
24
24
  SheetFooter,
25
25
  SheetHeader,
26
26
  SheetOverlay
27
- } from "../../../chunk-POUWN4PX.js";
27
+ } from "../../../chunk-U437KFDI.js";
28
28
  import "../../../chunk-OLZTGVBT.js";
29
29
  import "../../../chunk-CRN4KKNI.js";
30
30
  import "../../../chunk-F52N6ACD.js";
@@ -94,7 +94,7 @@ import {
94
94
  } from "../../chunk-H37GIAAM.js";
95
95
  import {
96
96
  AppHeaderDetails
97
- } from "../../chunk-GVA5CYKP.js";
97
+ } from "../../chunk-BUQ2JUND.js";
98
98
  import {
99
99
  brandGradient,
100
100
  highlightOf,
@@ -393,15 +393,15 @@ import "../../chunk-ZEG2LNBY.js";
393
393
  import "../../chunk-ITACE45O.js";
394
394
  import {
395
395
  Sheet
396
- } from "../../chunk-OTH7H3IP.js";
397
- import "../../chunk-M2K7BPHX.js";
398
- import "../../chunk-6JZE4IIN.js";
396
+ } from "../../chunk-4J5EN4FQ.js";
397
+ import "../../chunk-JBMBFYFA.js";
398
+ import "../../chunk-7MR2JCJW.js";
399
399
  import {
400
400
  SheetContent,
401
401
  SheetFooter,
402
402
  SheetHeader,
403
403
  SheetOverlay
404
- } from "../../chunk-POUWN4PX.js";
404
+ } from "../../chunk-U437KFDI.js";
405
405
  import "../../chunk-OLZTGVBT.js";
406
406
  import "../../chunk-CRN4KKNI.js";
407
407
  import "../../chunk-F52N6ACD.js";
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import {
3
3
  AppHeaderDetails
4
- } from "../../../../chunk-GVA5CYKP.js";
5
- import "../../../../chunk-OTH7H3IP.js";
6
- import "../../../../chunk-M2K7BPHX.js";
7
- import "../../../../chunk-6JZE4IIN.js";
8
- import "../../../../chunk-POUWN4PX.js";
4
+ } from "../../../../chunk-BUQ2JUND.js";
5
+ import "../../../../chunk-4J5EN4FQ.js";
6
+ import "../../../../chunk-JBMBFYFA.js";
7
+ import "../../../../chunk-7MR2JCJW.js";
8
+ import "../../../../chunk-U437KFDI.js";
9
9
  import "../../../../chunk-OLZTGVBT.js";
10
10
  import "../../../../chunk-CRN4KKNI.js";
11
11
  import "../../../../chunk-F52N6ACD.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "../../../chunk-H37GIAAM.js";
19
19
  import {
20
20
  AppHeaderDetails
21
- } from "../../../chunk-GVA5CYKP.js";
21
+ } from "../../../chunk-BUQ2JUND.js";
22
22
  import {
23
23
  brandGradient,
24
24
  highlightOf,
@@ -51,10 +51,10 @@ import "../../../chunk-Q444G5X7.js";
51
51
  import "../../../chunk-7FOOLP5H.js";
52
52
  import "../../../chunk-FYLCSCMR.js";
53
53
  import "../../../chunk-3L5OZCGA.js";
54
- import "../../../chunk-OTH7H3IP.js";
55
- import "../../../chunk-M2K7BPHX.js";
56
- import "../../../chunk-6JZE4IIN.js";
57
- import "../../../chunk-POUWN4PX.js";
54
+ import "../../../chunk-4J5EN4FQ.js";
55
+ import "../../../chunk-JBMBFYFA.js";
56
+ import "../../../chunk-7MR2JCJW.js";
57
+ import "../../../chunk-U437KFDI.js";
58
58
  import "../../../chunk-OLZTGVBT.js";
59
59
  import "../../../chunk-CRN4KKNI.js";
60
60
  import "../../../chunk-F52N6ACD.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  SheetBody
3
- } from "./chunk-M2K7BPHX.js";
3
+ } from "./chunk-JBMBFYFA.js";
4
4
  import {
5
5
  panelSx
6
- } from "./chunk-6JZE4IIN.js";
6
+ } from "./chunk-7MR2JCJW.js";
7
7
  import {
8
8
  SheetOverlay
9
- } from "./chunk-POUWN4PX.js";
9
+ } from "./chunk-U437KFDI.js";
10
10
  import {
11
11
  useSheetDrag,
12
12
  useSheetOpen
@@ -124,4 +124,4 @@ var Sheet = (props) => {
124
124
  export {
125
125
  Sheet
126
126
  };
127
- //# sourceMappingURL=chunk-OTH7H3IP.js.map
127
+ //# sourceMappingURL=chunk-4J5EN4FQ.js.map
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  CollapsedSearch,
16
16
  InlineKeyword
17
- } from "./chunk-A7Q5AQVD.js";
17
+ } from "./chunk-HZVFAGLZ.js";
18
18
 
19
19
  // src/components/data-display/DataViews/data-views-inline-bar.tsx
20
20
  import Box from "@mui/material/Box/index.js";
@@ -220,4 +220,4 @@ function FilterSlots({
220
220
  export {
221
221
  InlineFilterControls
222
222
  };
223
- //# sourceMappingURL=chunk-I3E2QHTH.js.map
223
+ //# sourceMappingURL=chunk-6NSIZ2ZO.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-LWRMKF7D.js";
3
+ } from "./chunk-H5VEJDEK.js";
4
4
  import {
5
5
  useDataViewsState
6
6
  } from "./chunk-TX5V42AY.js";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-53PDVLRK.js.map
30
+ //# sourceMappingURL=chunk-6OORHAE7.js.map
@@ -19,24 +19,35 @@ var HORIZONTAL_SIZES = {
19
19
  full: "100%"
20
20
  };
21
21
  var VERTICAL_SIZES = {
22
- xs: 200,
23
- sm: 300,
24
- md: 400,
25
- lg: 500,
26
- xl: 600,
27
- full: "100%"
22
+ xs: "min(200px, 100%)",
23
+ sm: "min(300px, 100%)",
24
+ md: "min(400px, 100%)",
25
+ lg: "min(500px, 100%)",
26
+ xl: "min(600px, 100%)"
28
27
  };
28
+ var VERTICAL_MAX_WIDTH = "min(100%, 640px)";
29
29
  var sizeStyles = ({
30
30
  position,
31
31
  size,
32
32
  isDraggableVariant,
33
- isVerticalSheet,
34
33
  currentHeight
35
34
  }) => {
36
- if (isDraggableVariant && isVerticalSheet && currentHeight !== null) {
37
- return { height: currentHeight };
35
+ if (isHorizontalPosition(position)) {
36
+ return { width: HORIZONTAL_SIZES[size] ?? HORIZONTAL_SIZES.md };
37
+ }
38
+ if (size === "full") return { width: "100%", height: "100%" };
39
+ const cross = { width: VERTICAL_MAX_WIDTH, marginInline: "auto" };
40
+ if (isDraggableVariant && currentHeight !== null) {
41
+ return { ...cross, height: currentHeight };
38
42
  }
39
- return isHorizontalPosition(position) ? { width: HORIZONTAL_SIZES[size] ?? HORIZONTAL_SIZES.md } : { height: VERTICAL_SIZES[size] ?? VERTICAL_SIZES.md };
43
+ return {
44
+ ...cross,
45
+ // A CEILING, not a height — see `VERTICAL_SIZES`. `height: auto` is stated
46
+ // rather than left off so the rule survives a caller who set a height on a
47
+ // previous render, and it is what lets the panel hug what it holds.
48
+ height: "auto",
49
+ maxHeight: VERTICAL_SIZES[size] ?? VERTICAL_SIZES.md
50
+ };
40
51
  };
41
52
  var toRgbTriplet = (hexColor) => {
42
53
  const hex = hexColor.replace("#", "");
@@ -151,10 +162,22 @@ var variantStyles = (input) => {
151
162
  var panelSx = (input) => {
152
163
  const { position, size, isDraggableVariant, isVerticalSheet, currentHeight, fullHeight, style } = input;
153
164
  return {
154
- ...sizeStyles({ position, size, isDraggableVariant, isVerticalSheet, currentHeight }),
165
+ // The DEFAULT, so the glow and the elevated shadow are not clipped by the
166
+ // panel they hang off. It used to be stated last, which made it a rule
167
+ // nothing could override — including `gradient`, whose own `overflow:
168
+ // hidden` is what keeps its shimmer inside the panel. That was invisible
169
+ // while every vertical sheet was full-bleed, because the sweep starts at
170
+ // `left: -100%` and a full-width panel put it off-screen; a 640px one puts
171
+ // it on the backdrop beside the sheet.
172
+ overflow: "visible",
173
+ ...sizeStyles({ position, size, isDraggableVariant, currentHeight }),
174
+ // A COLUMN, so `maxHeight` above can be a ceiling rather than a height: the
175
+ // body is then a flex item that shrinks against it, and the scrolling falls
176
+ // to `SheetContent` where it belongs. Without this the panel would clip a
177
+ // long sheet instead of scrolling it.
178
+ ...isVerticalSheet ? { display: "flex", flexDirection: "column" } : {},
155
179
  ...variantStyles(input),
156
180
  ...style,
157
- overflow: "visible",
158
181
  // Expand only the cross axis so the chosen `size` still governs the main
159
182
  // axis: side sheets keep their (responsive) width and go full-height;
160
183
  // top/bottom sheets keep their height and go full-width.
@@ -165,4 +188,4 @@ var panelSx = (input) => {
165
188
  export {
166
189
  panelSx
167
190
  };
168
- //# sourceMappingURL=chunk-6JZE4IIN.js.map
191
+ //# sourceMappingURL=chunk-7MR2JCJW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Sheet/Sheet.styles.ts"],"sourcesContent":["import { alpha } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport type React from 'react';\n\nimport { glowAnimation, pulseAnimation, shimmerAnimation } from './Sheet.animations';\nimport type { SheetProps } from './Sheet.types';\nimport { accentFor } from '../../../tokens/scales';\n\ntype Position = NonNullable<SheetProps['position']>;\ntype Variant = NonNullable<SheetProps['variant']>;\ntype Size = NonNullable<SheetProps['size']>;\ntype Color = NonNullable<SheetProps['color']>;\n\nconst isHorizontalPosition = (position: Position) => position === 'left' || position === 'right';\n\n/**\n * Horizontal (left/right) sheets are viewport-aware: a px floor keeps the panel\n * usable, `…vw` lets the larger presets grow on wide screens (lg ≥32%, xl ≥40%\n * of the viewport), and the outer `min(92vw, …)` guarantees the panel never\n * overflows a small screen.\n */\nconst HORIZONTAL_SIZES: Record<Size, string> = {\n xs: 'min(92vw, 240px)',\n sm: 'min(92vw, 320px)',\n md: 'min(92vw, 400px)',\n lg: 'min(92vw, max(560px, 32vw))',\n xl: 'min(92vw, max(720px, 40vw))',\n full: '100%',\n};\n\n/**\n * `size` governs a vertical sheet's MAIN axis, and it is a CEILING rather than\n * a height: the panel is as tall as what it holds, and starts scrolling only\n * once that would pass the preset.\n *\n * It was a fixed `height`, which meant a short sheet reserved the rest of the\n * preset as dead space — a `md` sheet holding three lines and a button drew a\n * 400px panel and floated them in it. `min(…, 100%)` keeps the ceiling under\n * the viewport, which is also what MUI's own bottom paper asks for.\n *\n * `full` is absent on purpose: it is not a ceiling, it is the whole viewport,\n * and `sizeStyles` answers it before it gets here.\n */\nconst VERTICAL_SIZES: Record<Exclude<Size, 'full'>, string> = {\n xs: 'min(200px, 100%)',\n sm: 'min(300px, 100%)',\n md: 'min(400px, 100%)',\n lg: 'min(500px, 100%)',\n xl: 'min(600px, 100%)',\n};\n\n/**\n * How wide a top/bottom sheet is allowed to get — its CROSS axis, so it is one\n * rule rather than one per `size` preset.\n *\n * A bottom sheet spanning the full width is a phone layout, and it was the only\n * layout this component had: on a desktop a panel holding a sentence and one\n * button was drawn 1900px wide, with the content stranded in the middle of it.\n * 640px is Material's own ceiling for a bottom sheet above the handset\n * breakpoint, and below it `100%` gives the phone back exactly what it had.\n *\n * `fullHeight` is the documented opt-out — it expands a vertical sheet along\n * this axis — and it becomes meaningful here for the first time: it used to\n * name the behaviour every bottom sheet already had.\n */\nconst VERTICAL_MAX_WIDTH = 'min(100%, 640px)';\n\ninterface SizeStyleInput {\n position: Position;\n size: Size;\n isDraggableVariant: boolean;\n currentHeight: number | null;\n}\n\nconst sizeStyles = ({\n position,\n size,\n isDraggableVariant,\n currentHeight,\n}: SizeStyleInput) => {\n if (isHorizontalPosition(position)) {\n return { width: HORIZONTAL_SIZES[size] ?? HORIZONTAL_SIZES.md };\n }\n\n // `full` is not a size on the scale — it is THE WHOLE VIEWPORT, on both axes,\n // and it has to stay that: a consumer using it for a phone takeover would\n // otherwise get a content-hugging 640px card out of a catalog bump, with\n // nothing in the API left to ask for what they had. So it is answered before\n // either rule below touches it.\n if (size === 'full') return { width: '100%', height: '100%' };\n\n // The cross axis is the same rule whatever the preset, and the draggable\n // variant needs it too — dragging moves the panel's height, never its width.\n // `marginInline` is what centres it: MUI pins the bottom paper `left: 0;\n // right: 0`, so a definite width plus auto margins resolves to the middle.\n const cross = { width: VERTICAL_MAX_WIDTH, marginInline: 'auto' };\n\n // The draggable variant owns its own height: the snap point decides it, so a\n // preset would fight the drag.\n if (isDraggableVariant && currentHeight !== null) {\n return { ...cross, height: currentHeight };\n }\n\n return {\n ...cross,\n // A CEILING, not a height — see `VERTICAL_SIZES`. `height: auto` is stated\n // rather than left off so the rule survives a caller who set a height on a\n // previous render, and it is what lets the panel hug what it holds.\n height: 'auto',\n maxHeight: VERTICAL_SIZES[size] ?? VERTICAL_SIZES.md,\n };\n};\n\n/** `r, g, b` for a hex colour, so it can feed an `rgba(var(--x), a)` custom property. */\nconst toRgbTriplet = (hexColor: string) => {\n const hex = hexColor.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n return `${r}, ${g}, ${b}`;\n};\n\nconst roundedStyles = (theme: Theme, position: Position) => {\n const radius = theme.spacing(2);\n const byPosition: Record<Position, string> = {\n top: `0 0 ${radius} ${radius}`,\n bottom: `${radius} ${radius} 0 0`,\n left: `0 ${radius} ${radius} 0`,\n right: `${radius} 0 0 ${radius}`,\n };\n return { borderRadius: byPosition[position] };\n};\n\ninterface VariantStyleInput {\n theme: Theme;\n variant: Variant;\n color: Color;\n position: Position;\n elevation: number;\n glow: boolean;\n pulse: boolean;\n glass: boolean;\n gradient: boolean;\n rounded: boolean;\n disabled: boolean;\n isDragging: boolean;\n isAnimating: boolean;\n isDraggableVariant: boolean;\n isVerticalSheet: boolean;\n}\n\ntype SurfaceInput = VariantStyleInput & { accent: string };\n\n/**\n * Each variant's own additions to the shared surface — never the shared part\n * itself. Every arm of the old switch re-spread the same base, glow, pulse and\n * rounded objects before adding these few rules; `variantStyles` applies that\n * prefix once and lets the table hold only what actually differs.\n */\nconst SURFACES: Record<Variant, (input: SurfaceInput) => Record<string, unknown>> = {\n draggable: ({ theme, elevation, accent }) => ({\n boxShadow: `\n ${theme.shadows[Math.min(elevation + 4, 24)]},\n 0 -2px 10px 0 ${alpha(theme.palette.common.black, 0.1)}\n `,\n border: `1px solid ${alpha(theme.palette.divider, 0.12)}`,\n borderTop: `2px solid ${alpha(accent, 0.3)}`,\n transition: theme.transitions.create(['transform', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeInOut,\n }),\n '&:hover': { borderTopColor: alpha(accent, 0.5) },\n }),\n\n glass: ({ theme, glass }) => ({\n backgroundColor: alpha(theme.palette.background.paper, glass ? 0.75 : 0.95),\n backdropFilter: 'blur(24px) saturate(180%)',\n WebkitBackdropFilter: 'blur(24px) saturate(180%)',\n border: `1px solid ${alpha(theme.palette.divider, 0.15)}`,\n boxShadow: `\n 0 8px 32px 0 ${alpha(theme.palette.common.black, 0.15)},\n inset 0 0 0 1px ${alpha(theme.palette.common.white, 0.1)}\n `,\n }),\n\n gradient: ({ theme, color, gradient, accent }) => ({\n background: gradient\n ? `linear-gradient(\n 135deg,\n ${theme.palette.background.paper} 0%,\n ${alpha(accent, 0.08)} 50%,\n ${alpha(accentFor(theme, color)?.dark || accent, 0.12)} 100%\n )`\n : theme.palette.background.paper,\n position: 'relative' as const,\n overflow: 'hidden' as const,\n '&::before': gradient ? shimmerOverlay(theme) : {},\n }),\n\n elevated: ({ theme, elevation }) => ({\n boxShadow: `\n ${theme.shadows[elevation]},\n 0 20px 40px -15px ${alpha(theme.palette.common.black, 0.15)}\n `,\n transform: 'translateZ(0)',\n willChange: 'transform',\n }),\n\n minimal: () => ({ boxShadow: 'none', border: 'none' }),\n\n default: () => ({}),\n};\n\n/** The sweep of light the gradient variant runs across itself. */\nconst shimmerOverlay = (theme: Theme) => ({\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: '-100%',\n width: '100%',\n height: '100%',\n background: `linear-gradient(\n 90deg,\n transparent,\n ${alpha(theme.palette.common.white, 0.2)},\n transparent\n )`,\n animation: `${shimmerAnimation} 3s infinite`,\n});\n\n/**\n * The parts of the surface that do not depend on the variant: the paper colour,\n * the transition suppression while a drag or spring is driving the panel, the\n * disabled and cursor states, and the two colour custom properties the glow and\n * pulse keyframes read.\n */\nconst baseSurface = (input: VariantStyleInput, accent: string) => {\n const { theme, disabled, isDragging, isAnimating, isDraggableVariant, isVerticalSheet } = input;\n const colorRgb = toRgbTriplet(accent);\n\n return {\n backgroundColor: theme.palette.background.paper,\n // A transition would fight the per-frame height writes while a drag or a\n // snap animation is driving the panel.\n transition:\n !isDragging && !isAnimating\n ? theme.transitions.create(['all'], {\n duration: theme.transitions.duration.standard,\n easing: theme.transitions.easing.easeInOut,\n })\n : 'none',\n opacity: disabled ? 0.5 : 1,\n pointerEvents: disabled ? ('none' as const) : ('auto' as const),\n cursor: isDraggableVariant && isVerticalSheet ? 'grab' : 'auto',\n '--pulse-color': colorRgb,\n '--glow-color': colorRgb,\n ...(isDragging && { cursor: 'grabbing' }),\n };\n};\n\nconst variantStyles = (input: VariantStyleInput) => {\n const { theme, variant, color, position, glow, pulse, rounded } = input;\n const accent = accentFor(theme, color)?.main || theme.palette.primary.main;\n\n return {\n ...baseSurface(input, accent),\n // glow first, then pulse: with both set the pulse keyframes win the shared\n // `animation` slot, which is the order the original spread produced.\n ...(glow && { animation: `${glowAnimation} 2s ease-in-out infinite`, filter: 'brightness(1.05)' }),\n ...(pulse && { animation: `${pulseAnimation} 2s infinite`, position: 'relative' as const }),\n ...(rounded && roundedStyles(theme, position)),\n ...(SURFACES[variant] ?? SURFACES.default)({ ...input, accent }),\n };\n};\n\ninterface PanelSxInput extends VariantStyleInput {\n size: Size;\n currentHeight: number | null;\n fullHeight: boolean;\n style?: React.CSSProperties;\n}\n\n/**\n * The drawer paper's complete `sx`: its size, its variant surface, the caller's\n * own `style`, and the full-height rule.\n *\n * Built here rather than in the component so the component holds no style\n * branches of its own — the cross-axis rule below is four on its own.\n */\nexport const panelSx = (input: PanelSxInput): CSSObject => {\n const { position, size, isDraggableVariant, isVerticalSheet, currentHeight, fullHeight, style } =\n input;\n\n return {\n // The DEFAULT, so the glow and the elevated shadow are not clipped by the\n // panel they hang off. It used to be stated last, which made it a rule\n // nothing could override — including `gradient`, whose own `overflow:\n // hidden` is what keeps its shimmer inside the panel. That was invisible\n // while every vertical sheet was full-bleed, because the sweep starts at\n // `left: -100%` and a full-width panel put it off-screen; a 640px one puts\n // it on the backdrop beside the sheet.\n overflow: 'visible',\n ...sizeStyles({ position, size, isDraggableVariant, currentHeight }),\n // A COLUMN, so `maxHeight` above can be a ceiling rather than a height: the\n // body is then a flex item that shrinks against it, and the scrolling falls\n // to `SheetContent` where it belongs. Without this the panel would clip a\n // long sheet instead of scrolling it.\n ...(isVerticalSheet ? { display: 'flex', flexDirection: 'column' } : {}),\n ...variantStyles(input),\n ...style,\n // Expand only the cross axis so the chosen `size` still governs the main\n // axis: side sheets keep their (responsive) width and go full-height;\n // top/bottom sheets keep their height and go full-width.\n ...(fullHeight &&\n !isDraggableVariant &&\n (isHorizontalPosition(position) ? { height: '100%' } : { width: '100%' })),\n };\n};\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Sheet
3
- } from "./chunk-OTH7H3IP.js";
3
+ } from "./chunk-4J5EN4FQ.js";
4
4
  import {
5
5
  Dialog
6
6
  } from "./chunk-YANLN6HP.js";
@@ -162,4 +162,4 @@ AppHeaderDetails.displayName = "AppHeaderDetails";
162
162
  export {
163
163
  AppHeaderDetails
164
164
  };
165
- //# sourceMappingURL=chunk-GVA5CYKP.js.map
165
+ //# sourceMappingURL=chunk-BUQ2JUND.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-5OIH36KX.js";
11
11
  import {
12
12
  InlineFilterControls
13
- } from "./chunk-I3E2QHTH.js";
13
+ } from "./chunk-6NSIZ2ZO.js";
14
14
  import {
15
15
  GridHeaderRow
16
16
  } from "./chunk-JSH3HFDQ.js";
@@ -237,4 +237,4 @@ function GridShell(props) {
237
237
  export {
238
238
  GridShell
239
239
  };
240
- //# sourceMappingURL=chunk-LWRMKF7D.js.map
240
+ //# sourceMappingURL=chunk-H5VEJDEK.js.map
@@ -11,32 +11,47 @@ import SearchIcon from "@mui/icons-material/Search";
11
11
  import IconButton from "@mui/material/IconButton/index.js";
12
12
  import InputAdornment from "@mui/material/InputAdornment/index.js";
13
13
  import TextField from "@mui/material/TextField/index.js";
14
- import { useEffect, useRef, useState } from "react";
14
+ import { useCallback, useEffect, useRef, useState } from "react";
15
15
  import { jsx, jsxs } from "react/jsx-runtime";
16
16
  var SEARCH_DEBOUNCE_MS = 350;
17
17
  function boxWidth(fill) {
18
18
  return { flex: 1, minWidth: fill ? 0 : 200, maxWidth: fill ? "none" : 384 };
19
19
  }
20
- function InlineKeyword({
21
- value,
22
- onChange,
23
- testId,
24
- autoFocus,
25
- onEscape,
26
- fill = false
27
- }) {
28
- const copy = useDataViewsCopy();
20
+ function useKeywordDraft(value, onChange) {
29
21
  const [draft, setDraft] = useState(value);
30
22
  const prev = useRef(value);
31
23
  if (prev.current !== value) {
32
24
  prev.current = value;
33
25
  if (draft !== value) setDraft(value);
34
26
  }
27
+ const commit = useRef(onChange);
28
+ useEffect(() => {
29
+ commit.current = onChange;
30
+ });
35
31
  useEffect(() => {
36
32
  if (draft === value) return void 0;
37
- const timer = setTimeout(() => onChange(draft), SEARCH_DEBOUNCE_MS);
33
+ const timer = setTimeout(() => commit.current(draft), SEARCH_DEBOUNCE_MS);
38
34
  return () => clearTimeout(timer);
39
- }, [draft, value, onChange]);
35
+ }, [draft, value]);
36
+ const commitNow = useCallback(
37
+ (typed) => {
38
+ setDraft(typed);
39
+ if (typed !== value) commit.current(typed);
40
+ },
41
+ [value]
42
+ );
43
+ return { draft, setDraft, commitNow };
44
+ }
45
+ function InlineKeyword({
46
+ value,
47
+ onChange,
48
+ testId,
49
+ autoFocus,
50
+ onEscape,
51
+ fill = false
52
+ }) {
53
+ const copy = useDataViewsCopy();
54
+ const { draft, setDraft, commitNow } = useKeywordDraft(value, onChange);
40
55
  return /* @__PURE__ */ jsx(
41
56
  TextField,
42
57
  {
@@ -53,7 +68,7 @@ function InlineKeyword({
53
68
  }
54
69
  if (event.key !== "Enter") return;
55
70
  event.preventDefault();
56
- if (draft !== value) onChange(draft);
71
+ commitNow(event.target instanceof HTMLInputElement ? event.target.value : draft);
57
72
  },
58
73
  placeholder: copy.search.placeholder,
59
74
  inputProps: { "aria-label": copy.search.allColumnsLabel, "data-testid": testId },
@@ -123,4 +138,4 @@ export {
123
138
  InlineKeyword,
124
139
  CollapsedSearch
125
140
  };
126
- //# sourceMappingURL=chunk-A7Q5AQVD.js.map
141
+ //# sourceMappingURL=chunk-HZVFAGLZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-search.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * THE INLINE BAR'S SEARCH — the one control on the toolbar that cannot be\n * guessed from an icon's position, which is why it is the LAST thing the\n * degradation ladder takes away. See `data-views-overflow.ts`.\n */\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport SearchIcon from \"@mui/icons-material/Search\";\nimport IconButton from \"@mui/material/IconButton/index.js\";\nimport InputAdornment from \"@mui/material/InputAdornment/index.js\";\nimport TextField from \"@mui/material/TextField/index.js\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { Box } from \"../../../mui/Box\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\n\n/** How long the box waits after the last keystroke before it queries. */\nconst SEARCH_DEBOUNCE_MS = 350;\n\n/**\n * How wide the keyword box is allowed to be.\n *\n * The 200px floor is right while the box shares the row: a search you cannot\n * read six characters in is not a search. It is WRONG once the box has been\n * expanded out of its collapsed state on a narrow screen, where the cluster was\n * sized for a magnifier — the floor cannot be met there, so the row scrolled\n * sideways instead (154px of overhang at 320px). In that mode the box shrinks,\n * and if what is left would still be unreadable the bar hands it the whole\n * cluster instead (`searchTakeover`).\n */\nfunction boxWidth(fill: boolean): { flex: number; minWidth: number; maxWidth: number | \"none\" } {\n return { flex: 1, minWidth: fill ? 0 : 200, maxWidth: fill ? \"none\" : 384 };\n}\n\n/**\n * The box's own draft, and the two ways it reaches `onChange`.\n *\n * Extracted from {@link InlineKeyword} so the commit policy reads in one place\n * rather than split across a render body — and because it is where both halves\n * of a defect that lost searches outright had to be fixed.\n *\n * ## The debounce must not be keyed on the handler's identity\n *\n * Every caller builds `onChange` inline — the grid's own bar passes\n * `(value) => c.patch({ search: value })`, rebuilt on each render. Keying the\n * effect on it re-armed the timer on every render, and a busy admin page\n * re-renders more often than every 350ms as its queries land, so the timer\n * never survived to fire and the term was NEVER committed: measured in one\n * adopter as a dead `?q=` on a server-mode grid, where a 15-second loop pressed\n * Enter over and over and the URL never moved. So the handler is read through a\n * ref and the effect depends on `[draft, value]` alone.\n *\n * ## An immediate commit must read the BOX, not the draft\n *\n * A keystroke can land before React has processed the edit before it — a fast\n * typist, and every Playwright `fill()` followed by `press('Enter')`. `draft` is\n * then still the value from before the edit, and comparing THAT to `value` said\n * \"nothing changed\" and dropped the keystroke, leaving the term on screen with\n * an unfiltered list behind it. `commitNow` takes what the caller read off the\n * element and syncs the draft to it, which also keeps the box from being reset\n * to a stale draft by the next render when a host ignores the commit.\n */\nfunction useKeywordDraft(\n value: string,\n onChange: (next: string) => void,\n): { draft: string; setDraft: (next: string) => void; commitNow: (typed: string) => void } {\n const [draft, setDraft] = useState(value);\n const prev = useRef(value);\n // An external change (a saved view, the URL, \"Limpar\") wins over the draft.\n if (prev.current !== value) {\n prev.current = value;\n if (draft !== value) setDraft(value);\n }\n const commit = useRef(onChange);\n useEffect(() => {\n commit.current = onChange;\n });\n useEffect(() => {\n if (draft === value) return undefined;\n const timer = setTimeout(() => commit.current(draft), SEARCH_DEBOUNCE_MS);\n return () => clearTimeout(timer);\n }, [draft, value]);\n const commitNow = useCallback(\n (typed: string) => {\n setDraft(typed);\n if (typed !== value) commit.current(typed);\n },\n [value],\n );\n return { draft, setDraft, commitNow };\n}\n\n/**\n * The bar's keyword box.\n *\n * DEBOUNCED rather than committed on Enter/blur. In server mode every commit is\n * a round trip, and a box that only fires on blur makes the operator press a\n * key they were not told about to see any result at all — they type, nothing\n * happens, and the list looks broken. 350ms is long enough that a word costs\n * one query, short enough to feel like live search.\n *\n * `Escape` clears; the X clears without leaving the box. Both exist because\n * clearing by selecting-and-deleting is three gestures for the most common\n * thing anyone does to a search box.\n */\nexport function InlineKeyword({\n value,\n onChange,\n testId,\n autoFocus,\n onEscape,\n fill = false,\n}: {\n value: string;\n onChange: (value: string) => void;\n testId?: string;\n autoFocus?: boolean;\n /** Called on Escape with the box already empty — the collapsed bar closes it. */\n onEscape?: () => void;\n /** Take whatever width there is, with no minimum — see {@link boxWidth}. */\n fill?: boolean;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { draft, setDraft, commitNow } = useKeywordDraft(value, onChange);\n\n return (\n <TextField\n size=\"small\"\n value={draft}\n autoFocus={autoFocus}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n if (draft === \"\") onEscape?.();\n setDraft(\"\");\n return;\n }\n // Enter still commits IMMEDIATELY, ahead of the debounce — someone who\n // presses it has decided, and waiting out the timer reads as a stall.\n if (event.key !== \"Enter\") return;\n event.preventDefault();\n // The BOX, not `draft` — see {@link useKeywordDraft}.\n commitNow(event.target instanceof HTMLInputElement ? event.target.value : draft);\n }}\n placeholder={copy.search.placeholder}\n inputProps={{ \"aria-label\": copy.search.allColumnsLabel, \"data-testid\": testId }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ fontSize: 16, color: \"text.secondary\" }} />\n </InputAdornment>\n ),\n endAdornment: draft ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label={copy.search.clear}\n data-testid={testId ? `${testId}-clear` : undefined}\n onClick={() => setDraft(\"\")}\n sx={{ p: 0.25 }}\n >\n <CloseIcon sx={{ fontSize: 14 }} />\n </IconButton>\n </InputAdornment>\n ) : undefined,\n }}\n // Takes the free space and gives it up first — step 3 of the ladder,\n // which needs no flag because flex does it (see `computeSplit`).\n sx={boxWidth(fill)}\n />\n );\n}\n\n/**\n * Step 4 of the ladder: the search as a magnifier.\n *\n * Carries a dot when a search is APPLIED. Collapsing a control that is\n * currently filtering the list, with nothing saying so, is how an operator ends\n * up staring at 3 rows of 214 and reading it as missing data.\n */\nexport function CollapsedSearch({\n active,\n onOpen,\n testId,\n}: {\n active: boolean;\n onOpen: () => void;\n testId?: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <IconButton\n size=\"small\"\n onClick={onOpen}\n aria-label={copy.search.open}\n aria-expanded={false}\n data-testid={testId ? `${testId}-collapsed` : undefined}\n sx={{\n position: \"relative\",\n border: 1,\n borderRadius: 1,\n borderColor: active ? \"primary.main\" : \"divider\",\n color: active ? \"primary.main\" : \"text.secondary\",\n bgcolor: active ? \"action.selected\" : \"background.paper\",\n }}\n >\n <SearchIcon sx={{ fontSize: 18 }} />\n {active && (\n <Box\n component=\"span\"\n sx={{\n position: \"absolute\",\n top: 2,\n right: 2,\n width: 6,\n height: 6,\n borderRadius: \"50%\",\n bgcolor: \"primary.main\",\n }}\n />\n )}\n </IconButton>\n );\n}\n\n"],"mappings":"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","names":["default"]}
@@ -2,7 +2,7 @@ import {
2
2
  SheetContent,
3
3
  SheetFooter,
4
4
  SheetHeader
5
- } from "./chunk-POUWN4PX.js";
5
+ } from "./chunk-U437KFDI.js";
6
6
  import {
7
7
  muiColor
8
8
  } from "./chunk-7ZPUN7TV.js";
@@ -55,7 +55,12 @@ var SheetBody = (props) => {
55
55
  onBlur,
56
56
  "data-testid": testId,
57
57
  sx: {
58
- height: "100%",
58
+ // A vertical sheet's panel is a column whose height is its CONTENT, up
59
+ // to the `size` ceiling — so this fills what the panel has rather than
60
+ // asking for a percentage of it, and `minHeight: 0` is what lets it
61
+ // shrink past its content so `SheetContent` scrolls instead of the
62
+ // panel overflowing. A side sheet's panel is full-height already.
63
+ ...isVerticalSheet ? { flex: "1 1 auto", minHeight: 0 } : { height: "100%" },
59
64
  display: "flex",
60
65
  flexDirection: "column",
61
66
  position: "relative",
@@ -86,4 +91,4 @@ var SheetBody = (props) => {
86
91
  export {
87
92
  SheetBody
88
93
  };
89
- //# sourceMappingURL=chunk-M2K7BPHX.js.map
94
+ //# sourceMappingURL=chunk-JBMBFYFA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/Sheet/Sheet.body.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport React from 'react';\n\nimport { SheetContent, SheetFooter, SheetHeader } from './Sheet.parts';\nimport type { SheetProps } from './Sheet.types';\nimport { muiColor } from '../../../tokens/scales';\n\nexport interface SheetBodyProps extends Pick<\n SheetProps,\n | 'title'\n | 'description'\n | 'showCloseButton'\n | 'showHandle'\n | 'header'\n | 'footer'\n | 'loading'\n | 'color'\n | 'children'\n | 'onClick'\n | 'onFocus'\n | 'onBlur'\n> {\n testId: string;\n isDragging: boolean;\n isVerticalSheet: boolean;\n isDraggableVariant: boolean;\n onClose: () => void;\n onDragStart: (e: React.MouseEvent | React.TouchEvent) => void;\n}\n\n/**\n * The header earns its place if it would show anything at all — a grab handle,\n * either piece of text, the close button, or caller-supplied content.\n */\nconst needsHeader = (props: SheetBodyProps) =>\n Boolean(\n props.showHandle ||\n props.title ||\n props.description ||\n props.showCloseButton ||\n props.header,\n );\n\n/** The centred spinner shown in place of the children while `loading`. */\nconst SheetLoading: React.FC<Pick<SheetBodyProps, 'color'>> = ({ color }) => (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: 200,\n }}\n >\n <CircularProgress color={color === undefined ? undefined : muiColor(color, 'inherit')} />\n </Box>\n);\n\n/**\n * What the sheet contains, independent of which drawer is carrying it. The\n * swipeable and plain branches render exactly this — they differ only in the\n * MUI component and its swipe props, so the contents are built once.\n */\nexport const SheetBody: React.FC<SheetBodyProps> = (props) => {\n const {\n title,\n description,\n showCloseButton,\n showHandle,\n header,\n footer,\n loading,\n color,\n children,\n onClick,\n onFocus,\n onBlur,\n testId,\n isDragging,\n isVerticalSheet,\n isDraggableVariant,\n onClose,\n onDragStart,\n } = props;\n\n return (\n <Box\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n data-testid={testId}\n sx={{\n // A vertical sheet's panel is a column whose height is its CONTENT, up\n // to the `size` ceiling — so this fills what the panel has rather than\n // asking for a percentage of it, and `minHeight: 0` is what lets it\n // shrink past its content so `SheetContent` scrolls instead of the\n // panel overflowing. A side sheet's panel is full-height already.\n ...(isVerticalSheet ? { flex: '1 1 auto', minHeight: 0 } : { height: '100%' }),\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n userSelect: isDragging ? 'none' : 'auto',\n }}\n >\n {needsHeader(props) && (\n <SheetHeader\n title={title}\n description={description}\n showCloseButton={showCloseButton}\n onClose={onClose}\n showHandle={showHandle && isVerticalSheet}\n isDraggable={isDraggableVariant && isVerticalSheet}\n onDragStart={onDragStart}\n dataTestId={`${testId}-header`}\n >\n {header}\n </SheetHeader>\n )}\n\n <SheetContent padded dataTestId={`${testId}-content`}>\n {loading ? <SheetLoading color={color} /> : children}\n </SheetContent>\n\n {footer && (\n <SheetFooter sticky divider dataTestId={`${testId}-footer`}>\n {footer}\n </SheetFooter>\n )}\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAqDzB,cAgCA,YAhCA;AAnBJ,IAAM,cAAc,CAAC,UACnB;AAAA,EACE,MAAM,cACN,MAAM,SACN,MAAM,eACN,MAAM,mBACN,MAAM;AACR;AAGF,IAAM,eAAwD,CAAC,EAAE,MAAM,MACrE;AAAA,EAAC;AAAA;AAAA,IACC,IAAI;AAAA,MACF,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,WAAW;AAAA,IACb;AAAA,IAEA,8BAAC,oBAAiB,OAAO,UAAU,SAAY,SAAY,SAAS,OAAO,SAAS,GAAG;AAAA;AACzF;AAQK,IAAM,YAAsC,CAAC,UAAU;AAC5D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAa;AAAA,MACb,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMF,GAAI,kBAAkB,EAAE,MAAM,YAAY,WAAW,EAAE,IAAI,EAAE,QAAQ,OAAO;AAAA,QAC5E,SAAS;AAAA,QACT,eAAe;AAAA,QACf,UAAU;AAAA,QACV,YAAY,aAAa,SAAS;AAAA,MACpC;AAAA,MAEC;AAAA,oBAAY,KAAK,KAChB;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY,cAAc;AAAA,YAC1B,aAAa,sBAAsB;AAAA,YACnC;AAAA,YACA,YAAY,GAAG,MAAM;AAAA,YAEpB;AAAA;AAAA,QACH;AAAA,QAGF,oBAAC,gBAAa,QAAM,MAAC,YAAY,GAAG,MAAM,YACvC,oBAAU,oBAAC,gBAAa,OAAc,IAAK,UAC9C;AAAA,QAEC,UACC,oBAAC,eAAY,QAAM,MAAC,SAAO,MAAC,YAAY,GAAG,MAAM,WAC9C,kBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-4X4KM4ZB.js";
4
4
  import {
5
5
  DataViewsGrid
6
- } from "./chunk-53PDVLRK.js";
6
+ } from "./chunk-6OORHAE7.js";
7
7
  import {
8
8
  viewStateKey
9
9
  } from "./chunk-ZOLAYP2D.js";
@@ -178,4 +178,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
178
178
  export {
179
179
  DataViewsTableBase
180
180
  };
181
- //# sourceMappingURL=chunk-ZXOT3U6U.js.map
181
+ //# sourceMappingURL=chunk-QPLWDSYG.js.map
@@ -203,4 +203,4 @@ export {
203
203
  SheetFooter,
204
204
  SheetOverlay
205
205
  };
206
- //# sourceMappingURL=chunk-POUWN4PX.js.map
206
+ //# sourceMappingURL=chunk-U437KFDI.js.map