@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.
Files changed (166) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -2
  3. package/dist/index.d.ts +18 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +13 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/Messages/tableMessages.d.ts +4 -0
  8. package/dist/lib/Messages/tableMessages.d.ts.map +1 -0
  9. package/dist/lib/Messages/tableMessages.js +101 -0
  10. package/dist/lib/Messages/tableMessages.js.map +1 -0
  11. package/dist/lib/Table/events.d.ts +2 -0
  12. package/dist/lib/Table/events.d.ts.map +1 -0
  13. package/dist/lib/Table/events.js +5 -0
  14. package/dist/lib/Table/events.js.map +1 -0
  15. package/dist/lib/Table/filters.d.ts +20 -0
  16. package/dist/lib/Table/filters.d.ts.map +1 -0
  17. package/dist/lib/Table/filters.js +102 -0
  18. package/dist/lib/Table/filters.js.map +1 -0
  19. package/dist/lib/Table/presentation.d.ts +7 -0
  20. package/dist/lib/Table/presentation.d.ts.map +1 -0
  21. package/dist/lib/Table/presentation.js +63 -0
  22. package/dist/lib/Table/presentation.js.map +1 -0
  23. package/dist/lib/Table/rowOrder.d.ts +7 -0
  24. package/dist/lib/Table/rowOrder.d.ts.map +1 -0
  25. package/dist/lib/Table/rowOrder.js +26 -0
  26. package/dist/lib/Table/rowOrder.js.map +1 -0
  27. package/dist/lib/Table/table.d.ts +89 -0
  28. package/dist/lib/Table/table.d.ts.map +1 -0
  29. package/dist/lib/Table/table.js +29 -0
  30. package/dist/lib/Table/table.js.map +1 -0
  31. package/dist/shared/Table/Components/DataTable.d.ts +4 -0
  32. package/dist/shared/Table/Components/DataTable.d.ts.map +1 -0
  33. package/dist/shared/Table/Components/DataTable.js +13 -0
  34. package/dist/shared/Table/Components/DataTable.js.map +1 -0
  35. package/dist/shared/Table/Components/DataTablePagination.d.ts +4 -0
  36. package/dist/shared/Table/Components/DataTablePagination.d.ts.map +1 -0
  37. package/dist/shared/Table/Components/DataTablePagination.js +10 -0
  38. package/dist/shared/Table/Components/DataTablePagination.js.map +1 -0
  39. package/dist/shared/Table/Components/DataTableToolbar.d.ts +4 -0
  40. package/dist/shared/Table/Components/DataTableToolbar.d.ts.map +1 -0
  41. package/dist/shared/Table/Components/DataTableToolbar.js +19 -0
  42. package/dist/shared/Table/Components/DataTableToolbar.js.map +1 -0
  43. package/dist/shared/Table/Components/Table.d.ts +4 -0
  44. package/dist/shared/Table/Components/Table.d.ts.map +1 -0
  45. package/dist/shared/Table/Components/Table.js +18 -0
  46. package/dist/shared/Table/Components/Table.js.map +1 -0
  47. package/dist/shared/Table/Components/TableBody.d.ts +4 -0
  48. package/dist/shared/Table/Components/TableBody.d.ts.map +1 -0
  49. package/dist/shared/Table/Components/TableBody.js +8 -0
  50. package/dist/shared/Table/Components/TableBody.js.map +1 -0
  51. package/dist/shared/Table/Components/TableButton.d.ts +3 -0
  52. package/dist/shared/Table/Components/TableButton.d.ts.map +1 -0
  53. package/dist/shared/Table/Components/TableButton.js +5 -0
  54. package/dist/shared/Table/Components/TableButton.js.map +1 -0
  55. package/dist/shared/Table/Components/TableCheckbox.d.ts +3 -0
  56. package/dist/shared/Table/Components/TableCheckbox.d.ts.map +1 -0
  57. package/dist/shared/Table/Components/TableCheckbox.js +8 -0
  58. package/dist/shared/Table/Components/TableCheckbox.js.map +1 -0
  59. package/dist/shared/Table/Components/TableColumnFilter.d.ts +4 -0
  60. package/dist/shared/Table/Components/TableColumnFilter.d.ts.map +1 -0
  61. package/dist/shared/Table/Components/TableColumnFilter.js +23 -0
  62. package/dist/shared/Table/Components/TableColumnFilter.js.map +1 -0
  63. package/dist/shared/Table/Components/TableDataRow.d.ts +4 -0
  64. package/dist/shared/Table/Components/TableDataRow.d.ts.map +1 -0
  65. package/dist/shared/Table/Components/TableDataRow.js +26 -0
  66. package/dist/shared/Table/Components/TableDataRow.js.map +1 -0
  67. package/dist/shared/Table/Components/TableDateRangeFilter.d.ts +3 -0
  68. package/dist/shared/Table/Components/TableDateRangeFilter.d.ts.map +1 -0
  69. package/dist/shared/Table/Components/TableDateRangeFilter.js +15 -0
  70. package/dist/shared/Table/Components/TableDateRangeFilter.js.map +1 -0
  71. package/dist/shared/Table/Components/TableHead.d.ts +4 -0
  72. package/dist/shared/Table/Components/TableHead.d.ts.map +1 -0
  73. package/dist/shared/Table/Components/TableHead.js +17 -0
  74. package/dist/shared/Table/Components/TableHead.js.map +1 -0
  75. package/dist/shared/Table/Components/TableProvider.d.ts +3 -0
  76. package/dist/shared/Table/Components/TableProvider.d.ts.map +1 -0
  77. package/dist/shared/Table/Components/TableProvider.js +9 -0
  78. package/dist/shared/Table/Components/TableProvider.js.map +1 -0
  79. package/dist/shared/Table/Components/TableReorderProvider.d.ts +3 -0
  80. package/dist/shared/Table/Components/TableReorderProvider.d.ts.map +1 -0
  81. package/dist/shared/Table/Components/TableReorderProvider.js +43 -0
  82. package/dist/shared/Table/Components/TableReorderProvider.js.map +1 -0
  83. package/dist/shared/Table/Components/TableResizeHandle.d.ts +4 -0
  84. package/dist/shared/Table/Components/TableResizeHandle.d.ts.map +1 -0
  85. package/dist/shared/Table/Components/TableResizeHandle.js +13 -0
  86. package/dist/shared/Table/Components/TableResizeHandle.js.map +1 -0
  87. package/dist/shared/Table/Components/TableRowActions.d.ts +3 -0
  88. package/dist/shared/Table/Components/TableRowActions.d.ts.map +1 -0
  89. package/dist/shared/Table/Components/TableRowActions.js +9 -0
  90. package/dist/shared/Table/Components/TableRowActions.js.map +1 -0
  91. package/dist/shared/Table/Components/TableStatus.d.ts +3 -0
  92. package/dist/shared/Table/Components/TableStatus.d.ts.map +1 -0
  93. package/dist/shared/Table/Components/TableStatus.js +18 -0
  94. package/dist/shared/Table/Components/TableStatus.js.map +1 -0
  95. package/dist/shared/Table/Components/TableSurface.d.ts +4 -0
  96. package/dist/shared/Table/Components/TableSurface.d.ts.map +1 -0
  97. package/dist/shared/Table/Components/TableSurface.js +19 -0
  98. package/dist/shared/Table/Components/TableSurface.js.map +1 -0
  99. package/dist/shared/Table/Components/TableViewport.d.ts +4 -0
  100. package/dist/shared/Table/Components/TableViewport.d.ts.map +1 -0
  101. package/dist/shared/Table/Components/TableViewport.js +20 -0
  102. package/dist/shared/Table/Components/TableViewport.js.map +1 -0
  103. package/dist/shared/Table/Hooks/useDataTableLogic.d.ts +4 -0
  104. package/dist/shared/Table/Hooks/useDataTableLogic.d.ts.map +1 -0
  105. package/dist/shared/Table/Hooks/useDataTableLogic.js +201 -0
  106. package/dist/shared/Table/Hooks/useDataTableLogic.js.map +1 -0
  107. package/dist/shared/Table/Hooks/useTableCheckboxLogic.d.ts +3 -0
  108. package/dist/shared/Table/Hooks/useTableCheckboxLogic.d.ts.map +1 -0
  109. package/dist/shared/Table/Hooks/useTableCheckboxLogic.js +10 -0
  110. package/dist/shared/Table/Hooks/useTableCheckboxLogic.js.map +1 -0
  111. package/dist/shared/Table/Hooks/useTableColumnResizeLogic.d.ts +6 -0
  112. package/dist/shared/Table/Hooks/useTableColumnResizeLogic.d.ts.map +1 -0
  113. package/dist/shared/Table/Hooks/useTableColumnResizeLogic.js +40 -0
  114. package/dist/shared/Table/Hooks/useTableColumnResizeLogic.js.map +1 -0
  115. package/dist/shared/Table/Hooks/useTableDragLogic.d.ts +21 -0
  116. package/dist/shared/Table/Hooks/useTableDragLogic.d.ts.map +1 -0
  117. package/dist/shared/Table/Hooks/useTableDragLogic.js +110 -0
  118. package/dist/shared/Table/Hooks/useTableDragLogic.js.map +1 -0
  119. package/dist/shared/Table/Hooks/useTableLogic.d.ts +4 -0
  120. package/dist/shared/Table/Hooks/useTableLogic.d.ts.map +1 -0
  121. package/dist/shared/Table/Hooks/useTableLogic.js +26 -0
  122. package/dist/shared/Table/Hooks/useTableLogic.js.map +1 -0
  123. package/dist/shared/Table/Hooks/useTableOverlay.d.ts +3 -0
  124. package/dist/shared/Table/Hooks/useTableOverlay.d.ts.map +1 -0
  125. package/dist/shared/Table/Hooks/useTableOverlay.js +6 -0
  126. package/dist/shared/Table/Hooks/useTableOverlay.js.map +1 -0
  127. package/dist/shared/Table/Hooks/useTableResizeHandleLogic.d.ts +20 -0
  128. package/dist/shared/Table/Hooks/useTableResizeHandleLogic.d.ts.map +1 -0
  129. package/dist/shared/Table/Hooks/useTableResizeHandleLogic.js +52 -0
  130. package/dist/shared/Table/Hooks/useTableResizeHandleLogic.js.map +1 -0
  131. package/dist/shared/Table/Hooks/useTableRowDragContext.d.ts +5 -0
  132. package/dist/shared/Table/Hooks/useTableRowDragContext.d.ts.map +1 -0
  133. package/dist/shared/Table/Hooks/useTableRowDragContext.js +6 -0
  134. package/dist/shared/Table/Hooks/useTableRowDragContext.js.map +1 -0
  135. package/dist/shared/Table/Hooks/useTableRowEventsLogic.d.ts +12 -0
  136. package/dist/shared/Table/Hooks/useTableRowEventsLogic.d.ts.map +1 -0
  137. package/dist/shared/Table/Hooks/useTableRowEventsLogic.js +25 -0
  138. package/dist/shared/Table/Hooks/useTableRowEventsLogic.js.map +1 -0
  139. package/dist/shared/Table/Hooks/useTableRowOrder.d.ts +11 -0
  140. package/dist/shared/Table/Hooks/useTableRowOrder.d.ts.map +1 -0
  141. package/dist/shared/Table/Hooks/useTableRowOrder.js +19 -0
  142. package/dist/shared/Table/Hooks/useTableRowOrder.js.map +1 -0
  143. package/dist/shared/Table/Types/column.types.d.ts +35 -0
  144. package/dist/shared/Table/Types/column.types.d.ts.map +1 -0
  145. package/dist/shared/Table/Types/column.types.js +2 -0
  146. package/dist/shared/Table/Types/column.types.js.map +1 -0
  147. package/dist/shared/Table/Types/dataTable.types.d.ts +210 -0
  148. package/dist/shared/Table/Types/dataTable.types.d.ts.map +1 -0
  149. package/dist/shared/Table/Types/dataTable.types.js +2 -0
  150. package/dist/shared/Table/Types/dataTable.types.js.map +1 -0
  151. package/dist/shared/Table/Types/interaction.types.d.ts +86 -0
  152. package/dist/shared/Table/Types/interaction.types.d.ts.map +1 -0
  153. package/dist/shared/Table/Types/interaction.types.js +2 -0
  154. package/dist/shared/Table/Types/interaction.types.js.map +1 -0
  155. package/dist/shared/Table/Types/table.types.d.ts +80 -0
  156. package/dist/shared/Table/Types/table.types.d.ts.map +1 -0
  157. package/dist/shared/Table/Types/table.types.js +2 -0
  158. package/dist/shared/Table/Types/table.types.js.map +1 -0
  159. package/dist/types.d.ts +6 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/dist/types.js +2 -0
  162. package/dist/types.js.map +1 -0
  163. package/docs/usage.md +184 -0
  164. package/package.json +113 -5
  165. package/tailwind.css +7 -0
  166. package/theme.css +40 -0
@@ -0,0 +1,7 @@
1
+ import type { TableRowOrderChange } from '../../shared/Table/Types/interaction.types.ts';
2
+ export declare function applyTableRowOrder<TData>(data: readonly TData[], order: readonly string[] | undefined, getRowId: (row: TData, index: number) => string): readonly TData[];
3
+ export declare function moveTableRow<TData>(data: readonly TData[], getRowId: (row: TData, index: number) => string, activeId: string, overId: string): {
4
+ data: TData[];
5
+ change: TableRowOrderChange;
6
+ } | undefined;
7
+ //# sourceMappingURL=rowOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowOrder.d.ts","sourceRoot":"","sources":["../../../src/lib/Table/rowOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAExF,wBAAgB,kBAAkB,CAAC,KAAK,EACpC,IAAI,EAAE,SAAS,KAAK,EAAE,EACtB,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACpC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAChD,SAAS,KAAK,EAAE,CAclB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAC9B,IAAI,EAAE,SAAS,KAAK,EAAE,EACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,EAC/C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG,SAAS,CAU5D"}
@@ -0,0 +1,26 @@
1
+ export function applyTableRowOrder(data, order, getRowId) {
2
+ if (!order)
3
+ return data;
4
+ const records = new Map(data.map((row, index) => [getRowId(row, index), row]));
5
+ const known = new Set(order);
6
+ const ordered = order
7
+ .filter((id) => records.has(id))
8
+ .map((id) => records.get(id));
9
+ let index = 0;
10
+ // New records retain the insertion positions supplied by the application.
11
+ return data.map((row, position) => known.has(getRowId(row, position)) ? (ordered[index++] ?? row) : row);
12
+ }
13
+ export function moveTableRow(data, getRowId, activeId, overId) {
14
+ const ids = data.map(getRowId);
15
+ const fromIndex = ids.indexOf(activeId);
16
+ const toIndex = ids.indexOf(overId);
17
+ if (fromIndex < 0 || toIndex < 0 || fromIndex === toIndex)
18
+ return undefined;
19
+ const result = [...data];
20
+ const [moved] = result.splice(fromIndex, 1);
21
+ if (moved === undefined)
22
+ return undefined;
23
+ result.splice(toIndex, 0, moved);
24
+ return { data: result, change: { activeId, overId, fromIndex, toIndex } };
25
+ }
26
+ //# sourceMappingURL=rowOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowOrder.js","sourceRoot":"","sources":["../../../src/lib/Table/rowOrder.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAC9B,IAAsB,EACtB,KAAoC,EACpC,QAA+C;IAE/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,OAAO,GAAG,IAAI,GAAG,CACnB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CACxD,CAAA;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,KAAK;SAChB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC/B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACjC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,0EAA0E;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAC9B,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CACvE,CAAA;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CACxB,IAAsB,EACtB,QAA+C,EAC/C,QAAgB,EAChB,MAAc;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACxB,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;IAChC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAA;AAC7E,CAAC","sourcesContent":["import type { TableRowOrderChange } from '../../shared/Table/Types/interaction.types.ts'\n\nexport function applyTableRowOrder<TData>(\n data: readonly TData[],\n order: readonly string[] | undefined,\n getRowId: (row: TData, index: number) => string,\n): readonly TData[] {\n if (!order) return data\n const records = new Map(\n data.map((row, index) => [getRowId(row, index), row]),\n )\n const known = new Set(order)\n const ordered = order\n .filter((id) => records.has(id))\n .map((id) => records.get(id))\n let index = 0\n // New records retain the insertion positions supplied by the application.\n return data.map((row, position) =>\n known.has(getRowId(row, position)) ? (ordered[index++] ?? row) : row,\n )\n}\n\nexport function moveTableRow<TData>(\n data: readonly TData[],\n getRowId: (row: TData, index: number) => string,\n activeId: string,\n overId: string,\n): { data: TData[]; change: TableRowOrderChange } | undefined {\n const ids = data.map(getRowId)\n const fromIndex = ids.indexOf(activeId)\n const toIndex = ids.indexOf(overId)\n if (fromIndex < 0 || toIndex < 0 || fromIndex === toIndex) return undefined\n const result = [...data]\n const [moved] = result.splice(fromIndex, 1)\n if (moved === undefined) return undefined\n result.splice(toIndex, 0, moved)\n return { data: result, change: { activeId, overId, fromIndex, toIndex } }\n}\n"]}
@@ -0,0 +1,89 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { TableColumnMeta } from '../../shared/Table/Types/column.types.ts';
3
+ export declare const rentnerTableFeatures: {
4
+ columnMeta: TableColumnMeta;
5
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
6
+ columnResizingFeature: import("@tanstack/react-table").TableFeature;
7
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
8
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
9
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
10
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
11
+ filterFns: {
12
+ text: ((row: {
13
+ getValue: (id: string) => unknown;
14
+ }, columnId: string, value: unknown) => boolean) & {
15
+ autoRemove: (value: unknown) => boolean;
16
+ resolveFilterValue: (value: unknown) => unknown;
17
+ };
18
+ equals: ((row: {
19
+ getValue: (id: string) => unknown;
20
+ }, columnId: string, value: unknown) => boolean) & {
21
+ autoRemove: (value: unknown) => value is "" | null | undefined;
22
+ };
23
+ dateRange: ((row: {
24
+ getValue: (id: string) => unknown;
25
+ }, columnId: string, value: unknown) => boolean) & {
26
+ resolveFilterValue: (value: unknown) => unknown;
27
+ autoRemove: (value: unknown) => boolean;
28
+ };
29
+ };
30
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
31
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
32
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
33
+ rowExpandingFeature: import("@tanstack/react-table").TableFeature;
34
+ expandedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
35
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
36
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
37
+ sortFns: {
38
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
39
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
40
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
41
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
42
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
43
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
44
+ };
45
+ };
46
+ export declare function createTableColumnHelper<TData extends RowData>(): import("@tanstack/react-table").ColumnHelper<{
47
+ columnMeta: TableColumnMeta;
48
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
49
+ columnResizingFeature: import("@tanstack/react-table").TableFeature;
50
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
51
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
52
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
53
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
54
+ filterFns: {
55
+ text: ((row: {
56
+ getValue: (id: string) => unknown;
57
+ }, columnId: string, value: unknown) => boolean) & {
58
+ autoRemove: (value: unknown) => boolean;
59
+ resolveFilterValue: (value: unknown) => unknown;
60
+ };
61
+ equals: ((row: {
62
+ getValue: (id: string) => unknown;
63
+ }, columnId: string, value: unknown) => boolean) & {
64
+ autoRemove: (value: unknown) => value is "" | null | undefined;
65
+ };
66
+ dateRange: ((row: {
67
+ getValue: (id: string) => unknown;
68
+ }, columnId: string, value: unknown) => boolean) & {
69
+ resolveFilterValue: (value: unknown) => unknown;
70
+ autoRemove: (value: unknown) => boolean;
71
+ };
72
+ };
73
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
74
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
75
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
76
+ rowExpandingFeature: import("@tanstack/react-table").TableFeature;
77
+ expandedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
78
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
79
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
80
+ sortFns: {
81
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
82
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
83
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
84
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
85
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
86
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
87
+ };
88
+ }, TData>;
89
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/lib/Table/table.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAS/E,eAAO,MAAM,oBAAoB;;;;;;;;;QASzB,IAAI;;;;;;QACJ,MAAM;;;;;QACN,SAAS;;;;;;;;;;;;;;;;;;;;;;CAUf,CAAA;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,OAAO;;;;;;;;;QAdrD,IAAI;;;;;;QACJ,MAAM;;;;;QACN,SAAS;;;;;;;;;;;;;;;;;;;;;;UAchB"}
@@ -0,0 +1,29 @@
1
+ import { createColumnHelper, columnFilteringFeature, columnSizingFeature, columnResizingFeature, columnVisibilityFeature, createExpandedRowModel, createFilteredRowModel, createPaginatedRowModel, createSortedRowModel, globalFilteringFeature, rowExpandingFeature, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, sortFns, tableFeatures, } from '@tanstack/react-table';
2
+ import { tableDateRangeFilter, tableEqualsFilter, tableTextFilter, } from './filters.js';
3
+ const columnMeta = {};
4
+ export const rentnerTableFeatures = tableFeatures({
5
+ columnMeta,
6
+ columnSizingFeature,
7
+ columnResizingFeature,
8
+ columnVisibilityFeature,
9
+ columnFilteringFeature,
10
+ globalFilteringFeature,
11
+ filteredRowModel: createFilteredRowModel(),
12
+ filterFns: {
13
+ text: tableTextFilter,
14
+ equals: tableEqualsFilter,
15
+ dateRange: tableDateRangeFilter,
16
+ },
17
+ rowPaginationFeature,
18
+ paginatedRowModel: createPaginatedRowModel(),
19
+ rowSelectionFeature,
20
+ rowExpandingFeature,
21
+ expandedRowModel: createExpandedRowModel(),
22
+ rowSortingFeature,
23
+ sortedRowModel: createSortedRowModel(),
24
+ sortFns,
25
+ });
26
+ export function createTableColumnHelper() {
27
+ return createColumnHelper();
28
+ }
29
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/lib/Table/table.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,OAAO,EACP,aAAa,GAChB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAClB,MAAM,cAAc,CAAA;AAErB,MAAM,UAAU,GAAoB,EAAE,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;IAC9C,UAAU;IACV,mBAAmB;IACnB,qBAAqB;IACrB,uBAAuB;IACvB,sBAAsB;IACtB,sBAAsB;IACtB,gBAAgB,EAAE,sBAAsB,EAAE;IAC1C,SAAS,EAAE;QACP,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,oBAAoB;KAClC;IACD,oBAAoB;IACpB,iBAAiB,EAAE,uBAAuB,EAAE;IAC5C,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB,EAAE,sBAAsB,EAAE;IAC1C,iBAAiB;IACjB,cAAc,EAAE,oBAAoB,EAAE;IACtC,OAAO;CACV,CAAC,CAAA;AAEF,MAAM,UAAU,uBAAuB;IACnC,OAAO,kBAAkB,EAAsC,CAAA;AACnE,CAAC","sourcesContent":["import {\n createColumnHelper,\n columnFilteringFeature,\n columnSizingFeature,\n columnResizingFeature,\n columnVisibilityFeature,\n createExpandedRowModel,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n globalFilteringFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFns,\n tableFeatures,\n} from '@tanstack/react-table'\nimport type { RowData } from '@tanstack/react-table'\nimport type { TableColumnMeta } from '../../shared/Table/Types/column.types.ts'\nimport {\n tableDateRangeFilter,\n tableEqualsFilter,\n tableTextFilter,\n} from './filters.ts'\n\nconst columnMeta: TableColumnMeta = {}\n\nexport const rentnerTableFeatures = tableFeatures({\n columnMeta,\n columnSizingFeature,\n columnResizingFeature,\n columnVisibilityFeature,\n columnFilteringFeature,\n globalFilteringFeature,\n filteredRowModel: createFilteredRowModel(),\n filterFns: {\n text: tableTextFilter,\n equals: tableEqualsFilter,\n dateRange: tableDateRangeFilter,\n },\n rowPaginationFeature,\n paginatedRowModel: createPaginatedRowModel(),\n rowSelectionFeature,\n rowExpandingFeature,\n expandedRowModel: createExpandedRowModel(),\n rowSortingFeature,\n sortedRowModel: createSortedRowModel(),\n sortFns,\n})\n\nexport function createTableColumnHelper<TData extends RowData>() {\n return createColumnHelper<typeof rentnerTableFeatures, TData>()\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { DataTableProps } from '../Types/dataTable.types.ts';
3
+ export declare function DataTable<TData extends RowData>(props: DataTableProps<TData>): import("react").JSX.Element;
4
+ //# sourceMappingURL=DataTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/DataTable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAOpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEjE,wBAAgB,SAAS,CAAC,KAAK,SAAS,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,+BAkG5E"}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useDataTableLogic } from '../Hooks/useDataTableLogic.js';
4
+ import { DataTableToolbar } from './DataTableToolbar.js';
5
+ import { DataTablePagination } from './DataTablePagination.js';
6
+ import { TableColumnFilter } from './TableColumnFilter.js';
7
+ import { TableSurface } from './TableSurface.js';
8
+ import { TableProvider } from './TableProvider.js';
9
+ export function DataTable(props) {
10
+ const { table, state, handler, refs: { root }, } = useDataTableLogic(props);
11
+ return (_jsx(TableProvider, { portalContainer: state.portalContainer, children: _jsxs("section", { ref: root, "data-rentner-data-table": "", "aria-labelledby": `${state.id}-title`, className: `min-w-0 rounded-rentner-control border border-rentner-border bg-rentner-surface text-rentner-foreground ${props.classNames?.root ?? ''} ${props.className ?? ''}`, children: [_jsx(DataTableToolbar, { table: table, state: state, handler: handler, options: props, className: props.classNames?.toolbar }), _jsx(TableSurface, { ...props.tableProps, table: table, view: state, "aria-labelledby": `${state.id}-title`, embedded: true, detailedStates: true, resizableColumns: props.resizableColumns, reorderableRows: props.reorderableRows, onRowReorder: handler.handleRowReorder, onRowClick: props.onRowClick, onRowDoubleClick: props.onRowDoubleClick, onRowContextMenu: props.onRowContextMenu, onCellClick: props.onCellClick, onCellDoubleClick: props.onCellDoubleClick, onCellContextMenu: props.onCellContextMenu, size: props.size, striped: props.striped ?? true, stickyHeader: props.stickyHeader, classNames: props.classNames, selection: state, onSelectPage: handler.handleSelectPage, getRowLabel: props.getRowLabel, renderExpandedRow: props.renderExpandedRow, rowClassName: props.rowClassName, detailsId: `${state.id}-details`, isLoading: props.isLoading, emptyState: props.emptyState, loadingState: props.loadingState, noResultsState: props.noResultsState, hasFilters: state.hasFilters, error: props.error, onRetry: props.onRetry, onResetFilters: handler.handleResetFilters, filters: props.columnFilters !== false && state.showFilters ? (_jsxs("tr", { id: `${state.id}-filters`, children: [props.reorderableRows && (_jsx("td", { "aria-hidden": "true", className: "w-12" })), state.selectionEnabled && (_jsx("td", { "aria-hidden": "true", className: "w-12" })), props.renderExpandedRow && (_jsx("td", { "aria-hidden": "true", className: "w-10" })), state.filterColumns.map((column) => (_jsx("td", { className: "border-t border-rentner-border px-3 py-3", children: column.getCanFilter() && (_jsx(TableColumnFilter, { column: column, locale: props.locale ?? 'en', messages: state.messages, disabled: props.isLoading })) }, column.id)))] })) : null }), _jsx(DataTablePagination, { state: state, handler: handler, locale: props.locale ?? 'en', pagination: props.pagination !== false, disabled: props.isLoading, className: props.classNames?.footer })] }) }));
12
+ }
13
+ //# sourceMappingURL=DataTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/DataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport type { RowData } from '@tanstack/react-table'\nimport { useDataTableLogic } from '../Hooks/useDataTableLogic.ts'\nimport { DataTableToolbar } from './DataTableToolbar.tsx'\nimport { DataTablePagination } from './DataTablePagination.tsx'\nimport { TableColumnFilter } from './TableColumnFilter.tsx'\nimport { TableSurface } from './TableSurface.tsx'\nimport { TableProvider } from './TableProvider.tsx'\nimport type { DataTableProps } from '../Types/dataTable.types.ts'\n\nexport function DataTable<TData extends RowData>(props: DataTableProps<TData>) {\n const {\n table,\n state,\n handler,\n refs: { root },\n } = useDataTableLogic(props)\n return (\n <TableProvider portalContainer={state.portalContainer}>\n <section\n ref={root}\n data-rentner-data-table=\"\"\n aria-labelledby={`${state.id}-title`}\n className={`min-w-0 rounded-rentner-control border border-rentner-border bg-rentner-surface text-rentner-foreground ${props.classNames?.root ?? ''} ${props.className ?? ''}`}\n >\n <DataTableToolbar\n table={table}\n state={state}\n handler={handler}\n options={props}\n className={props.classNames?.toolbar}\n />\n <TableSurface\n {...props.tableProps}\n table={table}\n view={state}\n aria-labelledby={`${state.id}-title`}\n embedded\n detailedStates\n resizableColumns={props.resizableColumns}\n reorderableRows={props.reorderableRows}\n onRowReorder={handler.handleRowReorder}\n onRowClick={props.onRowClick}\n onRowDoubleClick={props.onRowDoubleClick}\n onRowContextMenu={props.onRowContextMenu}\n onCellClick={props.onCellClick}\n onCellDoubleClick={props.onCellDoubleClick}\n onCellContextMenu={props.onCellContextMenu}\n size={props.size}\n striped={props.striped ?? true}\n stickyHeader={props.stickyHeader}\n classNames={props.classNames}\n selection={state}\n onSelectPage={handler.handleSelectPage}\n getRowLabel={props.getRowLabel}\n renderExpandedRow={props.renderExpandedRow}\n rowClassName={props.rowClassName}\n detailsId={`${state.id}-details`}\n isLoading={props.isLoading}\n emptyState={props.emptyState}\n loadingState={props.loadingState}\n noResultsState={props.noResultsState}\n hasFilters={state.hasFilters}\n error={props.error}\n onRetry={props.onRetry}\n onResetFilters={handler.handleResetFilters}\n filters={\n props.columnFilters !== false && state.showFilters ? (\n <tr id={`${state.id}-filters`}>\n {props.reorderableRows && (\n <td aria-hidden=\"true\" className=\"w-12\" />\n )}\n {state.selectionEnabled && (\n <td aria-hidden=\"true\" className=\"w-12\" />\n )}\n {props.renderExpandedRow && (\n <td aria-hidden=\"true\" className=\"w-10\" />\n )}\n {state.filterColumns.map((column) => (\n <td\n key={column.id}\n className=\"border-t border-rentner-border px-3 py-3\"\n >\n {column.getCanFilter() && (\n <TableColumnFilter\n column={column}\n locale={props.locale ?? 'en'}\n messages={state.messages}\n disabled={props.isLoading}\n />\n )}\n </td>\n ))}\n </tr>\n ) : null\n }\n />\n <DataTablePagination\n state={state}\n handler={handler}\n locale={props.locale ?? 'en'}\n pagination={props.pagination !== false}\n disabled={props.isLoading}\n className={props.classNames?.footer}\n />\n </section>\n </TableProvider>\n )\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { DataTablePaginationProps } from '../Types/dataTable.types.ts';
3
+ export declare function DataTablePagination<TData extends RowData>({ state, handler, locale, pagination, disabled, className, }: DataTablePaginationProps<TData>): import("react").JSX.Element;
4
+ //# sourceMappingURL=DataTablePagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTablePagination.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/DataTablePagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AASpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAE3E,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,OAAO,EAAE,EACvD,KAAK,EACL,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAc,GACjB,EAAE,wBAAwB,CAAC,KAAK,CAAC,+BA+FjC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CustomSelect } from '@rentnerkev/select/select';
3
+ import { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, } from 'lucide-react';
4
+ import { TableButton } from './TableButton.js';
5
+ export function DataTablePagination({ state, handler, locale, pagination, disabled, className = '', }) {
6
+ return (_jsxs("div", { className: `flex flex-col gap-4 border-t border-rentner-border bg-rentner-control/15 px-5 py-4 text-xs text-rentner-muted lg:flex-row lg:items-center lg:justify-between ${className}`, children: [_jsx("p", { className: "tabular-nums", "aria-live": "polite", children: state.messages.rowRange(state.firstRow, state.lastRow, state.totalRows) }), pagination && (_jsxs("div", { className: "flex flex-wrap items-center gap-x-6 gap-y-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { id: `${state.id}-page-size`, children: state.messages.rowsPerPage }), _jsx(CustomSelect, { options: state.pageSizes, value: state.pageSize, onValueChange: handler.handlePageSize, "aria-labelledby": `${state.id}-page-size`, controlSize: "sm", locale: locale, disabled: disabled, className: "min-w-20" })] }), _jsxs("nav", { "aria-label": state.messages.pageInfo(state.page, state.totalPages), className: "flex items-center gap-1.5", children: [_jsx(TableButton, { iconOnly: true, "aria-label": state.messages.firstPage, onClick: handler.handleFirstPage, disabled: disabled || !state.canPreviousPage, children: _jsx(ChevronsLeft, { "aria-hidden": "true", className: "size-4" }) }), _jsx(TableButton, { iconOnly: true, "aria-label": state.messages.previousPage, onClick: handler.handlePreviousPage, disabled: disabled || !state.canPreviousPage, children: _jsx(ChevronLeft, { "aria-hidden": "true", className: "size-4" }) }), _jsx("span", { className: "min-w-24 px-2 text-center font-medium tabular-nums text-rentner-foreground", children: state.messages.pageInfo(state.page, state.totalPages) }), _jsx(TableButton, { iconOnly: true, "aria-label": state.messages.nextPage, onClick: handler.handleNextPage, disabled: disabled || !state.canNextPage, children: _jsx(ChevronRight, { "aria-hidden": "true", className: "size-4" }) }), _jsx(TableButton, { iconOnly: true, "aria-label": state.messages.lastPage, onClick: handler.handleLastPage, disabled: disabled ||
7
+ state.totalPages === null ||
8
+ !state.canNextPage, children: _jsx(ChevronsRight, { "aria-hidden": "true", className: "size-4" }) })] })] }))] }));
9
+ }
10
+ //# sourceMappingURL=DataTablePagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTablePagination.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/DataTablePagination.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EACH,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GAChB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAA;AAG/C,MAAM,UAAU,mBAAmB,CAAwB,EACvD,KAAK,EACL,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,GAAG,EAAE,GACgB;IAC9B,OAAO,CACH,eACI,SAAS,EAAE,gKAAgK,SAAS,EAAE,aAEtL,YAAG,SAAS,EAAC,cAAc,eAAW,QAAQ,YACzC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CACpB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,SAAS,CAClB,GACD,EACH,UAAU,IAAI,CACX,eAAK,SAAS,EAAC,6CAA6C,aACxD,eAAK,SAAS,EAAC,yBAAyB,aACpC,eAAM,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,YAAY,YAC5B,KAAK,CAAC,QAAQ,CAAC,WAAW,GACxB,EACP,KAAC,YAAY,IACT,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,KAAK,EAAE,KAAK,CAAC,QAAQ,EACrB,aAAa,EAAE,OAAO,CAAC,cAAc,qBACpB,GAAG,KAAK,CAAC,EAAE,YAAY,EACxC,WAAW,EAAC,IAAI,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,UAAU,GACtB,IACA,EACN,6BACgB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAC/B,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,CACnB,EACD,SAAS,EAAC,2BAA2B,aAErC,KAAC,WAAW,IACR,QAAQ,sBACI,KAAK,CAAC,QAAQ,CAAC,SAAS,EACpC,OAAO,EAAE,OAAO,CAAC,eAAe,EAChC,QAAQ,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,YAE5C,KAAC,YAAY,mBACG,MAAM,EAClB,SAAS,EAAC,QAAQ,GACpB,GACQ,EACd,KAAC,WAAW,IACR,QAAQ,sBACI,KAAK,CAAC,QAAQ,CAAC,YAAY,EACvC,OAAO,EAAE,OAAO,CAAC,kBAAkB,EACnC,QAAQ,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,YAE5C,KAAC,WAAW,mBACI,MAAM,EAClB,SAAS,EAAC,QAAQ,GACpB,GACQ,EACd,eAAM,SAAS,EAAC,4EAA4E,YACvF,KAAK,CAAC,QAAQ,CAAC,QAAQ,CACpB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,CACnB,GACE,EACP,KAAC,WAAW,IACR,QAAQ,sBACI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EACnC,OAAO,EAAE,OAAO,CAAC,cAAc,EAC/B,QAAQ,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,YAExC,KAAC,YAAY,mBACG,MAAM,EAClB,SAAS,EAAC,QAAQ,GACpB,GACQ,EACd,KAAC,WAAW,IACR,QAAQ,sBACI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EACnC,OAAO,EAAE,OAAO,CAAC,cAAc,EAC/B,QAAQ,EACJ,QAAQ;oCACR,KAAK,CAAC,UAAU,KAAK,IAAI;oCACzB,CAAC,KAAK,CAAC,WAAW,YAGtB,KAAC,aAAa,mBACE,MAAM,EAClB,SAAS,EAAC,QAAQ,GACpB,GACQ,IACZ,IACJ,CACT,IACC,CACT,CAAA;AACL,CAAC","sourcesContent":["import type { RowData } from '@tanstack/react-table'\nimport { CustomSelect } from '@rentnerkev/select/select'\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from 'lucide-react'\nimport { TableButton } from './TableButton.tsx'\nimport type { DataTablePaginationProps } from '../Types/dataTable.types.ts'\n\nexport function DataTablePagination<TData extends RowData>({\n state,\n handler,\n locale,\n pagination,\n disabled,\n className = '',\n}: DataTablePaginationProps<TData>) {\n return (\n <div\n className={`flex flex-col gap-4 border-t border-rentner-border bg-rentner-control/15 px-5 py-4 text-xs text-rentner-muted lg:flex-row lg:items-center lg:justify-between ${className}`}\n >\n <p className=\"tabular-nums\" aria-live=\"polite\">\n {state.messages.rowRange(\n state.firstRow,\n state.lastRow,\n state.totalRows,\n )}\n </p>\n {pagination && (\n <div className=\"flex flex-wrap items-center gap-x-6 gap-y-3\">\n <div className=\"flex items-center gap-2\">\n <span id={`${state.id}-page-size`}>\n {state.messages.rowsPerPage}\n </span>\n <CustomSelect\n options={state.pageSizes}\n value={state.pageSize}\n onValueChange={handler.handlePageSize}\n aria-labelledby={`${state.id}-page-size`}\n controlSize=\"sm\"\n locale={locale}\n disabled={disabled}\n className=\"min-w-20\"\n />\n </div>\n <nav\n aria-label={state.messages.pageInfo(\n state.page,\n state.totalPages,\n )}\n className=\"flex items-center gap-1.5\"\n >\n <TableButton\n iconOnly\n aria-label={state.messages.firstPage}\n onClick={handler.handleFirstPage}\n disabled={disabled || !state.canPreviousPage}\n >\n <ChevronsLeft\n aria-hidden=\"true\"\n className=\"size-4\"\n />\n </TableButton>\n <TableButton\n iconOnly\n aria-label={state.messages.previousPage}\n onClick={handler.handlePreviousPage}\n disabled={disabled || !state.canPreviousPage}\n >\n <ChevronLeft\n aria-hidden=\"true\"\n className=\"size-4\"\n />\n </TableButton>\n <span className=\"min-w-24 px-2 text-center font-medium tabular-nums text-rentner-foreground\">\n {state.messages.pageInfo(\n state.page,\n state.totalPages,\n )}\n </span>\n <TableButton\n iconOnly\n aria-label={state.messages.nextPage}\n onClick={handler.handleNextPage}\n disabled={disabled || !state.canNextPage}\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"size-4\"\n />\n </TableButton>\n <TableButton\n iconOnly\n aria-label={state.messages.lastPage}\n onClick={handler.handleLastPage}\n disabled={\n disabled ||\n state.totalPages === null ||\n !state.canNextPage\n }\n >\n <ChevronsRight\n aria-hidden=\"true\"\n className=\"size-4\"\n />\n </TableButton>\n </nav>\n </div>\n )}\n </div>\n )\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { DataTableToolbarProps } from '../Types/dataTable.types.ts';
3
+ export declare function DataTableToolbar<TData extends RowData>({ table, state, handler, options, className, }: DataTableToolbarProps<TData>): import("react").JSX.Element;
4
+ //# sourceMappingURL=DataTableToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTableToolbar.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/DataTableToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAapD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAExE,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,OAAO,EAAE,EACpD,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,SAAc,GACjB,EAAE,qBAAqB,CAAC,KAAK,CAAC,+BA0J9B"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { TextInput } from '@rentnerkev/inputs/text-input';
3
+ import { Menu } from '@rentnerkev/menu/menu';
4
+ import { ChevronDown, Columns3, ListFilter, RefreshCw, RotateCcw, Search, X, } from 'lucide-react';
5
+ import { TableButton } from './TableButton.js';
6
+ export function DataTableToolbar({ table, state, handler, options, className = '', }) {
7
+ return (_jsxs("div", { className: `border-b border-rentner-border ${className}`, children: [_jsxs("div", { className: "flex flex-col gap-5 p-5 lg:flex-row lg:items-start lg:justify-between", children: [_jsxs("div", { className: "flex min-w-0 items-start gap-3", children: [options.icon && (_jsx("span", { "aria-hidden": "true", className: "flex size-10 shrink-0 items-center justify-center rounded-xl border border-rentner-accent/20 bg-rentner-accent/10 text-rentner-accent", children: options.icon })), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2.5", children: [_jsx("h2", { id: `${state.id}-title`, className: "text-base font-semibold tracking-tight text-rentner-foreground", children: options.title ?? state.messages.title }), state.totalRows !== null && (_jsx("span", { className: "rounded-md border border-rentner-border bg-rentner-control px-2 py-0.5 text-xs tabular-nums text-rentner-muted", children: state.totalRows })), options.isRefreshing && (_jsx(RefreshCw, { "aria-label": state.messages.loading, className: "size-3.5 motion-safe:animate-spin text-rentner-accent" }))] }), options.description && (_jsx("p", { className: "mt-1 text-sm leading-relaxed text-rentner-muted", children: options.description }))] })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [options.searchable !== false && (_jsx("div", { className: "w-full sm:w-64", children: _jsx(TextInput, { type: "text", value: state.search, onValueChange: handler.handleSearch, "aria-label": state.messages.search, placeholder: options.searchPlaceholder ??
8
+ state.messages.searchPlaceholder, maxLength: 200, icon: _jsx(Search, { "aria-hidden": "true", className: "size-4" }), controlSize: "sm", disabled: options.isLoading }) })), options.columnFilters !== false && (_jsxs(TableButton, { onClick: handler.handleToggleFilters, "aria-pressed": state.showFilters, "aria-expanded": state.showFilters, "aria-controls": `${state.id}-filters`, active: state.showFilters || state.filterCount > 0, disabled: options.isLoading ||
9
+ !state.filterColumns.some((column) => column.getCanFilter()), children: [_jsx(ListFilter, { "aria-hidden": "true", className: "size-4" }), state.messages.filters, state.filterCount > 0 && (_jsx("span", { className: "rounded bg-rentner-accent/15 px-1.5 tabular-nums", children: state.filterCount }))] })), options.columnVisibility !== false && (_jsx(Menu, { ariaLabel: state.messages.columns, items: state.columnItems, align: "end", controlSize: "sm", disabled: options.isLoading, asChild: true, trigger: _jsxs(TableButton, { children: [_jsx(Columns3, { "aria-hidden": "true", className: "size-4" }), state.messages.columns, _jsx(ChevronDown, { "aria-hidden": "true", className: "size-3" })] }) })), state.hasFilters && (_jsx(TableButton, { iconOnly: true, "aria-label": state.messages.resetFilters, title: state.messages.resetFilters, onClick: handler.handleResetFilters, children: _jsx(RotateCcw, { "aria-hidden": "true", className: "size-4" }) })), typeof options.toolbarActions === 'function'
10
+ ? options.toolbarActions({
11
+ table,
12
+ selectedRows: state.selectedRows,
13
+ })
14
+ : options.toolbarActions] })] }), state.selectionCount > 0 && (_jsxs("section", { "aria-label": state.messages.selected(state.selectionCount), className: "flex flex-wrap items-center gap-3 border-t border-rentner-accent/15 bg-rentner-accent/5 px-5 py-3", children: [_jsx("span", { className: "text-sm font-medium tabular-nums text-rentner-accent", children: state.messages.selected(state.selectionCount) }), _jsx(TableButton, { iconOnly: true, "aria-label": state.messages.clearSelection, onClick: handler.handleClearSelection, className: "border-transparent bg-transparent", children: _jsx(X, { "aria-hidden": "true", className: "size-4" }) }), _jsx("div", { className: "ml-auto flex flex-wrap items-center gap-2", children: options.bulkActions?.({
15
+ table,
16
+ selectedRows: state.selectedRows,
17
+ }) })] }))] }));
18
+ }
19
+ //# sourceMappingURL=DataTableToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTableToolbar.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/DataTableToolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { RowData } from '@tanstack/react-table'\nimport { TextInput } from '@rentnerkev/inputs/text-input'\nimport { Menu } from '@rentnerkev/menu/menu'\nimport {\n ChevronDown,\n Columns3,\n ListFilter,\n RefreshCw,\n RotateCcw,\n Search,\n X,\n} from 'lucide-react'\nimport { TableButton } from './TableButton.tsx'\nimport type { DataTableToolbarProps } from '../Types/dataTable.types.ts'\n\nexport function DataTableToolbar<TData extends RowData>({\n table,\n state,\n handler,\n options,\n className = '',\n}: DataTableToolbarProps<TData>) {\n return (\n <div className={`border-b border-rentner-border ${className}`}>\n <div className=\"flex flex-col gap-5 p-5 lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"flex min-w-0 items-start gap-3\">\n {options.icon && (\n <span\n aria-hidden=\"true\"\n className=\"flex size-10 shrink-0 items-center justify-center rounded-xl border border-rentner-accent/20 bg-rentner-accent/10 text-rentner-accent\"\n >\n {options.icon}\n </span>\n )}\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2.5\">\n <h2\n id={`${state.id}-title`}\n className=\"text-base font-semibold tracking-tight text-rentner-foreground\"\n >\n {options.title ?? state.messages.title}\n </h2>\n {state.totalRows !== null && (\n <span className=\"rounded-md border border-rentner-border bg-rentner-control px-2 py-0.5 text-xs tabular-nums text-rentner-muted\">\n {state.totalRows}\n </span>\n )}\n {options.isRefreshing && (\n <RefreshCw\n aria-label={state.messages.loading}\n className=\"size-3.5 motion-safe:animate-spin text-rentner-accent\"\n />\n )}\n </div>\n {options.description && (\n <p className=\"mt-1 text-sm leading-relaxed text-rentner-muted\">\n {options.description}\n </p>\n )}\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n {options.searchable !== false && (\n <div className=\"w-full sm:w-64\">\n <TextInput\n type=\"text\"\n value={state.search}\n onValueChange={handler.handleSearch}\n aria-label={state.messages.search}\n placeholder={\n options.searchPlaceholder ??\n state.messages.searchPlaceholder\n }\n maxLength={200}\n icon={\n <Search\n aria-hidden=\"true\"\n className=\"size-4\"\n />\n }\n controlSize=\"sm\"\n disabled={options.isLoading}\n />\n </div>\n )}\n {options.columnFilters !== false && (\n <TableButton\n onClick={handler.handleToggleFilters}\n aria-pressed={state.showFilters}\n aria-expanded={state.showFilters}\n aria-controls={`${state.id}-filters`}\n active={state.showFilters || state.filterCount > 0}\n disabled={\n options.isLoading ||\n !state.filterColumns.some((column) =>\n column.getCanFilter(),\n )\n }\n >\n <ListFilter aria-hidden=\"true\" className=\"size-4\" />\n {state.messages.filters}\n {state.filterCount > 0 && (\n <span className=\"rounded bg-rentner-accent/15 px-1.5 tabular-nums\">\n {state.filterCount}\n </span>\n )}\n </TableButton>\n )}\n {options.columnVisibility !== false && (\n <Menu\n ariaLabel={state.messages.columns}\n items={state.columnItems}\n align=\"end\"\n controlSize=\"sm\"\n disabled={options.isLoading}\n asChild\n trigger={\n <TableButton>\n <Columns3\n aria-hidden=\"true\"\n className=\"size-4\"\n />\n {state.messages.columns}\n <ChevronDown\n aria-hidden=\"true\"\n className=\"size-3\"\n />\n </TableButton>\n }\n />\n )}\n {state.hasFilters && (\n <TableButton\n iconOnly\n aria-label={state.messages.resetFilters}\n title={state.messages.resetFilters}\n onClick={handler.handleResetFilters}\n >\n <RotateCcw aria-hidden=\"true\" className=\"size-4\" />\n </TableButton>\n )}\n {typeof options.toolbarActions === 'function'\n ? options.toolbarActions({\n table,\n selectedRows: state.selectedRows,\n })\n : options.toolbarActions}\n </div>\n </div>\n {state.selectionCount > 0 && (\n <section\n aria-label={state.messages.selected(state.selectionCount)}\n className=\"flex flex-wrap items-center gap-3 border-t border-rentner-accent/15 bg-rentner-accent/5 px-5 py-3\"\n >\n <span className=\"text-sm font-medium tabular-nums text-rentner-accent\">\n {state.messages.selected(state.selectionCount)}\n </span>\n <TableButton\n iconOnly\n aria-label={state.messages.clearSelection}\n onClick={handler.handleClearSelection}\n className=\"border-transparent bg-transparent\"\n >\n <X aria-hidden=\"true\" className=\"size-4\" />\n </TableButton>\n <div className=\"ml-auto flex flex-wrap items-center gap-2\">\n {options.bulkActions?.({\n table,\n selectedRows: state.selectedRows,\n })}\n </div>\n </section>\n )}\n </div>\n )\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { TableProps } from '../Types/table.types.ts';
3
+ export declare function Table<TData extends RowData>({ data, columns, getRowId, enableSorting, initialSorting, locale, messages, resizableColumns, ...appearance }: TableProps<TData>): import("react").JSX.Element;
4
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/Table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEzD,wBAAgB,KAAK,CAAC,KAAK,SAAS,OAAO,EAAE,EACzC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,aAAa,EACb,cAAc,EACd,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,GAAG,UAAU,EAChB,EAAE,UAAU,CAAC,KAAK,CAAC,+BAmBnB"}
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useTableLogic } from '../Hooks/useTableLogic.js';
4
+ import { TableSurface } from './TableSurface.js';
5
+ export function Table({ data, columns, getRowId, enableSorting, initialSorting, locale, messages, resizableColumns, ...appearance }) {
6
+ const { table, state } = useTableLogic({
7
+ data,
8
+ columns,
9
+ getRowId,
10
+ enableSorting,
11
+ initialSorting,
12
+ locale,
13
+ messages,
14
+ resizableColumns,
15
+ });
16
+ return (_jsx(TableSurface, { ...appearance, resizableColumns: resizableColumns, table: table, view: state }));
17
+ }
18
+ //# sourceMappingURL=Table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/Table.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AAGjD,MAAM,UAAU,KAAK,CAAwB,EACzC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,aAAa,EACb,cAAc,EACd,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,GAAG,UAAU,EACG;IAChB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;QACnC,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,aAAa;QACb,cAAc;QACd,MAAM;QACN,QAAQ;QACR,gBAAgB;KACnB,CAAC,CAAA;IACF,OAAO,CACH,KAAC,YAAY,OACL,UAAU,EACd,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,GACb,CACL,CAAA;AACL,CAAC","sourcesContent":["'use client'\n\nimport type { RowData } from '@tanstack/react-table'\nimport { useTableLogic } from '../Hooks/useTableLogic.ts'\nimport { TableSurface } from './TableSurface.tsx'\nimport type { TableProps } from '../Types/table.types.ts'\n\nexport function Table<TData extends RowData>({\n data,\n columns,\n getRowId,\n enableSorting,\n initialSorting,\n locale,\n messages,\n resizableColumns,\n ...appearance\n}: TableProps<TData>) {\n const { table, state } = useTableLogic({\n data,\n columns,\n getRowId,\n enableSorting,\n initialSorting,\n locale,\n messages,\n resizableColumns,\n })\n return (\n <TableSurface\n {...appearance}\n resizableColumns={resizableColumns}\n table={table}\n view={state}\n />\n )\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { TableBodyProps } from '../Types/dataTable.types.ts';
3
+ export declare function TableBody<TData extends RowData>(props: TableBodyProps<TData>): import("react").JSX.Element;
4
+ //# sourceMappingURL=TableBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableBody.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAIjE,wBAAgB,SAAS,CAAC,KAAK,SAAS,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,+BA4B5E"}
@@ -0,0 +1,8 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { TableDataRow } from './TableDataRow.js';
3
+ import { useTableRowDragContext } from '../Hooks/useTableRowDragContext.js';
4
+ export function TableBody(props) {
5
+ const DragGroup = useTableRowDragContext();
6
+ return DragGroup ? (_jsx(_Fragment, { children: props.view.rows.map((row, index) => (_jsx(DragGroup, { id: row.id, label: props.getRowLabel?.(row.original) ?? row.id, children: (handle) => (_jsx(TableDataRow, { ...props, row: row, index: index, dragHandle: handle })) }, row.id))) })) : (_jsx("tbody", { children: props.view.rows.map((row, index) => (_jsx(TableDataRow, { ...props, row: row, index: index }, row.id))) }));
7
+ }
8
+ //# sourceMappingURL=TableBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableBody.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableBody.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAE3E,MAAM,UAAU,SAAS,CAAwB,KAA4B;IACzE,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAA;IAC1C,OAAO,SAAS,CAAC,CAAC,CAAC,CACf,4BACK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,KAAC,SAAS,IAEN,EAAE,EAAE,GAAG,CAAC,EAAE,EACV,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,YAEjD,CAAC,MAAM,EAAE,EAAE,CAAC,CACT,KAAC,YAAY,OACL,KAAK,EACT,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,GACpB,CACL,IAXI,GAAG,CAAC,EAAE,CAYH,CACf,CAAC,GACH,CACN,CAAC,CAAC,CAAC,CACA,0BACK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,KAAC,YAAY,OAAkB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,IAAzC,GAAG,CAAC,EAAE,CAAuC,CACnE,CAAC,GACE,CACX,CAAA;AACL,CAAC","sourcesContent":["import type { RowData } from '@tanstack/react-table'\nimport type { TableBodyProps } from '../Types/dataTable.types.ts'\nimport { TableDataRow } from './TableDataRow.tsx'\nimport { useTableRowDragContext } from '../Hooks/useTableRowDragContext.ts'\n\nexport function TableBody<TData extends RowData>(props: TableBodyProps<TData>) {\n const DragGroup = useTableRowDragContext()\n return DragGroup ? (\n <>\n {props.view.rows.map((row, index) => (\n <DragGroup\n key={row.id}\n id={row.id}\n label={props.getRowLabel?.(row.original) ?? row.id}\n >\n {(handle) => (\n <TableDataRow\n {...props}\n row={row}\n index={index}\n dragHandle={handle}\n />\n )}\n </DragGroup>\n ))}\n </>\n ) : (\n <tbody>\n {props.view.rows.map((row, index) => (\n <TableDataRow key={row.id} {...props} row={row} index={index} />\n ))}\n </tbody>\n )\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { TableButtonProps } from '../Types/dataTable.types.ts';
2
+ export declare function TableButton({ className, active, iconOnly, type, ...props }: TableButtonProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=TableButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableButton.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,wBAAgB,WAAW,CAAC,EACxB,SAAc,EACd,MAAM,EACN,QAAQ,EACR,IAAe,EACf,GAAG,KAAK,EACX,EAAE,gBAAgB,+BASlB"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function TableButton({ className = '', active, iconOnly, type = 'button', ...props }) {
3
+ return (_jsx("button", { ...props, type: type, "data-active": active || undefined, className: `inline-flex min-h-9 shrink-0 items-center justify-center gap-2 rounded-lg border border-rentner-border bg-rentner-control/40 text-xs font-medium text-rentner-muted motion-safe:transition-colors hover:bg-rentner-control hover:text-rentner-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-rentner-accent disabled:cursor-not-allowed disabled:opacity-40 data-[active=true]:border-rentner-accent/30 data-[active=true]:bg-rentner-accent/10 data-[active=true]:text-rentner-accent ${iconOnly ? 'size-9' : 'px-3 py-2'} ${className}` }));
4
+ }
5
+ //# sourceMappingURL=TableButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableButton.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableButton.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EACxB,SAAS,GAAG,EAAE,EACd,MAAM,EACN,QAAQ,EACR,IAAI,GAAG,QAAQ,EACf,GAAG,KAAK,EACO;IACf,OAAO,CACH,oBACQ,KAAK,EACT,IAAI,EAAE,IAAI,iBACG,MAAM,IAAI,SAAS,EAChC,SAAS,EAAE,mgBAAmgB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,EAAE,GAChkB,CACL,CAAA;AACL,CAAC","sourcesContent":["import type { TableButtonProps } from '../Types/dataTable.types.ts'\n\nexport function TableButton({\n className = '',\n active,\n iconOnly,\n type = 'button',\n ...props\n}: TableButtonProps) {\n return (\n <button\n {...props}\n type={type}\n data-active={active || undefined}\n className={`inline-flex min-h-9 shrink-0 items-center justify-center gap-2 rounded-lg border border-rentner-border bg-rentner-control/40 text-xs font-medium text-rentner-muted motion-safe:transition-colors hover:bg-rentner-control hover:text-rentner-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-rentner-accent disabled:cursor-not-allowed disabled:opacity-40 data-[active=true]:border-rentner-accent/30 data-[active=true]:bg-rentner-accent/10 data-[active=true]:text-rentner-accent ${iconOnly ? 'size-9' : 'px-3 py-2'} ${className}`}\n />\n )\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { TableCheckboxProps } from '../Types/dataTable.types.ts';
2
+ export declare function TableCheckbox({ checked, indeterminate, disabled, label, onChange, }: TableCheckboxProps): import("react").JSX.Element;
3
+ //# sourceMappingURL=TableCheckbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCheckbox.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableCheckbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE,wBAAgB,aAAa,CAAC,EAC1B,OAAO,EACP,aAAqB,EACrB,QAAQ,EACR,KAAK,EACL,QAAQ,GACX,EAAE,kBAAkB,+BAepB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CheckboxInput } from '@rentnerkev/inputs/checkbox-input';
3
+ import { useTableCheckboxLogic } from '../Hooks/useTableCheckboxLogic.js';
4
+ export function TableCheckbox({ checked, indeterminate = false, disabled, label, onChange, }) {
5
+ const { refs: { input }, } = useTableCheckboxLogic(indeterminate);
6
+ return (_jsx(CheckboxInput, { ref: input, checked: checked, "aria-checked": indeterminate ? 'mixed' : checked, "aria-label": label, disabled: disabled, onChange: onChange, controlSize: "sm" }));
7
+ }
8
+ //# sourceMappingURL=TableCheckbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCheckbox.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableCheckbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAGzE,MAAM,UAAU,aAAa,CAAC,EAC1B,OAAO,EACP,aAAa,GAAG,KAAK,EACrB,QAAQ,EACR,KAAK,EACL,QAAQ,GACS;IACjB,MAAM,EACF,IAAI,EAAE,EAAE,KAAK,EAAE,GAClB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAA;IACxC,OAAO,CACH,KAAC,aAAa,IACV,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,OAAO,kBACF,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,gBACnC,KAAK,EACjB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAC,IAAI,GAClB,CACL,CAAA;AACL,CAAC","sourcesContent":["import { CheckboxInput } from '@rentnerkev/inputs/checkbox-input'\nimport { useTableCheckboxLogic } from '../Hooks/useTableCheckboxLogic.ts'\nimport type { TableCheckboxProps } from '../Types/dataTable.types.ts'\n\nexport function TableCheckbox({\n checked,\n indeterminate = false,\n disabled,\n label,\n onChange,\n}: TableCheckboxProps) {\n const {\n refs: { input },\n } = useTableCheckboxLogic(indeterminate)\n return (\n <CheckboxInput\n ref={input}\n checked={checked}\n aria-checked={indeterminate ? 'mixed' : checked}\n aria-label={label}\n disabled={disabled}\n onChange={onChange}\n controlSize=\"sm\"\n />\n )\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { TableColumnFilterProps } from '../Types/dataTable.types.ts';
3
+ export declare function TableColumnFilter<TData extends RowData>({ column, locale, messages, disabled, }: TableColumnFilterProps<TData>): string | number | bigint | boolean | import("react").JSX.Element | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | Iterable<import("react").ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | null | undefined;
4
+ //# sourceMappingURL=TableColumnFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableColumnFilter.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableColumnFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAKpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAIzE,wBAAgB,iBAAiB,CAAC,KAAK,SAAS,OAAO,EAAE,EACrD,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,GACX,EAAE,sBAAsB,CAAC,KAAK,CAAC,+VAuD/B"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { lazy, Suspense } from 'react';
3
+ import { TextInput } from '@rentnerkev/inputs/text-input';
4
+ import { CustomSelect } from '@rentnerkev/select/select';
5
+ import { getColumnLabel } from '../../../lib/Table/presentation.js';
6
+ const TableDateRangeFilter = lazy(() => import('./TableDateRangeFilter.js'));
7
+ export function TableColumnFilter({ column, locale, messages, disabled, }) {
8
+ const config = column.columnDef.meta?.filter;
9
+ const value = column.getFilterValue();
10
+ const label = messages.filterColumn(getColumnLabel(column));
11
+ if (config?.type === 'custom')
12
+ return config.render({
13
+ value,
14
+ onValueChange: (next) => column.setFilterValue(next),
15
+ label,
16
+ });
17
+ if (config?.type === 'select')
18
+ return (_jsx(CustomSelect, { options: config.options, value: typeof value === 'string' ? value : '', onValueChange: (next) => column.setFilterValue(next), "aria-label": label, placeholder: config.placeholder ?? messages.all, clearable: true, emptyValue: "", controlSize: "sm", disabled: disabled, locale: locale, className: "min-w-32" }));
19
+ if (config?.type === 'dateRange')
20
+ return (_jsx(Suspense, { fallback: _jsx("span", { className: "text-xs text-rentner-muted", children: label }), children: _jsx(TableDateRangeFilter, { value: value, onValueChange: (next) => column.setFilterValue(next), label: label, placeholder: config.placeholder, locale: locale, disabled: disabled }) }));
21
+ return (_jsx(TextInput, { value: typeof value === 'string' ? value : '', onValueChange: (next) => column.setFilterValue(next), "aria-label": label, placeholder: config?.placeholder ?? label, maxLength: config?.maxLength ?? 200, controlSize: "sm", disabled: disabled, className: "min-w-28" }));
22
+ }
23
+ //# sourceMappingURL=TableColumnFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableColumnFilter.js","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableColumnFilter.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAGnE,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,2BAA4B,CAAC,CAAC,CAAA;AAE7E,MAAM,UAAU,iBAAiB,CAAwB,EACrD,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,GACoB;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAA;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,CAAA;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3D,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ;QACzB,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK;YACL,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;YACpD,KAAK;SACR,CAAC,CAAA;IACN,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ;QACzB,OAAO,CACH,KAAC,YAAY,IACT,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAC7C,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,gBACxC,KAAK,EACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,EAC/C,SAAS,QACT,UAAU,EAAC,EAAE,EACb,WAAW,EAAC,IAAI,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAC,UAAU,GACtB,CACL,CAAA;IACL,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW;QAC5B,OAAO,CACH,KAAC,QAAQ,IACL,QAAQ,EACJ,eAAM,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAQ,YAG/D,KAAC,oBAAoB,IACjB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EACpD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACpB,GACK,CACd,CAAA;IACL,OAAO,CACH,KAAC,SAAS,IACN,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAC7C,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,gBACxC,KAAK,EACjB,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,KAAK,EACzC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,GAAG,EACnC,WAAW,EAAC,IAAI,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,UAAU,GACtB,CACL,CAAA;AACL,CAAC","sourcesContent":["import type { RowData } from '@tanstack/react-table'\nimport { lazy, Suspense } from 'react'\nimport { TextInput } from '@rentnerkev/inputs/text-input'\nimport { CustomSelect } from '@rentnerkev/select/select'\nimport { getColumnLabel } from '../../../lib/Table/presentation.ts'\nimport type { TableColumnFilterProps } from '../Types/dataTable.types.ts'\n\nconst TableDateRangeFilter = lazy(() => import('./TableDateRangeFilter.tsx'))\n\nexport function TableColumnFilter<TData extends RowData>({\n column,\n locale,\n messages,\n disabled,\n}: TableColumnFilterProps<TData>) {\n const config = column.columnDef.meta?.filter\n const value = column.getFilterValue()\n const label = messages.filterColumn(getColumnLabel(column))\n if (config?.type === 'custom')\n return config.render({\n value,\n onValueChange: (next) => column.setFilterValue(next),\n label,\n })\n if (config?.type === 'select')\n return (\n <CustomSelect\n options={config.options}\n value={typeof value === 'string' ? value : ''}\n onValueChange={(next) => column.setFilterValue(next)}\n aria-label={label}\n placeholder={config.placeholder ?? messages.all}\n clearable\n emptyValue=\"\"\n controlSize=\"sm\"\n disabled={disabled}\n locale={locale}\n className=\"min-w-32\"\n />\n )\n if (config?.type === 'dateRange')\n return (\n <Suspense\n fallback={\n <span className=\"text-xs text-rentner-muted\">{label}</span>\n }\n >\n <TableDateRangeFilter\n value={value}\n onValueChange={(next) => column.setFilterValue(next)}\n label={label}\n placeholder={config.placeholder}\n locale={locale}\n disabled={disabled}\n />\n </Suspense>\n )\n return (\n <TextInput\n value={typeof value === 'string' ? value : ''}\n onValueChange={(next) => column.setFilterValue(next)}\n aria-label={label}\n placeholder={config?.placeholder ?? label}\n maxLength={config?.maxLength ?? 200}\n controlSize=\"sm\"\n disabled={disabled}\n className=\"min-w-28\"\n />\n )\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
2
+ import type { TableDataRowProps } from '../Types/interaction.types.ts';
3
+ export declare function TableDataRow<TData extends RowData>({ table, view, selection, renderExpandedRow, getRowLabel, detailsId, classNames, rowClassName, isLoading, row, index, striped, dragHandle, reorderableRows, resizableColumns, onRowClick, onRowDoubleClick, onRowContextMenu, onCellClick, onCellDoubleClick, onCellContextMenu, }: TableDataRowProps<TData>): import("react").JSX.Element;
4
+ //# sourceMappingURL=TableDataRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableDataRow.d.ts","sourceRoot":"","sources":["../../../../src/shared/Table/Components/TableDataRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAIpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAGtE,wBAAgB,YAAY,CAAC,KAAK,SAAS,OAAO,EAAE,EAChD,KAAK,EACL,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACT,GAAG,EACH,KAAK,EACL,OAAO,EACP,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GACpB,EAAE,iBAAiB,CAAC,KAAK,CAAC,+BAkI1B"}
@@ -0,0 +1,26 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronRight, GripVertical } from 'lucide-react';
3
+ import { TableCheckbox } from './TableCheckbox.js';
4
+ import { TableButton } from './TableButton.js';
5
+ import { useTableRowEventsLogic } from '../Hooks/useTableRowEventsLogic.js';
6
+ export function TableDataRow({ table, view, selection, renderExpandedRow, getRowLabel, detailsId, classNames, rowClassName, isLoading, row, index, striped, dragHandle, reorderableRows, resizableColumns, onRowClick, onRowDoubleClick, onRowContextMenu, onCellClick, onCellDoubleClick, onCellContextMenu, }) {
7
+ const { handler } = useTableRowEventsLogic(row, {
8
+ onRowClick,
9
+ onRowDoubleClick,
10
+ onRowContextMenu,
11
+ });
12
+ return (_jsxs(_Fragment, { children: [_jsxs("tr", { "data-row-id": row.id, "data-stripe": striped && index % 2 === 1 ? true : undefined, onClick: onRowClick ? handler.handleClick : undefined, onDoubleClick: onRowDoubleClick ? handler.handleDoubleClick : undefined, onContextMenu: onRowContextMenu ? handler.handleContextMenu : undefined, "data-selected": (selection?.selectionEnabled && row.getIsSelected()) ||
13
+ undefined, className: `border-b border-rentner-border motion-safe:transition-colors group-data-[striped=true]/table:data-[stripe=true]:bg-rentner-control/25 hover:bg-rentner-control/70 hover:shadow-[inset_3px_0_0_var(--rentner-accent,#13ecd6)] data-[selected=true]:bg-rentner-accent/5 ${classNames?.row ?? ''} ${rowClassName?.(row) ?? ''}`, children: [reorderableRows && (_jsx("td", { className: "w-12 px-2 py-3", children: dragHandle ?? (_jsx(TableButton, { iconOnly: true, disabled: true, "aria-label": view.messages.moveRow?.(getRowLabel?.(row.original) ?? row.id) ?? `Move ${row.id}`, children: _jsx(GripVertical, { "aria-hidden": "true", className: "size-4" }) })) })), selection?.selectionEnabled && (_jsx("td", { className: "w-12 px-4 py-3", children: _jsx(TableCheckbox, { checked: row.getIsSelected(), disabled: isLoading || !row.getCanSelect(), label: view.messages.selectRow(getRowLabel?.(row.original) ?? row.id), onChange: () => row.toggleSelected() }) })), renderExpandedRow && (_jsx("td", { className: "w-10 px-1", children: _jsx(TableButton, { iconOnly: true, disabled: !row.getCanExpand(), "aria-label": row.getIsExpanded()
14
+ ? view.messages.collapseRow(getRowLabel?.(row.original) ?? row.id)
15
+ : view.messages.expandRow(getRowLabel?.(row.original) ?? row.id), "aria-expanded": row.getIsExpanded(), "aria-controls": `${detailsId}-${encodeURIComponent(row.id)}`, onClick: row.getToggleExpandedHandler(), className: "border-transparent bg-transparent", children: _jsx(ChevronRight, { "aria-hidden": "true", className: `size-4 ${row.getIsExpanded() ? 'rotate-90' : ''}` }) }) })), row.getVisibleCells().map((cell) => (_jsx("td", { "data-column-id": cell.column.id, onClick: onCellClick
16
+ ? (event) => onCellClick(cell, event)
17
+ : undefined, onDoubleClick: onCellDoubleClick
18
+ ? (event) => onCellDoubleClick(cell, event)
19
+ : undefined, onContextMenu: onCellContextMenu
20
+ ? (event) => onCellContextMenu(cell, event)
21
+ : undefined, "data-align": cell.column.columnDef.meta?.align, style: resizableColumns ||
22
+ cell.column.columnDef.size === undefined
23
+ ? undefined
24
+ : { width: cell.column.getSize() }, className: `px-4 py-3 align-middle group-data-[size=sm]/table:px-3 group-data-[size=sm]/table:py-2 group-data-[size=lg]/table:px-5 group-data-[size=lg]/table:py-4 data-[align=center]:text-center data-[align=right]:text-right ${cell.column.columnDef.meta?.cellClassName ?? ''} ${classNames?.cell ?? ''}`, children: _jsx(table.FlexRender, { cell: cell }) }, cell.id)))] }), renderExpandedRow && row.getIsExpanded() && (_jsx("tr", { "data-row-details-for": row.id, children: _jsx("td", { colSpan: view.columnCount, className: "border-b border-rentner-border bg-rentner-control/30 p-5", children: _jsx("div", { id: `${detailsId}-${encodeURIComponent(row.id)}`, children: renderExpandedRow(row) }) }) }))] }));
25
+ }
26
+ //# sourceMappingURL=TableDataRow.js.map