@trsys-tech/matrix-library 1.1.7 → 1.1.8-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-table/DataTable.types.d.ts +21 -5
- package/dist/components/data-table/DataTable.types.d.ts.map +1 -1
- package/dist/components/data-table/DataTableColumnMenu.d.ts +2 -2
- package/dist/components/data-table/DataTableColumnMenu.d.ts.map +1 -1
- package/dist/components/data-table/DataTableHeader.d.ts +2 -2
- package/dist/components/data-table/DataTableHeader.d.ts.map +1 -1
- package/dist/components/data-table/DataTableRowView.d.ts +2 -2
- package/dist/components/data-table/DataTableRowView.d.ts.map +1 -1
- package/dist/components/data-table/dataTableModel.d.ts +19 -7
- package/dist/components/data-table/dataTableModel.d.ts.map +1 -1
- package/dist/components/data-table/useDataTableApi.d.ts +2 -2
- package/dist/components/data-table/useDataTableApi.d.ts.map +1 -1
- package/dist/components/data-table/useDataTableInstance.d.ts +3 -70
- package/dist/components/data-table/useDataTableInstance.d.ts.map +1 -1
- package/dist/datatablecolumnmenu.es.js.map +1 -1
- package/dist/datatableheader.es.js.map +1 -1
- package/dist/datatablemodel.es.js.map +1 -1
- package/dist/datatablerowview.es.js +10 -1
- package/dist/datatablerowview.es.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/usedatatableapi.es.js.map +1 -1
- package/dist/usedatatableinstance.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,9 +16,9 @@ export type DataTableFilterOption = {
|
|
|
16
16
|
value: string;
|
|
17
17
|
label: string;
|
|
18
18
|
};
|
|
19
|
-
export type DataTableCellParams<T extends object> = {
|
|
19
|
+
export type DataTableCellParams<T extends object, TValue = unknown> = {
|
|
20
20
|
data: T;
|
|
21
|
-
value:
|
|
21
|
+
value: TValue;
|
|
22
22
|
rowId: string;
|
|
23
23
|
/** Original input index; identity and imperative actions use rowId instead. */
|
|
24
24
|
rowIndex: number;
|
|
@@ -34,7 +34,7 @@ export type DataTableEditorProps<T extends object> = DataTableCellParams<T> & {
|
|
|
34
34
|
commit: () => boolean;
|
|
35
35
|
cancel: () => void;
|
|
36
36
|
};
|
|
37
|
-
|
|
37
|
+
type DataTableColumnOptions<T extends object> = {
|
|
38
38
|
/** Stable id required for computed or action columns without a field. */
|
|
39
39
|
colId?: string;
|
|
40
40
|
field?: (keyof T & string) | (string & {});
|
|
@@ -85,6 +85,21 @@ export type DataTableColumn<T extends object> = {
|
|
|
85
85
|
/** Native TanStack options. Hiding and pinning default to false; opt in with enableHiding/enablePinning. */
|
|
86
86
|
tableOptions?: Partial<Omit<ColumnDef<DataTableFeatures, T, any>, "id" | "header" | "cell" | "footer" | "accessorKey" | "accessorFn" | "columns">>;
|
|
87
87
|
};
|
|
88
|
+
/** A field discriminates the renderer props, preserving each property's exact value type. */
|
|
89
|
+
export type DataTableColumnDef<T extends object> = {
|
|
90
|
+
[K in keyof T & string]-?: Omit<DataTableColumnOptions<T>, "field" | "cellRenderer" | "valueGetter"> & {
|
|
91
|
+
field: K;
|
|
92
|
+
cellRenderer?: React.ComponentType<DataTableCellParams<T, T[K]>>;
|
|
93
|
+
valueGetter?: never;
|
|
94
|
+
};
|
|
95
|
+
}[keyof T & string] | (DataTableColumnOptions<T> & {
|
|
96
|
+
field?: undefined | `${string}.${string}`;
|
|
97
|
+
}) | (DataTableColumnOptions<T> & {
|
|
98
|
+
valueGetter: (params: {
|
|
99
|
+
data: T;
|
|
100
|
+
rowIndex: number;
|
|
101
|
+
}) => unknown;
|
|
102
|
+
});
|
|
88
103
|
export type DataTableEditEvent<T extends object> = {
|
|
89
104
|
rowId: string;
|
|
90
105
|
original: T;
|
|
@@ -120,8 +135,8 @@ export type DataTableApi<T extends object> = {
|
|
|
120
135
|
};
|
|
121
136
|
export type DataTableContentProps<T extends object> = Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "onRowClick"> & {
|
|
122
137
|
rowData: readonly T[] | null | undefined;
|
|
123
|
-
columnDefs: readonly
|
|
124
|
-
defaultColDef?: Partial<
|
|
138
|
+
columnDefs: NoInfer<readonly DataTableColumnDef<T>[]>;
|
|
139
|
+
defaultColDef?: Partial<DataTableColumnOptions<T>>;
|
|
125
140
|
/** String or numeric application id. Normalized to a string internally and in callbacks. Defaults to data.id, then input index. */
|
|
126
141
|
getRowId?: (data: T, index: number) => string | number;
|
|
127
142
|
onReady?: (api: DataTableApi<T>) => void;
|
|
@@ -173,4 +188,5 @@ export type DataTableContentProps<T extends object> = Omit<React.HTMLAttributes<
|
|
|
173
188
|
/** Styles on the scroll viewport, rather than the outer content wrapper. */
|
|
174
189
|
containerStyle?: React.CSSProperties;
|
|
175
190
|
};
|
|
191
|
+
export {};
|
|
176
192
|
//# sourceMappingURL=DataTable.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.types.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAElG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC3D,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACnF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,aAAa,GACb,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,UAAU,GACV,aAAa,GACb,oBAAoB,GACpB,UAAU,GACV,iBAAiB,GACjB,SAAS,GACT,OAAO,GACP,UAAU,CAAC;AACf,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACtG,MAAM,MAAM,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"DataTable.types.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTable.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Column } from '@tanstack/react-table';
|
|
2
|
-
import { DataTableInstance, DataTableFeatures,
|
|
2
|
+
import { DataTableInstance, DataTableFeatures, DataTableColumnDef } from './DataTable.types';
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
export declare function DataTableColumnMenu<T extends object>({ table, column, definition, }: {
|
|
5
5
|
table: DataTableInstance<T>;
|
|
6
6
|
column: Column<DataTableFeatures, T>;
|
|
7
|
-
definition:
|
|
7
|
+
definition: DataTableColumnDef<T>;
|
|
8
8
|
}): React.JSX.Element | null;
|
|
9
9
|
//# sourceMappingURL=DataTableColumnMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableColumnMenu.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableColumnMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"DataTableColumnMenu.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableColumnMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAA4C,MAAM,mBAAmB,CAAC;AAE5I,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,EACpD,KAAK,EACL,MAAM,EACN,UAAU,GACX,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACrC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACnC,4BA0MA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Column } from '@tanstack/react-table';
|
|
2
|
-
import { DataTableApi,
|
|
2
|
+
import { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableRow } from './DataTable.types';
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
type DataTableHeaderProps<T extends object> = Pick<DataTableContentProps<T>, "rowSelection"> & {
|
|
5
5
|
table: DataTableInstance<T>;
|
|
@@ -13,7 +13,7 @@ type DataTableHeaderProps<T extends object> = Pick<DataTableContentProps<T>, "ro
|
|
|
13
13
|
selectionRows: DataTableRow<T>[];
|
|
14
14
|
selectedInScope: number;
|
|
15
15
|
visibleColumns: Column<DataTableFeatures, T>[];
|
|
16
|
-
definitionsById: Map<string,
|
|
16
|
+
definitionsById: Map<string, DataTableColumnDef<T>>;
|
|
17
17
|
columnStyle: (column: Column<DataTableFeatures, T>, header?: boolean) => React.CSSProperties;
|
|
18
18
|
widths: Map<string, number>;
|
|
19
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableHeader.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"DataTableHeader.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErJ,KAAK,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG;IAC7F,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC;IAC7F,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,EAChD,KAAK,EACL,GAAG,EACH,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,WAAW,EACX,MAAM,GACP,EAAE,oBAAoB,CAAC,CAAC,CAAC,qBAmGzB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Column } from '@tanstack/react-table';
|
|
2
|
-
import { DataTableApi,
|
|
2
|
+
import { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableFeatures, DataTableInstance, DataTableRow } from './DataTable.types';
|
|
3
3
|
import { DataTableEditSession } from './dataTableEditing';
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
type DataTableRowViewProps<T extends object> = Pick<DataTableContentProps<T>, "rowSelection" | "getRowClass" | "rowClassRules" | "onRowClick" | "suppressClickEdit" | "renderSubComponent"> & {
|
|
@@ -21,7 +21,7 @@ type DataTableRowViewProps<T extends object> = Pick<DataTableContentProps<T>, "r
|
|
|
21
21
|
expanderWidth: number;
|
|
22
22
|
showCheckboxes: boolean;
|
|
23
23
|
visibleColumns: Column<DataTableFeatures, T>[];
|
|
24
|
-
definitionsById: Map<string,
|
|
24
|
+
definitionsById: Map<string, DataTableColumnDef<T>>;
|
|
25
25
|
activeCell: {
|
|
26
26
|
rowId?: string;
|
|
27
27
|
columnId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableRowView.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableRowView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOpD,OAAO,KAAK,EACV,YAAY,EAEZ,
|
|
1
|
+
{"version":3,"file":"DataTableRowView.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTableRowView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOpD,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,KAAK,qBAAqB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACjD,qBAAqB,CAAC,CAAC,CAAC,EACxB,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAAG,oBAAoB,CAC7G,GAAG;IACF,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjG,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC;IAC7F,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;IACpH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,gBAAgB,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;CACrD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,qBA4PxH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataTableColumnDef, DataTableFilter, DataTableFilterType, DataTableInstance } from './DataTable.types';
|
|
2
2
|
/** Keep the roving tab stop on a mounted row when virtualization changes the viewport. */
|
|
3
3
|
export declare function getActiveDataTableCell(focused: {
|
|
4
4
|
rowId: string;
|
|
@@ -9,15 +9,27 @@ export declare function getActiveDataTableCell(focused: {
|
|
|
9
9
|
};
|
|
10
10
|
/** Reorder within the current region without changing pinning or dropping hidden column IDs. */
|
|
11
11
|
export declare function moveDataTableColumn<T extends object>(table: DataTableInstance<T>, sourceId: string, targetId: string): boolean;
|
|
12
|
-
export declare function getColumnId
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
export declare function getColumnId(column: {
|
|
13
|
+
colId?: string;
|
|
14
|
+
field?: string;
|
|
15
|
+
}): string;
|
|
16
|
+
export declare function getCellValue<T extends object>(data: T, column: {
|
|
17
|
+
field?: string;
|
|
18
|
+
valueGetter?: (params: {
|
|
19
|
+
data: T;
|
|
20
|
+
rowIndex: number;
|
|
21
|
+
}) => unknown;
|
|
22
|
+
}, rowIndex: number): unknown;
|
|
23
|
+
export declare function setCellValue<T extends object>(data: T, column: {
|
|
24
|
+
field?: string;
|
|
25
|
+
valueSetter?: (data: T, value: unknown) => T;
|
|
26
|
+
}, value: unknown): T;
|
|
15
27
|
/** Native date inputs accept yyyy-MM-dd text only; serialize Date values locally and keep string dates. */
|
|
16
28
|
export declare function toDateInputValue(value: unknown): string;
|
|
17
29
|
/** Parse date input text back to a Date for date columns; text columns keep the typed string and clearing gives null. */
|
|
18
|
-
export declare function parseDateInputValue(rawValue: string, previousValue: unknown, cellDataType?:
|
|
19
|
-
export declare function filterType<T extends object>(column:
|
|
30
|
+
export declare function parseDateInputValue(rawValue: string, previousValue: unknown, cellDataType?: DataTableColumnDef<Record<string, unknown>>["cellDataType"]): unknown;
|
|
31
|
+
export declare function filterType<T extends object>(column: DataTableColumnDef<T>): DataTableFilterType;
|
|
20
32
|
export declare function matchesFilter(value: unknown, filter: DataTableFilter | string | undefined, type: DataTableFilterType): boolean;
|
|
21
33
|
/** Distribute surplus width without allowing pinned offsets to differ from rendered widths. */
|
|
22
|
-
export declare function getFlexSizes
|
|
34
|
+
export declare function getFlexSizes(columns: readonly Pick<DataTableColumnDef<Record<string, unknown>>, "field" | "colId" | "width" | "minWidth" | "maxWidth" | "flex">[], available: number, sizes: Record<string, number>): Record<string, number>;
|
|
23
35
|
//# sourceMappingURL=dataTableModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataTableModel.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/dataTableModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"dataTableModel.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/dataTableModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAErH,0FAA0F;AAC1F,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACnD,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,SAAS,EAAE,SAAS,MAAM,EAAE;WAFV,MAAM;cAAY,MAAM;EAM3C;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgB9H;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAI9E;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,IAAI,EAAE,CAAC,EACP,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAA;CAAE,EAC5F,QAAQ,EAAE,MAAM,GACf,OAAO,CAGT;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;CAAE,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAYnJ;AAKD,2GAA2G;AAC3G,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKvD;AAED,yHAAyH;AACzH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,EACtB,YAAY,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,GACzE,OAAO,CAST;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAK/F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAgD9H;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC,EAAE,EACrI,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCxB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Virtualizer } from '@tanstack/react-virtual';
|
|
2
|
-
import { DataTableApi,
|
|
2
|
+
import { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableInstance, DataTableRow } from './DataTable.types';
|
|
3
3
|
import { DataTableEditSession } from './dataTableEditing';
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
export type DataTableRuntime<T extends object> = {
|
|
6
6
|
table: DataTableInstance<T>;
|
|
7
|
-
definitionsById: Map<string,
|
|
7
|
+
definitionsById: Map<string, DataTableColumnDef<T>>;
|
|
8
8
|
centerRows: DataTableRow<T>[];
|
|
9
9
|
virtualizer: Virtualizer<HTMLDivElement, Element>;
|
|
10
10
|
resolveId: (data: T, index: number) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataTableApi.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/useDataTableApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"useDataTableApi.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/useDataTableApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAsB,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtJ,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC/C,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AACF,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACtC,qBAAqB,CAAC,CAAC,CAAC,EACxB,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,CAClG,CAAC;AACF,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC3C,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC,CAAC;IACzF,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5C,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,EAChD,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,GACZ,EAAE,mBAAmB,CAAC,CAAC,CAAC,mBAuKxB"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ColumnDef } from '@tanstack/react-table';
|
|
2
1
|
import { DataTableAlignmentContext } from './DataTableContext';
|
|
3
|
-
import {
|
|
4
|
-
import { TableFeature, Table, RowModel, CreatedSortFn } from '@tanstack/table-core';
|
|
2
|
+
import { DataTableColumnDef, DataTableContentProps, DataTableInstance } from './DataTable.types';
|
|
5
3
|
import * as React from "react";
|
|
6
4
|
type DataTableInstanceOptions<T extends object> = Pick<DataTableContentProps<T>, "rowData" | "columnDefs" | "getRowId" | "tableOptions" | "externalFilter" | "rowSelection" | "renderSubComponent" | "getRowCanExpand" | "onQuickFilterTextChange"> & {
|
|
7
|
-
defaultColDef:
|
|
5
|
+
defaultColDef: NonNullable<DataTableContentProps<T>["defaultColDef"]>;
|
|
8
6
|
paginationPageSize: number;
|
|
9
7
|
pagination: boolean;
|
|
10
8
|
patches: Record<string, {
|
|
@@ -21,72 +19,7 @@ type DataTableInstanceOptions<T extends object> = Pick<DataTableContentProps<T>,
|
|
|
21
19
|
/** Own TanStack configuration, controlled state precedence and stable row identities. */
|
|
22
20
|
export declare function useDataTableInstance<T extends object>({ rowData, columnDefs, defaultColDef, getRowId, paginationPageSize, tableOptions, externalFilter, rowSelection, pagination, renderSubComponent, getRowCanExpand, onQuickFilterTextChange, patches, alignment, isPrinting, viewportWidth, selectionWidth, searchText, setSearch, }: DataTableInstanceOptions<T>): {
|
|
23
21
|
table: DataTableInstance<T>;
|
|
24
|
-
definitionsById: Map<string,
|
|
25
|
-
colId?: string;
|
|
26
|
-
field?: (string & {}) | (keyof T & string) | undefined;
|
|
27
|
-
headerName?: React.ReactNode;
|
|
28
|
-
width?: number;
|
|
29
|
-
minWidth?: number;
|
|
30
|
-
maxWidth?: number;
|
|
31
|
-
flex?: number;
|
|
32
|
-
sortable?: boolean;
|
|
33
|
-
resizable?: boolean;
|
|
34
|
-
hide?: boolean;
|
|
35
|
-
pinned?: "start" | "end" | "left" | "right";
|
|
36
|
-
filter?: boolean | DataTableFilterType;
|
|
37
|
-
filterOptions?: readonly (string | DataTableFilterOption)[];
|
|
38
|
-
cellDataType?: "text" | "number" | "date" | "dateString" | "boolean";
|
|
39
|
-
editable?: boolean | ((data: T) => boolean) | undefined;
|
|
40
|
-
cellRenderer?: React.ComponentType< DataTableCellParams<T>> | undefined;
|
|
41
|
-
cellEditor?: "number" | "text" | "date" | React.ComponentType< DataTableEditorProps<T>> | undefined;
|
|
42
|
-
valueGetter?: ((params: {
|
|
43
|
-
data: T;
|
|
44
|
-
rowIndex: number;
|
|
45
|
-
}) => unknown) | undefined;
|
|
46
|
-
valueFormatter?: ((params: {
|
|
47
|
-
data: T;
|
|
48
|
-
value: unknown;
|
|
49
|
-
}) => React.ReactNode) | undefined;
|
|
50
|
-
valueParser?: ((params: {
|
|
51
|
-
data: T;
|
|
52
|
-
oldValue: unknown;
|
|
53
|
-
newValue: unknown;
|
|
54
|
-
}) => unknown) | undefined;
|
|
55
|
-
valueSetter?: ((data: T, value: unknown) => T) | undefined;
|
|
56
|
-
getQuickFilterText?: ((params: {
|
|
57
|
-
data: T;
|
|
58
|
-
value: unknown;
|
|
59
|
-
}) => string) | undefined;
|
|
60
|
-
cellClass?: string | ((params: DataTableCellParams<T>) => string) | undefined;
|
|
61
|
-
align?: "start" | "center" | "end";
|
|
62
|
-
hideInPrint?: boolean;
|
|
63
|
-
suppressRowClick?: boolean;
|
|
64
|
-
onKeyDown?: ((event: React.KeyboardEvent, params: DataTableCellParams<T>) => void) | undefined;
|
|
65
|
-
validate?: ((value: unknown, draft: T) => readonly string[] | null) | undefined;
|
|
66
|
-
tableOptions?: Partial<Omit<ColumnDef<{
|
|
67
|
-
columnFilteringFeature: TableFeature;
|
|
68
|
-
globalFilteringFeature: TableFeature;
|
|
69
|
-
columnOrderingFeature: TableFeature;
|
|
70
|
-
columnPinningFeature: TableFeature;
|
|
71
|
-
columnSizingFeature: TableFeature;
|
|
72
|
-
columnResizingFeature: TableFeature;
|
|
73
|
-
columnVisibilityFeature: TableFeature;
|
|
74
|
-
rowExpandingFeature: TableFeature;
|
|
75
|
-
rowPaginationFeature: TableFeature;
|
|
76
|
-
rowPinningFeature: TableFeature;
|
|
77
|
-
rowSelectionFeature: TableFeature;
|
|
78
|
-
rowSortingFeature: TableFeature;
|
|
79
|
-
filteredRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
80
|
-
sortedRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
81
|
-
expandedRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
82
|
-
paginatedRowModel: (table: Table<any, any>) => () => RowModel<any, any>;
|
|
83
|
-
sortFns: {
|
|
84
|
-
alphanumeric: CreatedSortFn<any, any>;
|
|
85
|
-
datetime: CreatedSortFn<any, any>;
|
|
86
|
-
basic: CreatedSortFn<any, any>;
|
|
87
|
-
};
|
|
88
|
-
}, T, any>, "columns" | "footer" | "header" | "id" | "cell" | "accessorKey" | "accessorFn">> | undefined;
|
|
89
|
-
}>;
|
|
22
|
+
definitionsById: Map<string, DataTableColumnDef<T>>;
|
|
90
23
|
sourcesById: Map<string, T>;
|
|
91
24
|
data: T[];
|
|
92
25
|
rowIndices: Map<T, number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataTableInstance.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/useDataTableInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useDataTableInstance.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/useDataTableInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAGrB,iBAAiB,EAGlB,MAAM,mBAAmB,CAAC;AAG3B,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACpD,qBAAqB,CAAC,CAAC,CAAC,EACtB,SAAS,GACT,YAAY,GACZ,UAAU,GACV,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,iBAAiB,GACjB,yBAAyB,CAC5B,GAAG;IACF,aAAa,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACtE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;IAC/D,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,EACrD,OAAO,EACP,UAAU,EACV,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,SAAS,GACV,EAAE,wBAAwB,CAAC,CAAC,CAAC;;;;;;sBAKnB,CAAC,SAAS,MAAM;EAqL1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatablecolumnmenu.es.js","sources":["../src/components/data-table/DataTableColumnMenu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { Filter } from \"@trsys-tech/matrix-icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../button/Button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/Popover\";\nimport { filterType } from \"./dataTableModel\";\nimport { dataTableInputClass } from \"./dataTableStyles\";\nimport type { DataTableInstance, DataTableFeatures, DataTableColumn, DataTableFilter, DataTableFilterOperator } from \"./DataTable.types\";\n\nexport function DataTableColumnMenu<T extends object>({\n table,\n column,\n definition,\n}: {\n table: DataTableInstance<T>;\n column: Column<DataTableFeatures, T>;\n definition: DataTableColumn<T>;\n}) {\n const [open, setOpen] = React.useState(false);\n const [draft, setDraft] = React.useState<DataTableFilter>({ operator: filterType(definition) === \"text\" ? \"contains\" : \"equals\", value: \"\" });\n const type = filterType(definition);\n const coreRows = table.getCoreRowModel().rows;\n const selectOptions = React.useMemo(\n () =>\n open && type === \"select\"\n ? (definition.filterOptions?.map(option => (typeof option === \"string\" ? { value: option, label: option } : option)) ??\n Array.from(\n new Set(\n coreRows\n .map(row => row.getValue(column.id))\n .filter(value => value !== null && value !== undefined && value !== \"\")\n .map(String),\n ),\n )\n .sort()\n .map(value => ({ value, label: value })))\n : [],\n [open, type, coreRows, column.id, definition.filterOptions],\n );\n const operators: DataTableFilterOperator[] =\n type === \"text\"\n ? [\"contains\", \"notContains\", \"equals\", \"notEqual\", \"startsWith\", \"endsWith\", \"blank\", \"notBlank\"]\n : type === \"select\"\n ? [\"equals\", \"notEqual\", \"blank\", \"notBlank\"]\n : [\"equals\", \"notEqual\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\", \"inRange\", \"blank\", \"notBlank\"];\n const labels: Record<DataTableFilterOperator, string> = {\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEqual: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n greaterThan: \"Greater than\",\n greaterThanOrEqual: \"Greater than or equal\",\n lessThan: \"Less than\",\n lessThanOrEqual: \"Less than or equal\",\n inRange: \"Between\",\n blank: \"Blank\",\n notBlank: \"Not blank\",\n };\n const canPin = column.getCanPin();\n const canHide = column.getCanHide();\n if (!column.getCanFilter() && !canPin && !canHide) return null;\n\n return (\n <Popover\n open={open}\n onOpenChange={next => {\n if (next) setDraft((column.getFilterValue() as DataTableFilter) ?? { operator: type === \"text\" ? \"contains\" : \"equals\", value: \"\" });\n setOpen(next);\n }}\n >\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label={`Column options ${column.id}`}\n className={cn(\"mtx-shrink-0 mtx-rounded-sm mtx-p-0.5 hover:mtx-bg-primary-100/80\", column.getIsFiltered() && \"mtx-text-primary\")}\n >\n <Filter className=\"mtx-h-4.5 mtx-w-4.5\" />\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"mtx-w-56 mtx-space-y-2 mtx-text-xs mtx-font-normal\">\n {column.getCanFilter() && (\n <>\n <label className=\"mtx-block\">\n Filter {typeof definition.headerName === \"string\" ? definition.headerName : column.id}\n <select\n aria-label=\"Filter operator\"\n className={dataTableInputClass}\n value={draft.operator}\n onChange={event => setDraft({ ...draft, operator: event.target.value as DataTableFilterOperator })}\n >\n {operators.map(operator => (\n <option key={operator} value={operator}>\n {labels[operator]}\n </option>\n ))}\n </select>\n </label>\n {draft.operator !== \"blank\" &&\n draft.operator !== \"notBlank\" &&\n (type === \"select\" ? (\n <select\n aria-label=\"Filter value\"\n className={dataTableInputClass}\n value={draft.value ?? \"\"}\n onChange={event => setDraft({ ...draft, value: event.target.value })}\n >\n <option value=\"\">All</option>\n {draft.value && !selectOptions.some(option => option.value === draft.value) && <option value={draft.value}>{draft.value}</option>}\n {selectOptions.map(({ value, label }) => (\n <option key={value} value={value}>\n {label}\n </option>\n ))}\n </select>\n ) : (\n <input\n aria-label=\"Filter value\"\n className={dataTableInputClass}\n type={type === \"text\" ? \"text\" : type}\n value={draft.value ?? \"\"}\n onChange={event => setDraft({ ...draft, value: event.target.value })}\n />\n ))}\n {type !== \"select\" && draft.operator === \"inRange\" && (\n <input\n aria-label=\"Filter upper value\"\n className={dataTableInputClass}\n type={type === \"text\" ? \"text\" : type}\n value={draft.valueTo ?? \"\"}\n onChange={event => setDraft({ ...draft, valueTo: event.target.value })}\n />\n )}\n <div className=\"mtx-flex mtx-gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => {\n column.setFilterValue(\n type === \"select\" && !draft.value && draft.operator !== \"blank\" && draft.operator !== \"notBlank\" ? undefined : draft,\n );\n setOpen(false);\n }}\n >\n Apply\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.setFilterValue(undefined);\n setOpen(false);\n }}\n >\n Reset\n </Button>\n </div>\n {(canPin || canHide) && <hr className=\"mtx-border-gray-200\" />}\n </>\n )}\n {(canPin || canHide) && (\n <div className=\"mtx-flex mtx-flex-wrap mtx-gap-1\">\n {canPin && (\n <>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.pin(\"start\");\n setOpen(false);\n }}\n >\n Pin start\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.pin(\"end\");\n setOpen(false);\n }}\n >\n Pin end\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.pin(false);\n setOpen(false);\n }}\n >\n Unpin\n </Button>\n </>\n )}\n {canHide && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.toggleVisibility(false);\n setOpen(false);\n }}\n >\n Hide column\n </Button>\n )}\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n"],"names":["DataTableColumnMenu","table","column","definition","open","setOpen","React","draft","setDraft","filterType","type","coreRows","selectOptions","option","row","value","operators","labels","canPin","canHide","jsxs","Popover","next","jsx","PopoverTrigger","cn","Filter","PopoverContent","Fragment","dataTableInputClass","event","operator","label","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datatablecolumnmenu.es.js","sources":["../src/components/data-table/DataTableColumnMenu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { Filter } from \"@trsys-tech/matrix-icons\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../button/Button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/Popover\";\nimport { filterType } from \"./dataTableModel\";\nimport { dataTableInputClass } from \"./dataTableStyles\";\nimport type { DataTableInstance, DataTableFeatures, DataTableColumnDef, DataTableFilter, DataTableFilterOperator } from \"./DataTable.types\";\n\nexport function DataTableColumnMenu<T extends object>({\n table,\n column,\n definition,\n}: {\n table: DataTableInstance<T>;\n column: Column<DataTableFeatures, T>;\n definition: DataTableColumnDef<T>;\n}) {\n const [open, setOpen] = React.useState(false);\n const [draft, setDraft] = React.useState<DataTableFilter>({ operator: filterType(definition) === \"text\" ? \"contains\" : \"equals\", value: \"\" });\n const type = filterType(definition);\n const coreRows = table.getCoreRowModel().rows;\n const selectOptions = React.useMemo(\n () =>\n open && type === \"select\"\n ? (definition.filterOptions?.map(option => (typeof option === \"string\" ? { value: option, label: option } : option)) ??\n Array.from(\n new Set(\n coreRows\n .map(row => row.getValue(column.id))\n .filter(value => value !== null && value !== undefined && value !== \"\")\n .map(String),\n ),\n )\n .sort()\n .map(value => ({ value, label: value })))\n : [],\n [open, type, coreRows, column.id, definition.filterOptions],\n );\n const operators: DataTableFilterOperator[] =\n type === \"text\"\n ? [\"contains\", \"notContains\", \"equals\", \"notEqual\", \"startsWith\", \"endsWith\", \"blank\", \"notBlank\"]\n : type === \"select\"\n ? [\"equals\", \"notEqual\", \"blank\", \"notBlank\"]\n : [\"equals\", \"notEqual\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\", \"inRange\", \"blank\", \"notBlank\"];\n const labels: Record<DataTableFilterOperator, string> = {\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEqual: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n greaterThan: \"Greater than\",\n greaterThanOrEqual: \"Greater than or equal\",\n lessThan: \"Less than\",\n lessThanOrEqual: \"Less than or equal\",\n inRange: \"Between\",\n blank: \"Blank\",\n notBlank: \"Not blank\",\n };\n const canPin = column.getCanPin();\n const canHide = column.getCanHide();\n if (!column.getCanFilter() && !canPin && !canHide) return null;\n\n return (\n <Popover\n open={open}\n onOpenChange={next => {\n if (next) setDraft((column.getFilterValue() as DataTableFilter) ?? { operator: type === \"text\" ? \"contains\" : \"equals\", value: \"\" });\n setOpen(next);\n }}\n >\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label={`Column options ${column.id}`}\n className={cn(\"mtx-shrink-0 mtx-rounded-sm mtx-p-0.5 hover:mtx-bg-primary-100/80\", column.getIsFiltered() && \"mtx-text-primary\")}\n >\n <Filter className=\"mtx-h-4.5 mtx-w-4.5\" />\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"mtx-w-56 mtx-space-y-2 mtx-text-xs mtx-font-normal\">\n {column.getCanFilter() && (\n <>\n <label className=\"mtx-block\">\n Filter {typeof definition.headerName === \"string\" ? definition.headerName : column.id}\n <select\n aria-label=\"Filter operator\"\n className={dataTableInputClass}\n value={draft.operator}\n onChange={event => setDraft({ ...draft, operator: event.target.value as DataTableFilterOperator })}\n >\n {operators.map(operator => (\n <option key={operator} value={operator}>\n {labels[operator]}\n </option>\n ))}\n </select>\n </label>\n {draft.operator !== \"blank\" &&\n draft.operator !== \"notBlank\" &&\n (type === \"select\" ? (\n <select\n aria-label=\"Filter value\"\n className={dataTableInputClass}\n value={draft.value ?? \"\"}\n onChange={event => setDraft({ ...draft, value: event.target.value })}\n >\n <option value=\"\">All</option>\n {draft.value && !selectOptions.some(option => option.value === draft.value) && <option value={draft.value}>{draft.value}</option>}\n {selectOptions.map(({ value, label }) => (\n <option key={value} value={value}>\n {label}\n </option>\n ))}\n </select>\n ) : (\n <input\n aria-label=\"Filter value\"\n className={dataTableInputClass}\n type={type === \"text\" ? \"text\" : type}\n value={draft.value ?? \"\"}\n onChange={event => setDraft({ ...draft, value: event.target.value })}\n />\n ))}\n {type !== \"select\" && draft.operator === \"inRange\" && (\n <input\n aria-label=\"Filter upper value\"\n className={dataTableInputClass}\n type={type === \"text\" ? \"text\" : type}\n value={draft.valueTo ?? \"\"}\n onChange={event => setDraft({ ...draft, valueTo: event.target.value })}\n />\n )}\n <div className=\"mtx-flex mtx-gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => {\n column.setFilterValue(\n type === \"select\" && !draft.value && draft.operator !== \"blank\" && draft.operator !== \"notBlank\" ? undefined : draft,\n );\n setOpen(false);\n }}\n >\n Apply\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.setFilterValue(undefined);\n setOpen(false);\n }}\n >\n Reset\n </Button>\n </div>\n {(canPin || canHide) && <hr className=\"mtx-border-gray-200\" />}\n </>\n )}\n {(canPin || canHide) && (\n <div className=\"mtx-flex mtx-flex-wrap mtx-gap-1\">\n {canPin && (\n <>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.pin(\"start\");\n setOpen(false);\n }}\n >\n Pin start\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.pin(\"end\");\n setOpen(false);\n }}\n >\n Pin end\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.pin(false);\n setOpen(false);\n }}\n >\n Unpin\n </Button>\n </>\n )}\n {canHide && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"text\"\n onClick={() => {\n column.toggleVisibility(false);\n setOpen(false);\n }}\n >\n Hide column\n </Button>\n )}\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n"],"names":["DataTableColumnMenu","table","column","definition","open","setOpen","React","draft","setDraft","filterType","type","coreRows","selectOptions","option","row","value","operators","labels","canPin","canHide","jsxs","Popover","next","jsx","PopoverTrigger","cn","Filter","PopoverContent","Fragment","dataTableInputClass","event","operator","label","Button"],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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, DataTableColumnDef, 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, DataTableColumnDef<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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"}
|
|
@@ -1 +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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"}
|
|
1
|
+
{"version":3,"file":"datatablemodel.es.js","sources":["../src/components/data-table/dataTableModel.ts"],"sourcesContent":["import type { DataTableColumnDef, 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(column: { colId?: string; field?: string }): 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>(\n data: T,\n column: { field?: string; valueGetter?: (params: { data: T; rowIndex: number }) => unknown },\n rowIndex: number,\n): 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: { field?: string; valueSetter?: (data: T, value: unknown) => 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?: DataTableColumnDef<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: DataTableColumnDef<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(\n columns: readonly Pick<DataTableColumnDef<Record<string, unknown>>, \"field\" | \"colId\" | \"width\" | \"minWidth\" | \"maxWidth\" | \"flex\">[],\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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"}
|
|
@@ -102,7 +102,16 @@ function be({ data: o, rowId: i, index: g, row: a, pinned: y, ...P }) {
|
|
|
102
102
|
}
|
|
103
103
|
),
|
|
104
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 = {
|
|
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 = {
|
|
106
|
+
data: o,
|
|
107
|
+
value: n,
|
|
108
|
+
rowId: i,
|
|
109
|
+
rowIndex: g,
|
|
110
|
+
columnId: t.id,
|
|
111
|
+
api: d,
|
|
112
|
+
isEditing: !!E,
|
|
113
|
+
pinned: y
|
|
114
|
+
}, 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
115
|
const s = L.current;
|
|
107
116
|
if (s)
|
|
108
117
|
try {
|
|
@@ -1 +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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"}
|
|
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 DataTableColumnDef,\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, DataTableColumnDef<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> = {\n data,\n value,\n rowId,\n rowIndex: index,\n columnId: column.id,\n api,\n isEditing: !!editing,\n pinned,\n };\n // The definition and value were resolved together; erase the field only at this runtime dispatch boundary.\n const Renderer = definition.cellRenderer as React.ComponentType<DataTableCellParams<T>> | undefined;\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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -63,5 +63,5 @@ export { DataTable, DataTableContent, DataTableActionBar, type DataTableProps, t
|
|
|
63
63
|
export { DataTableAlignment, type DataTableAlignmentProps } from './components/data-table/DataTableAlignment';
|
|
64
64
|
export { useDataTable } from './components/data-table/DataTableContext';
|
|
65
65
|
export { DataTableSearchAction, DataTableFreezeAction, DataTablePrintAction, DataTableRefreshAction, DataTableDeleteAction, DataTableExtraActions, DataTableColumnsAction, type DataTableSearchActionProps, type DataTableFreezeActionProps, type DataTablePrintActionProps, type DataTableRefreshActionProps, type DataTableDeleteActionProps, type DataTableExtraActionsProps, type DataTableColumnsActionProps, } from './components/data-table/DataTableActions';
|
|
66
|
-
export type { DataTableContentProps,
|
|
66
|
+
export type { DataTableContentProps, DataTableColumnDef, DataTableApi, DataTableInstance, DataTableState, DataTableFeatures, DataTableRow, DataTableCellParams, DataTableEditorProps, DataTableEditEvent, DataTableSelection, DataTableFilter, DataTableFilterOption, DataTableFilterType, DataTableFilterOperator, } from './components/data-table/DataTable.types';
|
|
67
67
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usedatatableapi.es.js","sources":["../src/components/data-table/useDataTableApi.ts"],"sourcesContent":["import * as React from \"react\";\nimport type { Virtualizer } from \"@tanstack/react-virtual\";\nimport { getCellValue, getColumnId } from \"./dataTableModel\";\nimport { printDataTable } from \"./dataTablePrint\";\nimport type { DataTableApi, DataTableColumn, DataTableContentProps, DataTableEditEvent, DataTableInstance, DataTableRow } from \"./DataTable.types\";\nimport type { DataTableEditSession } from \"./dataTableEditing\";\n\nexport type DataTableRuntime<T extends object> = {\n table: DataTableInstance<T>;\n definitionsById: Map<string, DataTableColumn<T>>;\n centerRows: DataTableRow<T>[];\n virtualizer: Virtualizer<HTMLDivElement, Element>;\n resolveId: (data: T, index: number) => string;\n rowIndices: Map<T, number>;\n sourcesById: Map<string, T>;\n useVirtualRows: boolean;\n pagination: boolean;\n serverPagination: boolean;\n};\ntype EditConfig<T extends object> = Pick<\n DataTableContentProps<T>,\n \"columnDefs\" | \"validateRow\" | \"readOnlyEdit\" | \"onEditCommit\" | \"onEditRequest\" | \"onEditCancel\"\n>;\ntype DataTableApiOptions<T extends object> = {\n runtime: React.MutableRefObject<DataTableRuntime<T>>;\n editRef: React.MutableRefObject<DataTableEditSession<T> | null>;\n configRef: React.MutableRefObject<EditConfig<T>>;\n updateEdit: (next: DataTableEditSession<T> | null) => void;\n setPatches: React.Dispatch<React.SetStateAction<Record<string, { source: T; data: T }>>>;\n contentRef: React.RefObject<HTMLDivElement>;\n viewportRef: React.RefObject<HTMLDivElement>;\n setPrinting: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\n/** Stable public API; methods read current rows, callbacks and layout through refs. */\nexport function useDataTableApi<T extends object>({\n runtime,\n editRef,\n configRef,\n updateEdit,\n setPatches,\n contentRef,\n viewportRef,\n setPrinting,\n}: DataTableApiOptions<T>) {\n const printSessions = React.useRef(0);\n const printScroll = React.useRef({ top: 0, left: 0 });\n const api = React.useMemo<DataTableApi<T>>(() => {\n const getRow = (id: string | number) => runtime.current.table.getCoreRowModel().rowsById[String(id)];\n const stopEditing = (cancel = false): boolean => {\n const session = editRef.current;\n if (!session) return true;\n const config = configRef.current;\n const event: DataTableEditEvent<T> = { rowId: session.rowId, original: session.original, data: session.draft, changes: session.changes };\n if (cancel) {\n updateEdit(null);\n config.onEditCancel?.(event);\n return true;\n }\n const errors = [...Object.values(session.parseErrors), ...(config.validateRow?.(session.draft, session.original) ?? [])];\n for (const column of runtime.current.definitionsById.values()) {\n const editable = typeof column.editable === \"function\" ? column.editable(session.original) : column.editable;\n if (editable && (!session.columnId || session.columnId === getColumnId(column))) {\n errors.push(\n ...(column.validate?.(getCellValue(session.draft, column, runtime.current.rowIndices.get(session.original) ?? 0), session.draft) ?? []),\n );\n }\n }\n if (errors.length) {\n updateEdit({ ...session, errors });\n return false;\n }\n if (Object.keys(session.changes).length) {\n if (config.readOnlyEdit) config.onEditRequest?.(event);\n else {\n setPatches(previous => ({ ...previous, [session.rowId]: { source: session.source, data: session.draft } }));\n config.onEditCommit?.(event);\n }\n }\n updateEdit(null);\n return true;\n };\n const focusCell = (id: string | number, columnId: string) => {\n const rowId = String(id);\n requestAnimationFrame(() =>\n requestAnimationFrame(() => {\n const cell = Array.from(contentRef.current?.querySelectorAll<HTMLElement>(\"[data-row-id][data-column-id]\") ?? []).find(\n element => element.dataset.rowId === rowId && element.dataset.columnId === columnId,\n );\n const control = Array.from(cell?.querySelectorAll<HTMLElement>(\"input,button,[tabindex='0']\") ?? []).find(\n element =>\n !element.matches(\":disabled, input[type='hidden']\") && !element.closest(\"[hidden],[inert]\") && element.getClientRects().length > 0,\n );\n (control ?? cell)?.focus();\n }),\n );\n };\n const scrollToRow = (id: string | number, align: \"start\" | \"center\" | \"end\" = \"center\") => {\n const rowId = String(id);\n const current = runtime.current;\n const allIndex = current.table.getPrePaginatedRowModel().rows.findIndex(row => row.id === rowId);\n if (allIndex >= 0 && current.pagination && !current.table.options.manualPagination) {\n current.table.setPageIndex(Math.floor(allIndex / current.table.atoms.pagination.get().pageSize));\n }\n requestAnimationFrame(() => {\n const latest = runtime.current;\n const index = latest.centerRows.findIndex(row => row.id === rowId);\n if (index >= 0 && latest.useVirtualRows) latest.virtualizer.scrollToIndex(index, { align });\n else\n Array.from(contentRef.current?.querySelectorAll<HTMLElement>(\"[role=row][data-row-id]\") ?? [])\n .find(element => element.dataset.rowId === rowId)\n ?.scrollIntoView({ block: align, inline: \"nearest\" });\n });\n };\n const start = (id: string | number, columnId?: string) => {\n const rowId = String(id);\n if (!stopEditing()) return false;\n const row = getRow(rowId);\n if (!row) return false;\n const editable = Array.from(runtime.current.definitionsById.values()).filter(column => {\n return (\n runtime.current.table.getColumn(getColumnId(column))?.getIsVisible() &&\n (typeof column.editable === \"function\" ? column.editable(row.original) : column.editable) &&\n (!!column.field || !!column.valueSetter)\n );\n });\n const column = columnId ? editable.find(item => getColumnId(item) === columnId) : editable[0];\n if (!column) return false;\n updateEdit({\n rowId,\n columnId,\n source: runtime.current.sourcesById.get(rowId)!,\n original: row.original,\n draft: row.original,\n changes: {},\n parseErrors: {},\n errors: [],\n });\n scrollToRow(rowId);\n focusCell(rowId, getColumnId(column));\n return true;\n };\n const preparePrint = async () => {\n if (printSessions.current === 0) printScroll.current = { top: viewportRef.current?.scrollTop ?? 0, left: viewportRef.current?.scrollLeft ?? 0 };\n printSessions.current++;\n setPrinting(true);\n await new Promise<void>(resolve => requestAnimationFrame(() => requestAnimationFrame(() => resolve())));\n let restored = false;\n return () => {\n if (restored) return;\n restored = true;\n printSessions.current--;\n if (printSessions.current > 0) return;\n setPrinting(false);\n requestAnimationFrame(() => {\n if (viewportRef.current) {\n viewportRef.current.scrollTop = printScroll.current.top;\n viewportRef.current.scrollLeft = printScroll.current.left;\n }\n });\n };\n };\n return {\n get table() {\n return runtime.current.table;\n },\n getSelectedRows: () => runtime.current.table.getSelectedRowModel().rows.map(row => row.original),\n setSelectedRowIds: ids => {\n const rows = ids.map(getRow).filter(row => row?.getCanSelect());\n const selected = runtime.current.table.options.enableMultiRowSelection === false ? rows.slice(0, 1) : rows;\n runtime.current.table.setRowSelection(Object.fromEntries(selected.map(row => [row.id, true])));\n },\n selectAll: (scope = \"filtered\") => {\n const current = runtime.current.table;\n const rows = (\n scope === \"all\" ? current.getCoreRowModel() : scope === \"currentPage\" ? current.getRowModel() : current.getFilteredRowModel()\n ).rows.filter(row => row.getCanSelect());\n const selected = Object.fromEntries(\n (current.options.enableMultiRowSelection === false ? rows.slice(0, 1) : rows).map(row => [row.id, true as const]),\n );\n current.setRowSelection(previous => (current.options.enableMultiRowSelection === false ? selected : { ...previous, ...selected }));\n },\n deselectAll: () => runtime.current.table.resetRowSelection(true),\n pinRows: (ids, position) => {\n const current = runtime.current.table;\n const rowIds = ids.map(String);\n current.setRowPinning(previous => ({\n top: [...(previous.top ?? []).filter(id => !rowIds.includes(id)), ...(position === \"top\" ? rowIds.filter(id => !!getRow(id)) : [])],\n bottom: [\n ...(previous.bottom ?? []).filter(id => !rowIds.includes(id)),\n ...(position === \"bottom\" ? rowIds.filter(id => !!getRow(id)) : []),\n ],\n }));\n },\n startEditingCell: ({ rowId, columnId }) => start(rowId, columnId),\n startEditingRow: rowId => start(rowId),\n stopEditing,\n focusCell,\n scrollToRow,\n preparePrint,\n print: async () => {\n const restore = await preparePrint();\n try {\n if (contentRef.current) await printDataTable(contentRef.current);\n } finally {\n restore();\n }\n },\n };\n }, [configRef, contentRef, editRef, runtime, setPatches, setPrinting, updateEdit, viewportRef]);\n return api;\n}\n"],"names":["useDataTableApi","runtime","editRef","configRef","updateEdit","setPatches","contentRef","viewportRef","setPrinting","printSessions","React","printScroll","getRow","id","stopEditing","cancel","session","config","event","errors","column","getColumnId","getCellValue","previous","focusCell","columnId","rowId","cell","element","scrollToRow","align","current","allIndex","row","latest","index","start","editable","item","preparePrint","resolve","restored","ids","rows","selected","scope","position","rowIds","restore","printDataTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usedatatableapi.es.js","sources":["../src/components/data-table/useDataTableApi.ts"],"sourcesContent":["import * as React from \"react\";\nimport type { Virtualizer } from \"@tanstack/react-virtual\";\nimport { getCellValue, getColumnId } from \"./dataTableModel\";\nimport { printDataTable } from \"./dataTablePrint\";\nimport type { DataTableApi, DataTableColumnDef, DataTableContentProps, DataTableEditEvent, DataTableInstance, DataTableRow } from \"./DataTable.types\";\nimport type { DataTableEditSession } from \"./dataTableEditing\";\n\nexport type DataTableRuntime<T extends object> = {\n table: DataTableInstance<T>;\n definitionsById: Map<string, DataTableColumnDef<T>>;\n centerRows: DataTableRow<T>[];\n virtualizer: Virtualizer<HTMLDivElement, Element>;\n resolveId: (data: T, index: number) => string;\n rowIndices: Map<T, number>;\n sourcesById: Map<string, T>;\n useVirtualRows: boolean;\n pagination: boolean;\n serverPagination: boolean;\n};\ntype EditConfig<T extends object> = Pick<\n DataTableContentProps<T>,\n \"columnDefs\" | \"validateRow\" | \"readOnlyEdit\" | \"onEditCommit\" | \"onEditRequest\" | \"onEditCancel\"\n>;\ntype DataTableApiOptions<T extends object> = {\n runtime: React.MutableRefObject<DataTableRuntime<T>>;\n editRef: React.MutableRefObject<DataTableEditSession<T> | null>;\n configRef: React.MutableRefObject<EditConfig<T>>;\n updateEdit: (next: DataTableEditSession<T> | null) => void;\n setPatches: React.Dispatch<React.SetStateAction<Record<string, { source: T; data: T }>>>;\n contentRef: React.RefObject<HTMLDivElement>;\n viewportRef: React.RefObject<HTMLDivElement>;\n setPrinting: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\n/** Stable public API; methods read current rows, callbacks and layout through refs. */\nexport function useDataTableApi<T extends object>({\n runtime,\n editRef,\n configRef,\n updateEdit,\n setPatches,\n contentRef,\n viewportRef,\n setPrinting,\n}: DataTableApiOptions<T>) {\n const printSessions = React.useRef(0);\n const printScroll = React.useRef({ top: 0, left: 0 });\n const api = React.useMemo<DataTableApi<T>>(() => {\n const getRow = (id: string | number) => runtime.current.table.getCoreRowModel().rowsById[String(id)];\n const stopEditing = (cancel = false): boolean => {\n const session = editRef.current;\n if (!session) return true;\n const config = configRef.current;\n const event: DataTableEditEvent<T> = { rowId: session.rowId, original: session.original, data: session.draft, changes: session.changes };\n if (cancel) {\n updateEdit(null);\n config.onEditCancel?.(event);\n return true;\n }\n const errors = [...Object.values(session.parseErrors), ...(config.validateRow?.(session.draft, session.original) ?? [])];\n for (const column of runtime.current.definitionsById.values()) {\n const editable = typeof column.editable === \"function\" ? column.editable(session.original) : column.editable;\n if (editable && (!session.columnId || session.columnId === getColumnId(column))) {\n errors.push(\n ...(column.validate?.(getCellValue(session.draft, column, runtime.current.rowIndices.get(session.original) ?? 0), session.draft) ?? []),\n );\n }\n }\n if (errors.length) {\n updateEdit({ ...session, errors });\n return false;\n }\n if (Object.keys(session.changes).length) {\n if (config.readOnlyEdit) config.onEditRequest?.(event);\n else {\n setPatches(previous => ({ ...previous, [session.rowId]: { source: session.source, data: session.draft } }));\n config.onEditCommit?.(event);\n }\n }\n updateEdit(null);\n return true;\n };\n const focusCell = (id: string | number, columnId: string) => {\n const rowId = String(id);\n requestAnimationFrame(() =>\n requestAnimationFrame(() => {\n const cell = Array.from(contentRef.current?.querySelectorAll<HTMLElement>(\"[data-row-id][data-column-id]\") ?? []).find(\n element => element.dataset.rowId === rowId && element.dataset.columnId === columnId,\n );\n const control = Array.from(cell?.querySelectorAll<HTMLElement>(\"input,button,[tabindex='0']\") ?? []).find(\n element =>\n !element.matches(\":disabled, input[type='hidden']\") && !element.closest(\"[hidden],[inert]\") && element.getClientRects().length > 0,\n );\n (control ?? cell)?.focus();\n }),\n );\n };\n const scrollToRow = (id: string | number, align: \"start\" | \"center\" | \"end\" = \"center\") => {\n const rowId = String(id);\n const current = runtime.current;\n const allIndex = current.table.getPrePaginatedRowModel().rows.findIndex(row => row.id === rowId);\n if (allIndex >= 0 && current.pagination && !current.table.options.manualPagination) {\n current.table.setPageIndex(Math.floor(allIndex / current.table.atoms.pagination.get().pageSize));\n }\n requestAnimationFrame(() => {\n const latest = runtime.current;\n const index = latest.centerRows.findIndex(row => row.id === rowId);\n if (index >= 0 && latest.useVirtualRows) latest.virtualizer.scrollToIndex(index, { align });\n else\n Array.from(contentRef.current?.querySelectorAll<HTMLElement>(\"[role=row][data-row-id]\") ?? [])\n .find(element => element.dataset.rowId === rowId)\n ?.scrollIntoView({ block: align, inline: \"nearest\" });\n });\n };\n const start = (id: string | number, columnId?: string) => {\n const rowId = String(id);\n if (!stopEditing()) return false;\n const row = getRow(rowId);\n if (!row) return false;\n const editable = Array.from(runtime.current.definitionsById.values()).filter(column => {\n return (\n runtime.current.table.getColumn(getColumnId(column))?.getIsVisible() &&\n (typeof column.editable === \"function\" ? column.editable(row.original) : column.editable) &&\n (!!column.field || !!column.valueSetter)\n );\n });\n const column = columnId ? editable.find(item => getColumnId(item) === columnId) : editable[0];\n if (!column) return false;\n updateEdit({\n rowId,\n columnId,\n source: runtime.current.sourcesById.get(rowId)!,\n original: row.original,\n draft: row.original,\n changes: {},\n parseErrors: {},\n errors: [],\n });\n scrollToRow(rowId);\n focusCell(rowId, getColumnId(column));\n return true;\n };\n const preparePrint = async () => {\n if (printSessions.current === 0) printScroll.current = { top: viewportRef.current?.scrollTop ?? 0, left: viewportRef.current?.scrollLeft ?? 0 };\n printSessions.current++;\n setPrinting(true);\n await new Promise<void>(resolve => requestAnimationFrame(() => requestAnimationFrame(() => resolve())));\n let restored = false;\n return () => {\n if (restored) return;\n restored = true;\n printSessions.current--;\n if (printSessions.current > 0) return;\n setPrinting(false);\n requestAnimationFrame(() => {\n if (viewportRef.current) {\n viewportRef.current.scrollTop = printScroll.current.top;\n viewportRef.current.scrollLeft = printScroll.current.left;\n }\n });\n };\n };\n return {\n get table() {\n return runtime.current.table;\n },\n getSelectedRows: () => runtime.current.table.getSelectedRowModel().rows.map(row => row.original),\n setSelectedRowIds: ids => {\n const rows = ids.map(getRow).filter(row => row?.getCanSelect());\n const selected = runtime.current.table.options.enableMultiRowSelection === false ? rows.slice(0, 1) : rows;\n runtime.current.table.setRowSelection(Object.fromEntries(selected.map(row => [row.id, true])));\n },\n selectAll: (scope = \"filtered\") => {\n const current = runtime.current.table;\n const rows = (\n scope === \"all\" ? current.getCoreRowModel() : scope === \"currentPage\" ? current.getRowModel() : current.getFilteredRowModel()\n ).rows.filter(row => row.getCanSelect());\n const selected = Object.fromEntries(\n (current.options.enableMultiRowSelection === false ? rows.slice(0, 1) : rows).map(row => [row.id, true as const]),\n );\n current.setRowSelection(previous => (current.options.enableMultiRowSelection === false ? selected : { ...previous, ...selected }));\n },\n deselectAll: () => runtime.current.table.resetRowSelection(true),\n pinRows: (ids, position) => {\n const current = runtime.current.table;\n const rowIds = ids.map(String);\n current.setRowPinning(previous => ({\n top: [...(previous.top ?? []).filter(id => !rowIds.includes(id)), ...(position === \"top\" ? rowIds.filter(id => !!getRow(id)) : [])],\n bottom: [\n ...(previous.bottom ?? []).filter(id => !rowIds.includes(id)),\n ...(position === \"bottom\" ? rowIds.filter(id => !!getRow(id)) : []),\n ],\n }));\n },\n startEditingCell: ({ rowId, columnId }) => start(rowId, columnId),\n startEditingRow: rowId => start(rowId),\n stopEditing,\n focusCell,\n scrollToRow,\n preparePrint,\n print: async () => {\n const restore = await preparePrint();\n try {\n if (contentRef.current) await printDataTable(contentRef.current);\n } finally {\n restore();\n }\n },\n };\n }, [configRef, contentRef, editRef, runtime, setPatches, setPrinting, updateEdit, viewportRef]);\n return api;\n}\n"],"names":["useDataTableApi","runtime","editRef","configRef","updateEdit","setPatches","contentRef","viewportRef","setPrinting","printSessions","React","printScroll","getRow","id","stopEditing","cancel","session","config","event","errors","column","getColumnId","getCellValue","previous","focusCell","columnId","rowId","cell","element","scrollToRow","align","current","allIndex","row","latest","index","start","editable","item","preparePrint","resolve","restored","ids","rows","selected","scope","position","rowIds","restore","printDataTable"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usedatatableinstance.es.js","sources":["../src/components/data-table/useDataTableInstance.ts"],"sourcesContent":["import * as React from \"react\";\nimport { functionalUpdate, useTable, type ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableAlignmentContext } from \"./DataTableContext\";\nimport { dataTableFeatures } from \"./dataTableFeatures\";\nimport { filterType, getCellValue, getColumnId, getFlexSizes, matchesFilter } from \"./dataTableModel\";\nimport type {\n DataTableColumn,\n DataTableContentProps,\n DataTableFeatures,\n DataTableFilter,\n DataTableInstance,\n DataTableRow,\n DataTableState,\n} from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\ntype DataTableInstanceOptions<T extends object> = Pick<\n DataTableContentProps<T>,\n | \"rowData\"\n | \"columnDefs\"\n | \"getRowId\"\n | \"tableOptions\"\n | \"externalFilter\"\n | \"rowSelection\"\n | \"renderSubComponent\"\n | \"getRowCanExpand\"\n | \"onQuickFilterTextChange\"\n> & {\n defaultColDef: Partial<DataTableColumn<T>>;\n paginationPageSize: number;\n pagination: boolean;\n patches: Record<string, { source: T; data: T }>;\n alignment: React.ContextType<typeof DataTableAlignmentContext>;\n isPrinting: boolean;\n viewportWidth: number;\n selectionWidth: number;\n searchText: string;\n setSearch: (value: string) => void;\n};\n\n/** Own TanStack configuration, controlled state precedence and stable row identities. */\nexport function useDataTableInstance<T extends object>({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n}: DataTableInstanceOptions<T>) {\n const [columnSizing, setColumnSizing] = React.useState<DataTableState[\"columnSizing\"]>(tableOptions?.initialState?.columnSizing ?? {});\n const [columnVisibility, setColumnVisibility] = React.useState<DataTableState[\"columnVisibility\"]>({});\n const [columnFilters, setColumnFilters] = React.useState<DataTableState[\"columnFilters\"]>(tableOptions?.initialState?.columnFilters ?? []);\n const resolveId = React.useCallback(\n (data: T, index: number) => String(getRowId?.(data, index) ?? (data as { id?: unknown } | null)?.id ?? index),\n [getRowId],\n );\n const definitions = React.useMemo(() => {\n const result = columnDefs.map(column => ({ ...defaultColDef, ...column }));\n const ids = result.map(getColumnId);\n if (new Set(ids).size !== ids.length) throw new Error(\"DataTable column ids must be unique.\");\n return result;\n }, [columnDefs, defaultColDef]);\n const definitionsById = React.useMemo(() => new Map(definitions.map(column => [getColumnId(column), column])), [definitions]);\n const sourcesById = React.useMemo(() => {\n const entries = (rowData ?? emptyRows).map((row, index) => [resolveId(row, index), row] as const);\n if (new Set(entries.map(([id]) => id)).size !== entries.length) throw new Error(\"DataTable row ids must be unique.\");\n return new Map(entries);\n }, [rowData, resolveId]);\n const data = React.useMemo(\n () =>\n (rowData ?? emptyRows).map((row, index) => {\n const patch = patches[resolveId(row, index)];\n return patch?.source === row ? patch.data : row;\n }),\n [rowData, patches, resolveId],\n );\n // Keep original indices/ids through external filtering; index ids must not shift when a chip changes.\n const rowIndices = React.useMemo(() => new Map(data.map((row, index) => [row, index])), [data]);\n const initialState = React.useMemo(\n () => ({\n columnVisibility: Object.fromEntries(definitions.filter(column => column.hide).map(column => [getColumnId(column), false])),\n columnPinning: {\n start: definitions.filter(column => column.pinned === \"left\" || column.pinned === \"start\").map(getColumnId),\n end: definitions.filter(column => column.pinned === \"right\" || column.pinned === \"end\").map(getColumnId),\n },\n pagination: { pageIndex: 0, pageSize: paginationPageSize },\n ...tableOptions?.initialState,\n }),\n [definitions, paginationPageSize, tableOptions?.initialState],\n );\n\n const effectiveFilters = React.useMemo(\n () => [\n ...(tableOptions?.state?.columnFilters ?? columnFilters).filter(filter => filter.id !== \"__external\"),\n ...(externalFilter ? [{ id: \"__external\", value: externalFilter }] : []),\n ],\n [tableOptions?.state?.columnFilters, columnFilters, externalFilter],\n );\n const effectiveVisibility = React.useMemo<DataTableState[\"columnVisibility\"]>(\n () => ({\n ...initialState.columnVisibility,\n ...columnVisibility,\n ...alignment?.state.columnVisibility,\n ...tableOptions?.state?.columnVisibility,\n __external: false,\n }),\n [initialState.columnVisibility, columnVisibility, alignment?.state.columnVisibility, tableOptions?.state?.columnVisibility],\n );\n const effectiveSizing = tableOptions?.state?.columnSizing ?? alignment?.state.columnSizing ?? columnSizing;\n const flexSizes = React.useMemo(\n () =>\n getFlexSizes(\n definitions.filter(column => effectiveVisibility[getColumnId(column)] !== false && (!isPrinting || !column.hideInPrint)),\n Math.max(0, viewportWidth - selectionWidth),\n effectiveSizing,\n ),\n [definitions, effectiveVisibility, isPrinting, viewportWidth, selectionWidth, effectiveSizing],\n );\n const columns = React.useMemo<ColumnDef<DataTableFeatures, T, any>[]>(\n () => [\n ...definitions.map(column => ({\n id: getColumnId(column),\n header: typeof column.headerName === \"string\" ? column.headerName : getColumnId(column),\n accessorFn: (row: T, index: number) => getCellValue(row, column, rowIndices.get(row) ?? index),\n size: flexSizes[getColumnId(column)] ?? column.width ?? 150,\n minSize: column.minWidth ?? 60,\n maxSize: column.maxWidth,\n enableSorting: column.sortable !== false && (!!column.field || !!column.valueGetter),\n enableColumnFilter: !!column.filter,\n enableGlobalFilter: !!column.field || !!column.valueGetter,\n enableResizing: column.resizable !== false,\n enableHiding: false,\n enablePinning: false,\n sortFn:\n column.cellDataType === \"number\" ? (\"basic\" as const) : column.cellDataType === \"date\" ? (\"datetime\" as const) : (\"alphanumeric\" as const),\n filterFn: (row: DataTableRow<T>, id: string, value: DataTableFilter) => matchesFilter(row.getValue(id), value, filterType(column)),\n ...column.tableOptions,\n })),\n {\n id: \"__external\",\n enableHiding: false,\n enablePinning: false,\n accessorFn: () => true,\n enableGlobalFilter: false,\n enableSorting: false,\n filterFn: (row, _id, predicate: (data: T) => boolean) => predicate(row.original),\n },\n ],\n [definitions, rowIndices, flexSizes],\n );\n const table: DataTableInstance<T> = useTable<DataTableFeatures, T>({\n columnResizeMode: \"onChange\",\n sortDescFirst: false,\n keepPinnedRows: true,\n enableRowSelection: row => !!rowSelection && (rowSelection.isRowSelectable?.(row.original) ?? true),\n enableMultiRowSelection: rowSelection?.mode === \"multiRow\",\n enableSubRowSelection: false,\n manualPagination: !pagination,\n getColumnCanGlobalFilter: column => {\n const definition = definitionsById.get(column.id);\n return !!definition && (!!definition.field || !!definition.valueGetter);\n },\n globalFilterFn: (row, id, value) => {\n const column = definitionsById.get(id);\n const cellValue = row.getValue(id);\n return String(column?.getQuickFilterText?.({ data: row.original, value: cellValue }) ?? cellValue ?? \"\")\n .toLocaleLowerCase()\n .includes(String(value).toLocaleLowerCase());\n },\n ...tableOptions,\n getRowCanExpand: row =>\n !!renderSubComponent && tableOptions?.enableExpanding !== false && (getRowCanExpand?.(row) ?? tableOptions?.getRowCanExpand?.(row) ?? true),\n features: dataTableFeatures,\n columns,\n data,\n getRowId: (row, index) => resolveId(row, rowIndices.get(row) ?? index),\n initialState,\n state: {\n ...alignment?.state,\n ...tableOptions?.state,\n columnSizing: effectiveSizing,\n columnVisibility: effectiveVisibility,\n columnFilters: effectiveFilters,\n globalFilter: searchText,\n },\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n setColumnSizing(next);\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n setColumnVisibility(next);\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n onColumnFiltersChange: updater => {\n const update = (previous: DataTableState[\"columnFilters\"]) => functionalUpdate(updater, previous).filter(filter => filter.id !== \"__external\");\n if (tableOptions?.state?.columnFilters === undefined) setColumnFilters(update);\n tableOptions?.onColumnFiltersChange?.(update);\n },\n onGlobalFilterChange: updater => {\n const value = functionalUpdate(updater, searchText) as string;\n setSearch(value);\n onQuickFilterTextChange?.(value);\n tableOptions?.onGlobalFilterChange?.(updater);\n },\n ...(alignment\n ? {\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n alignment.setState(previous => ({ ...previous, columnSizing: next }));\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnOrderChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnOrder.get());\n alignment.setState(previous => ({ ...previous, columnOrder: next }));\n tableOptions?.onColumnOrderChange?.(updater);\n },\n onColumnPinningChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnPinning.get());\n alignment.setState(previous => ({ ...previous, columnPinning: next }));\n tableOptions?.onColumnPinningChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n alignment.setState(previous => ({ ...previous, columnVisibility: next }));\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n }\n : {}),\n });\n\n return { table, definitionsById, sourcesById, data, rowIndices, resolveId };\n}\n"],"names":["emptyRows","useDataTableInstance","rowData","columnDefs","defaultColDef","getRowId","paginationPageSize","tableOptions","externalFilter","rowSelection","pagination","renderSubComponent","getRowCanExpand","onQuickFilterTextChange","patches","alignment","isPrinting","viewportWidth","selectionWidth","searchText","setSearch","columnSizing","setColumnSizing","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","resolveId","data","index","definitions","result","column","ids","getColumnId","definitionsById","sourcesById","entries","row","id","patch","rowIndices","initialState","effectiveFilters","filter","effectiveVisibility","effectiveSizing","flexSizes","getFlexSizes","columns","getCellValue","value","matchesFilter","filterType","_id","predicate","table","useTable","definition","cellValue","dataTableFeatures","updater","next","functionalUpdate","update","previous"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usedatatableinstance.es.js","sources":["../src/components/data-table/useDataTableInstance.ts"],"sourcesContent":["import * as React from \"react\";\nimport { functionalUpdate, useTable, type ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableAlignmentContext } from \"./DataTableContext\";\nimport { dataTableFeatures } from \"./dataTableFeatures\";\nimport { filterType, getCellValue, getColumnId, getFlexSizes, matchesFilter } from \"./dataTableModel\";\nimport type {\n DataTableColumnDef,\n DataTableContentProps,\n DataTableFeatures,\n DataTableFilter,\n DataTableInstance,\n DataTableRow,\n DataTableState,\n} from \"./DataTable.types\";\n\nconst emptyRows: never[] = [];\ntype DataTableInstanceOptions<T extends object> = Pick<\n DataTableContentProps<T>,\n | \"rowData\"\n | \"columnDefs\"\n | \"getRowId\"\n | \"tableOptions\"\n | \"externalFilter\"\n | \"rowSelection\"\n | \"renderSubComponent\"\n | \"getRowCanExpand\"\n | \"onQuickFilterTextChange\"\n> & {\n defaultColDef: NonNullable<DataTableContentProps<T>[\"defaultColDef\"]>;\n paginationPageSize: number;\n pagination: boolean;\n patches: Record<string, { source: T; data: T }>;\n alignment: React.ContextType<typeof DataTableAlignmentContext>;\n isPrinting: boolean;\n viewportWidth: number;\n selectionWidth: number;\n searchText: string;\n setSearch: (value: string) => void;\n};\n\n/** Own TanStack configuration, controlled state precedence and stable row identities. */\nexport function useDataTableInstance<T extends object>({\n rowData,\n columnDefs,\n defaultColDef,\n getRowId,\n paginationPageSize,\n tableOptions,\n externalFilter,\n rowSelection,\n pagination,\n renderSubComponent,\n getRowCanExpand,\n onQuickFilterTextChange,\n patches,\n alignment,\n isPrinting,\n viewportWidth,\n selectionWidth,\n searchText,\n setSearch,\n}: DataTableInstanceOptions<T>) {\n const [columnSizing, setColumnSizing] = React.useState<DataTableState[\"columnSizing\"]>(tableOptions?.initialState?.columnSizing ?? {});\n const [columnVisibility, setColumnVisibility] = React.useState<DataTableState[\"columnVisibility\"]>({});\n const [columnFilters, setColumnFilters] = React.useState<DataTableState[\"columnFilters\"]>(tableOptions?.initialState?.columnFilters ?? []);\n const resolveId = React.useCallback(\n (data: T, index: number) => String(getRowId?.(data, index) ?? (data as { id?: unknown } | null)?.id ?? index),\n [getRowId],\n );\n const definitions = React.useMemo(() => {\n // Column overrides preserve the field/renderer pairing that TypeScript loses through the spread.\n const result = columnDefs.map(column => ({ ...defaultColDef, ...column }) as DataTableColumnDef<T>);\n const ids = result.map(getColumnId);\n if (new Set(ids).size !== ids.length) throw new Error(\"DataTable column ids must be unique.\");\n return result;\n }, [columnDefs, defaultColDef]);\n const definitionsById = React.useMemo(() => new Map(definitions.map(column => [getColumnId(column), column])), [definitions]);\n const sourcesById = React.useMemo(() => {\n const entries = (rowData ?? emptyRows).map((row, index) => [resolveId(row, index), row] as const);\n if (new Set(entries.map(([id]) => id)).size !== entries.length) throw new Error(\"DataTable row ids must be unique.\");\n return new Map(entries);\n }, [rowData, resolveId]);\n const data = React.useMemo(\n () =>\n (rowData ?? emptyRows).map((row, index) => {\n const patch = patches[resolveId(row, index)];\n return patch?.source === row ? patch.data : row;\n }),\n [rowData, patches, resolveId],\n );\n // Keep original indices/ids through external filtering; index ids must not shift when a chip changes.\n const rowIndices = React.useMemo(() => new Map(data.map((row, index) => [row, index])), [data]);\n const initialState = React.useMemo(\n () => ({\n columnVisibility: Object.fromEntries(definitions.filter(column => column.hide).map(column => [getColumnId(column), false])),\n columnPinning: {\n start: definitions.filter(column => column.pinned === \"left\" || column.pinned === \"start\").map(getColumnId),\n end: definitions.filter(column => column.pinned === \"right\" || column.pinned === \"end\").map(getColumnId),\n },\n pagination: { pageIndex: 0, pageSize: paginationPageSize },\n ...tableOptions?.initialState,\n }),\n [definitions, paginationPageSize, tableOptions?.initialState],\n );\n\n const effectiveFilters = React.useMemo(\n () => [\n ...(tableOptions?.state?.columnFilters ?? columnFilters).filter(filter => filter.id !== \"__external\"),\n ...(externalFilter ? [{ id: \"__external\", value: externalFilter }] : []),\n ],\n [tableOptions?.state?.columnFilters, columnFilters, externalFilter],\n );\n const effectiveVisibility = React.useMemo<DataTableState[\"columnVisibility\"]>(\n () => ({\n ...initialState.columnVisibility,\n ...columnVisibility,\n ...alignment?.state.columnVisibility,\n ...tableOptions?.state?.columnVisibility,\n __external: false,\n }),\n [initialState.columnVisibility, columnVisibility, alignment?.state.columnVisibility, tableOptions?.state?.columnVisibility],\n );\n const effectiveSizing = tableOptions?.state?.columnSizing ?? alignment?.state.columnSizing ?? columnSizing;\n const flexSizes = React.useMemo(\n () =>\n getFlexSizes(\n definitions.filter(column => effectiveVisibility[getColumnId(column)] !== false && (!isPrinting || !column.hideInPrint)),\n Math.max(0, viewportWidth - selectionWidth),\n effectiveSizing,\n ),\n [definitions, effectiveVisibility, isPrinting, viewportWidth, selectionWidth, effectiveSizing],\n );\n const columns = React.useMemo<ColumnDef<DataTableFeatures, T, any>[]>(\n () => [\n ...definitions.map(column => ({\n id: getColumnId(column),\n header: typeof column.headerName === \"string\" ? column.headerName : getColumnId(column),\n accessorFn: (row: T, index: number) => getCellValue(row, column, rowIndices.get(row) ?? index),\n size: flexSizes[getColumnId(column)] ?? column.width ?? 150,\n minSize: column.minWidth ?? 60,\n maxSize: column.maxWidth,\n enableSorting: column.sortable !== false && (!!column.field || !!column.valueGetter),\n enableColumnFilter: !!column.filter,\n enableGlobalFilter: !!column.field || !!column.valueGetter,\n enableResizing: column.resizable !== false,\n enableHiding: false,\n enablePinning: false,\n sortFn:\n column.cellDataType === \"number\" ? (\"basic\" as const) : column.cellDataType === \"date\" ? (\"datetime\" as const) : (\"alphanumeric\" as const),\n filterFn: (row: DataTableRow<T>, id: string, value: DataTableFilter) => matchesFilter(row.getValue(id), value, filterType(column)),\n ...column.tableOptions,\n })),\n {\n id: \"__external\",\n enableHiding: false,\n enablePinning: false,\n accessorFn: () => true,\n enableGlobalFilter: false,\n enableSorting: false,\n filterFn: (row, _id, predicate: (data: T) => boolean) => predicate(row.original),\n },\n ],\n [definitions, rowIndices, flexSizes],\n );\n const table: DataTableInstance<T> = useTable<DataTableFeatures, T>({\n columnResizeMode: \"onChange\",\n sortDescFirst: false,\n keepPinnedRows: true,\n enableRowSelection: row => !!rowSelection && (rowSelection.isRowSelectable?.(row.original) ?? true),\n enableMultiRowSelection: rowSelection?.mode === \"multiRow\",\n enableSubRowSelection: false,\n manualPagination: !pagination,\n getColumnCanGlobalFilter: column => {\n const definition = definitionsById.get(column.id);\n return !!definition && (!!definition.field || !!definition.valueGetter);\n },\n globalFilterFn: (row, id, value) => {\n const column = definitionsById.get(id);\n const cellValue = row.getValue(id);\n return String(column?.getQuickFilterText?.({ data: row.original, value: cellValue }) ?? cellValue ?? \"\")\n .toLocaleLowerCase()\n .includes(String(value).toLocaleLowerCase());\n },\n ...tableOptions,\n getRowCanExpand: row =>\n !!renderSubComponent && tableOptions?.enableExpanding !== false && (getRowCanExpand?.(row) ?? tableOptions?.getRowCanExpand?.(row) ?? true),\n features: dataTableFeatures,\n columns,\n data,\n getRowId: (row, index) => resolveId(row, rowIndices.get(row) ?? index),\n initialState,\n state: {\n ...alignment?.state,\n ...tableOptions?.state,\n columnSizing: effectiveSizing,\n columnVisibility: effectiveVisibility,\n columnFilters: effectiveFilters,\n globalFilter: searchText,\n },\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n setColumnSizing(next);\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n setColumnVisibility(next);\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n onColumnFiltersChange: updater => {\n const update = (previous: DataTableState[\"columnFilters\"]) => functionalUpdate(updater, previous).filter(filter => filter.id !== \"__external\");\n if (tableOptions?.state?.columnFilters === undefined) setColumnFilters(update);\n tableOptions?.onColumnFiltersChange?.(update);\n },\n onGlobalFilterChange: updater => {\n const value = functionalUpdate(updater, searchText) as string;\n setSearch(value);\n onQuickFilterTextChange?.(value);\n tableOptions?.onGlobalFilterChange?.(updater);\n },\n ...(alignment\n ? {\n onColumnSizingChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnSizing.get());\n alignment.setState(previous => ({ ...previous, columnSizing: next }));\n tableOptions?.onColumnSizingChange?.(updater);\n },\n onColumnOrderChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnOrder.get());\n alignment.setState(previous => ({ ...previous, columnOrder: next }));\n tableOptions?.onColumnOrderChange?.(updater);\n },\n onColumnPinningChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnPinning.get());\n alignment.setState(previous => ({ ...previous, columnPinning: next }));\n tableOptions?.onColumnPinningChange?.(updater);\n },\n onColumnVisibilityChange: updater => {\n const next = functionalUpdate(updater, table.atoms.columnVisibility.get());\n alignment.setState(previous => ({ ...previous, columnVisibility: next }));\n tableOptions?.onColumnVisibilityChange?.(updater);\n },\n }\n : {}),\n });\n\n return { table, definitionsById, sourcesById, data, rowIndices, resolveId };\n}\n"],"names":["emptyRows","useDataTableInstance","rowData","columnDefs","defaultColDef","getRowId","paginationPageSize","tableOptions","externalFilter","rowSelection","pagination","renderSubComponent","getRowCanExpand","onQuickFilterTextChange","patches","alignment","isPrinting","viewportWidth","selectionWidth","searchText","setSearch","columnSizing","setColumnSizing","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","resolveId","data","index","definitions","result","column","ids","getColumnId","definitionsById","sourcesById","entries","row","id","patch","rowIndices","initialState","effectiveFilters","filter","effectiveVisibility","effectiveSizing","flexSizes","getFlexSizes","columns","getCellValue","value","matchesFilter","filterType","_id","predicate","table","useTable","definition","cellValue","dataTableFeatures","updater","next","functionalUpdate","update","previous"],"mappings":"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"}
|