@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,3 +1,3 @@
1
1
  {
2
- ".": "21.3.0"
2
+ ".": "22.0.0"
3
3
  }
@@ -1,8 +1,12 @@
1
+ import { StorybookConfig } from "@storybook/nextjs";
1
2
  import * as path from "path";
2
3
 
3
4
  const toPath = (filePath: string) => path.join(process.cwd(), filePath);
4
5
 
5
- export default {
6
+ const config: StorybookConfig = {
7
+ core: {
8
+ disableTelemetry: true,
9
+ },
6
10
  stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
7
11
  addons: [
8
12
  "@storybook/addon-links",
@@ -44,3 +48,5 @@ export default {
44
48
  autodocs: true,
45
49
  },
46
50
  };
51
+
52
+ export default config;
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [22.0.0](https://github.com/DataBiosphere/findable-ui/compare/v21.4.0...v22.0.0) (2025-03-14)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * upgrade dependencies to resolve vulnerabilities ([#326](https://github.com/DataBiosphere/findable-ui/issues/326)) (#327)
9
+
10
+ ### Features
11
+
12
+ * create data dictionary table component ([#334](https://github.com/DataBiosphere/findable-ui/issues/334)) ([#335](https://github.com/DataBiosphere/findable-ui/issues/335)) ([b5c99a6](https://github.com/DataBiosphere/findable-ui/commit/b5c99a63ce016ba7f1a26275652f1460fe022e9b))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * add 'rel' attribute to viewsupport component props ([#328](https://github.com/DataBiosphere/findable-ui/issues/328)) ([#329](https://github.com/DataBiosphere/findable-ui/issues/329)) ([98ccf03](https://github.com/DataBiosphere/findable-ui/commit/98ccf03037e7a14f95dc290025e2ed64adcc060d))
18
+ * upgrade dependencies to resolve vulnerabilities ([#326](https://github.com/DataBiosphere/findable-ui/issues/326)) ([#327](https://github.com/DataBiosphere/findable-ui/issues/327)) ([196ee53](https://github.com/DataBiosphere/findable-ui/commit/196ee53d40c1dd9180f8eee92951c23ed135257e))
19
+
20
+ ## [21.4.0](https://github.com/DataBiosphere/findable-ui/compare/v21.3.0...v21.4.0) (2025-02-28)
21
+
22
+
23
+ ### Features
24
+
25
+ * added check login required for export/download [#283](https://github.com/DataBiosphere/findable-ui/issues/283) ([#324](https://github.com/DataBiosphere/findable-ui/issues/324)) ([badb6ab](https://github.com/DataBiosphere/findable-ui/commit/badb6abe9319625a7fdabfe290434a05115cc2a9))
26
+ * use anchor tags for all header and footer links ([#297](https://github.com/DataBiosphere/findable-ui/issues/297)) ([#322](https://github.com/DataBiosphere/findable-ui/issues/322)) ([95effbf](https://github.com/DataBiosphere/findable-ui/commit/95effbfcdb65d71d10141c287b34043086c261e5))
27
+
3
28
  ## [21.3.0](https://github.com/DataBiosphere/findable-ui/compare/v21.2.0...v21.3.0) (2025-02-14)
4
29
 
5
30
 
@@ -0,0 +1,2 @@
1
+ import { Grid2Props } from "@mui/material";
2
+ export declare const GRID2_PROPS: Grid2Props;
@@ -0,0 +1,6 @@
1
+ export const GRID2_PROPS = {
2
+ container: true,
3
+ direction: "column",
4
+ flexWrap: "nowrap",
5
+ rowGap: 8,
6
+ };
@@ -0,0 +1,2 @@
1
+ import { ClassesProps } from "./types";
2
+ export declare const Entities: ({ classes }: ClassesProps) => JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { Grid2 } from "@mui/material";
2
+ import React from "react";
3
+ import { Entity } from "../Entity/entity";
4
+ import { GRID2_PROPS } from "./constants";
5
+ export const Entities = ({ classes }) => {
6
+ return (React.createElement(Grid2, { ...GRID2_PROPS }, classes.map((classData) => (React.createElement(Entity, { key: classData.key, class: classData })))));
7
+ };
@@ -0,0 +1,4 @@
1
+ import { Class } from "../../../../common/entities";
2
+ export interface ClassesProps {
3
+ classes: Class[];
4
+ }
@@ -0,0 +1,2 @@
1
+ import { Grid2Props } from "@mui/material";
2
+ export declare const GRID2_PROPS: Grid2Props;
@@ -0,0 +1,5 @@
1
+ export const GRID2_PROPS = {
2
+ container: true,
3
+ direction: "column",
4
+ flexWrap: "nowrap",
5
+ };
@@ -0,0 +1,2 @@
1
+ import { EntityProps } from "./types";
2
+ export declare const Entity: ({ class: classData }: EntityProps) => JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { Grid2, Typography } from "@mui/material";
2
+ import React from "react";
3
+ import { COLOR, VARIANT } from "../../../../styles/common/mui/typography";
4
+ import { useTable } from "../Table/hook";
5
+ import { Table } from "../Table/table";
6
+ import { GRID2_PROPS } from "./constants";
7
+ export const Entity = ({ class: classData }) => {
8
+ const table = useTable(classData.attributes);
9
+ return (React.createElement(Grid2, { ...GRID2_PROPS, rowGap: 4 },
10
+ React.createElement(Grid2, { ...GRID2_PROPS, rowGap: 1 },
11
+ React.createElement(Typography, { component: "h3", variant: VARIANT.TEXT_HEADING_SMALL }, classData.label),
12
+ React.createElement(Typography, { color: COLOR.INK_LIGHT, component: "div", variant: VARIANT.TEXT_BODY_400_2_LINES }, classData.description)),
13
+ React.createElement(Table, { table: table })));
14
+ };
@@ -0,0 +1,4 @@
1
+ import { Class } from "../../../../common/entities";
2
+ export interface EntityProps {
3
+ class: Class;
4
+ }
@@ -0,0 +1,6 @@
1
+ import { ColumnDef } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../common/entities";
3
+ import { COLUMN_IDENTIFIER } from "./columnIdentifier";
4
+ import { AttributeValue } from "./types";
5
+ export declare const COLUMN_DEF: Record<keyof typeof COLUMN_IDENTIFIER, ColumnDef<Attribute, AttributeValue>>;
6
+ export declare const COLUMN_DEFS: ColumnDef<Attribute, AttributeValue>[];
@@ -0,0 +1,33 @@
1
+ import { BasicCell } from "../components/BasicCell/basicCell";
2
+ import { COLUMN_IDENTIFIER } from "./columnIdentifier";
3
+ const COLUMN_DEF_DESCRIPTION = {
4
+ accessorFn: (row) => row.description,
5
+ cell: (props) => BasicCell({ ...props }),
6
+ header: "Description",
7
+ id: COLUMN_IDENTIFIER.DESCRIPTION,
8
+ meta: { width: { max: "2fr", min: "480px" } },
9
+ };
10
+ const COLUMN_DEF_KEY = {
11
+ accessorFn: (row) => row.key,
12
+ cell: (props) => BasicCell({ ...props }),
13
+ header: "Key",
14
+ id: COLUMN_IDENTIFIER.KEY,
15
+ meta: { width: { max: "1fr", min: "180px" } },
16
+ };
17
+ const COLUMN_DEF_LABEL = {
18
+ accessorFn: (row) => row.label,
19
+ cell: (props) => BasicCell({ ...props }),
20
+ header: "Label",
21
+ id: COLUMN_IDENTIFIER.LABEL,
22
+ meta: { width: { max: "1fr", min: "200px" } },
23
+ };
24
+ export const COLUMN_DEF = {
25
+ DESCRIPTION: COLUMN_DEF_DESCRIPTION,
26
+ KEY: COLUMN_DEF_KEY,
27
+ LABEL: COLUMN_DEF_LABEL,
28
+ };
29
+ export const COLUMN_DEFS = [
30
+ COLUMN_DEF.LABEL,
31
+ COLUMN_DEF.KEY,
32
+ COLUMN_DEF.DESCRIPTION,
33
+ ];
@@ -0,0 +1,5 @@
1
+ export declare const COLUMN_IDENTIFIER: {
2
+ readonly DESCRIPTION: "description";
3
+ readonly KEY: "key";
4
+ readonly LABEL: "label";
5
+ };
@@ -0,0 +1,5 @@
1
+ export const COLUMN_IDENTIFIER = {
2
+ DESCRIPTION: "description",
3
+ KEY: "key",
4
+ LABEL: "label",
5
+ };
@@ -0,0 +1,2 @@
1
+ import { Attribute } from "../../../../../common/entities";
2
+ export type AttributeValue = Attribute[keyof Attribute];
@@ -0,0 +1,2 @@
1
+ import { BasicCellProps } from "./types";
2
+ export declare const BasicCell: ({ getValue }: BasicCellProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { Typography } from "@mui/material";
2
+ import React from "react";
3
+ import { VARIANT } from "../../../../../../styles/common/mui/typography";
4
+ export const BasicCell = ({ getValue }) => {
5
+ return React.createElement(Typography, { variant: VARIANT.INHERIT }, getValue());
6
+ };
@@ -0,0 +1,4 @@
1
+ import { CellContext } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ import { AttributeValue } from "../../columns/types";
4
+ export type BasicCellProps = CellContext<Attribute, AttributeValue>;
@@ -0,0 +1,3 @@
1
+ import { Table } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../common/entities";
3
+ export declare const useTable: (data: Attribute[]) => Table<Attribute>;
@@ -0,0 +1,11 @@
1
+ import { useReactTable } from "@tanstack/react-table";
2
+ import { COLUMN_DEFS } from "./columns/columnDef";
3
+ import { useTableOptions } from "./options/hook";
4
+ export const useTable = (data) => {
5
+ const tableOptions = useTableOptions();
6
+ return useReactTable({
7
+ ...tableOptions,
8
+ columns: COLUMN_DEFS,
9
+ data,
10
+ });
11
+ };
@@ -0,0 +1,3 @@
1
+ import { CoreOptions } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ export declare const CORE_OPTIONS: Pick<CoreOptions<Attribute>, "_features" | "getCoreRowModel">;
@@ -0,0 +1,7 @@
1
+ import { getCoreRowModel } from "@tanstack/react-table";
2
+ import { ROW_POSITION } from "../../../../../Table/features/RowPosition/constants";
3
+ import { ROW_PREVIEW } from "../../../../../Table/features/RowPreview/constants";
4
+ export const CORE_OPTIONS = {
5
+ _features: [ROW_POSITION, ROW_PREVIEW],
6
+ getCoreRowModel: getCoreRowModel(),
7
+ };
@@ -0,0 +1,3 @@
1
+ import { TableOptions } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../common/entities";
3
+ export declare const useTableOptions: () => Omit<TableOptions<Attribute>, "columns" | "data">;
@@ -0,0 +1,8 @@
1
+ import { CORE_OPTIONS } from "./core/constants";
2
+ import { SORTING_OPTIONS } from "./sorting/constants";
3
+ export const useTableOptions = () => {
4
+ return {
5
+ ...CORE_OPTIONS,
6
+ ...SORTING_OPTIONS,
7
+ };
8
+ };
@@ -0,0 +1,3 @@
1
+ import { SortingOptions } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../../../common/entities";
3
+ export declare const SORTING_OPTIONS: Pick<SortingOptions<Attribute>, "enableSorting">;
@@ -0,0 +1,3 @@
1
+ export const SORTING_OPTIONS = {
2
+ enableSorting: false,
3
+ };
@@ -0,0 +1,2 @@
1
+ import { TableProps } from "./types";
2
+ export declare const Table: ({ table }: TableProps) => JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { TableContainer } from "@mui/material";
2
+ import React from "react";
3
+ import { TableBody } from "../../../Detail/components/Table/components/TableBody/tableBody";
4
+ import { ROW_DIRECTION } from "../../../Table/common/entities";
5
+ import { TableHead } from "../../../Table/components/TableHead/tableHead";
6
+ import { GridTable } from "../../../Table/table.styles";
7
+ import { getColumnTrackSizing } from "../../../TableCreator/options/columnTrackSizing/utils";
8
+ import { GridPaper } from "../../../common/Paper/paper.styles";
9
+ import { StyledRoundedPaper } from "./table.styles";
10
+ export const Table = ({ table }) => {
11
+ return (React.createElement(StyledRoundedPaper, { variant: "table" },
12
+ React.createElement(GridPaper, null,
13
+ React.createElement(TableContainer, null,
14
+ React.createElement(GridTable, { gridTemplateColumns: getColumnTrackSizing(table.getVisibleFlatColumns()) },
15
+ React.createElement(TableHead, { rowDirection: ROW_DIRECTION.DEFAULT, tableInstance: table }),
16
+ React.createElement(TableBody, { rowDirection: ROW_DIRECTION.DEFAULT, tableInstance: table }))))));
17
+ };
@@ -0,0 +1,3 @@
1
+ export declare const StyledRoundedPaper: import("@emotion/styled").StyledComponent<import("../../../common/Paper/paper").PaperProps & import("react").RefAttributes<HTMLDivElement> & {
2
+ theme?: import("@emotion/react").Theme;
3
+ }, {}, {}>;
@@ -0,0 +1,5 @@
1
+ import styled from "@emotion/styled";
2
+ import { RoundedPaper } from "../../../common/Paper/paper.styles";
3
+ export const StyledRoundedPaper = styled(RoundedPaper) `
4
+ box-shadow: none;
5
+ `;
@@ -0,0 +1,5 @@
1
+ import { Table } from "@tanstack/react-table";
2
+ import { Attribute } from "../../../../common/entities";
3
+ export interface TableProps {
4
+ table: Table<Attribute>;
5
+ }
@@ -0,0 +1,2 @@
1
+ import { BaseComponentProps } from "../types";
2
+ export declare const DataDictionary: ({ className, }: BaseComponentProps) => JSX.Element;
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { Entities } from "./components/Entities/entities";
3
+ import { View } from "./dataDictionary.styles";
4
+ import { useDataDictionary } from "./hooks/UseDataDictionary/hook";
5
+ export const DataDictionary = ({ className, }) => {
6
+ const { classes } = useDataDictionary();
7
+ return (React.createElement(View, { className: className },
8
+ React.createElement(Entities, { classes: classes })));
9
+ };
@@ -0,0 +1 @@
1
+ export declare const View: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,7 @@
1
+ import { styled } from "@mui/material";
2
+ export const View = styled("div") `
3
+ flex: 1;
4
+ margin: 0 auto;
5
+ max-width: calc(100vw - 48px);
6
+ padding: 24px 0;
7
+ `;
@@ -0,0 +1,2 @@
1
+ import { UseDataDictionary } from "./types";
2
+ export declare const useDataDictionary: () => UseDataDictionary;
@@ -0,0 +1,5 @@
1
+ import { useConfig } from "../../../../hooks/useConfig";
2
+ export const useDataDictionary = () => {
3
+ const { config: { dataDictionary: { classes = [] } = {} }, } = useConfig();
4
+ return { classes };
5
+ };
@@ -0,0 +1,4 @@
1
+ import { Class } from "../../../../common/entities";
2
+ export interface UseDataDictionary {
3
+ classes: Class[];
4
+ }
@@ -1,5 +1,36 @@
1
- import { ComponentMeta } from "@storybook/react";
2
- import { Detail } from "./detail";
3
- declare const _default: ComponentMeta<typeof Detail>;
4
- export default _default;
5
- export declare const DetailStory: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./detail").DetailProps>;
1
+ import { StoryObj } from "@storybook/react";
2
+ declare const meta: {
3
+ argTypes: {
4
+ Tabs: {
5
+ table: {
6
+ disable: true;
7
+ };
8
+ };
9
+ isDetailOverview: {
10
+ control: "boolean";
11
+ };
12
+ mainColumn: {
13
+ table: {
14
+ disable: true;
15
+ };
16
+ };
17
+ sideColumn: {
18
+ table: {
19
+ disable: true;
20
+ };
21
+ };
22
+ top: {
23
+ table: {
24
+ disable: true;
25
+ };
26
+ };
27
+ };
28
+ component: ({ isDetailOverview, mainColumn, sideColumn, Tabs, top, }: import("./detail").DetailProps) => JSX.Element;
29
+ parameters: {
30
+ layout: string;
31
+ };
32
+ title: string;
33
+ };
34
+ export default meta;
35
+ type Story = StoryObj<typeof meta>;
36
+ export declare const DetailStory: Story;
@@ -1,15 +1,23 @@
1
1
  import React from "react";
2
+ import { CollaboratingOrganizations } from "../Project/components/CollaboratingOrganizations/collaboratingOrganizations";
2
3
  import { CollaboratingOrganizationsStory } from "../Project/components/CollaboratingOrganizations/collaboratingOrganizations.stories";
4
+ import { Contacts } from "../Project/components/Contacts/contacts";
3
5
  import { ContactsStory } from "../Project/components/Contacts/contacts.stories";
6
+ import { Contributors } from "../Project/components/Contributors/contributors";
4
7
  import { ContributorsStory } from "../Project/components/Contributors/contributors.stories";
8
+ import { DataCurators } from "../Project/components/DataCurators/dataCurators";
5
9
  import { DataCuratorsStory } from "../Project/components/DataCurators/dataCurators.stories";
6
- import { DataReleasePolicyStory } from "../Project/components/DataReleasePolicy/dataReleasePolicy.stories";
10
+ import { DataReleasePolicy } from "../Project/components/DataReleasePolicy/dataReleasePolicy";
11
+ import { Description } from "../Project/components/Description/description";
7
12
  import { DescriptionStory } from "../Project/components/Description/description.stories";
13
+ import { Details } from "../Project/components/Details/details";
8
14
  import { DetailsStory } from "../Project/components/Details/details.stories";
15
+ import { Publications } from "../Project/components/Publications/publications";
9
16
  import { PublicationsStory } from "../Project/components/Publications/publications.stories";
17
+ import { SupplementaryLinks } from "../Project/components/SupplementaryLinks/supplementaryLinks";
10
18
  import { SupplementaryLinksStory } from "../Project/components/SupplementaryLinks/supplementaryLinks.stories";
11
19
  import { Detail } from "./detail";
12
- export default {
20
+ const meta = {
13
21
  argTypes: {
14
22
  Tabs: { table: { disable: true } },
15
23
  isDetailOverview: { control: "boolean" },
@@ -23,20 +31,21 @@ export default {
23
31
  },
24
32
  title: "Views/EntityDetailView",
25
33
  };
26
- const DetailTemplate = (args) => (React.createElement(Detail, { ...args }));
27
- export const DetailStory = DetailTemplate.bind({});
28
- DetailStory.args = {
29
- isDetailOverview: true,
30
- mainColumn: (React.createElement(React.Fragment, null,
31
- React.createElement(DescriptionStory, { projectDescription: DescriptionStory.args?.projectDescription || "None" }),
32
- React.createElement(ContactsStory, { ...ContactsStory.args }),
33
- React.createElement(PublicationsStory, { ...PublicationsStory.args }),
34
- React.createElement(ContributorsStory, { ...ContributorsStory.args }),
35
- React.createElement(CollaboratingOrganizationsStory, { ...CollaboratingOrganizationsStory.args }),
36
- React.createElement(DataCuratorsStory, { ...DataCuratorsStory.args }),
37
- React.createElement(SupplementaryLinksStory, { ...SupplementaryLinksStory.args }),
38
- React.createElement(DataReleasePolicyStory, null))),
39
- sideColumn: (React.createElement(React.Fragment, null,
40
- React.createElement(DetailsStory, { keyValuePairs: DetailsStory.args?.keyValuePairs, title: DetailsStory.args?.title ?? "" }))),
41
- top: React.createElement(React.Fragment, null),
34
+ export default meta;
35
+ export const DetailStory = {
36
+ args: {
37
+ isDetailOverview: true,
38
+ mainColumn: (React.createElement(React.Fragment, null,
39
+ React.createElement(Description, { projectDescription: DescriptionStory.args.projectDescription || "None" }),
40
+ React.createElement(Contacts, { ...ContactsStory.args }),
41
+ React.createElement(Publications, { ...PublicationsStory.args }),
42
+ React.createElement(Contributors, { ...ContributorsStory.args }),
43
+ React.createElement(CollaboratingOrganizations, { ...CollaboratingOrganizationsStory.args }),
44
+ React.createElement(DataCurators, { ...DataCuratorsStory.args }),
45
+ React.createElement(SupplementaryLinks, { ...SupplementaryLinksStory.args }),
46
+ React.createElement(DataReleasePolicy, null))),
47
+ sideColumn: (React.createElement(React.Fragment, null,
48
+ React.createElement(Details, { ...DetailsStory.args }))),
49
+ top: React.createElement(React.Fragment, null),
50
+ },
42
51
  };
@@ -2,12 +2,17 @@ import { Tooltip } from "@mui/material";
2
2
  import React from "react";
3
3
  import { useDownloadStatus } from "../../../../../../hooks/useDownloadStatus";
4
4
  import { useFileManifestState } from "../../../../../../hooks/useFileManifestState";
5
+ import { useLoginGuard } from "../../../../../../providers/loginGuard/hook";
5
6
  import { ButtonPrimary } from "../../../../../common/Button/components/ButtonPrimary/buttonPrimary";
6
7
  export const ExportButton = ({ Button = ButtonPrimary, children, onClick, }) => {
7
8
  const downloadStatus = useDownloadStatus();
8
9
  const { fileManifestState: { isLoading }, } = useFileManifestState();
10
+ // Prompt user for login before export, if required.
11
+ const { requireLogin } = useLoginGuard();
9
12
  return (React.createElement(Tooltip, { arrow: true, title: isLoading ? null : downloadStatus.message },
10
13
  React.createElement("span", null,
11
- React.createElement(Button, { disabled: isLoading || downloadStatus.disabled || downloadStatus.isLoading, onClick: onClick },
14
+ React.createElement(Button, { disabled: isLoading || downloadStatus.disabled || downloadStatus.isLoading, onClick: () => {
15
+ requireLogin(onClick);
16
+ } },
12
17
  React.createElement("span", null, children)))));
13
18
  };
@@ -1,5 +1,22 @@
1
- import { ComponentMeta } from "@storybook/react";
2
- import { ExportMethod } from "./exportMethod";
3
- declare const _default: ComponentMeta<typeof ExportMethod>;
4
- export default _default;
5
- export declare const ExportMethodStory: import("@storybook/types").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./exportMethod").ExportMethodProps>;
1
+ import { StoryObj } from "@storybook/react";
2
+ declare const meta: {
3
+ argTypes: {
4
+ buttonLabel: {
5
+ control: "text";
6
+ };
7
+ description: {
8
+ control: "text";
9
+ };
10
+ route: {
11
+ control: "text";
12
+ };
13
+ title: {
14
+ control: "text";
15
+ };
16
+ };
17
+ component: ({ buttonLabel, description, footnote, isAccessible, route, title, trackingId, }: import("./exportMethod").ExportMethodProps) => JSX.Element;
18
+ title: string;
19
+ };
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+ export declare const ExportMethodStory: Story;
@@ -1,6 +1,5 @@
1
- import React from "react";
2
1
  import { ExportMethod } from "./exportMethod";
3
- export default {
2
+ const meta = {
4
3
  argTypes: {
5
4
  buttonLabel: { control: "text" },
6
5
  description: { control: "text" },
@@ -10,11 +9,12 @@ export default {
10
9
  component: ExportMethod,
11
10
  title: "Components/Section/Export/ExportMethod",
12
11
  };
13
- const ExportMethodTemplate = (args) => (React.createElement(ExportMethod, { ...args }));
14
- export const ExportMethodStory = ExportMethodTemplate.bind({});
15
- ExportMethodStory.args = {
16
- buttonLabel: "Request curl Command",
17
- description: "Obtain a curl command for downloading the selected data.",
18
- route: "/request-curl-command",
19
- title: "Download Study Data and Metadata (Curl Command)",
12
+ export default meta;
13
+ export const ExportMethodStory = {
14
+ args: {
15
+ buttonLabel: "Request curl Command",
16
+ description: "Obtain a curl command for downloading the selected data.",
17
+ route: "/request-curl-command",
18
+ title: "Download Study Data and Metadata (Curl Command)",
19
+ },
20
20
  };
@@ -3,6 +3,7 @@ import copy from "copy-to-clipboard";
3
3
  import React, { useRef } from "react";
4
4
  import { useDownloadStatus } from "../../../../../../../../hooks/useDownloadStatus";
5
5
  import { useFileManifestDownload } from "../../../../../../../../hooks/useFileManifest/useFileManifestDownload";
6
+ import { useLoginGuard } from "../../../../../../../../providers/loginGuard/hook";
6
7
  import { ButtonGroup } from "../../../../../../../common/ButtonGroup/buttonGroup";
7
8
  import { ButtonGroupButton } from "../../../../../../../common/ButtonGroup/components/ButtonGroupButton/buttonGroupButton";
8
9
  import { ContentCopyIconSmall, DownloadIconSmall, } from "../../../../../../../common/CustomIcon/common/constants";
@@ -16,6 +17,8 @@ export const FileManifestDownload = ({ filters, }) => {
16
17
  const { fileName, isIdle, isLoading, manifestURL } = useFileManifestDownload(filters, disabled);
17
18
  const isInProgress = (isIdle || isLoading) && !disabled;
18
19
  const isReady = Boolean(manifestURL) || disabled;
20
+ // Prompt user for login before download and copy, if required.
21
+ const { requireLogin } = useLoginGuard();
19
22
  // Copies file manifest.
20
23
  const copyManifestURL = (url) => {
21
24
  if (!url)
@@ -39,8 +42,8 @@ export const FileManifestDownload = ({ filters, }) => {
39
42
  React.createElement(Tooltip, { arrow: true, title: message },
40
43
  React.createElement("span", null,
41
44
  React.createElement(ButtonGroup, { Buttons: [
42
- React.createElement(ButtonGroupButton, { key: "download", action: "Download file manifest", disabled: disabled, label: React.createElement(DownloadIconSmall, null), onClick: downloadManifestURL }),
43
- React.createElement(ButtonGroupButton, { key: "copy", action: "Copy file manifest", disabled: disabled, label: React.createElement(ContentCopyIconSmall, null), onClick: () => copyManifestURL(manifestURL) }),
45
+ React.createElement(ButtonGroupButton, { key: "download", action: "Download file manifest", disabled: disabled, label: React.createElement(DownloadIconSmall, null), onClick: () => requireLogin(downloadManifestURL) }),
46
+ React.createElement(ButtonGroupButton, { key: "copy", action: "Copy file manifest", disabled: disabled, label: React.createElement(ContentCopyIconSmall, null), onClick: () => requireLogin(() => copyManifestURL(manifestURL)) }),
44
47
  ] })))),
45
48
  React.createElement(TableCell, null, fileName))) : (React.createElement(TableCell, null, "The manifest is not available for this project.")))))))));
46
49
  };