@cccsaurora/howler-ui 2.19.0-dev.999 → 2.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/api/action/index.d.ts +5 -4
  2. package/api/action/index.js +8 -8
  3. package/api/analytic/index.d.ts +5 -5
  4. package/api/analytic/index.js +5 -6
  5. package/api/analytic/owner.d.ts +2 -1
  6. package/api/analytic/owner.js +2 -2
  7. package/api/dossier/index.d.ts +4 -3
  8. package/api/dossier/index.js +6 -6
  9. package/api/hit/index.d.ts +3 -2
  10. package/api/hit/index.js +4 -4
  11. package/api/hit/labels.d.ts +3 -2
  12. package/api/hit/labels.js +4 -4
  13. package/api/hit/overwrite.d.ts +2 -1
  14. package/api/hit/overwrite.js +2 -2
  15. package/api/hit/transition.d.ts +2 -1
  16. package/api/hit/transition.js +2 -2
  17. package/api/index.d.ts +10 -5
  18. package/api/index.js +18 -10
  19. package/api/overview/index.d.ts +4 -3
  20. package/api/overview/index.js +6 -6
  21. package/api/search/action.js +1 -1
  22. package/api/search/analytic.js +1 -1
  23. package/api/search/case.d.ts +4 -0
  24. package/api/search/case.js +8 -0
  25. package/api/search/count/hit.js +1 -1
  26. package/api/search/dossier.js +1 -1
  27. package/api/search/eql/hit.js +1 -1
  28. package/api/search/explain/hit.js +1 -1
  29. package/api/search/facet/hit.d.ts +1 -3
  30. package/api/search/facet/hit.js +1 -1
  31. package/api/search/facet/index.d.ts +3 -1
  32. package/api/search/grouped/hit.js +1 -1
  33. package/api/search/grouped/user.js +1 -1
  34. package/api/search/histogram/hit.js +1 -1
  35. package/api/search/hit.js +1 -1
  36. package/api/search/index.d.ts +3 -1
  37. package/api/search/index.js +2 -1
  38. package/api/search/overview.d.ts +2 -2
  39. package/api/search/overview.js +1 -1
  40. package/api/search/sigma/hit.js +1 -1
  41. package/api/search/template.js +1 -1
  42. package/api/search/user.js +1 -1
  43. package/api/search/view.js +1 -1
  44. package/api/socket/index.d.ts +3 -0
  45. package/api/socket/index.js +6 -0
  46. package/api/socket/viewers.d.ts +2 -0
  47. package/api/socket/viewers.js +8 -0
  48. package/api/socket/viewers.test.js +44 -0
  49. package/api/template/index.d.ts +4 -3
  50. package/api/template/index.js +6 -6
  51. package/api/user/index.d.ts +2 -1
  52. package/api/user/index.js +2 -2
  53. package/api/v2/case/index.d.ts +9 -0
  54. package/api/v2/case/index.js +21 -0
  55. package/api/v2/case/items.d.ts +9 -0
  56. package/api/v2/case/items.js +19 -0
  57. package/api/v2/case/rules.d.ts +6 -0
  58. package/api/v2/case/rules.js +18 -0
  59. package/api/v2/fuzzy.d.ts +17 -0
  60. package/api/v2/fuzzy.js +11 -0
  61. package/api/v2/index.d.ts +5 -0
  62. package/api/v2/index.js +7 -0
  63. package/api/v2/search/facet.d.ts +3 -0
  64. package/api/v2/search/facet.js +12 -0
  65. package/api/v2/search/index.d.ts +6 -0
  66. package/api/v2/search/index.js +24 -0
  67. package/api/view/index.d.ts +4 -3
  68. package/api/view/index.js +6 -6
  69. package/branding/AppBrand.d.ts +2 -2
  70. package/commons/components/app/AppSkeleton.js +1 -1
  71. package/commons/components/app/hooks/useAppConfigs.d.ts +2 -2
  72. package/commons/components/app/hooks/useAppSitemap.d.ts +5 -2
  73. package/commons/components/breadcrumbs/BreadcrumbIcon.js +1 -1
  74. package/commons/components/breadcrumbs/Breadcrumbs.d.ts +3 -2
  75. package/commons/components/display/AppToc.d.ts +2 -1
  76. package/commons/components/display/AppToc.js +1 -1
  77. package/commons/components/display/hooks/useAppColor.d.ts +1 -1
  78. package/commons/components/leftnav/LeftNavDrawer.d.ts +2 -1
  79. package/commons/components/leftnav/LeftNavDrawer.js +1 -1
  80. package/commons/components/leftnav/LeftNavGroup.d.ts +2 -1
  81. package/commons/components/leftnav/LeftNavItem.d.ts +2 -1
  82. package/commons/components/leftnav/LeftNavItem.js +1 -1
  83. package/commons/components/notification/Notification.js +1 -1
  84. package/commons/components/notification/elements/NotificationHeader.js +1 -1
  85. package/commons/components/notification/elements/NotificationItems.js +1 -1
  86. package/commons/components/notification/elements/item/NotificationItemAuthor.js +1 -1
  87. package/commons/components/pages/PageCenter.d.ts +2 -1
  88. package/commons/components/pages/PageContent.d.ts +2 -1
  89. package/commons/components/pages/PageFullScreen.d.ts +2 -1
  90. package/commons/components/search/AppSearch.js +1 -1
  91. package/commons/components/search/AppSearchInput.d.ts +2 -1
  92. package/commons/components/search/AppSearchResult.d.ts +2 -1
  93. package/commons/components/topnav/AppBar.d.ts +2 -1
  94. package/commons/components/topnav/AppName.d.ts +3 -2
  95. package/commons/components/topnav/AppSwitcher.d.ts +2 -1
  96. package/commons/components/topnav/ThemeSelection.d.ts +2 -1
  97. package/commons/components/topnav/ThemeSelection.js +1 -1
  98. package/commons/components/topnav/UserProfile.d.ts +2 -1
  99. package/commons/components/topnav/UserProfile.js +1 -1
  100. package/commons/components/utils/hooks/useThemeBuilder.d.ts +1 -1
  101. package/components/app/App.js +52 -12
  102. package/components/app/drawers/ApiKeyDrawer.js +1 -1
  103. package/components/app/hooks/useMatchers.d.ts +1 -1
  104. package/components/app/hooks/useMatchers.js +27 -15
  105. package/components/app/hooks/useMatchers.test.js +22 -22
  106. package/components/app/hooks/useTitle.js +6 -6
  107. package/components/app/providers/AnalyticProvider.js +1 -1
  108. package/components/app/providers/AvatarProvider.js +1 -1
  109. package/components/app/providers/FavouritesProvider.js +3 -3
  110. package/components/app/providers/GridColumnsProvider.d.ts +52 -0
  111. package/components/app/providers/GridColumnsProvider.js +177 -0
  112. package/components/app/providers/GridColumnsProvider.test.js +255 -0
  113. package/components/app/providers/ModalProvider.d.ts +1 -0
  114. package/components/app/providers/OverviewProvider.js +1 -1
  115. package/components/app/providers/ParameterProvider.d.ts +25 -3
  116. package/components/app/providers/ParameterProvider.js +163 -226
  117. package/components/app/providers/ParameterProvider.test.js +358 -94
  118. package/components/app/providers/RecordProvider.d.ts +23 -0
  119. package/components/app/providers/{HitProvider.js → RecordProvider.js} +47 -43
  120. package/components/app/providers/{HitSearchProvider.d.ts → RecordSearchProvider.d.ts} +6 -6
  121. package/components/app/providers/{HitSearchProvider.js → RecordSearchProvider.js} +24 -37
  122. package/components/app/providers/{HitSearchProvider.test.js → RecordSearchProvider.test.js} +52 -71
  123. package/components/app/providers/SearchResponseProvider.d.ts +21 -0
  124. package/components/app/providers/SearchResponseProvider.js +81 -0
  125. package/components/app/providers/SearchResponseProvider.test.d.ts +1 -0
  126. package/components/app/providers/SearchResponseProvider.test.js +406 -0
  127. package/components/app/providers/SocketProvider.d.ts +11 -2
  128. package/components/app/providers/SocketProvider.js +21 -8
  129. package/components/app/providers/UserListProvider.js +28 -8
  130. package/components/app/providers/UserListProvider.test.d.ts +1 -0
  131. package/components/app/providers/UserListProvider.test.js +150 -0
  132. package/components/app/providers/ViewProvider.js +3 -3
  133. package/components/app/providers/ViewProvider.test.js +4 -1
  134. package/components/elements/Comment.js +2 -2
  135. package/components/elements/ContextMenu.d.ts +56 -0
  136. package/components/elements/ContextMenu.js +113 -0
  137. package/components/elements/ContextMenu.test.d.ts +1 -0
  138. package/components/elements/ContextMenu.test.js +215 -0
  139. package/components/elements/EditRow.js +4 -4
  140. package/components/{routes/overviews/OverviewEditor.js → elements/MarkdownEditor.js} +3 -3
  141. package/components/elements/ObjectDetails.d.ts +6 -0
  142. package/components/elements/{hit/HitDetails.js → ObjectDetails.js} +17 -17
  143. package/components/elements/PluginChip.d.ts +1 -1
  144. package/components/elements/PluginChip.js +0 -1
  145. package/components/elements/PluginTypography.d.ts +2 -1
  146. package/components/elements/PluginTypography.js +3 -2
  147. package/components/elements/UserList.d.ts +5 -2
  148. package/components/elements/UserList.js +34 -17
  149. package/components/elements/UserList.test.d.ts +1 -0
  150. package/components/elements/UserList.test.js +122 -0
  151. package/components/elements/addons/buttons/CustomIconButton.test.d.ts +1 -0
  152. package/components/elements/addons/buttons/CustomIconButton.test.js +81 -0
  153. package/components/elements/addons/buttons/index.d.ts +1 -1
  154. package/components/elements/addons/layout/FlexOne.d.ts +3 -2
  155. package/components/elements/addons/layout/FlexPort.d.ts +2 -1
  156. package/components/elements/addons/layout/FlexVertical.d.ts +2 -1
  157. package/components/elements/addons/layout/FlexVertical.test.d.ts +1 -0
  158. package/components/elements/addons/layout/FlexVertical.test.js +32 -0
  159. package/components/elements/addons/layout/vsbox/VSBoxContent.test.d.ts +1 -0
  160. package/components/elements/addons/layout/vsbox/VSBoxContent.test.js +26 -0
  161. package/components/elements/addons/layout/vsbox/VSBoxElement.d.ts +2 -1
  162. package/components/elements/addons/lists/TuiList.d.ts +2 -1
  163. package/components/elements/addons/lists/TuiListBase.d.ts +2 -1
  164. package/components/elements/addons/lists/TuiListElement.d.ts +3 -2
  165. package/components/elements/addons/lists/TuiListElement.js +0 -1
  166. package/components/elements/addons/lists/TuiListMenu.d.ts +2 -1
  167. package/components/elements/addons/lists/TuiListMenu.js +1 -1
  168. package/components/elements/addons/lists/table/TuiTableHeader.d.ts +3 -2
  169. package/components/elements/addons/lists/table/index.d.ts +1 -1
  170. package/components/elements/addons/search/SearchPagination.d.ts +2 -1
  171. package/components/elements/addons/search/SearchPagination.js +4 -4
  172. package/components/elements/addons/search/SearchTotal.js +1 -1
  173. package/components/elements/addons/search/SearchTotal.test.js +5 -3
  174. package/components/elements/addons/search/phrase/Phrase.js +1 -1
  175. package/components/elements/addons/search/phrase/WordLexer.test.d.ts +1 -0
  176. package/components/elements/addons/search/phrase/WordLexer.test.js +55 -0
  177. package/components/elements/case/CaseCard.d.ts +12 -0
  178. package/components/elements/case/CaseCard.js +43 -0
  179. package/components/elements/case/CasePreview.d.ts +6 -0
  180. package/components/elements/case/CasePreview.js +17 -0
  181. package/components/elements/case/StatusIcon.d.ts +5 -0
  182. package/components/elements/case/StatusIcon.js +13 -0
  183. package/components/elements/display/ActionButton.js +1 -1
  184. package/components/elements/display/ChipPopper.d.ts +1 -1
  185. package/components/elements/display/ChipPopper.js +7 -6
  186. package/components/elements/display/Classification.js +1 -1
  187. package/components/elements/display/ClassificationChip.d.ts +14 -0
  188. package/components/elements/display/ClassificationChip.js +36 -0
  189. package/components/elements/display/HandlebarsMarkdown.js +38 -3
  190. package/components/elements/display/HowlerAvatar.js +2 -2
  191. package/components/elements/display/HowlerCard.js +1 -1
  192. package/components/elements/display/HowlerCard.test.js +5 -9
  193. package/components/elements/display/Image.js +3 -3
  194. package/components/elements/display/ItemManager.d.ts +2 -2
  195. package/components/elements/display/ItemManager.js +3 -3
  196. package/components/elements/display/Markdown.js +2 -2
  197. package/components/elements/display/Modal.js +2 -0
  198. package/components/elements/display/QueryResultText.d.ts +1 -0
  199. package/components/elements/display/QueryResultText.js +2 -2
  200. package/components/elements/display/handlebars/helpers.d.ts +4 -0
  201. package/components/elements/display/handlebars/helpers.js +134 -35
  202. package/components/elements/display/json/JSONViewer.js +2 -2
  203. package/components/elements/display/modals/RationaleModal.js +2 -2
  204. package/components/elements/display/modals/RationaleModal.test.js +1 -1
  205. package/components/elements/event/EventCard.d.ts +6 -0
  206. package/components/elements/event/EventCard.js +22 -0
  207. package/components/elements/event/EventPreview.d.ts +6 -0
  208. package/components/elements/event/EventPreview.js +12 -0
  209. package/components/elements/hit/HitActions.d.ts +1 -1
  210. package/components/elements/hit/HitActions.js +5 -5
  211. package/components/elements/hit/HitBanner.d.ts +1 -0
  212. package/components/elements/hit/HitBanner.js +32 -50
  213. package/components/elements/hit/HitCard.d.ts +4 -0
  214. package/components/elements/hit/HitCard.js +7 -7
  215. package/components/elements/hit/HitLabels.js +3 -3
  216. package/components/elements/hit/HitLabels.test.d.ts +1 -0
  217. package/components/elements/hit/HitLabels.test.js +77 -0
  218. package/components/elements/hit/HitLinks.d.ts +5 -4
  219. package/components/elements/hit/HitLinks.js +28 -10
  220. package/components/elements/hit/HitNotebooks.js +32 -31
  221. package/components/elements/hit/HitOutline.d.ts +1 -0
  222. package/components/elements/hit/HitOutline.js +4 -4
  223. package/components/elements/hit/HitOverview.js +2 -2
  224. package/components/elements/hit/{HitQuickSearch.d.ts → HitPreview.d.ts} +3 -3
  225. package/components/elements/hit/{HitQuickSearch.js → HitPreview.js} +11 -5
  226. package/components/elements/hit/HitSummary.d.ts +2 -1
  227. package/components/elements/hit/HitSummary.js +8 -7
  228. package/components/elements/hit/NotebookTooltip.d.ts +3 -0
  229. package/components/elements/hit/NotebookTooltip.js +8 -0
  230. package/components/elements/hit/PivotTooltip.d.ts +7 -0
  231. package/components/elements/hit/PivotTooltip.js +9 -0
  232. package/components/elements/hit/RelatedLinkTooltip.d.ts +6 -0
  233. package/components/elements/hit/RelatedLinkTooltip.js +8 -0
  234. package/components/elements/hit/ResolvePivotUrl.d.ts +4 -0
  235. package/components/elements/hit/ResolvePivotUrl.js +22 -0
  236. package/components/elements/hit/actions/ButtonActions.js +1 -3
  237. package/components/elements/hit/aggregate/HitGraph.js +9 -9
  238. package/components/elements/hit/elements/AnalyticLink.d.ts +9 -0
  239. package/components/elements/hit/elements/AnalyticLink.js +22 -0
  240. package/components/elements/hit/elements/{HitUsers.d.ts → Assigned.d.ts} +2 -4
  241. package/components/elements/hit/elements/Assigned.js +35 -0
  242. package/components/elements/hit/elements/Assigned.test.d.ts +1 -0
  243. package/components/elements/hit/elements/Assigned.test.js +65 -0
  244. package/components/{routes/hits/search → elements/hit}/grid/AddColumnModal.js +6 -5
  245. package/components/{routes/hits/search → elements/hit}/grid/ColumnHeader.d.ts +2 -1
  246. package/components/{routes/hits/search → elements/hit}/grid/ColumnHeader.js +3 -3
  247. package/components/{routes/hits/search → elements/hit}/grid/EnhancedCell.d.ts +2 -1
  248. package/components/{routes/hits/search → elements/hit}/grid/EnhancedCell.js +2 -2
  249. package/components/{routes/hits/search/grid/HitRow.d.ts → elements/hit/grid/RecordRow.d.ts} +4 -3
  250. package/components/{routes/hits/search/grid/HitRow.js → elements/hit/grid/RecordRow.js} +12 -10
  251. package/components/elements/hit/grid/RecordTable.d.ts +13 -0
  252. package/components/elements/hit/grid/RecordTable.js +84 -0
  253. package/components/elements/hit/outlines/DefaultOutline.js +2 -4
  254. package/components/elements/hit/related/PivotLink.d.ts +3 -0
  255. package/components/elements/hit/related/PivotLink.js +6 -3
  256. package/components/elements/hit/related/RelatedLink.d.ts +1 -0
  257. package/components/elements/hit/related/RelatedLink.js +18 -15
  258. package/components/elements/hit/related/RelatedRecords.js +63 -0
  259. package/components/elements/{hit/HitComments.d.ts → record/RecordComments.d.ts} +5 -4
  260. package/components/elements/{hit/HitComments.js → record/RecordComments.js} +33 -34
  261. package/components/{routes/hits/search/HitContextMenu.d.ts → elements/record/RecordContextMenu.d.ts} +3 -3
  262. package/components/elements/record/RecordContextMenu.js +268 -0
  263. package/components/elements/record/RecordContextMenu.test.d.ts +1 -0
  264. package/components/{routes/hits/search/HitContextMenu.test.js → elements/record/RecordContextMenu.test.js} +143 -49
  265. package/components/elements/record/RecordRelated.d.ts +7 -0
  266. package/components/elements/record/RecordRelated.js +34 -0
  267. package/components/elements/{hit/HitWorklog.d.ts → record/RecordWorklog.d.ts} +4 -3
  268. package/components/elements/{hit/HitWorklog.js → record/RecordWorklog.js} +16 -14
  269. package/components/elements/search/FuzzySearchBar.d.ts +7 -0
  270. package/components/elements/search/FuzzySearchBar.js +33 -0
  271. package/components/elements/search/FuzzySearchBar.test.d.ts +1 -0
  272. package/components/elements/search/FuzzySearchBar.test.js +87 -0
  273. package/components/elements/view/LayoutToggle.d.ts +8 -0
  274. package/components/elements/view/LayoutToggle.js +12 -0
  275. package/components/elements/view/ViewTitle.d.ts +4 -0
  276. package/components/elements/view/ViewTitle.js +13 -3
  277. package/components/hooks/useHitActions.d.ts +1 -1
  278. package/components/hooks/useHitActions.js +5 -5
  279. package/components/hooks/useLocalStorage.js +1 -1
  280. package/components/hooks/useLocalStorageItem.test.js +2 -2
  281. package/components/hooks/useMyApi.d.ts +1 -1
  282. package/components/hooks/useMyChart.d.ts +23 -23
  283. package/components/hooks/useMyPreferences.js +10 -1
  284. package/components/hooks/useMySearch.js +2 -2
  285. package/components/hooks/useMySitemap.js +3 -1
  286. package/components/hooks/useMySnackbar.js +1 -1
  287. package/components/hooks/useMyTheme.js +9 -2
  288. package/components/hooks/useMyTheme.test.d.ts +1 -0
  289. package/components/hooks/useMyTheme.test.js +35 -0
  290. package/components/hooks/useMyUserFunctions.d.ts +21 -21
  291. package/components/hooks/{useHitSelection.d.ts → useRecordSelection.d.ts} +2 -2
  292. package/components/hooks/{useHitSelection.js → useRecordSelection.js} +12 -33
  293. package/components/hooks/useRelatedRecords.d.ts +13 -0
  294. package/components/hooks/useRelatedRecords.js +32 -0
  295. package/components/logins/Login.js +1 -1
  296. package/components/logins/auth/OAuthLogin.js +1 -1
  297. package/components/logins/hooks/useLogin.js +2 -2
  298. package/components/routes/ErrorBoundary.d.ts +2 -13
  299. package/components/routes/ErrorBoundary.js +12 -1
  300. package/components/routes/ErrorBoundary.test.js +27 -4
  301. package/components/routes/action/edit/ActionEditor.js +6 -6
  302. package/components/routes/action/shared/OperationEntry.js +1 -1
  303. package/components/routes/action/shared/OperationStep.js +1 -1
  304. package/components/routes/action/useMyActionFunctions.js +6 -3
  305. package/components/routes/action/view/ActionDetails.js +9 -3
  306. package/components/routes/action/view/ActionSearch.js +25 -19
  307. package/components/routes/admin/users/UserEditor.js +1 -1
  308. package/components/routes/admin/users/UserSearch.js +5 -5
  309. package/components/routes/advanced/QueryBuilder.js +6 -29
  310. package/components/routes/advanced/QueryEditor.js +3 -3
  311. package/components/routes/advanced/eqlTokenProvider.test.d.ts +1 -0
  312. package/components/routes/advanced/eqlTokenProvider.test.js +34 -0
  313. package/components/routes/advanced/historyCompletionProvider.js +3 -3
  314. package/components/routes/advanced/luceneCompletionProvider.js +1 -1
  315. package/components/routes/advanced/luceneTokenProvider.test.d.ts +1 -0
  316. package/components/routes/advanced/luceneTokenProvider.test.js +34 -0
  317. package/components/routes/analytics/AnalyticComments.js +3 -5
  318. package/components/routes/analytics/AnalyticDetails.js +8 -56
  319. package/components/routes/analytics/AnalyticHitComments.js +1 -1
  320. package/components/routes/analytics/AnalyticHitComments.test.js +1 -1
  321. package/components/routes/analytics/AnalyticOverview.js +2 -2
  322. package/components/routes/analytics/AnalyticOverviews.js +1 -1
  323. package/components/routes/analytics/AnalyticSearch.js +16 -25
  324. package/components/routes/analytics/AnalyticTemplates.js +1 -1
  325. package/components/routes/analytics/TriageSettings.js +2 -2
  326. package/components/routes/analytics/widgets/Assessment.js +1 -1
  327. package/components/routes/analytics/widgets/Created.js +1 -1
  328. package/components/routes/analytics/widgets/Escalation.js +1 -1
  329. package/components/routes/analytics/widgets/Stacked.js +1 -1
  330. package/components/routes/cases/CaseViewer.d.ts +2 -0
  331. package/components/routes/cases/CaseViewer.js +44 -0
  332. package/components/routes/cases/CaseViewer.test.d.ts +1 -0
  333. package/components/routes/cases/CaseViewer.test.js +156 -0
  334. package/components/routes/cases/Cases.d.ts +2 -0
  335. package/components/routes/cases/Cases.js +140 -0
  336. package/components/routes/cases/constants.d.ts +6 -0
  337. package/components/routes/cases/constants.js +6 -0
  338. package/components/routes/cases/detail/AlertPanel.d.ts +6 -0
  339. package/components/routes/cases/detail/AlertPanel.js +34 -0
  340. package/components/routes/cases/detail/AlertPanel.test.d.ts +1 -0
  341. package/components/routes/cases/detail/AlertPanel.test.js +107 -0
  342. package/components/routes/cases/detail/CaseDashboard.d.ts +7 -0
  343. package/components/routes/cases/detail/CaseDashboard.js +66 -0
  344. package/components/routes/cases/detail/CaseDashboard.test.d.ts +1 -0
  345. package/components/routes/cases/detail/CaseDashboard.test.js +218 -0
  346. package/components/routes/cases/detail/CaseDetails.d.ts +6 -0
  347. package/components/routes/cases/detail/CaseDetails.js +79 -0
  348. package/components/routes/cases/detail/CaseDetails.test.d.ts +1 -0
  349. package/components/routes/cases/detail/CaseDetails.test.js +145 -0
  350. package/components/routes/cases/detail/CaseObservables.d.ts +6 -0
  351. package/components/routes/cases/detail/CaseObservables.js +127 -0
  352. package/components/routes/cases/detail/CaseObservables.test.d.ts +1 -0
  353. package/components/routes/cases/detail/CaseObservables.test.js +167 -0
  354. package/components/routes/cases/detail/CaseOverview.d.ts +7 -0
  355. package/components/routes/cases/detail/CaseOverview.js +40 -0
  356. package/components/routes/cases/detail/CaseRules.d.ts +7 -0
  357. package/components/routes/cases/detail/CaseRules.js +55 -0
  358. package/components/routes/cases/detail/CaseRules.test.d.ts +1 -0
  359. package/components/routes/cases/detail/CaseRules.test.js +238 -0
  360. package/components/routes/cases/detail/CaseSearch.d.ts +3 -0
  361. package/components/routes/cases/detail/CaseSearch.js +78 -0
  362. package/components/routes/cases/detail/CaseSearch.test.d.ts +1 -0
  363. package/components/routes/cases/detail/CaseSearch.test.js +154 -0
  364. package/components/routes/cases/detail/CaseSidebar.d.ts +8 -0
  365. package/components/routes/cases/detail/CaseSidebar.js +147 -0
  366. package/components/routes/cases/detail/CaseSidebar.test.d.ts +1 -0
  367. package/components/routes/cases/detail/CaseSidebar.test.js +155 -0
  368. package/components/routes/cases/detail/CaseTask.d.ts +14 -0
  369. package/components/routes/cases/detail/CaseTask.js +71 -0
  370. package/components/routes/cases/detail/CaseTask.test.d.ts +1 -0
  371. package/components/routes/cases/detail/CaseTask.test.js +143 -0
  372. package/components/routes/cases/detail/CaseTimeline.d.ts +12 -0
  373. package/components/routes/cases/detail/CaseTimeline.js +120 -0
  374. package/components/routes/cases/detail/CaseTimeline.test.d.ts +1 -0
  375. package/components/routes/cases/detail/CaseTimeline.test.js +319 -0
  376. package/components/routes/cases/detail/CreateRuleDialog.d.ts +9 -0
  377. package/components/routes/cases/detail/CreateRuleDialog.js +145 -0
  378. package/components/routes/cases/detail/CreateRuleDialog.test.d.ts +1 -0
  379. package/components/routes/cases/detail/CreateRuleDialog.test.js +218 -0
  380. package/components/routes/cases/detail/ItemPage.d.ts +6 -0
  381. package/components/routes/cases/detail/ItemPage.js +100 -0
  382. package/components/routes/cases/detail/ItemPage.test.d.ts +1 -0
  383. package/components/routes/cases/detail/ItemPage.test.js +238 -0
  384. package/components/routes/cases/detail/MarkdownPage.d.ts +8 -0
  385. package/components/routes/cases/detail/MarkdownPage.js +63 -0
  386. package/components/routes/cases/detail/MarkdownPage.test.d.ts +1 -0
  387. package/components/routes/cases/detail/MarkdownPage.test.js +116 -0
  388. package/components/routes/cases/detail/RelatedCasePanel.d.ts +6 -0
  389. package/components/routes/cases/detail/RelatedCasePanel.js +34 -0
  390. package/components/routes/cases/detail/RelatedCasePanel.test.d.ts +1 -0
  391. package/components/routes/cases/detail/RelatedCasePanel.test.js +115 -0
  392. package/components/routes/cases/detail/TaskPanel.d.ts +7 -0
  393. package/components/routes/cases/detail/TaskPanel.js +95 -0
  394. package/components/routes/cases/detail/TaskPanel.test.d.ts +1 -0
  395. package/components/routes/cases/detail/TaskPanel.test.js +145 -0
  396. package/components/routes/cases/detail/aggregates/CaseAggregate.d.ts +11 -0
  397. package/components/routes/cases/detail/aggregates/CaseAggregate.js +24 -0
  398. package/components/routes/cases/detail/aggregates/SourceAggregate.d.ts +6 -0
  399. package/components/routes/cases/detail/aggregates/SourceAggregate.js +26 -0
  400. package/components/routes/cases/detail/observables/Observable.d.ts +8 -0
  401. package/components/routes/cases/detail/observables/Observable.js +14 -0
  402. package/components/routes/cases/detail/observables/Observable.test.d.ts +1 -0
  403. package/components/routes/cases/detail/observables/Observable.test.js +80 -0
  404. package/components/routes/cases/detail/observables/ObservableTable.d.ts +7 -0
  405. package/components/routes/cases/detail/observables/ObservableTable.js +61 -0
  406. package/components/routes/cases/detail/observables/ObservableTable.test.d.ts +1 -0
  407. package/components/routes/cases/detail/observables/ObservableTable.test.js +97 -0
  408. package/components/routes/cases/detail/sidebar/CaseFolder.d.ts +22 -0
  409. package/components/routes/cases/detail/sidebar/CaseFolder.js +105 -0
  410. package/components/routes/cases/detail/sidebar/CaseFolder.test.d.ts +1 -0
  411. package/components/routes/cases/detail/sidebar/CaseFolder.test.js +98 -0
  412. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.d.ts +32 -0
  413. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.js +99 -0
  414. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.d.ts +1 -0
  415. package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.js +117 -0
  416. package/components/routes/cases/detail/sidebar/FolderEntry.d.ts +25 -0
  417. package/components/routes/cases/detail/sidebar/FolderEntry.js +89 -0
  418. package/components/routes/cases/detail/sidebar/FolderEntry.test.d.ts +1 -0
  419. package/components/routes/cases/detail/sidebar/FolderEntry.test.js +81 -0
  420. package/components/routes/cases/detail/sidebar/RootDropZone.d.ts +5 -0
  421. package/components/routes/cases/detail/sidebar/RootDropZone.js +33 -0
  422. package/components/routes/cases/detail/sidebar/types.d.ts +9 -0
  423. package/components/routes/cases/detail/sidebar/utils.d.ts +10 -0
  424. package/components/routes/cases/detail/sidebar/utils.js +51 -0
  425. package/components/routes/cases/detail/sidebar/utils.test.d.ts +1 -0
  426. package/components/routes/cases/detail/sidebar/utils.test.js +82 -0
  427. package/components/routes/cases/detail/types.d.ts +22 -0
  428. package/components/routes/cases/detail/utils.d.ts +28 -0
  429. package/components/routes/cases/detail/utils.js +117 -0
  430. package/components/routes/cases/detail/utils.test.d.ts +1 -0
  431. package/components/routes/cases/detail/utils.test.js +166 -0
  432. package/components/routes/cases/hooks/useCase.d.ts +13 -0
  433. package/components/routes/cases/hooks/useCase.js +67 -0
  434. package/components/routes/cases/hooks/useCase.test.d.ts +1 -0
  435. package/components/routes/cases/hooks/useCase.test.js +170 -0
  436. package/components/routes/cases/modals/AddRecordToCaseModal.d.ts +7 -0
  437. package/components/routes/cases/modals/AddRecordToCaseModal.js +57 -0
  438. package/components/routes/cases/modals/AddRecordToCaseModal.test.d.ts +1 -0
  439. package/components/routes/cases/modals/AddRecordToCaseModal.test.js +309 -0
  440. package/components/routes/cases/modals/AddToCaseModal.d.ts +9 -0
  441. package/components/routes/cases/modals/AddToCaseModal.js +72 -0
  442. package/components/routes/cases/modals/CaseRecordRow.d.ts +9 -0
  443. package/components/routes/cases/modals/CaseRecordRow.js +14 -0
  444. package/components/routes/cases/modals/CreateCaseModal.d.ts +7 -0
  445. package/components/routes/cases/modals/CreateCaseModal.js +53 -0
  446. package/components/routes/cases/modals/CreateCaseModal.test.d.ts +1 -0
  447. package/components/routes/cases/modals/CreateCaseModal.test.js +319 -0
  448. package/components/routes/cases/modals/RenameItemModal.d.ts +9 -0
  449. package/components/routes/cases/modals/RenameItemModal.js +44 -0
  450. package/components/routes/cases/modals/ResolveModal.d.ts +7 -0
  451. package/components/routes/cases/modals/ResolveModal.js +120 -0
  452. package/components/routes/cases/modals/ResolveModal.test.d.ts +1 -0
  453. package/components/routes/cases/modals/ResolveModal.test.js +520 -0
  454. package/components/routes/cases/modals/hooks.d.ts +7 -0
  455. package/components/routes/cases/modals/hooks.js +40 -0
  456. package/components/routes/cases/modals/types.d.ts +13 -0
  457. package/components/routes/cases/search/CaseAssigneeFilter.d.ts +6 -0
  458. package/components/routes/cases/search/CaseAssigneeFilter.js +33 -0
  459. package/components/routes/cases/search/CaseAssigneeFilter.test.d.ts +1 -0
  460. package/components/routes/cases/search/CaseAssigneeFilter.test.js +127 -0
  461. package/components/routes/cases/search/CaseDateFilter.d.ts +13 -0
  462. package/components/routes/cases/search/CaseDateFilter.js +26 -0
  463. package/components/routes/cases/search/CaseDateFilter.test.d.ts +1 -0
  464. package/components/routes/cases/search/CaseDateFilter.test.js +115 -0
  465. package/components/routes/cases/search/CaseStatusFilter.d.ts +6 -0
  466. package/components/routes/cases/search/CaseStatusFilter.js +13 -0
  467. package/components/routes/cases/search/CaseStatusFilter.test.d.ts +1 -0
  468. package/components/routes/cases/search/CaseStatusFilter.test.js +86 -0
  469. package/components/routes/cases/utils.d.ts +3 -0
  470. package/components/routes/cases/utils.js +21 -0
  471. package/components/routes/dossiers/DossierEditor.js +4 -4
  472. package/components/routes/dossiers/DossierEditor.test.js +2 -2
  473. package/components/routes/dossiers/Dossiers.js +16 -14
  474. package/components/routes/dossiers/PivotForm.js +2 -4
  475. package/components/routes/events/EventViewer.d.ts +7 -0
  476. package/components/routes/events/EventViewer.js +24 -0
  477. package/components/routes/help/ApiDocumentation.js +2 -2
  478. package/components/routes/help/HitBannerDocumentation.js +2 -1
  479. package/components/routes/help/HitDocumentation.js +1 -3
  480. package/components/routes/help/HitSchemaDocumentation.js +1 -1
  481. package/components/routes/help/OverviewDocumentation.d.ts +1 -1
  482. package/components/routes/help/OverviewDocumentation.js +0 -1
  483. package/components/routes/help/RetentionDocumentation.js +2 -2
  484. package/components/routes/help/SearchDocumentation.js +1 -1
  485. package/components/routes/help/markdown/en/client.md.js +1 -1
  486. package/components/routes/help/markdown/fr/client.md.js +1 -1
  487. package/components/routes/hits/search/InformationPane.d.ts +1 -0
  488. package/components/routes/hits/search/InformationPane.js +52 -65
  489. package/components/routes/hits/search/QuerySettings.js +2 -1
  490. package/components/routes/hits/search/QuerySettings.test.js +19 -17
  491. package/components/routes/hits/search/{HitBrowser.js → RecordBrowser.js} +13 -12
  492. package/components/routes/hits/search/{HitQuery.d.ts → RecordQuery.d.ts} +2 -2
  493. package/components/routes/hits/search/{HitQuery.js → RecordQuery.js} +6 -6
  494. package/components/routes/hits/search/SearchPane.js +28 -50
  495. package/components/routes/hits/search/ViewLink.js +7 -6
  496. package/components/routes/hits/search/ViewLink.test.js +8 -9
  497. package/components/routes/hits/search/grid/RecordGrid.d.ts +3 -0
  498. package/components/routes/hits/search/grid/RecordGrid.js +64 -0
  499. package/components/routes/hits/search/shared/CustomSort.js +1 -1
  500. package/components/routes/hits/search/shared/CustomSpan.test.js +3 -4
  501. package/components/routes/hits/search/shared/HitFilter.d.ts +1 -1
  502. package/components/routes/hits/search/shared/HitSort.d.ts +1 -1
  503. package/components/routes/hits/search/shared/HitSort.js +2 -1
  504. package/components/routes/hits/search/shared/IndexPicker.d.ts +8 -0
  505. package/components/routes/hits/search/shared/IndexPicker.js +21 -0
  506. package/components/routes/hits/search/shared/LayoutSettings.js +25 -0
  507. package/components/routes/hits/search/shared/SearchActionMenu.d.ts +4 -0
  508. package/components/routes/hits/search/shared/SearchActionMenu.js +11 -0
  509. package/components/routes/hits/search/shared/SearchSpan.d.ts +1 -1
  510. package/components/routes/hits/search/shared/SearchSpan.js +1 -1
  511. package/components/routes/hits/view/HitViewer.js +16 -17
  512. package/components/routes/home/AddNewCard.js +2 -2
  513. package/components/routes/home/AddNewCard.test.js +20 -2
  514. package/components/routes/home/AnalyticCard.js +1 -1
  515. package/components/routes/home/EntryWrapper.js +1 -1
  516. package/components/routes/home/HomeSettings.js +1 -1
  517. package/components/routes/home/HomeSettings.test.d.ts +1 -0
  518. package/components/routes/home/HomeSettings.test.js +44 -0
  519. package/components/routes/home/ViewCard.js +52 -46
  520. package/components/routes/home/ViewRefresh.test.js +1 -1
  521. package/components/routes/home/index.js +2 -2
  522. package/components/routes/overviews/OverviewCard.js +1 -1
  523. package/components/routes/overviews/OverviewViewer.js +13 -10
  524. package/components/routes/overviews/Overviews.js +16 -14
  525. package/components/routes/overviews/markdownExtendedTokenProvider.js +15 -15
  526. package/components/routes/overviews/markdownExtendedTokenProvider.test.d.ts +1 -0
  527. package/components/routes/overviews/markdownExtendedTokenProvider.test.js +50 -0
  528. package/components/routes/settings/ProfileSection.js +2 -2
  529. package/components/routes/templates/TemplateEditor.d.ts +3 -2
  530. package/components/routes/templates/TemplateEditor.js +1 -1
  531. package/components/routes/templates/TemplateViewer.js +10 -5
  532. package/components/routes/templates/Templates.js +19 -14
  533. package/components/routes/views/ViewComposer.js +78 -26
  534. package/components/routes/views/Views.js +17 -14
  535. package/i18n.js +1 -1
  536. package/index.css +4 -0
  537. package/index.d.ts +1 -1
  538. package/index.js +1 -1
  539. package/locales/en/translation.json +188 -34
  540. package/locales/fr/translation.json +186 -32
  541. package/models/WithMetadata.d.ts +2 -1
  542. package/models/entities/generated/Analytic.d.ts +0 -3
  543. package/models/entities/generated/ApiType.d.ts +3 -1
  544. package/models/entities/generated/AttachmentsFile.d.ts +12 -0
  545. package/models/entities/generated/Case.d.ts +29 -0
  546. package/models/entities/generated/Column.d.ts +7 -0
  547. package/models/entities/generated/DestinationOriginal.d.ts +19 -0
  548. package/models/entities/generated/ECSEvent.d.ts +31 -0
  549. package/models/entities/generated/EmailAttachment.d.ts +8 -0
  550. package/models/entities/generated/EmailParent.d.ts +19 -0
  551. package/models/entities/generated/Enrichments.d.ts +7 -0
  552. package/models/entities/generated/EnrichmentsIndicator.d.ts +21 -0
  553. package/models/entities/generated/Event.d.ts +80 -26
  554. package/models/entities/generated/EventCloud.d.ts +20 -0
  555. package/models/entities/generated/EventDestination.d.ts +23 -0
  556. package/models/entities/generated/EventEmail.d.ts +30 -0
  557. package/models/entities/generated/EventFile.d.ts +36 -0
  558. package/models/entities/generated/EventHowler.d.ts +42 -0
  559. package/models/entities/generated/EventHttp.d.ts +11 -0
  560. package/models/entities/generated/EventObserver.d.ts +21 -0
  561. package/models/entities/generated/EventOrganization.d.ts +7 -0
  562. package/models/entities/generated/EventProcess.d.ts +34 -0
  563. package/models/entities/generated/EventSource.d.ts +23 -0
  564. package/models/entities/generated/EventThreat.d.ts +21 -0
  565. package/models/entities/generated/EventTls.d.ts +12 -0
  566. package/models/entities/generated/Hit.d.ts +3 -2
  567. package/models/entities/generated/Host.d.ts +1 -0
  568. package/models/entities/generated/Howler.d.ts +1 -6
  569. package/models/entities/generated/HttpResponse.d.ts +11 -0
  570. package/models/entities/generated/Item.d.ts +12 -0
  571. package/models/entities/generated/ObserverIngress.d.ts +9 -0
  572. package/models/entities/generated/Rule.d.ts +8 -9
  573. package/models/entities/generated/Settings.d.ts +4 -0
  574. package/models/entities/generated/Task.d.ts +10 -0
  575. package/models/entities/generated/Threat.d.ts +2 -2
  576. package/models/entities/generated/{Enrichment.d.ts → ThreatEnrichment.d.ts} +1 -1
  577. package/models/entities/generated/View.d.ts +1 -0
  578. package/models/socket/CaseUpdate.d.ts +5 -0
  579. package/models/socket/ViewersUpdate.d.ts +4 -0
  580. package/package.json +156 -137
  581. package/plugins/clue/components/ClueLeadForm.js +1 -1
  582. package/plugins/clue/components/CluePivotForm.js +2 -2
  583. package/plugins/clue/components/ClueTypography.js +2 -2
  584. package/plugins/clue/helpers.js +4 -4
  585. package/plugins/clue/index.d.ts +3 -2
  586. package/plugins/clue/index.js +0 -1
  587. package/plugins/clue/utils.d.ts +2 -1
  588. package/rest/AxiosClient.test.d.ts +1 -0
  589. package/rest/AxiosClient.test.js +185 -0
  590. package/tests/mocks.d.ts +11 -1
  591. package/tests/mocks.js +12 -7
  592. package/tests/server-handlers.js +11 -1
  593. package/tests/utils.d.ts +4 -0
  594. package/tests/utils.js +21 -0
  595. package/utils/Throttler.test.js +2 -2
  596. package/utils/actionUtils.d.ts +3 -3
  597. package/utils/classificationParser.d.ts +195 -0
  598. package/utils/classificationParser.js +680 -0
  599. package/utils/constants.d.ts +4 -3
  600. package/utils/constants.js +6 -0
  601. package/utils/localStorage.js +1 -1
  602. package/utils/menuUtils.js +0 -4
  603. package/utils/recordFunctions.d.ts +3 -0
  604. package/utils/recordFunctions.js +8 -0
  605. package/utils/recordFunctions.test.d.ts +1 -0
  606. package/utils/{hitFunctions.test.js → recordFunctions.test.js} +1 -1
  607. package/utils/socketUtils.d.ts +14 -0
  608. package/utils/socketUtils.js +17 -1
  609. package/utils/socketUtils.test.js +49 -16
  610. package/utils/stringUtils.d.ts +1 -0
  611. package/utils/stringUtils.js +7 -0
  612. package/utils/stringUtils.test.js +22 -2
  613. package/utils/typeUtils.d.ts +7 -0
  614. package/utils/typeUtils.js +27 -0
  615. package/utils/utils.d.ts +1 -1
  616. package/utils/utils.js +2 -2
  617. package/utils/utils.test.js +119 -2
  618. package/utils/viewUtils.js +3 -0
  619. package/utils/xsrf.js +1 -1
  620. package/api/analytic/rules.d.ts +0 -3
  621. package/api/analytic/rules.js +0 -8
  622. package/components/app/providers/HitProvider.d.ts +0 -22
  623. package/components/elements/display/icons/BundleButton.d.ts +0 -6
  624. package/components/elements/display/icons/BundleButton.js +0 -32
  625. package/components/elements/hit/HitRelated.d.ts +0 -6
  626. package/components/elements/hit/HitRelated.js +0 -7
  627. package/components/elements/hit/elements/HitUsers.js +0 -33
  628. package/components/routes/advanced/RuleModal.d.ts +0 -7
  629. package/components/routes/advanced/RuleModal.js +0 -83
  630. package/components/routes/analytics/RuleView.d.ts +0 -8
  631. package/components/routes/analytics/RuleView.js +0 -48
  632. package/components/routes/help/BundleDocumentation.d.ts +0 -3
  633. package/components/routes/help/BundleDocumentation.js +0 -12
  634. package/components/routes/help/markdown/en/bundles.md.js +0 -1
  635. package/components/routes/help/markdown/fr/bundles.md.js +0 -1
  636. package/components/routes/hits/search/BundleParentMenu.d.ts +0 -6
  637. package/components/routes/hits/search/BundleParentMenu.js +0 -32
  638. package/components/routes/hits/search/BundleScroller.d.ts +0 -2
  639. package/components/routes/hits/search/BundleScroller.js +0 -6
  640. package/components/routes/hits/search/HitContextMenu.js +0 -239
  641. package/components/routes/hits/search/LayoutSettings.js +0 -24
  642. package/components/routes/hits/search/grid/HitGrid.d.ts +0 -3
  643. package/components/routes/hits/search/grid/HitGrid.js +0 -132
  644. package/utils/hitFunctions.d.ts +0 -2
  645. package/utils/hitFunctions.js +0 -8
  646. /package/{components/app/providers/HitSearchProvider.test.d.ts → api/socket/viewers.test.d.ts} +0 -0
  647. /package/components/{routes/hits/search/HitContextMenu.test.d.ts → app/providers/GridColumnsProvider.test.d.ts} +0 -0
  648. /package/{utils/hitFunctions.test.d.ts → components/app/providers/RecordSearchProvider.test.d.ts} +0 -0
  649. /package/components/{routes/overviews/OverviewEditor.d.ts → elements/MarkdownEditor.d.ts} +0 -0
  650. /package/components/{routes/hits/search → elements/hit}/grid/AddColumnModal.d.ts +0 -0
  651. /package/components/elements/hit/{HitDetails.d.ts → related/RelatedRecords.d.ts} +0 -0
  652. /package/components/routes/hits/search/{HitBrowser.d.ts → RecordBrowser.d.ts} +0 -0
  653. /package/components/routes/hits/search/{LayoutSettings.d.ts → shared/LayoutSettings.d.ts} +0 -0
@@ -105,6 +105,12 @@ export const DATE_RANGES = [
105
105
  'date.range.all',
106
106
  'date.range.custom'
107
107
  ];
108
+ export const DATE_RANGE_LUCENE = {
109
+ 'date.range.1.day': 'now-1d/d',
110
+ 'date.range.3.day': 'now-3d/d',
111
+ 'date.range.1.week': 'now-7d/d',
112
+ 'date.range.1.month': 'now-1M/M'
113
+ };
108
114
  export const LABEL_TYPES = {
109
115
  insight: { icon: _jsx(PsychologyAlt, { fontSize: "small" }), color: '#FFFFFF' }, //brain icon
110
116
  mitigation: { icon: _jsx(LocalPolice, { fontSize: "small" }), color: blue[600] }, //police badge
@@ -25,7 +25,7 @@ export const getStored = (name) => {
25
25
  try {
26
26
  return JSON.parse(localStorage.getItem(buildName(name)));
27
27
  }
28
- catch (e) {
28
+ catch {
29
29
  // Migrating from the old system, some values were not JSON encoded. Decoding them will cause an exception.
30
30
  // Obviously, this is not optimal, but it's the only way to get Typescript to play nice.
31
31
  // When this is called, T will be type string.
@@ -55,7 +55,6 @@ class AppMenuBuilder {
55
55
  const target = this.menuFromIndex(menuLocation.index, menuLocation.subIndex);
56
56
  if (!Array.isArray(target) && this.isGroupElement(target)) {
57
57
  if (item.type === 'divider') {
58
- console.warn(`Skipping DIVIDER Operation: INSERT on Target: ${targetId}, Dividers cannot be inserted to sub-menus`);
59
58
  return;
60
59
  }
61
60
  const group = target.element;
@@ -69,7 +68,6 @@ class AppMenuBuilder {
69
68
  }
70
69
  if (menuLocation.index !== -1 && isNil(menuLocation.subIndex)) {
71
70
  if (item.type === 'divider') {
72
- console.warn(`Skipping DIVIDER Operation: INSERT on Target: ${targetId}, Dividers cannot be inserted to sub-menus`);
73
71
  return;
74
72
  }
75
73
  if (!this.isItemElement(target)) {
@@ -103,7 +101,6 @@ class AppMenuBuilder {
103
101
  const menuLocation = this.indexOfMenuId(targetId);
104
102
  if (!isNil(menuLocation.subIndex)) {
105
103
  if (item.type === 'divider') {
106
- console.warn(`Skipping DIVIDER Operation: INSERT on Target: ${targetId}, Dividers cannot be inserted to sub-menus`);
107
104
  return;
108
105
  }
109
106
  const parentElement = this.menuFromIndex(menuLocation.index);
@@ -134,7 +131,6 @@ class AppMenuBuilder {
134
131
  const menuLocation = this.indexOfMenuId(targetId);
135
132
  if (!isNil(menuLocation.subIndex)) {
136
133
  if (item.type === 'divider') {
137
- console.warn(`Skipping DIVIDER Operation: INSERT on Target: ${targetId}, Dividers cannot be inserted to sub-menus`);
138
134
  return;
139
135
  }
140
136
  const parentElement = this.menuFromIndex(menuLocation.index);
@@ -0,0 +1,3 @@
1
+ import type { Event } from '@cccsaurora/howler-ui/models/entities/generated/Event';
2
+ import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
3
+ export declare const getUserList: (record: Hit | Event) => Set<string>;
@@ -0,0 +1,8 @@
1
+ export const getUserList = (record) => {
2
+ const ids = new Set();
3
+ if (record) {
4
+ record.howler?.log?.forEach(l => ids.add(l.user));
5
+ record.howler?.comment?.forEach(c => ids.add(c.user), ids);
6
+ }
7
+ return ids;
8
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { getUserList } from './hitFunctions';
2
+ import { getUserList } from './recordFunctions';
3
3
  const makeHit = (howlerOverrides = {}) => ({
4
4
  howler: {
5
5
  log: [],
@@ -1,8 +1,22 @@
1
1
  import type { RecievedDataType } from '@cccsaurora/howler-ui/components/app/providers/SocketProvider';
2
+ import type { CaseUpdate } from '@cccsaurora/howler-ui/models/socket/CaseUpdate';
2
3
  import type { HitUpdate } from '@cccsaurora/howler-ui/models/socket/HitUpdate';
4
+ import type { ViewersUpdate } from '@cccsaurora/howler-ui/models/socket/ViewersUpdate';
3
5
  /**
4
6
  * Checks to see if the data recieved from the socket is a hit update
5
7
  * @param data The data recieved from the socket
6
8
  * @returns whether the data is a hit update
7
9
  */
8
10
  export declare const isHitUpdate: (data: any) => data is RecievedDataType<HitUpdate>;
11
+ /**
12
+ * Checks to see if the data received from the socket is a case update
13
+ * @param data The data received from the socket
14
+ * @returns whether the data is a case update
15
+ */
16
+ export declare const isCaseUpdate: (data: any) => data is RecievedDataType<CaseUpdate>;
17
+ /**
18
+ * Checks to see if the data received from the socket is a viewers update
19
+ * @param data The data received from the socket
20
+ * @returns whether the data is a viewers update
21
+ */
22
+ export declare const isViewersUpdate: (data: any) => data is RecievedDataType<ViewersUpdate>;
@@ -4,5 +4,21 @@
4
4
  * @returns whether the data is a hit update
5
5
  */
6
6
  export const isHitUpdate = (data) => {
7
- return data.version && data.hit;
7
+ return !!(data.version && data.hit);
8
+ };
9
+ /**
10
+ * Checks to see if the data received from the socket is a case update
11
+ * @param data The data received from the socket
12
+ * @returns whether the data is a case update
13
+ */
14
+ export const isCaseUpdate = (data) => {
15
+ return !!(data.type === 'cases' && data.case);
16
+ };
17
+ /**
18
+ * Checks to see if the data received from the socket is a viewers update
19
+ * @param data The data received from the socket
20
+ * @returns whether the data is a viewers update
21
+ */
22
+ export const isViewersUpdate = (data) => {
23
+ return !!(data.type === 'viewers_update' && data.viewers && data.id);
8
24
  };
@@ -1,26 +1,59 @@
1
- /// <reference types="vitest" />
2
1
  import { describe, expect, it } from 'vitest';
3
- import { isHitUpdate } from './socketUtils';
2
+ import { isCaseUpdate, isHitUpdate, isViewersUpdate } from './socketUtils';
4
3
  describe('isHitUpdate', () => {
5
- it('returns truthy when data has both a truthy version and a hit', () => {
6
- expect(isHitUpdate({ version: 1, hit: {} })).toBeTruthy();
4
+ it('returns true when data has version and hit', () => {
5
+ const data = { version: '1', hit: { howler: { id: 'h1' } }, type: 'hits', error: false, message: '', status: 200 };
6
+ expect(isHitUpdate(data)).toBeTruthy();
7
7
  });
8
- it('returns truthy when version is a non-empty string', () => {
9
- expect(isHitUpdate({ version: 'v1', hit: { howler: {} } })).toBeTruthy();
8
+ it('returns false when hit is missing', () => {
9
+ const data = { version: '1', type: 'hits', error: false, message: '', status: 200 };
10
+ expect(isHitUpdate(data)).toBeFalsy();
10
11
  });
11
- it('returns falsy when version is missing', () => {
12
- expect(isHitUpdate({ hit: {} })).toBeFalsy();
12
+ it('returns false when version is missing', () => {
13
+ const data = { hit: { howler: { id: 'h1' } }, type: 'hits', error: false, message: '', status: 200 };
14
+ expect(isHitUpdate(data)).toBeFalsy();
13
15
  });
14
- it('returns falsy when hit is missing', () => {
15
- expect(isHitUpdate({ version: 1 })).toBeFalsy();
16
+ });
17
+ describe('isCaseUpdate', () => {
18
+ it('returns true when type is cases and case is present', () => {
19
+ const data = { type: 'cases', case: { case_id: 'c1' }, error: false, message: '', status: 200 };
20
+ expect(isCaseUpdate(data)).toBeTruthy();
21
+ });
22
+ it('returns false when type is not cases', () => {
23
+ const data = { type: 'hits', case: { case_id: 'c1' }, error: false, message: '', status: 200 };
24
+ expect(isCaseUpdate(data)).toBeFalsy();
25
+ });
26
+ it('returns false when case is missing', () => {
27
+ const data = { type: 'cases', error: false, message: '', status: 200 };
28
+ expect(isCaseUpdate(data)).toBeFalsy();
29
+ });
30
+ it('returns false when case is null', () => {
31
+ const data = { type: 'cases', case: null, error: false, message: '', status: 200 };
32
+ expect(isCaseUpdate(data)).toBeFalsy();
33
+ });
34
+ });
35
+ describe('isViewersUpdate', () => {
36
+ it('returns true when type is viewers_update with id and viewers', () => {
37
+ const data = {
38
+ type: 'viewers_update',
39
+ id: 'entity-1',
40
+ viewers: ['alice', 'bob'],
41
+ error: false,
42
+ message: '',
43
+ status: 200
44
+ };
45
+ expect(isViewersUpdate(data)).toBeTruthy();
16
46
  });
17
- it('returns falsy when both fields are missing', () => {
18
- expect(isHitUpdate({})).toBeFalsy();
47
+ it('returns false when type is wrong', () => {
48
+ const data = { type: 'cases', id: 'entity-1', viewers: ['alice'], error: false, message: '', status: 200 };
49
+ expect(isViewersUpdate(data)).toBeFalsy();
19
50
  });
20
- it('returns falsy when version is 0 (falsy)', () => {
21
- expect(isHitUpdate({ version: 0, hit: {} })).toBeFalsy();
51
+ it('returns false when viewers is missing', () => {
52
+ const data = { type: 'viewers_update', id: 'entity-1', error: false, message: '', status: 200 };
53
+ expect(isViewersUpdate(data)).toBeFalsy();
22
54
  });
23
- it('returns falsy when hit is null (falsy)', () => {
24
- expect(isHitUpdate({ version: 1, hit: null })).toBeFalsy();
55
+ it('returns false when id is missing', () => {
56
+ const data = { type: 'viewers_update', viewers: ['alice'], error: false, message: '', status: 200 };
57
+ expect(isViewersUpdate(data)).toBeFalsy();
25
58
  });
26
59
  });
@@ -6,3 +6,4 @@ export declare const sanitizeLuceneQuery: (query: string) => string;
6
6
  export declare const safeStringPropertyCompare: (propertyPath: string) => (a: unknown, b: unknown) => any;
7
7
  export declare const sanitizeMultilineLucene: (query: string) => string;
8
8
  export declare const validateRegex: (regex: string) => boolean;
9
+ export declare const parsePixelSizeStringToInt: (size: string) => number;
@@ -45,3 +45,10 @@ export const validateRegex = (regex) => {
45
45
  return false;
46
46
  }
47
47
  };
48
+ export const parsePixelSizeStringToInt = (size) => {
49
+ const match = size.match(/^(\d+(\.\d+)?)(px)?$/);
50
+ if (match) {
51
+ return parseInt(match[1]);
52
+ }
53
+ return null;
54
+ };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="vitest" />
2
2
  import { describe, expect, it } from 'vitest';
3
- import { maxLenStr, nameToInitials, safeFieldValue, safeFieldValueURI, safeStringPropertyCompare, sanitizeLuceneQuery, sanitizeMultilineLucene, validateRegex } from './stringUtils';
3
+ import { maxLenStr, nameToInitials, parsePixelSizeStringToInt, safeFieldValue, safeFieldValueURI, safeStringPropertyCompare, sanitizeLuceneQuery, sanitizeMultilineLucene, validateRegex } from './stringUtils';
4
4
  describe('nameToInitials', () => {
5
5
  it('returns initials from a standard first-last name', () => {
6
6
  expect(nameToInitials('John Doe')).toEqual(['J', 'D']);
@@ -54,7 +54,7 @@ describe('safeFieldValue', () => {
54
54
  expect(safeFieldValue(true)).toBe('"true"');
55
55
  });
56
56
  it('escapes backslash before escaping quotes (order matters)', () => {
57
- expect(safeFieldValue('\\"')).toBe('"\\\\\\"\"');
57
+ expect(safeFieldValue('\\"')).toBe('"\\\\\\""');
58
58
  });
59
59
  });
60
60
  describe('safeFieldValueURI', () => {
@@ -157,3 +157,23 @@ describe('validateRegex', () => {
157
157
  expect(validateRegex('a{2,5}')).toBe(true);
158
158
  });
159
159
  });
160
+ describe('parsePixelSizeStringToInt', () => {
161
+ it('parses a pixel size string with "px" suffix', () => {
162
+ expect(parsePixelSizeStringToInt('100px')).toBe(100);
163
+ });
164
+ it('parses a pixel size string without "px" suffix', () => {
165
+ expect(parsePixelSizeStringToInt('200')).toBe(200);
166
+ });
167
+ it('parses a pixel size string with decimal value', () => {
168
+ expect(parsePixelSizeStringToInt('150.5px')).toBe(150);
169
+ });
170
+ it('returns null for a non-numeric string', () => {
171
+ expect(parsePixelSizeStringToInt('abc')).toBeNull();
172
+ });
173
+ it('returns null for an empty string', () => {
174
+ expect(parsePixelSizeStringToInt('')).toBeNull();
175
+ });
176
+ it('returns null for a string with an invalid unit', () => {
177
+ expect(parsePixelSizeStringToInt('50rem')).toBeNull();
178
+ });
179
+ });
@@ -0,0 +1,7 @@
1
+ import type { Case } from '@cccsaurora/howler-ui/models/entities/generated/Case';
2
+ import type { Event } from '@cccsaurora/howler-ui/models/entities/generated/Event';
3
+ import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
4
+ import type { WithMetadata } from '@cccsaurora/howler-ui/models/WithMetadata';
5
+ export declare const isHit: (obj: WithMetadata<any>) => obj is Hit;
6
+ export declare const isCase: (obj: WithMetadata<any>) => obj is Case;
7
+ export declare const isEvent: (obj: WithMetadata<any>) => obj is Event;
@@ -0,0 +1,27 @@
1
+ export const isHit = (obj) => {
2
+ if (!obj) {
3
+ return false;
4
+ }
5
+ if (obj.__index === 'hit') {
6
+ return true;
7
+ }
8
+ return false;
9
+ };
10
+ export const isCase = (obj) => {
11
+ if (!obj) {
12
+ return false;
13
+ }
14
+ if (obj.__index === 'case') {
15
+ return true;
16
+ }
17
+ return false;
18
+ };
19
+ export const isEvent = (obj) => {
20
+ if (!obj) {
21
+ return false;
22
+ }
23
+ if (obj.__index === 'event') {
24
+ return true;
25
+ }
26
+ return false;
27
+ };
package/utils/utils.d.ts CHANGED
@@ -11,8 +11,8 @@ export declare const delay: (ms: number, rejectOnCancel?: boolean) => {
11
11
  cancel: () => void;
12
12
  then<TResult1 = void, TResult2 = never>(onfulfilled?: (value: void) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>;
13
13
  catch<TResult = never>(onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<void | TResult>;
14
- finally(onfinally?: () => void): Promise<void>;
15
14
  readonly [Symbol.toStringTag]: string;
15
+ finally(onfinally?: () => void): Promise<void>;
16
16
  };
17
17
  type Timestamp = {
18
18
  timestamp?: string;
package/utils/utils.js CHANGED
@@ -105,7 +105,7 @@ export const searchObject = (o, query, returnFlat = false) => {
105
105
  const filteredData = Object.fromEntries(Object.entries(flatten(o)).filter(([k, v]) => regex.test(k) || regex.test(v))) ?? {};
106
106
  return returnFlat ? filteredData : unflatten(filteredData);
107
107
  }
108
- catch (e) {
108
+ catch {
109
109
  return returnFlat ? flatten(o) : o;
110
110
  }
111
111
  };
@@ -140,7 +140,7 @@ export const tryParse = (json) => {
140
140
  try {
141
141
  return JSON.parse(json);
142
142
  }
143
- catch (e) {
143
+ catch {
144
144
  return json;
145
145
  }
146
146
  };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="vitest" />
2
- import { describe, expect, it } from 'vitest';
3
- import { bytesToSize, compareTimestamp, convertCustomDateRangeToLucene, convertDateToLucene, convertLuceneToDate, flattenDeep, formatDate, getTimeRange, hashCode, humanReadableNumber, removeEmpty, searchObject, sortByTimestamp, tryParse, twitterShort } from './utils';
2
+ import { afterEach, describe, expect, it, vi } from 'vitest';
3
+ import { bytesToSize, compareTimestamp, convertCustomDateRangeToLucene, convertDateToLucene, convertLuceneToDate, delay, flattenDeep, formatDate, getProvider, getTimeRange, hashCode, humanReadableNumber, removeEmpty, searchObject, searchResultsDisplay, sortByTimestamp, stringToColor, tryParse, twitterShort } from './utils';
4
4
  describe('bytesToSize', () => {
5
5
  it('returns "0 B" for 0', () => {
6
6
  expect(bytesToSize(0)).toBe('0 B');
@@ -290,3 +290,120 @@ describe('twitterShort', () => {
290
290
  expect(result).toMatch(/year/);
291
291
  });
292
292
  });
293
+ describe('stringToColor', () => {
294
+ it('returns a non-empty string for any input', () => {
295
+ const result = stringToColor('hello');
296
+ expect(typeof result).toBe('string');
297
+ expect(result.length).toBeGreaterThan(0);
298
+ });
299
+ it('returns the same color for the same input', () => {
300
+ expect(stringToColor('alice')).toBe(stringToColor('alice'));
301
+ });
302
+ it('returns different colors for different inputs', () => {
303
+ // Not guaranteed for all pairs, but statistically very likely for distinct words
304
+ const colors = ['alice', 'bob', 'carol', 'dave'].map(stringToColor);
305
+ const unique = new Set(colors);
306
+ expect(unique.size).toBeGreaterThan(1);
307
+ });
308
+ it('handles an empty string without throwing', () => {
309
+ expect(() => stringToColor('')).not.toThrow();
310
+ });
311
+ });
312
+ describe('delay', () => {
313
+ it('resolves after the specified time', async () => {
314
+ vi.useFakeTimers();
315
+ const promise = delay(100);
316
+ vi.advanceTimersByTime(100);
317
+ await expect(promise).resolves.toBeUndefined();
318
+ vi.useRealTimers();
319
+ });
320
+ it('does not resolve before the specified time', async () => {
321
+ vi.useFakeTimers();
322
+ let resolved = false;
323
+ void delay(200).then(() => {
324
+ resolved = true;
325
+ });
326
+ vi.advanceTimersByTime(100);
327
+ expect(resolved).toBe(false);
328
+ vi.advanceTimersByTime(100);
329
+ await Promise.resolve(); // flush microtasks
330
+ expect(resolved).toBe(true);
331
+ vi.useRealTimers();
332
+ });
333
+ it('can be cancelled via the .cancel() method without rejecting by default', () => {
334
+ vi.useFakeTimers();
335
+ const d = delay(100);
336
+ expect(() => d.cancel()).not.toThrow();
337
+ vi.useRealTimers();
338
+ });
339
+ it('rejects on cancel when rejectOnCancel=true', async () => {
340
+ vi.useFakeTimers();
341
+ const d = delay(100, true);
342
+ const rejection = expect(d).rejects.toBeUndefined();
343
+ d.cancel();
344
+ await rejection;
345
+ vi.useRealTimers();
346
+ });
347
+ });
348
+ describe('getProvider', () => {
349
+ const originalLocation = window.location;
350
+ afterEach(() => {
351
+ Object.defineProperty(window, 'location', { value: originalLocation, writable: true });
352
+ });
353
+ it('returns the provider from the search params when not in oauth path', () => {
354
+ Object.defineProperty(window, 'location', {
355
+ writable: true,
356
+ value: { pathname: '/login', search: '?provider=azure', href: 'http://localhost/login?provider=azure' }
357
+ });
358
+ expect(getProvider()).toBe('azure');
359
+ });
360
+ it('returns null when no provider param is present and path is not oauth', () => {
361
+ Object.defineProperty(window, 'location', {
362
+ writable: true,
363
+ value: { pathname: '/hits', search: '', href: 'http://localhost/hits' }
364
+ });
365
+ expect(getProvider()).toBeNull();
366
+ });
367
+ });
368
+ describe('searchResultsDisplay', () => {
369
+ const originalLocation = window.location;
370
+ afterEach(() => {
371
+ Object.defineProperty(window, 'location', { value: originalLocation, writable: true });
372
+ });
373
+ it('returns count as string when below the max', () => {
374
+ Object.defineProperty(window, 'location', {
375
+ writable: true,
376
+ value: { pathname: '/', search: '', href: 'http://localhost/' }
377
+ });
378
+ expect(searchResultsDisplay(500)).toBe('500');
379
+ });
380
+ it('appends "+" when count equals the default max (10000) and no track_total_hits param', () => {
381
+ Object.defineProperty(window, 'location', {
382
+ writable: true,
383
+ value: { pathname: '/', search: '', href: 'http://localhost/' }
384
+ });
385
+ expect(searchResultsDisplay(10000)).toBe('10000+');
386
+ });
387
+ it('appends "+" when count matches the explicit track_total_hits param', () => {
388
+ Object.defineProperty(window, 'location', {
389
+ writable: true,
390
+ value: { pathname: '/', search: '?track_total_hits=500', href: 'http://localhost/?track_total_hits=500' }
391
+ });
392
+ expect(searchResultsDisplay(500)).toBe('500+');
393
+ });
394
+ it('does not append "+" when count does not equal track_total_hits', () => {
395
+ Object.defineProperty(window, 'location', {
396
+ writable: true,
397
+ value: { pathname: '/', search: '?track_total_hits=1000', href: 'http://localhost/?track_total_hits=1000' }
398
+ });
399
+ expect(searchResultsDisplay(500)).toBe('500');
400
+ });
401
+ it('uses a custom max when provided', () => {
402
+ Object.defineProperty(window, 'location', {
403
+ writable: true,
404
+ value: { pathname: '/', search: '', href: 'http://localhost/' }
405
+ });
406
+ expect(searchResultsDisplay(500, 500)).toBe('500+');
407
+ expect(searchResultsDisplay(499, 500)).toBe('499');
408
+ });
409
+ });
@@ -7,5 +7,8 @@ export const buildViewUrl = (view) => {
7
7
  if (view.sort) {
8
8
  params.set('sort', view.sort);
9
9
  }
10
+ if (view.indexes && view.indexes.length > 0) {
11
+ view.indexes.forEach(index => params.append('index', index));
12
+ }
10
13
  return `/search?${params.toString()}`;
11
14
  };
package/utils/xsrf.js CHANGED
@@ -7,7 +7,7 @@ const getXSRFCookie = () => {
7
7
  .find(row => row.startsWith('XSRF-TOKEN'))
8
8
  .split('=')[1];
9
9
  }
10
- catch (ex) {
10
+ catch {
11
11
  // Ignore... we will return null
12
12
  }
13
13
  }
@@ -1,3 +0,0 @@
1
- import type { Analytic } from '@cccsaurora/howler-ui/models/entities/generated/Analytic';
2
- export declare const uri: () => string;
3
- export declare const post: (body: Pick<Analytic, "description" | "name" | "rule" | "rule_type" | "rule_crontab">) => Promise<Analytic>;
@@ -1,8 +0,0 @@
1
- import { hpost, joinUri } from '@cccsaurora/howler-ui/api';
2
- import { uri as parentUri } from '@cccsaurora/howler-ui/api/analytic';
3
- export const uri = () => {
4
- return joinUri(parentUri(), 'rules');
5
- };
6
- export const post = (body) => {
7
- return hpost(uri(), body);
8
- };
@@ -1,22 +0,0 @@
1
- import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
2
- import type { WithMetadata } from '@cccsaurora/howler-ui/models/WithMetadata';
3
- import type { FC, PropsWithChildren } from 'react';
4
- export interface HitContextType {
5
- hits: {
6
- [index: string]: Hit;
7
- };
8
- selectedHits: Hit[];
9
- addHitToSelection: (id: string) => void;
10
- removeHitFromSelection: (id: string) => void;
11
- clearSelectedHits: (except?: string) => void;
12
- loadHits: (hits: Hit[]) => void;
13
- updateHit: (newHit: Hit) => void;
14
- getHit: (id: string, force?: boolean) => Promise<WithMetadata<Hit>>;
15
- }
16
- export declare const HitContext: import("use-context-selector").Context<HitContextType>;
17
- /**
18
- * Central repository for storing individual hit data across the application. Allows efficient retrieval of hits across componenents.
19
- */
20
- declare const HitProvider: FC<PropsWithChildren>;
21
- export declare const useHitContextSelector: <Selected>(selector: (value: HitContextType) => Selected) => Selected;
22
- export default HitProvider;
@@ -1,6 +0,0 @@
1
- import type { FC } from 'react';
2
- declare const BundleButton: FC<{
3
- ids: string[];
4
- disabled?: boolean;
5
- }>;
6
- export default BundleButton;
@@ -1,32 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { AccountTree } from '@mui/icons-material';
3
- import { ListItemText, Menu, MenuItem, Typography } from '@mui/material';
4
- import TuiIconButton from '@cccsaurora/howler-ui/components/elements/addons/buttons/CustomIconButton';
5
- import { useCallback, useState } from 'react';
6
- import { useTranslation } from 'react-i18next';
7
- import { useNavigate } from 'react-router-dom';
8
- const BundleButton = ({ ids, disabled = false }) => {
9
- const { t } = useTranslation();
10
- const navigate = useNavigate();
11
- const [anchorEl, setAnchorEl] = useState(null);
12
- const onClick = useCallback((event) => {
13
- if (ids.length === 1) {
14
- navigate(`/bundles/${ids[0]}`);
15
- }
16
- else {
17
- setAnchorEl(event.currentTarget);
18
- }
19
- }, [ids, navigate]);
20
- const handleClose = useCallback(() => setAnchorEl(null), []);
21
- return (_jsxs(_Fragment, { children: [_jsx(TuiIconButton, { size: "small", tooltip: t(`hit.panel.bundles.open${ids.length > 1 ? '' : '.prompt'}`), onClick: onClick, disabled: disabled, "aria-disabled": disabled, "aria-haspopup": "true", "aria-controls": anchorEl ? 'bundle-action-menu' : undefined, "aria-expanded": anchorEl ? 'true' : undefined, children: _jsx(AccountTree, {}) }), _jsx(Menu, { id: "bundle-action-menu", anchorEl: anchorEl, open: !!anchorEl, onClose: handleClose, MenuListProps: {
22
- dense: true,
23
- 'aria-labelledby': `bundle-button`
24
- }, anchorOrigin: {
25
- vertical: 'bottom',
26
- horizontal: 'right'
27
- }, transformOrigin: {
28
- vertical: 'top',
29
- horizontal: 'right'
30
- }, children: ids.map(id => (_jsx(MenuItem, { onClick: () => navigate(`/bundles/${id}`), children: _jsx(ListItemText, { primary: t('hit.panel.bundles.open.prompt'), secondary: _jsx(Typography, { variant: "caption", color: "text.secondary", children: id }) }) }, id))) })] }));
31
- };
32
- export default BundleButton;
@@ -1,6 +0,0 @@
1
- import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
2
- import type { FC } from 'react';
3
- declare const HitRelated: FC<{
4
- hit: Hit;
5
- }>;
6
- export default HitRelated;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Grid } from '@mui/material';
3
- import RelatedLink from './related/RelatedLink';
4
- const HitRelated = ({ hit }) => {
5
- return (_jsx(Grid, { container: true, spacing: 1, pr: 2, children: hit?.howler.links?.map(l => (_jsx(Grid, { item: true, xs: 6, sm: 4, md: 3, children: _jsx(RelatedLink, { ...l }) }, l.title + l.href))) }));
6
- };
7
- export default HitRelated;
@@ -1,33 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { avatarClasses, AvatarGroup, Chip, Divider, Stack, Typography } from '@mui/material';
3
- import { useAppUser } from '@cccsaurora/howler-ui/commons/components/app/hooks';
4
- import HowlerAvatar from '@cccsaurora/howler-ui/components/elements/display/HowlerAvatar';
5
- import { useTranslation } from 'react-i18next';
6
- import { HitLayout } from '../HitLayout';
7
- const AvatarChip = ({ userId, noUser, placeholder, layout, hideLabel }) => {
8
- const userAvatar = (_jsx(HowlerAvatar, { userId: userId, sx: { height: layout !== HitLayout.COMFY ? 24 : 32, width: layout !== HitLayout.COMFY ? 24 : 32 } }));
9
- return hideLabel ? (userAvatar) : (_jsx(Chip, { variant: "outlined", sx: {
10
- width: 'fit-content',
11
- '& .MuiChip-icon': {
12
- marginLeft: 0
13
- }
14
- }, icon: userAvatar, label: userId && userId !== noUser ? userId : placeholder, size: layout !== HitLayout.COMFY ? 'small' : 'medium' }));
15
- };
16
- const HitUsers = ({ hit, layout, hideLabel = false, showAssigned = false, showAssessor = false }) => {
17
- const { t } = useTranslation();
18
- const { user } = useAppUser();
19
- const assessorVisible = showAssessor || hit.howler.assessment != null;
20
- const assigneeVisible = !hit.howler.assessor && (showAssigned || hit.howler.assignment !== 'unassigned');
21
- return (_jsxs(Stack, { direction: hideLabel ? 'row' : 'column', spacing: 0.5, alignItems: "flex-start", children: [_jsxs(Stack, { display: "grid", gridTemplateColumns: "repeat(2, 1fr)", alignItems: "center", columnGap: 0.5, rowGap: 0.25, children: [assigneeVisible && (_jsxs(_Fragment, { children: [!hideLabel && _jsxs(Typography, { variant: "caption", children: [t('app.drawer.hit.assignment.assignee'), ":"] }), _jsx(AvatarChip, { userId: hit?.howler.assignment, noUser: "unassigned", placeholder: t('app.drawer.hit.assignment.unassigned.name'), layout: layout, hideLabel: hideLabel })] })), assessorVisible && (_jsxs(_Fragment, { children: [!hideLabel && _jsxs(Typography, { variant: "caption", children: [t('app.drawer.hit.assessment.assessor'), ":"] }), _jsx(AvatarChip, { userId: hit.howler.assessor, noUser: "unknown", placeholder: t('app.drawer.hit.assessment.unknown.name'), layout: layout, hideLabel: hideLabel })] }))] }), hit.howler.viewers?.length > 0 && hideLabel && _jsx(Divider, { orientation: "vertical", flexItem: true, variant: "middle" }), _jsx(AvatarGroup, { max: 3, sx: { [`.${avatarClasses.root}`]: { border: 0, marginLeft: 0.5 } }, componentsProps: {
22
- additionalAvatar: {
23
- sx: {
24
- height: layout !== HitLayout.COMFY ? 24 : 32,
25
- width: layout !== HitLayout.COMFY ? 24 : 32,
26
- fontSize: '12px'
27
- }
28
- }
29
- }, children: [...new Set(hit?.howler.viewers)]
30
- .filter(viewer => viewer !== user.username)
31
- .map(viewer => (_jsx(HowlerAvatar, { userId: viewer, sx: { height: layout !== HitLayout.COMFY ? 24 : 32, width: layout !== HitLayout.COMFY ? 24 : 32 } }, viewer))) })] }));
32
- };
33
- export default HitUsers;
@@ -1,7 +0,0 @@
1
- import type { FC } from 'react';
2
- declare const RuleModal: FC<{
3
- onSubmit: () => void;
4
- fileData: string;
5
- type: 'eql' | 'lucene' | 'yaml';
6
- }>;
7
- export default RuleModal;