@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,27 @@
1
+ import { useRef } from "react";
2
+ import {
3
+ getBorderBoxSizeHeight,
4
+ useResizeObserver,
5
+ } from "../../../../hooks/useResizeObserver";
6
+ import { useLayoutDimensions } from "../../../../providers/layoutDimensions/hook";
7
+ import { UseMeasureFilters } from "./types";
8
+
9
+ export const useMeasureFilters = (): UseMeasureFilters => {
10
+ // Get header dimensions.
11
+ const { dimensions } = useLayoutDimensions();
12
+ const { header } = dimensions;
13
+
14
+ // Measure filters dimensions.
15
+ const filtersRef = useRef<HTMLElement>(null);
16
+ const filtersRect = useResizeObserver(
17
+ filtersRef,
18
+ getBorderBoxSizeHeight,
19
+ header.height > 0 // Only measure filters height, when header measurement is available.
20
+ );
21
+ const { height = 0 } = filtersRect || {};
22
+
23
+ return {
24
+ dimensions: { height },
25
+ filtersRef,
26
+ };
27
+ };
@@ -0,0 +1,6 @@
1
+ import { RefObject } from "react";
2
+
3
+ export interface UseMeasureFilters {
4
+ dimensions: { height: number };
5
+ filtersRef: RefObject<HTMLElement> | null;
6
+ }
@@ -2,6 +2,7 @@ import { ElementType } from "react";
2
2
  import { BaseComponentProps } from "../types";
3
3
 
4
4
  export interface DataDictionaryProps extends BaseComponentProps {
5
+ dictionary: string;
5
6
  EntitiesLayout?: ElementType;
6
7
  FiltersLayout?: ElementType;
7
8
  Outline?: ElementType;
@@ -0,0 +1,19 @@
1
+ import { Chip, styled } from "@mui/material";
2
+
3
+ export const StyledChip = styled(Chip)`
4
+ align-items: center;
5
+ border-radius: 10px;
6
+ flex: none;
7
+ gap: 0;
8
+ height: 16px;
9
+ justify-content: center;
10
+ min-width: 16px;
11
+ padding: 0 4px;
12
+
13
+ .MuiChip-label {
14
+ font-size: 9px;
15
+ font-weight: 600;
16
+ line-height: 16px;
17
+ padding: 0;
18
+ }
19
+ `;
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import { CHIP_PROPS } from "../../../../styles/common/mui/chip";
3
+ import { StyledChip } from "./filterCountChip.styles";
4
+ import { FilterCountChipProps } from "./types";
5
+
6
+ export const FilterCountChip = ({
7
+ className,
8
+ count,
9
+ ...props /* MuiChipProps */
10
+ }: FilterCountChipProps): JSX.Element | null => {
11
+ if (!count) return null;
12
+ return (
13
+ <StyledChip
14
+ className={className}
15
+ color={CHIP_PROPS.COLOR.PRIMARY}
16
+ label={String(count)}
17
+ variant={CHIP_PROPS.VARIANT.FILLED}
18
+ {...props}
19
+ />
20
+ );
21
+ };
@@ -0,0 +1,12 @@
1
+ import { Meta, StoryObj } from "@storybook/react";
2
+ import { FilterCountChip } from "../filterCountChip";
3
+
4
+ const meta: Meta<typeof FilterCountChip> = {
5
+ component: FilterCountChip,
6
+ };
7
+
8
+ export default meta;
9
+
10
+ type Story = StoryObj<typeof meta>;
11
+
12
+ export const DEFAULT: Story = { args: { count: 1, onDelete: undefined } };
@@ -0,0 +1,6 @@
1
+ import { ChipProps } from "@mui/material";
2
+ import { BaseComponentProps } from "../../../types";
3
+
4
+ export interface FilterCountChipProps extends BaseComponentProps, ChipProps {
5
+ count?: number | string;
6
+ }
@@ -0,0 +1,5 @@
1
+ import { rankings, RankItemOptions } from "@tanstack/match-sorter-utils";
2
+
3
+ export const RANK_ITEM_OPTIONS: RankItemOptions = {
4
+ threshold: rankings.CONTAINS,
5
+ };
@@ -0,0 +1,34 @@
1
+ import { FilterMeta, Row, RowData } from "@tanstack/react-table";
2
+ import { parseSearchTerms, rankColumnValue, rankRowColumns } from "./utils";
3
+
4
+ /**
5
+ * Fuzzy matches a column against search terms.
6
+ * A true value is returned if the column's value passes the ranking threshold.
7
+ * Normally, TanStack global filtering will not process remaining row columns if a match is found.
8
+ * This function ranks other row columns for highlighting purposes.
9
+ * @param row - Row.
10
+ * @param columnId - Column identifier.
11
+ * @param value - Search term.
12
+ * @param addMeta - Function to add filter metadata.
13
+ * @returns Whether the row passed the filter.
14
+ */
15
+ export function fuzzy<T extends RowData>(
16
+ row: Row<T>,
17
+ columnId: string,
18
+ value: unknown,
19
+ addMeta: (meta: FilterMeta) => void
20
+ ): boolean {
21
+ // Split the search term into terms.
22
+ const terms = parseSearchTerms(value);
23
+
24
+ // Rank the column value.
25
+ const passed = rankColumnValue(row, columnId, terms);
26
+
27
+ // Add the filter metadata.
28
+ addMeta({ passed });
29
+
30
+ // Rank other columns for highlighting purposes (TanStack global filtering will not process remaining columns if a match is found).
31
+ if (passed) rankRowColumns(row, columnId, terms);
32
+
33
+ return passed;
34
+ }
@@ -0,0 +1,5 @@
1
+ import { FilterMeta } from "@tanstack/react-table";
2
+
3
+ export interface ColumnFilterMeta extends FilterMeta {
4
+ passed?: boolean;
5
+ }
@@ -0,0 +1,74 @@
1
+ import { rankItem } from "@tanstack/match-sorter-utils";
2
+ import { Row, RowData } from "@tanstack/react-table";
3
+ import { RANK_ITEM_OPTIONS } from "./constants";
4
+
5
+ /**
6
+ * Parses a search term into an array of terms.
7
+ * @param value - Search term.
8
+ * @returns Array of terms.
9
+ */
10
+ export function parseSearchTerms(value: unknown): string[] {
11
+ return String(value ?? "")
12
+ .toLowerCase()
13
+ .trim()
14
+ .split(/\s+/)
15
+ .filter(Boolean);
16
+ }
17
+
18
+ /**
19
+ * Ranks a column's value against search terms.
20
+ * @param row - Row to rank.
21
+ * @param columnId - Column identifier.
22
+ * @param terms - Search terms to match against.
23
+ * @returns Whether the value passed.
24
+ */
25
+ export function rankColumnValue<T extends RowData>(
26
+ row: Row<T>,
27
+ columnId: string,
28
+ terms: string[]
29
+ ): boolean {
30
+ // Get the column value.
31
+ const columnValue = row.getValue(columnId);
32
+
33
+ // Return false if the column value is undefined or null.
34
+ if (columnValue === undefined || columnValue === null) return false;
35
+
36
+ // Check if each term matches the column value.
37
+ // Ranking from CASE_SENSITIVE_EQUAL to CONTAINS (excludes `ACRONYM`, `MATCHES` threshold).
38
+ const rankings = terms.map((term) =>
39
+ rankItem(String(columnValue), term, RANK_ITEM_OPTIONS)
40
+ );
41
+
42
+ return rankings.every(({ passed }) => passed);
43
+ }
44
+
45
+ /**
46
+ * Ranks a row's columns against search terms.
47
+ * Processes columns that are searchable and have not already been processed.
48
+ * @param row - Row to rank.
49
+ * @param columnId - Column identifier.
50
+ * @param terms - Search terms to match against.
51
+ */
52
+ export function rankRowColumns<T extends RowData>(
53
+ row: Row<T>,
54
+ columnId: string,
55
+ terms: string[]
56
+ ): void {
57
+ const columnFiltersMeta = row.columnFiltersMeta;
58
+
59
+ // Process other columns.
60
+ for (const { column } of row.getAllCells()) {
61
+ // Column is not searchable.
62
+ if (!column.getCanGlobalFilter()) continue;
63
+
64
+ // Column has already been processed.
65
+ if (column.id === columnId) continue;
66
+ if (column.id in columnFiltersMeta) continue;
67
+
68
+ // Rank the column value.
69
+ const passed = rankColumnValue(row, column.id, terms);
70
+
71
+ // Add the filter metadata.
72
+ row.columnFiltersMeta[column.id] = { passed };
73
+ }
74
+ }
@@ -0,0 +1,50 @@
1
+ import { CellContext, RowData } from "@tanstack/react-table";
2
+ import React, { Fragment } from "react";
3
+ import { BaseComponentProps } from "../../../../../types";
4
+ import { getTokens, getTokensRegex, isRankedCell } from "./utils";
5
+
6
+ export const RankedCell = <
7
+ T extends RowData,
8
+ TValue = string | undefined | null
9
+ >({
10
+ className,
11
+ column,
12
+ getValue,
13
+ row,
14
+ table,
15
+ }: BaseComponentProps & CellContext<T, TValue>): JSX.Element | null => {
16
+ // Get the cell value.
17
+ const value = getValue();
18
+
19
+ // If the cell value is undefined or null, return null.
20
+ if (value === undefined || value === null) return null;
21
+
22
+ // Convert the cell value to a string.
23
+ const stringValue = String(value);
24
+
25
+ // Check if the cell is ranked.
26
+ const isRanked = isRankedCell(table, row, column.id);
27
+
28
+ // Return the unranked cell, as-is.
29
+ if (!isRanked) return <Fragment>{stringValue}</Fragment>;
30
+
31
+ // Tokenise the current global filter.
32
+ const tokens = getTokens(table);
33
+
34
+ // If there are no tokens, return the value as-is.
35
+ if (tokens.length === 0) return <Fragment>{stringValue}</Fragment>;
36
+
37
+ // Create regex pattern.
38
+ const regex = getTokensRegex(tokens);
39
+
40
+ // Return the ranked cell, with highlighting.
41
+ return (
42
+ <span className={className}>
43
+ {stringValue.split(regex).map((part, i) => (
44
+ <Fragment key={i}>
45
+ {part.match(regex) ? <mark>{part}</mark> : part}
46
+ </Fragment>
47
+ ))}
48
+ </span>
49
+ );
50
+ };
@@ -0,0 +1,85 @@
1
+ import { Row, RowData, Table } from "@tanstack/react-table";
2
+ import { escapeRegExp } from "../../../../../../common/utils";
3
+ import { ColumnFilterMeta } from "../../../../columnDef/globalFilter/types";
4
+ import { parseSearchTerms } from "../../../../columnDef/globalFilter/utils";
5
+
6
+ /**
7
+ * Renders a cell value with highlighting if it matches item rank filter criteria.
8
+ * @param table - Table.
9
+ * @param row - Row.
10
+ * @param columnId - Column identifier.
11
+ * @param value - Cell value.
12
+ * @returns Rendered cell value with highlighting.
13
+ */
14
+ export function renderRankedCell<T extends RowData>(
15
+ table: Table<T>,
16
+ row: Row<T>,
17
+ columnId: string,
18
+ value: string | undefined | null
19
+ ): string {
20
+ // If the cell value is undefined or null, return an empty string.
21
+ if (value === undefined || value === null) return "";
22
+
23
+ const stringValue = String(value);
24
+
25
+ // Check if the cell is ranked.
26
+ const isRanked = isRankedCell(table, row, columnId);
27
+
28
+ // Return the unranked cell, as-is, in string form.
29
+ if (!isRanked) return stringValue;
30
+
31
+ // Tokenise the current global filter.
32
+ const tokens = getTokens(table);
33
+
34
+ // If there are no tokens, return the value as-is, in string form.
35
+ if (tokens.length === 0) return stringValue;
36
+
37
+ // Create regex pattern.
38
+ const regex = getTokensRegex(tokens);
39
+
40
+ return stringValue.replace(regex, "<mark>$1</mark>");
41
+ }
42
+
43
+ /**
44
+ * Returns the current global filter tokens from the table.
45
+ * @param table - Table.
46
+ * @returns An array of search tokens.
47
+ */
48
+ export function getTokens<T extends RowData>(table: Table<T>): string[] {
49
+ const { getState } = table;
50
+ const { globalFilter } = getState();
51
+ return parseSearchTerms(globalFilter);
52
+ }
53
+
54
+ /**
55
+ * Returns a RegExp pattern for matching search tokens.
56
+ * @param tokens - Search tokens.
57
+ * @returns A RegExp pattern that matches any of the tokens.
58
+ */
59
+ export function getTokensRegex(tokens: string[]): RegExp {
60
+ return new RegExp(`(${tokens.map(escapeRegExp).join("|")})`, "gi");
61
+ }
62
+
63
+ /**
64
+ * Checks if a cell is ranked based on the global filter.
65
+ * @param table - Table.
66
+ * @param row - Row.
67
+ * @param columnId - Column identifier.
68
+ * @returns Whether the cell is ranked.
69
+ */
70
+ export function isRankedCell<T extends RowData>(
71
+ table: Table<T>,
72
+ row: Row<T>,
73
+ columnId: string
74
+ ): boolean {
75
+ const { getState } = table;
76
+ const { globalFilter } = getState();
77
+
78
+ // If there is no global filter, return the value as-is.
79
+ if (!globalFilter) return false;
80
+
81
+ // Check if the column has filter metadata with itemRank.passed
82
+ const columnFilterMeta = row.columnFiltersMeta[columnId] as ColumnFilterMeta;
83
+
84
+ return columnFilterMeta?.passed ?? false;
85
+ }
@@ -1,11 +1,36 @@
1
+ import { css } from "@emotion/react";
1
2
  import styled from "@emotion/styled";
2
- import { Menu, menuClasses, paperClasses } from "@mui/material";
3
+ import { Button, Menu, menuClasses, paperClasses } from "@mui/material";
4
+ import { PALETTE } from "../../../../../styles/common/constants/palette";
3
5
  import { MAX_LIST_HEIGHT_PX } from "../../../../Filter/common/constants";
4
6
  import {
5
7
  MuiListItemButtonRoot,
6
8
  MuiListItemTextRoot,
7
9
  } from "../../../../Filter/components/FilterList/filterList.styles";
8
10
 
11
+ interface Props {
12
+ open: boolean;
13
+ }
14
+
15
+ export const StyledButton = styled(Button, {
16
+ shouldForwardProp: (prop) => prop !== "open",
17
+ })<Props>`
18
+ &.MuiButtonGroup-grouped {
19
+ gap: 0;
20
+
21
+ .MuiButton-endIcon {
22
+ margin-left: 0;
23
+ margin-right: -8px;
24
+ }
25
+
26
+ ${({ open }) =>
27
+ open &&
28
+ css`
29
+ background-color: ${PALETTE.SMOKE_LIGHT};
30
+ `}
31
+ }
32
+ `;
33
+
9
34
  export const StyledMenu = styled(Menu)`
10
35
  .${paperClasses.root} {
11
36
  margin: 4px 0;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Checkbox,
3
+ Grid,
3
4
  ListItemButton,
4
5
  ListItemText,
5
- Button as MButton,
6
6
  Typography,
7
7
  } from "@mui/material";
8
8
  import { RowData } from "@tanstack/react-table";
@@ -13,10 +13,11 @@ import { CheckedIcon } from "../../../../common/CustomIcon/components/CheckedIco
13
13
  import { UncheckedIcon } from "../../../../common/CustomIcon/components/UncheckedIcon/uncheckedIcon";
14
14
  import { DropDownIcon } from "../../../../common/Form/components/Select/components/DropDownIcon/dropDownIcon";
15
15
  import { useMenu } from "../../../../common/Menu/hooks/useMenu";
16
+ import { FilterCountChip } from "../../../../Filter/components/FilterCountChip/filterCountChip";
16
17
  import { getColumnHeader } from "../../../common/utils";
17
18
  import { getSortedFacetedValues } from "../../../featureOptions/facetedColumn/utils";
18
- import { StyledMenu } from "./columnFilter.styles";
19
- import { MENU_PROPS } from "./constants";
19
+ import { StyledButton, StyledMenu } from "./columnFilter.styles";
20
+ import { GRID_PROPS, MENU_PROPS } from "./constants";
20
21
  import { ColumnFilterProps } from "./types";
21
22
  import { updater } from "./utils";
22
23
 
@@ -26,7 +27,7 @@ import { updater } from "./utils";
26
27
  */
27
28
 
28
29
  export const ColumnFilter = <T extends RowData>({
29
- Button = MButton,
30
+ Button = StyledButton,
30
31
  className,
31
32
  column,
32
33
  ...props /* MuiMenuProps */
@@ -39,10 +40,15 @@ export const ColumnFilter = <T extends RowData>({
39
40
  <Fragment>
40
41
  <Button
41
42
  key={column.id}
43
+ disabled={sortedValues.length === 0}
42
44
  endIcon={<DropDownIcon color={SVG_ICON_PROPS.COLOR.INK_LIGHT} />}
43
45
  onClick={onOpen}
46
+ open={open}
44
47
  >
45
- {getColumnHeader(column)}
48
+ <Grid {...GRID_PROPS}>
49
+ {getColumnHeader(column)}
50
+ <FilterCountChip count={filterValue.length} />
51
+ </Grid>
46
52
  </Button>
47
53
  <StyledMenu
48
54
  {...MENU_PROPS}
@@ -0,0 +1,25 @@
1
+ import styled from "@emotion/styled";
2
+ import { Chip } from "@mui/material";
3
+ import { PALETTE } from "../../../../../../../styles/common/constants/palette";
4
+
5
+ export const StyledChip = styled(Chip)`
6
+ border-radius: 4px;
7
+ box-shadow: 0 0 0 2px ${PALETTE.COMMON_WHITE};
8
+ cursor: pointer;
9
+ gap: 4px;
10
+ justify-self: flex-start;
11
+ padding: 0 8px;
12
+
13
+ .MuiChip-label {
14
+ padding: 0;
15
+ }
16
+
17
+ .MuiChip-deleteIcon {
18
+ font-size: 16px;
19
+ margin: 0 -4px 0 0;
20
+
21
+ &:hover {
22
+ color: inherit;
23
+ }
24
+ }
25
+ `;
@@ -0,0 +1,31 @@
1
+ import { CloseRounded } from "@mui/icons-material";
2
+ import { RowData } from "@tanstack/react-table";
3
+ import React, { Fragment } from "react";
4
+ import { updater } from "../../../../../components/TableFeatures/ColumnFilter/utils";
5
+ import { StyledChip } from "./columnFilterTag.styles";
6
+ import { CHIP_PROPS, SVG_ICON_PROPS } from "./constants";
7
+ import { ColumnFilterTagProps } from "./types";
8
+
9
+ export const ColumnFilterTag = <T extends RowData>({
10
+ className,
11
+ column,
12
+ ...props /* MuiChipProps */
13
+ }: ColumnFilterTagProps<T>): JSX.Element => {
14
+ const filterValue = column.getFilterValue() as unknown[];
15
+ return (
16
+ <Fragment>
17
+ {filterValue.map((value) => (
18
+ <StyledChip
19
+ {...CHIP_PROPS}
20
+ key={String(value)}
21
+ className={className}
22
+ deleteIcon={<CloseRounded {...SVG_ICON_PROPS} />}
23
+ label={String(value)}
24
+ onClick={() => column.setFilterValue(updater(value))}
25
+ onDelete={() => column.setFilterValue(updater(value))}
26
+ {...props}
27
+ />
28
+ ))}
29
+ </Fragment>
30
+ );
31
+ };
@@ -0,0 +1,13 @@
1
+ import { ChipProps, SvgIconProps } from "@mui/material";
2
+ import { CHIP_PROPS as MUI_CHIP_PROPS } from "../../../../../../../styles/common/mui/chip";
3
+ import { SVG_ICON_PROPS as MUI_SVG_ICON_PROPS } from "../../../../../../../styles/common/mui/svgIcon";
4
+
5
+ export const CHIP_PROPS: ChipProps = {
6
+ clickable: false,
7
+ color: MUI_CHIP_PROPS.COLOR.DEFAULT,
8
+ size: MUI_CHIP_PROPS.SIZE.MEDIUM,
9
+ };
10
+
11
+ export const SVG_ICON_PROPS: SvgIconProps = {
12
+ color: MUI_SVG_ICON_PROPS.COLOR.INHERIT,
13
+ };
@@ -0,0 +1,26 @@
1
+ import { Box } from "@mui/material";
2
+ import { Meta, StoryObj } from "@storybook/react";
3
+ import React from "react";
4
+ import { BIONETWORK } from "../../../../../../../DataDictionary/components/Filters/stories/constants";
5
+ import { ColumnFilterTag } from "../columnFilterTag";
6
+
7
+ const meta: Meta<typeof ColumnFilterTag> = {
8
+ component: ColumnFilterTag,
9
+ decorators: [
10
+ (Story): JSX.Element => (
11
+ <Box sx={{ display: "grid", gap: 2, gridAutoFlow: "column" }}>
12
+ <Story />
13
+ </Box>
14
+ ),
15
+ ],
16
+ };
17
+
18
+ export default meta;
19
+
20
+ type Story = StoryObj<typeof meta>;
21
+
22
+ export const Default: Story = {
23
+ args: {
24
+ column: BIONETWORK,
25
+ },
26
+ };
@@ -0,0 +1,9 @@
1
+ import { ChipProps } from "@mui/material";
2
+ import { Column, RowData } from "@tanstack/react-table";
3
+ import { BaseComponentProps } from "../../../../../../types";
4
+
5
+ export interface ColumnFilterTagProps<T extends RowData>
6
+ extends BaseComponentProps,
7
+ ChipProps {
8
+ column: Column<T>;
9
+ }
@@ -1,4 +1,11 @@
1
- import { MenuProps } from "@mui/material";
1
+ import { GridProps, MenuProps } from "@mui/material";
2
+
3
+ export const GRID_PROPS: GridProps = {
4
+ alignItems: "center",
5
+ container: true,
6
+ direction: "row",
7
+ gap: 1,
8
+ };
2
9
 
3
10
  export const MENU_PROPS: Omit<MenuProps, "anchorEl" | "onClose" | "open"> = {
4
11
  anchorOrigin: {
@@ -1,10 +1,11 @@
1
- import { Button, MenuProps } from "@mui/material";
1
+ import { MenuProps } from "@mui/material";
2
2
  import { Column, RowData } from "@tanstack/react-table";
3
3
  import { BaseComponentProps } from "../../../../types";
4
+ import { StyledButton } from "./columnFilter.styles";
4
5
 
5
6
  export interface ColumnFilterProps<T extends RowData>
6
7
  extends BaseComponentProps,
7
8
  Omit<MenuProps, "anchorEl" | "onClose" | "open"> {
8
- Button?: typeof Button;
9
+ Button?: typeof StyledButton;
9
10
  column: Column<T>;
10
11
  }
@@ -0,0 +1,8 @@
1
+ import { OutlinedInputProps } from "@mui/material";
2
+ import { OUTLINED_INPUT_PROPS as MUI_OUTLINED_INPUT_PROPS } from "../../../../../styles/common/mui/outlinedInput";
3
+
4
+ export const OUTLINED_INPUT_PROPS: OutlinedInputProps = {
5
+ color: MUI_OUTLINED_INPUT_PROPS.COLOR.SECONDARY,
6
+ fullWidth: true,
7
+ id: "global-filter",
8
+ };
@@ -0,0 +1,33 @@
1
+ import { RowData } from "@tanstack/react-table";
2
+ import React from "react";
3
+ import { ClearInputAdornment } from "../../../../common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment";
4
+ import { SearchInputAdornment } from "../../../../common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/searchInputAdornment";
5
+ import { StyledOutlinedInput } from "../../../../common/OutlinedInput/outlinedInput.styles";
6
+ import { OUTLINED_INPUT_PROPS } from "./constants";
7
+ import { GlobalFilterProps } from "./types";
8
+
9
+ export const GlobalFilter = <T extends RowData>({
10
+ className,
11
+ table,
12
+ ...props /* MuiOutlinedInputProps */
13
+ }: GlobalFilterProps<T>): JSX.Element => {
14
+ const { getState, setGlobalFilter } = table;
15
+ const { globalFilter } = getState();
16
+ return (
17
+ <StyledOutlinedInput
18
+ {...OUTLINED_INPUT_PROPS}
19
+ className={className}
20
+ endAdornment={
21
+ <ClearInputAdornment
22
+ in={!!globalFilter}
23
+ onClick={() => setGlobalFilter(undefined)}
24
+ />
25
+ }
26
+ hasValue={!!globalFilter}
27
+ onChange={(e) => setGlobalFilter(e.target.value)}
28
+ startAdornment={<SearchInputAdornment />}
29
+ value={globalFilter ?? ""}
30
+ {...props}
31
+ />
32
+ );
33
+ };
@@ -0,0 +1,9 @@
1
+ import { OutlinedInputProps } from "@mui/material";
2
+ import { RowData, Table } from "@tanstack/react-table";
3
+ import { BaseComponentProps } from "components/types";
4
+
5
+ export interface GlobalFilterProps<T extends RowData>
6
+ extends BaseComponentProps,
7
+ OutlinedInputProps {
8
+ table: Table<T>;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { PaginationTableState } from "@tanstack/react-table";
2
+
3
+ export const PAGINATION_TABLE_STATE: PaginationTableState = {
4
+ pagination: {
5
+ pageIndex: 0,
6
+ pageSize: 10,
7
+ },
8
+ };