@arbor-education/design-system.components 3.2.1 → 3.3.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 (45) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/filterBar/FilterBar.d.ts +2 -2
  3. package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
  4. package/dist/components/filterBar/FilterBar.js +7 -3
  5. package/dist/components/filterBar/FilterBar.js.map +1 -1
  6. package/dist/components/filterBar/FilterBar.stories.d.ts +16 -0
  7. package/dist/components/filterBar/FilterBar.stories.d.ts.map +1 -1
  8. package/dist/components/filterBar/FilterBar.stories.js +101 -7
  9. package/dist/components/filterBar/FilterBar.stories.js.map +1 -1
  10. package/dist/components/filterBar/FilterBar.test.js +30 -0
  11. package/dist/components/filterBar/FilterBar.test.js.map +1 -1
  12. package/dist/components/table/Table.d.ts.map +1 -1
  13. package/dist/components/table/Table.js +2 -1
  14. package/dist/components/table/Table.js.map +1 -1
  15. package/dist/components/table/Table.stories.d.ts +7 -0
  16. package/dist/components/table/Table.stories.d.ts.map +1 -1
  17. package/dist/components/table/Table.stories.js +44 -0
  18. package/dist/components/table/Table.stories.js.map +1 -1
  19. package/dist/components/table/Table.test.js +23 -0
  20. package/dist/components/table/Table.test.js.map +1 -1
  21. package/dist/components/table/tableControls/TableControls.d.ts +2 -0
  22. package/dist/components/table/tableControls/TableControls.d.ts.map +1 -1
  23. package/dist/components/table/tableControls/TableControls.js +2 -2
  24. package/dist/components/table/tableControls/TableControls.js.map +1 -1
  25. package/dist/components/table/tableControls/TableControls.stories.d.ts +25 -0
  26. package/dist/components/table/tableControls/TableControls.stories.d.ts.map +1 -1
  27. package/dist/components/table/tableControls/TableControls.stories.js +24 -0
  28. package/dist/components/table/tableControls/TableControls.stories.js.map +1 -1
  29. package/dist/components/table/tableControls/TableControls.test.js +16 -0
  30. package/dist/components/table/tableControls/TableControls.test.js.map +1 -1
  31. package/dist/components/table/useTableSettings.d.ts +2 -0
  32. package/dist/components/table/useTableSettings.d.ts.map +1 -1
  33. package/dist/components/table/useTableSettings.js +12 -7
  34. package/dist/components/table/useTableSettings.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/components/filterBar/FilterBar.stories.tsx +126 -4
  37. package/src/components/filterBar/FilterBar.test.tsx +51 -0
  38. package/src/components/filterBar/FilterBar.tsx +18 -12
  39. package/src/components/table/Table.stories.tsx +57 -0
  40. package/src/components/table/Table.test.tsx +42 -0
  41. package/src/components/table/Table.tsx +2 -0
  42. package/src/components/table/tableControls/TableControls.stories.tsx +28 -0
  43. package/src/components/table/tableControls/TableControls.test.tsx +20 -0
  44. package/src/components/table/tableControls/TableControls.tsx +6 -0
  45. package/src/components/table/useTableSettings.ts +20 -6
@@ -44,6 +44,26 @@ describe('TableControls', () => {
44
44
  expect(onRedo).toHaveBeenCalledTimes(1);
45
45
  });
46
46
 
47
+ test('disables the undo button when isUndoDisabled is true', () => {
48
+ render(<TableControls onUndo={vi.fn()} isUndoDisabled />);
49
+ expect(screen.getByRole('button', { name: /undo/i })).toBeDisabled();
50
+ });
51
+
52
+ test('does not disable the undo button by default', () => {
53
+ render(<TableControls onUndo={vi.fn()} />);
54
+ expect(screen.getByRole('button', { name: /undo/i })).toBeEnabled();
55
+ });
56
+
57
+ test('disables the redo button when isRedoDisabled is true', () => {
58
+ render(<TableControls onRedo={vi.fn()} isRedoDisabled />);
59
+ expect(screen.getByRole('button', { name: /redo/i })).toBeDisabled();
60
+ });
61
+
62
+ test('does not disable the redo button by default', () => {
63
+ render(<TableControls onRedo={vi.fn()} />);
64
+ expect(screen.getByRole('button', { name: /redo/i })).toBeEnabled();
65
+ });
66
+
47
67
  test('renders bulk actions dropdown when bulkActions is provided', () => {
48
68
  render(
49
69
  <TableControls
@@ -16,6 +16,8 @@ export type TableControlsProps = {
16
16
  bulkActions?: BulkAction[];
17
17
  onUndo?: () => void;
18
18
  onRedo?: () => void;
19
+ isUndoDisabled?: boolean;
20
+ isRedoDisabled?: boolean;
19
21
  showHideColumns?: boolean;
20
22
  hideColumnsProps?: HideColumnsDropdownProps;
21
23
  hasSearch?: boolean;
@@ -36,6 +38,8 @@ export const TableControls = (props: TableControlsProps) => {
36
38
  bulkActions,
37
39
  onUndo,
38
40
  onRedo,
41
+ isUndoDisabled = false,
42
+ isRedoDisabled = false,
39
43
  showHideColumns,
40
44
  hideColumnsProps,
41
45
  hasSearch,
@@ -73,6 +77,7 @@ export const TableControls = (props: TableControlsProps) => {
73
77
  variant="secondary"
74
78
  borderless
75
79
  isRound
80
+ disabled={isUndoDisabled}
76
81
  onClick={onUndo}
77
82
  >
78
83
  <Icon name="undo" screenReaderText="Undo" />
@@ -83,6 +88,7 @@ export const TableControls = (props: TableControlsProps) => {
83
88
  variant="secondary"
84
89
  borderless
85
90
  isRound
91
+ disabled={isRedoDisabled}
86
92
  onClick={onRedo}
87
93
  >
88
94
  <Icon name="redo" screenReaderText="Redo" />
@@ -8,7 +8,14 @@ export type TableSettings = {
8
8
  areCellColorsEnabled?: boolean;
9
9
  };
10
10
 
11
+ export const DEFAULT_TABLE_SETTINGS: Required<TableSettings> = {
12
+ hasColumnBorders: false,
13
+ tableSpacing: TABLE_SPACING.M,
14
+ areCellColorsEnabled: true,
15
+ };
16
+
11
17
  export type UseTableSettingsParams = {
18
+ initialSettings?: Partial<TableSettings>;
12
19
  onTableSettingsChanged?: (val: TableSettings) => void;
13
20
  onTableSettingsReset?: () => void;
14
21
  onColumnBordersChanged?: (val: boolean) => void;
@@ -18,15 +25,22 @@ export type UseTableSettingsParams = {
18
25
 
19
26
  export const useTableSettings = (params: UseTableSettingsParams = {}) => {
20
27
  const {
28
+ initialSettings,
21
29
  onTableSettingsChanged,
22
30
  onTableSettingsReset,
23
31
  onColumnBordersChanged,
24
32
  onTableSpacingChanged,
25
33
  onCellColorsChanged,
26
34
  } = params;
27
- const [hasColumnBorders, setHasColumnBorders] = useState(false);
28
- const [tableSpacing, setTableSpacing] = useState(TABLE_SPACING.M);
29
- const [areCellColorsEnabled, setAreCellColorsEnabled] = useState(true);
35
+ const [hasColumnBorders, setHasColumnBorders] = useState(
36
+ initialSettings?.hasColumnBorders ?? DEFAULT_TABLE_SETTINGS.hasColumnBorders,
37
+ );
38
+ const [tableSpacing, setTableSpacing] = useState(
39
+ initialSettings?.tableSpacing ?? DEFAULT_TABLE_SETTINGS.tableSpacing,
40
+ );
41
+ const [areCellColorsEnabled, setAreCellColorsEnabled] = useState(
42
+ initialSettings?.areCellColorsEnabled ?? DEFAULT_TABLE_SETTINGS.areCellColorsEnabled,
43
+ );
30
44
 
31
45
  const settings = {
32
46
  hasColumnBorders,
@@ -35,9 +49,9 @@ export const useTableSettings = (params: UseTableSettingsParams = {}) => {
35
49
  };
36
50
 
37
51
  const resetSettings = () => {
38
- setHasColumnBorders(false);
39
- setTableSpacing(TABLE_SPACING.M);
40
- setAreCellColorsEnabled(true);
52
+ setHasColumnBorders(DEFAULT_TABLE_SETTINGS.hasColumnBorders);
53
+ setTableSpacing(DEFAULT_TABLE_SETTINGS.tableSpacing);
54
+ setAreCellColorsEnabled(DEFAULT_TABLE_SETTINGS.areCellColorsEnabled);
41
55
  if (onTableSettingsReset) {
42
56
  onTableSettingsReset();
43
57
  }