@rentnerkev/table 0.0.0-stage → 0.0.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/LICENSE +21 -0
- package/README.md +161 -2
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/Messages/tableMessages.d.ts +4 -0
- package/dist/lib/Messages/tableMessages.d.ts.map +1 -0
- package/dist/lib/Messages/tableMessages.js +101 -0
- package/dist/lib/Messages/tableMessages.js.map +1 -0
- package/dist/lib/Table/events.d.ts +2 -0
- package/dist/lib/Table/events.d.ts.map +1 -0
- package/dist/lib/Table/events.js +5 -0
- package/dist/lib/Table/events.js.map +1 -0
- package/dist/lib/Table/filters.d.ts +20 -0
- package/dist/lib/Table/filters.d.ts.map +1 -0
- package/dist/lib/Table/filters.js +102 -0
- package/dist/lib/Table/filters.js.map +1 -0
- package/dist/lib/Table/presentation.d.ts +7 -0
- package/dist/lib/Table/presentation.d.ts.map +1 -0
- package/dist/lib/Table/presentation.js +63 -0
- package/dist/lib/Table/presentation.js.map +1 -0
- package/dist/lib/Table/rowOrder.d.ts +7 -0
- package/dist/lib/Table/rowOrder.d.ts.map +1 -0
- package/dist/lib/Table/rowOrder.js +26 -0
- package/dist/lib/Table/rowOrder.js.map +1 -0
- package/dist/lib/Table/table.d.ts +89 -0
- package/dist/lib/Table/table.d.ts.map +1 -0
- package/dist/lib/Table/table.js +29 -0
- package/dist/lib/Table/table.js.map +1 -0
- package/dist/shared/Table/Components/DataTable.d.ts +4 -0
- package/dist/shared/Table/Components/DataTable.d.ts.map +1 -0
- package/dist/shared/Table/Components/DataTable.js +13 -0
- package/dist/shared/Table/Components/DataTable.js.map +1 -0
- package/dist/shared/Table/Components/DataTablePagination.d.ts +4 -0
- package/dist/shared/Table/Components/DataTablePagination.d.ts.map +1 -0
- package/dist/shared/Table/Components/DataTablePagination.js +10 -0
- package/dist/shared/Table/Components/DataTablePagination.js.map +1 -0
- package/dist/shared/Table/Components/DataTableToolbar.d.ts +4 -0
- package/dist/shared/Table/Components/DataTableToolbar.d.ts.map +1 -0
- package/dist/shared/Table/Components/DataTableToolbar.js +19 -0
- package/dist/shared/Table/Components/DataTableToolbar.js.map +1 -0
- package/dist/shared/Table/Components/Table.d.ts +4 -0
- package/dist/shared/Table/Components/Table.d.ts.map +1 -0
- package/dist/shared/Table/Components/Table.js +18 -0
- package/dist/shared/Table/Components/Table.js.map +1 -0
- package/dist/shared/Table/Components/TableBody.d.ts +4 -0
- package/dist/shared/Table/Components/TableBody.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableBody.js +8 -0
- package/dist/shared/Table/Components/TableBody.js.map +1 -0
- package/dist/shared/Table/Components/TableButton.d.ts +3 -0
- package/dist/shared/Table/Components/TableButton.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableButton.js +5 -0
- package/dist/shared/Table/Components/TableButton.js.map +1 -0
- package/dist/shared/Table/Components/TableCheckbox.d.ts +3 -0
- package/dist/shared/Table/Components/TableCheckbox.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableCheckbox.js +8 -0
- package/dist/shared/Table/Components/TableCheckbox.js.map +1 -0
- package/dist/shared/Table/Components/TableColumnFilter.d.ts +4 -0
- package/dist/shared/Table/Components/TableColumnFilter.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableColumnFilter.js +23 -0
- package/dist/shared/Table/Components/TableColumnFilter.js.map +1 -0
- package/dist/shared/Table/Components/TableDataRow.d.ts +4 -0
- package/dist/shared/Table/Components/TableDataRow.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableDataRow.js +26 -0
- package/dist/shared/Table/Components/TableDataRow.js.map +1 -0
- package/dist/shared/Table/Components/TableDateRangeFilter.d.ts +3 -0
- package/dist/shared/Table/Components/TableDateRangeFilter.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableDateRangeFilter.js +15 -0
- package/dist/shared/Table/Components/TableDateRangeFilter.js.map +1 -0
- package/dist/shared/Table/Components/TableHead.d.ts +4 -0
- package/dist/shared/Table/Components/TableHead.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableHead.js +17 -0
- package/dist/shared/Table/Components/TableHead.js.map +1 -0
- package/dist/shared/Table/Components/TableProvider.d.ts +3 -0
- package/dist/shared/Table/Components/TableProvider.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableProvider.js +9 -0
- package/dist/shared/Table/Components/TableProvider.js.map +1 -0
- package/dist/shared/Table/Components/TableReorderProvider.d.ts +3 -0
- package/dist/shared/Table/Components/TableReorderProvider.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableReorderProvider.js +43 -0
- package/dist/shared/Table/Components/TableReorderProvider.js.map +1 -0
- package/dist/shared/Table/Components/TableResizeHandle.d.ts +4 -0
- package/dist/shared/Table/Components/TableResizeHandle.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableResizeHandle.js +13 -0
- package/dist/shared/Table/Components/TableResizeHandle.js.map +1 -0
- package/dist/shared/Table/Components/TableRowActions.d.ts +3 -0
- package/dist/shared/Table/Components/TableRowActions.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableRowActions.js +9 -0
- package/dist/shared/Table/Components/TableRowActions.js.map +1 -0
- package/dist/shared/Table/Components/TableStatus.d.ts +3 -0
- package/dist/shared/Table/Components/TableStatus.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableStatus.js +18 -0
- package/dist/shared/Table/Components/TableStatus.js.map +1 -0
- package/dist/shared/Table/Components/TableSurface.d.ts +4 -0
- package/dist/shared/Table/Components/TableSurface.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableSurface.js +19 -0
- package/dist/shared/Table/Components/TableSurface.js.map +1 -0
- package/dist/shared/Table/Components/TableViewport.d.ts +4 -0
- package/dist/shared/Table/Components/TableViewport.d.ts.map +1 -0
- package/dist/shared/Table/Components/TableViewport.js +20 -0
- package/dist/shared/Table/Components/TableViewport.js.map +1 -0
- package/dist/shared/Table/Hooks/useDataTableLogic.d.ts +4 -0
- package/dist/shared/Table/Hooks/useDataTableLogic.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useDataTableLogic.js +201 -0
- package/dist/shared/Table/Hooks/useDataTableLogic.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableCheckboxLogic.d.ts +3 -0
- package/dist/shared/Table/Hooks/useTableCheckboxLogic.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableCheckboxLogic.js +10 -0
- package/dist/shared/Table/Hooks/useTableCheckboxLogic.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableColumnResizeLogic.d.ts +6 -0
- package/dist/shared/Table/Hooks/useTableColumnResizeLogic.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableColumnResizeLogic.js +40 -0
- package/dist/shared/Table/Hooks/useTableColumnResizeLogic.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableDragLogic.d.ts +21 -0
- package/dist/shared/Table/Hooks/useTableDragLogic.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableDragLogic.js +110 -0
- package/dist/shared/Table/Hooks/useTableDragLogic.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableLogic.d.ts +4 -0
- package/dist/shared/Table/Hooks/useTableLogic.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableLogic.js +26 -0
- package/dist/shared/Table/Hooks/useTableLogic.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableOverlay.d.ts +3 -0
- package/dist/shared/Table/Hooks/useTableOverlay.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableOverlay.js +6 -0
- package/dist/shared/Table/Hooks/useTableOverlay.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableResizeHandleLogic.d.ts +20 -0
- package/dist/shared/Table/Hooks/useTableResizeHandleLogic.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableResizeHandleLogic.js +52 -0
- package/dist/shared/Table/Hooks/useTableResizeHandleLogic.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableRowDragContext.d.ts +5 -0
- package/dist/shared/Table/Hooks/useTableRowDragContext.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableRowDragContext.js +6 -0
- package/dist/shared/Table/Hooks/useTableRowDragContext.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableRowEventsLogic.d.ts +12 -0
- package/dist/shared/Table/Hooks/useTableRowEventsLogic.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableRowEventsLogic.js +25 -0
- package/dist/shared/Table/Hooks/useTableRowEventsLogic.js.map +1 -0
- package/dist/shared/Table/Hooks/useTableRowOrder.d.ts +11 -0
- package/dist/shared/Table/Hooks/useTableRowOrder.d.ts.map +1 -0
- package/dist/shared/Table/Hooks/useTableRowOrder.js +19 -0
- package/dist/shared/Table/Hooks/useTableRowOrder.js.map +1 -0
- package/dist/shared/Table/Types/column.types.d.ts +35 -0
- package/dist/shared/Table/Types/column.types.d.ts.map +1 -0
- package/dist/shared/Table/Types/column.types.js +2 -0
- package/dist/shared/Table/Types/column.types.js.map +1 -0
- package/dist/shared/Table/Types/dataTable.types.d.ts +210 -0
- package/dist/shared/Table/Types/dataTable.types.d.ts.map +1 -0
- package/dist/shared/Table/Types/dataTable.types.js +2 -0
- package/dist/shared/Table/Types/dataTable.types.js.map +1 -0
- package/dist/shared/Table/Types/interaction.types.d.ts +86 -0
- package/dist/shared/Table/Types/interaction.types.d.ts.map +1 -0
- package/dist/shared/Table/Types/interaction.types.js +2 -0
- package/dist/shared/Table/Types/interaction.types.js.map +1 -0
- package/dist/shared/Table/Types/table.types.d.ts +80 -0
- package/dist/shared/Table/Types/table.types.d.ts.map +1 -0
- package/dist/shared/Table/Types/table.types.js +2 -0
- package/dist/shared/Table/Types/table.types.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/usage.md +184 -0
- package/package.json +113 -5
- package/tailwind.css +7 -0
- package/theme.css +40 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { getColumnLabel } from '../../../lib/Table/presentation.js';
|
|
2
|
+
export function useTableResizeHandleLogic({ table, header, messages, disabled, }) {
|
|
3
|
+
const column = header.column;
|
|
4
|
+
const label = getColumnLabel(column);
|
|
5
|
+
const min = column.columnDef.minSize ?? 20;
|
|
6
|
+
const max = column.columnDef.maxSize ?? 2000;
|
|
7
|
+
const isResizing = column.getIsResizing();
|
|
8
|
+
const direction = table.options.columnResizeDirection === 'rtl' ? -1 : 1;
|
|
9
|
+
const handleStart = (event) => {
|
|
10
|
+
if (disabled || ('button' in event && event.button !== 0))
|
|
11
|
+
return;
|
|
12
|
+
event.stopPropagation();
|
|
13
|
+
header.getResizeHandler(event.currentTarget.ownerDocument)(event);
|
|
14
|
+
};
|
|
15
|
+
const handleReset = () => {
|
|
16
|
+
if (!disabled)
|
|
17
|
+
column.resetSize();
|
|
18
|
+
};
|
|
19
|
+
const handleKeyDown = (event) => {
|
|
20
|
+
if (disabled ||
|
|
21
|
+
!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key))
|
|
22
|
+
return;
|
|
23
|
+
event.preventDefault();
|
|
24
|
+
event.stopPropagation();
|
|
25
|
+
if (event.key === 'Home') {
|
|
26
|
+
column.resetSize();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const size = event.key === 'End'
|
|
30
|
+
? max
|
|
31
|
+
: Math.min(max, Math.max(min, column.getSize() +
|
|
32
|
+
(event.key === 'ArrowLeft' ? -1 : 1) *
|
|
33
|
+
direction *
|
|
34
|
+
(event.shiftKey ? 50 : 10)));
|
|
35
|
+
table.setColumnSizing((current) => ({ ...current, [column.id]: size }));
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
state: {
|
|
39
|
+
label: messages.resizeColumn?.(label) ?? `Resize ${label}`,
|
|
40
|
+
resetLabel: messages.resetColumnSize?.(label) ?? `Reset width of ${label}`,
|
|
41
|
+
min,
|
|
42
|
+
max,
|
|
43
|
+
size: column.getSize(),
|
|
44
|
+
isResizing,
|
|
45
|
+
offset: isResizing && table.options.columnResizeMode === 'onEnd'
|
|
46
|
+
? (table.state.columnResizing.deltaOffset ?? 0)
|
|
47
|
+
: 0,
|
|
48
|
+
},
|
|
49
|
+
handler: { handleStart, handleReset, handleKeyDown },
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=useTableResizeHandleLogic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableResizeHandleLogic.js","sourceRoot":"","sources":["../../../../src/shared/Table/Hooks/useTableResizeHandleLogic.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeyboardEvent, MouseEvent, TouchEvent } from 'react'\nimport type { RowData } from '@tanstack/react-table'\nimport { getColumnLabel } from '../../../lib/Table/presentation.ts'\nimport type { TableColumnResizeHandleProps } from '../Types/interaction.types.ts'\n\nexport function useTableResizeHandleLogic<TData extends RowData>({\n table,\n header,\n messages,\n disabled,\n}: TableColumnResizeHandleProps<TData>) {\n const column = header.column\n const label = getColumnLabel(column)\n const min = column.columnDef.minSize ?? 20\n const max = column.columnDef.maxSize ?? 2000\n const isResizing = column.getIsResizing()\n const direction = table.options.columnResizeDirection === 'rtl' ? -1 : 1\n const handleStart = (\n event: MouseEvent<HTMLElement> | TouchEvent<HTMLElement>,\n ) => {\n if (disabled || ('button' in event && event.button !== 0)) return\n event.stopPropagation()\n header.getResizeHandler(event.currentTarget.ownerDocument)(event)\n }\n const handleReset = () => {\n if (!disabled) column.resetSize()\n }\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (\n disabled ||\n !['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)\n )\n return\n event.preventDefault()\n event.stopPropagation()\n if (event.key === 'Home') {\n column.resetSize()\n return\n }\n const size =\n event.key === 'End'\n ? max\n : Math.min(\n max,\n Math.max(\n min,\n column.getSize() +\n (event.key === 'ArrowLeft' ? -1 : 1) *\n direction *\n (event.shiftKey ? 50 : 10),\n ),\n )\n table.setColumnSizing((current) => ({ ...current, [column.id]: size }))\n }\n return {\n state: {\n label: messages.resizeColumn?.(label) ?? `Resize ${label}`,\n resetLabel:\n messages.resetColumnSize?.(label) ?? `Reset width of ${label}`,\n min,\n max,\n size: column.getSize(),\n isResizing,\n offset:\n isResizing && table.options.columnResizeMode === 'onEnd'\n ? (table.state.columnResizing.deltaOffset ?? 0)\n : 0,\n },\n handler: { handleStart, handleReset, handleKeyDown },\n }\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import type { TableDragGroupProps } from '../Types/interaction.types.ts';
|
|
3
|
+
export declare const TableRowDragContext: import("react").Context<ComponentType<TableDragGroupProps> | null>;
|
|
4
|
+
export declare function useTableRowDragContext(): ComponentType<TableDragGroupProps> | null;
|
|
5
|
+
//# sourceMappingURL=useTableRowDragContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableRowDragContext.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Hooks/useTableRowDragContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAExE,eAAO,MAAM,mBAAmB,oEACkC,CAAA;AAElE,wBAAgB,sBAAsB,8CAErC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableRowDragContext.js","sourceRoot":"","sources":["../../../../src/shared/Table/Hooks/useTableRowDragContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAIjD,MAAM,CAAC,MAAM,mBAAmB,GAC5B,aAAa,CAA4C,IAAI,CAAC,CAAA;AAElE,MAAM,UAAU,sBAAsB;IAClC,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAA;AAC1C,CAAC","sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ComponentType } from 'react'\nimport type { TableDragGroupProps } from '../Types/interaction.types.ts'\n\nexport const TableRowDragContext =\n createContext<ComponentType<TableDragGroupProps> | null>(null)\n\nexport function useTableRowDragContext() {\n return useContext(TableRowDragContext)\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MouseEvent } from 'react';
|
|
2
|
+
import type { RowData } from '@tanstack/react-table';
|
|
3
|
+
import type { TableRow } from '../Types/dataTable.types.ts';
|
|
4
|
+
import type { TableRowEvents } from '../Types/interaction.types.ts';
|
|
5
|
+
export declare function useTableRowEventsLogic<TData extends RowData>(row: TableRow<TData>, callbacks: TableRowEvents<TData>): {
|
|
6
|
+
handler: {
|
|
7
|
+
handleClick: (event: MouseEvent<HTMLTableRowElement>) => void;
|
|
8
|
+
handleDoubleClick: (event: MouseEvent<HTMLTableRowElement>) => void;
|
|
9
|
+
handleContextMenu: (event: MouseEvent<HTMLTableRowElement>) => void;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=useTableRowEventsLogic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableRowEventsLogic.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Hooks/useTableRowEventsLogic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAanE,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,OAAO,EACxD,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EACpB,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC;IAG5B,OAAO;QACH,WAAW,UAAU,UAAU,CAAC,mBAAmB,CAAC;QAIpD,iBAAiB,UAAU,UAAU,CAAC,mBAAmB,CAAC;QAI1D,iBAAiB,UAAU,UAAU,CAAC,mBAAmB,CAAC;;EAMrE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isTableEventElement } from '../../../lib/Table/events.js';
|
|
2
|
+
function isControl(event) {
|
|
3
|
+
const target = event.target;
|
|
4
|
+
return (isTableEventElement(target) &&
|
|
5
|
+
target.closest('button, a, input, select, textarea, label, summary, [contenteditable]:not([contenteditable="false"]), [role="button"], [role="link"], [role="combobox"], [role="checkbox"], [role="radio"], [role="switch"], [role="textbox"], [role="slider"], [role="spinbutton"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [data-no-row-click]') !== null);
|
|
6
|
+
}
|
|
7
|
+
export function useTableRowEventsLogic(row, callbacks) {
|
|
8
|
+
return {
|
|
9
|
+
handler: {
|
|
10
|
+
handleClick: (event) => {
|
|
11
|
+
if (!event.defaultPrevented && !isControl(event))
|
|
12
|
+
callbacks.onRowClick?.(row, event);
|
|
13
|
+
},
|
|
14
|
+
handleDoubleClick: (event) => {
|
|
15
|
+
if (!event.defaultPrevented && !isControl(event))
|
|
16
|
+
callbacks.onRowDoubleClick?.(row, event);
|
|
17
|
+
},
|
|
18
|
+
handleContextMenu: (event) => {
|
|
19
|
+
if (!event.defaultPrevented)
|
|
20
|
+
callbacks.onRowContextMenu?.(row, event);
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=useTableRowEventsLogic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableRowEventsLogic.js","sourceRoot":"","sources":["../../../../src/shared/Table/Hooks/useTableRowEventsLogic.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAElE,SAAS,SAAS,CAAC,KAAsC;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,OAAO,CACH,mBAAmB,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,OAAO,CACV,gWAAgW,CACnW,KAAK,IAAI,CACb,CAAA;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAClC,GAAoB,EACpB,SAAgC;IAEhC,OAAO;QACH,OAAO,EAAE;YACL,WAAW,EAAE,CAAC,KAAsC,EAAE,EAAE;gBACpD,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC5C,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAC1C,CAAC;YACD,iBAAiB,EAAE,CAAC,KAAsC,EAAE,EAAE;gBAC1D,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC5C,SAAS,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAChD,CAAC;YACD,iBAAiB,EAAE,CAAC,KAAsC,EAAE,EAAE;gBAC1D,IAAI,CAAC,KAAK,CAAC,gBAAgB;oBACvB,SAAS,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAChD,CAAC;SACJ;KACJ,CAAA;AACL,CAAC","sourcesContent":["import type { MouseEvent } from 'react'\nimport type { RowData } from '@tanstack/react-table'\nimport type { TableRow } from '../Types/dataTable.types.ts'\nimport type { TableRowEvents } from '../Types/interaction.types.ts'\nimport { isTableEventElement } from '../../../lib/Table/events.ts'\n\nfunction isControl(event: MouseEvent<HTMLTableRowElement>): boolean {\n const target = event.target\n return (\n isTableEventElement(target) &&\n target.closest(\n 'button, a, input, select, textarea, label, summary, [contenteditable]:not([contenteditable=\"false\"]), [role=\"button\"], [role=\"link\"], [role=\"combobox\"], [role=\"checkbox\"], [role=\"radio\"], [role=\"switch\"], [role=\"textbox\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"], [data-no-row-click]',\n ) !== null\n )\n}\n\nexport function useTableRowEventsLogic<TData extends RowData>(\n row: TableRow<TData>,\n callbacks: TableRowEvents<TData>,\n) {\n return {\n handler: {\n handleClick: (event: MouseEvent<HTMLTableRowElement>) => {\n if (!event.defaultPrevented && !isControl(event))\n callbacks.onRowClick?.(row, event)\n },\n handleDoubleClick: (event: MouseEvent<HTMLTableRowElement>) => {\n if (!event.defaultPrevented && !isControl(event))\n callbacks.onRowDoubleClick?.(row, event)\n },\n handleContextMenu: (event: MouseEvent<HTMLTableRowElement>) => {\n if (!event.defaultPrevented)\n callbacks.onRowContextMenu?.(row, event)\n },\n },\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RowData } from '@tanstack/react-table';
|
|
2
|
+
import type { DataTableLogicOptions } from '../Types/dataTable.types.ts';
|
|
3
|
+
export declare function useTableRowOrder<TData extends RowData>({ data, getRowId, reorderableRows, onRowOrderChange, }: Pick<DataTableLogicOptions<TData>, 'data' | 'getRowId' | 'reorderableRows' | 'onRowOrderChange'>): {
|
|
4
|
+
state: {
|
|
5
|
+
data: readonly TData[];
|
|
6
|
+
};
|
|
7
|
+
handler: {
|
|
8
|
+
handleReorder: (activeId: string, overId: string) => void;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=useTableRowOrder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableRowOrder.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Hooks/useTableRowOrder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAKpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAExE,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,OAAO,EAAE,EACpD,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,gBAAgB,GACnB,EAAE,IAAI,CACH,qBAAqB,CAAC,KAAK,CAAC,EAC5B,MAAM,GAAG,UAAU,GAAG,iBAAiB,GAAG,kBAAkB,CAC/D;;QAcqB,IAAI;;;kCAPW,MAAM,UAAU,MAAM;;EAQ1D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useMemo, useState } from 'react';
|
|
2
|
+
import { applyTableRowOrder, moveTableRow, } from '../../../lib/Table/rowOrder.js';
|
|
3
|
+
export function useTableRowOrder({ data, getRowId, reorderableRows, onRowOrderChange, }) {
|
|
4
|
+
const [order, setOrder] = useState();
|
|
5
|
+
const rows = useMemo(() => onRowOrderChange ? data : applyTableRowOrder(data, order, getRowId), [data, order, getRowId, onRowOrderChange]);
|
|
6
|
+
const handleReorder = (activeId, overId) => {
|
|
7
|
+
if (!reorderableRows)
|
|
8
|
+
return;
|
|
9
|
+
const result = moveTableRow(rows, getRowId, activeId, overId);
|
|
10
|
+
if (!result)
|
|
11
|
+
return;
|
|
12
|
+
if (onRowOrderChange)
|
|
13
|
+
onRowOrderChange(result.data, result.change);
|
|
14
|
+
else
|
|
15
|
+
setOrder(result.data.map(getRowId));
|
|
16
|
+
};
|
|
17
|
+
return { state: { data: rows }, handler: { handleReorder } };
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=useTableRowOrder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableRowOrder.js","sourceRoot":"","sources":["../../../../src/shared/Table/Hooks/useTableRowOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EACH,kBAAkB,EAClB,YAAY,GACf,MAAM,gCAAgC,CAAA;AAGvC,MAAM,UAAU,gBAAgB,CAAwB,EACpD,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,gBAAgB,GAInB;IACG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAY,CAAA;IAC9C,MAAM,IAAI,GAAG,OAAO,CAChB,GAAG,EAAE,CACD,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EACvE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAC5C,CAAA;IACD,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAE;QACvD,IAAI,CAAC,eAAe;YAAE,OAAM;QAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAI,gBAAgB;YAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;;YAC7D,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAA;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,CAAA;AAChE,CAAC","sourcesContent":["import { useMemo, useState } from 'react'\nimport type { RowData } from '@tanstack/react-table'\nimport {\n applyTableRowOrder,\n moveTableRow,\n} from '../../../lib/Table/rowOrder.ts'\nimport type { DataTableLogicOptions } from '../Types/dataTable.types.ts'\n\nexport function useTableRowOrder<TData extends RowData>({\n data,\n getRowId,\n reorderableRows,\n onRowOrderChange,\n}: Pick<\n DataTableLogicOptions<TData>,\n 'data' | 'getRowId' | 'reorderableRows' | 'onRowOrderChange'\n>) {\n const [order, setOrder] = useState<string[]>()\n const rows = useMemo(\n () =>\n onRowOrderChange ? data : applyTableRowOrder(data, order, getRowId),\n [data, order, getRowId, onRowOrderChange],\n )\n const handleReorder = (activeId: string, overId: string) => {\n if (!reorderableRows) return\n const result = moveTableRow(rows, getRowId, activeId, overId)\n if (!result) return\n if (onRowOrderChange) onRowOrderChange(result.data, result.change)\n else setOrder(result.data.map(getRowId))\n }\n return { state: { data: rows }, handler: { handleReorder } }\n}\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type TableColumnFilter = {
|
|
3
|
+
type: 'text';
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
maxLength?: number;
|
|
6
|
+
} | {
|
|
7
|
+
type: 'select';
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
options: readonly {
|
|
10
|
+
value: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}[];
|
|
13
|
+
} | {
|
|
14
|
+
type: 'dateRange';
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'custom';
|
|
18
|
+
render: (props: {
|
|
19
|
+
value: unknown;
|
|
20
|
+
onValueChange: (value: unknown) => void;
|
|
21
|
+
label: string;
|
|
22
|
+
}) => ReactNode;
|
|
23
|
+
};
|
|
24
|
+
export interface TableColumnMeta {
|
|
25
|
+
label?: string;
|
|
26
|
+
align?: 'left' | 'center' | 'right';
|
|
27
|
+
headerClassName?: string;
|
|
28
|
+
cellClassName?: string;
|
|
29
|
+
filter?: TableColumnFilter;
|
|
30
|
+
}
|
|
31
|
+
export interface TableDateRange {
|
|
32
|
+
from?: string;
|
|
33
|
+
to?: string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=column.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Types/column.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,iBAAiB,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IACI,IAAI,EAAE,QAAQ,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACvD,GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C;IACI,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,CAAC,KAAK,EAAE;QACZ,KAAK,EAAE,OAAO,CAAA;QACd,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;QACvC,KAAK,EAAE,MAAM,CAAA;KAChB,KAAK,SAAS,CAAA;CAClB,CAAA;AAEP,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC7B;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.types.js","sourceRoot":"","sources":["../../../../src/shared/Table/Types/column.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactNode } from 'react'\n\nexport type TableColumnFilter =\n | { type: 'text'; placeholder?: string; maxLength?: number }\n | {\n type: 'select'\n placeholder?: string\n options: readonly { value: string; label: string }[]\n }\n | { type: 'dateRange'; placeholder?: string }\n | {\n type: 'custom'\n render: (props: {\n value: unknown\n onValueChange: (value: unknown) => void\n label: string\n }) => ReactNode\n }\n\nexport interface TableColumnMeta {\n label?: string\n align?: 'left' | 'center' | 'right'\n headerClassName?: string\n cellClassName?: string\n filter?: TableColumnFilter\n}\n\nexport interface TableDateRange {\n from?: string\n to?: string\n}\n"]}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import type { Column, Row, RowData } from '@tanstack/react-table';
|
|
2
|
+
import type { ComponentPropsWithRef, ReactNode, RefObject } from 'react';
|
|
3
|
+
import type { MenuItem } from '@rentnerkev/menu';
|
|
4
|
+
import type { TableDateRange } from './column.types.ts';
|
|
5
|
+
import type { rentnerTableFeatures } from '../../../lib/Table/table.ts';
|
|
6
|
+
import type { TableRowEvents, TableRowOrderChange } from './interaction.types.ts';
|
|
7
|
+
import type { RentnerTableInstance, RentnerTableOptions, TableLogicResult, TableLocale, TableMessages, TableSize } from './table.types.ts';
|
|
8
|
+
export type TableRow<TData extends RowData> = Row<typeof rentnerTableFeatures, TData>;
|
|
9
|
+
export type TableColumnInstance<TData extends RowData> = Column<typeof rentnerTableFeatures, TData, unknown>;
|
|
10
|
+
export interface DataTableContext<TData extends RowData> {
|
|
11
|
+
table: RentnerTableInstance<TData>;
|
|
12
|
+
selectedRows: readonly TableRow<TData>[];
|
|
13
|
+
}
|
|
14
|
+
export interface DataTableClassNames {
|
|
15
|
+
root?: string;
|
|
16
|
+
toolbar?: string;
|
|
17
|
+
viewport?: string;
|
|
18
|
+
table?: string;
|
|
19
|
+
header?: string;
|
|
20
|
+
headerCell?: string;
|
|
21
|
+
row?: string;
|
|
22
|
+
cell?: string;
|
|
23
|
+
footer?: string;
|
|
24
|
+
}
|
|
25
|
+
export type DataTableLogicOptions<TData extends RowData> = Pick<RentnerTableOptions<TData>, 'data' | 'columns'> & {
|
|
26
|
+
/** Stable record identity, independent of position, for selection and reordering. */
|
|
27
|
+
getRowId: (row: TData, index: number) => string;
|
|
28
|
+
locale?: TableLocale;
|
|
29
|
+
messages?: Partial<TableMessages>;
|
|
30
|
+
pagination?: boolean;
|
|
31
|
+
pageSize?: number;
|
|
32
|
+
pageSizeOptions?: readonly number[];
|
|
33
|
+
selectable?: boolean | ((row: TableRow<TData>) => boolean);
|
|
34
|
+
getRowLabel?: (row: TData) => string;
|
|
35
|
+
renderExpandedRow?: (row: TableRow<TData>) => ReactNode;
|
|
36
|
+
initialShowFilters?: boolean;
|
|
37
|
+
/** Enable horizontal drag handles and keyboard column resizing. Defaults to false. */
|
|
38
|
+
resizableColumns?: boolean;
|
|
39
|
+
/** Enable drag handles, row previews and keyboard reordering. Clear sorting to reorder. */
|
|
40
|
+
reorderableRows?: boolean;
|
|
41
|
+
/** Receive the reordered input data. With this callback, the caller owns and updates data. */
|
|
42
|
+
onRowOrderChange?: (data: TData[], change: TableRowOrderChange) => void;
|
|
43
|
+
tableOptions?: Omit<RentnerTableOptions<TData>, 'data' | 'columns' | 'getRowId' | 'enableRowSelection'>;
|
|
44
|
+
portalContainer?: Element | DocumentFragment | null;
|
|
45
|
+
};
|
|
46
|
+
export type DataTableProps<TData extends RowData> = DataTableLogicOptions<TData> & TableRowEvents<TData> & {
|
|
47
|
+
tableProps?: Omit<ComponentPropsWithRef<'table'>, 'children' | 'dangerouslySetInnerHTML'>;
|
|
48
|
+
title?: ReactNode;
|
|
49
|
+
description?: ReactNode;
|
|
50
|
+
icon?: ReactNode;
|
|
51
|
+
searchable?: boolean;
|
|
52
|
+
searchPlaceholder?: string;
|
|
53
|
+
columnFilters?: boolean;
|
|
54
|
+
columnVisibility?: boolean;
|
|
55
|
+
isLoading?: boolean;
|
|
56
|
+
isRefreshing?: boolean;
|
|
57
|
+
error?: ReactNode;
|
|
58
|
+
onRetry?: () => void;
|
|
59
|
+
emptyState?: ReactNode;
|
|
60
|
+
loadingState?: ReactNode;
|
|
61
|
+
noResultsState?: ReactNode;
|
|
62
|
+
size?: TableSize;
|
|
63
|
+
striped?: boolean;
|
|
64
|
+
stickyHeader?: boolean;
|
|
65
|
+
className?: string;
|
|
66
|
+
classNames?: DataTableClassNames;
|
|
67
|
+
toolbarActions?: ReactNode | ((context: DataTableContext<TData>) => ReactNode);
|
|
68
|
+
bulkActions?: (context: DataTableContext<TData>) => ReactNode;
|
|
69
|
+
rowClassName?: (row: TableRow<TData>) => string | undefined;
|
|
70
|
+
};
|
|
71
|
+
export interface DataTableLogicResult<TData extends RowData> {
|
|
72
|
+
table: RentnerTableInstance<TData>;
|
|
73
|
+
state: TableLogicResult<TData>['state'] & {
|
|
74
|
+
id: string;
|
|
75
|
+
search: string;
|
|
76
|
+
showFilters: boolean;
|
|
77
|
+
hasFilters: boolean;
|
|
78
|
+
filterCount: number;
|
|
79
|
+
filterColumns: TableColumnInstance<TData>[];
|
|
80
|
+
columnItems: MenuItem[];
|
|
81
|
+
selectedRows: TableRow<TData>[];
|
|
82
|
+
selectionCount: number;
|
|
83
|
+
selectionEnabled: boolean;
|
|
84
|
+
canSelectPage: boolean;
|
|
85
|
+
allPageSelected: boolean;
|
|
86
|
+
somePageSelected: boolean;
|
|
87
|
+
firstRow: number;
|
|
88
|
+
lastRow: number;
|
|
89
|
+
totalRows: number | null;
|
|
90
|
+
totalPages: number | null;
|
|
91
|
+
page: number;
|
|
92
|
+
pageSize: number;
|
|
93
|
+
pageSizes: {
|
|
94
|
+
value: number;
|
|
95
|
+
label: string;
|
|
96
|
+
}[];
|
|
97
|
+
canPreviousPage: boolean;
|
|
98
|
+
canNextPage: boolean;
|
|
99
|
+
portalContainer: Element | DocumentFragment | null;
|
|
100
|
+
};
|
|
101
|
+
handler: {
|
|
102
|
+
handleSearch: (value: string) => void;
|
|
103
|
+
handleToggleFilters: () => void;
|
|
104
|
+
handleResetFilters: () => void;
|
|
105
|
+
handleClearSelection: () => void;
|
|
106
|
+
handleSelectPage: () => void;
|
|
107
|
+
handlePageSize: (value: number) => void;
|
|
108
|
+
handleFirstPage: () => void;
|
|
109
|
+
handlePreviousPage: () => void;
|
|
110
|
+
handleNextPage: () => void;
|
|
111
|
+
handleLastPage: () => void;
|
|
112
|
+
handleRowReorder: (activeId: string, overId: string) => void;
|
|
113
|
+
};
|
|
114
|
+
refs: {
|
|
115
|
+
root: (element: HTMLElement | null) => void;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export type DataTableToolbarProps<TData extends RowData> = {
|
|
119
|
+
state: DataTableLogicResult<TData>['state'];
|
|
120
|
+
handler: DataTableLogicResult<TData>['handler'];
|
|
121
|
+
options: Pick<DataTableProps<TData>, 'title' | 'description' | 'icon' | 'searchable' | 'searchPlaceholder' | 'columnFilters' | 'columnVisibility' | 'toolbarActions' | 'bulkActions' | 'isLoading' | 'isRefreshing'>;
|
|
122
|
+
table: RentnerTableInstance<TData>;
|
|
123
|
+
className?: string;
|
|
124
|
+
};
|
|
125
|
+
export type TableSurfaceProps<TData extends RowData> = Omit<ComponentPropsWithRef<'table'>, 'children'> & TableRowEvents<TData> & {
|
|
126
|
+
table: RentnerTableInstance<TData>;
|
|
127
|
+
view: TableLogicResult<TData>['state'];
|
|
128
|
+
caption?: ReactNode;
|
|
129
|
+
size?: TableSize;
|
|
130
|
+
striped?: boolean;
|
|
131
|
+
isLoading?: boolean;
|
|
132
|
+
emptyState?: ReactNode;
|
|
133
|
+
loadingState?: ReactNode;
|
|
134
|
+
noResultsState?: ReactNode;
|
|
135
|
+
hasFilters?: boolean;
|
|
136
|
+
error?: ReactNode;
|
|
137
|
+
onRetry?: () => void;
|
|
138
|
+
onResetFilters?: () => void;
|
|
139
|
+
containerClassName?: string;
|
|
140
|
+
embedded?: boolean;
|
|
141
|
+
stickyHeader?: boolean;
|
|
142
|
+
classNames?: DataTableClassNames;
|
|
143
|
+
rowClassName?: DataTableProps<TData>['rowClassName'];
|
|
144
|
+
selection?: DataTableLogicResult<TData>['state'];
|
|
145
|
+
onSelectPage?: () => void;
|
|
146
|
+
getRowLabel?: (row: TData) => string;
|
|
147
|
+
renderExpandedRow?: (row: TableRow<TData>) => ReactNode;
|
|
148
|
+
detailsId?: string;
|
|
149
|
+
filters?: ReactNode;
|
|
150
|
+
detailedStates?: boolean;
|
|
151
|
+
resizableColumns?: boolean;
|
|
152
|
+
reorderableRows?: boolean;
|
|
153
|
+
onRowReorder?: (activeId: string, overId: string) => void;
|
|
154
|
+
};
|
|
155
|
+
export type TableButtonProps = ComponentPropsWithRef<'button'> & {
|
|
156
|
+
active?: boolean;
|
|
157
|
+
iconOnly?: boolean;
|
|
158
|
+
};
|
|
159
|
+
export interface TableCheckboxProps {
|
|
160
|
+
checked: boolean;
|
|
161
|
+
indeterminate?: boolean;
|
|
162
|
+
disabled?: boolean;
|
|
163
|
+
label: string;
|
|
164
|
+
onChange: () => void;
|
|
165
|
+
}
|
|
166
|
+
export interface TableCheckboxLogicResult {
|
|
167
|
+
refs: {
|
|
168
|
+
input: RefObject<HTMLInputElement | null>;
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export interface TableColumnFilterProps<TData extends RowData> {
|
|
172
|
+
column: TableColumnInstance<TData>;
|
|
173
|
+
locale: TableLocale;
|
|
174
|
+
messages: TableMessages;
|
|
175
|
+
disabled?: boolean;
|
|
176
|
+
}
|
|
177
|
+
export interface TableDateRangeFilterProps {
|
|
178
|
+
value: unknown;
|
|
179
|
+
onValueChange: (value: TableDateRange) => void;
|
|
180
|
+
label: string;
|
|
181
|
+
placeholder?: string;
|
|
182
|
+
locale: TableLocale;
|
|
183
|
+
disabled?: boolean;
|
|
184
|
+
}
|
|
185
|
+
export type TableHeadProps<TData extends RowData> = Pick<TableSurfaceProps<TData>, 'table' | 'view' | 'selection' | 'onSelectPage' | 'renderExpandedRow' | 'isLoading' | 'filters' | 'classNames' | 'stickyHeader' | 'resizableColumns' | 'reorderableRows'>;
|
|
186
|
+
export type TableBodyProps<TData extends RowData> = Pick<TableSurfaceProps<TData>, 'table' | 'view' | 'selection' | 'renderExpandedRow' | 'getRowLabel' | 'detailsId' | 'classNames' | 'rowClassName' | 'isLoading' | 'striped' | 'reorderableRows' | 'resizableColumns' | 'onRowClick' | 'onRowDoubleClick' | 'onRowContextMenu' | 'onCellClick' | 'onCellDoubleClick' | 'onCellContextMenu'>;
|
|
187
|
+
export type TableStatusProps = Pick<TableSurfaceProps<object>, 'isLoading' | 'loadingState' | 'emptyState' | 'noResultsState' | 'hasFilters' | 'error' | 'onRetry' | 'onResetFilters' | 'detailedStates'> & {
|
|
188
|
+
view: {
|
|
189
|
+
columnCount: number;
|
|
190
|
+
messages: TableMessages;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
export type DataTablePaginationProps<TData extends RowData> = {
|
|
194
|
+
state: DataTableLogicResult<TData>['state'];
|
|
195
|
+
handler: DataTableLogicResult<TData>['handler'];
|
|
196
|
+
locale: TableLocale;
|
|
197
|
+
pagination: boolean;
|
|
198
|
+
disabled?: boolean;
|
|
199
|
+
className?: string;
|
|
200
|
+
};
|
|
201
|
+
export interface TableRowActionsProps {
|
|
202
|
+
label: string;
|
|
203
|
+
items: readonly MenuItem[];
|
|
204
|
+
disabled?: boolean;
|
|
205
|
+
}
|
|
206
|
+
export interface TableProviderProps {
|
|
207
|
+
children: ReactNode;
|
|
208
|
+
portalContainer?: Element | DocumentFragment | null;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=dataTable.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataTable.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Types/dataTable.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataTable.types.js","sourceRoot":"","sources":["../../../../src/shared/Table/Types/dataTable.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Column, Row, RowData } from '@tanstack/react-table'\nimport type { ComponentPropsWithRef, ReactNode, RefObject } from 'react'\nimport type { MenuItem } from '@rentnerkev/menu'\nimport type { TableDateRange } from './column.types.ts'\nimport type { rentnerTableFeatures } from '../../../lib/Table/table.ts'\nimport type {\n TableRowEvents,\n TableRowOrderChange,\n} from './interaction.types.ts'\nimport type {\n RentnerTableInstance,\n RentnerTableOptions,\n TableLogicResult,\n TableLocale,\n TableMessages,\n TableSize,\n} from './table.types.ts'\n\nexport type TableRow<TData extends RowData> = Row<\n typeof rentnerTableFeatures,\n TData\n>\nexport type TableColumnInstance<TData extends RowData> = Column<\n typeof rentnerTableFeatures,\n TData,\n unknown\n>\n\nexport interface DataTableContext<TData extends RowData> {\n table: RentnerTableInstance<TData>\n selectedRows: readonly TableRow<TData>[]\n}\n\nexport interface DataTableClassNames {\n root?: string\n toolbar?: string\n viewport?: string\n table?: string\n header?: string\n headerCell?: string\n row?: string\n cell?: string\n footer?: string\n}\n\nexport type DataTableLogicOptions<TData extends RowData> = Pick<\n RentnerTableOptions<TData>,\n 'data' | 'columns'\n> & {\n /** Stable record identity, independent of position, for selection and reordering. */\n getRowId: (row: TData, index: number) => string\n locale?: TableLocale\n messages?: Partial<TableMessages>\n pagination?: boolean\n pageSize?: number\n pageSizeOptions?: readonly number[]\n selectable?: boolean | ((row: TableRow<TData>) => boolean)\n getRowLabel?: (row: TData) => string\n renderExpandedRow?: (row: TableRow<TData>) => ReactNode\n initialShowFilters?: boolean\n /** Enable horizontal drag handles and keyboard column resizing. Defaults to false. */\n resizableColumns?: boolean\n /** Enable drag handles, row previews and keyboard reordering. Clear sorting to reorder. */\n reorderableRows?: boolean\n /** Receive the reordered input data. With this callback, the caller owns and updates data. */\n onRowOrderChange?: (data: TData[], change: TableRowOrderChange) => void\n tableOptions?: Omit<\n RentnerTableOptions<TData>,\n 'data' | 'columns' | 'getRowId' | 'enableRowSelection'\n >\n portalContainer?: Element | DocumentFragment | null\n}\n\nexport type DataTableProps<TData extends RowData> =\n DataTableLogicOptions<TData> &\n TableRowEvents<TData> & {\n tableProps?: Omit<\n ComponentPropsWithRef<'table'>,\n 'children' | 'dangerouslySetInnerHTML'\n >\n title?: ReactNode\n description?: ReactNode\n icon?: ReactNode\n searchable?: boolean\n searchPlaceholder?: string\n columnFilters?: boolean\n columnVisibility?: boolean\n isLoading?: boolean\n isRefreshing?: boolean\n error?: ReactNode\n onRetry?: () => void\n emptyState?: ReactNode\n loadingState?: ReactNode\n noResultsState?: ReactNode\n size?: TableSize\n striped?: boolean\n stickyHeader?: boolean\n className?: string\n classNames?: DataTableClassNames\n toolbarActions?:\n ReactNode | ((context: DataTableContext<TData>) => ReactNode)\n bulkActions?: (context: DataTableContext<TData>) => ReactNode\n rowClassName?: (row: TableRow<TData>) => string | undefined\n }\n\nexport interface DataTableLogicResult<TData extends RowData> {\n table: RentnerTableInstance<TData>\n state: TableLogicResult<TData>['state'] & {\n id: string\n search: string\n showFilters: boolean\n hasFilters: boolean\n filterCount: number\n filterColumns: TableColumnInstance<TData>[]\n columnItems: MenuItem[]\n selectedRows: TableRow<TData>[]\n selectionCount: number\n selectionEnabled: boolean\n canSelectPage: boolean\n allPageSelected: boolean\n somePageSelected: boolean\n firstRow: number\n lastRow: number\n totalRows: number | null\n totalPages: number | null\n page: number\n pageSize: number\n pageSizes: { value: number; label: string }[]\n canPreviousPage: boolean\n canNextPage: boolean\n portalContainer: Element | DocumentFragment | null\n }\n handler: {\n handleSearch: (value: string) => void\n handleToggleFilters: () => void\n handleResetFilters: () => void\n handleClearSelection: () => void\n handleSelectPage: () => void\n handlePageSize: (value: number) => void\n handleFirstPage: () => void\n handlePreviousPage: () => void\n handleNextPage: () => void\n handleLastPage: () => void\n handleRowReorder: (activeId: string, overId: string) => void\n }\n refs: { root: (element: HTMLElement | null) => void }\n}\n\nexport type DataTableToolbarProps<TData extends RowData> = {\n state: DataTableLogicResult<TData>['state']\n handler: DataTableLogicResult<TData>['handler']\n options: Pick<\n DataTableProps<TData>,\n | 'title'\n | 'description'\n | 'icon'\n | 'searchable'\n | 'searchPlaceholder'\n | 'columnFilters'\n | 'columnVisibility'\n | 'toolbarActions'\n | 'bulkActions'\n | 'isLoading'\n | 'isRefreshing'\n >\n table: RentnerTableInstance<TData>\n className?: string\n}\n\nexport type TableSurfaceProps<TData extends RowData> = Omit<\n ComponentPropsWithRef<'table'>,\n 'children'\n> &\n TableRowEvents<TData> & {\n table: RentnerTableInstance<TData>\n view: TableLogicResult<TData>['state']\n caption?: ReactNode\n size?: TableSize\n striped?: boolean\n isLoading?: boolean\n emptyState?: ReactNode\n loadingState?: ReactNode\n noResultsState?: ReactNode\n hasFilters?: boolean\n error?: ReactNode\n onRetry?: () => void\n onResetFilters?: () => void\n containerClassName?: string\n embedded?: boolean\n stickyHeader?: boolean\n classNames?: DataTableClassNames\n rowClassName?: DataTableProps<TData>['rowClassName']\n selection?: DataTableLogicResult<TData>['state']\n onSelectPage?: () => void\n getRowLabel?: (row: TData) => string\n renderExpandedRow?: (row: TableRow<TData>) => ReactNode\n detailsId?: string\n filters?: ReactNode\n detailedStates?: boolean\n resizableColumns?: boolean\n reorderableRows?: boolean\n onRowReorder?: (activeId: string, overId: string) => void\n }\n\nexport type TableButtonProps = ComponentPropsWithRef<'button'> & {\n active?: boolean\n iconOnly?: boolean\n}\nexport interface TableCheckboxProps {\n checked: boolean\n indeterminate?: boolean\n disabled?: boolean\n label: string\n onChange: () => void\n}\nexport interface TableCheckboxLogicResult {\n refs: { input: RefObject<HTMLInputElement | null> }\n}\n\nexport interface TableColumnFilterProps<TData extends RowData> {\n column: TableColumnInstance<TData>\n locale: TableLocale\n messages: TableMessages\n disabled?: boolean\n}\n\nexport interface TableDateRangeFilterProps {\n value: unknown\n onValueChange: (value: TableDateRange) => void\n label: string\n placeholder?: string\n locale: TableLocale\n disabled?: boolean\n}\n\nexport type TableHeadProps<TData extends RowData> = Pick<\n TableSurfaceProps<TData>,\n | 'table'\n | 'view'\n | 'selection'\n | 'onSelectPage'\n | 'renderExpandedRow'\n | 'isLoading'\n | 'filters'\n | 'classNames'\n | 'stickyHeader'\n | 'resizableColumns'\n | 'reorderableRows'\n>\nexport type TableBodyProps<TData extends RowData> = Pick<\n TableSurfaceProps<TData>,\n | 'table'\n | 'view'\n | 'selection'\n | 'renderExpandedRow'\n | 'getRowLabel'\n | 'detailsId'\n | 'classNames'\n | 'rowClassName'\n | 'isLoading'\n | 'striped'\n | 'reorderableRows'\n | 'resizableColumns'\n | 'onRowClick'\n | 'onRowDoubleClick'\n | 'onRowContextMenu'\n | 'onCellClick'\n | 'onCellDoubleClick'\n | 'onCellContextMenu'\n>\nexport type TableStatusProps = Pick<\n TableSurfaceProps<object>,\n | 'isLoading'\n | 'loadingState'\n | 'emptyState'\n | 'noResultsState'\n | 'hasFilters'\n | 'error'\n | 'onRetry'\n | 'onResetFilters'\n | 'detailedStates'\n> & { view: { columnCount: number; messages: TableMessages } }\nexport type DataTablePaginationProps<TData extends RowData> = {\n state: DataTableLogicResult<TData>['state']\n handler: DataTableLogicResult<TData>['handler']\n locale: TableLocale\n pagination: boolean\n disabled?: boolean\n className?: string\n}\n\nexport interface TableRowActionsProps {\n label: string\n items: readonly MenuItem[]\n disabled?: boolean\n}\n\nexport interface TableProviderProps {\n children: ReactNode\n portalContainer?: Element | DocumentFragment | null\n}\n"]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Cell, Header, RowData } from '@tanstack/react-table';
|
|
2
|
+
import type { MouseEvent, ReactNode, Ref } from 'react';
|
|
3
|
+
import type { rentnerTableFeatures } from '../../../lib/Table/table.ts';
|
|
4
|
+
import type { TableRow, TableBodyProps } from './dataTable.types.ts';
|
|
5
|
+
import type { RentnerTableInstance, TableMessages } from './table.types.ts';
|
|
6
|
+
export type TableCell<TData extends RowData> = Cell<typeof rentnerTableFeatures, TData, unknown>;
|
|
7
|
+
export interface TableRowEvents<TData extends RowData> {
|
|
8
|
+
/** Ignores controls, prevented events and descendants marked data-no-row-click. */
|
|
9
|
+
onRowClick?: (row: TableRow<TData>, event: MouseEvent<HTMLTableRowElement>) => void;
|
|
10
|
+
onRowDoubleClick?: (row: TableRow<TData>, event: MouseEvent<HTMLTableRowElement>) => void;
|
|
11
|
+
onRowContextMenu?: (row: TableRow<TData>, event: MouseEvent<HTMLTableRowElement>) => void;
|
|
12
|
+
onCellClick?: (cell: TableCell<TData>, event: MouseEvent<HTMLTableCellElement>) => void;
|
|
13
|
+
onCellDoubleClick?: (cell: TableCell<TData>, event: MouseEvent<HTMLTableCellElement>) => void;
|
|
14
|
+
onCellContextMenu?: (cell: TableCell<TData>, event: MouseEvent<HTMLTableCellElement>) => void;
|
|
15
|
+
}
|
|
16
|
+
export interface TableRowOrderChange {
|
|
17
|
+
activeId: string;
|
|
18
|
+
overId: string;
|
|
19
|
+
/** Positions within the full data input, before filtering and pagination. */
|
|
20
|
+
fromIndex: number;
|
|
21
|
+
toIndex: number;
|
|
22
|
+
}
|
|
23
|
+
export interface TableInteractionMessages {
|
|
24
|
+
resizeColumn: (label: string) => string;
|
|
25
|
+
resetColumnSize: (label: string) => string;
|
|
26
|
+
moveRows: string;
|
|
27
|
+
moveRow: (label: string) => string;
|
|
28
|
+
rowSortingActive: string;
|
|
29
|
+
dragInstructions: string;
|
|
30
|
+
dragStart: (label: string) => string;
|
|
31
|
+
dragOver: (label: string, position: number, total: number) => string;
|
|
32
|
+
dragEnd: (label: string, position: number, total: number) => string;
|
|
33
|
+
dragCancel: (label: string) => string;
|
|
34
|
+
}
|
|
35
|
+
export type TableDataRowProps<TData extends RowData> = Omit<TableBodyProps<TData>, 'view'> & {
|
|
36
|
+
row: TableRow<TData>;
|
|
37
|
+
view: TableBodyProps<TData>['view'];
|
|
38
|
+
index: number;
|
|
39
|
+
dragHandle?: ReactNode;
|
|
40
|
+
};
|
|
41
|
+
export interface ColumnResizeLogicResult {
|
|
42
|
+
state: {
|
|
43
|
+
fixed: boolean;
|
|
44
|
+
width: number;
|
|
45
|
+
widths: {
|
|
46
|
+
id: string;
|
|
47
|
+
width: number;
|
|
48
|
+
}[];
|
|
49
|
+
};
|
|
50
|
+
refs: {
|
|
51
|
+
table: Ref<HTMLTableElement>;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export interface TableColumnResizeHandleProps<TData extends RowData> {
|
|
55
|
+
table: RentnerTableInstance<TData>;
|
|
56
|
+
header: Header<typeof rentnerTableFeatures, TData, unknown>;
|
|
57
|
+
messages: TableMessages;
|
|
58
|
+
disabled?: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface TableReorderProviderProps {
|
|
61
|
+
rows: readonly {
|
|
62
|
+
id: string;
|
|
63
|
+
}[];
|
|
64
|
+
messages: TableMessages;
|
|
65
|
+
disabled: boolean;
|
|
66
|
+
disabledReason?: string;
|
|
67
|
+
getLabel: (id: string) => string;
|
|
68
|
+
onReorder?: (activeId: string, overId: string) => void;
|
|
69
|
+
children: ReactNode;
|
|
70
|
+
}
|
|
71
|
+
export interface TableDragOptions {
|
|
72
|
+
disabled: boolean;
|
|
73
|
+
reason?: string;
|
|
74
|
+
moveRow: (label: string) => string;
|
|
75
|
+
}
|
|
76
|
+
export interface TableRowPreview {
|
|
77
|
+
element: HTMLTableElement;
|
|
78
|
+
left: number;
|
|
79
|
+
width: number;
|
|
80
|
+
}
|
|
81
|
+
export interface TableDragGroupProps {
|
|
82
|
+
id: string;
|
|
83
|
+
label: string;
|
|
84
|
+
children: (handle: ReactNode) => ReactNode;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=interaction.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Types/interaction.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.types.js","sourceRoot":"","sources":["../../../../src/shared/Table/Types/interaction.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Cell, Header, RowData } from '@tanstack/react-table'\nimport type { MouseEvent, ReactNode, Ref } from 'react'\nimport type { rentnerTableFeatures } from '../../../lib/Table/table.ts'\nimport type { TableRow, TableBodyProps } from './dataTable.types.ts'\nimport type { RentnerTableInstance, TableMessages } from './table.types.ts'\n\nexport type TableCell<TData extends RowData> = Cell<\n typeof rentnerTableFeatures,\n TData,\n unknown\n>\n\nexport interface TableRowEvents<TData extends RowData> {\n /** Ignores controls, prevented events and descendants marked data-no-row-click. */\n onRowClick?: (\n row: TableRow<TData>,\n event: MouseEvent<HTMLTableRowElement>,\n ) => void\n onRowDoubleClick?: (\n row: TableRow<TData>,\n event: MouseEvent<HTMLTableRowElement>,\n ) => void\n onRowContextMenu?: (\n row: TableRow<TData>,\n event: MouseEvent<HTMLTableRowElement>,\n ) => void\n onCellClick?: (\n cell: TableCell<TData>,\n event: MouseEvent<HTMLTableCellElement>,\n ) => void\n onCellDoubleClick?: (\n cell: TableCell<TData>,\n event: MouseEvent<HTMLTableCellElement>,\n ) => void\n onCellContextMenu?: (\n cell: TableCell<TData>,\n event: MouseEvent<HTMLTableCellElement>,\n ) => void\n}\n\nexport interface TableRowOrderChange {\n activeId: string\n overId: string\n /** Positions within the full data input, before filtering and pagination. */\n fromIndex: number\n toIndex: number\n}\n\nexport interface TableInteractionMessages {\n resizeColumn: (label: string) => string\n resetColumnSize: (label: string) => string\n moveRows: string\n moveRow: (label: string) => string\n rowSortingActive: string\n dragInstructions: string\n dragStart: (label: string) => string\n dragOver: (label: string, position: number, total: number) => string\n dragEnd: (label: string, position: number, total: number) => string\n dragCancel: (label: string) => string\n}\n\nexport type TableDataRowProps<TData extends RowData> = Omit<\n TableBodyProps<TData>,\n 'view'\n> & {\n row: TableRow<TData>\n view: TableBodyProps<TData>['view']\n index: number\n dragHandle?: ReactNode\n}\nexport interface ColumnResizeLogicResult {\n state: {\n fixed: boolean\n width: number\n widths: { id: string; width: number }[]\n }\n refs: { table: Ref<HTMLTableElement> }\n}\nexport interface TableColumnResizeHandleProps<TData extends RowData> {\n table: RentnerTableInstance<TData>\n header: Header<typeof rentnerTableFeatures, TData, unknown>\n messages: TableMessages\n disabled?: boolean\n}\n\nexport interface TableReorderProviderProps {\n rows: readonly { id: string }[]\n messages: TableMessages\n disabled: boolean\n disabledReason?: string\n getLabel: (id: string) => string\n onReorder?: (activeId: string, overId: string) => void\n children: ReactNode\n}\n\nexport interface TableDragOptions {\n disabled: boolean\n reason?: string\n moveRow: (label: string) => string\n}\n\nexport interface TableRowPreview {\n element: HTMLTableElement\n left: number\n width: number\n}\n\nexport interface TableDragGroupProps {\n id: string\n label: string\n children: (handle: ReactNode) => ReactNode\n}\n"]}
|