@databiosphere/findable-ui 18.0.0 → 20.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 (536) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.d.ts +2 -0
  4. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.js +29 -0
  5. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.d.ts +6 -0
  6. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.d.ts +2 -0
  7. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.js +17 -0
  8. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.d.ts +5 -0
  9. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.js +12 -0
  10. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.d.ts +4 -0
  11. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.js +1 -0
  12. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.d.ts +15 -0
  13. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.js +53 -0
  14. package/lib/components/ComponentCreator/ComponentCreator.js +2 -3
  15. package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +2 -0
  16. package/lib/components/Detail/components/Table/components/TableRows/tableRows.js +1 -15
  17. package/lib/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.js +9 -10
  18. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.js +2 -2
  19. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.js +1 -1
  20. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.js +8 -3
  21. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.d.ts +2 -1
  22. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.js +17 -14
  23. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.d.ts +3 -4
  24. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.js +15 -24
  25. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
  26. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.js +2 -2
  27. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.d.ts +2 -0
  28. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.js +14 -0
  29. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.js +3 -2
  30. package/lib/components/Layout/components/Header/header.js +1 -1
  31. package/lib/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.js +23 -12
  32. package/lib/components/Login/components/Button/button.d.ts +2 -0
  33. package/lib/components/Login/components/Button/button.js +6 -0
  34. package/lib/components/Login/components/Button/button.styles.d.ts +5 -0
  35. package/lib/components/Login/components/Button/button.styles.js +11 -0
  36. package/lib/components/Login/components/Button/constants.d.ts +2 -0
  37. package/lib/components/Login/components/Button/constants.js +6 -0
  38. package/lib/components/Login/components/Button/types.d.ts +3 -0
  39. package/lib/components/Login/components/Button/types.js +1 -0
  40. package/lib/components/Login/login.d.ts +2 -9
  41. package/lib/components/Login/login.js +9 -10
  42. package/lib/components/Login/types.d.ts +10 -0
  43. package/lib/components/Login/types.js +1 -0
  44. package/lib/components/Table/common/columnDef.js +1 -0
  45. package/lib/components/Table/common/gridTable.styles.js +5 -11
  46. package/lib/components/Table/common/utils.d.ts +3 -29
  47. package/lib/components/Table/common/utils.js +25 -60
  48. package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.d.ts +3 -0
  49. package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.js +3 -0
  50. package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.d.ts +8 -0
  51. package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.js +18 -0
  52. package/lib/components/Table/components/TableBody/hooks/virtualizer/types.d.ts +4 -0
  53. package/lib/components/Table/components/TableBody/hooks/virtualizer/types.js +1 -0
  54. package/lib/components/Table/components/TableBody/tableBody.d.ts +3 -2
  55. package/lib/components/Table/components/TableBody/tableBody.js +7 -28
  56. package/lib/components/Table/components/TableBody/utils.d.ts +12 -0
  57. package/lib/components/Table/components/TableBody/utils.js +17 -0
  58. package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.d.ts +3 -1
  59. package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.js +6 -14
  60. package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.d.ts +28 -0
  61. package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.js +52 -0
  62. package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.d.ts +21 -0
  63. package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.js +37 -0
  64. package/lib/components/Table/components/TableFeatures/RowSorting/utils.d.ts +29 -0
  65. package/lib/components/Table/components/TableFeatures/RowSorting/utils.js +68 -0
  66. package/lib/components/Table/components/TableHead/tableHead.d.ts +2 -6
  67. package/lib/components/Table/components/TableHead/tableHead.js +6 -4
  68. package/lib/components/Table/components/TableHead/types.d.ts +6 -0
  69. package/lib/components/Table/components/TableHead/types.js +1 -0
  70. package/lib/components/Table/components/TableHead/utils.d.ts +19 -0
  71. package/lib/components/Table/components/TableHead/utils.js +34 -0
  72. package/lib/components/Table/components/TableRow/tableRow.styles.d.ts +1 -0
  73. package/lib/components/Table/components/TableRow/tableRow.styles.js +14 -2
  74. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -2
  75. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +8 -4
  76. package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.d.ts +9 -0
  77. package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.js +17 -0
  78. package/lib/components/Table/components/TableRows/tableRows.d.ts +3 -3
  79. package/lib/components/Table/components/TableRows/tableRows.js +9 -5
  80. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.d.ts +3 -0
  81. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.js +26 -0
  82. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.d.ts +2 -0
  83. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.js +16 -0
  84. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.d.ts +3 -0
  85. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.js +12 -0
  86. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.d.ts +7 -0
  87. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.js +1 -0
  88. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.d.ts +4 -0
  89. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.js +13 -0
  90. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.d.ts +4 -0
  91. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.js +1 -0
  92. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.d.ts +17 -0
  93. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.js +36 -0
  94. package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.d.ts +2 -3
  95. package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.js +3 -11
  96. package/lib/components/Table/components/TableToolbar/tableToolbar.js +4 -2
  97. package/lib/components/Table/features/RowPosition/constants.js +2 -2
  98. package/lib/components/Table/features/RowPosition/utils.d.ts +2 -2
  99. package/lib/components/Table/features/RowPosition/utils.js +12 -5
  100. package/lib/components/Table/options/updater.d.ts +10 -0
  101. package/lib/components/Table/options/updater.js +24 -0
  102. package/lib/components/Table/table.js +22 -17
  103. package/lib/components/TableCreator/common/constants.d.ts +2 -2
  104. package/lib/components/TableCreator/common/constants.js +2 -1
  105. package/lib/components/TableCreator/common/utils.d.ts +5 -2
  106. package/lib/components/TableCreator/common/utils.js +11 -4
  107. package/lib/components/TableCreator/options/expanded/constants.d.ts +2 -0
  108. package/lib/components/TableCreator/options/expanded/constants.js +6 -0
  109. package/lib/components/TableCreator/options/expanded/hook.d.ts +2 -0
  110. package/lib/components/TableCreator/options/expanded/hook.js +4 -0
  111. package/lib/components/TableCreator/options/grouping/constants.d.ts +2 -0
  112. package/lib/components/TableCreator/options/grouping/constants.js +5 -0
  113. package/lib/components/TableCreator/options/grouping/hook.d.ts +2 -0
  114. package/lib/components/TableCreator/options/grouping/hook.js +9 -0
  115. package/lib/components/TableCreator/options/hook.d.ts +2 -0
  116. package/lib/components/TableCreator/options/hook.js +25 -0
  117. package/lib/components/TableCreator/options/rowSelection/constants.d.ts +2 -0
  118. package/lib/components/TableCreator/options/rowSelection/constants.js +5 -0
  119. package/lib/components/TableCreator/options/rowSelection/hook.d.ts +2 -0
  120. package/lib/components/TableCreator/options/rowSelection/hook.js +4 -0
  121. package/lib/components/TableCreator/options/sorting/constants.d.ts +2 -0
  122. package/lib/components/TableCreator/options/sorting/constants.js +5 -0
  123. package/lib/components/TableCreator/options/sorting/hook.d.ts +2 -0
  124. package/lib/components/TableCreator/options/sorting/hook.js +4 -0
  125. package/lib/components/TableCreator/tableCreator.d.ts +3 -5
  126. package/lib/components/TableCreator/tableCreator.js +4 -2
  127. package/lib/components/common/Banner/components/SessionTimeout/sessionTimeout.js +1 -1
  128. package/lib/components/common/CustomIcon/common/entities.d.ts +1 -4
  129. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.d.ts +2 -2
  130. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.js +1 -1
  131. package/lib/components/common/DropdownMenu/dropdownMenu.d.ts +2 -3
  132. package/lib/components/common/DropdownMenu/dropdownMenu.js +7 -7
  133. package/lib/components/common/DropdownMenu/dropdownMenu.styles.d.ts +1 -1
  134. package/lib/components/common/DropdownMenu/dropdownMenu.styles.js +1 -1
  135. package/lib/components/common/Menu/hooks/useMenu.d.ts +5 -6
  136. package/lib/config/entities.d.ts +28 -29
  137. package/lib/config/utils.d.ts +0 -7
  138. package/lib/config/utils.js +0 -12
  139. package/lib/hooks/authentication/auth/useAuthReducer.d.ts +2 -0
  140. package/lib/hooks/authentication/auth/useAuthReducer.js +8 -0
  141. package/lib/hooks/authentication/authentication/useAuthenticationReducer.d.ts +2 -0
  142. package/lib/hooks/authentication/authentication/useAuthenticationReducer.js +8 -0
  143. package/lib/hooks/authentication/config/useAuthenticationConfig.d.ts +6 -0
  144. package/lib/hooks/authentication/config/useAuthenticationConfig.js +9 -0
  145. package/lib/hooks/authentication/credentials/useCredentialsReducer.d.ts +2 -0
  146. package/lib/hooks/authentication/credentials/useCredentialsReducer.js +7 -0
  147. package/lib/hooks/authentication/profile/types.d.ts +5 -0
  148. package/lib/hooks/authentication/profile/types.js +1 -0
  149. package/lib/hooks/authentication/profile/useProfile.d.ts +6 -0
  150. package/lib/hooks/authentication/profile/useProfile.js +15 -0
  151. package/lib/hooks/authentication/providers/types.d.ts +6 -0
  152. package/lib/hooks/authentication/providers/types.js +1 -0
  153. package/lib/hooks/authentication/providers/useProviders.d.ts +6 -0
  154. package/lib/hooks/authentication/providers/useProviders.js +14 -0
  155. package/lib/hooks/authentication/session/useSessionActive.d.ts +12 -0
  156. package/lib/hooks/authentication/session/useSessionActive.js +36 -0
  157. package/lib/hooks/authentication/session/useSessionCallbackUrl.d.ts +4 -0
  158. package/lib/hooks/authentication/session/useSessionCallbackUrl.js +20 -0
  159. package/lib/hooks/authentication/session/useSessionIdleTimer.d.ts +6 -0
  160. package/lib/hooks/authentication/session/useSessionIdleTimer.js +8 -0
  161. package/lib/hooks/{useSessionTimeout.js → authentication/session/useSessionTimeout.js} +2 -2
  162. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.d.ts +0 -1
  163. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.js +6 -9
  164. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.js +3 -4
  165. package/lib/hooks/authentication/token/types.d.ts +4 -0
  166. package/lib/hooks/authentication/token/types.js +1 -0
  167. package/lib/hooks/authentication/token/useToken.d.ts +2 -0
  168. package/lib/hooks/authentication/token/useToken.js +5 -0
  169. package/lib/hooks/authentication/token/useTokenReducer.d.ts +7 -0
  170. package/lib/hooks/authentication/token/useTokenReducer.js +12 -0
  171. package/lib/hooks/useEntityList.js +2 -2
  172. package/lib/hooks/useFetchEntity.js +4 -3
  173. package/lib/hooks/useFileManifest/useFetchFilesFacets.js +2 -3
  174. package/lib/hooks/useFileManifest/useFetchSummary.js +2 -3
  175. package/lib/hooks/useRequestFileLocation.js +2 -3
  176. package/lib/hooks/useRouteHistory.d.ts +14 -0
  177. package/lib/hooks/useRouteHistory.js +40 -0
  178. package/lib/hooks/useRouteRoot.d.ts +1 -0
  179. package/lib/hooks/useRouteRoot.js +8 -0
  180. package/lib/hooks/useSummary.js +3 -3
  181. package/lib/providers/authentication/auth/actions.d.ts +8 -0
  182. package/lib/providers/authentication/auth/actions.js +12 -0
  183. package/lib/providers/authentication/auth/constants.d.ts +2 -0
  184. package/lib/providers/authentication/auth/constants.js +5 -0
  185. package/lib/providers/authentication/auth/context.d.ts +2 -0
  186. package/lib/providers/authentication/auth/context.js +7 -0
  187. package/lib/providers/authentication/auth/dispatch.d.ts +23 -0
  188. package/lib/providers/authentication/auth/dispatch.js +43 -0
  189. package/lib/providers/authentication/auth/hook.d.ts +6 -0
  190. package/lib/providers/authentication/auth/hook.js +9 -0
  191. package/lib/providers/authentication/auth/reducer.d.ts +8 -0
  192. package/lib/providers/authentication/auth/reducer.js +24 -0
  193. package/lib/providers/authentication/auth/types.d.ts +48 -0
  194. package/lib/providers/authentication/auth/types.js +11 -0
  195. package/lib/providers/authentication/authentication/actions.d.ts +8 -0
  196. package/lib/providers/authentication/authentication/actions.js +12 -0
  197. package/lib/providers/authentication/authentication/constants.d.ts +2 -0
  198. package/lib/providers/authentication/authentication/constants.js +5 -0
  199. package/lib/providers/authentication/authentication/context.d.ts +2 -0
  200. package/lib/providers/authentication/authentication/context.js +6 -0
  201. package/lib/providers/authentication/authentication/dispatch.d.ts +22 -0
  202. package/lib/providers/authentication/authentication/dispatch.js +42 -0
  203. package/lib/providers/authentication/authentication/hook.d.ts +6 -0
  204. package/lib/providers/authentication/authentication/hook.js +9 -0
  205. package/lib/providers/authentication/authentication/reducer.d.ts +9 -0
  206. package/lib/providers/authentication/authentication/reducer.js +25 -0
  207. package/lib/providers/authentication/authentication/types.d.ts +47 -0
  208. package/lib/providers/authentication/authentication/types.js +11 -0
  209. package/lib/providers/authentication/authentication/utils.d.ts +12 -0
  210. package/lib/providers/authentication/authentication/utils.js +18 -0
  211. package/lib/providers/authentication/common/types.d.ts +1 -0
  212. package/lib/providers/authentication/common/types.js +1 -0
  213. package/lib/providers/authentication/common/utils.d.ts +6 -0
  214. package/lib/providers/authentication/common/utils.js +11 -0
  215. package/lib/providers/authentication/credentials/actions.d.ts +8 -0
  216. package/lib/providers/authentication/credentials/actions.js +12 -0
  217. package/lib/providers/authentication/credentials/constants.d.ts +2 -0
  218. package/lib/providers/authentication/credentials/constants.js +3 -0
  219. package/lib/providers/authentication/credentials/context.d.ts +2 -0
  220. package/lib/providers/authentication/credentials/context.js +6 -0
  221. package/lib/providers/authentication/credentials/dispatch.d.ts +12 -0
  222. package/lib/providers/authentication/credentials/dispatch.js +22 -0
  223. package/lib/providers/authentication/credentials/hook.d.ts +6 -0
  224. package/lib/providers/authentication/credentials/hook.js +9 -0
  225. package/lib/providers/authentication/credentials/reducer.d.ts +8 -0
  226. package/lib/providers/authentication/credentials/reducer.js +22 -0
  227. package/lib/providers/authentication/credentials/types.d.ts +24 -0
  228. package/lib/providers/authentication/credentials/types.js +5 -0
  229. package/lib/providers/authentication/terra/context.d.ts +2 -0
  230. package/lib/providers/authentication/terra/context.js +7 -0
  231. package/lib/providers/authentication/terra/hook.d.ts +6 -0
  232. package/lib/providers/authentication/terra/hook.js +9 -0
  233. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.d.ts +2 -0
  234. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.js +7 -0
  235. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.d.ts +3 -7
  236. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.js +1 -5
  237. package/lib/providers/authentication/terra/hooks/useFetchProfiles.d.ts +13 -0
  238. package/lib/providers/authentication/terra/hooks/useFetchProfiles.js +31 -0
  239. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.js +11 -6
  240. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.js +11 -6
  241. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.js +11 -6
  242. package/lib/providers/authentication/terra/hooks/utils.d.ts +16 -0
  243. package/lib/providers/authentication/terra/hooks/utils.js +19 -0
  244. package/lib/providers/authentication/terra/provider.d.ts +2 -0
  245. package/lib/providers/authentication/terra/provider.js +42 -0
  246. package/lib/providers/authentication/terra/types.d.ts +20 -0
  247. package/lib/providers/authentication/terra/types.js +6 -0
  248. package/lib/providers/authentication/terra/utils.d.ts +19 -0
  249. package/lib/providers/authentication/terra/utils.js +36 -0
  250. package/lib/providers/authentication/token/constants.d.ts +2 -0
  251. package/lib/providers/authentication/token/constants.js +4 -0
  252. package/lib/providers/authentication/token/dispatch.d.ts +12 -0
  253. package/lib/providers/authentication/token/dispatch.js +22 -0
  254. package/lib/providers/authentication/token/reducer.d.ts +8 -0
  255. package/lib/providers/authentication/token/reducer.js +22 -0
  256. package/lib/providers/authentication/token/types.d.ts +28 -0
  257. package/lib/providers/authentication/token/types.js +5 -0
  258. package/lib/providers/exploreState/actions/updateGrouping/action.d.ts +10 -0
  259. package/lib/providers/exploreState/actions/updateGrouping/action.js +16 -0
  260. package/lib/providers/exploreState/actions/updateGrouping/dispatch.d.ts +7 -0
  261. package/lib/providers/exploreState/actions/updateGrouping/dispatch.js +12 -0
  262. package/lib/providers/exploreState/actions/updateGrouping/types.d.ts +9 -0
  263. package/lib/providers/exploreState/actions/updateGrouping/types.js +1 -0
  264. package/lib/providers/exploreState/actions/updateGrouping/utils.d.ts +10 -0
  265. package/lib/providers/exploreState/actions/updateGrouping/utils.js +26 -0
  266. package/lib/providers/exploreState/entities.d.ts +3 -4
  267. package/lib/providers/exploreState/initializer/utils.js +41 -8
  268. package/lib/providers/exploreState/payloads/entities.d.ts +2 -1
  269. package/lib/providers/exploreState/utils.d.ts +6 -4
  270. package/lib/providers/exploreState/utils.js +7 -4
  271. package/lib/providers/exploreState.d.ts +3 -1
  272. package/lib/providers/exploreState.js +18 -10
  273. package/lib/providers/googleSignInAuthentication/common/types.d.ts +17 -0
  274. package/lib/providers/googleSignInAuthentication/common/types.js +1 -0
  275. package/lib/providers/googleSignInAuthentication/constants.d.ts +4 -0
  276. package/lib/providers/googleSignInAuthentication/constants.js +12 -0
  277. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.d.ts +3 -0
  278. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.js +36 -0
  279. package/lib/providers/googleSignInAuthentication/profile/types.d.ts +14 -0
  280. package/lib/providers/googleSignInAuthentication/profile/types.js +1 -0
  281. package/lib/providers/googleSignInAuthentication/profile/utils.d.ts +8 -0
  282. package/lib/providers/googleSignInAuthentication/profile/utils.js +25 -0
  283. package/lib/providers/googleSignInAuthentication/provider.d.ts +2 -0
  284. package/lib/providers/googleSignInAuthentication/provider.js +40 -0
  285. package/lib/providers/googleSignInAuthentication/service/constants.d.ts +4 -0
  286. package/lib/providers/googleSignInAuthentication/service/constants.js +9 -0
  287. package/lib/providers/googleSignInAuthentication/service/service.d.ts +6 -0
  288. package/lib/providers/googleSignInAuthentication/service/service.js +43 -0
  289. package/lib/providers/googleSignInAuthentication/types.d.ts +6 -0
  290. package/lib/providers/googleSignInAuthentication/types.js +1 -0
  291. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.d.ts +2 -0
  292. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.js +14 -0
  293. package/lib/providers/nextAuthAuthentication/provider.d.ts +2 -0
  294. package/lib/providers/nextAuthAuthentication/provider.js +30 -0
  295. package/lib/providers/nextAuthAuthentication/service/service.d.ts +6 -0
  296. package/lib/providers/nextAuthAuthentication/service/service.js +12 -0
  297. package/lib/providers/nextAuthAuthentication/types.d.ts +8 -0
  298. package/lib/providers/nextAuthAuthentication/types.js +1 -0
  299. package/lib/routes/constants.d.ts +3 -0
  300. package/lib/routes/constants.js +3 -0
  301. package/lib/styles/common/mui/button.d.ts +3 -0
  302. package/lib/styles/common/mui/button.js +17 -0
  303. package/lib/styles/common/mui/paper.d.ts +2 -0
  304. package/lib/styles/common/mui/paper.js +9 -0
  305. package/lib/styles/common/mui/popover.d.ts +3 -0
  306. package/lib/styles/common/mui/popover.js +10 -0
  307. package/lib/theme/common/entities.d.ts +6 -0
  308. package/lib/theme/common/entities.js +1 -0
  309. package/lib/views/ExploreView/exploreView.js +2 -2
  310. package/lib/views/LoginView/loginView.d.ts +5 -1
  311. package/lib/views/LoginView/loginView.js +6 -4
  312. package/package.json +3 -2
  313. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.tsx +38 -0
  314. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/types.ts +7 -0
  315. package/src/components/Authentication/components/SessionController/components/NextSessionController/SessionController.tsx +23 -0
  316. package/src/components/Authentication/components/SessionController/components/NextSessionController/constants.ts +21 -0
  317. package/src/components/Authentication/components/SessionController/components/NextSessionController/types.ts +5 -0
  318. package/src/components/Authentication/components/SessionController/components/NextSessionController/utils.ts +74 -0
  319. package/src/components/ComponentCreator/ComponentCreator.tsx +4 -3
  320. package/src/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +2 -0
  321. package/src/components/Detail/components/Table/components/TableRows/tableRows.tsx +3 -18
  322. package/src/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.tsx +28 -32
  323. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.tsx +4 -4
  324. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.tsx +1 -1
  325. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.tsx +9 -6
  326. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.tsx +27 -25
  327. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.ts +2 -2
  328. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.tsx +18 -42
  329. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.ts +19 -0
  330. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.ts +3 -2
  331. package/src/components/Layout/components/Header/header.tsx +1 -1
  332. package/src/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.tsx +27 -13
  333. package/src/components/Login/components/Button/button.styles.ts +12 -0
  334. package/src/components/Login/components/Button/button.tsx +8 -0
  335. package/src/components/Login/components/Button/constants.ts +8 -0
  336. package/src/components/Login/components/Button/types.ts +4 -0
  337. package/src/components/Login/login.tsx +28 -28
  338. package/src/components/Login/types.ts +11 -0
  339. package/src/components/Table/common/columnDef.ts +1 -0
  340. package/src/components/Table/common/gridTable.styles.ts +5 -11
  341. package/src/components/Table/common/utils.ts +44 -107
  342. package/src/components/Table/components/TableBody/hooks/virtualizer/constants.ts +3 -0
  343. package/src/components/Table/components/TableBody/hooks/virtualizer/hook.ts +23 -0
  344. package/src/components/Table/components/TableBody/hooks/virtualizer/types.ts +5 -0
  345. package/src/components/Table/components/TableBody/tableBody.tsx +14 -30
  346. package/src/components/Table/components/TableBody/utils.ts +21 -0
  347. package/src/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.tsx +14 -15
  348. package/src/components/Table/components/TableFeatures/ColumnGrouping/utils.ts +70 -0
  349. package/src/components/Table/components/TableFeatures/ColumnVisibility/utils.ts +52 -0
  350. package/src/components/Table/components/TableFeatures/RowSorting/utils.ts +87 -0
  351. package/src/components/Table/components/TableHead/tableHead.tsx +21 -29
  352. package/src/components/Table/components/TableHead/types.ts +7 -0
  353. package/src/components/Table/components/TableHead/utils.ts +42 -0
  354. package/src/components/Table/components/TableRow/tableRow.styles.ts +19 -2
  355. package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +8 -2
  356. package/src/components/Table/components/TableRows/components/CollapsableRows/hook.ts +20 -0
  357. package/src/components/Table/components/TableRows/tableRows.tsx +18 -15
  358. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.ts +17 -0
  359. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.tsx +54 -0
  360. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.tsx +28 -0
  361. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.ts +8 -0
  362. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/constants.ts +17 -0
  363. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/types.ts +5 -0
  364. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/utils.ts +45 -0
  365. package/src/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.tsx +7 -20
  366. package/src/components/Table/components/TableToolbar/tableToolbar.tsx +8 -2
  367. package/src/components/Table/features/RowPosition/constants.ts +2 -2
  368. package/src/components/Table/features/RowPosition/utils.ts +10 -5
  369. package/src/components/Table/options/updater.ts +29 -0
  370. package/src/components/Table/table.tsx +43 -25
  371. package/src/components/TableCreator/common/constants.ts +4 -6
  372. package/src/components/TableCreator/common/utils.ts +14 -7
  373. package/src/components/TableCreator/options/expanded/constants.ts +14 -0
  374. package/src/components/TableCreator/options/expanded/hook.ts +6 -0
  375. package/src/components/TableCreator/options/grouping/constants.ts +6 -0
  376. package/src/components/TableCreator/options/grouping/hook.ts +17 -0
  377. package/src/components/TableCreator/options/hook.ts +31 -0
  378. package/src/components/TableCreator/options/rowSelection/constants.ts +10 -0
  379. package/src/components/TableCreator/options/rowSelection/hook.ts +8 -0
  380. package/src/components/TableCreator/options/sorting/constants.ts +10 -0
  381. package/src/components/TableCreator/options/sorting/hook.ts +6 -0
  382. package/src/components/TableCreator/tableCreator.tsx +4 -11
  383. package/src/components/common/Banner/components/SessionTimeout/sessionTimeout.tsx +1 -1
  384. package/src/components/common/CustomIcon/common/entities.ts +1 -4
  385. package/src/components/common/CustomIcon/components/GoogleIcon/googleIcon.tsx +3 -4
  386. package/src/components/common/DropdownMenu/dropdownMenu.styles.ts +1 -1
  387. package/src/components/common/DropdownMenu/dropdownMenu.tsx +19 -17
  388. package/src/components/common/Menu/hooks/useMenu.ts +8 -9
  389. package/src/config/entities.ts +30 -34
  390. package/src/config/utils.ts +0 -14
  391. package/src/hooks/authentication/auth/useAuthReducer.ts +16 -0
  392. package/src/hooks/authentication/authentication/useAuthenticationReducer.ts +16 -0
  393. package/src/hooks/authentication/config/useAuthenticationConfig.ts +13 -0
  394. package/src/hooks/authentication/credentials/useCredentialsReducer.ts +13 -0
  395. package/src/hooks/authentication/profile/types.ts +9 -0
  396. package/src/hooks/authentication/profile/useProfile.ts +21 -0
  397. package/src/hooks/authentication/providers/types.ts +7 -0
  398. package/src/hooks/authentication/providers/useProviders.ts +23 -0
  399. package/src/hooks/authentication/session/useSessionActive.ts +51 -0
  400. package/src/hooks/authentication/session/useSessionCallbackUrl.ts +25 -0
  401. package/src/hooks/authentication/session/useSessionIdleTimer.ts +10 -0
  402. package/src/hooks/{useSessionTimeout.ts → authentication/session/useSessionTimeout.ts} +2 -2
  403. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.ts +8 -13
  404. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.ts +3 -4
  405. package/src/hooks/authentication/token/types.ts +5 -0
  406. package/src/hooks/authentication/token/useToken.ts +9 -0
  407. package/src/hooks/authentication/token/useTokenReducer.ts +19 -0
  408. package/src/hooks/useEntityList.ts +2 -2
  409. package/src/hooks/useFetchEntity.tsx +3 -3
  410. package/src/hooks/useFileManifest/useFetchFilesFacets.ts +2 -3
  411. package/src/hooks/useFileManifest/useFetchSummary.ts +2 -3
  412. package/src/hooks/useRequestFileLocation.ts +2 -3
  413. package/src/hooks/useRouteHistory.ts +65 -0
  414. package/src/hooks/useRouteRoot.ts +11 -0
  415. package/src/hooks/useSummary.ts +3 -3
  416. package/src/providers/authentication/auth/actions.ts +17 -0
  417. package/src/providers/authentication/auth/constants.ts +6 -0
  418. package/src/providers/authentication/auth/context.ts +9 -0
  419. package/src/providers/authentication/auth/dispatch.ts +58 -0
  420. package/src/providers/authentication/auth/hook.ts +11 -0
  421. package/src/providers/authentication/auth/reducer.ts +25 -0
  422. package/src/providers/authentication/auth/types.ts +63 -0
  423. package/src/providers/authentication/authentication/actions.ts +17 -0
  424. package/src/providers/authentication/authentication/constants.ts +6 -0
  425. package/src/providers/authentication/authentication/context.ts +8 -0
  426. package/src/providers/authentication/authentication/dispatch.ts +55 -0
  427. package/src/providers/authentication/authentication/hook.ts +11 -0
  428. package/src/providers/authentication/authentication/reducer.ts +34 -0
  429. package/src/providers/authentication/authentication/types.ts +64 -0
  430. package/src/providers/authentication/authentication/utils.ts +25 -0
  431. package/src/providers/authentication/common/types.ts +1 -0
  432. package/src/providers/authentication/common/utils.ts +11 -0
  433. package/src/providers/authentication/credentials/actions.ts +17 -0
  434. package/src/providers/authentication/credentials/constants.ts +5 -0
  435. package/src/providers/authentication/credentials/context.ts +8 -0
  436. package/src/providers/authentication/credentials/dispatch.ts +31 -0
  437. package/src/providers/authentication/credentials/hook.ts +11 -0
  438. package/src/providers/authentication/credentials/reducer.ts +30 -0
  439. package/src/providers/authentication/credentials/types.ts +33 -0
  440. package/src/providers/authentication/terra/context.ts +16 -0
  441. package/src/providers/authentication/terra/hook.ts +11 -0
  442. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.ts +9 -0
  443. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.ts +1 -7
  444. package/src/providers/authentication/terra/hooks/useFetchProfiles.ts +61 -0
  445. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.ts +18 -7
  446. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.ts +18 -7
  447. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.ts +18 -7
  448. package/src/providers/authentication/terra/hooks/utils.ts +29 -0
  449. package/src/providers/authentication/terra/provider.tsx +60 -0
  450. package/src/providers/authentication/terra/types.ts +23 -0
  451. package/src/providers/authentication/terra/utils.ts +49 -0
  452. package/src/providers/authentication/token/constants.ts +6 -0
  453. package/src/providers/authentication/token/dispatch.ts +29 -0
  454. package/src/providers/authentication/token/reducer.ts +26 -0
  455. package/src/providers/authentication/token/types.ts +36 -0
  456. package/src/providers/exploreState/actions/updateGrouping/action.ts +26 -0
  457. package/src/providers/exploreState/actions/updateGrouping/dispatch.ts +16 -0
  458. package/src/providers/exploreState/actions/updateGrouping/types.ts +11 -0
  459. package/src/providers/exploreState/actions/updateGrouping/utils.ts +33 -0
  460. package/src/providers/exploreState/entities.ts +3 -3
  461. package/src/providers/exploreState/initializer/utils.ts +58 -10
  462. package/src/providers/exploreState/payloads/entities.ts +2 -0
  463. package/src/providers/exploreState/utils.ts +10 -7
  464. package/src/providers/exploreState.tsx +32 -10
  465. package/src/providers/googleSignInAuthentication/common/types.ts +28 -0
  466. package/src/providers/googleSignInAuthentication/constants.ts +17 -0
  467. package/src/providers/googleSignInAuthentication/hooks/useGoogleSignInService.ts +53 -0
  468. package/src/providers/googleSignInAuthentication/profile/types.ts +15 -0
  469. package/src/providers/googleSignInAuthentication/profile/utils.ts +29 -0
  470. package/src/providers/googleSignInAuthentication/provider.tsx +53 -0
  471. package/src/providers/googleSignInAuthentication/service/constants.ts +16 -0
  472. package/src/providers/googleSignInAuthentication/service/service.ts +68 -0
  473. package/src/providers/googleSignInAuthentication/types.ts +7 -0
  474. package/src/providers/nextAuthAuthentication/hooks/useNextAuthService.ts +26 -0
  475. package/src/providers/nextAuthAuthentication/provider.tsx +42 -0
  476. package/src/providers/nextAuthAuthentication/service/service.ts +14 -0
  477. package/src/providers/nextAuthAuthentication/types.ts +9 -0
  478. package/src/routes/constants.ts +3 -0
  479. package/src/styles/common/mui/button.ts +20 -0
  480. package/src/styles/common/mui/paper.ts +11 -0
  481. package/src/styles/common/mui/popover.ts +19 -0
  482. package/src/theme/common/entities.ts +7 -0
  483. package/src/views/ExploreView/exploreView.tsx +1 -3
  484. package/src/views/LoginView/loginView.tsx +15 -9
  485. package/tests/getProfileStatus.test.ts +290 -0
  486. package/tests/terraProfileProvider.test.tsx +121 -0
  487. package/tests/transformRoute.test.ts +21 -0
  488. package/tests/useRouteHistory.test.ts +97 -0
  489. package/tests/useSessionActive.test.ts +107 -0
  490. package/types/data-explorer-ui.d.ts +8 -1
  491. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.d.ts +0 -5
  492. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.js +0 -29
  493. package/lib/components/Login/login.stories.d.ts +0 -6
  494. package/lib/components/Login/login.stories.js +0 -31
  495. package/lib/components/TableCreator/common/entities.d.ts +0 -5
  496. package/lib/components/common/Button/components/LoginButton/loginButton.d.ts +0 -3
  497. package/lib/components/common/Button/components/LoginButton/loginButton.js +0 -6
  498. package/lib/components/common/Button/components/LoginButton/loginButton.styles.d.ts +0 -7
  499. package/lib/components/common/Button/components/LoginButton/loginButton.styles.js +0 -11
  500. package/lib/hooks/useAuthentication/useAuthentication.d.ts +0 -6
  501. package/lib/hooks/useAuthentication/useAuthentication.js +0 -9
  502. package/lib/hooks/useAuthentication/useAuthenticationComplete.d.ts +0 -6
  503. package/lib/hooks/useAuthentication/useAuthenticationComplete.js +0 -55
  504. package/lib/hooks/useAuthentication/useAuthenticationStatus.d.ts +0 -20
  505. package/lib/hooks/useAuthentication/useAuthenticationStatus.js +0 -32
  506. package/lib/hooks/useAuthentication/useFetchGoogleProfile.d.ts +0 -21
  507. package/lib/hooks/useAuthentication/useFetchGoogleProfile.js +0 -41
  508. package/lib/hooks/useAuthentication/useTokenClient.d.ts +0 -11
  509. package/lib/hooks/useAuthentication/useTokenClient.js +0 -29
  510. package/lib/hooks/useAuthenticationConfig.d.ts +0 -6
  511. package/lib/hooks/useAuthenticationConfig.js +0 -14
  512. package/lib/providers/authentication.d.ts +0 -51
  513. package/lib/providers/authentication.js +0 -110
  514. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.tsx +0 -35
  515. package/src/components/Login/login.stories.tsx +0 -43
  516. package/src/components/TableCreator/common/entities.ts +0 -6
  517. package/src/components/common/Button/components/LoginButton/loginButton.styles.ts +0 -13
  518. package/src/components/common/Button/components/LoginButton/loginButton.tsx +0 -16
  519. package/src/hooks/useAuthentication/useAuthentication.tsx +0 -10
  520. package/src/hooks/useAuthentication/useAuthenticationComplete.ts +0 -66
  521. package/src/hooks/useAuthentication/useAuthenticationStatus.ts +0 -49
  522. package/src/hooks/useAuthentication/useFetchGoogleProfile.ts +0 -68
  523. package/src/hooks/useAuthentication/useTokenClient.ts +0 -54
  524. package/src/hooks/useAuthenticationConfig.ts +0 -18
  525. package/src/providers/authentication.tsx +0 -181
  526. package/tests/authentication.test.ts +0 -142
  527. package/tests/useAuthenticationStatus.test.ts +0 -155
  528. /package/lib/components/{TableCreator/common/entities.js → Authentication/components/SessionController/components/GoogleSessionController/types.js} +0 -0
  529. /package/lib/hooks/{useSessionTimeout.d.ts → authentication/session/useSessionTimeout.d.ts} +0 -0
  530. /package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.d.ts +0 -0
  531. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.d.ts +0 -0
  532. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.js +0 -0
  533. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.d.ts +0 -0
  534. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.d.ts +0 -0
  535. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.d.ts +0 -0
  536. /package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.ts +0 -0
@@ -1,16 +1,12 @@
1
- import SouthRoundedIcon from "@mui/icons-material/SouthRounded";
2
- import { TableSortLabelProps } from "@mui/material";
3
1
  import {
4
2
  Cell,
5
3
  Column,
6
4
  ColumnFiltersState,
7
- ColumnSort,
8
5
  InitialTableState,
9
6
  memo,
10
7
  PaginationState,
11
8
  Row,
12
9
  RowData,
13
- SortDirection,
14
10
  sortingFns,
15
11
  Table,
16
12
  VisibilityState,
@@ -24,6 +20,7 @@ import {
24
20
  import { EXPLORE_MODE, ExploreMode } from "../../../hooks/useExploreMode";
25
21
  import { ACCESSOR_KEYS } from "../../TableCreator/common/constants";
26
22
  import { CheckboxMenuListItem } from "../components/CheckboxMenu/checkboxMenu";
23
+ import { handleToggleVisibility } from "../components/TableFeatures/ColumnVisibility/utils";
27
24
 
28
25
  /**
29
26
  * Internal model of a category term count keyed by category term.
@@ -122,20 +119,6 @@ function formatDataToTSV(data: TableData[][]): string {
122
119
  .join("\n");
123
120
  }
124
121
 
125
- /**
126
- * Returns the column sort direction.
127
- * @param sortDirection - Column sort direction.
128
- * @returns the coumn sort direction.
129
- */
130
- export function getColumnSortDirection(
131
- sortDirection: false | SortDirection
132
- ): SortDirection | undefined {
133
- if (!sortDirection) {
134
- return;
135
- }
136
- return sortDirection;
137
- }
138
-
139
122
  /**
140
123
  * Returns filtered entity results as a blob.
141
124
  * @param rows - Table rows.
@@ -164,31 +147,27 @@ export function getEditColumnOptions<T extends RowData>(
164
147
  const { getAllColumns, initialState } = table;
165
148
  const { columnVisibility: initialVisibilityState } = initialState;
166
149
  const allColumns = getAllColumns();
167
- return allColumns.reduce(
168
- (
169
- acc,
170
- {
171
- columnDef: { header },
172
- getCanHide,
173
- getIsVisible,
174
- getToggleVisibilityHandler,
175
- id,
176
- }
177
- ) => {
178
- if (getCanHide()) {
179
- const option: CheckboxMenuListItem = {
180
- checked: getIsVisible(),
181
- disabled: initialVisibilityState[id],
182
- label: header as string, // TODO revisit type assertion here
183
- onChange: getToggleVisibilityHandler(),
184
- value: id,
185
- };
186
- acc.push(option);
187
- }
188
- return acc;
189
- },
190
- [] as CheckboxMenuListItem[]
191
- );
150
+ return allColumns.reduce((acc, column) => {
151
+ const {
152
+ columnDef: { header },
153
+ getCanHide,
154
+ getIsVisible,
155
+ id,
156
+ } = column;
157
+ if (getCanHide()) {
158
+ const option: CheckboxMenuListItem = {
159
+ checked: getIsVisible(),
160
+ disabled: initialVisibilityState[id], // TODO(cc) column visibility toggle should be disabled when table enableGrouping is false, and column is grouped.
161
+ label: header as string, // TODO revisit type assertion here
162
+ onChange: () => {
163
+ handleToggleVisibility(table, column);
164
+ },
165
+ value: id,
166
+ };
167
+ acc.push(option);
168
+ }
169
+ return acc;
170
+ }, [] as CheckboxMenuListItem[]);
192
171
  }
193
172
 
194
173
  /**
@@ -243,6 +222,7 @@ export function getGridTemplateColumns<T extends RowData>(
243
222
  columns: Column<T>[]
244
223
  ): string {
245
224
  return columns
225
+ .filter(filterGroupedColumn)
246
226
  .map(({ columnDef: { meta } }) => {
247
227
  const width = meta?.width;
248
228
  if (isGridTrackMinMax(width)) {
@@ -256,35 +236,17 @@ export function getGridTemplateColumns<T extends RowData>(
256
236
  /**
257
237
  * Returns initial table state.
258
238
  * @param columns - Column configuration.
259
- * @param defaultSort - Column sort configuration.
260
239
  * @returns initial table state.
261
240
  */
262
- export function getInitialState(
263
- columns: ColumnConfig[],
264
- defaultSort: ColumnSort | undefined
241
+ export function getInitialState<T extends RowData>(
242
+ columns: ColumnConfig<T>[]
265
243
  ): InitialTableState {
266
244
  const columnVisibility = getInitialTableColumnVisibility(columns);
267
- const sorting = getInitialTableStateSorting(defaultSort);
268
245
  return {
269
246
  columnVisibility,
270
- sorting,
271
247
  };
272
248
  }
273
249
 
274
- /**
275
- * Returns the initial table sorting state for the specified column sort configuration.
276
- * @param defaultSort - Column sort configuration.
277
- * @returns initial table sorting state.
278
- */
279
- export function getInitialTableStateSorting(
280
- defaultSort: ColumnSort | undefined
281
- ): ColumnSort[] {
282
- if (!defaultSort) {
283
- return [];
284
- }
285
- return [defaultSort];
286
- }
287
-
288
250
  /**
289
251
  * Returns the pinned cell and its index tuple.
290
252
  * @param row - Row.
@@ -296,7 +258,12 @@ export function getPinnedCellIndex<T extends RowData>(
296
258
  const visibleCells = row.getVisibleCells();
297
259
  let pinnedIndex = 0;
298
260
  for (let i = 0; i < visibleCells.length; i++) {
299
- if (visibleCells[i].column.columnDef.meta?.columnPinned) {
261
+ const cell = visibleCells[i];
262
+ if (cell.getIsGrouped()) {
263
+ pinnedIndex = i;
264
+ break;
265
+ }
266
+ if (cell.column.columnDef.meta?.columnPinned) {
300
267
  pinnedIndex = i;
301
268
  break;
302
269
  }
@@ -304,24 +271,6 @@ export function getPinnedCellIndex<T extends RowData>(
304
271
  return [visibleCells[pinnedIndex], pinnedIndex];
305
272
  }
306
273
 
307
- /**
308
- * Returns table sort label props.
309
- * @param column - Table column.
310
- * @returns table sort label props.
311
- */
312
- export function getTableSortLabelProps<T extends RowData>(
313
- column: Column<T>
314
- ): TableSortLabelProps {
315
- const { getCanSort, getIsSorted, getToggleSortingHandler } = column;
316
- return {
317
- IconComponent: SouthRoundedIcon,
318
- active: isColumnSortActive(getIsSorted()),
319
- direction: getColumnSortDirection(getIsSorted()),
320
- disabled: !getCanSort(),
321
- onClick: getToggleSortingHandler(),
322
- };
323
- }
324
-
325
274
  /**
326
275
  * Returns table state pagination.
327
276
  * @param pageIndex - Explore state page index.
@@ -364,21 +313,23 @@ function getRowsTableData<T extends RowData>(rows: Row<T>[]): TableData[][] {
364
313
  );
365
314
  }
366
315
 
316
+ /**
317
+ * Returns true if the column is not grouped (filters out grouped columns).
318
+ * @param column - Table column.
319
+ * @returns true if the column is not grouped.
320
+ */
321
+ function filterGroupedColumn<T extends RowData>(column: Column<T>): boolean {
322
+ return !column.getIsGrouped();
323
+ }
324
+
367
325
  /**
368
326
  * Returns true if any or all table rows are selected.
369
327
  * @param table - Table.
370
328
  * @returns true if a row is selected.
371
329
  */
372
330
  export function isAnyRowSelected<T extends RowData>(table: Table<T>): boolean {
373
- const {
374
- getIsAllPageRowsSelected,
375
- getIsSomePageRowsSelected,
376
- options: { enableRowSelection },
377
- } = table;
378
- return Boolean(
379
- enableRowSelection &&
380
- (getIsSomePageRowsSelected() || getIsAllPageRowsSelected())
381
- );
331
+ const { getIsAllPageRowsSelected, getIsSomePageRowsSelected } = table;
332
+ return getIsSomePageRowsSelected() || getIsAllPageRowsSelected();
382
333
  }
383
334
 
384
335
  /**
@@ -404,20 +355,6 @@ export function isCollapsableRowDisabled<T extends RowData>(
404
355
  return tableInstance.getVisibleLeafColumns().length === 1;
405
356
  }
406
357
 
407
- /**
408
- * Returns true if column has a sort direction.
409
- * @param sortDirection - Column sort direction.
410
- * @returns true when column has a sort direction.
411
- */
412
- export function isColumnSortActive(
413
- sortDirection: false | SortDirection
414
- ): boolean {
415
- if (!sortDirection) {
416
- return sortDirection;
417
- }
418
- return true;
419
- }
420
-
421
358
  /**
422
359
  * Returns sort return value from the compare function. The compare function is dependent on the row value type:
423
360
  * - row values of type "array" use a compare function based off React Table "basic" compare function,
@@ -465,8 +402,8 @@ function basicSort<TValue>(val0: TValue, val1: TValue): number {
465
402
  * @param columns - Column configuration.
466
403
  * @returns initial table visibility state.
467
404
  */
468
- export function getInitialTableColumnVisibility(
469
- columns: ColumnConfig[]
405
+ export function getInitialTableColumnVisibility<T extends RowData>(
406
+ columns: ColumnConfig<T>[]
470
407
  ): VisibilityState {
471
408
  return columns.reduce((acc, { columnVisible = true, id }) => {
472
409
  Object.assign(acc, { [id]: columnVisible });
@@ -0,0 +1,3 @@
1
+ export const VIRTUALIZER_OPTIONS = {
2
+ overscan: 20,
3
+ };
@@ -0,0 +1,23 @@
1
+ import { Row, RowData } from "@tanstack/react-table";
2
+ import { useWindowVirtualizer } from "@tanstack/react-virtual";
3
+ import { useCallback } from "react";
4
+ import { VIRTUALIZER_OPTIONS } from "./constants";
5
+ import { UseVirtualizer } from "./types";
6
+
7
+ /**
8
+ * A hook to create and manage TanStack window virtualizer for table rows.
9
+ * @param rows - Rows.
10
+ * @returns An object containing the virtualizer instance, which manages the visible rows.
11
+ */
12
+ export function useVirtualizer<T extends RowData>(
13
+ rows: Row<T>[]
14
+ ): UseVirtualizer {
15
+ const estimateSize = useCallback(() => 100, []);
16
+ const count = rows.length;
17
+ const virtualizer = useWindowVirtualizer({
18
+ ...VIRTUALIZER_OPTIONS,
19
+ count,
20
+ estimateSize,
21
+ });
22
+ return { virtualizer };
23
+ }
@@ -0,0 +1,5 @@
1
+ import { Virtualizer } from "@tanstack/react-virtual";
2
+
3
+ export interface UseVirtualizer {
4
+ virtualizer: Virtualizer<Window, Element>;
5
+ }
@@ -1,40 +1,38 @@
1
1
  import { TableBody as MTableBody } from "@mui/material";
2
- import { RowData, Table } from "@tanstack/react-table";
3
- import { useWindowVirtualizer } from "@tanstack/react-virtual";
4
- import React, { useCallback } from "react";
2
+ import { Row, RowData, Table } from "@tanstack/react-table";
3
+ import React from "react";
5
4
  import { ROW_DIRECTION } from "../../common/entities";
6
5
  import { CollapsableRows } from "../TableRows/components/CollapsableRows/collapsableRows";
7
6
  import { VirtualizedRow } from "../TableRows/components/VirtualizedRow/virtualizedRow";
8
7
  import { TableRows } from "../TableRows/tableRows";
9
-
10
- const OVERSCAN = 20;
8
+ import { useVirtualizer } from "./hooks/virtualizer/hook";
9
+ import { getAllVirtualizedRows } from "./utils";
11
10
 
12
11
  export interface TableBodyProps<T extends RowData> {
13
12
  rowDirection: ROW_DIRECTION;
13
+ rows: Row<T>[];
14
14
  tableInstance: Table<T>;
15
15
  }
16
16
 
17
17
  export const TableBody = <T extends RowData>({
18
18
  rowDirection,
19
+ rows,
19
20
  tableInstance,
20
21
  }: TableBodyProps<T>): JSX.Element => {
21
- const { getRowModel } = tableInstance;
22
- const { rows } = getRowModel();
23
- const estimateSize = useCallback(() => 100, []);
24
- const count = rows.length;
25
- const virtualizer = useWindowVirtualizer({
26
- count,
27
- estimateSize,
28
- measureElement,
29
- overscan: OVERSCAN,
30
- });
22
+ const virtualizedRows = getAllVirtualizedRows(
23
+ tableInstance,
24
+ rows,
25
+ rowDirection
26
+ );
27
+ const { virtualizer } = useVirtualizer(virtualizedRows);
31
28
  return (
32
29
  <MTableBody>
33
30
  <VirtualizedRow isUpperRow={true} virtualizer={virtualizer} />
34
31
  {rowDirection === ROW_DIRECTION.DEFAULT ? (
35
- <TableRows tableInstance={tableInstance} virtualizer={virtualizer} />
32
+ <TableRows rows={virtualizedRows} virtualizer={virtualizer} />
36
33
  ) : (
37
34
  <CollapsableRows
35
+ rows={virtualizedRows}
38
36
  tableInstance={tableInstance}
39
37
  virtualizer={virtualizer}
40
38
  />
@@ -43,17 +41,3 @@ export const TableBody = <T extends RowData>({
43
41
  </MTableBody>
44
42
  );
45
43
  };
46
-
47
- /**
48
- * Measures the height of the element.
49
- * @param element - Element to measure.
50
- * @returns height of the element.
51
- */
52
- function measureElement(element: Element): number {
53
- // We select the first child element because the row is not a box element due to the "display: contents" style attribute.
54
- const box = element.children[0];
55
- if (!box) {
56
- return 0;
57
- }
58
- return box.getBoundingClientRect().height;
59
- }
@@ -0,0 +1,21 @@
1
+ import { Row, RowData, Table } from "@tanstack/react-table";
2
+ import { ROW_DIRECTION } from "../../common/entities";
3
+
4
+ /**
5
+ * Filters and returns the appropriate rows for a virtualized table based on row direction
6
+ * and grouping state.
7
+ * Rows are filtered if `ROW_DIRECTION` is `VERTICAL` and the table is grouped.
8
+ * @param table - Table.
9
+ * @param rows - Rows.
10
+ * @param rowDirection - Row direction.
11
+ * @returns Rows based on the provided row direction and table grouping state.
12
+ */
13
+ export function getAllVirtualizedRows<T extends RowData>(
14
+ table: Table<T>,
15
+ rows: Row<T>[],
16
+ rowDirection: ROW_DIRECTION
17
+ ): Row<T>[] {
18
+ if (rowDirection === ROW_DIRECTION.DEFAULT) return rows;
19
+ if (table.getState().grouping.length === 0) return rows;
20
+ return rows.filter(({ getIsGrouped }) => getIsGrouped());
21
+ }
@@ -1,6 +1,7 @@
1
1
  import { Collapse, IconButton, Typography } from "@mui/material";
2
2
  import { Cell, flexRender, Row, RowData } from "@tanstack/react-table";
3
- import React, { useState } from "react";
3
+ import { Virtualizer } from "@tanstack/react-virtual";
4
+ import React from "react";
4
5
  import { TEXT_BODY_400_2_LINES } from "../../../../../../theme/common/typography";
5
6
  import { UnfoldMoreIcon } from "../../../../../common/CustomIcon/components/UnfoldMoreIcon/unfoldMoreIcon";
6
7
  import { getPinnedCellIndex } from "../../../../common/utils";
@@ -14,35 +15,36 @@ import {
14
15
  export interface CollapsableCellProps<T extends RowData> {
15
16
  isDisabled?: boolean;
16
17
  row: Row<T>;
18
+ virtualizer?: Virtualizer<Window, Element>;
17
19
  }
18
20
 
19
21
  export const CollapsableCell = <T extends RowData>({
20
22
  isDisabled = false,
21
23
  row,
24
+ virtualizer,
22
25
  }: CollapsableCellProps<T>): JSX.Element => {
23
- const [isExpanded, setIsExpanded] = useState<boolean>(false);
24
26
  const [pinnedCell, pinnedIndex] = getPinnedCellIndex(row);
25
-
26
- // Toggles open/close table cell.
27
- const onToggleExpanded = (): void => {
28
- setIsExpanded((expanded) => !expanded);
29
- };
30
-
31
27
  return (
32
- <TableCell isExpanded={isExpanded}>
28
+ <TableCell isExpanded={row.getIsExpanded()}>
33
29
  <PinnedCell>
34
30
  {flexRender(pinnedCell.column.columnDef.cell, pinnedCell.getContext())}
35
31
  <IconButton
36
32
  color="ink"
37
33
  disabled={isDisabled}
38
34
  edge="end"
39
- onClick={onToggleExpanded}
35
+ onClick={() => row.toggleExpanded()}
40
36
  size="large"
41
37
  >
42
38
  <UnfoldMoreIcon fontSize="small" />
43
39
  </IconButton>
44
40
  </PinnedCell>
45
- <Collapse in={isExpanded}>
41
+ <Collapse
42
+ in={row.getIsExpanded()}
43
+ mountOnEnter
44
+ onEntered={() => virtualizer?.measure()} // Measure when cell is opened.
45
+ onExited={() => virtualizer?.measure()} // Measure when cell is closed.
46
+ unmountOnExit
47
+ >
46
48
  <CollapsedContents>
47
49
  {getRowVisibleCells(row).map((cell, i) => {
48
50
  if (cell.getIsAggregated()) return null; // Display of aggregated cells is currently not supported.
@@ -80,10 +82,7 @@ function getRowVisibleCells<T extends RowData>(
80
82
  row: Row<T>
81
83
  ): Cell<T, unknown>[] {
82
84
  if (row.getIsGrouped()) {
83
- return row
84
- .getLeafRows()
85
- .map((leafRow) => leafRow.getVisibleCells())
86
- .flat();
85
+ return row.subRows.map(({ getVisibleCells }) => getVisibleCells()).flat();
87
86
  }
88
87
  return row.getVisibleCells();
89
88
  }
@@ -0,0 +1,70 @@
1
+ import { Column, RowData, Table } from "@tanstack/react-table";
2
+ import { buildColumnSort } from "../RowSorting/utils";
3
+
4
+ /**
5
+ * Clears the grouping state of the table and optionally resets the sorting state.
6
+ * ### Grouping State:
7
+ * - Grouping state is reset to `[]`.
8
+ * ### Sorting State:
9
+ * - Sorting state is reset to initial state (if sorting is enabled).
10
+ * @param table - Table.
11
+ */
12
+ export function handleClearGroupingState<T extends RowData>(
13
+ table: Table<T>
14
+ ): void {
15
+ const {
16
+ options: { enableSorting },
17
+ resetGrouping,
18
+ resetSorting,
19
+ } = table;
20
+ resetGrouping(true); // Clears grouping state to `[]`.
21
+ if (enableSorting) resetSorting(); // Resets sorting state to initial state.
22
+ }
23
+
24
+ /**
25
+ * Toggles the grouping state for the given column.
26
+ * ### Grouping State
27
+ * - **Column grouping is not enabled**:
28
+ * - No grouping action (exit).
29
+ * - **Column grouping is enabled**:
30
+ * - Toggles the grouping state of the specified column.
31
+ * ### Sorting State
32
+ * - **Table sorting is not enabled**:
33
+ * - No sorting action (exit).
34
+ * - **Column sorting is not enabled**:
35
+ * - Resets sorting state to initial state.
36
+ * - **Column sorting is enabled**:
37
+ * - Sets new sorting state with the grouped column as the first sort key.
38
+ * @param table - Table.
39
+ * @param column - Column.
40
+ */
41
+ export function handleToggleGrouping<T extends RowData>(
42
+ table: Table<T>,
43
+ column: Column<T>
44
+ ): void {
45
+ const {
46
+ options: { enableSorting },
47
+ resetSorting,
48
+ setSorting,
49
+ } = table;
50
+ const { getCanGroup, getCanSort } = column;
51
+
52
+ // Column cannot be grouped.
53
+ if (!getCanGroup()) return;
54
+
55
+ // Toggle column grouping.
56
+ column.toggleGrouping(); // Grouping state currently only supports single-column grouping.
57
+
58
+ // Table sorting is not enabled.
59
+ if (!enableSorting) return;
60
+
61
+ // Column sorting is enabled.
62
+ if (getCanSort()) {
63
+ // Set new sorting state; grouped column is first sort.
64
+ setSorting([buildColumnSort(column)]);
65
+ return;
66
+ }
67
+
68
+ // Column sorting is not enabled; reset sorting state to initial state.
69
+ resetSorting();
70
+ }
@@ -0,0 +1,52 @@
1
+ import { Column, RowData, Table } from "@tanstack/react-table";
2
+
3
+ /**
4
+ * Toggles the visibility state for the given column.
5
+ * ### Column Visibility State
6
+ * - **Column visibility is not enabled**:
7
+ * - No column visibility action (exit).
8
+ * - **Column visibility is enabled**:
9
+ * - Toggles the visibility state of the specified column.
10
+ * ### Grouping and Sorting State
11
+ * - **Column is not visible**:
12
+ * - No grouping or sorting action (exit).
13
+ * - **Column is visible**:
14
+ * - **Column is grouped**:
15
+ * - Resets grouping state to `[]`.
16
+ * - Clears column from sorting state.
17
+ * - **Column is not grouped**:
18
+ * - No grouping or sorting action.
19
+ * @param table - Table.
20
+ * @param column - Column.
21
+ */
22
+ export function handleToggleVisibility<T extends RowData>(
23
+ table: Table<T>,
24
+ column: Column<T>
25
+ ): void {
26
+ const {
27
+ options: { enableGrouping },
28
+ resetGrouping,
29
+ } = table;
30
+ const {
31
+ clearSorting,
32
+ getCanHide,
33
+ getIsGrouped,
34
+ getIsVisible,
35
+ toggleVisibility,
36
+ } = column;
37
+ if (!getCanHide()) return;
38
+
39
+ // Toggle column visibility.
40
+ toggleVisibility();
41
+
42
+ // Column is not visible i.e. requesting column visibility and therefore no further action is needed.
43
+ if (!getIsVisible()) return;
44
+
45
+ // Column is visible.
46
+ // Table grouping is enabled, and column is grouped.
47
+ if (enableGrouping && getIsGrouped()) {
48
+ resetGrouping(true); // Clears grouping state to `[]`.
49
+ // Currently, only a grouped column's sorting state is cleared.
50
+ clearSorting(); // Clears column sorting.
51
+ }
52
+ }
@@ -0,0 +1,87 @@
1
+ import { Column, ColumnSort, RowData, Table } from "@tanstack/react-table";
2
+ import { MouseEvent } from "react";
3
+
4
+ /**
5
+ * Constructs a `ColumnSort` object from a column.
6
+ * @param column - Column.
7
+ * @returns `ColumnSort` object with sorting direction and column ID.
8
+ */
9
+ export function buildColumnSort<T extends RowData>(
10
+ column: Column<T>
11
+ ): ColumnSort {
12
+ return { desc: column.getFirstSortDir() === "desc", id: column.id };
13
+ }
14
+
15
+ /**
16
+ * Toggles the sorting state for the specified column.
17
+ * The sorting state of a table is modified based on user interaction, table grouping state, and
18
+ * its sorting configuration (single-sort or multi-sort modes).
19
+ * ### Sorting State:
20
+ * - **Ungrouped Table**:
21
+ * - Sorting is toggled normally, respecting single-sort or multi-sort modes.
22
+ * - **Grouped Table**:
23
+ * - **Multi-Sort Request**:
24
+ * - Sorting is toggled normally.
25
+ * - **Single-Sort Request**:
26
+ * - **Multi-Sort Mode**:
27
+ * - Grouped column is preserved as the first sort key, and the requested column is sorted as the second sort key.
28
+ * - **Single-Sort Mode**:
29
+ * - If the grouped column is already sorted, no action taken (the grouped column remains the primary sort key).
30
+ * - Otherwise, sorting is toggled normally.
31
+ * @param mouseEvent - Mouse event.
32
+ * @param table - Table.
33
+ * @param column - Column.
34
+ */
35
+ export function handleToggleSorting<T extends RowData>(
36
+ mouseEvent: MouseEvent,
37
+ table: Table<T>,
38
+ column: Column<T>
39
+ ): void {
40
+ const {
41
+ getColumn,
42
+ getState,
43
+ options: { enableMultiSort, isMultiSortEvent },
44
+ setSorting,
45
+ } = table;
46
+ const { getCanSort, getSortIndex, toggleSorting } = column;
47
+ const { grouping, sorting } = getState();
48
+
49
+ // Table and column sorting is not enabled.
50
+ if (!getCanSort()) return;
51
+
52
+ // Sorting is enabled.
53
+ // Table is not grouped; toggle sorting as usual.
54
+ if (grouping.length === 0) {
55
+ toggleSorting(undefined, isMultiSortEvent?.(mouseEvent));
56
+ return;
57
+ }
58
+
59
+ // Table is grouped.
60
+ // Multi-sort mode and multi-sort requested; toggle sorting as usual.
61
+ if (enableMultiSort && isMultiSortEvent?.(mouseEvent)) {
62
+ toggleSorting(undefined, true);
63
+ return;
64
+ }
65
+
66
+ // Retrieve the grouped column.
67
+ const groupedColumn = getColumn(grouping[0]); // Grouping state currently only supports single-column grouping.
68
+
69
+ // Single-sort requested (either single-sort or multi-sort mode).
70
+ // Grouped column is sorted.
71
+ if (groupedColumn?.getIsSorted()) {
72
+ if (enableMultiSort) {
73
+ // Multi-sort mode.
74
+ // Column to be sorted is not the last most recent sorted column.
75
+ if (getSortIndex() !== sorting.length - 1) {
76
+ // Reset sorting state, preserving grouped column as the first sort, and requested column to be sorted as the second sort.
77
+ setSorting([buildColumnSort(groupedColumn), buildColumnSort(column)]);
78
+ return;
79
+ }
80
+ } else {
81
+ // Special case; in single-sort mode we do not override a grouped sort.
82
+ return;
83
+ }
84
+ }
85
+
86
+ toggleSorting();
87
+ }