@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.
- package/api/action/execute.d.ts +1 -1
- package/api/action/index.d.ts +10 -6
- package/api/action/index.js +5 -9
- package/api/action/operations.js +2 -2
- package/api/analytic/comments/index.d.ts +4 -6
- package/api/analytic/comments/react.d.ts +2 -2
- package/api/analytic/favourite.d.ts +2 -4
- package/api/analytic/index.d.ts +7 -4
- package/api/analytic/index.js +2 -2
- package/api/analytic/notebooks/index.d.ts +2 -4
- package/api/analytic/owner.d.ts +1 -1
- package/api/auth/apikey.d.ts +2 -2
- package/api/auth/login.d.ts +2 -2
- package/api/configs/index.d.ts +1 -1
- package/api/dossier.d.ts +16 -0
- package/api/{dossier/index.js → dossier.js} +6 -4
- package/api/help.d.ts +2 -2
- package/api/hit/assign.d.ts +6 -2
- package/api/hit/comments/index.d.ts +4 -6
- package/api/hit/comments/react.d.ts +2 -2
- package/api/hit/index.d.ts +3 -8
- package/api/hit/labels.d.ts +2 -2
- package/api/hit/overwrite.d.ts +1 -1
- package/api/hit/transition.d.ts +1 -1
- package/api/index.d.ts +6 -6
- package/api/index.js +7 -6
- package/api/notebook/environments.d.ts +1 -1
- package/api/notebook/index.d.ts +1 -1
- package/api/overview/index.d.ts +4 -4
- package/api/search/action.d.ts +1 -1
- package/api/search/analytic.d.ts +1 -1
- package/api/search/case.d.ts +1 -1
- package/api/search/count/hit.d.ts +1 -1
- package/api/search/dossier.d.ts +1 -1
- package/api/search/eql/hit.d.ts +1 -1
- package/api/search/explain/hit.d.ts +1 -1
- package/api/search/facet/hit.d.ts +1 -1
- package/api/search/fields/hit.js +1 -2
- package/api/search/fields/user.js +2 -4
- package/api/search/grouped/hit.d.ts +1 -1
- package/api/search/grouped/user.js +3 -0
- package/api/search/histogram/hit.d.ts +1 -1
- package/api/search/hit.d.ts +1 -1
- package/api/search/overview.d.ts +1 -1
- package/api/search/sigma/hit.d.ts +1 -1
- package/api/search/template.d.ts +1 -1
- package/api/search/user.d.ts +30 -2
- package/api/search/user.js +3 -0
- package/api/search/view.d.ts +1 -1
- package/api/socket/viewers.d.ts +1 -1
- package/api/socket/viewers.js +1 -1
- package/api/template/index.d.ts +3 -3
- package/api/template/index.js +2 -2
- package/api/user/avatar/index.d.ts +1 -1
- package/api/user/groups.d.ts +1 -1
- package/api/user/index.d.ts +2 -2
- package/api/user/whoami.d.ts +1 -1
- package/api/utils/createPermissionsApi.d.ts +10 -0
- package/api/utils/createPermissionsApi.js +10 -0
- package/api/v2/case/index.d.ts +4 -4
- package/api/v2/case/items.d.ts +3 -3
- package/api/v2/case/rules.d.ts +3 -3
- package/api/v2/fuzzy.d.ts +1 -1
- package/api/v2/search/facet.d.ts +1 -1
- package/api/v2/search/index.d.ts +1 -1
- package/api/view/favourite.d.ts +2 -4
- package/api/view/index.d.ts +9 -5
- package/api/view/index.js +3 -1
- package/branding/AppBrand.d.ts +2 -2
- package/branding/AppBrand.js +4 -6
- package/components/app/App.js +248 -51
- package/components/app/AppContainer.js +1 -1
- package/components/app/drawers/ApiKeyDrawer.js +13 -5
- package/components/app/drawers/AssignUserDrawer.js +11 -4
- package/components/app/hooks/useMatchers.d.ts +3 -3
- package/components/app/hooks/useMatchers.js +12 -12
- package/components/app/hooks/useMatchers.test.js +15 -14
- package/components/app/hooks/useTitle.js +8 -7
- package/components/app/providers/AnalyticProvider.d.ts +1 -1
- package/components/app/providers/AnalyticProvider.js +7 -4
- package/components/app/providers/ApiConfigProvider.d.ts +2 -1
- package/components/app/providers/ApiConfigProvider.js +12 -10
- package/components/app/providers/AppDrawerProvider.js +2 -2
- package/components/app/providers/AvatarProvider.js +18 -11
- package/components/app/providers/FavouritesProvider.js +56 -86
- package/components/app/providers/FieldProvider.js +1 -1
- package/components/app/providers/GridColumnsProvider.d.ts +1 -1
- package/components/app/providers/GridColumnsProvider.js +17 -4
- package/components/app/providers/GridColumnsProvider.test.js +2 -1
- package/components/app/providers/LocalStorageProvider.d.ts +2 -2
- package/components/app/providers/LocalStorageProvider.js +4 -3
- package/components/app/providers/ModalProvider.js +8 -1
- package/components/app/providers/OverviewProvider.js +10 -2
- package/components/app/providers/ParameterProvider.d.ts +7 -7
- package/components/app/providers/ParameterProvider.js +42 -5
- package/components/app/providers/ParameterProvider.test.js +1 -0
- package/components/app/providers/RecordProvider.js +7 -1
- package/components/app/providers/RecordSearchProvider.d.ts +1 -2
- package/components/app/providers/RecordSearchProvider.js +32 -23
- package/components/app/providers/RecordSearchProvider.test.js +2 -1
- package/components/app/providers/SearchResponseProvider.d.ts +9 -6
- package/components/app/providers/SearchResponseProvider.js +37 -19
- package/components/app/providers/SearchResponseProvider.test.js +37 -11
- package/components/app/providers/SocketProvider.js +6 -4
- package/components/app/providers/UserListProvider.d.ts +1 -1
- package/components/app/providers/ViewProvider.d.ts +2 -2
- package/components/app/providers/ViewProvider.js +22 -12
- package/components/app/providers/ViewProvider.test.js +2 -2
- package/components/app/providers/contextUtils.d.ts +1 -0
- package/components/app/providers/contextUtils.js +3 -0
- package/components/elements/Comment.d.ts +1 -1
- package/components/elements/Comment.js +11 -9
- package/components/elements/ContextMenu.js +1 -1
- package/components/elements/ContextMenu.test.js +2 -2
- package/components/elements/EditRow.d.ts +9 -4
- package/components/elements/EditRow.js +5 -4
- package/components/elements/MarkdownEditor.js +1 -1
- package/components/elements/MembershipManagement.test.js +178 -0
- package/components/elements/ObjectDetails.js +6 -6
- package/components/elements/ThemedEditor.js +17 -17
- package/components/elements/UserList.d.ts +2 -0
- package/components/elements/UserList.js +26 -18
- package/components/elements/UserList.test.js +24 -1
- package/components/elements/addons/buttons/CustomButton.d.ts +1 -1
- package/components/elements/addons/buttons/CustomButton.js +2 -2
- package/components/elements/addons/buttons/CustomIconButton.d.ts +1 -1
- package/components/elements/addons/buttons/CustomIconButton.js +3 -3
- package/components/elements/addons/buttons/index.d.ts +1 -1
- package/components/elements/addons/layout/FlexOne.d.ts +2 -2
- package/components/elements/addons/layout/FlexOne.test.js +1 -0
- package/components/elements/addons/layout/FlexPort.d.ts +1 -1
- package/components/elements/addons/layout/FlexPort.js +9 -2
- package/components/elements/addons/layout/FlexVertical.d.ts +2 -2
- package/components/elements/addons/layout/FlexVertical.js +1 -1
- package/components/elements/addons/layout/vsbox/VSBox.d.ts +2 -2
- package/components/elements/addons/layout/vsbox/VSBox.js +5 -4
- package/components/elements/addons/layout/vsbox/VSBoxElement.d.ts +1 -1
- package/components/elements/addons/layout/vsbox/VSBoxHeader.js +4 -3
- package/components/elements/addons/lists/TuiList.d.ts +2 -2
- package/components/elements/addons/lists/TuiList.js +1 -1
- package/components/elements/addons/lists/TuiListBase.d.ts +2 -2
- package/components/elements/addons/lists/TuiListBase.js +4 -4
- package/components/elements/addons/lists/TuiListElement.d.ts +2 -2
- package/components/elements/addons/lists/TuiListElement.js +2 -2
- package/components/elements/addons/lists/TuiListMenu.d.ts +13 -37
- package/components/elements/addons/lists/TuiListMenu.js +8 -8
- package/components/elements/addons/lists/TuiListProvider.d.ts +2 -2
- package/components/elements/addons/lists/TuiListProvider.js +4 -4
- package/components/elements/addons/lists/hooks/useTuiListKeyboard.js +1 -1
- package/components/elements/addons/lists/table/TuiTable.d.ts +1 -1
- package/components/elements/addons/lists/table/TuiTable.js +1 -1
- package/components/elements/addons/lists/table/TuiTableBody.d.ts +1 -1
- package/components/elements/addons/lists/table/TuiTableBody.js +1 -1
- package/components/elements/addons/lists/table/TuiTableHead.d.ts +1 -1
- package/components/elements/addons/lists/table/TuiTableHead.js +1 -1
- package/components/elements/addons/lists/table/TuiTableHeader.d.ts +1 -1
- package/components/elements/addons/lists/table/TuiTableLayout.js +1 -1
- package/components/elements/addons/search/SearchPagination.d.ts +1 -1
- package/components/elements/addons/search/SearchPagination.test.js +1 -1
- package/components/elements/addons/search/SearchTotal.d.ts +1 -1
- package/components/elements/addons/search/phrase/Phrase.d.ts +2 -2
- package/components/elements/addons/search/phrase/Phrase.js +7 -7
- package/components/elements/addons/search/phrase/PhraseConsumer.d.ts +2 -2
- package/components/elements/addons/search/phrase/PhraseLexer.d.ts +1 -1
- package/components/elements/addons/search/phrase/PhraseLexer.js +6 -6
- package/components/elements/addons/search/phrase/WordLexer.test.js +1 -0
- package/components/elements/addons/search/phrase/index.d.ts +2 -2
- package/components/elements/addons/search/phrase/index.js +3 -2
- package/components/elements/addons/search/phrase/word/consumers/WhitespaceConsumer.d.ts +1 -1
- package/components/elements/addons/search/phrase/word/consumers/WhitespaceConsumer.js +1 -1
- package/components/elements/addons/search/phrase/word/consumers/WordConsumer.d.ts +1 -1
- package/components/elements/case/CaseCard.js +10 -4
- package/components/elements/case/CasePreview.js +1 -1
- package/components/elements/display/ActionButton.js +3 -1
- package/components/elements/display/ChipPopper.js +1 -1
- package/components/elements/display/ChipPopper.test.js +1 -0
- package/components/elements/display/Classification.js +6 -5
- package/components/elements/display/ClassificationChip.d.ts +2 -4
- package/components/elements/display/ClassificationChip.js +5 -3
- package/components/elements/display/DocumentationButton.js +1 -1
- package/components/elements/display/DocumentationButton.test.js +1 -1
- package/components/elements/display/HandlebarsMarkdown.js +2 -2
- package/components/elements/display/HowlerAvatar.d.ts +1 -0
- package/components/elements/display/HowlerAvatar.js +5 -4
- package/components/elements/display/HowlerAvatarHeader.js +2 -2
- package/components/elements/display/Image.test.js +1 -0
- package/components/elements/display/ItemManager.d.ts +6 -6
- package/components/elements/display/ItemManager.js +1 -1
- package/components/elements/display/Markdown.js +9 -3
- package/components/elements/display/Modal.js +3 -3
- package/components/elements/display/QueryResultText.js +1 -1
- package/components/elements/display/TextDivider.test.js +1 -0
- package/components/elements/display/TypingIndicator.d.ts +1 -1
- package/components/elements/display/UserPageWrapper.js +2 -2
- package/components/elements/display/handlebars/helpers.js +1 -1
- package/components/elements/display/json/JSONViewer.js +2 -2
- package/components/elements/display/markdownPlugins/tabs.js +4 -0
- package/components/elements/display/modals/CreateActionModal.js +1 -1
- package/components/elements/display/modals/RationaleModal.js +1 -2
- package/components/elements/display/modals/RationaleModal.test.js +9 -5
- package/components/elements/event/EventPreview.js +1 -1
- package/components/elements/hit/HitActions.js +5 -7
- package/components/elements/hit/HitBanner.js +4 -16
- package/components/elements/hit/HitBanner.test.js +11 -20
- package/components/elements/hit/HitLabels.js +23 -13
- package/components/elements/hit/HitLinks.js +4 -4
- package/components/elements/hit/HitNotebooks.js +28 -10
- package/components/elements/hit/HitOutline.js +9 -15
- package/components/elements/hit/HitOutline.test.js +5 -5
- package/components/elements/hit/HitOverview.js +3 -3
- package/components/elements/hit/HitPreview.d.ts +1 -1
- package/components/elements/hit/HitPreview.js +6 -7
- package/components/elements/hit/HitSummary.js +8 -8
- package/components/elements/hit/PivotTooltip.js +1 -1
- package/components/elements/hit/actions/ButtonActions.js +2 -2
- package/components/elements/hit/actions/DropdownActions.js +4 -4
- package/components/elements/hit/aggregate/HitGraph.js +28 -11
- package/components/elements/hit/elements/AnalyticLink.js +2 -2
- package/components/elements/hit/elements/AnalyticLink.test.js +1 -1
- package/components/elements/hit/elements/Assigned.js +1 -1
- package/components/elements/hit/elements/Assigned.test.js +1 -1
- package/components/elements/hit/elements/EscalationChip.js +2 -2
- package/components/elements/hit/elements/HitTimestamp.js +2 -2
- package/components/elements/hit/grid/AddColumnModal.js +2 -2
- package/components/elements/hit/grid/ColumnHeader.js +1 -1
- package/components/elements/hit/grid/RecordRow.js +1 -1
- package/components/elements/hit/grid/RecordTable.d.ts +4 -3
- package/components/elements/hit/grid/RecordTable.js +6 -6
- package/components/elements/hit/related/PivotLink.js +2 -2
- package/components/elements/hit/related/RelatedIcon.js +2 -2
- package/components/elements/hit/related/RelatedLink.js +1 -1
- package/components/elements/hit/related/RelatedRecords.js +1 -1
- package/components/elements/membership/Members.d.ts +6 -0
- package/components/elements/membership/Members.js +14 -0
- package/components/elements/membership/MembershipManagement.d.ts +9 -0
- package/components/elements/membership/MembershipManagement.js +119 -0
- package/components/elements/membership/types.d.ts +7 -0
- package/components/elements/membership/utils.d.ts +2 -0
- package/components/elements/membership/utils.js +6 -0
- package/components/elements/record/RecordComments.js +16 -10
- package/components/elements/record/RecordContextMenu.d.ts +2 -2
- package/components/elements/record/RecordContextMenu.js +11 -5
- package/components/elements/record/RecordContextMenu.test.js +14 -6
- package/components/elements/record/RecordRelated.js +2 -2
- package/components/elements/search/FuzzySearchBar.js +1 -1
- package/components/elements/view/LayoutToggle.d.ts +1 -1
- package/components/elements/view/ViewTitle.js +3 -4
- package/components/hooks/useHitActions.d.ts +1 -1
- package/components/hooks/useHitActions.js +25 -15
- package/components/hooks/useLocalStorage.d.ts +1 -1
- package/components/hooks/useLocalStorage.js +1 -1
- package/components/hooks/useLocalStorageItem.d.ts +11 -1
- package/components/hooks/useLocalStorageItem.js +7 -5
- package/components/hooks/useLocalStorageItem.test.js +23 -0
- package/components/hooks/useMyAccessibility.d.ts +7 -0
- package/components/hooks/useMyAccessibility.js +21 -0
- package/components/hooks/useMyApi.d.ts +1 -1
- package/components/hooks/useMyApi.js +4 -4
- package/components/hooks/useMyChart.d.ts +46 -48
- package/components/hooks/useMyChart.js +30 -9
- package/components/hooks/useMyCookies.d.ts +3 -0
- package/components/hooks/useMyCookies.js +8 -0
- package/components/hooks/useMyLocalStorage.d.ts +8 -2
- package/components/hooks/useMyLocalStorage.js +1 -1
- package/components/hooks/useMyPreferences.d.ts +1 -1
- package/components/hooks/useMyPreferences.js +93 -127
- package/components/hooks/useMyRouter.d.ts +2 -0
- package/components/hooks/useMyRouter.js +24 -0
- package/components/hooks/useMySearch.d.ts +1 -1
- package/components/hooks/useMySearch.js +17 -7
- package/components/hooks/useMySnackbar.js +1 -1
- package/components/hooks/useMyTheme.d.ts +1 -1
- package/components/hooks/useMyTheme.js +13 -8
- package/components/hooks/useMyTheme.test.js +11 -6
- package/components/hooks/useMyUser.d.ts +1 -1
- package/components/hooks/useMyUser.js +6 -5
- package/components/hooks/useMyUserFunctions.d.ts +2 -2
- package/components/hooks/useMyUserFunctions.js +14 -10
- package/components/hooks/useMyUserList.d.ts +1 -1
- package/components/hooks/useMyUtils.js +1 -1
- package/components/hooks/useParamState.js +5 -3
- package/components/hooks/useParamState.test.js +1 -1
- package/components/hooks/useRecordSelection.d.ts +4 -3
- package/components/hooks/useRecordSelection.js +5 -5
- package/components/hooks/useScrollRestoration.js +3 -3
- package/components/logins/Login.d.ts +1 -1
- package/components/logins/Login.js +4 -6
- package/components/logins/auth/OAuthLogin.js +1 -1
- package/components/logins/auth/UserPassLogin.d.ts +1 -1
- package/components/logins/hooks/useLogin.js +10 -6
- package/components/routes/403.js +1 -1
- package/components/routes/403.test.js +7 -3
- package/components/routes/404.js +1 -1
- package/components/routes/404.test.js +7 -3
- package/components/routes/ErrorBoundary.d.ts +2 -2
- package/components/routes/ErrorBoundary.js +2 -2
- package/components/routes/ErrorBoundary.test.js +1 -4
- package/components/routes/ErrorOccured.js +1 -1
- package/components/routes/ErrorOccured.test.js +7 -3
- package/components/routes/Logout.js +3 -4
- package/components/routes/Logout.test.js +12 -11
- package/components/routes/action/edit/ActionEditor.js +38 -30
- package/components/routes/action/shared/ActionReportDisplay.js +1 -1
- package/components/routes/action/shared/OperationEntry.js +2 -2
- package/components/routes/action/shared/OperationStep.js +12 -10
- package/components/routes/action/useMyActionFunctions.d.ts +3 -3
- package/components/routes/action/useMyActionFunctions.js +13 -13
- package/components/routes/action/view/ActionDetails.d.ts +1 -1
- package/components/routes/action/view/ActionDetails.js +46 -26
- package/components/routes/action/view/ActionSearch.js +11 -10
- package/components/routes/action/view/Integrations.js +2 -2
- package/components/routes/action/view/markdown/integrations.en.md.js +1 -1
- package/components/routes/action/view/markdown/integrations.fr.md.js +1 -1
- package/components/routes/admin/users/UserEditor.js +21 -8
- package/components/routes/admin/users/UserSearch.js +10 -9
- package/components/routes/advanced/QueryBuilder.js +17 -11
- package/components/routes/advanced/luceneCompletionProvider.js +42 -21
- package/components/routes/analytics/AnalyticComments.js +19 -14
- package/components/routes/analytics/AnalyticDetails.d.ts +1 -1
- package/components/routes/analytics/AnalyticDetails.js +20 -16
- package/components/routes/analytics/AnalyticHitComments.js +13 -6
- package/components/routes/analytics/AnalyticHitComments.test.js +5 -4
- package/components/routes/analytics/AnalyticNotebooks.js +5 -5
- package/components/routes/analytics/AnalyticOverview.js +28 -15
- package/components/routes/analytics/AnalyticOverviews.js +2 -2
- package/components/routes/analytics/AnalyticSearch.js +11 -10
- package/components/routes/analytics/AnalyticTemplates.js +3 -3
- package/components/routes/analytics/TriageSettings.d.ts +1 -1
- package/components/routes/analytics/TriageSettings.js +1 -1
- package/components/routes/analytics/widgets/Assessment.js +1 -1
- package/components/routes/analytics/widgets/Created.js +9 -9
- package/components/routes/analytics/widgets/Escalation.js +3 -3
- package/components/routes/analytics/widgets/Stacked.js +5 -5
- package/components/routes/analytics/widgets/Status.js +2 -2
- package/components/routes/cases/CaseViewer.js +1 -1
- package/components/routes/cases/CaseViewer.test.js +2 -2
- package/components/routes/cases/Cases.d.ts +1 -1
- package/components/routes/cases/Cases.js +8 -7
- package/components/routes/cases/constants.d.ts +3 -3
- package/components/routes/cases/detail/AlertPanel.js +1 -1
- package/components/routes/cases/detail/AlertPanel.test.js +4 -6
- package/components/routes/cases/detail/CaseDashboard.js +8 -4
- package/components/routes/cases/detail/CaseDashboard.test.js +2 -2
- package/components/routes/cases/detail/CaseDetails.js +7 -2
- package/components/routes/cases/detail/CaseDetails.test.js +1 -1
- package/components/routes/cases/detail/CaseObservables.js +5 -4
- package/components/routes/cases/detail/CaseObservables.test.js +1 -1
- package/components/routes/cases/detail/CaseOverview.js +2 -2
- package/components/routes/cases/detail/CaseRules.js +10 -6
- package/components/routes/cases/detail/CaseRules.test.js +2 -2
- package/components/routes/cases/detail/CaseSearch.js +5 -5
- package/components/routes/cases/detail/CaseSearch.test.js +2 -2
- package/components/routes/cases/detail/CaseSidebar.js +12 -7
- package/components/routes/cases/detail/CaseSidebar.test.js +5 -6
- package/components/routes/cases/detail/CaseTask.js +27 -15
- package/components/routes/cases/detail/CaseTask.test.js +8 -1
- package/components/routes/cases/detail/CaseTimeline.js +8 -8
- package/components/routes/cases/detail/CaseTimeline.test.js +6 -6
- package/components/routes/cases/detail/CreateRuleDialog.js +4 -4
- package/components/routes/cases/detail/CreateRuleDialog.test.js +2 -2
- package/components/routes/cases/detail/ItemPage.js +3 -3
- package/components/routes/cases/detail/MarkdownPage.test.js +0 -4
- package/components/routes/cases/detail/RelatedCasePanel.js +1 -1
- package/components/routes/cases/detail/RelatedCasePanel.test.js +4 -6
- package/components/routes/cases/detail/TaskPanel.js +8 -8
- package/components/routes/cases/detail/TaskPanel.test.js +3 -3
- package/components/routes/cases/detail/aggregates/CaseAggregate.js +1 -1
- package/components/routes/cases/detail/aggregates/SourceAggregate.js +3 -3
- package/components/routes/cases/detail/observables/Observable.js +4 -5
- package/components/routes/cases/detail/observables/Observable.test.js +1 -1
- package/components/routes/cases/detail/observables/ObservableTable.js +3 -3
- package/components/routes/cases/detail/observables/ObservableTable.test.js +1 -1
- package/components/routes/cases/detail/sidebar/CaseFolder.js +24 -20
- package/components/routes/cases/detail/sidebar/CaseFolder.test.js +1 -1
- package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.js +4 -2
- package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.js +3 -2
- package/components/routes/cases/detail/sidebar/FolderEntry.js +3 -3
- package/components/routes/cases/detail/sidebar/FolderEntry.test.js +3 -3
- package/components/routes/cases/detail/sidebar/types.d.ts +1 -1
- package/components/routes/cases/detail/sidebar/utils.js +1 -1
- package/components/routes/cases/detail/sidebar/utils.test.js +8 -8
- package/components/routes/cases/detail/utils.d.ts +1 -1
- package/components/routes/cases/detail/utils.js +3 -2
- package/components/routes/cases/hooks/useCase.js +14 -2
- package/components/routes/cases/modals/AddRecordToCaseModal.test.js +1 -1
- package/components/routes/cases/modals/AddToCaseModal.d.ts +1 -1
- package/components/routes/cases/modals/AddToCaseModal.js +2 -2
- package/components/routes/cases/modals/CreateCaseModal.test.js +1 -1
- package/components/routes/cases/modals/ResolveModal.js +8 -5
- package/components/routes/cases/modals/ResolveModal.test.js +5 -5
- package/components/routes/cases/modals/hooks.js +1 -2
- package/components/routes/cases/modals/types.d.ts +1 -1
- package/components/routes/cases/search/CaseAssigneeFilter.js +1 -1
- package/components/routes/cases/search/CaseAssigneeFilter.test.js +8 -3
- package/components/routes/cases/search/CaseStatusFilter.test.js +1 -0
- package/components/routes/cases/utils.d.ts +0 -1
- package/components/routes/cases/utils.js +4 -13
- package/components/routes/dossiers/DossierCard.js +3 -3
- package/components/routes/dossiers/DossierCard.test.js +6 -6
- package/components/routes/dossiers/DossierEditor.js +61 -25
- package/components/routes/dossiers/DossierEditor.test.js +16 -9
- package/components/routes/dossiers/Dossiers.d.ts +1 -1
- package/components/routes/dossiers/Dossiers.js +6 -5
- package/components/routes/dossiers/LeadEditor.d.ts +1 -1
- package/components/routes/dossiers/LeadEditor.js +2 -2
- package/components/routes/dossiers/LeadForm.js +2 -2
- package/components/routes/dossiers/PivotForm.d.ts +1 -1
- package/components/routes/dossiers/PivotForm.js +10 -9
- package/components/routes/events/EventViewer.js +1 -1
- package/components/routes/help/ActionDocumentation.js +2 -2
- package/components/routes/help/ActionIntroductionDocumentation.js +2 -2
- package/components/routes/help/ApiDocumentation.js +3 -4
- package/components/routes/help/AuthDocumentation.js +1 -1
- package/components/routes/help/ClientDocumentation.js +1 -1
- package/components/routes/help/Help.d.ts +1 -1
- package/components/routes/help/Help.js +5 -4
- package/components/routes/help/HitDocumentation.js +3 -3
- package/components/routes/help/HitLabelsDocumentation.js +12 -12
- package/components/routes/help/HitLinksDocumentation.js +2 -2
- package/components/routes/help/HitSchemaDocumentation.js +14 -8
- package/components/routes/help/NotebookDocumentation.js +1 -1
- package/components/routes/help/OverviewDocumentation.js +1 -1
- package/components/routes/help/RetentionDocumentation.js +3 -3
- package/components/routes/help/SearchDocumentation.js +6 -4
- package/components/routes/help/TemplateDocumentation.js +2 -2
- package/components/routes/help/ViewDocumentation.js +1 -1
- package/components/routes/help/markdown/en/views.md.js +1 -1
- package/components/routes/help/markdown/fr/views.md.js +1 -1
- package/components/routes/hits/search/InformationPane.js +8 -8
- package/components/routes/hits/search/QuerySettings.js +1 -1
- package/components/routes/hits/search/QuerySettings.test.js +8 -4
- package/components/routes/hits/search/RecordBrowser.js +12 -9
- package/components/routes/hits/search/RecordQuery.js +13 -10
- package/components/routes/hits/search/SearchPane.js +2 -3
- package/components/routes/hits/search/ViewLink.js +4 -4
- package/components/routes/hits/search/ViewLink.test.js +1 -0
- package/components/routes/hits/search/grid/RecordGrid.js +1 -1
- package/components/routes/hits/search/shared/CustomSort.js +3 -2
- package/components/routes/hits/search/shared/CustomSpan.js +9 -1
- package/components/routes/hits/search/shared/HitFilter.js +8 -3
- package/components/routes/hits/search/shared/HitSort.js +8 -6
- package/components/routes/hits/search/shared/IndexPicker.js +1 -1
- package/components/routes/hits/search/shared/LayoutSettings.js +1 -1
- package/components/routes/hits/search/shared/SearchActionMenu.d.ts +1 -1
- package/components/routes/hits/search/shared/SearchActionMenu.js +1 -1
- package/components/routes/hits/search/shared/SearchSpan.js +1 -1
- package/components/routes/hits/view/HitViewer.js +21 -11
- package/components/routes/hits/view/HitViewer.test.js +2 -2
- package/components/routes/home/AddNewCard.d.ts +2 -1
- package/components/routes/home/AddNewCard.js +7 -4
- package/components/routes/home/AnalyticCard.js +3 -3
- package/components/routes/home/EntryWrapper.js +1 -1
- package/components/routes/home/ViewCard.js +11 -7
- package/components/routes/home/ViewCard.test.js +3 -6
- package/components/routes/home/index.js +20 -17
- package/components/routes/overviews/OverviewCard.js +6 -2
- package/components/routes/overviews/OverviewViewer.d.ts +1 -1
- package/components/routes/overviews/OverviewViewer.js +48 -39
- package/components/routes/overviews/Overviews.d.ts +1 -1
- package/components/routes/overviews/Overviews.js +7 -6
- package/components/routes/overviews/markdownExtendedTokenProvider.test.js +1 -0
- package/components/routes/overviews/startingTemplate.js +1 -1
- package/components/routes/settings/ProfileSection.d.ts +1 -1
- package/components/routes/settings/ProfileSection.js +2 -2
- package/components/routes/settings/SecuritySection.d.ts +1 -1
- package/components/routes/settings/SecuritySection.js +2 -2
- package/components/routes/settings/Settings.js +6 -6
- package/components/routes/templates/TemplateCard.js +1 -1
- package/components/routes/templates/TemplateEditor.d.ts +1 -1
- package/components/routes/templates/TemplateEditor.js +3 -3
- package/components/routes/templates/TemplateViewer.d.ts +1 -1
- package/components/routes/templates/TemplateViewer.js +54 -52
- package/components/routes/templates/Templates.d.ts +1 -1
- package/components/routes/templates/Templates.js +10 -9
- package/components/routes/views/ViewComposer.js +38 -30
- package/components/routes/views/Views.d.ts +2 -1
- package/components/routes/views/Views.js +20 -14
- package/i18n.js +4 -0
- package/locales/en/translation.json +10 -0
- package/locales/fr/translation.json +10 -0
- package/models/entities/HowlerUser.d.ts +1 -1
- package/models/entities/generated/Action.d.ts +3 -1
- package/models/entities/generated/ApiType.d.ts +2 -3
- package/models/entities/generated/Dossier.d.ts +2 -0
- package/models/entities/generated/HowlerDossier.d.ts +2 -0
- package/models/entities/generated/Item.d.ts +2 -2
- package/models/entities/generated/Settings.d.ts +1 -1
- package/models/entities/generated/View.d.ts +2 -0
- package/package.json +102 -118
- package/plugins/HowlerPlugin.d.ts +9 -50
- package/plugins/HowlerPlugin.js +7 -113
- package/plugins/clue/Provider.js +2 -2
- package/plugins/clue/components/ClueLeadForm.js +2 -2
- package/plugins/clue/components/CluePivot.js +6 -7
- package/plugins/clue/components/CluePivotForm.js +26 -15
- package/plugins/clue/components/ClueTypography.js +2 -2
- package/plugins/clue/helpers.js +5 -5
- package/plugins/clue/index.d.ts +2 -2
- package/plugins/clue/index.js +1 -1
- package/plugins/clue/setup.js +1 -1
- package/plugins/clue/utils.d.ts +1 -1
- package/plugins/store.d.ts +26 -43
- package/plugins/store.js +2 -15
- package/rest/AxiosClient.js +3 -3
- package/rest/FetchClient.d.ts +1 -1
- package/rest/FetchClient.js +8 -5
- package/rest/FetchClient.test.js +7 -4
- package/rest/index.d.ts +4 -3
- package/setupTests.d.ts +3 -0
- package/tests/MockLocalStorage.js +2 -1
- package/tests/mocks.d.ts +2 -2
- package/tests/mocks.js +3 -3
- package/tests/server-handlers.js +1 -1
- package/utils/Throttler.js +1 -1
- package/utils/actionUtils.d.ts +1 -1
- package/utils/actionUtils.js +10 -6
- package/utils/classificationParser.js +56 -63
- package/utils/constants.d.ts +0 -17
- package/utils/constants.js +1 -18
- package/utils/exampleHit.d.ts +2 -0
- package/utils/exampleHit.js +18 -0
- package/utils/localStorage.d.ts +2 -2
- package/utils/localStorage.js +1 -1
- package/utils/menuUtils.d.ts +3 -89
- package/utils/menuUtils.js +66 -227
- package/utils/menuUtils.test.js +45 -181
- package/utils/sessionStorage.js +1 -1
- package/utils/sessionStorage.test.js +1 -0
- package/utils/stringUtils.d.ts +1 -1
- package/utils/utils.d.ts +30 -6
- package/utils/utils.js +66 -9
- package/utils/utils.test.js +1 -0
- package/utils/xsrf.d.ts +1 -1
- package/utils/xsrf.js +5 -10
- package/api/dossier/hit.d.ts +0 -2
- package/api/dossier/hit.js +0 -7
- package/api/dossier/index.d.ts +0 -9
- package/commons/components/app/AppConfigs.d.ts +0 -137
- package/commons/components/app/AppConstants.d.ts +0 -10
- package/commons/components/app/AppConstants.js +0 -10
- package/commons/components/app/AppContexts.d.ts +0 -105
- package/commons/components/app/AppContexts.js +0 -21
- package/commons/components/app/AppDefaults.d.ts +0 -6
- package/commons/components/app/AppDefaults.js +0 -40
- package/commons/components/app/AppNotificationService.d.ts +0 -6
- package/commons/components/app/AppNotificationService.js +0 -1
- package/commons/components/app/AppProvider.d.ts +0 -15
- package/commons/components/app/AppProvider.js +0 -41
- package/commons/components/app/AppSearchService.d.ts +0 -21
- package/commons/components/app/AppSearchService.js +0 -1
- package/commons/components/app/AppSkeleton.d.ts +0 -5
- package/commons/components/app/AppSkeleton.js +0 -152
- package/commons/components/app/AppUserService.d.ts +0 -17
- package/commons/components/app/AppUserService.js +0 -1
- package/commons/components/app/hooks/index.d.ts +0 -18
- package/commons/components/app/hooks/index.js +0 -18
- package/commons/components/app/hooks/useApp.d.ts +0 -1
- package/commons/components/app/hooks/useApp.js +0 -5
- package/commons/components/app/hooks/useAppBanner.d.ts +0 -1
- package/commons/components/app/hooks/useAppBanner.js +0 -6
- package/commons/components/app/hooks/useAppBar.d.ts +0 -1
- package/commons/components/app/hooks/useAppBar.js +0 -5
- package/commons/components/app/hooks/useAppBarHeight.d.ts +0 -2
- package/commons/components/app/hooks/useAppBarHeight.js +0 -22
- package/commons/components/app/hooks/useAppBarScrollTrigger.d.ts +0 -1
- package/commons/components/app/hooks/useAppBarScrollTrigger.js +0 -7
- package/commons/components/app/hooks/useAppBreadcrumbs.d.ts +0 -1
- package/commons/components/app/hooks/useAppBreadcrumbs.js +0 -5
- package/commons/components/app/hooks/useAppConfigs.d.ts +0 -59
- package/commons/components/app/hooks/useAppConfigs.js +0 -44
- package/commons/components/app/hooks/useAppLanguage.d.ts +0 -6
- package/commons/components/app/hooks/useAppLanguage.js +0 -17
- package/commons/components/app/hooks/useAppLayout.d.ts +0 -1
- package/commons/components/app/hooks/useAppLayout.js +0 -5
- package/commons/components/app/hooks/useAppLeftNav.d.ts +0 -1
- package/commons/components/app/hooks/useAppLeftNav.js +0 -5
- package/commons/components/app/hooks/useAppLogo.d.ts +0 -1
- package/commons/components/app/hooks/useAppLogo.js +0 -8
- package/commons/components/app/hooks/useAppNotification.d.ts +0 -1
- package/commons/components/app/hooks/useAppNotification.js +0 -5
- package/commons/components/app/hooks/useAppQuickSearch.d.ts +0 -1
- package/commons/components/app/hooks/useAppQuickSearch.js +0 -5
- package/commons/components/app/hooks/useAppSearchService.d.ts +0 -2
- package/commons/components/app/hooks/useAppSearchService.js +0 -5
- package/commons/components/app/hooks/useAppSitemap.d.ts +0 -16
- package/commons/components/app/hooks/useAppSitemap.js +0 -70
- package/commons/components/app/hooks/useAppSwitcher.d.ts +0 -1
- package/commons/components/app/hooks/useAppSwitcher.js +0 -5
- package/commons/components/app/hooks/useAppTheme.d.ts +0 -8
- package/commons/components/app/hooks/useAppTheme.js +0 -12
- package/commons/components/app/hooks/useAppUser.d.ts +0 -2
- package/commons/components/app/hooks/useAppUser.js +0 -5
- package/commons/components/app/providers/AppBarProvider.d.ts +0 -10
- package/commons/components/app/providers/AppBarProvider.js +0 -24
- package/commons/components/app/providers/AppBreadcrumbsProvider.d.ts +0 -6
- package/commons/components/app/providers/AppBreadcrumbsProvider.js +0 -43
- package/commons/components/app/providers/AppLayoutProvider.d.ts +0 -6
- package/commons/components/app/providers/AppLayoutProvider.js +0 -73
- package/commons/components/app/providers/AppLeftNavProvider.d.ts +0 -6
- package/commons/components/app/providers/AppLeftNavProvider.js +0 -22
- package/commons/components/app/providers/AppNotificationProvider.d.ts +0 -6
- package/commons/components/app/providers/AppNotificationProvider.js +0 -31
- package/commons/components/app/providers/AppQuickSearchProvider.d.ts +0 -8
- package/commons/components/app/providers/AppQuickSearchProvider.js +0 -19
- package/commons/components/app/providers/AppSearchServiceProvider.d.ts +0 -6
- package/commons/components/app/providers/AppSearchServiceProvider.js +0 -46
- package/commons/components/app/providers/AppSnackbarProvider.d.ts +0 -3
- package/commons/components/app/providers/AppSnackbarProvider.js +0 -15
- package/commons/components/app/providers/AppSwitcherProvider.d.ts +0 -6
- package/commons/components/app/providers/AppSwitcherProvider.js +0 -10
- package/commons/components/app/providers/AppUserProvider.d.ts +0 -8
- package/commons/components/app/providers/AppUserProvider.js +0 -12
- package/commons/components/breadcrumbs/BreadcrumbIcon.d.ts +0 -6
- package/commons/components/breadcrumbs/BreadcrumbIcon.js +0 -9
- package/commons/components/breadcrumbs/BreadcrumbLastItem.d.ts +0 -7
- package/commons/components/breadcrumbs/BreadcrumbLastItem.js +0 -19
- package/commons/components/breadcrumbs/BreadcrumbLinkItem.d.ts +0 -7
- package/commons/components/breadcrumbs/BreadcrumbLinkItem.js +0 -20
- package/commons/components/breadcrumbs/BreadcrumbList.d.ts +0 -11
- package/commons/components/breadcrumbs/BreadcrumbList.js +0 -44
- package/commons/components/breadcrumbs/Breadcrumbs.d.ts +0 -5
- package/commons/components/breadcrumbs/Breadcrumbs.js +0 -31
- package/commons/components/display/AppAvatar.d.ts +0 -8
- package/commons/components/display/AppAvatar.js +0 -18
- package/commons/components/display/AppInfoPanel.d.ts +0 -5
- package/commons/components/display/AppInfoPanel.js +0 -17
- package/commons/components/display/AppListEmpty.d.ts +0 -2
- package/commons/components/display/AppListEmpty.js +0 -5
- package/commons/components/display/AppToc.d.ts +0 -20
- package/commons/components/display/AppToc.js +0 -98
- package/commons/components/display/hooks/useAppColor.d.ts +0 -5
- package/commons/components/display/hooks/useAppColor.js +0 -10
- package/commons/components/leftnav/LeftNavDrawer.d.ts +0 -3
- package/commons/components/leftnav/LeftNavDrawer.js +0 -99
- package/commons/components/leftnav/LeftNavGroup.d.ts +0 -8
- package/commons/components/leftnav/LeftNavGroup.js +0 -55
- package/commons/components/leftnav/LeftNavItem.d.ts +0 -11
- package/commons/components/leftnav/LeftNavItem.js +0 -29
- package/commons/components/notification/FeedModels.d.ts +0 -64
- package/commons/components/notification/FeedModels.js +0 -94
- package/commons/components/notification/Notification.d.ts +0 -10
- package/commons/components/notification/Notification.js +0 -95
- package/commons/components/notification/elements/NotificationCloseButton.d.ts +0 -3
- package/commons/components/notification/elements/NotificationCloseButton.js +0 -6
- package/commons/components/notification/elements/NotificationContainer.d.ts +0 -16
- package/commons/components/notification/elements/NotificationContainer.js +0 -29
- package/commons/components/notification/elements/NotificationEndOfPage.d.ts +0 -5
- package/commons/components/notification/elements/NotificationEndOfPage.js +0 -36
- package/commons/components/notification/elements/NotificationError.d.ts +0 -2
- package/commons/components/notification/elements/NotificationError.js +0 -10
- package/commons/components/notification/elements/NotificationHeader.d.ts +0 -8
- package/commons/components/notification/elements/NotificationHeader.js +0 -18
- package/commons/components/notification/elements/NotificationItems.d.ts +0 -12
- package/commons/components/notification/elements/NotificationItems.js +0 -12
- package/commons/components/notification/elements/NotificationSkeleton.d.ts +0 -2
- package/commons/components/notification/elements/NotificationSkeleton.js +0 -12
- package/commons/components/notification/elements/NotificationTopNavButton.d.ts +0 -9
- package/commons/components/notification/elements/NotificationTopNavButton.js +0 -9
- package/commons/components/notification/elements/item/NotificationItem.d.ts +0 -5
- package/commons/components/notification/elements/item/NotificationItem.js +0 -25
- package/commons/components/notification/elements/item/NotificationItemAuthor.d.ts +0 -5
- package/commons/components/notification/elements/item/NotificationItemAuthor.js +0 -31
- package/commons/components/notification/elements/item/NotificationItemContent.d.ts +0 -3
- package/commons/components/notification/elements/item/NotificationItemContent.js +0 -9
- package/commons/components/notification/elements/item/NotificationItemDate.d.ts +0 -3
- package/commons/components/notification/elements/item/NotificationItemDate.js +0 -10
- package/commons/components/notification/elements/item/NotificationItemImage.d.ts +0 -4
- package/commons/components/notification/elements/item/NotificationItemImage.js +0 -8
- package/commons/components/notification/elements/item/NotificationItemTag.d.ts +0 -4
- package/commons/components/notification/elements/item/NotificationItemTag.js +0 -12
- package/commons/components/notification/elements/item/NotificationItemTitle.d.ts +0 -3
- package/commons/components/notification/elements/item/NotificationItemTitle.js +0 -15
- package/commons/components/notification/index.d.ts +0 -2
- package/commons/components/notification/index.js +0 -2
- package/commons/components/pages/PageCardCentered.d.ts +0 -5
- package/commons/components/pages/PageCardCentered.js +0 -30
- package/commons/components/pages/PageCenter.d.ts +0 -9
- package/commons/components/pages/PageCenter.js +0 -20
- package/commons/components/pages/PageContent.d.ts +0 -8
- package/commons/components/pages/PageContent.js +0 -8
- package/commons/components/pages/PageFullScreen.d.ts +0 -11
- package/commons/components/pages/PageFullScreen.js +0 -40
- package/commons/components/pages/PageFullWidth.d.ts +0 -11
- package/commons/components/pages/PageFullWidth.js +0 -7
- package/commons/components/pages/PageHeader.d.ts +0 -23
- package/commons/components/pages/PageHeader.js +0 -27
- package/commons/components/pages/hooks/usePageProps.d.ts +0 -24
- package/commons/components/pages/hooks/usePageProps.js +0 -19
- package/commons/components/search/AppSearch.d.ts +0 -1
- package/commons/components/search/AppSearch.js +0 -135
- package/commons/components/search/AppSearchInput.d.ts +0 -12
- package/commons/components/search/AppSearchInput.js +0 -35
- package/commons/components/search/AppSearchResult.d.ts +0 -5
- package/commons/components/search/AppSearchResult.js +0 -28
- package/commons/components/topnav/AppBar.d.ts +0 -6
- package/commons/components/topnav/AppBar.js +0 -80
- package/commons/components/topnav/AppName.d.ts +0 -5
- package/commons/components/topnav/AppName.js +0 -31
- package/commons/components/topnav/AppSwitcher.d.ts +0 -3
- package/commons/components/topnav/AppSwitcher.js +0 -44
- package/commons/components/topnav/Notifications.d.ts +0 -2
- package/commons/components/topnav/Notifications.js +0 -8
- package/commons/components/topnav/ThemeSelection.d.ts +0 -3
- package/commons/components/topnav/ThemeSelection.js +0 -33
- package/commons/components/topnav/ThemeSelectionIcon.d.ts +0 -2
- package/commons/components/topnav/ThemeSelectionIcon.js +0 -16
- package/commons/components/topnav/UserProfile.d.ts +0 -6
- package/commons/components/topnav/UserProfile.js +0 -71
- package/commons/components/utils/hooks/useClipboard.d.ts +0 -3
- package/commons/components/utils/hooks/useClipboard.js +0 -29
- package/commons/components/utils/hooks/useEnv.d.ts +0 -1
- package/commons/components/utils/hooks/useEnv.js +0 -11
- package/commons/components/utils/hooks/useFullscreenStatus.d.ts +0 -2
- package/commons/components/utils/hooks/useFullscreenStatus.js +0 -41
- package/commons/components/utils/hooks/useGravatar.d.ts +0 -2
- package/commons/components/utils/hooks/useGravatar.js +0 -9
- package/commons/components/utils/hooks/useLocalStorage.d.ts +0 -12
- package/commons/components/utils/hooks/useLocalStorage.js +0 -52
- package/commons/components/utils/hooks/useLocalStorageItem.d.ts +0 -14
- package/commons/components/utils/hooks/useLocalStorageItem.js +0 -39
- package/commons/components/utils/hooks/useThemeBuilder.d.ts +0 -7
- package/commons/components/utils/hooks/useThemeBuilder.js +0 -48
- package/commons/components/utils/keyboard.d.ts +0 -30
- package/commons/components/utils/keyboard.js +0 -50
- package/components/hooks/useMySitemap.d.ts +0 -3
- package/components/hooks/useMySitemap.js +0 -219
- /package/{commons/components/app/AppConfigs.js → components/elements/MembershipManagement.test.d.ts} +0 -0
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { useMediaQuery, useTheme } from '@mui/material';
|
|
2
|
-
import { useMemo } from 'react';
|
|
3
|
-
const PagePropsDefaults = { margin: null, mt: 2, mr: 2, mb: 2, ml: 2 };
|
|
4
|
-
export default function usePageProps({ props, defaultOverrides = PagePropsDefaults }) {
|
|
5
|
-
const { className, width, height, margin, mt, mr, mb, ml } = { ...PagePropsDefaults, ...defaultOverrides, ...props };
|
|
6
|
-
const theme = useTheme();
|
|
7
|
-
const divider = useMediaQuery(theme.breakpoints.up('md')) ? 1 : 2;
|
|
8
|
-
return useMemo(() => ({
|
|
9
|
-
className,
|
|
10
|
-
style: {
|
|
11
|
-
width,
|
|
12
|
-
height,
|
|
13
|
-
marginBottom: theme.spacing(margin !== null ? margin / divider : mb / divider),
|
|
14
|
-
marginLeft: theme.spacing(margin !== null ? margin / divider : ml / divider),
|
|
15
|
-
marginRight: theme.spacing(margin !== null ? margin / divider : mr / divider),
|
|
16
|
-
marginTop: theme.spacing(margin !== null ? margin / divider : mt / divider)
|
|
17
|
-
}
|
|
18
|
-
}), [className, width, height, margin, mt, mr, mb, ml, divider, theme]);
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function AppSearch(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Search } from '@mui/icons-material';
|
|
3
|
-
import { Box, ClickAwayListener, Dialog, DialogContent, DialogTitle, emphasize, IconButton, Popper, Slide, Stack, styled, Tooltip, useMediaQuery, useTheme } from '@mui/material';
|
|
4
|
-
import { useAppSearchService } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppSearchService';
|
|
5
|
-
import AppSearchInput from '@cccsaurora/howler-ui/commons/components/search/AppSearchInput';
|
|
6
|
-
import AppSearchResult from '@cccsaurora/howler-ui/commons/components/search/AppSearchResult';
|
|
7
|
-
import { parseEvent } from '@cccsaurora/howler-ui/commons/components/utils/keyboard';
|
|
8
|
-
import { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
|
|
9
|
-
import { useTranslation } from 'react-i18next';
|
|
10
|
-
const MENU_LIST_SX = { maxHeight: 500, overflow: 'auto' };
|
|
11
|
-
const AppSearchRoot = styled(Box, { shouldForwardProp: prop => prop !== 'menuOpen' })(({ theme, menuOpen }) => {
|
|
12
|
-
const backgroundColor = emphasize(theme.palette.background.default, 0.1);
|
|
13
|
-
return {
|
|
14
|
-
position: 'relative',
|
|
15
|
-
borderRadius: theme.shape.borderRadius,
|
|
16
|
-
borderBottomLeftRadius: menuOpen && 0,
|
|
17
|
-
borderBottomRightRadius: menuOpen && 0,
|
|
18
|
-
'.app-search-input': {
|
|
19
|
-
backgroundColor: theme.palette.mode === 'dark' ? backgroundColor : menuOpen ? theme.palette.background.default : backgroundColor,
|
|
20
|
-
boxShadow: menuOpen && theme.shadows[4]
|
|
21
|
-
},
|
|
22
|
-
'.app-search-result': {
|
|
23
|
-
backgroundColor: theme.palette.mode === 'dark' ? backgroundColor : theme.palette.background.default,
|
|
24
|
-
borderBottomLeftRadius: theme.shape.borderRadius,
|
|
25
|
-
borderBottomRightRadius: theme.shape.borderRadius,
|
|
26
|
-
boxShadow: menuOpen && theme.shadows[4],
|
|
27
|
-
color: theme.palette.text.primary
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
const ModalTransition = forwardRef(function Transition(props, ref) {
|
|
32
|
-
const { children, ..._props } = props;
|
|
33
|
-
return (_jsx(Slide, { direction: "down", ref: ref, ..._props, children: children }));
|
|
34
|
-
});
|
|
35
|
-
export default function AppSearch() {
|
|
36
|
-
const theme = useTheme();
|
|
37
|
-
const menuRef = useRef(null);
|
|
38
|
-
const showSearchIcon = useMediaQuery(theme.breakpoints.down('lg'));
|
|
39
|
-
const { t } = useTranslation();
|
|
40
|
-
const { provided, state, service } = useAppSearchService();
|
|
41
|
-
const [value, setValue] = useState('');
|
|
42
|
-
// const [fullscreen, setFullscreen] = useState<boolean>(false);
|
|
43
|
-
useEffect(() => {
|
|
44
|
-
if (service.onMounted) {
|
|
45
|
-
service.onMounted(setValue, state);
|
|
46
|
-
}
|
|
47
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
-
}, []);
|
|
49
|
-
// keyboard[window] handler.
|
|
50
|
-
// this is to trigger the CTLR+K shortcut to appsearch.
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
const keyHandler = event => {
|
|
53
|
-
const { key, isCtrl } = parseEvent(event);
|
|
54
|
-
if (isCtrl && key === 'k') {
|
|
55
|
-
event.preventDefault();
|
|
56
|
-
const inputRef = menuRef.current.querySelector('input');
|
|
57
|
-
if (provided && !inputRef) {
|
|
58
|
-
state.set({ ...state, menu: !state.menu, mode: 'fullscreen' });
|
|
59
|
-
}
|
|
60
|
-
else if (provided && state.menu) {
|
|
61
|
-
state.set({ ...state, mode: 'fullscreen' });
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
inputRef.focus();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
window.addEventListener('keydown', keyHandler);
|
|
69
|
-
return () => {
|
|
70
|
-
window.removeEventListener('keydown', keyHandler);
|
|
71
|
-
};
|
|
72
|
-
}, [provided, state]);
|
|
73
|
-
// Search input focus handler.
|
|
74
|
-
const onFocus = useCallback(() => {
|
|
75
|
-
//state.setMenu(!!state?.items && state.items.length > 0);
|
|
76
|
-
state.set({ ...state, menu: true });
|
|
77
|
-
}, [state]);
|
|
78
|
-
// Search input change handler.
|
|
79
|
-
const onChange = useCallback((event) => {
|
|
80
|
-
setValue(event.currentTarget.value);
|
|
81
|
-
if (service.onChange) {
|
|
82
|
-
service.onChange(event.currentTarget.value, state, setValue);
|
|
83
|
-
}
|
|
84
|
-
}, [service, state]);
|
|
85
|
-
// keyboard[ENTER] handler.
|
|
86
|
-
const onEnter = useCallback(() => {
|
|
87
|
-
if (service.onEnter) {
|
|
88
|
-
state.set({ ...state, menu: true });
|
|
89
|
-
service.onEnter(value, state);
|
|
90
|
-
}
|
|
91
|
-
}, [value, state, service]);
|
|
92
|
-
// Keyboard handler.
|
|
93
|
-
const onKeyDown = useCallback((event) => {
|
|
94
|
-
const { isEnter, isEscape, isArrowDown } = parseEvent(event);
|
|
95
|
-
if (isEnter) {
|
|
96
|
-
onEnter();
|
|
97
|
-
}
|
|
98
|
-
else if (isEscape) {
|
|
99
|
-
state.set({ ...state, menu: !state.menu });
|
|
100
|
-
}
|
|
101
|
-
else if (isArrowDown) {
|
|
102
|
-
const result = document.querySelector('[data-tui-id="tui-app-search-result"]');
|
|
103
|
-
if (result) {
|
|
104
|
-
// Prevent scolling before menu list gets focus.
|
|
105
|
-
// Doing this prevents the menu list from scrolling down
|
|
106
|
-
// and then back up on second arrow down.
|
|
107
|
-
event.preventDefault(); // prevent native scroll.
|
|
108
|
-
result.focus();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}, [state, onEnter]);
|
|
112
|
-
// Clear search input handler.
|
|
113
|
-
const onClear = useCallback(() => {
|
|
114
|
-
setValue('');
|
|
115
|
-
state.set({ ...state, items: null });
|
|
116
|
-
}, [state]);
|
|
117
|
-
// Fullscreen modal toggle handler.
|
|
118
|
-
const onToggleFullscreen = useCallback(() => {
|
|
119
|
-
state.set({ ...state, mode: state.mode === 'inline' ? 'fullscreen' : 'inline' });
|
|
120
|
-
}, [state]);
|
|
121
|
-
return (_jsx(ClickAwayListener, { onClickAway: () => state.set({ ...state, menu: false }), children: _jsxs(AppSearchRoot, { ref: menuRef, sx: { mr: !showSearchIcon && 1 }, menuOpen: state.menu, children: [showSearchIcon ? (_jsx(IconButton, { color: "inherit", size: "large", onClick: () => state.set({ ...state, menu: !state.menu, mode: 'fullscreen' }), children: _jsx(Tooltip, { title: _jsxs(Stack, { direction: "column", textAlign: "center", children: [_jsx("span", { children: t('app.search.fullscreen') }), " ", _jsx("span", { children: "CTLR+K" })] }), children: _jsx(Search, {}) }) })) : (_jsxs(_Fragment, { children: [_jsx(AppSearchInput, { showToggle: true, provided: provided, className: "app-search-input", value: value, searching: state.searching, open: state.menu, onFocus: onFocus, onChange: onChange, onKeyDown: onKeyDown, onClear: onClear, onToggleFullscreen: onToggleFullscreen }), provided && (_jsx(Popper, { open: state.menu && state.mode === 'inline', anchorEl: menuRef.current, placement: "bottom-end", sx: _theme => ({ width: '100%', zIndex: _theme.zIndex.appBar + 1 }), disablePortal: true, children: _jsx(AppSearchResult, { className: "app-search-result", sx: MENU_LIST_SX }) }))] })), _jsxs(Dialog, { disableRestoreFocus: true, fullWidth: true, maxWidth: "md", TransitionComponent: ModalTransition, open: state.menu && state.mode === 'fullscreen', onClose: () => state.set({ ...state, mode: 'inline', menu: false }), sx: {
|
|
122
|
-
maxHeight: '75%',
|
|
123
|
-
margin: 0,
|
|
124
|
-
'.MuiDialog-container': {
|
|
125
|
-
alignItems: 'start'
|
|
126
|
-
}
|
|
127
|
-
}, PaperProps: {
|
|
128
|
-
sx: {
|
|
129
|
-
borderTopLeftRadius: 0,
|
|
130
|
-
borderTopRightRadius: 0,
|
|
131
|
-
margin: 0,
|
|
132
|
-
width: '100%'
|
|
133
|
-
}
|
|
134
|
-
}, children: [_jsx(DialogTitle, { children: _jsx(AppSearchInput, { autoFocus: true, className: "app-search-input", style: { backgroundColor: emphasize(theme.palette.background.default, 0.1) }, showToggle: false, value: value, searching: state.searching, open: false, onFocus: onFocus, onChange: onChange, onKeyDown: onKeyDown, onClear: onClear, onToggleFullscreen: onToggleFullscreen }) }), provided && state.items && (_jsx(DialogContent, { children: _jsx(AppSearchResult, {}) })), provided && service.footerRenderer && service.footerRenderer(state)] })] }) }));
|
|
135
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type InputBaseProps } from '@mui/material';
|
|
2
|
-
type AppSearchInputProps = {
|
|
3
|
-
searching?: boolean;
|
|
4
|
-
provided?: boolean;
|
|
5
|
-
showToggle?: boolean;
|
|
6
|
-
open?: boolean;
|
|
7
|
-
onClear: () => void;
|
|
8
|
-
onToggleFullscreen: () => void;
|
|
9
|
-
} & InputBaseProps;
|
|
10
|
-
declare const AppSearchInput: ({ searching, provided, autoFocus, showToggle, value, open, onClear, onToggleFullscreen, onFocus, onChange, onKeyDown, ...inputProps }: AppSearchInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
declare const _default: import("react").MemoExoticComponent<typeof AppSearchInput>;
|
|
12
|
-
export default _default;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Clear, Search } from '@mui/icons-material';
|
|
3
|
-
import { Button, CircularProgress, IconButton, InputAdornment, InputBase, Stack, Tooltip } from '@mui/material';
|
|
4
|
-
import { memo, useCallback, useRef } from 'react';
|
|
5
|
-
import { useTranslation } from 'react-i18next';
|
|
6
|
-
const AppSearchInput = ({ searching, provided, autoFocus, showToggle, value, open, onClear, onToggleFullscreen, onFocus, onChange, onKeyDown, ...inputProps }) => {
|
|
7
|
-
const { t } = useTranslation();
|
|
8
|
-
const rootRef = useRef();
|
|
9
|
-
// CTRL+K button click handler.
|
|
10
|
-
// Decicde whether to open search in normal or fullscreen/modal mode.
|
|
11
|
-
const onToggleClick = useCallback(() => {
|
|
12
|
-
if (open && provided) {
|
|
13
|
-
onToggleFullscreen();
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
rootRef.current.querySelector('input').focus();
|
|
17
|
-
}
|
|
18
|
-
}, [open, provided, onToggleFullscreen]);
|
|
19
|
-
return (_jsx(Stack, { direction: "row", ref: rootRef, children: _jsx(InputBase, { ...inputProps, fullWidth: true, autoComplete: "off", autoFocus: autoFocus, value: value, onFocus: onFocus, onChange: onChange, onKeyDown: onKeyDown, placeholder: t('quicksearch.placeholder'), inputProps: { 'aria-label': t('quicksearch.aria') }, startAdornment: _jsx(InputAdornment, { position: "start", sx: theme => ({ color: theme.palette.text.disabled }), children: searching ? _jsx(CircularProgress, { size: 24, color: "inherit" }) : _jsx(Search, { color: "inherit" }) }), endAdornment: _jsxs(InputAdornment, { position: "end", sx: theme => ({ color: theme.palette.text.disabled }), children: [showToggle && (_jsx(Tooltip, { title: t(open && provided ? 'app.search.fullscreen' : 'app.search.shortcut'), children: _jsx(Button, { size: "small", color: "inherit", onClick: onToggleClick, children: "CTRL+K" }) })), _jsx(IconButton, { color: "inherit", onClick: onClear, children: _jsx(Clear, {}) })] }), sx: theme => ({
|
|
20
|
-
color: theme.palette.text.secondary,
|
|
21
|
-
width: '100%',
|
|
22
|
-
paddingTop: 0.5,
|
|
23
|
-
paddingBottom: 0.5,
|
|
24
|
-
paddingLeft: 1.5,
|
|
25
|
-
paddingRight: 1,
|
|
26
|
-
// backgroundColor: emphasize(theme.palette.background.default, 0.1),
|
|
27
|
-
// backgroundColor: theme.palette.background,
|
|
28
|
-
borderTopLeftRadius: theme.spacing(0.5),
|
|
29
|
-
borderTopRightRadius: theme.spacing(0.5),
|
|
30
|
-
borderBottomLeftRadius: open ? 0 : theme.spacing(0.5),
|
|
31
|
-
borderBottomRightRadius: open ? 0 : theme.spacing(0.5)
|
|
32
|
-
// boxShadow: theme.palette.mode === 'light' && theme.shadows[2]
|
|
33
|
-
}) }) }));
|
|
34
|
-
};
|
|
35
|
-
export default memo(AppSearchInput);
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { type MenuListProps } from '@mui/material';
|
|
2
|
-
type AppSearchResultProps = MenuListProps;
|
|
3
|
-
declare const AppSearchResult: ({ className, ...menuProps }: AppSearchResultProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
declare const _default: import("react").MemoExoticComponent<typeof AppSearchResult>;
|
|
5
|
-
export default _default;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, MenuItem, MenuList, Typography } from '@mui/material';
|
|
3
|
-
import { useAppSearchService } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppSearchService';
|
|
4
|
-
import { memo, useMemo } from 'react';
|
|
5
|
-
import { useTranslation } from 'react-i18next';
|
|
6
|
-
import AppListEmpty from '@cccsaurora/howler-ui/commons/components/display/AppListEmpty';
|
|
7
|
-
import { parseEvent } from '@cccsaurora/howler-ui/commons/components/utils/keyboard';
|
|
8
|
-
const AppSearchResult = ({ className, ...menuProps }) => {
|
|
9
|
-
const { t } = useTranslation();
|
|
10
|
-
const { state, service } = useAppSearchService();
|
|
11
|
-
const onKeyDown = (event, item) => {
|
|
12
|
-
const { isEnter, isEscape } = parseEvent(event);
|
|
13
|
-
if (isEnter) {
|
|
14
|
-
if (service.onItemSelect) {
|
|
15
|
-
service.onItemSelect(item, state);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
else if (isEscape) {
|
|
19
|
-
state.set({ ...state, menu: false });
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
const options = useMemo(() => state.items?.reduce((_options, _item, index) => ({
|
|
23
|
-
..._options,
|
|
24
|
-
[index]: { state, index, last: index === state.items.length - 1 }
|
|
25
|
-
}), {}), [state]);
|
|
26
|
-
return (_jsxs("div", { className: className, children: [_jsx(MenuList, { "data-tui-id": "tui-app-search-result", ...menuProps, children: state.items?.length > 0 ? (state.items.map((item, index) => (_jsx(MenuItem, { onKeyDown: event => onKeyDown(event, item), children: service.itemRenderer(item, options[index]) }, item.id)))) : state.items ? (_jsx(AppListEmpty, {})) : (_jsx(MenuItem, { disabled: true, children: _jsx(Box, { mt: 1, mb: 1, children: _jsx(Typography, { variant: "body2", children: _jsx("em", { children: t('app.search.starttyping') }) }) }) })) }), state.mode === 'inline' && service.footerRenderer && service.footerRenderer(state)] }));
|
|
27
|
-
};
|
|
28
|
-
export default memo(AppSearchResult);
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare const AppBarBase: ({ children }: {
|
|
2
|
-
children: any;
|
|
3
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
declare const AppBar: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
declare const _default: import("react").MemoExoticComponent<typeof AppBar>;
|
|
6
|
-
export default _default;
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, AppBar as MuiAppBar, Toolbar, useMediaQuery, useTheme } from '@mui/material';
|
|
3
|
-
import { useAppBar, useAppBreadcrumbs, useAppConfigs, useAppLayout, useAppQuickSearch } from '@cccsaurora/howler-ui/commons/components/app/hooks';
|
|
4
|
-
import { APPBAR_READY_EVENT } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppBarHeight';
|
|
5
|
-
import Breadcrumbs from '@cccsaurora/howler-ui/commons/components/breadcrumbs/Breadcrumbs';
|
|
6
|
-
import AppSearch from '@cccsaurora/howler-ui/commons/components/search/AppSearch';
|
|
7
|
-
import AppName from '@cccsaurora/howler-ui/commons/components/topnav/AppName';
|
|
8
|
-
import AppSwitcher from '@cccsaurora/howler-ui/commons/components/topnav/AppSwitcher';
|
|
9
|
-
import { Notifications } from '@cccsaurora/howler-ui/commons/components/topnav/Notifications';
|
|
10
|
-
import ThemeSelectionIcon from '@cccsaurora/howler-ui/commons/components/topnav/ThemeSelectionIcon';
|
|
11
|
-
import UserProfile from '@cccsaurora/howler-ui/commons/components/topnav/UserProfile';
|
|
12
|
-
import { memo, useCallback, useLayoutEffect, useMemo } from 'react';
|
|
13
|
-
export const AppBarBase = ({ children }) => {
|
|
14
|
-
const layout = useAppLayout();
|
|
15
|
-
const configs = useAppConfigs();
|
|
16
|
-
const appbar = useAppBar();
|
|
17
|
-
const isTopLayout = layout.current === 'top';
|
|
18
|
-
const autoHide = !isTopLayout && appbar.autoHide;
|
|
19
|
-
const elevation = useMemo(() => {
|
|
20
|
-
if (layout.current === 'side') {
|
|
21
|
-
return 0;
|
|
22
|
-
}
|
|
23
|
-
return configs.theme.appbar?.elevation !== undefined ? configs.theme.appbar?.elevation : 1;
|
|
24
|
-
}, [layout, configs.theme.appbar?.elevation]);
|
|
25
|
-
return (_jsx(MuiAppBar, { id: "appbar", position: autoHide && !isTopLayout ? 'relative' : 'sticky', elevation: elevation, sx: theme => ({
|
|
26
|
-
'@media print': {
|
|
27
|
-
display: 'none !important'
|
|
28
|
-
},
|
|
29
|
-
[theme.breakpoints.only('xs')]: {
|
|
30
|
-
zIndex: theme.zIndex.drawer - 1
|
|
31
|
-
},
|
|
32
|
-
...(isTopLayout
|
|
33
|
-
? {
|
|
34
|
-
zIndex: theme.zIndex.drawer + 1,
|
|
35
|
-
...(configs.theme.appbar ? configs.theme.appbar[theme.palette.mode] : {})
|
|
36
|
-
}
|
|
37
|
-
: {
|
|
38
|
-
color: theme.palette.getContrastText(theme.palette.background.paper),
|
|
39
|
-
backgroundColor: theme.palette.background.paper
|
|
40
|
-
})
|
|
41
|
-
}), children: children }));
|
|
42
|
-
};
|
|
43
|
-
const AppBar = () => {
|
|
44
|
-
// React Hooks.
|
|
45
|
-
const muiTheme = useTheme();
|
|
46
|
-
// TUI hooks.
|
|
47
|
-
const layout = useAppLayout();
|
|
48
|
-
const configs = useAppConfigs();
|
|
49
|
-
const breadcrumbs = useAppBreadcrumbs();
|
|
50
|
-
const quicksearch = useAppQuickSearch();
|
|
51
|
-
const { left, leftAfterBreadcrumbs, right, rightBeforeSearch, themeSelectionMode } = configs.preferences.topnav;
|
|
52
|
-
// media queries.
|
|
53
|
-
const isXs = useMediaQuery(muiTheme.breakpoints.only('xs'));
|
|
54
|
-
// const isSmUp = useMediaQuery(muiTheme.breakpoints.up('sm'));
|
|
55
|
-
const isMdDown = useMediaQuery(muiTheme.breakpoints.down('md'));
|
|
56
|
-
// const isMdUp = useMediaQuery(muiTheme.breakpoints.up('md'));
|
|
57
|
-
// compute some flags we need to perform render.
|
|
58
|
-
const isTopLayout = layout.current === 'top';
|
|
59
|
-
// const showSpacer = isXs || !quicksearch.show || (isMdUp && (breadcrumbs.show || !!left || !!leftAfterBreadcrumbs));
|
|
60
|
-
const showBreadcrumbs = breadcrumbs.show && !isMdDown;
|
|
61
|
-
// Once the dom is mounted, dispatch event to let listeners know
|
|
62
|
-
// that the apppbar/topbar dom is available.
|
|
63
|
-
// Primary usecase is to initialize the 'useAppBarHeight' hook.
|
|
64
|
-
// That value doesn't initialize properly because it typically gets
|
|
65
|
-
// called before the appbar is ready.
|
|
66
|
-
// The appbar/top bar is conditionally rendered on app/user ready state.
|
|
67
|
-
useLayoutEffect(() => {
|
|
68
|
-
window.dispatchEvent(new CustomEvent(APPBAR_READY_EVENT));
|
|
69
|
-
}, []);
|
|
70
|
-
const renderLeft = useCallback(() => (_jsxs(Box, { sx: {
|
|
71
|
-
display: 'flex',
|
|
72
|
-
flexDirection: 'row',
|
|
73
|
-
alignItems: 'center'
|
|
74
|
-
}, children: [(isTopLayout || isXs) && _jsx(AppName, { noName: isXs }), _jsx(Box, { sx: { ...(isTopLayout && { marginLeft: 3 }) } }), left, showBreadcrumbs && _jsx(Breadcrumbs, {}), leftAfterBreadcrumbs && (_jsx(Box, { sx: { ...(showBreadcrumbs && { marginLeft: 3, marginRight: 3 }) }, children: leftAfterBreadcrumbs }))] })), [showBreadcrumbs, leftAfterBreadcrumbs, isTopLayout, left, isXs]);
|
|
75
|
-
return (_jsx(AppBarBase, { children: _jsxs(Toolbar, { disableGutters: true, style: {
|
|
76
|
-
paddingLeft: !isXs && !isTopLayout ? muiTheme.spacing(2) : null,
|
|
77
|
-
paddingRight: muiTheme.spacing(1)
|
|
78
|
-
}, children: [renderLeft(), _jsx("div", { style: { flex: 1 } }), rightBeforeSearch, quicksearch.show && _jsx(AppSearch, {}), _jsx(Notifications, {}), right, themeSelectionMode === 'icon' && _jsx(ThemeSelectionIcon, {}), _jsx(AppSwitcher, {}), !configs.preferences.topnav.hideUserAvatar && _jsx(UserProfile, {})] }) }));
|
|
79
|
-
};
|
|
80
|
-
export default memo(AppBar);
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Menu } from '@mui/icons-material';
|
|
3
|
-
import { IconButton, styled, useMediaQuery, useTheme } from '@mui/material';
|
|
4
|
-
import { useAppConfigs, useAppLeftNav, useAppLogo } from '@cccsaurora/howler-ui/commons/components/app/hooks';
|
|
5
|
-
import { memo } from 'react';
|
|
6
|
-
import { Link } from 'react-router-dom';
|
|
7
|
-
const StyledTitle = styled('div')({
|
|
8
|
-
display: 'flex',
|
|
9
|
-
alignItems: 'center',
|
|
10
|
-
flex: '0 0 auto',
|
|
11
|
-
fontSize: '1.5rem',
|
|
12
|
-
letterSpacing: '-1px'
|
|
13
|
-
});
|
|
14
|
-
const StyledIcon = styled('div')(({ theme }) => ({
|
|
15
|
-
display: 'flex',
|
|
16
|
-
alignItems: 'center',
|
|
17
|
-
padding: '0',
|
|
18
|
-
minWidth: theme.spacing(7)
|
|
19
|
-
}));
|
|
20
|
-
const AppName = ({ noName }) => {
|
|
21
|
-
const theme = useTheme();
|
|
22
|
-
const logo = useAppLogo();
|
|
23
|
-
const configs = useAppConfigs();
|
|
24
|
-
const leftnav = useAppLeftNav();
|
|
25
|
-
const isXs = useMediaQuery(theme.breakpoints.only('xs'));
|
|
26
|
-
if (isXs) {
|
|
27
|
-
return (_jsxs(StyledTitle, { style: { paddingLeft: theme.spacing(2) }, children: [_jsx(StyledIcon, { children: _jsx(IconButton, { "aria-label": "open drawer", edge: "start", onClick: leftnav.toggle, size: "large", color: "inherit", children: _jsx(Menu, {}) }) }), _jsx("div", { children: !noName && configs.preferences.appName })] }));
|
|
28
|
-
}
|
|
29
|
-
return (_jsx(Link, { to: configs.preferences.appLink, style: { color: 'inherit', textDecoration: 'none', paddingLeft: theme.spacing(2) }, children: _jsxs(StyledTitle, { children: [_jsx(StyledIcon, { children: logo }), _jsx("div", { children: !noName && configs.preferences.appName })] }) }));
|
|
30
|
-
};
|
|
31
|
-
export default memo(AppName);
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Apps } from '@mui/icons-material';
|
|
3
|
-
import { Avatar, Button, ClickAwayListener, Fade, IconButton, Link, Paper, Popper, Typography, useMediaQuery, useTheme } from '@mui/material';
|
|
4
|
-
import { useAppSwitcher } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppSwitcher';
|
|
5
|
-
import { memo, useCallback, useRef, useState } from 'react';
|
|
6
|
-
const AppSwitcher = () => {
|
|
7
|
-
const theme = useTheme();
|
|
8
|
-
const anchorRef = useRef();
|
|
9
|
-
const appSwitcher = useAppSwitcher();
|
|
10
|
-
const [open, setOpen] = useState(false);
|
|
11
|
-
const isDarkTheme = theme.palette.mode === 'dark';
|
|
12
|
-
const sp1 = theme.spacing(1);
|
|
13
|
-
const isSm = useMediaQuery(theme.breakpoints.down('sm'));
|
|
14
|
-
const onTogglePopper = useCallback(() => setOpen(_open => !_open), []);
|
|
15
|
-
const onClickAway = useCallback(() => setOpen(false), []);
|
|
16
|
-
if (appSwitcher.empty) {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
return (_jsx(ClickAwayListener, { onClickAway: onClickAway, children: _jsxs(IconButton, { ref: anchorRef, color: "inherit", onClick: onTogglePopper, size: "large", children: [_jsx(Apps, {}), _jsx(Popper, { sx: { zIndex: theme.zIndex.drawer + 2 }, open: open, anchorEl: anchorRef.current, placement: "bottom-end", transition: true, children: ({ TransitionProps }) => (_jsx(Fade, { ...TransitionProps, timeout: 250, children: _jsx(Paper, { style: { textAlign: 'center', padding: theme.spacing(1) }, elevation: 4, children: _jsx("div", { style: {
|
|
20
|
-
display: 'flex',
|
|
21
|
-
flexDirection: 'row',
|
|
22
|
-
flexWrap: 'wrap',
|
|
23
|
-
maxWidth: appSwitcher.items.length <= 4 || isSm ? '240px' : '360px'
|
|
24
|
-
}, children: appSwitcher.items.map((a, i) => (_jsx("div", { style: { width: '120px', padding: sp1, overflow: 'hidden' }, children: _jsxs(Button, { component: Link, target: a.newWindow ? '_blank' : null, href: a.route, style: { display: 'inherit', textDecoration: 'none', fontWeight: 400, color: 'inherit' }, children: [_jsx("div", { style: { display: 'inline-flex' }, children: _jsx(Avatar, { variant: "rounded", alt: a.name, src: isDarkTheme
|
|
25
|
-
? typeof a.img_d === 'string'
|
|
26
|
-
? a.img_d
|
|
27
|
-
: null
|
|
28
|
-
: typeof a.img_l === 'string'
|
|
29
|
-
? a.img_l
|
|
30
|
-
: null, style: a.img_d === null || typeof a.img_d === 'string'
|
|
31
|
-
? { width: theme.spacing(8), height: theme.spacing(8) }
|
|
32
|
-
: { backgroundColor: 'transparent', width: theme.spacing(8), height: theme.spacing(8) }, sx: {
|
|
33
|
-
'& img': {
|
|
34
|
-
objectFit: 'contain'
|
|
35
|
-
}
|
|
36
|
-
}, children: isDarkTheme
|
|
37
|
-
? a.img_d !== null && typeof a.img_d !== 'string'
|
|
38
|
-
? a.img_d
|
|
39
|
-
: a.alt
|
|
40
|
-
: a.img_l !== null && typeof a.img_l !== 'string'
|
|
41
|
-
? a.img_l
|
|
42
|
-
: a.alt }, `avatar-${i}`) }), _jsx(Typography, { variant: "caption", children: a.name }, `text-${i}`)] }, `button-${i}`) }, `box-${i}`))) }) }) })) })] }) }));
|
|
43
|
-
};
|
|
44
|
-
export default memo(AppSwitcher);
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useAppNotification } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppNotification';
|
|
3
|
-
import { Notification } from '@cccsaurora/howler-ui/commons/components/notification';
|
|
4
|
-
import {} from 'react';
|
|
5
|
-
export const Notifications = () => {
|
|
6
|
-
const { service, state } = useAppNotification();
|
|
7
|
-
return (_jsx(Notification, { urls: service.feedUrls || state.urls, notificationItem: service.notificationRenderer, maxDrawerWidth: "800px", openIfNew: true }));
|
|
8
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Divider, List, ListItemButton, ListItemSecondaryAction, ListItemText, ListSubheader, Switch, Typography, useMediaQuery, useTheme } from '@mui/material';
|
|
3
|
-
import { APP_STORAGE_PREFIX } from '@cccsaurora/howler-ui/commons/components/app/AppConstants';
|
|
4
|
-
import { useAppBar, useAppBreadcrumbs, useAppConfigs, useAppLanguage, useAppLayout, useAppQuickSearch, useAppTheme } from '@cccsaurora/howler-ui/commons/components/app/hooks';
|
|
5
|
-
import useLocalStorage from '@cccsaurora/howler-ui/commons/components/utils/hooks/useLocalStorage';
|
|
6
|
-
import { memo } from 'react';
|
|
7
|
-
import { useTranslation } from 'react-i18next';
|
|
8
|
-
const ThemeSelection = () => {
|
|
9
|
-
const theme = useTheme();
|
|
10
|
-
const { t } = useTranslation();
|
|
11
|
-
const configs = useAppConfigs();
|
|
12
|
-
const layout = useAppLayout();
|
|
13
|
-
const breadcrumbs = useAppBreadcrumbs();
|
|
14
|
-
const language = useAppLanguage();
|
|
15
|
-
const appbar = useAppBar();
|
|
16
|
-
const appTheme = useAppTheme();
|
|
17
|
-
const quicksearch = useAppQuickSearch();
|
|
18
|
-
const localStorage = useLocalStorage(APP_STORAGE_PREFIX);
|
|
19
|
-
const isSmDown = useMediaQuery(theme.breakpoints.down('sm'));
|
|
20
|
-
const clearStorage = () => {
|
|
21
|
-
localStorage.clear();
|
|
22
|
-
window.location.reload();
|
|
23
|
-
};
|
|
24
|
-
return (_jsxs("div", { children: [configs.preferences.allowTranslate && (_jsx(List, { dense: true, subheader: _jsx(ListSubheader, { disableSticky: true, children: t('app.language') }), children: _jsx(ListItemButton, { dense: true, onClick: language.toggle, children: _jsx(ListItemText, { style: { margin: 0 }, children: _jsxs("div", { style: {
|
|
25
|
-
display: 'flex',
|
|
26
|
-
alignItems: 'center',
|
|
27
|
-
flexDirection: 'row',
|
|
28
|
-
width: '100%',
|
|
29
|
-
textAlign: 'center',
|
|
30
|
-
cursor: 'pointer'
|
|
31
|
-
}, children: [_jsx(Typography, { component: "div", variant: "body2", children: "English" }), _jsx("div", { style: { flexGrow: 1 }, children: _jsx(Switch, { checked: language.isFR(), name: "langSwitch" }) }), _jsx(Typography, { component: "div", variant: "body2", children: "Fran\u00E7ais" })] }) }) }) })), configs.preferences.allowTranslate && configs.allowPersonalization && _jsx(Divider, {}), configs.allowPersonalization && (_jsxs(List, { dense: true, subheader: _jsx(ListSubheader, { disableSticky: true, children: t('personalization') }), children: [configs.preferences.allowThemeSelection && (_jsxs(ListItemButton, { onClick: appTheme.toggle, children: [_jsx(ListItemText, { children: t('personalization.dark') }), _jsx(ListItemSecondaryAction, { children: _jsx(Switch, { edge: "end", onChange: appTheme.toggle, checked: theme.palette.mode === 'dark' }) })] })), configs.preferences.allowLayoutSelection && (_jsxs(ListItemButton, { onClick: layout.toggle, children: [_jsx(ListItemText, { children: t('personalization.sticky') }), _jsx(ListItemSecondaryAction, { onClick: layout.toggle, children: _jsx(Switch, { edge: "end", checked: layout.current === 'top' }) })] })), configs.preferences.allowQuickSearch && !isSmDown && (_jsxs(ListItemButton, { onClick: quicksearch.toggle, children: [_jsx(ListItemText, { children: t('personalization.quicksearch') }), _jsx(ListItemSecondaryAction, { children: _jsx(Switch, { edge: "end", checked: quicksearch.show, onClick: quicksearch.toggle }) })] })), configs.preferences.allowAutoHideTopbar && (_jsxs(ListItemButton, { disabled: layout.current === 'top', onClick: appbar.toggleAutoHide, children: [_jsx(ListItemText, { children: t('personalization.autohideappbar') }), _jsx(ListItemSecondaryAction, { children: _jsx(Switch, { edge: "end", disabled: layout.current === 'top', checked: appbar.autoHide && layout.current !== 'top', onClick: appbar.toggleAutoHide }) })] })), configs.preferences.allowBreadcrumbs && !isSmDown && (_jsx(_Fragment, { children: _jsxs(ListItemButton, { onClick: breadcrumbs.toggle, children: [_jsx(ListItemText, { children: t('personalization.showbreadcrumbs') }), _jsx(ListItemSecondaryAction, { children: _jsx(Switch, { edge: "end", checked: breadcrumbs.show, onClick: breadcrumbs.toggle }) })] }) }))] })), (configs.preferences.allowTranslate || configs.allowPersonalization) && configs.preferences.allowReset && (_jsx(Divider, {})), configs.preferences.allowReset && (_jsx(List, { dense: true, children: _jsx(ListItemButton, { dense: true, onClick: clearStorage, children: _jsx(ListItemText, { children: t('personalization.reset_text') }) }) }))] }));
|
|
32
|
-
};
|
|
33
|
-
export default memo(ThemeSelection);
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Tune } from '@mui/icons-material';
|
|
3
|
-
import { ClickAwayListener, Fade, IconButton, Paper, Popper, useTheme } from '@mui/material';
|
|
4
|
-
import { useAppConfigs } from '@cccsaurora/howler-ui/commons/components/app/hooks/useAppConfigs';
|
|
5
|
-
import ThemeSelection from '@cccsaurora/howler-ui/commons/components/topnav/ThemeSelection';
|
|
6
|
-
import { useRef, useState } from 'react';
|
|
7
|
-
const ThemeSelectionIcon = () => {
|
|
8
|
-
const anchorEl = useRef();
|
|
9
|
-
const theme = useTheme();
|
|
10
|
-
const { allowPersonalization, preferences } = useAppConfigs();
|
|
11
|
-
const [open, setOpen] = useState(false);
|
|
12
|
-
const onThemeSelectionClick = () => setOpen(!open);
|
|
13
|
-
const onClickAway = () => setOpen(false);
|
|
14
|
-
return allowPersonalization || preferences.allowTranslate || preferences.allowReset ? (_jsx(ClickAwayListener, { onClickAway: onClickAway, children: _jsxs(IconButton, { ref: anchorEl, color: "inherit", "aria-label": "open drawer", onClick: onThemeSelectionClick, size: "large", children: [_jsx(Tune, {}), _jsx(Popper, { sx: { zIndex: theme.zIndex.drawer + 2, minWidth: '280px' }, open: open, anchorEl: anchorEl.current, placement: "bottom-end", transition: true, children: ({ TransitionProps }) => (_jsx(Fade, { ...TransitionProps, timeout: 250, children: _jsx(Paper, { style: { padding: theme.spacing(1) }, elevation: 4, children: _jsx(ThemeSelection, {}) }) })) })] }) })) : null;
|
|
15
|
-
};
|
|
16
|
-
export default ThemeSelectionIcon;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { StyledComponent } from '@emotion/styled';
|
|
2
|
-
import { type AppAvatarProps } from '@cccsaurora/howler-ui/commons/components/display/AppAvatar';
|
|
3
|
-
export declare const AppUserAvatar: StyledComponent<AppAvatarProps>;
|
|
4
|
-
declare const UserProfile: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
declare const _default: import("react").MemoExoticComponent<typeof UserProfile>;
|
|
6
|
-
export default _default;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, ClickAwayListener, Divider, Fade, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader, Paper, Popper, styled, Typography, useTheme } from '@mui/material';
|
|
3
|
-
import { useAppConfigs, useAppUser } from '@cccsaurora/howler-ui/commons/components/app/hooks';
|
|
4
|
-
import AppAvatar, {} from '@cccsaurora/howler-ui/commons/components/display/AppAvatar';
|
|
5
|
-
import ThemeSelection from '@cccsaurora/howler-ui/commons/components/topnav/ThemeSelection';
|
|
6
|
-
import { memo, useCallback, useEffect, useRef, useState } from 'react';
|
|
7
|
-
import { useTranslation } from 'react-i18next';
|
|
8
|
-
import { Link, useLocation } from 'react-router-dom';
|
|
9
|
-
export const AppUserAvatar = styled(AppAvatar)(({ theme }) => ({
|
|
10
|
-
width: theme.spacing(5),
|
|
11
|
-
height: theme.spacing(5),
|
|
12
|
-
[theme.breakpoints.down('sm')]: {
|
|
13
|
-
width: theme.spacing(4),
|
|
14
|
-
height: theme.spacing(4)
|
|
15
|
-
}
|
|
16
|
-
}));
|
|
17
|
-
const UserProfile = () => {
|
|
18
|
-
const theme = useTheme();
|
|
19
|
-
const { t } = useTranslation();
|
|
20
|
-
const configs = useAppConfigs();
|
|
21
|
-
const { user } = useAppUser();
|
|
22
|
-
const anchorRef = useRef();
|
|
23
|
-
const location = useLocation();
|
|
24
|
-
const [open, setOpen] = useState(false);
|
|
25
|
-
const onProfileClick = useCallback(e => {
|
|
26
|
-
e.stopPropagation();
|
|
27
|
-
setOpen(_open => !_open);
|
|
28
|
-
}, []);
|
|
29
|
-
const onClickAway = useCallback(() => setOpen(false), []);
|
|
30
|
-
const renderThemeSelection = useCallback(enabled => {
|
|
31
|
-
if (enabled &&
|
|
32
|
-
(configs.allowPersonalization || configs.preferences.allowTranslate || configs.preferences.allowReset)) {
|
|
33
|
-
return (_jsxs("div", { children: [_jsx(Divider, {}), _jsx(ThemeSelection, {})] }));
|
|
34
|
-
}
|
|
35
|
-
return null;
|
|
36
|
-
}, [configs.allowPersonalization, configs.preferences.allowTranslate, configs.preferences.allowReset]);
|
|
37
|
-
const renderMenu = useCallback((type, menuItems, title, i18nKey) => {
|
|
38
|
-
if (menuItems !== undefined && menuItems !== null && menuItems.length !== 0) {
|
|
39
|
-
return (_jsxs("div", { children: [_jsx(Divider, {}), _jsx(List, { dense: true, subheader: _jsx(ListSubheader, { disableSticky: true, children: i18nKey ? t(i18nKey) : title }), children: menuItems.map((a, i) => a.element ? (_jsx(ListItem, { children: a.element }, `${type}-${i}`)) : (_jsxs(ListItemButton, { component: Link, to: a.route, children: [a.icon && _jsx(ListItemIcon, { children: a.icon }), _jsx(ListItemText, { children: a.i18nKey ? t(a.i18nKey) : a.title })] }, `${type}-${i}`))) })] }));
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}, [t]);
|
|
43
|
-
useEffect(() => {
|
|
44
|
-
// This effect checks to see if the result of pressing a button was a navigation
|
|
45
|
-
// if so, close the settings bar.
|
|
46
|
-
if (open) {
|
|
47
|
-
setOpen(false);
|
|
48
|
-
}
|
|
49
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
|
-
}, [location.pathname]);
|
|
51
|
-
return (_jsxs(_Fragment, { children: [_jsx(IconButton, { ref: anchorRef, edge: "end", sx: {
|
|
52
|
-
padding: 0,
|
|
53
|
-
marginLeft: theme.spacing(1),
|
|
54
|
-
marginRight: theme.spacing(1)
|
|
55
|
-
}, onClick: onProfileClick, size: "large", children: _jsx(AppUserAvatar, { alt: user.name, url: user.avatar, email: user.email, children: user.name
|
|
56
|
-
.split(' ', 2)
|
|
57
|
-
.map(n => n[0].toUpperCase())
|
|
58
|
-
.join('') }) }), _jsx(ClickAwayListener, { onClickAway: onClickAway, children: _jsx(Popper, { sx: { zIndex: theme.zIndex.appBar + 200, minWidth: '280px' }, open: open, anchorEl: anchorRef.current, placement: "bottom-end", transition: true, children: ({ TransitionProps }) => (_jsx(Fade, { ...TransitionProps, timeout: 250, children: _jsxs(Paper, { style: { padding: theme.spacing(1) }, elevation: 4, children: [_jsx(List, { disablePadding: true, children: _jsx(ListItem, { disableGutters: true, dense: true, children: _jsxs(Box, { sx: {
|
|
59
|
-
display: 'flex',
|
|
60
|
-
paddingTop: 2,
|
|
61
|
-
paddingBottom: 2,
|
|
62
|
-
paddingLeft: 3,
|
|
63
|
-
paddingRight: 3,
|
|
64
|
-
alignItems: 'center'
|
|
65
|
-
}, children: [_jsx(AppAvatar, { sx: { width: theme.spacing(8), height: theme.spacing(8) }, alt: user.name, url: user.avatar, email: user.email, children: user.name
|
|
66
|
-
.split(' ', 2)
|
|
67
|
-
.map(n => n[0].toUpperCase())
|
|
68
|
-
.join('') }), _jsxs(Box, { sx: { paddingLeft: 2 }, children: [_jsx(Typography, { variant: "body1", noWrap: true, children: _jsx("b", { children: user.name }) }), _jsx(Typography, { variant: "caption", noWrap: true, children: user.email })] })] }) }) }), renderMenu('usermenu', configs.preferences.topnav.userMenu, configs.preferences.topnav.userMenuTitle, configs.preferences.topnav.userMenuI18nKey), user.is_admin &&
|
|
69
|
-
renderMenu('adminmenu', configs.preferences.topnav.adminMenu, configs.preferences.topnav.adminMenuTitle, configs.preferences.topnav.adminMenuI18nKey), renderThemeSelection(configs.preferences.topnav.themeSelectionMode === 'profile')] }) })) }) })] }));
|
|
70
|
-
};
|
|
71
|
-
export default memo(UserProfile);
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { useSnackbar } from 'notistack';
|
|
2
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
-
export default function useClipboard() {
|
|
4
|
-
const { enqueueSnackbar, closeSnackbar } = useSnackbar();
|
|
5
|
-
const { t } = useTranslation();
|
|
6
|
-
const snackBarOptions = {
|
|
7
|
-
preventDuplicate: true,
|
|
8
|
-
autoHideDuration: 3000,
|
|
9
|
-
anchorOrigin: {
|
|
10
|
-
vertical: 'bottom',
|
|
11
|
-
horizontal: 'center'
|
|
12
|
-
},
|
|
13
|
-
SnackbarProps: {
|
|
14
|
-
onClick: () => {
|
|
15
|
-
closeSnackbar();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
const copy = async (text) => {
|
|
20
|
-
try {
|
|
21
|
-
await navigator.clipboard.writeText(text);
|
|
22
|
-
enqueueSnackbar(`${text} ${t('clipboard.success')}`, { variant: 'success', ...snackBarOptions });
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
enqueueSnackbar(`${text} ${t('clipboard.failure')}`, { variant: 'error', ...snackBarOptions });
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
return { copy };
|
|
29
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function useAppEnv(key?: string): string | NodeJS.ProcessEnv;
|