@arbor-education/design-system.components 0.3.3 → 0.3.4

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 (76) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/components/formField/fieldset/Fieldset.d.ts +1 -1
  3. package/dist/components/formField/fieldset/Fieldset.d.ts.map +1 -1
  4. package/dist/components/formField/fieldset/Fieldset.js +1 -1
  5. package/dist/components/formField/fieldset/Fieldset.js.map +1 -1
  6. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.d.ts.map +1 -1
  7. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js +2 -2
  8. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js.map +1 -1
  9. package/dist/components/table/DSDefaultColDef.d.ts.map +1 -1
  10. package/dist/components/table/DSDefaultColDef.js +32 -2
  11. package/dist/components/table/DSDefaultColDef.js.map +1 -1
  12. package/dist/components/table/Table.d.ts.map +1 -1
  13. package/dist/components/table/Table.js +5 -1
  14. package/dist/components/table/Table.js.map +1 -1
  15. package/dist/components/table/Table.stories.d.ts.map +1 -1
  16. package/dist/components/table/Table.stories.js +17 -16
  17. package/dist/components/table/Table.stories.js.map +1 -1
  18. package/dist/components/table/Table.test.js +15 -27
  19. package/dist/components/table/Table.test.js.map +1 -1
  20. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.d.ts +13 -0
  21. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.d.ts.map +1 -0
  22. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.js +68 -0
  23. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.js.map +1 -0
  24. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.test.d.ts +2 -0
  25. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.test.d.ts.map +1 -0
  26. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.test.js +87 -0
  27. package/dist/components/table/columnFilters/BooleanFilter/BooleanFilter.test.js.map +1 -0
  28. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.d.ts +14 -0
  29. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.d.ts.map +1 -0
  30. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.js +73 -0
  31. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.js.map +1 -0
  32. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.test.d.ts +2 -0
  33. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.test.d.ts.map +1 -0
  34. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.test.js +102 -0
  35. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.test.js.map +1 -0
  36. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.d.ts +8 -0
  37. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.d.ts.map +1 -0
  38. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.js +21 -0
  39. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.js.map +1 -0
  40. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.test.d.ts +2 -0
  41. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.test.d.ts.map +1 -0
  42. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.test.js +129 -0
  43. package/dist/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.test.js.map +1 -0
  44. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.d.ts +2 -0
  45. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.d.ts.map +1 -0
  46. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.js +18 -0
  47. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.js.map +1 -0
  48. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.test.d.ts +2 -0
  49. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.test.d.ts.map +1 -0
  50. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.test.js +100 -0
  51. package/dist/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.test.js.map +1 -0
  52. package/dist/components/table/columnFilters/filterResetButton/FilterResetButton.d.ts +7 -0
  53. package/dist/components/table/columnFilters/filterResetButton/FilterResetButton.d.ts.map +1 -0
  54. package/dist/components/table/columnFilters/filterResetButton/FilterResetButton.js +7 -0
  55. package/dist/components/table/columnFilters/filterResetButton/FilterResetButton.js.map +1 -0
  56. package/dist/index.css +70 -1
  57. package/dist/index.css.map +1 -1
  58. package/package.json +1 -1
  59. package/src/components/formField/fieldset/Fieldset.tsx +2 -2
  60. package/src/components/formField/inputs/selectDropdown/SelectDropdown.tsx +14 -2
  61. package/src/components/table/DSDefaultColDef.ts +34 -4
  62. package/src/components/table/Table.stories.tsx +20 -16
  63. package/src/components/table/Table.test.tsx +12 -28
  64. package/src/components/table/Table.tsx +5 -0
  65. package/src/components/table/columnFilters/BooleanFilter/BooleanFilter.test.tsx +102 -0
  66. package/src/components/table/columnFilters/BooleanFilter/BooleanFilter.tsx +104 -0
  67. package/src/components/table/columnFilters/TimeFilter/TimeFilter.test.tsx +131 -0
  68. package/src/components/table/columnFilters/TimeFilter/TimeFilter.tsx +122 -0
  69. package/src/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.test.ts +183 -0
  70. package/src/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.ts +30 -0
  71. package/src/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.test.ts +133 -0
  72. package/src/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.ts +21 -0
  73. package/src/components/table/columnFilters/columnFilters.scss +71 -0
  74. package/src/components/table/columnFilters/filterResetButton/FilterResetButton.tsx +21 -0
  75. package/src/components/table/table.scss +1 -1
  76. package/src/index.scss +1 -0
@@ -0,0 +1,102 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import '@testing-library/jest-dom/vitest';
3
+ import { beforeEach, describe, expect, test, vi } from 'vitest';
4
+ import { fireEvent, render, screen } from '@testing-library/react';
5
+ import { TimeFilter, doesTimeFilterPass } from './TimeFilter';
6
+ import { FILTER_TYPES } from './utils/compareTimeByFilterType';
7
+ import userEvent from '@testing-library/user-event';
8
+ const createTimeDate = (hours, minutes) => {
9
+ const d = new Date();
10
+ d.setHours(hours, minutes, 0, 0);
11
+ return d;
12
+ };
13
+ const createMockParams = (model, cellValue) => ({
14
+ model,
15
+ node: {},
16
+ handlerParams: {
17
+ getValue: vi.fn().mockReturnValue(cellValue),
18
+ },
19
+ });
20
+ describe('TimeFilter', () => {
21
+ beforeEach(() => {
22
+ vi.clearAllMocks();
23
+ });
24
+ const onModelChange = vi.fn();
25
+ test('renders TimeFilter', () => {
26
+ const { container } = render(_jsx(TimeFilter, { model: { filterType: FILTER_TYPES.AFTER, pivot: '14:30' }, onModelChange: onModelChange }));
27
+ expect(screen.getByRole('button', { name: /After/i })).toBeInTheDocument();
28
+ const timeInput = container.querySelector('input[type="time"]');
29
+ expect(timeInput).toHaveValue('14:30');
30
+ expect(screen.getByRole('button', { name: 'Clear this filter' })).toHaveTextContent('Reset time');
31
+ });
32
+ test('calls onModelChange when filter type changes', async () => {
33
+ render(_jsx(TimeFilter, { model: { filterType: FILTER_TYPES.AFTER, pivot: '14:30' }, onModelChange: onModelChange }));
34
+ const dropdownTrigger = screen.getByRole('button', { name: /After/i });
35
+ await userEvent.click(dropdownTrigger);
36
+ const beforeOption = await screen.findByText('Before');
37
+ await userEvent.click(beforeOption);
38
+ expect(onModelChange).toHaveBeenCalledWith({ filterType: FILTER_TYPES.BEFORE, pivot: '14:30' });
39
+ });
40
+ test('calls onModelChange when pivot changes', () => {
41
+ const { container } = render(_jsx(TimeFilter, { model: { filterType: FILTER_TYPES.AFTER, pivot: '14:30' }, onModelChange: onModelChange }));
42
+ const timeInput = container.querySelector('input[type="time"]');
43
+ fireEvent.change(timeInput, { target: { value: '09:15' } });
44
+ expect(onModelChange).toHaveBeenLastCalledWith({ filterType: FILTER_TYPES.AFTER, pivot: '09:15' });
45
+ });
46
+ test('calls onModelChange when reset button is clicked and dropdown displays Before', async () => {
47
+ render(_jsx(TimeFilter, { model: { filterType: FILTER_TYPES.AFTER, pivot: '14:30' }, onModelChange: onModelChange }));
48
+ expect(screen.getByRole('button', { name: /After/i })).toBeInTheDocument();
49
+ const resetButton = screen.getByRole('button', { name: 'Clear this filter' });
50
+ await userEvent.click(resetButton);
51
+ expect(onModelChange).toHaveBeenLastCalledWith({ filterType: FILTER_TYPES.BEFORE, pivot: '' });
52
+ expect(screen.getByRole('button', { name: /Before/i })).toBeInTheDocument();
53
+ });
54
+ });
55
+ describe('doesTimeFilterPass', () => {
56
+ const pivot = '14:30'; // 14:30 = 870 minutes since midnight
57
+ test('returns true when model is null (show all rows)', () => {
58
+ const params = createMockParams(null, createTimeDate(10, 0));
59
+ expect(doesTimeFilterPass(params)).toBe(true);
60
+ });
61
+ test('returns true when pivot is empty (show all rows)', () => {
62
+ const params = createMockParams({ filterType: FILTER_TYPES.AFTER, pivot: '' }, createTimeDate(10, 0));
63
+ expect(doesTimeFilterPass(params)).toBe(true);
64
+ });
65
+ test('returns false when cell value is missing', () => {
66
+ const params = createMockParams({ filterType: FILTER_TYPES.AFTER, pivot }, null);
67
+ expect(doesTimeFilterPass(params)).toBe(false);
68
+ });
69
+ test('BEFORE pivot: passes rows with time before pivot, fails rows with time after or equal', () => {
70
+ const model = { filterType: FILTER_TYPES.BEFORE, pivot };
71
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(9, 0)))).toBe(true); // 09:00 < 14:30
72
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 0)))).toBe(true); // 14:00 < 14:30
73
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 29)))).toBe(true);
74
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 30)))).toBe(false); // equal
75
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(18, 0)))).toBe(false); // 18:00 > 14:30
76
+ });
77
+ test('AFTER pivot: passes rows with time after pivot, fails rows with time before or equal', () => {
78
+ const model = { filterType: FILTER_TYPES.AFTER, pivot };
79
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(18, 0)))).toBe(true); // 18:00 > 14:30
80
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 31)))).toBe(true);
81
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 30)))).toBe(false); // equal
82
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(9, 0)))).toBe(false); // 09:00 < 14:30
83
+ });
84
+ test('EQUAL (At) pivot: passes only rows with same time', () => {
85
+ const model = { filterType: FILTER_TYPES.EQUAL, pivot };
86
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 30)))).toBe(true);
87
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 29)))).toBe(false);
88
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(14, 31)))).toBe(false);
89
+ expect(doesTimeFilterPass(createMockParams(model, createTimeDate(9, 0)))).toBe(false);
90
+ });
91
+ test('accepts cell value as Date object', () => {
92
+ const model = { filterType: FILTER_TYPES.EQUAL, pivot };
93
+ const params = createMockParams(model, createTimeDate(14, 30));
94
+ expect(doesTimeFilterPass(params)).toBe(true);
95
+ });
96
+ test('accepts cell value as time-only string (HH:mm)', () => {
97
+ const model = { filterType: FILTER_TYPES.EQUAL, pivot };
98
+ expect(doesTimeFilterPass(createMockParams(model, '14:30'))).toBe(true);
99
+ expect(doesTimeFilterPass(createMockParams(model, '09:00'))).toBe(false);
100
+ });
101
+ });
102
+ //# sourceMappingURL=TimeFilter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeFilter.test.js","sourceRoot":"","sources":["../../../../../src/components/table/columnFilters/TimeFilter/TimeFilter.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type FilterType = 'before' | 'after' | 'equal';
2
+ export declare const FILTER_TYPES: {
3
+ BEFORE: FilterType;
4
+ AFTER: FilterType;
5
+ EQUAL: FilterType;
6
+ };
7
+ export declare const compareTimeByFilterType: (filterType: FilterType, pivotDate: Date, dateToCheck: Date) => boolean;
8
+ //# sourceMappingURL=compareTimeByFilterType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareTimeByFilterType.d.ts","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtD,eAAO,MAAM,YAAY;YACH,UAAU;WACZ,UAAU;WACV,UAAU;CAC7B,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAClC,YAAY,UAAU,EACtB,WAAW,IAAI,EACf,aAAa,IAAI,KAChB,OAcF,CAAC"}
@@ -0,0 +1,21 @@
1
+ export const FILTER_TYPES = {
2
+ BEFORE: 'before',
3
+ AFTER: 'after',
4
+ EQUAL: 'equal',
5
+ };
6
+ const minutesSinceMidnight = (date) => date.getHours() * 60 + date.getMinutes();
7
+ export const compareTimeByFilterType = (filterType, pivotDate, dateToCheck) => {
8
+ const pivotMinutes = minutesSinceMidnight(pivotDate);
9
+ const checkMinutes = minutesSinceMidnight(dateToCheck);
10
+ switch (filterType) {
11
+ case FILTER_TYPES.BEFORE:
12
+ return checkMinutes < pivotMinutes;
13
+ case FILTER_TYPES.AFTER:
14
+ return checkMinutes > pivotMinutes;
15
+ case FILTER_TYPES.EQUAL:
16
+ return checkMinutes === pivotMinutes;
17
+ default:
18
+ return false;
19
+ }
20
+ };
21
+ //# sourceMappingURL=compareTimeByFilterType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareTimeByFilterType.js","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,MAAM,EAAE,QAAsB;IAC9B,KAAK,EAAE,OAAqB;IAC5B,KAAK,EAAE,OAAqB;CAC7B,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAU,EAAE,CAClD,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,UAAsB,EACtB,SAAe,EACf,WAAiB,EACR,EAAE;IACX,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEvD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,YAAY,CAAC,MAAM;YACtB,OAAO,YAAY,GAAG,YAAY,CAAC;QACrC,KAAK,YAAY,CAAC,KAAK;YACrB,OAAO,YAAY,GAAG,YAAY,CAAC;QACrC,KAAK,YAAY,CAAC,KAAK;YACrB,OAAO,YAAY,KAAK,YAAY,CAAC;QACvC;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=compareTimeByFilterType.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareTimeByFilterType.test.d.ts","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { compareTimeByFilterType, FILTER_TYPES } from './compareTimeByFilterType';
3
+ describe('compareTimeByFilterType', () => {
4
+ const createDateWithTime = (hours, minutes) => {
5
+ const date = new Date();
6
+ date.setHours(hours, minutes, 0, 0);
7
+ return date;
8
+ };
9
+ describe('BEFORE filter type', () => {
10
+ test('returns true when check time is before pivot time', () => {
11
+ const pivotDate = createDateWithTime(14, 30);
12
+ const dateToCheck = createDateWithTime(10, 0);
13
+ const result = compareTimeByFilterType(FILTER_TYPES.BEFORE, pivotDate, dateToCheck);
14
+ expect(result).toBe(true);
15
+ });
16
+ test('returns false when check time is after pivot time', () => {
17
+ const pivotDate = createDateWithTime(14, 30);
18
+ const dateToCheck = createDateWithTime(16, 0);
19
+ const result = compareTimeByFilterType(FILTER_TYPES.BEFORE, pivotDate, dateToCheck);
20
+ expect(result).toBe(false);
21
+ });
22
+ test('returns false when check time equals pivot time', () => {
23
+ const pivotDate = createDateWithTime(14, 30);
24
+ const dateToCheck = createDateWithTime(14, 30);
25
+ const result = compareTimeByFilterType(FILTER_TYPES.BEFORE, pivotDate, dateToCheck);
26
+ expect(result).toBe(false);
27
+ });
28
+ test('returns true when check time is one minute before pivot', () => {
29
+ const pivotDate = createDateWithTime(14, 30);
30
+ const dateToCheck = createDateWithTime(14, 29);
31
+ const result = compareTimeByFilterType(FILTER_TYPES.BEFORE, pivotDate, dateToCheck);
32
+ expect(result).toBe(true);
33
+ });
34
+ });
35
+ describe('AFTER filter type', () => {
36
+ test('returns true when check time is after pivot time', () => {
37
+ const pivotDate = createDateWithTime(14, 30);
38
+ const dateToCheck = createDateWithTime(16, 0);
39
+ const result = compareTimeByFilterType(FILTER_TYPES.AFTER, pivotDate, dateToCheck);
40
+ expect(result).toBe(true);
41
+ });
42
+ test('returns false when check time is before pivot time', () => {
43
+ const pivotDate = createDateWithTime(14, 30);
44
+ const dateToCheck = createDateWithTime(10, 0);
45
+ const result = compareTimeByFilterType(FILTER_TYPES.AFTER, pivotDate, dateToCheck);
46
+ expect(result).toBe(false);
47
+ });
48
+ test('returns false when check time equals pivot time', () => {
49
+ const pivotDate = createDateWithTime(14, 30);
50
+ const dateToCheck = createDateWithTime(14, 30);
51
+ const result = compareTimeByFilterType(FILTER_TYPES.AFTER, pivotDate, dateToCheck);
52
+ expect(result).toBe(false);
53
+ });
54
+ test('returns true when check time is one minute after pivot', () => {
55
+ const pivotDate = createDateWithTime(14, 30);
56
+ const dateToCheck = createDateWithTime(14, 31);
57
+ const result = compareTimeByFilterType(FILTER_TYPES.AFTER, pivotDate, dateToCheck);
58
+ expect(result).toBe(true);
59
+ });
60
+ });
61
+ describe('EQUAL filter type', () => {
62
+ test('returns true when check time equals pivot time', () => {
63
+ const pivotDate = createDateWithTime(14, 30);
64
+ const dateToCheck = createDateWithTime(14, 30);
65
+ const result = compareTimeByFilterType(FILTER_TYPES.EQUAL, pivotDate, dateToCheck);
66
+ expect(result).toBe(true);
67
+ });
68
+ test('returns false when check time is before pivot time', () => {
69
+ const pivotDate = createDateWithTime(14, 30);
70
+ const dateToCheck = createDateWithTime(10, 0);
71
+ const result = compareTimeByFilterType(FILTER_TYPES.EQUAL, pivotDate, dateToCheck);
72
+ expect(result).toBe(false);
73
+ });
74
+ test('returns false when check time is after pivot time', () => {
75
+ const pivotDate = createDateWithTime(14, 30);
76
+ const dateToCheck = createDateWithTime(16, 0);
77
+ const result = compareTimeByFilterType(FILTER_TYPES.EQUAL, pivotDate, dateToCheck);
78
+ expect(result).toBe(false);
79
+ });
80
+ test('returns false when check time differs by one minute', () => {
81
+ const pivotDate = createDateWithTime(14, 30);
82
+ const dateToCheck = createDateWithTime(14, 31);
83
+ const result = compareTimeByFilterType(FILTER_TYPES.EQUAL, pivotDate, dateToCheck);
84
+ expect(result).toBe(false);
85
+ });
86
+ });
87
+ describe('edge cases', () => {
88
+ test('handles midnight times correctly', () => {
89
+ const pivotDate = createDateWithTime(0, 0);
90
+ const dateToCheck = createDateWithTime(0, 1);
91
+ const result = compareTimeByFilterType(FILTER_TYPES.AFTER, pivotDate, dateToCheck);
92
+ expect(result).toBe(true);
93
+ });
94
+ test('handles end of day times correctly', () => {
95
+ const pivotDate = createDateWithTime(23, 59);
96
+ const dateToCheck = createDateWithTime(23, 58);
97
+ const result = compareTimeByFilterType(FILTER_TYPES.BEFORE, pivotDate, dateToCheck);
98
+ expect(result).toBe(true);
99
+ });
100
+ test('ignores date component and only compares time', () => {
101
+ const pivotDate = new Date(2024, 0, 1, 14, 30);
102
+ const dateToCheck = new Date(2024, 0, 15, 14, 30);
103
+ const result = compareTimeByFilterType(FILTER_TYPES.EQUAL, pivotDate, dateToCheck);
104
+ expect(result).toBe(true);
105
+ });
106
+ test('ignores seconds and milliseconds', () => {
107
+ const pivotDate = new Date(2024, 0, 1, 14, 30, 45, 500);
108
+ const dateToCheck = new Date(2024, 0, 1, 14, 30, 10, 100);
109
+ const result = compareTimeByFilterType(FILTER_TYPES.EQUAL, pivotDate, dateToCheck);
110
+ expect(result).toBe(true);
111
+ });
112
+ test('returns false for invalid filter type', () => {
113
+ const pivotDate = createDateWithTime(14, 30);
114
+ const dateToCheck = createDateWithTime(14, 30);
115
+ const result = compareTimeByFilterType('invalid', pivotDate, dateToCheck);
116
+ expect(result).toBe(false);
117
+ });
118
+ });
119
+ describe('cross-midnight comparisons', () => {
120
+ test('correctly compares times across midnight boundary', () => {
121
+ const pivotDate = createDateWithTime(23, 30);
122
+ const dateToCheck = createDateWithTime(0, 30);
123
+ // 00:30 (30 minutes) is before 23:30 (1410 minutes) in terms of minutes since midnight
124
+ const result = compareTimeByFilterType(FILTER_TYPES.BEFORE, pivotDate, dateToCheck);
125
+ expect(result).toBe(true);
126
+ });
127
+ });
128
+ });
129
+ //# sourceMappingURL=compareTimeByFilterType.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareTimeByFilterType.test.js","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/compareTimeByFilterType.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const transformTimeStringToDate: (timeString: string) => Date | null;
2
+ //# sourceMappingURL=transformTimeStringToDate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformTimeStringToDate.d.ts","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,GAAI,YAAY,MAAM,KAAG,IAAI,GAAG,IAoBrE,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const transformTimeStringToDate = (timeString) => {
2
+ if (!timeString) {
3
+ return null;
4
+ }
5
+ const parts = timeString.split(':');
6
+ if (parts.length !== 2) {
7
+ return null;
8
+ }
9
+ const hours = Number(parts[0]);
10
+ const minutes = Number(parts[1]);
11
+ if (isNaN(hours) || isNaN(minutes)) {
12
+ return null;
13
+ }
14
+ const date = new Date();
15
+ date.setHours(hours, minutes, 0, 0);
16
+ return date;
17
+ };
18
+ //# sourceMappingURL=transformTimeStringToDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformTimeStringToDate.js","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,UAAkB,EAAe,EAAE;IAC3E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transformTimeStringToDate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformTimeStringToDate.test.d.ts","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,100 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { transformTimeStringToDate } from './transformTimeStringToDate';
3
+ describe('transformTimeStringToDate', () => {
4
+ describe('valid time strings', () => {
5
+ test('converts valid time string to Date object', () => {
6
+ const result = transformTimeStringToDate('14:30');
7
+ expect(result).toBeInstanceOf(Date);
8
+ expect(result?.getHours()).toBe(14);
9
+ expect(result?.getMinutes()).toBe(30);
10
+ expect(result?.getSeconds()).toBe(0);
11
+ expect(result?.getMilliseconds()).toBe(0);
12
+ });
13
+ test('handles midnight (00:00)', () => {
14
+ const result = transformTimeStringToDate('00:00');
15
+ expect(result).toBeInstanceOf(Date);
16
+ expect(result?.getHours()).toBe(0);
17
+ expect(result?.getMinutes()).toBe(0);
18
+ });
19
+ test('handles noon (12:00)', () => {
20
+ const result = transformTimeStringToDate('12:00');
21
+ expect(result).toBeInstanceOf(Date);
22
+ expect(result?.getHours()).toBe(12);
23
+ expect(result?.getMinutes()).toBe(0);
24
+ });
25
+ test('handles end of day (23:59)', () => {
26
+ const result = transformTimeStringToDate('23:59');
27
+ expect(result).toBeInstanceOf(Date);
28
+ expect(result?.getHours()).toBe(23);
29
+ expect(result?.getMinutes()).toBe(59);
30
+ });
31
+ test('handles single digit hours with leading zero', () => {
32
+ const result = transformTimeStringToDate('09:45');
33
+ expect(result?.getHours()).toBe(9);
34
+ expect(result?.getMinutes()).toBe(45);
35
+ });
36
+ test('handles single digit minutes with leading zero', () => {
37
+ const result = transformTimeStringToDate('15:05');
38
+ expect(result?.getHours()).toBe(15);
39
+ expect(result?.getMinutes()).toBe(5);
40
+ });
41
+ });
42
+ describe('invalid time strings', () => {
43
+ test('returns null for empty string', () => {
44
+ const result = transformTimeStringToDate('');
45
+ expect(result).toBeNull();
46
+ });
47
+ test('returns null for string without colon', () => {
48
+ const result = transformTimeStringToDate('1430');
49
+ expect(result).toBeNull();
50
+ });
51
+ test('returns null for string with too many parts', () => {
52
+ const result = transformTimeStringToDate('14:30:00');
53
+ expect(result).toBeNull();
54
+ });
55
+ test('returns null for string with only one part', () => {
56
+ const result = transformTimeStringToDate('14');
57
+ expect(result).toBeNull();
58
+ });
59
+ test('returns null for non-numeric hours', () => {
60
+ const result = transformTimeStringToDate('abc:30');
61
+ expect(result).toBeNull();
62
+ });
63
+ test('returns null for non-numeric minutes', () => {
64
+ const result = transformTimeStringToDate('14:xyz');
65
+ expect(result).toBeNull();
66
+ });
67
+ test('returns null for invalid time format', () => {
68
+ const result = transformTimeStringToDate('not a time');
69
+ expect(result).toBeNull();
70
+ });
71
+ test('accepts time with spaces (Number trims whitespace)', () => {
72
+ const result = transformTimeStringToDate('14: 30');
73
+ expect(result).toBeInstanceOf(Date);
74
+ expect(result?.getHours()).toBe(14);
75
+ expect(result?.getMinutes()).toBe(30);
76
+ });
77
+ });
78
+ describe('edge cases', () => {
79
+ test('accepts hours and minutes that would be out of normal range', () => {
80
+ // Date object normalizes 25:70 to next day 02:10
81
+ const result = transformTimeStringToDate('25:70');
82
+ expect(result).toBeInstanceOf(Date);
83
+ expect(result?.getHours()).toBe(2);
84
+ expect(result?.getMinutes()).toBe(10);
85
+ });
86
+ test('handles zero padded values', () => {
87
+ const result = transformTimeStringToDate('00:00');
88
+ expect(result?.getHours()).toBe(0);
89
+ expect(result?.getMinutes()).toBe(0);
90
+ });
91
+ test('preserves current date while setting time', () => {
92
+ const today = new Date();
93
+ const result = transformTimeStringToDate('10:30');
94
+ expect(result?.getFullYear()).toBe(today.getFullYear());
95
+ expect(result?.getMonth()).toBe(today.getMonth());
96
+ expect(result?.getDate()).toBe(today.getDate());
97
+ });
98
+ });
99
+ });
100
+ //# sourceMappingURL=transformTimeStringToDate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformTimeStringToDate.test.js","sourceRoot":"","sources":["../../../../../../src/components/table/columnFilters/TimeFilter/utils/transformTimeStringToDate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ type FilterResetButtonProps = {
2
+ onClick: () => void;
3
+ children?: React.ReactNode;
4
+ };
5
+ export declare function FilterResetButton(props: FilterResetButtonProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=FilterResetButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterResetButton.d.ts","sourceRoot":"","sources":["../../../../../src/components/table/columnFilters/filterResetButton/FilterResetButton.tsx"],"names":[],"mappings":"AAEA,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAa9D"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button } from '../../../button/Button';
3
+ export function FilterResetButton(props) {
4
+ const { onClick, children = 'Reset' } = props;
5
+ return (_jsx(Button, { className: "ds-column-filter__reset-button", "aria-label": "Clear this filter", onClick: onClick, variant: "secondary", size: "S", children: children }));
6
+ }
7
+ //# sourceMappingURL=FilterResetButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterResetButton.js","sourceRoot":"","sources":["../../../../../src/components/table/columnFilters/filterResetButton/FilterResetButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAOlD,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAC9C,OAAO,CACL,KAAC,MAAM,IACL,SAAS,EAAC,gCAAgC,gBAC/B,mBAAmB,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,GAAG,YAEP,QAAQ,GACF,CACV,CAAC;AACJ,CAAC"}
package/dist/index.css CHANGED
@@ -2409,7 +2409,7 @@ h4.ds-heading {
2409
2409
  .ds-table__select-dropdown-cell {
2410
2410
  width: 100%;
2411
2411
  }
2412
- .ds-table__container .ag-header-cell-resize {
2412
+ .ds-table__container *[class^=ag-], .ds-table__container *[class*=" ag-"] {
2413
2413
  z-index: unset;
2414
2414
  }
2415
2415
  .ds-table__footer, .ds-table__header {
@@ -2632,4 +2632,73 @@ h4.ds-heading {
2632
2632
  position: fixed;
2633
2633
  }
2634
2634
 
2635
+ .ds-column-filter__container {
2636
+ display: flex;
2637
+ flex-direction: column;
2638
+ align-items: center;
2639
+ gap: var(--spacing-small);
2640
+ padding: var(--spacing-small);
2641
+ z-index: 1;
2642
+ position: relative;
2643
+ }
2644
+
2645
+ .ds-column-filter__options {
2646
+ display: flex;
2647
+ flex-direction: row;
2648
+ align-items: center;
2649
+ gap: var(--spacing-small);
2650
+ }
2651
+
2652
+ .ds-column-filter__reset-button {
2653
+ margin-left: auto;
2654
+ }
2655
+
2656
+ .ds-column-filter-time {
2657
+ background-color: var(--color-mono-white);
2658
+ border-radius: var(--border-radius-small);
2659
+ padding: var(--spacing-small);
2660
+ align-items: stretch;
2661
+ }
2662
+
2663
+ .ds-column-filter-time__row {
2664
+ display: flex;
2665
+ flex-direction: row;
2666
+ align-items: center;
2667
+ gap: var(--spacing-small);
2668
+ }
2669
+
2670
+ .ds-column-filter-time__row .ds-button {
2671
+ flex: 1;
2672
+ min-width: 0;
2673
+ height: var(--size-control-small);
2674
+ background-color: var(--color-grey-050);
2675
+ border: var(--border-weight) solid var(--color-grey-200);
2676
+ border-radius: var(--border-radius-small);
2677
+ color: var(--color-grey-900);
2678
+ font-family: var(--font-family-standard);
2679
+ font-size: var(--font-size-2-13);
2680
+ font-weight: var(--font-weight-regular);
2681
+ padding: 0 var(--spacing-small);
2682
+ justify-content: space-between;
2683
+ }
2684
+
2685
+ .ds-column-filter-time__input {
2686
+ flex: 1;
2687
+ min-width: 0;
2688
+ height: var(--size-control-small);
2689
+ padding: 0 var(--spacing-small);
2690
+ background-color: var(--color-grey-050);
2691
+ border: var(--border-weight) solid var(--color-grey-200);
2692
+ border-radius: var(--border-radius-small);
2693
+ color: var(--color-grey-900);
2694
+ font-family: var(--font-family-standard);
2695
+ font-size: var(--font-size-2-13);
2696
+ font-weight: var(--font-weight-regular);
2697
+ box-sizing: border-box;
2698
+ }
2699
+ .ds-column-filter-time__input::-webkit-calendar-picker-indicator {
2700
+ opacity: 0.6;
2701
+ cursor: pointer;
2702
+ }
2703
+
2635
2704
  /*# sourceMappingURL=index.css.map */