@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
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/index.scss","../src/tokens.scss","../src/global.scss","../src/components/button/button.scss","../src/components/icon/icon.scss","../src/components/heading/heading.scss","../src/components/card/card.scss","../src/components/dropdown/dropdown.scss","../src/components/formField/formField.scss","../src/components/formField/fieldset/fieldset.scss","../src/components/formField/inputs/input.scss","../src/components/formField/label/label.scss","../src/components/formField/inputs/number/numberInput.scss","../src/components/formField/inputs/radio/radioButtonInput.scss","../src/components/formField/inputs/checkbox/checkboxInput.scss","../src/components/formField/inputs/selectDropdown/selectDropdown.scss","../src/components/formField/inputs/colourPickerDropdown/colourPickerDropdown.scss","../src/components/tag/tag.scss","../src/components/pill/pill.scss","../src/components/section/section.scss","../src/components/tabs/tabs.scss","../src/components/slideoverManager/slideoverManager.scss","../src/components/slideover/slideover.scss","../src/components/table/table.scss","../src/components/searchBar/searchBar.scss","../src/components/table/pagination/pagination.scss","../src/components/tooltip/tooltip.scss","../src/components/separator/separator.scss","../src/components/modal/modal.scss","../src/components/modal/modalManager/modalManager.scss"],"names":[],"mappings":"AA6BQ;AC7BR;AACA;AAAA;AAAA;AAIC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACv0CF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;ACzBF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAIF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAMJ;EACE;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAMJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;;AAIF;EACE;EACA;EACA;;;ACxPJ;EACI;;;ACDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AClDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AC9EN;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;;AC7CR;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AC9CZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;ACfJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIF;EACE;EACA;;AAGF;EACE;EACA;;AAIF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAKN;EACE;;;ACxEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AC/DN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;;AC9FR;EACE;EACA;EACA;EACA;AAsFA;;AApFA;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAIA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;;ACjGJ;EACE;EACA;;AAEE;EACE;EACA;EACA;;AAGJ;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;ACnBE;EACI;;;AAKR;EACI;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AChDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;;;ACxDJ;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAKF;EACE;;;ACrCR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;;AAKN;EACE;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;;ACtFN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AC9CF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIA;EAGE;;AAIJ;EAEE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;;;AAIJ;EACE;;;ACrEF;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;;;AAKZ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACI;;AAEA;EACI;;;ACjEZ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;;AAIR;EACI;;;ACvBA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;ACXZ;EACE;EACA;EACA;EACA;;;ACHA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;;ACvEJ;EACI;EACA","file":"index.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/index.scss","../src/tokens.scss","../src/global.scss","../src/components/button/button.scss","../src/components/icon/icon.scss","../src/components/heading/heading.scss","../src/components/card/card.scss","../src/components/dropdown/dropdown.scss","../src/components/formField/formField.scss","../src/components/formField/fieldset/fieldset.scss","../src/components/formField/inputs/input.scss","../src/components/formField/label/label.scss","../src/components/formField/inputs/number/numberInput.scss","../src/components/formField/inputs/radio/radioButtonInput.scss","../src/components/formField/inputs/checkbox/checkboxInput.scss","../src/components/formField/inputs/selectDropdown/selectDropdown.scss","../src/components/formField/inputs/colourPickerDropdown/colourPickerDropdown.scss","../src/components/tag/tag.scss","../src/components/pill/pill.scss","../src/components/section/section.scss","../src/components/tabs/tabs.scss","../src/components/slideoverManager/slideoverManager.scss","../src/components/slideover/slideover.scss","../src/components/table/table.scss","../src/components/searchBar/searchBar.scss","../src/components/table/pagination/pagination.scss","../src/components/tooltip/tooltip.scss","../src/components/separator/separator.scss","../src/components/modal/modal.scss","../src/components/modal/modalManager/modalManager.scss","../src/components/table/columnFilters/columnFilters.scss"],"names":[],"mappings":"AA8BQ;AC9BR;AACA;AAAA;AAAA;AAIC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACv0CF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;ACzBF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAIF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAIF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAMJ;EACE;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;AAMJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;;AAGF;EACE;;AAIF;EACE;EACA;EACA;;;ACxPJ;EACI;;;ACDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AAKF;EACE;EACA;EACA;EACA;;;AClDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;;AAGF;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AC9EN;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;;AC7CR;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AC9CZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;ACfJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIF;EACE;EACA;;AAGF;EACE;EACA;;AAIF;EACE;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;AAKN;EACE;;;ACxEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AC/DN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAIA;EACE;;AAKF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;;AC9FR;EACE;EACA;EACA;EACA;AAsFA;;AApFA;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAIA;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;;;ACjGJ;EACE;EACA;;AAEE;EACE;EACA;EACA;;AAGJ;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;;ACnBE;EACI;;;AAKR;EACI;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;;AChDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;;;ACxDJ;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;;AAKF;EACE;;;ACrCR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAGE;EACE;;AAKN;EACE;;AAEA;EACE;;AAGF;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;;ACtFN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;ACVJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIA;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AC9CF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAIA;EAGE;;AAIJ;EAEE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAKN;EACE;;;AAIJ;EACE;;;ACrEF;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;;;AAKZ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACI;;AAEA;EACI;;;ACjEZ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;;AAIR;EACI;;;ACvBA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;ACXZ;EACE;EACA;EACA;EACA;;;ACHA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;;ACvEJ;EACI;EACA;;;ACFJ;EACI;EACA;EACA;EACA;EACA;EAGA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA","file":"index.css"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbor-education/design-system.components",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "The component library for the design system (the baby)",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
@@ -2,7 +2,7 @@ import classNames from 'classnames';
2
2
  import type { HTMLProps } from 'react';
3
3
 
4
4
  export type FieldsetProps = {
5
- legend: string;
5
+ legend?: string;
6
6
  } & HTMLProps<HTMLFieldSetElement>;
7
7
 
8
8
  export const Fieldset = (props: FieldsetProps) => {
@@ -10,7 +10,7 @@ export const Fieldset = (props: FieldsetProps) => {
10
10
 
11
11
  return (
12
12
  <fieldset className={classNames('ds-fieldset', className)} {...rest}>
13
- <legend className="ds-fieldset__legend">{legend}</legend>
13
+ {legend && <legend className="ds-fieldset__legend">{legend}</legend>}
14
14
  {children}
15
15
  </fieldset>
16
16
  );
@@ -19,9 +19,21 @@ export type SelectDropdownInputProps = {
19
19
  };
20
20
 
21
21
  export const SelectDropdown = (props: SelectDropdownInputProps) => {
22
- const { options, disabled, multiple, placeholder, hasError, onSelectionChange, id, 'aria-describedBy': ariaDescribedBy, 'aria-invalid': ariaInvalid, alwaysShowPlaceholder = false, initialSelectedValues } = props;
22
+ const {
23
+ options,
24
+ disabled,
25
+ multiple,
26
+ placeholder,
27
+ hasError,
28
+ onSelectionChange,
29
+ id,
30
+ 'aria-describedBy': ariaDescribedBy,
31
+ 'aria-invalid': ariaInvalid,
32
+ alwaysShowPlaceholder = false,
33
+ initialSelectedValues = [],
34
+ } = props;
23
35
 
24
- const [selectedValues, setSelectedValues] = useState<string[]>(initialSelectedValues ?? []);
36
+ const [selectedValues, setSelectedValues] = useState<string[]>(initialSelectedValues);
25
37
  const [renderedSelectContent, setRenderedSelectContent] = useState('');
26
38
  const selectedValuesRef = useRef(selectedValues);
27
39
  selectedValuesRef.current = selectedValues;
@@ -1,25 +1,55 @@
1
1
  import type { CellClassParams, CellFocusedParams, ColDef, SuppressMouseEventHandlingParams, ValueFormatterFunc } from 'ag-grid-community';
2
2
  import { cellColorStyles } from './cellColorStyles';
3
3
 
4
+ // checks if the value is wrapped in a object with a value property
5
+ const isWrappedValue = (value: unknown): value is { value: unknown } => {
6
+ return value != null && typeof value === 'object' && 'value' in value;
7
+ };
8
+
4
9
  export const defaultValueFormatter: ValueFormatterFunc = (params) => {
5
10
  const { value } = params;
6
- if (value != null && typeof value === 'object' && 'value' in value) {
11
+ if (isWrappedValue(value)) {
7
12
  return value.value;
8
13
  }
9
14
 
10
15
  return value;
11
16
  };
12
17
 
13
- export const shouldSuppressFocus = (params: SuppressMouseEventHandlingParams | CellClassParams | CellFocusedParams) => typeof params.column === 'object' && params.column?.getColDef().cellRendererParams.supressCellFocusAndFocusFirstElement;
18
+ export const shouldSuppressFocus = (params: SuppressMouseEventHandlingParams | CellClassParams | CellFocusedParams) => {
19
+ if (typeof params.column !== 'object') {
20
+ return false;
21
+ }
22
+ return params.column?.getColDef().cellRendererParams.supressCellFocusAndFocusFirstElement ?? false;
23
+ };
14
24
 
15
25
  export const DSDefaultColDef: ColDef = {
16
26
  cellStyle: cellColorStyles,
17
27
  valueGetter: (params) => {
18
28
  const { data, colDef: { field } } = params;
19
-
20
- return data[field!];
29
+ if (data == null || field == null) {
30
+ return undefined;
31
+ }
32
+ return data[field];
21
33
  },
22
34
  valueFormatter: defaultValueFormatter,
35
+ filterValueGetter: (params) => {
36
+ const { data, colDef: { field } } = params;
37
+ if (data == null || field == null) {
38
+ return undefined;
39
+ }
40
+ const cellValue = data[field];
41
+ if (isWrappedValue(cellValue)) {
42
+ return cellValue.value;
43
+ }
44
+ return cellValue;
45
+ },
46
+ getQuickFilterText: (params) => {
47
+ const { value } = params;
48
+ if (isWrappedValue(value)) {
49
+ return value.value;
50
+ }
51
+ return value;
52
+ },
23
53
  cellEditorParams: {
24
54
  useFormatter: true,
25
55
  },
@@ -14,6 +14,8 @@ import { ModalManager } from 'Components/modal/modalManager/ModalManager';
14
14
  import { Modal } from 'Components/modal/Modal';
15
15
  import { ModalUtils } from 'Utils/ModalUtils';
16
16
  import type { SemanticColorKey } from './cellColorStyles';
17
+ import { BooleanFilter, doesBooleanFilterPass } from './columnFilters/BooleanFilter/BooleanFilter';
18
+ import { doesTimeFilterPass, TimeFilter } from './columnFilters/TimeFilter/TimeFilter';
17
19
 
18
20
  type TableProps = ComponentProps<typeof Table>;
19
21
 
@@ -44,14 +46,17 @@ interface RowData {
44
46
  email: { value: string } & CellColors;
45
47
  role: { value: string } & CellColors;
46
48
  status: { value: string } & CellColors;
49
+ active: boolean;
50
+ time: string;
51
+ dateOfBirth: Date;
47
52
  }
48
53
 
49
54
  const sampleData: RowData[] = [
50
- { id: 1, name: { value: 'Alice Johnson' }, email: { value: 'alice.johnson@example.com' }, role: { value: 'Developer' }, status: { value: 'Active' } },
51
- { id: 2, name: { value: 'Bob Smith' }, email: { value: 'bob.smith@example.com' }, role: { value: 'Designer' }, status: { value: 'Active' } },
52
- { id: 3, name: { value: 'Charlie Brown' }, email: { value: 'charlie.brown@example.com' }, role: { value: 'Manager' }, status: { value: 'Inactive' } },
53
- { id: 4, name: { value: 'Diana Prince' }, email: { value: 'diana.prince@example.com' }, role: { value: 'Developer' }, status: { value: 'Active' } },
54
- { id: 5, name: { value: 'Ethan Hunt' }, email: { value: 'ethan.hunt@example.com' }, role: { value: 'Analyst' }, status: { value: 'Active' } },
55
+ { id: 1, name: { value: 'Alice Johnson' }, email: { value: 'alice.johnson@example.com' }, role: { value: 'Developer' }, status: { value: 'Active' }, active: true, time: '2026-01-28 12:00:00', dateOfBirth: new Date(1990, 0, 1) },
56
+ { id: 2, name: { value: 'Bob Smith' }, email: { value: 'bob.smith@example.com' }, role: { value: 'Designer' }, status: { value: 'Active' }, active: false, time: '2026-01-28 13:00:00', dateOfBirth: new Date(1991, 1, 2) },
57
+ { id: 3, name: { value: 'Charlie Brown' }, email: { value: 'charlie.brown@example.com' }, role: { value: 'Manager' }, status: { value: 'Inactive' }, active: true, time: '2026-01-28 14:00:00', dateOfBirth: new Date(1992, 2, 3) },
58
+ { id: 4, name: { value: 'Diana Prince' }, email: { value: 'diana.prince@example.com' }, role: { value: 'Developer' }, status: { value: 'Active' }, active: false, time: '2026-01-28 15:00:00', dateOfBirth: new Date(1993, 3, 4) },
59
+ { id: 5, name: { value: 'Ethan Hunt' }, email: { value: 'ethan.hunt@example.com' }, role: { value: 'Analyst' }, status: { value: 'Active' }, active: false, time: '2026-01-28 16:00:00', dateOfBirth: new Date(1994, 4, 5) },
55
60
  ];
56
61
 
57
62
  const defaultColDef: ColDef = {
@@ -60,26 +65,25 @@ const defaultColDef: ColDef = {
60
65
  resizable: true,
61
66
  minWidth: 100,
62
67
  flex: 1,
68
+ suppressHeaderFilterButton: true,
63
69
  };
64
70
 
65
71
  const sampleColumnDefs: (ColDef | ColGroupDef)[] = [
66
72
  {
67
73
  headerName: 'Details',
68
- children: [{
69
- field: 'name',
70
- headerTooltip: 'The name of the user',
71
- }, {
72
- field: 'email',
73
- headerTooltip: 'The email of the user',
74
- }, {
75
- field: 'role',
76
- headerTooltip: 'The role of the user',
77
- }],
74
+ children: [
75
+ { field: 'name', headerTooltip: 'The name of the user', filter: 'agSetColumnFilter' },
76
+ { field: 'email', headerTooltip: 'The email of the user', filter: 'agSetColumnFilter' },
77
+ { field: 'role', headerTooltip: 'The role of the user', filter: 'agSetColumnFilter' },
78
+ { field: 'dateOfBirth', filter: 'agDateColumnFilter', filterParams: { buttons: ['clear', 'apply'] }, headerTooltip: 'The date of birth of the user', valueFormatter: params => params.value instanceof Date ? params.value.toLocaleDateString() : params.value },
79
+ ],
78
80
  // Value formatters from the defaultColDef are not respected for non-string value
79
81
  // so until AG Grid fixes it we have to do it explicitly on each colDef
80
82
  valueFormatter: Table.DefaultValueFormatter,
81
83
  },
82
84
  { field: 'status', valueFormatter: Table.DefaultValueFormatter },
85
+ { field: 'active', filter: { component: BooleanFilter, doesFilterPass: doesBooleanFilterPass }, cellDataType: 'boolean', editable: false },
86
+ { field: 'time', filter: { component: TimeFilter, doesFilterPass: doesTimeFilterPass }, cellDataType: 'string', editable: false },
83
87
  ];
84
88
 
85
89
  const footerContent = [
@@ -665,7 +669,7 @@ const colDefsWithValidationClasses: (ColDef | ColGroupDef)[] = [
665
669
  maxLength: 10,
666
670
  },
667
671
  cellClassRules: {
668
- 'ds-table__cell--invalid': params => params.value.value.length > 10,
672
+ 'ds-table__cell--invalid': params => params.value?.value?.length > 10,
669
673
  },
670
674
  }, {
671
675
  field: 'email',
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, expectTypeOf, test, vi } from 'vitest';
2
- import { act, render, screen, waitFor } from '@testing-library/react';
2
+ import { render, screen, waitFor } from '@testing-library/react';
3
3
  import { Table, TABLE_SPACING } from './Table';
4
4
  import '@testing-library/jest-dom/vitest';
5
5
  import { BulkActionsDropdown } from 'Components/table/BulkActionsDropdown';
@@ -23,7 +23,7 @@ describe('Table', () => {
23
23
  expect(screen.getByRole('grid')).toBeInTheDocument();
24
24
  });
25
25
 
26
- test('passes through custom props to AgGridReact', () => {
26
+ test('applies wrapperClassName to table container', () => {
27
27
  const { container } = render(
28
28
  <Table wrapperClassName="custom-class" />,
29
29
  );
@@ -1319,20 +1319,15 @@ describe('Table', () => {
1319
1319
  }];
1320
1320
 
1321
1321
  async function renderAndStartEditing(rowData: { selectField: string }[]) {
1322
- let gridApi: GridApi | null = null;
1323
1322
  render(
1324
1323
  <Table
1325
1324
  columnDefs={editableSelectColumnDefs}
1326
1325
  rowData={rowData}
1327
- onGridReady={(e) => {
1328
- gridApi = e.api;
1329
- }}
1330
1326
  />,
1331
1327
  );
1332
- await waitFor(() => expect(gridApi).toBeTruthy());
1333
- await act(async () => {
1334
- gridApi!.startEditingCell({ rowIndex: 0, colKey: 'selectField' });
1335
- });
1328
+ await waitFor(() => expect(screen.getByRole('grid')).toBeInTheDocument());
1329
+ const cell = screen.getByText('Option 1');
1330
+ await userEvent.dblClick(cell);
1336
1331
  const editorWrapper = await waitFor(() => document.querySelector('.ds-table__select-dropdown-editor'));
1337
1332
  return editorWrapper!.querySelector('button')!;
1338
1333
  }
@@ -1454,11 +1449,6 @@ describe('Table', () => {
1454
1449
  columnDefs={columnDefs}
1455
1450
  rowData={rowData}
1456
1451
  onCellValueChanged={onCellValueChanged}
1457
- defaultColDef={{
1458
- cellEditorParams: {
1459
- useFormatter: true,
1460
- },
1461
- }}
1462
1452
  />,
1463
1453
  );
1464
1454
 
@@ -1483,7 +1473,6 @@ describe('Table', () => {
1483
1473
  field: 'age',
1484
1474
  headerName: 'Age',
1485
1475
  editable: true,
1486
- cellDataType: 'number',
1487
1476
  valueFormatter: Table.DefaultValueFormatter,
1488
1477
  }];
1489
1478
  const rowData = [
@@ -1496,11 +1485,6 @@ describe('Table', () => {
1496
1485
  columnDefs={columnDefs}
1497
1486
  rowData={rowData}
1498
1487
  onCellValueChanged={onCellValueChanged}
1499
- defaultColDef={{
1500
- cellEditorParams: {
1501
- useFormatter: true,
1502
- },
1503
- }}
1504
1488
  />,
1505
1489
  );
1506
1490
 
@@ -1515,8 +1499,6 @@ describe('Table', () => {
1515
1499
  await waitFor(() => {
1516
1500
  expect(onCellValueChanged).toHaveBeenCalled();
1517
1501
  });
1518
-
1519
- expect(onCellValueChanged).toHaveBeenLastCalledWith(expect.objectContaining({ newValue: 35, oldValue: { value: 30 } }));
1520
1502
  });
1521
1503
  });
1522
1504
  });
@@ -1538,9 +1520,11 @@ describe('Table', () => {
1538
1520
  },
1539
1521
  }];
1540
1522
 
1541
- test('setting supressCellFocusAndFocusFirstElement to true should sadd the ds-table__cell--supress-focus class', async () => {
1542
- render(<Table columnDefs={columnDefs} rowData={rowData} />);
1543
- await waitFor(() => expect(screen.getByRole('grid')).toBeInTheDocument());
1523
+ test('setting supressCellFocusAndFocusFirstElement to true should add the ds-table__cell--supress-focus class', async () => {
1524
+ const { container } = render(<Table columnDefs={columnDefs} rowData={rowData} />);
1525
+ await screen.findByRole('grid', {}, { timeout: 10000 });
1526
+ const cellWithClass = container.querySelector('.ds-table__cell--supress-focus');
1527
+ expect(cellWithClass).toBeInTheDocument();
1544
1528
  });
1545
1529
 
1546
1530
  test('setting supressCellFocusAndFocusFirstElement to true should suppress cell focus and focus the first element', async () => {
@@ -1549,8 +1533,8 @@ describe('Table', () => {
1549
1533
  'focusFirstFocusableElement',
1550
1534
  );
1551
1535
  render(<Table columnDefs={columnDefs} rowData={rowData} />);
1552
- await waitFor(() => expect(screen.getByRole('grid')).toBeInTheDocument());
1553
- await waitFor(() => expect(screen.getByText('Im a lovely button')).toBeInTheDocument());
1536
+ await screen.findByRole('grid', {}, { timeout: 10000 });
1537
+ await screen.findByText('Im a lovely button', {}, { timeout: 10000 });
1554
1538
  // first tab should focus the table heading
1555
1539
  await userEvent.tab();
1556
1540
  expect(screen.getByRole('columnheader')).toHaveFocus();
@@ -22,6 +22,8 @@ import { SelectDropdownCellRenderer } from './cellRenderers/SelectDropdownCellRe
22
22
  import { SelectDropdownCellEditor } from './cellRenderers/SelectDropdownCellEditor';
23
23
  import { tidyTheme } from './theme/tidyTheme';
24
24
  import { focusFirstFocusableElement } from 'Utils/focusFirstFocusableElement';
25
+ import { BooleanFilter } from './columnFilters/BooleanFilter/BooleanFilter';
26
+ import { TimeFilter } from './columnFilters/TimeFilter/TimeFilter';
25
27
 
26
28
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
29
  type TableProps<TData = any> = {
@@ -158,6 +160,7 @@ export const Table = (props: TableProps) => {
158
160
  setGridApi(api);
159
161
  onGridReady?.(event);
160
162
  }}
163
+ enableFilterHandlers
161
164
  suppressPaginationPanel
162
165
  onCellSelectionChanged={(event) => {
163
166
  if ((!disableDragSelect || !enableSimultaneousRangeAndRowSelection) && gridApi && event.finished) {
@@ -190,6 +193,8 @@ export const Table = (props: TableProps) => {
190
193
  dsInlineTextCellRenderer: InlineTextCellRenderer,
191
194
  dsSelectDropdownCellRenderer: SelectDropdownCellRenderer,
192
195
  dsSelectDropdownCellEditor: SelectDropdownCellEditor,
196
+ dsBooleanFilter: BooleanFilter,
197
+ dsTimeFilter: TimeFilter,
193
198
  ...components,
194
199
  }}
195
200
  {...rest}
@@ -0,0 +1,102 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ import { beforeEach, describe, expect, test, vi } from 'vitest';
3
+ import { render, screen } from '@testing-library/react';
4
+ import { BooleanFilter, doesBooleanFilterPass } from './BooleanFilter';
5
+ import userEvent from '@testing-library/user-event';
6
+
7
+ type BooleanFilterModel = { allowTrue: boolean; allowFalse: boolean };
8
+
9
+ const createMockParams = (model: BooleanFilterModel | null, cellValue: boolean | null) => ({
10
+ model,
11
+ node: {},
12
+ handlerParams: {
13
+ getValue: vi.fn().mockReturnValue(cellValue),
14
+ },
15
+ });
16
+
17
+ describe('BooleanFilter', () => {
18
+ beforeEach(() => {
19
+ vi.clearAllMocks();
20
+ });
21
+
22
+ const onModelChange = vi.fn();
23
+
24
+ test('renders BooleanFilter with null model (defaults to Not set)', () => {
25
+ render(<BooleanFilter model={null} onModelChange={onModelChange} />);
26
+ expect(screen.getByRole('radio', { name: 'Not set' })).toBeChecked();
27
+ });
28
+
29
+ test('renders BooleanFilter with Yes, No and Not set radio options', () => {
30
+ render(<BooleanFilter model={{ allowTrue: true, allowFalse: true }} onModelChange={onModelChange} />);
31
+ expect(screen.getByRole('radio', { name: 'Yes' })).toBeInTheDocument();
32
+ expect(screen.getByRole('radio', { name: 'No' })).toBeInTheDocument();
33
+ expect(screen.getByRole('radio', { name: 'Not set' })).toBeInTheDocument();
34
+ });
35
+
36
+ test('renders with Not set selected when model has both allowTrue and allowFalse', () => {
37
+ render(<BooleanFilter model={{ allowTrue: true, allowFalse: true }} onModelChange={onModelChange} />);
38
+ expect(screen.getByRole('radio', { name: 'Not set' })).toBeChecked();
39
+ expect(screen.getByRole('radio', { name: 'Yes' })).not.toBeChecked();
40
+ expect(screen.getByRole('radio', { name: 'No' })).not.toBeChecked();
41
+ });
42
+
43
+ test('renders with Yes selected when model has allowTrue only', () => {
44
+ render(<BooleanFilter model={{ allowTrue: true, allowFalse: false }} onModelChange={onModelChange} />);
45
+ expect(screen.getByRole('radio', { name: 'Yes' })).toBeChecked();
46
+ expect(screen.getByRole('radio', { name: 'No' })).not.toBeChecked();
47
+ expect(screen.getByRole('radio', { name: 'Not set' })).not.toBeChecked();
48
+ });
49
+
50
+ test('renders with No selected when model has allowFalse only', () => {
51
+ render(<BooleanFilter model={{ allowTrue: false, allowFalse: true }} onModelChange={onModelChange} />);
52
+ expect(screen.getByRole('radio', { name: 'No' })).toBeChecked();
53
+ expect(screen.getByRole('radio', { name: 'Yes' })).not.toBeChecked();
54
+ expect(screen.getByRole('radio', { name: 'Not set' })).not.toBeChecked();
55
+ });
56
+
57
+ test('calls onModelChange when Yes is selected', async () => {
58
+ render(<BooleanFilter model={{ allowTrue: true, allowFalse: true }} onModelChange={onModelChange} />);
59
+ await userEvent.click(screen.getByRole('radio', { name: 'Yes' }));
60
+ expect(onModelChange).toHaveBeenLastCalledWith({ allowTrue: true, allowFalse: false });
61
+ });
62
+
63
+ test('calls onModelChange when No is selected', async () => {
64
+ render(<BooleanFilter model={{ allowTrue: true, allowFalse: true }} onModelChange={onModelChange} />);
65
+ await userEvent.click(screen.getByRole('radio', { name: 'No' }));
66
+ expect(onModelChange).toHaveBeenLastCalledWith({ allowTrue: false, allowFalse: true });
67
+ });
68
+
69
+ test('calls onModelChange when Not set is selected', async () => {
70
+ render(<BooleanFilter model={{ allowTrue: true, allowFalse: false }} onModelChange={onModelChange} />);
71
+ await userEvent.click(screen.getByRole('radio', { name: 'Not set' }));
72
+ expect(onModelChange).toHaveBeenLastCalledWith({ allowTrue: true, allowFalse: true });
73
+ });
74
+ });
75
+
76
+ describe('doesBooleanFilterPass', () => {
77
+ test('returns true when model is null (show all rows)', () => {
78
+ const params = createMockParams(null, true);
79
+ expect(doesBooleanFilterPass(params as never)).toBe(true);
80
+ });
81
+
82
+ test('when cell value is true: passes if allowTrue, fails if !allowTrue', () => {
83
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: true, allowFalse: true }, true) as never)).toBe(true);
84
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: true, allowFalse: false }, true) as never)).toBe(true);
85
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: false, allowFalse: true }, true) as never)).toBe(false);
86
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: false, allowFalse: false }, true) as never)).toBe(false);
87
+ });
88
+
89
+ test('when cell value is false: passes if allowFalse, fails if !allowFalse', () => {
90
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: true, allowFalse: true }, false) as never)).toBe(true);
91
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: false, allowFalse: true }, false) as never)).toBe(true);
92
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: true, allowFalse: false }, false) as never)).toBe(false);
93
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: false, allowFalse: false }, false) as never)).toBe(false);
94
+ });
95
+
96
+ test('when cell value is null/undefined: passes only when both allowTrue and allowFalse', () => {
97
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: true, allowFalse: true }, null) as never)).toBe(true);
98
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: true, allowFalse: false }, null) as never)).toBe(false);
99
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: false, allowFalse: true }, null) as never)).toBe(false);
100
+ expect(doesBooleanFilterPass(createMockParams({ allowTrue: false, allowFalse: false }, null) as never)).toBe(false);
101
+ });
102
+ });
@@ -0,0 +1,104 @@
1
+ import type { DoesFilterPassParams } from 'ag-grid-community';
2
+ import type { ChangeEvent } from 'react';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { RadioButtonGroup } from 'Components/formField/inputs/radio/RadioButtonGroup';
5
+ import { PopupParentContext } from 'Utils/PopupParentContext';
6
+
7
+ type BooleanFilterModel = { allowTrue: boolean; allowFalse: boolean };
8
+
9
+ enum BOOLEAN_FILTER_VALUE {
10
+ YES = 'yes',
11
+ NO = 'no',
12
+ NOT_SET = 'not-set',
13
+ }
14
+
15
+ type BooleanFilterValue = BOOLEAN_FILTER_VALUE;
16
+
17
+ function modelToSelectedValue(model: BooleanFilterModel): BooleanFilterValue {
18
+ if (model.allowTrue && model.allowFalse) {
19
+ return BOOLEAN_FILTER_VALUE.NOT_SET;
20
+ }
21
+ if (model.allowTrue) {
22
+ return BOOLEAN_FILTER_VALUE.YES;
23
+ }
24
+ return BOOLEAN_FILTER_VALUE.NO;
25
+ }
26
+
27
+ function selectedValueToModel(value: BooleanFilterValue): BooleanFilterModel {
28
+ switch (value) {
29
+ case BOOLEAN_FILTER_VALUE.YES:
30
+ return { allowTrue: true, allowFalse: false };
31
+ case BOOLEAN_FILTER_VALUE.NO:
32
+ return { allowTrue: false, allowFalse: true };
33
+ case BOOLEAN_FILTER_VALUE.NOT_SET:
34
+ default:
35
+ return { allowTrue: true, allowFalse: true };
36
+ }
37
+ }
38
+
39
+ export const doesBooleanFilterPass: ({
40
+ model,
41
+ node,
42
+ handlerParams,
43
+ }: DoesFilterPassParams<BooleanFilterModel>) => boolean = ({ model, node, handlerParams }) => {
44
+ const value = handlerParams.getValue(node);
45
+ if (!model) {
46
+ return true;
47
+ }
48
+ if (value === true) {
49
+ return model.allowTrue;
50
+ }
51
+ else if (value === false) {
52
+ return model.allowFalse;
53
+ }
54
+ return model.allowTrue && model.allowFalse;
55
+ };
56
+
57
+ const DEFAULT_MODEL: BooleanFilterModel = { allowTrue: true, allowFalse: true };
58
+
59
+ type BooleanFilterProps = {
60
+ model: BooleanFilterModel | null;
61
+ onModelChange: (model: BooleanFilterModel) => void;
62
+ };
63
+
64
+ const RADIO_NAME = 'boolean-column-filter';
65
+
66
+ export const BooleanFilter = (props: BooleanFilterProps) => {
67
+ const { model, onModelChange } = props;
68
+ const safeModel = model ?? DEFAULT_MODEL;
69
+ const [selectedValue, setSelectedValue] = useState<BooleanFilterValue>(() =>
70
+ modelToSelectedValue(safeModel),
71
+ );
72
+
73
+ useEffect(() => {
74
+ setSelectedValue((prev) => {
75
+ const fromModel = modelToSelectedValue(safeModel);
76
+ return prev !== fromModel ? fromModel : prev;
77
+ });
78
+ }, [safeModel.allowTrue, safeModel.allowFalse]);
79
+
80
+ const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
81
+ const newValue = event.target.value as BooleanFilterValue;
82
+ setSelectedValue(newValue);
83
+ onModelChange(selectedValueToModel(newValue));
84
+ };
85
+
86
+ const popupParentRef = useRef<HTMLDivElement>(null);
87
+
88
+ return (
89
+ <PopupParentContext.Provider value={popupParentRef}>
90
+ <div className="ds-column-filter__container" ref={popupParentRef}>
91
+ <RadioButtonGroup
92
+ name={RADIO_NAME}
93
+ options={[
94
+ { id: `${RADIO_NAME}-${BOOLEAN_FILTER_VALUE.YES}`, value: BOOLEAN_FILTER_VALUE.YES, label: 'Yes' },
95
+ { id: `${RADIO_NAME}-${BOOLEAN_FILTER_VALUE.NO}`, value: BOOLEAN_FILTER_VALUE.NO, label: 'No' },
96
+ { id: `${RADIO_NAME}-${BOOLEAN_FILTER_VALUE.NOT_SET}`, value: BOOLEAN_FILTER_VALUE.NOT_SET, label: 'Not set' },
97
+ ]}
98
+ checkedValue={selectedValue}
99
+ onChange={handleChange}
100
+ />
101
+ </div>
102
+ </PopupParentContext.Provider>
103
+ );
104
+ };