@rentnerkev/table 0.0.1 → 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/README.md +4 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/Messages/tableMessages.d.ts.map +1 -1
- package/dist/lib/Messages/tableMessages.js +20 -0
- package/dist/lib/Messages/tableMessages.js.map +1 -1
- 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/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 +2 -0
- package/dist/lib/Table/table.d.ts.map +1 -1
- package/dist/lib/Table/table.js +2 -1
- package/dist/lib/Table/table.js.map +1 -1
- package/dist/shared/Table/Components/DataTable.d.ts.map +1 -1
- package/dist/shared/Table/Components/DataTable.js +1 -1
- package/dist/shared/Table/Components/DataTable.js.map +1 -1
- package/dist/shared/Table/Components/Table.d.ts +1 -1
- package/dist/shared/Table/Components/Table.d.ts.map +1 -1
- package/dist/shared/Table/Components/Table.js +3 -2
- package/dist/shared/Table/Components/Table.js.map +1 -1
- package/dist/shared/Table/Components/TableBody.d.ts +1 -1
- package/dist/shared/Table/Components/TableBody.d.ts.map +1 -1
- package/dist/shared/Table/Components/TableBody.js +6 -15
- package/dist/shared/Table/Components/TableBody.js.map +1 -1
- 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/TableHead.d.ts +1 -1
- package/dist/shared/Table/Components/TableHead.d.ts.map +1 -1
- package/dist/shared/Table/Components/TableHead.js +10 -4
- package/dist/shared/Table/Components/TableHead.js.map +1 -1
- 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/TableSurface.d.ts +1 -1
- package/dist/shared/Table/Components/TableSurface.d.ts.map +1 -1
- package/dist/shared/Table/Components/TableSurface.js +16 -8
- package/dist/shared/Table/Components/TableSurface.js.map +1 -1
- 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 +1 -1
- package/dist/shared/Table/Hooks/useDataTableLogic.d.ts.map +1 -1
- package/dist/shared/Table/Hooks/useDataTableLogic.js +22 -3
- package/dist/shared/Table/Hooks/useDataTableLogic.js.map +1 -1
- 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 +1 -1
- package/dist/shared/Table/Hooks/useTableLogic.d.ts.map +1 -1
- package/dist/shared/Table/Hooks/useTableLogic.js +6 -1
- package/dist/shared/Table/Hooks/useTableLogic.js.map +1 -1
- 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/dataTable.types.d.ts +17 -4
- package/dist/shared/Table/Types/dataTable.types.d.ts.map +1 -1
- package/dist/shared/Table/Types/dataTable.types.js.map +1 -1
- 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 +5 -2
- package/dist/shared/Table/Types/table.types.d.ts.map +1 -1
- package/dist/shared/Table/Types/table.types.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/docs/usage.md +54 -0
- package/package.json +5 -1
|
@@ -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"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ComponentPropsWithRef, ReactNode } from 'react';
|
|
2
2
|
import type { ColumnDef, Header, ReactTable, Row, RowData, SortingState, TableOptions } from '@tanstack/react-table';
|
|
3
3
|
import type { rentnerTableFeatures } from '../../../lib/Table/table.ts';
|
|
4
|
+
import type { TableInteractionMessages, TableRowEvents } from './interaction.types.ts';
|
|
4
5
|
export type TableLocale = 'de' | 'en';
|
|
5
6
|
export type TableSize = 'sm' | 'md' | 'lg';
|
|
6
|
-
export interface TableMessages {
|
|
7
|
+
export interface TableMessages extends Partial<TableInteractionMessages> {
|
|
7
8
|
empty: string;
|
|
8
9
|
loading: string;
|
|
9
10
|
sortAscending: string;
|
|
@@ -44,8 +45,10 @@ export type TableLogicOptions<TData extends RowData> = Pick<TableOptions<typeof
|
|
|
44
45
|
initialSorting?: SortingState;
|
|
45
46
|
locale?: TableLocale;
|
|
46
47
|
messages?: Partial<TableMessages>;
|
|
48
|
+
/** Enable horizontal drag handles and keyboard column resizing. Defaults to false. */
|
|
49
|
+
resizableColumns?: boolean;
|
|
47
50
|
};
|
|
48
|
-
export type TableProps<TData extends RowData> = Omit<ComponentPropsWithRef<'table'>, 'children'> & TableLogicOptions<TData> & {
|
|
51
|
+
export type TableProps<TData extends RowData> = Omit<ComponentPropsWithRef<'table'>, 'children'> & TableLogicOptions<TData> & TableRowEvents<TData> & {
|
|
49
52
|
children?: never;
|
|
50
53
|
caption?: ReactNode;
|
|
51
54
|
size?: TableSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Types/table.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAK,EACR,SAAS,EACT,MAAM,EACN,UAAU,EACV,GAAG,EACH,OAAO,EACP,YAAY,EACZ,YAAY,EACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"table.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Types/table.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.types.js","sourceRoot":"","sources":["../../../../src/shared/Table/Types/table.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react'\nimport type {\n ColumnDef,\n Header,\n ReactTable,\n Row,\n RowData,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table'\nimport type { rentnerTableFeatures } from '../../../lib/Table/table.ts'\n\nexport type TableLocale = 'de' | 'en'\nexport type TableSize = 'sm' | 'md' | 'lg'\n\nexport interface TableMessages {\n empty: string\n loading: string\n sortAscending: string\n sortDescending: string\n clearSorting: string\n title: string\n search: string\n searchPlaceholder: string\n filters: string\n columns: string\n resetFilters: string\n noResults: string\n noResultsDescription: string\n emptyDescription: string\n error: string\n retry: string\n all: string\n filterColumn: (label: string) => string\n rowsPerPage: string\n firstPage: string\n previousPage: string\n nextPage: string\n lastPage: string\n pageInfo: (page: number, pages: number | null) => string\n rowRange: (first: number, last: number, total: number | null) => string\n results: (count: number) => string\n selected: (count: number) => string\n clearSelection: string\n selectPage: string\n selectRow: (label: string) => string\n expandRow: (label: string) => string\n collapseRow: (label: string) => string\n}\n\nexport type TableColumn<TData extends RowData, TValue = unknown> = ColumnDef<\n typeof rentnerTableFeatures,\n TData,\n TValue\n>\n\nexport type RentnerTableInstance<TData extends RowData> = ReactTable<\n typeof rentnerTableFeatures,\n TData\n>\nexport type RentnerTableOptions<TData extends RowData> = Omit<\n TableOptions<typeof rentnerTableFeatures, TData>,\n 'features'\n>\n\nexport type TableLogicOptions<TData extends RowData> = Pick<\n TableOptions<typeof rentnerTableFeatures, TData>,\n 'data' | 'columns' | 'getRowId' | 'enableSorting'\n> & {\n initialSorting?: SortingState\n locale?: TableLocale\n messages?: Partial<TableMessages>\n}\n\nexport type TableProps<TData extends RowData> = Omit<\n ComponentPropsWithRef<'table'>,\n 'children'\n> &\n TableLogicOptions<TData> & {\n children?: never\n caption?: ReactNode\n size?: TableSize\n striped?: boolean\n isLoading?: boolean\n emptyState?: ReactNode\n loadingState?: ReactNode\n containerClassName?: string\n }\n\nexport interface TableHeaderState<TData extends RowData> {\n header: Header<typeof rentnerTableFeatures, TData, unknown>\n canSort: boolean\n sortDirection: 'ascending' | 'descending' | undefined\n sortAction: string\n sortIndicator: string\n}\n\nexport interface TableLogicResult<TData extends RowData> {\n table: ReactTable<typeof rentnerTableFeatures, TData>\n state: {\n headerGroups: {\n id: string\n headers: TableHeaderState<TData>[]\n }[]\n rows: Row<typeof rentnerTableFeatures, TData>[]\n columnCount: number\n messages: TableMessages\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"table.types.js","sourceRoot":"","sources":["../../../../src/shared/Table/Types/table.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react'\nimport type {\n ColumnDef,\n Header,\n ReactTable,\n Row,\n RowData,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table'\nimport type { rentnerTableFeatures } from '../../../lib/Table/table.ts'\nimport type {\n TableInteractionMessages,\n TableRowEvents,\n} from './interaction.types.ts'\n\nexport type TableLocale = 'de' | 'en'\nexport type TableSize = 'sm' | 'md' | 'lg'\n\nexport interface TableMessages extends Partial<TableInteractionMessages> {\n empty: string\n loading: string\n sortAscending: string\n sortDescending: string\n clearSorting: string\n title: string\n search: string\n searchPlaceholder: string\n filters: string\n columns: string\n resetFilters: string\n noResults: string\n noResultsDescription: string\n emptyDescription: string\n error: string\n retry: string\n all: string\n filterColumn: (label: string) => string\n rowsPerPage: string\n firstPage: string\n previousPage: string\n nextPage: string\n lastPage: string\n pageInfo: (page: number, pages: number | null) => string\n rowRange: (first: number, last: number, total: number | null) => string\n results: (count: number) => string\n selected: (count: number) => string\n clearSelection: string\n selectPage: string\n selectRow: (label: string) => string\n expandRow: (label: string) => string\n collapseRow: (label: string) => string\n}\n\nexport type TableColumn<TData extends RowData, TValue = unknown> = ColumnDef<\n typeof rentnerTableFeatures,\n TData,\n TValue\n>\n\nexport type RentnerTableInstance<TData extends RowData> = ReactTable<\n typeof rentnerTableFeatures,\n TData\n>\nexport type RentnerTableOptions<TData extends RowData> = Omit<\n TableOptions<typeof rentnerTableFeatures, TData>,\n 'features'\n>\n\nexport type TableLogicOptions<TData extends RowData> = Pick<\n TableOptions<typeof rentnerTableFeatures, TData>,\n 'data' | 'columns' | 'getRowId' | 'enableSorting'\n> & {\n initialSorting?: SortingState\n locale?: TableLocale\n messages?: Partial<TableMessages>\n /** Enable horizontal drag handles and keyboard column resizing. Defaults to false. */\n resizableColumns?: boolean\n}\n\nexport type TableProps<TData extends RowData> = Omit<\n ComponentPropsWithRef<'table'>,\n 'children'\n> &\n TableLogicOptions<TData> &\n TableRowEvents<TData> & {\n children?: never\n caption?: ReactNode\n size?: TableSize\n striped?: boolean\n isLoading?: boolean\n emptyState?: ReactNode\n loadingState?: ReactNode\n containerClassName?: string\n }\n\nexport interface TableHeaderState<TData extends RowData> {\n header: Header<typeof rentnerTableFeatures, TData, unknown>\n canSort: boolean\n sortDirection: 'ascending' | 'descending' | undefined\n sortAction: string\n sortIndicator: string\n}\n\nexport interface TableLogicResult<TData extends RowData> {\n table: ReactTable<typeof rentnerTableFeatures, TData>\n state: {\n headerGroups: {\n id: string\n headers: TableHeaderState<TData>[]\n }[]\n rows: Row<typeof rentnerTableFeatures, TData>[]\n columnCount: number\n messages: TableMessages\n }\n}\n"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type { TableCell, TableRowEvents, TableRowOrderChange, TableInteractionMessages, } from './shared/Table/Types/interaction.types.ts';
|
|
1
2
|
export type { TableColumn, TableLocale, TableLogicOptions, TableLogicResult, TableMessages, TableProps, TableSize, RentnerTableInstance, RentnerTableOptions, } from './shared/Table/Types/table.types.ts';
|
|
2
3
|
export type { TableColumnMeta, TableColumnFilter, TableDateRange, } from './shared/Table/Types/column.types.ts';
|
|
3
4
|
export type { TableProviderProps } from './shared/Table/Types/dataTable.types.ts';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,qCAAqC,CAAA;AAC5C,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,GACjB,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AACjF,YAAY,EACR,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,GACvB,MAAM,yCAAyC,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,wBAAwB,GAC3B,MAAM,2CAA2C,CAAA;AAClD,YAAY,EACR,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,qCAAqC,CAAA;AAC5C,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,GACjB,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AACjF,YAAY,EACR,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,GACvB,MAAM,yCAAyC,CAAA"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type {\n TableColumn,\n TableLocale,\n TableLogicOptions,\n TableLogicResult,\n TableMessages,\n TableProps,\n TableSize,\n RentnerTableInstance,\n RentnerTableOptions,\n} from './shared/Table/Types/table.types.ts'\nexport type {\n TableColumnMeta,\n TableColumnFilter,\n TableDateRange,\n} from './shared/Table/Types/column.types.ts'\nexport type { TableProviderProps } from './shared/Table/Types/dataTable.types.ts'\nexport type {\n DataTableProps,\n DataTableLogicOptions,\n DataTableLogicResult,\n DataTableContext,\n DataTableClassNames,\n TableRow,\n TableColumnInstance,\n TableSurfaceProps,\n DataTableToolbarProps,\n DataTablePaginationProps,\n TableRowActionsProps,\n} from './shared/Table/Types/dataTable.types.ts'\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type {\n TableCell,\n TableRowEvents,\n TableRowOrderChange,\n TableInteractionMessages,\n} from './shared/Table/Types/interaction.types.ts'\nexport type {\n TableColumn,\n TableLocale,\n TableLogicOptions,\n TableLogicResult,\n TableMessages,\n TableProps,\n TableSize,\n RentnerTableInstance,\n RentnerTableOptions,\n} from './shared/Table/Types/table.types.ts'\nexport type {\n TableColumnMeta,\n TableColumnFilter,\n TableDateRange,\n} from './shared/Table/Types/column.types.ts'\nexport type { TableProviderProps } from './shared/Table/Types/dataTable.types.ts'\nexport type {\n DataTableProps,\n DataTableLogicOptions,\n DataTableLogicResult,\n DataTableContext,\n DataTableClassNames,\n TableRow,\n TableColumnInstance,\n TableSurfaceProps,\n DataTableToolbarProps,\n DataTablePaginationProps,\n TableRowActionsProps,\n} from './shared/Table/Types/dataTable.types.ts'\n"]}
|
package/docs/usage.md
CHANGED
|
@@ -19,6 +19,60 @@ The package supports React 19, React DOM 19, Tailwind CSS 4 and TanStack Table 9
|
|
|
19
19
|
|
|
20
20
|
`Table` takes `data`, `columns`, an optional `getRowId` and a `caption`. It renders every supplied row and supports `enableSorting`, `initialSorting`, `locale`, `messages`, density, striped rows and loading/empty content. It accepts native table attributes and a ref.
|
|
21
21
|
|
|
22
|
+
## Resizing and row reordering
|
|
23
|
+
|
|
24
|
+
Both capabilities are opt-in. `resizableColumns` works with `Table` and `DataTable`; `reorderableRows` is provided by `DataTable`.
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
import { useState } from 'react'
|
|
28
|
+
import { DataTable, createTableColumnHelper } from '@rentnerkev/table'
|
|
29
|
+
|
|
30
|
+
interface Member {
|
|
31
|
+
id: string
|
|
32
|
+
name: string
|
|
33
|
+
role: string
|
|
34
|
+
}
|
|
35
|
+
const initialMembers: Member[] = [
|
|
36
|
+
{ id: 'alex', name: 'Alex Weber', role: 'Developer' },
|
|
37
|
+
{ id: 'sam', name: 'Sam Fischer', role: 'Designer' },
|
|
38
|
+
]
|
|
39
|
+
const column = createTableColumnHelper<Member>()
|
|
40
|
+
const columns = column.columns([
|
|
41
|
+
column.accessor('name', { header: 'Member', minSize: 100, maxSize: 600 }),
|
|
42
|
+
column.accessor('role', { header: 'Role', enableResizing: false }),
|
|
43
|
+
])
|
|
44
|
+
|
|
45
|
+
export default function ReusableTeam() {
|
|
46
|
+
const [data, setData] = useState(initialMembers)
|
|
47
|
+
return (
|
|
48
|
+
<DataTable
|
|
49
|
+
data={data}
|
|
50
|
+
columns={columns}
|
|
51
|
+
getRowId={(member) => member.id}
|
|
52
|
+
getRowLabel={(member) => member.name}
|
|
53
|
+
title="Project team"
|
|
54
|
+
resizableColumns
|
|
55
|
+
reorderableRows
|
|
56
|
+
onRowOrderChange={(next) => setData(next)}
|
|
57
|
+
/>
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Resize a leaf column at its edge. Arrow keys change width by 10 pixels, Shift+Arrow by 50; Home or double-click resets its configured size, and End selects its maximum. `minSize`, `maxSize` and `enableResizing` configure each column. Native `tableOptions.columnResizeMode`, `columnResizeDirection`, controlled `state.columnSizing` and `onColumnSizingChange` remain available on `DataTable`.
|
|
63
|
+
|
|
64
|
+
Drag a row by its handle, hold the handle briefly on touch devices, or use Space, arrow keys and Space/Enter to move it with the keyboard. Escape and drops outside the table cancel. The preview stays within the visible table width and includes expanded details. Clear sorting before reordering; dragging is disabled while sorting is active or the table is loading or showing an error.
|
|
65
|
+
|
|
66
|
+
`reorderableRows` alone keeps the order internally. Providing `onRowOrderChange(data, change)` makes the caller responsible for applying the returned array. `TableRowOrderChange` contains `activeId`, `overId`, `fromIndex` and `toIndex`; indices refer to the full supplied data, before filtering and pagination. Only rendered rows are drag targets. Keep stable record IDs, preserve the rest of the data when persisting server-page changes, and retain order in your backend when required. Selection and expanded details stay attached to their record during reordering. Drag dependencies load on demand.
|
|
67
|
+
|
|
68
|
+
## Row, cell and table events
|
|
69
|
+
|
|
70
|
+
`Table` and `DataTable` provide `onRowClick`, `onRowDoubleClick`, `onRowContextMenu`, `onCellClick`, `onCellDoubleClick` and `onCellContextMenu`. Callbacks receive the native typed row/cell followed by the React mouse event. Use `row.original`, `cell.row.original` and `cell.column.id` to route application actions.
|
|
71
|
+
|
|
72
|
+
Row click and double-click notifications ignore interactive controls, prevented events and descendants marked `data-no-row-click`. Cell handlers can call `preventDefault()` to suppress the row callback, or `stopPropagation()` to stop bubbling. Render editable cells as accessible buttons or shared RentnerKev controls; those controls keep their own keyboard behavior.
|
|
73
|
+
|
|
74
|
+
For context menus, either prevent the browser menu and open your own UI, or wrap the table with `ContextMenu` from `@rentnerkev/menu` and let the event bubble to that wrapper. Set the target row in `onRowContextMenu` before the wrapper opens. Native table events, attributes and refs go through `DataTable.tableProps`; `Table` accepts them directly. When using headless composition, pass `handler.handleRowReorder` to `TableSurface.onRowReorder` together with `reorderableRows`.
|
|
75
|
+
|
|
22
76
|
## Columns and filters
|
|
23
77
|
|
|
24
78
|
Create columns with `createTableColumnHelper<YourRecord>()`. `helper.columns([...])` preserves typed values across heterogeneous accessor columns. Define reusable columns outside render, or memoize columns that depend on locale or callbacks.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rentnerkev/table",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Accessible, typed React tables with TanStack Table and shared RentnerKev styling.",
|
|
5
5
|
"author": "RentnerKev",
|
|
6
6
|
"license": "MIT",
|
|
@@ -83,6 +83,10 @@
|
|
|
83
83
|
"react-dom": "^19.0.0"
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
|
+
"@dnd-kit/core": "^6.3.1",
|
|
87
|
+
"@dnd-kit/modifiers": "^9.0.0",
|
|
88
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
89
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
86
90
|
"@rentnerkev/calendar": "^2.9.0",
|
|
87
91
|
"@rentnerkev/inputs": "^2.8.1",
|
|
88
92
|
"@rentnerkev/menu": "^1.1.0",
|