@inandu-solutions/grid-react 0.1.0 → 0.1.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.
Files changed (38) hide show
  1. package/README.md +62 -37
  2. package/package.json +4 -3
  3. package/dist/components/InanduGrid.d.ts +0 -97
  4. package/dist/core/aggregate.d.ts +0 -5
  5. package/dist/core/columns.d.ts +0 -11
  6. package/dist/core/constants.d.ts +0 -14
  7. package/dist/core/export/csv.d.ts +0 -2
  8. package/dist/core/export/download.d.ts +0 -2
  9. package/dist/core/export/markup.d.ts +0 -2
  10. package/dist/core/export/pdf.d.ts +0 -3
  11. package/dist/core/filter.d.ts +0 -26
  12. package/dist/core/format.d.ts +0 -24
  13. package/dist/core/i18n/en.d.ts +0 -46
  14. package/dist/core/i18n/es.d.ts +0 -46
  15. package/dist/core/i18n/fr.d.ts +0 -46
  16. package/dist/core/i18n/index.d.ts +0 -8
  17. package/dist/core/i18n/it.d.ts +0 -46
  18. package/dist/core/i18n/zh.d.ts +0 -46
  19. package/dist/core/index.d.ts +0 -16
  20. package/dist/core/parse.d.ts +0 -14
  21. package/dist/core/sort.d.ts +0 -1
  22. package/dist/core/tree.d.ts +0 -28
  23. package/dist/core/types.d.ts +0 -46
  24. package/dist/hooks/useInanduGrid.d.ts +0 -187
  25. package/dist/html2canvas-BE2ZQbtv.js +0 -4021
  26. package/dist/html2canvas-o9-HsXBE.cjs +0 -5
  27. package/dist/inandu-grid-react.cjs +0 -2
  28. package/dist/inandu-grid-react.js +0 -1656
  29. package/dist/index.d.ts +0 -11
  30. package/dist/index.es-BqzICVsf.cjs +0 -5
  31. package/dist/index.es-CPZG9pTc.js +0 -5752
  32. package/dist/jspdf.es.min-D_8zJvYC.cjs +0 -78
  33. package/dist/jspdf.es.min-DiTFVZBc.js +0 -18250
  34. package/dist/purify.es-3_UFdOhH.js +0 -805
  35. package/dist/purify.es-DXMFKXT6.cjs +0 -3
  36. package/dist/utils/exporters.d.ts +0 -29
  37. package/dist/utils/measureColumn.d.ts +0 -15
  38. package/dist/utils/translate.d.ts +0 -10
@@ -1,1656 +0,0 @@
1
- import { useEffect as e, useMemo as t, useRef as n, useState as r } from "react";
2
- import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
3
- //#region src/core/format.ts
4
- var s = /^(\d+)?\.(\d+)-(\d+)$/;
5
- function c(e, t, n) {
6
- let r = {}, i = n ? s.exec(n) : null;
7
- return i ? (i[1] && (r.minimumIntegerDigits = Number(i[1])), r.minimumFractionDigits = Number(i[2]), r.maximumFractionDigits = Number(i[3])) : r.maximumFractionDigits = 3, new Intl.NumberFormat(t || void 0, r).format(e);
8
- }
9
- function l(e) {
10
- return e instanceof Date ? e : typeof e == "string" ? new Date(e.replace(/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2})/, "$1T$2")) : new Date(e);
11
- }
12
- var u = /YYYY|sss|MM|DD|HH|mm|ss/g;
13
- function d(e, t) {
14
- let n = (e, t = 2) => String(e).padStart(t, "0");
15
- return t.replace(u, (t) => {
16
- switch (t) {
17
- case "YYYY": return String(e.getFullYear());
18
- case "MM": return n(e.getMonth() + 1);
19
- case "DD": return n(e.getDate());
20
- case "HH": return n(e.getHours());
21
- case "mm": return n(e.getMinutes());
22
- case "ss": return n(e.getSeconds());
23
- case "sss": return n(e.getMilliseconds(), 3);
24
- default: return t;
25
- }
26
- });
27
- }
28
- function f(e, t, n, r, i = c) {
29
- if (e == null) return "";
30
- switch (t) {
31
- case "number": {
32
- let t = typeof e == "number" ? e : Number(e);
33
- return Number.isNaN(t) ? String(e) : i(t, r, n || void 0);
34
- }
35
- case "date": {
36
- let t = l(e);
37
- return Number.isNaN(t.getTime()) ? String(e) : d(t, n || "YYYY-MM-DD");
38
- }
39
- case "boolean": {
40
- let [t, r] = (n || "true|false").split("|");
41
- return e ? t : r;
42
- }
43
- default: return String(e);
44
- }
45
- }
46
- //#endregion
47
- //#region src/core/sort.ts
48
- function p(e, t, n) {
49
- return e == null && t == null ? 0 : e == null ? -1 : t == null ? 1 : e instanceof Date && t instanceof Date ? e.getTime() - t.getTime() : typeof e == "number" && typeof t == "number" ? e - t : String(e).localeCompare(String(t), n || void 0);
50
- }
51
- //#endregion
52
- //#region src/core/tree.ts
53
- function ee(e, t) {
54
- let { getChildren: n, isExpanded: r, match: i, compare: a } = t, o = [], s = /* @__PURE__ */ new Map(), c = (e) => {
55
- if (!i) return !0;
56
- let t = s.get(e);
57
- if (t !== void 0) return t;
58
- let r = i(e);
59
- if (!r) {
60
- let t = n(e);
61
- r = !!t && t.some(c);
62
- }
63
- return s.set(e, r), r;
64
- }, l = (e, t) => {
65
- let s = i ? e.filter(c) : [...e];
66
- a && (s = s.slice().sort(a));
67
- for (let e of s) {
68
- let a = n(e), s = (a ? i ? a.filter(c) : a : []).length > 0, u = s && (i ? !0 : r(e));
69
- o.push({
70
- row: e,
71
- depth: t,
72
- expandable: s,
73
- expanded: u
74
- }), u && l(a, t + 1);
75
- }
76
- };
77
- return l(e, 0), o;
78
- }
79
- function te(e, t) {
80
- let n = [], r = (e) => {
81
- for (let i of e) {
82
- n.push(i);
83
- let e = t(i);
84
- e && e.length && r(e);
85
- }
86
- };
87
- return r(e), n;
88
- }
89
- //#endregion
90
- //#region src/core/filter.ts
91
- function m(e) {
92
- return e ? Object.values(e).some((e) => Array.isArray(e) ? !0 : !!e) : !1;
93
- }
94
- function h(e, t, n, r, i) {
95
- let a = t[e.field()];
96
- if (n.values !== void 0) return n.values.includes(f(a, e.type(), e.format(), r, i));
97
- switch (e.type()) {
98
- case "number": {
99
- let e = !!n.min, t = !!n.max;
100
- if (!e && !t) return !0;
101
- let r = typeof a == "number" ? a : Number(a);
102
- return !(a == null || Number.isNaN(r) || e && r < Number(n.min) || t && r > Number(n.max));
103
- }
104
- case "date": {
105
- let e = !!n.from, t = !!n.to;
106
- if (!e && !t) return !0;
107
- if (a == null) return !1;
108
- let r = l(a);
109
- if (Number.isNaN(r.getTime()) || e && r < new Date(n.from)) return !1;
110
- if (t) {
111
- let e = new Date(n.to);
112
- if (e.setHours(23, 59, 59, 999), r > e) return !1;
113
- }
114
- return !0;
115
- }
116
- case "boolean": return !n.bool || !!a == (n.bool === "true");
117
- default: {
118
- let t = (n.text ?? "").trim().toLowerCase();
119
- return !t || f(a, e.type(), e.format(), r, i).toLowerCase().includes(t);
120
- }
121
- }
122
- }
123
- //#endregion
124
- //#region src/core/aggregate.ts
125
- var g = {
126
- sum: "Σ",
127
- avg: "x̄",
128
- min: "min",
129
- max: "max",
130
- count: "#"
131
- };
132
- function _(e, t) {
133
- let n = {};
134
- for (let r of t) {
135
- let t = r.field(), i = r.aggregate();
136
- if (i === "count") {
137
- n[t] = e.length;
138
- continue;
139
- }
140
- let a = e.map((e) => e[t]).filter((e) => e != null && e !== "" && typeof e != "boolean").map((e) => Number(e)).filter((e) => Number.isFinite(e));
141
- if (a.length === 0) {
142
- n[t] = 0;
143
- continue;
144
- }
145
- switch (i) {
146
- case "sum":
147
- n[t] = a.reduce((e, t) => e + t, 0);
148
- break;
149
- case "avg":
150
- n[t] = a.reduce((e, t) => e + t, 0) / a.length;
151
- break;
152
- case "min":
153
- n[t] = a.reduce((e, t) => t < e ? t : e, Infinity);
154
- break;
155
- case "max": n[t] = a.reduce((e, t) => t > e ? t : e, -Infinity);
156
- }
157
- }
158
- return n;
159
- }
160
- //#endregion
161
- //#region src/core/parse.ts
162
- function v(e, t) {
163
- switch (t) {
164
- case "number": {
165
- if (e === "" || e === void 0) return;
166
- let t = Number(e);
167
- return Number.isNaN(t) ? void 0 : t;
168
- }
169
- case "date": {
170
- let t = typeof e == "string" ? /^(\d{4})-(\d{2})-(\d{2})$/.exec(e) : null, n = t ? new Date(Number(t[1]), Number(t[2]) - 1, Number(t[3])) : new Date(e);
171
- return Number.isNaN(n.getTime()) ? void 0 : n;
172
- }
173
- case "boolean": return !!e;
174
- default: return e;
175
- }
176
- }
177
- function ne(e, t) {
178
- return t === "boolean" ? e.trim().toLowerCase() === "true" : v(e, t);
179
- }
180
- //#endregion
181
- //#region src/core/export/csv.ts
182
- function re(e) {
183
- return /[",\r\n]/.test(e) ? "\"" + e.replace(/"/g, "\"\"") + "\"" : e;
184
- }
185
- //#endregion
186
- //#region src/core/export/markup.ts
187
- function y(e) {
188
- return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
189
- }
190
- //#endregion
191
- //#region src/core/export/pdf.ts
192
- function ie(e, t, n) {
193
- if (e.getTextWidth(t) <= n) return t;
194
- let r = t;
195
- for (; r.length > 0 && e.getTextWidth(r + "…") > n;) r = r.slice(0, -1);
196
- return r + "…";
197
- }
198
- //#endregion
199
- //#region src/core/export/download.ts
200
- function b(e, t, n) {
201
- let r = e instanceof Blob ? e : new Blob([e], { type: n }), i = URL.createObjectURL(r), a = document.createElement("a");
202
- a.href = i, a.download = t, a.click(), URL.revokeObjectURL(i);
203
- }
204
- //#endregion
205
- //#region src/core/i18n/en.ts
206
- var x = {
207
- MsgNoData: "No data",
208
- MsgFirstPage: "First page",
209
- MsgPreviousPage: "Previous page",
210
- MsgNextPage: "Next page",
211
- MsgLastPage: "Last page",
212
- MsgSortBy: "Sort by {{column}}",
213
- MsgPageOf: "Page {{page}} of {{total}}",
214
- MsgFilterPlaceholder: "Search",
215
- MsgFilterColumn: "Filter {{column}}",
216
- MsgFilterMin: "Min",
217
- MsgFilterMax: "Max",
218
- MsgFilterFrom: "From",
219
- MsgFilterTo: "To",
220
- MsgAll: "All",
221
- MsgCancelFilter: "Cancel filter",
222
- MsgCancelAllFilters: "Clear filters",
223
- MsgGroupByHint: "Drag a column header here to group by it",
224
- MsgGroupedBy: "Grouped by {{column}}",
225
- MsgGroupHeader: "{{column}}: {{value}} ({{count}})",
226
- MsgCancelGrouping: "Cancel grouping",
227
- MsgSelectAll: "Select all rows",
228
- MsgSelectRow: "Select row {{index}}",
229
- MsgExportCsv: "Export CSV",
230
- MsgExportExcel: "Export Excel",
231
- MsgExportPdf: "Export PDF",
232
- MsgPrint: "Print",
233
- MsgToggleColumns: "Columns",
234
- MsgToggleColumn: "Toggle {{column}}",
235
- MsgEditCell: "Edit {{column}}",
236
- MsgEditRow: "Edit",
237
- MsgSaveRow: "Save",
238
- MsgCancelRowEdit: "Cancel",
239
- MsgDeleteRow: "Delete",
240
- MsgAddRow: "Add row",
241
- MsgLoading: "Loading…",
242
- MsgDragRow: "Drag to reorder row",
243
- MsgAutosizeColumn: "Double-click to fit column to content",
244
- MsgExpandDetail: "Expand row details",
245
- MsgCollapseDetail: "Collapse row details",
246
- MsgDeleteSelected: "Delete selected ({{count}})",
247
- MsgValidationRequired: "This field is required",
248
- MsgValidationMin: "Must be at least {{min}}",
249
- MsgValidationMax: "Must be at most {{max}}",
250
- MsgValidationPattern: "Invalid format"
251
- }, ae = {
252
- MsgNoData: "Sin datos",
253
- MsgFirstPage: "Primera página",
254
- MsgPreviousPage: "Página anterior",
255
- MsgNextPage: "Página siguiente",
256
- MsgLastPage: "Última página",
257
- MsgSortBy: "Ordenar por {{column}}",
258
- MsgPageOf: "Página {{page}} de {{total}}",
259
- MsgFilterPlaceholder: "Buscar",
260
- MsgFilterColumn: "Filtrar {{column}}",
261
- MsgFilterMin: "Mín",
262
- MsgFilterMax: "Máx",
263
- MsgFilterFrom: "Desde",
264
- MsgFilterTo: "Hasta",
265
- MsgAll: "Todos",
266
- MsgCancelFilter: "Cancelar filtro",
267
- MsgCancelAllFilters: "Cancelar filtros",
268
- MsgGroupByHint: "Arrastra el encabezado de una columna aquí para agrupar por ella",
269
- MsgGroupedBy: "Agrupado por {{column}}",
270
- MsgGroupHeader: "{{column}}: {{value}} ({{count}})",
271
- MsgCancelGrouping: "Cancelar agrupación",
272
- MsgSelectAll: "Seleccionar todas las filas",
273
- MsgSelectRow: "Seleccionar fila {{index}}",
274
- MsgExportCsv: "Exportar CSV",
275
- MsgExportExcel: "Exportar Excel",
276
- MsgExportPdf: "Exportar PDF",
277
- MsgPrint: "Imprimir",
278
- MsgToggleColumns: "Columnas",
279
- MsgToggleColumn: "Mostrar u ocultar {{column}}",
280
- MsgEditCell: "Editar {{column}}",
281
- MsgEditRow: "Editar",
282
- MsgSaveRow: "Guardar",
283
- MsgCancelRowEdit: "Cancelar",
284
- MsgDeleteRow: "Eliminar",
285
- MsgAddRow: "Agregar fila",
286
- MsgLoading: "Cargando…",
287
- MsgDragRow: "Arrastrar para reordenar fila",
288
- MsgAutosizeColumn: "Doble clic para ajustar la columna al contenido",
289
- MsgExpandDetail: "Expandir detalle de fila",
290
- MsgCollapseDetail: "Contraer detalle de fila",
291
- MsgDeleteSelected: "Eliminar seleccionados ({{count}})",
292
- MsgValidationRequired: "Este campo es obligatorio",
293
- MsgValidationMin: "Debe ser como mínimo {{min}}",
294
- MsgValidationMax: "Debe ser como máximo {{max}}",
295
- MsgValidationPattern: "Formato inválido"
296
- }, S = {
297
- MsgNoData: "Aucune donnée",
298
- MsgFirstPage: "Première page",
299
- MsgPreviousPage: "Page précédente",
300
- MsgNextPage: "Page suivante",
301
- MsgLastPage: "Dernière page",
302
- MsgSortBy: "Trier par {{column}}",
303
- MsgPageOf: "Page {{page}} sur {{total}}",
304
- MsgFilterPlaceholder: "Rechercher",
305
- MsgFilterColumn: "Filtrer {{column}}",
306
- MsgFilterMin: "Min",
307
- MsgFilterMax: "Max",
308
- MsgFilterFrom: "De",
309
- MsgFilterTo: "À",
310
- MsgAll: "Tous",
311
- MsgCancelFilter: "Annuler le filtre",
312
- MsgCancelAllFilters: "Effacer les filtres",
313
- MsgGroupByHint: "Faites glisser l'en-tête d'une colonne ici pour regrouper par celle-ci",
314
- MsgGroupedBy: "Regroupé par {{column}}",
315
- MsgGroupHeader: "{{column}} : {{value}} ({{count}})",
316
- MsgCancelGrouping: "Annuler le regroupement",
317
- MsgSelectAll: "Sélectionner toutes les lignes",
318
- MsgSelectRow: "Sélectionner la ligne {{index}}",
319
- MsgExportCsv: "Exporter CSV",
320
- MsgExportExcel: "Exporter Excel",
321
- MsgExportPdf: "Exporter PDF",
322
- MsgPrint: "Imprimer",
323
- MsgToggleColumns: "Colonnes",
324
- MsgToggleColumn: "Afficher/masquer {{column}}",
325
- MsgEditCell: "Modifier {{column}}",
326
- MsgEditRow: "Modifier",
327
- MsgSaveRow: "Enregistrer",
328
- MsgCancelRowEdit: "Annuler",
329
- MsgDeleteRow: "Supprimer",
330
- MsgAddRow: "Ajouter une ligne",
331
- MsgLoading: "Chargement…",
332
- MsgDragRow: "Glisser pour réordonner la ligne",
333
- MsgAutosizeColumn: "Double-cliquez pour ajuster la colonne au contenu",
334
- MsgExpandDetail: "Développer les détails de la ligne",
335
- MsgCollapseDetail: "Réduire les détails de la ligne",
336
- MsgDeleteSelected: "Supprimer la sélection ({{count}})",
337
- MsgValidationRequired: "Ce champ est obligatoire",
338
- MsgValidationMin: "Doit être au moins {{min}}",
339
- MsgValidationMax: "Doit être au plus {{max}}",
340
- MsgValidationPattern: "Format invalide"
341
- }, C = {
342
- MsgNoData: "Nessun dato",
343
- MsgFirstPage: "Prima pagina",
344
- MsgPreviousPage: "Pagina precedente",
345
- MsgNextPage: "Pagina successiva",
346
- MsgLastPage: "Ultima pagina",
347
- MsgSortBy: "Ordina per {{column}}",
348
- MsgPageOf: "Pagina {{page}} di {{total}}",
349
- MsgFilterPlaceholder: "Cerca",
350
- MsgFilterColumn: "Filtra {{column}}",
351
- MsgFilterMin: "Min",
352
- MsgFilterMax: "Max",
353
- MsgFilterFrom: "Da",
354
- MsgFilterTo: "A",
355
- MsgAll: "Tutti",
356
- MsgCancelFilter: "Annulla filtro",
357
- MsgCancelAllFilters: "Cancella filtri",
358
- MsgGroupByHint: "Trascina qui l'intestazione di una colonna per raggruppare per essa",
359
- MsgGroupedBy: "Raggruppato per {{column}}",
360
- MsgGroupHeader: "{{column}}: {{value}} ({{count}})",
361
- MsgCancelGrouping: "Annulla raggruppamento",
362
- MsgSelectAll: "Seleziona tutte le righe",
363
- MsgSelectRow: "Seleziona riga {{index}}",
364
- MsgExportCsv: "Esporta CSV",
365
- MsgExportExcel: "Esporta Excel",
366
- MsgExportPdf: "Esporta PDF",
367
- MsgPrint: "Stampa",
368
- MsgToggleColumns: "Colonne",
369
- MsgToggleColumn: "Mostra/nascondi {{column}}",
370
- MsgEditCell: "Modifica {{column}}",
371
- MsgEditRow: "Modifica",
372
- MsgSaveRow: "Salva",
373
- MsgCancelRowEdit: "Annulla",
374
- MsgDeleteRow: "Elimina",
375
- MsgAddRow: "Aggiungi riga",
376
- MsgLoading: "Caricamento…",
377
- MsgDragRow: "Trascina per riordinare la riga",
378
- MsgAutosizeColumn: "Doppio clic per adattare la colonna al contenuto",
379
- MsgExpandDetail: "Espandi dettagli riga",
380
- MsgCollapseDetail: "Comprimi dettagli riga",
381
- MsgDeleteSelected: "Elimina selezionati ({{count}})",
382
- MsgValidationRequired: "Questo campo è obbligatorio",
383
- MsgValidationMin: "Deve essere almeno {{min}}",
384
- MsgValidationMax: "Deve essere al massimo {{max}}",
385
- MsgValidationPattern: "Formato non valido"
386
- }, oe = {
387
- MsgNoData: "暂无数据",
388
- MsgFirstPage: "首页",
389
- MsgPreviousPage: "上一页",
390
- MsgNextPage: "下一页",
391
- MsgLastPage: "末页",
392
- MsgSortBy: "按{{column}}排序",
393
- MsgPageOf: "第 {{page}} 页,共 {{total}} 页",
394
- MsgFilterPlaceholder: "搜索",
395
- MsgFilterColumn: "筛选{{column}}",
396
- MsgFilterMin: "最小",
397
- MsgFilterMax: "最大",
398
- MsgFilterFrom: "从",
399
- MsgFilterTo: "到",
400
- MsgAll: "全部",
401
- MsgCancelFilter: "取消筛选",
402
- MsgCancelAllFilters: "清除所有筛选",
403
- MsgGroupByHint: "将列标题拖到此处以按其分组",
404
- MsgGroupedBy: "按{{column}}分组",
405
- MsgGroupHeader: "{{column}}: {{value}} ({{count}})",
406
- MsgCancelGrouping: "取消分组",
407
- MsgSelectAll: "选择所有行",
408
- MsgSelectRow: "选择第 {{index}} 行",
409
- MsgExportCsv: "导出 CSV",
410
- MsgExportExcel: "导出 Excel",
411
- MsgExportPdf: "导出 PDF",
412
- MsgPrint: "打印",
413
- MsgToggleColumns: "列",
414
- MsgToggleColumn: "显示/隐藏{{column}}",
415
- MsgEditCell: "编辑{{column}}",
416
- MsgEditRow: "编辑",
417
- MsgSaveRow: "保存",
418
- MsgCancelRowEdit: "取消",
419
- MsgDeleteRow: "删除",
420
- MsgAddRow: "添加行",
421
- MsgLoading: "加载中…",
422
- MsgDragRow: "拖动以重新排序行",
423
- MsgAutosizeColumn: "双击以使列适应内容",
424
- MsgExpandDetail: "展开行详情",
425
- MsgCollapseDetail: "收起行详情",
426
- MsgDeleteSelected: "删除所选 ({{count}})",
427
- MsgValidationRequired: "此字段为必填项",
428
- MsgValidationMin: "不得小于 {{min}}",
429
- MsgValidationMax: "不得大于 {{max}}",
430
- MsgValidationPattern: "格式无效"
431
- }, w = {
432
- en: x,
433
- es: ae,
434
- fr: S,
435
- it: C,
436
- zh: oe
437
- };
438
- //#endregion
439
- //#region src/utils/translate.ts
440
- function T(e, t) {
441
- return t ? e.replace(/\{\{(\w+)\}\}/g, (e, n) => n in t ? String(t[n]) : e) : e;
442
- }
443
- function se(e) {
444
- let t = w[e.split("-")[0]] ?? x;
445
- return (e, n) => T(t[e] ?? x[e], n);
446
- }
447
- //#endregion
448
- //#region src/hooks/useInanduGrid.ts
449
- function ce(e) {
450
- return {
451
- field: () => e.field,
452
- type: () => e.type ?? "string",
453
- format: () => e.format ?? "",
454
- order: () => e.order,
455
- aggregate: () => e.aggregate ?? ""
456
- };
457
- }
458
- function E({ rows: i, columns: a, locale: o = "en", lang: s, pageSize: c = 0, selectable: u = !1, deleteConfirmMessage: d, bulkDeleteConfirmMessage: g, onRowSave: re, onRowCreate: y, onRowDelete: ie, onRowsDelete: b, onCellsPaste: x, onRowOrderChange: ae, treeChildrenKey: S, treeDefaultExpanded: C = "none", singleDetailExpand: oe = !1, virtualScroll: w = !1 }) {
459
- let [T, E] = r([]), [D, O] = r({}), [k, le] = r(""), [A, ue] = r(0), [j, de] = r(void 0), [M, fe] = r(/* @__PURE__ */ new Set()), [N, pe] = r(void 0), [me, he] = r(!1), [P, F] = r({}), [I, L] = r({}), [ge, _e] = r(!1), [R, ve] = r(/* @__PURE__ */ new Set()), [ye, be] = r(void 0), [xe, z] = r(void 0), [B, Se] = r({}), [Ce, we] = r(void 0), [Te, V] = r(/* @__PURE__ */ new Set()), [Ee, De] = r(/* @__PURE__ */ new Set()), Oe = n(void 0), H = t(() => se(s ?? o), [s, o]), U = t(() => {
460
- if (!ye) return a;
461
- let e = new Map(a.map((e) => [e.field, e])), t = [];
462
- for (let n of ye) {
463
- let r = e.get(n);
464
- r && (t.push(r), e.delete(n));
465
- }
466
- return t.push(...e.values()), t;
467
- }, [a, ye]), W = t(() => R.size === 0 ? U : U.filter((e) => !R.has(e.field)), [U, R]), G = t(() => U.filter((e) => e.hideable !== !1), [U]);
468
- function ke(e) {
469
- let t = U.map((e) => e.field), n = new Set(t), r = e.filter((e) => n.has(e)), i = new Set(r), a = t.filter((e) => !i.has(e));
470
- be([...r, ...a]);
471
- }
472
- function Ae(e) {
473
- z(e);
474
- }
475
- function je(e) {
476
- let t = xe;
477
- if (z(void 0), !t || t === e) return;
478
- let n = U.find((e) => e.field === t);
479
- if (!n || n.reorder === !1) return;
480
- let r = U.map((e) => e.field), i = r.indexOf(t), a = r.indexOf(e);
481
- i !== -1 && a !== -1 && (r.splice(i, 1), i < a && a--, r.splice(a, 0, t), ke(r));
482
- }
483
- function Me(e) {
484
- return R.has(e);
485
- }
486
- function Ne(e) {
487
- if (R.has(e)) {
488
- ve((t) => {
489
- let n = new Set(t);
490
- return n.delete(e), n;
491
- });
492
- return;
493
- }
494
- W.length <= 1 || ve((t) => new Set(t).add(e));
495
- }
496
- let Pe = t(() => W.filter((e) => e.editable), [W]);
497
- function Fe(e) {
498
- ue(0), le(e);
499
- }
500
- let K = t(() => new Map(W.map((e) => [e.field, ce(e)])), [W]), Ie = t(() => W.filter((e) => e.aggregate).map((e) => K.get(e.field)), [W, K]);
501
- function Le(e, t) {
502
- ue(0), O((n) => ({
503
- ...n,
504
- [e]: t
505
- }));
506
- }
507
- let q = t(() => {
508
- let e = i, t = k.trim().toLowerCase();
509
- t && (e = e.filter((e) => W.some((n) => {
510
- let r = K.get(n.field);
511
- return f(e[n.field], r.type(), r.format(), o).toLowerCase().includes(t);
512
- })));
513
- let n = Object.entries(D).filter(([, e]) => m(e));
514
- return n.length > 0 && (e = e.filter((e) => n.every(([t, n]) => {
515
- let r = K.get(t);
516
- return !r || h(r, e, n, o);
517
- }))), T.length > 0 && (e = [...e].sort((e, t) => {
518
- for (let { field: n, direction: r } of T) {
519
- let i = r === "asc" ? 1 : -1, a = p(e[n], t[n], o) * i;
520
- if (a !== 0) return a;
521
- }
522
- return 0;
523
- })), e;
524
- }, [
525
- i,
526
- W,
527
- K,
528
- k,
529
- D,
530
- T,
531
- o
532
- ]), Re = t(() => {
533
- if (!j) return null;
534
- let e = K.get(j);
535
- if (!e) return null;
536
- let t = /* @__PURE__ */ new Map();
537
- for (let n of q) {
538
- let r = f(n[j], e.type(), e.format(), o), i = t.get(r);
539
- i ? i.push(n) : t.set(r, [n]);
540
- }
541
- return Array.from(t.entries()).map(([e, t]) => ({
542
- key: e,
543
- rows: t,
544
- aggregates: _(t, Ie)
545
- }));
546
- }, [
547
- q,
548
- j,
549
- K,
550
- Ie,
551
- o
552
- ]), ze = t(() => _(q, Ie), [q, Ie]), J = !!S && !j && !w;
553
- function Y(e) {
554
- let t = S ? e[S] : void 0;
555
- return Array.isArray(t) ? t : void 0;
556
- }
557
- let Be = t(() => {
558
- if (!J) return [];
559
- let e = k.trim().toLowerCase(), t = Object.entries(D).filter(([, e]) => m(e));
560
- return ee(i, {
561
- getChildren: Y,
562
- isExpanded: (e) => Te.has(e),
563
- match: e || t.length > 0 ? (n) => e && !W.some((t) => {
564
- let r = K.get(t.field);
565
- return f(n[t.field], r.type(), r.format(), o).toLowerCase().includes(e);
566
- }) ? !1 : t.every(([e, t]) => {
567
- let r = K.get(e);
568
- return !r || h(r, n, t, o);
569
- }) : void 0,
570
- compare: T.length > 0 ? (e, t) => {
571
- for (let { field: n, direction: r } of T) {
572
- let i = p(e[n], t[n], o) * (r === "asc" ? 1 : -1);
573
- if (i !== 0) return i;
574
- }
575
- return 0;
576
- } : void 0
577
- });
578
- }, [
579
- J,
580
- i,
581
- S,
582
- W,
583
- K,
584
- k,
585
- D,
586
- T,
587
- Te,
588
- o
589
- ]);
590
- e(() => {
591
- if (!J || Oe.current === i) return;
592
- if (Oe.current = i, C === "none") {
593
- V(/* @__PURE__ */ new Set());
594
- return;
595
- }
596
- let e = /* @__PURE__ */ new Set();
597
- if (C === "all") for (let t of te(i, Y)) Y(t)?.length && e.add(t);
598
- else {
599
- let t = (n, r) => {
600
- if (!(r >= C)) for (let i of n) {
601
- let n = Y(i);
602
- n?.length && (e.add(i), t(n, r + 1));
603
- }
604
- };
605
- t(i, 0);
606
- }
607
- V(e);
608
- }, [
609
- J,
610
- i,
611
- C
612
- ]);
613
- function Ve(e) {
614
- return Te.has(e);
615
- }
616
- function He(e) {
617
- V((t) => {
618
- let n = new Set(t);
619
- return n.has(e) ? n.delete(e) : n.add(e), n;
620
- });
621
- }
622
- function Ue(e) {
623
- if (!e) {
624
- V(/* @__PURE__ */ new Set());
625
- return;
626
- }
627
- let t = /* @__PURE__ */ new Set();
628
- for (let e of te(i, Y)) Y(e)?.length && t.add(e);
629
- V(t);
630
- }
631
- let We = w && !j, Ge = c > 0 && !j && !J && !We, Ke = Ge ? Math.max(1, Math.ceil(q.length / c)) : 1, qe = Math.min(A, Ke - 1), Je = t(() => {
632
- if (J) return Be.map((e) => e.row);
633
- if (!Ge) return q;
634
- let e = qe * c;
635
- return q.slice(e, e + c);
636
- }, [
637
- J,
638
- Be,
639
- q,
640
- Ge,
641
- c,
642
- qe
643
- ]), X = j ? q : Je;
644
- function Ye(e) {
645
- return M.has(e);
646
- }
647
- function Xe(e) {
648
- fe((t) => {
649
- let n = new Set(t);
650
- return n.has(e) ? n.delete(e) : n.add(e), n;
651
- });
652
- }
653
- let Ze = X.length > 0 && X.every((e) => M.has(e)), Qe = !Ze && X.some((e) => M.has(e));
654
- function $e() {
655
- let e = !Ze;
656
- fe((t) => {
657
- let n = new Set(t);
658
- for (let t of X) e ? n.add(t) : n.delete(t);
659
- return n;
660
- });
661
- }
662
- function et() {
663
- fe(/* @__PURE__ */ new Set());
664
- }
665
- function tt(e, t = !1) {
666
- ue(0), E((n) => {
667
- let r = n.findIndex((t) => t.field === e);
668
- if (t) {
669
- if (r === -1) return [...n, {
670
- field: e,
671
- direction: "asc"
672
- }];
673
- let t = [...n];
674
- return t[r] = {
675
- field: e,
676
- direction: n[r].direction === "asc" ? "desc" : "asc"
677
- }, t;
678
- }
679
- return n.length === 1 && n[0].field === e ? [{
680
- field: e,
681
- direction: n[0].direction === "asc" ? "desc" : "asc"
682
- }] : [{
683
- field: e,
684
- direction: "asc"
685
- }];
686
- });
687
- }
688
- function nt(e) {
689
- return T.find((t) => t.field === e)?.direction;
690
- }
691
- function rt(e) {
692
- if (T.length < 2) return;
693
- let t = T.findIndex((t) => t.field === e);
694
- return t === -1 ? void 0 : t + 1;
695
- }
696
- function it(e) {
697
- return N === e;
698
- }
699
- function at(e) {
700
- return me ? !0 : N !== void 0 && N !== e;
701
- }
702
- function ot(e, t) {
703
- let n = t.type ?? "string";
704
- if (n === "boolean") return !!e[t.field];
705
- if (n === "date") {
706
- let n = l(e[t.field]);
707
- if (Number.isNaN(n.getTime())) return "";
708
- let r = (e) => String(e).padStart(2, "0");
709
- return `${n.getFullYear()}-${r(n.getMonth() + 1)}-${r(n.getDate())}`;
710
- }
711
- let r = e[t.field];
712
- return r == null ? "" : String(r);
713
- }
714
- function st(e) {
715
- let t = {};
716
- for (let n of Pe) t[n.field] = ot(e, n);
717
- pe(e), F(t), L({});
718
- }
719
- function Z() {
720
- pe(void 0), F({}), L({});
721
- }
722
- function Q(e, t) {
723
- F((n) => ({
724
- ...n,
725
- [e]: t
726
- }));
727
- }
728
- function ct(e, t, n, r) {
729
- if (e.required && (t === "" || t == null)) return H("MsgValidationRequired");
730
- if ((e.type ?? "string") === "number" && typeof n == "number") {
731
- if (e.min !== void 0 && n < e.min) return H("MsgValidationMin", { min: e.min });
732
- if (e.max !== void 0 && n > e.max) return H("MsgValidationMax", { max: e.max });
733
- }
734
- if (e.pattern && typeof t == "string" && t !== "") {
735
- let n;
736
- try {
737
- n = new RegExp(e.pattern);
738
- } catch {
739
- n = void 0;
740
- }
741
- if (n && !n.test(t)) return H("MsgValidationPattern");
742
- }
743
- return e.validator ? e.validator(n, r) : null;
744
- }
745
- function lt(e, t, n = {}) {
746
- return ct(e, t, t, n);
747
- }
748
- async function ut(e) {
749
- let t = {};
750
- for (let n of Pe) t[n.field] = v(e[n.field], n.type ?? "string");
751
- let n = {}, r = {}, i = [];
752
- for (let a of Pe) {
753
- let o = a.field, s = ct(a, e[o], t[o], t);
754
- if (s) {
755
- n[o] = s;
756
- continue;
757
- }
758
- if (!a.asyncValidator) {
759
- t[o] !== void 0 && (r[o] = t[o]);
760
- continue;
761
- }
762
- i.push(a.asyncValidator(t[o], t).then((e) => {
763
- e ? n[o] = e : t[o] !== void 0 && (r[o] = t[o]);
764
- }));
765
- }
766
- if (i.length > 0) {
767
- _e(!0);
768
- try {
769
- await Promise.all(i);
770
- } finally {
771
- _e(!1);
772
- }
773
- }
774
- return {
775
- errors: n,
776
- values: r
777
- };
778
- }
779
- async function dt(e) {
780
- if (N !== e) return;
781
- let { errors: t, values: n } = await ut(P);
782
- if (N === e) {
783
- if (Object.keys(t).length > 0) {
784
- L(t);
785
- return;
786
- }
787
- pe(void 0), F({}), L({}), re?.({
788
- row: e,
789
- values: n
790
- });
791
- }
792
- }
793
- function $(e) {
794
- (!d || window.confirm(d)) && ie?.(e);
795
- }
796
- function ft() {
797
- if (g && !window.confirm(g)) return;
798
- let e = Array.from(M);
799
- et(), b?.(e);
800
- }
801
- function pt() {
802
- he(!0), F({}), L({});
803
- }
804
- function mt() {
805
- he(!1), F({}), L({});
806
- }
807
- async function ht() {
808
- if (!me) return;
809
- let { errors: e, values: t } = await ut(P);
810
- if (me) {
811
- if (Object.keys(e).length > 0) {
812
- L(e);
813
- return;
814
- }
815
- he(!1), F({}), L({}), y?.(t);
816
- }
817
- }
818
- function gt(e, t) {
819
- let n = Je[e], r = K.get(t);
820
- return !n || !r ? "" : f(n[t], r.type(), r.format(), o);
821
- }
822
- function _t(e, t, n) {
823
- let r = W.findIndex((e) => e.field === t);
824
- if (e === -1 || r === -1) return;
825
- let i = [];
826
- n.replace(/\r\n$|\r$|\n$/, "").split(/\r\n|\r|\n/).map((e) => e.split(" ")).forEach((t, n) => {
827
- let a = Je[e + n];
828
- a && t.forEach((e, t) => {
829
- let n = W[r + t];
830
- n && n.editable && i.push({
831
- row: a,
832
- field: n.field,
833
- value: ne(e, n.type ?? "string")
834
- });
835
- });
836
- }), i.length > 0 && x?.(i);
837
- }
838
- function vt(e) {
839
- return B[e] === void 0 ? U.find((t) => t.field === e)?.width ?? 80 : B[e];
840
- }
841
- function yt(e) {
842
- return B[e] !== void 0;
843
- }
844
- function bt(e, t) {
845
- U.some((t) => t.field === e) && Se((n) => ({
846
- ...n,
847
- [e]: Math.max(30, t)
848
- }));
849
- }
850
- function xt(e) {
851
- we(e);
852
- }
853
- function St(e) {
854
- return Ee.has(e);
855
- }
856
- function Ct(e) {
857
- De((t) => {
858
- let n = oe ? /* @__PURE__ */ new Set() : new Set(t);
859
- return t.has(e) ? n.delete(e) : n.add(e), n;
860
- });
861
- }
862
- function wt(e) {
863
- let t = Ce;
864
- if (we(void 0), !t || t === e) return;
865
- let n = [...q], r = n.indexOf(t), i = n.indexOf(e);
866
- r !== -1 && i !== -1 && (n.splice(r, 1), r < i && i--, n.splice(i, 0, t), ae?.(n));
867
- }
868
- function Tt(e) {
869
- let t = u ? 36 : 0;
870
- for (let n of W) {
871
- if (n.field === e) break;
872
- n.pinned === "left" && (t += vt(n.field));
873
- }
874
- return t;
875
- }
876
- function Et(e) {
877
- let t = 0, n = !1;
878
- for (let r of W) {
879
- if (r.field === e) {
880
- n = !0;
881
- continue;
882
- }
883
- n && r.pinned === "right" && (t += vt(r.field));
884
- }
885
- return t;
886
- }
887
- return {
888
- visibleColumns: W,
889
- stickyOffset: Tt,
890
- stickyOffsetRight: Et,
891
- hideableColumns: G,
892
- isColumnHidden: Me,
893
- toggleColumnVisibility: Ne,
894
- setColumnOrder: ke,
895
- draggingField: xe,
896
- onColumnDragStart: Ae,
897
- onColumnDrop: je,
898
- effectiveWidth: vt,
899
- isColumnResized: yt,
900
- setColumnWidth: bt,
901
- draggingRow: Ce,
902
- onRowDragStart: xt,
903
- onRowDrop: wt,
904
- hasTreeData: J,
905
- treeRows: Be,
906
- isTreeRowExpanded: Ve,
907
- toggleTreeRow: He,
908
- setAllTreeRowsExpanded: Ue,
909
- isRowExpanded: St,
910
- toggleRowExpanded: Ct,
911
- hasVirtualScroll: We,
912
- visibleRows: Je,
913
- exportRows: X,
914
- filteredRowCount: q.length,
915
- sortCriteria: T,
916
- setSort: E,
917
- toggleSort: tt,
918
- sortDirectionFor: nt,
919
- sortPriorityFor: rt,
920
- filterValues: D,
921
- setFilterValue: Le,
922
- filterQuery: k,
923
- setFilterQuery: Fe,
924
- page: qe,
925
- setPage: ue,
926
- pageCount: Ge ? Ke : 1,
927
- groupByField: j,
928
- setGroupByField: de,
929
- groups: Re,
930
- totals: ze,
931
- selectedRows: M,
932
- isRowSelected: Ye,
933
- toggleRowSelection: Xe,
934
- allSelected: Ze,
935
- someSelected: Qe,
936
- toggleSelectAll: $e,
937
- clearSelection: et,
938
- editableColumns: Pe,
939
- editingRow: N,
940
- isAddingRow: me,
941
- rowDraft: P,
942
- fieldErrors: I,
943
- isValidating: ge,
944
- isEditingRow: it,
945
- isAnotherRowEditing: at,
946
- startEditingRow: st,
947
- cancelRowEdit: Z,
948
- setRowDraftValue: Q,
949
- saveRow: dt,
950
- deleteRow: $,
951
- deleteSelectedRows: ft,
952
- startAddingRow: pt,
953
- cancelAddRow: mt,
954
- saveNewRow: ht,
955
- validateCell: lt,
956
- copyCellText: gt,
957
- pasteAt: _t
958
- };
959
- }
960
- //#endregion
961
- //#region src/utils/exporters.ts
962
- function D(e) {
963
- return e.headerText || e.field;
964
- }
965
- function O(e, t, n) {
966
- return f(t[e.field], e.type ?? "string", e.format ?? "", n);
967
- }
968
- function k(e, t, n) {
969
- return "" + [t.map((e) => re(D(e))).join(","), ...e.map((e) => t.map((t) => re(O(t, e, n))).join(","))].join("\r\n");
970
- }
971
- function le(e, t, n, r = "inandu-grid") {
972
- b(k(e, t, n), `${r}-export.csv`, "text/csv;charset=utf-8;");
973
- }
974
- function A(e, t, n) {
975
- let r = (e, t) => {
976
- let n = t[e.field];
977
- return e.type === "number" && typeof n == "number" && Number.isFinite(n) ? n : void 0;
978
- }, i = (e, t) => {
979
- let i = r(e, t);
980
- return i === void 0 ? `<Cell><Data ss:Type="String">${y(O(e, t, n))}</Data></Cell>` : `<Cell><Data ss:Type="Number">${i}</Data></Cell>`;
981
- }, a = `<Row ss:StyleID="header">${t.map((e) => `<Cell><Data ss:Type="String">${y(D(e))}</Data></Cell>`).join("")}</Row>`, o = e.map((e) => `<Row>${t.map((t) => i(t, e)).join("")}</Row>`).join("");
982
- return "<?xml version=\"1.0\"?><?mso-application progid=\"Excel.Sheet\"?><Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"><Styles><Style ss:ID=\"header\"><Font ss:Bold=\"1\"/></Style></Styles><Worksheet ss:Name=\"Sheet1\"><Table>" + a + o + "</Table></Worksheet></Workbook>";
983
- }
984
- function ue(e, t, n, r = "inandu-grid") {
985
- b(A(e, t, n), `${r}-export.xls`, "application/vnd.ms-excel");
986
- }
987
- function j(e, t, n, r = "inandu-grid") {
988
- let i = t.map((e) => `<th>${y(D(e))}</th>`).join(""), a = e.map((e) => `<tr>${t.map((t) => `<td>${y(O(t, e, n))}</td>`).join("")}</tr>`).join(""), o = `<!doctype html><html><head><meta charset="utf-8"><title>${y(r)}</title><style>table{border-collapse:collapse;width:100%}th,td{border:1px solid #333;padding:4px 8px;text-align:left}th{background:#eee}</style></head><body><table><thead><tr>${i}</tr></thead><tbody>${a}</tbody></table></body></html>`, s = window.open("", "_blank");
989
- s && (s.document.write(o), s.document.close(), s.focus(), setTimeout(() => s.print(), 0));
990
- }
991
- async function de(e, t, n, r = "inandu-grid") {
992
- let { jsPDF: i } = await import("./jspdf.es.min-DiTFVZBc.js"), a = t.map(D), o = new i({ orientation: "landscape" }), s = o.internal.pageSize.getWidth() - 20, c = o.internal.pageSize.getHeight() - 10, l = s / (t.length || 1), u = 10, d = (e, t) => {
993
- o.setFont("helvetica", t ? "bold" : "normal");
994
- let n = 10;
995
- e.forEach((e) => {
996
- o.text(ie(o, e, l - 4), n + 2, u + 6), n += l;
997
- }), u += 8;
998
- };
999
- d(a, !0);
1000
- for (let r of e) u + 8 > c && (o.addPage(), u = 10, d(a, !0)), d(t.map((e) => O(e, r, n)), !1);
1001
- b(o.output("blob"), `${r}-export.pdf`);
1002
- }
1003
- //#endregion
1004
- //#region src/utils/measureColumn.ts
1005
- function M(e, t, n) {
1006
- let r = typeof CSS < "u" && CSS.escape ? CSS.escape(t) : t.replace(/"/g, "\\\""), i = Array.from(e.querySelectorAll(`td[data-field="${r}"]`)), a = e.querySelector(`th[data-field="${r}"]`), o = i[0] ?? a ?? e, s = getComputedStyle(o), c = document.createElement("span");
1007
- c.style.cssText = "position:absolute;left:-9999px;top:-9999px;visibility:hidden;white-space:pre;pointer-events:none", c.style.font = s.font || `${s.fontStyle} ${s.fontWeight} ${s.fontSize}/${s.lineHeight} ${s.fontFamily}`, c.style.letterSpacing = s.letterSpacing, document.body.appendChild(c);
1008
- let l = (parseFloat(s.paddingLeft) || 0) + (parseFloat(s.paddingRight) || 0) + 2, u = 0;
1009
- c.textContent = n || t, u = Math.max(u, c.offsetWidth + 44);
1010
- for (let e of i) c.textContent = (e.textContent ?? "").replace(/\s+/g, " ").trim(), u = Math.max(u, c.offsetWidth + l);
1011
- return c.remove(), i.length || a ? Math.ceil(u) : 0;
1012
- }
1013
- //#endregion
1014
- //#region src/components/InanduGrid.tsx
1015
- function fe({ rows: s, columns: c, locale: l = "en", lang: u, pageSize: d = 0, selectable: p = !1, onSelectionChange: ee, exportable: te = !1, exportFilenameBase: m = "inandu-grid", deletable: h = !1, deleteConfirmMessage: _, bulkDeleteConfirmMessage: v, creatable: ne = !1, onRowSave: re, onRowCreate: y, onRowDelete: ie, onRowsDelete: b, clipboard: x = !1, onCellsPaste: ae, columnToggle: S = !1, rowReorder: C = !1, onRowOrderChange: oe, treeChildrenKey: w, treeDefaultExpanded: T = "none", renderDetail: ce, singleDetailExpand: D = !1, virtualScroll: O = !1, virtualRowHeight: k = 40, height: A = 400, overscan: fe = 4, autosize: P = !1 }) {
1016
- let { visibleColumns: I, hideableColumns: L, isColumnHidden: ge, toggleColumnVisibility: _e, onColumnDragStart: R, onColumnDrop: ve, effectiveWidth: ye, isColumnResized: be, setColumnWidth: xe, visibleRows: z, exportRows: B, filteredRowCount: Se, toggleSort: Ce, sortDirectionFor: we, sortPriorityFor: Te, filterValues: V, setFilterValue: Ee, filterQuery: De, setFilterQuery: Oe, page: H, setPage: U, pageCount: W, groupByField: G, setGroupByField: ke, groups: Ae, totals: je, selectedRows: Me, isRowSelected: Ne, toggleRowSelection: Pe, allSelected: Fe, someSelected: K, toggleSelectAll: Ie, editableColumns: Le, isAddingRow: q, rowDraft: Re, fieldErrors: ze, isValidating: J, isEditingRow: Y, isAnotherRowEditing: Be, startEditingRow: Ve, cancelRowEdit: He, setRowDraftValue: Ue, saveRow: We, deleteRow: Ge, deleteSelectedRows: Ke, startAddingRow: qe, cancelAddRow: Je, saveNewRow: X, copyCellText: Ye, pasteAt: Xe, stickyOffset: Ze, stickyOffsetRight: Qe, draggingRow: $e, onRowDragStart: et, onRowDrop: tt, hasTreeData: nt, treeRows: rt, isTreeRowExpanded: it, toggleTreeRow: at, isRowExpanded: ot, toggleRowExpanded: st, hasVirtualScroll: Z } = E({
1017
- rows: s,
1018
- columns: c,
1019
- locale: l,
1020
- lang: u,
1021
- pageSize: d,
1022
- selectable: p,
1023
- deleteConfirmMessage: _,
1024
- bulkDeleteConfirmMessage: v,
1025
- onRowSave: re,
1026
- onRowCreate: y,
1027
- onRowDelete: ie,
1028
- onRowsDelete: b,
1029
- onCellsPaste: ae,
1030
- onRowOrderChange: oe,
1031
- treeChildrenKey: w,
1032
- treeDefaultExpanded: T,
1033
- singleDetailExpand: D,
1034
- virtualScroll: O
1035
- }), Q = t(() => se(u ?? l), [u, l]), [ct, lt] = r(void 0), [ut, dt] = r(void 0), [$, ft] = r(null), [pt, mt] = r(0), ht = n(null);
1036
- e(() => {
1037
- ee?.(Array.from(Me));
1038
- }, [Me, ee]), e(() => {
1039
- if (!$) return;
1040
- let e = (e) => {
1041
- xe($.field, $.startWidth + (e.clientX - $.startX));
1042
- }, t = () => ft(null);
1043
- return window.addEventListener("mousemove", e), window.addEventListener("mouseup", t), () => {
1044
- window.removeEventListener("mousemove", e), window.removeEventListener("mouseup", t);
1045
- };
1046
- }, [$, xe]);
1047
- function gt(e, t) {
1048
- e.preventDefault(), ft({
1049
- field: t,
1050
- startX: e.clientX,
1051
- startWidth: ye(t)
1052
- });
1053
- }
1054
- function _t(e, t) {
1055
- if (!P || !ht.current) return;
1056
- e.preventDefault(), e.stopPropagation();
1057
- let n = M(ht.current, t.field, t.headerText ?? t.field);
1058
- n > 0 && xe(t.field, Math.min(600, n));
1059
- }
1060
- let vt = I.filter((e) => e.aggregate), yt = I.filter((e) => e.groupable !== !1), bt = Ae ? Ae.length === 0 : z.length === 0, xt = Le.length > 0 || h || ne, St = C && !G && !Z, Ct = !!ce && !G && !Z, wt = +!!Ct + +!!St + +!!p + +!!xt, Tt = Z ? Math.max(0, Math.floor(pt / k) - fe) : 0, Et = Z ? Math.min(z.length, Math.ceil((pt + A) / k) + fe) : z.length, Dt = Z ? z.slice(Tt, Et) : z, Ot = Tt * k, kt = (z.length - Et) * k;
1061
- function At(e, t) {
1062
- Ee(e, {
1063
- ...V[e],
1064
- ...t
1065
- });
1066
- }
1067
- function jt(e) {
1068
- let t = e.width !== void 0 || be(e.field) ? { width: ye(e.field) } : {};
1069
- return e.pinned === "left" ? {
1070
- ...t,
1071
- position: "sticky",
1072
- left: Ze(e.field),
1073
- zIndex: 1
1074
- } : e.pinned === "right" ? {
1075
- ...t,
1076
- position: "sticky",
1077
- right: Qe(e.field),
1078
- zIndex: 1
1079
- } : t;
1080
- }
1081
- function Mt(e, t) {
1082
- R(t), e.dataTransfer.setData("text/plain", t);
1083
- }
1084
- function Nt(e, t) {
1085
- e.preventDefault(), lt(t);
1086
- }
1087
- function Pt(e, t) {
1088
- e.preventDefault(), lt(void 0), ve(t);
1089
- }
1090
- let Ft = p ? {
1091
- position: "sticky",
1092
- left: 0,
1093
- zIndex: 1
1094
- } : void 0;
1095
- function It(e, t) {
1096
- let n = e.aggregate, r = t[e.field];
1097
- if (!n || r === void 0) return "";
1098
- let i = n === "count" ? String(r) : f(r, "number", e.format ?? "", l);
1099
- return `${e.headerText ?? e.field} ${g[n]}: ${i}`;
1100
- }
1101
- function Lt(e) {
1102
- if (!x || !(e.ctrlKey || e.metaKey)) return;
1103
- let t = e.key.toLowerCase();
1104
- if (t !== "c" && t !== "v") return;
1105
- let n = e.target;
1106
- if (n instanceof HTMLInputElement || n instanceof HTMLTextAreaElement || n instanceof HTMLSelectElement) return;
1107
- let r = n.closest("td[data-field]"), i = r?.getAttribute("data-field"), a = r?.closest("tr")?.getAttribute("data-row-index");
1108
- if (!r || !i || a == null) return;
1109
- let o = Number(a);
1110
- e.preventDefault(), t === "c" ? navigator.clipboard?.writeText(Ye(o, i))?.catch(() => void 0) : navigator.clipboard?.readText()?.then((e) => Xe(o, i, e)).catch(() => void 0);
1111
- }
1112
- let Rt = {
1113
- columns: I,
1114
- locale: l,
1115
- t: Q,
1116
- selectable: p,
1117
- selectColumnStyle: Ft,
1118
- columnStyle: jt,
1119
- isRowSelected: Ne,
1120
- toggleRowSelection: Pe,
1121
- hasRowActions: xt,
1122
- editableColumns: Le,
1123
- isEditingRow: Y,
1124
- isAnotherRowEditing: Be,
1125
- startEditingRow: Ve,
1126
- cancelRowEdit: He,
1127
- saveRow: We,
1128
- deleteRow: Ge,
1129
- deletable: h,
1130
- rowDraft: Re,
1131
- fieldErrors: ze,
1132
- isValidating: J,
1133
- setRowDraftValue: Ue
1134
- };
1135
- return /* @__PURE__ */ o("div", {
1136
- className: "inandu-grid-react",
1137
- children: [
1138
- /* @__PURE__ */ a("div", {
1139
- className: "inandu-grid-search",
1140
- children: /* @__PURE__ */ a("input", {
1141
- "aria-label": Q("MsgFilterPlaceholder"),
1142
- type: "text",
1143
- placeholder: `${Q("MsgFilterPlaceholder")}…`,
1144
- value: De,
1145
- onChange: (e) => Oe(e.target.value)
1146
- })
1147
- }),
1148
- /* @__PURE__ */ o("div", {
1149
- className: "inandu-grid-toolbar",
1150
- children: [
1151
- te && /* @__PURE__ */ o(i, { children: [
1152
- /* @__PURE__ */ a("button", {
1153
- type: "button",
1154
- onClick: () => le(B, I, l, m),
1155
- children: Q("MsgExportCsv")
1156
- }),
1157
- /* @__PURE__ */ a("button", {
1158
- type: "button",
1159
- onClick: () => ue(B, I, l, m),
1160
- children: Q("MsgExportExcel")
1161
- }),
1162
- /* @__PURE__ */ a("button", {
1163
- type: "button",
1164
- onClick: () => void de(B, I, l, m),
1165
- children: Q("MsgExportPdf")
1166
- }),
1167
- /* @__PURE__ */ a("button", {
1168
- type: "button",
1169
- onClick: () => j(B, I, l, m),
1170
- children: Q("MsgPrint")
1171
- })
1172
- ] }),
1173
- ne && Le.length > 0 && !q && /* @__PURE__ */ a("button", {
1174
- type: "button",
1175
- onClick: qe,
1176
- children: Q("MsgAddRow")
1177
- }),
1178
- p && h && Me.size > 0 && /* @__PURE__ */ a("button", {
1179
- type: "button",
1180
- onClick: Ke,
1181
- children: Q("MsgDeleteSelected", { count: Me.size })
1182
- }),
1183
- S && /* @__PURE__ */ o("details", {
1184
- className: "inandu-grid-column-toggle",
1185
- children: [/* @__PURE__ */ a("summary", { children: Q("MsgToggleColumns") }), /* @__PURE__ */ a("ul", { children: L.map((e) => /* @__PURE__ */ a("li", { children: /* @__PURE__ */ o("label", { children: [
1186
- /* @__PURE__ */ a("input", {
1187
- "aria-label": Q("MsgToggleColumn", { column: e.headerText ?? e.field }),
1188
- type: "checkbox",
1189
- checked: !ge(e.field),
1190
- onChange: () => _e(e.field)
1191
- }),
1192
- " ",
1193
- e.headerText ?? e.field
1194
- ] }) }, e.field)) })]
1195
- })
1196
- ]
1197
- }),
1198
- yt.length > 0 && /* @__PURE__ */ a("div", {
1199
- className: "inandu-grid-group-by",
1200
- children: /* @__PURE__ */ o("label", { children: [
1201
- G ? Q("MsgGroupedBy", { column: yt.find((e) => e.field === G)?.headerText ?? G }) : Q("MsgGroupByHint"),
1202
- " ",
1203
- /* @__PURE__ */ o("select", {
1204
- "aria-label": "Group by",
1205
- value: G ?? "",
1206
- onChange: (e) => ke(e.target.value || void 0),
1207
- children: [/* @__PURE__ */ a("option", {
1208
- value: "",
1209
- children: Q("MsgCancelGrouping")
1210
- }), yt.map((e) => /* @__PURE__ */ a("option", {
1211
- value: e.field,
1212
- children: e.headerText ?? e.field
1213
- }, e.field))]
1214
- })
1215
- ] })
1216
- }),
1217
- /* @__PURE__ */ a("div", {
1218
- className: Z ? "inandu-grid-viewport" : void 0,
1219
- style: Z ? {
1220
- height: A,
1221
- overflow: "auto"
1222
- } : void 0,
1223
- onScroll: Z ? (e) => mt(e.currentTarget.scrollTop) : void 0,
1224
- children: /* @__PURE__ */ o("table", {
1225
- ref: ht,
1226
- className: "inandu-grid",
1227
- onKeyDown: Lt,
1228
- children: [
1229
- /* @__PURE__ */ o("thead", { children: [/* @__PURE__ */ o("tr", { children: [
1230
- Ct && /* @__PURE__ */ a("th", {}),
1231
- St && /* @__PURE__ */ a("th", {}),
1232
- p && /* @__PURE__ */ a("th", {
1233
- style: Ft,
1234
- children: /* @__PURE__ */ a("input", {
1235
- "aria-label": Q("MsgSelectAll"),
1236
- type: "checkbox",
1237
- checked: Fe,
1238
- ref: (e) => {
1239
- e && (e.indeterminate = K);
1240
- },
1241
- onChange: Ie
1242
- })
1243
- }),
1244
- I.map((e) => {
1245
- let t = we(e.field), n = Te(e.field);
1246
- return /* @__PURE__ */ o("th", {
1247
- "data-field": e.field,
1248
- style: jt(e),
1249
- className: ct === e.field ? "inandu-drag-over" : void 0,
1250
- draggable: e.reorder !== !1,
1251
- onDragStart: (t) => Mt(t, e.field),
1252
- onDragOver: (t) => Nt(t, e.field),
1253
- onDragLeave: () => lt((t) => t === e.field ? void 0 : t),
1254
- onDrop: (t) => Pt(t, e.field),
1255
- onClick: (t) => Ce(e.field, t.shiftKey),
1256
- "aria-label": Q("MsgSortBy", { column: e.headerText ?? e.field }),
1257
- children: [
1258
- e.headerText ?? e.field,
1259
- t ? t === "asc" ? " ▲" : " ▼" : "",
1260
- n !== void 0 && /* @__PURE__ */ a("sup", {
1261
- className: "inandu-grid-sort-priority",
1262
- children: n
1263
- }),
1264
- /* @__PURE__ */ a("span", {
1265
- className: "inandu-grid-resize-handle",
1266
- onMouseDown: (t) => gt(t, e.field),
1267
- onDoubleClick: (t) => _t(t, e),
1268
- onClick: (e) => e.stopPropagation(),
1269
- draggable: !1
1270
- })
1271
- ]
1272
- }, e.field);
1273
- }),
1274
- xt && /* @__PURE__ */ a("th", {})
1275
- ] }), /* @__PURE__ */ o("tr", {
1276
- className: "inandu-grid-filter-row",
1277
- children: [
1278
- Ct && /* @__PURE__ */ a("th", {}),
1279
- St && /* @__PURE__ */ a("th", {}),
1280
- p && /* @__PURE__ */ a("th", { style: Ft }),
1281
- I.map((e) => /* @__PURE__ */ a("th", {
1282
- style: jt(e),
1283
- children: /* @__PURE__ */ a(F, {
1284
- column: e,
1285
- value: V[e.field],
1286
- onChange: (t) => At(e.field, t),
1287
- t: Q
1288
- })
1289
- }, e.field)),
1290
- xt && /* @__PURE__ */ a("th", {})
1291
- ]
1292
- })] }),
1293
- /* @__PURE__ */ o("tbody", { children: [q && /* @__PURE__ */ a(pe, {
1294
- ...Rt,
1295
- onSave: () => void X(),
1296
- onCancel: Je
1297
- }), bt ? /* @__PURE__ */ a("tr", { children: /* @__PURE__ */ a("td", {
1298
- colSpan: I.length + wt,
1299
- children: Q("MsgNoData")
1300
- }) }) : nt ? rt.map((e, t) => /* @__PURE__ */ a(he, {
1301
- node: e,
1302
- rowIndex: t,
1303
- isTreeRowExpanded: it,
1304
- toggleTreeRow: at,
1305
- ...Rt
1306
- }, e.row.id == null ? t : String(e.row.id))) : Ae ? Ae.map((e) => /* @__PURE__ */ a(me, {
1307
- group: e,
1308
- aggregateColumns: vt,
1309
- aggregateLabel: It,
1310
- extraColumnCount: wt,
1311
- ...Rt
1312
- }, e.key)) : /* @__PURE__ */ o(i, { children: [
1313
- Z && Ot > 0 && /* @__PURE__ */ a("tr", {
1314
- "aria-hidden": "true",
1315
- children: /* @__PURE__ */ a("td", {
1316
- style: {
1317
- height: Ot,
1318
- padding: 0,
1319
- border: "none"
1320
- },
1321
- colSpan: I.length + wt
1322
- })
1323
- }),
1324
- Dt.map((e, t) => {
1325
- let n = Tt + t;
1326
- return /* @__PURE__ */ a(N, {
1327
- row: e,
1328
- rowIndex: n,
1329
- clipboard: x,
1330
- hasRowDragHandle: St,
1331
- isDragOverRow: $e !== void 0 && ut === e,
1332
- onRowDragStart: () => et(e),
1333
- onRowDragOver: () => dt(e),
1334
- onRowDragLeave: () => dt((t) => t === e ? void 0 : t),
1335
- onRowDrop: () => tt(e),
1336
- hasMasterDetail: Ct,
1337
- isRowExpanded: ot(e),
1338
- toggleRowExpanded: () => st(e),
1339
- renderDetail: ce,
1340
- extraColumnCount: wt,
1341
- ...Rt
1342
- }, e.id == null ? n : String(e.id));
1343
- }),
1344
- Z && kt > 0 && /* @__PURE__ */ a("tr", {
1345
- "aria-hidden": "true",
1346
- children: /* @__PURE__ */ a("td", {
1347
- style: {
1348
- height: kt,
1349
- padding: 0,
1350
- border: "none"
1351
- },
1352
- colSpan: I.length + wt
1353
- })
1354
- })
1355
- ] })] }),
1356
- vt.length > 0 && !Z && /* @__PURE__ */ a("tfoot", { children: /* @__PURE__ */ o("tr", {
1357
- className: "inandu-grid-totals-row",
1358
- children: [
1359
- Ct && /* @__PURE__ */ a("td", {}),
1360
- St && /* @__PURE__ */ a("td", {}),
1361
- p && /* @__PURE__ */ a("td", { style: Ft }),
1362
- I.map((e) => /* @__PURE__ */ a("td", {
1363
- style: jt(e),
1364
- children: e.aggregate ? It(e, je) : ""
1365
- }, e.field)),
1366
- xt && /* @__PURE__ */ a("td", {})
1367
- ]
1368
- }) })
1369
- ]
1370
- })
1371
- }),
1372
- d > 0 && !G && !Z && /* @__PURE__ */ o("div", {
1373
- className: "inandu-grid-pagination",
1374
- children: [
1375
- /* @__PURE__ */ o("button", {
1376
- type: "button",
1377
- disabled: H === 0,
1378
- onClick: () => U(H - 1),
1379
- children: ["‹ ", Q("MsgPreviousPage")]
1380
- }),
1381
- /* @__PURE__ */ o("span", { children: [
1382
- Q("MsgPageOf", {
1383
- page: H + 1,
1384
- total: W
1385
- }),
1386
- " (",
1387
- Se,
1388
- ")"
1389
- ] }),
1390
- /* @__PURE__ */ o("button", {
1391
- type: "button",
1392
- disabled: H >= W - 1,
1393
- onClick: () => U(H + 1),
1394
- children: [Q("MsgNextPage"), " ›"]
1395
- })
1396
- ]
1397
- })
1398
- ]
1399
- });
1400
- }
1401
- function N({ row: e, rowIndex: t, columns: n, locale: r, t: s, selectable: c, selectColumnStyle: l, columnStyle: u, isRowSelected: d, toggleRowSelection: p, hasRowActions: ee, editableColumns: te, isEditingRow: m, isAnotherRowEditing: h, startEditingRow: g, cancelRowEdit: _, saveRow: v, deleteRow: ne, deletable: re, rowDraft: y, fieldErrors: ie, isValidating: b, setRowDraftValue: x, clipboard: ae = !1, hasRowDragHandle: S = !1, isDragOverRow: C = !1, onRowDragStart: oe, onRowDragOver: w, onRowDragLeave: T, onRowDrop: se, hasMasterDetail: ce = !1, isRowExpanded: E = !1, toggleRowExpanded: D, renderDetail: O, extraColumnCount: k = 0 }) {
1402
- let le = m(e), A = s(E ? "MsgCollapseDetail" : "MsgExpandDetail");
1403
- return /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ o("tr", {
1404
- "data-row-index": ae ? t : void 0,
1405
- className: C ? "inandu-drag-over" : void 0,
1406
- onDragOver: S ? (e) => {
1407
- e.preventDefault(), w?.();
1408
- } : void 0,
1409
- onDragLeave: S ? T : void 0,
1410
- onDrop: S ? (e) => {
1411
- e.preventDefault(), se?.();
1412
- } : void 0,
1413
- children: [
1414
- ce && /* @__PURE__ */ a("td", { children: /* @__PURE__ */ a("button", {
1415
- type: "button",
1416
- className: "inandu-grid-detail-toggle",
1417
- "aria-label": A,
1418
- title: A,
1419
- onClick: D,
1420
- children: E ? "▾" : "▸"
1421
- }) }),
1422
- S && /* @__PURE__ */ a("td", { children: /* @__PURE__ */ a("span", {
1423
- className: "inandu-grid-row-drag-handle",
1424
- "aria-label": s("MsgDragRow"),
1425
- draggable: !0,
1426
- onDragStart: (e) => {
1427
- oe?.(), e.dataTransfer.setData("text/plain", "row");
1428
- },
1429
- children: "⋮⋮"
1430
- }) }),
1431
- c && /* @__PURE__ */ a("td", {
1432
- style: l,
1433
- children: /* @__PURE__ */ a("input", {
1434
- "aria-label": s("MsgSelectRow", { index: t + 1 }),
1435
- type: "checkbox",
1436
- checked: d(e),
1437
- onChange: () => p(e)
1438
- })
1439
- }),
1440
- n.map((t) => /* @__PURE__ */ a("td", {
1441
- style: u(t),
1442
- "data-field": t.field,
1443
- tabIndex: ae ? 0 : void 0,
1444
- children: le && t.editable ? /* @__PURE__ */ a(P, {
1445
- column: t,
1446
- value: y[t.field],
1447
- error: ie[t.field],
1448
- onChange: (e) => x(t.field, e),
1449
- t: s
1450
- }) : f(e[t.field], t.type ?? "string", t.format ?? "", r)
1451
- }, t.field)),
1452
- ee && /* @__PURE__ */ a("td", {
1453
- className: "inandu-grid-row-actions",
1454
- children: le ? /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a("button", {
1455
- type: "button",
1456
- disabled: b,
1457
- onClick: () => v(e),
1458
- children: s("MsgSaveRow")
1459
- }), /* @__PURE__ */ a("button", {
1460
- type: "button",
1461
- disabled: b,
1462
- onClick: _,
1463
- children: s("MsgCancelRowEdit")
1464
- })] }) : /* @__PURE__ */ o(i, { children: [te.length > 0 && /* @__PURE__ */ a("button", {
1465
- type: "button",
1466
- disabled: h(e),
1467
- onClick: () => g(e),
1468
- children: s("MsgEditRow")
1469
- }), re && /* @__PURE__ */ a("button", {
1470
- type: "button",
1471
- disabled: h(e),
1472
- onClick: () => ne(e),
1473
- children: s("MsgDeleteRow")
1474
- })] })
1475
- })
1476
- ]
1477
- }), ce && E && /* @__PURE__ */ a("tr", {
1478
- className: "inandu-grid-detail-row",
1479
- children: /* @__PURE__ */ a("td", {
1480
- colSpan: n.length + k,
1481
- children: O?.(e)
1482
- })
1483
- })] });
1484
- }
1485
- function pe({ columns: e, t, selectable: n, selectColumnStyle: r, columnStyle: i, hasRowActions: s, rowDraft: c, fieldErrors: l, isValidating: u, setRowDraftValue: d, onSave: f, onCancel: p }) {
1486
- return /* @__PURE__ */ o("tr", {
1487
- className: "inandu-grid-new-row",
1488
- children: [
1489
- n && /* @__PURE__ */ a("td", { style: r }),
1490
- e.map((e) => /* @__PURE__ */ a("td", {
1491
- style: i(e),
1492
- children: e.editable ? /* @__PURE__ */ a(P, {
1493
- column: e,
1494
- value: c[e.field],
1495
- error: l[e.field],
1496
- onChange: (t) => d(e.field, t),
1497
- t
1498
- }) : null
1499
- }, e.field)),
1500
- s && /* @__PURE__ */ o("td", {
1501
- className: "inandu-grid-row-actions",
1502
- children: [/* @__PURE__ */ a("button", {
1503
- type: "button",
1504
- disabled: u,
1505
- onClick: f,
1506
- children: t("MsgSaveRow")
1507
- }), /* @__PURE__ */ a("button", {
1508
- type: "button",
1509
- disabled: u,
1510
- onClick: p,
1511
- children: t("MsgCancelRowEdit")
1512
- })]
1513
- })
1514
- ]
1515
- });
1516
- }
1517
- function me({ group: e, columns: t, aggregateColumns: n, aggregateLabel: r, extraColumnCount: s, ...c }) {
1518
- return /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a("tr", {
1519
- className: "inandu-grid-group-row",
1520
- children: /* @__PURE__ */ o("td", {
1521
- colSpan: t.length + s,
1522
- children: [
1523
- /* @__PURE__ */ a("strong", { children: e.key }),
1524
- " (",
1525
- e.rows.length,
1526
- ")",
1527
- n.length > 0 && /* @__PURE__ */ a("span", {
1528
- className: "inandu-grid-group-aggregates",
1529
- children: n.map((t) => /* @__PURE__ */ o("span", { children: [" · ", r(t, e.aggregates)] }, t.field))
1530
- })
1531
- ]
1532
- })
1533
- }), e.rows.map((n, r) => /* @__PURE__ */ a(N, {
1534
- row: n,
1535
- rowIndex: r,
1536
- columns: t,
1537
- ...c
1538
- }, n.id == null ? `${e.key}:${r}` : String(n.id)))] });
1539
- }
1540
- function he({ node: e, rowIndex: t, columns: n, locale: r, t: i, selectable: s, selectColumnStyle: c, columnStyle: l, isRowSelected: u, toggleRowSelection: d, hasRowActions: p, isTreeRowExpanded: ee, toggleTreeRow: te }) {
1541
- let { row: m, depth: h, expandable: g } = e, _ = ee(m), v = i(_ ? "MsgCollapseDetail" : "MsgExpandDetail");
1542
- return /* @__PURE__ */ o("tr", {
1543
- "aria-level": h + 1,
1544
- "aria-expanded": g ? _ : void 0,
1545
- children: [
1546
- s && /* @__PURE__ */ a("td", {
1547
- style: c,
1548
- children: /* @__PURE__ */ a("input", {
1549
- "aria-label": i("MsgSelectRow", { index: t + 1 }),
1550
- type: "checkbox",
1551
- checked: u(m),
1552
- onChange: () => d(m)
1553
- })
1554
- }),
1555
- n.map((e, t) => /* @__PURE__ */ a("td", {
1556
- style: l(e),
1557
- children: t === 0 ? /* @__PURE__ */ o("span", {
1558
- className: "inandu-grid-tree-cell",
1559
- style: { paddingInlineStart: h * 16 },
1560
- children: [g ? /* @__PURE__ */ a("button", {
1561
- type: "button",
1562
- className: "inandu-grid-tree-toggle",
1563
- "aria-label": v,
1564
- title: v,
1565
- onClick: () => te(m),
1566
- children: _ ? "▾" : "▸"
1567
- }) : /* @__PURE__ */ a("span", {
1568
- className: "inandu-grid-tree-toggle-spacer",
1569
- "aria-hidden": "true"
1570
- }), f(m[e.field], e.type ?? "string", e.format ?? "", r)]
1571
- }) : f(m[e.field], e.type ?? "string", e.format ?? "", r)
1572
- }, e.field)),
1573
- p && /* @__PURE__ */ a("td", { className: "inandu-grid-row-actions" })
1574
- ]
1575
- });
1576
- }
1577
- function P({ column: e, value: t, error: n, onChange: r, t: i }) {
1578
- let s = e.type ?? "string", c = i("MsgEditCell", { column: e.headerText ?? e.field });
1579
- return /* @__PURE__ */ o("span", {
1580
- className: "inandu-grid-edit-cell",
1581
- children: [s === "boolean" ? /* @__PURE__ */ a("input", {
1582
- "aria-label": c,
1583
- type: "checkbox",
1584
- checked: !!t,
1585
- onChange: (e) => r(e.target.checked)
1586
- }) : s === "date" ? /* @__PURE__ */ a("input", {
1587
- "aria-label": c,
1588
- type: "date",
1589
- value: typeof t == "string" ? t : "",
1590
- onChange: (e) => r(e.target.value)
1591
- }) : /* @__PURE__ */ a("input", {
1592
- "aria-label": c,
1593
- type: s === "number" ? "number" : "text",
1594
- value: typeof t == "string" ? t : "",
1595
- onChange: (e) => r(e.target.value)
1596
- }), n && /* @__PURE__ */ a("span", {
1597
- className: "inandu-grid-field-error",
1598
- children: n
1599
- })]
1600
- });
1601
- }
1602
- function F({ column: e, value: t, onChange: n, t: r }) {
1603
- let i = e.type ?? "string", s = r("MsgFilterColumn", { column: e.headerText ?? e.field });
1604
- return i === "number" ? /* @__PURE__ */ o("span", {
1605
- className: "inandu-grid-filter-range",
1606
- children: [/* @__PURE__ */ a("input", {
1607
- "aria-label": `${s} ${r("MsgFilterMin")}`,
1608
- type: "number",
1609
- value: t?.min ?? "",
1610
- onChange: (e) => n({ min: e.target.value })
1611
- }), /* @__PURE__ */ a("input", {
1612
- "aria-label": `${s} ${r("MsgFilterMax")}`,
1613
- type: "number",
1614
- value: t?.max ?? "",
1615
- onChange: (e) => n({ max: e.target.value })
1616
- })]
1617
- }) : i === "date" ? /* @__PURE__ */ o("span", {
1618
- className: "inandu-grid-filter-range",
1619
- children: [/* @__PURE__ */ a("input", {
1620
- "aria-label": `${s} ${r("MsgFilterFrom")}`,
1621
- type: "date",
1622
- value: t?.from ?? "",
1623
- onChange: (e) => n({ from: e.target.value })
1624
- }), /* @__PURE__ */ a("input", {
1625
- "aria-label": `${s} ${r("MsgFilterTo")}`,
1626
- type: "date",
1627
- value: t?.to ?? "",
1628
- onChange: (e) => n({ to: e.target.value })
1629
- })]
1630
- }) : i === "boolean" ? /* @__PURE__ */ o("select", {
1631
- "aria-label": s,
1632
- value: t?.bool ?? "",
1633
- onChange: (e) => n({ bool: e.target.value }),
1634
- children: [
1635
- /* @__PURE__ */ a("option", {
1636
- value: "",
1637
- children: r("MsgAll")
1638
- }),
1639
- /* @__PURE__ */ a("option", {
1640
- value: "true",
1641
- children: "true"
1642
- }),
1643
- /* @__PURE__ */ a("option", {
1644
- value: "false",
1645
- children: "false"
1646
- })
1647
- ]
1648
- }) : /* @__PURE__ */ a("input", {
1649
- "aria-label": s,
1650
- type: "text",
1651
- value: t?.text ?? "",
1652
- onChange: (e) => n({ text: e.target.value })
1653
- });
1654
- }
1655
- //#endregion
1656
- export { g as AGGREGATE_SYMBOLS, w as INANDU_GRID_TRANSLATIONS, fe as InanduGrid, k as buildCsv, A as buildExcelXml, p as compareCellValues, _ as computeGroupAggregates, se as createTranslator, x as en, ae as es, le as exportCsv, ue as exportExcel, de as exportPdf, f as formatCellValue, S as fr, T as interpolate, C as it, h as matchesColumnFilter, M as measureColumnContentWidth, j as printTable, E as useInanduGrid, oe as zh };