@toolbox-web/grid-react 2.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/chunks/feature-registry-DKPyd2rV.js +2 -0
  4. package/chunks/{react-column-config-Cto2WHGC.js → react-column-config-CkBIwx2L.js} +1 -1
  5. package/chunks/{react-grid-adapter-C_TSA5_P.js → react-grid-adapter-DP9A9ytc.js} +131 -93
  6. package/chunks/use-grid-is-ready-Baa67cu3.js +15 -0
  7. package/features/editing.js +3 -3
  8. package/features/export.d.ts +6 -0
  9. package/features/export.d.ts.map +1 -1
  10. package/features/export.js +17 -15
  11. package/features/filtering.d.ts +6 -0
  12. package/features/filtering.d.ts.map +1 -1
  13. package/features/filtering.js +40 -38
  14. package/features/grouping-columns.js +1 -1
  15. package/features/grouping-rows.js +1 -1
  16. package/features/master-detail.js +2 -2
  17. package/features/pinned-rows.js +1 -1
  18. package/features/print.d.ts +6 -0
  19. package/features/print.d.ts.map +1 -1
  20. package/features/print.js +10 -8
  21. package/features/responsive.js +2 -2
  22. package/features/selection.d.ts +32 -0
  23. package/features/selection.d.ts.map +1 -1
  24. package/features/selection.js +35 -19
  25. package/features/undo-redo.d.ts +6 -0
  26. package/features/undo-redo.d.ts.map +1 -1
  27. package/features/undo-redo.js +38 -27
  28. package/index.d.ts +3 -0
  29. package/index.d.ts.map +1 -1
  30. package/index.js +245 -232
  31. package/lib/column-options.d.ts +33 -0
  32. package/lib/column-options.d.ts.map +1 -0
  33. package/lib/grid-column.d.ts +21 -11
  34. package/lib/grid-column.d.ts.map +1 -1
  35. package/lib/grid-type-registry.d.ts +6 -3
  36. package/lib/grid-type-registry.d.ts.map +1 -1
  37. package/lib/react-grid-adapter.d.ts +37 -1
  38. package/lib/react-grid-adapter.d.ts.map +1 -1
  39. package/lib/use-grid-is-ready.d.ts +9 -0
  40. package/lib/use-grid-is-ready.d.ts.map +1 -0
  41. package/lib/use-grid.d.ts +2 -0
  42. package/lib/use-grid.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/chunks/feature-registry-8K2rOVnC.js +0 -2
@@ -1,5 +1,5 @@
1
1
  import { n as e } from "../chunks/portal-bridge-zxgm_jwK.js";
2
- import { t } from "../chunks/feature-registry-8K2rOVnC.js";
2
+ import { o as t } from "../chunks/feature-registry-DKPyd2rV.js";
3
3
  import { GroupingColumnsPlugin as n } from "@toolbox-web/grid/plugins/grouping-columns";
4
4
  //#region libs/grid-react/src/features/grouping-columns.ts
5
5
  function r(t) {
@@ -1,5 +1,5 @@
1
1
  import { n as e } from "../chunks/portal-bridge-zxgm_jwK.js";
2
- import { t } from "../chunks/feature-registry-8K2rOVnC.js";
2
+ import { o as t } from "../chunks/feature-registry-DKPyd2rV.js";
3
3
  import { GroupingRowsPlugin as n } from "@toolbox-web/grid/plugins/grouping-rows";
4
4
  //#region libs/grid-react/src/features/grouping-rows.ts
5
5
  t("groupingRows", (t) => {
@@ -1,7 +1,7 @@
1
- import { i as e } from "../chunks/react-grid-adapter-C_TSA5_P.js";
1
+ import { o as e } from "../chunks/react-grid-adapter-DP9A9ytc.js";
2
2
  import { a as t, i as n } from "../chunks/portal-bridge-zxgm_jwK.js";
3
3
  import { n as r } from "../chunks/post-mount-refresh-hooks-D7BDK4Kl.js";
4
- import { t as i } from "../chunks/feature-registry-8K2rOVnC.js";
4
+ import { o as i } from "../chunks/feature-registry-DKPyd2rV.js";
5
5
  import { n as a } from "../chunks/grid-detail-panel-CLdX0T_A.js";
6
6
  import "@toolbox-web/grid/features/master-detail";
7
7
  import { MasterDetailPlugin as o } from "@toolbox-web/grid/plugins/master-detail";
@@ -1,5 +1,5 @@
1
1
  import { a as e, i as t } from "../chunks/portal-bridge-zxgm_jwK.js";
2
- import { t as n } from "../chunks/feature-registry-8K2rOVnC.js";
2
+ import { o as n } from "../chunks/feature-registry-DKPyd2rV.js";
3
3
  import "@toolbox-web/grid/features/pinned-rows";
4
4
  import { PinnedRowsPlugin as r } from "@toolbox-web/grid/plugins/pinned-rows";
5
5
  //#region libs/grid-react/src/features/pinned-rows.ts
@@ -14,6 +14,12 @@ export interface PrintMethods {
14
14
  * Check if a print operation is currently in progress.
15
15
  */
16
16
  isPrinting: () => boolean;
17
+ /**
18
+ * Whether the grid has finished its first render.
19
+ *
20
+ * @since 2.5.0
21
+ */
22
+ isReady: boolean;
17
23
  }
18
24
  /**
19
25
  * Hook for programmatic print control.
@@ -1 +1 @@
1
- {"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../../../libs/grid-react/src/features/print.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,iCAAiC,CAAC;AAKrF,OAAO,kCAAkC,CAAC;AAI1C,YAAY,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAyB5D"}
1
+ {"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../../../libs/grid-react/src/features/print.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,iCAAiC,CAAC;AAMrF,OAAO,kCAAkC,CAAC;AAI1C,YAAY,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC;IAE1B;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CA8B5D"}
package/features/print.js CHANGED
@@ -1,20 +1,22 @@
1
1
  import { t as e } from "../chunks/grid-element-context-DpuQsoie.js";
2
- import { useCallback as t, useContext as n } from "react";
2
+ import { t } from "../chunks/use-grid-is-ready-Baa67cu3.js";
3
+ import { useCallback as n, useContext as r } from "react";
3
4
  import "@toolbox-web/grid/features/print";
4
5
  //#region libs/grid-react/src/features/print.ts
5
- function r(r) {
6
- let i = n(e), a = t(() => (r ? document.querySelector(r) : i?.current)?.getPluginByName("print"), [i, r]);
6
+ function i(i) {
7
+ let a = r(e), o = n(() => i ? document.querySelector(i) : a?.current, [a, i]), s = n(() => o()?.getPluginByName("print"), [o]), c = t(o);
7
8
  return {
8
- print: t(async (e) => {
9
- let t = a();
9
+ print: n(async (e) => {
10
+ let t = s();
10
11
  if (!t) {
11
12
  console.warn("[tbw-grid:print] PrintPlugin not found.\n\n → Enable print on the grid:\n <DataGrid print />");
12
13
  return;
13
14
  }
14
15
  await t.print(e);
15
- }, [a]),
16
- isPrinting: t(() => a()?.isPrinting() ?? !1, [a])
16
+ }, [s]),
17
+ isPrinting: n(() => s()?.isPrinting() ?? !1, [s]),
18
+ isReady: c
17
19
  };
18
20
  }
19
21
  //#endregion
20
- export { r as useGridPrint };
22
+ export { i as useGridPrint };
@@ -1,7 +1,7 @@
1
- import { o as e } from "../chunks/react-grid-adapter-C_TSA5_P.js";
1
+ import { c as e } from "../chunks/react-grid-adapter-DP9A9ytc.js";
2
2
  import { a as t, i as n } from "../chunks/portal-bridge-zxgm_jwK.js";
3
3
  import { n as r } from "../chunks/post-mount-refresh-hooks-D7BDK4Kl.js";
4
- import { t as i } from "../chunks/feature-registry-8K2rOVnC.js";
4
+ import { o as i } from "../chunks/feature-registry-DKPyd2rV.js";
5
5
  import { n as a } from "../chunks/grid-responsive-card-Dx5U6Prm.js";
6
6
  import "@toolbox-web/grid/features/responsive";
7
7
  import { ResponsivePlugin as o } from "@toolbox-web/grid/plugins/responsive";
@@ -36,8 +36,40 @@ export interface SelectionMethods<TRow = unknown> {
36
36
  * This is the recommended way to get selected rows. Unlike manual
37
37
  * index mapping, it correctly resolves rows even when the grid is
38
38
  * sorted or filtered.
39
+ *
40
+ * For reactive selected rows, use `selectedRows` instead.
39
41
  */
40
42
  getSelectedRows: () => TRow[];
43
+ /**
44
+ * Reactive selection state. Re-renders the component whenever the selection
45
+ * changes. `null` when no SelectionPlugin is active or nothing is selected.
46
+ *
47
+ * @since 2.5.0
48
+ */
49
+ selection: SelectionResult | null;
50
+ /**
51
+ * Reactive selected row indices (sorted ascending). Empty in cell/range
52
+ * modes or when nothing is selected.
53
+ *
54
+ * **Prefer `selectedRows`** for getting actual row objects — it handles
55
+ * index-to-object resolution correctly regardless of sorting/filtering.
56
+ *
57
+ * @since 2.5.0
58
+ */
59
+ selectedRowIndices: number[];
60
+ /**
61
+ * Reactive selected row objects. Works in all selection modes.
62
+ *
63
+ * @since 2.5.0
64
+ */
65
+ selectedRows: TRow[];
66
+ /**
67
+ * Whether the grid has finished its first render and the selection plugin
68
+ * has been discovered.
69
+ *
70
+ * @since 2.5.0
71
+ */
72
+ isReady: boolean;
41
73
  }
42
74
  /**
43
75
  * Hook for programmatic selection control.
@@ -1 +1 @@
1
- {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../../libs/grid-react/src/features/selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAwB,KAAK,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAKjH,OAAO,sCAAsC,CAAC;AAI9C,YAAY,EAAE,aAAa,IAAI,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEpG;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAAC,IAAI,GAAG,OAAO;IAC9C;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;;OAGG;IACH,YAAY,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAEtD;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAEzC;;;;;;;;OAQG;IACH,eAAe,EAAE,MAAM,IAAI,EAAE,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAG,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAuE1F"}
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../../libs/grid-react/src/features/selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EACL,KAAK,SAAS,EAGd,KAAK,eAAe,EACrB,MAAM,qCAAqC,CAAC;AAK7C,OAAO,sCAAsC,CAAC;AAI9C,YAAY,EAAE,aAAa,IAAI,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAEpG;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAAC,IAAI,GAAG,OAAO;IAC9C;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;;OAGG;IACH,YAAY,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAEtD;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,eAAe,EAAE,MAAM,IAAI,EAAE,CAAC;IAE9B;;;;;OAKG;IACH,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAElC;;;;;;;;OAQG;IACH,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAE7B;;;;OAIG;IACH,YAAY,EAAE,IAAI,EAAE,CAAC;IAErB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAG,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAuH1F"}
@@ -1,17 +1,33 @@
1
1
  import { t as e } from "../chunks/grid-element-context-DpuQsoie.js";
2
- import { useCallback as t, useContext as n } from "react";
2
+ import { useCallback as t, useContext as n, useEffect as r, useState as i } from "react";
3
3
  import "@toolbox-web/grid/features/selection";
4
4
  //#region libs/grid-react/src/features/selection.ts
5
- function r(r) {
6
- let i = n(e), a = t(() => (r ? document.querySelector(r) : i?.current)?.getPluginByName("selection"), [i, r]);
7
- return {
5
+ function a(a) {
6
+ let o = n(e), s = t(() => a ? document.querySelector(a) : o?.current, [o, a]), c = t(() => s()?.getPluginByName("selection"), [s]), [l, u] = i(!1), [d, f] = i(null), [p, m] = i([]), [h, g] = i([]);
7
+ return r(() => {
8
+ let e = !1, t = s();
9
+ if (!t) return;
10
+ let n = (n) => {
11
+ let r = t.getPluginByName("selection");
12
+ if (!r || e) return;
13
+ let i = n ?? r.config?.mode, a = Array.isArray(i) ? i.includes("row") : i === "row";
14
+ f(r.getSelection()), m(a ? r.getSelectedRowIndices() : []), g(r.getSelectedRows());
15
+ }, r = t.on?.("selection-change", (e) => {
16
+ n(e.mode);
17
+ });
18
+ return Promise.resolve(t.ready?.()).then(() => {
19
+ e || (u(!0), n());
20
+ }), () => {
21
+ e = !0, r?.();
22
+ };
23
+ }, [s]), {
8
24
  selectAll: t(() => {
9
- let e = a();
25
+ let e = c();
10
26
  if (!e) {
11
27
  console.warn("[tbw-grid:selection] SelectionPlugin not found.\n\n → Enable selection on the grid:\n <DataGrid selection=\"range\" />");
12
28
  return;
13
29
  }
14
- let t = r ? document.querySelector(r) : i?.current, n = e.config?.mode;
30
+ let t = s(), n = e.config?.mode;
15
31
  if (n === "row") {
16
32
  let n = t?.rows?.length ?? 0, r = /* @__PURE__ */ new Set();
17
33
  for (let e = 0; e < n; e++) r.add(e);
@@ -29,21 +45,21 @@ function r(r) {
29
45
  }
30
46
  }]);
31
47
  }
32
- }, [
33
- a,
34
- i,
35
- r
36
- ]),
48
+ }, [c, s]),
37
49
  clearSelection: t(() => {
38
- a()?.clearSelection();
39
- }, [a]),
40
- getSelection: t(() => a()?.getSelection() ?? null, [a]),
41
- isCellSelected: t((e, t) => a()?.isCellSelected(e, t) ?? !1, [a]),
50
+ c()?.clearSelection();
51
+ }, [c]),
52
+ getSelection: t(() => c()?.getSelection() ?? null, [c]),
53
+ isCellSelected: t((e, t) => c()?.isCellSelected(e, t) ?? !1, [c]),
42
54
  setRanges: t((e) => {
43
- a()?.setRanges(e);
44
- }, [a]),
45
- getSelectedRows: t(() => a()?.getSelectedRows() ?? [], [a])
55
+ c()?.setRanges(e);
56
+ }, [c]),
57
+ getSelectedRows: t(() => c()?.getSelectedRows() ?? [], [c]),
58
+ selection: d,
59
+ selectedRowIndices: p,
60
+ selectedRows: h,
61
+ isReady: l
46
62
  };
47
63
  }
48
64
  //#endregion
49
- export { r as useGridSelection };
65
+ export { a as useGridSelection };
@@ -52,6 +52,12 @@ export interface UndoRedoMethods {
52
52
  * @throws If no transaction is active
53
53
  */
54
54
  endTransaction: () => void;
55
+ /**
56
+ * Whether the grid has finished its first render.
57
+ *
58
+ * @since 2.5.0
59
+ */
60
+ isReady: boolean;
55
61
  }
56
62
  /**
57
63
  * Hook for programmatic undo/redo control.
@@ -1 +1 @@
1
- {"version":3,"file":"undo-redo.d.ts","sourceRoot":"","sources":["../../../../libs/grid-react/src/features/undo-redo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,qCAAqC,CAAC;AAK/F,OAAO,sCAAsC,CAAC;AAI9C,YAAY,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAElC;;;OAGG;IACH,IAAI,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,cAAc,EAAE,CAAC;IAErC;;OAEG;IACH,YAAY,EAAE,MAAM,cAAc,EAAE,CAAC;IAErC;;;OAGG;IACH,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAE5F;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAE7B;;;;;OAKG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CA6GlE"}
1
+ {"version":3,"file":"undo-redo.d.ts","sourceRoot":"","sources":["../../../../libs/grid-react/src/features/undo-redo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,qCAAqC,CAAC;AAM/F,OAAO,sCAAsC,CAAC;AAI9C,YAAY,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAElC;;;OAGG;IACH,IAAI,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,YAAY,EAAE,MAAM,cAAc,EAAE,CAAC;IAErC;;OAEG;IACH,YAAY,EAAE,MAAM,cAAc,EAAE,CAAC;IAErC;;;OAGG;IACH,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAE5F;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAE7B;;;;;OAKG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAkIlE"}
@@ -1,55 +1,66 @@
1
1
  import { t as e } from "../chunks/grid-element-context-DpuQsoie.js";
2
- import { useCallback as t, useContext as n } from "react";
2
+ import { t } from "../chunks/use-grid-is-ready-Baa67cu3.js";
3
+ import { useCallback as n, useContext as r, useEffect as i, useState as a } from "react";
3
4
  import "@toolbox-web/grid/features/undo-redo";
4
5
  //#region libs/grid-react/src/features/undo-redo.ts
5
- function r(r) {
6
- let i = n(e), a = t(() => (r ? document.querySelector(r) : i?.current)?.getPluginByName("undoRedo"), [i, r]);
7
- return {
8
- undo: t(() => {
9
- let e = a();
6
+ function o(o) {
7
+ let s = r(e), c = n(() => o ? document.querySelector(o) : s?.current, [s, o]), l = n(() => c()?.getPluginByName("undoRedo"), [c]), u = t(c), [d, f] = a(0);
8
+ return i(() => {
9
+ let e = c();
10
+ if (!e?.on) return;
11
+ let t = () => f((e) => e + 1), n = [
12
+ e.on("undo", t),
13
+ e.on("redo", t),
14
+ e.on("cell-commit", t)
15
+ ];
16
+ return () => n.forEach((e) => e());
17
+ }, [c]), {
18
+ undo: n(() => {
19
+ let e = l();
10
20
  return e ? e.undo() : (console.warn("[tbw-grid:undoRedo] UndoRedoPlugin not found.\n\n → Enable undo/redo on the grid:\n <DataGrid editing=\"dblclick\" undoRedo />"), null);
11
- }, [a]),
12
- redo: t(() => {
13
- let e = a();
21
+ }, [l]),
22
+ redo: n(() => {
23
+ let e = l();
14
24
  return e ? e.redo() : (console.warn("[tbw-grid:undoRedo] UndoRedoPlugin not found.\n\n → Enable undo/redo on the grid:\n <DataGrid editing=\"dblclick\" undoRedo />"), null);
15
- }, [a]),
16
- canUndo: t(() => a()?.canUndo() ?? !1, [a]),
17
- canRedo: t(() => a()?.canRedo() ?? !1, [a]),
18
- clearHistory: t(() => {
19
- let e = a();
25
+ }, [l]),
26
+ canUndo: n(() => l()?.canUndo() ?? !1, [l, d]),
27
+ canRedo: n(() => l()?.canRedo() ?? !1, [l, d]),
28
+ clearHistory: n(() => {
29
+ let e = l();
20
30
  if (!e) {
21
31
  console.warn("[tbw-grid:undoRedo] UndoRedoPlugin not found.\n\n → Enable undo/redo on the grid:\n <DataGrid editing=\"dblclick\" undoRedo />");
22
32
  return;
23
33
  }
24
34
  e.clearHistory();
25
- }, [a]),
26
- getUndoStack: t(() => a()?.getUndoStack() ?? [], [a]),
27
- getRedoStack: t(() => a()?.getRedoStack() ?? [], [a]),
28
- recordEdit: t((e, t, n, r) => {
29
- let i = a();
35
+ }, [l]),
36
+ getUndoStack: n(() => l()?.getUndoStack() ?? [], [l]),
37
+ getRedoStack: n(() => l()?.getRedoStack() ?? [], [l]),
38
+ recordEdit: n((e, t, n, r) => {
39
+ let i = l();
30
40
  if (!i) {
31
41
  console.warn("[tbw-grid:undoRedo] UndoRedoPlugin not found.\n\n → Enable undo/redo on the grid:\n <DataGrid editing=\"dblclick\" undoRedo />");
32
42
  return;
33
43
  }
34
44
  i.recordEdit(e, t, n, r);
35
- }, [a]),
36
- beginTransaction: t(() => {
37
- let e = a();
45
+ }, [l]),
46
+ beginTransaction: n(() => {
47
+ let e = l();
38
48
  if (!e) {
39
49
  console.warn("[tbw-grid:undoRedo] UndoRedoPlugin not found.\n\n → Enable undo/redo on the grid:\n <DataGrid editing=\"dblclick\" undoRedo />");
40
50
  return;
41
51
  }
42
52
  e.beginTransaction();
43
- }, [a]),
44
- endTransaction: t(() => {
45
- let e = a();
53
+ }, [l]),
54
+ endTransaction: n(() => {
55
+ let e = l();
46
56
  if (!e) {
47
57
  console.warn("[tbw-grid:undoRedo] UndoRedoPlugin not found.\n\n → Enable undo/redo on the grid:\n <DataGrid editing=\"dblclick\" undoRedo />");
48
58
  return;
49
59
  }
50
60
  e.endTransaction();
51
- }, [a])
61
+ }, [l]),
62
+ isReady: u
52
63
  };
53
64
  }
54
65
  //#endregion
55
- export { r as useGridUndoRedo };
66
+ export { o as useGridUndoRedo };
package/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export type { ColumnOptions } from './lib/column-options';
1
2
  export { DataGrid } from './lib/data-grid';
2
3
  export type { DataGridProps, DataGridRef } from './lib/data-grid';
3
4
  export { GridColumn } from './lib/grid-column';
@@ -19,6 +20,8 @@ export { GridIconProvider, useGridIcons, type GridIconProviderProps } from './li
19
20
  export { GridProvider, type GridProviderProps } from './lib/grid-provider';
20
21
  export type { ColumnConfig, GridConfig } from './lib/react-column-config';
21
22
  export type { ColumnFieldKey, NestedPaths } from '@toolbox-web/grid';
23
+ export { clearFeatureRegistry, createPluginFromFeature, getFeatureFactory, getRegisteredFeatures, isFeatureRegistered, registerFeature, } from './lib/feature-registry';
24
+ export type { FeatureName, PluginFactory } from './lib/feature-registry';
22
25
  export { useGrid, type UseGridReturn } from './lib/use-grid';
23
26
  export { useGridOverlay, type UseGridOverlayOptions } from './lib/use-grid-overlay';
24
27
  export { GridAdapter } from './lib/react-grid-adapter';
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../libs/grid-react/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC9G,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,YAAY,EACV,eAAe,EAIf,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGtG,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG3E,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG1E,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMvD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAG5G,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../libs/grid-react/src/index.ts"],"names":[],"mappings":"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"}