@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
@@ -0,0 +1,97 @@
1
+ import { jest } from "@jest/globals";
2
+ import { act, renderHook } from "@testing-library/react";
3
+ import Router, { NextRouter } from "next/router";
4
+
5
+ const ROOT_PATH = "/";
6
+ const ROUTES = ["/route1", "/route2", "/route3", "/route4"];
7
+
8
+ jest.unstable_mockModule("next/router", () => {
9
+ return {
10
+ ...jest.requireActual<typeof import("next/router")>("next/router"),
11
+ useRouter: jest.fn(),
12
+ };
13
+ });
14
+ jest.unstable_mockModule("../src/hooks/useRouteRoot", () => ({
15
+ useRouteRoot: jest.fn(),
16
+ }));
17
+
18
+ const { useRouter } = await import("next/router");
19
+ const { useRouteRoot } = await import("../src/hooks/useRouteRoot");
20
+ const { useRouteHistory } = await import("../src/hooks/useRouteHistory");
21
+
22
+ const MOCK_USE_ROUTER = useRouter as jest.MockedFunction<
23
+ () => Partial<NextRouter>
24
+ >;
25
+ const MOCK_USE_ROUTE_ROOT = useRouteRoot as jest.MockedFunction<
26
+ typeof useRouteRoot
27
+ >;
28
+
29
+ describe("useRouteHistory", () => {
30
+ beforeEach(() => {
31
+ MOCK_USE_ROUTE_ROOT.mockReset();
32
+ MOCK_USE_ROUTER.mockReset();
33
+ MOCK_USE_ROUTER.mockReturnValue({
34
+ asPath: ROUTES[0],
35
+ });
36
+ MOCK_USE_ROUTE_ROOT.mockReturnValue(ROOT_PATH);
37
+ });
38
+
39
+ test("returns the root path when no previous route exists", () => {
40
+ const { result } = renderHook(() => useRouteHistory());
41
+ expect(result.current.callbackUrl()).toBe(ROOT_PATH);
42
+ });
43
+
44
+ test("updates history on route change", () => {
45
+ const { result } = renderHook(() => useRouteHistory());
46
+ act(() => {
47
+ Router.events.emit("routeChangeComplete", ROUTES[1]);
48
+ Router.events.emit("routeChangeComplete", ROUTES[2]);
49
+ });
50
+ expect(result.current.callbackUrl()).toBe(ROUTES[1]);
51
+ });
52
+
53
+ test("does not add duplicate routes to history", () => {
54
+ const { result } = renderHook(() => useRouteHistory());
55
+ act(() => {
56
+ Router.events.emit("routeChangeComplete", ROUTES[2]);
57
+ Router.events.emit("routeChangeComplete", ROUTES[2]);
58
+ });
59
+ expect(result.current.callbackUrl()).toBe(ROUTES[0]);
60
+ });
61
+
62
+ test("limits history length to maxHistory", () => {
63
+ const { result } = renderHook(() => useRouteHistory(2));
64
+ act(() => {
65
+ Router.events.emit("routeChangeComplete", ROUTES[1]);
66
+ Router.events.emit("routeChangeComplete", ROUTES[2]);
67
+ Router.events.emit("routeChangeComplete", ROUTES[3]);
68
+ });
69
+ // Use `callbackUrl` with a transform function to capture the full history.
70
+ let history;
71
+ result.current.callbackUrl((routes) => {
72
+ history = routes;
73
+ return ROOT_PATH;
74
+ });
75
+ // After emitting the routes, the history stack is [ROUTES[3], ROUTES[2].
76
+ expect(history).toHaveLength(2);
77
+ expect(history).toEqual([ROUTES[3], ROUTES[2]]);
78
+ });
79
+
80
+ test("uses transform function if provided", () => {
81
+ const { result } = renderHook(() => useRouteHistory(4));
82
+ act(() => {
83
+ Router.events.emit("routeChangeComplete", ROUTES[1]);
84
+ Router.events.emit("routeChangeComplete", ROUTES[2]);
85
+ Router.events.emit("routeChangeComplete", ROUTES[3]);
86
+ });
87
+ // After emitting the routes, the history stack is [ROUTES[3], ROUTES[2], ROUTES[1], ROUTES[0]].
88
+ const transformFn = (routes: string[]): string => routes[2];
89
+ expect(result.current.callbackUrl(transformFn)).toBe(ROUTES[1]);
90
+ });
91
+
92
+ test("returns root path when transform function is provided but history stack lacks sufficient entries", () => {
93
+ const { result } = renderHook(() => useRouteHistory());
94
+ const transformFn = (routes: string[]): string => routes[2];
95
+ expect(result.current.callbackUrl(transformFn)).toBe(ROOT_PATH);
96
+ });
97
+ });
@@ -0,0 +1,107 @@
1
+ import { jest } from "@jest/globals";
2
+ import { renderHook } from "@testing-library/react";
3
+ import { TransformRouteFn } from "../src/hooks/useRouteHistory";
4
+ import {
5
+ AUTH_STATUS,
6
+ AuthState,
7
+ } from "../src/providers/authentication/auth/types";
8
+ import {
9
+ AUTHENTICATION_STATUS,
10
+ AuthenticationState,
11
+ } from "../src/providers/authentication/authentication/types";
12
+
13
+ const AUTH_STATE_AUTHENTICATED_SETTLED: AuthState = {
14
+ isAuthenticated: true,
15
+ status: AUTH_STATUS.SETTLED,
16
+ };
17
+
18
+ const AUTH_STATE_PENDING: AuthState = {
19
+ isAuthenticated: false,
20
+ status: AUTH_STATUS.PENDING,
21
+ };
22
+
23
+ const AUTH_STATE_UNAUTHENTICATED_SETTLED: AuthState = {
24
+ isAuthenticated: false,
25
+ status: AUTH_STATUS.SETTLED,
26
+ };
27
+
28
+ const AUTHENTICATION_STATE_PENDING: AuthenticationState = {
29
+ profile: undefined,
30
+ status: AUTHENTICATION_STATUS.PENDING,
31
+ };
32
+
33
+ const AUTHENTICATION_STATE_SETTLED: AuthenticationState = {
34
+ profile: { email: "", name: "" },
35
+ status: AUTHENTICATION_STATUS.SETTLED,
36
+ };
37
+
38
+ const ROOT_PATH = "/";
39
+ const ROUTES = ["/login", "/route1", "/route2"];
40
+
41
+ jest.unstable_mockModule("next/router", () => {
42
+ return {
43
+ ...jest.requireActual<typeof import("next/router")>("next/router"),
44
+ default: {
45
+ push: jest.fn(),
46
+ },
47
+ };
48
+ });
49
+ jest.unstable_mockModule("../src/hooks/useRouteHistory", () => ({
50
+ useRouteHistory: jest.fn(),
51
+ }));
52
+
53
+ const Router = (await import("next/router")).default;
54
+ const { useRouteHistory } = await import("../src/hooks/useRouteHistory");
55
+ const { useSessionActive } = await import(
56
+ "../src/hooks/authentication/session/useSessionActive"
57
+ );
58
+
59
+ const MOCK_USE_ROUTE_HISTORY = useRouteHistory as jest.MockedFunction<
60
+ typeof useRouteHistory
61
+ >;
62
+
63
+ describe("useSessionActive", () => {
64
+ beforeEach(() => {
65
+ MOCK_USE_ROUTE_HISTORY.mockReset();
66
+ MOCK_USE_ROUTE_HISTORY.mockReturnValue({
67
+ callbackUrl: jest.fn(
68
+ (transformFn?: TransformRouteFn | undefined) =>
69
+ transformFn?.(ROUTES) ?? ROOT_PATH
70
+ ),
71
+ });
72
+ });
73
+
74
+ test("does not redirect if auth status and authentication status is PENDING", () => {
75
+ renderHook(() =>
76
+ useSessionActive(AUTH_STATE_PENDING, AUTHENTICATION_STATE_PENDING)
77
+ );
78
+ expect(Router.push).not.toHaveBeenCalled();
79
+ });
80
+
81
+ test("does not redirect if auth status is PENDING and authentication status is SETTLED", () => {
82
+ renderHook(() =>
83
+ useSessionActive(AUTH_STATE_PENDING, AUTHENTICATION_STATE_SETTLED)
84
+ );
85
+ expect(Router.push).not.toHaveBeenCalled();
86
+ });
87
+
88
+ test("redirects if auth status and authentication status is SETTLED", () => {
89
+ renderHook(() =>
90
+ useSessionActive(
91
+ AUTH_STATE_UNAUTHENTICATED_SETTLED,
92
+ AUTHENTICATION_STATE_SETTLED
93
+ )
94
+ );
95
+ expect(Router.push).toHaveBeenCalled();
96
+ });
97
+
98
+ test("redirects to callback URL if auth status is SETTLED and authentication status is SETTLED", () => {
99
+ renderHook(() =>
100
+ useSessionActive(
101
+ AUTH_STATE_AUTHENTICATED_SETTLED,
102
+ AUTHENTICATION_STATE_SETTLED
103
+ )
104
+ );
105
+ expect(Router.push).toHaveBeenCalledWith(ROUTES[1]);
106
+ });
107
+ });
@@ -1,5 +0,0 @@
1
- import { Meta } from "@storybook/react";
2
- import { AuthenticationMenu } from "./authenticationMenu";
3
- declare const _default: Meta<typeof AuthenticationMenu>;
4
- export default _default;
5
- export declare const AuthenticationMenuStory: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./authenticationMenu").AuthenticationMenuProps>;
@@ -1,29 +0,0 @@
1
- import React from "react";
2
- import { AuthenticationMenu } from "./authenticationMenu";
3
- export default {
4
- argTypes: {
5
- onLogout: {
6
- description: "Callback to be called when 'Logout' button is clicked",
7
- },
8
- userProfile: {
9
- description: "User profile with name and avatar",
10
- },
11
- },
12
- component: AuthenticationMenu,
13
- title: "Components/Navigation/AuthenticationMenu",
14
- };
15
- const AuthenticationMenuTemplate = (args) => React.createElement(AuthenticationMenu, { ...args });
16
- export const AuthenticationMenuStory = AuthenticationMenuTemplate.bind({});
17
- AuthenticationMenuStory.args = {
18
- userProfile: {
19
- email: "john@smith.com",
20
- email_verified: true,
21
- family_name: "Smith",
22
- given_name: "John",
23
- hd: "",
24
- locale: "",
25
- name: "john_smith",
26
- picture: "https://i.pravatar.cc/200",
27
- sub: "",
28
- },
29
- };
@@ -1,6 +0,0 @@
1
- import { Meta, StoryObj } from "@storybook/react";
2
- import { Login } from "./login";
3
- declare const _default: Meta<typeof Login>;
4
- export default _default;
5
- type Story = StoryObj<typeof Login>;
6
- export declare const LoginStory: Story;
@@ -1,31 +0,0 @@
1
- import React from "react";
2
- import { HelpIconButton } from "../common/Button/components/HelpIconButton/helpIconButton";
3
- import { Login } from "./login";
4
- export default {
5
- argTypes: {
6
- isGoogle: { control: "boolean" },
7
- termsOfService: { control: "object" },
8
- text: { control: "object" },
9
- title: { control: "text" },
10
- warning: { control: "object" },
11
- },
12
- component: Login,
13
- parameters: {
14
- layout: "fullscreen",
15
- },
16
- title: "Components/Login",
17
- };
18
- export const LoginStory = {
19
- args: {
20
- isGoogle: true,
21
- termsOfService: (React.createElement("p", null, "I have read and agree to privacy notice and terms of use")),
22
- text: (React.createElement("p", null,
23
- "Please sign in to your Data Explorer account",
24
- " ",
25
- React.createElement(HelpIconButton, { url: "https://www.google.com/" }))),
26
- title: "Sign in to your account",
27
- warning: (React.createElement("div", null,
28
- React.createElement("p", null, "WARNING NOTICE"),
29
- React.createElement("p", null, "This is a warning notice."))),
30
- },
31
- };
@@ -1,16 +0,0 @@
1
- type MenuListItemOnChangeFn = (event: unknown) => void;
2
- type onResetFn = () => void;
3
- export interface CheckboxMenuListItem {
4
- checked: boolean;
5
- disabled?: boolean;
6
- label: string;
7
- onChange: MenuListItemOnChangeFn;
8
- value: string;
9
- }
10
- export interface CheckboxMenuProps {
11
- label: string;
12
- onReset: onResetFn;
13
- options: CheckboxMenuListItem[];
14
- }
15
- export declare const CheckboxMenu: ({ label: buttonLabel, onReset, options, }: CheckboxMenuProps) => JSX.Element;
16
- export {};
@@ -1,28 +0,0 @@
1
- import { Checkbox, ListItem, ListItemButton, ListItemText, } from "@mui/material";
2
- import React, { useState } from "react";
3
- import { ButtonTextPrimary } from "../../../common/Button/components/ButtonTextPrimary/buttonTextPrimary";
4
- import { DropdownButton } from "../../../common/Button/components/DropdownButton/dropdownButton";
5
- import { CheckedIcon } from "../../../common/CustomIcon/components/CheckedIcon/checkedIcon";
6
- import { UncheckedIcon } from "../../../common/CustomIcon/components/UncheckedIcon/uncheckedIcon";
7
- import { Menu } from "./checkboxMenu.styles";
8
- export const CheckboxMenu = ({ label: buttonLabel, onReset, options, }) => {
9
- const [anchorEl, setAnchorEl] = useState(null);
10
- const open = Boolean(anchorEl);
11
- const onOpenMenu = (event) => {
12
- setAnchorEl(event.currentTarget);
13
- };
14
- const onCloseMenu = () => {
15
- setAnchorEl(null);
16
- };
17
- return (React.createElement(React.Fragment, null,
18
- React.createElement(DropdownButton, { onClick: onOpenMenu, open: open }, buttonLabel),
19
- React.createElement(Menu, { anchorEl: anchorEl, anchorOrigin: { horizontal: "right", vertical: "bottom" }, onClose: onCloseMenu, open: open, slotProps: { paper: { variant: "menu" } }, transformOrigin: {
20
- horizontal: "right",
21
- vertical: "top",
22
- } },
23
- options.map(({ checked, disabled = false, label, onChange, value }) => (React.createElement(ListItemButton, { disabled: disabled, key: value, onClick: onChange, role: undefined },
24
- React.createElement(Checkbox, { checked: checked, checkedIcon: React.createElement(CheckedIcon, null), disabled: disabled, icon: React.createElement(UncheckedIcon, null) }),
25
- React.createElement(ListItemText, { disableTypography: true, primary: React.createElement("span", null, label) })))),
26
- React.createElement(ListItem, { component: "div" },
27
- React.createElement(ButtonTextPrimary, { onClick: onReset }, "Reset")))));
28
- };
@@ -1,5 +0,0 @@
1
- import { ComponentMeta } from "@storybook/react";
2
- import { CheckboxMenu } from "./checkboxMenu";
3
- declare const _default: ComponentMeta<typeof CheckboxMenu>;
4
- export default _default;
5
- export declare const CheckboxMenuStory: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./checkboxMenu").CheckboxMenuProps>;
@@ -1,46 +0,0 @@
1
- import React from "react";
2
- import { CheckboxMenu } from "./checkboxMenu";
3
- export default {
4
- argTypes: {
5
- label: { control: "text" },
6
- onReset: { control: { disabled: true } },
7
- options: { control: "array" },
8
- },
9
- component: CheckboxMenu,
10
- title: "Components/Common/Menu/CheckboxMenu",
11
- };
12
- const CheckboxMenuTemplate = (args) => (React.createElement(CheckboxMenu, { ...args }));
13
- const onChange = () => {
14
- // onChange function
15
- };
16
- const onReset = () => {
17
- // onReset function
18
- };
19
- export const CheckboxMenuStory = CheckboxMenuTemplate.bind({});
20
- CheckboxMenuStory.args = {
21
- label: "Options",
22
- onReset: onReset,
23
- options: [
24
- {
25
- checked: true,
26
- disabled: true,
27
- label: "Item 1",
28
- onChange,
29
- value: "item_1",
30
- },
31
- {
32
- checked: false,
33
- disabled: false,
34
- label: "Item 2",
35
- onChange,
36
- value: "item_2",
37
- },
38
- {
39
- checked: true,
40
- disabled: false,
41
- label: "Item 3",
42
- onChange,
43
- value: "item_3",
44
- },
45
- ],
46
- };
@@ -1,3 +0,0 @@
1
- export declare const Menu: import("@emotion/styled").StyledComponent<import("@mui/material").MenuProps & {
2
- theme?: import("@emotion/react").Theme;
3
- }, {}, {}>;
@@ -1,21 +0,0 @@
1
- import styled from "@emotion/styled";
2
- import { Menu as MMenu } from "@mui/material";
3
- export const Menu = styled(MMenu) `
4
- .MuiPaper-menu {
5
- margin: 4px 0;
6
- }
7
-
8
- // List item button
9
- .MuiListItemButton-root {
10
- gap: 8px;
11
- }
12
-
13
- // List item
14
- .MuiListItem-root {
15
- padding: 10px 16px;
16
- }
17
-
18
- .MuiListItemButton-root.Mui-disabled {
19
- opacity: 1;
20
- }
21
- `;
@@ -1,6 +0,0 @@
1
- import { PaginationState } from "@tanstack/react-table";
2
- /**
3
- * Default TanStack pagination state.
4
- * See https://tanstack.com/table/latest/docs/guide/custom-features#getinitialstate.
5
- */
6
- export declare const DEFAULT_PAGINATION: PaginationState;
@@ -1,8 +0,0 @@
1
- /**
2
- * Default TanStack pagination state.
3
- * See https://tanstack.com/table/latest/docs/guide/custom-features#getinitialstate.
4
- */
5
- export const DEFAULT_PAGINATION = {
6
- pageIndex: 0,
7
- pageSize: 10,
8
- };
@@ -1,7 +0,0 @@
1
- import { RowData } from "@tanstack/react-table";
2
- import { ColumnConfig } from "../../../config/entities";
3
- export declare const ACCESSOR_KEYS: {
4
- ROW_POSITION: string;
5
- SELECT: string;
6
- };
7
- export declare const COLUMN_CONFIGS: Record<string, ColumnConfig<RowData>>;
@@ -1,21 +0,0 @@
1
- import { RowSelectionCell } from "../../Table/components/TableCell/components/RowSelectionCell/rowSelectionCell";
2
- export const ACCESSOR_KEYS = {
3
- ROW_POSITION: "rowPosition",
4
- SELECT: "select",
5
- };
6
- export const COLUMN_CONFIGS = {
7
- SELECT: {
8
- columnPinned: false,
9
- columnVisible: false,
10
- componentConfig: { component: RowSelectionCell },
11
- disableHiding: true,
12
- enableGrouping: false,
13
- enableSorting: false,
14
- header: ACCESSOR_KEYS.SELECT,
15
- id: ACCESSOR_KEYS.SELECT,
16
- meta: {
17
- header: "",
18
- },
19
- width: "max-content",
20
- },
21
- };
@@ -1,3 +0,0 @@
1
- import { ButtonProps } from "../../button";
2
- export type LoginButtonProps = Exclude<ButtonProps, "StartIcon">;
3
- export declare const LoginButton: ({ children, ...props }: LoginButtonProps) => JSX.Element;
@@ -1,6 +0,0 @@
1
- import React from "react";
2
- import { LoginButton as Button, LoginButtonText } from "./loginButton.styles";
3
- export const LoginButton = ({ children, ...props }) => {
4
- return (React.createElement(Button, { fullWidth: true, ...props },
5
- React.createElement(LoginButtonText, null, children)));
6
- };
@@ -1,7 +0,0 @@
1
- export declare const LoginButton: import("@emotion/styled").StyledComponent<Omit<import("../../button").ButtonProps, "ref"> & import("react").RefAttributes<HTMLButtonElement> & {
2
- theme?: import("@emotion/react").Theme;
3
- }, {}, {}>;
4
- export declare const LoginButtonText: import("@emotion/styled").StyledComponent<{
5
- theme?: import("@emotion/react").Theme;
6
- as?: React.ElementType;
7
- }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
@@ -1,11 +0,0 @@
1
- import styled from "@emotion/styled";
2
- import { ButtonSecondary } from "../ButtonSecondary/buttonSecondary";
3
- export const LoginButton = styled(ButtonSecondary) `
4
- .MuiButton-endIcon {
5
- margin-right: -6px;
6
- }
7
- `;
8
- export const LoginButtonText = styled.span `
9
- flex: 1;
10
- text-align: left;
11
- `;
@@ -1,6 +0,0 @@
1
- import { AuthContextProps } from "../../providers/authentication";
2
- /**
3
- * Returns authentication context.
4
- * @returns authentication context.
5
- */
6
- export declare const useAuthentication: () => AuthContextProps;
@@ -1,9 +0,0 @@
1
- import { useContext } from "react";
2
- import { AuthContext } from "../../providers/authentication";
3
- /**
4
- * Returns authentication context.
5
- * @returns authentication context.
6
- */
7
- export const useAuthentication = () => {
8
- return useContext(AuthContext);
9
- };
@@ -1,6 +0,0 @@
1
- import { AUTHENTICATION_STATUS } from "./common/entities";
2
- /**
3
- * Handles the completion of the authentication process.
4
- * @param authenticationStatus - Authentication status.
5
- */
6
- export declare const useAuthenticationComplete: (authenticationStatus: AUTHENTICATION_STATUS) => void;
@@ -1,55 +0,0 @@
1
- import Router, { useRouter } from "next/router";
2
- import { useEffect, useMemo, useRef } from "react";
3
- import { escapeRegExp } from "../../common/utils";
4
- import { ROUTE_LOGIN } from "../../providers/authentication";
5
- import { INACTIVITY_PARAM } from "../useSessionTimeout";
6
- import { AUTHENTICATION_STATUS } from "./common/entities";
7
- /**
8
- * Handles the completion of the authentication process.
9
- * @param authenticationStatus - Authentication status.
10
- */
11
- export const useAuthenticationComplete = (authenticationStatus) => {
12
- const { asPath } = useRouter();
13
- const routeHistoryRef = useRef(initRouteHistory(asPath));
14
- // Maintain a history of routes that have been visited prior to authentication.
15
- routeHistoryRef.current = useMemo(() => updateRouteHistory(routeHistoryRef.current, asPath), [asPath]);
16
- // Redirect to the previous route after authentication is completed.
17
- useEffect(() => {
18
- if (authenticationStatus === AUTHENTICATION_STATUS.COMPLETED) {
19
- Router.push(routeHistoryRef.current);
20
- }
21
- }, [authenticationStatus]);
22
- };
23
- /**
24
- * Initializes route history with the current path.
25
- * Returns base path if current path is the login route.
26
- * @param path - current browser path.
27
- * @returns path to be used as the initial route history.
28
- */
29
- function initRouteHistory(path) {
30
- return path === ROUTE_LOGIN ? "/" : removeInactivityTimeoutQueryParam(path);
31
- }
32
- /**
33
- * Removes the inactivity timeout query parameter from the path.
34
- * the inactivity timeout parameter is used to indicate that the session has timed out; remove the parameter to
35
- * clear the session timeout banner after the user logs in again.
36
- * @param path - Path.
37
- * @returns path without the inactivity timeout query parameter.
38
- */
39
- function removeInactivityTimeoutQueryParam(path) {
40
- const regex = new RegExp(`\\?${escapeRegExp(INACTIVITY_PARAM)}(?:$|[=&].*)`);
41
- return path.replace(regex, "");
42
- }
43
- /**
44
- * Updates route history with the current path, unless the current path is the LoginView page.
45
- * @param prevPath - route history path.
46
- * @param path - current browser path.
47
- * @returns updated path to be used as the route history.
48
- */
49
- function updateRouteHistory(prevPath, path) {
50
- let currentPath = prevPath;
51
- if (path !== ROUTE_LOGIN) {
52
- currentPath = path;
53
- }
54
- return removeInactivityTimeoutQueryParam(currentPath);
55
- }
@@ -1,20 +0,0 @@
1
- import { AUTHENTICATION_STATUS, LoginResponse, LoginStatus } from "./common/entities";
2
- import { GoogleResponse } from "./useFetchGoogleProfile";
3
- import { TerraNIHResponse } from "./useFetchTerraNIHProfile";
4
- import { TerraResponse } from "./useFetchTerraProfile";
5
- import { TerraTermsOfServiceResponse } from "./useFetchTerraTermsOfService";
6
- /**
7
- * Handles the status of the authentication process.
8
- * @param userProfileLoginStatus - User profile login status.
9
- * @param terraProfileLoginStatus - Terra profile login status.
10
- * @param terraTOSLoginStatus - Terra terms of service login status.
11
- * @param terraNIHProfileLoginStatus - Terra NIH profile login status.
12
- * @returns authentication status.
13
- */
14
- export declare const useAuthenticationStatus: (userProfileLoginStatus: LoginStatus<GoogleResponse>, terraProfileLoginStatus: LoginStatus<TerraResponse>, terraTOSLoginStatus: LoginStatus<TerraTermsOfServiceResponse>, terraNIHProfileLoginStatus: LoginStatus<TerraNIHResponse>) => AUTHENTICATION_STATUS;
15
- /**
16
- * Returns the authentication status ("INCOMPLETE" or "COMPLETE").
17
- * @param loginStatuses - Login statuses.
18
- * @returns authentication status.
19
- */
20
- export declare function getAuthenticationStatus(loginStatuses: LoginStatus<LoginResponse>[]): AUTHENTICATION_STATUS;
@@ -1,32 +0,0 @@
1
- import { AUTHENTICATION_STATUS, REQUEST_STATUS, } from "./common/entities";
2
- /**
3
- * Handles the status of the authentication process.
4
- * @param userProfileLoginStatus - User profile login status.
5
- * @param terraProfileLoginStatus - Terra profile login status.
6
- * @param terraTOSLoginStatus - Terra terms of service login status.
7
- * @param terraNIHProfileLoginStatus - Terra NIH profile login status.
8
- * @returns authentication status.
9
- */
10
- export const useAuthenticationStatus = (userProfileLoginStatus, terraProfileLoginStatus, terraTOSLoginStatus, terraNIHProfileLoginStatus) => {
11
- return getAuthenticationStatus([
12
- terraNIHProfileLoginStatus,
13
- terraProfileLoginStatus,
14
- terraTOSLoginStatus,
15
- userProfileLoginStatus,
16
- ]);
17
- };
18
- /**
19
- * Returns the authentication status ("INCOMPLETE" or "COMPLETE").
20
- * @param loginStatuses - Login statuses.
21
- * @returns authentication status.
22
- */
23
- export function getAuthenticationStatus(loginStatuses) {
24
- for (const loginStatus of loginStatuses) {
25
- if (!loginStatus.isSupported)
26
- continue;
27
- if (loginStatus.requestStatus === REQUEST_STATUS.NOT_STARTED) {
28
- return AUTHENTICATION_STATUS.INCOMPLETE;
29
- }
30
- }
31
- return AUTHENTICATION_STATUS.COMPLETED;
32
- }
@@ -1,21 +0,0 @@
1
- import { LoginStatus } from "./common/entities";
2
- export type UserProfile = GoogleResponse;
3
- export interface GoogleResponse {
4
- email: string;
5
- email_verified: boolean;
6
- family_name: string;
7
- given_name: string;
8
- hd: string;
9
- locale: string;
10
- name: string;
11
- picture: string;
12
- sub: string;
13
- }
14
- type Status = LoginStatus<GoogleResponse>;
15
- /**
16
- * Returns user profile login status from configured endpoint.
17
- * @param token - Token.
18
- * @returns google profile login status.
19
- */
20
- export declare const useFetchGoogleProfile: (token?: string) => Status;
21
- export {};