@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
|
@@ -7,6 +7,7 @@ import storeActions from "../stores/StoreActions";
|
|
|
7
7
|
import sortFunctions from "../utils/sort-functions";
|
|
8
8
|
const ADVANCED_APP_LAUNCHER = "Advanced App Launcher";
|
|
9
9
|
window.storeActions = storeActions;
|
|
10
|
+
// To be assigned a value later in the constructor
|
|
10
11
|
let store;
|
|
11
12
|
export default class Content extends React.Component {
|
|
12
13
|
constructor(props) {
|
|
@@ -52,6 +53,7 @@ export default class Content extends React.Component {
|
|
|
52
53
|
if (!this.state.tags) {
|
|
53
54
|
return apps;
|
|
54
55
|
}
|
|
56
|
+
//All active tags must be present in an app for it to show
|
|
55
57
|
return apps.filter((app) => {
|
|
56
58
|
var _a;
|
|
57
59
|
for (let i = 0; i < this.state.tags.length; i++) {
|
|
@@ -64,6 +66,10 @@ export default class Content extends React.Component {
|
|
|
64
66
|
});
|
|
65
67
|
}
|
|
66
68
|
onActiveFolderChanged() {
|
|
69
|
+
// Quick fix for release 6.3.0
|
|
70
|
+
// There are 2 listeners for "activeFolder". One in this file, the other is in packages\ui\src\components\toolbar\advancedAppLauncher\stores\StoreActions.ts
|
|
71
|
+
// The first listener is invoked earlier with nonupdated 'activeFolder' value in the storeActions. So I use a timeout to change this.
|
|
72
|
+
// Otherwise, for correct re-rendering, we need to do double-click on the left folders panel.
|
|
67
73
|
setTimeout(() => {
|
|
68
74
|
this._setFolderState();
|
|
69
75
|
}, 50);
|
|
@@ -83,6 +89,11 @@ export default class Content extends React.Component {
|
|
|
83
89
|
tags: data.value,
|
|
84
90
|
});
|
|
85
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Mainly used to know when a user remove an app from a folder
|
|
94
|
+
* Because there is no way to subscribe to
|
|
95
|
+
* folders[index].appDefinitions updates.
|
|
96
|
+
*/
|
|
86
97
|
onAppListUpdate() {
|
|
87
98
|
this._setFolderState();
|
|
88
99
|
}
|
|
@@ -100,10 +111,14 @@ export default class Content extends React.Component {
|
|
|
100
111
|
this.onAppListUpdate();
|
|
101
112
|
}
|
|
102
113
|
componentDidMount() {
|
|
114
|
+
//this.setStateValues();
|
|
103
115
|
store === null || store === void 0 ? void 0 : store.addListener({ field: "activeFolder" }, this.onActiveFolderChanged);
|
|
104
116
|
store === null || store === void 0 ? void 0 : store.addListener({ field: "filterText" }, this.onSearch);
|
|
105
117
|
store === null || store === void 0 ? void 0 : store.addListener({ field: "sortBy" }, this.onSort);
|
|
106
118
|
store === null || store === void 0 ? void 0 : store.addListener({ field: "activeLauncherTags" }, this.onTagsUpdate);
|
|
119
|
+
// We can't subscribe to folders[index].appDefinitions
|
|
120
|
+
// So we are looking at appFolders.folders update
|
|
121
|
+
// Since that update is done After removing an app of definitions
|
|
107
122
|
store === null || store === void 0 ? void 0 : store.addListener({ field: "appFolders.folders" }, this.onAppListUpdate);
|
|
108
123
|
store === null || store === void 0 ? void 0 : store.addListener({ field: "appDefinitions" }, this.onAppLauncherUpdate);
|
|
109
124
|
this.routerSubscription = FSBL.Clients.RouterClient.subscribe("Launcher.update", this.updateAppDefinitions);
|
|
@@ -124,20 +139,24 @@ export default class Content extends React.Component {
|
|
|
124
139
|
const messages = {
|
|
125
140
|
search: ["No results found. Please try again."],
|
|
126
141
|
Favorites: ["There’s nothing here!", React.createElement("br", { key: 1 }), "Add apps to Favorites to view them here."],
|
|
142
|
+
//Dashboards: ['There’s nothing here!', <br />, 'Press “New Dashboard” to construct an Dashboard.'],
|
|
127
143
|
default: ["There’s nothing here!", React.createElement("br", { key: 2 }), "Add apps to folders to view them here."],
|
|
128
144
|
};
|
|
129
145
|
if (!this.state.folder) {
|
|
130
146
|
return ["Loading data...", React.createElement("br", { key: 3 })];
|
|
131
147
|
}
|
|
148
|
+
// User is searching so we need the search message
|
|
132
149
|
if (this.state.filterText || this.state.tags.length) {
|
|
133
150
|
return messages.search;
|
|
134
151
|
}
|
|
152
|
+
// Now let's check which folder is currently active
|
|
135
153
|
switch (this.state.folder.name) {
|
|
136
154
|
case "Favorites":
|
|
137
155
|
return messages.Favorites;
|
|
138
156
|
break;
|
|
139
157
|
case "Dashboards":
|
|
140
158
|
return [""];
|
|
159
|
+
// return messages.Dashboards;
|
|
141
160
|
default:
|
|
142
161
|
return messages.default;
|
|
143
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/Content.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AAIpD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAErD,MAAc,CAAC,YAAY,GAAG,YAAY,CAAC;AAE5C,IAAI,KAA6B,CAAC;AAWlC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,KAAK,CAAC,SAAyB;IAGnE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE;YAC5B,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE;YAC5B,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE;YAChC,UAAU,EAAE,YAAY,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE;YACtD,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE;SACtC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,KAAK,GAAG,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,eAAe;QACd,IAAI,CAAC,QAAQ,CAAC;YACb,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE;SACtC,CAAC,CAAC;IACJ,CAAC;IAED,UAAU;QACT,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,IAAI,GACP,MAAM,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAEhG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;YACrB,OAAO,EAAE,CAAC;SACV;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,YAAY,GAAoB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC3B,OAAO,YAAY,CAAC;SACpB;QAED,OAAO,YAAY,CAAC,MAAM,CACzB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAiB,EAAE,EAAE;;YACxC,OAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,mCACxE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;SAAA,CAClE,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,IAAqB;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC;SACZ;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,QAAQ,CAAC,GAAG,CAAC,CAAA,EAAE;oBAC7B,OAAO,KAAK,CAAC;iBACb;aACD;YACD,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,qBAAqB;QAKpB,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IACR,CAAC;IAED,QAAQ,CAAC,KAAoB,EAAE,IAAS;QACvC,IAAI,CAAC,QAAQ,CAAC;YACb,UAAU,EAAE,IAAI,CAAC,KAAK;SACtB,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAoB,EAAE,IAAS;QACrC,IAAI,CAAC,QAAQ,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAAoB,EAAE,IAAS;QAC3C,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,IAAI,CAAC,KAAK;SAChB,CAAC,CAAC;IACJ,CAAC;IAOD,eAAe;QACd,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,mBAAmB;QAClB,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,GAAkB,EAAE,QAAa;QACrD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,GAAG,EAAE;YACR,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC1B;QACD,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,iBAAiB;QAEhB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1E,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAIvE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1E,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC7G,CAAC;IAED,oBAAoB;QACnB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC7E,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1E,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7E,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAC,aAAa,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,GAAI,CAAC,CAAC;IAClH,CAAC;IAED,mBAAmB;QAClB,MAAM,QAAQ,GAAG;YAChB,MAAM,EAAE,CAAC,qCAAqC,CAAC;YAC/C,SAAS,EAAE,CAAC,uBAAuB,EAAE,4BAAI,GAAG,EAAE,CAAC,GAAI,EAAE,0CAA0C,CAAC;YAEhG,OAAO,EAAE,CAAC,uBAAuB,EAAE,4BAAI,GAAG,EAAE,CAAC,GAAI,EAAE,wCAAwC,CAAC;SAC5F,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACvB,OAAO,CAAC,iBAAiB,EAAE,4BAAI,GAAG,EAAE,CAAC,GAAI,CAAC,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YACpD,OAAO,QAAQ,CAAC,MAAM,CAAC;SACvB;QAED,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,KAAK,WAAW;gBACf,OAAO,QAAQ,CAAC,SAAS,CAAC;gBAC1B,MAAM;YACP,KAAK,YAAY;gBAChB,OAAO,CAAC,EAAE,CAAC,CAAC;YAEb;gBACC,OAAO,QAAQ,CAAC,OAAO,CAAC;SACzB;IACF,CAAC;IAED,MAAM;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,OAAO,CACN,6BAAK,SAAS,EAAC,0BAA0B;YACxC,oBAAC,UAAU,OAAc;YACzB,6BAAK,SAAS,EAAC,cAAc,IAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAC,WAAW,IAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAI,CAAO,CAC1G,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport AppDefinition from \"./AppDefinition\";\nimport NoAppsFound from \"./NoAppsFound\";\nimport FilterSort from \"./FilterSort\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport storeActions from \"../stores/StoreActions\";\nimport sortFunctions from \"../utils/sort-functions\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\nimport { FolderAppType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\n\n(window as any).storeActions = storeActions;\n// To be assigned a value later in the constructor\nlet store: StoreModel | undefined;\n\ninterface IProps {}\ninterface IState {\n\tapps: any;\n\ttags: any;\n\tsortBy: keyof typeof sortFunctions;\n\tfilterText: string;\n\tfolder: FolderType;\n}\n\nexport default class Content extends React.Component<IProps, IState> {\n\trouterSubscription: any;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tapps: storeActions.getApps(),\n\t\t\ttags: storeActions.getTags(),\n\t\t\tsortBy: storeActions.getSortBy(),\n\t\t\tfilterText: storeActions.getSearchText().toLowerCase(),\n\t\t\tfolder: storeActions.getActiveFolder(),\n\t\t};\n\t\tthis.onSort = this.onSort.bind(this);\n\t\tthis.onSearch = this.onSearch.bind(this);\n\t\tthis.onTagsUpdate = this.onTagsUpdate.bind(this);\n\t\tthis.onActiveFolderChanged = this.onActiveFolderChanged.bind(this);\n\t\tthis.onAppListUpdate = this.onAppListUpdate.bind(this);\n\t\tthis.onAppLauncherUpdate = this.onAppLauncherUpdate.bind(this);\n\t\tthis.updateAppDefinitions = this.updateAppDefinitions.bind(this);\n\t\tstore = getStore();\n\t}\n\n\t_setFolderState() {\n\t\tthis.setState({\n\t\t\tfolder: storeActions.getActiveFolder(),\n\t\t});\n\t}\n\n\tfilterApps() {\n\t\tconst { folder } = this.state;\n\t\tlet apps: FolderAppType[] =\n\t\t\tfolder.name === ADVANCED_APP_LAUNCHER ? Object.values(storeActions.getAllApps()) : folder.apps;\n\n\t\tif (!folder || !apps) {\n\t\t\treturn [];\n\t\t}\n\t\tconst sortFunc = sortFunctions[this.state.sortBy];\n\t\tconst filteredApps: FolderAppType[] = this.filterAppsByTags(sortFunc(apps));\n\t\tif (!this.state.filterText) {\n\t\t\treturn filteredApps;\n\t\t}\n\n\t\treturn filteredApps.filter(\n\t\t\t({ displayName, name }: FolderAppType) =>\n\t\t\t\tdisplayName?.toLowerCase().includes(this.state.filterText.toLowerCase()) ??\n\t\t\t\tname?.toLowerCase().includes(this.state.filterText.toLowerCase())\n\t\t);\n\t}\n\n\tfilterAppsByTags(apps: FolderAppType[]) {\n\t\tif (!this.state.tags) {\n\t\t\treturn apps;\n\t\t}\n\t\t//All active tags must be present in an app for it to show\n\t\treturn apps.filter((app) => {\n\t\t\tfor (let i = 0; i < this.state.tags.length; i++) {\n\t\t\t\tlet tag = this.state.tags[i];\n\t\t\t\tif (!app.tags?.includes(tag)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tonActiveFolderChanged() {\n\t\t// Quick fix for release 6.3.0\n\t\t// There are 2 listeners for \"activeFolder\". One in this file, the other is in packages\\ui\\src\\components\\toolbar\\advancedAppLauncher\\stores\\StoreActions.ts\n\t\t// The first listener is invoked earlier with nonupdated 'activeFolder' value in the storeActions. So I use a timeout to change this.\n\t\t// Otherwise, for correct re-rendering, we need to do double-click on the left folders panel.\n\t\tsetTimeout(() => {\n\t\t\tthis._setFolderState();\n\t\t}, 50);\n\t}\n\n\tonSearch(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\tfilterText: data.value,\n\t\t});\n\t}\n\n\tonSort(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\tsortBy: data.value,\n\t\t});\n\t}\n\n\tonTagsUpdate(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\ttags: data.value,\n\t\t});\n\t}\n\n\t/**\n\t * Mainly used to know when a user remove an app from a folder\n\t * Because there is no way to subscribe to\n\t * folders[index].appDefinitions updates.\n\t */\n\tonAppListUpdate() {\n\t\tthis._setFolderState();\n\t}\n\n\tonAppLauncherUpdate() {\n\t\tthis.setState({\n\t\t\tapps: storeActions.getApps(),\n\t\t});\n\t}\n\n\tupdateAppDefinitions(err: StandardError, response: any) {\n\t\tFSBL.Clients.Logger.system.debug(\"list updated\", err, response);\n\t\tif (err) {\n\t\t\treturn console.error(err);\n\t\t}\n\t\tstoreActions.refreshAppDefinitions(response.data.componentList);\n\t\tthis.onAppListUpdate();\n\t}\n\n\tcomponentDidMount() {\n\t\t//this.setStateValues();\n\t\tstore?.addListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\n\t\tstore?.addListener({ field: \"filterText\" }, this.onSearch);\n\t\tstore?.addListener({ field: \"sortBy\" }, this.onSort);\n\t\tstore?.addListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\n\t\t// We can't subscribe to folders[index].appDefinitions\n\t\t// So we are looking at appFolders.folders update\n\t\t// Since that update is done After removing an app of definitions\n\t\tstore?.addListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\n\n\t\tstore?.addListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\n\t\tthis.routerSubscription = FSBL.Clients.RouterClient.subscribe(\"Launcher.update\", this.updateAppDefinitions);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstore?.removeListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\n\t\tstore?.removeListener({ field: \"filterText\" }, this.onSearch);\n\t\tstore?.removeListener({ field: \"sortBy\" }, this.onSort);\n\t\tstore?.removeListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\n\t\tstore?.removeListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\n\n\t\tstore?.removeListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\n\t\tFSBL.Clients.RouterClient.unsubscribe(this.routerSubscription.subscribeID);\n\t}\n\n\trenderAppList() {\n\t\treturn this.filterApps().map((app, index) => <AppDefinition app={app} folder={this.state.folder} key={index} />);\n\t}\n\n\tgetNoResultsMessage() {\n\t\tconst messages = {\n\t\t\tsearch: [\"No results found. Please try again.\"],\n\t\t\tFavorites: [\"There’s nothing here!\", <br key={1} />, \"Add apps to Favorites to view them here.\"],\n\t\t\t//Dashboards: ['There’s nothing here!', <br />, 'Press “New Dashboard” to construct an Dashboard.'],\n\t\t\tdefault: [\"There’s nothing here!\", <br key={2} />, \"Add apps to folders to view them here.\"],\n\t\t};\n\t\tif (!this.state.folder) {\n\t\t\treturn [\"Loading data...\", <br key={3} />];\n\t\t}\n\t\t// User is searching so we need the search message\n\t\tif (this.state.filterText || this.state.tags.length) {\n\t\t\treturn messages.search;\n\t\t}\n\t\t// Now let's check which folder is currently active\n\t\tswitch (this.state.folder.name) {\n\t\t\tcase \"Favorites\":\n\t\t\t\treturn messages.Favorites;\n\t\t\t\tbreak;\n\t\t\tcase \"Dashboards\":\n\t\t\t\treturn [\"\"];\n\t\t\t// return messages.Dashboards;\n\t\t\tdefault:\n\t\t\t\treturn messages.default;\n\t\t}\n\t}\n\n\trender() {\n\t\tconst apps = this.renderAppList();\n\t\treturn (\n\t\t\t<div className=\"complex-menu-content-row\">\n\t\t\t\t<FilterSort></FilterSort>\n\t\t\t\t<div className=\"item-wrapper\">{apps.length ? apps : <NoAppsFound message={this.getNoResultsMessage()} />}</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/Content.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport AppDefinition from \"./AppDefinition\";\nimport NoAppsFound from \"./NoAppsFound\";\nimport FilterSort from \"./FilterSort\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport storeActions from \"../stores/StoreActions\";\nimport sortFunctions from \"../utils/sort-functions\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\nimport { FolderAppType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\n\n(window as any).storeActions = storeActions;\n// To be assigned a value later in the constructor\nlet store: StoreModel | undefined;\n\ninterface IProps {}\ninterface IState {\n\tapps: any;\n\ttags: any;\n\tsortBy: keyof typeof sortFunctions;\n\tfilterText: string;\n\tfolder: FolderType;\n}\n\nexport default class Content extends React.Component<IProps, IState> {\n\trouterSubscription: any;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tapps: storeActions.getApps(),\n\t\t\ttags: storeActions.getTags(),\n\t\t\tsortBy: storeActions.getSortBy(),\n\t\t\tfilterText: storeActions.getSearchText().toLowerCase(),\n\t\t\tfolder: storeActions.getActiveFolder(),\n\t\t};\n\t\tthis.onSort = this.onSort.bind(this);\n\t\tthis.onSearch = this.onSearch.bind(this);\n\t\tthis.onTagsUpdate = this.onTagsUpdate.bind(this);\n\t\tthis.onActiveFolderChanged = this.onActiveFolderChanged.bind(this);\n\t\tthis.onAppListUpdate = this.onAppListUpdate.bind(this);\n\t\tthis.onAppLauncherUpdate = this.onAppLauncherUpdate.bind(this);\n\t\tthis.updateAppDefinitions = this.updateAppDefinitions.bind(this);\n\t\tstore = getStore();\n\t}\n\n\t_setFolderState() {\n\t\tthis.setState({\n\t\t\tfolder: storeActions.getActiveFolder(),\n\t\t});\n\t}\n\n\tfilterApps() {\n\t\tconst { folder } = this.state;\n\t\tlet apps: FolderAppType[] =\n\t\t\tfolder.name === ADVANCED_APP_LAUNCHER ? Object.values(storeActions.getAllApps()) : folder.apps;\n\n\t\tif (!folder || !apps) {\n\t\t\treturn [];\n\t\t}\n\t\tconst sortFunc = sortFunctions[this.state.sortBy];\n\t\tconst filteredApps: FolderAppType[] = this.filterAppsByTags(sortFunc(apps));\n\t\tif (!this.state.filterText) {\n\t\t\treturn filteredApps;\n\t\t}\n\n\t\treturn filteredApps.filter(\n\t\t\t({ displayName, name }: FolderAppType) =>\n\t\t\t\tdisplayName?.toLowerCase().includes(this.state.filterText.toLowerCase()) ??\n\t\t\t\tname?.toLowerCase().includes(this.state.filterText.toLowerCase())\n\t\t);\n\t}\n\n\tfilterAppsByTags(apps: FolderAppType[]) {\n\t\tif (!this.state.tags) {\n\t\t\treturn apps;\n\t\t}\n\t\t//All active tags must be present in an app for it to show\n\t\treturn apps.filter((app) => {\n\t\t\tfor (let i = 0; i < this.state.tags.length; i++) {\n\t\t\t\tlet tag = this.state.tags[i];\n\t\t\t\tif (!app.tags?.includes(tag)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tonActiveFolderChanged() {\n\t\t// Quick fix for release 6.3.0\n\t\t// There are 2 listeners for \"activeFolder\". One in this file, the other is in packages\\ui\\src\\components\\toolbar\\advancedAppLauncher\\stores\\StoreActions.ts\n\t\t// The first listener is invoked earlier with nonupdated 'activeFolder' value in the storeActions. So I use a timeout to change this.\n\t\t// Otherwise, for correct re-rendering, we need to do double-click on the left folders panel.\n\t\tsetTimeout(() => {\n\t\t\tthis._setFolderState();\n\t\t}, 50);\n\t}\n\n\tonSearch(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\tfilterText: data.value,\n\t\t});\n\t}\n\n\tonSort(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\tsortBy: data.value,\n\t\t});\n\t}\n\n\tonTagsUpdate(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\ttags: data.value,\n\t\t});\n\t}\n\n\t/**\n\t * Mainly used to know when a user remove an app from a folder\n\t * Because there is no way to subscribe to\n\t * folders[index].appDefinitions updates.\n\t */\n\tonAppListUpdate() {\n\t\tthis._setFolderState();\n\t}\n\n\tonAppLauncherUpdate() {\n\t\tthis.setState({\n\t\t\tapps: storeActions.getApps(),\n\t\t});\n\t}\n\n\tupdateAppDefinitions(err: StandardError, response: any) {\n\t\tFSBL.Clients.Logger.system.debug(\"list updated\", err, response);\n\t\tif (err) {\n\t\t\treturn console.error(err);\n\t\t}\n\t\tstoreActions.refreshAppDefinitions(response.data.componentList);\n\t\tthis.onAppListUpdate();\n\t}\n\n\tcomponentDidMount() {\n\t\t//this.setStateValues();\n\t\tstore?.addListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\n\t\tstore?.addListener({ field: \"filterText\" }, this.onSearch);\n\t\tstore?.addListener({ field: \"sortBy\" }, this.onSort);\n\t\tstore?.addListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\n\t\t// We can't subscribe to folders[index].appDefinitions\n\t\t// So we are looking at appFolders.folders update\n\t\t// Since that update is done After removing an app of definitions\n\t\tstore?.addListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\n\n\t\tstore?.addListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\n\t\tthis.routerSubscription = FSBL.Clients.RouterClient.subscribe(\"Launcher.update\", this.updateAppDefinitions);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstore?.removeListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\n\t\tstore?.removeListener({ field: \"filterText\" }, this.onSearch);\n\t\tstore?.removeListener({ field: \"sortBy\" }, this.onSort);\n\t\tstore?.removeListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\n\t\tstore?.removeListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\n\n\t\tstore?.removeListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\n\t\tFSBL.Clients.RouterClient.unsubscribe(this.routerSubscription.subscribeID);\n\t}\n\n\trenderAppList() {\n\t\treturn this.filterApps().map((app, index) => <AppDefinition app={app} folder={this.state.folder} key={index} />);\n\t}\n\n\tgetNoResultsMessage() {\n\t\tconst messages = {\n\t\t\tsearch: [\"No results found. Please try again.\"],\n\t\t\tFavorites: [\"There’s nothing here!\", <br key={1} />, \"Add apps to Favorites to view them here.\"],\n\t\t\t//Dashboards: ['There’s nothing here!', <br />, 'Press “New Dashboard” to construct an Dashboard.'],\n\t\t\tdefault: [\"There’s nothing here!\", <br key={2} />, \"Add apps to folders to view them here.\"],\n\t\t};\n\t\tif (!this.state.folder) {\n\t\t\treturn [\"Loading data...\", <br key={3} />];\n\t\t}\n\t\t// User is searching so we need the search message\n\t\tif (this.state.filterText || this.state.tags.length) {\n\t\t\treturn messages.search;\n\t\t}\n\t\t// Now let's check which folder is currently active\n\t\tswitch (this.state.folder.name) {\n\t\t\tcase \"Favorites\":\n\t\t\t\treturn messages.Favorites;\n\t\t\t\tbreak;\n\t\t\tcase \"Dashboards\":\n\t\t\t\treturn [\"\"];\n\t\t\t// return messages.Dashboards;\n\t\t\tdefault:\n\t\t\t\treturn messages.default;\n\t\t}\n\t}\n\n\trender() {\n\t\tconst apps = this.renderAppList();\n\t\treturn (\n\t\t\t<div className=\"complex-menu-content-row\">\n\t\t\t\t<FilterSort></FilterSort>\n\t\t\t\t<div className=\"item-wrapper\">{apps.length ? apps : <NoAppsFound message={this.getNoResultsMessage()} />}</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -9,6 +9,10 @@ export default class FilterSort extends React.Component<IProps, IState> {
|
|
|
9
9
|
constructor(props: IProps);
|
|
10
10
|
setStateValues(): void;
|
|
11
11
|
onSearch(event: any): void;
|
|
12
|
+
/**
|
|
13
|
+
* Add tag to list in local store
|
|
14
|
+
* so that other components get notified
|
|
15
|
+
**/
|
|
12
16
|
onTagClick(tag: string): void;
|
|
13
17
|
componentDidMount(): void;
|
|
14
18
|
componentWillUnmount(): void;
|
|
@@ -33,6 +33,10 @@ export default class FilterSort extends React.Component {
|
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Add tag to list in local store
|
|
38
|
+
* so that other components get notified
|
|
39
|
+
**/
|
|
36
40
|
onTagClick(tag) {
|
|
37
41
|
let tags = storeActions.getTags();
|
|
38
42
|
if (tags.includes(tag)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSort.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FilterSort.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAUlD,IAAI,KAA6B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAyB;IACtE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,KAAK,GAAG,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE;SACnC,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAU;QAClB,IAAI,CAAC,QAAQ,CACZ;YACC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;SAC1B,EACD,GAAG,EAAE;;YACJ,MAAA,QAAQ,EAAE,0CAAE,QAAQ,CAAC;gBACpB,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aACxB,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterSort.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FilterSort.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAUlD,IAAI,KAA6B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAyB;IACtE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,KAAK,GAAG,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE;SACnC,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAU;QAClB,IAAI,CAAC,QAAQ,CACZ;YACC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;SAC1B,EACD,GAAG,EAAE;;YACJ,MAAA,QAAQ,EAAE,0CAAE,QAAQ,CAAC;gBACpB,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aACxB,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC;IAED;;;QAGI;IACJ,UAAU,CAAC,GAAW;QACrB,IAAI,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAC5B;aAAM;YACN,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;IACF,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1E,CAAC;IAED,oBAAoB;QACnB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACL,IAAI,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAC3B,oBAAC,SAAS,OAAG;YACb,oBAAC,QAAQ,OAAG;YACZ,oBAAC,MAAM,OAAG;YACV,oBAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,GAAI,CAC3G,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport SearchBox from \"./SearchBox\";\nimport TagsMenu from \"../../../shared/TagsMenu\";\nimport SortBy from \"./SortBy\";\nimport TagsList from \"./TagsList\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport storeActions from \"../stores/StoreActions\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\n\ninterface IProps {}\n\ninterface IState {\n\ttags: string[];\n\tsearch: string;\n}\n\nlet store: StoreModel | undefined;\n\nexport default class FilterSort extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\ttags: [],\n\t\t\tsearch: \"\",\n\t\t};\n\t\tthis.onSearch = this.onSearch.bind(this);\n\t\tthis.setStateValues = this.setStateValues.bind(this);\n\t\tstore = getStore();\n\t}\n\n\tsetStateValues() {\n\t\tthis.setState({\n\t\t\ttags: storeActions.getAllAppsTags(),\n\t\t});\n\t}\n\n\tonSearch(event: any) {\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tsearch: event.target.value,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tgetStore()?.setValue({\n\t\t\t\t\tfield: \"filterText\",\n\t\t\t\t\tvalue: this.state.search,\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Add tag to list in local store\n\t * so that other components get notified\n\t **/\n\tonTagClick(tag: string) {\n\t\tlet tags = storeActions.getTags();\n\n\t\tif (tags.includes(tag)) {\n\t\t\tstoreActions.deleteTag(tag);\n\t\t} else {\n\t\t\tstoreActions.addTag(tag);\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setStateValues();\n\t\tstore?.addListener({ field: \"appFolders.folders\" }, this.setStateValues);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstore?.removeListener({ field: \"appFolders.folders\" }, this.setStateValues);\n\t}\n\n\trender() {\n\t\tlet activeTags = storeActions.getTags();\n\t\treturn (\n\t\t\t<div className=\"filter-sort\">\n\t\t\t\t<SearchBox />\n\t\t\t\t<TagsList />\n\t\t\t\t<SortBy />\n\t\t\t\t<TagsMenu label=\"Tags\" align=\"right\" list={this.state.tags} active={activeTags} onItemClick={this.onTagClick} />\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -17,6 +17,10 @@ export default class FoldersList extends React.Component<IProps, IState> {
|
|
|
17
17
|
constructor(props: IProps);
|
|
18
18
|
animateErrorInput(): void;
|
|
19
19
|
cancelEdit(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Keeps a track of the last mouse's clientY position
|
|
22
|
+
* @param {MouseEvent} event The mouse move event
|
|
23
|
+
*/
|
|
20
24
|
onMouseMove(event: MouseEvent): void;
|
|
21
25
|
onDragEnd({ oldIndex, newIndex }: {
|
|
22
26
|
oldIndex: number;
|
|
@@ -34,9 +38,21 @@ export default class FoldersList extends React.Component<IProps, IState> {
|
|
|
34
38
|
changeFolderName(e: React.ChangeEvent<HTMLInputElement>): void;
|
|
35
39
|
deleteFolder(name: string, e: React.MouseEvent): void;
|
|
36
40
|
keyPressed(e: React.KeyboardEvent<HTMLInputElement>): void;
|
|
41
|
+
/**
|
|
42
|
+
* To be called when user press Enter or when focus is removed
|
|
43
|
+
*/
|
|
37
44
|
attemptRename(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Given some data, renders the basic folder structure that cannot be unordered. Used for orderable folders too. Those just get wrapped in a Draggable
|
|
47
|
+
*/
|
|
38
48
|
renderFolder(folder: FolderType, folderName: string, index: number): JSX.Element;
|
|
49
|
+
/**
|
|
50
|
+
* Render all folders that cannot be reordered.
|
|
51
|
+
*/
|
|
39
52
|
renderUnorderableFolders(): JSX.Element[];
|
|
53
|
+
/**
|
|
54
|
+
* Renders all folders that can be reordered (user created folders).
|
|
55
|
+
*/
|
|
40
56
|
renderOrderableFolders(): JSX.Element[];
|
|
41
57
|
render(): JSX.Element;
|
|
42
58
|
}
|
|
@@ -11,6 +11,9 @@ const RenderButtons = (props) => {
|
|
|
11
11
|
return React.createElement(React.Fragment, null);
|
|
12
12
|
const { isEditing, canEdit, canDelete, attemptRename, cancelEdit, renameFolder, deleteFolder } = props;
|
|
13
13
|
if (isEditing) {
|
|
14
|
+
// We can't use onClick for these buttons because onBlur causes a re-render of these buttons which means mousedown and mouseup
|
|
15
|
+
// technically don't fire on the same button. This means onClick is never fired, so we trigger the buttons on mousedown instead.
|
|
16
|
+
// For more information see: https://www.eventbrite.com/engineering/a-story-of-a-react-re-rendering-bug/
|
|
14
17
|
return (React.createElement("span", { className: "folder-action-icons" },
|
|
15
18
|
React.createElement("i", { id: "confirm-edit", className: "ff-check-mark-2", title: "Accept Rename", onMouseDown: attemptRename }),
|
|
16
19
|
React.createElement("i", { id: "cancel-edit", className: "ff-close", title: "Cancel", onMouseDown: cancelEdit })));
|
|
@@ -23,6 +26,7 @@ const RenderButtons = (props) => {
|
|
|
23
26
|
};
|
|
24
27
|
const RenderFolder = (props) => {
|
|
25
28
|
const { addFavorite, isFavorited, favorites } = useFavorites();
|
|
29
|
+
// If an app is dropped in the Favorites folder, favorite the app
|
|
26
30
|
const onDrop = (e) => {
|
|
27
31
|
props.onDrop(e);
|
|
28
32
|
const app = JSON.parse(e.dataTransfer.getData("app"));
|
|
@@ -36,6 +40,7 @@ const RenderFolder = (props) => {
|
|
|
36
40
|
addFavorite(favoriteApp);
|
|
37
41
|
}
|
|
38
42
|
};
|
|
43
|
+
// When favorites changes remove all items from the favorites folder and re-add all current favorites.
|
|
39
44
|
React.useEffect(() => {
|
|
40
45
|
const existingFavApps = storeActions.getAllAppsFromFolder(FAVORITES);
|
|
41
46
|
Object.values(existingFavApps).forEach((app) => {
|
|
@@ -45,6 +50,7 @@ const RenderFolder = (props) => {
|
|
|
45
50
|
});
|
|
46
51
|
favorites.forEach((fav) => {
|
|
47
52
|
const app = storeActions.findAppByField("name", fav.name) || storeActions.findAppByField("displayName", fav.name);
|
|
53
|
+
// may have things other than favorites in here.
|
|
48
54
|
if (app) {
|
|
49
55
|
storeActions.addAppToFolder("Favorites", app);
|
|
50
56
|
}
|
|
@@ -62,6 +68,7 @@ export default class FoldersList extends React.Component {
|
|
|
62
68
|
folderNameInput: "",
|
|
63
69
|
isNameError: false,
|
|
64
70
|
};
|
|
71
|
+
// Reference to ontainer element of folder list
|
|
65
72
|
this.listDiv = React.createRef();
|
|
66
73
|
this.renameFolder = this.renameFolder.bind(this);
|
|
67
74
|
this.changeFolderName = this.changeFolderName.bind(this);
|
|
@@ -73,7 +80,9 @@ export default class FoldersList extends React.Component {
|
|
|
73
80
|
this.onDragEnd = this.onDragEnd.bind(this);
|
|
74
81
|
this.onMouseMove = this.onMouseMove.bind(this);
|
|
75
82
|
this.animateErrorInput = this.animateErrorInput.bind(this);
|
|
83
|
+
// The last known mouse Y position
|
|
76
84
|
this.mouseY = null;
|
|
85
|
+
//Reference to a folder name input in error
|
|
77
86
|
this.errorInput = React.createRef();
|
|
78
87
|
}
|
|
79
88
|
animateErrorInput() {
|
|
@@ -97,6 +106,10 @@ export default class FoldersList extends React.Component {
|
|
|
97
106
|
folderNameInput: "",
|
|
98
107
|
});
|
|
99
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Keeps a track of the last mouse's clientY position
|
|
111
|
+
* @param {MouseEvent} event The mouse move event
|
|
112
|
+
*/
|
|
100
113
|
onMouseMove(event) {
|
|
101
114
|
this.mouseY = event.clientY;
|
|
102
115
|
}
|
|
@@ -106,6 +119,7 @@ export default class FoldersList extends React.Component {
|
|
|
106
119
|
onAppDrop(event, folder) {
|
|
107
120
|
event.preventDefault();
|
|
108
121
|
const app = JSON.parse(event.dataTransfer.getData("app"));
|
|
122
|
+
// Do not do anything if its Advanced App Launcher or dashboards folder
|
|
109
123
|
if ([ADVANCED_APP_LAUNCHER, DASHBOARDS].indexOf(folder) < 0) {
|
|
110
124
|
storeActions.addAppToFolder(folder, app);
|
|
111
125
|
}
|
|
@@ -130,7 +144,10 @@ export default class FoldersList extends React.Component {
|
|
|
130
144
|
if (this.state.isNameError) {
|
|
131
145
|
this.animateErrorInput();
|
|
132
146
|
}
|
|
147
|
+
// If focus removed and nothing was type, then just hide
|
|
148
|
+
// and consider it a rename cancel
|
|
133
149
|
if (!this.state.folderNameInput) {
|
|
150
|
+
// Cancel rename
|
|
134
151
|
this.setState({
|
|
135
152
|
renamingFolder: null,
|
|
136
153
|
isNameError: false,
|
|
@@ -138,6 +155,7 @@ export default class FoldersList extends React.Component {
|
|
|
138
155
|
});
|
|
139
156
|
return;
|
|
140
157
|
}
|
|
158
|
+
// Finally, all good and so we can rename the folder
|
|
141
159
|
this.attemptRename();
|
|
142
160
|
}
|
|
143
161
|
UNSAFE_componentWillMount() {
|
|
@@ -167,6 +185,7 @@ export default class FoldersList extends React.Component {
|
|
|
167
185
|
deleteFolder(name, e) {
|
|
168
186
|
e.stopPropagation();
|
|
169
187
|
e.preventDefault();
|
|
188
|
+
// Do not attempt to delete if user is renaming a folder
|
|
170
189
|
!this.state.renamingFolder && storeActions.deleteFolder(name);
|
|
171
190
|
}
|
|
172
191
|
keyPressed(e) {
|
|
@@ -174,20 +193,30 @@ export default class FoldersList extends React.Component {
|
|
|
174
193
|
this.attemptRename();
|
|
175
194
|
}
|
|
176
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* To be called when user press Enter or when focus is removed
|
|
198
|
+
*/
|
|
177
199
|
attemptRename() {
|
|
178
200
|
const folders = storeActions.getFolders();
|
|
179
201
|
const input = this.state.folderNameInput.trim();
|
|
180
202
|
const oldName = this.state.renamingFolder;
|
|
181
203
|
let newName = input;
|
|
204
|
+
// Check user input to make sure its at least 1 character
|
|
205
|
+
// made of string, number or both
|
|
182
206
|
if (!/^([a-zA-Z0-9\s]{1,})$/.test(input)) {
|
|
207
|
+
// Do not rename
|
|
183
208
|
console.warn("A valid folder name is required. /^([a-zA-Z0-9s]{1,})$/");
|
|
184
209
|
return this.setState({
|
|
185
210
|
isNameError: true,
|
|
186
211
|
});
|
|
187
212
|
}
|
|
213
|
+
// Check if the submission is the same text as the old name.
|
|
214
|
+
// If false, renaming will be skipped
|
|
188
215
|
let nameChanged = true;
|
|
216
|
+
// We no longer allow leading or trailing spaces, but the trim on the oldName needs to remain for any existing folders
|
|
189
217
|
if (oldName.trim() === newName)
|
|
190
218
|
nameChanged = false;
|
|
219
|
+
// Names must be unique, folders cant share same names
|
|
191
220
|
if (folders[newName]) {
|
|
192
221
|
let repeatedFolderIndex = 0;
|
|
193
222
|
do {
|
|
@@ -205,6 +234,9 @@ export default class FoldersList extends React.Component {
|
|
|
205
234
|
}
|
|
206
235
|
});
|
|
207
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Given some data, renders the basic folder structure that cannot be unordered. Used for orderable folders too. Those just get wrapped in a Draggable
|
|
239
|
+
*/
|
|
208
240
|
renderFolder(folder, folderName, index) {
|
|
209
241
|
let className = "complex-menu-section-toggle";
|
|
210
242
|
if (this.state.activeFolder === folderName) {
|
|
@@ -227,12 +259,16 @@ export default class FoldersList extends React.Component {
|
|
|
227
259
|
nameField = folderName;
|
|
228
260
|
}
|
|
229
261
|
const showIcon = canEdit || canDelete;
|
|
262
|
+
// This DOM will be rendered within a draggable (if the folder can be dragged), and a plain ol div if it cannot be dragged.
|
|
230
263
|
return (React.createElement(RenderFolder, { onDragOver: (event) => event.preventDefault(), onDrop: (event) => this.onAppDrop(event, folderName), onClick: (event) => this.onFolderClicked(event, folderName), className: className, key: index, title: folderName },
|
|
231
264
|
React.createElement("div", { className: "left-nav-label" },
|
|
232
265
|
folder.icon && React.createElement("i", { className: folder.icon }),
|
|
233
266
|
React.createElement("div", { className: "folder-name" }, nameField)),
|
|
234
267
|
React.createElement(RenderButtons, { showIcon: showIcon, isEditing: isEditing, canEdit: canEdit, canDelete: canDelete, attemptRename: () => this.attemptRename(), cancelEdit: () => this.cancelEdit(), renameFolder: (event) => this.renameFolder(folderName, event), deleteFolder: (event) => this.deleteFolder(folderName, event) })));
|
|
235
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Render all folders that cannot be reordered.
|
|
271
|
+
*/
|
|
236
272
|
renderUnorderableFolders() {
|
|
237
273
|
const folders = storeActions.getFolders();
|
|
238
274
|
const unorderableFolders = this.state.foldersList.filter((folderName) => dragDisabled.includes(folderName) && folderName in folders);
|
|
@@ -242,6 +278,9 @@ export default class FoldersList extends React.Component {
|
|
|
242
278
|
return this.renderFolder(folder, folderName, index);
|
|
243
279
|
});
|
|
244
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Renders all folders that can be reordered (user created folders).
|
|
283
|
+
*/
|
|
245
284
|
renderOrderableFolders() {
|
|
246
285
|
const folders = storeActions.getFolders();
|
|
247
286
|
const orderableFolders = this.state.foldersList.filter((folderName) => !dragDisabled.includes(folderName) && folderName in folders);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FoldersList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FoldersList.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport storeActions from \"../stores/StoreActions\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\nimport { FinsembleDraggable } from \"../../../legacyControls/FinsembleDraggable\";\nimport { FinsembleDnDContext } from \"../../../legacyControls/FinsembleDnDContext\";\nimport { FavoriteCategory, FolderAppType, FoldersType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nconst { ADVANCED_APP_LAUNCHER, DASHBOARDS, FAVORITES } = storeActions.getConstants();\n\nconst dragDisabled = storeActions.getDragDisabled();\n\ninterface IProps {}\n\ninterface IState {\n\tfoldersList: FoldersType[\"list\"];\n\tactiveFolder: string;\n\trenamingFolder: any | null;\n\tfolderNameInput: string;\n\tisNameError: boolean;\n}\n\ntype RenderFolderProps = {\n\tonDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDrop: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonClick: (event: React.MouseEvent) => void;\n\tclassName: string;\n\tchildren?: React.ReactNode;\n\ttitle: string;\n};\n\nconst RenderButtons = (props: any) => {\n\tif (!props.showIcon) return <></>;\n\n\tconst { isEditing, canEdit, canDelete, attemptRename, cancelEdit, renameFolder, deleteFolder } = props;\n\n\tif (isEditing) {\n\t\t// We can't use onClick for these buttons because onBlur causes a re-render of these buttons which means mousedown and mouseup\n\t\t// technically don't fire on the same button. This means onClick is never fired, so we trigger the buttons on mousedown instead.\n\t\t// For more information see: https://www.eventbrite.com/engineering/a-story-of-a-react-re-rendering-bug/\n\t\treturn (\n\t\t\t<span className=\"folder-action-icons\">\n\t\t\t\t<i id=\"confirm-edit\" className=\"ff-check-mark-2\" title=\"Accept Rename\" onMouseDown={attemptRename}></i>\n\t\t\t\t<i id=\"cancel-edit\" className=\"ff-close\" title=\"Cancel\" onMouseDown={cancelEdit}></i>\n\t\t\t</span>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<span className=\"folder-action-icons\">\n\t\t\t\t{canEdit && <i className=\"ff-adp-edit\" title=\"Rename\" onClick={renameFolder}></i>}\n\t\t\t\t{canDelete && <i className=\"ff-adp-trash-outline\" title=\"Delete Folder\" onClick={deleteFolder}></i>}\n\t\t\t</span>\n\t\t);\n\t}\n};\n\nconst RenderFolder = (props: RenderFolderProps) => {\n\tconst { addFavorite, isFavorited, favorites } = useFavorites();\n\t// If an app is dropped in the Favorites folder, favorite the app\n\tconst onDrop = (e: React.DragEvent<HTMLDivElement>) => {\n\t\tprops.onDrop(e);\n\t\tconst app = JSON.parse(e.dataTransfer.getData(\"app\"));\n\t\tif (props.title === FAVORITES && !isFavorited(app.name)) {\n\t\t\tconst favoriteApp = {\n\t\t\t\tid: app.name,\n\t\t\t\tcategory: \"Application\" as FavoriteCategory,\n\t\t\t\tname: app.name,\n\t\t\t\ticon: app.icon,\n\t\t\t};\n\t\t\taddFavorite(favoriteApp);\n\t\t}\n\t};\n\t// When favorites changes remove all items from the favorites folder and re-add all current favorites.\n\tReact.useEffect(() => {\n\t\tconst existingFavApps: FolderAppType[] = storeActions.getAllAppsFromFolder(FAVORITES);\n\t\tObject.values(existingFavApps).forEach((app) => {\n\t\t\tif (!favorites.some((fav) => fav.name === app.name)) {\n\t\t\t\tstoreActions.removeAppFromFolder(\"Favorites\", app);\n\t\t\t}\n\t\t});\n\t\tfavorites.forEach((fav) => {\n\t\t\tconst app = storeActions.findAppByField(\"name\", fav.name) || storeActions.findAppByField(\"displayName\", fav.name);\n\t\t\t// may have things other than favorites in here.\n\t\t\tif (app) {\n\t\t\t\tstoreActions.addAppToFolder(\"Favorites\", app);\n\t\t\t}\n\t\t});\n\t}, [favorites]);\n\treturn (\n\t\t<div {...props} onDrop={onDrop}>\n\t\t\t{props.children}\n\t\t</div>\n\t);\n};\n\nexport default class FoldersList extends React.Component<IProps, IState> {\n\tlistDiv: React.RefObject<HTMLDivElement> | undefined;\n\n\terrorInput: React.RefObject<HTMLInputElement> | undefined;\n\n\tmouseY: number | null;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfoldersList: storeActions.getFoldersList(),\n\t\t\tactiveFolder: storeActions.getActiveFolderName(),\n\t\t\trenamingFolder: null,\n\t\t\tfolderNameInput: \"\",\n\t\t\tisNameError: false,\n\t\t};\n\t\t// Reference to ontainer element of folder list\n\t\tthis.listDiv = React.createRef();\n\t\tthis.renameFolder = this.renameFolder.bind(this);\n\t\tthis.changeFolderName = this.changeFolderName.bind(this);\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\n\t\tthis.onFoldersListUpdate = this.onFoldersListUpdate.bind(this);\n\t\tthis.keyPressed = this.keyPressed.bind(this);\n\t\tthis.deleteFolder = this.deleteFolder.bind(this);\n\t\tthis.onFocusRemove = this.onFocusRemove.bind(this);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t\tthis.onMouseMove = this.onMouseMove.bind(this);\n\t\tthis.animateErrorInput = this.animateErrorInput.bind(this);\n\n\t\t// The last known mouse Y position\n\t\tthis.mouseY = null;\n\n\t\t//Reference to a folder name input in error\n\t\tthis.errorInput = React.createRef();\n\t}\n\n\tanimateErrorInput() {\n\t\tif (this.errorInput?.current) {\n\t\t\tthis.errorInput.current.classList.remove(\"error\");\n\t\t\tconst flickerInput = setTimeout(() => {\n\t\t\t\tif (this.errorInput?.current) {\n\t\t\t\t\tthis.errorInput.current.classList.add(\"error\");\n\t\t\t\t}\n\t\t\t\tclearTimeout(flickerInput);\n\t\t\t}, 500);\n\t\t}\n\t}\n\n\tcancelEdit() {\n\t\tconsole.log(\"cancelling edit\");\n\t\tthis.setState({\n\t\t\trenamingFolder: null,\n\t\t\tisNameError: false,\n\t\t\tfolderNameInput: \"\",\n\t\t});\n\t}\n\n\t/**\n\t * Keeps a track of the last mouse's clientY position\n\t * @param {MouseEvent} event The mouse move event\n\t */\n\tonMouseMove(event: MouseEvent) {\n\t\tthis.mouseY = event.clientY;\n\t}\n\n\tonDragEnd({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) {\n\t\tstoreActions.reorderFolders(oldIndex, newIndex);\n\t}\n\n\tonAppDrop(event: React.DragEvent, folder: string) {\n\t\tevent.preventDefault();\n\t\tconst app = JSON.parse(event.dataTransfer.getData(\"app\"));\n\t\t// Do not do anything if its Advanced App Launcher or dashboards folder\n\t\tif ([ADVANCED_APP_LAUNCHER, DASHBOARDS].indexOf(folder) < 0) {\n\t\t\tstoreActions.addAppToFolder(folder, app);\n\t\t}\n\t}\n\n\tonFoldersListUpdate(error: StandardError, data: { value: FoldersType[\"list\"] }) {\n\t\tthis.setState({\n\t\t\tfoldersList: data.value,\n\t\t});\n\t}\n\n\tonFolderClicked(event: React.MouseEvent, folder: string) {\n\t\tgetStore()?.setValue(\n\t\t\t{\n\t\t\t\tfield: \"activeFolder\",\n\t\t\t\tvalue: folder,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.setState({\n\t\t\t\t\tactiveFolder: folder,\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\tonFocusRemove() {\n\t\tif (this.state.isNameError) {\n\t\t\tthis.animateErrorInput();\n\t\t}\n\t\t// If focus removed and nothing was type, then just hide\n\t\t// and consider it a rename cancel\n\t\tif (!this.state.folderNameInput) {\n\t\t\t// Cancel rename\n\t\t\tthis.setState({\n\t\t\t\trenamingFolder: null,\n\t\t\t\tisNameError: false,\n\t\t\t\tfolderNameInput: \"\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\t// Finally, all good and so we can rename the folder\n\t\tthis.attemptRename();\n\t}\n\n\tUNSAFE_componentWillMount() {\n\t\tgetStore()?.addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\n\t\tdocument.addEventListener(\"mousemove\", this.onMouseMove);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tgetStore()?.addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\n\t\tdocument.removeEventListener(\"mousemove\", this.onMouseMove);\n\t}\n\n\trenameFolder(name: string, e: React.MouseEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (!this.state.isNameError) {\n\t\t\tthis.setState({\n\t\t\t\trenamingFolder: name,\n\t\t\t});\n\t\t}\n\t}\n\n\tchangeFolderName(e: React.ChangeEvent<HTMLInputElement>) {\n\t\tthis.setState({\n\t\t\tfolderNameInput: e.target.value,\n\t\t});\n\t}\n\n\tdeleteFolder(name: string, e: React.MouseEvent) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\t// Do not attempt to delete if user is renaming a folder\n\t\t!this.state.renamingFolder && storeActions.deleteFolder(name);\n\t}\n\n\tkeyPressed(e: React.KeyboardEvent<HTMLInputElement>) {\n\t\tif (e.key === \"Enter\") {\n\t\t\tthis.attemptRename();\n\t\t}\n\t}\n\n\t/**\n\t * To be called when user press Enter or when focus is removed\n\t */\n\tattemptRename() {\n\t\tconst folders = storeActions.getFolders();\n\t\tconst input = this.state.folderNameInput.trim();\n\t\tconst oldName = this.state.renamingFolder;\n\t\tlet newName = input;\n\t\t// Check user input to make sure its at least 1 character\n\t\t// made of string, number or both\n\t\tif (!/^([a-zA-Z0-9\\s]{1,})$/.test(input)) {\n\t\t\t// Do not rename\n\t\t\tconsole.warn(\"A valid folder name is required. /^([a-zA-Z0-9s]{1,})$/\");\n\t\t\treturn this.setState({\n\t\t\t\tisNameError: true,\n\t\t\t});\n\t\t}\n\n\t\t// Check if the submission is the same text as the old name.\n\t\t// If false, renaming will be skipped\n\t\tlet nameChanged = true;\n\t\t// We no longer allow leading or trailing spaces, but the trim on the oldName needs to remain for any existing folders\n\t\tif (oldName.trim() === newName) nameChanged = false;\n\n\t\t// Names must be unique, folders cant share same names\n\t\tif (folders[newName]) {\n\t\t\tlet repeatedFolderIndex = 0;\n\t\t\tdo {\n\t\t\t\trepeatedFolderIndex++;\n\t\t\t} while (Object.keys(folders).includes(`${newName}(${repeatedFolderIndex})`));\n\t\t\tnewName = `${newName}(${repeatedFolderIndex})`;\n\t\t}\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tfolderNameInput: \"\",\n\t\t\t\trenamingFolder: null,\n\t\t\t\tisNameError: false,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tif (nameChanged) {\n\t\t\t\t\tstoreActions.renameFolder(oldName, newName);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Given some data, renders the basic folder structure that cannot be unordered. Used for orderable folders too. Those just get wrapped in a Draggable\n\t */\n\trenderFolder(folder: FolderType, folderName: string, index: number) {\n\t\tlet className = \"complex-menu-section-toggle\";\n\t\tif (this.state.activeFolder === folderName) {\n\t\t\tclassName = `${className} active-section-toggle`;\n\t\t}\n\t\tif (folder.icon) {\n\t\t\tclassName = `${className} folder-with-icon`;\n\t\t}\n\n\t\tconst { canDelete, canEdit } = folder;\n\n\t\tlet nameField,\n\t\t\tisEditing = false;\n\t\tif (this.state.renamingFolder === folderName && canEdit) {\n\t\t\tconst { isNameError } = this.state;\n\t\t\tnameField = (\n\t\t\t\t<input\n\t\t\t\t\tid=\"rename\"\n\t\t\t\t\tvalue={this.state.folderNameInput}\n\t\t\t\t\tonChange={this.changeFolderName}\n\t\t\t\t\tonKeyPress={this.keyPressed}\n\t\t\t\t\tonBlur={this.onFocusRemove}\n\t\t\t\t\tclassName={isNameError ? \"error\" : \"\"}\n\t\t\t\t\tautoFocus\n\t\t\t\t\tref={isNameError ? this.errorInput : null}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tisEditing = true;\n\t\t} else if (folderName === \"Advanced App Launcher\") {\n\t\t\tnameField = \"App Launcher\";\n\t\t} else {\n\t\t\tnameField = folderName;\n\t\t}\n\n\t\tconst showIcon = canEdit || canDelete;\n\n\t\t// This DOM will be rendered within a draggable (if the folder can be dragged), and a plain ol div if it cannot be dragged.\n\t\treturn (\n\t\t\t<RenderFolder\n\t\t\t\tonDragOver={(event: React.DragEvent) => event.preventDefault()}\n\t\t\t\tonDrop={(event: React.DragEvent) => this.onAppDrop(event, folderName)}\n\t\t\t\tonClick={(event: React.MouseEvent) => this.onFolderClicked(event, folderName)}\n\t\t\t\tclassName={className}\n\t\t\t\tkey={index}\n\t\t\t\ttitle={folderName}\n\t\t\t>\n\t\t\t\t<div className=\"left-nav-label\">\n\t\t\t\t\t{folder.icon && <i className={folder.icon}></i>}\n\t\t\t\t\t<div className=\"folder-name\">{nameField}</div>\n\t\t\t\t</div>\n\t\t\t\t<RenderButtons\n\t\t\t\t\tshowIcon={showIcon}\n\t\t\t\t\tisEditing={isEditing}\n\t\t\t\t\tcanEdit={canEdit}\n\t\t\t\t\tcanDelete={canDelete}\n\t\t\t\t\tattemptRename={() => this.attemptRename()}\n\t\t\t\t\tcancelEdit={() => this.cancelEdit()}\n\t\t\t\t\trenameFolder={(event: React.DragEvent) => this.renameFolder(folderName, event)}\n\t\t\t\t\tdeleteFolder={(event: React.DragEvent) => this.deleteFolder(folderName, event)}\n\t\t\t\t/>\n\t\t\t</RenderFolder>\n\t\t);\n\t}\n\n\t/**\n\t * Render all folders that cannot be reordered.\n\t */\n\trenderUnorderableFolders() {\n\t\tconst folders: FoldersType[\"folders\"] = storeActions.getFolders();\n\t\tconst unorderableFolders: string[] = this.state.foldersList.filter(\n\t\t\t(folderName) => dragDisabled.includes(folderName) && folderName in folders\n\t\t);\n\t\treturn unorderableFolders.map((folderName: string, index) => {\n\t\t\tconst folder: FolderType = folders[folderName];\n\t\t\tfolder.icon = \"\";\n\t\t\treturn this.renderFolder(folder, folderName, index);\n\t\t});\n\t}\n\n\t/**\n\t * Renders all folders that can be reordered (user created folders).\n\t */\n\trenderOrderableFolders() {\n\t\tconst folders = storeActions.getFolders();\n\t\tconst orderableFolders = this.state.foldersList.filter(\n\t\t\t(folderName) => !dragDisabled.includes(folderName) && folderName in folders\n\t\t);\n\t\treturn orderableFolders.map((folderName, index) => {\n\t\t\tconst folder = folders[folderName];\n\t\t\treturn (\n\t\t\t\t<FinsembleDraggable draggableId={folderName} key={index} index={index}>\n\t\t\t\t\t{this.renderFolder(folder, folderName, index)}\n\t\t\t\t</FinsembleDraggable>\n\t\t\t);\n\t\t});\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div className=\"top\">\n\t\t\t\t<div className=\"folder-list\" ref={this.listDiv}>\n\t\t\t\t\t{this.renderUnorderableFolders()}\n\t\t\t\t\t<FinsembleDnDContext onDragEnd={this.onDragEnd}>{this.renderOrderableFolders()}</FinsembleDnDContext>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FoldersList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FoldersList.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport storeActions from \"../stores/StoreActions\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\nimport { FinsembleDraggable } from \"../../../legacyControls/FinsembleDraggable\";\nimport { FinsembleDnDContext } from \"../../../legacyControls/FinsembleDnDContext\";\nimport { FavoriteCategory, FolderAppType, FoldersType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nconst { ADVANCED_APP_LAUNCHER, DASHBOARDS, FAVORITES } = storeActions.getConstants();\n\nconst dragDisabled = storeActions.getDragDisabled();\n\ninterface IProps {}\n\ninterface IState {\n\tfoldersList: FoldersType[\"list\"];\n\tactiveFolder: string;\n\trenamingFolder: any | null;\n\tfolderNameInput: string;\n\tisNameError: boolean;\n}\n\ntype RenderFolderProps = {\n\tonDragOver: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonDrop: (e: React.DragEvent<HTMLDivElement>) => void;\n\tonClick: (event: React.MouseEvent) => void;\n\tclassName: string;\n\tchildren?: React.ReactNode;\n\ttitle: string;\n};\n\nconst RenderButtons = (props: any) => {\n\tif (!props.showIcon) return <></>;\n\n\tconst { isEditing, canEdit, canDelete, attemptRename, cancelEdit, renameFolder, deleteFolder } = props;\n\n\tif (isEditing) {\n\t\t// We can't use onClick for these buttons because onBlur causes a re-render of these buttons which means mousedown and mouseup\n\t\t// technically don't fire on the same button. This means onClick is never fired, so we trigger the buttons on mousedown instead.\n\t\t// For more information see: https://www.eventbrite.com/engineering/a-story-of-a-react-re-rendering-bug/\n\t\treturn (\n\t\t\t<span className=\"folder-action-icons\">\n\t\t\t\t<i id=\"confirm-edit\" className=\"ff-check-mark-2\" title=\"Accept Rename\" onMouseDown={attemptRename}></i>\n\t\t\t\t<i id=\"cancel-edit\" className=\"ff-close\" title=\"Cancel\" onMouseDown={cancelEdit}></i>\n\t\t\t</span>\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t<span className=\"folder-action-icons\">\n\t\t\t\t{canEdit && <i className=\"ff-adp-edit\" title=\"Rename\" onClick={renameFolder}></i>}\n\t\t\t\t{canDelete && <i className=\"ff-adp-trash-outline\" title=\"Delete Folder\" onClick={deleteFolder}></i>}\n\t\t\t</span>\n\t\t);\n\t}\n};\n\nconst RenderFolder = (props: RenderFolderProps) => {\n\tconst { addFavorite, isFavorited, favorites } = useFavorites();\n\t// If an app is dropped in the Favorites folder, favorite the app\n\tconst onDrop = (e: React.DragEvent<HTMLDivElement>) => {\n\t\tprops.onDrop(e);\n\t\tconst app = JSON.parse(e.dataTransfer.getData(\"app\"));\n\t\tif (props.title === FAVORITES && !isFavorited(app.name)) {\n\t\t\tconst favoriteApp = {\n\t\t\t\tid: app.name,\n\t\t\t\tcategory: \"Application\" as FavoriteCategory,\n\t\t\t\tname: app.name,\n\t\t\t\ticon: app.icon,\n\t\t\t};\n\t\t\taddFavorite(favoriteApp);\n\t\t}\n\t};\n\t// When favorites changes remove all items from the favorites folder and re-add all current favorites.\n\tReact.useEffect(() => {\n\t\tconst existingFavApps: FolderAppType[] = storeActions.getAllAppsFromFolder(FAVORITES);\n\t\tObject.values(existingFavApps).forEach((app) => {\n\t\t\tif (!favorites.some((fav) => fav.name === app.name)) {\n\t\t\t\tstoreActions.removeAppFromFolder(\"Favorites\", app);\n\t\t\t}\n\t\t});\n\t\tfavorites.forEach((fav) => {\n\t\t\tconst app = storeActions.findAppByField(\"name\", fav.name) || storeActions.findAppByField(\"displayName\", fav.name);\n\t\t\t// may have things other than favorites in here.\n\t\t\tif (app) {\n\t\t\t\tstoreActions.addAppToFolder(\"Favorites\", app);\n\t\t\t}\n\t\t});\n\t}, [favorites]);\n\treturn (\n\t\t<div {...props} onDrop={onDrop}>\n\t\t\t{props.children}\n\t\t</div>\n\t);\n};\n\nexport default class FoldersList extends React.Component<IProps, IState> {\n\tlistDiv: React.RefObject<HTMLDivElement> | undefined;\n\n\terrorInput: React.RefObject<HTMLInputElement> | undefined;\n\n\tmouseY: number | null;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfoldersList: storeActions.getFoldersList(),\n\t\t\tactiveFolder: storeActions.getActiveFolderName(),\n\t\t\trenamingFolder: null,\n\t\t\tfolderNameInput: \"\",\n\t\t\tisNameError: false,\n\t\t};\n\t\t// Reference to ontainer element of folder list\n\t\tthis.listDiv = React.createRef();\n\t\tthis.renameFolder = this.renameFolder.bind(this);\n\t\tthis.changeFolderName = this.changeFolderName.bind(this);\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\n\t\tthis.onFoldersListUpdate = this.onFoldersListUpdate.bind(this);\n\t\tthis.keyPressed = this.keyPressed.bind(this);\n\t\tthis.deleteFolder = this.deleteFolder.bind(this);\n\t\tthis.onFocusRemove = this.onFocusRemove.bind(this);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t\tthis.onMouseMove = this.onMouseMove.bind(this);\n\t\tthis.animateErrorInput = this.animateErrorInput.bind(this);\n\n\t\t// The last known mouse Y position\n\t\tthis.mouseY = null;\n\n\t\t//Reference to a folder name input in error\n\t\tthis.errorInput = React.createRef();\n\t}\n\n\tanimateErrorInput() {\n\t\tif (this.errorInput?.current) {\n\t\t\tthis.errorInput.current.classList.remove(\"error\");\n\t\t\tconst flickerInput = setTimeout(() => {\n\t\t\t\tif (this.errorInput?.current) {\n\t\t\t\t\tthis.errorInput.current.classList.add(\"error\");\n\t\t\t\t}\n\t\t\t\tclearTimeout(flickerInput);\n\t\t\t}, 500);\n\t\t}\n\t}\n\n\tcancelEdit() {\n\t\tconsole.log(\"cancelling edit\");\n\t\tthis.setState({\n\t\t\trenamingFolder: null,\n\t\t\tisNameError: false,\n\t\t\tfolderNameInput: \"\",\n\t\t});\n\t}\n\n\t/**\n\t * Keeps a track of the last mouse's clientY position\n\t * @param {MouseEvent} event The mouse move event\n\t */\n\tonMouseMove(event: MouseEvent) {\n\t\tthis.mouseY = event.clientY;\n\t}\n\n\tonDragEnd({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) {\n\t\tstoreActions.reorderFolders(oldIndex, newIndex);\n\t}\n\n\tonAppDrop(event: React.DragEvent, folder: string) {\n\t\tevent.preventDefault();\n\t\tconst app = JSON.parse(event.dataTransfer.getData(\"app\"));\n\t\t// Do not do anything if its Advanced App Launcher or dashboards folder\n\t\tif ([ADVANCED_APP_LAUNCHER, DASHBOARDS].indexOf(folder) < 0) {\n\t\t\tstoreActions.addAppToFolder(folder, app);\n\t\t}\n\t}\n\n\tonFoldersListUpdate(error: StandardError, data: { value: FoldersType[\"list\"] }) {\n\t\tthis.setState({\n\t\t\tfoldersList: data.value,\n\t\t});\n\t}\n\n\tonFolderClicked(event: React.MouseEvent, folder: string) {\n\t\tgetStore()?.setValue(\n\t\t\t{\n\t\t\t\tfield: \"activeFolder\",\n\t\t\t\tvalue: folder,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.setState({\n\t\t\t\t\tactiveFolder: folder,\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\tonFocusRemove() {\n\t\tif (this.state.isNameError) {\n\t\t\tthis.animateErrorInput();\n\t\t}\n\t\t// If focus removed and nothing was type, then just hide\n\t\t// and consider it a rename cancel\n\t\tif (!this.state.folderNameInput) {\n\t\t\t// Cancel rename\n\t\t\tthis.setState({\n\t\t\t\trenamingFolder: null,\n\t\t\t\tisNameError: false,\n\t\t\t\tfolderNameInput: \"\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\t// Finally, all good and so we can rename the folder\n\t\tthis.attemptRename();\n\t}\n\n\tUNSAFE_componentWillMount() {\n\t\tgetStore()?.addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\n\t\tdocument.addEventListener(\"mousemove\", this.onMouseMove);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tgetStore()?.addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\n\t\tdocument.removeEventListener(\"mousemove\", this.onMouseMove);\n\t}\n\n\trenameFolder(name: string, e: React.MouseEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tif (!this.state.isNameError) {\n\t\t\tthis.setState({\n\t\t\t\trenamingFolder: name,\n\t\t\t});\n\t\t}\n\t}\n\n\tchangeFolderName(e: React.ChangeEvent<HTMLInputElement>) {\n\t\tthis.setState({\n\t\t\tfolderNameInput: e.target.value,\n\t\t});\n\t}\n\n\tdeleteFolder(name: string, e: React.MouseEvent) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\t// Do not attempt to delete if user is renaming a folder\n\t\t!this.state.renamingFolder && storeActions.deleteFolder(name);\n\t}\n\n\tkeyPressed(e: React.KeyboardEvent<HTMLInputElement>) {\n\t\tif (e.key === \"Enter\") {\n\t\t\tthis.attemptRename();\n\t\t}\n\t}\n\n\t/**\n\t * To be called when user press Enter or when focus is removed\n\t */\n\tattemptRename() {\n\t\tconst folders = storeActions.getFolders();\n\t\tconst input = this.state.folderNameInput.trim();\n\t\tconst oldName = this.state.renamingFolder;\n\t\tlet newName = input;\n\t\t// Check user input to make sure its at least 1 character\n\t\t// made of string, number or both\n\t\tif (!/^([a-zA-Z0-9\\s]{1,})$/.test(input)) {\n\t\t\t// Do not rename\n\t\t\tconsole.warn(\"A valid folder name is required. /^([a-zA-Z0-9s]{1,})$/\");\n\t\t\treturn this.setState({\n\t\t\t\tisNameError: true,\n\t\t\t});\n\t\t}\n\n\t\t// Check if the submission is the same text as the old name.\n\t\t// If false, renaming will be skipped\n\t\tlet nameChanged = true;\n\t\t// We no longer allow leading or trailing spaces, but the trim on the oldName needs to remain for any existing folders\n\t\tif (oldName.trim() === newName) nameChanged = false;\n\n\t\t// Names must be unique, folders cant share same names\n\t\tif (folders[newName]) {\n\t\t\tlet repeatedFolderIndex = 0;\n\t\t\tdo {\n\t\t\t\trepeatedFolderIndex++;\n\t\t\t} while (Object.keys(folders).includes(`${newName}(${repeatedFolderIndex})`));\n\t\t\tnewName = `${newName}(${repeatedFolderIndex})`;\n\t\t}\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tfolderNameInput: \"\",\n\t\t\t\trenamingFolder: null,\n\t\t\t\tisNameError: false,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tif (nameChanged) {\n\t\t\t\t\tstoreActions.renameFolder(oldName, newName);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Given some data, renders the basic folder structure that cannot be unordered. Used for orderable folders too. Those just get wrapped in a Draggable\n\t */\n\trenderFolder(folder: FolderType, folderName: string, index: number) {\n\t\tlet className = \"complex-menu-section-toggle\";\n\t\tif (this.state.activeFolder === folderName) {\n\t\t\tclassName = `${className} active-section-toggle`;\n\t\t}\n\t\tif (folder.icon) {\n\t\t\tclassName = `${className} folder-with-icon`;\n\t\t}\n\n\t\tconst { canDelete, canEdit } = folder;\n\n\t\tlet nameField,\n\t\t\tisEditing = false;\n\t\tif (this.state.renamingFolder === folderName && canEdit) {\n\t\t\tconst { isNameError } = this.state;\n\t\t\tnameField = (\n\t\t\t\t<input\n\t\t\t\t\tid=\"rename\"\n\t\t\t\t\tvalue={this.state.folderNameInput}\n\t\t\t\t\tonChange={this.changeFolderName}\n\t\t\t\t\tonKeyPress={this.keyPressed}\n\t\t\t\t\tonBlur={this.onFocusRemove}\n\t\t\t\t\tclassName={isNameError ? \"error\" : \"\"}\n\t\t\t\t\tautoFocus\n\t\t\t\t\tref={isNameError ? this.errorInput : null}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tisEditing = true;\n\t\t} else if (folderName === \"Advanced App Launcher\") {\n\t\t\tnameField = \"App Launcher\";\n\t\t} else {\n\t\t\tnameField = folderName;\n\t\t}\n\n\t\tconst showIcon = canEdit || canDelete;\n\n\t\t// This DOM will be rendered within a draggable (if the folder can be dragged), and a plain ol div if it cannot be dragged.\n\t\treturn (\n\t\t\t<RenderFolder\n\t\t\t\tonDragOver={(event: React.DragEvent) => event.preventDefault()}\n\t\t\t\tonDrop={(event: React.DragEvent) => this.onAppDrop(event, folderName)}\n\t\t\t\tonClick={(event: React.MouseEvent) => this.onFolderClicked(event, folderName)}\n\t\t\t\tclassName={className}\n\t\t\t\tkey={index}\n\t\t\t\ttitle={folderName}\n\t\t\t>\n\t\t\t\t<div className=\"left-nav-label\">\n\t\t\t\t\t{folder.icon && <i className={folder.icon}></i>}\n\t\t\t\t\t<div className=\"folder-name\">{nameField}</div>\n\t\t\t\t</div>\n\t\t\t\t<RenderButtons\n\t\t\t\t\tshowIcon={showIcon}\n\t\t\t\t\tisEditing={isEditing}\n\t\t\t\t\tcanEdit={canEdit}\n\t\t\t\t\tcanDelete={canDelete}\n\t\t\t\t\tattemptRename={() => this.attemptRename()}\n\t\t\t\t\tcancelEdit={() => this.cancelEdit()}\n\t\t\t\t\trenameFolder={(event: React.DragEvent) => this.renameFolder(folderName, event)}\n\t\t\t\t\tdeleteFolder={(event: React.DragEvent) => this.deleteFolder(folderName, event)}\n\t\t\t\t/>\n\t\t\t</RenderFolder>\n\t\t);\n\t}\n\n\t/**\n\t * Render all folders that cannot be reordered.\n\t */\n\trenderUnorderableFolders() {\n\t\tconst folders: FoldersType[\"folders\"] = storeActions.getFolders();\n\t\tconst unorderableFolders: string[] = this.state.foldersList.filter(\n\t\t\t(folderName) => dragDisabled.includes(folderName) && folderName in folders\n\t\t);\n\t\treturn unorderableFolders.map((folderName: string, index) => {\n\t\t\tconst folder: FolderType = folders[folderName];\n\t\t\tfolder.icon = \"\";\n\t\t\treturn this.renderFolder(folder, folderName, index);\n\t\t});\n\t}\n\n\t/**\n\t * Renders all folders that can be reordered (user created folders).\n\t */\n\trenderOrderableFolders() {\n\t\tconst folders = storeActions.getFolders();\n\t\tconst orderableFolders = this.state.foldersList.filter(\n\t\t\t(folderName) => !dragDisabled.includes(folderName) && folderName in folders\n\t\t);\n\t\treturn orderableFolders.map((folderName, index) => {\n\t\t\tconst folder = folders[folderName];\n\t\t\treturn (\n\t\t\t\t<FinsembleDraggable draggableId={folderName} key={index} index={index}>\n\t\t\t\t\t{this.renderFolder(folder, folderName, index)}\n\t\t\t\t</FinsembleDraggable>\n\t\t\t);\n\t\t});\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div className=\"top\">\n\t\t\t\t<div className=\"folder-list\" ref={this.listDiv}>\n\t\t\t\t\t{this.renderUnorderableFolders()}\n\t\t\t\t\t<FinsembleDnDContext onDragEnd={this.onDragEnd}>{this.renderOrderableFolders()}</FinsembleDnDContext>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -14,6 +14,10 @@ interface IState {
|
|
|
14
14
|
export default class LeftNavBottomLinks extends React.Component<IProps, IState> {
|
|
15
15
|
constructor(props: IProps);
|
|
16
16
|
UNSAFE_componentWillMount(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Sets isFormVisible to true in store so that main component
|
|
19
|
+
* renders the AddNewAppForm component or removes it
|
|
20
|
+
*/
|
|
17
21
|
showAddAppForm(): void;
|
|
18
22
|
removeStore(): void;
|
|
19
23
|
render(): JSX.Element;
|
|
@@ -14,6 +14,9 @@ export default class LeftNavBottomLinks extends React.Component {
|
|
|
14
14
|
},
|
|
15
15
|
],
|
|
16
16
|
};
|
|
17
|
+
// Display the menu item for adding a quick component only if the prop has been explicitly
|
|
18
|
+
// turned on. This is passed all the way down from AdvancedAppLauncher.
|
|
19
|
+
// DEPRECATED: Quick Components is deprecated and will be removed in a future version
|
|
17
20
|
if (props.enableQuickComponents) {
|
|
18
21
|
this.state.bottomEntries.push({
|
|
19
22
|
name: "App Catalog",
|
|
@@ -23,6 +26,8 @@ export default class LeftNavBottomLinks extends React.Component {
|
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
UNSAFE_componentWillMount() {
|
|
29
|
+
// If user configures the advanced app launcher to use the app catalog, add app catalog button to the bottom entries of the
|
|
30
|
+
// advanced app launcher menu.
|
|
26
31
|
finsembleWindow.getOptions((err, opts) => {
|
|
27
32
|
var _a, _b;
|
|
28
33
|
const useAppCatalog = (_b = (_a = opts === null || opts === void 0 ? void 0 : opts.customData) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.useAppCatalog;
|
|
@@ -42,6 +47,10 @@ export default class LeftNavBottomLinks extends React.Component {
|
|
|
42
47
|
}
|
|
43
48
|
});
|
|
44
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Sets isFormVisible to true in store so that main component
|
|
52
|
+
* renders the AddNewAppForm component or removes it
|
|
53
|
+
*/
|
|
45
54
|
showAddAppForm() {
|
|
46
55
|
var _a;
|
|
47
56
|
(_a = getStore()) === null || _a === void 0 ? void 0 : _a.setValue({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftNavBottomLinks.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAgB1C,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,KAAK,CAAC,SAAyB;IAC9E,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,aAAa,EAAE;gBACd,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;gBAC5C;oBACC,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,aAAa;iBACpB;aACD;SACD,CAAC;
|
|
1
|
+
{"version":3,"file":"LeftNavBottomLinks.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport AddNewFolder from \"./AddNewFolder\";\n\ninterface IProps {\n\tenableQuickComponents: boolean;\n\topenAppMarket: () => void;\n\t[prop: string]: string | boolean | (() => void);\n}\n\ninterface IState {\n\tbottomEntries: {\n\t\tname: string;\n\t\tclick: string;\n\t\ticon?: string;\n\t}[];\n}\n\nexport default class LeftNavBottomLinks extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tbottomEntries: [\n\t\t\t\t{ name: \"New App\", click: \"showAddAppForm\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"Restore Defaults\",\n\t\t\t\t\ticon: \"ff-arrow-back\",\n\t\t\t\t\tclick: \"removeStore\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\t// Display the menu item for adding a quick component only if the prop has been explicitly\n\t\t// turned on. This is passed all the way down from AdvancedAppLauncher.\n\t\t// DEPRECATED: Quick Components is deprecated and will be removed in a future version\n\t\tif (props.enableQuickComponents) {\n\t\t\tthis.state.bottomEntries.push({\n\t\t\t\tname: \"App Catalog\",\n\t\t\t\ticon: \"ff-list\",\n\t\t\t\tclick: \"openAppMarket\",\n\t\t\t});\n\t\t}\n\t}\n\n\tUNSAFE_componentWillMount() {\n\t\t// If user configures the advanced app launcher to use the app catalog, add app catalog button to the bottom entries of the\n\t\t// advanced app launcher menu.\n\t\tfinsembleWindow.getOptions((err, opts) => {\n\t\t\tconst useAppCatalog = opts?.customData?.component?.useAppCatalog;\n\t\t\tif (useAppCatalog) {\n\t\t\t\tthis.setState((prevState) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbottomEntries: [\n\t\t\t\t\t\t\t...prevState.bottomEntries,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"App Catalog\",\n\t\t\t\t\t\t\t\ticon: \"ff-list\",\n\t\t\t\t\t\t\t\tclick: \"openAppMarket\",\n\t\t\t\t\t\t\t},\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\t/**\n\t * Sets isFormVisible to true in store so that main component\n\t * renders the AddNewAppForm component or removes it\n\t */\n\tshowAddAppForm() {\n\t\tgetStore()?.setValue(\n\t\t\t{\n\t\t\t\tfield: \"isFormVisible\",\n\t\t\t\tvalue: true,\n\t\t\t},\n\t\t\t(error) => {\n\t\t\t\terror && console.log(\"Failed to set isFormVisible to true\");\n\t\t\t}\n\t\t);\n\t}\n\n\tremoveStore() {\n\t\tFSBL.Clients.DialogManager.open(\n\t\t\t\"yesNo\",\n\t\t\t{\n\t\t\t\tmonitor: \"primary\",\n\t\t\t\ttitle: \"Restore App Launcher?\",\n\t\t\t\tquestion: \"The application will restart and restore the app launcher to its default state.\",\n\t\t\t\tshowTimer: false,\n\t\t\t\tincludeNegative: false,\n\t\t\t\tincludeCancel: true,\n\t\t\t\tshowCancelButton: true,\n\t\t\t\tshowNegativeButton: false,\n\t\t\t\taffirmativeResponseLabel: \"Restore\",\n\t\t\t},\n\t\t\t(err, response) => {\n\t\t\t\tconst { choice } = response;\n\t\t\t\tif (choice) {\n\t\t\t\t\tswitch (choice) {\n\t\t\t\t\t\tcase \"affirmative\":\n\t\t\t\t\t\t\tFSBL.Clients.DistributedStoreClient.removeStore(\n\t\t\t\t\t\t\t\t{ store: \"Finsemble-AppLauncher-Store\", global: true },\n\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\tFSBL.restartApplication();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tcase \"negative\":\n\t\t\t\t\t\tcase \"cancel\":\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div className=\"bottom\">\n\t\t\t\t<AddNewFolder />\n\t\t\t\t{this.state.bottomEntries.map((entry, index) => {\n\t\t\t\t\tlet handler = entry.click\n\t\t\t\t\t\t? (this as { [key: string]: any })[entry.click] || this.props[entry.click]\n\t\t\t\t\t\t: Function.prototype;\n\t\t\t\t\tlet className = entry.icon ? `${entry.icon} complex-menu-action` : \"ff-plus-2 complex-menu-action\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div className={className} key={index} onClick={handler}>\n\t\t\t\t\t\t\t{entry.name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -13,6 +13,9 @@ export default class SearchBox extends React.Component {
|
|
|
13
13
|
this.focus = this.focus.bind(this);
|
|
14
14
|
this.onFilterTextUpdated = this.onFilterTextUpdated.bind(this);
|
|
15
15
|
}
|
|
16
|
+
// Push value to store, which will come back to us via an update.
|
|
17
|
+
// This redirection is necessary so that other parts of the program can
|
|
18
|
+
// change filterText and the searchBox will actually update.
|
|
16
19
|
onSearch(event) {
|
|
17
20
|
var _a;
|
|
18
21
|
(_a = getStore()) === null || _a === void 0 ? void 0 : _a.setValue({
|