@databiosphere/findable-ui 18.0.0 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.d.ts +2 -0
  4. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.js +29 -0
  5. package/lib/components/Authentication/components/SessionController/components/GoogleSessionController/types.d.ts +6 -0
  6. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.d.ts +2 -0
  7. package/lib/components/Authentication/components/SessionController/components/NextSessionController/SessionController.js +17 -0
  8. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.d.ts +5 -0
  9. package/lib/components/Authentication/components/SessionController/components/NextSessionController/constants.js +12 -0
  10. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.d.ts +4 -0
  11. package/lib/components/Authentication/components/SessionController/components/NextSessionController/types.js +1 -0
  12. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.d.ts +15 -0
  13. package/lib/components/Authentication/components/SessionController/components/NextSessionController/utils.js +53 -0
  14. package/lib/components/ComponentCreator/ComponentCreator.js +2 -3
  15. package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +2 -0
  16. package/lib/components/Detail/components/Table/components/TableRows/tableRows.js +1 -15
  17. package/lib/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.js +9 -10
  18. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.js +2 -2
  19. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.js +1 -1
  20. package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.js +8 -3
  21. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.d.ts +2 -1
  22. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.js +17 -14
  23. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.d.ts +3 -4
  24. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.js +15 -24
  25. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.d.ts +1 -1
  26. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.js +2 -2
  27. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.d.ts +2 -0
  28. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.js +14 -0
  29. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.js +3 -2
  30. package/lib/components/Layout/components/Header/header.js +1 -1
  31. package/lib/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.js +23 -12
  32. package/lib/components/Login/components/Button/button.d.ts +2 -0
  33. package/lib/components/Login/components/Button/button.js +6 -0
  34. package/lib/components/Login/components/Button/button.styles.d.ts +5 -0
  35. package/lib/components/Login/components/Button/button.styles.js +11 -0
  36. package/lib/components/Login/components/Button/constants.d.ts +2 -0
  37. package/lib/components/Login/components/Button/constants.js +6 -0
  38. package/lib/components/Login/components/Button/types.d.ts +3 -0
  39. package/lib/components/Login/components/Button/types.js +1 -0
  40. package/lib/components/Login/login.d.ts +2 -9
  41. package/lib/components/Login/login.js +9 -10
  42. package/lib/components/Login/types.d.ts +10 -0
  43. package/lib/components/Login/types.js +1 -0
  44. package/lib/components/Table/common/columnDef.js +1 -0
  45. package/lib/components/Table/common/gridTable.styles.js +5 -11
  46. package/lib/components/Table/common/utils.d.ts +3 -29
  47. package/lib/components/Table/common/utils.js +25 -60
  48. package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.d.ts +3 -0
  49. package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.js +3 -0
  50. package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.d.ts +8 -0
  51. package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.js +18 -0
  52. package/lib/components/Table/components/TableBody/hooks/virtualizer/types.d.ts +4 -0
  53. package/lib/components/Table/components/TableBody/hooks/virtualizer/types.js +1 -0
  54. package/lib/components/Table/components/TableBody/tableBody.d.ts +3 -2
  55. package/lib/components/Table/components/TableBody/tableBody.js +7 -28
  56. package/lib/components/Table/components/TableBody/utils.d.ts +12 -0
  57. package/lib/components/Table/components/TableBody/utils.js +17 -0
  58. package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.d.ts +3 -1
  59. package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.js +6 -14
  60. package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.d.ts +28 -0
  61. package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.js +52 -0
  62. package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.d.ts +21 -0
  63. package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.js +37 -0
  64. package/lib/components/Table/components/TableFeatures/RowSorting/utils.d.ts +29 -0
  65. package/lib/components/Table/components/TableFeatures/RowSorting/utils.js +68 -0
  66. package/lib/components/Table/components/TableHead/tableHead.d.ts +2 -6
  67. package/lib/components/Table/components/TableHead/tableHead.js +6 -4
  68. package/lib/components/Table/components/TableHead/types.d.ts +6 -0
  69. package/lib/components/Table/components/TableHead/types.js +1 -0
  70. package/lib/components/Table/components/TableHead/utils.d.ts +19 -0
  71. package/lib/components/Table/components/TableHead/utils.js +34 -0
  72. package/lib/components/Table/components/TableRow/tableRow.styles.d.ts +1 -0
  73. package/lib/components/Table/components/TableRow/tableRow.styles.js +14 -2
  74. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -2
  75. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +8 -4
  76. package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.d.ts +9 -0
  77. package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.js +17 -0
  78. package/lib/components/Table/components/TableRows/tableRows.d.ts +3 -3
  79. package/lib/components/Table/components/TableRows/tableRows.js +9 -5
  80. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.d.ts +3 -0
  81. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.js +26 -0
  82. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.d.ts +2 -0
  83. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.js +16 -0
  84. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.d.ts +3 -0
  85. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.js +12 -0
  86. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.d.ts +7 -0
  87. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.js +1 -0
  88. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.d.ts +4 -0
  89. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.js +13 -0
  90. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.d.ts +4 -0
  91. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.js +1 -0
  92. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.d.ts +17 -0
  93. package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.js +36 -0
  94. package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.d.ts +2 -3
  95. package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.js +3 -11
  96. package/lib/components/Table/components/TableToolbar/tableToolbar.js +4 -2
  97. package/lib/components/Table/features/RowPosition/constants.js +2 -2
  98. package/lib/components/Table/features/RowPosition/utils.d.ts +2 -2
  99. package/lib/components/Table/features/RowPosition/utils.js +12 -5
  100. package/lib/components/Table/options/updater.d.ts +10 -0
  101. package/lib/components/Table/options/updater.js +24 -0
  102. package/lib/components/Table/table.js +22 -17
  103. package/lib/components/TableCreator/common/constants.d.ts +2 -2
  104. package/lib/components/TableCreator/common/constants.js +2 -1
  105. package/lib/components/TableCreator/common/utils.d.ts +5 -2
  106. package/lib/components/TableCreator/common/utils.js +11 -4
  107. package/lib/components/TableCreator/options/expanded/constants.d.ts +2 -0
  108. package/lib/components/TableCreator/options/expanded/constants.js +6 -0
  109. package/lib/components/TableCreator/options/expanded/hook.d.ts +2 -0
  110. package/lib/components/TableCreator/options/expanded/hook.js +4 -0
  111. package/lib/components/TableCreator/options/grouping/constants.d.ts +2 -0
  112. package/lib/components/TableCreator/options/grouping/constants.js +5 -0
  113. package/lib/components/TableCreator/options/grouping/hook.d.ts +2 -0
  114. package/lib/components/TableCreator/options/grouping/hook.js +9 -0
  115. package/lib/components/TableCreator/options/hook.d.ts +2 -0
  116. package/lib/components/TableCreator/options/hook.js +25 -0
  117. package/lib/components/TableCreator/options/rowSelection/constants.d.ts +2 -0
  118. package/lib/components/TableCreator/options/rowSelection/constants.js +5 -0
  119. package/lib/components/TableCreator/options/rowSelection/hook.d.ts +2 -0
  120. package/lib/components/TableCreator/options/rowSelection/hook.js +4 -0
  121. package/lib/components/TableCreator/options/sorting/constants.d.ts +2 -0
  122. package/lib/components/TableCreator/options/sorting/constants.js +5 -0
  123. package/lib/components/TableCreator/options/sorting/hook.d.ts +2 -0
  124. package/lib/components/TableCreator/options/sorting/hook.js +4 -0
  125. package/lib/components/TableCreator/tableCreator.d.ts +3 -5
  126. package/lib/components/TableCreator/tableCreator.js +4 -2
  127. package/lib/components/common/Banner/components/SessionTimeout/sessionTimeout.js +1 -1
  128. package/lib/components/common/CustomIcon/common/entities.d.ts +1 -4
  129. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.d.ts +2 -2
  130. package/lib/components/common/CustomIcon/components/GoogleIcon/googleIcon.js +1 -1
  131. package/lib/components/common/DropdownMenu/dropdownMenu.d.ts +2 -3
  132. package/lib/components/common/DropdownMenu/dropdownMenu.js +7 -7
  133. package/lib/components/common/DropdownMenu/dropdownMenu.styles.d.ts +1 -1
  134. package/lib/components/common/DropdownMenu/dropdownMenu.styles.js +1 -1
  135. package/lib/components/common/Menu/hooks/useMenu.d.ts +5 -6
  136. package/lib/config/entities.d.ts +28 -29
  137. package/lib/config/utils.d.ts +0 -7
  138. package/lib/config/utils.js +0 -12
  139. package/lib/hooks/authentication/auth/useAuthReducer.d.ts +2 -0
  140. package/lib/hooks/authentication/auth/useAuthReducer.js +8 -0
  141. package/lib/hooks/authentication/authentication/useAuthenticationReducer.d.ts +2 -0
  142. package/lib/hooks/authentication/authentication/useAuthenticationReducer.js +8 -0
  143. package/lib/hooks/authentication/config/useAuthenticationConfig.d.ts +6 -0
  144. package/lib/hooks/authentication/config/useAuthenticationConfig.js +9 -0
  145. package/lib/hooks/authentication/credentials/useCredentialsReducer.d.ts +2 -0
  146. package/lib/hooks/authentication/credentials/useCredentialsReducer.js +7 -0
  147. package/lib/hooks/authentication/profile/types.d.ts +5 -0
  148. package/lib/hooks/authentication/profile/types.js +1 -0
  149. package/lib/hooks/authentication/profile/useProfile.d.ts +6 -0
  150. package/lib/hooks/authentication/profile/useProfile.js +15 -0
  151. package/lib/hooks/authentication/providers/types.d.ts +6 -0
  152. package/lib/hooks/authentication/providers/types.js +1 -0
  153. package/lib/hooks/authentication/providers/useProviders.d.ts +6 -0
  154. package/lib/hooks/authentication/providers/useProviders.js +14 -0
  155. package/lib/hooks/authentication/session/useSessionActive.d.ts +12 -0
  156. package/lib/hooks/authentication/session/useSessionActive.js +36 -0
  157. package/lib/hooks/authentication/session/useSessionCallbackUrl.d.ts +4 -0
  158. package/lib/hooks/authentication/session/useSessionCallbackUrl.js +20 -0
  159. package/lib/hooks/authentication/session/useSessionIdleTimer.d.ts +6 -0
  160. package/lib/hooks/authentication/session/useSessionIdleTimer.js +8 -0
  161. package/lib/hooks/{useSessionTimeout.js → authentication/session/useSessionTimeout.js} +2 -2
  162. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.d.ts +0 -1
  163. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.js +6 -9
  164. package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.js +3 -4
  165. package/lib/hooks/authentication/token/types.d.ts +4 -0
  166. package/lib/hooks/authentication/token/types.js +1 -0
  167. package/lib/hooks/authentication/token/useToken.d.ts +2 -0
  168. package/lib/hooks/authentication/token/useToken.js +5 -0
  169. package/lib/hooks/authentication/token/useTokenReducer.d.ts +7 -0
  170. package/lib/hooks/authentication/token/useTokenReducer.js +12 -0
  171. package/lib/hooks/useEntityList.js +2 -2
  172. package/lib/hooks/useFetchEntity.js +4 -3
  173. package/lib/hooks/useFileManifest/useFetchFilesFacets.js +2 -3
  174. package/lib/hooks/useFileManifest/useFetchSummary.js +2 -3
  175. package/lib/hooks/useRequestFileLocation.js +2 -3
  176. package/lib/hooks/useRouteHistory.d.ts +14 -0
  177. package/lib/hooks/useRouteHistory.js +40 -0
  178. package/lib/hooks/useRouteRoot.d.ts +1 -0
  179. package/lib/hooks/useRouteRoot.js +8 -0
  180. package/lib/hooks/useSummary.js +3 -3
  181. package/lib/providers/authentication/auth/actions.d.ts +8 -0
  182. package/lib/providers/authentication/auth/actions.js +12 -0
  183. package/lib/providers/authentication/auth/constants.d.ts +2 -0
  184. package/lib/providers/authentication/auth/constants.js +5 -0
  185. package/lib/providers/authentication/auth/context.d.ts +2 -0
  186. package/lib/providers/authentication/auth/context.js +7 -0
  187. package/lib/providers/authentication/auth/dispatch.d.ts +23 -0
  188. package/lib/providers/authentication/auth/dispatch.js +43 -0
  189. package/lib/providers/authentication/auth/hook.d.ts +6 -0
  190. package/lib/providers/authentication/auth/hook.js +9 -0
  191. package/lib/providers/authentication/auth/reducer.d.ts +8 -0
  192. package/lib/providers/authentication/auth/reducer.js +24 -0
  193. package/lib/providers/authentication/auth/types.d.ts +48 -0
  194. package/lib/providers/authentication/auth/types.js +11 -0
  195. package/lib/providers/authentication/authentication/actions.d.ts +8 -0
  196. package/lib/providers/authentication/authentication/actions.js +12 -0
  197. package/lib/providers/authentication/authentication/constants.d.ts +2 -0
  198. package/lib/providers/authentication/authentication/constants.js +5 -0
  199. package/lib/providers/authentication/authentication/context.d.ts +2 -0
  200. package/lib/providers/authentication/authentication/context.js +6 -0
  201. package/lib/providers/authentication/authentication/dispatch.d.ts +22 -0
  202. package/lib/providers/authentication/authentication/dispatch.js +42 -0
  203. package/lib/providers/authentication/authentication/hook.d.ts +6 -0
  204. package/lib/providers/authentication/authentication/hook.js +9 -0
  205. package/lib/providers/authentication/authentication/reducer.d.ts +9 -0
  206. package/lib/providers/authentication/authentication/reducer.js +25 -0
  207. package/lib/providers/authentication/authentication/types.d.ts +47 -0
  208. package/lib/providers/authentication/authentication/types.js +11 -0
  209. package/lib/providers/authentication/authentication/utils.d.ts +12 -0
  210. package/lib/providers/authentication/authentication/utils.js +18 -0
  211. package/lib/providers/authentication/common/types.d.ts +1 -0
  212. package/lib/providers/authentication/common/types.js +1 -0
  213. package/lib/providers/authentication/common/utils.d.ts +6 -0
  214. package/lib/providers/authentication/common/utils.js +11 -0
  215. package/lib/providers/authentication/credentials/actions.d.ts +8 -0
  216. package/lib/providers/authentication/credentials/actions.js +12 -0
  217. package/lib/providers/authentication/credentials/constants.d.ts +2 -0
  218. package/lib/providers/authentication/credentials/constants.js +3 -0
  219. package/lib/providers/authentication/credentials/context.d.ts +2 -0
  220. package/lib/providers/authentication/credentials/context.js +6 -0
  221. package/lib/providers/authentication/credentials/dispatch.d.ts +12 -0
  222. package/lib/providers/authentication/credentials/dispatch.js +22 -0
  223. package/lib/providers/authentication/credentials/hook.d.ts +6 -0
  224. package/lib/providers/authentication/credentials/hook.js +9 -0
  225. package/lib/providers/authentication/credentials/reducer.d.ts +8 -0
  226. package/lib/providers/authentication/credentials/reducer.js +22 -0
  227. package/lib/providers/authentication/credentials/types.d.ts +24 -0
  228. package/lib/providers/authentication/credentials/types.js +5 -0
  229. package/lib/providers/authentication/terra/context.d.ts +2 -0
  230. package/lib/providers/authentication/terra/context.js +7 -0
  231. package/lib/providers/authentication/terra/hook.d.ts +6 -0
  232. package/lib/providers/authentication/terra/hook.js +9 -0
  233. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.d.ts +2 -0
  234. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.js +7 -0
  235. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.d.ts +3 -7
  236. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.js +1 -5
  237. package/lib/providers/authentication/terra/hooks/useFetchProfiles.d.ts +13 -0
  238. package/lib/providers/authentication/terra/hooks/useFetchProfiles.js +31 -0
  239. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.js +11 -6
  240. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.js +11 -6
  241. package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.js +11 -6
  242. package/lib/providers/authentication/terra/hooks/utils.d.ts +16 -0
  243. package/lib/providers/authentication/terra/hooks/utils.js +19 -0
  244. package/lib/providers/authentication/terra/provider.d.ts +2 -0
  245. package/lib/providers/authentication/terra/provider.js +42 -0
  246. package/lib/providers/authentication/terra/types.d.ts +20 -0
  247. package/lib/providers/authentication/terra/types.js +6 -0
  248. package/lib/providers/authentication/terra/utils.d.ts +19 -0
  249. package/lib/providers/authentication/terra/utils.js +36 -0
  250. package/lib/providers/authentication/token/constants.d.ts +2 -0
  251. package/lib/providers/authentication/token/constants.js +4 -0
  252. package/lib/providers/authentication/token/dispatch.d.ts +12 -0
  253. package/lib/providers/authentication/token/dispatch.js +22 -0
  254. package/lib/providers/authentication/token/reducer.d.ts +8 -0
  255. package/lib/providers/authentication/token/reducer.js +22 -0
  256. package/lib/providers/authentication/token/types.d.ts +28 -0
  257. package/lib/providers/authentication/token/types.js +5 -0
  258. package/lib/providers/exploreState/actions/updateGrouping/action.d.ts +10 -0
  259. package/lib/providers/exploreState/actions/updateGrouping/action.js +16 -0
  260. package/lib/providers/exploreState/actions/updateGrouping/dispatch.d.ts +7 -0
  261. package/lib/providers/exploreState/actions/updateGrouping/dispatch.js +12 -0
  262. package/lib/providers/exploreState/actions/updateGrouping/types.d.ts +9 -0
  263. package/lib/providers/exploreState/actions/updateGrouping/types.js +1 -0
  264. package/lib/providers/exploreState/actions/updateGrouping/utils.d.ts +10 -0
  265. package/lib/providers/exploreState/actions/updateGrouping/utils.js +26 -0
  266. package/lib/providers/exploreState/entities.d.ts +3 -4
  267. package/lib/providers/exploreState/initializer/utils.js +41 -8
  268. package/lib/providers/exploreState/payloads/entities.d.ts +2 -1
  269. package/lib/providers/exploreState/utils.d.ts +6 -4
  270. package/lib/providers/exploreState/utils.js +7 -4
  271. package/lib/providers/exploreState.d.ts +3 -1
  272. package/lib/providers/exploreState.js +18 -10
  273. package/lib/providers/googleSignInAuthentication/common/types.d.ts +17 -0
  274. package/lib/providers/googleSignInAuthentication/common/types.js +1 -0
  275. package/lib/providers/googleSignInAuthentication/constants.d.ts +4 -0
  276. package/lib/providers/googleSignInAuthentication/constants.js +12 -0
  277. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.d.ts +3 -0
  278. package/lib/providers/googleSignInAuthentication/hooks/useGoogleSignInService.js +36 -0
  279. package/lib/providers/googleSignInAuthentication/profile/types.d.ts +14 -0
  280. package/lib/providers/googleSignInAuthentication/profile/types.js +1 -0
  281. package/lib/providers/googleSignInAuthentication/profile/utils.d.ts +8 -0
  282. package/lib/providers/googleSignInAuthentication/profile/utils.js +25 -0
  283. package/lib/providers/googleSignInAuthentication/provider.d.ts +2 -0
  284. package/lib/providers/googleSignInAuthentication/provider.js +40 -0
  285. package/lib/providers/googleSignInAuthentication/service/constants.d.ts +4 -0
  286. package/lib/providers/googleSignInAuthentication/service/constants.js +9 -0
  287. package/lib/providers/googleSignInAuthentication/service/service.d.ts +6 -0
  288. package/lib/providers/googleSignInAuthentication/service/service.js +43 -0
  289. package/lib/providers/googleSignInAuthentication/types.d.ts +6 -0
  290. package/lib/providers/googleSignInAuthentication/types.js +1 -0
  291. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.d.ts +2 -0
  292. package/lib/providers/nextAuthAuthentication/hooks/useNextAuthService.js +14 -0
  293. package/lib/providers/nextAuthAuthentication/provider.d.ts +2 -0
  294. package/lib/providers/nextAuthAuthentication/provider.js +30 -0
  295. package/lib/providers/nextAuthAuthentication/service/service.d.ts +6 -0
  296. package/lib/providers/nextAuthAuthentication/service/service.js +12 -0
  297. package/lib/providers/nextAuthAuthentication/types.d.ts +8 -0
  298. package/lib/providers/nextAuthAuthentication/types.js +1 -0
  299. package/lib/routes/constants.d.ts +3 -0
  300. package/lib/routes/constants.js +3 -0
  301. package/lib/styles/common/mui/button.d.ts +3 -0
  302. package/lib/styles/common/mui/button.js +17 -0
  303. package/lib/styles/common/mui/paper.d.ts +2 -0
  304. package/lib/styles/common/mui/paper.js +9 -0
  305. package/lib/styles/common/mui/popover.d.ts +3 -0
  306. package/lib/styles/common/mui/popover.js +10 -0
  307. package/lib/theme/common/entities.d.ts +6 -0
  308. package/lib/theme/common/entities.js +1 -0
  309. package/lib/views/ExploreView/exploreView.js +2 -2
  310. package/lib/views/LoginView/loginView.d.ts +5 -1
  311. package/lib/views/LoginView/loginView.js +6 -4
  312. package/package.json +3 -2
  313. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/SessionController.tsx +38 -0
  314. package/src/components/Authentication/components/SessionController/components/GoogleSessionController/types.ts +7 -0
  315. package/src/components/Authentication/components/SessionController/components/NextSessionController/SessionController.tsx +23 -0
  316. package/src/components/Authentication/components/SessionController/components/NextSessionController/constants.ts +21 -0
  317. package/src/components/Authentication/components/SessionController/components/NextSessionController/types.ts +5 -0
  318. package/src/components/Authentication/components/SessionController/components/NextSessionController/utils.ts +74 -0
  319. package/src/components/ComponentCreator/ComponentCreator.tsx +4 -3
  320. package/src/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +2 -0
  321. package/src/components/Detail/components/Table/components/TableRows/tableRows.tsx +3 -18
  322. package/src/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.tsx +28 -32
  323. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/FormStep/components/AcceptTerraTOS/acceptTerraTOS.tsx +4 -4
  324. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.tsx +1 -1
  325. package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/terraSetUpForm.tsx +9 -6
  326. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/authentication.tsx +27 -25
  327. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.styles.ts +2 -2
  328. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.tsx +18 -42
  329. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/constants.ts +19 -0
  330. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/Button/button.styles.ts +3 -2
  331. package/src/components/Layout/components/Header/header.tsx +1 -1
  332. package/src/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.tsx +27 -13
  333. package/src/components/Login/components/Button/button.styles.ts +12 -0
  334. package/src/components/Login/components/Button/button.tsx +8 -0
  335. package/src/components/Login/components/Button/constants.ts +8 -0
  336. package/src/components/Login/components/Button/types.ts +4 -0
  337. package/src/components/Login/login.tsx +28 -28
  338. package/src/components/Login/types.ts +11 -0
  339. package/src/components/Table/common/columnDef.ts +1 -0
  340. package/src/components/Table/common/gridTable.styles.ts +5 -11
  341. package/src/components/Table/common/utils.ts +44 -107
  342. package/src/components/Table/components/TableBody/hooks/virtualizer/constants.ts +3 -0
  343. package/src/components/Table/components/TableBody/hooks/virtualizer/hook.ts +23 -0
  344. package/src/components/Table/components/TableBody/hooks/virtualizer/types.ts +5 -0
  345. package/src/components/Table/components/TableBody/tableBody.tsx +14 -30
  346. package/src/components/Table/components/TableBody/utils.ts +21 -0
  347. package/src/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.tsx +14 -15
  348. package/src/components/Table/components/TableFeatures/ColumnGrouping/utils.ts +70 -0
  349. package/src/components/Table/components/TableFeatures/ColumnVisibility/utils.ts +52 -0
  350. package/src/components/Table/components/TableFeatures/RowSorting/utils.ts +87 -0
  351. package/src/components/Table/components/TableHead/tableHead.tsx +21 -29
  352. package/src/components/Table/components/TableHead/types.ts +7 -0
  353. package/src/components/Table/components/TableHead/utils.ts +42 -0
  354. package/src/components/Table/components/TableRow/tableRow.styles.ts +19 -2
  355. package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +8 -2
  356. package/src/components/Table/components/TableRows/components/CollapsableRows/hook.ts +20 -0
  357. package/src/components/Table/components/TableRows/tableRows.tsx +18 -15
  358. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.ts +17 -0
  359. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.tsx +54 -0
  360. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.tsx +28 -0
  361. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.ts +8 -0
  362. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/constants.ts +17 -0
  363. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/types.ts +5 -0
  364. package/src/components/Table/components/TableToolbar/components/ColumnGrouping/utils.ts +45 -0
  365. package/src/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.tsx +7 -20
  366. package/src/components/Table/components/TableToolbar/tableToolbar.tsx +8 -2
  367. package/src/components/Table/features/RowPosition/constants.ts +2 -2
  368. package/src/components/Table/features/RowPosition/utils.ts +10 -5
  369. package/src/components/Table/options/updater.ts +29 -0
  370. package/src/components/Table/table.tsx +43 -25
  371. package/src/components/TableCreator/common/constants.ts +4 -6
  372. package/src/components/TableCreator/common/utils.ts +14 -7
  373. package/src/components/TableCreator/options/expanded/constants.ts +14 -0
  374. package/src/components/TableCreator/options/expanded/hook.ts +6 -0
  375. package/src/components/TableCreator/options/grouping/constants.ts +6 -0
  376. package/src/components/TableCreator/options/grouping/hook.ts +17 -0
  377. package/src/components/TableCreator/options/hook.ts +31 -0
  378. package/src/components/TableCreator/options/rowSelection/constants.ts +10 -0
  379. package/src/components/TableCreator/options/rowSelection/hook.ts +8 -0
  380. package/src/components/TableCreator/options/sorting/constants.ts +10 -0
  381. package/src/components/TableCreator/options/sorting/hook.ts +6 -0
  382. package/src/components/TableCreator/tableCreator.tsx +4 -11
  383. package/src/components/common/Banner/components/SessionTimeout/sessionTimeout.tsx +1 -1
  384. package/src/components/common/CustomIcon/common/entities.ts +1 -4
  385. package/src/components/common/CustomIcon/components/GoogleIcon/googleIcon.tsx +3 -4
  386. package/src/components/common/DropdownMenu/dropdownMenu.styles.ts +1 -1
  387. package/src/components/common/DropdownMenu/dropdownMenu.tsx +19 -17
  388. package/src/components/common/Menu/hooks/useMenu.ts +8 -9
  389. package/src/config/entities.ts +30 -34
  390. package/src/config/utils.ts +0 -14
  391. package/src/hooks/authentication/auth/useAuthReducer.ts +16 -0
  392. package/src/hooks/authentication/authentication/useAuthenticationReducer.ts +16 -0
  393. package/src/hooks/authentication/config/useAuthenticationConfig.ts +13 -0
  394. package/src/hooks/authentication/credentials/useCredentialsReducer.ts +13 -0
  395. package/src/hooks/authentication/profile/types.ts +9 -0
  396. package/src/hooks/authentication/profile/useProfile.ts +21 -0
  397. package/src/hooks/authentication/providers/types.ts +7 -0
  398. package/src/hooks/authentication/providers/useProviders.ts +23 -0
  399. package/src/hooks/authentication/session/useSessionActive.ts +51 -0
  400. package/src/hooks/authentication/session/useSessionCallbackUrl.ts +25 -0
  401. package/src/hooks/authentication/session/useSessionIdleTimer.ts +10 -0
  402. package/src/hooks/{useSessionTimeout.ts → authentication/session/useSessionTimeout.ts} +2 -2
  403. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationForm.ts +8 -13
  404. package/src/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.ts +3 -4
  405. package/src/hooks/authentication/token/types.ts +5 -0
  406. package/src/hooks/authentication/token/useToken.ts +9 -0
  407. package/src/hooks/authentication/token/useTokenReducer.ts +19 -0
  408. package/src/hooks/useEntityList.ts +2 -2
  409. package/src/hooks/useFetchEntity.tsx +3 -3
  410. package/src/hooks/useFileManifest/useFetchFilesFacets.ts +2 -3
  411. package/src/hooks/useFileManifest/useFetchSummary.ts +2 -3
  412. package/src/hooks/useRequestFileLocation.ts +2 -3
  413. package/src/hooks/useRouteHistory.ts +65 -0
  414. package/src/hooks/useRouteRoot.ts +11 -0
  415. package/src/hooks/useSummary.ts +3 -3
  416. package/src/providers/authentication/auth/actions.ts +17 -0
  417. package/src/providers/authentication/auth/constants.ts +6 -0
  418. package/src/providers/authentication/auth/context.ts +9 -0
  419. package/src/providers/authentication/auth/dispatch.ts +58 -0
  420. package/src/providers/authentication/auth/hook.ts +11 -0
  421. package/src/providers/authentication/auth/reducer.ts +25 -0
  422. package/src/providers/authentication/auth/types.ts +63 -0
  423. package/src/providers/authentication/authentication/actions.ts +17 -0
  424. package/src/providers/authentication/authentication/constants.ts +6 -0
  425. package/src/providers/authentication/authentication/context.ts +8 -0
  426. package/src/providers/authentication/authentication/dispatch.ts +55 -0
  427. package/src/providers/authentication/authentication/hook.ts +11 -0
  428. package/src/providers/authentication/authentication/reducer.ts +34 -0
  429. package/src/providers/authentication/authentication/types.ts +64 -0
  430. package/src/providers/authentication/authentication/utils.ts +25 -0
  431. package/src/providers/authentication/common/types.ts +1 -0
  432. package/src/providers/authentication/common/utils.ts +11 -0
  433. package/src/providers/authentication/credentials/actions.ts +17 -0
  434. package/src/providers/authentication/credentials/constants.ts +5 -0
  435. package/src/providers/authentication/credentials/context.ts +8 -0
  436. package/src/providers/authentication/credentials/dispatch.ts +31 -0
  437. package/src/providers/authentication/credentials/hook.ts +11 -0
  438. package/src/providers/authentication/credentials/reducer.ts +30 -0
  439. package/src/providers/authentication/credentials/types.ts +33 -0
  440. package/src/providers/authentication/terra/context.ts +16 -0
  441. package/src/providers/authentication/terra/hook.ts +11 -0
  442. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/constants.ts +9 -0
  443. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/entities.ts +1 -7
  444. package/src/providers/authentication/terra/hooks/useFetchProfiles.ts +61 -0
  445. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.ts +18 -7
  446. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.ts +18 -7
  447. package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.ts +18 -7
  448. package/src/providers/authentication/terra/hooks/utils.ts +29 -0
  449. package/src/providers/authentication/terra/provider.tsx +60 -0
  450. package/src/providers/authentication/terra/types.ts +23 -0
  451. package/src/providers/authentication/terra/utils.ts +49 -0
  452. package/src/providers/authentication/token/constants.ts +6 -0
  453. package/src/providers/authentication/token/dispatch.ts +29 -0
  454. package/src/providers/authentication/token/reducer.ts +26 -0
  455. package/src/providers/authentication/token/types.ts +36 -0
  456. package/src/providers/exploreState/actions/updateGrouping/action.ts +26 -0
  457. package/src/providers/exploreState/actions/updateGrouping/dispatch.ts +16 -0
  458. package/src/providers/exploreState/actions/updateGrouping/types.ts +11 -0
  459. package/src/providers/exploreState/actions/updateGrouping/utils.ts +33 -0
  460. package/src/providers/exploreState/entities.ts +3 -3
  461. package/src/providers/exploreState/initializer/utils.ts +58 -10
  462. package/src/providers/exploreState/payloads/entities.ts +2 -0
  463. package/src/providers/exploreState/utils.ts +10 -7
  464. package/src/providers/exploreState.tsx +32 -10
  465. package/src/providers/googleSignInAuthentication/common/types.ts +28 -0
  466. package/src/providers/googleSignInAuthentication/constants.ts +17 -0
  467. package/src/providers/googleSignInAuthentication/hooks/useGoogleSignInService.ts +53 -0
  468. package/src/providers/googleSignInAuthentication/profile/types.ts +15 -0
  469. package/src/providers/googleSignInAuthentication/profile/utils.ts +29 -0
  470. package/src/providers/googleSignInAuthentication/provider.tsx +53 -0
  471. package/src/providers/googleSignInAuthentication/service/constants.ts +16 -0
  472. package/src/providers/googleSignInAuthentication/service/service.ts +68 -0
  473. package/src/providers/googleSignInAuthentication/types.ts +7 -0
  474. package/src/providers/nextAuthAuthentication/hooks/useNextAuthService.ts +26 -0
  475. package/src/providers/nextAuthAuthentication/provider.tsx +42 -0
  476. package/src/providers/nextAuthAuthentication/service/service.ts +14 -0
  477. package/src/providers/nextAuthAuthentication/types.ts +9 -0
  478. package/src/routes/constants.ts +3 -0
  479. package/src/styles/common/mui/button.ts +20 -0
  480. package/src/styles/common/mui/paper.ts +11 -0
  481. package/src/styles/common/mui/popover.ts +19 -0
  482. package/src/theme/common/entities.ts +7 -0
  483. package/src/views/ExploreView/exploreView.tsx +1 -3
  484. package/src/views/LoginView/loginView.tsx +15 -9
  485. package/tests/getProfileStatus.test.ts +290 -0
  486. package/tests/terraProfileProvider.test.tsx +121 -0
  487. package/tests/transformRoute.test.ts +21 -0
  488. package/tests/useRouteHistory.test.ts +97 -0
  489. package/tests/useSessionActive.test.ts +107 -0
  490. package/types/data-explorer-ui.d.ts +8 -1
  491. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.d.ts +0 -5
  492. package/lib/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.js +0 -29
  493. package/lib/components/Login/login.stories.d.ts +0 -6
  494. package/lib/components/Login/login.stories.js +0 -31
  495. package/lib/components/TableCreator/common/entities.d.ts +0 -5
  496. package/lib/components/common/Button/components/LoginButton/loginButton.d.ts +0 -3
  497. package/lib/components/common/Button/components/LoginButton/loginButton.js +0 -6
  498. package/lib/components/common/Button/components/LoginButton/loginButton.styles.d.ts +0 -7
  499. package/lib/components/common/Button/components/LoginButton/loginButton.styles.js +0 -11
  500. package/lib/hooks/useAuthentication/useAuthentication.d.ts +0 -6
  501. package/lib/hooks/useAuthentication/useAuthentication.js +0 -9
  502. package/lib/hooks/useAuthentication/useAuthenticationComplete.d.ts +0 -6
  503. package/lib/hooks/useAuthentication/useAuthenticationComplete.js +0 -55
  504. package/lib/hooks/useAuthentication/useAuthenticationStatus.d.ts +0 -20
  505. package/lib/hooks/useAuthentication/useAuthenticationStatus.js +0 -32
  506. package/lib/hooks/useAuthentication/useFetchGoogleProfile.d.ts +0 -21
  507. package/lib/hooks/useAuthentication/useFetchGoogleProfile.js +0 -41
  508. package/lib/hooks/useAuthentication/useTokenClient.d.ts +0 -11
  509. package/lib/hooks/useAuthentication/useTokenClient.js +0 -29
  510. package/lib/hooks/useAuthenticationConfig.d.ts +0 -6
  511. package/lib/hooks/useAuthenticationConfig.js +0 -14
  512. package/lib/providers/authentication.d.ts +0 -51
  513. package/lib/providers/authentication.js +0 -110
  514. package/src/components/Layout/components/Header/components/Content/components/Actions/components/Authentication/components/AuthenticationMenu/authenticationMenu.stories.tsx +0 -35
  515. package/src/components/Login/login.stories.tsx +0 -43
  516. package/src/components/TableCreator/common/entities.ts +0 -6
  517. package/src/components/common/Button/components/LoginButton/loginButton.styles.ts +0 -13
  518. package/src/components/common/Button/components/LoginButton/loginButton.tsx +0 -16
  519. package/src/hooks/useAuthentication/useAuthentication.tsx +0 -10
  520. package/src/hooks/useAuthentication/useAuthenticationComplete.ts +0 -66
  521. package/src/hooks/useAuthentication/useAuthenticationStatus.ts +0 -49
  522. package/src/hooks/useAuthentication/useFetchGoogleProfile.ts +0 -68
  523. package/src/hooks/useAuthentication/useTokenClient.ts +0 -54
  524. package/src/hooks/useAuthenticationConfig.ts +0 -18
  525. package/src/providers/authentication.tsx +0 -181
  526. package/tests/authentication.test.ts +0 -142
  527. package/tests/useAuthenticationStatus.test.ts +0 -155
  528. /package/lib/components/{TableCreator/common/entities.js → Authentication/components/SessionController/components/GoogleSessionController/types.js} +0 -0
  529. /package/lib/hooks/{useSessionTimeout.d.ts → authentication/session/useSessionTimeout.d.ts} +0 -0
  530. /package/lib/hooks/{useAuthentication → authentication/terra}/useAuthenticationNIHExpiry.d.ts +0 -0
  531. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.d.ts +0 -0
  532. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.js +0 -0
  533. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraNIHProfile.d.ts +0 -0
  534. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraProfile.d.ts +0 -0
  535. /package/lib/{hooks/useAuthentication → providers/authentication/terra/hooks}/useFetchTerraTermsOfService.d.ts +0 -0
  536. /package/src/{hooks/useAuthentication → providers/authentication/terra/hooks}/common/utils.ts +0 -0
@@ -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
+ });
@@ -269,7 +269,6 @@ declare module "@tanstack/react-table" {
269
269
  interface ColumnMeta<TData extends RowData, TValue> {
270
270
  align?: TableCellProps["align"];
271
271
  columnPinned?: boolean;
272
- enableSortingInteraction?: boolean; // Flag to enable sorting interaction UI (e.g. sort icon) button; defaults to true.
273
272
  header?: string;
274
273
  width?: GridTrackSize;
275
274
  }
@@ -277,6 +276,14 @@ declare module "@tanstack/react-table" {
277
276
  interface InitialTableState extends CustomFeatureInitialTableState {}
278
277
  // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-unused-vars -- empty interface is needed for extending, TData is an unused variable.
279
278
  interface Row<TData extends RowData> extends CustomFeatureRow {}
279
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TData is an unused variables.
280
+ interface SortingOptions<TData extends RowData> {
281
+ /**
282
+ * When false, sorting can still be applied programmatically (e.g., `getSortedRowModel`),
283
+ * but user interactions or showing sort icons are disabled.
284
+ */
285
+ enableSortingInteraction?: boolean;
286
+ }
280
287
  // eslint-disable-next-line @typescript-eslint/no-empty-interface -- empty interface is needed for extending.
281
288
  interface Table<TData extends RowData> extends CustomFeatureInstance<TData> {}
282
289
  // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-unused-vars -- empty interface is needed for extending, TData is an unused variable.
@@ -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,5 +0,0 @@
1
- import { ColumnMeta } from "@tanstack/react-table";
2
- import { ColumnConfig } from "../../../config/entities";
3
- export interface BaseColumnConfig<T, TValue> extends ColumnConfig<T> {
4
- meta?: ColumnMeta<T, TValue>;
5
- }
@@ -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 {};
@@ -1,41 +0,0 @@
1
- import { useCallback, useEffect, useState } from "react";
2
- import { useAuthenticationConfig } from "../useAuthenticationConfig";
3
- import { LOGIN_STATUS_FAILED, LOGIN_STATUS_NOT_STARTED, } from "./common/constants";
4
- import { REQUEST_STATUS } from "./common/entities";
5
- import { getAuthenticationRequestOptions } from "./common/utils";
6
- /**
7
- * Returns user profile login status from configured endpoint.
8
- * @param token - Token.
9
- * @returns google profile login status.
10
- */
11
- export const useFetchGoogleProfile = (token) => {
12
- const authenticationConfig = useAuthenticationConfig();
13
- const { googleGISAuthConfig: { googleProfileEndpoint: endpoint } = {} } = authenticationConfig;
14
- const [loginStatus, setLoginStatus] = useState(LOGIN_STATUS_NOT_STARTED);
15
- // Fetch google user profile.
16
- const fetchEndpointData = useCallback((endpoint, accessToken) => {
17
- fetch(endpoint, getAuthenticationRequestOptions(accessToken))
18
- .then((response) => response.json())
19
- .then((profile) => {
20
- setLoginStatus((prevStatus) => ({
21
- ...prevStatus,
22
- isSuccess: true,
23
- requestStatus: REQUEST_STATUS.COMPLETED,
24
- response: profile,
25
- }));
26
- })
27
- .catch((err) => {
28
- console.log(err); // TODO handle error.
29
- setLoginStatus(LOGIN_STATUS_FAILED);
30
- });
31
- }, []);
32
- // Fetches user profile.
33
- useEffect(() => {
34
- if (!token)
35
- return;
36
- if (!endpoint)
37
- return;
38
- fetchEndpointData(endpoint, token);
39
- }, [endpoint, fetchEndpointData, token]);
40
- return loginStatus;
41
- };
@@ -1,11 +0,0 @@
1
- type TokenClient = any;
2
- export interface UseTokenClient {
3
- token: string | undefined;
4
- tokenClient: TokenClient | undefined;
5
- }
6
- /**
7
- * Initializes the token client, sets token from token client callback.
8
- * @returns initialized token client.
9
- */
10
- export declare const useTokenClient: () => UseTokenClient;
11
- export {};
@@ -1,29 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import { useAuthenticationConfig } from "../useAuthenticationConfig";
3
- /**
4
- * Initializes the token client, sets token from token client callback.
5
- * @returns initialized token client.
6
- */
7
- export const useTokenClient = () => {
8
- const [token, setToken] = useState();
9
- const [tokenClient, setTokenClient] = useState();
10
- const authenticationConfig = useAuthenticationConfig();
11
- const { googleGISAuthConfig: { clientId, scope } = {} } = authenticationConfig;
12
- // Initializes token client - (authorization client id must be configured).
13
- useEffect(() => {
14
- if (clientId) {
15
- setTokenClient(google.accounts.oauth2.initTokenClient({
16
- callback: (tokenResponse) => {
17
- const access_token = tokenResponse.access_token;
18
- setToken(access_token);
19
- },
20
- client_id: clientId,
21
- scope,
22
- }));
23
- }
24
- }, [clientId, scope]);
25
- return {
26
- token,
27
- tokenClient,
28
- };
29
- };
@@ -1,6 +0,0 @@
1
- import { AuthenticationConfig } from "../config/entities";
2
- /**
3
- * Hook to get the authentication config
4
- * @returns @see AuthenticationConfig used in the current config.
5
- */
6
- export declare const useAuthenticationConfig: () => AuthenticationConfig;
@@ -1,14 +0,0 @@
1
- import { useConfig } from "./useConfig";
2
- /**
3
- * Hook to get the authentication config
4
- * @returns @see AuthenticationConfig used in the current config.
5
- */
6
- export const useAuthenticationConfig = () => {
7
- const { config } = useConfig();
8
- if (!config.authentication) {
9
- return {
10
- title: "",
11
- };
12
- }
13
- return config.authentication;
14
- };