@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,14 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AppAccessibilityProvider } from '@tui/a11y';
3
+ import { AppSwitcherProvider, useAppSwitcher } from '@tui/apps';
4
+ import { AppProvider, AppRoot, LayoutSkeleton, parseTuiClientCookies, TUI_THEMES, useAppLayout, useAppUser } from '@tui/core';
5
+ import { AppDrawerProvider as TuiAppDrawerProvider } from '@tui/drawer';
2
6
  import { loader } from '@monaco-editor/react';
7
+ import { Article, Book, BookRounded, Code, CreateNewFolder, Dashboard, Description, Edit, EditNote, FormatListBulleted, Help, Info, Key, Person, PersonSearch, QueryStats, SavedSearch, Search, Settings as SettingsIcon, SettingsSuggest, Shield, Storage, Terminal, Topic } from '@mui/icons-material';
3
8
  import api from '@cccsaurora/howler-ui/api';
4
- import AppProvider from '@cccsaurora/howler-ui/commons/components/app/AppProvider';
5
- import LayoutSkeleton from '@cccsaurora/howler-ui/commons/components/app/AppSkeleton';
6
- import { useAppLayout, useAppSwitcher, useAppUser } from '@cccsaurora/howler-ui/commons/components/app/hooks';
7
9
  import Modal from '@cccsaurora/howler-ui/components/elements/display/Modal';
10
+ import { useMyAccessibility } from '@cccsaurora/howler-ui/components/hooks/useMyAccessibility';
8
11
  import useMyApi from '@cccsaurora/howler-ui/components/hooks/useMyApi';
12
+ import { APP_COOKIES_DEFAULTS } from '@cccsaurora/howler-ui/components/hooks/useMyCookies';
9
13
  import useMyLocalStorage from '@cccsaurora/howler-ui/components/hooks/useMyLocalStorage';
10
14
  import useMyPreferences from '@cccsaurora/howler-ui/components/hooks/useMyPreferences';
11
- import useMySitemap from '@cccsaurora/howler-ui/components/hooks/useMySitemap';
15
+ import { useMyRouter } from '@cccsaurora/howler-ui/components/hooks/useMyRouter';
12
16
  import useMyTheme from '@cccsaurora/howler-ui/components/hooks/useMyTheme';
13
17
  import useMyUser from '@cccsaurora/howler-ui/components/hooks/useMyUser';
14
18
  import LoginScreen from '@cccsaurora/howler-ui/components/logins/Login';
@@ -71,7 +75,7 @@ import howlerPluginStore from '@cccsaurora/howler-ui/plugins/store';
71
75
  import { useCallback, useContext, useEffect, useMemo } from 'react';
72
76
  import { I18nextProvider } from 'react-i18next';
73
77
  import { PluginProvider, usePluginStore } from 'react-pluggable';
74
- import { createBrowserRouter, Outlet, RouterProvider, useLocation, useNavigate } from 'react-router-dom';
78
+ import { createBrowserRouter, Outlet, RouterProvider, useLocation, useNavigate } from 'react-router';
75
79
  import { StorageKey } from '@cccsaurora/howler-ui/utils/constants';
76
80
  import useMySearch from '../hooks/useMySearch';
77
81
  import AppContainer from './AppContainer';
@@ -130,8 +134,11 @@ const MyApp = () => {
130
134
  // e.g. fetching initial app data, etc.
131
135
  useEffect(() => {
132
136
  void dispatchApi(api.configs.get()).then(data => {
137
+ if (!data) {
138
+ return;
139
+ }
133
140
  apiConfig.setConfig(data);
134
- if (data?.configuration?.ui?.apps) {
141
+ if (data.configuration.ui?.apps) {
135
142
  setItems(data.configuration.ui.apps);
136
143
  }
137
144
  });
@@ -151,7 +158,7 @@ const MyApp = () => {
151
158
  if (location.pathname !== '/login') {
152
159
  set(StorageKey.NEXT_LOCATION, location.pathname);
153
160
  set(StorageKey.NEXT_SEARCH, location.search);
154
- navigate('/login');
161
+ void navigate('/login');
155
162
  }
156
163
  }
157
164
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -160,21 +167,41 @@ const MyApp = () => {
160
167
  pluginStore.executeFunction(`${plugin}.setup`)?.();
161
168
  }
162
169
  // we don't display the skeleton for certain paths
163
- return (appLayout.ready && apiConfig.config?.indexes) ||
170
+ return (appLayout.ready && apiConfig.loaded && apiConfig.config.indexes) ||
164
171
  location.pathname === '/login' ||
165
172
  location.pathname === '/logout' ? (_jsx(AppContainer, {})) : (_jsx(LayoutSkeleton, {}));
166
173
  };
167
174
  const MyAppProvider = ({ children }) => {
168
175
  const myPreferences = useMyPreferences();
169
- const myTheme = useMyTheme();
170
- const mySitemap = useMySitemap();
171
176
  const myUser = useMyUser();
172
177
  const mySearch = useMySearch();
173
- return (_jsx(ErrorBoundary, { children: _jsx(AppProvider, { preferences: myPreferences, theme: myTheme, sitemap: mySitemap, user: myUser, search: mySearch, children: _jsx(CustomPluginProvider, { children: _jsx(ErrorBoundary, { children: _jsx(ErrorBoundary, { children: _jsx(ViewProvider, { children: _jsx(AvatarProvider, { children: _jsx(ModalProvider, { children: _jsx(FieldProvider, { children: _jsx(LocalStorageProvider, { children: _jsx(SocketProvider, { children: _jsx(RecordProvider, { children: _jsx(OverviewProvider, { children: _jsx(AnalyticProvider, { children: _jsx(FavouriteProvider, { children: _jsx(UserListProvider, { children: children }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }));
178
+ const myRouter = useMyRouter();
179
+ return (_jsx(ErrorBoundary, { children: _jsx(AppProvider, { preferences: myPreferences, user: myUser, search: mySearch, router: myRouter, children: _jsx(CustomPluginProvider, { children: _jsx(ErrorBoundary, { children: _jsx(ErrorBoundary, { children: _jsx(ViewProvider, { children: _jsx(AvatarProvider, { children: _jsx(ModalProvider, { children: _jsx(FieldProvider, { children: _jsx(LocalStorageProvider, { children: _jsx(SocketProvider, { children: _jsx(RecordProvider, { children: _jsx(OverviewProvider, { children: _jsx(AnalyticProvider, { children: _jsx(FavouriteProvider, { children: _jsx(UserListProvider, { children: children }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }));
174
180
  };
175
181
  const AppProviderWrapper = () => {
176
- return (_jsx(I18nextProvider, { i18n: i18n, defaultNS: "translation", children: _jsx(ApiConfigProvider, { children: _jsx(PluginProvider, { pluginStore: howlerPluginStore.pluginStore, children: _jsx(AppBarProvider, { children: _jsxs(MyAppProvider, { children: [_jsx(MyApp, {}), _jsx(Modal, {})] }) }) }) }) }));
182
+ const myTheme = useMyTheme();
183
+ const myAccessibility = useMyAccessibility();
184
+ const myThemes = useMemo(() => [
185
+ { id: 'howler', i18nKey: 'route.home.title', configs: myTheme, default: true },
186
+ ...TUI_THEMES.filter(theme => theme.id !== 'howler')
187
+ ], [myTheme]);
188
+ const tuiCookies = useMemo(() => parseTuiClientCookies(APP_COOKIES_DEFAULTS), []);
189
+ return (_jsx(I18nextProvider, { i18n: i18n, defaultNS: "translation", children: _jsx(ApiConfigProvider, { children: _jsx(PluginProvider, { pluginStore: howlerPluginStore.pluginStore, children: _jsx(AppBarProvider, { children: _jsx(AppRoot, { i18n: i18n, cookies: tuiCookies, themes: myThemes, children: _jsx(TuiAppDrawerProvider, { children: _jsx(AppAccessibilityProvider, { preferences: myAccessibility.preferences, features: myAccessibility.features, children: _jsx(AppSwitcherProvider, { children: _jsxs(MyAppProvider, { children: [_jsx(MyApp, {}), _jsx(Modal, {})] }) }) }) }) }) }) }) }) }));
177
190
  };
191
+ // Static breadcrumb entry for a known route.
192
+ const crumb = (path, i18nKey, icon) => ({
193
+ route: path,
194
+ path,
195
+ i18nKey,
196
+ icon
197
+ });
198
+ // Breadcrumb entry for the currently matched (possibly dynamic) route.
199
+ const selfCrumb = (match, i18nKey, icon) => ({
200
+ route: match.pathname,
201
+ path: match.pathname,
202
+ i18nKey,
203
+ icon
204
+ });
178
205
  const createRouter = () => createBrowserRouter([
179
206
  {
180
207
  path: '/',
@@ -190,27 +217,43 @@ const createRouter = () => createBrowserRouter([
190
217
  },
191
218
  {
192
219
  index: true,
193
- element: _jsx(Home, {})
220
+ element: _jsx(Home, {}),
221
+ handle: { breadcrumb: () => [crumb('/', 'route.home', _jsx(Dashboard, {}))] }
194
222
  },
195
223
  {
196
224
  path: 'hits',
197
- element: _jsx(RecordBrowser, {})
225
+ element: _jsx(RecordBrowser, {}),
226
+ handle: { breadcrumb: () => [crumb('/hits', 'route.hits', _jsx(Search, {}))] }
198
227
  },
199
228
  {
200
229
  path: 'search',
201
- element: _jsx(RecordBrowser, {})
230
+ element: _jsx(RecordBrowser, {}),
231
+ handle: { breadcrumb: () => [crumb('/search', 'route.search', _jsx(Search, {}))] }
202
232
  },
203
233
  {
204
234
  path: 'hits/:id',
205
- element: _jsx(HitViewer, {})
235
+ element: _jsx(HitViewer, {}),
236
+ handle: {
237
+ breadcrumb: (match) => [
238
+ crumb('/hits', 'route.hits', _jsx(Search, {})),
239
+ selfCrumb(match, 'route.hits.view', _jsx(Info, {}))
240
+ ]
241
+ }
206
242
  },
207
243
  {
208
244
  path: 'cases',
209
- element: _jsx(Cases, {})
245
+ element: _jsx(Cases, {}),
246
+ handle: { breadcrumb: () => [crumb('/cases', 'route.cases', _jsx(BookRounded, {}))] }
210
247
  },
211
248
  {
212
249
  path: 'cases/:id',
213
250
  element: (_jsx(ParameterProvider, { defaults: { query: '', indexes: ['hit', 'event', 'case'] }, children: _jsx(CaseViewer, {}) })),
251
+ handle: {
252
+ breadcrumb: (match) => [
253
+ crumb('/cases', 'route.cases', _jsx(BookRounded, {})),
254
+ selfCrumb(match, 'route.cases.view')
255
+ ]
256
+ },
214
257
  children: [
215
258
  {
216
259
  index: true,
@@ -240,119 +283,248 @@ const createRouter = () => createBrowserRouter([
240
283
  },
241
284
  {
242
285
  path: 'templates',
243
- element: _jsx(Templates, {})
286
+ element: _jsx(Templates, {}),
287
+ handle: {
288
+ breadcrumb: () => [crumb('/templates', 'route.templates', _jsx(FormatListBulleted, {}))]
289
+ }
244
290
  },
245
291
  {
246
292
  path: 'templates/view',
247
- element: _jsx(TemplateViewer, {})
293
+ element: _jsx(TemplateViewer, {}),
294
+ handle: {
295
+ breadcrumb: (match) => [
296
+ crumb('/templates', 'route.templates', _jsx(FormatListBulleted, {})),
297
+ selfCrumb(match, 'route.templates.view', _jsx(FormatListBulleted, {}))
298
+ ]
299
+ }
248
300
  },
249
301
  {
250
302
  path: 'overviews',
251
- element: _jsx(Overviews, {})
303
+ element: _jsx(Overviews, {}),
304
+ handle: { breadcrumb: () => [crumb('/overviews', 'route.overviews', _jsx(Article, {}))] }
252
305
  },
253
306
  {
254
307
  path: 'overviews/view',
255
- element: _jsx(OverviewViewer, {})
308
+ element: _jsx(OverviewViewer, {}),
309
+ handle: {
310
+ breadcrumb: (match) => [
311
+ crumb('/overviews', 'route.overviews', _jsx(Article, {})),
312
+ selfCrumb(match, 'route.overviews.view', _jsx(Article, {}))
313
+ ]
314
+ }
256
315
  },
257
316
  {
258
317
  path: 'dossiers',
259
- element: _jsx(Dossiers, {})
318
+ element: _jsx(Dossiers, {}),
319
+ handle: { breadcrumb: () => [crumb('/dossiers', 'route.dossiers', _jsx(Topic, {}))] }
260
320
  },
261
321
  {
262
322
  path: 'dossiers/create',
263
- element: (_jsx(ParameterProvider, { children: _jsx(DossierEditor, {}) }))
323
+ element: (_jsx(ParameterProvider, { children: _jsx(DossierEditor, {}) })),
324
+ handle: {
325
+ breadcrumb: (match) => [
326
+ crumb('/dossiers', 'route.dossiers', _jsx(Topic, {})),
327
+ selfCrumb(match, 'route.dossiers.create', _jsx(CreateNewFolder, {}))
328
+ ]
329
+ }
264
330
  },
265
331
  {
266
332
  path: 'dossiers/:id/edit',
267
- element: (_jsx(ParameterProvider, { children: _jsx(DossierEditor, {}) }))
333
+ element: (_jsx(ParameterProvider, { children: _jsx(DossierEditor, {}) })),
334
+ handle: {
335
+ breadcrumb: (match) => [
336
+ crumb('/dossiers', 'route.dossiers', _jsx(Topic, {})),
337
+ selfCrumb(match, 'route.dossiers.edit', _jsx(Edit, {}))
338
+ ]
339
+ }
268
340
  },
269
341
  {
270
342
  path: 'views',
271
- element: _jsx(Views, {})
343
+ element: _jsx(Views, {}),
344
+ handle: { breadcrumb: () => [crumb('/views', 'route.views', _jsx(SavedSearch, {}))] }
272
345
  },
273
346
  {
274
347
  path: 'views/create',
275
- element: (_jsx(ParameterProvider, { children: _jsx(RecordSearchProvider, { children: _jsx(GridColumnsProvider, { viewSource: "path", children: _jsx(ViewComposer, {}) }) }) }))
348
+ element: (_jsx(ParameterProvider, { children: _jsx(RecordSearchProvider, { children: _jsx(GridColumnsProvider, { viewSource: "path", children: _jsx(ViewComposer, {}) }) }) })),
349
+ handle: {
350
+ breadcrumb: () => [crumb('/views/create', 'route.views.create', _jsx(SavedSearch, {}))]
351
+ }
276
352
  },
277
353
  {
278
354
  path: 'views/:id',
279
- element: _jsx(RecordBrowser, {})
355
+ element: _jsx(RecordBrowser, {}),
356
+ handle: {
357
+ breadcrumb: (match) => [selfCrumb(match, 'route.views.show', _jsx(SavedSearch, {}))]
358
+ }
280
359
  },
281
360
  {
282
361
  path: 'views/:id/edit',
283
- element: (_jsx(ParameterProvider, { children: _jsx(RecordSearchProvider, { children: _jsx(GridColumnsProvider, { viewSource: "path", children: _jsx(ViewComposer, {}) }) }) }))
362
+ element: (_jsx(ParameterProvider, { children: _jsx(RecordSearchProvider, { children: _jsx(GridColumnsProvider, { viewSource: "path", children: _jsx(ViewComposer, {}) }) }) })),
363
+ handle: {
364
+ breadcrumb: (match) => [
365
+ crumb('/views', 'route.views', _jsx(SavedSearch, {})),
366
+ selfCrumb(match, 'route.views.edit', _jsx(Edit, {}))
367
+ ]
368
+ }
284
369
  },
285
370
  {
286
371
  path: 'admin/users',
287
- element: _jsx(UserSearchProvider, {})
372
+ element: _jsx(UserSearchProvider, {}),
373
+ handle: {
374
+ breadcrumb: () => [crumb('/admin/users', 'route.admin.user.search', _jsx(PersonSearch, {}))]
375
+ }
288
376
  },
289
377
  {
290
378
  path: 'admin/users/:id',
291
- element: _jsx(UserEditor, {})
379
+ element: _jsx(UserEditor, {}),
380
+ handle: {
381
+ breadcrumb: (match) => [
382
+ crumb('/admin/users', 'route.admin.user.search', _jsx(PersonSearch, {})),
383
+ selfCrumb(match, 'route.admin.user.details', _jsx(Person, {}))
384
+ ]
385
+ }
292
386
  },
293
387
  {
294
388
  path: 'analytics',
295
- element: _jsx(AnalyticSearch, {})
389
+ element: _jsx(AnalyticSearch, {}),
390
+ handle: { breadcrumb: () => [crumb('/analytics', 'route.analytics', _jsx(QueryStats, {}))] }
296
391
  },
297
392
  {
298
393
  path: 'analytics/:id',
299
- element: _jsx(AnalyticDetails, {})
394
+ element: _jsx(AnalyticDetails, {}),
395
+ handle: {
396
+ breadcrumb: (match) => [
397
+ crumb('/analytics', 'route.analytics', _jsx(QueryStats, {})),
398
+ selfCrumb(match, 'route.analytics.view', _jsx(Info, {}))
399
+ ]
400
+ }
300
401
  },
301
402
  {
302
403
  path: 'help',
303
- element: _jsx(HelpDashboard, {})
404
+ element: _jsx(HelpDashboard, {}),
405
+ handle: { breadcrumb: () => [crumb('/help', 'route.help', _jsx(Help, {}))] }
304
406
  },
305
407
  {
306
408
  path: 'help/search',
307
- element: _jsx(SearchDocumentation, {})
409
+ element: _jsx(SearchDocumentation, {}),
410
+ handle: {
411
+ breadcrumb: (match) => [
412
+ crumb('/help', 'route.help', _jsx(Help, {})),
413
+ selfCrumb(match, 'route.help.search', _jsx(Search, {}))
414
+ ]
415
+ }
308
416
  },
309
417
  {
310
418
  path: 'help/api',
311
- element: _jsx(ApiDocumentation, {})
419
+ element: _jsx(ApiDocumentation, {}),
420
+ handle: {
421
+ breadcrumb: (match) => [
422
+ crumb('/help', 'route.help', _jsx(Help, {})),
423
+ selfCrumb(match, 'route.help.api', _jsx(Storage, {}))
424
+ ]
425
+ }
312
426
  },
313
427
  {
314
428
  path: 'help/auth',
315
- element: _jsx(AuthDocumentation, {})
429
+ element: _jsx(AuthDocumentation, {}),
430
+ handle: {
431
+ breadcrumb: (match) => [
432
+ crumb('/help', 'route.help', _jsx(Help, {})),
433
+ selfCrumb(match, 'route.help.auth', _jsx(Key, {}))
434
+ ]
435
+ }
316
436
  },
317
437
  {
318
438
  path: 'help/client',
319
- element: _jsx(ClientDocumentation, {})
439
+ element: _jsx(ClientDocumentation, {}),
440
+ handle: {
441
+ breadcrumb: (match) => [
442
+ crumb('/help', 'route.help', _jsx(Help, {})),
443
+ selfCrumb(match, 'route.help.client', _jsx(Terminal, {}))
444
+ ]
445
+ }
320
446
  },
321
447
  {
322
448
  path: 'help/hit',
323
- element: _jsx(HitDocumentation, {})
449
+ element: _jsx(HitDocumentation, {}),
450
+ handle: {
451
+ breadcrumb: (match) => [
452
+ crumb('/help', 'route.help', _jsx(Help, {})),
453
+ selfCrumb(match, 'route.help.hit', _jsx(Shield, {}))
454
+ ]
455
+ }
324
456
  },
325
457
  {
326
458
  path: 'help/retention',
327
- element: _jsx(RetentionDocumentation, {})
459
+ element: _jsx(RetentionDocumentation, {}),
460
+ handle: {
461
+ breadcrumb: (match) => [
462
+ crumb('/help', 'route.help', _jsx(Help, {})),
463
+ selfCrumb(match, 'route.help.retention', _jsx(Book, {}))
464
+ ]
465
+ }
328
466
  },
329
467
  {
330
468
  path: 'help/templates',
331
- element: _jsx(TemplateDocumentation, {})
469
+ element: _jsx(TemplateDocumentation, {}),
470
+ handle: {
471
+ breadcrumb: (match) => [
472
+ crumb('/help', 'route.help', _jsx(Help, {})),
473
+ selfCrumb(match, 'route.help.templates', _jsx(FormatListBulleted, {}))
474
+ ]
475
+ }
332
476
  },
333
477
  {
334
478
  path: 'help/actions',
335
- element: _jsx(ActionDocumentation, {})
479
+ element: _jsx(ActionDocumentation, {}),
480
+ handle: {
481
+ breadcrumb: (match) => [
482
+ crumb('/help', 'route.help', _jsx(Help, {})),
483
+ selfCrumb(match, 'route.help.actions', _jsx(SettingsSuggest, {}))
484
+ ]
485
+ }
336
486
  },
337
487
  {
338
488
  path: 'help/notebook',
339
- element: _jsx(NotebookDocumentation, {})
489
+ element: _jsx(NotebookDocumentation, {}),
490
+ handle: {
491
+ breadcrumb: (match) => [
492
+ crumb('/help', 'route.help', _jsx(Help, {})),
493
+ selfCrumb(match, 'route.help.notebook', _jsx(Description, {}))
494
+ ]
495
+ }
340
496
  },
341
497
  {
342
498
  path: 'help/overviews',
343
- element: _jsx(OverviewDocumentation, {})
499
+ element: _jsx(OverviewDocumentation, {}),
500
+ handle: {
501
+ breadcrumb: (match) => [
502
+ crumb('/help', 'route.help', _jsx(Help, {})),
503
+ selfCrumb(match, 'route.help.overviews', _jsx(Article, {}))
504
+ ]
505
+ }
344
506
  },
345
507
  {
346
508
  path: 'help/views',
347
- element: _jsx(ViewDocumentation, {})
509
+ element: _jsx(ViewDocumentation, {}),
510
+ handle: {
511
+ breadcrumb: (match) => [
512
+ crumb('/help', 'route.help', _jsx(Help, {})),
513
+ selfCrumb(match, 'route.help.views', _jsx(SavedSearch, {}))
514
+ ]
515
+ }
348
516
  },
349
517
  {
350
518
  path: 'settings',
351
- element: _jsx(Settings, {})
519
+ element: _jsx(Settings, {}),
520
+ handle: {
521
+ breadcrumb: () => [crumb('/settings', 'page.settings.sitemap', _jsx(SettingsIcon, {}))]
522
+ }
352
523
  },
353
524
  {
354
525
  path: 'advanced',
355
- element: _jsx(QueryBuilder, {})
526
+ element: _jsx(QueryBuilder, {}),
527
+ handle: { breadcrumb: () => [crumb('/advanced', 'route.advanced', _jsx(Code, {}))] }
356
528
  },
357
529
  {
358
530
  path: 'action',
@@ -366,26 +538,51 @@ const createRouter = () => createBrowserRouter([
366
538
  children: [
367
539
  {
368
540
  index: true,
369
- element: _jsx(ActionSearchProvider, {})
541
+ element: _jsx(ActionSearchProvider, {}),
542
+ handle: { breadcrumb: () => [crumb('/action', 'route.actions', _jsx(Terminal, {}))] }
370
543
  },
371
544
  {
372
545
  path: 'integrations',
373
- element: _jsx(Integrations, {})
546
+ element: _jsx(Integrations, {}),
547
+ handle: {
548
+ breadcrumb: (match) => [
549
+ crumb('/action', 'route.actions', _jsx(Terminal, {})),
550
+ selfCrumb(match, 'route.integrations')
551
+ ]
552
+ }
374
553
  },
375
554
  {
376
555
  path: 'execute',
377
- element: (_jsx(ParameterProvider, { children: _jsx(ActionEditor, {}) }))
556
+ element: (_jsx(ParameterProvider, { children: _jsx(ActionEditor, {}) })),
557
+ handle: {
558
+ breadcrumb: (match) => [
559
+ crumb('/action', 'route.actions', _jsx(Terminal, {})),
560
+ selfCrumb(match, 'route.actions.create', _jsx(EditNote, {}))
561
+ ]
562
+ }
378
563
  },
379
564
  {
380
565
  path: ':id',
381
566
  children: [
382
567
  {
383
568
  index: true,
384
- element: _jsx(ActionDetails, {})
569
+ element: _jsx(ActionDetails, {}),
570
+ handle: {
571
+ breadcrumb: (match) => [
572
+ crumb('/action', 'route.actions', _jsx(Terminal, {})),
573
+ selfCrumb(match, 'route.actions.view')
574
+ ]
575
+ }
385
576
  },
386
577
  {
387
578
  path: 'edit',
388
- element: (_jsx(ParameterProvider, { children: _jsx(ActionEditor, {}) }))
579
+ element: (_jsx(ParameterProvider, { children: _jsx(ActionEditor, {}) })),
580
+ handle: {
581
+ breadcrumb: (match) => [
582
+ crumb('/action', 'route.actions', _jsx(Terminal, {})),
583
+ selfCrumb(match, 'route.actions.edit', _jsx(Edit, {}))
584
+ ]
585
+ }
389
586
  }
390
587
  ]
391
588
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import FlexVertical from '@cccsaurora/howler-ui/components/elements/addons/layout/FlexVertical';
3
- import { Outlet } from 'react-router-dom';
3
+ import { Outlet } from 'react-router';
4
4
  import useTitle from './hooks/useTitle';
5
5
  import AppDrawerProvider from './providers/AppDrawerProvider';
6
6
  const AppContainer = () => {
@@ -22,8 +22,8 @@ const ApiKeyDrawer = ({ onCreated }) => {
22
22
  if (!config) {
23
23
  return [1, 'seconds'];
24
24
  }
25
- const { max_apikey_duration_amount: _amount, max_apikey_duration_unit: _unit } = config.configuration.auth;
26
- return [_amount, _unit];
25
+ const { max_apikey_duration_amount: _amount, max_apikey_duration_unit: _unit } = config.configuration?.auth ?? {};
26
+ return [_amount ?? 1, _unit];
27
27
  }, [config]);
28
28
  const maxDate = useMemo(() => {
29
29
  if (!amount || !unit) {
@@ -47,12 +47,20 @@ const ApiKeyDrawer = ({ onCreated }) => {
47
47
  setKeyName(ev.target.value);
48
48
  }, []);
49
49
  const onSubmit = useCallback(async () => {
50
- const result = await dispatchApi(api.auth.apikey.post(keyName, privs, expiryDate?.toISOString()), {
50
+ if (!expiryDate) {
51
+ return;
52
+ }
53
+ const expiryDateString = expiryDate.toISOString();
54
+ const result = await dispatchApi(api.auth.apikey.post(keyName, privs, expiryDateString), {
51
55
  throwError: true,
52
56
  showError: true
53
57
  });
58
+ if (!result) {
59
+ return;
60
+ }
61
+ const newKeyName = result.apikey.split(':')[0] || keyName;
54
62
  setCreatedKey(result.apikey);
55
- onCreated(result.apikey.split(':')[0], privs, expiryDate.toISOString(), result.apikey);
63
+ onCreated(newKeyName, privs, expiryDateString, result.apikey);
56
64
  }, [dispatchApi, expiryDate, keyName, onCreated, privs]);
57
65
  const onCopy = useCallback(async () => {
58
66
  await navigator.clipboard.writeText(createdKey);
@@ -61,6 +69,6 @@ const ApiKeyDrawer = ({ onCreated }) => {
61
69
  useEffect(() => {
62
70
  setExpiryDate(maxDate);
63
71
  }, [maxDate]);
64
- return (_jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: _jsxs(Stack, { direction: "column", spacing: 2, sx: { mt: 2 }, children: [_jsx(Typography, { sx: { maxWidth: '500px' }, children: _jsx(Trans, { i18nKey: "app.drawer.user.apikey.description" }) }), amount && unit && dayjs.duration(amount, unit).asSeconds() < dayjs.duration(7, 'days').asSeconds() && (_jsxs(Alert, { severity: "warning", variant: "outlined", sx: { maxWidth: '500px' }, children: [_jsx(AlertTitle, { children: t('app.drawer.user.apikey.limit.title') }), t('app.drawer.user.apikey.limit.description'), " (", maxDate?.format('MMM D HH:mm:ss'), ")"] })), _jsx(TextField, { label: t('app.drawer.user.apikey.field.name'), required: true, fullWidth: true, value: keyName, onChange: onChange }), _jsxs(FormControl, { required: true, children: [_jsx(FormLabel, { component: "legend", children: t('app.drawer.user.apikey.permissions') }), _jsxs(FormGroup, { sx: { display: 'grid', gridTemplateColumns: '1fr 1fr' }, children: [_jsx(FormControlLabel, { control: _jsx(Checkbox, { onChange: updatePrivs('R') }), label: t('apikey.read') }), _jsx(FormControlLabel, { control: _jsx(Checkbox, { onChange: updatePrivs('W') }), label: t('apikey.write') }), _jsx(FormControlLabel, { disabled: privs.includes('E'), control: _jsx(Checkbox, { onChange: updatePrivs('I') }), label: t('apikey.impersonate') }), config.configuration.auth.allow_extended_apikeys && (_jsx(FormControlLabel, { disabled: privs.includes('I'), control: _jsx(Checkbox, { onChange: updatePrivs('E') }), label: t('apikey.extended') }))] })] }), _jsxs(FormControl, { required: !!maxDate, children: [_jsx(FormLabel, { children: t('app.drawer.user.apikey.expiry.date') }), _jsx(StaticDateTimePicker, { orientation: "landscape", ampm: false, value: expiryDate, onChange: newValue => setExpiryDate(newValue), disablePast: true, maxDate: maxDate, maxTime: maxDate, sx: { backgroundColor: 'transparent', '& > div:first-of-type': { maxWidth: '300px' } } })] }), _jsx(Button, { onClick: onSubmit, disabled: !keyName || (!privs.includes('R') && !privs.includes('W')) || (maxDate && !expiryDate), variant: "outlined", children: _jsx(Trans, { i18nKey: "button.create" }) }), createdKey && (_jsxs(_Fragment, { children: [_jsx(Divider, { orientation: "horizontal" }), _jsxs(Stack, { direction: "row", spacing: 1, alignItems: "stretch", children: [_jsx(TextField, { size: "small", value: createdKey, inputProps: { readOnly: true }, fullWidth: true }), _jsx(Button, { variant: "outlined", onClick: onCopy, disabled: !createdKey, children: _jsx(Trans, { i18nKey: "button.copy" }) })] })] }))] }) }));
72
+ return (_jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: _jsxs(Stack, { direction: "column", spacing: 2, sx: { mt: 2 }, children: [_jsx(Typography, { sx: { maxWidth: '500px' }, children: _jsx(Trans, { i18nKey: "app.drawer.user.apikey.description" }) }), amount && unit && dayjs.duration(amount, unit).asSeconds() < dayjs.duration(7, 'days').asSeconds() && (_jsxs(Alert, { severity: "warning", variant: "outlined", sx: { maxWidth: '500px' }, children: [_jsx(AlertTitle, { children: t('app.drawer.user.apikey.limit.title') }), t('app.drawer.user.apikey.limit.description'), " (", maxDate?.format('MMM D HH:mm:ss'), ")"] })), _jsx(TextField, { label: t('app.drawer.user.apikey.field.name'), required: true, fullWidth: true, value: keyName, onChange: onChange }), _jsxs(FormControl, { required: true, children: [_jsx(FormLabel, { component: "legend", children: t('app.drawer.user.apikey.permissions') }), _jsxs(FormGroup, { sx: { display: 'grid', gridTemplateColumns: '1fr 1fr' }, children: [_jsx(FormControlLabel, { control: _jsx(Checkbox, { onChange: updatePrivs('R') }), label: t('apikey.read') }), _jsx(FormControlLabel, { control: _jsx(Checkbox, { onChange: updatePrivs('W') }), label: t('apikey.write') }), _jsx(FormControlLabel, { disabled: privs.includes('E'), control: _jsx(Checkbox, { onChange: updatePrivs('I') }), label: t('apikey.impersonate') }), config.configuration?.auth.allow_extended_apikeys && (_jsx(FormControlLabel, { disabled: privs.includes('I'), control: _jsx(Checkbox, { onChange: updatePrivs('E') }), label: t('apikey.extended') }))] })] }), _jsxs(FormControl, { required: !!maxDate, children: [_jsx(FormLabel, { children: t('app.drawer.user.apikey.expiry.date') }), _jsx(StaticDateTimePicker, { orientation: "landscape", ampm: false, value: expiryDate, onChange: newValue => setExpiryDate(newValue), disablePast: true, maxDate: maxDate ?? undefined, maxTime: maxDate ?? undefined, sx: { backgroundColor: 'transparent', '& > div:first-of-type': { maxWidth: '300px' } } })] }), _jsx(Button, { onClick: onSubmit, disabled: !keyName || (!privs.includes('R') && !privs.includes('W')) || !!(maxDate && !expiryDate), variant: "outlined", children: _jsx(Trans, { i18nKey: "button.create" }) }), createdKey && (_jsxs(_Fragment, { children: [_jsx(Divider, { orientation: "horizontal" }), _jsxs(Stack, { direction: "row", spacing: 1, alignItems: "stretch", children: [_jsx(TextField, { size: "small", value: createdKey, inputProps: { readOnly: true }, fullWidth: true }), _jsx(Button, { variant: "outlined", onClick: onCopy, disabled: !createdKey, children: _jsx(Trans, { i18nKey: "button.copy" }) })] })] }))] }) }));
65
73
  };
66
74
  export default ApiKeyDrawer;
@@ -1,3 +1,4 @@
1
+ import { createElement as _createElement } from "react";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import { PersonOff } from '@mui/icons-material';
3
4
  import { Autocomplete, Avatar, Box, Button, CircularProgress, Stack, TextField, Typography } from '@mui/material';
@@ -17,10 +18,15 @@ const AssignUserDrawer = ({ assignment, ids, onAssigned, skipSubmit = false }) =
17
18
  const [assignedUserId, setAssignedUserId] = useState(assignment === 'unassigned' ? null : assignment);
18
19
  const [loading, setLoading] = useState(false);
19
20
  const onSubmit = useCallback(async () => {
21
+ if (!assignedUserId) {
22
+ return;
23
+ }
20
24
  if (!skipSubmit) {
21
25
  setLoading(true);
22
26
  try {
23
- await Promise.all(ids.map(id => dispatchApi(api.hit.assign.put(id, { value: assignedUserId !== 'unassigned' ? assignedUserId : null }))));
27
+ await Promise.all(ids.map(id => dispatchApi(api.hit.assign.put(id, {
28
+ value: assignedUserId === 'unassigned' ? null : assignedUserId
29
+ }))));
24
30
  showInfoMessage(t('app.drawer.hit.assignment.success'));
25
31
  }
26
32
  finally {
@@ -38,13 +44,14 @@ const AssignUserDrawer = ({ assignment, ids, onAssigned, skipSubmit = false }) =
38
44
  }
39
45
  ], filterOptions: (_users, { inputValue }) => _users.filter(u => u.email.toLowerCase().includes(inputValue.toLowerCase()) ||
40
46
  u.name.toLowerCase().includes(inputValue.toLowerCase())), onKeyDown: e => e.stopPropagation(), getOptionLabel: (u) => u.name, isOptionEqualToValue: (u, u2) => u.username === u2.username, renderOption: (props, u) => {
41
- return (_jsx("li", { ...props, children: _jsxs(Box, { sx: {
47
+ return (_createElement("li", { ...props, key: u.email },
48
+ _jsxs(Box, { sx: {
42
49
  display: 'grid',
43
50
  gridTemplateColumns: 'auto 1fr',
44
51
  gridTemplateRows: 'auto auto',
45
52
  gridTemplateAreas: `"profile name"\n"profile email"`,
46
53
  columnGap: 1.5
47
- }, children: [u.username !== 'unassigned' ? (_jsx(HowlerAvatar, { sx: { gridArea: 'profile', alignSelf: 'center', height: '32px', width: '32px' }, userId: u.username })) : (_jsx(Avatar, { sx: { gridArea: 'profile', alignSelf: 'center', height: '32px', width: '32px' }, children: _jsx(PersonOff, {}) })), _jsx(Typography, { sx: { gridArea: 'name' }, variant: "body1", children: u.name }), _jsx(Typography, { sx: { gridArea: 'email' }, variant: "caption", children: u.email })] }) }, u.email));
48
- }, renderInput: params => (_jsx(TextField, { ...params, label: _jsx(Trans, { i18nKey: "app.drawer.hit.assignment.autocomplete.label" }) })), value: users[assignedUserId] ?? null, onChange: (_, value) => setAssignedUserId(value?.username) }), _jsxs(Button, { disabled: !assignedUserId || assignedUserId === assignment || loading, variant: "contained", sx: { alignSelf: 'end' }, onClick: onSubmit, children: [loading && _jsx(CircularProgress, { size: "24px", sx: { mr: 1 } }), _jsx(Trans, { i18nKey: "button.save" })] })] }));
54
+ }, children: [u.username !== 'unassigned' ? (_jsx(HowlerAvatar, { sx: { gridArea: 'profile', alignSelf: 'center', height: '32px', width: '32px' }, userId: u.username })) : (_jsx(Avatar, { sx: { gridArea: 'profile', alignSelf: 'center', height: '32px', width: '32px' }, children: _jsx(PersonOff, {}) })), _jsx(Typography, { sx: { gridArea: 'name' }, variant: "body1", children: u.name }), _jsx(Typography, { sx: { gridArea: 'email' }, variant: "caption", children: u.email })] })));
55
+ }, renderInput: params => (_jsx(TextField, { ...params, label: _jsx(Trans, { i18nKey: "app.drawer.hit.assignment.autocomplete.label" }) })), value: assignedUserId ? (users[assignedUserId] ?? null) : null, onChange: (_, value) => setAssignedUserId(value?.username ?? null) }), _jsxs(Button, { disabled: !assignedUserId || assignedUserId === assignment || loading, variant: "contained", sx: { alignSelf: 'end' }, onClick: onSubmit, children: [loading && _jsx(CircularProgress, { size: "24px", sx: { mr: 1 } }), _jsx(Trans, { i18nKey: "button.save" })] })] }));
49
56
  };
50
57
  export default AssignUserDrawer;
@@ -3,8 +3,8 @@ import type { Template } from '@cccsaurora/howler-ui/models/entities/generated/T
3
3
  import type { WithMetadata } from '@cccsaurora/howler-ui/models/WithMetadata';
4
4
  declare const useMatchers: (lazy?: boolean) => {
5
5
  getMatchingDossiers: (hit: WithMetadata<Hit>) => Promise<import("../../../models/entities/generated/Dossier").Dossier[]>;
6
- getMatchingOverview: (hit: WithMetadata<Hit>) => Promise<import("../../../models/entities/generated/Overview").Overview>;
7
- getMatchingTemplate: (hit: WithMetadata<Hit>, providedTemplate?: Template) => Promise<Template>;
8
- getMatchingAnalytic: (hit: WithMetadata<Hit>) => Promise<import("../../../models/entities/generated/Analytic").Analytic>;
6
+ getMatchingOverview: (hit: WithMetadata<Hit>) => Promise<import("../../../models/entities/generated/Overview").Overview | undefined>;
7
+ getMatchingTemplate: (hit: WithMetadata<Hit>, providedTemplate?: Template) => Promise<Template | undefined>;
8
+ getMatchingAnalytic: (hit: WithMetadata<Hit>) => Promise<import("../../../models/entities/generated/Analytic").Analytic | undefined>;
9
9
  };
10
10
  export default useMatchers;