@finsemble/finsemble-ui 6.6.1 → 7.0.0-beta-X
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 +31 -43
- 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 +4 -11
- 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 -48
- package/react/assets/css/finsemble.css +6 -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 +15 -3
- package/react/assets/css/menus.css +12 -12
- package/react/assets/css/notificationsCenter.css +49 -33
- 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 +40 -0
- package/react/assets/css/tags.css +10 -10
- package/react/assets/css/toolbar.css +22 -19
- package/react/assets/css/userPreferences.css +29 -26
- package/react/assets/css/windowTitleBar.css +86 -40
- package/react/assets/icons/server.svg +26 -0
- 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/ButtonIcon.js +1 -1
- package/react/components/common/ButtonIcon.js.map +1 -1
- package/react/components/common/ButtonRow.js +2 -2
- package/react/components/common/ButtonRow.js.map +1 -1
- package/react/components/common/Checkbox.d.ts +1 -0
- package/react/components/common/Checkbox.js +3 -3
- package/react/components/common/Checkbox.js.map +1 -1
- package/react/components/common/ColorPicker.d.ts +5 -0
- package/react/components/common/ColorPicker.js +56 -15
- 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 +34 -0
- package/react/components/common/ErrorBoundary.js +43 -0
- package/react/components/common/ErrorBoundary.js.map +1 -0
- 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 +13 -2
- package/react/components/common/FinsembleIcon.js +61 -5
- package/react/components/common/FinsembleIcon.js.map +1 -1
- package/react/components/common/FinsembleLink.d.ts +6 -0
- package/react/components/common/FinsembleLink.js +12 -0
- package/react/components/common/FinsembleLink.js.map +1 -0
- package/react/components/common/FinsembleSelect.js +5 -1
- package/react/components/common/FinsembleSelect.js.map +1 -1
- package/react/components/common/FinsembleToggle.d.ts +1 -2
- package/react/components/common/FinsembleToggle.js +2 -6
- package/react/components/common/FinsembleToggle.js.map +1 -1
- package/react/components/common/FinsembleToggleButtonBar.d.ts +13 -0
- package/react/components/common/FinsembleToggleButtonBar.js +44 -0
- package/react/components/common/FinsembleToggleButtonBar.js.map +1 -0
- package/react/components/common/InputTable.d.ts +10 -3
- package/react/components/common/InputTable.js +20 -13
- package/react/components/common/InputTable.js.map +1 -1
- package/react/components/common/Tab.js +36 -5
- package/react/components/common/Tab.js.map +1 -1
- package/react/components/common/TimeSelect.js +34 -3
- 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/FinsembleToggle.css +22 -0
- package/react/components/common/css/accordion.css +9 -6
- package/react/components/common/css/application-edit-page.css +48 -45
- 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 +14 -14
- package/react/components/common/css/time-select.css +2 -1
- package/react/components/common/css/toggle.css +4 -12
- 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 +12 -1
- package/react/components/common/helpers.js.map +1 -1
- package/react/components/common/stories/ColorPicker.stories.js +9 -11
- 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/stories/FinsembleToggle.stories.d.ts +1 -2
- package/react/components/common/stories/FinsembleToggle.stories.js +0 -7
- package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
- package/react/components/common/stories/FinsembleToggleButtonBar.stories.d.ts +14 -0
- package/react/components/common/stories/FinsembleToggleButtonBar.stories.js +97 -0
- package/react/components/common/stories/FinsembleToggleButtonBar.stories.js.map +1 -0
- package/react/components/common/stories/InputTable.stories.d.ts +4 -3
- package/react/components/common/stories/InputTable.stories.js +18 -8
- package/react/components/common/stories/InputTable.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/ButtonRow.spec.js +5 -0
- package/react/components/common/tests/ButtonRow.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 +2 -6
- package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.d.ts +1 -0
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +41 -0
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -0
- package/react/components/common/tests/InputTable.spec.js +3 -3
- package/react/components/common/tests/InputTable.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 +10 -1
- 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 +12 -7
- 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 +14 -1
- package/react/components/icon/Icon.js +42 -1
- package/react/components/icon/Icon.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
- package/react/components/legacyControls/FinsembleDialog.js +16 -1
- 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 +133 -8
- 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/linker/remoteRedux.js +1 -0
- package/react/components/linker/remoteRedux.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 +125 -24
- 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 +5 -2
- package/react/components/menu/MenuToggle.js.map +1 -1
- package/react/components/menu/keyboardNavigation.d.ts +13 -22
- package/react/components/menu/keyboardNavigation.js +165 -160
- 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 +47 -25
- 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 +37 -6
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +17 -10
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
- package/react/components/notifications/components/shared/CheckButton.js +19 -8
- 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 +15 -7
- 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/shared/notificationCard/NotificationCardBodyShell.js +2 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js +2 -1
- package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
- package/react/components/notifications/components/views/CardView.js +8 -3
- package/react/components/notifications/components/views/CardView.js.map +1 -1
- package/react/components/notifications/components/views/ListView.js +11 -1
- 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 +6 -0
- package/react/components/notifications/types.js.map +1 -1
- 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 +21 -3
- 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 -3
- 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 +27 -6
- package/react/components/processMonitor/helpers.js.map +1 -1
- package/react/components/processMonitor/helpers.spec.js +7 -3
- package/react/components/processMonitor/helpers.spec.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 +7 -4
- package/react/components/sdd/AddApp.js +144 -34
- package/react/components/sdd/AddApp.js.map +1 -1
- package/react/components/sdd/AppEditAccess.d.ts +4 -3
- package/react/components/sdd/AppEditAccess.js +8 -0
- package/react/components/sdd/AppEditAccess.js.map +1 -1
- package/react/components/sdd/AppEditPage.d.ts +6 -4
- package/react/components/sdd/AppEditPage.js +205 -393
- package/react/components/sdd/AppEditPage.js.map +1 -1
- package/react/components/sdd/Appearance.css +1 -1
- package/react/components/sdd/Appearance.d.ts +2 -1
- package/react/components/sdd/Appearance.js +18 -7
- package/react/components/sdd/Appearance.js.map +1 -1
- package/react/components/sdd/Application.d.ts +5 -4
- package/react/components/sdd/Application.js +94 -44
- package/react/components/sdd/Application.js.map +1 -1
- package/react/components/sdd/Applications.d.ts +12 -11
- package/react/components/sdd/Applications.js +110 -15
- package/react/components/sdd/Applications.js.map +1 -1
- package/react/components/sdd/AssetsPage.css +3 -3
- package/react/components/sdd/Authentication.js +1 -6
- package/react/components/sdd/Authentication.js.map +1 -1
- package/react/components/sdd/AuthenticationProviderConfig.js +5 -3
- package/react/components/sdd/AuthenticationProviderConfig.js.map +1 -1
- package/react/components/sdd/EditPreload.d.ts +4 -3
- package/react/components/sdd/EditPreload.js +49 -22
- package/react/components/sdd/EditPreload.js.map +1 -1
- package/react/components/sdd/Export.d.ts +7 -6
- package/react/components/sdd/Export.js +4 -3
- package/react/components/sdd/Export.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/GettingStarted.js +3 -3
- package/react/components/sdd/GettingStarted.js.map +1 -1
- package/react/components/sdd/Navigation.js +28 -4
- package/react/components/sdd/Navigation.js.map +1 -1
- package/react/components/sdd/OptionalSettingsView.d.ts +6 -5
- package/react/components/sdd/OptionalSettingsView.js +2 -10
- package/react/components/sdd/OptionalSettingsView.js.map +1 -1
- package/react/components/sdd/ProjectErrors.js +1 -1
- package/react/components/sdd/ProjectErrors.js.map +1 -1
- package/react/components/sdd/Publish.js +4 -2
- 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.d.ts +17 -16
- package/react/components/sdd/SmartDesktopDesigner.js +54 -34
- package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
- package/react/components/sdd/ThemePage.css +6 -23
- package/react/components/sdd/ThemePage.js +8 -5
- package/react/components/sdd/ThemePage.js.map +1 -1
- package/react/components/sdd/Themes.d.ts +2 -1
- package/react/components/sdd/Themes.js +4 -2
- package/react/components/sdd/Themes.js.map +1 -1
- package/react/components/sdd/Toolbar.d.ts +5 -4
- package/react/components/sdd/Toolbar.js +18 -9
- 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.d.ts +1 -1
- package/react/components/sdd/common/setPreloadDefaults.js +9 -4
- package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
- package/react/components/sdd/common/views.js +7 -4
- package/react/components/sdd/common/views.js.map +1 -1
- package/react/components/sdd/css/addApp.css +65 -0
- package/react/components/sdd/css/appearance.css +6 -0
- package/react/components/sdd/css/applications.css +27 -34
- 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 +11 -14
- 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/authenticationProps.js +15 -1
- package/react/components/sdd/fixtures/authenticationProps.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/preloads.js +14 -12
- package/react/components/sdd/fixtures/preloads.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 +466 -0
- package/react/components/sdd/smartDesktopClient.js +906 -0
- package/react/components/sdd/smartDesktopClient.js.map +1 -0
- package/react/components/sdd/smartDesktopClient.spec.d.ts +1 -0
- package/react/components/sdd/smartDesktopClient.spec.js +64 -0
- package/react/components/sdd/smartDesktopClient.spec.js.map +1 -0
- package/react/components/sdd/stories/AddApp.stories.d.ts +11 -0
- package/react/components/sdd/stories/AddApp.stories.js +26 -0
- package/react/components/sdd/stories/AddApp.stories.js.map +1 -0
- package/react/components/sdd/stories/AppEditPage.stories.d.ts +5 -1
- package/react/components/sdd/stories/AppEditPage.stories.js +5 -0
- package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
- package/react/components/sdd/stories/Appearance.stories.d.ts +1 -1
- package/react/components/sdd/stories/Appearance.stories.js +2 -0
- package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
- package/react/components/sdd/stories/Authentication.stories.js +2 -16
- package/react/components/sdd/stories/Authentication.stories.js.map +1 -1
- package/react/components/sdd/stories/OptionalSettingsView.stories.js +1 -1
- package/react/components/sdd/stories/OptionalSettingsView.stories.js.map +1 -1
- package/react/components/sdd/stories/SmartDesktopDesigner.stories.d.ts +1 -1
- package/react/components/sdd/stories/SmartDesktopDesigner.stories.js +3 -0
- package/react/components/sdd/stories/SmartDesktopDesigner.stories.js.map +1 -1
- package/react/components/sdd/stories/Themes.stories.d.ts +1 -1
- package/react/components/sdd/stories/Themes.stories.js +1 -0
- package/react/components/sdd/stories/Themes.stories.js.map +1 -1
- package/react/components/sdd/tests/AddApp.spec.d.ts +1 -0
- package/react/components/sdd/tests/AddApp.spec.js +133 -0
- package/react/components/sdd/tests/AddApp.spec.js.map +1 -0
- package/react/components/sdd/tests/AppEditPage.spec.js +108 -23
- package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
- package/react/components/sdd/tests/Application.spec.js +351 -369
- 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 +30 -50
- package/react/components/sdd/tests/Applications.spec.js.map +1 -1
- package/react/components/sdd/tests/Authentication.spec.js +8 -1
- 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 +63 -7
- package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
- package/react/components/sdd/tests/Export.spec.js +8 -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/Navigation.spec.js +2 -2
- package/react/components/sdd/tests/Navigation.spec.js.map +1 -1
- package/react/components/sdd/tests/OptionalSettingsView.spec.js +264 -0
- package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
- package/react/components/sdd/tests/ProjectErrors.spec.js +3 -1
- package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
- package/react/components/sdd/tests/SmartDesktopDesigner.spec.js +2 -2
- package/react/components/sdd/tests/SmartDesktopDesigner.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/Highlight.stories.js +1 -1
- package/react/components/search/Highlight.stories.js.map +1 -1
- package/react/components/search/Search.js +1 -1
- package/react/components/search/Search.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.d.ts +5 -0
- package/react/components/search/SearchResult.js +6 -0
- package/react/components/search/SearchResult.js.map +1 -1
- package/react/components/search/SearchResult.spec.d.ts +1 -0
- package/react/components/search/SearchResult.spec.js +46 -0
- package/react/components/search/SearchResult.spec.js.map +1 -0
- package/react/components/search/SearchResult.stories.d.ts +16 -0
- package/react/components/search/SearchResult.stories.js +113 -0
- package/react/components/search/SearchResult.stories.js.map +1 -0
- package/react/components/search/SearchResults.js +5 -1
- package/react/components/search/SearchResults.js.map +1 -1
- package/react/components/search/SearchResults.spec.d.ts +1 -0
- package/react/components/search/SearchResults.spec.js +35 -0
- package/react/components/search/SearchResults.spec.js.map +1 -0
- package/react/components/search/SearchResults.stories.d.ts +11 -0
- package/react/components/search/SearchResults.stories.js +458 -0
- package/react/components/search/SearchResults.stories.js.map +1 -0
- 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 +26 -6
- 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/DefaultDropdownButton.spec.js +12 -0
- package/react/components/shared/tests/DefaultDropdownButton.spec.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 +46 -0
- package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.stories.js +2 -2
- package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +1 -16
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +5 -3
- 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 +10 -4
- 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 +6 -2
- package/react/components/toolbar/ToolbarIcon.js.map +1 -1
- package/react/components/toolbar/ToolbarSection.d.ts +8 -9
- package/react/components/toolbar/ToolbarSection.js +21 -7
- 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 +21 -10
- 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 +83 -1
- 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 +12 -3
- 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 +91 -15
- 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 +8 -1
- 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 +17 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +21 -1
- 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 +6 -1
- 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 +78 -2
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +191 -40
- 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/ContentSection.js +1 -1
- package/react/components/userPreferences/components/ContentSection.js.map +1 -1
- 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 +14 -2
- package/react/components/userPreferences/components/content/Workspaces.js +78 -38
- package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +7 -3
- 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 +26 -5
- package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +20 -10
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
- package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +18 -1
- package/react/components/userPreferences/stores/UserPreferencesStore.js +35 -6
- package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
- package/react/components/userPreferences/tests/LeftNav.spec.js +15 -1
- package/react/components/userPreferences/tests/LeftNav.spec.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/UserPreferencesBase.spec.d.ts +1 -0
- package/react/components/userPreferences/tests/UserPreferencesBase.spec.js +42 -0
- package/react/components/userPreferences/tests/UserPreferencesBase.spec.js.map +1 -0
- package/react/components/userPreferences/tests/Workspace.spec.d.ts +1 -0
- package/react/components/userPreferences/tests/Workspace.spec.js +139 -0
- package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -0
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +130 -2
- package/react/components/windowTitleBar/WindowTitleBarShell.js +386 -27
- 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 +27 -5
- 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 +245 -48
- 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 +81 -6
- 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 +64 -1
- 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/YesNoDialog.stories.js +2 -2
- package/react/components/yesNoDialog/YesNoDialog.stories.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 +10 -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 +104 -12
- 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.d.ts +1 -1
- package/react/hooks/useToolbar.js +54 -2
- 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.d.ts +2 -2
- 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 +8 -4
- package/react/store.js +11 -0
- package/react/store.js.map +1 -1
- package/react/tsconfig.tsbuildinfo +1 -0
- 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 +8 -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":"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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"]}
|
|
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({
|