@cloud-ru/uikit-product-mobile-table 0.14.0 → 0.15.0

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 (53) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/components/MobileTable.d.ts +2 -2
  3. package/dist/cjs/components/MobileTable.js +82 -6
  4. package/dist/cjs/components/index.d.ts +1 -0
  5. package/dist/cjs/components/index.js +1 -0
  6. package/dist/cjs/helperComponents/ColumnsSettings/ColumnsSettings.d.ts +7 -0
  7. package/dist/cjs/helperComponents/ColumnsSettings/ColumnsSettings.js +18 -0
  8. package/dist/cjs/helperComponents/ColumnsSettings/index.d.ts +1 -0
  9. package/dist/cjs/helperComponents/ColumnsSettings/index.js +17 -0
  10. package/dist/cjs/helperComponents/ColumnsSettings/styles.module.css +3 -0
  11. package/dist/cjs/helperComponents/TableSorting/TableSorting.d.ts +10 -0
  12. package/dist/cjs/helperComponents/TableSorting/TableSorting.js +29 -0
  13. package/dist/cjs/helperComponents/TableSorting/index.d.ts +1 -0
  14. package/dist/cjs/helperComponents/TableSorting/index.js +17 -0
  15. package/dist/cjs/helperComponents/TableSorting/styles.module.css +3 -0
  16. package/dist/cjs/helperComponents/TableSorting/useTableSorting.d.ts +23 -0
  17. package/dist/cjs/helperComponents/TableSorting/useTableSorting.js +189 -0
  18. package/dist/cjs/helperComponents/TableSorting/utils.d.ts +9 -0
  19. package/dist/cjs/helperComponents/TableSorting/utils.js +75 -0
  20. package/dist/cjs/helperComponents/index.d.ts +3 -1
  21. package/dist/cjs/helperComponents/index.js +3 -1
  22. package/dist/esm/components/MobileTable.d.ts +2 -2
  23. package/dist/esm/components/MobileTable.js +84 -8
  24. package/dist/esm/components/index.d.ts +1 -0
  25. package/dist/esm/components/index.js +1 -0
  26. package/dist/esm/helperComponents/ColumnsSettings/ColumnsSettings.d.ts +7 -0
  27. package/dist/esm/helperComponents/ColumnsSettings/ColumnsSettings.js +12 -0
  28. package/dist/esm/helperComponents/ColumnsSettings/index.d.ts +1 -0
  29. package/dist/esm/helperComponents/ColumnsSettings/index.js +1 -0
  30. package/dist/esm/helperComponents/ColumnsSettings/styles.module.css +3 -0
  31. package/dist/esm/helperComponents/TableSorting/TableSorting.d.ts +10 -0
  32. package/dist/esm/helperComponents/TableSorting/TableSorting.js +26 -0
  33. package/dist/esm/helperComponents/TableSorting/index.d.ts +1 -0
  34. package/dist/esm/helperComponents/TableSorting/index.js +1 -0
  35. package/dist/esm/helperComponents/TableSorting/styles.module.css +3 -0
  36. package/dist/esm/helperComponents/TableSorting/useTableSorting.d.ts +23 -0
  37. package/dist/esm/helperComponents/TableSorting/useTableSorting.js +183 -0
  38. package/dist/esm/helperComponents/TableSorting/utils.d.ts +9 -0
  39. package/dist/esm/helperComponents/TableSorting/utils.js +70 -0
  40. package/dist/esm/helperComponents/index.d.ts +3 -1
  41. package/dist/esm/helperComponents/index.js +3 -1
  42. package/package.json +6 -3
  43. package/src/components/MobileTable.tsx +143 -9
  44. package/src/components/index.ts +1 -0
  45. package/src/helperComponents/ColumnsSettings/ColumnsSettings.tsx +28 -0
  46. package/src/helperComponents/ColumnsSettings/index.ts +1 -0
  47. package/src/helperComponents/ColumnsSettings/styles.module.scss +5 -0
  48. package/src/helperComponents/TableSorting/TableSorting.tsx +60 -0
  49. package/src/helperComponents/TableSorting/index.ts +1 -0
  50. package/src/helperComponents/TableSorting/styles.module.scss +9 -0
  51. package/src/helperComponents/TableSorting/useTableSorting.tsx +248 -0
  52. package/src/helperComponents/TableSorting/utils.ts +89 -0
  53. package/src/helperComponents/index.ts +3 -1
@@ -0,0 +1,89 @@
1
+ import { Header } from '@tanstack/react-table';
2
+
3
+ import { ColumnDefinition } from '@snack-uikit/table';
4
+
5
+ export function getHeaderLabel<TData extends object>(header: Header<TData, unknown>): string {
6
+ const headerDef = header.column.columnDef.header;
7
+
8
+ if (typeof headerDef === 'string') {
9
+ return headerDef;
10
+ }
11
+
12
+ if (typeof headerDef === 'function') {
13
+ try {
14
+ const context = header.getContext();
15
+ const result = headerDef(context);
16
+
17
+ if (typeof result === 'string' || typeof result === 'number') {
18
+ return String(result);
19
+ }
20
+
21
+ if (result != null && typeof result === 'object' && 'props' in result && result.props) {
22
+ const children = result.props.children;
23
+
24
+ if (typeof children === 'string' || typeof children === 'number') {
25
+ return String(children);
26
+ }
27
+
28
+ if (Array.isArray(children)) {
29
+ const textChild = children.find(child => typeof child === 'string' || typeof child === 'number');
30
+ if (textChild != null) {
31
+ return String(textChild);
32
+ }
33
+ }
34
+ }
35
+ } catch (error) {
36
+ console.error('Error getting header label:', error);
37
+ }
38
+ }
39
+
40
+ return header.id || header.column.id || '';
41
+ }
42
+
43
+ export function createColumnDefMap<TData extends object>(
44
+ columnDefinitions: ColumnDefinition<TData>[],
45
+ ): Map<string, ColumnDefinition<TData>> {
46
+ const map = new Map<string, ColumnDefinition<TData>>();
47
+ columnDefinitions.forEach(colDef => {
48
+ let id: string | undefined;
49
+ if ('id' in colDef && colDef.id) {
50
+ id = colDef.id;
51
+ } else if ('accessorKey' in colDef && colDef.accessorKey) {
52
+ id = String(colDef.accessorKey);
53
+ }
54
+ if (id) {
55
+ map.set(id, colDef);
56
+ }
57
+ });
58
+ return map;
59
+ }
60
+
61
+ export function groupHeadersByPinned<TData extends object>(
62
+ headers: Header<TData, unknown>[],
63
+ columnDefMap: Map<string, ColumnDefinition<TData>>,
64
+ ) {
65
+ const leftHeaders: Header<TData, unknown>[] = [];
66
+ const unpinnedHeaders: Header<TData, unknown>[] = [];
67
+ const rightHeaders: Header<TData, unknown>[] = [];
68
+
69
+ headers.forEach(header => {
70
+ const columnDef = columnDefMap.get(header.id);
71
+ if (!columnDef) {
72
+ unpinnedHeaders.push(header);
73
+ return;
74
+ }
75
+
76
+ switch (columnDef.pinned) {
77
+ case 'left':
78
+ leftHeaders.push(header);
79
+ break;
80
+ case 'right':
81
+ rightHeaders.push(header);
82
+ break;
83
+ default:
84
+ unpinnedHeaders.push(header);
85
+ }
86
+ });
87
+
88
+ return { leftHeaders, unpinnedHeaders, rightHeaders };
89
+ }
@@ -1,5 +1,7 @@
1
+ export * from './ColumnsSettings';
1
2
  export * from './RowActionsCell';
2
3
  export * from './StatusColumnDef';
3
4
  export * from './TableCard';
4
- export * from './TablePagination';
5
5
  export * from './TableEmptyState';
6
+ export * from './TablePagination';
7
+ export * from './TableSorting';