@databiosphere/findable-ui 19.0.0 → 21.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 (510) 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/GoogleSessionController/types.js +1 -0
  7. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.d.ts +2 -0
  8. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.js +17 -0
  9. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.d.ts +5 -0
  10. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.js +12 -0
  11. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.d.ts +4 -0
  12. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.js +1 -0
  13. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.d.ts +15 -0
  14. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.js +53 -0
  15. package/lib/components/ComponentCreator/ComponentCreator.js +2 -3
  16. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.js +2 -2
  17. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.js +1 -1
  18. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.js +8 -3
  19. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.d.ts +2 -1
  20. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.js +17 -14
  21. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.d.ts +3 -4
  22. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.js +15 -24
  23. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
  24. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.js +2 -2
  25. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.d.ts +2 -0
  26. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.js +14 -0
  27. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.js +3 -2
  28. package/lib/components/Layout/components/Header/header.js +1 -1
  29. package/lib/components/Login/components/Button/button.d.ts +2 -0
  30. package/lib/components/Login/components/Button/button.js +6 -0
  31. package/lib/components/Login/components/Button/button.styles.d.ts +5 -0
  32. package/lib/components/Login/components/Button/button.styles.js +11 -0
  33. package/lib/components/Login/components/Button/constants.d.ts +2 -0
  34. package/lib/components/Login/components/Button/constants.js +6 -0
  35. package/lib/components/Login/components/Button/types.d.ts +3 -0
  36. package/lib/components/Login/components/Button/types.js +1 -0
  37. package/lib/components/Login/login.d.ts +2 -9
  38. package/lib/components/Login/login.js +9 -10
  39. package/lib/components/Login/types.d.ts +10 -0
  40. package/lib/components/Login/types.js +1 -0
  41. package/lib/components/Table/common/columnDef.js +18 -2
  42. package/lib/components/Table/common/columnIdentifier.d.ts +4 -0
  43. package/lib/components/Table/common/columnIdentifier.js +4 -0
  44. package/lib/components/Table/common/typeGuards.d.ts +11 -0
  45. package/lib/components/Table/common/typeGuards.js +8 -0
  46. package/lib/components/Table/common/utils.d.ts +1 -28
  47. package/lib/components/Table/common/utils.js +5 -88
  48. package/lib/components/Table/components/TableCell/common/utils.js +3 -3
  49. package/lib/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.d.ts +2 -5
  50. package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.d.ts +7 -18
  51. package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.js +20 -31
  52. package/lib/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.d.ts +2 -5
  53. package/lib/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.js +2 -2
  54. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.js +5 -17
  55. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/constants.d.ts +3 -0
  56. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/constants.js +10 -0
  57. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.d.ts +1 -1
  58. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.js +22 -10
  59. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.d.ts +1 -2
  60. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/utils.d.ts +27 -0
  61. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/utils.js +45 -0
  62. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.d.ts +1 -3
  63. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.js +0 -10
  64. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.d.ts +3 -13
  65. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.js +22 -27
  66. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/columnVisibility.d.ts +3 -0
  67. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/columnVisibility.js +13 -0
  68. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/columnVisibility.styles.d.ts +3 -0
  69. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/columnVisibility.styles.js +11 -0
  70. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/constants.d.ts +2 -0
  71. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/constants.js +7 -0
  72. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/menuItems.d.ts +3 -0
  73. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/menuItems.js +22 -0
  74. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/menuItems.styles.d.ts +2 -0
  75. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/menuItems.styles.js +16 -0
  76. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/types.d.ts +4 -0
  77. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/types.js +1 -0
  78. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/utils.d.ts +26 -0
  79. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/utils.js +32 -0
  80. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/constants.d.ts +2 -0
  81. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/constants.js +3 -0
  82. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/types.d.ts +4 -0
  83. package/lib/components/Table/components/TableToolbar/components/ColumnVisibility/types.js +1 -0
  84. package/lib/components/Table/components/TableToolbar/tableToolbar.js +5 -12
  85. package/lib/components/Table/features/RowPosition/constants.js +5 -3
  86. package/lib/components/Table/features/RowPosition/types.d.ts +3 -0
  87. package/lib/components/Table/features/RowPosition/utils.d.ts +1 -7
  88. package/lib/components/Table/features/RowPosition/utils.js +0 -20
  89. package/lib/components/Table/features/RowPreview/constants.js +1 -1
  90. package/lib/components/Table/features/entities.d.ts +2 -2
  91. package/lib/components/Table/table.d.ts +2 -4
  92. package/lib/components/Table/table.js +9 -31
  93. package/lib/components/TableCreator/common/utils.js +1 -4
  94. package/lib/components/TableCreator/options/columnTrackSizing/typeGuards.d.ts +7 -0
  95. package/lib/components/TableCreator/options/columnTrackSizing/typeGuards.js +8 -0
  96. package/lib/components/TableCreator/options/columnTrackSizing/utils.d.ts +30 -0
  97. package/lib/components/TableCreator/options/columnTrackSizing/utils.js +83 -0
  98. package/lib/components/TableCreator/options/hook.js +8 -7
  99. package/lib/components/TableCreator/options/initialState/columnVisibility.d.ts +7 -0
  100. package/lib/components/TableCreator/options/initialState/columnVisibility.js +16 -0
  101. package/lib/components/TableCreator/options/initialState/hook.d.ts +2 -0
  102. package/lib/components/TableCreator/options/initialState/hook.js +10 -0
  103. package/lib/components/TableCreator/options/visibility/constants.d.ts +2 -0
  104. package/lib/components/TableCreator/options/visibility/constants.js +3 -0
  105. package/lib/components/TableCreator/options/visibility/hook.d.ts +2 -0
  106. package/lib/components/TableCreator/options/visibility/hook.js +11 -0
  107. package/lib/components/TableCreator/tableCreator.js +4 -18
  108. package/lib/components/common/Banner/components/SessionTimeout/sessionTimeout.js +1 -1
  109. package/lib/components/common/CustomIcon/common/entities.d.ts +1 -4
  110. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.d.ts +2 -2
  111. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.js +1 -1
  112. package/lib/config/entities.d.ts +22 -27
  113. package/lib/hooks/authentication/auth/useAuthReducer.d.ts +2 -0
  114. package/lib/hooks/authentication/auth/useAuthReducer.js +8 -0
  115. package/lib/hooks/authentication/authentication/useAuthenticationReducer.d.ts +2 -0
  116. package/lib/hooks/authentication/authentication/useAuthenticationReducer.js +8 -0
  117. package/lib/hooks/authentication/config/useAuthenticationConfig.d.ts +6 -0
  118. package/lib/hooks/authentication/config/useAuthenticationConfig.js +9 -0
  119. package/lib/hooks/authentication/credentials/useCredentialsReducer.d.ts +2 -0
  120. package/lib/hooks/authentication/credentials/useCredentialsReducer.js +7 -0
  121. package/lib/hooks/authentication/profile/types.d.ts +5 -0
  122. package/lib/hooks/authentication/profile/types.js +1 -0
  123. package/lib/hooks/authentication/profile/useProfile.d.ts +6 -0
  124. package/lib/hooks/authentication/profile/useProfile.js +15 -0
  125. package/lib/hooks/authentication/providers/types.d.ts +6 -0
  126. package/lib/hooks/authentication/providers/types.js +1 -0
  127. package/lib/hooks/authentication/providers/useProviders.d.ts +6 -0
  128. package/lib/hooks/authentication/providers/useProviders.js +14 -0
  129. package/lib/hooks/authentication/session/useSessionActive.d.ts +12 -0
  130. package/lib/hooks/authentication/session/useSessionActive.js +36 -0
  131. package/lib/hooks/authentication/session/useSessionCallbackUrl.d.ts +4 -0
  132. package/lib/hooks/authentication/session/useSessionCallbackUrl.js +20 -0
  133. package/lib/hooks/authentication/session/useSessionIdleTimer.d.ts +6 -0
  134. package/lib/hooks/authentication/session/useSessionIdleTimer.js +8 -0
  135. package/lib/hooks/{useSessionTimeout.js → authentication/session/useSessionTimeout.js} +2 -2
  136. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.d.ts +0 -1
  137. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.js +6 -9
  138. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.js +3 -4
  139. package/lib/hooks/authentication/token/types.d.ts +4 -0
  140. package/lib/hooks/authentication/token/types.js +1 -0
  141. package/lib/hooks/authentication/token/useToken.d.ts +2 -0
  142. package/lib/hooks/authentication/token/useToken.js +5 -0
  143. package/lib/hooks/authentication/token/useTokenReducer.d.ts +7 -0
  144. package/lib/hooks/authentication/token/useTokenReducer.js +12 -0
  145. package/lib/hooks/useEntityList.js +2 -2
  146. package/lib/hooks/useFetchEntity.js +4 -3
  147. package/lib/hooks/useFileManifest/useFetchFilesFacets.js +2 -3
  148. package/lib/hooks/useFileManifest/useFetchSummary.js +2 -3
  149. package/lib/hooks/useRequestFileLocation.js +2 -3
  150. package/lib/hooks/useRouteHistory.d.ts +14 -0
  151. package/lib/hooks/useRouteHistory.js +40 -0
  152. package/lib/hooks/useRouteRoot.d.ts +1 -0
  153. package/lib/hooks/useRouteRoot.js +8 -0
  154. package/lib/hooks/useSummary.js +3 -3
  155. package/lib/providers/authentication/auth/actions.d.ts +8 -0
  156. package/lib/providers/authentication/auth/actions.js +12 -0
  157. package/lib/providers/authentication/auth/constants.d.ts +2 -0
  158. package/lib/providers/authentication/auth/constants.js +5 -0
  159. package/lib/providers/authentication/auth/context.d.ts +2 -0
  160. package/lib/providers/authentication/auth/context.js +7 -0
  161. package/lib/providers/authentication/auth/dispatch.d.ts +23 -0
  162. package/lib/providers/authentication/auth/dispatch.js +43 -0
  163. package/lib/providers/authentication/auth/hook.d.ts +6 -0
  164. package/lib/providers/authentication/auth/hook.js +9 -0
  165. package/lib/providers/authentication/auth/reducer.d.ts +8 -0
  166. package/lib/providers/authentication/auth/reducer.js +24 -0
  167. package/lib/providers/authentication/auth/types.d.ts +48 -0
  168. package/lib/providers/authentication/auth/types.js +11 -0
  169. package/lib/providers/authentication/authentication/actions.d.ts +8 -0
  170. package/lib/providers/authentication/authentication/actions.js +12 -0
  171. package/lib/providers/authentication/authentication/constants.d.ts +2 -0
  172. package/lib/providers/authentication/authentication/constants.js +5 -0
  173. package/lib/providers/authentication/authentication/context.d.ts +2 -0
  174. package/lib/providers/authentication/authentication/context.js +6 -0
  175. package/lib/providers/authentication/authentication/dispatch.d.ts +22 -0
  176. package/lib/providers/authentication/authentication/dispatch.js +42 -0
  177. package/lib/providers/authentication/authentication/hook.d.ts +6 -0
  178. package/lib/providers/authentication/authentication/hook.js +9 -0
  179. package/lib/providers/authentication/authentication/reducer.d.ts +9 -0
  180. package/lib/providers/authentication/authentication/reducer.js +25 -0
  181. package/lib/providers/authentication/authentication/types.d.ts +47 -0
  182. package/lib/providers/authentication/authentication/types.js +11 -0
  183. package/lib/providers/authentication/authentication/utils.d.ts +12 -0
  184. package/lib/providers/authentication/authentication/utils.js +18 -0
  185. package/lib/providers/authentication/common/types.d.ts +1 -0
  186. package/lib/providers/authentication/common/types.js +1 -0
  187. package/lib/providers/authentication/common/utils.d.ts +6 -0
  188. package/lib/providers/authentication/common/utils.js +11 -0
  189. package/lib/providers/authentication/credentials/actions.d.ts +8 -0
  190. package/lib/providers/authentication/credentials/actions.js +12 -0
  191. package/lib/providers/authentication/credentials/constants.d.ts +2 -0
  192. package/lib/providers/authentication/credentials/constants.js +3 -0
  193. package/lib/providers/authentication/credentials/context.d.ts +2 -0
  194. package/lib/providers/authentication/credentials/context.js +6 -0
  195. package/lib/providers/authentication/credentials/dispatch.d.ts +12 -0
  196. package/lib/providers/authentication/credentials/dispatch.js +22 -0
  197. package/lib/providers/authentication/credentials/hook.d.ts +6 -0
  198. package/lib/providers/authentication/credentials/hook.js +9 -0
  199. package/lib/providers/authentication/credentials/reducer.d.ts +8 -0
  200. package/lib/providers/authentication/credentials/reducer.js +22 -0
  201. package/lib/providers/authentication/credentials/types.d.ts +24 -0
  202. package/lib/providers/authentication/credentials/types.js +5 -0
  203. package/lib/providers/authentication/terra/context.d.ts +2 -0
  204. package/lib/providers/authentication/terra/context.js +7 -0
  205. package/lib/providers/authentication/terra/hook.d.ts +6 -0
  206. package/lib/providers/authentication/terra/hook.js +9 -0
  207. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.d.ts +2 -0
  208. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.js +7 -0
  209. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.d.ts +3 -7
  210. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.js +1 -5
  211. package/lib/providers/authentication/terra/hooks/useFetchProfiles.d.ts +13 -0
  212. package/lib/providers/authentication/terra/hooks/useFetchProfiles.js +31 -0
  213. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.js +11 -6
  214. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.js +11 -6
  215. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.js +11 -6
  216. package/lib/providers/authentication/terra/hooks/utils.d.ts +16 -0
  217. package/lib/providers/authentication/terra/hooks/utils.js +19 -0
  218. package/lib/providers/authentication/terra/provider.d.ts +2 -0
  219. package/lib/providers/authentication/terra/provider.js +42 -0
  220. package/lib/providers/authentication/terra/types.d.ts +20 -0
  221. package/lib/providers/authentication/terra/types.js +6 -0
  222. package/lib/providers/authentication/terra/utils.d.ts +19 -0
  223. package/lib/providers/authentication/terra/utils.js +36 -0
  224. package/lib/providers/authentication/token/constants.d.ts +2 -0
  225. package/lib/providers/authentication/token/constants.js +4 -0
  226. package/lib/providers/authentication/token/dispatch.d.ts +12 -0
  227. package/lib/providers/authentication/token/dispatch.js +22 -0
  228. package/lib/providers/authentication/token/reducer.d.ts +8 -0
  229. package/lib/providers/authentication/token/reducer.js +22 -0
  230. package/lib/providers/authentication/token/types.d.ts +28 -0
  231. package/lib/providers/authentication/token/types.js +5 -0
  232. package/lib/providers/exploreState/actions/updateVisibility/action.d.ts +10 -0
  233. package/lib/providers/exploreState/actions/updateVisibility/action.js +16 -0
  234. package/lib/providers/exploreState/actions/updateVisibility/dispatch.d.ts +7 -0
  235. package/lib/providers/exploreState/actions/updateVisibility/dispatch.js +12 -0
  236. package/lib/providers/exploreState/actions/updateVisibility/types.d.ts +9 -0
  237. package/lib/providers/exploreState/actions/updateVisibility/types.js +1 -0
  238. package/lib/providers/exploreState/actions/updateVisibility/utils.d.ts +10 -0
  239. package/lib/providers/exploreState/actions/updateVisibility/utils.js +21 -0
  240. package/lib/providers/exploreState/entities.d.ts +1 -1
  241. package/lib/providers/exploreState/initializer/utils.js +5 -13
  242. package/lib/providers/exploreState/payloads/entities.d.ts +1 -5
  243. package/lib/providers/exploreState/utils.d.ts +1 -1
  244. package/lib/providers/exploreState/utils.js +5 -5
  245. package/lib/providers/exploreState.d.ts +2 -8
  246. package/lib/providers/exploreState.js +5 -10
  247. package/lib/providers/googleSignInAuthentication/common/types.d.ts +17 -0
  248. package/lib/providers/googleSignInAuthentication/common/types.js +1 -0
  249. package/lib/providers/googleSignInAuthentication/constants.d.ts +4 -0
  250. package/lib/providers/googleSignInAuthentication/constants.js +12 -0
  251. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.d.ts +3 -0
  252. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.js +36 -0
  253. package/lib/providers/googleSignInAuthentication/profile/types.d.ts +14 -0
  254. package/lib/providers/googleSignInAuthentication/profile/types.js +1 -0
  255. package/lib/providers/googleSignInAuthentication/profile/utils.d.ts +8 -0
  256. package/lib/providers/googleSignInAuthentication/profile/utils.js +25 -0
  257. package/lib/providers/googleSignInAuthentication/provider.d.ts +2 -0
  258. package/lib/providers/googleSignInAuthentication/provider.js +40 -0
  259. package/lib/providers/googleSignInAuthentication/service/constants.d.ts +4 -0
  260. package/lib/providers/googleSignInAuthentication/service/constants.js +9 -0
  261. package/lib/providers/googleSignInAuthentication/service/service.d.ts +6 -0
  262. package/lib/providers/googleSignInAuthentication/service/service.js +43 -0
  263. package/lib/providers/googleSignInAuthentication/types.d.ts +6 -0
  264. package/lib/providers/googleSignInAuthentication/types.js +1 -0
  265. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.d.ts +2 -0
  266. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.js +14 -0
  267. package/lib/providers/nextAuthAuthentication/provider.d.ts +2 -0
  268. package/lib/providers/nextAuthAuthentication/provider.js +30 -0
  269. package/lib/providers/nextAuthAuthentication/service/service.d.ts +6 -0
  270. package/lib/providers/nextAuthAuthentication/service/service.js +12 -0
  271. package/lib/providers/nextAuthAuthentication/types.d.ts +8 -0
  272. package/lib/providers/nextAuthAuthentication/types.js +1 -0
  273. package/lib/routes/constants.d.ts +3 -0
  274. package/lib/routes/constants.js +3 -0
  275. package/lib/styles/common/mui/button.d.ts +3 -0
  276. package/lib/styles/common/mui/button.js +17 -0
  277. package/lib/styles/common/mui/paper.d.ts +2 -0
  278. package/lib/styles/common/mui/paper.js +9 -0
  279. package/lib/styles/common/mui/popover.d.ts +3 -0
  280. package/lib/styles/common/mui/popover.js +10 -0
  281. package/lib/theme/common/entities.d.ts +6 -0
  282. package/lib/theme/common/entities.js +1 -0
  283. package/lib/views/LoginView/loginView.d.ts +5 -1
  284. package/lib/views/LoginView/loginView.js +6 -4
  285. package/package.json +3 -2
  286. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.tsx +38 -0
  287. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/types.ts +7 -0
  288. package/src/components/Authentication/components/SessionController/components/NextSessionController/SessionController.tsx +23 -0
  289. package/src/components/Authentication/components/SessionController/components/NextSessionController/constants.ts +21 -0
  290. package/src/components/Authentication/components/SessionController/components/NextSessionController/types.ts +5 -0
  291. package/src/components/Authentication/components/SessionController/components/NextSessionController/utils.ts +74 -0
  292. package/src/components/ComponentCreator/ComponentCreator.tsx +4 -3
  293. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.tsx +4 -4
  294. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.tsx +1 -1
  295. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.tsx +9 -6
  296. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.tsx +27 -25
  297. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.ts +2 -2
  298. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.tsx +18 -42
  299. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.ts +19 -0
  300. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.ts +3 -2
  301. package/src/components/Layout/components/Header/header.tsx +1 -1
  302. package/src/components/Login/components/Button/button.styles.ts +12 -0
  303. package/src/components/Login/components/Button/button.tsx +8 -0
  304. package/src/components/Login/components/Button/constants.ts +8 -0
  305. package/src/components/Login/components/Button/types.ts +4 -0
  306. package/src/components/Login/login.tsx +28 -28
  307. package/src/components/Login/types.ts +11 -0
  308. package/src/components/Table/common/columnDef.ts +18 -2
  309. package/src/components/Table/common/columnIdentifier.ts +4 -0
  310. package/src/components/Table/common/typeGuards.ts +12 -0
  311. package/src/components/Table/common/utils.ts +5 -115
  312. package/src/components/Table/components/TableCell/common/utils.ts +3 -3
  313. package/src/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.tsx +3 -7
  314. package/src/components/Table/components/TableFeatures/ColumnVisibility/utils.ts +25 -44
  315. package/src/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.tsx +5 -9
  316. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.tsx +4 -22
  317. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/constants.ts +13 -0
  318. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.tsx +47 -20
  319. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.ts +1 -2
  320. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/utils.ts +58 -0
  321. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/constants.ts +1 -13
  322. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/utils.ts +26 -33
  323. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/columnVisibility.styles.ts +12 -0
  324. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/columnVisibility.tsx +28 -0
  325. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/constants.ts +9 -0
  326. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/menuItems.styles.ts +17 -0
  327. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/menuItems.tsx +53 -0
  328. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/types.ts +5 -0
  329. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/components/MenuItems/utils.ts +44 -0
  330. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/constants.ts +5 -0
  331. package/src/components/Table/components/TableToolbar/components/ColumnVisibility/types.ts +5 -0
  332. package/src/components/Table/components/TableToolbar/tableToolbar.tsx +5 -19
  333. package/src/components/Table/features/RowPosition/constants.ts +8 -5
  334. package/src/components/Table/features/RowPosition/types.ts +4 -0
  335. package/src/components/Table/features/RowPosition/utils.ts +1 -30
  336. package/src/components/Table/features/RowPreview/constants.ts +1 -1
  337. package/src/components/Table/features/entities.ts +2 -2
  338. package/src/components/Table/table.tsx +8 -46
  339. package/src/components/TableCreator/common/utils.ts +0 -4
  340. package/src/components/TableCreator/options/columnTrackSizing/typeGuards.ts +12 -0
  341. package/src/components/TableCreator/options/columnTrackSizing/utils.ts +99 -0
  342. package/src/components/TableCreator/options/hook.ts +8 -11
  343. package/src/components/TableCreator/options/initialState/columnVisibility.ts +22 -0
  344. package/src/components/TableCreator/options/initialState/hook.ts +24 -0
  345. package/src/components/TableCreator/options/visibility/constants.ts +5 -0
  346. package/src/components/TableCreator/options/visibility/hook.ts +22 -0
  347. package/src/components/TableCreator/tableCreator.tsx +3 -27
  348. package/src/components/common/Banner/components/SessionTimeout/sessionTimeout.tsx +1 -1
  349. package/src/components/common/CustomIcon/common/entities.ts +1 -4
  350. package/src/components/common/CustomIcon/components/GoogleIcon/googleIcon.tsx +3 -4
  351. package/src/config/entities.ts +22 -29
  352. package/src/hooks/authentication/auth/useAuthReducer.ts +16 -0
  353. package/src/hooks/authentication/authentication/useAuthenticationReducer.ts +16 -0
  354. package/src/hooks/authentication/config/useAuthenticationConfig.ts +13 -0
  355. package/src/hooks/authentication/credentials/useCredentialsReducer.ts +13 -0
  356. package/src/hooks/authentication/profile/types.ts +9 -0
  357. package/src/hooks/authentication/profile/useProfile.ts +21 -0
  358. package/src/hooks/authentication/providers/types.ts +7 -0
  359. package/src/hooks/authentication/providers/useProviders.ts +23 -0
  360. package/src/hooks/authentication/session/useSessionActive.ts +51 -0
  361. package/src/hooks/authentication/session/useSessionCallbackUrl.ts +25 -0
  362. package/src/hooks/authentication/session/useSessionIdleTimer.ts +10 -0
  363. package/src/hooks/{useSessionTimeout.ts → authentication/session/useSessionTimeout.ts} +2 -2
  364. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.ts +8 -13
  365. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.ts +3 -4
  366. package/src/hooks/authentication/token/types.ts +5 -0
  367. package/src/hooks/authentication/token/useToken.ts +9 -0
  368. package/src/hooks/authentication/token/useTokenReducer.ts +19 -0
  369. package/src/hooks/useEntityList.ts +2 -2
  370. package/src/hooks/useFetchEntity.tsx +3 -3
  371. package/src/hooks/useFileManifest/useFetchFilesFacets.ts +2 -3
  372. package/src/hooks/useFileManifest/useFetchSummary.ts +2 -3
  373. package/src/hooks/useRequestFileLocation.ts +2 -3
  374. package/src/hooks/useRouteHistory.ts +65 -0
  375. package/src/hooks/useRouteRoot.ts +11 -0
  376. package/src/hooks/useSummary.ts +3 -3
  377. package/src/providers/authentication/auth/actions.ts +17 -0
  378. package/src/providers/authentication/auth/constants.ts +6 -0
  379. package/src/providers/authentication/auth/context.ts +9 -0
  380. package/src/providers/authentication/auth/dispatch.ts +58 -0
  381. package/src/providers/authentication/auth/hook.ts +11 -0
  382. package/src/providers/authentication/auth/reducer.ts +25 -0
  383. package/src/providers/authentication/auth/types.ts +63 -0
  384. package/src/providers/authentication/authentication/actions.ts +17 -0
  385. package/src/providers/authentication/authentication/constants.ts +6 -0
  386. package/src/providers/authentication/authentication/context.ts +8 -0
  387. package/src/providers/authentication/authentication/dispatch.ts +55 -0
  388. package/src/providers/authentication/authentication/hook.ts +11 -0
  389. package/src/providers/authentication/authentication/reducer.ts +34 -0
  390. package/src/providers/authentication/authentication/types.ts +64 -0
  391. package/src/providers/authentication/authentication/utils.ts +25 -0
  392. package/src/providers/authentication/common/types.ts +1 -0
  393. package/src/providers/authentication/common/utils.ts +11 -0
  394. package/src/providers/authentication/credentials/actions.ts +17 -0
  395. package/src/providers/authentication/credentials/constants.ts +5 -0
  396. package/src/providers/authentication/credentials/context.ts +8 -0
  397. package/src/providers/authentication/credentials/dispatch.ts +31 -0
  398. package/src/providers/authentication/credentials/hook.ts +11 -0
  399. package/src/providers/authentication/credentials/reducer.ts +30 -0
  400. package/src/providers/authentication/credentials/types.ts +33 -0
  401. package/src/providers/authentication/terra/context.ts +16 -0
  402. package/src/providers/authentication/terra/hook.ts +11 -0
  403. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.ts +9 -0
  404. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.ts +1 -7
  405. package/src/providers/authentication/terra/hooks/useFetchProfiles.ts +61 -0
  406. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.ts +18 -7
  407. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.ts +18 -7
  408. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.ts +18 -7
  409. package/src/providers/authentication/terra/hooks/utils.ts +29 -0
  410. package/src/providers/authentication/terra/provider.tsx +60 -0
  411. package/src/providers/authentication/terra/types.ts +23 -0
  412. package/src/providers/authentication/terra/utils.ts +49 -0
  413. package/src/providers/authentication/token/constants.ts +6 -0
  414. package/src/providers/authentication/token/dispatch.ts +29 -0
  415. package/src/providers/authentication/token/reducer.ts +26 -0
  416. package/src/providers/authentication/token/types.ts +36 -0
  417. package/src/providers/exploreState/actions/updateVisibility/action.ts +29 -0
  418. package/src/providers/exploreState/actions/updateVisibility/dispatch.ts +19 -0
  419. package/src/providers/exploreState/actions/updateVisibility/types.ts +11 -0
  420. package/src/providers/exploreState/actions/updateVisibility/utils.ts +28 -0
  421. package/src/providers/exploreState/entities.ts +1 -1
  422. package/src/providers/exploreState/initializer/utils.ts +5 -21
  423. package/src/providers/exploreState/payloads/entities.ts +0 -6
  424. package/src/providers/exploreState/utils.ts +5 -5
  425. package/src/providers/exploreState.tsx +6 -22
  426. package/src/providers/googleSignInAuthentication/common/types.ts +28 -0
  427. package/src/providers/googleSignInAuthentication/constants.ts +17 -0
  428. package/src/providers/googleSignInAuthentication/hooks/useGoogleSignInService.ts +53 -0
  429. package/src/providers/googleSignInAuthentication/profile/types.ts +15 -0
  430. package/src/providers/googleSignInAuthentication/profile/utils.ts +29 -0
  431. package/src/providers/googleSignInAuthentication/provider.tsx +53 -0
  432. package/src/providers/googleSignInAuthentication/service/constants.ts +16 -0
  433. package/src/providers/googleSignInAuthentication/service/service.ts +68 -0
  434. package/src/providers/googleSignInAuthentication/types.ts +7 -0
  435. package/src/providers/nextAuthAuthentication/hooks/useNextAuthService.ts +26 -0
  436. package/src/providers/nextAuthAuthentication/provider.tsx +42 -0
  437. package/src/providers/nextAuthAuthentication/service/service.ts +14 -0
  438. package/src/providers/nextAuthAuthentication/types.ts +9 -0
  439. package/src/routes/constants.ts +3 -0
  440. package/src/styles/common/mui/button.ts +20 -0
  441. package/src/styles/common/mui/paper.ts +11 -0
  442. package/src/styles/common/mui/popover.ts +19 -0
  443. package/src/theme/common/entities.ts +7 -0
  444. package/src/views/LoginView/loginView.tsx +15 -9
  445. package/tests/getProfileStatus.test.ts +290 -0
  446. package/tests/terraProfileProvider.test.tsx +121 -0
  447. package/tests/transformRoute.test.ts +21 -0
  448. package/tests/useRouteHistory.test.ts +97 -0
  449. package/tests/useSessionActive.test.ts +107 -0
  450. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.d.ts +0 -5
  451. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.js +0 -29
  452. package/lib/components/Login/login.stories.d.ts +0 -6
  453. package/lib/components/Login/login.stories.js +0 -31
  454. package/lib/components/Table/components/CheckboxMenu/checkboxMenu.d.ts +0 -16
  455. package/lib/components/Table/components/CheckboxMenu/checkboxMenu.js +0 -28
  456. package/lib/components/Table/components/CheckboxMenu/checkboxMenu.stories.d.ts +0 -5
  457. package/lib/components/Table/components/CheckboxMenu/checkboxMenu.stories.js +0 -46
  458. package/lib/components/Table/components/CheckboxMenu/checkboxMenu.styles.d.ts +0 -3
  459. package/lib/components/Table/components/CheckboxMenu/checkboxMenu.styles.js +0 -21
  460. package/lib/components/Table/features/constants.d.ts +0 -6
  461. package/lib/components/Table/features/constants.js +0 -8
  462. package/lib/components/TableCreator/common/constants.d.ts +0 -7
  463. package/lib/components/TableCreator/common/constants.js +0 -21
  464. package/lib/components/common/Button/components/LoginButton/loginButton.d.ts +0 -3
  465. package/lib/components/common/Button/components/LoginButton/loginButton.js +0 -6
  466. package/lib/components/common/Button/components/LoginButton/loginButton.styles.d.ts +0 -7
  467. package/lib/components/common/Button/components/LoginButton/loginButton.styles.js +0 -11
  468. package/lib/hooks/useAuthentication/useAuthentication.d.ts +0 -6
  469. package/lib/hooks/useAuthentication/useAuthentication.js +0 -9
  470. package/lib/hooks/useAuthentication/useAuthenticationComplete.d.ts +0 -6
  471. package/lib/hooks/useAuthentication/useAuthenticationComplete.js +0 -55
  472. package/lib/hooks/useAuthentication/useAuthenticationStatus.d.ts +0 -20
  473. package/lib/hooks/useAuthentication/useAuthenticationStatus.js +0 -32
  474. package/lib/hooks/useAuthentication/useFetchGoogleProfile.d.ts +0 -21
  475. package/lib/hooks/useAuthentication/useFetchGoogleProfile.js +0 -41
  476. package/lib/hooks/useAuthentication/useTokenClient.d.ts +0 -11
  477. package/lib/hooks/useAuthentication/useTokenClient.js +0 -29
  478. package/lib/hooks/useAuthenticationConfig.d.ts +0 -6
  479. package/lib/hooks/useAuthenticationConfig.js +0 -14
  480. package/lib/providers/authentication.d.ts +0 -51
  481. package/lib/providers/authentication.js +0 -110
  482. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.tsx +0 -35
  483. package/src/components/Login/login.stories.tsx +0 -43
  484. package/src/components/Table/components/CheckboxMenu/checkboxMenu.stories.tsx +0 -54
  485. package/src/components/Table/components/CheckboxMenu/checkboxMenu.styles.ts +0 -22
  486. package/src/components/Table/components/CheckboxMenu/checkboxMenu.tsx +0 -87
  487. package/src/components/Table/features/constants.ts +0 -10
  488. package/src/components/TableCreator/common/constants.ts +0 -25
  489. package/src/components/common/Button/components/LoginButton/loginButton.styles.ts +0 -13
  490. package/src/components/common/Button/components/LoginButton/loginButton.tsx +0 -16
  491. package/src/hooks/useAuthentication/useAuthentication.tsx +0 -10
  492. package/src/hooks/useAuthentication/useAuthenticationComplete.ts +0 -66
  493. package/src/hooks/useAuthentication/useAuthenticationStatus.ts +0 -49
  494. package/src/hooks/useAuthentication/useFetchGoogleProfile.ts +0 -68
  495. package/src/hooks/useAuthentication/useTokenClient.ts +0 -54
  496. package/src/hooks/useAuthenticationConfig.ts +0 -18
  497. package/src/providers/authentication.tsx +0 -181
  498. package/tests/authentication.test.ts +0 -142
  499. package/tests/useAuthenticationStatus.test.ts +0 -155
  500. /package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/{columnGrouping.styles.d.ts → components/MenuItems/menuItems.styles.d.ts} +0 -0
  501. /package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/{columnGrouping.styles.js → components/MenuItems/menuItems.styles.js} +0 -0
  502. /package/lib/hooks/{useSessionTimeout.d.ts → authentication/session/useSessionTimeout.d.ts} +0 -0
  503. /package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.d.ts +0 -0
  504. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.d.ts +0 -0
  505. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.js +0 -0
  506. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.d.ts +0 -0
  507. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.d.ts +0 -0
  508. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.d.ts +0 -0
  509. /package/src/components/Table/components/TableToolbar/components/ColumnGrouping/{columnGrouping.styles.ts → components/MenuItems/menuItems.styles.ts} +0 -0
  510. /package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.ts +0 -0
@@ -2,25 +2,16 @@ import {
2
2
  Cell,
3
3
  Column,
4
4
  ColumnFiltersState,
5
- InitialTableState,
6
5
  memo,
7
6
  PaginationState,
8
7
  Row,
9
8
  RowData,
10
9
  sortingFns,
11
10
  Table,
12
- VisibilityState,
13
11
  } from "@tanstack/react-table";
14
12
  import { SelectCategory } from "../../../common/entities";
15
- import {
16
- ColumnConfig,
17
- GridTrackMinMax,
18
- GridTrackSize,
19
- } from "../../../config/entities";
20
13
  import { EXPLORE_MODE, ExploreMode } from "../../../hooks/useExploreMode";
21
- import { ACCESSOR_KEYS } from "../../TableCreator/common/constants";
22
- import { CheckboxMenuListItem } from "../components/CheckboxMenu/checkboxMenu";
23
- import { handleToggleVisibility } from "../components/TableFeatures/ColumnVisibility/utils";
14
+ import { COLUMN_IDENTIFIER } from "./columnIdentifier";
24
15
 
25
16
  /**
26
17
  * Internal model of a category term count keyed by category term.
@@ -136,40 +127,6 @@ export function generateDownloadBlob<T extends RowData>(
136
127
  return new Blob([tsv], { type: "text/tab-separated-values" });
137
128
  }
138
129
 
139
- /**
140
- * Returns edit column checkbox menu options.
141
- * @param table - Table.
142
- * @returns a list of edit column options.
143
- */
144
- export function getEditColumnOptions<T extends RowData>(
145
- table: Table<T>
146
- ): CheckboxMenuListItem[] {
147
- const { getAllColumns, initialState } = table;
148
- const { columnVisibility: initialVisibilityState } = initialState;
149
- const allColumns = getAllColumns();
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[]);
171
- }
172
-
173
130
  /**
174
131
  * Returns unique category term counts keyed by category terms.
175
132
  * Custom function based off react table function getFacetedUniqueValues, see
@@ -212,41 +169,6 @@ export function getFacetedUniqueValuesWithArrayValues<T extends RowData>(): (
212
169
  );
213
170
  }
214
171
 
215
- /**
216
- * Generates a string value for the CSS property grid-template-columns.
217
- * Defines grid table track sizing (for each visible column).
218
- * @param columns - Table columns.
219
- * @returns string value for the css property grid-template-columns.
220
- */
221
- export function getGridTemplateColumns<T extends RowData>(
222
- columns: Column<T>[]
223
- ): string {
224
- return columns
225
- .filter(filterGroupedColumn)
226
- .map(({ columnDef: { meta } }) => {
227
- const width = meta?.width;
228
- if (isGridTrackMinMax(width)) {
229
- return `minmax(${width.min}, ${width.max})`;
230
- }
231
- return width;
232
- })
233
- .join(" ");
234
- }
235
-
236
- /**
237
- * Returns initial table state.
238
- * @param columns - Column configuration.
239
- * @returns initial table state.
240
- */
241
- export function getInitialState<T extends RowData>(
242
- columns: ColumnConfig<T>[]
243
- ): InitialTableState {
244
- const columnVisibility = getInitialTableColumnVisibility(columns);
245
- return {
246
- columnVisibility,
247
- };
248
- }
249
-
250
172
  /**
251
173
  * Returns the pinned cell and its index tuple.
252
174
  * @param row - Row.
@@ -288,19 +210,19 @@ export function getTableStatePagination(
288
210
  }
289
211
 
290
212
  /**
291
- * Returns the list of table headers, excluding "select" column.
213
+ * Returns the list of table headers, excluding "rowSelection" column.
292
214
  * @param rows - Table rows.
293
215
  * @returns list of headers.
294
216
  */
295
217
  function getHeadersTableData<T extends RowData>(rows: Row<T>[]): TableData[] {
296
218
  return rows[0]
297
219
  .getAllCells()
298
- .filter((cell) => cell.column.id !== ACCESSOR_KEYS.SELECT)
220
+ .filter((cell) => cell.column.id !== COLUMN_IDENTIFIER.ROW_SELECTION)
299
221
  .map((cell) => cell.column.columnDef.header as TableData);
300
222
  }
301
223
 
302
224
  /**
303
- * Returns the list of table data, excluding "select" column.
225
+ * Returns the list of table data, excluding "rowSelection" column.
304
226
  * @param rows - Table rows.
305
227
  * @returns list of data.
306
228
  */
@@ -308,20 +230,11 @@ function getRowsTableData<T extends RowData>(rows: Row<T>[]): TableData[][] {
308
230
  return rows.map((row) =>
309
231
  row
310
232
  .getAllCells()
311
- .filter((cell) => cell.column.id !== ACCESSOR_KEYS.SELECT)
233
+ .filter((cell) => cell.column.id !== COLUMN_IDENTIFIER.ROW_SELECTION)
312
234
  .map((cell) => cell.getValue() as TableData)
313
235
  );
314
236
  }
315
237
 
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
-
325
238
  /**
326
239
  * Returns true if any or all table rows are selected.
327
240
  * @param table - Table.
@@ -397,29 +310,6 @@ function basicSort<TValue>(val0: TValue, val1: TValue): number {
397
310
  return val0 === val1 ? 0 : val0 > val1 ? 1 : -1;
398
311
  }
399
312
 
400
- /**
401
- * Returns the initial table visibility state for the specified column configuration.
402
- * @param columns - Column configuration.
403
- * @returns initial table visibility state.
404
- */
405
- export function getInitialTableColumnVisibility<T extends RowData>(
406
- columns: ColumnConfig<T>[]
407
- ): VisibilityState {
408
- return columns.reduce((acc, { columnVisible = true, id }) => {
409
- Object.assign(acc, { [id]: columnVisible });
410
- return acc;
411
- }, {});
412
- }
413
-
414
- /**
415
- * Determine if the given track size width is a size range.
416
- * @param width - Grid table track size.
417
- * @returns true if the given track size width is a size range.
418
- */
419
- function isGridTrackMinMax(width?: GridTrackSize): width is GridTrackMinMax {
420
- return (width as GridTrackMinMax).min !== undefined;
421
- }
422
-
423
313
  /**
424
314
  * Returns the given value as a string.
425
315
  * See React Table "toString" function
@@ -1,7 +1,7 @@
1
1
  import { TableCellProps } from "@mui/material";
2
2
  import { Column, CoreCell, CoreHeader, RowData } from "@tanstack/react-table";
3
3
  import { TABLE_CELL_PROPS } from "../../../../../styles/common/mui/tableCell";
4
- import { ACCESSOR_KEYS } from "../../../../TableCreator/common/constants";
4
+ import { COLUMN_IDENTIFIER } from "../../../common/columnIdentifier";
5
5
 
6
6
  /**
7
7
  * Returns table cell alignment based on the cell.
@@ -23,9 +23,9 @@ export function getTableCellPadding<T extends RowData, TValue>(
23
23
  id: CoreHeader<T, TValue>["id"] | CoreCell<T, TValue>["id"]
24
24
  ): TableCellProps["padding"] {
25
25
  switch (id) {
26
- case ACCESSOR_KEYS.ROW_POSITION:
26
+ case COLUMN_IDENTIFIER.ROW_POSITION:
27
27
  return TABLE_CELL_PROPS.PADDING.NORMAL;
28
- case ACCESSOR_KEYS.SELECT:
28
+ case COLUMN_IDENTIFIER.ROW_SELECTION:
29
29
  return TABLE_CELL_PROPS.PADDING.CHECKBOX;
30
30
  default:
31
31
  return TABLE_CELL_PROPS.PADDING.NORMAL;
@@ -1,16 +1,12 @@
1
1
  import { Checkbox as MCheckbox } from "@mui/material";
2
- import { Row, RowData } from "@tanstack/react-table";
2
+ import { CellContext, RowData } from "@tanstack/react-table";
3
3
  import React from "react";
4
4
  import { CheckedIcon } from "../../../../../common/CustomIcon/components/CheckedIcon/checkedIcon";
5
5
  import { UncheckedIcon } from "../../../../../common/CustomIcon/components/UncheckedIcon/uncheckedIcon";
6
6
 
7
- export interface RowSelectionCellProps<T extends RowData> {
8
- row: Row<T>;
9
- }
10
-
11
- export const RowSelectionCell = <T extends RowData>({
7
+ export const RowSelectionCell = <T extends RowData, TValue = unknown>({
12
8
  row,
13
- }: RowSelectionCellProps<T>): JSX.Element => {
9
+ }: CellContext<T, TValue>): JSX.Element => {
14
10
  const { getIsSelected, getToggleSelectedHandler } = row;
15
11
  return (
16
12
  <MCheckbox
@@ -1,52 +1,33 @@
1
- import { Column, RowData, Table } from "@tanstack/react-table";
1
+ import { RowData, Table, VisibilityState } from "@tanstack/react-table";
2
2
 
3
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.
4
+ * Resets column visibility state of the table.
5
+ * ### Default Behavior:
6
+ * - Column visibility state is reset to initial state.
7
+ * ### Grouping State:
8
+ * - Column visibility state is reset to initial state, with any grouped columns remaining visible.
19
9
  * @param table - Table.
20
- * @param column - Column.
21
10
  */
22
- export function handleToggleVisibility<T extends RowData>(
23
- table: Table<T>,
24
- column: Column<T>
11
+ export function handleResetVisibilityState<T extends RowData>(
12
+ table: Table<T>
25
13
  ): 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;
14
+ const { getState, initialState, resetColumnVisibility, setColumnVisibility } =
15
+ table;
16
+ const { grouping } = getState();
17
+ if (grouping.length === 0) {
18
+ resetColumnVisibility(); // Resets column visibility state.
19
+ return;
20
+ }
44
21
 
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.
22
+ // Table is grouped.
23
+ // Ensure grouped columns remain visible (as their initial visibility state may have been `false`).
24
+ const groupedColumnVisibility: VisibilityState = {};
25
+ for (const id of grouping) {
26
+ groupedColumnVisibility[id] = true;
51
27
  }
28
+
29
+ setColumnVisibility({
30
+ ...initialState.columnVisibility,
31
+ ...groupedColumnVisibility,
32
+ });
52
33
  }
@@ -1,22 +1,18 @@
1
1
  import { Checkbox } from "@mui/material";
2
- import { RowData, Table } from "@tanstack/react-table";
2
+ import { HeaderContext, RowData } from "@tanstack/react-table";
3
3
  import React from "react";
4
4
  import { CheckedIcon } from "../../../../../common/CustomIcon/components/CheckedIcon/checkedIcon";
5
5
  import { IndeterminateIcon } from "../../../../../common/CustomIcon/components/IndeterminateIcon/indeterminateIcon";
6
6
  import { UncheckedIcon } from "../../../../../common/CustomIcon/components/UncheckedIcon/uncheckedIcon";
7
7
 
8
- export interface HeadSelectionCellProps<T extends RowData> {
9
- tableInstance: Table<T>;
10
- }
11
-
12
- export const HeadSelectionCell = <T extends RowData>({
13
- tableInstance,
14
- }: HeadSelectionCellProps<T>): JSX.Element => {
8
+ export const HeadSelectionCell = <T extends RowData, TValue = unknown>({
9
+ table,
10
+ }: HeaderContext<T, TValue>): JSX.Element => {
15
11
  const {
16
12
  getIsAllPageRowsSelected,
17
13
  getIsSomePageRowsSelected,
18
14
  getToggleAllRowsSelectedHandler,
19
- } = tableInstance;
15
+ } = table;
20
16
  return (
21
17
  <Checkbox
22
18
  checked={getIsAllPageRowsSelected()}
@@ -1,32 +1,26 @@
1
- import { ListItemText } from "@mui/material";
2
1
  import { RowData } from "@tanstack/react-table";
3
2
  import React from "react";
4
3
  import { DropdownButton } from "../../../../../common/Button/components/DropdownButton/dropdownButton";
5
4
  import { DropdownMenu } from "../../../../../common/DropdownMenu/dropdownMenu";
6
- import { handleClearGroupingState } from "../../../TableFeatures/ColumnGrouping/utils";
7
- import { StyledMenuItem } from "./columnGrouping.styles";
8
5
  import { MenuItems } from "./components/MenuItems/menuItems";
9
- import { LIST_ITEM_TEXT_PROPS, MENU_ITEM_PROPS, MENU_PROPS } from "./constants";
6
+ import { MENU_PROPS } from "./constants";
10
7
  import { ColumnGroupingProps } from "./types";
11
- import { getButtonLabel, getColumnGrouping } from "./utils";
8
+ import { getButtonLabel } from "./utils";
12
9
 
13
10
  export const ColumnGrouping = <T extends RowData>({
14
11
  tableInstance,
15
12
  }: ColumnGroupingProps<T>): JSX.Element | null => {
16
13
  const {
17
- getState,
14
+ getAllColumns,
18
15
  options: { enableGrouping },
19
16
  } = tableInstance;
20
- const { grouping } = getState();
21
- const groupingByColumnId = getColumnGrouping(tableInstance);
22
17
  if (!enableGrouping) return null;
23
- if (groupingByColumnId.size === 0) return null;
24
18
  return (
25
19
  <DropdownMenu
26
20
  {...MENU_PROPS}
27
21
  button={(props) => (
28
22
  <DropdownButton {...props}>
29
- {getButtonLabel(groupingByColumnId, grouping)}
23
+ {getButtonLabel(getAllColumns())}
30
24
  </DropdownButton>
31
25
  )}
32
26
  >
@@ -34,20 +28,8 @@ export const ColumnGrouping = <T extends RowData>({
34
28
  <MenuItems
35
29
  key="column-grouping"
36
30
  closeMenu={closeMenu}
37
- groupingByColumnId={groupingByColumnId}
38
31
  tableInstance={tableInstance}
39
32
  />,
40
- <StyledMenuItem
41
- {...MENU_ITEM_PROPS}
42
- key="reset-grouping-state"
43
- disabled={grouping.length === 0}
44
- onClick={() => {
45
- handleClearGroupingState(tableInstance);
46
- closeMenu();
47
- }}
48
- >
49
- <ListItemText {...LIST_ITEM_TEXT_PROPS}>Clear Grouping</ListItemText>
50
- </StyledMenuItem>,
51
33
  ]}
52
34
  </DropdownMenu>
53
35
  );
@@ -0,0 +1,13 @@
1
+ import { ListItemTextProps, MenuItemProps } from "@mui/material";
2
+
3
+ export const LIST_ITEM_TEXT_PROPS: Partial<ListItemTextProps> = {
4
+ primaryTypographyProps: {
5
+ color: "primary",
6
+ component: "span",
7
+ variant: "inherit",
8
+ },
9
+ };
10
+
11
+ export const MENU_ITEM_PROPS: Partial<MenuItemProps> = {
12
+ component: "li",
13
+ };
@@ -1,28 +1,55 @@
1
1
  import { ListItemText, MenuItem } from "@mui/material";
2
2
  import { RowData } from "@tanstack/react-table";
3
- import React from "react";
4
- import { handleToggleGrouping } from "../../../../../TableFeatures/ColumnGrouping/utils";
5
- import { MENU_ITEM_PROPS } from "../../constants";
3
+ import React, { Fragment } from "react";
4
+ import {
5
+ handleClearGroupingState,
6
+ handleToggleGrouping,
7
+ } from "../../../../../TableFeatures/ColumnGrouping/utils";
8
+ import { LIST_ITEM_TEXT_PROPS, MENU_ITEM_PROPS } from "./constants";
9
+ import { StyledMenuItem } from "./menuItems.styles";
6
10
  import { MenuItemsProps } from "./types";
11
+ import {
12
+ getCanGroupColumns,
13
+ getVisibleColumnCount,
14
+ isToggleGroupingDisabled,
15
+ } from "./utils";
7
16
 
8
17
  export const MenuItems = <T extends RowData>({
9
18
  closeMenu,
10
- groupingByColumnId,
11
19
  tableInstance,
12
- }: MenuItemsProps<T>): JSX.Element[] => {
13
- const columnByMenuItem = [...groupingByColumnId.values()];
14
- return columnByMenuItem.map(([menuItem, column]) => (
15
- <MenuItem
16
- {...MENU_ITEM_PROPS}
17
- key={column.id}
18
- disabled={!column.getCanGroup()}
19
- onClick={() => {
20
- handleToggleGrouping(tableInstance, column);
21
- closeMenu();
22
- }}
23
- selected={column.getIsGrouped()}
24
- >
25
- <ListItemText disableTypography>{menuItem}</ListItemText>
26
- </MenuItem>
27
- ));
20
+ }: MenuItemsProps<T>): JSX.Element => {
21
+ const { getAllColumns } = tableInstance;
22
+ const columns = getCanGroupColumns(getAllColumns());
23
+ const visibleCount = getVisibleColumnCount(getAllColumns());
24
+ return (
25
+ <Fragment>
26
+ {columns.map((column) => {
27
+ return (
28
+ <MenuItem
29
+ {...MENU_ITEM_PROPS}
30
+ key={column.id}
31
+ disabled={isToggleGroupingDisabled(column, visibleCount)}
32
+ onClick={() => {
33
+ handleToggleGrouping(tableInstance, column);
34
+ closeMenu();
35
+ }}
36
+ selected={column.getIsGrouped()}
37
+ >
38
+ <ListItemText disableTypography>
39
+ {column.columnDef.header}
40
+ </ListItemText>
41
+ </MenuItem>
42
+ );
43
+ })}
44
+ <StyledMenuItem
45
+ {...MENU_ITEM_PROPS}
46
+ onClick={() => {
47
+ handleClearGroupingState(tableInstance);
48
+ closeMenu();
49
+ }}
50
+ >
51
+ <ListItemText {...LIST_ITEM_TEXT_PROPS}>Clear Grouping</ListItemText>
52
+ </StyledMenuItem>
53
+ </Fragment>
54
+ );
28
55
  };
@@ -1,8 +1,7 @@
1
- import { Column, RowData, Table } from "@tanstack/react-table";
1
+ import { RowData, Table } from "@tanstack/react-table";
2
2
  import { UseMenu } from "../../../../../../../common/Menu/hooks/useMenu";
3
3
 
4
4
  export interface MenuItemsProps<T extends RowData> {
5
5
  closeMenu: UseMenu<HTMLButtonElement>["onClose"];
6
- groupingByColumnId: Map<string, [string, Column<T>]>;
7
6
  tableInstance: Table<T>;
8
7
  }
@@ -0,0 +1,58 @@
1
+ import { Column, RowData } from "@tanstack/react-table";
2
+ import { COLUMN_IDENTIFIER } from "../../../../../../common/columnIdentifier";
3
+ import { isStringHeaderColumn } from "../../../../../../common/typeGuards";
4
+
5
+ /**
6
+ * Returns columns that are enabled to be grouped.
7
+ * @param columns - Columns.
8
+ * @returns columns that are enabled to be grouped.
9
+ */
10
+ export function getCanGroupColumns<T extends RowData>(
11
+ columns: Column<T>[]
12
+ ): (Column<T> & { columnDef: { header: string } })[] {
13
+ return columns
14
+ .filter(isStringHeaderColumn)
15
+ .filter(({ getCanGroup }) => getCanGroup());
16
+ }
17
+
18
+ /**
19
+ * Returns the number of visible columns, excluding system columns "rowPosition" and "rowSelection".
20
+ * @param columns - Columns.
21
+ * @returns number of visible columns.
22
+ */
23
+ export function getVisibleColumnCount<T extends RowData>(
24
+ columns: Column<T>[]
25
+ ): number {
26
+ return columns
27
+ .filter((column) => !isSystemColumn(column))
28
+ .filter(({ getIsVisible }) => getIsVisible()).length;
29
+ }
30
+
31
+ /**
32
+ * Returns true if the column is a system column "rowPosition" or "rowSelection".
33
+ * @param column - Column.
34
+ * @returns true if the column is a system column.
35
+ */
36
+ function isSystemColumn<T extends RowData>(column: Column<T>): boolean {
37
+ return (
38
+ column.id === COLUMN_IDENTIFIER.ROW_POSITION ||
39
+ column.id === COLUMN_IDENTIFIER.ROW_SELECTION
40
+ );
41
+ }
42
+
43
+ /**
44
+ * Returns whether the column grouping toggle is disabled.
45
+ * - If the column is not enabled to be grouped, the toggle is disabled.
46
+ * - If the column is not visible, the toggle is disabled.
47
+ * - If the count of visible columns is 1, the toggle is disabled.
48
+ * @param column - Column.
49
+ * @param visibleCount - Count of visible, un-grouped columns.
50
+ * @returns true if the column visibility toggle is disabled.
51
+ */
52
+ export function isToggleGroupingDisabled<T extends RowData>(
53
+ column: Column<T>,
54
+ visibleCount: number
55
+ ): boolean {
56
+ if (!column.getCanGroup() || !column.getIsVisible()) return true;
57
+ return visibleCount === 1; // We should not be able to group the last visible column; at least one un-grouped column should be visible.
58
+ }
@@ -1,17 +1,5 @@
1
- import { ListItemTextProps, MenuItemProps, MenuProps } from "@mui/material";
2
-
3
- export const LIST_ITEM_TEXT_PROPS: Partial<ListItemTextProps> = {
4
- primaryTypographyProps: {
5
- color: "primary",
6
- component: "span",
7
- variant: "inherit",
8
- },
9
- };
1
+ import { MenuProps } from "@mui/material";
10
2
 
11
3
  export const MENU_PROPS: Partial<MenuProps> = {
12
4
  variant: "menu",
13
5
  };
14
-
15
- export const MENU_ITEM_PROPS: Partial<MenuItemProps> = {
16
- component: "li",
17
- };
@@ -1,45 +1,38 @@
1
- import { Column, GroupingState, RowData, Table } from "@tanstack/react-table";
1
+ import { Column, RowData } from "@tanstack/react-table";
2
+ import { isStringHeaderColumn } from "../../../../common/typeGuards";
2
3
 
3
4
  /**
4
5
  * Retrieves the button label for the column grouping dropdown.
5
- * Currently, the grouping state supports grouping by a single column only.
6
- * @param groupingByColumnId - Map of column groupings by column ID.
7
- * @param groupingState - Grouping state.
6
+ * @param columns - Columns.
8
7
  * @returns button label.
9
8
  */
10
9
  export function getButtonLabel<T extends RowData>(
11
- groupingByColumnId: Map<string, [string, Column<T>]>,
12
- groupingState: GroupingState
10
+ columns: Column<T>[]
13
11
  ): string {
14
- const grouping = groupingByColumnId.get(groupingState[0]);
15
- if (!grouping) return "Group by";
16
- return `Group by: ${grouping[0]}`;
12
+ const headers = columns
13
+ .filter(isColumnGrouped)
14
+ .filter(isStringHeaderColumn)
15
+ .map(mapGroupedHeader);
16
+ if (headers.length === 0) return "Group by";
17
+ return `Group by: ${headers.join(", ")}`;
17
18
  }
18
19
 
19
20
  /**
20
- * Retrieves a map of column groupings by column ID from the given table instance.
21
- * Columns that are visible, group-able with a `string` header are included and are keyed by
22
- * their column ID. The value is a tuple containing the column header and the column instance.
23
- * @param table - Table.
24
- * @returns map of column grouping by column id.
21
+ * Returns true if the column is grouped.
22
+ * @param column - Column.
23
+ * @returns true if the column is grouped.
25
24
  */
26
- export function getColumnGrouping<T extends RowData>(
27
- table: Table<T>
28
- ): Map<string, [string, Column<T>]> {
29
- const groupingByColumnId = new Map<string, [string, Column<T>]>();
30
- for (const column of table.getAllColumns()) {
31
- const {
32
- columnDef: { header },
33
- getCanGroup,
34
- getIsVisible,
35
- id,
36
- } = column;
37
- if (!getCanGroup()) continue;
38
- if (!getIsVisible()) continue;
39
- // Currently, headers are configured as strings.
40
- // Only include columns that have a string header (for now).
41
- if (typeof header !== "string") continue;
42
- groupingByColumnId.set(id, [header, column]);
43
- }
44
- return groupingByColumnId;
25
+ function isColumnGrouped<T extends RowData>(column: Column<T>): boolean {
26
+ return column.getIsGrouped();
27
+ }
28
+
29
+ /**
30
+ * Maps a column to its header.
31
+ * @param column - Column.
32
+ * @returns header.
33
+ */
34
+ function mapGroupedHeader<T extends RowData>(
35
+ column: Column<T> & { columnDef: { header: string } }
36
+ ): string {
37
+ return column.columnDef.header;
45
38
  }
@@ -0,0 +1,12 @@
1
+ import styled from "@emotion/styled";
2
+ import { DropdownMenu } from "../../../../../common/DropdownMenu/dropdownMenu";
3
+
4
+ export const StyledDropdownMenu = styled(DropdownMenu)`
5
+ .MuiListItemButton-root {
6
+ gap: 8px;
7
+
8
+ &.Mui-disabled {
9
+ opacity: 1;
10
+ }
11
+ }
12
+ `;