@databiosphere/findable-ui 35.2.0 → 37.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 (374) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +27 -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/Export/components/DownloadCurlCommand/downloadCurlCommand.d.ts +2 -1
  57. package/lib/components/Export/components/DownloadCurlCommand/downloadCurlCommand.js +3 -1
  58. package/lib/components/Export/components/ExportToTerra/exportToTerra.d.ts +2 -1
  59. package/lib/components/Export/components/ExportToTerra/exportToTerra.js +3 -1
  60. package/lib/components/Export/components/ManifestDownload/manifestDownload.d.ts +2 -1
  61. package/lib/components/Export/components/ManifestDownload/manifestDownload.js +3 -1
  62. package/lib/components/Filter/components/FilterCountChip/filterCountChip.d.ts +2 -0
  63. package/lib/components/Filter/components/FilterCountChip/filterCountChip.js +8 -0
  64. package/lib/components/Filter/components/FilterCountChip/filterCountChip.styles.d.ts +3 -0
  65. package/lib/components/Filter/components/FilterCountChip/filterCountChip.styles.js +18 -0
  66. package/lib/components/Filter/components/FilterCountChip/stories/filterCountChip.stories.d.ts +6 -0
  67. package/lib/components/Filter/components/FilterCountChip/stories/filterCountChip.stories.js +6 -0
  68. package/lib/components/Filter/components/FilterCountChip/types.d.ts +5 -0
  69. package/lib/components/Filter/components/FilterCountChip/types.js +1 -0
  70. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
  71. package/lib/components/Layout/components/Outline/outline.styles.d.ts +1 -1
  72. package/lib/components/Table/columnDef/globalFilter/constants.d.ts +2 -0
  73. package/lib/components/Table/columnDef/globalFilter/constants.js +4 -0
  74. package/lib/components/Table/columnDef/globalFilter/filterFn.d.ts +13 -0
  75. package/lib/components/Table/columnDef/globalFilter/filterFn.js +24 -0
  76. package/lib/components/Table/columnDef/globalFilter/types.d.ts +4 -0
  77. package/lib/components/Table/columnDef/globalFilter/types.js +1 -0
  78. package/lib/components/Table/columnDef/globalFilter/utils.d.ts +23 -0
  79. package/lib/components/Table/columnDef/globalFilter/utils.js +57 -0
  80. package/lib/components/Table/components/TableCell/components/CodeCell/codeCell.d.ts +2 -1
  81. package/lib/components/Table/components/TableCell/components/RankedCell/rankedCell.d.ts +3 -0
  82. package/lib/components/Table/components/TableCell/components/RankedCell/rankedCell.js +25 -0
  83. package/lib/components/Table/components/TableCell/components/RankedCell/utils.d.ts +30 -0
  84. package/lib/components/Table/components/TableCell/components/RankedCell/utils.js +64 -0
  85. package/lib/components/Table/components/TableFeatures/ColumnFilter/columnFilter.js +9 -5
  86. package/lib/components/Table/components/TableFeatures/ColumnFilter/columnFilter.styles.d.ts +9 -0
  87. package/lib/components/Table/components/TableFeatures/ColumnFilter/columnFilter.styles.js +20 -1
  88. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.d.ts +3 -0
  89. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.js +9 -0
  90. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.styles.d.ts +5 -0
  91. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.styles.js +24 -0
  92. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/constants.d.ts +3 -0
  93. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/constants.js +10 -0
  94. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/stories/columFilterTag.stories.d.ts +6 -0
  95. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/stories/columFilterTag.stories.js +17 -0
  96. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/types.d.ts +6 -0
  97. package/lib/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/types.js +1 -0
  98. package/lib/components/Table/components/TableFeatures/ColumnFilter/constants.d.ts +2 -1
  99. package/lib/components/Table/components/TableFeatures/ColumnFilter/constants.js +6 -0
  100. package/lib/components/Table/components/TableFeatures/ColumnFilter/types.d.ts +3 -2
  101. package/lib/components/Table/components/TableFeatures/GlobalFilter/constants.d.ts +2 -0
  102. package/lib/components/Table/components/TableFeatures/GlobalFilter/constants.js +6 -0
  103. package/lib/components/Table/components/TableFeatures/GlobalFilter/globalFilter.d.ts +3 -0
  104. package/lib/components/Table/components/TableFeatures/GlobalFilter/globalFilter.js +10 -0
  105. package/lib/components/Table/components/TableFeatures/GlobalFilter/types.d.ts +6 -0
  106. package/lib/components/Table/components/TableFeatures/GlobalFilter/types.js +1 -0
  107. package/lib/components/Table/coreOptions/state/pagination/constants.d.ts +2 -0
  108. package/lib/components/Table/coreOptions/state/pagination/constants.js +6 -0
  109. package/lib/components/Table/coreOptions/state/pagination/utils.d.ts +9 -0
  110. package/lib/components/Table/coreOptions/state/pagination/utils.js +18 -0
  111. package/lib/components/common/AnchorLink/anchorLink.js +4 -2
  112. package/lib/components/common/AnchorLink/anchorLink.styles.d.ts +1 -1
  113. package/lib/components/common/AnchorLink/anchorLink.styles.js +1 -1
  114. package/lib/components/common/CustomIcon/components/SearchIcon/searchIcon.d.ts +2 -2
  115. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.d.ts +2 -0
  116. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.js +13 -0
  117. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.styles.d.ts +5 -0
  118. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.styles.js +11 -0
  119. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/constants.d.ts +3 -0
  120. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/constants.js +10 -0
  121. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/types.d.ts +4 -0
  122. package/lib/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/types.js +1 -0
  123. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/constants.d.ts +2 -0
  124. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/constants.js +5 -0
  125. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/searchInputAdornment.d.ts +1 -0
  126. package/lib/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/searchInputAdornment.js +9 -0
  127. package/lib/components/common/OutlinedInput/components/InputAdornment/components/constants.d.ts +2 -0
  128. package/lib/components/common/OutlinedInput/components/InputAdornment/components/constants.js +5 -0
  129. package/lib/components/common/OutlinedInput/components/InputAdornment/inputAdornment.styles.d.ts +5 -0
  130. package/lib/components/common/OutlinedInput/components/InputAdornment/inputAdornment.styles.js +5 -0
  131. package/lib/components/common/OutlinedInput/outlinedInput.styles.d.ts +7 -0
  132. package/lib/components/common/OutlinedInput/outlinedInput.styles.js +18 -0
  133. package/lib/hooks/stateSyncManager/hooks/UseMetaCommands/hook.js +2 -2
  134. package/lib/hooks/stateSyncManager/hooks/UseStateSync/hook.js +3 -3
  135. package/lib/hooks/stateSyncManager/types.d.ts +1 -1
  136. package/lib/hooks/useFileManifest/useFileManifestFileCount.d.ts +10 -0
  137. package/lib/hooks/useFileManifest/useFileManifestFileCount.js +44 -0
  138. package/lib/hooks/useRequestManifest/utils.d.ts +21 -14
  139. package/lib/hooks/useRequestManifest/utils.js +33 -21
  140. package/lib/mocks/useRequestFileManifest.mocks.js +2 -0
  141. package/lib/providers/dataDictionary/context.d.ts +2 -0
  142. package/lib/providers/dataDictionary/context.js +4 -0
  143. package/lib/providers/dataDictionary/hook.d.ts +6 -0
  144. package/lib/providers/dataDictionary/hook.js +9 -0
  145. package/lib/providers/dataDictionary/types.d.ts +3 -0
  146. package/lib/providers/dataDictionary/types.js +1 -0
  147. package/lib/providers/dataDictionaryState/actions/clearMeta/action.d.ts +9 -0
  148. package/lib/providers/dataDictionaryState/actions/clearMeta/action.js +12 -0
  149. package/lib/providers/dataDictionaryState/actions/clearMeta/dispatch.d.ts +6 -0
  150. package/lib/providers/dataDictionaryState/actions/clearMeta/dispatch.js +11 -0
  151. package/lib/providers/dataDictionaryState/actions/clearMeta/types.d.ts +6 -0
  152. package/lib/providers/dataDictionaryState/actions/clearMeta/types.js +1 -0
  153. package/lib/providers/dataDictionaryState/actions/stateToUrl/action.d.ts +9 -0
  154. package/lib/providers/dataDictionaryState/actions/stateToUrl/action.js +14 -0
  155. package/lib/providers/dataDictionaryState/actions/stateToUrl/dispatch.d.ts +7 -0
  156. package/lib/providers/dataDictionaryState/actions/stateToUrl/dispatch.js +12 -0
  157. package/lib/providers/dataDictionaryState/actions/stateToUrl/types.d.ts +12 -0
  158. package/lib/providers/dataDictionaryState/actions/stateToUrl/types.js +5 -0
  159. package/lib/providers/dataDictionaryState/actions/types.d.ts +13 -0
  160. package/lib/providers/dataDictionaryState/actions/types.js +8 -0
  161. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/action.d.ts +9 -0
  162. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/action.js +18 -0
  163. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/dispatch.d.ts +7 -0
  164. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/dispatch.js +12 -0
  165. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/types.d.ts +10 -0
  166. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/types.js +1 -0
  167. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/utils.d.ts +11 -0
  168. package/lib/providers/dataDictionaryState/actions/updateColumnFilters/utils.js +27 -0
  169. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/action.d.ts +9 -0
  170. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/action.js +19 -0
  171. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/dispatch.d.ts +7 -0
  172. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/dispatch.js +12 -0
  173. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/types.d.ts +10 -0
  174. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/types.js +1 -0
  175. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/utils.d.ts +17 -0
  176. package/lib/providers/dataDictionaryState/actions/updateGlobalFilter/utils.js +36 -0
  177. package/lib/providers/dataDictionaryState/actions/urlToState/action.d.ts +9 -0
  178. package/lib/providers/dataDictionaryState/actions/urlToState/action.js +20 -0
  179. package/lib/providers/dataDictionaryState/actions/urlToState/dispatch.d.ts +7 -0
  180. package/lib/providers/dataDictionaryState/actions/urlToState/dispatch.js +12 -0
  181. package/lib/providers/dataDictionaryState/actions/urlToState/types.d.ts +9 -0
  182. package/lib/providers/dataDictionaryState/actions/urlToState/types.js +1 -0
  183. package/lib/providers/dataDictionaryState/context.d.ts +2 -0
  184. package/lib/providers/dataDictionaryState/context.js +6 -0
  185. package/lib/providers/dataDictionaryState/dictionaries/constants.d.ts +4 -0
  186. package/lib/providers/dataDictionaryState/dictionaries/constants.js +4 -0
  187. package/lib/providers/dataDictionaryState/dictionaries/state.d.ts +11 -0
  188. package/lib/providers/dataDictionaryState/dictionaries/state.js +29 -0
  189. package/lib/providers/dataDictionaryState/dictionaries/types.d.ts +9 -0
  190. package/lib/providers/dataDictionaryState/dictionaries/types.js +1 -0
  191. package/lib/providers/dataDictionaryState/dictionaries/utils.d.ts +14 -0
  192. package/lib/providers/dataDictionaryState/dictionaries/utils.js +20 -0
  193. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/hook.d.ts +2 -0
  194. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/hook.js +6 -0
  195. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/types.d.ts +4 -0
  196. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/types.js +1 -0
  197. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryReducer/hook.d.ts +2 -0
  198. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryReducer/hook.js +9 -0
  199. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryState/hook.d.ts +6 -0
  200. package/lib/providers/dataDictionaryState/hooks/UseDataDictionaryState/hook.js +9 -0
  201. package/lib/providers/dataDictionaryState/initializer/constants.d.ts +2 -0
  202. package/lib/providers/dataDictionaryState/initializer/constants.js +4 -0
  203. package/lib/providers/dataDictionaryState/initializer/initializer.d.ts +9 -0
  204. package/lib/providers/dataDictionaryState/initializer/initializer.js +17 -0
  205. package/lib/providers/dataDictionaryState/initializer/utils.d.ts +8 -0
  206. package/lib/providers/dataDictionaryState/initializer/utils.js +29 -0
  207. package/lib/providers/dataDictionaryState/provider.d.ts +4 -0
  208. package/lib/providers/dataDictionaryState/provider.js +7 -0
  209. package/lib/providers/dataDictionaryState/reducer.d.ts +9 -0
  210. package/lib/providers/dataDictionaryState/reducer.js +34 -0
  211. package/lib/providers/dataDictionaryState/types.d.ts +15 -0
  212. package/lib/providers/dataDictionaryState/types.js +1 -0
  213. package/lib/providers/fileManifestState/constants.js +1 -0
  214. package/lib/providers/fileManifestState.d.ts +16 -1
  215. package/lib/providers/fileManifestState.js +6 -0
  216. package/lib/styles/common/mui/iconButton.d.ts +11 -0
  217. package/lib/styles/common/mui/iconButton.js +29 -0
  218. package/lib/styles/common/mui/inputAdornment.d.ts +9 -0
  219. package/lib/styles/common/mui/inputAdornment.js +13 -0
  220. package/lib/styles/common/mui/outlinedInput.d.ts +7 -0
  221. package/lib/styles/common/mui/outlinedInput.js +7 -0
  222. package/lib/theme/common/components.js +122 -16
  223. package/lib/theme/components/muiButtonGroup.js +4 -0
  224. package/lib/theme/components/muiTableCell.js +6 -0
  225. package/lib/utils/parseJsonQueryParam.d.ts +14 -0
  226. package/lib/utils/parseJsonQueryParam.js +25 -0
  227. package/lib/utils/stateToUrlQuery.d.ts +15 -0
  228. package/lib/utils/stateToUrlQuery.js +35 -0
  229. package/lib/views/DataDictionaryView/dataDictionaryView.d.ts +2 -2
  230. package/lib/views/DataDictionaryView/dataDictionaryView.js +16 -2
  231. package/lib/views/DataDictionaryView/types.d.ts +4 -0
  232. package/lib/views/DataDictionaryView/types.js +1 -0
  233. package/lib/views/DataDictionaryView/utils.d.ts +12 -0
  234. package/lib/views/DataDictionaryView/utils.js +17 -0
  235. package/lib/views/ExploreView/utils.d.ts +1 -1
  236. package/lib/views/ExploreView/utils.js +1 -1
  237. package/package.json +2 -1
  238. package/src/common/entities.ts +2 -3
  239. package/src/components/DataDictionary/components/Entities/constants.ts +9 -3
  240. package/src/components/DataDictionary/components/Entities/entities.styles.ts +6 -0
  241. package/src/components/DataDictionary/components/Entities/entities.tsx +7 -2
  242. package/src/components/DataDictionary/components/Entity/entity.styles.ts +1 -10
  243. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.styles.ts +8 -0
  244. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/columnFilterTags.tsx +33 -0
  245. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/constants.ts +8 -0
  246. package/src/components/DataDictionary/components/Filters/components/ColumnFilterTags/types.ts +8 -0
  247. package/src/components/DataDictionary/components/Filters/filters.styles.ts +3 -3
  248. package/src/components/DataDictionary/components/Filters/filters.tsx +2 -0
  249. package/src/components/DataDictionary/components/Filters/stories/constants.ts +18 -0
  250. package/src/components/DataDictionary/components/Filters/stories/filters.stories.tsx +15 -3
  251. package/src/components/DataDictionary/components/Filters/stories/hook.ts +8 -0
  252. package/src/components/DataDictionary/components/Layout/components/EntitiesLayout/entitiesLayout.styles.ts +1 -5
  253. package/src/components/DataDictionary/components/Layout/components/EntitiesLayout/entitiesLayout.tsx +13 -7
  254. package/src/components/DataDictionary/components/Layout/components/EntitiesLayout/types.ts +4 -2
  255. package/src/components/DataDictionary/components/Layout/components/FiltersLayout/filtersLayout.styles.ts +4 -1
  256. package/src/components/DataDictionary/components/Layout/components/FiltersLayout/filtersLayout.tsx +13 -7
  257. package/src/components/DataDictionary/components/Table/hook.ts +10 -6
  258. package/src/components/DataDictionary/components/Table/options/columnFilters/constants.ts +2 -1
  259. package/src/components/DataDictionary/components/Table/options/columnFilters/hook.ts +13 -12
  260. package/src/components/DataDictionary/components/Table/options/globalFilter/constants.ts +14 -0
  261. package/src/components/DataDictionary/components/Table/options/globalFilter/hook.ts +28 -0
  262. package/src/components/DataDictionary/components/Table/options/hook.ts +9 -11
  263. package/src/components/DataDictionary/components/Table/options/pagination/constants.ts +6 -0
  264. package/src/components/DataDictionary/dataDictionary.tsx +45 -16
  265. package/src/components/DataDictionary/hooks/UseDataDictionaryConfig/hook.ts +38 -0
  266. package/src/components/DataDictionary/hooks/UseDataDictionaryConfig/types.ts +8 -0
  267. package/src/components/DataDictionary/hooks/UseDataDictionaryConfig/utils.ts +8 -0
  268. package/src/components/DataDictionary/hooks/UseMeasureFilters/hook.ts +27 -0
  269. package/src/components/DataDictionary/hooks/UseMeasureFilters/types.ts +6 -0
  270. package/src/components/DataDictionary/types.ts +1 -0
  271. package/src/components/Export/components/DownloadCurlCommand/downloadCurlCommand.tsx +4 -0
  272. package/src/components/Export/components/ExportToTerra/exportToTerra.tsx +4 -0
  273. package/src/components/Export/components/ManifestDownload/manifestDownload.tsx +4 -0
  274. package/src/components/Filter/components/FilterCountChip/filterCountChip.styles.ts +19 -0
  275. package/src/components/Filter/components/FilterCountChip/filterCountChip.tsx +21 -0
  276. package/src/components/Filter/components/FilterCountChip/stories/filterCountChip.stories.tsx +12 -0
  277. package/src/components/Filter/components/FilterCountChip/types.ts +6 -0
  278. package/src/components/Table/columnDef/globalFilter/constants.ts +5 -0
  279. package/src/components/Table/columnDef/globalFilter/filterFn.ts +34 -0
  280. package/src/components/Table/columnDef/globalFilter/types.ts +5 -0
  281. package/src/components/Table/columnDef/globalFilter/utils.ts +74 -0
  282. package/src/components/Table/components/TableCell/components/CodeCell/codeCell.tsx +5 -2
  283. package/src/components/Table/components/TableCell/components/RankedCell/rankedCell.tsx +50 -0
  284. package/src/components/Table/components/TableCell/components/RankedCell/utils.ts +85 -0
  285. package/src/components/Table/components/TableFeatures/ColumnFilter/columnFilter.styles.ts +26 -1
  286. package/src/components/Table/components/TableFeatures/ColumnFilter/columnFilter.tsx +11 -5
  287. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.styles.ts +25 -0
  288. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag.tsx +31 -0
  289. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/constants.ts +13 -0
  290. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/stories/columFilterTag.stories.tsx +26 -0
  291. package/src/components/Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/types.ts +9 -0
  292. package/src/components/Table/components/TableFeatures/ColumnFilter/constants.ts +8 -1
  293. package/src/components/Table/components/TableFeatures/ColumnFilter/types.ts +3 -2
  294. package/src/components/Table/components/TableFeatures/GlobalFilter/constants.ts +8 -0
  295. package/src/components/Table/components/TableFeatures/GlobalFilter/globalFilter.tsx +33 -0
  296. package/src/components/Table/components/TableFeatures/GlobalFilter/types.ts +9 -0
  297. package/src/components/Table/coreOptions/state/pagination/constants.ts +8 -0
  298. package/src/components/Table/coreOptions/state/pagination/utils.ts +21 -0
  299. package/src/components/common/AnchorLink/anchorLink.styles.ts +1 -1
  300. package/src/components/common/AnchorLink/anchorLink.tsx +9 -3
  301. package/src/components/common/CustomIcon/components/SearchIcon/searchIcon.tsx +2 -3
  302. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.styles.ts +12 -0
  303. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/clearInputAdornment.tsx +21 -0
  304. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/constants.ts +13 -0
  305. package/src/components/common/OutlinedInput/components/InputAdornment/components/ClearInputAdornment/types.ts +4 -0
  306. package/src/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/constants.ts +7 -0
  307. package/src/components/common/OutlinedInput/components/InputAdornment/components/SearchInputAdornment/searchInputAdornment.tsx +13 -0
  308. package/src/components/common/OutlinedInput/components/InputAdornment/components/constants.ts +7 -0
  309. package/src/components/common/OutlinedInput/components/InputAdornment/inputAdornment.styles.ts +6 -0
  310. package/src/components/common/OutlinedInput/outlinedInput.styles.ts +24 -0
  311. package/src/hooks/stateSyncManager/hooks/UseMetaCommands/hook.ts +2 -2
  312. package/src/hooks/stateSyncManager/hooks/UseStateSync/hook.ts +3 -3
  313. package/src/hooks/stateSyncManager/types.ts +1 -1
  314. package/src/hooks/useFileManifest/useFileManifestFileCount.ts +65 -0
  315. package/src/hooks/useRequestManifest/utils.ts +37 -24
  316. package/src/mocks/useRequestFileManifest.mocks.ts +2 -0
  317. package/src/providers/dataDictionary/context.ts +6 -0
  318. package/src/providers/dataDictionary/hook.ts +11 -0
  319. package/src/providers/dataDictionary/types.ts +6 -0
  320. package/src/providers/dataDictionaryState/actions/clearMeta/action.ts +18 -0
  321. package/src/providers/dataDictionaryState/actions/clearMeta/dispatch.ts +13 -0
  322. package/src/providers/dataDictionaryState/actions/clearMeta/types.ts +8 -0
  323. package/src/providers/dataDictionaryState/actions/stateToUrl/action.ts +20 -0
  324. package/src/providers/dataDictionaryState/actions/stateToUrl/dispatch.ts +14 -0
  325. package/src/providers/dataDictionaryState/actions/stateToUrl/types.ts +15 -0
  326. package/src/providers/dataDictionaryState/actions/types.ts +20 -0
  327. package/src/providers/dataDictionaryState/actions/updateColumnFilters/action.ts +24 -0
  328. package/src/providers/dataDictionaryState/actions/updateColumnFilters/dispatch.ts +16 -0
  329. package/src/providers/dataDictionaryState/actions/updateColumnFilters/types.ts +12 -0
  330. package/src/providers/dataDictionaryState/actions/updateColumnFilters/utils.ts +41 -0
  331. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/action.ts +25 -0
  332. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/dispatch.ts +16 -0
  333. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/types.ts +12 -0
  334. package/src/providers/dataDictionaryState/actions/updateGlobalFilter/utils.ts +50 -0
  335. package/src/providers/dataDictionaryState/actions/urlToState/action.ts +28 -0
  336. package/src/providers/dataDictionaryState/actions/urlToState/dispatch.ts +14 -0
  337. package/src/providers/dataDictionaryState/actions/urlToState/types.ts +11 -0
  338. package/src/providers/dataDictionaryState/context.ts +9 -0
  339. package/src/providers/dataDictionaryState/dictionaries/constants.ts +4 -0
  340. package/src/providers/dataDictionaryState/dictionaries/state.ts +45 -0
  341. package/src/providers/dataDictionaryState/dictionaries/types.ts +11 -0
  342. package/src/providers/dataDictionaryState/dictionaries/utils.ts +25 -0
  343. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/hook.ts +14 -0
  344. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryInitialArgs/types.ts +5 -0
  345. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryReducer/hook.ts +17 -0
  346. package/src/providers/dataDictionaryState/hooks/UseDataDictionaryState/hook.ts +11 -0
  347. package/src/providers/dataDictionaryState/initializer/constants.ts +6 -0
  348. package/src/providers/dataDictionaryState/initializer/initializer.ts +22 -0
  349. package/src/providers/dataDictionaryState/initializer/utils.ts +39 -0
  350. package/src/providers/dataDictionaryState/provider.tsx +16 -0
  351. package/src/providers/dataDictionaryState/reducer.ts +42 -0
  352. package/src/providers/dataDictionaryState/types.ts +18 -0
  353. package/src/providers/fileManifestState/constants.ts +1 -0
  354. package/src/providers/fileManifestState.tsx +23 -0
  355. package/src/styles/common/mui/iconButton.ts +40 -0
  356. package/src/styles/common/mui/inputAdornment.ts +22 -0
  357. package/src/styles/common/mui/outlinedInput.ts +14 -0
  358. package/src/theme/common/components.ts +122 -16
  359. package/src/theme/components/muiButtonGroup.ts +4 -0
  360. package/src/theme/components/muiTableCell.ts +6 -0
  361. package/src/utils/parseJsonQueryParam.ts +27 -0
  362. package/src/utils/stateToUrlQuery.ts +40 -0
  363. package/src/views/DataDictionaryView/dataDictionaryView.tsx +29 -3
  364. package/src/views/DataDictionaryView/types.ts +5 -0
  365. package/src/views/DataDictionaryView/utils.ts +23 -0
  366. package/src/views/ExploreView/utils.ts +1 -1
  367. package/tests/buildRequestFilters.test.ts +5 -13
  368. package/tests/useRequestManifest.test.ts +10 -0
  369. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.d.ts +0 -4
  370. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.js +0 -36
  371. package/lib/components/DataDictionary/hooks/UseDataDictionary/types.d.ts +0 -8
  372. package/src/components/DataDictionary/hooks/UseDataDictionary/hook.ts +0 -51
  373. package/src/components/DataDictionary/hooks/UseDataDictionary/types.ts +0 -9
  374. /package/lib/components/DataDictionary/{hooks/UseDataDictionary → components/Filters/components/ColumnFilterTags}/types.js +0 -0
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "35.2.0"
2
+ ".": "37.0.0"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## [37.0.0](https://github.com/DataBiosphere/findable-ui/compare/v36.0.0...v37.0.0) (2025-06-19)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * file format filter dropped from curl manifest request ([#543](https://github.com/DataBiosphere/findable-ui/issues/543)) (#544)
9
+
10
+ ### Bug Fixes
11
+
12
+ * file format filter dropped from curl manifest request ([#543](https://github.com/DataBiosphere/findable-ui/issues/543)) ([#544](https://github.com/DataBiosphere/findable-ui/issues/544)) ([3169f5c](https://github.com/DataBiosphere/findable-ui/commit/3169f5ca961d1ca518b9820dc8878ad3d224a2f4))
13
+ * refactor CodeCell to use node prop instead of value string ([#540](https://github.com/DataBiosphere/findable-ui/issues/540)) ([#542](https://github.com/DataBiosphere/findable-ui/issues/542)) ([28b7fb8](https://github.com/DataBiosphere/findable-ui/commit/28b7fb8e8646ede29098f6a612b66d3ccef34bf3))
14
+
15
+ ## [36.0.0](https://github.com/DataBiosphere/findable-ui/compare/v35.2.0...v36.0.0) (2025-06-18)
16
+
17
+
18
+ ### ⚠ BREAKING CHANGES
19
+
20
+ * add global search to data dictionary ([#528](https://github.com/DataBiosphere/findable-ui/issues/528)) (#535)
21
+ * add provider with reducer for data dictionary state ([#505](https://github.com/DataBiosphere/findable-ui/issues/505)) (#526)
22
+
23
+ ### Features
24
+
25
+ * add filter tags to data dictionary ([#529](https://github.com/DataBiosphere/findable-ui/issues/529)) ([#536](https://github.com/DataBiosphere/findable-ui/issues/536)) ([30c368d](https://github.com/DataBiosphere/findable-ui/commit/30c368d97f9dfee89f82d108e0a4622a058da53e))
26
+ * add global search to data dictionary ([#528](https://github.com/DataBiosphere/findable-ui/issues/528)) ([#535](https://github.com/DataBiosphere/findable-ui/issues/535)) ([d189f5f](https://github.com/DataBiosphere/findable-ui/commit/d189f5fe632f6949d76ac52c631ad0ea93070d56))
27
+ * add provider with reducer for data dictionary state ([#505](https://github.com/DataBiosphere/findable-ui/issues/505)) ([#526](https://github.com/DataBiosphere/findable-ui/issues/526)) ([b17f412](https://github.com/DataBiosphere/findable-ui/commit/b17f412ab0358a43fd0e5faf5d009d253bd3c5a6))
28
+ * highlight global search text in table results ([#533](https://github.com/DataBiosphere/findable-ui/issues/533)) ([#537](https://github.com/DataBiosphere/findable-ui/issues/537)) ([f9b8d24](https://github.com/DataBiosphere/findable-ui/commit/f9b8d2444ab34ad0a9aa5d4806eb0a88c7bc6d17))
29
+
3
30
  ## [35.2.0](https://github.com/DataBiosphere/findable-ui/compare/v35.1.0...v35.2.0) (2025-06-16)
4
31
 
5
32
 
@@ -1,4 +1,4 @@
1
- import { ColumnDef, RowData, TableOptions } from "@tanstack/react-table";
1
+ import { RowData, TableOptions } from "@tanstack/react-table";
2
2
  /**
3
3
  * Model of a value of a metadata class.
4
4
  */
@@ -63,10 +63,9 @@ export interface DataDictionary<T extends RowData = Attribute> {
63
63
  * dictionary) as well as column def for displaying the data dictionary.
64
64
  */
65
65
  export interface DataDictionaryConfig<T extends RowData = Attribute> {
66
- columnDefs: ColumnDef<T, T[keyof T]>[];
67
66
  dataDictionary: DataDictionary<T>;
68
67
  path: string;
69
- tableOptions?: Omit<TableOptions<T>, "columns" | "data" | "getCoreRowModel">;
68
+ tableOptions: Omit<TableOptions<T>, "data" | "getCoreRowModel">;
70
69
  }
71
70
  /**
72
71
  * Label and description values from a data dictionary that are added to a site
@@ -1,3 +1,5 @@
1
1
  import { GridProps } from "@mui/material";
2
- export declare const ENTITIES_ROW_GAP = 8;
2
+ import { ComponentProps } from "react";
3
+ import { NoResults } from "../../../NoResults/noResults";
3
4
  export declare const GRID_PROPS: GridProps;
5
+ export declare const NO_RESULTS_PROPS: ComponentProps<typeof NoResults>;
@@ -1,7 +1,11 @@
1
- export const ENTITIES_ROW_GAP = 8;
1
+ import { StyledRoundedPaper } from "./entities.styles";
2
2
  export const GRID_PROPS = {
3
3
  container: true,
4
4
  direction: "column",
5
5
  flexWrap: "nowrap",
6
- rowGap: ENTITIES_ROW_GAP,
6
+ rowGap: 8,
7
+ };
8
+ export const NO_RESULTS_PROPS = {
9
+ Paper: StyledRoundedPaper,
10
+ title: "No results found",
7
11
  };
@@ -1,8 +1,12 @@
1
1
  import { Grid } from "@mui/material";
2
2
  import React from "react";
3
+ import { NoResults } from "../../../NoResults/noResults";
3
4
  import { Entity } from "../Entity/entity";
4
- import { GRID_PROPS } from "./constants";
5
+ import { GRID_PROPS, NO_RESULTS_PROPS } from "./constants";
5
6
  export const Entities = ({ spacing, table, }) => {
6
7
  const { getGroupedRowModel } = table;
7
- return (React.createElement(Grid, { ...GRID_PROPS }, getGroupedRowModel().rows.map((row) => (React.createElement(Entity, { key: row.id, row: row, spacing: spacing, table: table })))));
8
+ const { rows } = getGroupedRowModel();
9
+ if (rows.length === 0)
10
+ return React.createElement(NoResults, { ...NO_RESULTS_PROPS });
11
+ return (React.createElement(Grid, { ...GRID_PROPS }, rows.map((row) => (React.createElement(Entity, { key: row.id, row: row, spacing: spacing, table: table })))));
8
12
  };
@@ -0,0 +1,3 @@
1
+ export declare const StyledRoundedPaper: import("@emotion/styled").StyledComponent<import("../../../common/Paper/paper").PaperProps & import("react").RefAttributes<HTMLDivElement> & {
2
+ theme?: import("@emotion/react").Theme;
3
+ }, {}, {}>;
@@ -0,0 +1,5 @@
1
+ import styled from "@emotion/styled";
2
+ import { RoundedPaper } from "../../../common/Paper/paper.styles";
3
+ export const StyledRoundedPaper = styled(RoundedPaper) `
4
+ overflow: hidden;
5
+ `;
@@ -1,14 +1,7 @@
1
1
  import styled from "@emotion/styled";
2
2
  import { Typography } from "@mui/material";
3
- import { ENTITIES_ROW_GAP } from "../Entities/constants";
4
- import { LAYOUT_SPACING } from "../Layout/constants";
5
- const TOP = ENTITIES_ROW_GAP +
6
- LAYOUT_SPACING.TITLE_HEIGHT +
7
- LAYOUT_SPACING.FILTERS_HEIGHT +
8
- LAYOUT_SPACING.FILTERS_PADDING_TOP +
9
- LAYOUT_SPACING.CONTENT_PADDING_TOP;
10
3
  export const StyledTypography = styled(Typography) `
11
- scroll-margin-top: ${({ top = 0 }) => top + TOP}px;
4
+ scroll-margin-top: ${({ top = 0 }) => top}px;
12
5
 
13
6
  &:hover a {
14
7
  opacity: 1;
@@ -0,0 +1,4 @@
1
+ import { RowData } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ import { ColumnFilterTagsProps } from "./types";
4
+ export declare const ColumnFilterTags: <T extends RowData = Attribute>({ className, table, }: ColumnFilterTagsProps<T>) => JSX.Element | null;
@@ -0,0 +1,15 @@
1
+ import { Button } from "@mui/material";
2
+ import React from "react";
3
+ import { BUTTON_PROPS } from "../../../../../../styles/common/mui/button";
4
+ import { ColumnFilterTag } from "../../../../../Table/components/TableFeatures/ColumnFilter/components/ColumnFilterTag/columnFilterTag";
5
+ import { StyledGrid } from "./columnFilterTags.styles";
6
+ import { GRID_PROPS } from "./constants";
7
+ export const ColumnFilterTags = ({ className, table, }) => {
8
+ const { getAllColumns, resetColumnFilters } = table;
9
+ const columns = getAllColumns().filter((column) => column.getIsFiltered());
10
+ if (columns.length === 0)
11
+ return null;
12
+ return (React.createElement(StyledGrid, { className: className, ...GRID_PROPS },
13
+ columns.map((column) => (React.createElement(ColumnFilterTag, { key: column.id, column: column }))),
14
+ React.createElement(Button, { onClick: () => resetColumnFilters(true), variant: BUTTON_PROPS.VARIANT.TEXT }, "Clear all")));
15
+ };
@@ -0,0 +1,7 @@
1
+ export declare const StyledGrid: import("@emotion/styled").StyledComponent<import("@mui/material").GridBaseProps & {
2
+ sx?: import("@mui/material").SxProps<import("@mui/material").Theme>;
3
+ } & import("@mui/system").SystemProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
4
+ ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
5
+ }, ("p" | "fontSize" | "fontWeight" | "lineHeight" | "letterSpacing" | "textTransform" | "color" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "right" | "bottom" | "left" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontStyle" | "textAlign") | "sx" | keyof import("@mui/material").GridBaseProps> & {
6
+ theme?: import("@emotion/react").Theme;
7
+ }, {}, {}>;
@@ -0,0 +1,7 @@
1
+ import styled from "@emotion/styled";
2
+ import { Grid } from "@mui/material";
3
+ export const StyledGrid = styled(Grid) `
4
+ .MuiChip-root:last-of-type {
5
+ margin-right: 8px;
6
+ }
7
+ `;
@@ -0,0 +1,2 @@
1
+ import { GridProps } from "@mui/material";
2
+ export declare const GRID_PROPS: GridProps;
@@ -0,0 +1,6 @@
1
+ export const GRID_PROPS = {
2
+ container: true,
3
+ direction: "row",
4
+ spacing: 2,
5
+ wrap: "wrap",
6
+ };
@@ -0,0 +1,6 @@
1
+ import { RowData, Table } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ import { BaseComponentProps } from "../../../../../types";
4
+ export interface ColumnFilterTagsProps<T extends RowData = Attribute> extends BaseComponentProps {
5
+ table: Table<T>;
6
+ }
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
+ import { GlobalFilter } from "../../../Table/components/TableFeatures/GlobalFilter/globalFilter";
2
3
  import { ColumnFilters } from "./components/ColumnFilters/columnFilters";
3
4
  import { StyledGrid } from "./filters.styles";
4
5
  export const Filters = ({ table, }) => {
5
6
  return (React.createElement(StyledGrid, null,
7
+ React.createElement(GlobalFilter, { placeholder: "Search all attributes...", table: table }),
6
8
  React.createElement(ColumnFilters, { table: table })));
7
9
  };
@@ -1,13 +1,13 @@
1
1
  import styled from "@emotion/styled";
2
2
  import { Grid } from "@mui/material";
3
- import { BUTTON_GROUP_PROPS } from "../../../../styles/common/mui/buttonGroup";
3
+ import { mediaTabletDown } from "../../../../styles/common/mixins/breakpoints";
4
4
  export const StyledGrid = styled(Grid) `
5
5
  align-items: center;
6
6
  display: grid;
7
7
  gap: 16px;
8
8
  grid-template-columns: 1fr auto;
9
9
 
10
- .${BUTTON_GROUP_PROPS.CLASSES.ROOT} {
11
- grid-column: 2;
10
+ ${mediaTabletDown} {
11
+ grid-template-columns: 1fr;
12
12
  }
13
13
  `;
@@ -1,4 +1,5 @@
1
1
  import { PartialColumn } from "./types";
2
2
  export declare const BIONETWORK: PartialColumn;
3
+ export declare const DESCRIPTION: PartialColumn;
3
4
  export declare const EXAMPLE: PartialColumn;
4
5
  export declare const REQUIRED: PartialColumn;
@@ -1,22 +1,38 @@
1
+ import { fn } from "@storybook/test";
1
2
  export const BIONETWORK = {
2
3
  columnDef: { header: "BioNetwork" },
3
4
  getCanFilter: () => true,
5
+ getCanGlobalFilter: () => false,
4
6
  getFacetedUniqueValues: () => new Map([
5
7
  ["Nervous System", 3],
6
8
  ["Brain", 2],
7
9
  ["Lung", 1],
8
10
  ]),
11
+ getFilterValue: () => ["Nervous System", "Brain"],
9
12
  id: "bioNetwork",
13
+ setFilterValue: fn(),
14
+ };
15
+ export const DESCRIPTION = {
16
+ columnDef: { header: "Description" },
17
+ getCanFilter: () => false,
18
+ getCanGlobalFilter: () => true,
19
+ getFacetedUniqueValues: () => new Map([
20
+ ["Platform used for single cell library construction.", 1],
21
+ ["Platform used for sequencing.", 1],
22
+ ]),
23
+ id: "description",
10
24
  };
11
25
  export const EXAMPLE = {
12
26
  columnDef: { header: "Example" },
13
27
  getCanFilter: () => false,
28
+ getCanGlobalFilter: () => false,
14
29
  getFacetedUniqueValues: () => new Map([["EFO:0008563", 1]]),
15
30
  id: "example",
16
31
  };
17
32
  export const REQUIRED = {
18
33
  columnDef: { header: "Required" },
19
34
  getCanFilter: () => true,
35
+ getCanGlobalFilter: () => false,
20
36
  getFacetedUniqueValues: () => new Map([
21
37
  ["Required", 16],
22
38
  ["Not Required", 30],
@@ -1,15 +1,21 @@
1
+ import { Box } from "@mui/material";
1
2
  import { action } from "@storybook/addon-actions";
2
3
  import { functionalUpdate } from "@tanstack/react-table";
3
4
  import React from "react";
4
5
  import { Filters } from "../filters";
5
- import { BIONETWORK, EXAMPLE, REQUIRED } from "./constants";
6
- import { useFilterStore } from "./hook";
6
+ import { BIONETWORK, DESCRIPTION, EXAMPLE, REQUIRED } from "./constants";
7
+ import { useFilterStore, useGlobalFilterStore } from "./hook";
7
8
  const meta = {
8
9
  component: Filters,
10
+ decorators: [
11
+ (Story) => (React.createElement(Box, { sx: { width: 600 } },
12
+ React.createElement(Story, null))),
13
+ ],
9
14
  };
10
15
  export default meta;
11
16
  const DefaultStory = () => {
12
17
  const { filterStore, setFilterStore } = useFilterStore();
18
+ const { globalFilter, setGlobalFilter } = useGlobalFilterStore();
13
19
  const makeColumn = (column) => ({
14
20
  ...column,
15
21
  getFilterValue: () => filterStore[column.id],
@@ -22,7 +28,9 @@ const DefaultStory = () => {
22
28
  },
23
29
  });
24
30
  const table = {
25
- getAllColumns: () => [REQUIRED, BIONETWORK, EXAMPLE].map(makeColumn),
31
+ getAllColumns: () => [DESCRIPTION, REQUIRED, BIONETWORK, EXAMPLE].map(makeColumn),
32
+ getState: () => ({ globalFilter }),
33
+ setGlobalFilter,
26
34
  };
27
35
  return React.createElement(Filters, { table: table });
28
36
  };
@@ -3,3 +3,7 @@ export declare function useFilterStore(): {
3
3
  filterStore: Record<string, unknown>;
4
4
  setFilterStore: Dispatch<SetStateAction<Record<string, unknown>>>;
5
5
  };
6
+ export declare function useGlobalFilterStore(): {
7
+ globalFilter: string | undefined;
8
+ setGlobalFilter: Dispatch<SetStateAction<string | undefined>>;
9
+ };
@@ -3,3 +3,7 @@ export function useFilterStore() {
3
3
  const [filterStore, setFilterStore] = useState({});
4
4
  return { filterStore, setFilterStore };
5
5
  }
6
+ export function useGlobalFilterStore() {
7
+ const [globalFilter, setGlobalFilter] = useState();
8
+ return { globalFilter, setGlobalFilter };
9
+ }
@@ -1,2 +1,3 @@
1
+ import React from "react";
1
2
  import { EntitiesLayoutProps } from "./types";
2
- export declare const EntitiesLayout: ({ children, ...props }: EntitiesLayoutProps) => JSX.Element;
3
+ export declare const EntitiesLayout: React.ForwardRefExoticComponent<EntitiesLayoutProps & React.RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,5 @@
1
- import React from "react";
1
+ import React, { forwardRef } from "react";
2
2
  import { Layout } from "./entitiesLayout.styles";
3
- export const EntitiesLayout = ({ children, ...props }) => {
4
- return React.createElement(Layout, { ...props }, children);
5
- };
3
+ export const EntitiesLayout = forwardRef(function EntitiesLayout({ children, spacing, ...props }, ref) {
4
+ return (React.createElement(Layout, { ref: ref, ...spacing, ...props }, children));
5
+ });
@@ -3,14 +3,11 @@ import { mediaTabletDown } from "../../../../../../styles/common/mixins/breakpoi
3
3
  import { LAYOUT_SPACING } from "../../constants";
4
4
  const PB = LAYOUT_SPACING.CONTENT_PADDING_BOTTOM; /* bottom padding */
5
5
  const PT = LAYOUT_SPACING.CONTENT_PADDING_TOP; /* top padding */
6
- const FILTERS_HEIGHT = LAYOUT_SPACING.FILTERS_HEIGHT +
7
- LAYOUT_SPACING.FILTERS_PADDING_TOP; /* filters height */
8
- const TITLE_HEIGHT = LAYOUT_SPACING.TITLE_HEIGHT; /* title height */
9
6
  export const Layout = styled("div") `
10
7
  grid-column: 2;
11
8
  grid-row: 1;
12
9
  padding-bottom: ${PB}px;
13
- padding-top: ${({ top }) => top + TITLE_HEIGHT + FILTERS_HEIGHT + PT}px;
10
+ padding-top: ${({ top }) => top}px;
14
11
  z-index: 1; /* not required, but helpful in that the entities are always on top */
15
12
 
16
13
  ${mediaTabletDown} {
@@ -1,5 +1,7 @@
1
- import { ReactNode } from "react";
1
+ import { CSSProperties, ReactNode } from "react";
2
2
  import { LayoutSpacing } from "../../../../hooks/UseLayoutSpacing/types";
3
- export interface EntitiesLayoutProps extends LayoutSpacing {
3
+ export interface EntitiesLayoutProps {
4
4
  children: ReactNode;
5
+ spacing: LayoutSpacing;
6
+ style?: CSSProperties;
5
7
  }
@@ -1,2 +1,3 @@
1
+ import React from "react";
1
2
  import { FiltersLayoutProps } from "./types";
2
- export declare const FiltersLayout: ({ children, ...props }: FiltersLayoutProps) => JSX.Element;
3
+ export declare const FiltersLayout: React.ForwardRefExoticComponent<FiltersLayoutProps & React.RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,5 @@
1
- import React from "react";
1
+ import React, { forwardRef } from "react";
2
2
  import { Layout } from "./filtersLayout.styles";
3
- export const FiltersLayout = ({ children, ...props }) => {
4
- return React.createElement(Layout, { ...props }, children);
5
- };
3
+ export const FiltersLayout = forwardRef(function FiltersLayout({ children, ...props }, ref) {
4
+ return (React.createElement(Layout, { ref: ref, ...props }, children));
5
+ });
@@ -8,9 +8,11 @@ const TITLE_HEIGHT = LAYOUT_SPACING.TITLE_HEIGHT; /* title height */
8
8
  export const Layout = styled("div") `
9
9
  align-self: flex-start;
10
10
  background-color: ${PALETTE.BACKGROUND_DEFAULT};
11
+ display: grid;
12
+ gap: 12px;
11
13
  grid-column: 2;
12
14
  grid-row: 1;
13
- margin-bottom: ${PB}px;
15
+ padding-bottom: ${PB}px;
14
16
  padding-top: ${({ top }) => top + TITLE_HEIGHT + PT}px;
15
17
  position: sticky;
16
18
  top: 0;
@@ -20,5 +22,6 @@ export const Layout = styled("div") `
20
22
  grid-column: 1;
21
23
  grid-row: auto;
22
24
  padding-top: ${PT}px;
25
+ position: relative;
23
26
  }
24
27
  `;
@@ -1,3 +1,3 @@
1
- import { ColumnDef, RowData, Table, TableOptions } from "@tanstack/react-table";
1
+ import { RowData, Table, TableOptions } from "@tanstack/react-table";
2
2
  import { Attribute, Class } from "../../../../common/entities";
3
- export declare const useTable: <T extends RowData = Attribute>(classes: Class<T>[], columnDefs: ColumnDef<T, T[keyof T]>[], tableOptions?: Omit<TableOptions<T>, "columns" | "data" | "getCoreRowModel">) => Table<T>;
3
+ export declare const useTable: <T extends RowData = Attribute>(dictionary: string, classes: Class<T>[], tableOptions: Omit<TableOptions<T>, "data" | "getCoreRowModel">) => Table<T>;
@@ -1,21 +1,25 @@
1
1
  import { useReactTable, } from "@tanstack/react-table";
2
2
  import { useMemo } from "react";
3
+ import { useDataDictionaryState } from "../../../../providers/dataDictionaryState/hooks/UseDataDictionaryState/hook";
3
4
  import { useTableOptions } from "./options/hook";
4
5
  import { buildClassMeta, buildTableData } from "./utils";
5
- export const useTable = (classes, columnDefs, tableOptions) => {
6
- // Build table data.
6
+ export const useTable = (dictionary, classes, tableOptions) => {
7
+ // Table data.
7
8
  const data = useMemo(() => buildTableData(classes), [classes]);
8
9
  // Default table options.
9
10
  const defaultTableOptions = useTableOptions();
10
11
  // Build class meta.
11
12
  const classMeta = useMemo(() => buildClassMeta(classes), [classes]);
13
+ // Table state.
14
+ const { dataDictionaryState } = useDataDictionaryState();
15
+ const { dictionaries } = dataDictionaryState;
16
+ const { state = {} } = dictionaries?.[dictionary] || {};
12
17
  // Table instance.
13
18
  return useReactTable({
14
19
  ...defaultTableOptions,
15
20
  ...tableOptions,
16
- columns: columnDefs,
17
21
  data,
18
- manualPagination: true,
19
22
  meta: { classMeta },
23
+ state,
20
24
  });
21
25
  };
@@ -1,8 +1,9 @@
1
1
  import { getFilteredRowModel, } from "@tanstack/react-table";
2
2
  import { arrIncludesSome } from "../../../../../Table/columnDef/columnFilters/filterFn";
3
+ import { fuzzy } from "../../../../../Table/columnDef/globalFilter/filterFn";
3
4
  export const COLUMN_FILTERS_OPTIONS = {
4
5
  enableColumnFilters: true,
5
6
  enableFilters: true,
6
- filterFns: { arrIncludesSome },
7
+ filterFns: { arrIncludesSome, fuzzy },
7
8
  getFilteredRowModel: getFilteredRowModel(),
8
9
  };
@@ -1,6 +1,3 @@
1
- import { ColumnFiltersOptions, ColumnFiltersState, RowData } from "@tanstack/react-table";
2
- import { Dispatch, SetStateAction } from "react";
1
+ import { ColumnFiltersOptions, RowData } from "@tanstack/react-table";
3
2
  import { Attribute } from "../../../../../../common/entities";
4
- export declare const useColumnFiltersOptions: <T extends RowData = Attribute>({ setColumnFilters, }: {
5
- setColumnFilters: Dispatch<SetStateAction<ColumnFiltersState>>;
6
- }) => ColumnFiltersOptions<T>;
3
+ export declare const useColumnFiltersOptions: <T extends RowData = Attribute>() => ColumnFiltersOptions<T>;
@@ -1,12 +1,14 @@
1
1
  import { useCallback } from "react";
2
- import { resolveUpdater } from "../../../../../Table/options/updater";
2
+ import { useDataDictionary } from "../../../../../../providers/dataDictionary/hook";
3
+ import { updateColumnFilters } from "../../../../../../providers/dataDictionaryState/actions/updateColumnFilters/dispatch";
4
+ import { useDataDictionaryState } from "../../../../../../providers/dataDictionaryState/hooks/UseDataDictionaryState/hook";
3
5
  import { COLUMN_FILTERS_OPTIONS } from "./constants";
4
- export const useColumnFiltersOptions = ({ setColumnFilters, }) => {
5
- // Column filters change handler.
6
- // TODO dispatch to provider with reducer.
6
+ export const useColumnFiltersOptions = () => {
7
+ const { dictionary } = useDataDictionary();
8
+ const { dataDictionaryDispatch } = useDataDictionaryState();
7
9
  const onColumnFiltersChange = useCallback((updaterOrValue) => {
8
- setColumnFilters((old) => resolveUpdater(updaterOrValue, old));
9
- }, [setColumnFilters]);
10
+ dataDictionaryDispatch?.(updateColumnFilters({ dictionary, updaterOrValue }));
11
+ }, [dataDictionaryDispatch, dictionary]);
10
12
  return {
11
13
  ...COLUMN_FILTERS_OPTIONS,
12
14
  onColumnFiltersChange,
@@ -0,0 +1,2 @@
1
+ import { GlobalFilterOptions, RowData } from "@tanstack/react-table";
2
+ export declare const GLOBAL_FILTER_OPTIONS: Pick<GlobalFilterOptions<RowData>, "enableGlobalFilter" | "getColumnCanGlobalFilter" | "globalFilterFn">;
@@ -0,0 +1,5 @@
1
+ export const GLOBAL_FILTER_OPTIONS = {
2
+ enableGlobalFilter: true,
3
+ getColumnCanGlobalFilter: () => true,
4
+ globalFilterFn: "fuzzy",
5
+ };
@@ -0,0 +1,3 @@
1
+ import { GlobalFilterOptions, RowData } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ export declare const useGlobalFilterOptions: <T extends RowData = Attribute>() => GlobalFilterOptions<T>;
@@ -0,0 +1,16 @@
1
+ import { useCallback } from "react";
2
+ import { useDataDictionary } from "../../../../../../providers/dataDictionary/hook";
3
+ import { updateGlobalFilter } from "../../../../../../providers/dataDictionaryState/actions/updateGlobalFilter/dispatch";
4
+ import { useDataDictionaryState } from "../../../../../../providers/dataDictionaryState/hooks/UseDataDictionaryState/hook";
5
+ import { GLOBAL_FILTER_OPTIONS } from "./constants";
6
+ export const useGlobalFilterOptions = () => {
7
+ const { dictionary } = useDataDictionary();
8
+ const { dataDictionaryDispatch } = useDataDictionaryState();
9
+ const onGlobalFilterChange = useCallback((updaterOrValue) => {
10
+ dataDictionaryDispatch?.(updateGlobalFilter({ dictionary, updaterOrValue }));
11
+ }, [dataDictionaryDispatch, dictionary]);
12
+ return {
13
+ ...GLOBAL_FILTER_OPTIONS,
14
+ onGlobalFilterChange,
15
+ };
16
+ };
@@ -1,25 +1,27 @@
1
- import { useState } from "react";
2
1
  import { useColumnFiltersOptions } from "./columnFilters/hook";
3
2
  import { CORE_OPTIONS } from "./core/constants";
4
3
  import { EXPANDED_OPTIONS } from "./expanded/constants";
5
4
  import { FACETED_OPTIONS } from "./faceted/constants";
5
+ import { useGlobalFilterOptions } from "./globalFilter/hook";
6
6
  import { GROUPING_OPTIONS } from "./grouping/constants";
7
+ import { PAGINATION_OPTIONS } from "./pagination/constants";
7
8
  import { SORTING_OPTIONS } from "./sorting/constants";
8
9
  import { VISIBILITY_OPTIONS } from "./visibility/constants";
9
10
  export const useTableOptions = () => {
10
- // Column filters state - to be moved to a provider with a reducer.
11
- const [columnFilters, setColumnFilters] = useState([]);
12
11
  // Column filters options.
13
- const columnFiltersOptions = useColumnFiltersOptions({ setColumnFilters });
12
+ const columnFiltersOptions = useColumnFiltersOptions();
13
+ // Global filter options.
14
+ const globalFilterOptions = useGlobalFilterOptions();
14
15
  // Table options.
15
16
  return {
16
17
  ...columnFiltersOptions,
17
18
  ...CORE_OPTIONS,
18
19
  ...EXPANDED_OPTIONS,
19
20
  ...FACETED_OPTIONS,
21
+ ...globalFilterOptions,
20
22
  ...GROUPING_OPTIONS,
23
+ ...PAGINATION_OPTIONS,
21
24
  ...SORTING_OPTIONS,
22
25
  ...VISIBILITY_OPTIONS,
23
- state: { columnFilters },
24
26
  };
25
27
  };
@@ -0,0 +1,2 @@
1
+ import { PaginationOptions } from "@tanstack/react-table";
2
+ export declare const PAGINATION_OPTIONS: Pick<PaginationOptions, "autoResetPageIndex">;
@@ -0,0 +1,3 @@
1
+ export const PAGINATION_OPTIONS = {
2
+ autoResetPageIndex: false, // Temporary fix for hydration issue, see https://github.com/TanStack/table/issues/5026.
3
+ };
@@ -1,4 +1,4 @@
1
1
  import { RowData } from "@tanstack/react-table";
2
2
  import { Attribute } from "../../common/entities";
3
3
  import { DataDictionaryProps } from "./types";
4
- export declare const DataDictionary: <T extends RowData = Attribute>({ className, EntitiesLayout, FiltersLayout, Outline, OutlineLayout, Title, TitleLayout, }: DataDictionaryProps) => JSX.Element;
4
+ export declare const DataDictionary: <T extends RowData = Attribute>({ className, dictionary, EntitiesLayout, FiltersLayout, Outline, OutlineLayout, Title, TitleLayout, }: DataDictionaryProps) => JSX.Element;