@cccsaurora/howler-ui 3.1.0-dev.1493 → 3.1.0-dev.1607

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 (727) hide show
  1. package/api/action/execute.d.ts +1 -1
  2. package/api/action/index.d.ts +10 -6
  3. package/api/action/index.js +5 -9
  4. package/api/action/operations.js +2 -2
  5. package/api/analytic/comments/index.d.ts +4 -6
  6. package/api/analytic/comments/react.d.ts +2 -2
  7. package/api/analytic/favourite.d.ts +2 -4
  8. package/api/analytic/index.d.ts +7 -4
  9. package/api/analytic/index.js +2 -2
  10. package/api/analytic/notebooks/index.d.ts +2 -4
  11. package/api/analytic/owner.d.ts +1 -1
  12. package/api/auth/apikey.d.ts +2 -2
  13. package/api/auth/login.d.ts +2 -2
  14. package/api/configs/index.d.ts +1 -1
  15. package/api/dossier.d.ts +16 -0
  16. package/api/{dossier/index.js → dossier.js} +6 -4
  17. package/api/help.d.ts +2 -2
  18. package/api/hit/assign.d.ts +6 -2
  19. package/api/hit/comments/index.d.ts +4 -6
  20. package/api/hit/comments/react.d.ts +2 -2
  21. package/api/hit/index.d.ts +3 -8
  22. package/api/hit/labels.d.ts +2 -2
  23. package/api/hit/overwrite.d.ts +1 -1
  24. package/api/hit/transition.d.ts +1 -1
  25. package/api/index.d.ts +6 -6
  26. package/api/index.js +7 -6
  27. package/api/notebook/environments.d.ts +1 -1
  28. package/api/notebook/index.d.ts +1 -1
  29. package/api/overview/index.d.ts +4 -4
  30. package/api/search/action.d.ts +1 -1
  31. package/api/search/analytic.d.ts +1 -1
  32. package/api/search/case.d.ts +1 -1
  33. package/api/search/count/hit.d.ts +1 -1
  34. package/api/search/dossier.d.ts +1 -1
  35. package/api/search/eql/hit.d.ts +1 -1
  36. package/api/search/explain/hit.d.ts +1 -1
  37. package/api/search/facet/hit.d.ts +1 -1
  38. package/api/search/fields/hit.js +1 -2
  39. package/api/search/fields/user.js +2 -4
  40. package/api/search/grouped/hit.d.ts +1 -1
  41. package/api/search/grouped/user.js +3 -0
  42. package/api/search/histogram/hit.d.ts +1 -1
  43. package/api/search/hit.d.ts +1 -1
  44. package/api/search/overview.d.ts +1 -1
  45. package/api/search/sigma/hit.d.ts +1 -1
  46. package/api/search/template.d.ts +1 -1
  47. package/api/search/user.d.ts +30 -2
  48. package/api/search/user.js +3 -0
  49. package/api/search/view.d.ts +1 -1
  50. package/api/socket/viewers.d.ts +1 -1
  51. package/api/socket/viewers.js +1 -1
  52. package/api/template/index.d.ts +3 -3
  53. package/api/template/index.js +2 -2
  54. package/api/user/avatar/index.d.ts +1 -1
  55. package/api/user/groups.d.ts +1 -1
  56. package/api/user/index.d.ts +2 -2
  57. package/api/user/whoami.d.ts +1 -1
  58. package/api/utils/createPermissionsApi.d.ts +10 -0
  59. package/api/utils/createPermissionsApi.js +10 -0
  60. package/api/v2/case/index.d.ts +4 -4
  61. package/api/v2/case/items.d.ts +3 -3
  62. package/api/v2/case/rules.d.ts +3 -3
  63. package/api/v2/fuzzy.d.ts +1 -1
  64. package/api/v2/search/facet.d.ts +1 -1
  65. package/api/v2/search/index.d.ts +1 -1
  66. package/api/view/favourite.d.ts +2 -4
  67. package/api/view/index.d.ts +9 -5
  68. package/api/view/index.js +3 -1
  69. package/branding/AppBrand.d.ts +2 -2
  70. package/branding/AppBrand.js +4 -6
  71. package/components/app/App.js +248 -51
  72. package/components/app/AppContainer.js +1 -1
  73. package/components/app/drawers/ApiKeyDrawer.js +13 -5
  74. package/components/app/drawers/AssignUserDrawer.js +11 -4
  75. package/components/app/hooks/useMatchers.d.ts +3 -3
  76. package/components/app/hooks/useMatchers.js +12 -12
  77. package/components/app/hooks/useMatchers.test.js +15 -14
  78. package/components/app/hooks/useTitle.js +8 -7
  79. package/components/app/providers/AnalyticProvider.d.ts +1 -1
  80. package/components/app/providers/AnalyticProvider.js +7 -4
  81. package/components/app/providers/ApiConfigProvider.d.ts +2 -1
  82. package/components/app/providers/ApiConfigProvider.js +12 -10
  83. package/components/app/providers/AppDrawerProvider.js +2 -2
  84. package/components/app/providers/AvatarProvider.js +18 -11
  85. package/components/app/providers/FavouritesProvider.js +56 -86
  86. package/components/app/providers/FieldProvider.js +1 -1
  87. package/components/app/providers/GridColumnsProvider.d.ts +1 -1
  88. package/components/app/providers/GridColumnsProvider.js +17 -4
  89. package/components/app/providers/GridColumnsProvider.test.js +2 -1
  90. package/components/app/providers/LocalStorageProvider.d.ts +2 -2
  91. package/components/app/providers/LocalStorageProvider.js +4 -3
  92. package/components/app/providers/ModalProvider.js +8 -1
  93. package/components/app/providers/OverviewProvider.js +10 -2
  94. package/components/app/providers/ParameterProvider.d.ts +7 -7
  95. package/components/app/providers/ParameterProvider.js +42 -5
  96. package/components/app/providers/ParameterProvider.test.js +1 -0
  97. package/components/app/providers/RecordProvider.js +7 -1
  98. package/components/app/providers/RecordSearchProvider.d.ts +1 -2
  99. package/components/app/providers/RecordSearchProvider.js +32 -23
  100. package/components/app/providers/RecordSearchProvider.test.js +2 -1
  101. package/components/app/providers/SearchResponseProvider.d.ts +9 -6
  102. package/components/app/providers/SearchResponseProvider.js +37 -19
  103. package/components/app/providers/SearchResponseProvider.test.js +37 -11
  104. package/components/app/providers/SocketProvider.js +6 -4
  105. package/components/app/providers/UserListProvider.d.ts +1 -1
  106. package/components/app/providers/ViewProvider.d.ts +2 -2
  107. package/components/app/providers/ViewProvider.js +22 -12
  108. package/components/app/providers/ViewProvider.test.js +2 -2
  109. package/components/app/providers/contextUtils.d.ts +1 -0
  110. package/components/app/providers/contextUtils.js +3 -0
  111. package/components/elements/Comment.d.ts +1 -1
  112. package/components/elements/Comment.js +11 -9
  113. package/components/elements/ContextMenu.js +1 -1
  114. package/components/elements/ContextMenu.test.js +2 -2
  115. package/components/elements/EditRow.d.ts +9 -4
  116. package/components/elements/EditRow.js +5 -4
  117. package/components/elements/MarkdownEditor.js +1 -1
  118. package/components/elements/MembershipManagement.test.js +178 -0
  119. package/components/elements/ObjectDetails.js +6 -6
  120. package/components/elements/ThemedEditor.js +17 -17
  121. package/components/elements/UserList.d.ts +2 -0
  122. package/components/elements/UserList.js +26 -18
  123. package/components/elements/UserList.test.js +24 -1
  124. package/components/elements/addons/buttons/CustomButton.d.ts +1 -1
  125. package/components/elements/addons/buttons/CustomButton.js +2 -2
  126. package/components/elements/addons/buttons/CustomIconButton.d.ts +1 -1
  127. package/components/elements/addons/buttons/CustomIconButton.js +3 -3
  128. package/components/elements/addons/buttons/index.d.ts +1 -1
  129. package/components/elements/addons/layout/FlexOne.d.ts +2 -2
  130. package/components/elements/addons/layout/FlexOne.test.js +1 -0
  131. package/components/elements/addons/layout/FlexPort.d.ts +1 -1
  132. package/components/elements/addons/layout/FlexPort.js +9 -2
  133. package/components/elements/addons/layout/FlexVertical.d.ts +2 -2
  134. package/components/elements/addons/layout/FlexVertical.js +1 -1
  135. package/components/elements/addons/layout/vsbox/VSBox.d.ts +2 -2
  136. package/components/elements/addons/layout/vsbox/VSBox.js +5 -4
  137. package/components/elements/addons/layout/vsbox/VSBoxElement.d.ts +1 -1
  138. package/components/elements/addons/layout/vsbox/VSBoxHeader.js +4 -3
  139. package/components/elements/addons/lists/TuiList.d.ts +2 -2
  140. package/components/elements/addons/lists/TuiList.js +1 -1
  141. package/components/elements/addons/lists/TuiListBase.d.ts +2 -2
  142. package/components/elements/addons/lists/TuiListBase.js +4 -4
  143. package/components/elements/addons/lists/TuiListElement.d.ts +2 -2
  144. package/components/elements/addons/lists/TuiListElement.js +2 -2
  145. package/components/elements/addons/lists/TuiListMenu.d.ts +13 -37
  146. package/components/elements/addons/lists/TuiListMenu.js +8 -8
  147. package/components/elements/addons/lists/TuiListProvider.d.ts +2 -2
  148. package/components/elements/addons/lists/TuiListProvider.js +4 -4
  149. package/components/elements/addons/lists/hooks/useTuiListKeyboard.js +1 -1
  150. package/components/elements/addons/lists/table/TuiTable.d.ts +1 -1
  151. package/components/elements/addons/lists/table/TuiTable.js +1 -1
  152. package/components/elements/addons/lists/table/TuiTableBody.d.ts +1 -1
  153. package/components/elements/addons/lists/table/TuiTableBody.js +1 -1
  154. package/components/elements/addons/lists/table/TuiTableHead.d.ts +1 -1
  155. package/components/elements/addons/lists/table/TuiTableHead.js +1 -1
  156. package/components/elements/addons/lists/table/TuiTableHeader.d.ts +1 -1
  157. package/components/elements/addons/lists/table/TuiTableLayout.js +1 -1
  158. package/components/elements/addons/search/SearchPagination.d.ts +1 -1
  159. package/components/elements/addons/search/SearchPagination.test.js +1 -1
  160. package/components/elements/addons/search/SearchTotal.d.ts +1 -1
  161. package/components/elements/addons/search/phrase/Phrase.d.ts +2 -2
  162. package/components/elements/addons/search/phrase/Phrase.js +7 -7
  163. package/components/elements/addons/search/phrase/PhraseConsumer.d.ts +2 -2
  164. package/components/elements/addons/search/phrase/PhraseLexer.d.ts +1 -1
  165. package/components/elements/addons/search/phrase/PhraseLexer.js +6 -6
  166. package/components/elements/addons/search/phrase/WordLexer.test.js +1 -0
  167. package/components/elements/addons/search/phrase/index.d.ts +2 -2
  168. package/components/elements/addons/search/phrase/index.js +3 -2
  169. package/components/elements/addons/search/phrase/word/consumers/WhitespaceConsumer.d.ts +1 -1
  170. package/components/elements/addons/search/phrase/word/consumers/WhitespaceConsumer.js +1 -1
  171. package/components/elements/addons/search/phrase/word/consumers/WordConsumer.d.ts +1 -1
  172. package/components/elements/case/CaseCard.js +10 -4
  173. package/components/elements/case/CasePreview.js +1 -1
  174. package/components/elements/display/ActionButton.js +3 -1
  175. package/components/elements/display/ChipPopper.js +1 -1
  176. package/components/elements/display/ChipPopper.test.js +1 -0
  177. package/components/elements/display/Classification.js +6 -5
  178. package/components/elements/display/ClassificationChip.d.ts +2 -4
  179. package/components/elements/display/ClassificationChip.js +5 -3
  180. package/components/elements/display/DocumentationButton.js +1 -1
  181. package/components/elements/display/DocumentationButton.test.js +1 -1
  182. package/components/elements/display/HandlebarsMarkdown.js +2 -2
  183. package/components/elements/display/HowlerAvatar.d.ts +1 -0
  184. package/components/elements/display/HowlerAvatar.js +5 -4
  185. package/components/elements/display/HowlerAvatarHeader.js +2 -2
  186. package/components/elements/display/Image.test.js +1 -0
  187. package/components/elements/display/ItemManager.d.ts +6 -6
  188. package/components/elements/display/ItemManager.js +1 -1
  189. package/components/elements/display/Markdown.js +9 -3
  190. package/components/elements/display/Modal.js +3 -3
  191. package/components/elements/display/QueryResultText.js +1 -1
  192. package/components/elements/display/TextDivider.test.js +1 -0
  193. package/components/elements/display/TypingIndicator.d.ts +1 -1
  194. package/components/elements/display/UserPageWrapper.js +2 -2
  195. package/components/elements/display/handlebars/helpers.js +1 -1
  196. package/components/elements/display/json/JSONViewer.js +2 -2
  197. package/components/elements/display/markdownPlugins/tabs.js +4 -0
  198. package/components/elements/display/modals/CreateActionModal.js +1 -1
  199. package/components/elements/display/modals/RationaleModal.js +1 -2
  200. package/components/elements/display/modals/RationaleModal.test.js +9 -5
  201. package/components/elements/event/EventPreview.js +1 -1
  202. package/components/elements/hit/HitActions.js +5 -7
  203. package/components/elements/hit/HitBanner.js +4 -16
  204. package/components/elements/hit/HitBanner.test.js +11 -20
  205. package/components/elements/hit/HitLabels.js +23 -13
  206. package/components/elements/hit/HitLinks.js +4 -4
  207. package/components/elements/hit/HitNotebooks.js +28 -10
  208. package/components/elements/hit/HitOutline.js +9 -15
  209. package/components/elements/hit/HitOutline.test.js +5 -5
  210. package/components/elements/hit/HitOverview.js +3 -3
  211. package/components/elements/hit/HitPreview.d.ts +1 -1
  212. package/components/elements/hit/HitPreview.js +6 -7
  213. package/components/elements/hit/HitSummary.js +8 -8
  214. package/components/elements/hit/PivotTooltip.js +1 -1
  215. package/components/elements/hit/actions/ButtonActions.js +2 -2
  216. package/components/elements/hit/actions/DropdownActions.js +4 -4
  217. package/components/elements/hit/aggregate/HitGraph.js +28 -11
  218. package/components/elements/hit/elements/AnalyticLink.js +2 -2
  219. package/components/elements/hit/elements/AnalyticLink.test.js +1 -1
  220. package/components/elements/hit/elements/Assigned.js +1 -1
  221. package/components/elements/hit/elements/Assigned.test.js +1 -1
  222. package/components/elements/hit/elements/EscalationChip.js +2 -2
  223. package/components/elements/hit/elements/HitTimestamp.js +2 -2
  224. package/components/elements/hit/grid/AddColumnModal.js +2 -2
  225. package/components/elements/hit/grid/ColumnHeader.js +1 -1
  226. package/components/elements/hit/grid/RecordRow.js +1 -1
  227. package/components/elements/hit/grid/RecordTable.d.ts +4 -3
  228. package/components/elements/hit/grid/RecordTable.js +6 -6
  229. package/components/elements/hit/related/PivotLink.js +2 -2
  230. package/components/elements/hit/related/RelatedIcon.js +2 -2
  231. package/components/elements/hit/related/RelatedLink.js +1 -1
  232. package/components/elements/hit/related/RelatedRecords.js +1 -1
  233. package/components/elements/membership/Members.d.ts +6 -0
  234. package/components/elements/membership/Members.js +14 -0
  235. package/components/elements/membership/MembershipManagement.d.ts +9 -0
  236. package/components/elements/membership/MembershipManagement.js +119 -0
  237. package/components/elements/membership/types.d.ts +7 -0
  238. package/components/elements/membership/utils.d.ts +2 -0
  239. package/components/elements/membership/utils.js +6 -0
  240. package/components/elements/record/RecordComments.js +16 -10
  241. package/components/elements/record/RecordContextMenu.d.ts +2 -2
  242. package/components/elements/record/RecordContextMenu.js +11 -5
  243. package/components/elements/record/RecordContextMenu.test.js +14 -6
  244. package/components/elements/record/RecordRelated.js +2 -2
  245. package/components/elements/search/FuzzySearchBar.js +1 -1
  246. package/components/elements/view/LayoutToggle.d.ts +1 -1
  247. package/components/elements/view/ViewTitle.js +3 -4
  248. package/components/hooks/useHitActions.d.ts +1 -1
  249. package/components/hooks/useHitActions.js +25 -15
  250. package/components/hooks/useLocalStorage.d.ts +1 -1
  251. package/components/hooks/useLocalStorage.js +1 -1
  252. package/components/hooks/useLocalStorageItem.d.ts +11 -1
  253. package/components/hooks/useLocalStorageItem.js +7 -5
  254. package/components/hooks/useLocalStorageItem.test.js +23 -0
  255. package/components/hooks/useMyAccessibility.d.ts +7 -0
  256. package/components/hooks/useMyAccessibility.js +21 -0
  257. package/components/hooks/useMyApi.d.ts +1 -1
  258. package/components/hooks/useMyApi.js +4 -4
  259. package/components/hooks/useMyChart.d.ts +46 -48
  260. package/components/hooks/useMyChart.js +30 -9
  261. package/components/hooks/useMyCookies.d.ts +3 -0
  262. package/components/hooks/useMyCookies.js +8 -0
  263. package/components/hooks/useMyLocalStorage.d.ts +8 -2
  264. package/components/hooks/useMyLocalStorage.js +1 -1
  265. package/components/hooks/useMyPreferences.d.ts +1 -1
  266. package/components/hooks/useMyPreferences.js +93 -127
  267. package/components/hooks/useMyRouter.d.ts +2 -0
  268. package/components/hooks/useMyRouter.js +24 -0
  269. package/components/hooks/useMySearch.d.ts +1 -1
  270. package/components/hooks/useMySearch.js +17 -7
  271. package/components/hooks/useMySnackbar.js +1 -1
  272. package/components/hooks/useMyTheme.d.ts +1 -1
  273. package/components/hooks/useMyTheme.js +13 -8
  274. package/components/hooks/useMyTheme.test.js +11 -6
  275. package/components/hooks/useMyUser.d.ts +1 -1
  276. package/components/hooks/useMyUser.js +6 -5
  277. package/components/hooks/useMyUserFunctions.d.ts +2 -2
  278. package/components/hooks/useMyUserFunctions.js +14 -10
  279. package/components/hooks/useMyUserList.d.ts +1 -1
  280. package/components/hooks/useMyUtils.js +1 -1
  281. package/components/hooks/useParamState.js +5 -3
  282. package/components/hooks/useParamState.test.js +1 -1
  283. package/components/hooks/useRecordSelection.d.ts +4 -3
  284. package/components/hooks/useRecordSelection.js +5 -5
  285. package/components/hooks/useScrollRestoration.js +3 -3
  286. package/components/logins/Login.d.ts +1 -1
  287. package/components/logins/Login.js +4 -6
  288. package/components/logins/auth/OAuthLogin.js +1 -1
  289. package/components/logins/auth/UserPassLogin.d.ts +1 -1
  290. package/components/logins/hooks/useLogin.js +10 -6
  291. package/components/routes/403.js +1 -1
  292. package/components/routes/403.test.js +7 -3
  293. package/components/routes/404.js +1 -1
  294. package/components/routes/404.test.js +7 -3
  295. package/components/routes/ErrorBoundary.d.ts +2 -2
  296. package/components/routes/ErrorBoundary.js +2 -2
  297. package/components/routes/ErrorBoundary.test.js +1 -4
  298. package/components/routes/ErrorOccured.js +1 -1
  299. package/components/routes/ErrorOccured.test.js +7 -3
  300. package/components/routes/Logout.js +3 -4
  301. package/components/routes/Logout.test.js +12 -11
  302. package/components/routes/action/edit/ActionEditor.js +38 -30
  303. package/components/routes/action/shared/ActionReportDisplay.js +1 -1
  304. package/components/routes/action/shared/OperationEntry.js +2 -2
  305. package/components/routes/action/shared/OperationStep.js +12 -10
  306. package/components/routes/action/useMyActionFunctions.d.ts +3 -3
  307. package/components/routes/action/useMyActionFunctions.js +13 -13
  308. package/components/routes/action/view/ActionDetails.d.ts +1 -1
  309. package/components/routes/action/view/ActionDetails.js +46 -26
  310. package/components/routes/action/view/ActionSearch.js +11 -10
  311. package/components/routes/action/view/Integrations.js +2 -2
  312. package/components/routes/action/view/markdown/integrations.en.md.js +1 -1
  313. package/components/routes/action/view/markdown/integrations.fr.md.js +1 -1
  314. package/components/routes/admin/users/UserEditor.js +21 -8
  315. package/components/routes/admin/users/UserSearch.js +10 -9
  316. package/components/routes/advanced/QueryBuilder.js +17 -11
  317. package/components/routes/advanced/luceneCompletionProvider.js +42 -21
  318. package/components/routes/analytics/AnalyticComments.js +19 -14
  319. package/components/routes/analytics/AnalyticDetails.d.ts +1 -1
  320. package/components/routes/analytics/AnalyticDetails.js +20 -16
  321. package/components/routes/analytics/AnalyticHitComments.js +13 -6
  322. package/components/routes/analytics/AnalyticHitComments.test.js +5 -4
  323. package/components/routes/analytics/AnalyticNotebooks.js +5 -5
  324. package/components/routes/analytics/AnalyticOverview.js +28 -15
  325. package/components/routes/analytics/AnalyticOverviews.js +2 -2
  326. package/components/routes/analytics/AnalyticSearch.js +11 -10
  327. package/components/routes/analytics/AnalyticTemplates.js +3 -3
  328. package/components/routes/analytics/TriageSettings.d.ts +1 -1
  329. package/components/routes/analytics/TriageSettings.js +1 -1
  330. package/components/routes/analytics/widgets/Assessment.js +1 -1
  331. package/components/routes/analytics/widgets/Created.js +9 -9
  332. package/components/routes/analytics/widgets/Escalation.js +3 -3
  333. package/components/routes/analytics/widgets/Stacked.js +5 -5
  334. package/components/routes/analytics/widgets/Status.js +2 -2
  335. package/components/routes/cases/CaseViewer.js +1 -1
  336. package/components/routes/cases/CaseViewer.test.js +2 -2
  337. package/components/routes/cases/Cases.d.ts +1 -1
  338. package/components/routes/cases/Cases.js +8 -7
  339. package/components/routes/cases/constants.d.ts +3 -3
  340. package/components/routes/cases/detail/AlertPanel.js +1 -1
  341. package/components/routes/cases/detail/AlertPanel.test.js +4 -6
  342. package/components/routes/cases/detail/CaseDashboard.js +8 -4
  343. package/components/routes/cases/detail/CaseDashboard.test.js +2 -2
  344. package/components/routes/cases/detail/CaseDetails.js +7 -2
  345. package/components/routes/cases/detail/CaseDetails.test.js +1 -1
  346. package/components/routes/cases/detail/CaseObservables.js +5 -4
  347. package/components/routes/cases/detail/CaseObservables.test.js +1 -1
  348. package/components/routes/cases/detail/CaseOverview.js +2 -2
  349. package/components/routes/cases/detail/CaseRules.js +10 -6
  350. package/components/routes/cases/detail/CaseRules.test.js +2 -2
  351. package/components/routes/cases/detail/CaseSearch.js +5 -5
  352. package/components/routes/cases/detail/CaseSearch.test.js +2 -2
  353. package/components/routes/cases/detail/CaseSidebar.js +12 -7
  354. package/components/routes/cases/detail/CaseSidebar.test.js +5 -6
  355. package/components/routes/cases/detail/CaseTask.js +27 -15
  356. package/components/routes/cases/detail/CaseTask.test.js +8 -1
  357. package/components/routes/cases/detail/CaseTimeline.js +8 -8
  358. package/components/routes/cases/detail/CaseTimeline.test.js +6 -6
  359. package/components/routes/cases/detail/CreateRuleDialog.js +4 -4
  360. package/components/routes/cases/detail/CreateRuleDialog.test.js +2 -2
  361. package/components/routes/cases/detail/ItemPage.js +3 -3
  362. package/components/routes/cases/detail/MarkdownPage.test.js +0 -4
  363. package/components/routes/cases/detail/RelatedCasePanel.js +1 -1
  364. package/components/routes/cases/detail/RelatedCasePanel.test.js +4 -6
  365. package/components/routes/cases/detail/TaskPanel.js +8 -8
  366. package/components/routes/cases/detail/TaskPanel.test.js +3 -3
  367. package/components/routes/cases/detail/aggregates/CaseAggregate.js +1 -1
  368. package/components/routes/cases/detail/aggregates/SourceAggregate.js +3 -3
  369. package/components/routes/cases/detail/observables/Observable.js +4 -5
  370. package/components/routes/cases/detail/observables/Observable.test.js +1 -1
  371. package/components/routes/cases/detail/observables/ObservableTable.js +3 -3
  372. package/components/routes/cases/detail/observables/ObservableTable.test.js +1 -1
  373. package/components/routes/cases/detail/sidebar/CaseFolder.js +24 -20
  374. package/components/routes/cases/detail/sidebar/CaseFolder.test.js +1 -1
  375. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.js +4 -2
  376. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.js +3 -2
  377. package/components/routes/cases/detail/sidebar/FolderEntry.js +3 -3
  378. package/components/routes/cases/detail/sidebar/FolderEntry.test.js +3 -3
  379. package/components/routes/cases/detail/sidebar/types.d.ts +1 -1
  380. package/components/routes/cases/detail/sidebar/utils.js +1 -1
  381. package/components/routes/cases/detail/sidebar/utils.test.js +8 -8
  382. package/components/routes/cases/detail/utils.d.ts +1 -1
  383. package/components/routes/cases/detail/utils.js +3 -2
  384. package/components/routes/cases/hooks/useCase.js +14 -2
  385. package/components/routes/cases/modals/AddRecordToCaseModal.test.js +1 -1
  386. package/components/routes/cases/modals/AddToCaseModal.d.ts +1 -1
  387. package/components/routes/cases/modals/AddToCaseModal.js +2 -2
  388. package/components/routes/cases/modals/CreateCaseModal.test.js +1 -1
  389. package/components/routes/cases/modals/ResolveModal.js +8 -5
  390. package/components/routes/cases/modals/ResolveModal.test.js +5 -5
  391. package/components/routes/cases/modals/hooks.js +1 -2
  392. package/components/routes/cases/modals/types.d.ts +1 -1
  393. package/components/routes/cases/search/CaseAssigneeFilter.js +1 -1
  394. package/components/routes/cases/search/CaseAssigneeFilter.test.js +8 -3
  395. package/components/routes/cases/search/CaseStatusFilter.test.js +1 -0
  396. package/components/routes/cases/utils.d.ts +0 -1
  397. package/components/routes/cases/utils.js +4 -13
  398. package/components/routes/dossiers/DossierCard.js +3 -3
  399. package/components/routes/dossiers/DossierCard.test.js +6 -6
  400. package/components/routes/dossiers/DossierEditor.js +61 -25
  401. package/components/routes/dossiers/DossierEditor.test.js +16 -9
  402. package/components/routes/dossiers/Dossiers.d.ts +1 -1
  403. package/components/routes/dossiers/Dossiers.js +6 -5
  404. package/components/routes/dossiers/LeadEditor.d.ts +1 -1
  405. package/components/routes/dossiers/LeadEditor.js +2 -2
  406. package/components/routes/dossiers/LeadForm.js +2 -2
  407. package/components/routes/dossiers/PivotForm.d.ts +1 -1
  408. package/components/routes/dossiers/PivotForm.js +10 -9
  409. package/components/routes/events/EventViewer.js +1 -1
  410. package/components/routes/help/ActionDocumentation.js +2 -2
  411. package/components/routes/help/ActionIntroductionDocumentation.js +2 -2
  412. package/components/routes/help/ApiDocumentation.js +3 -4
  413. package/components/routes/help/AuthDocumentation.js +1 -1
  414. package/components/routes/help/ClientDocumentation.js +1 -1
  415. package/components/routes/help/Help.d.ts +1 -1
  416. package/components/routes/help/Help.js +5 -4
  417. package/components/routes/help/HitDocumentation.js +3 -3
  418. package/components/routes/help/HitLabelsDocumentation.js +12 -12
  419. package/components/routes/help/HitLinksDocumentation.js +2 -2
  420. package/components/routes/help/HitSchemaDocumentation.js +14 -8
  421. package/components/routes/help/NotebookDocumentation.js +1 -1
  422. package/components/routes/help/OverviewDocumentation.js +1 -1
  423. package/components/routes/help/RetentionDocumentation.js +3 -3
  424. package/components/routes/help/SearchDocumentation.js +6 -4
  425. package/components/routes/help/TemplateDocumentation.js +2 -2
  426. package/components/routes/help/ViewDocumentation.js +1 -1
  427. package/components/routes/help/markdown/en/views.md.js +1 -1
  428. package/components/routes/help/markdown/fr/views.md.js +1 -1
  429. package/components/routes/hits/search/InformationPane.js +8 -8
  430. package/components/routes/hits/search/QuerySettings.js +1 -1
  431. package/components/routes/hits/search/QuerySettings.test.js +8 -4
  432. package/components/routes/hits/search/RecordBrowser.js +12 -9
  433. package/components/routes/hits/search/RecordQuery.js +13 -10
  434. package/components/routes/hits/search/SearchPane.js +2 -3
  435. package/components/routes/hits/search/ViewLink.js +4 -4
  436. package/components/routes/hits/search/ViewLink.test.js +1 -0
  437. package/components/routes/hits/search/grid/RecordGrid.js +1 -1
  438. package/components/routes/hits/search/shared/CustomSort.js +3 -2
  439. package/components/routes/hits/search/shared/CustomSpan.js +9 -1
  440. package/components/routes/hits/search/shared/HitFilter.js +8 -3
  441. package/components/routes/hits/search/shared/HitSort.js +8 -6
  442. package/components/routes/hits/search/shared/IndexPicker.js +1 -1
  443. package/components/routes/hits/search/shared/LayoutSettings.js +1 -1
  444. package/components/routes/hits/search/shared/SearchActionMenu.d.ts +1 -1
  445. package/components/routes/hits/search/shared/SearchActionMenu.js +1 -1
  446. package/components/routes/hits/search/shared/SearchSpan.js +1 -1
  447. package/components/routes/hits/view/HitViewer.js +21 -11
  448. package/components/routes/hits/view/HitViewer.test.js +2 -2
  449. package/components/routes/home/AddNewCard.d.ts +2 -1
  450. package/components/routes/home/AddNewCard.js +7 -4
  451. package/components/routes/home/AnalyticCard.js +3 -3
  452. package/components/routes/home/EntryWrapper.js +1 -1
  453. package/components/routes/home/ViewCard.js +11 -7
  454. package/components/routes/home/ViewCard.test.js +3 -6
  455. package/components/routes/home/index.js +20 -17
  456. package/components/routes/overviews/OverviewCard.js +6 -2
  457. package/components/routes/overviews/OverviewViewer.d.ts +1 -1
  458. package/components/routes/overviews/OverviewViewer.js +48 -39
  459. package/components/routes/overviews/Overviews.d.ts +1 -1
  460. package/components/routes/overviews/Overviews.js +7 -6
  461. package/components/routes/overviews/markdownExtendedTokenProvider.test.js +1 -0
  462. package/components/routes/overviews/startingTemplate.js +1 -1
  463. package/components/routes/settings/ProfileSection.d.ts +1 -1
  464. package/components/routes/settings/ProfileSection.js +2 -2
  465. package/components/routes/settings/SecuritySection.d.ts +1 -1
  466. package/components/routes/settings/SecuritySection.js +2 -2
  467. package/components/routes/settings/Settings.js +6 -6
  468. package/components/routes/templates/TemplateCard.js +1 -1
  469. package/components/routes/templates/TemplateEditor.d.ts +1 -1
  470. package/components/routes/templates/TemplateEditor.js +3 -3
  471. package/components/routes/templates/TemplateViewer.d.ts +1 -1
  472. package/components/routes/templates/TemplateViewer.js +54 -52
  473. package/components/routes/templates/Templates.d.ts +1 -1
  474. package/components/routes/templates/Templates.js +10 -9
  475. package/components/routes/views/ViewComposer.js +38 -30
  476. package/components/routes/views/Views.d.ts +2 -1
  477. package/components/routes/views/Views.js +20 -14
  478. package/i18n.js +4 -0
  479. package/locales/en/translation.json +10 -0
  480. package/locales/fr/translation.json +10 -0
  481. package/models/entities/HowlerUser.d.ts +1 -1
  482. package/models/entities/generated/Action.d.ts +3 -1
  483. package/models/entities/generated/ApiType.d.ts +2 -3
  484. package/models/entities/generated/Dossier.d.ts +2 -0
  485. package/models/entities/generated/HowlerDossier.d.ts +2 -0
  486. package/models/entities/generated/Item.d.ts +2 -2
  487. package/models/entities/generated/Settings.d.ts +1 -1
  488. package/models/entities/generated/View.d.ts +2 -0
  489. package/package.json +102 -118
  490. package/plugins/HowlerPlugin.d.ts +9 -50
  491. package/plugins/HowlerPlugin.js +7 -113
  492. package/plugins/clue/Provider.js +2 -2
  493. package/plugins/clue/components/ClueLeadForm.js +2 -2
  494. package/plugins/clue/components/CluePivot.js +6 -7
  495. package/plugins/clue/components/CluePivotForm.js +26 -15
  496. package/plugins/clue/components/ClueTypography.js +2 -2
  497. package/plugins/clue/helpers.js +5 -5
  498. package/plugins/clue/index.d.ts +2 -2
  499. package/plugins/clue/index.js +1 -1
  500. package/plugins/clue/setup.js +1 -1
  501. package/plugins/clue/utils.d.ts +1 -1
  502. package/plugins/store.d.ts +26 -43
  503. package/plugins/store.js +2 -15
  504. package/rest/AxiosClient.js +3 -3
  505. package/rest/FetchClient.d.ts +1 -1
  506. package/rest/FetchClient.js +8 -5
  507. package/rest/FetchClient.test.js +7 -4
  508. package/rest/index.d.ts +4 -3
  509. package/setupTests.d.ts +3 -0
  510. package/tests/MockLocalStorage.js +2 -1
  511. package/tests/mocks.d.ts +2 -2
  512. package/tests/mocks.js +3 -3
  513. package/tests/server-handlers.js +1 -1
  514. package/utils/Throttler.js +1 -1
  515. package/utils/actionUtils.d.ts +1 -1
  516. package/utils/actionUtils.js +10 -6
  517. package/utils/classificationParser.js +56 -63
  518. package/utils/constants.d.ts +0 -17
  519. package/utils/constants.js +1 -18
  520. package/utils/exampleHit.d.ts +2 -0
  521. package/utils/exampleHit.js +18 -0
  522. package/utils/localStorage.d.ts +2 -2
  523. package/utils/localStorage.js +1 -1
  524. package/utils/menuUtils.d.ts +3 -89
  525. package/utils/menuUtils.js +66 -227
  526. package/utils/menuUtils.test.js +45 -181
  527. package/utils/sessionStorage.js +1 -1
  528. package/utils/sessionStorage.test.js +1 -0
  529. package/utils/stringUtils.d.ts +1 -1
  530. package/utils/utils.d.ts +30 -6
  531. package/utils/utils.js +66 -9
  532. package/utils/utils.test.js +1 -0
  533. package/utils/xsrf.d.ts +1 -1
  534. package/utils/xsrf.js +5 -10
  535. package/api/dossier/hit.d.ts +0 -2
  536. package/api/dossier/hit.js +0 -7
  537. package/api/dossier/index.d.ts +0 -9
  538. package/commons/components/app/AppConfigs.d.ts +0 -137
  539. package/commons/components/app/AppConstants.d.ts +0 -10
  540. package/commons/components/app/AppConstants.js +0 -10
  541. package/commons/components/app/AppContexts.d.ts +0 -105
  542. package/commons/components/app/AppContexts.js +0 -21
  543. package/commons/components/app/AppDefaults.d.ts +0 -6
  544. package/commons/components/app/AppDefaults.js +0 -40
  545. package/commons/components/app/AppNotificationService.d.ts +0 -6
  546. package/commons/components/app/AppNotificationService.js +0 -1
  547. package/commons/components/app/AppProvider.d.ts +0 -15
  548. package/commons/components/app/AppProvider.js +0 -41
  549. package/commons/components/app/AppSearchService.d.ts +0 -21
  550. package/commons/components/app/AppSearchService.js +0 -1
  551. package/commons/components/app/AppSkeleton.d.ts +0 -5
  552. package/commons/components/app/AppSkeleton.js +0 -152
  553. package/commons/components/app/AppUserService.d.ts +0 -17
  554. package/commons/components/app/AppUserService.js +0 -1
  555. package/commons/components/app/hooks/index.d.ts +0 -18
  556. package/commons/components/app/hooks/index.js +0 -18
  557. package/commons/components/app/hooks/useApp.d.ts +0 -1
  558. package/commons/components/app/hooks/useApp.js +0 -5
  559. package/commons/components/app/hooks/useAppBanner.d.ts +0 -1
  560. package/commons/components/app/hooks/useAppBanner.js +0 -6
  561. package/commons/components/app/hooks/useAppBar.d.ts +0 -1
  562. package/commons/components/app/hooks/useAppBar.js +0 -5
  563. package/commons/components/app/hooks/useAppBarHeight.d.ts +0 -2
  564. package/commons/components/app/hooks/useAppBarHeight.js +0 -22
  565. package/commons/components/app/hooks/useAppBarScrollTrigger.d.ts +0 -1
  566. package/commons/components/app/hooks/useAppBarScrollTrigger.js +0 -7
  567. package/commons/components/app/hooks/useAppBreadcrumbs.d.ts +0 -1
  568. package/commons/components/app/hooks/useAppBreadcrumbs.js +0 -5
  569. package/commons/components/app/hooks/useAppConfigs.d.ts +0 -59
  570. package/commons/components/app/hooks/useAppConfigs.js +0 -44
  571. package/commons/components/app/hooks/useAppLanguage.d.ts +0 -6
  572. package/commons/components/app/hooks/useAppLanguage.js +0 -17
  573. package/commons/components/app/hooks/useAppLayout.d.ts +0 -1
  574. package/commons/components/app/hooks/useAppLayout.js +0 -5
  575. package/commons/components/app/hooks/useAppLeftNav.d.ts +0 -1
  576. package/commons/components/app/hooks/useAppLeftNav.js +0 -5
  577. package/commons/components/app/hooks/useAppLogo.d.ts +0 -1
  578. package/commons/components/app/hooks/useAppLogo.js +0 -8
  579. package/commons/components/app/hooks/useAppNotification.d.ts +0 -1
  580. package/commons/components/app/hooks/useAppNotification.js +0 -5
  581. package/commons/components/app/hooks/useAppQuickSearch.d.ts +0 -1
  582. package/commons/components/app/hooks/useAppQuickSearch.js +0 -5
  583. package/commons/components/app/hooks/useAppSearchService.d.ts +0 -2
  584. package/commons/components/app/hooks/useAppSearchService.js +0 -5
  585. package/commons/components/app/hooks/useAppSitemap.d.ts +0 -16
  586. package/commons/components/app/hooks/useAppSitemap.js +0 -70
  587. package/commons/components/app/hooks/useAppSwitcher.d.ts +0 -1
  588. package/commons/components/app/hooks/useAppSwitcher.js +0 -5
  589. package/commons/components/app/hooks/useAppTheme.d.ts +0 -8
  590. package/commons/components/app/hooks/useAppTheme.js +0 -12
  591. package/commons/components/app/hooks/useAppUser.d.ts +0 -2
  592. package/commons/components/app/hooks/useAppUser.js +0 -5
  593. package/commons/components/app/providers/AppBarProvider.d.ts +0 -10
  594. package/commons/components/app/providers/AppBarProvider.js +0 -24
  595. package/commons/components/app/providers/AppBreadcrumbsProvider.d.ts +0 -6
  596. package/commons/components/app/providers/AppBreadcrumbsProvider.js +0 -43
  597. package/commons/components/app/providers/AppLayoutProvider.d.ts +0 -6
  598. package/commons/components/app/providers/AppLayoutProvider.js +0 -73
  599. package/commons/components/app/providers/AppLeftNavProvider.d.ts +0 -6
  600. package/commons/components/app/providers/AppLeftNavProvider.js +0 -22
  601. package/commons/components/app/providers/AppNotificationProvider.d.ts +0 -6
  602. package/commons/components/app/providers/AppNotificationProvider.js +0 -31
  603. package/commons/components/app/providers/AppQuickSearchProvider.d.ts +0 -8
  604. package/commons/components/app/providers/AppQuickSearchProvider.js +0 -19
  605. package/commons/components/app/providers/AppSearchServiceProvider.d.ts +0 -6
  606. package/commons/components/app/providers/AppSearchServiceProvider.js +0 -46
  607. package/commons/components/app/providers/AppSnackbarProvider.d.ts +0 -3
  608. package/commons/components/app/providers/AppSnackbarProvider.js +0 -15
  609. package/commons/components/app/providers/AppSwitcherProvider.d.ts +0 -6
  610. package/commons/components/app/providers/AppSwitcherProvider.js +0 -10
  611. package/commons/components/app/providers/AppUserProvider.d.ts +0 -8
  612. package/commons/components/app/providers/AppUserProvider.js +0 -12
  613. package/commons/components/breadcrumbs/BreadcrumbIcon.d.ts +0 -6
  614. package/commons/components/breadcrumbs/BreadcrumbIcon.js +0 -9
  615. package/commons/components/breadcrumbs/BreadcrumbLastItem.d.ts +0 -7
  616. package/commons/components/breadcrumbs/BreadcrumbLastItem.js +0 -19
  617. package/commons/components/breadcrumbs/BreadcrumbLinkItem.d.ts +0 -7
  618. package/commons/components/breadcrumbs/BreadcrumbLinkItem.js +0 -20
  619. package/commons/components/breadcrumbs/BreadcrumbList.d.ts +0 -11
  620. package/commons/components/breadcrumbs/BreadcrumbList.js +0 -44
  621. package/commons/components/breadcrumbs/Breadcrumbs.d.ts +0 -5
  622. package/commons/components/breadcrumbs/Breadcrumbs.js +0 -31
  623. package/commons/components/display/AppAvatar.d.ts +0 -8
  624. package/commons/components/display/AppAvatar.js +0 -18
  625. package/commons/components/display/AppInfoPanel.d.ts +0 -5
  626. package/commons/components/display/AppInfoPanel.js +0 -17
  627. package/commons/components/display/AppListEmpty.d.ts +0 -2
  628. package/commons/components/display/AppListEmpty.js +0 -5
  629. package/commons/components/display/AppToc.d.ts +0 -20
  630. package/commons/components/display/AppToc.js +0 -98
  631. package/commons/components/display/hooks/useAppColor.d.ts +0 -5
  632. package/commons/components/display/hooks/useAppColor.js +0 -10
  633. package/commons/components/leftnav/LeftNavDrawer.d.ts +0 -3
  634. package/commons/components/leftnav/LeftNavDrawer.js +0 -99
  635. package/commons/components/leftnav/LeftNavGroup.d.ts +0 -8
  636. package/commons/components/leftnav/LeftNavGroup.js +0 -55
  637. package/commons/components/leftnav/LeftNavItem.d.ts +0 -11
  638. package/commons/components/leftnav/LeftNavItem.js +0 -29
  639. package/commons/components/notification/FeedModels.d.ts +0 -64
  640. package/commons/components/notification/FeedModels.js +0 -94
  641. package/commons/components/notification/Notification.d.ts +0 -10
  642. package/commons/components/notification/Notification.js +0 -95
  643. package/commons/components/notification/elements/NotificationCloseButton.d.ts +0 -3
  644. package/commons/components/notification/elements/NotificationCloseButton.js +0 -6
  645. package/commons/components/notification/elements/NotificationContainer.d.ts +0 -16
  646. package/commons/components/notification/elements/NotificationContainer.js +0 -29
  647. package/commons/components/notification/elements/NotificationEndOfPage.d.ts +0 -5
  648. package/commons/components/notification/elements/NotificationEndOfPage.js +0 -36
  649. package/commons/components/notification/elements/NotificationError.d.ts +0 -2
  650. package/commons/components/notification/elements/NotificationError.js +0 -10
  651. package/commons/components/notification/elements/NotificationHeader.d.ts +0 -8
  652. package/commons/components/notification/elements/NotificationHeader.js +0 -18
  653. package/commons/components/notification/elements/NotificationItems.d.ts +0 -12
  654. package/commons/components/notification/elements/NotificationItems.js +0 -12
  655. package/commons/components/notification/elements/NotificationSkeleton.d.ts +0 -2
  656. package/commons/components/notification/elements/NotificationSkeleton.js +0 -12
  657. package/commons/components/notification/elements/NotificationTopNavButton.d.ts +0 -9
  658. package/commons/components/notification/elements/NotificationTopNavButton.js +0 -9
  659. package/commons/components/notification/elements/item/NotificationItem.d.ts +0 -5
  660. package/commons/components/notification/elements/item/NotificationItem.js +0 -25
  661. package/commons/components/notification/elements/item/NotificationItemAuthor.d.ts +0 -5
  662. package/commons/components/notification/elements/item/NotificationItemAuthor.js +0 -31
  663. package/commons/components/notification/elements/item/NotificationItemContent.d.ts +0 -3
  664. package/commons/components/notification/elements/item/NotificationItemContent.js +0 -9
  665. package/commons/components/notification/elements/item/NotificationItemDate.d.ts +0 -3
  666. package/commons/components/notification/elements/item/NotificationItemDate.js +0 -10
  667. package/commons/components/notification/elements/item/NotificationItemImage.d.ts +0 -4
  668. package/commons/components/notification/elements/item/NotificationItemImage.js +0 -8
  669. package/commons/components/notification/elements/item/NotificationItemTag.d.ts +0 -4
  670. package/commons/components/notification/elements/item/NotificationItemTag.js +0 -12
  671. package/commons/components/notification/elements/item/NotificationItemTitle.d.ts +0 -3
  672. package/commons/components/notification/elements/item/NotificationItemTitle.js +0 -15
  673. package/commons/components/notification/index.d.ts +0 -2
  674. package/commons/components/notification/index.js +0 -2
  675. package/commons/components/pages/PageCardCentered.d.ts +0 -5
  676. package/commons/components/pages/PageCardCentered.js +0 -30
  677. package/commons/components/pages/PageCenter.d.ts +0 -9
  678. package/commons/components/pages/PageCenter.js +0 -20
  679. package/commons/components/pages/PageContent.d.ts +0 -8
  680. package/commons/components/pages/PageContent.js +0 -8
  681. package/commons/components/pages/PageFullScreen.d.ts +0 -11
  682. package/commons/components/pages/PageFullScreen.js +0 -40
  683. package/commons/components/pages/PageFullWidth.d.ts +0 -11
  684. package/commons/components/pages/PageFullWidth.js +0 -7
  685. package/commons/components/pages/PageHeader.d.ts +0 -23
  686. package/commons/components/pages/PageHeader.js +0 -27
  687. package/commons/components/pages/hooks/usePageProps.d.ts +0 -24
  688. package/commons/components/pages/hooks/usePageProps.js +0 -19
  689. package/commons/components/search/AppSearch.d.ts +0 -1
  690. package/commons/components/search/AppSearch.js +0 -135
  691. package/commons/components/search/AppSearchInput.d.ts +0 -12
  692. package/commons/components/search/AppSearchInput.js +0 -35
  693. package/commons/components/search/AppSearchResult.d.ts +0 -5
  694. package/commons/components/search/AppSearchResult.js +0 -28
  695. package/commons/components/topnav/AppBar.d.ts +0 -6
  696. package/commons/components/topnav/AppBar.js +0 -80
  697. package/commons/components/topnav/AppName.d.ts +0 -5
  698. package/commons/components/topnav/AppName.js +0 -31
  699. package/commons/components/topnav/AppSwitcher.d.ts +0 -3
  700. package/commons/components/topnav/AppSwitcher.js +0 -44
  701. package/commons/components/topnav/Notifications.d.ts +0 -2
  702. package/commons/components/topnav/Notifications.js +0 -8
  703. package/commons/components/topnav/ThemeSelection.d.ts +0 -3
  704. package/commons/components/topnav/ThemeSelection.js +0 -33
  705. package/commons/components/topnav/ThemeSelectionIcon.d.ts +0 -2
  706. package/commons/components/topnav/ThemeSelectionIcon.js +0 -16
  707. package/commons/components/topnav/UserProfile.d.ts +0 -6
  708. package/commons/components/topnav/UserProfile.js +0 -71
  709. package/commons/components/utils/hooks/useClipboard.d.ts +0 -3
  710. package/commons/components/utils/hooks/useClipboard.js +0 -29
  711. package/commons/components/utils/hooks/useEnv.d.ts +0 -1
  712. package/commons/components/utils/hooks/useEnv.js +0 -11
  713. package/commons/components/utils/hooks/useFullscreenStatus.d.ts +0 -2
  714. package/commons/components/utils/hooks/useFullscreenStatus.js +0 -41
  715. package/commons/components/utils/hooks/useGravatar.d.ts +0 -2
  716. package/commons/components/utils/hooks/useGravatar.js +0 -9
  717. package/commons/components/utils/hooks/useLocalStorage.d.ts +0 -12
  718. package/commons/components/utils/hooks/useLocalStorage.js +0 -52
  719. package/commons/components/utils/hooks/useLocalStorageItem.d.ts +0 -14
  720. package/commons/components/utils/hooks/useLocalStorageItem.js +0 -39
  721. package/commons/components/utils/hooks/useThemeBuilder.d.ts +0 -7
  722. package/commons/components/utils/hooks/useThemeBuilder.js +0 -48
  723. package/commons/components/utils/keyboard.d.ts +0 -30
  724. package/commons/components/utils/keyboard.js +0 -50
  725. package/components/hooks/useMySitemap.d.ts +0 -3
  726. package/components/hooks/useMySitemap.js +0 -219
  727. /package/{commons/components/app/AppConfigs.js → components/elements/MembershipManagement.test.d.ts} +0 -0
@@ -1,5 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import AppInfoPanel, {} from '@cccsaurora/howler-ui/commons/components/display/AppInfoPanel';
3
- export default function AppListEmpty(props) {
4
- return _jsx(AppInfoPanel, { ...props, i18nKey: "app.list.empty" });
5
- }
@@ -1,20 +0,0 @@
1
- import React, { type ReactNode } from 'react';
2
- export type AppTocItem = {
3
- id: string;
4
- subItems?: AppTocItem[];
5
- is_admin?: boolean;
6
- };
7
- export type AppTocElementProps = {
8
- translation: string;
9
- item: AppTocItem;
10
- };
11
- type AppTocProps = {
12
- children: ReactNode;
13
- translation: string;
14
- items: AppTocItem[];
15
- titleI18nKey?: string;
16
- topI18nKey?: string;
17
- };
18
- declare const AppToc: ({ children, translation, items, titleI18nKey, topI18nKey }: AppTocProps) => import("react/jsx-runtime").JSX.Element;
19
- declare const _default: React.MemoExoticComponent<typeof AppToc>;
20
- export default _default;
@@ -1,98 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { styled, useTheme } from '@mui/material';
3
- import { useAppBar } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppBar';
4
- import { useAppLayout } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppLayout';
5
- import { useAppUser } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppUser';
6
- import React, { memo, useEffect } from 'react';
7
- import { useTranslation } from 'react-i18next';
8
- import { Link, useLocation } from 'react-router-dom';
9
- const TocRoot = styled('div')(({ theme }) => ({
10
- display: 'flex',
11
- '.tocBar': {
12
- display: 'none',
13
- paddingLeft: '16px',
14
- [theme.breakpoints.up('md')]: {
15
- display: 'block'
16
- }
17
- },
18
- '.toc': {
19
- fontSize: '0.875rem',
20
- listStyle: 'none',
21
- paddingInlineStart: 0,
22
- [theme.breakpoints.only('md')]: {
23
- width: '124px'
24
- },
25
- [theme.breakpoints.up('lg')]: {
26
- width: '164px'
27
- },
28
- '& li': {
29
- color: theme.palette.text.primary,
30
- marginLeft: theme.spacing(1),
31
- marginBottom: theme.spacing(0.5),
32
- paddingLeft: theme.spacing(1.25),
33
- paddingRight: theme.spacing(1)
34
- },
35
- '& .active': {
36
- borderLeft: `solid ${theme.palette.primary.main} 2px`,
37
- paddingLeft: theme.spacing(1),
38
- color: theme.palette.primary.main
39
- },
40
- '& li:hover': {
41
- borderLeft: `solid ${theme.palette.text.disabled} 1px`,
42
- paddingLeft: '9px',
43
- color: theme.palette.text.disabled
44
- },
45
- '& li > a': {
46
- color: 'inherit',
47
- display: 'block',
48
- textDecoration: 'none',
49
- width: '100%'
50
- }
51
- },
52
- '.ttop': {
53
- paddingTop: theme.spacing(2.5),
54
- marginLeft: theme.spacing(2.25),
55
- color: theme.palette.text.primary,
56
- '& a': {
57
- color: 'inherit',
58
- display: 'block',
59
- textDecoration: 'none'
60
- },
61
- '& :hover': {
62
- color: theme.palette.text.disabled
63
- }
64
- }
65
- }));
66
- const AppTocElement = ({ translation, item }) => {
67
- const location = useLocation();
68
- const { t } = useTranslation([translation]);
69
- const currentHash = location.hash && location.hash !== '' ? location.hash.substring(1) : null;
70
- const active = currentHash && currentHash.startsWith(item.id) ? 'active' : null;
71
- const { user: currentUser } = useAppUser();
72
- return ((!item.is_admin || (currentUser.is_admin && item.is_admin)) && (_jsxs(_Fragment, { children: [_jsx("li", { className: active, children: _jsx(Link, { to: `#${item.id}`, target: "_self", children: t(item.id) }) }), active && item.subItems && (_jsx("ul", { className: "toc", style: { fontSize: 'smaller', paddingInlineStart: '8px' }, children: item.subItems.map(itm => (_jsx(AppTocElement, { item: itm, translation: translation }, itm.id))) }))] })));
73
- };
74
- const AppToc = ({ children, translation, items, titleI18nKey = 'toc', topI18nKey = 'top' }) => {
75
- const { autoHide: autoHideAppbar } = useAppBar();
76
- const { current: currentLayout } = useAppLayout();
77
- const theme = useTheme();
78
- const location = useLocation();
79
- const { t } = useTranslation([translation]);
80
- useEffect(() => {
81
- if (location.hash && location.hash !== '') {
82
- const scrollElement = document.getElementById(location.hash.substring(1));
83
- if (scrollElement) {
84
- // If element exists already, use native scrollIntoView.
85
- scrollElement.scrollIntoView(true);
86
- }
87
- else {
88
- // eslint-disable-next-line no-console
89
- console.log('[WARN] Trying to scroll to unknown ID:', location.hash);
90
- }
91
- }
92
- }, [location.hash]);
93
- return (_jsxs(TocRoot, { id: "top", children: [_jsx("div", { id: "content", children: children }), _jsx("div", { id: "toc", className: "tocBar", children: _jsxs("div", { style: {
94
- position: 'sticky',
95
- top: theme.spacing(autoHideAppbar && currentLayout !== 'top' ? 5 : 13)
96
- }, children: [titleI18nKey && _jsx("div", { style: { fontSize: '1.25rem', marginLeft: '18px' }, children: t(titleI18nKey) }), _jsxs("ul", { className: "toc", children: [items && items.map(item => _jsx(AppTocElement, { item: item, translation: translation }, item.id)), topI18nKey && (_jsx("div", { className: "ttop", children: _jsx(Link, { to: "#top", target: "_self", children: t(topI18nKey) }) }))] })] }) })] }));
97
- };
98
- export default memo(AppToc);
@@ -1,5 +0,0 @@
1
- import { colors } from '@mui/material';
2
- type MuiColorType = keyof typeof colors;
3
- type MuiColorVariant = keyof typeof colors.blue;
4
- export default function useAppColor(color?: MuiColorType, lightVariant?: MuiColorVariant, darkVariant?: MuiColorVariant): "#0d47a1" | "#1565c0" | "#1976d2" | "#1e88e5" | "#2196f3" | "#2962ff" | "#2979ff" | "#42a5f5" | "#448aff" | "#64b5f6" | "#82b1ff" | "#90caf9" | "#bbdefb" | "#e3f2fd";
5
- export {};
@@ -1,10 +0,0 @@
1
- import { colors } from '@mui/material';
2
- import { useAppTheme } from '@cccsaurora/howler-ui/commons/components/app/hooks';
3
- import { useMemo } from 'react';
4
- export default function useAppColor(color = 'grey', lightVariant = 100, darkVariant = 900) {
5
- const { isDark } = useAppTheme();
6
- return useMemo(() => {
7
- // eslint-disable-next-line import/namespace
8
- return colors[color][isDark ? darkVariant : lightVariant];
9
- }, [isDark, color, lightVariant, darkVariant]);
10
- }
@@ -1,3 +0,0 @@
1
- declare const LeftNavDrawer: () => import("react/jsx-runtime").JSX.Element;
2
- declare const _default: import("react").MemoExoticComponent<typeof LeftNavDrawer>;
3
- export default _default;
@@ -1,99 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable jsx-a11y/no-static-element-interactions */
3
- import { ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon } from '@mui/icons-material';
4
- import { Box, ClickAwayListener, Divider, Drawer, List, ListItemButton, ListItemIcon, ListItemText, Toolbar, Tooltip, styled, useMediaQuery, useTheme } from '@mui/material';
5
- import { useAppConfigs, useAppLayout, useAppLeftNav } from '@cccsaurora/howler-ui/commons/components/app/hooks';
6
- import LeftNavGroup from '@cccsaurora/howler-ui/commons/components/leftnav/LeftNavGroup';
7
- import LeftNavItem from '@cccsaurora/howler-ui/commons/components/leftnav/LeftNavItem';
8
- import { memo, useCallback } from 'react';
9
- import { useTranslation } from 'react-i18next';
10
- import AppName from '../topnav/AppName';
11
- const StyledDrawer = styled(Drawer, { shouldForwardProp: prop => prop !== 'open' && prop !== 'width' })(({ theme, open, width }) => ({
12
- width,
13
- flexShrink: 0,
14
- heigth: '100%',
15
- whiteSpace: 'nowrap',
16
- '@media print': {
17
- display: 'none !important'
18
- },
19
- transition: theme.transitions.create('width', {
20
- easing: theme.transitions.easing.sharp,
21
- duration: theme.transitions.duration.enteringScreen
22
- }),
23
- ...(!open && {
24
- transition: theme.transitions.create('width', {
25
- easing: theme.transitions.easing.sharp,
26
- duration: theme.transitions.duration.leavingScreen
27
- }),
28
- overflowX: 'hidden',
29
- width: 0,
30
- [theme.breakpoints.up('sm')]: {
31
- width: theme.spacing(7)
32
- },
33
- [theme.breakpoints.only('xs')]: {
34
- border: 'none'
35
- }
36
- }),
37
- '& .MuiDrawer-paper': {
38
- width,
39
- transition: theme.transitions.create('width', {
40
- easing: theme.transitions.easing.sharp,
41
- duration: theme.transitions.duration.enteringScreen
42
- }),
43
- ...(!open && {
44
- transition: theme.transitions.create('width', {
45
- easing: theme.transitions.easing.sharp,
46
- duration: theme.transitions.duration.leavingScreen
47
- }),
48
- overflowX: 'hidden',
49
- width: 0,
50
- [theme.breakpoints.up('sm')]: {
51
- width: theme.spacing(7)
52
- },
53
- [theme.breakpoints.only('xs')]: {
54
- border: 'none'
55
- }
56
- })
57
- }
58
- }));
59
- const LeftNavDrawer = () => {
60
- const { t } = useTranslation();
61
- const theme = useTheme();
62
- const { preferences } = useAppConfigs();
63
- const layout = useAppLayout();
64
- const leftnav = useAppLeftNav();
65
- const isSmDown = useMediaQuery(theme.breakpoints.down('sm'));
66
- const isTopLayout = layout.current === 'top';
67
- const onCloseDrawerIfOpen = useCallback(() => {
68
- if (isSmDown && leftnav.open) {
69
- leftnav.setOpen(false);
70
- }
71
- }, [isSmDown, leftnav]);
72
- const header = (_jsxs("div", { children: [_jsx(Toolbar, { sx: {
73
- [theme.breakpoints.up('xs')]: {
74
- padding: 0
75
- }
76
- }, children: _jsx(AppName, {}) }), !isTopLayout && _jsx(Divider, {})] }));
77
- const hide = (_jsx(List, { disablePadding: true, children: _jsxs(ListItemButton, { onClick: leftnav.toggle, children: [_jsx(ListItemIcon, { children: leftnav.open ? _jsx(ChevronLeftIcon, {}) : _jsx(ChevronRightIcon, {}) }), _jsx(ListItemText, { primary: t('drawer.collapse') })] }, "chevron") }));
78
- return (_jsx(ClickAwayListener, { mouseEvent: "onMouseDown", touchEvent: "onTouchStart", onClickAway: onCloseDrawerIfOpen, children: _jsxs(StyledDrawer, { variant: "permanent", style: { height: '100%' }, width: preferences.leftnav.width, open: leftnav.open, children: [leftnav.open ? (header) : (_jsx(Tooltip, { title: preferences.appName, "aria-label": preferences.appName, placement: "right", children: header })), _jsx(List, { disablePadding: true, children: leftnav.elements.map((e, i) => {
79
- if (e.type === 'item') {
80
- const item = e.element;
81
- return _jsx(LeftNavItem, { item: item, onClick: isSmDown && onCloseDrawerIfOpen }, item.id);
82
- }
83
- if (e.type === 'group') {
84
- const item = e.element;
85
- return _jsx(LeftNavGroup, { group: item, onItemClick: isSmDown && onCloseDrawerIfOpen }, item.id);
86
- }
87
- if (e.type === 'divider') {
88
- return _jsx(Divider, {}, `divider-${i}`);
89
- }
90
- return null;
91
- }) }), leftnav.elements?.length > 0 && _jsx(Divider, {}), leftnav.open ? (hide) : (_jsx(Tooltip, { title: t('drawer.expand'), "aria-label": t('drawer.expand'), placement: "right", children: hide })), _jsx(Box, { sx: {
92
- height: '100%',
93
- width: '100%',
94
- '&:hover': {
95
- cursor: 'pointer'
96
- }
97
- }, onClick: leftnav.toggle })] }) }));
98
- };
99
- export default memo(LeftNavDrawer);
@@ -1,8 +0,0 @@
1
- import type { AppLeftNavGroup } from '@cccsaurora/howler-ui/commons/components/app/AppConfigs';
2
- interface LeftNavGroupProps {
3
- group: AppLeftNavGroup;
4
- onItemClick: () => void;
5
- }
6
- declare const LeftNavGroup: ({ group, onItemClick }: LeftNavGroupProps) => import("react/jsx-runtime").JSX.Element;
7
- declare const _default: import("react").MemoExoticComponent<typeof LeftNavGroup>;
8
- export default _default;
@@ -1,55 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronRight, ExpandLess, ExpandMore } from '@mui/icons-material';
3
- import { Collapse, List, ListItemButton, ListItemIcon, ListItemText, Popover, Tooltip, useTheme } from '@mui/material';
4
- import { useAppConfigs, useAppLeftNav, useAppUser } from '@cccsaurora/howler-ui/commons/components/app/hooks';
5
- import LeftNavItem from '@cccsaurora/howler-ui/commons/components/leftnav/LeftNavItem';
6
- import { memo, useCallback, useEffect, useState } from 'react';
7
- import { useTranslation } from 'react-i18next';
8
- const GroupListItem = memo(({ group, leftNavOpen, collapseOpen, popoverOpen, onClick }) => {
9
- const { t } = useTranslation();
10
- const title = group.i18nKey ? t(group.i18nKey) : group.title;
11
- const theme = useTheme();
12
- return (_jsx(Tooltip, { title: !leftNavOpen ? title : '', "aria-label": title, placement: "right", children: _jsxs(ListItemButton, { onClick: onClick, selected: popoverOpen, children: [!leftNavOpen && (_jsx(ChevronRight, { sx: {
13
- position: 'absolute',
14
- right: 0,
15
- width: 16,
16
- height: 16,
17
- transform: popoverOpen && 'rotate(180deg)',
18
- transition: theme.transitions.create('transform', {
19
- easing: theme.transitions.easing.sharp,
20
- duration: popoverOpen
21
- ? theme.transitions.duration.leavingScreen
22
- : theme.transitions.duration.enteringScreen
23
- })
24
- }, fontSize: "inherit" })), _jsx(ListItemIcon, { children: group.icon }), _jsx(ListItemText, { primary: title }), collapseOpen ? _jsx(ExpandLess, { color: "action" }) : _jsx(ExpandMore, { color: "action" })] }, group.id) }));
25
- });
26
- const LeftNavGroup = ({ group, onItemClick }) => {
27
- const user = useAppUser();
28
- const leftnav = useAppLeftNav();
29
- const { preferences } = useAppConfigs();
30
- const [popoverTarget, setPopoverTarget] = useState();
31
- const [collapseOpen, setCollapseOpen] = useState(false);
32
- const groupHasIcons = group.items.some(i => !!i.icon);
33
- const handleClick = useCallback((event) => {
34
- if (leftnav.open) {
35
- setCollapseOpen(!collapseOpen);
36
- }
37
- else {
38
- setPopoverTarget(event ? event.currentTarget : undefined);
39
- }
40
- }, [leftnav.open, collapseOpen]);
41
- const onClosePopover = useCallback(() => setPopoverTarget(undefined), []);
42
- useEffect(() => {
43
- if (!leftnav.open && collapseOpen) {
44
- setCollapseOpen(false);
45
- }
46
- }, [leftnav.open, collapseOpen]);
47
- return user.validateProps(group.userPropValidators) ? (_jsxs("div", { children: [_jsx(GroupListItem, { group: group, leftNavOpen: leftnav.open, collapseOpen: collapseOpen, onClick: handleClick, popoverOpen: !!popoverTarget }), _jsx(Collapse, { in: collapseOpen, timeout: "auto", unmountOnExit: true, children: _jsx(List, { component: "div", disablePadding: true, children: group.items.map(i => (_jsx(LeftNavItem, { context: "group", item: i, hideIcon: preferences.leftnav.hideNestedIcons, onClick: onItemClick }, i.id))) }) }), _jsx(Popover, { open: !!popoverTarget, onClose: onClosePopover, onClick: onClosePopover, anchorEl: popoverTarget, anchorOrigin: {
48
- vertical: 'top',
49
- horizontal: 'right'
50
- }, transformOrigin: {
51
- vertical: 'top',
52
- horizontal: 'left'
53
- }, children: _jsx(List, { disablePadding: true, children: group.items.map(i => (_jsx(LeftNavItem, { popover: true, context: "group", item: i, hideIcon: preferences.leftnav.hideNestedIcons || !groupHasIcons, onClick: onItemClick }, i.id))) }) })] })) : null;
54
- };
55
- export default memo(LeftNavGroup);
@@ -1,11 +0,0 @@
1
- import type { AppLeftNavItem } from '@cccsaurora/howler-ui/commons/components/app/AppConfigs';
2
- type LeftNavItemProps = {
3
- item: AppLeftNavItem;
4
- popover?: boolean;
5
- context?: 'item' | 'group';
6
- hideIcon?: boolean;
7
- onClick: () => void;
8
- };
9
- declare const LeftNavItem: ({ item, context, popover, hideIcon, onClick }: LeftNavItemProps) => import("react/jsx-runtime").JSX.Element;
10
- declare const _default: import("react").MemoExoticComponent<typeof LeftNavItem>;
11
- export default _default;
@@ -1,29 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, ListItem, ListItemButton, ListItemIcon, ListItemText, Tooltip, useTheme } from '@mui/material';
3
- import { useAppLeftNav, useAppUser } from '@cccsaurora/howler-ui/commons/components/app/hooks';
4
- import { memo, useMemo } from 'react';
5
- import { useTranslation } from 'react-i18next';
6
- import { Link } from 'react-router-dom';
7
- const LeftNavItemInner = ({ item, context, popover, hideIcon, label, leftnavOpen }) => {
8
- const theme = useTheme();
9
- const nested = item.nested !== undefined ? item.nested : context === 'group';
10
- const showIcon = useMemo(() => item.icon && !hideIcon, [item, hideIcon]);
11
- const spacer = useMemo(() => {
12
- const showSpacer = !popover && leftnavOpen && nested;
13
- return showSpacer && _jsx(Box, { id: "spacer", sx: { marginLeft: theme.spacing(showIcon ? 2 : 7) } });
14
- }, [nested, showIcon, theme, leftnavOpen, popover]);
15
- const itemIcon = useMemo(() => {
16
- const showNested = !popover && context === 'group' && nested;
17
- return (showIcon && (_jsx(ListItemIcon, { id: "icon", sx: { minWidth: showNested || popover ? 40 : undefined }, children: item.icon })));
18
- }, [nested, showIcon, item.icon, context, popover]);
19
- return (_jsxs(_Fragment, { children: [spacer, itemIcon, _jsx(ListItemText, { primary: label })] }));
20
- };
21
- const LeftNavItem = ({ item, context = 'item', popover = false, hideIcon = false, onClick }) => {
22
- const { t } = useTranslation();
23
- const user = useAppUser();
24
- const leftnav = useAppLeftNav();
25
- const { text, i18nKey, nested, route, render, userPropValidators } = item;
26
- const label = i18nKey ? t(i18nKey) : text;
27
- return user.validateProps(userPropValidators) ? (render ? (_jsx(ListItem, { disablePadding: true, children: render(leftnav.open) })) : (_jsx(Tooltip, { title: !leftnav.open && !nested ? label : '', "aria-label": label, placement: "right", children: _jsx(ListItemButton, { component: route ? Link : null, to: route, onClick: onClick ? onClick : null, children: _jsx(LeftNavItemInner, { hideIcon: hideIcon, context: context, popover: popover, item: item, label: label, leftnavOpen: leftnav.open }) }, text) }))) : null;
28
- };
29
- export default memo(LeftNavItem);
@@ -1,64 +0,0 @@
1
- export type SystemMessage = {
2
- user: string;
3
- title: string;
4
- severity: 'success' | 'info' | 'warning' | 'error';
5
- message: string;
6
- };
7
- export type FeedItem = {
8
- id: string;
9
- url?: string;
10
- external_url?: string;
11
- title?: string;
12
- content_html?: string;
13
- content_text?: string;
14
- content_md?: string;
15
- summary?: string;
16
- image?: string;
17
- banner_image?: string;
18
- date_published?: Date;
19
- date_modified?: Date;
20
- authors?: Array<FeedAuthor>;
21
- tags?: Array<'new' | 'current' | 'dev' | 'service' | 'blog'>;
22
- language?: string;
23
- attachments?: Array<FeedAttachment>;
24
- _isNew: boolean;
25
- };
26
- export type FeedAuthor = {
27
- name?: string;
28
- url?: string;
29
- avatar?: string;
30
- };
31
- export type FeedAttachment = {
32
- url: string;
33
- mime_type: string;
34
- title?: string;
35
- size_in_bytes?: number;
36
- duration_in_seconds?: number;
37
- };
38
- export type Feed = {
39
- version: string;
40
- title: string;
41
- home_page_url?: string;
42
- feed_url?: string;
43
- description?: string;
44
- user_comment?: string;
45
- next_url?: string;
46
- icon?: string;
47
- favicon?: string;
48
- authors?: Array<FeedAuthor>;
49
- language?: string;
50
- expired?: boolean;
51
- hubs?: Array<{
52
- type: string;
53
- url: string;
54
- }>;
55
- items: Array<FeedItem>;
56
- };
57
- export declare const DEFAULT_FEED: Feed;
58
- export declare const DEFAULT_FEED_ITEM: FeedItem;
59
- export declare const DEFAULT_FEED_ATTACHMENT: FeedAttachment;
60
- export declare const DEFAULT_FEED_AUTHOR: any;
61
- export declare function parseFeedAttachments(attachments: any): FeedAttachment[];
62
- export declare function parseFeedAuthors(authors: any): FeedAuthor[];
63
- export declare function parseFeedItems(items: any): FeedItem[];
64
- export declare function parseFeed(feed: any): Feed;
@@ -1,94 +0,0 @@
1
- export const DEFAULT_FEED = {
2
- version: null,
3
- title: null,
4
- home_page_url: null,
5
- feed_url: null,
6
- description: null,
7
- user_comment: null,
8
- next_url: null,
9
- icon: null,
10
- favicon: null,
11
- authors: [],
12
- language: null,
13
- expired: false,
14
- hubs: [],
15
- items: []
16
- };
17
- export const DEFAULT_FEED_ITEM = {
18
- id: null,
19
- url: null,
20
- external_url: null,
21
- title: null,
22
- content_html: null,
23
- content_text: null,
24
- summary: null,
25
- image: null,
26
- banner_image: null,
27
- date_published: new Date(0),
28
- date_modified: new Date(0),
29
- authors: [],
30
- tags: [],
31
- language: null,
32
- attachments: [],
33
- _isNew: false
34
- };
35
- export const DEFAULT_FEED_ATTACHMENT = {
36
- url: null,
37
- mime_type: null,
38
- title: null,
39
- size_in_bytes: 0,
40
- duration_in_seconds: 0
41
- };
42
- export const DEFAULT_FEED_AUTHOR = {
43
- name: null,
44
- url: null,
45
- avatar: null
46
- };
47
- function decodeHTML(html) {
48
- if (!html || typeof html !== 'string')
49
- return '';
50
- var txt = document.createElement('textarea');
51
- txt.innerHTML = html;
52
- return txt.value;
53
- }
54
- export function parseFeedAttachments(attachments) {
55
- return attachments && Array.isArray(attachments)
56
- ? attachments
57
- .map(attachment => attachment && typeof attachment === 'object' ? { ...DEFAULT_FEED_ATTACHMENT, ...attachment } : null)
58
- .filter(attachment => attachment)
59
- : [];
60
- }
61
- export function parseFeedAuthors(authors) {
62
- return authors && Array.isArray(authors)
63
- ? authors
64
- .map(author => (author && typeof author === 'object' ? { ...DEFAULT_FEED_AUTHOR, ...author } : null))
65
- .filter(author => author)
66
- : [];
67
- }
68
- export function parseFeedItems(items) {
69
- return items && Array.isArray(items)
70
- ? items
71
- .map(item => item && typeof item === 'object'
72
- ? {
73
- ...DEFAULT_FEED_ITEM,
74
- ...item,
75
- date_published: new Date(item.date_published),
76
- date_modified: new Date(item.date_modified),
77
- authors: parseFeedAuthors(item?.authors),
78
- attachments: parseFeedAttachments(item?.attachments),
79
- content_html: decodeHTML(item?.content_html)
80
- }
81
- : null)
82
- .filter(item => item)
83
- : [];
84
- }
85
- export function parseFeed(feed) {
86
- return feed && typeof feed === 'object'
87
- ? {
88
- ...DEFAULT_FEED,
89
- ...feed,
90
- items: parseFeedItems(feed?.items),
91
- authors: parseFeedAuthors(feed?.authors)
92
- }
93
- : null;
94
- }
@@ -1,10 +0,0 @@
1
- import { type FC } from 'react';
2
- type Props = {
3
- urls: string[];
4
- notificationItem?: FC;
5
- inDrawer?: boolean;
6
- openIfNew?: boolean;
7
- maxDrawerWidth?: string;
8
- };
9
- export declare const Notification: FC<Props>;
10
- export {};
@@ -1,95 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { parseFeed } from '@cccsaurora/howler-ui/commons/components/notification';
3
- import { NotificationContainer } from '@cccsaurora/howler-ui/commons/components/notification/elements/NotificationContainer';
4
- import { NotificationTopNavButton } from '@cccsaurora/howler-ui/commons/components/notification/elements/NotificationTopNavButton';
5
- import { NotificationItem } from '@cccsaurora/howler-ui/commons/components/notification/elements/item/NotificationItem';
6
- import { memo, useCallback, useEffect, useRef, useState } from 'react';
7
- export const Notification = memo(({ urls = null, notificationItem = NotificationItem, inDrawer = true, openIfNew = false, maxDrawerWidth = '500px' }) => {
8
- const [drawer, setDrawer] = useState(false);
9
- const [feeds, setFeeds] = useState(null);
10
- const [notifications, setNotifications] = useState(null);
11
- const [status, setStatus] = useState('loading');
12
- const lastTimeOpen = useRef(new Date(0));
13
- const storageKey = 'notification.lastTimeOpen';
14
- const onDrawerOpen = useCallback(() => {
15
- setDrawer(true);
16
- lastTimeOpen.current = new Date();
17
- }, []);
18
- const onDrawerClose = useCallback(() => {
19
- setDrawer(false);
20
- localStorage.setItem(storageKey, JSON.stringify(lastTimeOpen.current.valueOf()));
21
- setNotifications(v => v.map((n) => ({ ...n, _isNew: n.date_published.valueOf() > lastTimeOpen.current.valueOf() })));
22
- }, [storageKey]);
23
- const loadLastTimeOpen = useCallback(() => {
24
- const data = localStorage.getItem(storageKey);
25
- if (!data)
26
- return;
27
- const value = JSON.parse(data);
28
- if (typeof value !== 'number')
29
- return;
30
- lastTimeOpen.current = new Date(value);
31
- }, [storageKey]);
32
- const fetchFeed = useCallback((url = '') => new Promise(async (resolve) => {
33
- const response = (await fetch(url, { method: 'GET' }).catch(err =>
34
- // eslint-disable-next-line no-console
35
- console.error(`Notification Area: error caused by URL "${err}`)));
36
- if (!response || response.status >= 400) {
37
- resolve({});
38
- return;
39
- }
40
- const textResponse = await response.text();
41
- try {
42
- const jsonFeed = JSON.parse(textResponse);
43
- resolve(parseFeed(jsonFeed));
44
- }
45
- catch {
46
- resolve({});
47
- }
48
- return;
49
- }), []);
50
- const fetchFeeds = useCallback((_urls = []) => new Promise(async (resolve) => {
51
- if (!_urls || _urls.length === 0) {
52
- resolve([]);
53
- return [];
54
- }
55
- const _feeds = await Promise.all(_urls.map(url => fetchFeed(url)));
56
- resolve(_feeds.filter(f => f.items));
57
- }), [fetchFeed]);
58
- useEffect(() => {
59
- loadLastTimeOpen();
60
- if (!urls || !Array.isArray(urls) || urls.length === 0)
61
- return;
62
- fetchFeeds(urls).then(_feeds => {
63
- _feeds = _feeds.map(f => ({ ...f, items: f?.items?.map(i => ({ ...i, external_url: f.feed_url })) }));
64
- setFeeds(Object.fromEntries(_feeds.map(f => [f?.feed_url, { ...f, items: [] }])));
65
- const _notifs = _feeds
66
- .flatMap(f => f?.items)
67
- .filter(n => n.date_published > new Date(new Date().setFullYear(new Date().getFullYear() - 1)))
68
- .sort((a, b) => b.date_published.valueOf() - a.date_published.valueOf())
69
- .map(n => ({ ...n, _isNew: n.date_published.valueOf() > lastTimeOpen.current.valueOf() }));
70
- setNotifications(_notifs);
71
- if (openIfNew && _notifs?.some(n => n._isNew)) {
72
- onDrawerOpen();
73
- }
74
- });
75
- }, [fetchFeeds, loadLastTimeOpen, onDrawerOpen, openIfNew, urls]);
76
- useEffect(() => {
77
- if (feeds === undefined) {
78
- setStatus('error');
79
- }
80
- else if (feeds && notifications) {
81
- if (notifications.length === 0) {
82
- setStatus('error');
83
- }
84
- else {
85
- setStatus('ready');
86
- }
87
- }
88
- else {
89
- setStatus('loading');
90
- }
91
- return () => setStatus('loading');
92
- }, [feeds, notifications]);
93
- return (urls &&
94
- urls.length !== 0 && (_jsxs(_Fragment, { children: [inDrawer && (_jsx(NotificationTopNavButton, { drawer: drawer, newItems: notifications?.filter(n => n._isNew).length, onDrawerOpen: onDrawerOpen, onDrawerClose: onDrawerClose })), _jsx(NotificationContainer, { status: status, notifications: notifications, drawer: drawer, onDrawerOpen: onDrawerOpen, onDrawerClose: onDrawerClose, ItemComponent: notificationItem, inDrawer: inDrawer, maxDrawerWidth: maxDrawerWidth })] })));
95
- });
@@ -1,3 +0,0 @@
1
- import { type NotificationProps } from '@cccsaurora/howler-ui/commons/components/notification/elements/NotificationContainer';
2
- import { type FC } from 'react';
3
- export declare const NotificationCloseButton: FC<NotificationProps>;
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { CloseOutlined } from '@mui/icons-material';
3
- import { IconButton } from '@mui/material';
4
- import {} from '@cccsaurora/howler-ui/commons/components/notification/elements/NotificationContainer';
5
- import { memo } from 'react';
6
- export const NotificationCloseButton = memo(({ drawer = false, onDrawerOpen = () => null, onDrawerClose = () => null }) => (_jsx("div", { children: _jsx(IconButton, { onClick: () => (drawer ? onDrawerClose() : onDrawerOpen()), size: "large", children: _jsx(CloseOutlined, { fontSize: "medium" }) }) })));
@@ -1,16 +0,0 @@
1
- import { type ItemComponentProps } from '@cccsaurora/howler-ui/commons/components/app/AppNotificationService';
2
- import { type FeedItem } from '@cccsaurora/howler-ui/commons/components/notification';
3
- import { type FC } from 'react';
4
- export type NotificationProps = {
5
- notifications: FeedItem[];
6
- ItemComponent: FC<ItemComponentProps>;
7
- drawer?: boolean;
8
- initialPageSize?: number;
9
- loadingPageDelta?: number;
10
- onDrawerOpen?: () => void;
11
- onDrawerClose?: () => void;
12
- inDrawer?: boolean;
13
- status: string;
14
- maxDrawerWidth: string;
15
- };
16
- export declare const NotificationContainer: FC<NotificationProps>;