@navikt/ds-react 8.10.2 → 8.10.3

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 (98) hide show
  1. package/cjs/data/table/column-header/DataTableColumnHeader.js +3 -1
  2. package/cjs/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  3. package/cjs/data/table/column-header/useTableColumnResize.d.ts +24 -2
  4. package/cjs/data/table/column-header/useTableColumnResize.js +31 -15
  5. package/cjs/data/table/column-header/useTableColumnResize.js.map +1 -1
  6. package/cjs/data/table/helpers/collectTableRowEntries.d.ts +10 -2
  7. package/cjs/data/table/helpers/collectTableRowEntries.js +25 -17
  8. package/cjs/data/table/helpers/collectTableRowEntries.js.map +1 -1
  9. package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.d.ts +46 -0
  10. package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.js +112 -0
  11. package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.js.map +1 -0
  12. package/cjs/data/table/helpers/selection/getMultipleSelectProps.d.ts +3 -2
  13. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js +43 -19
  14. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  15. package/cjs/data/table/helpers/selection/selection.types.d.ts +1 -0
  16. package/cjs/data/table/helpers/table-keyboard.d.ts +1 -2
  17. package/cjs/data/table/helpers/table-keyboard.js +1 -2
  18. package/cjs/data/table/helpers/table-keyboard.js.map +1 -1
  19. package/cjs/data/table/hooks/useTableExpansion.d.ts +1 -3
  20. package/cjs/data/table/hooks/useTableExpansion.js +7 -1
  21. package/cjs/data/table/hooks/useTableExpansion.js.map +1 -1
  22. package/cjs/data/table/hooks/useTableItems.d.ts +7 -3
  23. package/cjs/data/table/hooks/useTableItems.js +18 -7
  24. package/cjs/data/table/hooks/useTableItems.js.map +1 -1
  25. package/cjs/data/table/hooks/useTableSelection.d.ts +3 -2
  26. package/cjs/data/table/hooks/useTableSelection.js +5 -4
  27. package/cjs/data/table/hooks/useTableSelection.js.map +1 -1
  28. package/cjs/data/table/root/DataTable.types.d.ts +5 -4
  29. package/cjs/data/table/root/DataTableAuto.d.ts +9 -1
  30. package/cjs/data/table/root/DataTableAuto.js +50 -50
  31. package/cjs/data/table/root/DataTableAuto.js.map +1 -1
  32. package/cjs/data/table/root/DataTableRoot.js +2 -3
  33. package/cjs/data/table/root/DataTableRoot.js.map +1 -1
  34. package/cjs/form/checkbox/Checkbox.js +1 -0
  35. package/cjs/form/checkbox/Checkbox.js.map +1 -1
  36. package/cjs/form/radio/Radio.js +7 -1
  37. package/cjs/form/radio/Radio.js.map +1 -1
  38. package/cjs/modal/types.d.ts +8 -4
  39. package/esm/data/table/column-header/DataTableColumnHeader.js +3 -1
  40. package/esm/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  41. package/esm/data/table/column-header/useTableColumnResize.d.ts +24 -2
  42. package/esm/data/table/column-header/useTableColumnResize.js +32 -16
  43. package/esm/data/table/column-header/useTableColumnResize.js.map +1 -1
  44. package/esm/data/table/helpers/collectTableRowEntries.d.ts +10 -2
  45. package/esm/data/table/helpers/collectTableRowEntries.js +25 -17
  46. package/esm/data/table/helpers/collectTableRowEntries.js.map +1 -1
  47. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.d.ts +46 -0
  48. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js +109 -0
  49. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js.map +1 -0
  50. package/esm/data/table/helpers/selection/getMultipleSelectProps.d.ts +3 -2
  51. package/esm/data/table/helpers/selection/getMultipleSelectProps.js +43 -19
  52. package/esm/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  53. package/esm/data/table/helpers/selection/selection.types.d.ts +1 -0
  54. package/esm/data/table/helpers/table-keyboard.d.ts +1 -2
  55. package/esm/data/table/helpers/table-keyboard.js +1 -2
  56. package/esm/data/table/helpers/table-keyboard.js.map +1 -1
  57. package/esm/data/table/hooks/useTableExpansion.d.ts +1 -3
  58. package/esm/data/table/hooks/useTableExpansion.js +7 -1
  59. package/esm/data/table/hooks/useTableExpansion.js.map +1 -1
  60. package/esm/data/table/hooks/useTableItems.d.ts +7 -3
  61. package/esm/data/table/hooks/useTableItems.js +18 -7
  62. package/esm/data/table/hooks/useTableItems.js.map +1 -1
  63. package/esm/data/table/hooks/useTableSelection.d.ts +3 -2
  64. package/esm/data/table/hooks/useTableSelection.js +5 -4
  65. package/esm/data/table/hooks/useTableSelection.js.map +1 -1
  66. package/esm/data/table/root/DataTable.types.d.ts +5 -4
  67. package/esm/data/table/root/DataTableAuto.d.ts +9 -1
  68. package/esm/data/table/root/DataTableAuto.js +51 -51
  69. package/esm/data/table/root/DataTableAuto.js.map +1 -1
  70. package/esm/data/table/root/DataTableRoot.js +3 -4
  71. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  72. package/esm/form/checkbox/Checkbox.js +1 -0
  73. package/esm/form/checkbox/Checkbox.js.map +1 -1
  74. package/esm/form/radio/Radio.js +7 -1
  75. package/esm/form/radio/Radio.js.map +1 -1
  76. package/esm/modal/types.d.ts +8 -4
  77. package/package.json +3 -3
  78. package/src/data/table/column-header/DataTableColumnHeader.tsx +5 -1
  79. package/src/data/table/column-header/useTableColumnResize.ts +73 -17
  80. package/src/data/table/helpers/collectTableRowEntries.ts +57 -25
  81. package/src/data/table/helpers/selection/SelectionSubtreeHelper.test.ts +66 -0
  82. package/src/data/table/helpers/selection/SelectionSubtreeHelper.ts +162 -0
  83. package/src/data/table/helpers/selection/getMultipleSelectProps.ts +57 -20
  84. package/src/data/table/helpers/selection/selection.types.ts +1 -0
  85. package/src/data/table/helpers/table-keyboard.ts +1 -2
  86. package/src/data/table/hooks/__tests__/useTableItems.test.ts +14 -0
  87. package/src/data/table/hooks/__tests__/useTableSelection.test.ts +132 -21
  88. package/src/data/table/hooks/useTableExpansion.tsx +8 -3
  89. package/src/data/table/hooks/useTableItems.ts +50 -27
  90. package/src/data/table/hooks/useTableSelection.ts +10 -6
  91. package/src/data/table/root/DataTable.types.ts +5 -4
  92. package/src/data/table/root/DataTableAuto.test.tsx +128 -2
  93. package/src/data/table/root/DataTableAuto.tsx +144 -135
  94. package/src/data/table/root/DataTableRoot.tsx +6 -7
  95. package/src/form/checkbox/Checkbox.tsx +1 -0
  96. package/src/form/radio/Radio.tsx +7 -1
  97. package/src/modal/types.ts +8 -4
  98. package/src/data/table/hooks/__tests__/useTableExpansion.test.tsx +0 -115
@@ -1,115 +0,0 @@
1
- import { act, renderHook } from "@testing-library/react";
2
- import React from "react";
3
- import { describe, expect, test, vi } from "vitest";
4
- import {
5
- DataTableExpansionProvider,
6
- useDataTableExpansion,
7
- } from "../useTableExpansion";
8
- import { useTableItems } from "../useTableItems";
9
-
10
- type TestRow = {
11
- id: number;
12
- subRows?: TestRow[];
13
- };
14
-
15
- function createWrapper(
16
- options: {
17
- onDetailsPanelChange?: (ids: (string | number)[]) => void;
18
- isDetailsPanelExpandable?: (row: TestRow) => boolean;
19
- } = {},
20
- ) {
21
- const rows: TestRow[] = [{ id: 1, subRows: [{ id: 10 }] }, { id: 2 }];
22
-
23
- return function Wrapper({ children }: { children: React.ReactNode }) {
24
- const tableItems = useTableItems({
25
- items: rows,
26
- getRowId: (row) => row.id,
27
- getSubRows: (row) => row.subRows ?? [],
28
- });
29
-
30
- return (
31
- <DataTableExpansionProvider<TestRow>
32
- itemDetails={tableItems.itemDetails}
33
- getDetailsPanelContent={(row) => row.id}
34
- isDetailsPanelExpandable={options.isDetailsPanelExpandable}
35
- onDetailsPanelChange={options.onDetailsPanelChange}
36
- >
37
- {children}
38
- </DataTableExpansionProvider>
39
- );
40
- };
41
- }
42
-
43
- describe("useTableExpansion", () => {
44
- test("does not allow toggling rows that are not expandable", () => {
45
- const onDetailsPanelChange = vi.fn();
46
-
47
- const { result } = renderHook(() => useDataTableExpansion(), {
48
- wrapper: createWrapper({
49
- onDetailsPanelChange,
50
- isDetailsPanelExpandable: (row) => row.id === 1,
51
- }),
52
- });
53
-
54
- expect(result.current.isDetailsPanelExpandable(1)).toBe(true);
55
- expect(result.current.isDetailsPanelExpandable(2)).toBe(false);
56
- expect(result.current.isDetailsPanelExpandable(10)).toBe(false);
57
-
58
- act(() => {
59
- result.current.toggleExpansion(2);
60
- });
61
-
62
- expect(result.current.isExpanded(2)).toBe(false);
63
- expect(onDetailsPanelChange).not.toHaveBeenCalled();
64
-
65
- act(() => {
66
- result.current.toggleExpansion(1);
67
- });
68
-
69
- expect(result.current.isExpanded(1)).toBe(true);
70
- expect(onDetailsPanelChange).toHaveBeenCalledWith([1]);
71
- });
72
-
73
- test("expand all only expands expandable rows", () => {
74
- const onDetailsPanelChange = vi.fn();
75
-
76
- const { result } = renderHook(() => useDataTableExpansion(), {
77
- wrapper: createWrapper({
78
- onDetailsPanelChange,
79
- isDetailsPanelExpandable: (row) => row.id === 1,
80
- }),
81
- });
82
-
83
- act(() => {
84
- result.current.toggleAll();
85
- });
86
-
87
- expect(result.current.isExpanded(1)).toBe(true);
88
- expect(result.current.isExpanded(2)).toBe(false);
89
- expect(result.current.isAllExpanded).toBe(true);
90
- expect(onDetailsPanelChange).toHaveBeenCalledWith([1]);
91
- });
92
-
93
- test("expand all only targets top-level table items", () => {
94
- const onDetailsPanelChange = vi.fn();
95
-
96
- const { result } = renderHook(() => useDataTableExpansion(), {
97
- wrapper: createWrapper({
98
- onDetailsPanelChange,
99
- }),
100
- });
101
-
102
- expect(result.current.isDetailsPanelExpandable(1)).toBe(true);
103
- expect(result.current.isDetailsPanelExpandable(2)).toBe(true);
104
- expect(result.current.isDetailsPanelExpandable(10)).toBe(false);
105
-
106
- act(() => {
107
- result.current.toggleAll();
108
- });
109
-
110
- expect(result.current.isExpanded(1)).toBe(true);
111
- expect(result.current.isExpanded(2)).toBe(true);
112
- expect(result.current.isExpanded(10)).toBe(false);
113
- expect(onDetailsPanelChange).toHaveBeenCalledWith([1, 2]);
114
- });
115
- });