@databiosphere/findable-ui 35.2.0 → 36.0.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 (348) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +15 -0
  3. package/lib/common/entities.d.ts +2 -3
  4. package/lib/components/DataDictionary/components/Entities/constants.d.ts +3 -1
  5. package/lib/components/DataDictionary/components/Entities/constants.js +6 -2
  6. package/lib/components/DataDictionary/components/Entities/entities.js +6 -2
  7. package/lib/components/DataDictionary/components/Entities/entities.styles.d.ts +3 -0
  8. package/lib/components/DataDictionary/components/Entities/entities.styles.js +5 -0
  9. package/lib/components/DataDictionary/components/Entity/entity.styles.js +1 -8
  10. package/lib/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.d.ts +4 -0
  11. package/lib/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.js +15 -0
  12. package/lib/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.styles.d.ts +7 -0
  13. package/lib/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.styles.js +7 -0
  14. package/lib/components/DataDictionary/components/Filters/components/ColumnFilterTags/constants.d.ts +2 -0
  15. package/lib/components/DataDictionary/components/Filters/components/ColumnFilterTags/constants.js +6 -0
  16. package/lib/components/DataDictionary/components/Filters/components/ColumnFilterTags/types.d.ts +6 -0
  17. package/lib/components/DataDictionary/components/Filters/filters.js +2 -0
  18. package/lib/components/DataDictionary/components/Filters/filters.styles.js +3 -3
  19. package/lib/components/DataDictionary/components/Filters/stories/constants.d.ts +1 -0
  20. package/lib/components/DataDictionary/components/Filters/stories/constants.js +16 -0
  21. package/lib/components/DataDictionary/components/Filters/stories/filters.stories.js +11 -3
  22. package/lib/components/DataDictionary/components/Filters/stories/hook.d.ts +4 -0
  23. package/lib/components/DataDictionary/components/Filters/stories/hook.js +4 -0
  24. package/lib/components/DataDictionary/components/Layout/components/EntitiesLayout/entitiesLayout.d.ts +2 -1
  25. package/lib/components/DataDictionary/components/Layout/components/EntitiesLayout/entitiesLayout.js +4 -4
  26. package/lib/components/DataDictionary/components/Layout/components/EntitiesLayout/entitiesLayout.styles.js +1 -4
  27. package/lib/components/DataDictionary/components/Layout/components/EntitiesLayout/types.d.ts +4 -2
  28. package/lib/components/DataDictionary/components/Layout/components/FiltersLayout/filtersLayout.d.ts +2 -1
  29. package/lib/components/DataDictionary/components/Layout/components/FiltersLayout/filtersLayout.js +4 -4
  30. package/lib/components/DataDictionary/components/Layout/components/FiltersLayout/filtersLayout.styles.js +4 -1
  31. package/lib/components/DataDictionary/components/Table/hook.d.ts +2 -2
  32. package/lib/components/DataDictionary/components/Table/hook.js +8 -4
  33. package/lib/components/DataDictionary/components/Table/options/columnFilters/constants.js +2 -1
  34. package/lib/components/DataDictionary/components/Table/options/columnFilters/hook.d.ts +2 -5
  35. package/lib/components/DataDictionary/components/Table/options/columnFilters/hook.js +8 -6
  36. package/lib/components/DataDictionary/components/Table/options/globalFilter/constants.d.ts +2 -0
  37. package/lib/components/DataDictionary/components/Table/options/globalFilter/constants.js +5 -0
  38. package/lib/components/DataDictionary/components/Table/options/globalFilter/hook.d.ts +3 -0
  39. package/lib/components/DataDictionary/components/Table/options/globalFilter/hook.js +16 -0
  40. package/lib/components/DataDictionary/components/Table/options/hook.js +7 -5
  41. package/lib/components/DataDictionary/components/Table/options/pagination/constants.d.ts +2 -0
  42. package/lib/components/DataDictionary/components/Table/options/pagination/constants.js +3 -0
  43. package/lib/components/DataDictionary/dataDictionary.d.ts +1 -1
  44. package/lib/components/DataDictionary/dataDictionary.js +31 -12
  45. package/lib/components/DataDictionary/hooks/UseDataDictionaryConfig/hook.d.ts +4 -0
  46. package/lib/components/DataDictionary/hooks/UseDataDictionaryConfig/hook.js +27 -0
  47. package/lib/components/DataDictionary/hooks/UseDataDictionaryConfig/types.d.ts +7 -0
  48. package/lib/components/DataDictionary/hooks/UseDataDictionaryConfig/types.js +1 -0
  49. package/lib/components/DataDictionary/hooks/UseDataDictionaryConfig/utils.d.ts +6 -0
  50. package/lib/components/DataDictionary/hooks/UseDataDictionaryConfig/utils.js +8 -0
  51. package/lib/components/DataDictionary/hooks/UseMeasureFilters/hook.d.ts +2 -0
  52. package/lib/components/DataDictionary/hooks/UseMeasureFilters/hook.js +17 -0
  53. package/lib/components/DataDictionary/hooks/UseMeasureFilters/types.d.ts +7 -0
  54. package/lib/components/DataDictionary/hooks/UseMeasureFilters/types.js +1 -0
  55. package/lib/components/DataDictionary/types.d.ts +1 -0
  56. package/lib/components/Filter/components/FilterCountChip/filterCountChip.d.ts +2 -0
  57. package/lib/components/Filter/components/FilterCountChip/filterCountChip.js +8 -0
  58. package/lib/components/Filter/components/FilterCountChip/filterCountChip.styles.d.ts +3 -0
  59. package/lib/components/Filter/components/FilterCountChip/filterCountChip.styles.js +18 -0
  60. package/lib/components/Filter/components/FilterCountChip/stories/filterCountChip.stories.d.ts +6 -0
  61. package/lib/components/Filter/components/FilterCountChip/stories/filterCountChip.stories.js +6 -0
  62. package/lib/components/Filter/components/FilterCountChip/types.d.ts +5 -0
  63. package/lib/components/Filter/components/FilterCountChip/types.js +1 -0
  64. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
  65. package/lib/components/Layout/components/Outline/outline.styles.d.ts +1 -1
  66. package/lib/components/Table/columnDef/globalFilter/constants.d.ts +2 -0
  67. package/lib/components/Table/columnDef/globalFilter/constants.js +4 -0
  68. package/lib/components/Table/columnDef/globalFilter/filterFn.d.ts +13 -0
  69. package/lib/components/Table/columnDef/globalFilter/filterFn.js +24 -0
  70. package/lib/components/Table/columnDef/globalFilter/types.d.ts +4 -0
  71. package/lib/components/Table/columnDef/globalFilter/types.js +1 -0
  72. package/lib/components/Table/columnDef/globalFilter/utils.d.ts +23 -0
  73. package/lib/components/Table/columnDef/globalFilter/utils.js +57 -0
  74. package/lib/components/Table/components/TableCell/components/RankedCell/rankedCell.d.ts +3 -0
  75. package/lib/components/Table/components/TableCell/components/RankedCell/rankedCell.js +25 -0
  76. package/lib/components/Table/components/TableCell/components/RankedCell/utils.d.ts +30 -0
  77. package/lib/components/Table/components/TableCell/components/RankedCell/utils.js +64 -0
  78. package/lib/components/Table/components/TableFeatures/ColumnFilter/columnFilter.js +9 -5
  79. package/lib/components/Table/components/TableFeatures/ColumnFilter/columnFilter.styles.d.ts +9 -0
  80. package/lib/components/Table/components/TableFeatures/ColumnFilter/columnFilter.styles.js +20 -1
  81. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.d.ts +3 -0
  82. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.js +9 -0
  83. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.styles.d.ts +5 -0
  84. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.styles.js +24 -0
  85. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/constants.d.ts +3 -0
  86. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/constants.js +10 -0
  87. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/stories/columFilterTag.stories.d.ts +6 -0
  88. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/stories/columFilterTag.stories.js +17 -0
  89. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/types.d.ts +6 -0
  90. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/types.js +1 -0
  91. package/lib/components/Table/components/TableFeatures/ColumnFilter/constants.d.ts +2 -1
  92. package/lib/components/Table/components/TableFeatures/ColumnFilter/constants.js +6 -0
  93. package/lib/components/Table/components/TableFeatures/ColumnFilter/types.d.ts +3 -2
  94. package/lib/components/Table/components/TableFeatures/GlobalFilter/constants.d.ts +2 -0
  95. package/lib/components/Table/components/TableFeatures/GlobalFilter/constants.js +6 -0
  96. package/lib/components/Table/components/TableFeatures/GlobalFilter/globalFilter.d.ts +3 -0
  97. package/lib/components/Table/components/TableFeatures/GlobalFilter/globalFilter.js +10 -0
  98. package/lib/components/Table/components/TableFeatures/GlobalFilter/types.d.ts +6 -0
  99. package/lib/components/Table/components/TableFeatures/GlobalFilter/types.js +1 -0
  100. package/lib/components/Table/coreOptions/state/pagination/constants.d.ts +2 -0
  101. package/lib/components/Table/coreOptions/state/pagination/constants.js +6 -0
  102. package/lib/components/Table/coreOptions/state/pagination/utils.d.ts +9 -0
  103. package/lib/components/Table/coreOptions/state/pagination/utils.js +18 -0
  104. package/lib/components/common/AnchorLink/anchorLink.js +4 -2
  105. package/lib/components/common/AnchorLink/anchorLink.styles.d.ts +1 -1
  106. package/lib/components/common/AnchorLink/anchorLink.styles.js +1 -1
  107. package/lib/components/common/CustomIcon/components/SearchIcon/searchIcon.d.ts +2 -2
  108. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.d.ts +2 -0
  109. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.js +13 -0
  110. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.styles.d.ts +5 -0
  111. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.styles.js +11 -0
  112. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/constants.d.ts +3 -0
  113. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/constants.js +10 -0
  114. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/types.d.ts +4 -0
  115. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/types.js +1 -0
  116. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/constants.d.ts +2 -0
  117. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/constants.js +5 -0
  118. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/searchInputAdornment.d.ts +1 -0
  119. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/searchInputAdornment.js +9 -0
  120. package/lib/components/common/OutlinedInput/components/InputAdornment/components/constants.d.ts +2 -0
  121. package/lib/components/common/OutlinedInput/components/InputAdornment/components/constants.js +5 -0
  122. package/lib/components/common/OutlinedInput/components/InputAdornment/inputAdornment.styles.d.ts +5 -0
  123. package/lib/components/common/OutlinedInput/components/InputAdornment/inputAdornment.styles.js +5 -0
  124. package/lib/components/common/OutlinedInput/outlinedInput.styles.d.ts +7 -0
  125. package/lib/components/common/OutlinedInput/outlinedInput.styles.js +18 -0
  126. package/lib/hooks/stateSyncManager/hooks/UseMetaCommands/hook.js +2 -2
  127. package/lib/hooks/stateSyncManager/hooks/UseStateSync/hook.js +3 -3
  128. package/lib/hooks/stateSyncManager/types.d.ts +1 -1
  129. package/lib/providers/dataDictionary/context.d.ts +2 -0
  130. package/lib/providers/dataDictionary/context.js +4 -0
  131. package/lib/providers/dataDictionary/hook.d.ts +6 -0
  132. package/lib/providers/dataDictionary/hook.js +9 -0
  133. package/lib/providers/dataDictionary/types.d.ts +3 -0
  134. package/lib/providers/dataDictionary/types.js +1 -0
  135. package/lib/providers/dataDictionaryState/actions/clearMeta/action.d.ts +9 -0
  136. package/lib/providers/dataDictionaryState/actions/clearMeta/action.js +12 -0
  137. package/lib/providers/dataDictionaryState/actions/clearMeta/dispatch.d.ts +6 -0
  138. package/lib/providers/dataDictionaryState/actions/clearMeta/dispatch.js +11 -0
  139. package/lib/providers/dataDictionaryState/actions/clearMeta/types.d.ts +6 -0
  140. package/lib/providers/dataDictionaryState/actions/clearMeta/types.js +1 -0
  141. package/lib/providers/dataDictionaryState/actions/stateToUrl/action.d.ts +9 -0
  142. package/lib/providers/dataDictionaryState/actions/stateToUrl/action.js +14 -0
  143. package/lib/providers/dataDictionaryState/actions/stateToUrl/dispatch.d.ts +7 -0
  144. package/lib/providers/dataDictionaryState/actions/stateToUrl/dispatch.js +12 -0
  145. package/lib/providers/dataDictionaryState/actions/stateToUrl/types.d.ts +12 -0
  146. package/lib/providers/dataDictionaryState/actions/stateToUrl/types.js +5 -0
  147. package/lib/providers/dataDictionaryState/actions/types.d.ts +13 -0
  148. package/lib/providers/dataDictionaryState/actions/types.js +8 -0
  149. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/action.d.ts +9 -0
  150. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/action.js +18 -0
  151. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/dispatch.d.ts +7 -0
  152. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/dispatch.js +12 -0
  153. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/types.d.ts +10 -0
  154. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/types.js +1 -0
  155. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/utils.d.ts +11 -0
  156. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/utils.js +27 -0
  157. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/action.d.ts +9 -0
  158. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/action.js +19 -0
  159. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/dispatch.d.ts +7 -0
  160. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/dispatch.js +12 -0
  161. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/types.d.ts +10 -0
  162. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/types.js +1 -0
  163. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/utils.d.ts +17 -0
  164. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/utils.js +36 -0
  165. package/lib/providers/dataDictionaryState/actions/urlToState/action.d.ts +9 -0
  166. package/lib/providers/dataDictionaryState/actions/urlToState/action.js +20 -0
  167. package/lib/providers/dataDictionaryState/actions/urlToState/dispatch.d.ts +7 -0
  168. package/lib/providers/dataDictionaryState/actions/urlToState/dispatch.js +12 -0
  169. package/lib/providers/dataDictionaryState/actions/urlToState/types.d.ts +9 -0
  170. package/lib/providers/dataDictionaryState/actions/urlToState/types.js +1 -0
  171. package/lib/providers/dataDictionaryState/context.d.ts +2 -0
  172. package/lib/providers/dataDictionaryState/context.js +6 -0
  173. package/lib/providers/dataDictionaryState/dictionaries/constants.d.ts +4 -0
  174. package/lib/providers/dataDictionaryState/dictionaries/constants.js +4 -0
  175. package/lib/providers/dataDictionaryState/dictionaries/state.d.ts +11 -0
  176. package/lib/providers/dataDictionaryState/dictionaries/state.js +29 -0
  177. package/lib/providers/dataDictionaryState/dictionaries/types.d.ts +9 -0
  178. package/lib/providers/dataDictionaryState/dictionaries/types.js +1 -0
  179. package/lib/providers/dataDictionaryState/dictionaries/utils.d.ts +14 -0
  180. package/lib/providers/dataDictionaryState/dictionaries/utils.js +20 -0
  181. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/hook.d.ts +2 -0
  182. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/hook.js +6 -0
  183. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/types.d.ts +4 -0
  184. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/types.js +1 -0
  185. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryReducer/hook.d.ts +2 -0
  186. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryReducer/hook.js +9 -0
  187. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryState/hook.d.ts +6 -0
  188. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryState/hook.js +9 -0
  189. package/lib/providers/dataDictionaryState/initializer/constants.d.ts +2 -0
  190. package/lib/providers/dataDictionaryState/initializer/constants.js +4 -0
  191. package/lib/providers/dataDictionaryState/initializer/initializer.d.ts +9 -0
  192. package/lib/providers/dataDictionaryState/initializer/initializer.js +17 -0
  193. package/lib/providers/dataDictionaryState/initializer/utils.d.ts +8 -0
  194. package/lib/providers/dataDictionaryState/initializer/utils.js +29 -0
  195. package/lib/providers/dataDictionaryState/provider.d.ts +4 -0
  196. package/lib/providers/dataDictionaryState/provider.js +7 -0
  197. package/lib/providers/dataDictionaryState/reducer.d.ts +9 -0
  198. package/lib/providers/dataDictionaryState/reducer.js +34 -0
  199. package/lib/providers/dataDictionaryState/types.d.ts +15 -0
  200. package/lib/providers/dataDictionaryState/types.js +1 -0
  201. package/lib/styles/common/mui/iconButton.d.ts +11 -0
  202. package/lib/styles/common/mui/iconButton.js +29 -0
  203. package/lib/styles/common/mui/inputAdornment.d.ts +9 -0
  204. package/lib/styles/common/mui/inputAdornment.js +13 -0
  205. package/lib/styles/common/mui/outlinedInput.d.ts +7 -0
  206. package/lib/styles/common/mui/outlinedInput.js +7 -0
  207. package/lib/theme/common/components.js +122 -16
  208. package/lib/theme/components/muiButtonGroup.js +4 -0
  209. package/lib/theme/components/muiTableCell.js +6 -0
  210. package/lib/utils/parseJsonQueryParam.d.ts +14 -0
  211. package/lib/utils/parseJsonQueryParam.js +25 -0
  212. package/lib/utils/stateToUrlQuery.d.ts +15 -0
  213. package/lib/utils/stateToUrlQuery.js +35 -0
  214. package/lib/views/DataDictionaryView/dataDictionaryView.d.ts +2 -2
  215. package/lib/views/DataDictionaryView/dataDictionaryView.js +16 -2
  216. package/lib/views/DataDictionaryView/types.d.ts +4 -0
  217. package/lib/views/DataDictionaryView/types.js +1 -0
  218. package/lib/views/DataDictionaryView/utils.d.ts +12 -0
  219. package/lib/views/DataDictionaryView/utils.js +17 -0
  220. package/lib/views/ExploreView/utils.d.ts +1 -1
  221. package/lib/views/ExploreView/utils.js +1 -1
  222. package/package.json +2 -1
  223. package/src/common/entities.ts +2 -3
  224. package/src/components/DataDictionary/components/Entities/constants.ts +9 -3
  225. package/src/components/DataDictionary/components/Entities/entities.styles.ts +6 -0
  226. package/src/components/DataDictionary/components/Entities/entities.tsx +7 -2
  227. package/src/components/DataDictionary/components/Entity/entity.styles.ts +1 -10
  228. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.styles.ts +8 -0
  229. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.tsx +33 -0
  230. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/constants.ts +8 -0
  231. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/types.ts +8 -0
  232. package/src/components/DataDictionary/components/Filters/filters.styles.ts +3 -3
  233. package/src/components/DataDictionary/components/Filters/filters.tsx +2 -0
  234. package/src/components/DataDictionary/components/Filters/stories/constants.ts +18 -0
  235. package/src/components/DataDictionary/components/Filters/stories/filters.stories.tsx +15 -3
  236. package/src/components/DataDictionary/components/Filters/stories/hook.ts +8 -0
  237. package/src/components/DataDictionary/components/Layout/components/EntitiesLayout/entitiesLayout.styles.ts +1 -5
  238. package/src/components/DataDictionary/components/Layout/components/EntitiesLayout/entitiesLayout.tsx +13 -7
  239. package/src/components/DataDictionary/components/Layout/components/EntitiesLayout/types.ts +4 -2
  240. package/src/components/DataDictionary/components/Layout/components/FiltersLayout/filtersLayout.styles.ts +4 -1
  241. package/src/components/DataDictionary/components/Layout/components/FiltersLayout/filtersLayout.tsx +13 -7
  242. package/src/components/DataDictionary/components/Table/hook.ts +10 -6
  243. package/src/components/DataDictionary/components/Table/options/columnFilters/constants.ts +2 -1
  244. package/src/components/DataDictionary/components/Table/options/columnFilters/hook.ts +13 -12
  245. package/src/components/DataDictionary/components/Table/options/globalFilter/constants.ts +14 -0
  246. package/src/components/DataDictionary/components/Table/options/globalFilter/hook.ts +28 -0
  247. package/src/components/DataDictionary/components/Table/options/hook.ts +9 -11
  248. package/src/components/DataDictionary/components/Table/options/pagination/constants.ts +6 -0
  249. package/src/components/DataDictionary/dataDictionary.tsx +45 -16
  250. package/src/components/DataDictionary/hooks/UseDataDictionaryConfig/hook.ts +38 -0
  251. package/src/components/DataDictionary/hooks/UseDataDictionaryConfig/types.ts +8 -0
  252. package/src/components/DataDictionary/hooks/UseDataDictionaryConfig/utils.ts +8 -0
  253. package/src/components/DataDictionary/hooks/UseMeasureFilters/hook.ts +27 -0
  254. package/src/components/DataDictionary/hooks/UseMeasureFilters/types.ts +6 -0
  255. package/src/components/DataDictionary/types.ts +1 -0
  256. package/src/components/Filter/components/FilterCountChip/filterCountChip.styles.ts +19 -0
  257. package/src/components/Filter/components/FilterCountChip/filterCountChip.tsx +21 -0
  258. package/src/components/Filter/components/FilterCountChip/stories/filterCountChip.stories.tsx +12 -0
  259. package/src/components/Filter/components/FilterCountChip/types.ts +6 -0
  260. package/src/components/Table/columnDef/globalFilter/constants.ts +5 -0
  261. package/src/components/Table/columnDef/globalFilter/filterFn.ts +34 -0
  262. package/src/components/Table/columnDef/globalFilter/types.ts +5 -0
  263. package/src/components/Table/columnDef/globalFilter/utils.ts +74 -0
  264. package/src/components/Table/components/TableCell/components/RankedCell/rankedCell.tsx +50 -0
  265. package/src/components/Table/components/TableCell/components/RankedCell/utils.ts +85 -0
  266. package/src/components/Table/components/TableFeatures/ColumnFilter/columnFilter.styles.ts +26 -1
  267. package/src/components/Table/components/TableFeatures/ColumnFilter/columnFilter.tsx +11 -5
  268. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.styles.ts +25 -0
  269. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.tsx +31 -0
  270. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/constants.ts +13 -0
  271. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/stories/columFilterTag.stories.tsx +26 -0
  272. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/types.ts +9 -0
  273. package/src/components/Table/components/TableFeatures/ColumnFilter/constants.ts +8 -1
  274. package/src/components/Table/components/TableFeatures/ColumnFilter/types.ts +3 -2
  275. package/src/components/Table/components/TableFeatures/GlobalFilter/constants.ts +8 -0
  276. package/src/components/Table/components/TableFeatures/GlobalFilter/globalFilter.tsx +33 -0
  277. package/src/components/Table/components/TableFeatures/GlobalFilter/types.ts +9 -0
  278. package/src/components/Table/coreOptions/state/pagination/constants.ts +8 -0
  279. package/src/components/Table/coreOptions/state/pagination/utils.ts +21 -0
  280. package/src/components/common/AnchorLink/anchorLink.styles.ts +1 -1
  281. package/src/components/common/AnchorLink/anchorLink.tsx +9 -3
  282. package/src/components/common/CustomIcon/components/SearchIcon/searchIcon.tsx +2 -3
  283. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.styles.ts +12 -0
  284. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.tsx +21 -0
  285. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/constants.ts +13 -0
  286. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/types.ts +4 -0
  287. package/src/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/constants.ts +7 -0
  288. package/src/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/searchInputAdornment.tsx +13 -0
  289. package/src/components/common/OutlinedInput/components/InputAdornment/components/constants.ts +7 -0
  290. package/src/components/common/OutlinedInput/components/InputAdornment/inputAdornment.styles.ts +6 -0
  291. package/src/components/common/OutlinedInput/outlinedInput.styles.ts +24 -0
  292. package/src/hooks/stateSyncManager/hooks/UseMetaCommands/hook.ts +2 -2
  293. package/src/hooks/stateSyncManager/hooks/UseStateSync/hook.ts +3 -3
  294. package/src/hooks/stateSyncManager/types.ts +1 -1
  295. package/src/providers/dataDictionary/context.ts +6 -0
  296. package/src/providers/dataDictionary/hook.ts +11 -0
  297. package/src/providers/dataDictionary/types.ts +6 -0
  298. package/src/providers/dataDictionaryState/actions/clearMeta/action.ts +18 -0
  299. package/src/providers/dataDictionaryState/actions/clearMeta/dispatch.ts +13 -0
  300. package/src/providers/dataDictionaryState/actions/clearMeta/types.ts +8 -0
  301. package/src/providers/dataDictionaryState/actions/stateToUrl/action.ts +20 -0
  302. package/src/providers/dataDictionaryState/actions/stateToUrl/dispatch.ts +14 -0
  303. package/src/providers/dataDictionaryState/actions/stateToUrl/types.ts +15 -0
  304. package/src/providers/dataDictionaryState/actions/types.ts +20 -0
  305. package/src/providers/dataDictionaryState/actions/updateColumnFilters/action.ts +24 -0
  306. package/src/providers/dataDictionaryState/actions/updateColumnFilters/dispatch.ts +16 -0
  307. package/src/providers/dataDictionaryState/actions/updateColumnFilters/types.ts +12 -0
  308. package/src/providers/dataDictionaryState/actions/updateColumnFilters/utils.ts +41 -0
  309. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/action.ts +25 -0
  310. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/dispatch.ts +16 -0
  311. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/types.ts +12 -0
  312. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/utils.ts +50 -0
  313. package/src/providers/dataDictionaryState/actions/urlToState/action.ts +28 -0
  314. package/src/providers/dataDictionaryState/actions/urlToState/dispatch.ts +14 -0
  315. package/src/providers/dataDictionaryState/actions/urlToState/types.ts +11 -0
  316. package/src/providers/dataDictionaryState/context.ts +9 -0
  317. package/src/providers/dataDictionaryState/dictionaries/constants.ts +4 -0
  318. package/src/providers/dataDictionaryState/dictionaries/state.ts +45 -0
  319. package/src/providers/dataDictionaryState/dictionaries/types.ts +11 -0
  320. package/src/providers/dataDictionaryState/dictionaries/utils.ts +25 -0
  321. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/hook.ts +14 -0
  322. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/types.ts +5 -0
  323. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryReducer/hook.ts +17 -0
  324. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryState/hook.ts +11 -0
  325. package/src/providers/dataDictionaryState/initializer/constants.ts +6 -0
  326. package/src/providers/dataDictionaryState/initializer/initializer.ts +22 -0
  327. package/src/providers/dataDictionaryState/initializer/utils.ts +39 -0
  328. package/src/providers/dataDictionaryState/provider.tsx +16 -0
  329. package/src/providers/dataDictionaryState/reducer.ts +42 -0
  330. package/src/providers/dataDictionaryState/types.ts +18 -0
  331. package/src/styles/common/mui/iconButton.ts +40 -0
  332. package/src/styles/common/mui/inputAdornment.ts +22 -0
  333. package/src/styles/common/mui/outlinedInput.ts +14 -0
  334. package/src/theme/common/components.ts +122 -16
  335. package/src/theme/components/muiButtonGroup.ts +4 -0
  336. package/src/theme/components/muiTableCell.ts +6 -0
  337. package/src/utils/parseJsonQueryParam.ts +27 -0
  338. package/src/utils/stateToUrlQuery.ts +40 -0
  339. package/src/views/DataDictionaryView/dataDictionaryView.tsx +29 -3
  340. package/src/views/DataDictionaryView/types.ts +5 -0
  341. package/src/views/DataDictionaryView/utils.ts +23 -0
  342. package/src/views/ExploreView/utils.ts +1 -1
  343. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.d.ts +0 -4
  344. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.js +0 -36
  345. package/lib/components/DataDictionary/hooks/UseDataDictionary/types.d.ts +0 -8
  346. package/src/components/DataDictionary/hooks/UseDataDictionary/hook.ts +0 -51
  347. package/src/components/DataDictionary/hooks/UseDataDictionary/types.ts +0 -9
  348. /package/lib/components/DataDictionary/{hooks/UseDataDictionary → components/Filters/components/ColumnFilterTags}/types.js +0 -0
@@ -0,0 +1,21 @@
1
+ import { InitialTableState, PaginationTableState } from "@tanstack/react-table";
2
+ import { PAGINATION_TABLE_STATE } from "./constants";
3
+
4
+ /**
5
+ * Initializes pagination state by merging default values with initial state.
6
+ * TanStack Table always applies a default pagination of `{ pageIndex: 0, pageSize: 10 }`,
7
+ * so this function ensures custom pagination state is properly initialized from the initial state.
8
+ * @param initialState - The initial state.
9
+ * @returns The initialized pagination state.
10
+ */
11
+ export function initPaginationState(
12
+ initialState?: InitialTableState
13
+ ): PaginationTableState {
14
+ if (!initialState?.pagination) return PAGINATION_TABLE_STATE;
15
+ return {
16
+ pagination: {
17
+ ...PAGINATION_TABLE_STATE.pagination,
18
+ ...initialState.pagination,
19
+ },
20
+ };
21
+ }
@@ -2,7 +2,7 @@ import styled from "@emotion/styled";
2
2
  import Link from "next/link";
3
3
  import { inkLight } from "../../../styles/common/mixins/colors";
4
4
 
5
- export const AnchorLink = styled(Link)`
5
+ export const StyledNextLink = styled(Link)`
6
6
  color: ${inkLight};
7
7
  margin-left: 4px;
8
8
  opacity: 0;
@@ -1,6 +1,7 @@
1
1
  import { LinkRounded } from "@mui/icons-material";
2
+ import { useRouter } from "next/router";
2
3
  import React from "react";
3
- import { AnchorLink as Link } from "./anchorLink.styles";
4
+ import { StyledNextLink } from "./anchorLink.styles";
4
5
 
5
6
  /**
6
7
  * An anchor link component that provides deep linking functionality.
@@ -18,9 +19,14 @@ export const AnchorLink = ({
18
19
  anchorLink,
19
20
  className,
20
21
  }: AnchorLinkProps): JSX.Element => {
22
+ const { query } = useRouter();
21
23
  return (
22
- <Link aria-label={anchorLink} className={className} href={`#${anchorLink}`}>
24
+ <StyledNextLink
25
+ aria-label={anchorLink}
26
+ className={className}
27
+ href={{ hash: anchorLink, query }}
28
+ >
23
29
  <LinkRounded fontSize="xsmall" />
24
- </Link>
30
+ </StyledNextLink>
25
31
  );
26
32
  };
@@ -1,6 +1,5 @@
1
- import { SvgIcon } from "@mui/material";
1
+ import { SvgIcon, SvgIconProps } from "@mui/material";
2
2
  import React from "react";
3
- import { CustomSVGIconProps } from "../../common/entities";
4
3
 
5
4
  /**
6
5
  * Custom search icon.
@@ -10,7 +9,7 @@ export const SearchIcon = ({
10
9
  fontSize = "xsmall",
11
10
  viewBox = "0 0 20 20",
12
11
  ...props /* Spread props to allow for Mui SvgIconProps specific prop overrides e.g. "htmlColor". */
13
- }: CustomSVGIconProps): JSX.Element => {
12
+ }: SvgIconProps): JSX.Element => {
14
13
  return (
15
14
  <SvgIcon fontSize={fontSize} viewBox={viewBox} {...props}>
16
15
  <path
@@ -0,0 +1,12 @@
1
+ import styled from "@emotion/styled";
2
+ import { InputAdornment } from "@mui/material";
3
+ import { PALETTE } from "../../../../../../../styles/common/constants/palette";
4
+
5
+ export const StyledInputAdornment = styled(InputAdornment)`
6
+ color: ${PALETTE.INK_LIGHT};
7
+ margin: 0;
8
+
9
+ .MuiIconButton-root {
10
+ margin-right: -10px;
11
+ }
12
+ `;
@@ -0,0 +1,21 @@
1
+ import { CloseRounded } from "@mui/icons-material";
2
+ import { IconButton } from "@mui/material";
3
+ import React from "react";
4
+ import { SVG_ICON_PROPS } from "../constants";
5
+ import { StyledInputAdornment } from "./clearInputAdornment.styles";
6
+ import { ICON_BUTTON_PROPS, INPUT_ADORNMENT_PROPS } from "./constants";
7
+ import { ClearInputAdornmentProps } from "./types";
8
+
9
+ export const ClearInputAdornment = ({
10
+ in: isIn,
11
+ onClick,
12
+ }: ClearInputAdornmentProps): JSX.Element | null => {
13
+ if (!isIn) return null;
14
+ return (
15
+ <StyledInputAdornment {...INPUT_ADORNMENT_PROPS}>
16
+ <IconButton {...ICON_BUTTON_PROPS} onClick={onClick}>
17
+ <CloseRounded {...SVG_ICON_PROPS} />
18
+ </IconButton>
19
+ </StyledInputAdornment>
20
+ );
21
+ };
@@ -0,0 +1,13 @@
1
+ import { IconButtonProps, InputAdornmentProps } from "@mui/material";
2
+ import { ICON_BUTTON_PROPS as MUI_ICON_BUTTON_PROPS } from "../../../../../../../styles/common/mui/iconButton";
3
+ import { INPUT_ADORNMENT_PROPS as MUI_INPUT_ADORNMENT_PROPS } from "../../../../../../../styles/common/mui/inputAdornment";
4
+
5
+ export const ICON_BUTTON_PROPS: IconButtonProps = {
6
+ color: MUI_ICON_BUTTON_PROPS.COLOR.INHERIT,
7
+ edge: MUI_ICON_BUTTON_PROPS.EDGE.END,
8
+ size: MUI_ICON_BUTTON_PROPS.SIZE.MEDIUM,
9
+ };
10
+
11
+ export const INPUT_ADORNMENT_PROPS: InputAdornmentProps = {
12
+ position: MUI_INPUT_ADORNMENT_PROPS.POSITION.END,
13
+ };
@@ -0,0 +1,4 @@
1
+ export interface ClearInputAdornmentProps {
2
+ in?: boolean;
3
+ onClick: () => void;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { InputAdornmentProps } from "@mui/material";
2
+ import { INPUT_ADORNMENT_PROPS as MUI_INPUT_ADORNMENT_PROPS } from "../../../../../../../styles/common/mui/inputAdornment";
3
+
4
+ export const INPUT_ADORNMENT_PROPS: InputAdornmentProps = {
5
+ disablePointerEvents: true,
6
+ position: MUI_INPUT_ADORNMENT_PROPS.POSITION.START,
7
+ };
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { SearchIcon } from "../../../../../CustomIcon/components/SearchIcon/searchIcon";
3
+ import { StyledInputAdornment } from "../../inputAdornment.styles";
4
+ import { SVG_ICON_PROPS } from "../constants";
5
+ import { INPUT_ADORNMENT_PROPS } from "./constants";
6
+
7
+ export const SearchInputAdornment = (): JSX.Element => {
8
+ return (
9
+ <StyledInputAdornment {...INPUT_ADORNMENT_PROPS}>
10
+ <SearchIcon {...SVG_ICON_PROPS} />
11
+ </StyledInputAdornment>
12
+ );
13
+ };
@@ -0,0 +1,7 @@
1
+ import { SvgIconProps } from "@mui/material";
2
+ import { SVG_ICON_PROPS as MUI_SVG_ICON_PROPS } from "../../../../../../styles/common/mui/svgIcon";
3
+
4
+ export const SVG_ICON_PROPS: SvgIconProps = {
5
+ color: MUI_SVG_ICON_PROPS.COLOR.INHERIT,
6
+ fontSize: MUI_SVG_ICON_PROPS.FONT_SIZE.SMALL,
7
+ };
@@ -0,0 +1,6 @@
1
+ import styled from "@emotion/styled";
2
+ import { InputAdornment } from "@mui/material";
3
+
4
+ export const StyledInputAdornment = styled(InputAdornment)`
5
+ color: inherit;
6
+ `;
@@ -0,0 +1,24 @@
1
+ import { css } from "@emotion/react";
2
+ import styled from "@emotion/styled";
3
+ import { OutlinedInput } from "@mui/material";
4
+ import { PALETTE } from "../../../styles/common/constants/palette";
5
+
6
+ interface Props {
7
+ hasValue: boolean;
8
+ }
9
+
10
+ export const StyledOutlinedInput = styled(OutlinedInput, {
11
+ shouldForwardProp: (prop) => prop !== "hasValue",
12
+ })<Props>`
13
+ ${({ hasValue }) =>
14
+ hasValue &&
15
+ css`
16
+ & {
17
+ color: ${PALETTE.INK_MAIN};
18
+
19
+ .MuiOutlinedInput-input {
20
+ color: inherit;
21
+ }
22
+ }
23
+ `};
24
+ `;
@@ -17,11 +17,11 @@ export const useMetaCommands = <Action>({
17
17
  switch (command) {
18
18
  case META_COMMAND.STATE_TO_URL_PUSH:
19
19
  Router.push({ query }, undefined, { shallow: true });
20
- dispatch(actions.clearMeta());
20
+ dispatch?.(actions.clearMeta());
21
21
  break;
22
22
  case META_COMMAND.STATE_TO_URL_REPLACE:
23
23
  Router.replace({ query }, undefined, { shallow: true });
24
- dispatch(actions.clearMeta());
24
+ dispatch?.(actions.clearMeta());
25
25
  break;
26
26
  default:
27
27
  break;
@@ -33,7 +33,7 @@ export const useStateSync = <Action>({
33
33
  // Dispatch action sync URL >> state.
34
34
  if (wasPop(basePath, pathname, popRef.current)) {
35
35
  // When the user navigates with the back/forward buttons.
36
- dispatch(actions.urlToState({ query }));
36
+ dispatch?.(actions.urlToState({ query }));
37
37
  onClearPopRef();
38
38
  return;
39
39
  }
@@ -41,12 +41,12 @@ export const useStateSync = <Action>({
41
41
  // Dispatch action sync URL >> state.
42
42
  if (hasParams(query, paramKeys)) {
43
43
  // When the URL has parameters.
44
- dispatch(actions.urlToState({ query }));
44
+ dispatch?.(actions.urlToState({ query }));
45
45
  return;
46
46
  }
47
47
 
48
48
  // Otherwise, dispatch action sync URL << state.
49
- dispatch(actions.stateToUrl({ method: ROUTER_METHOD.REPLACE }));
49
+ dispatch?.(actions.stateToUrl({ method: ROUTER_METHOD.REPLACE }));
50
50
  // eslint-disable-next-line react-hooks/exhaustive-deps -- deliberate omission of `state.query`, `state.paramKeys`, `actions` and `dispatch` from dependencies, hook is only expected to run when the Next.js router changes.
51
51
  }, [basePath, isReady, pathname, query]);
52
52
  };
@@ -29,6 +29,6 @@ export interface StateSyncManagerContext {
29
29
 
30
30
  export interface UseStateSyncManagerProps<Action> {
31
31
  actions: StateSyncManagerActions<Action>;
32
- dispatch: Dispatch<Action>;
32
+ dispatch: Dispatch<Action> | null;
33
33
  state: StateSyncManagerContext;
34
34
  }
@@ -0,0 +1,6 @@
1
+ import { createContext } from "react";
2
+ import { DataDictionaryContextProps } from "./types";
3
+
4
+ export const DataDictionaryContext = createContext<DataDictionaryContextProps>({
5
+ dictionary: "",
6
+ });
@@ -0,0 +1,11 @@
1
+ import { useContext } from "react";
2
+ import { DataDictionaryContext } from "./context";
3
+ import { DataDictionaryContextProps } from "./types";
4
+
5
+ /**
6
+ * Returns data dictionary context.
7
+ * @returns data dictionary context.
8
+ */
9
+ export const useDataDictionary = (): DataDictionaryContextProps => {
10
+ return useContext(DataDictionaryContext);
11
+ };
@@ -0,0 +1,6 @@
1
+ export interface DataDictionaryContextProps {
2
+ // Dictionary key; used to identify the dictionary currently rendered.
3
+ // Propagates the dictionary key to child components via context without
4
+ // having to pass it explicitly with props.
5
+ dictionary: string;
6
+ }
@@ -0,0 +1,18 @@
1
+ import { DataDictionaryState } from "../../types";
2
+ import { ClearMetaPayload } from "./types";
3
+
4
+ /**
5
+ * Reducer function to handle the "clear meta" action.
6
+ * @param state - Data Dictionary State.
7
+ * @param payload - Payload.
8
+ * @returns data dictionary state.
9
+ */
10
+ export function clearMetaAction(
11
+ state: DataDictionaryState,
12
+ payload: ClearMetaPayload
13
+ ): DataDictionaryState {
14
+ return {
15
+ ...state,
16
+ meta: payload,
17
+ };
18
+ }
@@ -0,0 +1,13 @@
1
+ import { DataDictionaryActionKind } from "../types";
2
+ import { ClearMetaAction } from "./types";
3
+
4
+ /**
5
+ * Action creator for clearing meta in the state.
6
+ * @returns Action with payload and action type.
7
+ */
8
+ export function clearMeta(): ClearMetaAction {
9
+ return {
10
+ payload: null,
11
+ type: DataDictionaryActionKind.ClearMeta,
12
+ };
13
+ }
@@ -0,0 +1,8 @@
1
+ import { DataDictionaryActionKind } from "../types";
2
+
3
+ export type ClearMetaAction = {
4
+ payload: ClearMetaPayload;
5
+ type: DataDictionaryActionKind.ClearMeta;
6
+ };
7
+
8
+ export type ClearMetaPayload = null;
@@ -0,0 +1,20 @@
1
+ import { META_COMMAND } from "../../../../hooks/stateSyncManager/hooks/UseMetaCommands/types";
2
+ import { DataDictionaryState } from "../../types";
3
+ import { ROUTER_METHOD, StateToUrlPayload } from "./types";
4
+
5
+ /**
6
+ * Reducer function to handle the "state >> URL sync" action.
7
+ * @param state - State.
8
+ * @param payload - Payload.
9
+ * @returns state.
10
+ */
11
+ export function stateToUrlAction(
12
+ state: DataDictionaryState,
13
+ payload: StateToUrlPayload
14
+ ): DataDictionaryState {
15
+ const command =
16
+ payload.method === ROUTER_METHOD.PUSH
17
+ ? META_COMMAND.STATE_TO_URL_PUSH
18
+ : META_COMMAND.STATE_TO_URL_REPLACE;
19
+ return { ...state, meta: { command } };
20
+ }
@@ -0,0 +1,14 @@
1
+ import { DataDictionaryActionKind } from "../types";
2
+ import { StateToUrlAction, StateToUrlPayload } from "./types";
3
+
4
+ /**
5
+ * Action creator for state >> URL sync.
6
+ * @param payload - Payload.
7
+ * @returns Action with payload and action type.
8
+ */
9
+ export function stateToUrl(payload: StateToUrlPayload): StateToUrlAction {
10
+ return {
11
+ payload,
12
+ type: DataDictionaryActionKind.StateToUrl,
13
+ };
14
+ }
@@ -0,0 +1,15 @@
1
+ import { DataDictionaryActionKind } from "../types";
2
+
3
+ export enum ROUTER_METHOD {
4
+ PUSH = "push",
5
+ REPLACE = "replace",
6
+ }
7
+
8
+ export type StateToUrlAction = {
9
+ payload: StateToUrlPayload;
10
+ type: DataDictionaryActionKind.StateToUrl;
11
+ };
12
+
13
+ export type StateToUrlPayload = {
14
+ method: ROUTER_METHOD;
15
+ };
@@ -0,0 +1,20 @@
1
+ import { ClearMetaAction } from "./clearMeta/types";
2
+ import { StateToUrlAction } from "./stateToUrl/types";
3
+ import { UpdateColumnFiltersAction } from "./updateColumnFilters/types";
4
+ import { UpdateGlobalFilterAction } from "./updateGlobalFilter/types";
5
+ import { UrlToStateAction } from "./urlToState/types";
6
+
7
+ export type DataDictionaryAction =
8
+ | ClearMetaAction
9
+ | StateToUrlAction
10
+ | UpdateColumnFiltersAction
11
+ | UpdateGlobalFilterAction
12
+ | UrlToStateAction;
13
+
14
+ export enum DataDictionaryActionKind {
15
+ ClearMeta = "CLEAR_META",
16
+ StateToUrl = "STATE_TO_URL",
17
+ UpdateColumnFilters = "UPDATE_COLUMN_FILTERS",
18
+ UpdateGlobalFilter = "UPDATE_GLOBAL_FILTER",
19
+ UrlToState = "URL_TO_STATE",
20
+ }
@@ -0,0 +1,24 @@
1
+ import { META_COMMAND } from "../../../../hooks/stateSyncManager/hooks/UseMetaCommands/types";
2
+ import { buildNextDictionaries } from "../../dictionaries/state";
3
+ import { DataDictionaryState } from "../../types";
4
+ import { UpdateColumnFiltersPayload } from "./types";
5
+ import { buildNextColumnFilters } from "./utils";
6
+
7
+ /**
8
+ * Reducer function to handle the "update column filters" action.
9
+ * @param state - Data dictionary state.
10
+ * @param payload - Payload.
11
+ * @returns data dictionary state.
12
+ */
13
+ export function updateColumnFiltersAction(
14
+ state: DataDictionaryState,
15
+ payload: UpdateColumnFiltersPayload
16
+ ): DataDictionaryState {
17
+ return {
18
+ ...state,
19
+ dictionaries: buildNextDictionaries(state, payload.dictionary, {
20
+ columnFilters: buildNextColumnFilters(state, payload),
21
+ }),
22
+ meta: { command: META_COMMAND.STATE_TO_URL_PUSH },
23
+ };
24
+ }
@@ -0,0 +1,16 @@
1
+ import { DataDictionaryActionKind } from "../types";
2
+ import { UpdateColumnFiltersAction, UpdateColumnFiltersPayload } from "./types";
3
+
4
+ /**
5
+ * Action creator for updating column filters in the state.
6
+ * @param payload - Payload.
7
+ * @returns Action with payload and action type.
8
+ */
9
+ export function updateColumnFilters(
10
+ payload: UpdateColumnFiltersPayload
11
+ ): UpdateColumnFiltersAction {
12
+ return {
13
+ payload,
14
+ type: DataDictionaryActionKind.UpdateColumnFilters,
15
+ };
16
+ }
@@ -0,0 +1,12 @@
1
+ import { ColumnFiltersState, Updater } from "@tanstack/react-table";
2
+ import { DataDictionaryActionKind } from "../types";
3
+
4
+ export type UpdateColumnFiltersAction = {
5
+ payload: UpdateColumnFiltersPayload;
6
+ type: DataDictionaryActionKind.UpdateColumnFilters;
7
+ };
8
+
9
+ export interface UpdateColumnFiltersPayload {
10
+ dictionary: string;
11
+ updaterOrValue: Updater<ColumnFiltersState>;
12
+ }
@@ -0,0 +1,41 @@
1
+ import { ColumnFiltersState, functionalUpdate } from "@tanstack/react-table";
2
+ import { DataDictionaryState } from "../../types";
3
+ import { UpdateColumnFiltersPayload } from "./types";
4
+
5
+ /**
6
+ * Builds the next column filters state for the current dictionary.
7
+ * Uses TanStack updater to update the column filters state.
8
+ * @param state - State.
9
+ * @param payload - Payload.
10
+ * @returns column filters state.
11
+ */
12
+ export function buildNextColumnFilters(
13
+ state: DataDictionaryState,
14
+ payload: UpdateColumnFiltersPayload
15
+ ): ColumnFiltersState {
16
+ return functionalUpdate(
17
+ payload.updaterOrValue,
18
+ getOldColumnFilters(state, payload)
19
+ );
20
+ }
21
+
22
+ /**
23
+ * Retrieves the current "old" column filters state.
24
+ * @param state - State.
25
+ * @param payload - Payload.
26
+ * @returns old column filters state.
27
+ */
28
+ function getOldColumnFilters(
29
+ state: DataDictionaryState,
30
+ payload: UpdateColumnFiltersPayload
31
+ ): ColumnFiltersState {
32
+ // Grab the dictionary.
33
+ const dictionary = state.dictionaries[payload.dictionary];
34
+
35
+ // If the dictionary is not found, return an empty array.
36
+ if (!dictionary) return [];
37
+
38
+ // Grab column filters from dictionary state.
39
+ const { columnFilters = [] } = dictionary.state;
40
+ return columnFilters;
41
+ }
@@ -0,0 +1,25 @@
1
+ import { buildNextDictionaries } from "../../dictionaries/state";
2
+ import { DataDictionaryState } from "../../types";
3
+ import { UpdateGlobalFilterPayload } from "./types";
4
+ import { buildNextGlobalFilter, buildNextMeta } from "./utils";
5
+
6
+ /**
7
+ * Reducer function to handle the "update global filter" action.
8
+ * @param state - State.
9
+ * @param payload - Payload.
10
+ * @returns state.
11
+ */
12
+ export function updateGlobalFilterAction(
13
+ state: DataDictionaryState,
14
+ payload: UpdateGlobalFilterPayload
15
+ ): DataDictionaryState {
16
+ const globalFilter = buildNextGlobalFilter(payload);
17
+ const meta = buildNextMeta(state, payload, globalFilter);
18
+ return {
19
+ ...state,
20
+ dictionaries: buildNextDictionaries(state, payload.dictionary, {
21
+ globalFilter,
22
+ }),
23
+ meta,
24
+ };
25
+ }
@@ -0,0 +1,16 @@
1
+ import { DataDictionaryActionKind } from "../types";
2
+ import { UpdateGlobalFilterAction, UpdateGlobalFilterPayload } from "./types";
3
+
4
+ /**
5
+ * Action creator for updating global filter in the state.
6
+ * @param payload - Payload.
7
+ * @returns Action with payload and action type.
8
+ */
9
+ export function updateGlobalFilter(
10
+ payload: UpdateGlobalFilterPayload
11
+ ): UpdateGlobalFilterAction {
12
+ return {
13
+ payload,
14
+ type: DataDictionaryActionKind.UpdateGlobalFilter,
15
+ };
16
+ }
@@ -0,0 +1,12 @@
1
+ import { Updater } from "@tanstack/react-table";
2
+ import { DataDictionaryActionKind } from "../types";
3
+
4
+ export type UpdateGlobalFilterAction = {
5
+ payload: UpdateGlobalFilterPayload;
6
+ type: DataDictionaryActionKind.UpdateGlobalFilter;
7
+ };
8
+
9
+ export interface UpdateGlobalFilterPayload {
10
+ dictionary: string;
11
+ updaterOrValue: Updater<string | undefined>;
12
+ }
@@ -0,0 +1,50 @@
1
+ import { functionalUpdate } from "@tanstack/react-table";
2
+ import { META_COMMAND } from "../../../../hooks/stateSyncManager/hooks/UseMetaCommands/types";
3
+ import { DataDictionaryState } from "../../types";
4
+ import { UpdateGlobalFilterPayload } from "./types";
5
+
6
+ /**
7
+ * Builds the next global filter state for the current dictionary.
8
+ * Uses TanStack updater to update the global filter state.
9
+ * @param payload - Payload.
10
+ * @returns global filter state.
11
+ */
12
+ export function buildNextGlobalFilter(
13
+ payload: UpdateGlobalFilterPayload
14
+ ): string | undefined {
15
+ return functionalUpdate(payload.updaterOrValue, undefined) || undefined;
16
+ }
17
+
18
+ /**
19
+ * Builds the next meta state for the current dictionary.
20
+ * @param state - State.
21
+ * @param payload - Payload.
22
+ * @param nextGlobalFilter - Next global filter.
23
+ * @returns meta state.
24
+ */
25
+ export function buildNextMeta(
26
+ state: DataDictionaryState,
27
+ payload: UpdateGlobalFilterPayload,
28
+ nextGlobalFilter: string | undefined
29
+ ): DataDictionaryState["meta"] {
30
+ const currentGlobalFilter = getCurrentGlobalFilter(state, payload);
31
+ // Use PUSH method with adding or removing the global filter.
32
+ if (currentGlobalFilter === undefined || nextGlobalFilter === undefined) {
33
+ return { command: META_COMMAND.STATE_TO_URL_PUSH };
34
+ }
35
+ // Use REPLACE method with edits to the global filter.
36
+ return { command: META_COMMAND.STATE_TO_URL_REPLACE };
37
+ }
38
+
39
+ /**
40
+ * Returns the current global filter for the current dictionary.
41
+ * @param state - State.
42
+ * @param payload - Payload.
43
+ * @returns global filter.
44
+ */
45
+ function getCurrentGlobalFilter(
46
+ state: DataDictionaryState,
47
+ payload: UpdateGlobalFilterPayload
48
+ ): string | undefined {
49
+ return state.dictionaries[payload.dictionary].state.globalFilter;
50
+ }
@@ -0,0 +1,28 @@
1
+ import { parseJsonQueryParam } from "../../../../utils/parseJsonQueryParam";
2
+ import { DATA_DICTIONARY_URL_PARAMS } from "../../dictionaries/constants";
3
+ import { buildNextDictionaries } from "../../dictionaries/state";
4
+ import { DataDictionaryState } from "../../types";
5
+ import { UrlToStatePayload } from "./types";
6
+
7
+ /**
8
+ * Reducer function to handle the "URL >> state sync" action.
9
+ * @param state - State.
10
+ * @param payload - Payload.
11
+ * @returns state.
12
+ */
13
+ export function urlToStateAction(
14
+ state: DataDictionaryState,
15
+ payload: UrlToStatePayload
16
+ ): DataDictionaryState {
17
+ if (typeof payload.query.dictionary !== "string") return state;
18
+ return {
19
+ ...state,
20
+ dictionaries: buildNextDictionaries(state, payload.query.dictionary, {
21
+ columnFilters: parseJsonQueryParam(
22
+ payload.query[DATA_DICTIONARY_URL_PARAMS.COLUMN_FILTERS],
23
+ []
24
+ ),
25
+ globalFilter: payload.query[DATA_DICTIONARY_URL_PARAMS.GLOBAL_FILTER],
26
+ }),
27
+ };
28
+ }
@@ -0,0 +1,14 @@
1
+ import { DataDictionaryActionKind } from "../types";
2
+ import { UrlToStateAction, UrlToStatePayload } from "./types";
3
+
4
+ /**
5
+ * Action creator for URL >> state sync.
6
+ * @param payload - Payload.
7
+ * @returns Action with payload and action type.
8
+ */
9
+ export function urlToState(payload: UrlToStatePayload): UrlToStateAction {
10
+ return {
11
+ payload,
12
+ type: DataDictionaryActionKind.UrlToState,
13
+ };
14
+ }