impact-nova 2.1.0-alpha.4 → 2.1.0-alpha.5

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 (136) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +3 -0
  2. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +6 -0
  3. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +15 -21
  4. package/dist/components/data/ag-grid-react/cell-renderers/date-display-renderer.js +1 -1
  5. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.d.ts +1 -2
  6. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.js +12 -6
  7. package/dist/components/data/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +19 -19
  8. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +1 -1
  9. package/dist/components/data/ag-grid-react/cell-renderers/switch-display-renderer.js +15 -15
  10. package/dist/components/data/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +1 -1
  11. package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.js +33 -33
  12. package/dist/components/data/ag-grid-react/headers/components/header-info.js +66 -62
  13. package/dist/components/data/ag-grid-react/headers/components/info-modal.js +6 -6
  14. package/dist/components/data/ag-grid-react/headers/components/section-renderers.js +18 -18
  15. package/dist/components/data/ag-grid-react/headers/custom-header-group.js +40 -29
  16. package/dist/components/data/ag-grid-react/headers/custom-header.js +102 -98
  17. package/dist/components/data/ag-grid-react/index.d.ts +1 -1
  18. package/dist/components/data/ag-grid-react/index.js +156 -148
  19. package/dist/components/data/ag-grid-react/theme.js +3 -0
  20. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.d.ts +5 -0
  21. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.js +13 -0
  22. package/dist/components/data/ag-grid-react/useGridAutoSizeStrategyOnResize.js +8 -5
  23. package/dist/components/data/data-table/data-table-column-apply.d.ts +16 -0
  24. package/dist/components/data/data-table/data-table-column-apply.js +18 -0
  25. package/dist/components/data/data-table/data-table-column-list.d.ts +13 -3
  26. package/dist/components/data/data-table/data-table-column-list.js +198 -191
  27. package/dist/components/data/data-table/data-table-constants.d.ts +3 -4
  28. package/dist/components/data/data-table/data-table-context.d.ts +3 -6
  29. package/dist/components/data/data-table/data-table-context.js +21 -10
  30. package/dist/components/data/data-table/data-table-saved-views.js +26 -26
  31. package/dist/components/data/data-table/data-table-sheet-portal-store.d.ts +13 -0
  32. package/dist/components/data/data-table/data-table-sheet-portal-store.js +36 -0
  33. package/dist/components/data/data-table/data-table-sheet.d.ts +3 -6
  34. package/dist/components/data/data-table/data-table-sheet.js +1 -1
  35. package/dist/components/data/data-table/data-table-view-menu.js +40 -40
  36. package/dist/components/data/data-table/data-table.d.ts +8 -10
  37. package/dist/components/data/data-table/data-table.js +131 -113
  38. package/dist/components/data/data-table/data-table.types.d.ts +35 -0
  39. package/dist/components/data/data-table/index.js +28 -27
  40. package/dist/components/data/data-table/indicator-legend.js +6 -6
  41. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.d.ts +8 -0
  42. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +72 -0
  43. package/dist/components/data/expandable-list-item/expandable-list-item-context.d.ts +13 -0
  44. package/dist/components/data/expandable-list-item/expandable-list-item-context.js +25 -0
  45. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.d.ts +6 -0
  46. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +41 -0
  47. package/dist/components/data/expandable-list-item/expandable-list-item-parts.d.ts +31 -0
  48. package/dist/components/data/expandable-list-item/expandable-list-item-parts.js +233 -0
  49. package/dist/components/data/expandable-list-item/expandable-list-item-preset.d.ts +18 -0
  50. package/dist/components/data/expandable-list-item/expandable-list-item-preset.js +133 -0
  51. package/dist/components/data/expandable-list-item/expandable-list-item.d.ts +5 -0
  52. package/dist/components/data/{expandable-sku/expandable-sku.types.d.ts → expandable-list-item/expandable-list-item.types.d.ts} +7 -7
  53. package/dist/components/data/expandable-list-item/index.d.ts +5 -0
  54. package/dist/components/data/expandable-list-item/index.js +19 -0
  55. package/dist/components/data/nested-list/components/NestedListHeader.js +11 -11
  56. package/dist/components/data/nested-list/components/SortableItem.js +2 -2
  57. package/dist/components/data-display/avatar/avatar.types.d.ts +2 -0
  58. package/dist/components/data-display/badge/badge.types.d.ts +2 -0
  59. package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +11 -11
  60. package/dist/components/data-display/calendar/calendar-month-picker-panel.js +7 -7
  61. package/dist/components/data-display/calendar/calendar-week-number-cell.js +31 -31
  62. package/dist/components/data-display/card/card.js +8 -8
  63. package/dist/components/data-display/chart/chart.types.d.ts +9 -0
  64. package/dist/components/data-display/skeleton/skeleton.js +6 -6
  65. package/dist/components/data-display/statistics-card/statistics-card.js +14 -14
  66. package/dist/components/feedback/alert-dialog/alert-dialog.js +19 -19
  67. package/dist/components/feedback/dialog/dialog.js +1 -1
  68. package/dist/components/feedback/drawer/drawer.js +18 -18
  69. package/dist/components/feedback/dropdown-menu/dropdown-menu.js +70 -57
  70. package/dist/components/feedback/popover/popover.js +1 -1
  71. package/dist/components/feedback/sheet/sheet.js +1 -1
  72. package/dist/components/feedback/tooltip/tooltip.js +22 -22
  73. package/dist/components/feedback/tooltip/tooltip.variants.js +1 -1
  74. package/dist/components/flows/command-palette/command-palette.js +104 -104
  75. package/dist/components/flows/command-palette/shortcut-settings.js +34 -34
  76. package/dist/components/flows/filter-strip/filter-tag-list.js +4 -4
  77. package/dist/components/flows/notification-panel/notification-list.js +17 -17
  78. package/dist/components/flows/notification-panel/notification-panel.js +4 -4
  79. package/dist/components/flows/notification-panel/notification-panel.types.d.ts +3 -0
  80. package/dist/components/flows/wizard/wizard.js +8 -8
  81. package/dist/components/forms/combobox/combobox.js +20 -20
  82. package/dist/components/forms/date-picker/date-picker.js +17 -17
  83. package/dist/components/forms/date-picker/date-range-picker.js +3 -3
  84. package/dist/components/forms/date-picker/month-picker.js +1 -1
  85. package/dist/components/forms/date-picker/month-range-picker.js +42 -42
  86. package/dist/components/forms/date-picker/week-picker.js +15 -15
  87. package/dist/components/forms/date-picker/week-range-picker.js +3 -3
  88. package/dist/components/forms/file-upload/file-upload.js +33 -33
  89. package/dist/components/forms/input/input.js +8 -8
  90. package/dist/components/forms/input/input.variants.js +3 -3
  91. package/dist/components/forms/select/components/SelectMenuPanel.d.ts +1 -2
  92. package/dist/components/forms/select/components/SelectMenuPanel.js +18 -20
  93. package/dist/components/forms/select/components/SelectTrigger.d.ts +9 -6
  94. package/dist/components/forms/select/components/SelectTrigger.js +120 -122
  95. package/dist/components/forms/select/components/Submenu.js +8 -8
  96. package/dist/components/forms/select/hooks/useSelectKeyboardHandlers.d.ts +1 -1
  97. package/dist/components/forms/select/select.js +86 -86
  98. package/dist/components/forms/select/select.variants.js +4 -4
  99. package/dist/components/layout/sidebar/sidebar.d.ts +7 -50
  100. package/dist/components/layout/sidebar/sidebar.js +12 -11
  101. package/dist/components/layout/sidebar/sidebar.types.d.ts +35 -1
  102. package/dist/components/primitives/button-group/button-group.js +32 -32
  103. package/dist/components/primitives/chips/chips.variants.js +5 -5
  104. package/dist/components/primitives/empty-container/empty-container.types.d.ts +3 -0
  105. package/dist/components/primitives/kbd/kbd.variants.js +3 -3
  106. package/dist/components/primitives/stepper/stepper.js +6 -6
  107. package/dist/impact-nova-components.css +97 -0
  108. package/dist/impact-nova-tokens.scss +2 -4
  109. package/dist/impact-nova.css +1 -1
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.js +446 -413
  112. package/dist/lib/compose-refs.d.ts +8 -0
  113. package/dist/lib/compose-refs.js +14 -0
  114. package/dist/lib/primitives/field.types.d.ts +8 -2
  115. package/dist/lib/virtualized/index.d.ts +3 -0
  116. package/dist/lib/virtualized/index.js +33 -16
  117. package/dist/lib/virtualized/useVirtualizedList.d.ts +2 -0
  118. package/dist/lib/virtualized/useVirtualizedList.js +115 -109
  119. package/dist/lib/virtualized/virtualized-list-context.d.ts +12 -0
  120. package/dist/lib/virtualized/virtualized-list-context.js +21 -0
  121. package/dist/lib/virtualized/virtualized-list-parts.d.ts +51 -0
  122. package/dist/lib/virtualized/virtualized-list-parts.js +175 -0
  123. package/dist/lib/virtualized/virtualized-list-utils.d.ts +5 -0
  124. package/dist/lib/virtualized/virtualized-list-utils.js +6 -0
  125. package/dist/llms/rules/installation.js +1 -1
  126. package/dist/llms/rules/migration.js +1 -1
  127. package/dist/llms/rules/real-world-patterns.js +1 -1
  128. package/dist/llms/rules/requirements.js +1 -1
  129. package/package.json +24 -15
  130. package/tailwind.config.js +1 -0
  131. package/dist/components/data/ag-grid-react/headers/components/truncated-text.d.ts +0 -15
  132. package/dist/components/data/ag-grid-react/headers/components/truncated-text.js +0 -27
  133. package/dist/components/data/expandable-sku/expandable-sku.d.ts +0 -38
  134. package/dist/components/data/expandable-sku/expandable-sku.js +0 -245
  135. package/dist/components/data/expandable-sku/index.d.ts +0 -2
  136. package/dist/components/data/expandable-sku/index.js +0 -4
@@ -1,115 +1,117 @@
1
- import { jsxs as ce, jsx as S } from "react/jsx-runtime";
2
- import { useState as W, useRef as F, useCallback as m, useEffect as J } from "react";
3
- import { useDataTable as se } from "./data-table-context.js";
4
- import { NestedList as ae } from "../nested-list/nested-list.js";
5
- import { SelectionMode as ue } from "../nested-list/nested-list.types.js";
6
- import { useImpactNovaI18n as de } from "../../../i18n/use-impact-nova-i18n.js";
7
- import { mergePartialOrderedColumnState as fe } from "./data-table-column-state.js";
8
- import { subscribeGridApiEvents as pe, subscribeGridApiEvent as he } from "../ag-grid-react/grid-api-event-subscription.js";
9
- import { PinSwitch as me } from "./pin-switch.js";
10
- import { ColumnIndicator as Q } from "./column-indicator.js";
11
- import { IndicatorLegend as ge } from "./indicator-legend.js";
12
- function Ce(k) {
13
- const P = [];
14
- let g = k.getOriginalParent();
15
- for (; g; ) {
16
- const w = g.getColGroupDef();
17
- w?.headerName && w?.children && P.push(g), g = g.getOriginalParent();
1
+ import { jsxs as ae, jsx as v } from "react/jsx-runtime";
2
+ import { useState as K, useRef as L, useCallback as C, useEffect as J } from "react";
3
+ import { useDataTable as ue } from "./data-table-context.js";
4
+ import { NestedList as de } from "../nested-list/nested-list.js";
5
+ import { SelectionMode as fe } from "../nested-list/nested-list.types.js";
6
+ import { useImpactNovaI18n as pe } from "../../../i18n/use-impact-nova-i18n.js";
7
+ import { mergePartialOrderedColumnState as Q } from "./data-table-column-state.js";
8
+ import { afterSynchronousColumnApply as U, GRID_AUTO_UNPIN_WAIT_MS as he, readGridColumnPinned as me, EXTERNAL_SYNC_DEBOUNCE_MS as ge } from "./data-table-column-apply.js";
9
+ import { subscribeGridApiEvents as Ce, subscribeGridApiEvent as be } from "../ag-grid-react/grid-api-event-subscription.js";
10
+ import { PinSwitch as Se } from "./pin-switch.js";
11
+ import { ColumnIndicator as Z } from "./column-indicator.js";
12
+ import { IndicatorLegend as Ie } from "./indicator-legend.js";
13
+ function ye(P) {
14
+ const E = [];
15
+ let b = P.getOriginalParent();
16
+ for (; b; ) {
17
+ const M = b.getColGroupDef();
18
+ M?.headerName && M?.children && E.push(b), b = b.getOriginalParent();
18
19
  }
19
- return P.reverse(), P;
20
+ return E.reverse(), E;
20
21
  }
21
- const be = 300, K = 100, xe = ({
22
- enableApplyDiscard: k = !1,
23
- showSearch: P = !0,
24
- showSelectAll: g = !0,
25
- showCollapse: w = !0
22
+ const Me = ({
23
+ enableApplyDiscard: P = !1,
24
+ showSearch: E = !0,
25
+ showSelectAll: b = !0,
26
+ showCollapse: M = !0
26
27
  }) => {
27
- const { gridApi: l } = se(), { t: G } = de(), [X, $] = W([]), [Z, ee] = W(!1), N = F(!1), U = F(null), M = F(0), V = F({}), [B, te] = W(!1), x = m(() => {
28
- if (!l || N.current) return;
29
- const n = l.getColumnState(), i = l.getColumns() || [], t = new Map(i.map((r) => [r.getColId(), r])), s = [], c = [], e = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map();
30
- f.set(s, "f"), f.set(c, "s");
28
+ const { gridApi: n } = ue(), { t: x } = pe(), [ee, $] = K([]), [te, ne] = K(!1), m = L(!1), j = L(null), O = L(0), V = L({}), [X, re] = K(!1), S = C(() => {
29
+ if (!n || m.current) return;
30
+ const e = n.getColumnState(), t = n.getAllGridColumns?.() ?? n.getColumns() ?? [], o = new Map(t.map((l) => [l.getColId(), l])), i = [], u = [], r = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
31
+ s.set(i, "f"), s.set(u, "s");
31
32
  let p = 0;
32
- const T = (r) => {
33
- let o = f.get(r);
34
- return o === void 0 && (o = `n${p++}`, f.set(r, o)), o;
35
- }, h = (r, o) => {
36
- const a = r.getGroupId(), b = T(o), v = `${a}::${b}`, A = e.get(v);
37
- if (A && A.list === o && o[o.length - 1] === A.node)
38
- return A.node;
39
- const _ = y.get(v) || 0;
40
- y.set(v, _ + 1);
41
- const R = r.getColGroupDef(), D = {
42
- id: _ === 0 ? `${a}__${b}` : `${a}__${b}__${_}`,
43
- label: R?.headerName || a,
33
+ const A = (l) => {
34
+ let c = s.get(l);
35
+ return c === void 0 && (c = `n${p++}`, s.set(l, c)), c;
36
+ }, h = (l, c) => {
37
+ const a = l.getGroupId(), y = A(c), T = `${a}::${y}`, k = r.get(T);
38
+ if (k && k.list === c && c[c.length - 1] === k.node)
39
+ return k.node;
40
+ const D = g.get(T) || 0;
41
+ g.set(T, D + 1);
42
+ const w = l.getColGroupDef(), N = {
43
+ id: D === 0 ? `${a}__${y}` : `${a}__${y}__${D}`,
44
+ label: w?.headerName || a,
44
45
  checked: !0,
45
46
  children: [],
46
47
  category: "group"
47
48
  };
48
- return o.push(D), e.set(v, { list: o, node: D }), D;
49
+ return c.push(N), r.set(T, { list: c, node: N }), N;
49
50
  };
50
- let L = 0, u = 0, O = 0, C = 0;
51
- n.forEach((r) => {
52
- const o = t.get(r.colId);
53
- if (!o) return;
54
- let a = l.getDisplayNameForColumn(o, "header");
51
+ let z = 0, d = 0, F = 0, I = 0;
52
+ e.forEach((l) => {
53
+ const c = o.get(l.colId) ?? n.getColumn(l.colId);
54
+ if (!c) return;
55
+ let a = n.getDisplayNameForColumn(c, "header");
55
56
  if (a === "") return;
56
57
  if (a == null) {
57
- const I = o.getColDef();
58
- if (I.headerName === "") return;
59
- a = I.headerName || I.field || r.colId;
58
+ const G = c.getColDef();
59
+ if (G.headerName === "") return;
60
+ a = G.headerName || G.field || l.colId;
60
61
  }
61
62
  if (!a || a.trim() === "")
62
63
  return;
63
- const b = !r.hide, v = !!r.sort, A = o.isFilterActive(), _ = r.pinned === "left" ? "left" : r.pinned === "right" ? "right" : null, R = {
64
- id: r.colId,
64
+ const y = !l.hide, T = !!l.sort, k = c.isFilterActive(), D = l.pinned ?? c.getPinned() ?? null, w = D === "left" ? "left" : D === "right" ? "right" : null, q = {
65
+ id: l.colId,
65
66
  label: a,
66
- checked: b,
67
+ checked: y,
67
68
  data: {
68
- hasSortApplied: v,
69
- hasFilterApplied: A,
70
- pinned: _
69
+ hasSortApplied: T,
70
+ hasFilterApplied: k,
71
+ pinned: w
71
72
  }
72
73
  };
73
- r.pinned ? (L++, b && u++) : (O++, b && C++);
74
- const j = r.pinned ? s : c, D = Ce(o);
75
- if (D.length > 0) {
76
- let I = j, q = null;
77
- for (const ie of D)
78
- q = h(ie, I), I = q.children;
79
- q.children.push(R);
74
+ w ? (z++, y && d++) : (F++, y && I++);
75
+ const N = w ? i : u, W = ye(c);
76
+ if (W.length > 0) {
77
+ let G = N, B = null;
78
+ for (const se of W)
79
+ B = h(se, G), G = B.children;
80
+ B.children.push(q);
80
81
  } else
81
- j.push(R);
82
+ N.push(q);
82
83
  });
83
- const d = (r) => {
84
- let o = r.length > 0;
85
- for (const a of r)
86
- a.children && (a.checked = d(a.children)), a.checked || (o = !1);
87
- return o;
84
+ const f = (l) => {
85
+ let c = l.length > 0;
86
+ for (const a of l)
87
+ a.children && (a.checked = f(a.children)), a.checked || (c = !1);
88
+ return c;
88
89
  };
89
- d(s), d(c);
90
- const E = [
90
+ f(i), f(u);
91
+ const _ = [
91
92
  {
92
93
  id: "root-frozen",
93
- label: G("dataTable.frozenColumns"),
94
- checked: L > 0 && u === L,
95
- children: s,
94
+ label: x("dataTable.frozenColumns"),
95
+ checked: z > 0 && d === z,
96
+ children: i,
96
97
  category: "structure",
97
98
  isDragDisabled: !0
98
99
  },
99
100
  {
100
101
  id: "root-scrollable",
101
- label: G("dataTable.scrollableColumns"),
102
- checked: O > 0 && C === O,
103
- children: c,
102
+ label: x("dataTable.scrollableColumns"),
103
+ checked: F > 0 && I === F,
104
+ children: u,
104
105
  category: "structure",
105
106
  isDragDisabled: !0
106
107
  }
107
108
  ];
108
- $(E), ee(!0);
109
- }, [l, G]);
109
+ $(_), ne(!0);
110
+ }, [n, x]);
110
111
  J(() => {
111
- if (!l) return;
112
- const n = setTimeout(() => x(), 0), i = [
112
+ if (!n) return;
113
+ queueMicrotask(() => S());
114
+ const e = [
113
115
  "columnVisible",
114
116
  "columnPinned",
115
117
  "columnMoved",
@@ -126,163 +128,168 @@ const be = 300, K = 100, xe = ({
126
128
  "filterChanged"
127
129
  ];
128
130
  let t = null;
129
- const s = () => {
130
- t && clearTimeout(t), t = setTimeout(() => {
131
- if (t = null, N.current) return;
132
- const c = U.current?.querySelector('[data-component="nested-list"] .overflow-y-auto');
133
- c && (M.current = c.scrollTop), x(), te((e) => !e);
134
- }, 150);
131
+ const o = () => {
132
+ m.current || (t && clearTimeout(t), t = setTimeout(() => {
133
+ if (t = null, m.current) return;
134
+ const i = j.current?.querySelector('[data-component="nested-list"] .overflow-y-auto');
135
+ i && (O.current = i.scrollTop), S(), re((u) => !u);
136
+ }, ge));
135
137
  };
136
- if (!l.isDestroyed()) {
137
- const c = pe(l, i, s);
138
+ if (!n.isDestroyed()) {
139
+ const i = Ce(n, e, o);
138
140
  return () => {
139
- clearTimeout(n), t && clearTimeout(t), c();
141
+ t && clearTimeout(t), i();
140
142
  };
141
143
  }
142
144
  return () => {
143
- clearTimeout(n), t && clearTimeout(t);
145
+ t && clearTimeout(t);
144
146
  };
145
- }, [l, x]), J(() => {
146
- if (M.current === 0) return;
147
- const n = requestAnimationFrame(() => {
148
- const i = U.current?.querySelector('[data-component="nested-list"] .overflow-y-auto');
149
- i && (i.scrollTop = M.current, M.current = 0);
147
+ }, [n, S]), J(() => {
148
+ if (O.current === 0) return;
149
+ const e = requestAnimationFrame(() => {
150
+ const t = j.current?.querySelector('[data-component="nested-list"] .overflow-y-auto');
151
+ t && (t.scrollTop = O.current, O.current = 0);
150
152
  });
151
- return () => cancelAnimationFrame(n);
152
- }, [B]);
153
- const Y = m((n) => {
154
- const i = [], t = (s, c) => {
155
- s.forEach((e) => {
156
- if (e.id === "root-frozen") {
157
- e.children && t(e.children, "left");
153
+ return () => cancelAnimationFrame(e);
154
+ }, [X]);
155
+ const Y = C((e) => {
156
+ const t = [], o = (i, u) => {
157
+ i.forEach((r) => {
158
+ if (r.id === "root-frozen") {
159
+ r.children && o(r.children, "left");
158
160
  return;
159
161
  }
160
- if (e.id === "root-scrollable") {
161
- e.children && t(e.children, null);
162
+ if (r.id === "root-scrollable") {
163
+ r.children && o(r.children, null);
162
164
  return;
163
165
  }
164
- if (e.category === "group" || e.children && e.children.length > 0)
165
- e.children && t(e.children, c);
166
- else if (l?.getColumn(e.id)) {
166
+ if (r.category === "group" || r.children && r.children.length > 0)
167
+ r.children && o(r.children, u);
168
+ else if (n?.getColumn(r.id)) {
167
169
  let p;
168
- if (c === null)
170
+ if (u === null)
169
171
  p = null;
170
172
  else {
171
- const h = e.data?.pinned;
172
- p = h === "left" || h === "right" ? h : c;
173
+ const h = r.data?.pinned;
174
+ p = h === "left" || h === "right" ? h : u;
173
175
  }
174
- i.push({
175
- colId: e.id,
176
+ t.push({
177
+ colId: r.id,
176
178
  pinned: p,
177
- hide: !e.checked
179
+ hide: !r.checked
178
180
  });
179
181
  }
180
182
  });
181
183
  };
182
- return t(n, null), i;
183
- }, [l]), z = m((n) => {
184
- if (!l) return;
185
- N.current = !0;
186
- const i = Y(n);
187
- if (i.length === 0) {
188
- setTimeout(() => {
189
- N.current = !1;
190
- }, K);
184
+ return o(e, null), t;
185
+ }, [n]), R = C((e) => {
186
+ if (!n) return;
187
+ m.current = !0;
188
+ const t = Y(e);
189
+ if (t.length === 0) {
190
+ U(() => {
191
+ m.current = !1;
192
+ });
191
193
  return;
192
194
  }
193
- const t = l.getColumnState(), s = fe(t, i), c = new Set(t.filter((u) => u.pinned).map((u) => u.colId)), e = s.filter((u) => u.pinned && !c.has(u.colId)), y = new Set(e.map((u) => u.colId));
194
- l.applyColumnState({ state: s, applyOrder: !0 });
195
- const f = () => {
196
- N.current = !1, x();
195
+ const o = n.getColumnState(), i = Q(o, t), u = new Set(o.filter((d) => d.pinned).map((d) => d.colId)), r = i.filter((d) => d.pinned && !u.has(d.colId)), g = new Set(r.map((d) => d.colId));
196
+ n.applyColumnState({ state: i, applyOrder: !0 });
197
+ const s = () => {
198
+ m.current = !1, S();
197
199
  };
198
- if (y.size === 0) {
199
- setTimeout(f, K);
200
+ if (g.size === 0) {
201
+ U(s);
200
202
  return;
201
203
  }
202
- let p = !1, T = null, h = null;
203
- h = he(l, "columnPinned", () => {
204
- if (p || l.isDestroyed()) return;
205
- const u = l.getColumnState();
206
- if (e.filter((C) => {
207
- const d = u.find((E) => E.colId === C.colId);
208
- return d && !d.pinned;
204
+ let p = !1, A = null, h = null;
205
+ h = be(n, "columnPinned", () => {
206
+ if (p || n.isDestroyed()) return;
207
+ const d = n.getColumnState();
208
+ if (r.filter((I) => {
209
+ const f = d.find((_) => _.colId === I.colId);
210
+ return f && !f.pinned;
209
211
  }).length > 0) {
210
- p = !0, T && clearTimeout(T), h?.();
211
- const C = s.filter((d) => d.pinned && !y.has(d.colId));
212
- if (C.length > 0) {
213
- const d = C[0], E = s.map(
214
- (r) => r.colId === d.colId ? { ...r, pinned: null } : r
212
+ p = !0, A && clearTimeout(A), h?.();
213
+ const I = i.filter((f) => f.pinned && !g.has(f.colId));
214
+ if (I.length > 0) {
215
+ const f = I[0], _ = i.map(
216
+ (l) => l.colId === f.colId ? { ...l, pinned: null } : l
215
217
  );
216
- l.applyColumnState({ state: E, applyOrder: !0 });
218
+ n.applyColumnState({ state: _, applyOrder: !0 });
217
219
  }
218
- setTimeout(f, K);
220
+ U(s);
219
221
  }
220
- }), T = setTimeout(() => {
221
- h?.(), p || f();
222
- }, be);
223
- }, [l, Y, x]), ne = m((n) => {
224
- z(n);
225
- }, [z]), re = m((n) => {
226
- k || z(n), $(n);
227
- }, [k, z]), H = m((n, i) => {
228
- $((t) => {
229
- const s = (c) => c.map((e) => e.id === n ? {
230
- ...e,
222
+ }), A = setTimeout(() => {
223
+ h?.(), p || s();
224
+ }, he);
225
+ }, [n, Y, S]), le = C((e) => {
226
+ R(e);
227
+ }, [R]), oe = C((e) => {
228
+ P || R(e), $(e);
229
+ }, [P, R]), H = C((e, t) => {
230
+ if ($((u) => {
231
+ const r = (g) => g.map((s) => s.id === e ? {
232
+ ...s,
231
233
  data: {
232
- ...e.data,
233
- pinned: i
234
+ ...s.data,
235
+ pinned: t
234
236
  }
235
- } : e.children ? {
236
- ...e,
237
- children: s(e.children)
238
- } : e);
239
- return s(t);
240
- }), l && l.applyColumnState({
241
- state: [{ colId: n, pinned: i }]
237
+ } : s.children ? {
238
+ ...s,
239
+ children: r(s.children)
240
+ } : s);
241
+ return r(u);
242
+ }), !n) return;
243
+ m.current = !0;
244
+ const o = n.getColumnState(), i = Q(o, [
245
+ { colId: e, pinned: t }
246
+ ]);
247
+ n.applyColumnState({ state: i, applyOrder: !0 }), U(() => {
248
+ m.current = !1, me(n, e) !== t && S();
242
249
  });
243
- }, [l]), le = m((n, i) => {
244
- if (!i.isLeaf) return null;
245
- const t = n.data;
246
- return !t?.hasSortApplied && !t?.hasFilterApplied ? null : /* @__PURE__ */ ce("span", { className: "inline-flex items-center gap-1 ml-1.5 shrink-0", children: [
247
- t?.hasSortApplied && /* @__PURE__ */ S(Q, { type: "sort" }),
248
- t?.hasFilterApplied && /* @__PURE__ */ S(Q, { type: "filter" })
250
+ }, [n, S]), ce = C((e, t) => {
251
+ if (!t.isLeaf) return null;
252
+ const o = e.data;
253
+ return !o?.hasSortApplied && !o?.hasFilterApplied ? null : /* @__PURE__ */ ae("span", { className: "inline-flex items-center gap-1 ml-1.5 shrink-0", children: [
254
+ o?.hasSortApplied && /* @__PURE__ */ v(Z, { type: "sort" }),
255
+ o?.hasFilterApplied && /* @__PURE__ */ v(Z, { type: "filter" })
249
256
  ] });
250
- }, []), oe = m((n, i) => {
251
- const t = n.data;
252
- return n.category === "structure" ? n.id !== "root-frozen" ? null : /* @__PURE__ */ S(ge, {}) : !i.isLeaf || !(t?.pinned === "left" || t?.pinned === "right") ? null : /* @__PURE__ */ S(
253
- me,
257
+ }, []), ie = C((e, t) => {
258
+ const o = e.data;
259
+ return e.category === "structure" ? e.id !== "root-frozen" ? null : /* @__PURE__ */ v(Ie, {}) : !t.isLeaf || !(o?.pinned === "left" || o?.pinned === "right") ? null : /* @__PURE__ */ v(
260
+ Se,
254
261
  {
255
- value: t?.pinned ?? null,
256
- onChange: (c) => H(n.id, c),
262
+ value: o?.pinned ?? null,
263
+ onChange: (u) => H(e.id, u),
257
264
  className: "shrink-0"
258
265
  }
259
266
  );
260
267
  }, [H]);
261
- return Z ? /* @__PURE__ */ S("div", { ref: U, className: "flex flex-col h-full bg-canvas-elevated", children: /* @__PURE__ */ S(
262
- ae,
268
+ return te ? /* @__PURE__ */ v("div", { ref: j, className: "flex flex-col h-full bg-canvas-elevated", children: /* @__PURE__ */ v(
269
+ de,
263
270
  {
264
- items: X,
265
- onChange: re,
266
- onSubmit: ne,
267
- renderLabelExtras: le,
268
- renderActions: oe,
269
- enableApplyDiscard: k,
270
- enableSearch: P,
271
- enableSelectAll: g,
271
+ items: ee,
272
+ onChange: oe,
273
+ onSubmit: le,
274
+ renderLabelExtras: ce,
275
+ renderActions: ie,
276
+ enableApplyDiscard: P,
277
+ enableSearch: E,
278
+ enableSelectAll: b,
272
279
  enableDragDrop: !0,
273
280
  enableCollapse: !0,
274
- enableGlobalCollapse: w,
275
- selectionMode: ue.CASCADE_DOWN,
276
- searchPlaceholder: G("dataTable.searchColumnsPlaceholder"),
281
+ enableGlobalCollapse: M,
282
+ selectionMode: fe.CASCADE_DOWN,
283
+ searchPlaceholder: x("dataTable.searchColumnsPlaceholder"),
277
284
  className: "h-full",
278
285
  initialCollapsedItems: V.current,
279
- onCollapseChange: (n) => {
280
- V.current = n;
286
+ onCollapseChange: (e) => {
287
+ V.current = e;
281
288
  }
282
289
  },
283
- B ? "sync-a" : "sync-b"
284
- ) }) : /* @__PURE__ */ S("div", { className: "p-4 text-[13px] text-content-placeholder", children: G("dataTable.loadingColumns") });
290
+ X ? "sync-a" : "sync-b"
291
+ ) }) : /* @__PURE__ */ v("div", { className: "p-4 text-[13px] text-content-placeholder", children: x("dataTable.loadingColumns") });
285
292
  };
286
293
  export {
287
- xe as DataTableColumnList
294
+ Me as DataTableColumnList
288
295
  };
@@ -1,8 +1,7 @@
1
1
  /**
2
- * Minimum height (px) for the **scoped sheet portal host** (`sheetTarget`), not the grid
3
- * flex child. Applied only while a sheet is open so the overlay can extend to this height
4
- * without resizing the grid’s own layout box (avoids unnecessary layout-driven grid
5
- * refreshes on sheet open/close).
2
+ * Minimum height (px) for the scoped settings sheet host while open.
3
+ * Applied on `DataTableContent`'s layout frame (not the absolute portal layer)
4
+ * so short grids grow enough for a usable column list without re-rendering AG Grid.
6
5
  */
7
6
  export declare const DATA_TABLE_SCOPED_SHEET_HOST_MIN_HEIGHT_PX = 400;
8
7
  /** DOM class toggled imperatively for viewport-fill table shell (styles in `src/index.scss`). */
@@ -1,4 +1,5 @@
1
1
  import { GridApi } from 'ag-grid-community';
2
+ import { DataTableSheetPortalStore } from './data-table-sheet-portal-store';
2
3
  export type DataTableFontSize = "small" | "medium" | "large";
3
4
  export type DataTableNumericFormat = "full" | "k" | "m" | "b" | "full_precision";
4
5
  export type DataTableRowHeight = "default" | "compact" | "comfort";
@@ -15,16 +16,12 @@ export interface DataTableContextValue {
15
16
  setRowHeight: (height: DataTableRowHeight) => void;
16
17
  }
17
18
  export declare const DataTableContext: import('react').Context<DataTableContextValue | null>;
19
+ export declare const DataTableSheetPortalStoreContext: import('react').Context<DataTableSheetPortalStore | null>;
18
20
  export declare const useDataTable: () => DataTableContextValue;
19
- /**
20
- * Separate context for sheet-portal state that changes on every sheet open/close.
21
- * Isolated from `DataTableContext` so that `scopedSheetOpen` toggling does NOT
22
- * force grid consumers (`DataTableContent`, `AgGridWrapper`) to re-render.
23
- */
21
+ export declare const useDataTableSheetPortalStore: () => DataTableSheetPortalStore;
24
22
  export interface DataTableSheetPortalContextValue {
25
23
  sheetTarget: HTMLDivElement | null;
26
24
  setSheetTarget: (node: HTMLDivElement | null) => void;
27
25
  scopedSheetOpen: boolean;
28
26
  }
29
- export declare const DataTableSheetPortalContext: import('react').Context<DataTableSheetPortalContextValue | null>;
30
27
  export declare const useDataTableSheetPortal: () => DataTableSheetPortalContextValue;
@@ -1,20 +1,31 @@
1
1
  import { createContext as e, useContext as a } from "react";
2
- const o = e(
2
+ import { useDataTableSheetPortalSnapshot as s } from "./data-table-sheet-portal-store.js";
3
+ const n = e(
3
4
  null
4
- ), l = () => {
5
- const t = a(o);
5
+ ), l = e(null), b = () => {
6
+ const t = a(n);
6
7
  if (!t)
7
8
  throw new Error("useDataTable must be used within a DataTable");
8
9
  return t;
9
- }, n = e(null), s = () => {
10
- const t = a(n);
10
+ }, u = () => {
11
+ const t = a(l);
11
12
  if (!t)
12
- throw new Error("useDataTableSheetPortal must be used within a DataTable");
13
+ throw new Error(
14
+ "useDataTableSheetPortalStore must be used within a DataTable"
15
+ );
13
16
  return t;
17
+ }, c = () => {
18
+ const t = u(), { sheetTarget: o, scopedSheetOpen: r } = s(t);
19
+ return {
20
+ sheetTarget: o,
21
+ scopedSheetOpen: r,
22
+ setSheetTarget: t.setSheetTarget
23
+ };
14
24
  };
15
25
  export {
16
- o as DataTableContext,
17
- n as DataTableSheetPortalContext,
18
- l as useDataTable,
19
- s as useDataTableSheetPortal
26
+ n as DataTableContext,
27
+ l as DataTableSheetPortalStoreContext,
28
+ b as useDataTable,
29
+ c as useDataTableSheetPortal,
30
+ u as useDataTableSheetPortalStore
20
31
  };