@finsemble/finsemble-ui 7.0.0 → 7.1.0-beta.2
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/package.json +13 -11
- package/react/actions/favoriteActions.d.ts +1 -0
- package/react/actions/favoriteActions.js +1 -0
- package/react/actions/favoriteActions.js.map +1 -1
- package/react/actions/menuActions.d.ts +1 -0
- package/react/actions/menuActions.js +1 -0
- package/react/actions/menuActions.js.map +1 -1
- package/react/actions/rootActions.d.ts +1 -0
- package/react/actions/rootActions.js +1 -0
- package/react/actions/rootActions.js.map +1 -1
- package/react/actions/searchActions.d.ts +1 -0
- package/react/actions/searchActions.js +1 -0
- package/react/actions/searchActions.js.map +1 -1
- package/react/actions/toolbarActions.d.ts +34 -0
- package/react/actions/toolbarActions.js +17 -0
- package/react/actions/toolbarActions.js.map +1 -1
- package/react/actions/workspaceActions.d.ts +1 -0
- package/react/actions/workspaceActions.js +1 -0
- package/react/actions/workspaceActions.js.map +1 -1
- package/react/assets/css/advancedAppLauncher.css +22 -19
- package/react/assets/css/appCatalog.css +67 -72
- package/react/assets/css/authentication.css +4 -3
- package/react/assets/css/button.css +3 -10
- package/react/assets/css/core/formElements.css +1 -1
- package/react/assets/css/core/icons.css +3 -2
- package/react/assets/css/core/notifications.css +2 -2
- package/react/assets/css/core/windowFrame.css +9 -9
- package/react/assets/css/dashbar.css +1 -1
- package/react/assets/css/defaultTheme.css +9 -53
- package/react/assets/css/dialogs.css +13 -11
- package/react/assets/css/favorites.css +3 -1
- package/react/assets/css/finsemble.css +3 -2
- package/react/assets/css/font-finance.css +233 -120
- package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +10 -10
- package/react/assets/css/linkerWindow.css +2 -2
- package/react/assets/css/menus.css +10 -10
- package/react/assets/css/notificationsCenter.css +16 -31
- package/react/assets/css/processMonitor.css +7 -4
- package/react/assets/css/search.css +1 -1
- package/react/assets/css/shared/animations.css +10 -4
- package/react/assets/css/shared/common.css +2 -2
- package/react/assets/css/tags.css +10 -10
- package/react/assets/css/toolbar.css +22 -19
- package/react/assets/css/userPreferences.css +12 -14
- package/react/assets/css/windowTitleBar.css +75 -36
- package/react/componentTemplateGenerator.js +3 -2
- package/react/componentTemplateGenerator.js.map +1 -1
- package/react/components/FinsembleProvider.d.ts +7 -0
- package/react/components/FinsembleProvider.js +2 -0
- package/react/components/FinsembleProvider.js.map +1 -1
- package/react/components/appCatalog/AppCatalog.d.ts +4 -0
- package/react/components/appCatalog/AppCatalog.js +4 -0
- package/react/components/appCatalog/AppCatalog.js.map +1 -1
- package/react/components/appCatalog/AppCatalogComponent.d.ts +58 -0
- package/react/components/appCatalog/AppCatalogComponent.js +70 -1
- package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
- package/react/components/appCatalog/components/AppCard.d.ts +35 -0
- package/react/components/appCatalog/components/AppCard.js +42 -0
- package/react/components/appCatalog/components/AppCard.js.map +1 -1
- package/react/components/appCatalog/components/AppResults.d.ts +10 -0
- package/react/components/appCatalog/components/AppResults.js +24 -0
- package/react/components/appCatalog/components/AppResults.js.map +1 -1
- package/react/components/appCatalog/components/Carousel.d.ts +26 -0
- package/react/components/appCatalog/components/Carousel.js +34 -0
- package/react/components/appCatalog/components/Carousel.js.map +1 -1
- package/react/components/appCatalog/components/EmptyResults.d.ts +4 -0
- package/react/components/appCatalog/components/EmptyResults.js +8 -0
- package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
- package/react/components/appCatalog/components/Hero.d.ts +15 -0
- package/react/components/appCatalog/components/Hero.js +15 -0
- package/react/components/appCatalog/components/Hero.js.map +1 -1
- package/react/components/appCatalog/components/Home.d.ts +6 -4
- package/react/components/appCatalog/components/Home.js +10 -0
- package/react/components/appCatalog/components/Home.js.map +1 -1
- package/react/components/appCatalog/components/SearchBar.d.ts +31 -0
- package/react/components/appCatalog/components/SearchBar.js +33 -0
- package/react/components/appCatalog/components/SearchBar.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/AppDescription.js +9 -0
- package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/AppDevNotes.js +15 -0
- package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +17 -0
- package/react/components/appCatalog/components/Showcase/AppShowcase.js +25 -0
- package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/Header.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/Header.js +12 -0
- package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/ImageCarousel.js +11 -0
- package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/Modal.d.ts +10 -0
- package/react/components/appCatalog/components/Showcase/Modal.js +10 -0
- package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +9 -0
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +6 -0
- package/react/components/appCatalog/components/Showcase/SupportNotes.js +11 -0
- package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/VersionNotes.js +9 -0
- package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
- package/react/components/appCatalog/components/Tag.d.ts +6 -0
- package/react/components/appCatalog/components/Tag.js +10 -0
- package/react/components/appCatalog/components/Tag.js.map +1 -1
- package/react/components/appCatalog/components/Toast.d.ts +5 -0
- package/react/components/appCatalog/components/Toast.js +9 -0
- package/react/components/appCatalog/components/Toast.js.map +1 -1
- package/react/components/appCatalog/components/helpers.js +1 -0
- package/react/components/appCatalog/components/helpers.js.map +1 -1
- package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -0
- package/react/components/appCatalog/modules/AppDirectory.js +5 -0
- package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
- package/react/components/appCatalog/modules/FDC3.d.ts +37 -0
- package/react/components/appCatalog/modules/FDC3.js +40 -0
- package/react/components/appCatalog/modules/FDC3.js.map +1 -1
- package/react/components/appCatalog/stores/appStore.js +1 -0
- package/react/components/appCatalog/stores/appStore.js.map +1 -1
- package/react/components/appCatalog/stores/storeActions.d.ts +91 -0
- package/react/components/appCatalog/stores/storeActions.js +116 -1
- package/react/components/appCatalog/stores/storeActions.js.map +1 -1
- package/react/components/common/Checkbox.d.ts +1 -0
- package/react/components/common/Checkbox.js +2 -2
- package/react/components/common/Checkbox.js.map +1 -1
- package/react/components/common/ColorPicker.d.ts +5 -0
- package/react/components/common/ColorPicker.js +40 -0
- package/react/components/common/ColorPicker.js.map +1 -1
- package/react/components/common/DropZone.d.ts +11 -0
- package/react/components/common/DropZone.js +21 -1
- package/react/components/common/DropZone.js.map +1 -1
- package/react/components/common/DropdownButton.d.ts +4 -0
- package/react/components/common/DropdownButton.js +4 -0
- package/react/components/common/DropdownButton.js.map +1 -1
- package/react/components/common/ErrorBoundary.d.ts +18 -0
- package/react/components/common/ErrorBoundary.js +21 -0
- package/react/components/common/ErrorBoundary.js.map +1 -1
- package/react/components/common/FileInput.d.ts +8 -1
- package/react/components/common/FileInput.js +19 -4
- package/react/components/common/FileInput.js.map +1 -1
- package/react/components/common/FinsembleIcon.d.ts +10 -0
- package/react/components/common/FinsembleIcon.js +51 -2
- package/react/components/common/FinsembleIcon.js.map +1 -1
- package/react/components/common/FinsembleSelect.js +5 -1
- package/react/components/common/FinsembleSelect.js.map +1 -1
- package/react/components/common/FinsembleToggleButtonBar.js +1 -1
- package/react/components/common/FinsembleToggleButtonBar.js.map +1 -1
- package/react/components/common/InputTable.d.ts +7 -0
- package/react/components/common/InputTable.js +7 -0
- package/react/components/common/InputTable.js.map +1 -1
- package/react/components/common/Tab.js +3 -0
- package/react/components/common/Tab.js.map +1 -1
- package/react/components/common/TimeSelect.js +24 -0
- package/react/components/common/TimeSelect.js.map +1 -1
- package/react/components/common/Tooltip.js +2 -0
- package/react/components/common/Tooltip.js.map +1 -1
- package/react/components/common/css/accordion.css +9 -6
- package/react/components/common/css/application-edit-page.css +39 -44
- package/react/components/common/css/button.css +10 -5
- package/react/components/common/css/color-picker.css +3 -3
- package/react/components/common/css/drop-zone.css +2 -6
- package/react/components/common/css/file-input.css +5 -5
- package/react/components/common/css/header.css +3 -2
- package/react/components/common/css/icon.css +1 -1
- package/react/components/common/css/loading-spinner.css +7 -12
- package/react/components/common/css/selector.css +4 -4
- package/react/components/common/css/styles.css +22 -16
- package/react/components/common/css/tab.css +8 -8
- package/react/components/common/css/time-select.css +1 -0
- package/react/components/common/css/toggle.css +4 -4
- package/react/components/common/css/tooltip.css +2 -3
- package/react/components/common/file_helpers.js +2 -0
- package/react/components/common/file_helpers.js.map +1 -1
- package/react/components/common/helpers.js +1 -0
- package/react/components/common/helpers.js.map +1 -1
- package/react/components/common/stories/ColorPicker.stories.js +3 -0
- package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
- package/react/components/common/stories/FileInput.stories.d.ts +3 -1
- package/react/components/common/stories/FileInput.stories.js +12 -0
- package/react/components/common/stories/FileInput.stories.js.map +1 -1
- package/react/components/common/tests/Accordion.spec.js +6 -0
- package/react/components/common/tests/Accordion.spec.js.map +1 -1
- package/react/components/common/tests/Checkbox.spec.js +1 -0
- package/react/components/common/tests/Checkbox.spec.js.map +1 -1
- package/react/components/common/tests/ColorPicker.spec.js +6 -0
- package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
- package/react/components/common/tests/DropZone.spec.js +1 -0
- package/react/components/common/tests/DropZone.spec.js.map +1 -1
- package/react/components/common/tests/FileInput.spec.js +22 -0
- package/react/components/common/tests/FileInput.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleSelect.spec.js +1 -0
- package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggle.spec.js +1 -0
- package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +1 -0
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -1
- package/react/components/common/tests/TimeSelect.spec.js +4 -0
- package/react/components/common/tests/TimeSelect.spec.js.map +1 -1
- package/react/components/common/tests/Tooltip.spec.js +16 -0
- package/react/components/common/tests/Tooltip.spec.js.map +1 -1
- package/react/components/favorites/FavoriteMaker.d.ts +8 -0
- package/react/components/favorites/FavoriteMaker.js +9 -0
- package/react/components/favorites/FavoriteMaker.js.map +1 -1
- package/react/components/favorites/FavoritesShell.d.ts +4 -0
- package/react/components/favorites/FavoritesShell.js +13 -1
- package/react/components/favorites/FavoritesShell.js.map +1 -1
- package/react/components/favorites/FavoritesShell.spec.js +3 -0
- package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverContainer.js +8 -0
- package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.css +16 -3
- package/react/components/fdc3Resolver/ResolverDialog.js +7 -2
- package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.spec.js +3 -2
- package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.stories.js +2 -0
- package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
- package/react/components/icon/Icon.d.ts +13 -0
- package/react/components/icon/Icon.js +34 -0
- package/react/components/icon/Icon.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
- package/react/components/legacyControls/FinsembleDialog.js +15 -0
- package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogButton.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDialogButton.js +6 -1
- package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +7 -0
- package/react/components/legacyControls/FinsembleDialogQuestion.js +7 -0
- package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDialogTextInput.js +14 -0
- package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
- package/react/components/legacyControls/FinsembleDnDContext.d.ts +19 -0
- package/react/components/legacyControls/FinsembleDnDContext.js +126 -1
- package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
- package/react/components/legacyControls/FinsembleDraggable.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDraggable.js +3 -0
- package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
- package/react/components/legacyControls/FinsembleHoverDetector.d.ts +15 -0
- package/react/components/legacyControls/FinsembleHoverDetector.js +26 -1
- package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
- package/react/components/legacyControls/FinsembleMenuSection.d.ts +4 -0
- package/react/components/legacyControls/FinsembleMenuSection.js +38 -0
- package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
- package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +1 -0
- package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
- package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +1 -0
- package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
- package/react/components/linker/LinkerMenu.d.ts +3 -0
- package/react/components/linker/LinkerMenu.js +21 -0
- package/react/components/linker/LinkerMenu.js.map +1 -1
- package/react/components/linker/LinkerMenuDeprecated.d.ts +3 -0
- package/react/components/linker/LinkerMenuDeprecated.js +9 -0
- package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
- package/react/components/menu/Menu.d.ts +15 -0
- package/react/components/menu/Menu.js +15 -0
- package/react/components/menu/Menu.js.map +1 -1
- package/react/components/menu/MenuAutoResizer.d.ts +7 -0
- package/react/components/menu/MenuAutoResizer.js +27 -0
- package/react/components/menu/MenuAutoResizer.js.map +1 -1
- package/react/components/menu/MenuContent.d.ts +4 -0
- package/react/components/menu/MenuContent.js +4 -0
- package/react/components/menu/MenuContent.js.map +1 -1
- package/react/components/menu/MenuHotKey.d.ts +14 -0
- package/react/components/menu/MenuHotKey.js +15 -0
- package/react/components/menu/MenuHotKey.js.map +1 -1
- package/react/components/menu/MenuItem.d.ts +8 -0
- package/react/components/menu/MenuItem.js +13 -2
- package/react/components/menu/MenuItem.js.map +1 -1
- package/react/components/menu/MenuPortal.js +112 -2
- package/react/components/menu/MenuPortal.js.map +1 -1
- package/react/components/menu/MenuShell.d.ts +16 -0
- package/react/components/menu/MenuShell.js +26 -0
- package/react/components/menu/MenuShell.js.map +1 -1
- package/react/components/menu/MenuToggle.d.ts +3 -0
- package/react/components/menu/MenuToggle.js +3 -0
- package/react/components/menu/MenuToggle.js.map +1 -1
- package/react/components/menu/keyboardNavigation.d.ts +12 -0
- package/react/components/menu/keyboardNavigation.js +55 -0
- package/react/components/menu/keyboardNavigation.js.map +1 -1
- package/react/components/menu/menuContext.d.ts +6 -0
- package/react/components/menu/menuContext.js +6 -0
- package/react/components/menu/menuContext.js.map +1 -1
- package/react/components/menu/menuHelpers.d.ts +22 -0
- package/react/components/menu/menuHelpers.js +58 -1
- package/react/components/menu/menuHelpers.js.map +1 -1
- package/react/components/notifications/components/drawer/DrawerControls.js +8 -0
- package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
- package/react/components/notifications/components/drawer/DrawerHeader.js +5 -0
- package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +18 -0
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +3 -0
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
- package/react/components/notifications/components/shared/CheckButton.js +1 -1
- package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
- package/react/components/notifications/components/shared/NotificationCardShell.d.ts +9 -0
- package/react/components/notifications/components/shared/NotificationCardShell.js +13 -6
- package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
- package/react/components/notifications/components/shared/OverflowMenu.d.ts +4 -0
- package/react/components/notifications/components/shared/OverflowMenu.js +16 -2
- package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
- package/react/components/notifications/components/views/CardView.js +3 -0
- package/react/components/notifications/components/views/CardView.js.map +1 -1
- package/react/components/notifications/components/views/ListView.js +8 -0
- package/react/components/notifications/components/views/ListView.js.map +1 -1
- package/react/components/notifications/notificationsContext.d.ts +4 -0
- package/react/components/notifications/notificationsContext.js +4 -0
- package/react/components/notifications/notificationsContext.js.map +1 -1
- package/react/components/notifications/types.d.ts +3 -0
- package/react/components/notifications/utils.d.ts +4 -0
- package/react/components/notifications/utils.js +4 -0
- package/react/components/notifications/utils.js.map +1 -1
- package/react/components/processMonitor/ProcessMonitor.d.ts +3 -0
- package/react/components/processMonitor/ProcessMonitor.js +17 -2
- package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
- package/react/components/processMonitor/components/ChildWindow.d.ts +3 -0
- package/react/components/processMonitor/components/ChildWindow.js +5 -0
- package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
- package/react/components/processMonitor/components/ListHeader.d.ts +5 -0
- package/react/components/processMonitor/components/ListHeader.js +7 -0
- package/react/components/processMonitor/components/ListHeader.js.map +1 -1
- package/react/components/processMonitor/components/ProcessStatistics.js +12 -1
- package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
- package/react/components/processMonitor/constants.js +6 -0
- package/react/components/processMonitor/constants.js.map +1 -1
- package/react/components/processMonitor/helpers.d.ts +13 -0
- package/react/components/processMonitor/helpers.js +23 -3
- package/react/components/processMonitor/helpers.js.map +1 -1
- package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +39 -0
- package/react/components/processMonitor/stores/ProcessMonitorStore.js +50 -0
- package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
- package/react/components/quickComponentForm/QuickComponentForm.d.ts +3 -0
- package/react/components/quickComponentForm/QuickComponentForm.js +20 -0
- package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
- package/react/components/quickComponentForm/quickComponent.css +1 -1
- package/react/components/sdd/AddApp.d.ts +4 -2
- package/react/components/sdd/AddApp.js +57 -49
- package/react/components/sdd/AddApp.js.map +1 -1
- package/react/components/sdd/AppEditAccess.js +8 -0
- package/react/components/sdd/AppEditAccess.js.map +1 -1
- package/react/components/sdd/AppEditPage.d.ts +2 -1
- package/react/components/sdd/AppEditPage.js +148 -361
- package/react/components/sdd/AppEditPage.js.map +1 -1
- package/react/components/sdd/Appearance.css +1 -1
- package/react/components/sdd/Appearance.js +3 -0
- package/react/components/sdd/Appearance.js.map +1 -1
- package/react/components/sdd/Application.js +39 -7
- package/react/components/sdd/Application.js.map +1 -1
- package/react/components/sdd/Applications.js +89 -13
- package/react/components/sdd/Applications.js.map +1 -1
- package/react/components/sdd/AssetsPage.css +3 -3
- package/react/components/sdd/EditPreload.js +10 -0
- package/react/components/sdd/EditPreload.js.map +1 -1
- package/react/components/sdd/ExportCloud.js +4 -0
- package/react/components/sdd/ExportCloud.js.map +1 -1
- package/react/components/sdd/Publish.js +2 -0
- package/react/components/sdd/Publish.js.map +1 -1
- package/react/components/sdd/PublishProgress.js +11 -1
- package/react/components/sdd/PublishProgress.js.map +1 -1
- package/react/components/sdd/SmartDesktopDesigner.js +17 -0
- package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
- package/react/components/sdd/ThemePage.css +6 -23
- package/react/components/sdd/ThemePage.js +1 -1
- package/react/components/sdd/ThemePage.js.map +1 -1
- package/react/components/sdd/Themes.js +2 -0
- package/react/components/sdd/Themes.js.map +1 -1
- package/react/components/sdd/Toolbar.js +7 -0
- package/react/components/sdd/Toolbar.js.map +1 -1
- package/react/components/sdd/appEditPage/Behavior.d.ts +34 -0
- package/react/components/sdd/appEditPage/Behavior.js +134 -0
- package/react/components/sdd/appEditPage/Behavior.js.map +1 -0
- package/react/components/sdd/appEditPage/Component.d.ts +22 -0
- package/react/components/sdd/appEditPage/Component.js +76 -0
- package/react/components/sdd/appEditPage/Component.js.map +1 -0
- package/react/components/sdd/appEditPage/DebugToolkit.d.ts +9 -0
- package/react/components/sdd/appEditPage/DebugToolkit.js +20 -0
- package/react/components/sdd/appEditPage/DebugToolkit.js.map +1 -0
- package/react/components/sdd/appEditPage/Interop.d.ts +10 -0
- package/react/components/sdd/appEditPage/Interop.js +40 -0
- package/react/components/sdd/appEditPage/Interop.js.map +1 -0
- package/react/components/sdd/appEditPage/Position.d.ts +18 -0
- package/react/components/sdd/appEditPage/Position.js +72 -0
- package/react/components/sdd/appEditPage/Position.js.map +1 -0
- package/react/components/sdd/appEditPage/Preloads.d.ts +9 -0
- package/react/components/sdd/appEditPage/Preloads.js +16 -0
- package/react/components/sdd/appEditPage/Preloads.js.map +1 -0
- package/react/components/sdd/appEditPage/SelectConnect.d.ts +15 -0
- package/react/components/sdd/appEditPage/SelectConnect.js +28 -0
- package/react/components/sdd/appEditPage/SelectConnect.js.map +1 -0
- package/react/components/sdd/appEditPage/Workspace.d.ts +12 -0
- package/react/components/sdd/appEditPage/Workspace.js +30 -0
- package/react/components/sdd/appEditPage/Workspace.js.map +1 -0
- package/react/components/sdd/common/getCSSVars.js +7 -2
- package/react/components/sdd/common/getCSSVars.js.map +1 -1
- package/react/components/sdd/common/setPreloadDefaults.js +4 -0
- package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
- package/react/components/sdd/css/addApp.css +18 -5
- package/react/components/sdd/css/appearance.css +6 -0
- package/react/components/sdd/css/applications.css +27 -14
- package/react/components/sdd/css/authentication.css +7 -6
- package/react/components/sdd/css/buttons.css +1 -1
- package/react/components/sdd/css/export.css +5 -3
- package/react/components/sdd/css/getting-started.css +2 -2
- package/react/components/sdd/css/nav.css +8 -11
- package/react/components/sdd/css/project-header.css +5 -7
- package/react/components/sdd/css/styles.css +29 -23
- package/react/components/sdd/css/views.css +4 -3
- package/react/components/sdd/fixtures/apps.js +12 -0
- package/react/components/sdd/fixtures/apps.js.map +1 -1
- package/react/components/sdd/fixtures/configTemplate.js +1 -0
- package/react/components/sdd/fixtures/configTemplate.js.map +1 -1
- package/react/components/sdd/fixtures/publishProgress.js +40 -0
- package/react/components/sdd/fixtures/publishProgress.js.map +1 -1
- package/react/components/sdd/sdd_helpers.d.ts +6 -0
- package/react/components/sdd/sdd_helpers.js +6 -0
- package/react/components/sdd/sdd_helpers.js.map +1 -1
- package/react/components/sdd/smartDesktopClient.d.ts +303 -0
- package/react/components/sdd/smartDesktopClient.js +334 -1
- package/react/components/sdd/smartDesktopClient.js.map +1 -1
- package/react/components/sdd/smartDesktopClient.spec.js +5 -2
- package/react/components/sdd/smartDesktopClient.spec.js.map +1 -1
- package/react/components/sdd/stories/AddApp.stories.d.ts +2 -1
- package/react/components/sdd/stories/AddApp.stories.js +8 -0
- package/react/components/sdd/stories/AddApp.stories.js.map +1 -1
- package/react/components/sdd/stories/AppEditPage.stories.d.ts +3 -1
- package/react/components/sdd/stories/AppEditPage.stories.js +3 -0
- package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
- package/react/components/sdd/stories/Appearance.stories.js +1 -0
- package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
- package/react/components/sdd/tests/AddApp.spec.js +40 -3
- package/react/components/sdd/tests/AddApp.spec.js.map +1 -1
- package/react/components/sdd/tests/AppEditPage.spec.js +16 -0
- package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
- package/react/components/sdd/tests/Application.spec.js +33 -438
- package/react/components/sdd/tests/Application.spec.js.map +1 -1
- package/react/components/sdd/tests/Applications.spec.d.ts +1 -1
- package/react/components/sdd/tests/Applications.spec.js +29 -5
- package/react/components/sdd/tests/Applications.spec.js.map +1 -1
- package/react/components/sdd/tests/Authentication.spec.js +7 -0
- package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
- package/react/components/sdd/tests/ContentHeader.spec.js +2 -0
- package/react/components/sdd/tests/ContentHeader.spec.js.map +1 -1
- package/react/components/sdd/tests/EditPreload.spec.js +13 -0
- package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
- package/react/components/sdd/tests/Export.spec.js +2 -1
- package/react/components/sdd/tests/Export.spec.js.map +1 -1
- package/react/components/sdd/tests/ItemList.spec.js +4 -0
- package/react/components/sdd/tests/ItemList.spec.js.map +1 -1
- package/react/components/sdd/tests/OptionalSettingsView.spec.js +29 -0
- package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
- package/react/components/sdd/tests/ProjectErrors.spec.js +2 -0
- package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
- package/react/components/sdd/tests/Themes.spec.js +1 -1
- package/react/components/sdd/tests/Themes.spec.js.map +1 -1
- package/react/components/sdd/tests/Toolbar.spec.js +53 -0
- package/react/components/sdd/tests/Toolbar.spec.js.map +1 -1
- package/react/components/sdd/tests/a11y_helper.js +8 -0
- package/react/components/sdd/tests/a11y_helper.js.map +1 -1
- package/react/components/search/Highlight.d.ts +6 -0
- package/react/components/search/Highlight.js +19 -0
- package/react/components/search/Highlight.js.map +1 -1
- package/react/components/search/SearchBestMatch.d.ts +4 -0
- package/react/components/search/SearchBestMatch.js +11 -0
- package/react/components/search/SearchBestMatch.js.map +1 -1
- package/react/components/search/SearchInput.d.ts +5 -0
- package/react/components/search/SearchInput.js +6 -0
- package/react/components/search/SearchInput.js.map +1 -1
- package/react/components/search/SearchProviderResults.js +2 -0
- package/react/components/search/SearchProviderResults.js.map +1 -1
- package/react/components/search/SearchResult.js +6 -0
- package/react/components/search/SearchResult.js.map +1 -1
- package/react/components/search/SearchResult.spec.js +7 -0
- package/react/components/search/SearchResult.spec.js.map +1 -1
- package/react/components/search/SearchResult.stories.js +4 -0
- package/react/components/search/SearchResult.stories.js.map +1 -1
- package/react/components/search/SearchResults.js +5 -1
- package/react/components/search/SearchResults.js.map +1 -1
- package/react/components/search/SearchResults.spec.js +7 -0
- package/react/components/search/SearchResults.spec.js.map +1 -1
- package/react/components/shared/Animate.d.ts +5 -0
- package/react/components/shared/Animate.js +12 -1
- package/react/components/shared/Animate.js.map +1 -1
- package/react/components/shared/DefaultDropdownButton.js +9 -0
- package/react/components/shared/DefaultDropdownButton.js.map +1 -1
- package/react/components/shared/Tag.d.ts +0 -4
- package/react/components/shared/Tag.js +4 -0
- package/react/components/shared/Tag.js.map +1 -1
- package/react/components/shared/TagsMenu.d.ts +6 -0
- package/react/components/shared/TagsMenu.js +7 -0
- package/react/components/shared/TagsMenu.js.map +1 -1
- package/react/components/shared/addProtocolToValidURL.d.ts +6 -0
- package/react/components/shared/addProtocolToValidURL.js +6 -0
- package/react/components/shared/addProtocolToValidURL.js.map +1 -1
- package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
- package/react/components/shared/openQuitConfirmationDialog.js +4 -4
- package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
- package/react/components/shared/tests/addProtocolToValidURL.spec.js +1 -0
- package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
- package/react/components/shared/validateURL.d.ts +18 -0
- package/react/components/shared/validateURL.js +24 -5
- package/react/components/shared/validateURL.js.map +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.css +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.d.ts +3 -0
- package/react/components/singleInputDialog/SingleInputDialog.js +44 -0
- package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +6 -0
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
- package/react/components/system/System.d.ts +22 -0
- package/react/components/system/System.js +23 -1
- package/react/components/system/System.js.map +1 -1
- package/react/components/system/System.stories.js +1 -0
- package/react/components/system/System.stories.js.map +1 -1
- package/react/components/system/SystemTrayComponentShell.d.ts +6 -0
- package/react/components/system/SystemTrayComponentShell.js +9 -0
- package/react/components/system/SystemTrayComponentShell.js.map +1 -1
- package/react/components/toolbar/AutoArrange.d.ts +5 -0
- package/react/components/toolbar/AutoArrange.js +8 -1
- package/react/components/toolbar/AutoArrange.js.map +1 -1
- package/react/components/toolbar/AutoArrange.spec.js +1 -0
- package/react/components/toolbar/AutoArrange.spec.js.map +1 -1
- package/react/components/toolbar/AutoArrange.stories.js +1 -0
- package/react/components/toolbar/AutoArrange.stories.js.map +1 -1
- package/react/components/toolbar/DragHandle.d.ts +4 -0
- package/react/components/toolbar/DragHandle.js +11 -0
- package/react/components/toolbar/DragHandle.js.map +1 -1
- package/react/components/toolbar/DragHandle.spec.js +1 -0
- package/react/components/toolbar/DragHandle.spec.js.map +1 -1
- package/react/components/toolbar/DragHandle.stories.js +1 -0
- package/react/components/toolbar/DragHandle.stories.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.d.ts +4 -0
- package/react/components/toolbar/MinimizeAll.js +7 -1
- package/react/components/toolbar/MinimizeAll.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.spec.js +1 -0
- package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.stories.js +1 -0
- package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
- package/react/components/toolbar/NotificationControl.d.ts +5 -0
- package/react/components/toolbar/NotificationControl.js +8 -1
- package/react/components/toolbar/NotificationControl.js.map +1 -1
- package/react/components/toolbar/RevealAll.d.ts +4 -0
- package/react/components/toolbar/RevealAll.js +7 -1
- package/react/components/toolbar/RevealAll.js.map +1 -1
- package/react/components/toolbar/RevealAll.spec.js +1 -0
- package/react/components/toolbar/RevealAll.spec.js.map +1 -1
- package/react/components/toolbar/RevealAll.stories.js +1 -0
- package/react/components/toolbar/RevealAll.stories.js.map +1 -1
- package/react/components/toolbar/SddButton.d.ts +4 -0
- package/react/components/toolbar/SddButton.js +4 -0
- package/react/components/toolbar/SddButton.js.map +1 -1
- package/react/components/toolbar/ToolbarIcon.d.ts +4 -0
- package/react/components/toolbar/ToolbarIcon.js +4 -0
- package/react/components/toolbar/ToolbarIcon.js.map +1 -1
- package/react/components/toolbar/ToolbarSection.d.ts +7 -0
- package/react/components/toolbar/ToolbarSection.js +19 -1
- package/react/components/toolbar/ToolbarSection.js.map +1 -1
- package/react/components/toolbar/ToolbarShell.d.ts +5 -0
- package/react/components/toolbar/ToolbarShell.js +7 -0
- package/react/components/toolbar/ToolbarShell.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +16 -0
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +20 -0
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +52 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +58 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +27 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +49 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +13 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +14 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/Content.js +19 -0
- package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +16 -0
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +39 -0
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +9 -0
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +3 -0
- package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +6 -0
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +7 -0
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +37 -0
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js +40 -0
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts +3 -0
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +82 -0
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +10 -0
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +11 -0
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
- package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +18 -0
- package/react/components/toolbar/appLauncher/AppLauncherMenu.js +20 -0
- package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +9 -0
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +12 -0
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
- package/react/components/toolbar/appLauncher/appLauncher.css +1 -1
- package/react/components/toolbar/appLauncher/components/componentList.d.ts +3 -0
- package/react/components/toolbar/appLauncher/components/componentList.js +17 -3
- package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +6 -0
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +26 -0
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
- package/react/components/toolbar/dashbar/Dashbar.js +70 -3
- package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
- package/react/components/toolbar/dashbar/DashbarItem.js +5 -0
- package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +7 -0
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +7 -0
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +16 -0
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +20 -0
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +26 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +29 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +5 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +6 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +76 -0
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +140 -1
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +8 -18
- package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +4 -0
- package/react/components/userPreferences/NotificationsPreferencesContext.js +4 -0
- package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
- package/react/components/userPreferences/UserPreferenceTypes.d.ts +3 -0
- package/react/components/userPreferences/UserPreferences.d.ts +8 -0
- package/react/components/userPreferences/UserPreferences.js +8 -0
- package/react/components/userPreferences/UserPreferences.js.map +1 -1
- package/react/components/userPreferences/UserPreferencesBase.js +4 -0
- package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
- package/react/components/userPreferences/components/ContentSection.d.ts +5 -0
- package/react/components/userPreferences/components/LeftNav.d.ts +4 -0
- package/react/components/userPreferences/components/content/DashbarEditor.js +3 -0
- package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
- package/react/components/userPreferences/components/content/Notifications.js +3 -0
- package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
- package/react/components/userPreferences/components/content/Workspaces.d.ts +12 -0
- package/react/components/userPreferences/components/content/Workspaces.js +33 -1
- package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
- package/react/components/userPreferences/components/general/ScheduledClose.js +11 -0
- package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +3 -0
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
- package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +17 -0
- package/react/components/userPreferences/stores/UserPreferencesStore.js +27 -0
- package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +1 -0
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
- package/react/components/userPreferences/tests/Workspace.spec.js +20 -0
- package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -1
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +124 -0
- package/react/components/windowTitleBar/WindowTitleBarShell.js +284 -35
- package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
- package/react/components/windowTitleBar/components/center/Tab.d.ts +3 -0
- package/react/components/windowTitleBar/components/center/Tab.js +3 -0
- package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
- package/react/components/windowTitleBar/components/center/TabList.d.ts +90 -0
- package/react/components/windowTitleBar/components/center/TabList.js +170 -4
- package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.d.ts +9 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.js +25 -9
- package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +47 -0
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +76 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts +4 -0
- package/react/components/windowTitleBar/components/left/LinkerGroups.js +5 -0
- package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +18 -0
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +49 -0
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
- package/react/components/windowTitleBar/components/left/ShareButton.d.ts +17 -0
- package/react/components/windowTitleBar/components/left/ShareButton.js +39 -0
- package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +4 -0
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/CloseButton.d.ts +27 -0
- package/react/components/windowTitleBar/components/right/CloseButton.js +27 -0
- package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +37 -0
- package/react/components/windowTitleBar/components/right/GroupingButton.js +40 -0
- package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +46 -0
- package/react/components/windowTitleBar/components/right/MaximizeButton.js +54 -0
- package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +26 -0
- package/react/components/windowTitleBar/components/right/MinimizeButton.js +26 -0
- package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
- package/react/components/windowTitleBar/components/windowTitle.d.ts +40 -0
- package/react/components/windowTitleBar/components/windowTitle.js +172 -10
- package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +5 -0
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js +72 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
- package/react/components/yesNoDialog/YesNoDialog.css +1 -1
- package/react/components/yesNoDialog/YesNoDialog.d.ts +3 -0
- package/react/components/yesNoDialog/YesNoDialog.js +63 -0
- package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
- package/react/components/yesNoDialog/YesNoDialog.spec.js +4 -0
- package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
- package/react/components/yesNoDialog/timer.js +2 -0
- package/react/components/yesNoDialog/timer.js.map +1 -1
- package/react/enzymeSetup.js +5 -0
- package/react/enzymeSetup.js.map +1 -1
- package/react/hooks/useDashbar.js +10 -0
- package/react/hooks/useDashbar.js.map +1 -1
- package/react/hooks/useDeepEffect.d.ts +4 -0
- package/react/hooks/useDeepEffect.js +21 -0
- package/react/hooks/useDeepEffect.js.map +1 -1
- package/react/hooks/useFavorites.d.ts +15 -0
- package/react/hooks/useFavorites.js +3 -0
- package/react/hooks/useFavorites.js.map +1 -1
- package/react/hooks/useFavoritesShell.d.ts +4 -0
- package/react/hooks/useFavoritesShell.js +23 -0
- package/react/hooks/useFavoritesShell.js.map +1 -1
- package/react/hooks/useHotkey.d.ts +6 -0
- package/react/hooks/useHotkey.js +9 -0
- package/react/hooks/useHotkey.js.map +1 -1
- package/react/hooks/useLinker.js +14 -0
- package/react/hooks/useLinker.js.map +1 -1
- package/react/hooks/useMenu.d.ts +29 -0
- package/react/hooks/useMenu.js +12 -1
- package/react/hooks/useMenu.js.map +1 -1
- package/react/hooks/useNotifications.d.ts +44 -0
- package/react/hooks/useNotifications.js +90 -0
- package/react/hooks/useNotifications.js.map +1 -1
- package/react/hooks/useOutsideClickDetector.d.ts +3 -0
- package/react/hooks/useOutsideClickDetector.js +3 -0
- package/react/hooks/useOutsideClickDetector.js.map +1 -1
- package/react/hooks/usePubSub.d.ts +17 -0
- package/react/hooks/usePubSub.js +18 -0
- package/react/hooks/usePubSub.js.map +1 -1
- package/react/hooks/useSearch.d.ts +5 -0
- package/react/hooks/useSearch.js +30 -0
- package/react/hooks/useSearch.js.map +1 -1
- package/react/hooks/useToolbar.js +52 -0
- package/react/hooks/useToolbar.js.map +1 -1
- package/react/reducers/favoriteReducer.d.ts +3 -0
- package/react/reducers/linkerReducer.d.ts +3 -0
- package/react/reducers/linkerReducer.js +4 -0
- package/react/reducers/linkerReducer.js.map +1 -1
- package/react/reducers/menuReducer.d.ts +28 -0
- package/react/reducers/menuReducer.js +34 -0
- package/react/reducers/menuReducer.js.map +1 -1
- package/react/reducers/rootReducer.js +3 -0
- package/react/reducers/rootReducer.js.map +1 -1
- package/react/reducers/searchReducer.d.ts +7 -0
- package/react/reducers/searchReducer.js +6 -0
- package/react/reducers/searchReducer.js.map +1 -1
- package/react/reducers/workspaceReducer.js +1 -0
- package/react/reducers/workspaceReducer.js.map +1 -1
- package/react/store.d.ts +4 -0
- package/react/store.js +11 -0
- package/react/store.js.map +1 -1
- package/react/tsconfig.tsbuildinfo +1 -1
- package/react/types/fdc3.d.ts +2 -0
- package/react/types/linkerTypes.d.ts +13 -0
- package/react/types/linkerTypes.js +1 -0
- package/react/types/linkerTypes.js.map +1 -1
- package/react/types/smartDesktopDesignerTypes.d.ts +5 -0
- package/react/types/smartDesktopDesignerTypes.js.map +1 -1
- package/react/types/workspaceTypes.d.ts +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/content/Workspaces.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport async from \"async\";\nimport { Util } from \"@finsemble/finsemble-api\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nimport { Actions as WorkspaceManagementMenuActions } from \"../../../toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore\";\nimport { WorkspaceManagementMenuStore } from \"../../stores/UserPreferencesStore\";\nimport { Checkbox } from \"../../../common/Checkbox\";\nimport { WorkspaceButton } from \"../workspaces/WorkspaceButton\";\nimport WorkspaceComponents from \"../workspaces/WorkspaceComponents\";\nimport WorkspaceItemList from \"../workspaces/WorkspaceItemList\";\nimport { Workspace, ImportWorkspace, WorkspaceTemplate } from \"../../../../types/workspaceTypes\";\n\ninterface IProps {\n\taddListener: (fieldListener: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n\tgetValue: (fieldName: { field: string }, cb: (err: StandardError, data: Workspace[]) => void) => void;\n\tremoveListener: (fieldName: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n}\n\ninterface IState {\n\tinitialAlwaysOnTop: boolean;\n\talwaysOnTop: boolean;\n\tworkspaceList: Workspace[];\n\tfocusedWorkspace: string;\n\tediting: boolean;\n\tworkspaceBeingEdited: string;\n\ttemplateName: string;\n\tadding: boolean;\n\tworkspaceToLoadOnStart: string | null;\n\tfocusedWorkspaceComponentList: string[];\n\n\tpromptUserOnDirtyWorkspace: boolean;\n\tdiscardUnsavedChanges: boolean;\n}\n\nconst WORKSPACE_PREFERENCES = {\n\tPROMPT_USER_ON_DIRTY_WORKSPACE: \"finsemble.servicesConfig.workspace.promptUserOnDirtyWorkspace\",\n\tDISCARD_UNSAVED_CHANGES: \"finsemble.servicesConfig.workspace.discardUnsavedChanges\",\n};\n\nexport default class Workspaces extends React.Component<IProps, IState> {\n\taddWorkspace?: () => void;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tworkspaceList: [],\n\t\t\tfocusedWorkspace: \"\",\n\t\t\tworkspaceToLoadOnStart: null,\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t\tfocusedWorkspaceComponentList: [],\n\t\t\tinitialAlwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\talwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\tpromptUserOnDirtyWorkspace: true,\n\t\t\tdiscardUnsavedChanges: false,\n\t\t};\n\t\tthis.bindCorrectContext();\n\t\tthis.addListeners();\n\t}\n\n\tresetState() {\n\t\tthis.setState({\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tfocusedWorkspace: \"\",\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.deleteWorkspace = this.deleteWorkspace.bind(this);\n\t\tthis.addListeners = this.addListeners.bind(this);\n\t\tthis.setWorkspaceList = this.setWorkspaceList.bind(this);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t\tthis.startEditingWorkspace = this.startEditingWorkspace.bind(this);\n\t\tthis.renameWorkspace = this.renameWorkspace.bind(this);\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\n\t\tthis.setWorkspaceToLoadOnStart = this.setWorkspaceToLoadOnStart.bind(this);\n\t\tthis.setPreferences = this.setPreferences.bind(this);\n\t\tthis.exportWorkspace = this.exportWorkspace.bind(this);\n\t\tthis.handleButtonClicks = this.handleButtonClicks.bind(this);\n\t\tthis.getFocusedWorkspaceComponentList = this.getFocusedWorkspaceComponentList.bind(this);\n\t\tthis.changePreferencesAlwaysOnTop = this.changePreferencesAlwaysOnTop.bind(this);\n\t\tthis.openFileDialog = this.openFileDialog.bind(this);\n\t\tthis.preferencesFocused = this.preferencesFocused.bind(this);\n\t\tthis.setFocusedWorkspace = this.setFocusedWorkspace.bind(this);\n\n\t\tthis.toggleDiscardUnsavedChanges = this.toggleDiscardUnsavedChanges.bind(this);\n\t\tthis.togglePromptUserOnDirtyWorkspace = this.togglePromptUserOnDirtyWorkspace.bind(this);\n\t}\n\n\tsetWorkspaceList(err: StandardError, data: { value: Workspace[] }) {\n\t\tconsole.log(\"Set workspacelist\", data);\n\t\tif (!data) return;\n\t\tthis.setState({\n\t\t\tworkspaceList: data.value,\n\t\t});\n\t}\n\n\taddListeners() {\n\t\tthis.props.addListener({ field: \"WorkspaceList\" }, this.setWorkspaceList);\n\t}\n\n\t/**\n\t * Sets the windowOptions.alwaysOnTop to the value supplied. The preferences component should\n\t * not be always on top when a file dialog is open.\n\t * @param {boolean} alwaysOnTop The value to set finsembleWindow.options.alwaysOnTop\n\t */\n\tchangePreferencesAlwaysOnTop(alwaysOnTop: boolean) {\n\t\t// The initialAlwaysOnTop check is to prevent making a component be alwaysOnTop when the\n\t\t// client may have set it to alwaysOnTop:false in the config. If that's the case, it should\n\t\t// never set its alwaysOnTop to true and should always remain unchanged\n\t\tif (this.state.initialAlwaysOnTop) {\n\t\t\tFSBL.Clients.WindowClient.setAlwaysOnTop(alwaysOnTop, () => {\n\t\t\t\tthis.setState({\n\t\t\t\t\talwaysOnTop,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tonDragEnd({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) {\n\t\tlet workspaces = JSON.parse(JSON.stringify(this.state.workspaceList));\n\t\tlet workspaceToMove = JSON.parse(JSON.stringify(workspaces[oldIndex]));\n\t\tworkspaces.splice(oldIndex, 1);\n\t\tworkspaces.splice(newIndex, 0, workspaceToMove);\n\t\tthis.setState({\n\t\t\tworkspaceList: workspaces,\n\t\t});\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"reorderWorkspace\",\n\t\t\tdata: { oldIndex, newIndex },\n\t\t});\n\t}\n\n\t// returns all the component types of a template definition to display to user for additional info. If multiple components with same type, then instead of listing each\n\t// individually, only one entry will be returned with the count in parentheses.\n\tgetComponentTypes(templateObject: WorkspaceTemplate) {\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes templateObject\", templateObject);\n\t\tlet componentType: string;\n\t\tlet componentMap: { [key: string]: number } = {};\n\t\tlet annotatedComponentList = [];\n\t\tfor (let i = 0; i < templateObject.windows.length; i++) {\n\t\t\tlet windowData = templateObject.windowData[i];\n\t\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes loop\", windowData);\n\t\t\tcomponentType = \"Unknown Component\";\n\t\t\tif (windowData) {\n\t\t\t\t// current assimilation doesn't fill in windowData, so in this case use \"Unknown Component\" for component type\n\t\t\t\tcomponentType = windowData.componentType || windowData.customData.component.type;\n\t\t\t} else {\n\t\t\t\tcomponentType = \"Unknown Component\";\n\t\t\t}\n\t\t\tif (!componentMap[componentType]) {\n\t\t\t\tcomponentMap[componentType] = 1;\n\t\t\t} else {\n\t\t\t\tcomponentMap[componentType]++;\n\t\t\t}\n\t\t}\n\n\t\tconst componentTypes = Object.keys(componentMap);\n\t\tfor (let i = 0; i < componentTypes.length; i++) {\n\t\t\tlet annotatedName = componentTypes[i];\n\t\t\tlet identicalCount = componentMap[componentTypes[i]];\n\t\t\tif (identicalCount > 1) {\n\t\t\t\tannotatedName = `${annotatedName} (${identicalCount})`;\n\t\t\t}\n\t\t\tannotatedComponentList.push(annotatedName);\n\t\t}\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes\", annotatedComponentList);\n\t\treturn annotatedComponentList;\n\t}\n\n\tsetFocusedWorkspace(workspace: string) {\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tfocusedWorkspace: workspace,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.getFocusedWorkspaceComponentList();\n\t\t\t}\n\t\t);\n\t}\n\n\tcancelEdit() {\n\t\tif (this.state.adding) {\n\t\t\tlet { workspaceList } = this.state;\n\t\t\tworkspaceList.pop();\n\t\t\tthis.setFocusedWorkspace(\"\");\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: workspaceList,\n\t\t\t});\n\t\t}\n\t\tthis.setState({\n\t\t\tediting: false,\n\t\t\tadding: false,\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\trenameWorkspace(newName: string) {\n\t\tlet oldName = this.state.workspaceBeingEdited;\n\t\tif (oldName === \"\") {\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tif (newName === oldName || newName.trim() === \"\") return this.cancelEdit();\n\n\t\tlet newNameCamelCase = Util.camelCase(newName);\n\t\tif (this.state.workspaceList.some((workspace) => Util.camelCase(workspace.name) === newNameCamelCase)) {\n\t\t\tlet notification = new FSBL.Clients.NotificationClient.Notification();\n\t\t\tnotification.source = \"Finsemble\";\n\t\t\tnotification.title = \"Workspace renaming\";\n\t\t\tnotification.details = `Sorry, unable to rename workspace to \"${newName}\". Please use another name.`;\n\t\t\tFSBL.Clients.NotificationClient.notify(notification);\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tlet updatedWorkspaceList = this.state.workspaceList;\n\t\tlet index = updatedWorkspaceList.findIndex((el) => el.name === oldName);\n\t\t// Set state locally so that the text doesn't change when the input field unmounts.\n\t\tif (index !== -1) {\n\t\t\tupdatedWorkspaceList[index].name = newName;\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: updatedWorkspaceList,\n\t\t\t});\n\t\t}\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"renameWorkspace\",\n\t\t\tdata: {\n\t\t\t\toldName: oldName,\n\t\t\t\tnewName: newName,\n\t\t\t},\n\t\t});\n\t\tif (this.state.workspaceToLoadOnStart === oldName) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tfocusedWorkspace: newName,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.setWorkspaceToLoadOnStart(() => {\n\t\t\t\t\t\tthis.cancelEdit();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\tstartEditingWorkspace(e: React.SyntheticEvent, workspaceName = this.state.focusedWorkspace) {\n\t\t// without preventing this event from reaching the finsemble draggable,\n\t\t// the editor will lose focus and you won't be able to rename your workspaces\n\t\te.stopPropagation();\n\t\tthis.setState({\n\t\t\tediting: true,\n\t\t\tfocusedWorkspace: workspaceName,\n\t\t\tworkspaceBeingEdited: workspaceName,\n\t\t});\n\t}\n\n\tstartExportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"exportWorkspace\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.focusedWorkspace,\n\t\t\t},\n\t\t});\n\t}\n\n\tstartImportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"importTemplate\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.templateName,\n\t\t\t},\n\t\t});\n\t}\n\n\tdeleteWorkspace(workspaceName = this.state.focusedWorkspace) {\n\t\tthis.resetState();\n\n\t\tconst removeWorkspaceFromList = (wasDeleted: boolean) => {\n\t\t\tif (wasDeleted) {\n\t\t\t\tlet workspaceListCopy = [...this.state.workspaceList];\n\t\t\t\tworkspaceListCopy = workspaceListCopy.filter((workspace) => workspace.name !== workspaceName);\n\t\t\t\tthis.setState({ workspaceList: workspaceListCopy });\n\t\t\t}\n\t\t};\n\t\tconst data = {\n\t\t\tname: workspaceName,\n\t\t\thideModalOnClose: false,\n\t\t};\n\n\t\tWorkspaceManagementMenuActions.removeWorkspace(data, removeWorkspaceFromList);\n\t}\n\n\tsetPreferences(err: StandardError, data: any) {\n\t\tconst { value } = data || {};\n\t\tif (!value) return;\n\t\tconsole.log(\"Set preferences\", data.value);\n\t\tthis.setState({\n\t\t\tworkspaceToLoadOnStart: data.value[\"finsemble.initialWorkspace\"],\n\t\t\tfocusedWorkspace: data.value[\"finsemble.initialWorkspace\"],\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.addListener({ field: \"preferences\" }, this.setPreferences);\n\t\tFSBL.Clients.ConfigClient.getPreferences((err, data) => {\n\t\t\tthis.setPreferences(err, { value: data });\n\t\t});\n\n\t\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE, WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t\t(err, values) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tFSBL.Clients.Logger.system.info(\"componentDidMount.getValues error\", err);\n\t\t\t\t}\n\n\t\t\t\tif (values) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tpromptUserOnDirtyWorkspace: values[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE],\n\t\t\t\t\t\tdiscardUnsavedChanges: values[WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.props.getValue({ field: \"WorkspaceList\" }, (err: StandardError, data: Workspace[]) => {\n\t\t\tif (data && data.length) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tworkspaceList: data,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.props.removeListener({ field: \"preferences\" }, this.setPreferences);\n\t}\n\n\tsetPreference(field: string, value: any, cb?: Function) {\n\t\tFSBL.Clients.ConfigClient.setPreference(\n\t\t\t{\n\t\t\t\tfield,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t}\n\t\t\t\tif (cb) {\n\t\t\t\t\tcb();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tsetWorkspaceToLoadOnStart(\n\t\teventOrCb: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement> | (() => void)\n\t) {\n\t\tif (!this.state.focusedWorkspace) return;\n\t\tif (this.state.focusedWorkspace === this.state.workspaceToLoadOnStart) {\n\t\t\tthis.setState({ workspaceToLoadOnStart: null }, () => this.setPreference(\"finsemble.initialWorkspace\", null));\n\t\t} else {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tworkspaceToLoadOnStart: this.state.focusedWorkspace,\n\t\t\t\t},\n\t\t\t\t() => this.setPreference(\"finsemble.initialWorkspace\", this.state.focusedWorkspace)\n\t\t\t);\n\t\t}\n\t}\n\n\topenFileDialog() {\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\tlet inputElement = document.getElementById(\"file-input\");\n\t\tinputElement?.addEventListener(\"change\", this.importWorkspace as ImportWorkspace, false);\n\t\tinputElement?.click();\n\t}\n\n\t/**\n\t * If the event is being listened to, when the preferences component is focused\n\t * it will set always on top to true, and remove the event listener\n\t *\n\t * This is to handle bringing alwaysOnTop back to true when file dialogs are closed\n\t * without changes (also handles bringing back to front after exporting)\n\t */\n\tpreferencesFocused() {\n\t\tfinsembleWindow.removeEventListener(\"focused\", this.preferencesFocused);\n\t\tthis.changePreferencesAlwaysOnTop(true);\n\t}\n\n\timportWorkspace(\n\t\tevt: Event & {\n\t\t\ttarget: {\n\t\t\t\tfiles: File[];\n\t\t\t\tvalue?: string | string[];\n\t\t\t};\n\t\t}\n\t): void {\n\t\tlet inputElement = document.getElementById(\"file-input\") as HTMLInputElement;\n\t\tinputElement?.removeEventListener(\"change\", this.importWorkspace as ImportWorkspace);\n\t\tconst { files } = evt.target; // FileList object\n\n\t\tfunction loadFile(file: File, done: () => void) {\n\t\t\tconst reader = new FileReader();\n\t\t\tlet fileName = evt.target.value;\n\t\t\t// When the file info is loaded, we get into here..\n\t\t\treader.onload = function (e) {\n\t\t\t\tfileName = (fileName as string).split(\"\\\\\");\n\t\t\t\tfileName = fileName[fileName.length - 1].replace(\".json\", \"\");\n\t\t\t\tlet workspaceTemplateDefinition = JSON.parse(e?.target?.result as string);\n\t\t\t\tlet templateName = Object.keys(workspaceTemplateDefinition.workspaceTemplates)[0];\n\t\t\t\tif (fileName !== templateName) {\n\t\t\t\t\t// We want the file name to overwrite the name of the workspace that was saved as the template..\n\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName] =\n\t\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t\tdelete workspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t}\n\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName].name = fileName;\n\t\t\t\tFSBL.Clients.WorkspaceClient.import(\n\t\t\t\t\t{\n\t\t\t\t\t\tworkspaceJSONDefinition: workspaceTemplateDefinition.workspaceTemplates,\n\t\t\t\t\t\tforce: false,\n\t\t\t\t\t},\n\t\t\t\t\t(err: StandardError) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tFSBL.Clients.Logger.system.info(\"addWorkspaceTemplateDefinition error\", err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdone();\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t};\n\n\t\t\t// Read in the image file as a data URL.\n\t\t\treader.readAsText(file);\n\t\t}\n\n\t\tasync.each(files, loadFile, () => {\n\t\t\t// Clear out files. so if the user imports the same file back-to-back, the event will fire.\n\t\t\tif (inputElement?.value) {\n\t\t\t\tinputElement.value = \"\";\n\t\t\t}\n\t\t\tFSBL.Clients.Logger.system.info(\"Workspaces imported\");\n\t\t});\n\t}\n\n\texportWorkspace() {\n\t\tif (this.state.focusedWorkspace === \"\") return;\n\t\tconst doExport = () => {\n\t\t\tFSBL.Clients.WorkspaceClient.getWorkspaceDefinition(\n\t\t\t\t{ workspaceName: this.state.focusedWorkspace },\n\t\t\t\t(err: StandardError, workspaceDefinition: string) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tFSBL.Clients.Logger.system.error(\"getWorkspaceDefinition error\", err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// We're saving using a routine initially created for templates. The outcome is the same and it probably should have just been \"Save to file\". This bool is to allow it to save.\n\t\t\t\t\t\tFSBL.ConfigUtils.promptAndSaveJSONToLocalFile(this.state.focusedWorkspace, {\n\t\t\t\t\t\t\tworkspaceTemplates: workspaceDefinition,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\t// If we're autosaving, autosave, then export.\n\t\tFSBL.Clients.ConfigClient.getValue(\n\t\t\t{\n\t\t\t\tfield: \"finsemble.preferences.workspaceService.promptUserOnDirtyWorkspace\",\n\t\t\t},\n\t\t\t(err, data) => {\n\t\t\t\t// default to false.\n\t\t\t\tlet PROMPT_ON_SAVE = data === null ? false : data;\n\t\t\t\tif (!PROMPT_ON_SAVE) {\n\t\t\t\t\tlet activeName = FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name;\n\t\t\t\t\treturn FSBL.Clients.WorkspaceClient.saveAs(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: activeName,\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tdoExport();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdoExport();\n\t\t\t}\n\t\t);\n\t}\n\n\thandleButtonClicks(e: React.MouseEvent<HTMLDivElement>) {\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tgetFocusedWorkspaceComponentList() {\n\t\tlet { workspaceList, focusedWorkspace } = this.state;\n\t\tif (focusedWorkspace === \"\") return [];\n\t\tlet workspace = workspaceList.filter((wSpace) => wSpace.name === focusedWorkspace)[0];\n\n\t\tFSBL.Clients.WorkspaceClient.getWorkspaceDefinition(\n\t\t\t{ workspaceName: focusedWorkspace },\n\t\t\t(\n\t\t\t\t_: StandardError,\n\t\t\t\tworkspaceDefinition: {\n\t\t\t\t\t[key: string]: WorkspaceTemplate;\n\t\t\t\t}\n\t\t\t) => {\n\t\t\t\tlet componentTypes = workspace?.components;\n\t\t\t\ttry {\n\t\t\t\t\tcomponentTypes = this.getComponentTypes(workspaceDefinition[focusedWorkspace]);\n\t\t\t\t} catch (err) {\n\t\t\t\t} finally {\n\t\t\t\t\tif (componentTypes) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tfocusedWorkspaceComponentList: componentTypes,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\ttoggleDiscardUnsavedChanges() {\n\t\tconst newValue = !this.state.discardUnsavedChanges;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tdiscardUnsavedChanges: newValue,\n\t\t\t},\n\t\t\t() => this.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, newValue)\n\t\t);\n\t}\n\n\ttogglePromptUserOnDirtyWorkspace() {\n\t\tconst newValue = !this.state.promptUserOnDirtyWorkspace;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tpromptUserOnDirtyWorkspace: newValue,\n\t\t\t\tdiscardUnsavedChanges: newValue ? false : this.state.discardUnsavedChanges,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE, newValue);\n\t\t\t\tif (newValue) {\n\t\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, false);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\trender() {\n\t\tlet deleteButtonClasses = \"individual-workspace-action delete-workspace\",\n\t\t\trenameButtonClasses = \"individual-workspace-action\",\n\t\t\tallowDelete = true,\n\t\t\tallowExport = true,\n\t\t\tallowRename = true,\n\t\t\tallowImport = true,\n\t\t\tdeleteTooltip = \"Delete\";\n\n\t\tif (this.state.focusedWorkspace === FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name) {\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t}\n\n\t\tif (this.state.focusedWorkspace === \"\") {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteTooltip = \"No workspace selected\";\n\t\t\tallowRename = false;\n\t\t\tallowExport = false;\n\t\t\tallowDelete = false;\n\t\t}\n\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-button`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-button`;\n\t\t\tallowDelete = false;\n\t\t\tallowExport = false;\n\t\t\tallowRename = false;\n\t\t\tallowImport = false;\n\t\t}\n\n\t\tlet importTooltip = \"Import workspace from file\",\n\t\t\texportTooltip = allowExport ? \"Export selected workspace\" : \"No workspace selected\",\n\t\t\trenameTooltip = allowRename ? \"Rename\" : \"Cannot Edit\";\n\n\t\treturn (\n\t\t\t<div style={{ paddingLeft: 10 }}>\n\t\t\t\t<input style={{ display: \"none\" }} type=\"file\" id=\"file-input\" />\n\t\t\t\t<div className=\"complex-menu-content-row\">\n\t\t\t\t\t<div className=\"workspace-list-header-row\">\n\t\t\t\t\t\t<div className=\"content-section-header workspace-list-header\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"content-section-wrapper\">\n\t\t\t\t\t\t<WorkspaceItemList\n\t\t\t\t\t\t\tonDragEnd={this.onDragEnd}\n\t\t\t\t\t\t\tworkspaceList={this.state.workspaceList}\n\t\t\t\t\t\t\tallowDelete={allowDelete}\n\t\t\t\t\t\t\tdeleteButtonClasses={deleteButtonClasses}\n\t\t\t\t\t\t\tdeleteTooltip={deleteTooltip}\n\t\t\t\t\t\t\tworkspaceToLoadOnStart={this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\t\tfocusedWorkspace={this.state.focusedWorkspace}\n\t\t\t\t\t\t\tediting={this.state.editing}\n\t\t\t\t\t\t\tadding={this.state.adding}\n\t\t\t\t\t\t\trenameWorkspace={this.renameWorkspace}\n\t\t\t\t\t\t\taddWorkspace={this.addWorkspace}\n\t\t\t\t\t\t\tcancelEdit={this.cancelEdit}\n\t\t\t\t\t\t\tsetFocusedWorkspace={this.setFocusedWorkspace}\n\t\t\t\t\t\t\trenameTooltip={renameTooltip}\n\t\t\t\t\t\t\trenameButtonClasses={renameButtonClasses}\n\t\t\t\t\t\t\tallowRename={allowRename}\n\t\t\t\t\t\t\thandleButtonClicks={this.handleButtonClicks}\n\t\t\t\t\t\t\tstartEditingWorkspace={this.startEditingWorkspace}\n\t\t\t\t\t\t\tdeleteWorkspace={this.deleteWorkspace}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className=\"workspace-extras\">\n\t\t\t\t\t\t\t<WorkspaceComponents focusedWorkspaceComponentList={this.state.focusedWorkspaceComponentList} />\n\t\t\t\t\t\t\t<div className=\"workspace-action-buttons\">\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={importTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowImport ? this.openFileDialog : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"import\"\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={exportTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowExport ? this.exportWorkspace : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"export\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tdisabled={!this.state.focusedWorkspace}\n\t\t\t\t\t\tonClick={this.setWorkspaceToLoadOnStart}\n\t\t\t\t\t\tchecked={this.state.focusedWorkspace === this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\tlabel=\"Load this workspace on startup\"\n\t\t\t\t\t/>\n\t\t\t\t\t<> </>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tonClick={this.togglePromptUserOnDirtyWorkspace}\n\t\t\t\t\t\tchecked={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\tlabel=\"Prompt user on dirty workspace\"\n\t\t\t\t\t/>\n\t\t\t\t\t<span className=\"indent-15px\">\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tdisabled={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\t\tonClick={this.toggleDiscardUnsavedChanges}\n\t\t\t\t\t\t\tchecked={this.state.discardUnsavedChanges}\n\t\t\t\t\t\t\tlabel=\"Discard unsaved changes\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/content/Workspaces.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport async from \"async\";\nimport { Util } from \"@finsemble/finsemble-api\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nimport { Actions as WorkspaceManagementMenuActions } from \"../../../toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore\";\nimport { WorkspaceManagementMenuStore } from \"../../stores/UserPreferencesStore\";\nimport { Checkbox } from \"../../../common/Checkbox\";\nimport { WorkspaceButton } from \"../workspaces/WorkspaceButton\";\nimport WorkspaceComponents from \"../workspaces/WorkspaceComponents\";\nimport WorkspaceItemList from \"../workspaces/WorkspaceItemList\";\nimport { Workspace, ImportWorkspace, WorkspaceTemplate } from \"../../../../types/workspaceTypes\";\n\ninterface IProps {\n\taddListener: (fieldListener: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n\tgetValue: (fieldName: { field: string }, cb: (err: StandardError, data: Workspace[]) => void) => void;\n\tremoveListener: (fieldName: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n}\n\ninterface IState {\n\tinitialAlwaysOnTop: boolean;\n\talwaysOnTop: boolean;\n\tworkspaceList: Workspace[];\n\tfocusedWorkspace: string;\n\tediting: boolean;\n\tworkspaceBeingEdited: string;\n\ttemplateName: string;\n\tadding: boolean;\n\tworkspaceToLoadOnStart: string | null;\n\tfocusedWorkspaceComponentList: string[];\n\n\tpromptUserOnDirtyWorkspace: boolean;\n\tdiscardUnsavedChanges: boolean;\n}\n\nconst WORKSPACE_PREFERENCES = {\n\tPROMPT_USER_ON_DIRTY_WORKSPACE: \"finsemble.servicesConfig.workspace.promptUserOnDirtyWorkspace\",\n\tDISCARD_UNSAVED_CHANGES: \"finsemble.servicesConfig.workspace.discardUnsavedChanges\",\n};\n\nexport default class Workspaces extends React.Component<IProps, IState> {\n\taddWorkspace?: () => void;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tworkspaceList: [],\n\t\t\tfocusedWorkspace: \"\",\n\t\t\tworkspaceToLoadOnStart: null,\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t\tfocusedWorkspaceComponentList: [],\n\t\t\tinitialAlwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\talwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\tpromptUserOnDirtyWorkspace: true,\n\t\t\tdiscardUnsavedChanges: false,\n\t\t};\n\t\tthis.bindCorrectContext();\n\t\tthis.addListeners();\n\t}\n\n\tresetState() {\n\t\tthis.setState({\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tfocusedWorkspace: \"\",\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.deleteWorkspace = this.deleteWorkspace.bind(this);\n\t\tthis.addListeners = this.addListeners.bind(this);\n\t\tthis.setWorkspaceList = this.setWorkspaceList.bind(this);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t\tthis.startEditingWorkspace = this.startEditingWorkspace.bind(this);\n\t\tthis.renameWorkspace = this.renameWorkspace.bind(this);\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\n\t\tthis.setWorkspaceToLoadOnStart = this.setWorkspaceToLoadOnStart.bind(this);\n\t\tthis.setPreferences = this.setPreferences.bind(this);\n\t\tthis.exportWorkspace = this.exportWorkspace.bind(this);\n\t\tthis.handleButtonClicks = this.handleButtonClicks.bind(this);\n\t\tthis.getFocusedWorkspaceComponentList = this.getFocusedWorkspaceComponentList.bind(this);\n\t\tthis.changePreferencesAlwaysOnTop = this.changePreferencesAlwaysOnTop.bind(this);\n\t\tthis.openFileDialog = this.openFileDialog.bind(this);\n\t\tthis.preferencesFocused = this.preferencesFocused.bind(this);\n\t\tthis.setFocusedWorkspace = this.setFocusedWorkspace.bind(this);\n\n\t\tthis.toggleDiscardUnsavedChanges = this.toggleDiscardUnsavedChanges.bind(this);\n\t\tthis.togglePromptUserOnDirtyWorkspace = this.togglePromptUserOnDirtyWorkspace.bind(this);\n\t}\n\n\tsetWorkspaceList(err: StandardError, data: { value: Workspace[] }) {\n\t\tconsole.log(\"Set workspacelist\", data);\n\t\tif (!data) return;\n\t\tthis.setState({\n\t\t\tworkspaceList: data.value,\n\t\t});\n\t}\n\n\taddListeners() {\n\t\tthis.props.addListener({ field: \"WorkspaceList\" }, this.setWorkspaceList);\n\t}\n\n\t/**\n\t * Sets the windowOptions.alwaysOnTop to the value supplied. The preferences component should\n\t * not be always on top when a file dialog is open.\n\t * @param {boolean} alwaysOnTop The value to set finsembleWindow.options.alwaysOnTop\n\t */\n\tchangePreferencesAlwaysOnTop(alwaysOnTop: boolean) {\n\t\t// The initialAlwaysOnTop check is to prevent making a component be alwaysOnTop when the\n\t\t// client may have set it to alwaysOnTop:false in the config. If that's the case, it should\n\t\t// never set its alwaysOnTop to true and should always remain unchanged\n\t\tif (this.state.initialAlwaysOnTop) {\n\t\t\tFSBL.Clients.WindowClient.setAlwaysOnTop(alwaysOnTop, () => {\n\t\t\t\tthis.setState({\n\t\t\t\t\talwaysOnTop,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tonDragEnd({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) {\n\t\tlet workspaces = JSON.parse(JSON.stringify(this.state.workspaceList));\n\t\tlet workspaceToMove = JSON.parse(JSON.stringify(workspaces[oldIndex]));\n\t\tworkspaces.splice(oldIndex, 1);\n\t\tworkspaces.splice(newIndex, 0, workspaceToMove);\n\t\tthis.setState({\n\t\t\tworkspaceList: workspaces,\n\t\t});\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"reorderWorkspace\",\n\t\t\tdata: { oldIndex, newIndex },\n\t\t});\n\t}\n\n\t// returns all the component types of a template definition to display to user for additional info. If multiple components with same type, then instead of listing each\n\t// individually, only one entry will be returned with the count in parentheses.\n\tgetComponentTypes(templateObject: WorkspaceTemplate) {\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes templateObject\", templateObject);\n\t\tlet componentType: string;\n\t\tlet componentMap: { [key: string]: number } = {};\n\t\tlet annotatedComponentList = [];\n\t\tfor (let i = 0; i < templateObject.windows.length; i++) {\n\t\t\tlet windowData = templateObject.windowData[i];\n\t\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes loop\", windowData);\n\t\t\tcomponentType = \"Unknown Component\";\n\t\t\tif (windowData) {\n\t\t\t\t// current assimilation doesn't fill in windowData, so in this case use \"Unknown Component\" for component type\n\t\t\t\tcomponentType = windowData.componentType || windowData.customData.component.type;\n\t\t\t} else {\n\t\t\t\tcomponentType = \"Unknown Component\";\n\t\t\t}\n\t\t\tif (!componentMap[componentType]) {\n\t\t\t\tcomponentMap[componentType] = 1;\n\t\t\t} else {\n\t\t\t\tcomponentMap[componentType]++;\n\t\t\t}\n\t\t}\n\n\t\tconst componentTypes = Object.keys(componentMap);\n\t\tfor (let i = 0; i < componentTypes.length; i++) {\n\t\t\tlet annotatedName = componentTypes[i];\n\t\t\tlet identicalCount = componentMap[componentTypes[i]];\n\t\t\tif (identicalCount > 1) {\n\t\t\t\tannotatedName = `${annotatedName} (${identicalCount})`;\n\t\t\t}\n\t\t\tannotatedComponentList.push(annotatedName);\n\t\t}\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes\", annotatedComponentList);\n\t\treturn annotatedComponentList;\n\t}\n\n\tsetFocusedWorkspace(workspace: string) {\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tfocusedWorkspace: workspace,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.getFocusedWorkspaceComponentList();\n\t\t\t}\n\t\t);\n\t}\n\n\tcancelEdit() {\n\t\tif (this.state.adding) {\n\t\t\tlet { workspaceList } = this.state;\n\t\t\tworkspaceList.pop();\n\t\t\tthis.setFocusedWorkspace(\"\");\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: workspaceList,\n\t\t\t});\n\t\t}\n\t\tthis.setState({\n\t\t\tediting: false,\n\t\t\tadding: false,\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\trenameWorkspace(newName: string) {\n\t\tlet oldName = this.state.workspaceBeingEdited;\n\t\tif (oldName === \"\") {\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tif (newName === oldName || newName.trim() === \"\") return this.cancelEdit();\n\n\t\tlet newNameCamelCase = Util.camelCase(newName);\n\t\tif (this.state.workspaceList.some((workspace) => Util.camelCase(workspace.name) === newNameCamelCase)) {\n\t\t\tlet notification = new FSBL.Clients.NotificationClient.Notification();\n\t\t\tnotification.source = \"Finsemble\";\n\t\t\tnotification.title = \"Workspace renaming\";\n\t\t\tnotification.details = `Sorry, unable to rename workspace to \"${newName}\". Please use another name.`;\n\t\t\tFSBL.Clients.NotificationClient.notify(notification);\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tlet updatedWorkspaceList = this.state.workspaceList;\n\t\tlet index = updatedWorkspaceList.findIndex((el) => el.name === oldName);\n\t\t// Set state locally so that the text doesn't change when the input field unmounts.\n\t\tif (index !== -1) {\n\t\t\tupdatedWorkspaceList[index].name = newName;\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: updatedWorkspaceList,\n\t\t\t});\n\t\t}\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"renameWorkspace\",\n\t\t\tdata: {\n\t\t\t\toldName: oldName,\n\t\t\t\tnewName: newName,\n\t\t\t},\n\t\t});\n\t\tif (this.state.workspaceToLoadOnStart === oldName) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tfocusedWorkspace: newName,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.setWorkspaceToLoadOnStart(() => {\n\t\t\t\t\t\tthis.cancelEdit();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\tstartEditingWorkspace(e: React.SyntheticEvent, workspaceName = this.state.focusedWorkspace) {\n\t\t// without preventing this event from reaching the finsemble draggable,\n\t\t// the editor will lose focus and you won't be able to rename your workspaces\n\t\te.stopPropagation();\n\t\tthis.setState({\n\t\t\tediting: true,\n\t\t\tfocusedWorkspace: workspaceName,\n\t\t\tworkspaceBeingEdited: workspaceName,\n\t\t});\n\t}\n\n\tstartExportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"exportWorkspace\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.focusedWorkspace,\n\t\t\t},\n\t\t});\n\t}\n\n\tstartImportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"importTemplate\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.templateName,\n\t\t\t},\n\t\t});\n\t}\n\n\tdeleteWorkspace(workspaceName = this.state.focusedWorkspace) {\n\t\tthis.resetState();\n\n\t\tconst removeWorkspaceFromList = (wasDeleted: boolean) => {\n\t\t\tif (wasDeleted) {\n\t\t\t\tlet workspaceListCopy = [...this.state.workspaceList];\n\t\t\t\tworkspaceListCopy = workspaceListCopy.filter((workspace) => workspace.name !== workspaceName);\n\t\t\t\tthis.setState({ workspaceList: workspaceListCopy });\n\t\t\t}\n\t\t};\n\t\tconst data = {\n\t\t\tname: workspaceName,\n\t\t\thideModalOnClose: false,\n\t\t};\n\n\t\tWorkspaceManagementMenuActions.removeWorkspace(data, removeWorkspaceFromList);\n\t}\n\n\tsetPreferences(err: StandardError, data: any) {\n\t\tconst { value } = data || {};\n\t\tif (!value) return;\n\t\tconsole.log(\"Set preferences\", data.value);\n\t\tthis.setState({\n\t\t\tworkspaceToLoadOnStart: data.value[\"finsemble.initialWorkspace\"],\n\t\t\tfocusedWorkspace: data.value[\"finsemble.initialWorkspace\"],\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.addListener({ field: \"preferences\" }, this.setPreferences);\n\t\tFSBL.Clients.ConfigClient.getPreferences((err, data) => {\n\t\t\tthis.setPreferences(err, { value: data });\n\t\t});\n\n\t\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE, WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t\t(err, values) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tFSBL.Clients.Logger.system.info(\"componentDidMount.getValues error\", err);\n\t\t\t\t}\n\n\t\t\t\tif (values) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tpromptUserOnDirtyWorkspace: values[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE],\n\t\t\t\t\t\tdiscardUnsavedChanges: values[WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.props.getValue({ field: \"WorkspaceList\" }, (err: StandardError, data: Workspace[]) => {\n\t\t\tif (data && data.length) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tworkspaceList: data,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.props.removeListener({ field: \"preferences\" }, this.setPreferences);\n\t}\n\n\tsetPreference(field: string, value: any, cb?: Function) {\n\t\tFSBL.Clients.ConfigClient.setPreference(\n\t\t\t{\n\t\t\t\tfield,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t}\n\t\t\t\tif (cb) {\n\t\t\t\t\tcb();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tsetWorkspaceToLoadOnStart(\n\t\teventOrCb: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement> | (() => void)\n\t) {\n\t\tif (!this.state.focusedWorkspace) return;\n\t\tif (this.state.focusedWorkspace === this.state.workspaceToLoadOnStart) {\n\t\t\tthis.setState({ workspaceToLoadOnStart: null }, () => this.setPreference(\"finsemble.initialWorkspace\", null));\n\t\t} else {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tworkspaceToLoadOnStart: this.state.focusedWorkspace,\n\t\t\t\t},\n\t\t\t\t() => this.setPreference(\"finsemble.initialWorkspace\", this.state.focusedWorkspace)\n\t\t\t);\n\t\t}\n\t}\n\n\topenFileDialog() {\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\tlet inputElement = document.getElementById(\"file-input\");\n\t\tinputElement?.addEventListener(\"change\", this.importWorkspace as ImportWorkspace, false);\n\t\tinputElement?.click();\n\t}\n\n\t/**\n\t * If the event is being listened to, when the preferences component is focused\n\t * it will set always on top to true, and remove the event listener\n\t *\n\t * This is to handle bringing alwaysOnTop back to true when file dialogs are closed\n\t * without changes (also handles bringing back to front after exporting)\n\t */\n\tpreferencesFocused() {\n\t\tfinsembleWindow.removeEventListener(\"focused\", this.preferencesFocused);\n\t\tthis.changePreferencesAlwaysOnTop(true);\n\t}\n\n\timportWorkspace(\n\t\tevt: Event & {\n\t\t\ttarget: {\n\t\t\t\tfiles: File[];\n\t\t\t\tvalue?: string | string[];\n\t\t\t};\n\t\t}\n\t): void {\n\t\tlet inputElement = document.getElementById(\"file-input\") as HTMLInputElement;\n\t\tinputElement?.removeEventListener(\"change\", this.importWorkspace as ImportWorkspace);\n\t\tconst { files } = evt.target; // FileList object\n\n\t\tfunction loadFile(file: File, done: () => void) {\n\t\t\tconst reader = new FileReader();\n\t\t\tlet fileName = evt.target.value;\n\t\t\t// When the file info is loaded, we get into here..\n\t\t\treader.onload = function (e) {\n\t\t\t\tfileName = (fileName as string).split(\"\\\\\");\n\t\t\t\tfileName = fileName[fileName.length - 1].replace(\".json\", \"\");\n\t\t\t\tlet workspaceTemplateDefinition = JSON.parse(e?.target?.result as string);\n\t\t\t\tlet templateName = Object.keys(workspaceTemplateDefinition.workspaceTemplates)[0];\n\t\t\t\tif (fileName !== templateName) {\n\t\t\t\t\t// We want the file name to overwrite the name of the workspace that was saved as the template..\n\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName] =\n\t\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t\tdelete workspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t}\n\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName].name = fileName;\n\t\t\t\tFSBL.Clients.WorkspaceClient.import(\n\t\t\t\t\t{\n\t\t\t\t\t\tworkspaceJSONDefinition: workspaceTemplateDefinition.workspaceTemplates,\n\t\t\t\t\t\tforce: false,\n\t\t\t\t\t},\n\t\t\t\t\t(err: StandardError) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tFSBL.Clients.Logger.system.info(\"addWorkspaceTemplateDefinition error\", err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdone();\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t};\n\n\t\t\t// Read in the image file as a data URL.\n\t\t\treader.readAsText(file);\n\t\t}\n\n\t\tasync.each(files, loadFile, () => {\n\t\t\t// Clear out files. so if the user imports the same file back-to-back, the event will fire.\n\t\t\tif (inputElement?.value) {\n\t\t\t\tinputElement.value = \"\";\n\t\t\t}\n\t\t\tFSBL.Clients.Logger.system.info(\"Workspaces imported\");\n\t\t});\n\t}\n\n\texportWorkspace() {\n\t\tif (this.state.focusedWorkspace === \"\") return;\n\t\tconst doExport = () => {\n\t\t\tFSBL.Clients.WorkspaceClient.getWorkspaceDefinition(\n\t\t\t\t{ workspaceName: this.state.focusedWorkspace },\n\t\t\t\t(err: StandardError, workspaceDefinition: string) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tFSBL.Clients.Logger.system.error(\"getWorkspaceDefinition error\", err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// We're saving using a routine initially created for templates. The outcome is the same and it probably should have just been \"Save to file\". This bool is to allow it to save.\n\t\t\t\t\t\tFSBL.ConfigUtils.promptAndSaveJSONToLocalFile(this.state.focusedWorkspace, {\n\t\t\t\t\t\t\tworkspaceTemplates: workspaceDefinition,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\t// If we're autosaving, autosave, then export.\n\t\tFSBL.Clients.ConfigClient.getValue(\n\t\t\t{\n\t\t\t\tfield: \"finsemble.preferences.workspaceService.promptUserOnDirtyWorkspace\",\n\t\t\t},\n\t\t\t(err, data) => {\n\t\t\t\t// default to false.\n\t\t\t\tlet PROMPT_ON_SAVE = data === null ? false : data;\n\t\t\t\tif (!PROMPT_ON_SAVE) {\n\t\t\t\t\tlet activeName = FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name;\n\t\t\t\t\treturn FSBL.Clients.WorkspaceClient.saveAs(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: activeName,\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tdoExport();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdoExport();\n\t\t\t}\n\t\t);\n\t}\n\n\thandleButtonClicks(e: React.MouseEvent<HTMLDivElement>) {\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tgetFocusedWorkspaceComponentList() {\n\t\tlet { workspaceList, focusedWorkspace } = this.state;\n\t\tif (focusedWorkspace === \"\") return [];\n\t\tlet workspace = workspaceList.filter((wSpace) => wSpace.name === focusedWorkspace)[0];\n\n\t\tFSBL.Clients.WorkspaceClient.getWorkspaceDefinition(\n\t\t\t{ workspaceName: focusedWorkspace },\n\t\t\t(\n\t\t\t\t_: StandardError,\n\t\t\t\tworkspaceDefinition: {\n\t\t\t\t\t[key: string]: WorkspaceTemplate;\n\t\t\t\t}\n\t\t\t) => {\n\t\t\t\tlet componentTypes = workspace?.components;\n\t\t\t\ttry {\n\t\t\t\t\tcomponentTypes = this.getComponentTypes(workspaceDefinition[focusedWorkspace]);\n\t\t\t\t} catch (err) {\n\t\t\t\t} finally {\n\t\t\t\t\tif (componentTypes) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tfocusedWorkspaceComponentList: componentTypes,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\ttoggleDiscardUnsavedChanges() {\n\t\tconst newValue = !this.state.discardUnsavedChanges;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tdiscardUnsavedChanges: newValue,\n\t\t\t},\n\t\t\t() => this.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, newValue)\n\t\t);\n\t}\n\n\ttogglePromptUserOnDirtyWorkspace() {\n\t\tconst newValue = !this.state.promptUserOnDirtyWorkspace;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tpromptUserOnDirtyWorkspace: newValue,\n\t\t\t\tdiscardUnsavedChanges: newValue ? false : this.state.discardUnsavedChanges,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE, newValue);\n\t\t\t\tif (newValue) {\n\t\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, false);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\trender() {\n\t\tlet deleteButtonClasses = \"individual-workspace-action delete-workspace\",\n\t\t\trenameButtonClasses = \"individual-workspace-action\",\n\t\t\tallowDelete = true,\n\t\t\tallowExport = true,\n\t\t\tallowRename = true,\n\t\t\tallowImport = true,\n\t\t\tdeleteTooltip = \"Delete\";\n\n\t\tif (this.state.focusedWorkspace === FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name) {\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t}\n\n\t\tif (this.state.focusedWorkspace === \"\") {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteTooltip = \"No workspace selected\";\n\t\t\tallowRename = false;\n\t\t\tallowExport = false;\n\t\t\tallowDelete = false;\n\t\t}\n\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-button`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-button`;\n\t\t\tallowDelete = false;\n\t\t\tallowExport = false;\n\t\t\tallowRename = false;\n\t\t\tallowImport = false;\n\t\t}\n\n\t\tlet importTooltip = \"Import workspace from file\",\n\t\t\texportTooltip = allowExport ? \"Export selected workspace\" : \"No workspace selected\",\n\t\t\trenameTooltip = allowRename ? \"Rename\" : \"Cannot Edit\";\n\n\t\treturn (\n\t\t\t<div style={{ paddingLeft: 10 }}>\n\t\t\t\t<input style={{ display: \"none\" }} type=\"file\" id=\"file-input\" />\n\t\t\t\t<div className=\"complex-menu-content-row\">\n\t\t\t\t\t<div className=\"workspace-list-header-row\">\n\t\t\t\t\t\t<div className=\"content-section-header workspace-list-header\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"content-section-wrapper\">\n\t\t\t\t\t\t<WorkspaceItemList\n\t\t\t\t\t\t\tonDragEnd={this.onDragEnd}\n\t\t\t\t\t\t\tworkspaceList={this.state.workspaceList}\n\t\t\t\t\t\t\tallowDelete={allowDelete}\n\t\t\t\t\t\t\tdeleteButtonClasses={deleteButtonClasses}\n\t\t\t\t\t\t\tdeleteTooltip={deleteTooltip}\n\t\t\t\t\t\t\tworkspaceToLoadOnStart={this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\t\tfocusedWorkspace={this.state.focusedWorkspace}\n\t\t\t\t\t\t\tediting={this.state.editing}\n\t\t\t\t\t\t\tadding={this.state.adding}\n\t\t\t\t\t\t\trenameWorkspace={this.renameWorkspace}\n\t\t\t\t\t\t\taddWorkspace={this.addWorkspace}\n\t\t\t\t\t\t\tcancelEdit={this.cancelEdit}\n\t\t\t\t\t\t\tsetFocusedWorkspace={this.setFocusedWorkspace}\n\t\t\t\t\t\t\trenameTooltip={renameTooltip}\n\t\t\t\t\t\t\trenameButtonClasses={renameButtonClasses}\n\t\t\t\t\t\t\tallowRename={allowRename}\n\t\t\t\t\t\t\thandleButtonClicks={this.handleButtonClicks}\n\t\t\t\t\t\t\tstartEditingWorkspace={this.startEditingWorkspace}\n\t\t\t\t\t\t\tdeleteWorkspace={this.deleteWorkspace}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className=\"workspace-extras\">\n\t\t\t\t\t\t\t<WorkspaceComponents focusedWorkspaceComponentList={this.state.focusedWorkspaceComponentList} />\n\t\t\t\t\t\t\t<div className=\"workspace-action-buttons\">\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={importTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowImport ? this.openFileDialog : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"import\"\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={exportTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowExport ? this.exportWorkspace : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"export\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tdisabled={!this.state.focusedWorkspace}\n\t\t\t\t\t\tonClick={this.setWorkspaceToLoadOnStart}\n\t\t\t\t\t\tchecked={this.state.focusedWorkspace === this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\tlabel=\"Load this workspace on startup\"\n\t\t\t\t\t/>\n\t\t\t\t\t<> </>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tonClick={this.togglePromptUserOnDirtyWorkspace}\n\t\t\t\t\t\tchecked={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\tlabel=\"Prompt user on dirty workspace\"\n\t\t\t\t\t/>\n\t\t\t\t\t<span className=\"indent-15px\">\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tdisabled={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\t\tonClick={this.toggleDiscardUnsavedChanges}\n\t\t\t\t\t\t\tchecked={this.state.discardUnsavedChanges}\n\t\t\t\t\t\t\tlabel=\"Discard unsaved changes\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import React, { useContext, useEffect, useState } from "react";
|
|
2
|
+
// Context
|
|
2
3
|
import { NotificationsPreferencesContext } from "../../../NotificationsPreferencesContext";
|
|
4
|
+
// Components
|
|
3
5
|
import { Checkbox } from "../../../../common/Checkbox";
|
|
4
6
|
import DefaultDropdownButton from "../../../../shared/DefaultDropdownButton";
|
|
5
7
|
import ButtonRow from "../../../../common/ButtonRow";
|
|
8
|
+
// Utils
|
|
6
9
|
import { loadSources } from "./notificationViewsUtils";
|
|
7
10
|
const FINSEMBLE_NOTIFICATIONS_SERVICE_CONFIG_PATH = "finsemble.servicesConfig.notifications";
|
|
8
11
|
const NOTIFICATIONS_PREFERENCES_KEYS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationsPreferencesHome.js","sourceRoot":"","sources":["../../../../../../src/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useState } from \"react\";\n\n// Context\nimport { NotificationsPreferencesContext } from \"../../../NotificationsPreferencesContext\";\n\n// Components\nimport { Checkbox } from \"../../../../common/Checkbox\";\nimport DefaultDropdownButton, {\n\tIFinsembleDefaultDropdownButtonOptionsProps,\n} from \"../../../../shared/DefaultDropdownButton\";\nimport ButtonRow from \"../../../../common/ButtonRow\";\n\n// Utils\nimport { loadSources } from \"./notificationViewsUtils\";\n\nconst FINSEMBLE_NOTIFICATIONS_SERVICE_CONFIG_PATH = \"finsemble.servicesConfig.notifications\";\nconst NOTIFICATIONS_PREFERENCES_KEYS = {\n\tDISABLE_DOT_ON_TOOLBAR_ICON: \"disableDotOnToolbarIcon\",\n\tSHOW_DOT_ON_TOOLBAR_ICON_MUTED_NOTIFICATIONS: \"showDotOnToolbarIconForMutedNotifications\",\n\tINFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS: \"informationalNotificationToastPeriodSeconds\",\n\tDEFAULT_SNOOZE_PERIOD_SECONDS: \"defaultSnoozePeriodSeconds\",\n\tNEW_NOTIFICATION_HALO_PERIOD_SECONDS: \"newNotificationHaloPeriodSeconds\",\n};\n\nconst setAndTransmitPreferenceChange = (preferenceKey: string, value: any) => {\n\tFSBL.Clients.ConfigClient.setPreference(\n\t\t{\n\t\t\tfield: `${FINSEMBLE_NOTIFICATIONS_SERVICE_CONFIG_PATH}.${preferenceKey}`,\n\t\t\tvalue,\n\t\t},\n\t\t(err) => {\n\t\t\tif (err) {\n\t\t\t\tFSBL.Clients.Logger.system.error(\n\t\t\t\t\t`Error setting preference from Notifications Preferences Home Component - preference: ${preferenceKey} - value: ${value} `,\n\t\t\t\t\terr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\n\t\t\t\t\tnotificationPreferences: {\n\t\t\t\t\t\t[preferenceKey]: value,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t);\n};\n\nconst informationalToastDuration: IFinsembleDefaultDropdownButtonOptionsProps[] = [\n\t{\n\t\toptionLabel: \"10 seconds\",\n\t\toptionValue: 10,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t10\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"30 seconds\",\n\t\toptionValue: 30,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t30\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"45 seconds\",\n\t\toptionValue: 45,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t45\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"60 seconds\",\n\t\toptionValue: 60,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t60\n\t\t\t);\n\t\t},\n\t},\n];\n\nconst snoozeDuration: IFinsembleDefaultDropdownButtonOptionsProps[] = [\n\t{\n\t\toptionLabel: \"5 minutes\",\n\t\toptionValue: 300,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 300);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"10 minutes\",\n\t\toptionValue: 600,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 600);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"20 minutes\",\n\t\toptionValue: 1200,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 1200);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"30 minutes\",\n\t\toptionValue: 1800,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 1800);\n\t\t},\n\t},\n];\n\nconst newNotificationsHalo: IFinsembleDefaultDropdownButtonOptionsProps[] = [\n\t{\n\t\toptionLabel: \"30 seconds\",\n\t\toptionValue: 30,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 30);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"1 minute\",\n\t\toptionValue: 60,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 60);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"3 minutes\",\n\t\toptionValue: 180,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 180);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"5 minutes\",\n\t\toptionValue: 600,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 600);\n\t\t},\n\t},\n];\n\nconst NotificationsMainPreferences: React.FunctionComponent = () => {\n\tconst notificationsPreferencesContext = useContext(NotificationsPreferencesContext);\n\tconst {\n\t\tnotificationSources,\n\t\tsetNotificationSources,\n\t\tsetSelectedNotificationSource,\n\t\tsetCurrentNotificationsPreferencesView,\n\t} = notificationsPreferencesContext;\n\n\tconst [reloadSources, setReloadSources] = useState(false);\n\n\tconst [notificationPreferences, setNotificationPreferences] = useState<any>({});\n\n\tuseEffect(() => {\n\t\tasync function getNotificationsPreferences() {\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\n\t\t}\n\n\t\tgetNotificationsPreferences().then((preferences: any) => {\n\t\t\tFSBL.Clients.Logger.info(\"NotificationsPreferencesHome\", preferences);\n\t\t\tsetNotificationPreferences(preferences);\n\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\tfunction listenForRefreshEvent(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleNotificationsPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (data === \"notificationReceived\") {\n\t\t\t\t\tsetReloadSources(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsPreferencesChannel\", listenForRefreshEvent);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsPreferencesChannel\", listenForRefreshEvent);\n\t\t};\n\t}, []);\n\t{\n\t\tnotificationSources &&\n\t\t\tuseEffect(() => {\n\t\t\t\tloadSources(setNotificationSources, setReloadSources);\n\t\t\t}, [notificationSources.length == 0, reloadSources]);\n\t}\n\n\tuseEffect(() => {\n\t\tfunction navigateToSourceDetail(err: any, response: any) {\n\t\t\tconst { data } = response;\n\t\t\tif (data.notification) {\n\t\t\t\tconst selectedSource = notificationSources.find((source) => source.source === data.notification.source) || null;\n\t\t\t\tsetSelectedNotificationSource(selectedSource);\n\t\t\t\tsetCurrentNotificationsPreferencesView(\"Details\");\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsNavigationChannel\", navigateToSourceDetail);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsNavigationChannel\", navigateToSourceDetail);\n\t\t};\n\t}, [notificationSources]);\n\n\tconst toggleNotificationDot = () => {\n\t\tsetNotificationPreferences((prevState: any) => {\n\t\t\treturn {\n\t\t\t\t...prevState,\n\t\t\t\tdisableDotOnToolbarIcon: !notificationPreferences.disableDotOnToolbarIcon,\n\t\t\t};\n\t\t});\n\t\tsetAndTransmitPreferenceChange(\"disableDotOnToolbarIcon\", !notificationPreferences.disableDotOnToolbarIcon);\n\t};\n\n\tconst toggleActionableNotificationToast = () => {\n\t\tsetNotificationPreferences((prevState: any) => {\n\t\t\treturn {\n\t\t\t\t...prevState,\n\t\t\t\ttoastTimeoutOnActionableNotifications: !notificationPreferences.toastTimeoutOnActionableNotifications,\n\t\t\t};\n\t\t});\n\t\tsetAndTransmitPreferenceChange(\n\t\t\t\"toastTimeoutOnActionableNotifications\",\n\t\t\t!notificationPreferences.toastTimeoutOnActionableNotifications\n\t\t);\n\t};\n\n\tconst toggleNotificationDotForMutedNotifications = () => {\n\t\tsetNotificationPreferences((prevState: any) => {\n\t\t\treturn {\n\t\t\t\t...prevState,\n\t\t\t\tshowDotOnToolbarIconForMutedNotifications: !notificationPreferences.showDotOnToolbarIconForMutedNotifications,\n\t\t\t};\n\t\t});\n\t\tsetAndTransmitPreferenceChange(\n\t\t\t\"showDotOnToolbarIconForMutedNotifications\",\n\t\t\t!notificationPreferences.showDotOnToolbarIconForMutedNotifications\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<ButtonRow\n\t\t\t\t\tlabel=\"Notification sources\"\n\t\t\t\t\tonClick={() => setCurrentNotificationsPreferencesView(\"Sources\")}\n\t\t\t\t\ticonClass=\"ff-caret-up rotate-90\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<Checkbox\n\t\t\t\t\tonClick={toggleNotificationDot}\n\t\t\t\t\tchecked={!notificationPreferences.disableDotOnToolbarIcon}\n\t\t\t\t\tlabel=\"Show notification dot for new notifications\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<Checkbox\n\t\t\t\t\tdisabled={notificationPreferences.disableDotOnToolbarIcon}\n\t\t\t\t\tonClick={toggleNotificationDotForMutedNotifications}\n\t\t\t\t\tchecked={notificationPreferences.showDotOnToolbarIconForMutedNotifications}\n\t\t\t\t\tlabel=\"Show notification dot for notifications marked as “Don’t show”\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\" style={{ paddingTop: \"15px\", paddingBottom: \"15px\" }}>\n\t\t\t\t<Checkbox\n\t\t\t\t\tonClick={toggleActionableNotificationToast}\n\t\t\t\t\tchecked={notificationPreferences.toastTimeoutOnActionableNotifications}\n\t\t\t\t\tlabel=\"Enable toast timeouts on actionable notifications\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<span className=\"row__lbl\">Toast times out after</span>\n\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\tcaretLocation=\"right\"\n\t\t\t\t\tdefaultSelection={informationalToastDuration.find(\n\t\t\t\t\t\t(element) => element.optionValue === notificationPreferences.informationalNotificationToastPeriodSeconds\n\t\t\t\t\t)}\n\t\t\t\t\tbuttonOptions={informationalToastDuration}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<span className=\"row__lbl\">Snooze for</span>\n\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\tcaretLocation=\"right\"\n\t\t\t\t\tdefaultSelection={snoozeDuration.find(\n\t\t\t\t\t\t(element) => element.optionValue === notificationPreferences.defaultSnoozePeriodSeconds\n\t\t\t\t\t)}\n\t\t\t\t\tbuttonOptions={snoozeDuration}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<span className=\"row__lbl\">Turn off the new notification halo after</span>\n\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\tcaretLocation=\"right\"\n\t\t\t\t\tdefaultSelection={newNotificationsHalo.find(\n\t\t\t\t\t\t(element) => element.optionValue === notificationPreferences.newNotificationHaloPeriodSeconds\n\t\t\t\t\t)}\n\t\t\t\t\tbuttonOptions={newNotificationsHalo}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default NotificationsMainPreferences;\n"]}
|
|
1
|
+
{"version":3,"file":"NotificationsPreferencesHome.js","sourceRoot":"","sources":["../../../../../../src/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useState } from \"react\";\n\n// Context\nimport { NotificationsPreferencesContext } from \"../../../NotificationsPreferencesContext\";\n\n// Components\nimport { Checkbox } from \"../../../../common/Checkbox\";\nimport DefaultDropdownButton, {\n\tIFinsembleDefaultDropdownButtonOptionsProps,\n} from \"../../../../shared/DefaultDropdownButton\";\nimport ButtonRow from \"../../../../common/ButtonRow\";\n\n// Utils\nimport { loadSources } from \"./notificationViewsUtils\";\n\nconst FINSEMBLE_NOTIFICATIONS_SERVICE_CONFIG_PATH = \"finsemble.servicesConfig.notifications\";\nconst NOTIFICATIONS_PREFERENCES_KEYS = {\n\tDISABLE_DOT_ON_TOOLBAR_ICON: \"disableDotOnToolbarIcon\",\n\tSHOW_DOT_ON_TOOLBAR_ICON_MUTED_NOTIFICATIONS: \"showDotOnToolbarIconForMutedNotifications\",\n\tINFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS: \"informationalNotificationToastPeriodSeconds\",\n\tDEFAULT_SNOOZE_PERIOD_SECONDS: \"defaultSnoozePeriodSeconds\",\n\tNEW_NOTIFICATION_HALO_PERIOD_SECONDS: \"newNotificationHaloPeriodSeconds\",\n};\n\nconst setAndTransmitPreferenceChange = (preferenceKey: string, value: any) => {\n\tFSBL.Clients.ConfigClient.setPreference(\n\t\t{\n\t\t\tfield: `${FINSEMBLE_NOTIFICATIONS_SERVICE_CONFIG_PATH}.${preferenceKey}`,\n\t\t\tvalue,\n\t\t},\n\t\t(err) => {\n\t\t\tif (err) {\n\t\t\t\tFSBL.Clients.Logger.system.error(\n\t\t\t\t\t`Error setting preference from Notifications Preferences Home Component - preference: ${preferenceKey} - value: ${value} `,\n\t\t\t\t\terr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\n\t\t\t\t\tnotificationPreferences: {\n\t\t\t\t\t\t[preferenceKey]: value,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t);\n};\n\nconst informationalToastDuration: IFinsembleDefaultDropdownButtonOptionsProps[] = [\n\t{\n\t\toptionLabel: \"10 seconds\",\n\t\toptionValue: 10,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t10\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"30 seconds\",\n\t\toptionValue: 30,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t30\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"45 seconds\",\n\t\toptionValue: 45,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t45\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"60 seconds\",\n\t\toptionValue: 60,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(\n\t\t\t\tNOTIFICATIONS_PREFERENCES_KEYS.INFORMATIONAL_NOTIFICATION_TOAST_PERIOD_SECONDS,\n\t\t\t\t60\n\t\t\t);\n\t\t},\n\t},\n];\n\nconst snoozeDuration: IFinsembleDefaultDropdownButtonOptionsProps[] = [\n\t{\n\t\toptionLabel: \"5 minutes\",\n\t\toptionValue: 300,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 300);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"10 minutes\",\n\t\toptionValue: 600,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 600);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"20 minutes\",\n\t\toptionValue: 1200,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 1200);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"30 minutes\",\n\t\toptionValue: 1800,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.DEFAULT_SNOOZE_PERIOD_SECONDS, 1800);\n\t\t},\n\t},\n];\n\nconst newNotificationsHalo: IFinsembleDefaultDropdownButtonOptionsProps[] = [\n\t{\n\t\toptionLabel: \"30 seconds\",\n\t\toptionValue: 30,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 30);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"1 minute\",\n\t\toptionValue: 60,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 60);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"3 minutes\",\n\t\toptionValue: 180,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 180);\n\t\t},\n\t},\n\t{\n\t\toptionLabel: \"5 minutes\",\n\t\toptionValue: 600,\n\t\tclickHandler: () => {\n\t\t\tsetAndTransmitPreferenceChange(NOTIFICATIONS_PREFERENCES_KEYS.NEW_NOTIFICATION_HALO_PERIOD_SECONDS, 600);\n\t\t},\n\t},\n];\n\nconst NotificationsMainPreferences: React.FunctionComponent = () => {\n\tconst notificationsPreferencesContext = useContext(NotificationsPreferencesContext);\n\tconst {\n\t\tnotificationSources,\n\t\tsetNotificationSources,\n\t\tsetSelectedNotificationSource,\n\t\tsetCurrentNotificationsPreferencesView,\n\t} = notificationsPreferencesContext;\n\n\tconst [reloadSources, setReloadSources] = useState(false);\n\n\tconst [notificationPreferences, setNotificationPreferences] = useState<any>({});\n\n\tuseEffect(() => {\n\t\tasync function getNotificationsPreferences() {\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\n\t\t}\n\n\t\tgetNotificationsPreferences().then((preferences: any) => {\n\t\t\tFSBL.Clients.Logger.info(\"NotificationsPreferencesHome\", preferences);\n\t\t\tsetNotificationPreferences(preferences);\n\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\tfunction listenForRefreshEvent(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleNotificationsPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (data === \"notificationReceived\") {\n\t\t\t\t\tsetReloadSources(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsPreferencesChannel\", listenForRefreshEvent);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsPreferencesChannel\", listenForRefreshEvent);\n\t\t};\n\t}, []);\n\t{\n\t\tnotificationSources &&\n\t\t\tuseEffect(() => {\n\t\t\t\tloadSources(setNotificationSources, setReloadSources);\n\t\t\t}, [notificationSources.length == 0, reloadSources]);\n\t}\n\n\tuseEffect(() => {\n\t\tfunction navigateToSourceDetail(err: any, response: any) {\n\t\t\tconst { data } = response;\n\t\t\tif (data.notification) {\n\t\t\t\tconst selectedSource = notificationSources.find((source) => source.source === data.notification.source) || null;\n\t\t\t\tsetSelectedNotificationSource(selectedSource);\n\t\t\t\tsetCurrentNotificationsPreferencesView(\"Details\");\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsNavigationChannel\", navigateToSourceDetail);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsNavigationChannel\", navigateToSourceDetail);\n\t\t};\n\t}, [notificationSources]);\n\n\tconst toggleNotificationDot = () => {\n\t\tsetNotificationPreferences((prevState: any) => {\n\t\t\treturn {\n\t\t\t\t...prevState,\n\t\t\t\tdisableDotOnToolbarIcon: !notificationPreferences.disableDotOnToolbarIcon,\n\t\t\t};\n\t\t});\n\t\tsetAndTransmitPreferenceChange(\"disableDotOnToolbarIcon\", !notificationPreferences.disableDotOnToolbarIcon);\n\t};\n\n\tconst toggleActionableNotificationToast = () => {\n\t\tsetNotificationPreferences((prevState: any) => {\n\t\t\treturn {\n\t\t\t\t...prevState,\n\t\t\t\ttoastTimeoutOnActionableNotifications: !notificationPreferences.toastTimeoutOnActionableNotifications,\n\t\t\t};\n\t\t});\n\t\tsetAndTransmitPreferenceChange(\n\t\t\t\"toastTimeoutOnActionableNotifications\",\n\t\t\t!notificationPreferences.toastTimeoutOnActionableNotifications\n\t\t);\n\t};\n\n\tconst toggleNotificationDotForMutedNotifications = () => {\n\t\tsetNotificationPreferences((prevState: any) => {\n\t\t\treturn {\n\t\t\t\t...prevState,\n\t\t\t\tshowDotOnToolbarIconForMutedNotifications: !notificationPreferences.showDotOnToolbarIconForMutedNotifications,\n\t\t\t};\n\t\t});\n\t\tsetAndTransmitPreferenceChange(\n\t\t\t\"showDotOnToolbarIconForMutedNotifications\",\n\t\t\t!notificationPreferences.showDotOnToolbarIconForMutedNotifications\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<ButtonRow\n\t\t\t\t\tlabel=\"Notification sources\"\n\t\t\t\t\tonClick={() => setCurrentNotificationsPreferencesView(\"Sources\")}\n\t\t\t\t\ticonClass=\"ff-caret-up rotate-90\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<Checkbox\n\t\t\t\t\tonClick={toggleNotificationDot}\n\t\t\t\t\tchecked={!notificationPreferences.disableDotOnToolbarIcon}\n\t\t\t\t\tlabel=\"Show notification dot for new notifications\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<Checkbox\n\t\t\t\t\tdisabled={notificationPreferences.disableDotOnToolbarIcon}\n\t\t\t\t\tonClick={toggleNotificationDotForMutedNotifications}\n\t\t\t\t\tchecked={notificationPreferences.showDotOnToolbarIconForMutedNotifications}\n\t\t\t\t\tlabel=\"Show notification dot for notifications marked as “Don’t show”\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\" style={{ paddingTop: \"15px\", paddingBottom: \"15px\" }}>\n\t\t\t\t<Checkbox\n\t\t\t\t\tonClick={toggleActionableNotificationToast}\n\t\t\t\t\tchecked={notificationPreferences.toastTimeoutOnActionableNotifications}\n\t\t\t\t\tlabel=\"Enable toast timeouts on actionable notifications\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<span className=\"row__lbl\">Toast times out after</span>\n\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\tcaretLocation=\"right\"\n\t\t\t\t\tdefaultSelection={informationalToastDuration.find(\n\t\t\t\t\t\t(element) => element.optionValue === notificationPreferences.informationalNotificationToastPeriodSeconds\n\t\t\t\t\t)}\n\t\t\t\t\tbuttonOptions={informationalToastDuration}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<span className=\"row__lbl\">Snooze for</span>\n\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\tcaretLocation=\"right\"\n\t\t\t\t\tdefaultSelection={snoozeDuration.find(\n\t\t\t\t\t\t(element) => element.optionValue === notificationPreferences.defaultSnoozePeriodSeconds\n\t\t\t\t\t)}\n\t\t\t\t\tbuttonOptions={snoozeDuration}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"row-section\">\n\t\t\t\t<span className=\"row__lbl\">Turn off the new notification halo after</span>\n\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\tcaretLocation=\"right\"\n\t\t\t\t\tdefaultSelection={newNotificationsHalo.find(\n\t\t\t\t\t\t(element) => element.optionValue === notificationPreferences.newNotificationHaloPeriodSeconds\n\t\t\t\t\t)}\n\t\t\t\t\tbuttonOptions={newNotificationsHalo}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default NotificationsMainPreferences;\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React, { useContext, useEffect, useState } from "react";
|
|
2
|
+
// Context
|
|
2
3
|
import { NotificationsPreferencesContext } from "../../../NotificationsPreferencesContext";
|
|
4
|
+
// Components
|
|
3
5
|
import BellIcon from "../../../../shared/BellIcon";
|
|
4
6
|
import BellIconCrossed from "../../../../shared/BellIconCrossed";
|
|
5
7
|
import { Button } from "../../../../common/Button";
|
|
@@ -79,6 +81,7 @@ const NotificationsSourceTypes = (context) => {
|
|
|
79
81
|
setTypesMutedState(newTypesMutedState);
|
|
80
82
|
setAllMuted(!allMuted);
|
|
81
83
|
};
|
|
84
|
+
// Navigation Hook
|
|
82
85
|
useEffect(() => {
|
|
83
86
|
function listenForPreference(error, response) {
|
|
84
87
|
if (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationsSourceTypes.js","sourceRoot":"","sources":["../../../../../../src/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Dispatch, SetStateAction, useContext, useEffect, useState } from \"react\";\n\n// Types\nimport { IType } from \"../Notifications\";\n\n// Context\nimport { NotificationsPreferencesContext } from \"../../../NotificationsPreferencesContext\";\n\n// Components\nimport BellIcon from \"../../../../shared/BellIcon\";\nimport BellIconCrossed from \"../../../../shared/BellIconCrossed\";\nimport { Button } from \"../../../../common/Button\";\nimport { services } from \"@finsemble/finsemble-api\";\n\ntype IMuteFilter = services.notification.types.IMuteFilter;\n\nconst renderTypes = (\n\tmuteFilters: IMuteFilter[],\n\tsourceTypes: IType[],\n\tsetTypesMutedState: Dispatch<SetStateAction<IType[]>>\n) =>\n\tsourceTypes.map((sourceType, index) => {\n\t\tconst toggleMute = (type: string) => {\n\t\t\tconst newState = [...sourceTypes].map((typeToUpdate) => {\n\t\t\t\tif (typeToUpdate.name === type) {\n\t\t\t\t\tconst muteFilter: IMuteFilter | undefined = muteFilters.find(\n\t\t\t\t\t\t(muteFilterItem) => muteFilterItem.type === typeToUpdate.name\n\t\t\t\t\t);\n\t\t\t\t\tif (!muteFilter) {\n\t\t\t\t\t\tconsole.error(`Unable to find mute filter ${typeToUpdate.muted} for source`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet isMuted = false;\n\t\t\t\t\t\tif (typeToUpdate.muted) {\n\t\t\t\t\t\t\tFSBL.Clients.NotificationClient.unmute(muteFilter);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tFSBL.Clients.NotificationClient.mute(muteFilter);\n\t\t\t\t\t\t\tisMuted = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleNotificationsMuteStateChannel\", {\n\t\t\t\t\t\t\tsource: muteFilter.source,\n\t\t\t\t\t\t\ttype: muteFilter.type,\n\t\t\t\t\t\t\tisMuted: isMuted,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttypeToUpdate.muted = !typeToUpdate.muted;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn typeToUpdate;\n\t\t\t});\n\t\t\tsetTypesMutedState(newState);\n\t\t};\n\n\t\treturn (\n\t\t\t<div key={`${sourceType.name}__${index}`} className=\"row-section\">\n\t\t\t\t<div className=\"row\">\n\t\t\t\t\t<div className=\"row__lbl\">{sourceType.name}</div>\n\t\t\t\t\t<div className=\"row_right__icon\" onClick={() => toggleMute(sourceType.name)}>\n\t\t\t\t\t\t{sourceType.muted ? <BellIconCrossed /> : <BellIcon />}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t});\n\nconst NotificationsSourceTypes = (context?: any) => {\n\tconst notificationsPreferencesContext = useContext(NotificationsPreferencesContext);\n\tconst currentNotificationSource = notificationsPreferencesContext.selectedNotificationSource;\n\tconst sourceTypes = currentNotificationSource?.types.filter((type) => type.name !== \"default\") || [];\n\tconst muteFilters: IMuteFilter[] = sourceTypes.map((sourceType) => {\n\t\tconst muteFilter: IMuteFilter = { type: sourceType.name };\n\t\tif (currentNotificationSource?.source) {\n\t\t\tmuteFilter.source = currentNotificationSource.source;\n\t\t}\n\t\treturn muteFilter;\n\t});\n\n\tconst goBack = () => {\n\t\tnotificationsPreferencesContext.setCurrentNotificationsPreferencesView(\"Sources\");\n\t};\n\n\tconst [typesMutedState, setTypesMutedState] = useState(sourceTypes);\n\tconst [allMuted, setAllMuted] = useState(false);\n\n\tconst toggleMuteAll = () => {\n\t\tlet newTypesMutedState: IType[] = [];\n\t\tif (allMuted) {\n\t\t\tnewTypesMutedState = typesMutedState.map((sourceType) => {\n\t\t\t\tsourceType.muted = false;\n\t\t\t\treturn sourceType;\n\t\t\t});\n\t\t\tFSBL.Clients.NotificationClient.unmute(muteFilters);\n\t\t} else {\n\t\t\tnewTypesMutedState = typesMutedState.map((sourceType) => {\n\t\t\t\tsourceType.muted = true;\n\t\t\t\treturn sourceType;\n\t\t\t});\n\t\t\tFSBL.Clients.NotificationClient.mute(muteFilters);\n\t\t}\n\t\tnewTypesMutedState.forEach((element) => {\n\t\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleNotificationsMuteStateChannel\", {\n\t\t\t\tsource: currentNotificationSource?.source,\n\t\t\t\ttype: element.name,\n\t\t\t\tisMuted: !allMuted,\n\t\t\t});\n\t\t});\n\t\tsetTypesMutedState(newTypesMutedState);\n\t\tsetAllMuted(!allMuted);\n\t};\n\n\t// Navigation Hook\n\tuseEffect(() => {\n\t\tfunction listenForPreference(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (!data.notification) {\n\t\t\t\t\tnotificationsPreferencesContext.setCurrentNotificationsPreferencesView(\"Home\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", listenForPreference);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", listenForPreference);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tfunction listenMuteStateChanged(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleNotificationsMuteStateChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tconst newTypesMutedState = [...typesMutedState].map((muteState) => {\n\t\t\t\t\tif (muteState.name !== data.type) return muteState;\n\n\t\t\t\t\treturn { name: data.type, muted: data.isMuted };\n\t\t\t\t});\n\t\t\t\tsetTypesMutedState(newTypesMutedState);\n\t\t\t\tsetAllMuted(newTypesMutedState.every((sourceType) => sourceType.muted));\n\t\t\t}\n\t\t}\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<div className=\"notification-sources__container\">\n\t\t\t<div className=\"notification-sources__header\">\n\t\t\t\t<div style={{ paddingRight: 8, marginLeft: -3 }}>\n\t\t\t\t\t<Button onClick={() => goBack()} fashion=\"primary\" iconBefore=\"chevron-left\" text=\"Back\" />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"heading-larger\">\n\t\t\t\t\t{JSON.stringify(notificationsPreferencesContext) === \"{}\" && context\n\t\t\t\t\t\t? context.context.source\n\t\t\t\t\t\t: currentNotificationSource?.source}\n\t\t\t\t</span>\n\t\t\t\t{muteFilters.length > 0 ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tfashion=\"primary\"\n\t\t\t\t\t\tclassName=\"accent-negative\"\n\t\t\t\t\t\ttext={allMuted ? \"Show All\" : \"Don't Show All\"}\n\t\t\t\t\t\tonClick={toggleMuteAll}\n\t\t\t\t\t\tfixedSize={110}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t<div className=\"notification-sources__types\">\n\t\t\t\t{typesMutedState && typesMutedState.length > 0 ? (\n\t\t\t\t\trenderTypes(muteFilters, typesMutedState, setTypesMutedState)\n\t\t\t\t) : (\n\t\t\t\t\t<div id=\"no-source-types\" className=\"row-section\">\n\t\t\t\t\t\tNo source types configured\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default NotificationsSourceTypes;\n"]}
|
|
1
|
+
{"version":3,"file":"NotificationsSourceTypes.js","sourceRoot":"","sources":["../../../../../../src/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Dispatch, SetStateAction, useContext, useEffect, useState } from \"react\";\n\n// Types\nimport { IType } from \"../Notifications\";\n\n// Context\nimport { NotificationsPreferencesContext } from \"../../../NotificationsPreferencesContext\";\n\n// Components\nimport BellIcon from \"../../../../shared/BellIcon\";\nimport BellIconCrossed from \"../../../../shared/BellIconCrossed\";\nimport { Button } from \"../../../../common/Button\";\nimport { services } from \"@finsemble/finsemble-api\";\n\ntype IMuteFilter = services.notification.types.IMuteFilter;\n\nconst renderTypes = (\n\tmuteFilters: IMuteFilter[],\n\tsourceTypes: IType[],\n\tsetTypesMutedState: Dispatch<SetStateAction<IType[]>>\n) =>\n\tsourceTypes.map((sourceType, index) => {\n\t\tconst toggleMute = (type: string) => {\n\t\t\tconst newState = [...sourceTypes].map((typeToUpdate) => {\n\t\t\t\tif (typeToUpdate.name === type) {\n\t\t\t\t\tconst muteFilter: IMuteFilter | undefined = muteFilters.find(\n\t\t\t\t\t\t(muteFilterItem) => muteFilterItem.type === typeToUpdate.name\n\t\t\t\t\t);\n\t\t\t\t\tif (!muteFilter) {\n\t\t\t\t\t\tconsole.error(`Unable to find mute filter ${typeToUpdate.muted} for source`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet isMuted = false;\n\t\t\t\t\t\tif (typeToUpdate.muted) {\n\t\t\t\t\t\t\tFSBL.Clients.NotificationClient.unmute(muteFilter);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tFSBL.Clients.NotificationClient.mute(muteFilter);\n\t\t\t\t\t\t\tisMuted = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleNotificationsMuteStateChannel\", {\n\t\t\t\t\t\t\tsource: muteFilter.source,\n\t\t\t\t\t\t\ttype: muteFilter.type,\n\t\t\t\t\t\t\tisMuted: isMuted,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttypeToUpdate.muted = !typeToUpdate.muted;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn typeToUpdate;\n\t\t\t});\n\t\t\tsetTypesMutedState(newState);\n\t\t};\n\n\t\treturn (\n\t\t\t<div key={`${sourceType.name}__${index}`} className=\"row-section\">\n\t\t\t\t<div className=\"row\">\n\t\t\t\t\t<div className=\"row__lbl\">{sourceType.name}</div>\n\t\t\t\t\t<div className=\"row_right__icon\" onClick={() => toggleMute(sourceType.name)}>\n\t\t\t\t\t\t{sourceType.muted ? <BellIconCrossed /> : <BellIcon />}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t});\n\nconst NotificationsSourceTypes = (context?: any) => {\n\tconst notificationsPreferencesContext = useContext(NotificationsPreferencesContext);\n\tconst currentNotificationSource = notificationsPreferencesContext.selectedNotificationSource;\n\tconst sourceTypes = currentNotificationSource?.types.filter((type) => type.name !== \"default\") || [];\n\tconst muteFilters: IMuteFilter[] = sourceTypes.map((sourceType) => {\n\t\tconst muteFilter: IMuteFilter = { type: sourceType.name };\n\t\tif (currentNotificationSource?.source) {\n\t\t\tmuteFilter.source = currentNotificationSource.source;\n\t\t}\n\t\treturn muteFilter;\n\t});\n\n\tconst goBack = () => {\n\t\tnotificationsPreferencesContext.setCurrentNotificationsPreferencesView(\"Sources\");\n\t};\n\n\tconst [typesMutedState, setTypesMutedState] = useState(sourceTypes);\n\tconst [allMuted, setAllMuted] = useState(false);\n\n\tconst toggleMuteAll = () => {\n\t\tlet newTypesMutedState: IType[] = [];\n\t\tif (allMuted) {\n\t\t\tnewTypesMutedState = typesMutedState.map((sourceType) => {\n\t\t\t\tsourceType.muted = false;\n\t\t\t\treturn sourceType;\n\t\t\t});\n\t\t\tFSBL.Clients.NotificationClient.unmute(muteFilters);\n\t\t} else {\n\t\t\tnewTypesMutedState = typesMutedState.map((sourceType) => {\n\t\t\t\tsourceType.muted = true;\n\t\t\t\treturn sourceType;\n\t\t\t});\n\t\t\tFSBL.Clients.NotificationClient.mute(muteFilters);\n\t\t}\n\t\tnewTypesMutedState.forEach((element) => {\n\t\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleNotificationsMuteStateChannel\", {\n\t\t\t\tsource: currentNotificationSource?.source,\n\t\t\t\ttype: element.name,\n\t\t\t\tisMuted: !allMuted,\n\t\t\t});\n\t\t});\n\t\tsetTypesMutedState(newTypesMutedState);\n\t\tsetAllMuted(!allMuted);\n\t};\n\n\t// Navigation Hook\n\tuseEffect(() => {\n\t\tfunction listenForPreference(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (!data.notification) {\n\t\t\t\t\tnotificationsPreferencesContext.setCurrentNotificationsPreferencesView(\"Home\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", listenForPreference);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", listenForPreference);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tfunction listenMuteStateChanged(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleNotificationsMuteStateChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tconst newTypesMutedState = [...typesMutedState].map((muteState) => {\n\t\t\t\t\tif (muteState.name !== data.type) return muteState;\n\n\t\t\t\t\treturn { name: data.type, muted: data.isMuted };\n\t\t\t\t});\n\t\t\t\tsetTypesMutedState(newTypesMutedState);\n\t\t\t\tsetAllMuted(newTypesMutedState.every((sourceType) => sourceType.muted));\n\t\t\t}\n\t\t}\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<div className=\"notification-sources__container\">\n\t\t\t<div className=\"notification-sources__header\">\n\t\t\t\t<div style={{ paddingRight: 8, marginLeft: -3 }}>\n\t\t\t\t\t<Button onClick={() => goBack()} fashion=\"primary\" iconBefore=\"chevron-left\" text=\"Back\" />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"heading-larger\">\n\t\t\t\t\t{JSON.stringify(notificationsPreferencesContext) === \"{}\" && context\n\t\t\t\t\t\t? context.context.source\n\t\t\t\t\t\t: currentNotificationSource?.source}\n\t\t\t\t</span>\n\t\t\t\t{muteFilters.length > 0 ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tfashion=\"primary\"\n\t\t\t\t\t\tclassName=\"accent-negative\"\n\t\t\t\t\t\ttext={allMuted ? \"Show All\" : \"Don't Show All\"}\n\t\t\t\t\t\tonClick={toggleMuteAll}\n\t\t\t\t\t\tfixedSize={110}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t<div className=\"notification-sources__types\">\n\t\t\t\t{typesMutedState && typesMutedState.length > 0 ? (\n\t\t\t\t\trenderTypes(muteFilters, typesMutedState, setTypesMutedState)\n\t\t\t\t) : (\n\t\t\t\t\t<div id=\"no-source-types\" className=\"row-section\">\n\t\t\t\t\t\tNo source types configured\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default NotificationsSourceTypes;\n"]}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import React, { useContext, useEffect, useState } from "react";
|
|
2
2
|
import ButtonRow from "../../../../common/ButtonRow";
|
|
3
|
+
// Context
|
|
3
4
|
import { NotificationsPreferencesContext } from "../../../NotificationsPreferencesContext";
|
|
5
|
+
// Components
|
|
4
6
|
import { Button } from "../../../../common/Button";
|
|
7
|
+
// Utils
|
|
5
8
|
import { loadSources } from "./notificationViewsUtils";
|
|
6
9
|
const NotificationSourceRowButton = ({ source }) => {
|
|
7
10
|
const notificationsPreferencesContext = useContext(NotificationsPreferencesContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationsSourcesPreferences.js","sourceRoot":"","sources":["../../../../../../src/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,SAAS,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"NotificationsSourcesPreferences.js","sourceRoot":"","sources":["../../../../../../src/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useState } from \"react\";\nimport ButtonRow from \"../../../../common/ButtonRow\";\n\n// Context\nimport { NotificationsPreferencesContext } from \"../../../NotificationsPreferencesContext\";\n\n// Components\nimport { Button } from \"../../../../common/Button\";\n\n// Types\nimport { INotificationSources } from \"../Notifications\";\n\n// Utils\nimport { loadSources } from \"./notificationViewsUtils\";\n\nconst NotificationSourceRowButton: React.FunctionComponent<{ source: INotificationSources }> = ({ source }) => {\n\tconst notificationsPreferencesContext = useContext(NotificationsPreferencesContext);\n\tconst { setSelectedNotificationSource, setCurrentNotificationsPreferencesView } = notificationsPreferencesContext;\n\n\tconst [showDefaultIcon] = useState(!source.icon);\n\n\treturn (\n\t\t<div className=\"row-section\">\n\t\t\t<ButtonRow\n\t\t\t\tonClick={() => {\n\t\t\t\t\tsetSelectedNotificationSource(source);\n\t\t\t\t\tsetCurrentNotificationsPreferencesView(\"Details\");\n\t\t\t\t}}\n\t\t\t\tlabel={source.source}\n\t\t\t\timg={source.icon}\n\t\t\t\tshowDefaultIcon={showDefaultIcon}\n\t\t\t\ticonClass=\"ff-caret-up rotate-90\"\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nconst NotificationsSourcesPreferences: React.FunctionComponent<{ context?: any }> = ({ context }) => {\n\tconst notificationsPreferencesContext = useContext(NotificationsPreferencesContext);\n\tlet {\n\t\tnotificationSources,\n\t\tsetNotificationSources,\n\t\tsetSelectedNotificationSource,\n\t\tsetCurrentNotificationsPreferencesView,\n\t} = notificationsPreferencesContext;\n\tif (JSON.stringify(notificationsPreferencesContext) === \"{}\" && context) {\n\t\tnotificationSources = context;\n\t}\n\tconst [reloadSources, setReloadSources] = useState(false);\n\n\tuseEffect(() => {\n\t\tfunction listenForPreference(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleNotificationsNavigationChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (!data.notification) {\n\t\t\t\t\tsetCurrentNotificationsPreferencesView(\"Home\");\n\t\t\t\t} else {\n\t\t\t\t\tconst selectedSource =\n\t\t\t\t\t\tnotificationSources.find((source) => source.source === data.notification.source) || null;\n\t\t\t\t\tsetSelectedNotificationSource(selectedSource);\n\t\t\t\t\tsetCurrentNotificationsPreferencesView(\"Details\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsNavigationChannel\", listenForPreference);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsNavigationChannel\", listenForPreference);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tloadSources(setNotificationSources, setReloadSources);\n\t}, [reloadSources]);\n\n\tuseEffect(() => {\n\t\tasync function listenForRefreshEvent(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleNotificationsPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (data === \"notificationReceived\") {\n\t\t\t\t\tsetReloadSources(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsPreferencesChannel\", listenForRefreshEvent);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsPreferencesChannel\", listenForRefreshEvent);\n\t\t};\n\t}, []);\n\n\tconst goBack = () => {\n\t\tsetCurrentNotificationsPreferencesView(\"Home\");\n\t};\n\n\treturn (\n\t\t<div className=\"notification-sources__container\">\n\t\t\t<div className=\"notification-sources__header\">\n\t\t\t\t<div style={{ paddingRight: 8, marginLeft: -3 }}>\n\t\t\t\t\t<Button onClick={() => goBack()} fashion=\"primary\" iconBefore=\"chevron-left\" text=\"Back\" />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"heading-larger\">Notification sources</span>\n\t\t\t</div>\n\t\t\t<div className=\"notification-sources__list\">\n\t\t\t\t{notificationSources && notificationSources.length > 0 ? (\n\t\t\t\t\tnotificationSources.map((source, index) => <NotificationSourceRowButton key={index} source={source} />)\n\t\t\t\t) : (\n\t\t\t\t\t<span id=\"no-notification-sources\">No notification sources to display</span>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default NotificationsSourcesPreferences;\n"]}
|
|
@@ -28,13 +28,22 @@ export const ScheduledClose = (props) => {
|
|
|
28
28
|
},
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Toggle the enabled state of the select boxes.
|
|
33
|
+
*/
|
|
31
34
|
const toggleEnabled = () => {
|
|
32
35
|
const toggled = !enabled;
|
|
36
|
+
// If the select boxes are no longer enabled, reset the scheduled restart time and call a method on the Actions object.
|
|
37
|
+
// That function will set scheduledRestart to null via the preferences API. But we want our display to look nice, hence the bit where we reset it to the default value.
|
|
33
38
|
setEnabled(toggled);
|
|
34
39
|
};
|
|
35
40
|
const onTimeSelectChange = (time) => {
|
|
36
41
|
setScheduledClose(time);
|
|
37
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* Add listener on the store. When the preferences field changes, we change our local state.
|
|
45
|
+
* Also, get the initial state from the store.
|
|
46
|
+
*/
|
|
38
47
|
useEffect(() => {
|
|
39
48
|
props.getPreferences((err, data) => {
|
|
40
49
|
var _a;
|
|
@@ -88,6 +97,8 @@ export const ScheduledClose = (props) => {
|
|
|
88
97
|
value: false,
|
|
89
98
|
},
|
|
90
99
|
], onChange: (value) => {
|
|
100
|
+
// Day representes the day of the week, and is false when irrelevant.
|
|
101
|
+
// Here, we only ever set it to false. The day number comes from the dropdown below.
|
|
91
102
|
if (!value) {
|
|
92
103
|
setDay(false);
|
|
93
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledClose.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/general/ScheduledClose.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAkB,MAAM,4BAA4B,CAAC;AACxE,OAAO,qBAEN,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEpF,MAAM,YAAY,GAAG;IACpB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,IAAI;CACd,CAAC;AASF,MAAM,CAAC,MAAM,cAAc,GAAiD,CAAC,KAAK,EAAE,EAAE;IACrF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC/D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACrD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAiB,YAAY,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAiB,KAAK,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,CAAC,QAAa,EAAE,EAAE;QACpC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,UAAU,GAAkD,EAAE,CAAC;IACrE,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5F,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;QACnB,UAAU,CAAC,IAAI,CAAC;YACf,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;YACpB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,GAAG,EAAE;gBAClB,UAAU,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;SACD,CAAC,CAAC;KACH;
|
|
1
|
+
{"version":3,"file":"ScheduledClose.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/general/ScheduledClose.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { Checkbox } from \"../../../common/Checkbox\";\nimport { TimeSelect, TimeSelectTime } from \"../../../common/TimeSelect\";\nimport DefaultDropdownButton, {\n\tIFinsembleDefaultDropdownButtonOptionsProps,\n} from \"../../../shared/DefaultDropdownButton\";\nimport { ScheduledDayTimeObjectType } from \"../../UserPreferenceTypes\";\nimport { StandardCallback } from \"@finsemble/finsemble-api/types/types\";\nimport { FinsembleToggleButtonBar } from \"../../../common/FinsembleToggleButtonBar\";\n\nconst DEFAULT_TIME = {\n\thour: 4,\n\tminute: 0,\n\tmeridiem: \"AM\",\n};\n\nexport type ScheduledCloseProps = {\n\tgetPreferences: (cb: StandardCallback) => void;\n\tsetPreferences: (key: any, value: any) => void;\n\tconfigKey: string;\n\tlabel: string;\n};\n\nexport const ScheduledClose: React.FunctionComponent<ScheduledCloseProps> = (props) => {\n\tconst [initialized, setInitialized] = useState<boolean>(false);\n\tconst [enabled, setEnabled] = useState(false);\n\tconst [weekly, setWeekly] = useState<boolean>(false);\n\tconst [scheduledClose, setScheduledClose] = useState<TimeSelectTime>(DEFAULT_TIME);\n\tconst [day, setDay] = useState<false | number>(false);\n\n\tconst dayChanged = (dayValue: any) => {\n\t\tsetDay(Number.parseInt(dayValue, 10));\n\t};\n\n\tconst dayOptions: IFinsembleDefaultDropdownButtonOptionsProps[] = [];\n\tconst DAYS = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n\tfor (let k in DAYS) {\n\t\tdayOptions.push({\n\t\t\toptionLabel: DAYS[k],\n\t\t\toptionValue: k,\n\t\t\tclickHandler: () => {\n\t\t\t\tdayChanged(k);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Toggle the enabled state of the select boxes.\n\t */\n\tconst toggleEnabled = () => {\n\t\tconst toggled = !enabled;\n\t\t// If the select boxes are no longer enabled, reset the scheduled restart time and call a method on the Actions object.\n\t\t// That function will set scheduledRestart to null via the preferences API. But we want our display to look nice, hence the bit where we reset it to the default value.\n\t\tsetEnabled(toggled);\n\t};\n\n\tconst onTimeSelectChange = (time: TimeSelectTime) => {\n\t\tsetScheduledClose(time);\n\t};\n\n\t/**\n\t * Add listener on the store. When the preferences field changes, we change our local state.\n\t * Also, get the initial state from the store.\n\t */\n\tuseEffect(() => {\n\t\tprops.getPreferences((err: any, data: any) => {\n\t\t\tif (data) {\n\t\t\t\tlet configValue = data[props.configKey];\n\t\t\t\tconst isEnabled = typeof configValue === \"object\";\n\t\t\t\tlet preferencesDay: number | false = false;\n\t\t\t\tif (isEnabled) {\n\t\t\t\t\tpreferencesDay = configValue.dayOfWeek ?? false;\n\t\t\t\t\tconfigValue.meridiem = configValue.hour > 11 ? \"PM\" : \"AM\";\n\t\t\t\t} else {\n\t\t\t\t\tconfigValue = DEFAULT_TIME;\n\t\t\t\t}\n\n\t\t\t\tsetDay(preferencesDay);\n\t\t\t\tsetWeekly(preferencesDay !== false);\n\t\t\t\tsetEnabled(isEnabled);\n\t\t\t\tsetScheduledClose(configValue);\n\t\t\t\tsetInitialized(true);\n\t\t\t}\n\t\t});\n\t}, []);\n\n\tconst getSchedule = (): ScheduledDayTimeObjectType | false => {\n\t\tlet returnValue: ScheduledDayTimeObjectType | false = false;\n\n\t\tif (enabled) {\n\t\t\treturnValue = { ...scheduledClose };\n\t\t\tif (weekly) {\n\t\t\t\treturnValue.dayOfWeek = day ? day : 0;\n\t\t\t} else {\n\t\t\t\tdelete returnValue.dayOfWeek;\n\t\t\t}\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tuseEffect(() => {\n\t\tif (initialized) {\n\t\t\tprops.setPreferences(props.configKey, getSchedule());\n\t\t}\n\t}, [scheduledClose, weekly, enabled, day]);\n\n\treturn (\n\t\t<div className=\"complex-menu-content-row\" style={{ overflow: \"visible\" }}>\n\t\t\t<div className=\"close-toggle-container\">\n\t\t\t\t<Checkbox onClick={toggleEnabled} checked={enabled} label={props.label} />\n\t\t\t\t<FinsembleToggleButtonBar\n\t\t\t\t\tselected={!weekly}\n\t\t\t\t\toptions={[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"Daily\",\n\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"Weekly\",\n\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t]}\n\t\t\t\t\tonChange={(value) => {\n\t\t\t\t\t\t// Day representes the day of the week, and is false when irrelevant.\n\t\t\t\t\t\t// Here, we only ever set it to false. The day number comes from the dropdown below.\n\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\tsetDay(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetWeekly(!value);\n\t\t\t\t\t}}\n\t\t\t\t\tenabled={enabled}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{weekly && (\n\t\t\t\t<div className={`time-selectors daily-select ${enabled ? \"\" : \"disabled\"}`}>\n\t\t\t\t\t<div className=\"daily-select-label\">Day:</div>\n\t\t\t\t\t<div className=\"daily-select-dropdown\">\n\t\t\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\t\t\tkey={`${day}`}\n\t\t\t\t\t\t\tbuttonOptions={dayOptions}\n\t\t\t\t\t\t\tclassNames={\"push-right\"}\n\t\t\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\t\t\tcaretLocation={\"right\"}\n\t\t\t\t\t\t\tenabled={enabled}\n\t\t\t\t\t\t\tdefaultSelection={dayOptions[day ? day : 0]}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"time-selectors\">\n\t\t\t\t<TimeSelect\n\t\t\t\t\tkey={`${scheduledClose.hour}${scheduledClose.minute}${scheduledClose.meridiem}`}\n\t\t\t\t\tenabled={enabled}\n\t\t\t\t\tinitialTime={scheduledClose}\n\t\t\t\t\tonChange={onTimeSelectChange}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ScheduledClose;\n"]}
|
|
@@ -24,6 +24,7 @@ export class WorkspaceEditor extends React.Component {
|
|
|
24
24
|
var _a, _b;
|
|
25
25
|
(_b = (_a = this.props).saveHandler) === null || _b === void 0 ? void 0 : _b.call(_a, val);
|
|
26
26
|
};
|
|
27
|
+
// binding so we don't lose the event inside of react's crazy callback structure
|
|
27
28
|
this.setState({ finished: true }, finish.bind(this, e.target.value));
|
|
28
29
|
}
|
|
29
30
|
}
|
|
@@ -36,10 +37,12 @@ export class WorkspaceEditor extends React.Component {
|
|
|
36
37
|
e.target.select();
|
|
37
38
|
}
|
|
38
39
|
onBlur() {
|
|
40
|
+
// console.log("ON BLUR", performance.now());
|
|
39
41
|
const finish = (val) => {
|
|
40
42
|
var _a, _b;
|
|
41
43
|
(_b = (_a = this.props).saveHandler) === null || _b === void 0 ? void 0 : _b.call(_a, val);
|
|
42
44
|
};
|
|
45
|
+
// binding so we don't lose the event inside of react's crazy callback structure. Finished is set so that the component doesn't call the saveHandler again on unMount
|
|
43
46
|
this.setState({ finished: true }, finish.bind(this, this.state.value));
|
|
44
47
|
}
|
|
45
48
|
render() {
|