@databiosphere/findable-ui 21.3.0 → 22.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 (289) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/.storybook/main.ts +7 -1
  3. package/CHANGELOG.md +25 -0
  4. package/lib/components/DataDictionary/components/Entities/constants.d.ts +2 -0
  5. package/lib/components/DataDictionary/components/Entities/constants.js +6 -0
  6. package/lib/components/DataDictionary/components/Entities/entities.d.ts +2 -0
  7. package/lib/components/DataDictionary/components/Entities/entities.js +7 -0
  8. package/lib/components/DataDictionary/components/Entities/types.d.ts +4 -0
  9. package/lib/components/DataDictionary/components/Entities/types.js +1 -0
  10. package/lib/components/DataDictionary/components/Entity/constants.d.ts +2 -0
  11. package/lib/components/DataDictionary/components/Entity/constants.js +5 -0
  12. package/lib/components/DataDictionary/components/Entity/entity.d.ts +2 -0
  13. package/lib/components/DataDictionary/components/Entity/entity.js +14 -0
  14. package/lib/components/DataDictionary/components/Entity/types.d.ts +4 -0
  15. package/lib/components/DataDictionary/components/Entity/types.js +1 -0
  16. package/lib/components/DataDictionary/components/Table/columns/columnDef.d.ts +6 -0
  17. package/lib/components/DataDictionary/components/Table/columns/columnDef.js +33 -0
  18. package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.d.ts +5 -0
  19. package/lib/components/DataDictionary/components/Table/columns/columnIdentifier.js +5 -0
  20. package/lib/components/DataDictionary/components/Table/columns/types.d.ts +2 -0
  21. package/lib/components/DataDictionary/components/Table/columns/types.js +1 -0
  22. package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.d.ts +2 -0
  23. package/lib/components/DataDictionary/components/Table/components/BasicCell/basicCell.js +6 -0
  24. package/lib/components/DataDictionary/components/Table/components/BasicCell/types.d.ts +4 -0
  25. package/lib/components/DataDictionary/components/Table/components/BasicCell/types.js +1 -0
  26. package/lib/components/DataDictionary/components/Table/hook.d.ts +3 -0
  27. package/lib/components/DataDictionary/components/Table/hook.js +11 -0
  28. package/lib/components/DataDictionary/components/Table/options/core/constants.d.ts +3 -0
  29. package/lib/components/DataDictionary/components/Table/options/core/constants.js +7 -0
  30. package/lib/components/DataDictionary/components/Table/options/hook.d.ts +3 -0
  31. package/lib/components/DataDictionary/components/Table/options/hook.js +8 -0
  32. package/lib/components/DataDictionary/components/Table/options/sorting/constants.d.ts +3 -0
  33. package/lib/components/DataDictionary/components/Table/options/sorting/constants.js +3 -0
  34. package/lib/components/DataDictionary/components/Table/table.d.ts +2 -0
  35. package/lib/components/DataDictionary/components/Table/table.js +17 -0
  36. package/lib/components/DataDictionary/components/Table/table.styles.d.ts +3 -0
  37. package/lib/components/DataDictionary/components/Table/table.styles.js +5 -0
  38. package/lib/components/DataDictionary/components/Table/types.d.ts +5 -0
  39. package/lib/components/DataDictionary/components/Table/types.js +1 -0
  40. package/lib/components/DataDictionary/dataDictionary.d.ts +2 -0
  41. package/lib/components/DataDictionary/dataDictionary.js +9 -0
  42. package/lib/components/DataDictionary/dataDictionary.styles.d.ts +1 -0
  43. package/lib/components/DataDictionary/dataDictionary.styles.js +7 -0
  44. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.d.ts +2 -0
  45. package/lib/components/DataDictionary/hooks/UseDataDictionary/hook.js +5 -0
  46. package/lib/components/DataDictionary/hooks/UseDataDictionary/types.d.ts +4 -0
  47. package/lib/components/DataDictionary/hooks/UseDataDictionary/types.js +1 -0
  48. package/lib/components/Detail/detail.stories.d.ts +36 -5
  49. package/lib/components/Detail/detail.stories.js +27 -18
  50. package/lib/components/Export/components/ExportForm/components/ExportButton/exportButton.js +6 -1
  51. package/lib/components/Export/components/ExportMethod/exportMethod.stories.d.ts +22 -5
  52. package/lib/components/Export/components/ExportMethod/exportMethod.stories.js +9 -9
  53. package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.js +5 -2
  54. package/lib/components/Filter/components/Filter/filter.stories.d.ts +25 -5
  55. package/lib/components/Filter/components/Filter/filter.stories.js +25 -24
  56. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.d.ts +31 -5
  57. package/lib/components/Filter/components/FilterLabel/filterLabel.stories.js +10 -8
  58. package/lib/components/Filter/components/FilterMenu/filterMenu.stories.d.ts +38 -5
  59. package/lib/components/Filter/components/FilterMenu/filterMenu.stories.js +107 -104
  60. package/lib/components/Filter/components/FilterTag/filterTag.stories.d.ts +16 -5
  61. package/lib/components/Filter/components/FilterTag/filterTag.stories.js +8 -7
  62. package/lib/components/Filter/components/FilterTags/filterTags.stories.d.ts +18 -5
  63. package/lib/components/Filter/components/FilterTags/filterTags.stories.js +40 -39
  64. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.js +10 -5
  65. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.d.ts +8 -5
  66. package/lib/components/Index/components/AzulFileDownload/azulFileDownload.stories.js +9 -6
  67. package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.d.ts +13 -5
  68. package/lib/components/Index/components/Hero/components/Summaries/summaries.stories.js +11 -11
  69. package/lib/components/Index/components/Hero/hero.stories.d.ts +23 -5
  70. package/lib/components/Index/components/Hero/hero.stories.js +8 -6
  71. package/lib/components/Index/components/NTagCell/nTagCell.stories.d.ts +16 -5
  72. package/lib/components/Index/components/NTagCell/nTagCell.stories.js +8 -8
  73. package/lib/components/Index/index.stories.js +2 -1
  74. package/lib/components/Layout/components/BackPage/backPageView.stories.d.ts +31 -5
  75. package/lib/components/Layout/components/BackPage/backPageView.stories.js +27 -18
  76. package/lib/components/Layout/components/Footer/footer.stories.d.ts +24 -3
  77. package/lib/components/Layout/components/Footer/footer.stories.js +4 -3
  78. package/lib/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenu/navigationMenu.js +1 -1
  79. package/lib/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenuItems/navigationMenuItems.js +20 -21
  80. package/lib/components/Layout/components/Header/components/Content/components/Navigation/constants.d.ts +1 -0
  81. package/lib/components/Layout/components/Header/components/Content/components/Navigation/constants.js +1 -0
  82. package/lib/components/Layout/components/Header/components/Content/components/Navigation/navigation.d.ts +2 -1
  83. package/lib/components/Layout/components/Header/components/Content/components/Navigation/navigation.js +16 -17
  84. package/lib/components/Layout/components/Header/header.js +2 -1
  85. package/lib/components/Layout/components/Header/header.stories.js +1 -1
  86. package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.d.ts +13 -5
  87. package/lib/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.js +6 -6
  88. package/lib/components/Layout/components/Sidebar/sidebar.stories.js +2 -0
  89. package/lib/components/Links/links.stories.d.ts +13 -5
  90. package/lib/components/Links/links.stories.js +14 -14
  91. package/lib/components/Loading/loading.stories.d.ts +34 -5
  92. package/lib/components/Loading/loading.stories.js +8 -6
  93. package/lib/components/Login/components/Button/types.d.ts +1 -1
  94. package/lib/components/Login/components/Buttons/buttons.d.ts +2 -0
  95. package/lib/components/Login/components/Buttons/buttons.js +5 -0
  96. package/lib/components/Login/components/Buttons/types.d.ts +8 -0
  97. package/lib/components/Login/components/Buttons/types.js +1 -0
  98. package/lib/components/Login/components/Section/components/Consent/consent.d.ts +3 -0
  99. package/lib/components/Login/components/Section/components/Consent/consent.js +14 -0
  100. package/lib/components/Login/components/Section/components/Consent/consent.styles.d.ts +7 -0
  101. package/lib/components/Login/components/Section/components/Consent/consent.styles.js +14 -0
  102. package/lib/components/Login/components/Section/components/Consent/types.d.ts +6 -0
  103. package/lib/components/Login/components/Section/components/Consent/types.js +1 -0
  104. package/lib/components/Login/components/Section/components/Warning/warning.d.ts +3 -0
  105. package/lib/components/Login/components/Section/components/Warning/warning.js +9 -0
  106. package/lib/components/Login/hooks/useUserConsent/types.d.ts +10 -0
  107. package/lib/components/Login/hooks/useUserConsent/types.js +1 -0
  108. package/lib/components/Login/hooks/useUserConsent/useUserConsent.d.ts +2 -0
  109. package/lib/components/Login/hooks/useUserConsent/useUserConsent.js +24 -0
  110. package/lib/components/Login/hooks/useUserLogin/types.d.ts +6 -0
  111. package/lib/components/Login/hooks/useUserLogin/types.js +1 -0
  112. package/lib/components/Login/hooks/useUserLogin/useUserLogin.d.ts +2 -0
  113. package/lib/components/Login/hooks/useUserLogin/useUserLogin.js +21 -0
  114. package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.d.ts +13 -5
  115. package/lib/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.js +20 -20
  116. package/lib/components/Project/components/Contacts/contacts.stories.d.ts +13 -5
  117. package/lib/components/Project/components/Contacts/contacts.stories.js +18 -18
  118. package/lib/components/Project/components/Contributors/contributors.stories.d.ts +8 -5
  119. package/lib/components/Project/components/Contributors/contributors.stories.js +27 -27
  120. package/lib/components/Project/components/DataCurators/dataCurators.stories.d.ts +13 -5
  121. package/lib/components/Project/components/DataCurators/dataCurators.stories.js +7 -7
  122. package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.d.ts +8 -5
  123. package/lib/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.js +3 -4
  124. package/lib/components/Project/components/Description/description.stories.d.ts +8 -5
  125. package/lib/components/Project/components/Description/description.stories.js +6 -6
  126. package/lib/components/Project/components/Details/details.stories.d.ts +16 -5
  127. package/lib/components/Project/components/Details/details.stories.js +7 -7
  128. package/lib/components/Project/components/Publications/publications.stories.d.ts +8 -5
  129. package/lib/components/Project/components/Publications/publications.stories.js +17 -17
  130. package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.d.ts +8 -5
  131. package/lib/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.js +18 -18
  132. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.d.ts +16 -33
  133. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.js +10 -9
  134. package/lib/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.js +26 -14
  135. package/lib/components/Support/components/ViewSupport/types.d.ts +6 -0
  136. package/lib/components/Support/components/ViewSupport/types.js +1 -0
  137. package/lib/components/Support/components/ViewSupport/viewSupport.d.ts +2 -9
  138. package/lib/components/Support/components/ViewSupport/viewSupport.js +7 -3
  139. package/lib/components/Table/components/Pagination/pagination.stories.d.ts +28 -5
  140. package/lib/components/Table/components/Pagination/pagination.stories.js +11 -7
  141. package/lib/components/common/Accordion/accordion.stories.d.ts +6 -3
  142. package/lib/components/common/Accordion/accordion.stories.js +2 -1
  143. package/lib/components/common/Breadcrumbs/breadcrumbs.stories.d.ts +10 -7
  144. package/lib/components/common/Breadcrumbs/breadcrumbs.stories.js +42 -43
  145. package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.d.ts +9 -6
  146. package/lib/components/common/Button/components/CallToActionButton/callToActionButton.stories.js +13 -15
  147. package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.d.ts +19 -2
  148. package/lib/components/common/Button/components/HelpIconButton/helpIconButton.stories.js +2 -2
  149. package/lib/components/common/Card/card.stories.d.ts +6 -3
  150. package/lib/components/common/Card/card.stories.js +2 -1
  151. package/lib/components/common/Code/code.stories.d.ts +5 -3
  152. package/lib/components/common/CopyToClipboard/copyToClipboard.stories.d.ts +11 -3
  153. package/lib/components/common/CopyToClipboard/copyToClipboard.stories.js +2 -1
  154. package/lib/components/common/CustomIcon/components/CloseIcon/closeIcon.d.ts +2 -0
  155. package/lib/components/common/CustomIcon/components/CloseIcon/closeIcon.js +6 -0
  156. package/lib/components/common/LoginDialog/constants.d.ts +6 -0
  157. package/lib/components/common/LoginDialog/constants.js +21 -0
  158. package/lib/components/common/LoginDialog/loginDialog.d.ts +2 -0
  159. package/lib/components/common/LoginDialog/loginDialog.js +27 -0
  160. package/lib/components/common/LoginDialog/loginDialog.styles.d.ts +3 -0
  161. package/lib/components/common/LoginDialog/loginDialog.styles.js +50 -0
  162. package/lib/components/common/LoginDialog/types.d.ts +4 -0
  163. package/lib/components/common/LoginDialog/types.js +1 -0
  164. package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.d.ts +13 -5
  165. package/lib/components/common/Section/components/SectionTitle/sectionTitle.stories.js +6 -6
  166. package/lib/components/common/Socials/socials.stories.d.ts +11 -3
  167. package/lib/components/common/Socials/socials.stories.js +2 -1
  168. package/lib/components/common/StaticImage/staticImage.stories.d.ts +22 -5
  169. package/lib/components/common/StaticImage/staticImage.stories.js +8 -8
  170. package/lib/components/common/StatusIcon/statusIcon.stories.d.ts +19 -5
  171. package/lib/components/common/StatusIcon/statusIcon.stories.js +7 -7
  172. package/lib/components/common/Tag/tag.stories.d.ts +15 -5
  173. package/lib/components/common/Tag/tag.stories.js +7 -5
  174. package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.d.ts +18 -5
  175. package/lib/components/common/ToggleButtonGroup/toggleButtonGroup.stories.js +19 -19
  176. package/lib/config/entities.d.ts +1 -0
  177. package/lib/providers/loginGuard/common/types.d.ts +18 -0
  178. package/lib/providers/loginGuard/common/types.js +1 -0
  179. package/lib/providers/loginGuard/context.d.ts +6 -0
  180. package/lib/providers/loginGuard/context.js +10 -0
  181. package/lib/providers/loginGuard/hook.d.ts +9 -0
  182. package/lib/providers/loginGuard/hook.js +12 -0
  183. package/lib/providers/loginGuard/provider.d.ts +11 -0
  184. package/lib/providers/loginGuard/provider.js +55 -0
  185. package/lib/styles/common/mui/typography.d.ts +1 -0
  186. package/lib/styles/common/mui/typography.js +8 -0
  187. package/lib/views/DataDictionaryView/dataDictionaryView.d.ts +2 -0
  188. package/lib/views/DataDictionaryView/dataDictionaryView.js +5 -0
  189. package/package.json +13 -13
  190. package/src/components/DataDictionary/components/Entities/constants.ts +8 -0
  191. package/src/components/DataDictionary/components/Entities/entities.tsx +15 -0
  192. package/src/components/DataDictionary/components/Entities/types.ts +5 -0
  193. package/src/components/DataDictionary/components/Entity/constants.ts +7 -0
  194. package/src/components/DataDictionary/components/Entity/entity.tsx +28 -0
  195. package/src/components/DataDictionary/components/Entity/types.ts +5 -0
  196. package/src/components/DataDictionary/components/Table/columns/columnDef.ts +47 -0
  197. package/src/components/DataDictionary/components/Table/columns/columnIdentifier.ts +5 -0
  198. package/src/components/DataDictionary/components/Table/columns/types.ts +3 -0
  199. package/src/components/DataDictionary/components/Table/components/BasicCell/basicCell.tsx +8 -0
  200. package/src/components/DataDictionary/components/Table/components/BasicCell/types.ts +5 -0
  201. package/src/components/DataDictionary/components/Table/hook.ts +13 -0
  202. package/src/components/DataDictionary/components/Table/options/core/constants.ts +12 -0
  203. package/src/components/DataDictionary/components/Table/options/hook.ts +14 -0
  204. package/src/components/DataDictionary/components/Table/options/sorting/constants.ts +9 -0
  205. package/src/components/DataDictionary/components/Table/table.styles.ts +6 -0
  206. package/src/components/DataDictionary/components/Table/table.tsx +35 -0
  207. package/src/components/DataDictionary/components/Table/types.ts +6 -0
  208. package/src/components/DataDictionary/dataDictionary.styles.ts +8 -0
  209. package/src/components/DataDictionary/dataDictionary.tsx +16 -0
  210. package/src/components/DataDictionary/hooks/UseDataDictionary/hook.ts +9 -0
  211. package/src/components/DataDictionary/hooks/UseDataDictionary/types.ts +5 -0
  212. package/src/components/Detail/detail.stories.tsx +41 -36
  213. package/src/components/Export/components/ExportForm/components/ExportButton/exportButton.tsx +8 -1
  214. package/src/components/Export/components/ExportMethod/exportMethod.stories.tsx +13 -13
  215. package/src/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.tsx +11 -3
  216. package/src/components/Filter/components/Filter/filter.stories.tsx +29 -28
  217. package/src/components/Filter/components/FilterLabel/filterLabel.stories.tsx +14 -12
  218. package/src/components/Filter/components/FilterMenu/filterMenu.stories.tsx +111 -108
  219. package/src/components/Filter/components/FilterTag/filterTag.stories.tsx +12 -11
  220. package/src/components/Filter/components/FilterTags/filterTags.stories.tsx +44 -43
  221. package/src/components/Index/components/AzulFileDownload/azulFileDownload.stories.tsx +13 -10
  222. package/src/components/Index/components/AzulFileDownload/azulFileDownload.tsx +12 -5
  223. package/src/components/Index/components/Hero/components/Summaries/summaries.stories.tsx +15 -15
  224. package/src/components/Index/components/Hero/hero.stories.tsx +12 -8
  225. package/src/components/Index/components/NTagCell/nTagCell.stories.tsx +12 -12
  226. package/src/components/Index/index.stories.tsx +2 -1
  227. package/src/components/Layout/components/BackPage/backPageView.stories.tsx +42 -36
  228. package/src/components/Layout/components/Footer/footer.stories.tsx +6 -4
  229. package/src/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenu/navigationMenu.tsx +1 -1
  230. package/src/components/Layout/components/Header/components/Content/components/Navigation/components/NavigationMenuItems/navigationMenuItems.tsx +16 -15
  231. package/src/components/Layout/components/Header/components/Content/components/Navigation/constants.ts +1 -0
  232. package/src/components/Layout/components/Header/components/Content/components/Navigation/navigation.tsx +26 -18
  233. package/src/components/Layout/components/Header/header.stories.tsx +1 -1
  234. package/src/components/Layout/components/Header/header.tsx +6 -1
  235. package/src/components/Layout/components/Sidebar/components/SidebarLabel/sidebarLabel.stories.tsx +10 -10
  236. package/src/components/Layout/components/Sidebar/sidebar.stories.tsx +2 -0
  237. package/src/components/Links/links.stories.tsx +18 -18
  238. package/src/components/Loading/loading.stories.tsx +12 -10
  239. package/src/components/Login/components/Button/types.ts +1 -1
  240. package/src/components/Login/components/Buttons/buttons.tsx +22 -0
  241. package/src/components/Login/components/Buttons/types.ts +9 -0
  242. package/src/components/Login/components/Section/components/Consent/consent.styles.ts +15 -0
  243. package/src/components/Login/components/Section/components/Consent/consent.tsx +30 -0
  244. package/src/components/Login/components/Section/components/Consent/types.ts +10 -0
  245. package/src/components/Login/components/Section/components/Warning/warning.tsx +24 -0
  246. package/src/components/Login/hooks/useUserConsent/types.ts +11 -0
  247. package/src/components/Login/hooks/useUserConsent/useUserConsent.ts +32 -0
  248. package/src/components/Login/hooks/useUserLogin/types.ts +8 -0
  249. package/src/components/Login/hooks/useUserLogin/useUserLogin.ts +29 -0
  250. package/src/components/Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories.tsx +24 -25
  251. package/src/components/Project/components/Contacts/contacts.stories.tsx +22 -22
  252. package/src/components/Project/components/Contributors/contributors.stories.tsx +31 -31
  253. package/src/components/Project/components/DataCurators/dataCurators.stories.tsx +11 -11
  254. package/src/components/Project/components/DataReleasePolicy/dataReleasePolicy.stories.tsx +7 -8
  255. package/src/components/Project/components/Description/description.stories.tsx +11 -11
  256. package/src/components/Project/components/Details/details.stories.tsx +11 -11
  257. package/src/components/Project/components/Publications/publications.stories.tsx +23 -23
  258. package/src/components/Project/components/SupplementaryLinks/supplementaryLinks.stories.tsx +22 -22
  259. package/src/components/Support/components/SupportRequest/components/SupportRequestForm/common/constants.ts +10 -9
  260. package/src/components/Support/components/SupportRequest/components/SupportRequestForm/supportRequestForm.tsx +44 -15
  261. package/src/components/Support/components/ViewSupport/types.ts +9 -0
  262. package/src/components/Support/components/ViewSupport/viewSupport.tsx +6 -10
  263. package/src/components/Table/components/Pagination/pagination.stories.tsx +15 -11
  264. package/src/components/common/Accordion/accordion.stories.tsx +4 -2
  265. package/src/components/common/Breadcrumbs/breadcrumbs.stories.tsx +46 -47
  266. package/src/components/common/Button/components/CallToActionButton/callToActionButton.stories.tsx +17 -20
  267. package/src/components/common/Button/components/HelpIconButton/helpIconButton.stories.tsx +4 -4
  268. package/src/components/common/Card/card.stories.tsx +4 -2
  269. package/src/components/common/Code/code.stories.tsx +1 -1
  270. package/src/components/common/CopyToClipboard/copyToClipboard.stories.tsx +4 -2
  271. package/src/components/common/CustomIcon/components/CloseIcon/closeIcon.tsx +17 -0
  272. package/src/components/common/LoginDialog/constants.ts +33 -0
  273. package/src/components/common/LoginDialog/loginDialog.styles.ts +51 -0
  274. package/src/components/common/LoginDialog/loginDialog.tsx +56 -0
  275. package/src/components/common/LoginDialog/types.ts +4 -0
  276. package/src/components/common/Section/components/SectionTitle/sectionTitle.stories.tsx +10 -10
  277. package/src/components/common/Socials/socials.stories.tsx +4 -2
  278. package/src/components/common/StaticImage/staticImage.stories.tsx +12 -12
  279. package/src/components/common/StatusIcon/statusIcon.stories.tsx +11 -11
  280. package/src/components/common/Tag/tag.stories.tsx +11 -9
  281. package/src/components/common/ToggleButtonGroup/toggleButtonGroup.stories.tsx +23 -23
  282. package/src/config/entities.ts +1 -0
  283. package/src/providers/loginGuard/common/types.ts +21 -0
  284. package/src/providers/loginGuard/context.ts +12 -0
  285. package/src/providers/loginGuard/hook.ts +14 -0
  286. package/src/providers/loginGuard/provider.tsx +76 -0
  287. package/src/styles/common/mui/typography.ts +9 -0
  288. package/src/views/DataDictionaryView/dataDictionaryView.tsx +9 -0
  289. package/tests/provider.test.tsx +191 -0
@@ -1,8 +1,7 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
2
- import React from "react";
1
+ import { Meta, StoryObj } from "@storybook/react";
3
2
  import { ExportMethod } from "./exportMethod";
4
3
 
5
- export default {
4
+ const meta = {
6
5
  argTypes: {
7
6
  buttonLabel: { control: "text" },
8
7
  description: { control: "text" },
@@ -11,16 +10,17 @@ export default {
11
10
  },
12
11
  component: ExportMethod,
13
12
  title: "Components/Section/Export/ExportMethod",
14
- } as ComponentMeta<typeof ExportMethod>;
13
+ } satisfies Meta<typeof ExportMethod>;
15
14
 
16
- const ExportMethodTemplate: ComponentStory<typeof ExportMethod> = (args) => (
17
- <ExportMethod {...args} />
18
- );
15
+ export default meta;
19
16
 
20
- export const ExportMethodStory = ExportMethodTemplate.bind({});
21
- ExportMethodStory.args = {
22
- buttonLabel: "Request curl Command",
23
- description: "Obtain a curl command for downloading the selected data.",
24
- route: "/request-curl-command",
25
- title: "Download Study Data and Metadata (Curl Command)",
17
+ type Story = StoryObj<typeof meta>;
18
+
19
+ export const ExportMethodStory: Story = {
20
+ args: {
21
+ buttonLabel: "Request curl Command",
22
+ description: "Obtain a curl command for downloading the selected data.",
23
+ route: "/request-curl-command",
24
+ title: "Download Study Data and Metadata (Curl Command)",
25
+ },
26
26
  };
@@ -10,6 +10,7 @@ import React, { useRef } from "react";
10
10
  import { Filters } from "../../../../../../../../common/entities";
11
11
  import { useDownloadStatus } from "../../../../../../../../hooks/useDownloadStatus";
12
12
  import { useFileManifestDownload } from "../../../../../../../../hooks/useFileManifest/useFileManifestDownload";
13
+ import { useLoginGuard } from "../../../../../../../../providers/loginGuard/hook";
13
14
  import { ButtonGroup } from "../../../../../../../common/ButtonGroup/buttonGroup";
14
15
  import { ButtonGroupButton } from "../../../../../../../common/ButtonGroup/components/ButtonGroupButton/buttonGroupButton";
15
16
  import {
@@ -46,6 +47,9 @@ export const FileManifestDownload = ({
46
47
  const isInProgress = (isIdle || isLoading) && !disabled;
47
48
  const isReady = Boolean(manifestURL) || disabled;
48
49
 
50
+ // Prompt user for login before download and copy, if required.
51
+ const { requireLogin } = useLoginGuard();
52
+
49
53
  // Copies file manifest.
50
54
  const copyManifestURL = (url?: string): void => {
51
55
  if (!url) return;
@@ -89,15 +93,19 @@ export const FileManifestDownload = ({
89
93
  action="Download file manifest"
90
94
  disabled={disabled}
91
95
  label={<DownloadIconSmall />}
92
- onClick={downloadManifestURL}
96
+ onClick={() =>
97
+ requireLogin(downloadManifestURL)
98
+ }
93
99
  />,
94
100
  <ButtonGroupButton
95
101
  key="copy"
96
102
  action="Copy file manifest"
97
103
  disabled={disabled}
98
104
  label={<ContentCopyIconSmall />}
99
- onClick={(): void =>
100
- copyManifestURL(manifestURL)
105
+ onClick={() =>
106
+ requireLogin((): void =>
107
+ copyManifestURL(manifestURL)
108
+ )
101
109
  }
102
110
  />,
103
111
  ]}
@@ -1,8 +1,8 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
2
  import React from "react";
3
3
  import { Filter } from "./filter";
4
4
 
5
- export default {
5
+ const meta = {
6
6
  argTypes: {
7
7
  tags: { control: { disable: true } },
8
8
  },
@@ -15,37 +15,38 @@ export default {
15
15
  ),
16
16
  ],
17
17
  title: "Components/Filter/Filter",
18
- } as ComponentMeta<typeof Filter>;
18
+ } satisfies Meta<typeof Filter>;
19
19
 
20
- const FilterTemplate: ComponentStory<typeof Filter> = (args) => (
21
- <Filter {...args} />
22
- );
20
+ export default meta;
21
+
22
+ type Story = StoryObj<typeof meta>;
23
23
 
24
24
  const onFilter = (): void => {
25
25
  // onFilter function
26
26
  };
27
27
 
28
- export const FilterStory = FilterTemplate.bind({});
29
- FilterStory.args = {
30
- categoryView: {
31
- isDisabled: false,
32
- key: "genusSpecies",
33
- label: "Genus Species",
34
- values: [
35
- {
36
- count: 12,
37
- key: "homoSapiens",
38
- label: "Homo sapiens",
39
- selected: false,
40
- },
41
- {
42
- count: 6,
43
- key: "musMusculus",
44
- label: "Mus musculus",
45
- selected: false,
46
- },
47
- ],
28
+ export const FilterStory: Story = {
29
+ args: {
30
+ categoryView: {
31
+ isDisabled: false,
32
+ key: "genusSpecies",
33
+ label: "Genus Species",
34
+ values: [
35
+ {
36
+ count: 12,
37
+ key: "homoSapiens",
38
+ label: "Homo sapiens",
39
+ selected: false,
40
+ },
41
+ {
42
+ count: 6,
43
+ key: "musMusculus",
44
+ label: "Mus musculus",
45
+ selected: false,
46
+ },
47
+ ],
48
+ },
49
+ isFilterDrawer: false,
50
+ onFilter,
48
51
  },
49
- isFilterDrawer: false,
50
- onFilter,
51
52
  };
@@ -1,8 +1,8 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
2
  import React from "react";
3
3
  import { FilterLabel } from "./filterLabel";
4
4
 
5
- export default {
5
+ const meta = {
6
6
  argTypes: {
7
7
  count: { control: "number" },
8
8
  disabled: { control: "boolean" },
@@ -18,16 +18,18 @@ export default {
18
18
  ),
19
19
  ],
20
20
  title: "Components/Filter/FilterLabel",
21
- } as ComponentMeta<typeof FilterLabel>;
21
+ } satisfies Meta<typeof FilterLabel>;
22
22
 
23
- const FilterLabelTemplate: ComponentStory<typeof FilterLabel> = (args) => (
24
- <FilterLabel {...args} />
25
- );
23
+ export default meta;
26
24
 
27
- export const FilterLabelStory = FilterLabelTemplate.bind({});
28
- FilterLabelStory.args = {
29
- count: 123,
30
- disabled: false,
31
- isOpen: false,
32
- label: "Label",
25
+ type Story = StoryObj<typeof meta>;
26
+
27
+ export const FilterLabelStory: Story = {
28
+ args: {
29
+ count: 123,
30
+ disabled: false,
31
+ isOpen: false,
32
+ label: "Label",
33
+ onClick: () => {},
34
+ },
33
35
  };
@@ -1,15 +1,13 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
2
  import React from "react";
3
3
  import { FilterMenu } from "./filterMenu";
4
4
 
5
- export default {
5
+ const meta = {
6
6
  argTypes: {
7
- argTypes: {
8
- categoryKey: { control: { disable: true } },
9
- menuWidth: { control: "number" },
10
- onFilter: { control: { disable: true } },
11
- values: { control: { disable: true } },
12
- },
7
+ categoryKey: { control: { disable: true } },
8
+ menuWidth: { control: "number" },
9
+ onFilter: { control: { disable: true } },
10
+ values: { control: { disable: true } },
13
11
  },
14
12
  component: FilterMenu,
15
13
  decorators: [
@@ -20,106 +18,111 @@ export default {
20
18
  ),
21
19
  ],
22
20
  title: "Components/Filter/FilterMenu",
23
- } as ComponentMeta<typeof FilterMenu>;
21
+ } satisfies Meta<typeof FilterMenu>;
24
22
 
25
- const FilterMenuTemplate: ComponentStory<typeof FilterMenu> = (args) => (
26
- <FilterMenu {...args} />
27
- );
23
+ export default meta;
28
24
 
29
- export const FilterMenuStory = FilterMenuTemplate.bind({});
30
- FilterMenuStory.args = {
31
- categoryKey: "donorDisease",
32
- menuWidth: 312,
33
- values: [
34
- {
35
- count: 312,
36
- key: "normal",
37
- label: "Normal",
38
- selected: false,
39
- },
40
- {
41
- count: 0,
42
- key: "abscess",
43
- label: "abscess",
44
- selected: false,
45
- },
46
- {
47
- count: 3,
48
- key: "acoustic neuroma",
49
- label: "acoustic neuroma",
50
- selected: true,
51
- },
52
- {
53
- count: 3,
54
- key: "acute kidney failure",
55
- label: "acute kidney failure",
56
- selected: true,
57
- },
58
- {
59
- count: 3,
60
- key: "acute kidney tubular necrosis",
61
- label: "acute kidney tubular necrosis",
62
- selected: true,
63
- },
64
- {
65
- count: 3,
66
- key: "alcohol abuse",
67
- label: "alcohol abuse",
68
- selected: true,
69
- },
70
- {
71
- count: 3,
72
- key: "Alzheimer disease",
73
- label: "Alzheimer disease",
74
- selected: true,
75
- },
76
- {
77
- count: 3,
78
- key: "amyotrophic lateral sclerosis",
79
- label: "amyotrophic lateral sclerosis",
80
- selected: true,
81
- },
82
- {
83
- count: 1,
84
- key: "anxiety disorder",
85
- label: "anxiety disorder",
86
- selected: true,
87
- },
88
- {
89
- count: 3,
90
- key: "aplastic anemia",
91
- label: "aplastic anemia",
92
- selected: true,
93
- },
94
- {
95
- count: 3,
96
- key: "arthritis",
97
- label: "arthritis",
98
- selected: true,
99
- },
100
- {
101
- count: 3,
102
- key: "asthma",
103
- label: "asthma",
104
- selected: true,
105
- },
106
- {
107
- count: 222,
108
- key: "atherosclerosis",
109
- label: "atherosclerosis",
110
- selected: false,
111
- },
112
- {
113
- count: 222,
114
- key: "atrial fibrillation",
115
- label: "atrial fibrillation",
116
- selected: true,
117
- },
118
- {
119
- count: 222,
120
- key: "benign prostatic hyperplasia",
121
- label: "benign prostatic hyperplasia",
122
- selected: true,
123
- },
124
- ],
25
+ type Story = StoryObj<typeof meta>;
26
+
27
+ export const FilterMenuStory: Story = {
28
+ args: {
29
+ categoryKey: "donorDisease",
30
+ categoryLabel: "Donor Disease",
31
+ isFilterDrawer: false,
32
+ menuWidth: 312,
33
+ onCloseFilter: () => {},
34
+ onFilter: () => {},
35
+ values: [
36
+ {
37
+ count: 312,
38
+ key: "normal",
39
+ label: "Normal",
40
+ selected: false,
41
+ },
42
+ {
43
+ count: 0,
44
+ key: "abscess",
45
+ label: "abscess",
46
+ selected: false,
47
+ },
48
+ {
49
+ count: 3,
50
+ key: "acoustic neuroma",
51
+ label: "acoustic neuroma",
52
+ selected: true,
53
+ },
54
+ {
55
+ count: 3,
56
+ key: "acute kidney failure",
57
+ label: "acute kidney failure",
58
+ selected: true,
59
+ },
60
+ {
61
+ count: 3,
62
+ key: "acute kidney tubular necrosis",
63
+ label: "acute kidney tubular necrosis",
64
+ selected: true,
65
+ },
66
+ {
67
+ count: 3,
68
+ key: "alcohol abuse",
69
+ label: "alcohol abuse",
70
+ selected: true,
71
+ },
72
+ {
73
+ count: 3,
74
+ key: "Alzheimer disease",
75
+ label: "Alzheimer disease",
76
+ selected: true,
77
+ },
78
+ {
79
+ count: 3,
80
+ key: "amyotrophic lateral sclerosis",
81
+ label: "amyotrophic lateral sclerosis",
82
+ selected: true,
83
+ },
84
+ {
85
+ count: 1,
86
+ key: "anxiety disorder",
87
+ label: "anxiety disorder",
88
+ selected: true,
89
+ },
90
+ {
91
+ count: 3,
92
+ key: "aplastic anemia",
93
+ label: "aplastic anemia",
94
+ selected: true,
95
+ },
96
+ {
97
+ count: 3,
98
+ key: "arthritis",
99
+ label: "arthritis",
100
+ selected: true,
101
+ },
102
+ {
103
+ count: 3,
104
+ key: "asthma",
105
+ label: "asthma",
106
+ selected: true,
107
+ },
108
+ {
109
+ count: 222,
110
+ key: "atherosclerosis",
111
+ label: "atherosclerosis",
112
+ selected: false,
113
+ },
114
+ {
115
+ count: 222,
116
+ key: "atrial fibrillation",
117
+ label: "atrial fibrillation",
118
+ selected: true,
119
+ },
120
+ {
121
+ count: 222,
122
+ key: "benign prostatic hyperplasia",
123
+ label: "benign prostatic hyperplasia",
124
+ selected: true,
125
+ },
126
+ ],
127
+ },
125
128
  };
@@ -1,22 +1,23 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
2
- import React from "react";
1
+ import { Meta, StoryObj } from "@storybook/react";
3
2
  import { FilterTag } from "./filterTag";
4
3
 
5
- export default {
4
+ const meta = {
6
5
  argTypes: {
7
6
  label: { control: "text" },
8
7
  superseded: { control: "boolean" },
9
8
  },
10
9
  component: FilterTag,
11
10
  title: "Components/Filter/FilterTag",
12
- } as ComponentMeta<typeof FilterTag>;
11
+ } satisfies Meta<typeof FilterTag>;
13
12
 
14
- const FilterTagTemplate: ComponentStory<typeof FilterTag> = (args) => (
15
- <FilterTag {...args} />
16
- );
13
+ export default meta;
17
14
 
18
- export const FilterTagStory = FilterTagTemplate.bind({});
19
- FilterTagStory.args = {
20
- label: "Male",
21
- superseded: false,
15
+ type Story = StoryObj<typeof meta>;
16
+
17
+ export const FilterTagStory: Story = {
18
+ args: {
19
+ label: "Male",
20
+ onRemove: () => {},
21
+ superseded: false,
22
+ },
22
23
  };
@@ -1,8 +1,12 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
1
+ import { Meta, StoryObj } from "@storybook/react";
2
2
  import React from "react";
3
3
  import { FilterTags } from "./filterTags";
4
4
 
5
- export default {
5
+ const onRemove = (): void => {
6
+ // onRemove function
7
+ };
8
+
9
+ const meta = {
6
10
  argTypes: {
7
11
  tags: { control: { disable: true } },
8
12
  },
@@ -15,48 +19,45 @@ export default {
15
19
  ),
16
20
  ],
17
21
  title: "Components/Filter/FilterTags",
18
- } as ComponentMeta<typeof FilterTags>;
22
+ } satisfies Meta<typeof FilterTags>;
19
23
 
20
- const FilterTagsTemplate: ComponentStory<typeof FilterTags> = (args) => (
21
- <FilterTags {...args} />
22
- );
24
+ export default meta;
23
25
 
24
- const onRemove = (): void => {
25
- // onRemove function
26
- };
26
+ type Story = StoryObj<typeof meta>;
27
27
 
28
- export const FilterTagsStory = FilterTagsTemplate.bind({});
29
- FilterTagsStory.args = {
30
- tags: [
31
- {
32
- label: "Normal",
33
- onRemove: onRemove,
34
- superseded: false,
35
- },
36
- {
37
- label: "abscess",
38
- onRemove: onRemove,
39
- superseded: true,
40
- },
41
- {
42
- label: "acoustic neuroma",
43
- onRemove: onRemove,
44
- superseded: false,
45
- },
46
- {
47
- label: "acute kidney failure",
48
- onRemove: onRemove,
49
- superseded: false,
50
- },
51
- {
52
- label: "acute kidney tubular necrosis",
53
- onRemove: onRemove,
54
- superseded: false,
55
- },
56
- {
57
- label: "alcohol abuse",
58
- onRemove: onRemove,
59
- superseded: false,
60
- },
61
- ],
28
+ export const FilterTagsStory: Story = {
29
+ args: {
30
+ tags: [
31
+ {
32
+ label: "Normal",
33
+ onRemove: onRemove,
34
+ superseded: false,
35
+ },
36
+ {
37
+ label: "abscess",
38
+ onRemove: onRemove,
39
+ superseded: true,
40
+ },
41
+ {
42
+ label: "acoustic neuroma",
43
+ onRemove: onRemove,
44
+ superseded: false,
45
+ },
46
+ {
47
+ label: "acute kidney failure",
48
+ onRemove: onRemove,
49
+ superseded: false,
50
+ },
51
+ {
52
+ label: "acute kidney tubular necrosis",
53
+ onRemove: onRemove,
54
+ superseded: false,
55
+ },
56
+ {
57
+ label: "alcohol abuse",
58
+ onRemove: onRemove,
59
+ superseded: false,
60
+ },
61
+ ],
62
+ },
62
63
  };
@@ -1,17 +1,20 @@
1
- import { ComponentMeta, ComponentStory } from "@storybook/react";
2
- import React from "react";
1
+ import { Meta, StoryObj } from "@storybook/react";
3
2
  import { AzulFileDownload } from "./azulFileDownload";
4
3
 
5
- export default {
4
+ const meta = {
6
5
  component: AzulFileDownload,
7
6
  title: "Components/Common/IconButton/Download",
8
- } as ComponentMeta<typeof AzulFileDownload>;
7
+ } satisfies Meta<typeof AzulFileDownload>;
9
8
 
10
- const AzulFileDownloadTemplate: ComponentStory<typeof AzulFileDownload> = (
11
- args
12
- ) => <AzulFileDownload {...args} />;
9
+ export default meta;
13
10
 
14
- export const AzulFileDownloadStory = AzulFileDownloadTemplate.bind({});
15
- AzulFileDownloadStory.args = {
16
- url: "https://service.dev.singlecell.gi.ucsc.edu/repository/files/d496b624-eb67-5e47-999a-848e856c5bcc?catalog=dcp2&version=2021-09-10T16%3A09%3A44.000000Z",
11
+ type Story = StoryObj<typeof meta>;
12
+
13
+ export const AzulFileDownloadStory: Story = {
14
+ args: {
15
+ entityName: "",
16
+ relatedEntityId: "",
17
+ relatedEntityName: "",
18
+ url: "https://service.dev.singlecell.gi.ucsc.edu/repository/files/d496b624-eb67-5e47-999a-848e856c5bcc?catalog=dcp2&version=2021-09-10T16%3A09%3A44.000000Z",
19
+ },
17
20
  };
@@ -1,6 +1,7 @@
1
1
  import { Box } from "@mui/material";
2
2
  import React, { Fragment, useEffect, useRef, useState } from "react";
3
3
  import { useFileLocation } from "../../../../hooks/useFileLocation";
4
+ import { useLoginGuard } from "../../../../providers/loginGuard/hook";
4
5
  import { DownloadIcon } from "../../../common/CustomIcon/components/DownloadIcon/downloadIcon";
5
6
  import { LoadingIcon } from "../../../common/CustomIcon/components/LoadingIcon/loadingIcon";
6
7
  import { IconButton } from "../../../common/IconButton/iconButton";
@@ -29,6 +30,9 @@ export const AzulFileDownload = ({
29
30
  const downloadRef = useRef<HTMLAnchorElement>(null);
30
31
  const [isRequestPending, setIsRequestPending] = useState(false);
31
32
 
33
+ // Prompt user for login before download, if required.
34
+ const { requireLogin } = useLoginGuard();
35
+
32
36
  // Initiates file download when file location request is successful.
33
37
  useEffect(() => {
34
38
  if (!fileUrl) return;
@@ -39,6 +43,13 @@ export const AzulFileDownload = ({
39
43
  setIsRequestPending(false);
40
44
  }, [fileUrl]);
41
45
 
46
+ // Initiates file download when download button is clicked.
47
+ const handleDownloadClick = (): void => {
48
+ setIsRequestPending(true);
49
+ trackFileDownloaded(entityName, relatedEntityId, relatedEntityName);
50
+ run();
51
+ };
52
+
42
53
  return (
43
54
  <Fragment>
44
55
  {isRequestPending ? (
@@ -54,11 +65,7 @@ export const AzulFileDownload = ({
54
65
  data-testid={AZUL_FILE_REQUEST_DOWNLOAD_TEST_ID}
55
66
  disabled={!url}
56
67
  Icon={isLoading ? LoadingIcon : DownloadIcon}
57
- onClick={(): void => {
58
- setIsRequestPending(true);
59
- trackFileDownloaded(entityName, relatedEntityId, relatedEntityName);
60
- run();
61
- }}
68
+ onClick={() => requireLogin(handleDownloadClick)}
62
69
  size="medium"
63
70
  />
64
71
  )}