@open-kingdom/shared-frontend-ui-datagrid 0.0.2-0 → 0.0.2-2

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.
package/dist/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export * from './lib/datagrid';
2
2
  export * from './lib/datagrid.constants';
3
3
  export * from './lib/datagrid.types';
4
4
  export * from './lib/theme';
5
+ export * from './lib/store';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,29 +1,31 @@
1
- import { jsx as u } from "react/jsx-runtime";
2
- import { AgGridReact as d } from "ag-grid-react";
3
- import { themeQuartz as a, colorSchemeLight as m, colorSchemeDark as p, ModuleRegistry as f, AllCommunityModule as S } from "ag-grid-community";
1
+ import { jsx as E } from "react/jsx-runtime";
2
+ import { useRef as L, useCallback as c, forwardRef as b, useMemo as v } from "react";
3
+ import { AgGridReact as F } from "ag-grid-react";
4
+ import { themeQuartz as y, colorSchemeLight as z, colorSchemeDark as x, ModuleRegistry as I, AllCommunityModule as N } from "ag-grid-community";
4
5
  export * from "ag-grid-community";
5
- const h = 20, g = [10, 20, 50, 100], T = 100, D = 500, C = "autoHeight", _ = "singleRow", b = "multiRow", E = {
6
+ import { createSlice as k, createSelector as G } from "@reduxjs/toolkit";
7
+ const U = 20, M = [10, 20, 50, 100], W = 100, V = 500, j = "autoHeight", H = "singleRow", J = "multiRow", P = {
6
8
  // Column defaults
7
9
  defaultColDef: {
8
10
  sortable: !0,
9
11
  filter: !0,
10
12
  resizable: !0,
11
13
  floatingFilter: !0,
12
- minWidth: T
14
+ minWidth: W
13
15
  },
14
16
  // Pagination
15
17
  pagination: !0,
16
- paginationPageSize: h,
17
- paginationPageSizeSelector: g,
18
+ paginationPageSize: U,
19
+ paginationPageSizeSelector: M,
18
20
  // UX
19
21
  animateRows: !0,
20
22
  enableCellTextSelection: !0,
21
23
  ensureDomOrder: !0,
22
- tooltipShowDelay: D,
24
+ tooltipShowDelay: V,
23
25
  suppressDragLeaveHidesColumns: !0,
24
- domLayout: C,
26
+ domLayout: j,
25
27
  // Auto-size
26
- onFirstDataRendered: (s) => s.api.sizeColumnsToFit(),
28
+ onFirstDataRendered: (t) => t.api.sizeColumnsToFit(),
27
29
  // Loading states
28
30
  overlayLoadingTemplate: `
29
31
  <div class="ag-custom-loading">
@@ -36,105 +38,259 @@ const h = 20, g = [10, 20, 50, 100], T = 100, D = 500, C = "autoHeight", _ = "si
36
38
  <span>No data to display</span>
37
39
  </div>
38
40
  `
39
- }, L = {
40
- mode: b,
41
+ }, Y = {
42
+ mode: J,
41
43
  checkboxes: !0,
42
44
  headerCheckbox: !0,
43
45
  selectAll: "currentPage",
44
46
  enableClickSelection: !1
45
- }, O = {
46
- mode: _,
47
+ }, Z = {
48
+ mode: H,
47
49
  checkboxes: !1,
48
50
  enableSelectionWithoutKeys: !0,
49
51
  hideDisabledCheckboxes: !0
50
- }, w = {
52
+ }, Q = {
51
53
  height: "auto"
52
54
  };
53
- class y {
55
+ class q {
54
56
  /**
55
57
  * Adapts a UI-Theme to AG Grid theme format
56
58
  * @param theme - UI-Theme object or undefined (uses AG Grid default)
57
59
  * @param mode - Light or dark mode
58
60
  * @returns AG Grid theme
59
61
  */
60
- static adapt(e, t) {
62
+ static adapt(e, a) {
61
63
  if (!e)
62
- return a;
63
- const o = this.applyColorScheme(e, t), r = {
64
+ return y;
65
+ const i = this.applyColorScheme(e, a), r = {
64
66
  ...this.extractColors(e.colors),
65
67
  ...this.extractTypography(e.typography)
66
68
  };
67
- return Object.keys(r).length > 0 ? o.withParams(r) : o;
69
+ return Object.keys(r).length > 0 ? i.withParams(r) : i;
68
70
  }
69
71
  // Apply light/dark color scheme
70
- static applyColorScheme(e, t) {
71
- if (!(e.colors || t))
72
- return a;
73
- const o = t === "dark" ? m : p;
74
- return a.withPart(o);
72
+ static applyColorScheme(e, a) {
73
+ if (!(e.colors || a))
74
+ return y;
75
+ const i = a === "dark" ? z : x;
76
+ return y.withPart(i);
75
77
  }
76
78
  // Extract color parameters from theme
77
79
  static extractColors(e) {
78
80
  if (!e) return {};
79
- const t = {
81
+ const a = {
80
82
  accentColor: e.primary?.["500"],
81
83
  successColor: e.success?.["500"],
82
84
  warningColor: e.warning?.["500"],
83
85
  errorColor: e.error?.["500"]
84
86
  };
85
87
  return Object.fromEntries(
86
- Object.entries(t).filter(([o, r]) => r !== void 0)
88
+ Object.entries(a).filter(([i, r]) => r !== void 0)
87
89
  );
88
90
  }
89
91
  // Extract typography parameters from theme
90
92
  static extractTypography(e) {
91
93
  if (!e) return {};
92
- const t = {};
93
- if (e.fontFamily?.sans && (t.fontFamily = e.fontFamily.sans.join(", ")), e.fontSize?.base) {
94
- const o = e.fontSize.base, r = typeof o == "string" ? o : o[0], i = this.parseSize(r);
95
- i !== void 0 && (t.fontSize = i);
94
+ const a = {};
95
+ if (e.fontFamily?.sans && (a.fontFamily = e.fontFamily.sans.join(", ")), e.fontSize?.base) {
96
+ const i = e.fontSize.base, r = typeof i == "string" ? i : i[0], n = this.parseSize(r);
97
+ n !== void 0 && (a.fontSize = n);
96
98
  }
97
- return t;
99
+ return a;
98
100
  }
99
101
  // Helper to parse size values
100
102
  static parseSize(e) {
101
103
  if (!e) return;
102
- const t = parseFloat(e);
103
- if (!isNaN(t))
104
- return e.endsWith("rem") || e.endsWith("em") ? t * 16 : t;
104
+ const a = parseFloat(e);
105
+ if (!isNaN(a))
106
+ return e.endsWith("rem") || e.endsWith("em") ? a * 16 : a;
105
107
  }
106
108
  }
107
- f.registerModules([S]);
108
- const F = ({
109
- className: s,
110
- rowSelection: e,
111
- containerStyle: t = w,
112
- enableRowSelection: o = !1,
113
- mode: r,
114
- theme: i,
115
- ...n
109
+ const B = ({
110
+ ref: t,
111
+ initialState: e,
112
+ enableStatePersistence: a,
113
+ storageProvider: i,
114
+ storageKey: r,
115
+ onStateUpdated: n,
116
+ onGridReady: l,
117
+ onStateLoaded: u,
118
+ onStatePersisted: p
116
119
  }) => {
117
- const c = e || (o ? L : O), l = y.adapt(i, r);
118
- return /* @__PURE__ */ u(
119
- d,
120
- {
121
- ...E,
122
- ...n,
123
- theme: l,
124
- className: s,
125
- containerStyle: t,
126
- rowSelection: c
120
+ const f = L(!1), S = c(
121
+ async (s) => {
122
+ if (!(!a || !i || !r))
123
+ try {
124
+ await i.set(r, JSON.stringify(s)), p?.(s);
125
+ } catch (o) {
126
+ console.error("Failed to persist grid state:", o);
127
+ }
128
+ },
129
+ [a, i, r, p]
130
+ ), m = c(
131
+ (s) => {
132
+ t && (typeof t == "function" ? t(s) : t.current = s);
133
+ },
134
+ [t]
135
+ ), h = c(async () => {
136
+ if (!a || !i || !r)
137
+ return null;
138
+ try {
139
+ const s = await i.get(r);
140
+ return s ? JSON.parse(s) : null;
141
+ } catch (s) {
142
+ return console.error("Failed to load grid state:", s), null;
127
143
  }
144
+ }, [a, i, r]), d = c(
145
+ (s, o) => {
146
+ const w = C(o);
147
+ s.setState(w), u?.(w);
148
+ },
149
+ [u]
150
+ ), g = c(
151
+ async (s) => {
152
+ if (X(s))
153
+ return;
154
+ const o = C(s.state);
155
+ n?.({
156
+ ...s,
157
+ state: o
158
+ }), await S(o);
159
+ },
160
+ [n, S]
161
+ ), D = c(
162
+ async (s) => {
163
+ if (m(s.api), f.current) {
164
+ l?.(s);
165
+ return;
166
+ }
167
+ if (f.current = !0, e)
168
+ d(s.api, e);
169
+ else {
170
+ const o = await h();
171
+ o && d(s.api, o);
172
+ }
173
+ l?.(s);
174
+ },
175
+ [m, e, d, h, l]
128
176
  );
129
- };
177
+ return {
178
+ handleStateUpdated: g,
179
+ handleGridReady: D
180
+ };
181
+ }, C = (t) => ({
182
+ ...t,
183
+ rowSelection: void 0
184
+ }), X = (t) => t.sources?.includes("api") && !t.state.rowSelection && t.sources.length === 1;
185
+ I.registerModules([N]);
186
+ const $ = b(
187
+ ({
188
+ className: t,
189
+ rowSelection: e,
190
+ containerStyle: a = Q,
191
+ enableRowSelection: i = !1,
192
+ mode: r,
193
+ theme: n,
194
+ enableStatePersistence: l = !1,
195
+ storageProvider: u,
196
+ storageKey: p = "grid-state",
197
+ onStateUpdated: f,
198
+ onGridReady: S,
199
+ onStateLoaded: m,
200
+ onStatePersisted: h,
201
+ ...d
202
+ }, g) => {
203
+ const D = v(
204
+ () => e || (i ? Y : Z),
205
+ [e, i]
206
+ ), s = q.adapt(n, r), { initialState: o, ...w } = d, { handleStateUpdated: R, handleGridReady: _ } = B({
207
+ ref: g,
208
+ initialState: o,
209
+ enableStatePersistence: l,
210
+ storageProvider: u,
211
+ storageKey: p,
212
+ onStateUpdated: f,
213
+ onGridReady: S,
214
+ onStateLoaded: m,
215
+ onStatePersisted: h
216
+ });
217
+ return /* @__PURE__ */ E(
218
+ F,
219
+ {
220
+ ...P,
221
+ ...w,
222
+ theme: s,
223
+ className: t,
224
+ containerStyle: a,
225
+ rowSelection: D,
226
+ onStateUpdated: R,
227
+ onGridReady: _
228
+ }
229
+ );
230
+ }
231
+ );
232
+ $.displayName = "DataGrid";
233
+ const K = {
234
+ instances: {},
235
+ views: {}
236
+ }, O = k({
237
+ name: "dataGrid",
238
+ initialState: K,
239
+ reducers: {
240
+ setGridState: (t, e) => {
241
+ t.instances[e.payload.id] = e.payload.gridState;
242
+ },
243
+ saveView: (t, e) => {
244
+ const { id: a, name: i, gridState: r, description: n } = e.payload;
245
+ t.views[a] = {
246
+ id: a,
247
+ name: i,
248
+ state: r,
249
+ description: n,
250
+ createdAt: t.views[a]?.createdAt || Date.now(),
251
+ updatedAt: Date.now()
252
+ };
253
+ },
254
+ deleteView: (t, e) => {
255
+ delete t.views[e.payload];
256
+ },
257
+ clearGridState: (t, e) => {
258
+ delete t.instances[e.payload];
259
+ }
260
+ }
261
+ }), { setGridState: oe, saveView: ne, deleteView: ce, clearGridState: le } = O.actions, de = O.reducer, A = "dataGrid", ee = {
262
+ instances: {},
263
+ views: {}
264
+ }, T = (t) => t[A] ?? ee, ue = (t) => G(
265
+ [T],
266
+ (e) => e.instances[t]
267
+ ), pe = G(
268
+ [T],
269
+ (t) => Object.values(t.views)
270
+ ), fe = (t) => G(
271
+ [T],
272
+ (e) => e.views[t]
273
+ ), Se = (t) => t[A] !== void 0;
130
274
  export {
131
- T as DEFAULT_MIN_WIDTH,
132
- h as DEFAULT_PAGE_SIZE,
133
- g as DEFAULT_PAGE_SIZE_OPTIONS,
134
- D as DEFAULT_TOOLTIP_DELAY,
135
- C as DOM_LAYOUT_AUTO_HEIGHT,
136
- F as DataGrid,
137
- y as DataGridThemeAdapter,
138
- b as ROW_SELECTION_MULTI,
139
- _ as ROW_SELECTION_SINGLE
275
+ W as DEFAULT_MIN_WIDTH,
276
+ U as DEFAULT_PAGE_SIZE,
277
+ M as DEFAULT_PAGE_SIZE_OPTIONS,
278
+ V as DEFAULT_TOOLTIP_DELAY,
279
+ j as DOM_LAYOUT_AUTO_HEIGHT,
280
+ $ as DataGrid,
281
+ A as DataGridKey,
282
+ q as DataGridThemeAdapter,
283
+ J as ROW_SELECTION_MULTI,
284
+ H as ROW_SELECTION_SINGLE,
285
+ le as clearGridState,
286
+ de as dataGridReducer,
287
+ O as dataGridSlice,
288
+ ce as deleteView,
289
+ ne as saveView,
290
+ pe as selectAllViews,
291
+ T as selectDataGridSlice,
292
+ ue as selectGridInstance,
293
+ Se as selectHasDataGridSlice,
294
+ fe as selectView,
295
+ oe as setGridState
140
296
  };
@@ -1,3 +1,3 @@
1
- import { DataGridProps } from './datagrid.types';
2
- export declare const DataGrid: ({ className, rowSelection, containerStyle, enableRowSelection, mode, theme, ...props }: DataGridProps) => import("react/jsx-runtime").JSX.Element;
1
+ import { DataGridProps, GridApi } from './datagrid.types';
2
+ export declare const DataGrid: import('react').ForwardRefExoticComponent<DataGridProps & import('react').RefAttributes<GridApi<any> | null>>;
3
3
  //# sourceMappingURL=datagrid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datagrid.d.ts","sourceRoot":"","sources":["../../src/lib/datagrid.tsx"],"names":[],"mappings":"AAOA,OAAO,EAGL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAK1B,eAAO,MAAM,QAAQ,GAAI,wFAQtB,aAAa,4CAmBf,CAAC"}
1
+ {"version":3,"file":"datagrid.d.ts","sourceRoot":"","sources":["../../src/lib/datagrid.tsx"],"names":[],"mappings":"AAQA,OAAO,EAGL,aAAa,EACb,OAAO,EACR,MAAM,kBAAkB,CAAC;AAM1B,eAAO,MAAM,QAAQ,+GA6DpB,CAAC"}
@@ -1,12 +1,35 @@
1
1
  import { AgGridReactProps } from 'ag-grid-react';
2
2
  import { CSSProperties } from 'react';
3
3
  import { DataGridTheme, ThemeMode } from './theme';
4
+ import { GridState } from 'ag-grid-community';
5
+ export interface DataGridView {
6
+ id: string;
7
+ name: string;
8
+ state: GridState;
9
+ description?: string;
10
+ createdAt: number;
11
+ updatedAt: number;
12
+ }
13
+ export interface DataGridState {
14
+ instances: Record<string, GridState>;
15
+ views: Record<string, DataGridView>;
16
+ }
17
+ export interface StorageProvider {
18
+ get(key: string): Promise<string | null>;
19
+ set(key: string, value: string): Promise<void>;
20
+ remove(key: string): Promise<void>;
21
+ }
4
22
  export interface DataGridProps extends Omit<AgGridReactProps, 'theme'> {
23
+ enableStatePersistence?: boolean;
24
+ storageProvider?: StorageProvider;
25
+ storageKey?: string;
5
26
  className?: string;
6
27
  containerStyle?: CSSProperties;
7
28
  enableRowSelection?: boolean;
8
29
  mode?: ThemeMode;
9
30
  theme?: DataGridTheme;
31
+ onStateLoaded?: (state: GridState) => void;
32
+ onStatePersisted?: (state: GridState) => void;
10
33
  }
11
34
  export * from 'ag-grid-community';
12
35
  //# sourceMappingURL=datagrid.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datagrid.types.d.ts","sourceRoot":"","sources":["../../src/lib/datagrid.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAE7D,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"datagrid.types.d.ts","sourceRoot":"","sources":["../../src/lib/datagrid.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;IAEpE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IAGtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CAC/C;AAED,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './use-state-persistence.hooks';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { RefObject } from 'react';
2
+ import { GridApi, GridState, StateUpdatedEvent, GridReadyEvent } from 'ag-grid-community';
3
+ import { StorageProvider } from '../datagrid.types';
4
+ export interface UseGridStatePersistenceParams {
5
+ ref?: RefObject<GridApi | null> | ((instance: GridApi | null) => void) | null;
6
+ initialState?: GridState;
7
+ enableStatePersistence?: boolean;
8
+ storageProvider?: StorageProvider;
9
+ storageKey?: string;
10
+ onStateUpdated?: (event: StateUpdatedEvent) => void;
11
+ onGridReady?: (event: GridReadyEvent) => void;
12
+ onStateLoaded?: (state: GridState) => void;
13
+ onStatePersisted?: (state: GridState) => void;
14
+ }
15
+ export declare const useGridStatePersistence: ({ ref, initialState, enableStatePersistence, storageProvider, storageKey, onStateUpdated, onGridReady, onStateLoaded, onStatePersisted, }: UseGridStatePersistenceParams) => {
16
+ handleStateUpdated: (event: StateUpdatedEvent) => Promise<void>;
17
+ handleGridReady: (params: GridReadyEvent) => Promise<void>;
18
+ };
19
+ //# sourceMappingURL=use-state-persistence.hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-state-persistence.hooks.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks/use-state-persistence.hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,6BAA6B;IAC5C,GAAG,CAAC,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9E,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CAC/C;AAED,eAAO,MAAM,uBAAuB,GAAI,2IAUrC,6BAA6B;gCAyDd,iBAAiB;8BAsBhB,cAAc;CAgChC,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { DataGridState } from '../datagrid.types';
2
+ export declare const DataGridKey = "dataGrid";
3
+ export type RootStateWithDataGrid = {
4
+ [DataGridKey]: DataGridState;
5
+ };
6
+ export declare const selectDataGridSlice: (state: RootStateWithDataGrid) => DataGridState;
7
+ export declare const selectGridInstance: (id: string) => ((state: RootStateWithDataGrid) => import('ag-grid-community').GridState) & {
8
+ clearCache: () => void;
9
+ resultsCount: () => number;
10
+ resetResultsCount: () => void;
11
+ } & {
12
+ resultFunc: (resultFuncArgs_0: DataGridState) => import('ag-grid-community').GridState;
13
+ memoizedResultFunc: ((resultFuncArgs_0: DataGridState) => import('ag-grid-community').GridState) & {
14
+ clearCache: () => void;
15
+ resultsCount: () => number;
16
+ resetResultsCount: () => void;
17
+ };
18
+ lastResult: () => import('ag-grid-community').GridState;
19
+ dependencies: [(state: RootStateWithDataGrid) => DataGridState];
20
+ recomputations: () => number;
21
+ resetRecomputations: () => void;
22
+ dependencyRecomputations: () => number;
23
+ resetDependencyRecomputations: () => void;
24
+ } & {
25
+ memoize: typeof import('reselect').weakMapMemoize;
26
+ argsMemoize: typeof import('reselect').weakMapMemoize;
27
+ };
28
+ export declare const selectAllViews: ((state: RootStateWithDataGrid) => import('../datagrid.types').DataGridView[]) & {
29
+ clearCache: () => void;
30
+ resultsCount: () => number;
31
+ resetResultsCount: () => void;
32
+ } & {
33
+ resultFunc: (resultFuncArgs_0: DataGridState) => import('../datagrid.types').DataGridView[];
34
+ memoizedResultFunc: ((resultFuncArgs_0: DataGridState) => import('../datagrid.types').DataGridView[]) & {
35
+ clearCache: () => void;
36
+ resultsCount: () => number;
37
+ resetResultsCount: () => void;
38
+ };
39
+ lastResult: () => import('../datagrid.types').DataGridView[];
40
+ dependencies: [(state: RootStateWithDataGrid) => DataGridState];
41
+ recomputations: () => number;
42
+ resetRecomputations: () => void;
43
+ dependencyRecomputations: () => number;
44
+ resetDependencyRecomputations: () => void;
45
+ } & {
46
+ memoize: typeof import('reselect').weakMapMemoize;
47
+ argsMemoize: typeof import('reselect').weakMapMemoize;
48
+ };
49
+ export declare const selectView: (id: string) => ((state: RootStateWithDataGrid) => import('../datagrid.types').DataGridView) & {
50
+ clearCache: () => void;
51
+ resultsCount: () => number;
52
+ resetResultsCount: () => void;
53
+ } & {
54
+ resultFunc: (resultFuncArgs_0: DataGridState) => import('../datagrid.types').DataGridView;
55
+ memoizedResultFunc: ((resultFuncArgs_0: DataGridState) => import('../datagrid.types').DataGridView) & {
56
+ clearCache: () => void;
57
+ resultsCount: () => number;
58
+ resetResultsCount: () => void;
59
+ };
60
+ lastResult: () => import('../datagrid.types').DataGridView;
61
+ dependencies: [(state: RootStateWithDataGrid) => DataGridState];
62
+ recomputations: () => number;
63
+ resetRecomputations: () => void;
64
+ dependencyRecomputations: () => number;
65
+ resetDependencyRecomputations: () => void;
66
+ } & {
67
+ memoize: typeof import('reselect').weakMapMemoize;
68
+ argsMemoize: typeof import('reselect').weakMapMemoize;
69
+ };
70
+ export declare const selectHasDataGridSlice: (state: RootStateWithDataGrid) => boolean;
71
+ //# sourceMappingURL=datagrid.selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datagrid.selectors.d.ts","sourceRoot":"","sources":["../../../src/lib/store/datagrid.selectors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;CAC9B,CAAC;AASF,eAAO,MAAM,mBAAmB,GAAI,OAAO,qBAAqB,kBACpB,CAAC;AAG7C,eAAO,MAAM,kBAAkB,GAAI,IAAI,MAAM;;;;;;;;;;;;2BAJF,qBAAqB;;;;;;;;CAQ7D,CAAC;AAGJ,eAAO,MAAM,cAAc;;;;;;;;;;;;2BAXgB,qBAAqB;;;;;;;;CAc/D,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM;;;;;;;;;;;;2BAjBM,qBAAqB;;;;;;;;CAqB7D,CAAC;AAGJ,eAAO,MAAM,sBAAsB,GAAI,OAAO,qBAAqB,KAAG,OACpC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { PayloadAction } from '@reduxjs/toolkit';
2
+ import { GridState } from 'ag-grid-community';
3
+ import { DataGridState } from '../datagrid.types';
4
+ export declare const dataGridSlice: import('@reduxjs/toolkit').Slice<DataGridState, {
5
+ setGridState: (state: import('immer').WritableDraft<DataGridState>, action: PayloadAction<{
6
+ id: string;
7
+ gridState: GridState;
8
+ }>) => void;
9
+ saveView: (state: import('immer').WritableDraft<DataGridState>, action: PayloadAction<{
10
+ id: string;
11
+ name: string;
12
+ gridState: GridState;
13
+ description?: string;
14
+ }>) => void;
15
+ deleteView: (state: import('immer').WritableDraft<DataGridState>, action: PayloadAction<string>) => void;
16
+ clearGridState: (state: import('immer').WritableDraft<DataGridState>, action: PayloadAction<string>) => void;
17
+ }, "dataGrid", "dataGrid", import('@reduxjs/toolkit').SliceSelectors<DataGridState>>;
18
+ export declare const setGridState: import('@reduxjs/toolkit').ActionCreatorWithPayload<{
19
+ id: string;
20
+ gridState: GridState;
21
+ }, "dataGrid/setGridState">, saveView: import('@reduxjs/toolkit').ActionCreatorWithPayload<{
22
+ id: string;
23
+ name: string;
24
+ gridState: GridState;
25
+ description?: string;
26
+ }, "dataGrid/saveView">, deleteView: import('@reduxjs/toolkit').ActionCreatorWithPayload<string, "dataGrid/deleteView">, clearGridState: import('@reduxjs/toolkit').ActionCreatorWithPayload<string, "dataGrid/clearGridState">;
27
+ export declare const dataGridReducer: import('redux').Reducer<DataGridState>;
28
+ //# sourceMappingURL=datagrid.slice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datagrid.slice.d.ts","sourceRoot":"","sources":["../../../src/lib/store/datagrid.slice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,eAAO,MAAM,aAAa;gFAMZ,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;4EAOnD,aAAa,CAAC;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;8EAawB,aAAa,CAAC,MAAM,CAAC;kFAIjB,aAAa,CAAC,MAAM,CAAC;oFAIvD,CAAC;AAEH,eAAO,MAAQ,YAAY;QAnCO,MAAM;eAAa,SAAS;6BAmCjC,QAAQ;QA3BzB,MAAM;UACJ,MAAM;eACD,SAAS;kBACN,MAAM;yBAwBW,UAAU,sFAAE,cAAc,wFAC1C,CAAC;AAExB,eAAO,MAAM,eAAe,wCAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './datagrid.slice';
2
+ export * from './datagrid.selectors';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-kingdom/shared-frontend-ui-datagrid",
3
- "version": "0.0.2-0",
3
+ "version": "0.0.2-2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -34,7 +34,9 @@
34
34
  "ag-grid-community": "^34.3.1"
35
35
  },
36
36
  "peerDependencies": {
37
+ "@reduxjs/toolkit": "^2.8.2",
37
38
  "react": "^19.0.0",
38
- "react-dom": "^19.0.0"
39
+ "react-dom": "^19.0.0",
40
+ "react-redux": "^9.2.0"
39
41
  }
40
42
  }