@trsys-tech/matrix-library 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +18 -10
  2. package/dist/components/data-table/DataTable.d.ts +8 -0
  3. package/dist/components/data-table/DataTable.d.ts.map +1 -0
  4. package/dist/components/data-table/DataTable.types.d.ts +176 -0
  5. package/dist/components/data-table/DataTable.types.d.ts.map +1 -0
  6. package/dist/components/data-table/DataTableActions.d.ts +42 -0
  7. package/dist/components/data-table/DataTableActions.d.ts.map +1 -0
  8. package/dist/components/data-table/DataTableAlignment.d.ts +9 -0
  9. package/dist/components/data-table/DataTableAlignment.d.ts.map +1 -0
  10. package/dist/components/data-table/DataTableColumnHeader.d.ts +11 -0
  11. package/dist/components/data-table/DataTableColumnHeader.d.ts.map +1 -0
  12. package/dist/components/data-table/DataTableColumnMenu.d.ts +9 -0
  13. package/dist/components/data-table/DataTableColumnMenu.d.ts.map +1 -0
  14. package/dist/components/data-table/DataTableContent.d.ts +7 -0
  15. package/dist/components/data-table/DataTableContent.d.ts.map +1 -0
  16. package/dist/components/data-table/DataTableContext.d.ts +37 -0
  17. package/dist/components/data-table/DataTableContext.d.ts.map +1 -0
  18. package/dist/components/data-table/DataTableHeader.d.ts +22 -0
  19. package/dist/components/data-table/DataTableHeader.d.ts.map +1 -0
  20. package/dist/components/data-table/DataTablePagination.d.ts +8 -0
  21. package/dist/components/data-table/DataTablePagination.d.ts.map +1 -0
  22. package/dist/components/data-table/DataTableRowView.d.ts +40 -0
  23. package/dist/components/data-table/DataTableRowView.d.ts.map +1 -0
  24. package/dist/components/data-table/dataTableColumnDrag.d.ts +13 -0
  25. package/dist/components/data-table/dataTableColumnDrag.d.ts.map +1 -0
  26. package/dist/components/data-table/dataTableEditing.d.ts +11 -0
  27. package/dist/components/data-table/dataTableEditing.d.ts.map +1 -0
  28. package/dist/components/data-table/dataTableFeatures.d.ts +25 -0
  29. package/dist/components/data-table/dataTableFeatures.d.ts.map +1 -0
  30. package/dist/components/data-table/dataTableModel.d.ts +23 -0
  31. package/dist/components/data-table/dataTableModel.d.ts.map +1 -0
  32. package/dist/components/data-table/dataTablePrint.d.ts +3 -0
  33. package/dist/components/data-table/dataTablePrint.d.ts.map +1 -0
  34. package/dist/components/data-table/dataTableStyles.d.ts +2 -0
  35. package/dist/components/data-table/dataTableStyles.d.ts.map +1 -0
  36. package/dist/components/data-table/useDataTableApi.d.ts +34 -0
  37. package/dist/components/data-table/useDataTableApi.d.ts.map +1 -0
  38. package/dist/components/data-table/useDataTableColumnDrag.d.ts +16 -0
  39. package/dist/components/data-table/useDataTableColumnDrag.d.ts.map +1 -0
  40. package/dist/components/data-table/useDataTableInstance.d.ts +96 -0
  41. package/dist/components/data-table/useDataTableInstance.d.ts.map +1 -0
  42. package/dist/components/data-table/useDataTableMotion.d.ts +4 -0
  43. package/dist/components/data-table/useDataTableMotion.d.ts.map +1 -0
  44. package/dist/components/resource-scheduler/ResourceScheduler.d.ts +96 -0
  45. package/dist/components/resource-scheduler/ResourceScheduler.d.ts.map +1 -0
  46. package/dist/datatable.es.js +40 -0
  47. package/dist/datatable.es.js.map +1 -0
  48. package/dist/datatableactions.es.js +193 -0
  49. package/dist/datatableactions.es.js.map +1 -0
  50. package/dist/datatablealignment.es.js +11 -0
  51. package/dist/datatablealignment.es.js.map +1 -0
  52. package/dist/datatablecolumndrag.es.js +34 -0
  53. package/dist/datatablecolumndrag.es.js.map +1 -0
  54. package/dist/datatablecolumnheader.es.js +81 -0
  55. package/dist/datatablecolumnheader.es.js.map +1 -0
  56. package/dist/datatablecolumnmenu.es.js +191 -0
  57. package/dist/datatablecolumnmenu.es.js.map +1 -0
  58. package/dist/datatablecontent.es.js +376 -0
  59. package/dist/datatablecontent.es.js.map +1 -0
  60. package/dist/datatablecontext.es.js +14 -0
  61. package/dist/datatablecontext.es.js.map +1 -0
  62. package/dist/datatablefeatures.es.js +24 -0
  63. package/dist/datatablefeatures.es.js.map +1 -0
  64. package/dist/datatableheader.es.js +126 -0
  65. package/dist/datatableheader.es.js.map +1 -0
  66. package/dist/datatablemodel.es.js +126 -0
  67. package/dist/datatablemodel.es.js.map +1 -0
  68. package/dist/datatablepagination.es.js +43 -0
  69. package/dist/datatablepagination.es.js.map +1 -0
  70. package/dist/datatableprint.es.js +65 -0
  71. package/dist/datatableprint.es.js.map +1 -0
  72. package/dist/datatablerowview.es.js +201 -0
  73. package/dist/datatablerowview.es.js.map +1 -0
  74. package/dist/datatablestyles.es.js +5 -0
  75. package/dist/datatablestyles.es.js.map +1 -0
  76. package/dist/ganttchart.es.js +2 -2
  77. package/dist/ganttchart.es.js.map +1 -1
  78. package/dist/index.d.ts +6 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.es.js +173 -154
  81. package/dist/index.es.js.map +1 -1
  82. package/dist/resourcescheduler.es.js +450 -0
  83. package/dist/resourcescheduler.es.js.map +1 -0
  84. package/dist/styles.css +1 -1
  85. package/dist/tabs.es.js +15 -15
  86. package/dist/tabs.es.js.map +1 -1
  87. package/dist/usedatatableapi.es.js +117 -0
  88. package/dist/usedatatableapi.es.js.map +1 -0
  89. package/dist/usedatatablecolumndrag.es.js +40 -0
  90. package/dist/usedatatablecolumndrag.es.js.map +1 -0
  91. package/dist/usedatatableinstance.es.js +178 -0
  92. package/dist/usedatatableinstance.es.js.map +1 -0
  93. package/dist/usedatatablemotion.es.js +99 -0
  94. package/dist/usedatatablemotion.es.js.map +1 -0
  95. package/package.json +33 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatableheader.es.js","sources":["../src/components/data-table/DataTableHeader.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { DataTableColumnHeader } from \"./DataTableColumnHeader\";\nimport { DataTableColumnMenu } from \"./DataTableColumnMenu\";\nimport type { DataTableApi, DataTableColumn, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableRow } from \"./DataTable.types\";\n\ntype DataTableHeaderProps<T extends object> = Pick<DataTableContentProps<T>, \"rowSelection\"> & {\n table: DataTableInstance<T>;\n api: DataTableApi<T>;\n headerHeight: number;\n totalWidth: number;\n isPrinting: boolean;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n selectionRows: DataTableRow<T>[];\n selectedInScope: number;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumn<T>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n widths: Map<string, number>;\n};\n\nexport function DataTableHeader<T extends object>({\n table,\n api,\n headerHeight,\n totalWidth,\n isPrinting,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n rowSelection,\n selectionRows,\n selectedInScope,\n visibleColumns,\n definitionsById,\n columnStyle,\n widths,\n}: DataTableHeaderProps<T>) {\n return (\n <div\n role=\"row\"\n className=\"mtx-sticky mtx-top-0 mtx-z-30 mtx-flex mtx-rounded-t-[inherit] mtx-border-b mtx-border-gray-200 mtx-bg-primary-50 mtx-font-bold\"\n style={{ height: headerHeight, width: totalWidth, minWidth: \"100%\", position: isPrinting ? \"relative\" : \"sticky\" }}\n >\n {showExpanders && (\n <div\n role=\"columnheader\"\n aria-label=\"Row details\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-shrink-0 mtx-bg-primary-50\"\n style={{ width: expanderWidth }}\n />\n )}\n {showCheckboxes && (\n <div\n role=\"columnheader\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-primary-50\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {rowSelection?.mode === \"multiRow\" && (\n <Checkbox\n aria-label=\"Select all rows\"\n disabled={!selectionRows.length}\n checked={selectionRows.length > 0 && selectedInScope === selectionRows.length ? true : selectedInScope > 0 ? \"indeterminate\" : false}\n onCheckedChange={checked => {\n if (checked === true) api.selectAll(rowSelection.selectAll);\n else\n table.setRowSelection(previous =>\n Object.fromEntries(Object.entries(previous).filter(([id]) => !selectionRows.some(row => row.id === id))),\n );\n }}\n />\n )}\n </div>\n )}\n {visibleColumns.map(column => {\n const definition = definitionsById.get(column.id)!;\n const header = table.getFlatHeaders().find(item => item.column.id === column.id)!;\n const sorted = column.getIsSorted();\n return (\n <DataTableColumnHeader\n key={column.id}\n columnId={column.id}\n label={typeof definition.headerName === \"string\" ? definition.headerName : column.id}\n region={column.getIsPinned()}\n disabled={isPrinting}\n aria-sort={sorted === \"asc\" ? \"ascending\" : sorted === \"desc\" ? \"descending\" : \"none\"}\n className=\"mtx-relative mtx-flex mtx-min-w-0 mtx-items-center mtx-gap-1 mtx-px-3\"\n style={columnStyle(column, true)}\n >\n <button\n type=\"button\"\n data-column-sort=\"\"\n disabled={isPrinting}\n aria-disabled={!column.getCanSort() || undefined}\n onClick={event => {\n if (!event.defaultPrevented && column.getCanSort()) column.getToggleSortingHandler()?.(event);\n }}\n className=\"mtx-flex mtx-min-w-0 mtx-flex-1 mtx-cursor-inherit mtx-items-center mtx-gap-1 mtx-text-start disabled:mtx-cursor-default\"\n aria-label={`Sort ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n >\n <span className=\"mtx-truncate\">{definition.headerName ?? column.id}</span>\n {sorted && (\n <span aria-hidden=\"true\">\n {sorted === \"asc\" ? \"↑\" : \"↓\"}\n {table.state.sorting.length > 1 ? column.getSortIndex() + 1 : \"\"}\n </span>\n )}\n </button>\n {!isPrinting && <DataTableColumnMenu table={table} column={column} definition={definition} />}\n {!isPrinting && column.getCanResize() && (\n <div\n role=\"separator\"\n data-column-drag-ignore=\"\"\n aria-label={`Resize ${column.id}`}\n aria-orientation=\"vertical\"\n tabIndex={0}\n className=\"mtx-absolute mtx-inset-y-0 mtx-end-0 mtx-w-1 mtx-cursor-col-resize mtx-touch-none hover:mtx-bg-primary-300\"\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => column.resetSize()}\n onKeyDown={event => {\n if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n event.preventDefault();\n table.setColumnSizing(previous => ({\n ...previous,\n [column.id]: (widths.get(column.id) ?? column.getSize()) + (event.key === \"ArrowRight\" ? 10 : -10),\n }));\n }\n }}\n />\n )}\n </DataTableColumnHeader>\n );\n })}\n </div>\n );\n}\n"],"names":["DataTableHeader","table","api","headerHeight","totalWidth","isPrinting","showExpanders","expanderWidth","showCheckboxes","rowSelection","selectionRows","selectedInScope","visibleColumns","definitionsById","columnStyle","widths","jsxs","jsx","Checkbox","checked","previous","id","row","column","definition","header","item","sorted","DataTableColumnHeader","event","DataTableColumnMenu"],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ function S(t, n, s) {
2
+ return t && n.includes(t.rowId) && s.includes(t.columnId) ? t : { rowId: n[0], columnId: s[0] };
3
+ }
4
+ function T(t, n, s) {
5
+ if (n === s || n.startsWith("__") || s.startsWith("__")) return !1;
6
+ const r = t.getColumn(n), u = t.getColumn(s);
7
+ if (!r || !u || !r.getIsVisible() || !u.getIsVisible() || r.getIsPinned() !== u.getIsPinned()) return !1;
8
+ const o = r.getIsPinned(), e = o ? t.atoms.columnPinning.get()[o] ?? [] : t.getAllLeafColumns().map((a) => a.id), i = e.indexOf(n), c = e.indexOf(s);
9
+ if (i < 0 || c < 0) return !1;
10
+ const l = [...e];
11
+ return l.splice(i, 1), l.splice(c, 0, n), o ? t.setColumnPinning((a) => ({ ...a, [o]: l })) : t.setColumnOrder(l), !0;
12
+ }
13
+ function g(t) {
14
+ const n = t.colId ?? t.field;
15
+ if (!n || n.startsWith("__")) throw new Error("DataTable columns require a unique field or colId (ids starting with __ are reserved).");
16
+ return n;
17
+ }
18
+ function x(t, n, s) {
19
+ return n.valueGetter ? n.valueGetter({ data: t, rowIndex: s }) : n.field?.split(".").reduce((r, u) => r?.[u], t);
20
+ }
21
+ function D(t, n, s) {
22
+ if (n.valueSetter) return n.valueSetter(t, s);
23
+ if (!n.field) return t;
24
+ const r = n.field.split("."), u = (o, e) => {
25
+ const i = r[e], c = o, l = Array.isArray(o) ? [...o] : { ...c };
26
+ return l[i] = e === r.length - 1 ? s : u(c?.[i], e + 1), l;
27
+ };
28
+ return u(t, 0);
29
+ }
30
+ const h = /^\d{4}-\d{2}-\d{2}/, m = /^(\d{4})-(\d{2})-(\d{2})$/;
31
+ function b(t) {
32
+ return t instanceof Date && Number.isFinite(t.getTime()) ? `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}` : typeof t == "string" ? h.exec(t)?.[0] ?? "" : "";
33
+ }
34
+ function p(t, n, s) {
35
+ if (t === "") return null;
36
+ const r = m.exec(t);
37
+ if (!r || s !== "date" && !(n instanceof Date)) return t;
38
+ const u = +r[1], o = +r[2] - 1, e = +r[3], i = new Date(u, o, e);
39
+ return i.getFullYear() === u && i.getMonth() === o && i.getDate() === e ? i : t;
40
+ }
41
+ function w(t) {
42
+ return typeof t.filter == "string" ? t.filter : t.cellDataType === "number" ? "number" : t.cellDataType === "date" || t.cellDataType === "dateString" ? "date" : "text";
43
+ }
44
+ function y(t, n, s) {
45
+ if (n === void 0 || n === "") return !0;
46
+ const r = typeof n == "string" ? { operator: s === "select" ? "equals" : "contains", value: n } : n, u = t == null || t === "";
47
+ if (r.operator === "blank") return u;
48
+ if (r.operator === "notBlank") return !u;
49
+ if (r.value === void 0 || r.value === "") return !0;
50
+ if (u) return !1;
51
+ const o = (c) => {
52
+ if (s === "number") return Number(c);
53
+ if (s === "date") {
54
+ if (c instanceof Date) return new Date(c.getFullYear(), c.getMonth(), c.getDate()).getTime();
55
+ const l = /^(\d{4})-(\d{2})-(\d{2})/.exec(String(c));
56
+ if (!l) return NaN;
57
+ const a = new Date(+l[1], +l[2] - 1, +l[3]);
58
+ return a.getFullYear() === +l[1] && a.getMonth() === +l[2] - 1 && a.getDate() === +l[3] ? a.getTime() : NaN;
59
+ }
60
+ return s === "select" ? String(c) : String(c).toLocaleLowerCase();
61
+ }, e = o(t), i = o(r.value);
62
+ if (typeof e == "number" && !Number.isFinite(e) || typeof i == "number" && !Number.isFinite(i)) return !1;
63
+ switch (r.operator) {
64
+ case "contains":
65
+ return String(e).includes(String(i));
66
+ case "notContains":
67
+ return !String(e).includes(String(i));
68
+ case "startsWith":
69
+ return String(e).startsWith(String(i));
70
+ case "endsWith":
71
+ return String(e).endsWith(String(i));
72
+ case "equals":
73
+ return e === i;
74
+ case "notEqual":
75
+ return e !== i;
76
+ case "greaterThan":
77
+ return e > i;
78
+ case "greaterThanOrEqual":
79
+ return e >= i;
80
+ case "lessThan":
81
+ return e < i;
82
+ case "lessThanOrEqual":
83
+ return e <= i;
84
+ case "inRange":
85
+ return r.valueTo !== void 0 && r.valueTo !== "" && e >= i && e <= o(r.valueTo);
86
+ default:
87
+ return !0;
88
+ }
89
+ }
90
+ function C(t, n, s) {
91
+ const r = {};
92
+ let u = n, o = t.filter((e) => (e.flex ?? 0) > 0 && s[g(e)] === void 0);
93
+ for (const e of t)
94
+ o.includes(e) || (u -= Math.max(
95
+ e.minWidth ?? 60,
96
+ Math.min(e.maxWidth ?? Number.MAX_SAFE_INTEGER, s[g(e)] ?? e.width ?? 150)
97
+ ));
98
+ for (; o.length; ) {
99
+ const e = o.reduce((a, f) => a + f.flex, 0), i = o.map((a) => {
100
+ const f = u * a.flex / e, d = Math.max(a.minWidth ?? 60, Math.min(a.maxWidth ?? Number.MAX_SAFE_INTEGER, f));
101
+ return { column: a, share: f, width: d };
102
+ }), c = i.reduce((a, { share: f, width: d }) => a + d - f, 0);
103
+ if (Math.abs(c) < 1e-8) {
104
+ for (const { column: a, width: f } of i) r[g(a)] = f;
105
+ break;
106
+ }
107
+ const l = i.filter(({ share: a, width: f }) => c > 0 ? f > a : f < a);
108
+ for (const { column: a, width: f } of l)
109
+ r[g(a)] = f, u -= f;
110
+ o = o.filter((a) => !l.some((f) => f.column === a));
111
+ }
112
+ return r;
113
+ }
114
+ export {
115
+ w as filterType,
116
+ S as getActiveDataTableCell,
117
+ x as getCellValue,
118
+ g as getColumnId,
119
+ C as getFlexSizes,
120
+ y as matchesFilter,
121
+ T as moveDataTableColumn,
122
+ p as parseDateInputValue,
123
+ D as setCellValue,
124
+ b as toDateInputValue
125
+ };
126
+ //# sourceMappingURL=datatablemodel.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatablemodel.es.js","sources":["../src/components/data-table/dataTableModel.ts"],"sourcesContent":["import type { DataTableColumn, DataTableFilter, DataTableFilterType, DataTableInstance } from \"./DataTable.types\";\n\n/** Keep the roving tab stop on a mounted row when virtualization changes the viewport. */\nexport function getActiveDataTableCell(\n focused: { rowId: string; columnId: string } | null,\n renderedIds: readonly string[],\n columnIds: readonly string[],\n) {\n if (focused && renderedIds.includes(focused.rowId) && columnIds.includes(focused.columnId)) return focused;\n return { rowId: renderedIds[0], columnId: columnIds[0] };\n}\n\n/** Reorder within the current region without changing pinning or dropping hidden column IDs. */\nexport function moveDataTableColumn<T extends object>(table: DataTableInstance<T>, sourceId: string, targetId: string): boolean {\n if (sourceId === targetId || sourceId.startsWith(\"__\") || targetId.startsWith(\"__\")) return false;\n const source = table.getColumn(sourceId);\n const target = table.getColumn(targetId);\n if (!source || !target || !source.getIsVisible() || !target.getIsVisible() || source.getIsPinned() !== target.getIsPinned()) return false;\n const region = source.getIsPinned();\n const order = region ? (table.atoms.columnPinning.get()[region] ?? []) : table.getAllLeafColumns().map(column => column.id);\n const from = order.indexOf(sourceId);\n const to = order.indexOf(targetId);\n if (from < 0 || to < 0) return false;\n const next = [...order];\n next.splice(from, 1);\n next.splice(to, 0, sourceId);\n if (region) table.setColumnPinning(previous => ({ ...previous, [region]: next }));\n else table.setColumnOrder(next);\n return true;\n}\n\nexport function getColumnId<T extends object>(column: DataTableColumn<T>): string {\n const id = column.colId ?? column.field;\n if (!id || id.startsWith(\"__\")) throw new Error(\"DataTable columns require a unique field or colId (ids starting with __ are reserved).\");\n return id;\n}\n\nexport function getCellValue<T extends object>(data: T, column: DataTableColumn<T>, rowIndex: number): unknown {\n if (column.valueGetter) return column.valueGetter({ data, rowIndex });\n return column.field?.split(\".\").reduce<unknown>((value, key) => (value as Record<string, unknown> | null)?.[key], data);\n}\n\nexport function setCellValue<T extends object>(data: T, column: DataTableColumn<T>, value: unknown): T {\n if (column.valueSetter) return column.valueSetter(data, value);\n if (!column.field) return data;\n const keys = column.field.split(\".\");\n const set = (source: unknown, depth: number): unknown => {\n const key = keys[depth];\n const record = source as Record<string, unknown> | undefined;\n const result = (Array.isArray(source) ? [...source] : { ...record }) as Record<string, unknown>;\n result[key] = depth === keys.length - 1 ? value : set(record?.[key], depth + 1);\n return result;\n };\n return set(data, 0) as T;\n}\n\nconst dateInputPrefix = /^\\d{4}-\\d{2}-\\d{2}/;\nconst dateInputValue = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\n/** Native date inputs accept yyyy-MM-dd text only; serialize Date values locally and keep string dates. */\nexport function toDateInputValue(value: unknown): string {\n if (value instanceof Date && Number.isFinite(value.getTime()))\n return `${value.getFullYear()}-${String(value.getMonth() + 1).padStart(2, \"0\")}-${String(value.getDate()).padStart(2, \"0\")}`;\n if (typeof value === \"string\") return dateInputPrefix.exec(value)?.[0] ?? \"\";\n return \"\";\n}\n\n/** Parse date input text back to a Date for date columns; text columns keep the typed string and clearing gives null. */\nexport function parseDateInputValue(\n rawValue: string,\n previousValue: unknown,\n cellDataType?: DataTableColumn<Record<string, unknown>>[\"cellDataType\"],\n): unknown {\n if (rawValue === \"\") return null;\n const match = dateInputValue.exec(rawValue);\n if (!match || (cellDataType !== \"date\" && !(previousValue instanceof Date))) return rawValue;\n const year = +match[1];\n const month = +match[2] - 1;\n const day = +match[3];\n const date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day ? date : rawValue;\n}\n\nexport function filterType<T extends object>(column: DataTableColumn<T>): DataTableFilterType {\n if (typeof column.filter === \"string\") return column.filter;\n if (column.cellDataType === \"number\") return \"number\";\n if (column.cellDataType === \"date\" || column.cellDataType === \"dateString\") return \"date\";\n return \"text\";\n}\n\nexport function matchesFilter(value: unknown, filter: DataTableFilter | string | undefined, type: DataTableFilterType): boolean {\n if (filter === undefined || filter === \"\") return true;\n const condition: DataTableFilter = typeof filter === \"string\" ? { operator: type === \"select\" ? \"equals\" : \"contains\", value: filter } : filter;\n const blank = value === null || value === undefined || value === \"\";\n if (condition.operator === \"blank\") return blank;\n if (condition.operator === \"notBlank\") return !blank;\n if (condition.value === undefined || condition.value === \"\") return true;\n if (blank) return false;\n const normalize = (input: unknown): string | number => {\n if (type === \"number\") return Number(input);\n if (type === \"date\") {\n if (input instanceof Date) return new Date(input.getFullYear(), input.getMonth(), input.getDate()).getTime();\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(String(input));\n if (!match) return NaN;\n const date = new Date(+match[1], +match[2] - 1, +match[3]);\n return date.getFullYear() === +match[1] && date.getMonth() === +match[2] - 1 && date.getDate() === +match[3] ? date.getTime() : NaN;\n }\n return type === \"select\" ? String(input) : String(input).toLocaleLowerCase();\n };\n const a = normalize(value);\n const b = normalize(condition.value);\n if ((typeof a === \"number\" && !Number.isFinite(a)) || (typeof b === \"number\" && !Number.isFinite(b))) return false;\n switch (condition.operator) {\n case \"contains\":\n return String(a).includes(String(b));\n case \"notContains\":\n return !String(a).includes(String(b));\n case \"startsWith\":\n return String(a).startsWith(String(b));\n case \"endsWith\":\n return String(a).endsWith(String(b));\n case \"equals\":\n return a === b;\n case \"notEqual\":\n return a !== b;\n case \"greaterThan\":\n return a > b;\n case \"greaterThanOrEqual\":\n return a >= b;\n case \"lessThan\":\n return a < b;\n case \"lessThanOrEqual\":\n return a <= b;\n case \"inRange\":\n return condition.valueTo !== undefined && condition.valueTo !== \"\" && a >= b && a <= normalize(condition.valueTo);\n default:\n return true;\n }\n}\n\n/** Distribute surplus width without allowing pinned offsets to differ from rendered widths. */\nexport function getFlexSizes<T extends object>(\n columns: readonly DataTableColumn<T>[],\n available: number,\n sizes: Record<string, number>,\n): Record<string, number> {\n const result: Record<string, number> = {};\n let remaining = available;\n let flexible = columns.filter(column => (column.flex ?? 0) > 0 && sizes[getColumnId(column)] === undefined);\n for (const column of columns) {\n if (!flexible.includes(column)) {\n remaining -= Math.max(\n column.minWidth ?? 60,\n Math.min(column.maxWidth ?? Number.MAX_SAFE_INTEGER, sizes[getColumnId(column)] ?? column.width ?? 150),\n );\n }\n }\n while (flexible.length) {\n const weight = flexible.reduce((sum, column) => sum + column.flex!, 0);\n const allocations = flexible.map(column => {\n const share = (remaining * column.flex!) / weight;\n const width = Math.max(column.minWidth ?? 60, Math.min(column.maxWidth ?? Number.MAX_SAFE_INTEGER, share));\n return { column, share, width };\n });\n const violation = allocations.reduce((sum, { share, width }) => sum + width - share, 0);\n if (Math.abs(violation) < 1e-8) {\n for (const { column, width } of allocations) result[getColumnId(column)] = width;\n break;\n }\n // Freeze only the bounds causing the net violation. Other columns may fit after redistribution.\n const constrained = allocations.filter(({ share, width }) => (violation > 0 ? width > share : width < share));\n for (const { column, width } of constrained) {\n result[getColumnId(column)] = width;\n remaining -= width;\n }\n flexible = flexible.filter(column => !constrained.some(allocation => allocation.column === column));\n }\n return result;\n}\n"],"names":["getActiveDataTableCell","focused","renderedIds","columnIds","moveDataTableColumn","table","sourceId","targetId","source","target","region","order","column","from","to","next","previous","getColumnId","id","getCellValue","data","rowIndex","value","key","setCellValue","keys","set","depth","record","result","dateInputPrefix","dateInputValue","toDateInputValue","parseDateInputValue","rawValue","previousValue","cellDataType","match","year","month","day","date","filterType","matchesFilter","filter","type","condition","blank","normalize","input","a","b","getFlexSizes","columns","available","sizes","remaining","flexible","weight","sum","allocations","share","width","violation","constrained","allocation"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
+ import { Button as n } from "./button.es.js";
3
+ import { dataTableInputClass as s } from "./datatablestyles.es.js";
4
+ function x({ table: e, paginationPageSizeSelector: r }) {
5
+ return /* @__PURE__ */ i("div", { "data-print-hidden": "", className: "mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-end mtx-gap-3 mtx-border-t mtx-border-gray-200 mtx-p-2", children: [
6
+ /* @__PURE__ */ i("label", { className: "mtx-flex mtx-items-center mtx-gap-2", children: [
7
+ "Rows per page",
8
+ /* @__PURE__ */ t(
9
+ "select",
10
+ {
11
+ className: s,
12
+ "aria-label": "Rows per page",
13
+ value: e.state.pagination.pageSize,
14
+ onChange: (a) => e.setPageSize(Number(a.target.value)),
15
+ children: Array.from(/* @__PURE__ */ new Set([...r, e.state.pagination.pageSize])).sort((a, o) => a - o).map((a) => /* @__PURE__ */ t("option", { value: a, children: a }, a))
16
+ }
17
+ )
18
+ ] }),
19
+ /* @__PURE__ */ i("span", { children: [
20
+ "Page ",
21
+ e.state.pagination.pageIndex + 1,
22
+ " of ",
23
+ Math.max(1, e.getPageCount())
24
+ ] }),
25
+ /* @__PURE__ */ t(
26
+ n,
27
+ {
28
+ type: "button",
29
+ variant: "text",
30
+ size: "sm",
31
+ "aria-label": "Previous page",
32
+ disabled: !e.getCanPreviousPage(),
33
+ onClick: () => e.previousPage(),
34
+ children: "Previous"
35
+ }
36
+ ),
37
+ /* @__PURE__ */ t(n, { type: "button", variant: "text", size: "sm", "aria-label": "Next page", disabled: !e.getCanNextPage(), onClick: () => e.nextPage(), children: "Next" })
38
+ ] });
39
+ }
40
+ export {
41
+ x as DataTablePagination
42
+ };
43
+ //# sourceMappingURL=datatablepagination.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatablepagination.es.js","sources":["../src/components/data-table/DataTablePagination.tsx"],"sourcesContent":["\"use client\";\n\nimport { Button } from \"../button/Button\";\nimport { dataTableInputClass } from \"./dataTableStyles\";\nimport type { DataTableInstance } from \"./DataTable.types\";\n\ntype DataTablePaginationProps<T extends object> = {\n table: DataTableInstance<T>;\n paginationPageSizeSelector: readonly number[];\n};\n\nexport function DataTablePagination<T extends object>({ table, paginationPageSizeSelector }: DataTablePaginationProps<T>) {\n return (\n <div data-print-hidden=\"\" className=\"mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-end mtx-gap-3 mtx-border-t mtx-border-gray-200 mtx-p-2\">\n <label className=\"mtx-flex mtx-items-center mtx-gap-2\">\n Rows per page\n <select\n className={dataTableInputClass}\n aria-label=\"Rows per page\"\n value={table.state.pagination.pageSize}\n onChange={event => table.setPageSize(Number(event.target.value))}\n >\n {Array.from(new Set([...paginationPageSizeSelector, table.state.pagination.pageSize]))\n .sort((a, b) => a - b)\n .map(size => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </label>\n <span>\n Page {table.state.pagination.pageIndex + 1} of {Math.max(1, table.getPageCount())}\n </span>\n <Button\n type=\"button\"\n variant=\"text\"\n size=\"sm\"\n aria-label=\"Previous page\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.previousPage()}\n >\n Previous\n </Button>\n <Button type=\"button\" variant=\"text\" size=\"sm\" aria-label=\"Next page\" disabled={!table.getCanNextPage()} onClick={() => table.nextPage()}>\n Next\n </Button>\n </div>\n );\n}\n"],"names":["DataTablePagination","table","paginationPageSizeSelector","jsxs","jsx","dataTableInputClass","event","b","size","Button"],"mappings":";;;AAWO,SAASA,EAAsC,EAAE,OAAAC,GAAO,4BAAAC,KAA2D;AACxH,SACE,gBAAAC,EAAC,OAAA,EAAI,qBAAkB,IAAG,WAAU,6GAClC,UAAA;AAAA,IAAA,gBAAAA,EAAC,SAAA,EAAM,WAAU,uCAAsC,UAAA;AAAA,MAAA;AAAA,MAErD,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWC;AAAA,UACX,cAAW;AAAA,UACX,OAAOJ,EAAM,MAAM,WAAW;AAAA,UAC9B,UAAU,OAASA,EAAM,YAAY,OAAOK,EAAM,OAAO,KAAK,CAAC;AAAA,UAE9D,UAAA,MAAM,KAAK,oBAAI,IAAI,CAAC,GAAGJ,GAA4BD,EAAM,MAAM,WAAW,QAAQ,CAAC,CAAC,EAClF,KAAK,CAAC,GAAGM,MAAM,IAAIA,CAAC,EACpB,IAAI,CAAAC,MACH,gBAAAJ,EAAC,UAAA,EAAkB,OAAOI,GACvB,UAAAA,EAAA,GADUA,CAEb,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IACL,GACF;AAAA,sBACC,QAAA,EAAK,UAAA;AAAA,MAAA;AAAA,MACEP,EAAM,MAAM,WAAW,YAAY;AAAA,MAAE;AAAA,MAAK,KAAK,IAAI,GAAGA,EAAM,cAAc;AAAA,IAAA,GAClF;AAAA,IACA,gBAAAG;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,cAAW;AAAA,QACX,UAAU,CAACR,EAAM,mBAAA;AAAA,QACjB,SAAS,MAAMA,EAAM,aAAA;AAAA,QACtB,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGD,gBAAAG,EAACK,KAAO,MAAK,UAAS,SAAQ,QAAO,MAAK,MAAK,cAAW,aAAY,UAAU,CAACR,EAAM,kBAAkB,SAAS,MAAMA,EAAM,SAAA,GAAY,UAAA,OAAA,CAE1I;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,65 @@
1
+ async function h(s) {
2
+ const o = document.createElement("iframe");
3
+ o.setAttribute("aria-hidden", "true"), Object.assign(o.style, { position: "fixed", right: "100%", width: "297mm", height: "210mm", border: "0" }), document.body.appendChild(o);
4
+ const n = s.cloneNode(!0);
5
+ n.querySelectorAll("[data-print-hidden]").forEach((t) => t.remove());
6
+ const i = getComputedStyle(s);
7
+ for (const t of [
8
+ "font-family",
9
+ "font-size",
10
+ "font-weight",
11
+ "font-style",
12
+ "font-variant",
13
+ "line-height",
14
+ "letter-spacing",
15
+ "color",
16
+ "text-align",
17
+ "direction"
18
+ ])
19
+ n.style.setProperty(t, i.getPropertyValue(t));
20
+ for (let t = 0; t < i.length; t++) {
21
+ const r = i[t];
22
+ r.startsWith("--mtx-") && n.style.setProperty(r, i.getPropertyValue(r));
23
+ }
24
+ n.style.height = "auto", n.style.overflow = "visible";
25
+ const u = document.head.cloneNode(!0);
26
+ u.querySelectorAll("script").forEach((t) => t.remove()), await new Promise((t, r) => {
27
+ const l = () => {
28
+ clearTimeout(p), o.remove();
29
+ };
30
+ o.onload = async () => {
31
+ try {
32
+ const e = o.contentWindow;
33
+ if (!e) throw new Error("Unable to open DataTable print document.");
34
+ await e.document.fonts?.ready;
35
+ const d = e.document.querySelector("[data-data-table-content]");
36
+ if (d) {
37
+ const c = e.document.createElement("div");
38
+ c.style.width = "277mm", e.document.body.appendChild(c);
39
+ const m = c.getBoundingClientRect().width;
40
+ c.remove(), m > 0 && d.scrollWidth > m && (d.style.zoom = String(m / d.scrollWidth));
41
+ }
42
+ e.addEventListener("afterprint", l, { once: !0 }), e.focus(), e.print(), t();
43
+ } catch (e) {
44
+ l(), r(e);
45
+ }
46
+ };
47
+ const p = setTimeout(() => {
48
+ l(), t();
49
+ }, 6e4), a = o.contentDocument;
50
+ if (!a) {
51
+ l(), r(new Error("Unable to create DataTable print document."));
52
+ return;
53
+ }
54
+ a.open(), a.write(`<!doctype html><html><head>${u.innerHTML}<style>
55
+ @page { size: A4 landscape; margin: 10mm; }
56
+ body { margin: 0; } [data-data-table-content] { height: auto !important; overflow: visible !important; }
57
+ [data-data-table-viewport] { height: auto !important; overflow: visible !important; }
58
+ [role="row"] { break-inside: avoid; }
59
+ </style></head><body>${n.outerHTML}</body></html>`), a.documentElement.dir = document.documentElement.dir, a.documentElement.lang = document.documentElement.lang, a.close();
60
+ });
61
+ }
62
+ export {
63
+ h as printDataTable
64
+ };
65
+ //# sourceMappingURL=datatableprint.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatableprint.es.js","sources":["../src/components/data-table/dataTablePrint.ts"],"sourcesContent":["/** Print an already expanded table; attach load handlers before writing the document. */\nexport async function printDataTable(element: HTMLElement): Promise<void> {\n const iframe = document.createElement(\"iframe\");\n iframe.setAttribute(\"aria-hidden\", \"true\");\n Object.assign(iframe.style, { position: \"fixed\", right: \"100%\", width: \"297mm\", height: \"210mm\", border: \"0\" });\n document.body.appendChild(iframe);\n const clone = element.cloneNode(true) as HTMLElement;\n clone.querySelectorAll(\"[data-print-hidden]\").forEach(node => node.remove());\n // Theme variables may be scoped on an ancestor rather than :root.\n const computed = getComputedStyle(element);\n // The content is detached from the DataTable wrapper and any scoped direction/theme ancestors.\n for (const property of [\n \"font-family\",\n \"font-size\",\n \"font-weight\",\n \"font-style\",\n \"font-variant\",\n \"line-height\",\n \"letter-spacing\",\n \"color\",\n \"text-align\",\n \"direction\",\n ]) {\n clone.style.setProperty(property, computed.getPropertyValue(property));\n }\n for (let index = 0; index < computed.length; index++) {\n const property = computed[index];\n if (property.startsWith(\"--mtx-\")) clone.style.setProperty(property, computed.getPropertyValue(property));\n }\n clone.style.height = \"auto\";\n clone.style.overflow = \"visible\";\n const head = document.head.cloneNode(true) as HTMLElement;\n head.querySelectorAll(\"script\").forEach(node => node.remove());\n await new Promise<void>((resolve, reject) => {\n const cleanup = () => {\n clearTimeout(timeout);\n iframe.remove();\n };\n iframe.onload = async () => {\n try {\n const win = iframe.contentWindow;\n if (!win) throw new Error(\"Unable to open DataTable print document.\");\n await win.document.fonts?.ready;\n const printRoot = win.document.querySelector<HTMLElement>(\"[data-data-table-content]\");\n if (printRoot) {\n const measure = win.document.createElement(\"div\");\n measure.style.width = \"277mm\";\n win.document.body.appendChild(measure);\n const available = measure.getBoundingClientRect().width;\n measure.remove();\n if (available > 0 && printRoot.scrollWidth > available) printRoot.style.zoom = String(available / printRoot.scrollWidth);\n }\n win.addEventListener(\"afterprint\", cleanup, { once: true });\n win.focus();\n win.print();\n resolve();\n } catch (error) {\n cleanup();\n reject(error);\n }\n };\n const timeout = setTimeout(() => {\n cleanup();\n resolve();\n }, 60_000);\n const doc = iframe.contentDocument;\n if (!doc) {\n cleanup();\n reject(new Error(\"Unable to create DataTable print document.\"));\n return;\n }\n doc.open();\n doc.write(`<!doctype html><html><head>${head.innerHTML}<style>\n @page { size: A4 landscape; margin: 10mm; }\n body { margin: 0; } [data-data-table-content] { height: auto !important; overflow: visible !important; }\n [data-data-table-viewport] { height: auto !important; overflow: visible !important; }\n [role=\"row\"] { break-inside: avoid; }\n </style></head><body>${clone.outerHTML}</body></html>`);\n doc.documentElement.dir = document.documentElement.dir;\n doc.documentElement.lang = document.documentElement.lang;\n doc.close();\n });\n}\n"],"names":["printDataTable","element","iframe","clone","node","computed","property","index","head","resolve","reject","cleanup","timeout","win","printRoot","measure","available","error","doc"],"mappings":"AACA,eAAsBA,EAAeC,GAAqC;AACxE,QAAMC,IAAS,SAAS,cAAc,QAAQ;AAC9C,EAAAA,EAAO,aAAa,eAAe,MAAM,GACzC,OAAO,OAAOA,EAAO,OAAO,EAAE,UAAU,SAAS,OAAO,QAAQ,OAAO,SAAS,QAAQ,SAAS,QAAQ,KAAK,GAC9G,SAAS,KAAK,YAAYA,CAAM;AAChC,QAAMC,IAAQF,EAAQ,UAAU,EAAI;AACpC,EAAAE,EAAM,iBAAiB,qBAAqB,EAAE,QAAQ,CAAAC,MAAQA,EAAK,QAAQ;AAE3E,QAAMC,IAAW,iBAAiBJ,CAAO;AAEzC,aAAWK,KAAY;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEA,IAAAH,EAAM,MAAM,YAAYG,GAAUD,EAAS,iBAAiBC,CAAQ,CAAC;AAEvE,WAASC,IAAQ,GAAGA,IAAQF,EAAS,QAAQE,KAAS;AACpD,UAAMD,IAAWD,EAASE,CAAK;AAC/B,IAAID,EAAS,WAAW,QAAQ,KAAGH,EAAM,MAAM,YAAYG,GAAUD,EAAS,iBAAiBC,CAAQ,CAAC;AAAA,EAC1G;AACA,EAAAH,EAAM,MAAM,SAAS,QACrBA,EAAM,MAAM,WAAW;AACvB,QAAMK,IAAO,SAAS,KAAK,UAAU,EAAI;AACzC,EAAAA,EAAK,iBAAiB,QAAQ,EAAE,QAAQ,CAAAJ,MAAQA,EAAK,QAAQ,GAC7D,MAAM,IAAI,QAAc,CAACK,GAASC,MAAW;AAC3C,UAAMC,IAAU,MAAM;AACpB,mBAAaC,CAAO,GACpBV,EAAO,OAAA;AAAA,IACT;AACA,IAAAA,EAAO,SAAS,YAAY;AAC1B,UAAI;AACF,cAAMW,IAAMX,EAAO;AACnB,YAAI,CAACW,EAAK,OAAM,IAAI,MAAM,0CAA0C;AACpE,cAAMA,EAAI,SAAS,OAAO;AAC1B,cAAMC,IAAYD,EAAI,SAAS,cAA2B,2BAA2B;AACrF,YAAIC,GAAW;AACb,gBAAMC,IAAUF,EAAI,SAAS,cAAc,KAAK;AAChD,UAAAE,EAAQ,MAAM,QAAQ,SACtBF,EAAI,SAAS,KAAK,YAAYE,CAAO;AACrC,gBAAMC,IAAYD,EAAQ,sBAAA,EAAwB;AAClD,UAAAA,EAAQ,OAAA,GACJC,IAAY,KAAKF,EAAU,cAAcE,MAAWF,EAAU,MAAM,OAAO,OAAOE,IAAYF,EAAU,WAAW;AAAA,QACzH;AACA,QAAAD,EAAI,iBAAiB,cAAcF,GAAS,EAAE,MAAM,IAAM,GAC1DE,EAAI,MAAA,GACJA,EAAI,MAAA,GACJJ,EAAA;AAAA,MACF,SAASQ,GAAO;AACd,QAAAN,EAAA,GACAD,EAAOO,CAAK;AAAA,MACd;AAAA,IACF;AACA,UAAML,IAAU,WAAW,MAAM;AAC/B,MAAAD,EAAA,GACAF,EAAA;AAAA,IACF,GAAG,GAAM,GACHS,IAAMhB,EAAO;AACnB,QAAI,CAACgB,GAAK;AACR,MAAAP,EAAA,GACAD,EAAO,IAAI,MAAM,4CAA4C,CAAC;AAC9D;AAAA,IACF;AACA,IAAAQ,EAAI,KAAA,GACJA,EAAI,MAAM,8BAA8BV,EAAK,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,2BAK/BL,EAAM,SAAS,gBAAgB,GACtDe,EAAI,gBAAgB,MAAM,SAAS,gBAAgB,KACnDA,EAAI,gBAAgB,OAAO,SAAS,gBAAgB,MACpDA,EAAI,MAAA;AAAA,EACN,CAAC;AACH;"}
@@ -0,0 +1,201 @@
1
+ import { jsxs as z, jsx as l } from "react/jsx-runtime";
2
+ import * as ie from "react";
3
+ import { ChevronDown as re, ChevronRight as le } from "@trsys-tech/matrix-icons";
4
+ import { cn as O } from "./utils.es.js";
5
+ import { IconButton as ne } from "./iconbutton.es.js";
6
+ import { Checkbox as se } from "./checkbox.es.js";
7
+ import { getCellValue as B, parseDateInputValue as oe, toDateInputValue as de, setCellValue as ce } from "./datatablemodel.es.js";
8
+ import { dataTableInputClass as me } from "./datatablestyles.es.js";
9
+ function be({ data: o, rowId: i, index: g, row: a, pinned: y, ...P }) {
10
+ const {
11
+ edit: c,
12
+ editRef: L,
13
+ updateEdit: D,
14
+ api: d,
15
+ table: q,
16
+ detailId: A,
17
+ displayedIndices: S,
18
+ rowSelection: N,
19
+ rowHeight: G,
20
+ totalWidth: R,
21
+ getRowClass: J,
22
+ rowClassRules: M,
23
+ onRowClick: Q,
24
+ showExpanders: b,
25
+ expanderWidth: K,
26
+ showCheckboxes: C,
27
+ visibleColumns: T,
28
+ definitionsById: U,
29
+ activeCell: j,
30
+ setFocusedCell: X,
31
+ columnStyle: Y,
32
+ handleCellKeyDown: Z,
33
+ suppressClickEdit: _,
34
+ editType: ee,
35
+ renderSubComponent: te,
36
+ isDetailExpanded: ae
37
+ } = P, E = c?.rowId === i, m = a?.getIsSelected() ?? !1, x = !!a && ae(a), w = `${A}-${i}`;
38
+ return /* @__PURE__ */ z(ie.Fragment, { children: [
39
+ /* @__PURE__ */ z(
40
+ "div",
41
+ {
42
+ role: "row",
43
+ "aria-rowindex": (S.get(i) ?? g) + 2,
44
+ "aria-selected": N && a ? m : void 0,
45
+ "data-row-id": i,
46
+ "data-pinned": y,
47
+ "data-selected": m || void 0,
48
+ className: O(
49
+ "mtx-flex mtx-border-b mtx-border-gray-200 mtx-bg-gray-0 hover:mtx-bg-primary-25",
50
+ m && "mtx-bg-primary-50",
51
+ y && "mtx-bg-gray-50",
52
+ J?.(o),
53
+ ...Object.entries(M ?? {}).filter(([, t]) => t(o)).map(([t]) => t)
54
+ ),
55
+ style: { height: G, width: R, minWidth: "100%" },
56
+ onClick: (t) => {
57
+ const u = t.target, e = u.closest("[data-row-selection-cell]");
58
+ u.closest("button,input,a,select,textarea,[data-row-action],[role=checkbox],[role=combobox]") || (a && N?.enableClickSelection && a.getCanSelect() && (a.getToggleSelectedHandler()({
59
+ target: { checked: e || t.ctrlKey || t.metaKey ? !m : !0 },
60
+ shiftKey: t.shiftKey,
61
+ nativeEvent: t.nativeEvent
62
+ }), !e && !t.ctrlKey && !t.metaKey && !t.shiftKey && q.setRowSelection({ [a.id]: !0 })), Q?.({ data: o, rowId: i, event: t, api: d }));
63
+ },
64
+ children: [
65
+ b && /* @__PURE__ */ l(
66
+ "div",
67
+ {
68
+ role: "gridcell",
69
+ "data-row-expander-cell": "",
70
+ className: "mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit",
71
+ style: { width: K },
72
+ children: a?.getCanExpand() && /* @__PURE__ */ l(
73
+ ne,
74
+ {
75
+ type: "button",
76
+ size: "sm",
77
+ "aria-label": `${x ? "Collapse" : "Expand"} row ${i}`,
78
+ "aria-expanded": x,
79
+ "aria-controls": x ? w : void 0,
80
+ onClick: a.getToggleExpandedHandler(),
81
+ children: x ? /* @__PURE__ */ l(re, { "aria-hidden": "true" }) : /* @__PURE__ */ l(le, { "aria-hidden": "true", className: "rtl:mtx-rotate-180" })
82
+ }
83
+ )
84
+ }
85
+ ),
86
+ C && /* @__PURE__ */ l(
87
+ "div",
88
+ {
89
+ role: "gridcell",
90
+ "data-row-selection-cell": "",
91
+ className: "mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit",
92
+ style: { width: 44, insetInlineStart: K },
93
+ children: a && /* @__PURE__ */ l(
94
+ se,
95
+ {
96
+ "aria-label": `Select row ${i}`,
97
+ checked: m,
98
+ disabled: !a.getCanSelect(),
99
+ onClick: (t) => a.getToggleSelectedHandler()({ target: { checked: !m }, shiftKey: t.shiftKey, nativeEvent: t.nativeEvent })
100
+ }
101
+ )
102
+ }
103
+ ),
104
+ T.map((t, u) => {
105
+ const e = U.get(t.id), n = B(E ? c.draft : o, e, g), v = !!E && (!c.columnId || c.columnId === t.id) && (typeof e.editable == "function" ? e.editable(o) : e.editable) && (!!e.field || !!e.valueSetter), f = { data: o, value: n, rowId: i, rowIndex: g, columnId: t.id, api: d, isEditing: !!E, pinned: y }, I = e.cellRenderer, V = e.cellEditor && typeof e.cellEditor != "string" ? e.cellEditor : void 0, $ = typeof e.cellEditor == "string" ? e.cellEditor : e.cellDataType === "number" ? "number" : e.cellDataType === "date" ? "date" : "text", F = e.cellEditor === "number" || e.cellDataType === "number", H = $ === "date" || !F && n instanceof Date, W = (r) => {
106
+ const s = L.current;
107
+ if (s)
108
+ try {
109
+ const p = e.valueParser ? e.valueParser({ data: s.draft, oldValue: B(s.original, e, g), newValue: r }) : r, h = ce(s.draft, e, p), k = { ...s.parseErrors };
110
+ delete k[t.id], D({
111
+ ...s,
112
+ draft: h,
113
+ changes: { ...s.changes, [t.id]: p },
114
+ parseErrors: k,
115
+ errors: Object.values(k)
116
+ });
117
+ } catch (p) {
118
+ const h = { ...s.parseErrors, [t.id]: p instanceof Error ? p.message : "Invalid value" };
119
+ D({ ...s, parseErrors: h, errors: Object.values(h) });
120
+ }
121
+ };
122
+ return /* @__PURE__ */ l(
123
+ "div",
124
+ {
125
+ role: "gridcell",
126
+ tabIndex: j.rowId === i && j.columnId === t.id ? 0 : -1,
127
+ "aria-colindex": u + 1 + (C ? 1 : 0) + (b ? 1 : 0),
128
+ "data-column-id": t.id,
129
+ "data-row-id": i,
130
+ "data-editing": v || void 0,
131
+ "data-row-action": e.suppressRowClick || t.id === "actions" || t.id === "action" ? "" : void 0,
132
+ "aria-readonly": !e.editable || !a,
133
+ "aria-invalid": v && c.errors.length > 0 || void 0,
134
+ className: O(
135
+ "mtx-flex mtx-min-w-0 mtx-items-center mtx-overflow-hidden mtx-px-3 focus:mtx-outline-none focus:mtx-ring-1 focus:mtx-ring-inset focus:mtx-ring-primary",
136
+ e.align === "end" && "mtx-justify-end",
137
+ e.align === "center" && "mtx-justify-center",
138
+ typeof e.cellClass == "function" ? e.cellClass(f) : e.cellClass
139
+ ),
140
+ style: Y(t),
141
+ onFocus: () => X((r) => r?.rowId === i && r.columnId === t.id ? r : { rowId: i, columnId: t.id }),
142
+ onKeyDown: (r) => {
143
+ e.onKeyDown?.(r, f), a && Z(r, a, t);
144
+ },
145
+ onDoubleClick: (r) => {
146
+ a && !_ && !r.target.closest("button,a,input,select,[data-row-action]") && (ee === "fullRow" ? d.startEditingRow(i) : d.startEditingCell({ rowId: i, columnId: t.id }));
147
+ },
148
+ children: v ? V ? /* @__PURE__ */ l(
149
+ V,
150
+ {
151
+ ...f,
152
+ errors: c.errors,
153
+ onValueChange: W,
154
+ commit: () => d.stopEditing(),
155
+ cancel: () => d.stopEditing(!0)
156
+ }
157
+ ) : /* @__PURE__ */ l(
158
+ "input",
159
+ {
160
+ "aria-label": `Edit ${typeof e.headerName == "string" ? e.headerName : t.id}`,
161
+ className: me,
162
+ type: $,
163
+ value: H ? de(n) : n == null ? "" : String(n),
164
+ onChange: (r) => W(
165
+ F ? r.target.value === "" ? null : Number(r.target.value) : H ? oe(r.target.value, n, e.cellDataType) : r.target.value
166
+ )
167
+ }
168
+ ) : I ? /* @__PURE__ */ l(I, { ...f }) : e.valueFormatter ? e.valueFormatter({ data: o, value: n }) : /* @__PURE__ */ l("span", { className: "mtx-truncate", children: n instanceof Date ? n.toLocaleDateString() : String(n ?? "") })
169
+ },
170
+ t.id
171
+ );
172
+ })
173
+ ]
174
+ }
175
+ ),
176
+ x && a && /* @__PURE__ */ l(
177
+ "div",
178
+ {
179
+ role: "row",
180
+ "aria-rowindex": (S.get(i) ?? g) + 3,
181
+ "data-expanded-row-id": i,
182
+ className: "mtx-border-b mtx-border-gray-200 mtx-bg-gray-50",
183
+ style: { width: R, minWidth: "100%" },
184
+ children: /* @__PURE__ */ l(
185
+ "div",
186
+ {
187
+ role: "gridcell",
188
+ id: w,
189
+ "aria-colspan": T.length + (C ? 1 : 0) + (b ? 1 : 0),
190
+ className: "mtx-p-4",
191
+ children: te?.({ row: a, api: d })
192
+ }
193
+ )
194
+ }
195
+ )
196
+ ] }, i);
197
+ }
198
+ export {
199
+ be as DataTableRowView
200
+ };
201
+ //# sourceMappingURL=datatablerowview.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatablerowview.es.js","sources":["../src/components/data-table/DataTableRowView.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { ChevronDown, ChevronRight } from \"@trsys-tech/matrix-icons\";\nimport { cn } from \"../../lib/utils\";\nimport { IconButton } from \"../icon-botton/IconButton\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { getCellValue, setCellValue, toDateInputValue, parseDateInputValue } from \"./dataTableModel\";\nimport { dataTableInputClass } from \"./dataTableStyles\";\nimport type {\n DataTableApi,\n DataTableCellParams,\n DataTableColumn,\n DataTableContentProps,\n DataTableFeatures,\n DataTableInstance,\n DataTableRow,\n} from \"./DataTable.types\";\nimport type { DataTableEditSession } from \"./dataTableEditing\";\n\ntype DataTableRowViewProps<T extends object> = Pick<\n DataTableContentProps<T>,\n \"rowSelection\" | \"getRowClass\" | \"rowClassRules\" | \"onRowClick\" | \"suppressClickEdit\" | \"renderSubComponent\"\n> & {\n data: T;\n rowId: string;\n index: number;\n row?: DataTableRow<T>;\n pinned?: \"top\" | \"bottom\";\n edit: DataTableEditSession<T> | null;\n editRef: React.MutableRefObject<DataTableEditSession<T> | null>;\n updateEdit: (next: DataTableEditSession<T> | null) => void;\n api: DataTableApi<T>;\n table: DataTableInstance<T>;\n detailId: string;\n displayedIndices: Map<string, number>;\n rowHeight: number;\n totalWidth: number;\n showExpanders: boolean;\n expanderWidth: number;\n showCheckboxes: boolean;\n visibleColumns: Column<DataTableFeatures, T>[];\n definitionsById: Map<string, DataTableColumn<T>>;\n activeCell: { rowId?: string; columnId?: string };\n setFocusedCell: React.Dispatch<React.SetStateAction<{ rowId: string; columnId: string } | null>>;\n columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;\n handleCellKeyDown: (event: React.KeyboardEvent, row: DataTableRow<T>, column: Column<DataTableFeatures, T>) => void;\n editType: \"cell\" | \"fullRow\";\n isDetailExpanded: (row: DataTableRow<T>) => boolean;\n};\n\nexport function DataTableRowView<T extends object>({ data, rowId, index, row, pinned, ...view }: DataTableRowViewProps<T>) {\n const {\n edit,\n editRef,\n updateEdit,\n api,\n table,\n detailId,\n displayedIndices,\n rowSelection,\n rowHeight,\n totalWidth,\n getRowClass,\n rowClassRules,\n onRowClick,\n showExpanders,\n expanderWidth,\n showCheckboxes,\n visibleColumns,\n definitionsById,\n activeCell,\n setFocusedCell,\n columnStyle,\n handleCellKeyDown,\n suppressClickEdit,\n editType,\n renderSubComponent,\n isDetailExpanded,\n } = view;\n const editing = edit?.rowId === rowId;\n const selected = row?.getIsSelected() ?? false;\n const expanded = !!row && isDetailExpanded(row);\n const panelId = `${detailId}-${rowId}`;\n return (\n <React.Fragment key={rowId}>\n <div\n role=\"row\"\n aria-rowindex={(displayedIndices.get(rowId) ?? index) + 2}\n aria-selected={rowSelection && row ? selected : undefined}\n data-row-id={rowId}\n data-pinned={pinned}\n data-selected={selected || undefined}\n className={cn(\n \"mtx-flex mtx-border-b mtx-border-gray-200 mtx-bg-gray-0 hover:mtx-bg-primary-25\",\n selected && \"mtx-bg-primary-50\",\n pinned && \"mtx-bg-gray-50\",\n getRowClass?.(data),\n ...Object.entries(rowClassRules ?? {})\n .filter(([, test]) => test(data))\n .map(([name]) => name),\n )}\n style={{ height: rowHeight, width: totalWidth, minWidth: \"100%\" }}\n onClick={event => {\n const target = event.target as HTMLElement;\n const selectionCell = target.closest(\"[data-row-selection-cell]\");\n if (target.closest(\"button,input,a,select,textarea,[data-row-action],[role=checkbox],[role=combobox]\")) return;\n if (row && rowSelection?.enableClickSelection && row.getCanSelect()) {\n row.getToggleSelectedHandler()({\n target: { checked: selectionCell || event.ctrlKey || event.metaKey ? !selected : true },\n shiftKey: event.shiftKey,\n nativeEvent: event.nativeEvent,\n });\n if (!selectionCell && !event.ctrlKey && !event.metaKey && !event.shiftKey) table.setRowSelection({ [row.id]: true });\n }\n onRowClick?.({ data, rowId, event, api });\n }}\n >\n {showExpanders && (\n <div\n role=\"gridcell\"\n data-row-expander-cell=\"\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit\"\n style={{ width: expanderWidth }}\n >\n {row?.getCanExpand() && (\n <IconButton\n type=\"button\"\n size=\"sm\"\n aria-label={`${expanded ? \"Collapse\" : \"Expand\"} row ${rowId}`}\n aria-expanded={expanded}\n aria-controls={expanded ? panelId : undefined}\n onClick={row.getToggleExpandedHandler()}\n >\n {expanded ? <ChevronDown aria-hidden=\"true\" /> : <ChevronRight aria-hidden=\"true\" className=\"rtl:mtx-rotate-180\" />}\n </IconButton>\n )}\n </div>\n )}\n {showCheckboxes && (\n <div\n role=\"gridcell\"\n data-row-selection-cell=\"\"\n className=\"mtx-sticky mtx-start-0 mtx-z-10 mtx-flex mtx-shrink-0 mtx-items-center mtx-justify-center mtx-bg-inherit\"\n style={{ width: 44, insetInlineStart: expanderWidth }}\n >\n {row && (\n <Checkbox\n aria-label={`Select row ${rowId}`}\n checked={selected}\n disabled={!row.getCanSelect()}\n onClick={event =>\n row.getToggleSelectedHandler()({ target: { checked: !selected }, shiftKey: event.shiftKey, nativeEvent: event.nativeEvent })\n }\n />\n )}\n </div>\n )}\n {visibleColumns.map((column, colIndex) => {\n const definition = definitionsById.get(column.id)!;\n const value = getCellValue(editing ? edit.draft : data, definition, index);\n const isEditing =\n !!editing &&\n (!edit.columnId || edit.columnId === column.id) &&\n (typeof definition.editable === \"function\" ? definition.editable(data) : definition.editable) &&\n (!!definition.field || !!definition.valueSetter);\n const params: DataTableCellParams<T> = { data, value, rowId, rowIndex: index, columnId: column.id, api, isEditing: !!editing, pinned };\n const Renderer = definition.cellRenderer;\n const Editor = definition.cellEditor && typeof definition.cellEditor !== \"string\" ? definition.cellEditor : undefined;\n const editorType =\n typeof definition.cellEditor === \"string\"\n ? definition.cellEditor\n : definition.cellDataType === \"number\"\n ? \"number\"\n : definition.cellDataType === \"date\"\n ? \"date\"\n : \"text\";\n const coerceNumber = definition.cellEditor === \"number\" || definition.cellDataType === \"number\";\n const parseDate = editorType === \"date\" || (!coerceNumber && value instanceof Date);\n const setValue = (newValue: unknown) => {\n const session = editRef.current;\n if (!session) return;\n try {\n const parsed = definition.valueParser\n ? definition.valueParser({ data: session.draft, oldValue: getCellValue(session.original, definition, index), newValue })\n : newValue;\n const draft = setCellValue(session.draft, definition, parsed);\n const parseErrors = { ...session.parseErrors };\n delete parseErrors[column.id];\n updateEdit({\n ...session,\n draft,\n changes: { ...session.changes, [column.id]: parsed },\n parseErrors,\n errors: Object.values(parseErrors),\n });\n } catch (error) {\n const parseErrors = { ...session.parseErrors, [column.id]: error instanceof Error ? error.message : \"Invalid value\" };\n updateEdit({ ...session, parseErrors, errors: Object.values(parseErrors) });\n }\n };\n return (\n <div\n key={column.id}\n role=\"gridcell\"\n tabIndex={activeCell.rowId === rowId && activeCell.columnId === column.id ? 0 : -1}\n aria-colindex={colIndex + 1 + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n data-column-id={column.id}\n data-row-id={rowId}\n data-editing={isEditing || undefined}\n data-row-action={definition.suppressRowClick || column.id === \"actions\" || column.id === \"action\" ? \"\" : undefined}\n aria-readonly={!definition.editable || !row}\n aria-invalid={(isEditing && edit.errors.length > 0) || undefined}\n className={cn(\n \"mtx-flex mtx-min-w-0 mtx-items-center mtx-overflow-hidden mtx-px-3 focus:mtx-outline-none focus:mtx-ring-1 focus:mtx-ring-inset focus:mtx-ring-primary\",\n definition.align === \"end\" && \"mtx-justify-end\",\n definition.align === \"center\" && \"mtx-justify-center\",\n typeof definition.cellClass === \"function\" ? definition.cellClass(params) : definition.cellClass,\n )}\n style={columnStyle(column)}\n onFocus={() =>\n setFocusedCell(previous => (previous?.rowId === rowId && previous.columnId === column.id ? previous : { rowId, columnId: column.id }))\n }\n onKeyDown={event => {\n definition.onKeyDown?.(event, params);\n if (row) handleCellKeyDown(event, row, column);\n }}\n onDoubleClick={event => {\n if (row && !suppressClickEdit && !(event.target as HTMLElement).closest(\"button,a,input,select,[data-row-action]\")) {\n if (editType === \"fullRow\") api.startEditingRow(rowId);\n else api.startEditingCell({ rowId, columnId: column.id });\n }\n }}\n >\n {isEditing ? (\n Editor ? (\n <Editor\n {...params}\n errors={edit.errors}\n onValueChange={setValue}\n commit={() => api.stopEditing()}\n cancel={() => api.stopEditing(true)}\n />\n ) : (\n <input\n aria-label={`Edit ${typeof definition.headerName === \"string\" ? definition.headerName : column.id}`}\n className={dataTableInputClass}\n type={editorType}\n value={parseDate ? toDateInputValue(value) : value === null || value === undefined ? \"\" : String(value)}\n onChange={event =>\n setValue(\n coerceNumber\n ? event.target.value === \"\"\n ? null\n : Number(event.target.value)\n : parseDate\n ? parseDateInputValue(event.target.value, value, definition.cellDataType)\n : event.target.value,\n )\n }\n />\n )\n ) : Renderer ? (\n <Renderer {...params} />\n ) : definition.valueFormatter ? (\n definition.valueFormatter({ data, value })\n ) : (\n <span className=\"mtx-truncate\">{value instanceof Date ? value.toLocaleDateString() : String(value ?? \"\")}</span>\n )}\n </div>\n );\n })}\n </div>\n {expanded && row && (\n <div\n role=\"row\"\n aria-rowindex={(displayedIndices.get(rowId) ?? index) + 3}\n data-expanded-row-id={rowId}\n className=\"mtx-border-b mtx-border-gray-200 mtx-bg-gray-50\"\n style={{ width: totalWidth, minWidth: \"100%\" }}\n >\n <div\n role=\"gridcell\"\n id={panelId}\n aria-colspan={visibleColumns.length + (showCheckboxes ? 1 : 0) + (showExpanders ? 1 : 0)}\n className=\"mtx-p-4\"\n >\n {renderSubComponent?.({ row, api })}\n </div>\n </div>\n )}\n </React.Fragment>\n );\n}\n"],"names":["DataTableRowView","data","rowId","index","row","pinned","view","edit","editRef","updateEdit","api","table","detailId","displayedIndices","rowSelection","rowHeight","totalWidth","getRowClass","rowClassRules","onRowClick","showExpanders","expanderWidth","showCheckboxes","visibleColumns","definitionsById","activeCell","setFocusedCell","columnStyle","handleCellKeyDown","suppressClickEdit","editType","renderSubComponent","isDetailExpanded","editing","selected","expanded","panelId","jsxs","React","cn","test","name","event","target","selectionCell","jsx","IconButton","ChevronDown","ChevronRight","Checkbox","column","colIndex","definition","value","getCellValue","isEditing","params","Renderer","Editor","editorType","coerceNumber","parseDate","setValue","newValue","session","parsed","draft","setCellValue","parseErrors","error","previous","dataTableInputClass","toDateInputValue","parseDateInputValue"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ const t = "mtx-h-7 mtx-w-full mtx-rounded-sm mtx-border mtx-border-gray-300 mtx-bg-gray-0 mtx-px-2 mtx-text-xs focus:mtx-outline-none focus:mtx-ring-1 focus:mtx-ring-primary";
2
+ export {
3
+ t as dataTableInputClass
4
+ };
5
+ //# sourceMappingURL=datatablestyles.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datatablestyles.es.js","sources":["../src/components/data-table/dataTableStyles.ts"],"sourcesContent":["export const dataTableInputClass =\n \"mtx-h-7 mtx-w-full mtx-rounded-sm mtx-border mtx-border-gray-300 mtx-bg-gray-0 mtx-px-2 mtx-text-xs focus:mtx-outline-none focus:mtx-ring-1 focus:mtx-ring-primary\";\n"],"names":["dataTableInputClass"],"mappings":"AAAO,MAAMA,IACX;"}
@@ -233,7 +233,7 @@ const be = {
233
233
  /* @__PURE__ */ t(
234
234
  "div",
235
235
  {
236
- className: "mtx-sticky mtx-left-0 mtx-z-30 mtx-flex mtx-items-center mtx-border-b mtx-border-r mtx-border-gray-200 mtx-bg-gray-0 mtx-px-4",
236
+ className: "mtx-sticky mtx-left-0 mtx-z-30 mtx-flex mtx-items-center mtx-border-b mtx-border-r mtx-border-gray-200 mtx-bg-gray-0 mtx-px-2",
237
237
  style: { height: o },
238
238
  role: "cell",
239
239
  children: /* @__PURE__ */ l(
@@ -267,7 +267,7 @@ const be = {
267
267
  /* @__PURE__ */ t(
268
268
  "div",
269
269
  {
270
- className: "mtx-sticky mtx-left-0 mtx-z-30 mtx-flex mtx-items-center mtx-border-b mtx-border-r mtx-border-gray-200 mtx-bg-gray-0 mtx-px-4",
270
+ className: "mtx-sticky mtx-left-0 mtx-z-30 mtx-flex mtx-items-center mtx-border-b mtx-border-r mtx-border-gray-200 mtx-bg-gray-0 mtx-px-2",
271
271
  style: { height: o },
272
272
  role: "rowheader",
273
273
  children: z ? z({ item: r, formattedDateRange: A }) : /* @__PURE__ */ l("div", { className: "mtx-flex mtx-w-full mtx-min-w-0 mtx-items-center mtx-justify-between mtx-gap-3", children: [