@finsemble/finsemble-ui 7.0.0 → 7.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +13 -11
- package/react/actions/favoriteActions.d.ts +1 -0
- package/react/actions/favoriteActions.js +1 -0
- package/react/actions/favoriteActions.js.map +1 -1
- package/react/actions/menuActions.d.ts +1 -0
- package/react/actions/menuActions.js +1 -0
- package/react/actions/menuActions.js.map +1 -1
- package/react/actions/rootActions.d.ts +1 -0
- package/react/actions/rootActions.js +1 -0
- package/react/actions/rootActions.js.map +1 -1
- package/react/actions/searchActions.d.ts +1 -0
- package/react/actions/searchActions.js +1 -0
- package/react/actions/searchActions.js.map +1 -1
- package/react/actions/toolbarActions.d.ts +34 -0
- package/react/actions/toolbarActions.js +17 -0
- package/react/actions/toolbarActions.js.map +1 -1
- package/react/actions/workspaceActions.d.ts +1 -0
- package/react/actions/workspaceActions.js +1 -0
- package/react/actions/workspaceActions.js.map +1 -1
- package/react/assets/css/advancedAppLauncher.css +22 -19
- package/react/assets/css/appCatalog.css +67 -72
- package/react/assets/css/authentication.css +4 -3
- package/react/assets/css/button.css +3 -10
- package/react/assets/css/core/formElements.css +1 -1
- package/react/assets/css/core/icons.css +3 -2
- package/react/assets/css/core/notifications.css +2 -2
- package/react/assets/css/core/windowFrame.css +9 -9
- package/react/assets/css/dashbar.css +1 -1
- package/react/assets/css/defaultTheme.css +9 -53
- package/react/assets/css/dialogs.css +13 -11
- package/react/assets/css/favorites.css +3 -1
- package/react/assets/css/finsemble.css +3 -2
- package/react/assets/css/font-finance.css +233 -120
- package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +10 -10
- package/react/assets/css/linkerWindow.css +2 -2
- package/react/assets/css/menus.css +10 -10
- package/react/assets/css/notificationsCenter.css +16 -31
- package/react/assets/css/processMonitor.css +7 -4
- package/react/assets/css/search.css +1 -1
- package/react/assets/css/shared/animations.css +10 -4
- package/react/assets/css/shared/common.css +2 -2
- package/react/assets/css/tags.css +10 -10
- package/react/assets/css/toolbar.css +22 -19
- package/react/assets/css/userPreferences.css +12 -14
- package/react/assets/css/windowTitleBar.css +75 -36
- package/react/componentTemplateGenerator.js +3 -2
- package/react/componentTemplateGenerator.js.map +1 -1
- package/react/components/FinsembleProvider.d.ts +7 -0
- package/react/components/FinsembleProvider.js +2 -0
- package/react/components/FinsembleProvider.js.map +1 -1
- package/react/components/appCatalog/AppCatalog.d.ts +4 -0
- package/react/components/appCatalog/AppCatalog.js +4 -0
- package/react/components/appCatalog/AppCatalog.js.map +1 -1
- package/react/components/appCatalog/AppCatalogComponent.d.ts +58 -0
- package/react/components/appCatalog/AppCatalogComponent.js +70 -1
- package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
- package/react/components/appCatalog/components/AppCard.d.ts +35 -0
- package/react/components/appCatalog/components/AppCard.js +42 -0
- package/react/components/appCatalog/components/AppCard.js.map +1 -1
- package/react/components/appCatalog/components/AppResults.d.ts +10 -0
- package/react/components/appCatalog/components/AppResults.js +24 -0
- package/react/components/appCatalog/components/AppResults.js.map +1 -1
- package/react/components/appCatalog/components/Carousel.d.ts +26 -0
- package/react/components/appCatalog/components/Carousel.js +34 -0
- package/react/components/appCatalog/components/Carousel.js.map +1 -1
- package/react/components/appCatalog/components/EmptyResults.d.ts +4 -0
- package/react/components/appCatalog/components/EmptyResults.js +8 -0
- package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
- package/react/components/appCatalog/components/Hero.d.ts +15 -0
- package/react/components/appCatalog/components/Hero.js +15 -0
- package/react/components/appCatalog/components/Hero.js.map +1 -1
- package/react/components/appCatalog/components/Home.d.ts +6 -4
- package/react/components/appCatalog/components/Home.js +10 -0
- package/react/components/appCatalog/components/Home.js.map +1 -1
- package/react/components/appCatalog/components/SearchBar.d.ts +31 -0
- package/react/components/appCatalog/components/SearchBar.js +33 -0
- package/react/components/appCatalog/components/SearchBar.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/AppDescription.js +9 -0
- package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/AppDevNotes.js +15 -0
- package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +17 -0
- package/react/components/appCatalog/components/Showcase/AppShowcase.js +25 -0
- package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/Header.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/Header.js +12 -0
- package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +7 -0
- package/react/components/appCatalog/components/Showcase/ImageCarousel.js +11 -0
- package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/Modal.d.ts +10 -0
- package/react/components/appCatalog/components/Showcase/Modal.js +10 -0
- package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +9 -0
- package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +6 -0
- package/react/components/appCatalog/components/Showcase/SupportNotes.js +11 -0
- package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
- package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +5 -0
- package/react/components/appCatalog/components/Showcase/VersionNotes.js +9 -0
- package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
- package/react/components/appCatalog/components/Tag.d.ts +6 -0
- package/react/components/appCatalog/components/Tag.js +10 -0
- package/react/components/appCatalog/components/Tag.js.map +1 -1
- package/react/components/appCatalog/components/Toast.d.ts +5 -0
- package/react/components/appCatalog/components/Toast.js +9 -0
- package/react/components/appCatalog/components/Toast.js.map +1 -1
- package/react/components/appCatalog/components/helpers.js +1 -0
- package/react/components/appCatalog/components/helpers.js.map +1 -1
- package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -0
- package/react/components/appCatalog/modules/AppDirectory.js +5 -0
- package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
- package/react/components/appCatalog/modules/FDC3.d.ts +37 -0
- package/react/components/appCatalog/modules/FDC3.js +40 -0
- package/react/components/appCatalog/modules/FDC3.js.map +1 -1
- package/react/components/appCatalog/stores/appStore.js +1 -0
- package/react/components/appCatalog/stores/appStore.js.map +1 -1
- package/react/components/appCatalog/stores/storeActions.d.ts +91 -0
- package/react/components/appCatalog/stores/storeActions.js +116 -1
- package/react/components/appCatalog/stores/storeActions.js.map +1 -1
- package/react/components/common/Checkbox.d.ts +1 -0
- package/react/components/common/Checkbox.js +2 -2
- package/react/components/common/Checkbox.js.map +1 -1
- package/react/components/common/ColorPicker.d.ts +5 -0
- package/react/components/common/ColorPicker.js +40 -0
- package/react/components/common/ColorPicker.js.map +1 -1
- package/react/components/common/DropZone.d.ts +11 -0
- package/react/components/common/DropZone.js +21 -1
- package/react/components/common/DropZone.js.map +1 -1
- package/react/components/common/DropdownButton.d.ts +4 -0
- package/react/components/common/DropdownButton.js +4 -0
- package/react/components/common/DropdownButton.js.map +1 -1
- package/react/components/common/ErrorBoundary.d.ts +18 -0
- package/react/components/common/ErrorBoundary.js +21 -0
- package/react/components/common/ErrorBoundary.js.map +1 -1
- package/react/components/common/FileInput.d.ts +8 -1
- package/react/components/common/FileInput.js +19 -4
- package/react/components/common/FileInput.js.map +1 -1
- package/react/components/common/FinsembleIcon.d.ts +10 -0
- package/react/components/common/FinsembleIcon.js +51 -2
- package/react/components/common/FinsembleIcon.js.map +1 -1
- package/react/components/common/FinsembleSelect.js +5 -1
- package/react/components/common/FinsembleSelect.js.map +1 -1
- package/react/components/common/FinsembleToggleButtonBar.js +1 -1
- package/react/components/common/FinsembleToggleButtonBar.js.map +1 -1
- package/react/components/common/InputTable.d.ts +7 -0
- package/react/components/common/InputTable.js +7 -0
- package/react/components/common/InputTable.js.map +1 -1
- package/react/components/common/Tab.js +3 -0
- package/react/components/common/Tab.js.map +1 -1
- package/react/components/common/TimeSelect.js +24 -0
- package/react/components/common/TimeSelect.js.map +1 -1
- package/react/components/common/Tooltip.js +2 -0
- package/react/components/common/Tooltip.js.map +1 -1
- package/react/components/common/css/accordion.css +9 -6
- package/react/components/common/css/application-edit-page.css +39 -44
- package/react/components/common/css/button.css +10 -5
- package/react/components/common/css/color-picker.css +3 -3
- package/react/components/common/css/drop-zone.css +2 -6
- package/react/components/common/css/file-input.css +5 -5
- package/react/components/common/css/header.css +3 -2
- package/react/components/common/css/icon.css +1 -1
- package/react/components/common/css/loading-spinner.css +7 -12
- package/react/components/common/css/selector.css +4 -4
- package/react/components/common/css/styles.css +22 -16
- package/react/components/common/css/tab.css +8 -8
- package/react/components/common/css/time-select.css +1 -0
- package/react/components/common/css/toggle.css +4 -4
- package/react/components/common/css/tooltip.css +2 -3
- package/react/components/common/file_helpers.js +2 -0
- package/react/components/common/file_helpers.js.map +1 -1
- package/react/components/common/helpers.js +1 -0
- package/react/components/common/helpers.js.map +1 -1
- package/react/components/common/stories/ColorPicker.stories.js +3 -0
- package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
- package/react/components/common/stories/FileInput.stories.d.ts +3 -1
- package/react/components/common/stories/FileInput.stories.js +12 -0
- package/react/components/common/stories/FileInput.stories.js.map +1 -1
- package/react/components/common/tests/Accordion.spec.js +6 -0
- package/react/components/common/tests/Accordion.spec.js.map +1 -1
- package/react/components/common/tests/Checkbox.spec.js +1 -0
- package/react/components/common/tests/Checkbox.spec.js.map +1 -1
- package/react/components/common/tests/ColorPicker.spec.js +6 -0
- package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
- package/react/components/common/tests/DropZone.spec.js +1 -0
- package/react/components/common/tests/DropZone.spec.js.map +1 -1
- package/react/components/common/tests/FileInput.spec.js +22 -0
- package/react/components/common/tests/FileInput.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleSelect.spec.js +1 -0
- package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggle.spec.js +1 -0
- package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +1 -0
- package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -1
- package/react/components/common/tests/TimeSelect.spec.js +4 -0
- package/react/components/common/tests/TimeSelect.spec.js.map +1 -1
- package/react/components/common/tests/Tooltip.spec.js +16 -0
- package/react/components/common/tests/Tooltip.spec.js.map +1 -1
- package/react/components/favorites/FavoriteMaker.d.ts +8 -0
- package/react/components/favorites/FavoriteMaker.js +9 -0
- package/react/components/favorites/FavoriteMaker.js.map +1 -1
- package/react/components/favorites/FavoritesShell.d.ts +4 -0
- package/react/components/favorites/FavoritesShell.js +13 -1
- package/react/components/favorites/FavoritesShell.js.map +1 -1
- package/react/components/favorites/FavoritesShell.spec.js +3 -0
- package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverContainer.js +8 -0
- package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.css +16 -3
- package/react/components/fdc3Resolver/ResolverDialog.js +7 -2
- package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.spec.js +3 -2
- package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.stories.js +2 -0
- package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
- package/react/components/icon/Icon.d.ts +13 -0
- package/react/components/icon/Icon.js +34 -0
- package/react/components/icon/Icon.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
- package/react/components/legacyControls/FinsembleDialog.js +15 -0
- package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogButton.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDialogButton.js +6 -1
- package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +7 -0
- package/react/components/legacyControls/FinsembleDialogQuestion.js +7 -0
- package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDialogTextInput.js +14 -0
- package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
- package/react/components/legacyControls/FinsembleDnDContext.d.ts +19 -0
- package/react/components/legacyControls/FinsembleDnDContext.js +126 -1
- package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
- package/react/components/legacyControls/FinsembleDraggable.d.ts +3 -0
- package/react/components/legacyControls/FinsembleDraggable.js +3 -0
- package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
- package/react/components/legacyControls/FinsembleHoverDetector.d.ts +15 -0
- package/react/components/legacyControls/FinsembleHoverDetector.js +26 -1
- package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
- package/react/components/legacyControls/FinsembleMenuSection.d.ts +4 -0
- package/react/components/legacyControls/FinsembleMenuSection.js +38 -0
- package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
- package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +1 -0
- package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
- package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +1 -0
- package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
- package/react/components/linker/LinkerMenu.d.ts +3 -0
- package/react/components/linker/LinkerMenu.js +21 -0
- package/react/components/linker/LinkerMenu.js.map +1 -1
- package/react/components/linker/LinkerMenuDeprecated.d.ts +3 -0
- package/react/components/linker/LinkerMenuDeprecated.js +9 -0
- package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
- package/react/components/menu/Menu.d.ts +15 -0
- package/react/components/menu/Menu.js +15 -0
- package/react/components/menu/Menu.js.map +1 -1
- package/react/components/menu/MenuAutoResizer.d.ts +7 -0
- package/react/components/menu/MenuAutoResizer.js +27 -0
- package/react/components/menu/MenuAutoResizer.js.map +1 -1
- package/react/components/menu/MenuContent.d.ts +4 -0
- package/react/components/menu/MenuContent.js +4 -0
- package/react/components/menu/MenuContent.js.map +1 -1
- package/react/components/menu/MenuHotKey.d.ts +14 -0
- package/react/components/menu/MenuHotKey.js +15 -0
- package/react/components/menu/MenuHotKey.js.map +1 -1
- package/react/components/menu/MenuItem.d.ts +8 -0
- package/react/components/menu/MenuItem.js +13 -2
- package/react/components/menu/MenuItem.js.map +1 -1
- package/react/components/menu/MenuPortal.js +112 -2
- package/react/components/menu/MenuPortal.js.map +1 -1
- package/react/components/menu/MenuShell.d.ts +16 -0
- package/react/components/menu/MenuShell.js +26 -0
- package/react/components/menu/MenuShell.js.map +1 -1
- package/react/components/menu/MenuToggle.d.ts +3 -0
- package/react/components/menu/MenuToggle.js +3 -0
- package/react/components/menu/MenuToggle.js.map +1 -1
- package/react/components/menu/keyboardNavigation.d.ts +12 -0
- package/react/components/menu/keyboardNavigation.js +55 -0
- package/react/components/menu/keyboardNavigation.js.map +1 -1
- package/react/components/menu/menuContext.d.ts +6 -0
- package/react/components/menu/menuContext.js +6 -0
- package/react/components/menu/menuContext.js.map +1 -1
- package/react/components/menu/menuHelpers.d.ts +22 -0
- package/react/components/menu/menuHelpers.js +58 -1
- package/react/components/menu/menuHelpers.js.map +1 -1
- package/react/components/notifications/components/drawer/DrawerControls.js +8 -0
- package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
- package/react/components/notifications/components/drawer/DrawerHeader.js +5 -0
- package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +18 -0
- package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +3 -0
- package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
- package/react/components/notifications/components/shared/CheckButton.js +1 -1
- package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
- package/react/components/notifications/components/shared/NotificationCardShell.d.ts +9 -0
- package/react/components/notifications/components/shared/NotificationCardShell.js +13 -6
- package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
- package/react/components/notifications/components/shared/OverflowMenu.d.ts +4 -0
- package/react/components/notifications/components/shared/OverflowMenu.js +16 -2
- package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
- package/react/components/notifications/components/views/CardView.js +3 -0
- package/react/components/notifications/components/views/CardView.js.map +1 -1
- package/react/components/notifications/components/views/ListView.js +8 -0
- package/react/components/notifications/components/views/ListView.js.map +1 -1
- package/react/components/notifications/notificationsContext.d.ts +4 -0
- package/react/components/notifications/notificationsContext.js +4 -0
- package/react/components/notifications/notificationsContext.js.map +1 -1
- package/react/components/notifications/types.d.ts +3 -0
- package/react/components/notifications/utils.d.ts +4 -0
- package/react/components/notifications/utils.js +4 -0
- package/react/components/notifications/utils.js.map +1 -1
- package/react/components/processMonitor/ProcessMonitor.d.ts +3 -0
- package/react/components/processMonitor/ProcessMonitor.js +17 -2
- package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
- package/react/components/processMonitor/components/ChildWindow.d.ts +3 -0
- package/react/components/processMonitor/components/ChildWindow.js +5 -0
- package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
- package/react/components/processMonitor/components/ListHeader.d.ts +5 -0
- package/react/components/processMonitor/components/ListHeader.js +7 -0
- package/react/components/processMonitor/components/ListHeader.js.map +1 -1
- package/react/components/processMonitor/components/ProcessStatistics.js +12 -1
- package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
- package/react/components/processMonitor/constants.js +6 -0
- package/react/components/processMonitor/constants.js.map +1 -1
- package/react/components/processMonitor/helpers.d.ts +13 -0
- package/react/components/processMonitor/helpers.js +23 -3
- package/react/components/processMonitor/helpers.js.map +1 -1
- package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +39 -0
- package/react/components/processMonitor/stores/ProcessMonitorStore.js +50 -0
- package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
- package/react/components/quickComponentForm/QuickComponentForm.d.ts +3 -0
- package/react/components/quickComponentForm/QuickComponentForm.js +20 -0
- package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
- package/react/components/quickComponentForm/quickComponent.css +1 -1
- package/react/components/sdd/AddApp.d.ts +4 -2
- package/react/components/sdd/AddApp.js +57 -49
- package/react/components/sdd/AddApp.js.map +1 -1
- package/react/components/sdd/AppEditAccess.js +8 -0
- package/react/components/sdd/AppEditAccess.js.map +1 -1
- package/react/components/sdd/AppEditPage.d.ts +2 -1
- package/react/components/sdd/AppEditPage.js +148 -361
- package/react/components/sdd/AppEditPage.js.map +1 -1
- package/react/components/sdd/Appearance.css +1 -1
- package/react/components/sdd/Appearance.js +3 -0
- package/react/components/sdd/Appearance.js.map +1 -1
- package/react/components/sdd/Application.js +39 -7
- package/react/components/sdd/Application.js.map +1 -1
- package/react/components/sdd/Applications.js +89 -13
- package/react/components/sdd/Applications.js.map +1 -1
- package/react/components/sdd/AssetsPage.css +3 -3
- package/react/components/sdd/EditPreload.js +10 -0
- package/react/components/sdd/EditPreload.js.map +1 -1
- package/react/components/sdd/ExportCloud.js +4 -0
- package/react/components/sdd/ExportCloud.js.map +1 -1
- package/react/components/sdd/Publish.js +2 -0
- package/react/components/sdd/Publish.js.map +1 -1
- package/react/components/sdd/PublishProgress.js +11 -1
- package/react/components/sdd/PublishProgress.js.map +1 -1
- package/react/components/sdd/SmartDesktopDesigner.js +17 -0
- package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
- package/react/components/sdd/ThemePage.css +6 -23
- package/react/components/sdd/ThemePage.js +1 -1
- package/react/components/sdd/ThemePage.js.map +1 -1
- package/react/components/sdd/Themes.js +2 -0
- package/react/components/sdd/Themes.js.map +1 -1
- package/react/components/sdd/Toolbar.js +7 -0
- package/react/components/sdd/Toolbar.js.map +1 -1
- package/react/components/sdd/appEditPage/Behavior.d.ts +34 -0
- package/react/components/sdd/appEditPage/Behavior.js +134 -0
- package/react/components/sdd/appEditPage/Behavior.js.map +1 -0
- package/react/components/sdd/appEditPage/Component.d.ts +22 -0
- package/react/components/sdd/appEditPage/Component.js +76 -0
- package/react/components/sdd/appEditPage/Component.js.map +1 -0
- package/react/components/sdd/appEditPage/DebugToolkit.d.ts +9 -0
- package/react/components/sdd/appEditPage/DebugToolkit.js +20 -0
- package/react/components/sdd/appEditPage/DebugToolkit.js.map +1 -0
- package/react/components/sdd/appEditPage/Interop.d.ts +10 -0
- package/react/components/sdd/appEditPage/Interop.js +40 -0
- package/react/components/sdd/appEditPage/Interop.js.map +1 -0
- package/react/components/sdd/appEditPage/Position.d.ts +18 -0
- package/react/components/sdd/appEditPage/Position.js +72 -0
- package/react/components/sdd/appEditPage/Position.js.map +1 -0
- package/react/components/sdd/appEditPage/Preloads.d.ts +9 -0
- package/react/components/sdd/appEditPage/Preloads.js +16 -0
- package/react/components/sdd/appEditPage/Preloads.js.map +1 -0
- package/react/components/sdd/appEditPage/SelectConnect.d.ts +15 -0
- package/react/components/sdd/appEditPage/SelectConnect.js +28 -0
- package/react/components/sdd/appEditPage/SelectConnect.js.map +1 -0
- package/react/components/sdd/appEditPage/Workspace.d.ts +12 -0
- package/react/components/sdd/appEditPage/Workspace.js +30 -0
- package/react/components/sdd/appEditPage/Workspace.js.map +1 -0
- package/react/components/sdd/common/getCSSVars.js +7 -2
- package/react/components/sdd/common/getCSSVars.js.map +1 -1
- package/react/components/sdd/common/setPreloadDefaults.js +4 -0
- package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
- package/react/components/sdd/css/addApp.css +18 -5
- package/react/components/sdd/css/appearance.css +6 -0
- package/react/components/sdd/css/applications.css +27 -14
- package/react/components/sdd/css/authentication.css +7 -6
- package/react/components/sdd/css/buttons.css +1 -1
- package/react/components/sdd/css/export.css +5 -3
- package/react/components/sdd/css/getting-started.css +2 -2
- package/react/components/sdd/css/nav.css +8 -11
- package/react/components/sdd/css/project-header.css +5 -7
- package/react/components/sdd/css/styles.css +29 -23
- package/react/components/sdd/css/views.css +4 -3
- package/react/components/sdd/fixtures/apps.js +12 -0
- package/react/components/sdd/fixtures/apps.js.map +1 -1
- package/react/components/sdd/fixtures/configTemplate.js +1 -0
- package/react/components/sdd/fixtures/configTemplate.js.map +1 -1
- package/react/components/sdd/fixtures/publishProgress.js +40 -0
- package/react/components/sdd/fixtures/publishProgress.js.map +1 -1
- package/react/components/sdd/sdd_helpers.d.ts +6 -0
- package/react/components/sdd/sdd_helpers.js +6 -0
- package/react/components/sdd/sdd_helpers.js.map +1 -1
- package/react/components/sdd/smartDesktopClient.d.ts +303 -0
- package/react/components/sdd/smartDesktopClient.js +334 -1
- package/react/components/sdd/smartDesktopClient.js.map +1 -1
- package/react/components/sdd/smartDesktopClient.spec.js +5 -2
- package/react/components/sdd/smartDesktopClient.spec.js.map +1 -1
- package/react/components/sdd/stories/AddApp.stories.d.ts +2 -1
- package/react/components/sdd/stories/AddApp.stories.js +8 -0
- package/react/components/sdd/stories/AddApp.stories.js.map +1 -1
- package/react/components/sdd/stories/AppEditPage.stories.d.ts +3 -1
- package/react/components/sdd/stories/AppEditPage.stories.js +3 -0
- package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
- package/react/components/sdd/stories/Appearance.stories.js +1 -0
- package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
- package/react/components/sdd/tests/AddApp.spec.js +40 -3
- package/react/components/sdd/tests/AddApp.spec.js.map +1 -1
- package/react/components/sdd/tests/AppEditPage.spec.js +16 -0
- package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
- package/react/components/sdd/tests/Application.spec.js +33 -438
- package/react/components/sdd/tests/Application.spec.js.map +1 -1
- package/react/components/sdd/tests/Applications.spec.d.ts +1 -1
- package/react/components/sdd/tests/Applications.spec.js +29 -5
- package/react/components/sdd/tests/Applications.spec.js.map +1 -1
- package/react/components/sdd/tests/Authentication.spec.js +7 -0
- package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
- package/react/components/sdd/tests/ContentHeader.spec.js +2 -0
- package/react/components/sdd/tests/ContentHeader.spec.js.map +1 -1
- package/react/components/sdd/tests/EditPreload.spec.js +13 -0
- package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
- package/react/components/sdd/tests/Export.spec.js +2 -1
- package/react/components/sdd/tests/Export.spec.js.map +1 -1
- package/react/components/sdd/tests/ItemList.spec.js +4 -0
- package/react/components/sdd/tests/ItemList.spec.js.map +1 -1
- package/react/components/sdd/tests/OptionalSettingsView.spec.js +29 -0
- package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
- package/react/components/sdd/tests/ProjectErrors.spec.js +2 -0
- package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
- package/react/components/sdd/tests/Themes.spec.js +1 -1
- package/react/components/sdd/tests/Themes.spec.js.map +1 -1
- package/react/components/sdd/tests/Toolbar.spec.js +53 -0
- package/react/components/sdd/tests/Toolbar.spec.js.map +1 -1
- package/react/components/sdd/tests/a11y_helper.js +8 -0
- package/react/components/sdd/tests/a11y_helper.js.map +1 -1
- package/react/components/search/Highlight.d.ts +6 -0
- package/react/components/search/Highlight.js +19 -0
- package/react/components/search/Highlight.js.map +1 -1
- package/react/components/search/SearchBestMatch.d.ts +4 -0
- package/react/components/search/SearchBestMatch.js +11 -0
- package/react/components/search/SearchBestMatch.js.map +1 -1
- package/react/components/search/SearchInput.d.ts +5 -0
- package/react/components/search/SearchInput.js +6 -0
- package/react/components/search/SearchInput.js.map +1 -1
- package/react/components/search/SearchProviderResults.js +2 -0
- package/react/components/search/SearchProviderResults.js.map +1 -1
- package/react/components/search/SearchResult.js +6 -0
- package/react/components/search/SearchResult.js.map +1 -1
- package/react/components/search/SearchResult.spec.js +7 -0
- package/react/components/search/SearchResult.spec.js.map +1 -1
- package/react/components/search/SearchResult.stories.js +4 -0
- package/react/components/search/SearchResult.stories.js.map +1 -1
- package/react/components/search/SearchResults.js +5 -1
- package/react/components/search/SearchResults.js.map +1 -1
- package/react/components/search/SearchResults.spec.js +7 -0
- package/react/components/search/SearchResults.spec.js.map +1 -1
- package/react/components/shared/Animate.d.ts +5 -0
- package/react/components/shared/Animate.js +12 -1
- package/react/components/shared/Animate.js.map +1 -1
- package/react/components/shared/DefaultDropdownButton.js +9 -0
- package/react/components/shared/DefaultDropdownButton.js.map +1 -1
- package/react/components/shared/Tag.d.ts +0 -4
- package/react/components/shared/Tag.js +4 -0
- package/react/components/shared/Tag.js.map +1 -1
- package/react/components/shared/TagsMenu.d.ts +6 -0
- package/react/components/shared/TagsMenu.js +7 -0
- package/react/components/shared/TagsMenu.js.map +1 -1
- package/react/components/shared/addProtocolToValidURL.d.ts +6 -0
- package/react/components/shared/addProtocolToValidURL.js +6 -0
- package/react/components/shared/addProtocolToValidURL.js.map +1 -1
- package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
- package/react/components/shared/openQuitConfirmationDialog.js +4 -4
- package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
- package/react/components/shared/tests/addProtocolToValidURL.spec.js +1 -0
- package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
- package/react/components/shared/validateURL.d.ts +18 -0
- package/react/components/shared/validateURL.js +24 -5
- package/react/components/shared/validateURL.js.map +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.css +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.d.ts +3 -0
- package/react/components/singleInputDialog/SingleInputDialog.js +44 -0
- package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +6 -0
- package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
- package/react/components/system/System.d.ts +22 -0
- package/react/components/system/System.js +23 -1
- package/react/components/system/System.js.map +1 -1
- package/react/components/system/System.stories.js +1 -0
- package/react/components/system/System.stories.js.map +1 -1
- package/react/components/system/SystemTrayComponentShell.d.ts +6 -0
- package/react/components/system/SystemTrayComponentShell.js +9 -0
- package/react/components/system/SystemTrayComponentShell.js.map +1 -1
- package/react/components/toolbar/AutoArrange.d.ts +5 -0
- package/react/components/toolbar/AutoArrange.js +8 -1
- package/react/components/toolbar/AutoArrange.js.map +1 -1
- package/react/components/toolbar/AutoArrange.spec.js +1 -0
- package/react/components/toolbar/AutoArrange.spec.js.map +1 -1
- package/react/components/toolbar/AutoArrange.stories.js +1 -0
- package/react/components/toolbar/AutoArrange.stories.js.map +1 -1
- package/react/components/toolbar/DragHandle.d.ts +4 -0
- package/react/components/toolbar/DragHandle.js +11 -0
- package/react/components/toolbar/DragHandle.js.map +1 -1
- package/react/components/toolbar/DragHandle.spec.js +1 -0
- package/react/components/toolbar/DragHandle.spec.js.map +1 -1
- package/react/components/toolbar/DragHandle.stories.js +1 -0
- package/react/components/toolbar/DragHandle.stories.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.d.ts +4 -0
- package/react/components/toolbar/MinimizeAll.js +7 -1
- package/react/components/toolbar/MinimizeAll.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.spec.js +1 -0
- package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
- package/react/components/toolbar/MinimizeAll.stories.js +1 -0
- package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
- package/react/components/toolbar/NotificationControl.d.ts +5 -0
- package/react/components/toolbar/NotificationControl.js +8 -1
- package/react/components/toolbar/NotificationControl.js.map +1 -1
- package/react/components/toolbar/RevealAll.d.ts +4 -0
- package/react/components/toolbar/RevealAll.js +7 -1
- package/react/components/toolbar/RevealAll.js.map +1 -1
- package/react/components/toolbar/RevealAll.spec.js +1 -0
- package/react/components/toolbar/RevealAll.spec.js.map +1 -1
- package/react/components/toolbar/RevealAll.stories.js +1 -0
- package/react/components/toolbar/RevealAll.stories.js.map +1 -1
- package/react/components/toolbar/SddButton.d.ts +4 -0
- package/react/components/toolbar/SddButton.js +4 -0
- package/react/components/toolbar/SddButton.js.map +1 -1
- package/react/components/toolbar/ToolbarIcon.d.ts +4 -0
- package/react/components/toolbar/ToolbarIcon.js +4 -0
- package/react/components/toolbar/ToolbarIcon.js.map +1 -1
- package/react/components/toolbar/ToolbarSection.d.ts +7 -0
- package/react/components/toolbar/ToolbarSection.js +19 -1
- package/react/components/toolbar/ToolbarSection.js.map +1 -1
- package/react/components/toolbar/ToolbarShell.d.ts +5 -0
- package/react/components/toolbar/ToolbarShell.js +7 -0
- package/react/components/toolbar/ToolbarShell.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +16 -0
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +20 -0
- package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +52 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +58 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +27 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +49 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +13 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +14 -0
- package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/Content.js +19 -0
- package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +16 -0
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +39 -0
- package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +4 -0
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +9 -0
- package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +3 -0
- package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +6 -0
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +7 -0
- package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -0
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js +5 -0
- package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +37 -0
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js +40 -0
- package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts +3 -0
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +82 -0
- package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +10 -0
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +11 -0
- package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
- package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +18 -0
- package/react/components/toolbar/appLauncher/AppLauncherMenu.js +20 -0
- package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +9 -0
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +12 -0
- package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
- package/react/components/toolbar/appLauncher/appLauncher.css +1 -1
- package/react/components/toolbar/appLauncher/components/componentList.d.ts +3 -0
- package/react/components/toolbar/appLauncher/components/componentList.js +17 -3
- package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +6 -0
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +26 -0
- package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
- package/react/components/toolbar/dashbar/Dashbar.js +70 -3
- package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
- package/react/components/toolbar/dashbar/DashbarItem.js +5 -0
- package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +7 -0
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +7 -0
- package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +16 -0
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +20 -0
- package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +26 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +29 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +5 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +6 -0
- package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +76 -0
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +140 -1
- package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
- package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +8 -18
- package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +4 -0
- package/react/components/userPreferences/NotificationsPreferencesContext.js +4 -0
- package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
- package/react/components/userPreferences/UserPreferenceTypes.d.ts +3 -0
- package/react/components/userPreferences/UserPreferences.d.ts +8 -0
- package/react/components/userPreferences/UserPreferences.js +8 -0
- package/react/components/userPreferences/UserPreferences.js.map +1 -1
- package/react/components/userPreferences/UserPreferencesBase.js +4 -0
- package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
- package/react/components/userPreferences/components/ContentSection.d.ts +5 -0
- package/react/components/userPreferences/components/LeftNav.d.ts +4 -0
- package/react/components/userPreferences/components/content/DashbarEditor.js +3 -0
- package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
- package/react/components/userPreferences/components/content/Notifications.js +3 -0
- package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
- package/react/components/userPreferences/components/content/Workspaces.d.ts +12 -0
- package/react/components/userPreferences/components/content/Workspaces.js +33 -1
- package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +3 -0
- package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
- package/react/components/userPreferences/components/general/ScheduledClose.js +11 -0
- package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +3 -0
- package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
- package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +17 -0
- package/react/components/userPreferences/stores/UserPreferencesStore.js +27 -0
- package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +1 -0
- package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
- package/react/components/userPreferences/tests/Workspace.spec.js +20 -0
- package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -1
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +124 -0
- package/react/components/windowTitleBar/WindowTitleBarShell.js +284 -35
- package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
- package/react/components/windowTitleBar/components/center/Tab.d.ts +3 -0
- package/react/components/windowTitleBar/components/center/Tab.js +3 -0
- package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
- package/react/components/windowTitleBar/components/center/TabList.d.ts +90 -0
- package/react/components/windowTitleBar/components/center/TabList.js +170 -4
- package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.d.ts +9 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.js +25 -9
- package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +47 -0
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +76 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts +4 -0
- package/react/components/windowTitleBar/components/left/LinkerGroups.js +5 -0
- package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +18 -0
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +49 -0
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
- package/react/components/windowTitleBar/components/left/ShareButton.d.ts +17 -0
- package/react/components/windowTitleBar/components/left/ShareButton.js +39 -0
- package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +4 -0
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/CloseButton.d.ts +27 -0
- package/react/components/windowTitleBar/components/right/CloseButton.js +27 -0
- package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +37 -0
- package/react/components/windowTitleBar/components/right/GroupingButton.js +40 -0
- package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +46 -0
- package/react/components/windowTitleBar/components/right/MaximizeButton.js +54 -0
- package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
- package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +26 -0
- package/react/components/windowTitleBar/components/right/MinimizeButton.js +26 -0
- package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
- package/react/components/windowTitleBar/components/windowTitle.d.ts +40 -0
- package/react/components/windowTitleBar/components/windowTitle.js +172 -10
- package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +5 -0
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js +72 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
- package/react/components/yesNoDialog/YesNoDialog.css +1 -1
- package/react/components/yesNoDialog/YesNoDialog.d.ts +3 -0
- package/react/components/yesNoDialog/YesNoDialog.js +63 -0
- package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
- package/react/components/yesNoDialog/YesNoDialog.spec.js +4 -0
- package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
- package/react/components/yesNoDialog/timer.js +2 -0
- package/react/components/yesNoDialog/timer.js.map +1 -1
- package/react/enzymeSetup.js +5 -0
- package/react/enzymeSetup.js.map +1 -1
- package/react/hooks/useDashbar.js +10 -0
- package/react/hooks/useDashbar.js.map +1 -1
- package/react/hooks/useDeepEffect.d.ts +4 -0
- package/react/hooks/useDeepEffect.js +21 -0
- package/react/hooks/useDeepEffect.js.map +1 -1
- package/react/hooks/useFavorites.d.ts +15 -0
- package/react/hooks/useFavorites.js +3 -0
- package/react/hooks/useFavorites.js.map +1 -1
- package/react/hooks/useFavoritesShell.d.ts +4 -0
- package/react/hooks/useFavoritesShell.js +23 -0
- package/react/hooks/useFavoritesShell.js.map +1 -1
- package/react/hooks/useHotkey.d.ts +6 -0
- package/react/hooks/useHotkey.js +9 -0
- package/react/hooks/useHotkey.js.map +1 -1
- package/react/hooks/useLinker.js +14 -0
- package/react/hooks/useLinker.js.map +1 -1
- package/react/hooks/useMenu.d.ts +29 -0
- package/react/hooks/useMenu.js +12 -1
- package/react/hooks/useMenu.js.map +1 -1
- package/react/hooks/useNotifications.d.ts +44 -0
- package/react/hooks/useNotifications.js +90 -0
- package/react/hooks/useNotifications.js.map +1 -1
- package/react/hooks/useOutsideClickDetector.d.ts +3 -0
- package/react/hooks/useOutsideClickDetector.js +3 -0
- package/react/hooks/useOutsideClickDetector.js.map +1 -1
- package/react/hooks/usePubSub.d.ts +17 -0
- package/react/hooks/usePubSub.js +18 -0
- package/react/hooks/usePubSub.js.map +1 -1
- package/react/hooks/useSearch.d.ts +5 -0
- package/react/hooks/useSearch.js +30 -0
- package/react/hooks/useSearch.js.map +1 -1
- package/react/hooks/useToolbar.js +52 -0
- package/react/hooks/useToolbar.js.map +1 -1
- package/react/reducers/favoriteReducer.d.ts +3 -0
- package/react/reducers/linkerReducer.d.ts +3 -0
- package/react/reducers/linkerReducer.js +4 -0
- package/react/reducers/linkerReducer.js.map +1 -1
- package/react/reducers/menuReducer.d.ts +28 -0
- package/react/reducers/menuReducer.js +34 -0
- package/react/reducers/menuReducer.js.map +1 -1
- package/react/reducers/rootReducer.js +3 -0
- package/react/reducers/rootReducer.js.map +1 -1
- package/react/reducers/searchReducer.d.ts +7 -0
- package/react/reducers/searchReducer.js +6 -0
- package/react/reducers/searchReducer.js.map +1 -1
- package/react/reducers/workspaceReducer.js +1 -0
- package/react/reducers/workspaceReducer.js.map +1 -1
- package/react/store.d.ts +4 -0
- package/react/store.js +11 -0
- package/react/store.js.map +1 -1
- package/react/tsconfig.tsbuildinfo +1 -1
- package/react/types/fdc3.d.ts +2 -0
- package/react/types/linkerTypes.d.ts +13 -0
- package/react/types/linkerTypes.js +1 -0
- package/react/types/linkerTypes.js.map +1 -1
- package/react/types/smartDesktopDesignerTypes.d.ts +5 -0
- package/react/types/smartDesktopDesignerTypes.js.map +1 -1
- package/react/types/workspaceTypes.d.ts +8 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
// components
|
|
2
3
|
import SearchBar from "./components/SearchBar";
|
|
3
4
|
import Home from "./components/Home";
|
|
4
5
|
import AppResults from "./components/AppResults";
|
|
5
6
|
import AppShowcase from "./components/Showcase/AppShowcase";
|
|
7
|
+
// data
|
|
6
8
|
import { getStore } from "./stores/appStore";
|
|
7
9
|
import storeActions from "./stores/storeActions";
|
|
8
10
|
import "../../assets/css/appCatalog.css";
|
|
@@ -15,7 +17,7 @@ export class AppCatalogComponent extends React.Component {
|
|
|
15
17
|
serverError: false,
|
|
16
18
|
installed: [],
|
|
17
19
|
tags: [],
|
|
18
|
-
installationActionTaken: null,
|
|
20
|
+
installationActionTaken: null, // type: string | null
|
|
19
21
|
};
|
|
20
22
|
this.bindCorrectContext();
|
|
21
23
|
}
|
|
@@ -36,7 +38,10 @@ export class AppCatalogComponent extends React.Component {
|
|
|
36
38
|
this.isActiveApp = this.isActiveApp.bind(this);
|
|
37
39
|
this.getActiveTags = this.getActiveTags.bind(this);
|
|
38
40
|
}
|
|
41
|
+
// eslint-disable-next-line react/no-deprecated
|
|
39
42
|
UNSAFE_componentWillMount() {
|
|
43
|
+
// For more information on async react rendering, see here
|
|
44
|
+
// https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html
|
|
40
45
|
this.setState({
|
|
41
46
|
isLoading: true,
|
|
42
47
|
}, () => {
|
|
@@ -76,6 +81,7 @@ export class AppCatalogComponent extends React.Component {
|
|
|
76
81
|
getStore().addListener({ field: "filteredApps" }, this.update);
|
|
77
82
|
getStore().addListener({ field: "activeTags" }, this.update);
|
|
78
83
|
getStore().addListener({ field: "activeApp" }, this.openAppShowcase);
|
|
84
|
+
// Get notified when user wants to view an app
|
|
79
85
|
FSBL.Clients.RouterClient.addListener("viewApp", this.viewApp);
|
|
80
86
|
let installed = storeActions.getInstalledApps();
|
|
81
87
|
this.setState({
|
|
@@ -87,7 +93,9 @@ export class AppCatalogComponent extends React.Component {
|
|
|
87
93
|
getStore().removeListener({ field: "filteredApps" }, this.update);
|
|
88
94
|
getStore().removeListener({ field: "activeTags" }, this.update);
|
|
89
95
|
getStore().removeListener({ field: "activeApp" }, this.openAppShowcase);
|
|
96
|
+
// Get notified when user wants to view an app
|
|
90
97
|
FSBL.Clients.RouterClient.removeListener("viewApp", this.viewApp);
|
|
98
|
+
// Make sure async requests have finished.
|
|
91
99
|
if (this._asyncAppRequest && this._asyncAppRequest.cancel) {
|
|
92
100
|
this._asyncAppRequest.cancel();
|
|
93
101
|
}
|
|
@@ -101,9 +109,11 @@ export class AppCatalogComponent extends React.Component {
|
|
|
101
109
|
addedAppsChanged() {
|
|
102
110
|
let action;
|
|
103
111
|
if (this.state.installed.length > Object.keys(storeActions.getInstalledApps()).length) {
|
|
112
|
+
// If the components installed apps is greater than that of the store, that means an app was removed
|
|
104
113
|
action = "remove";
|
|
105
114
|
}
|
|
106
115
|
else if (this.state.installed.length < Object.keys(storeActions.getInstalledApps()).length) {
|
|
116
|
+
// If the component's installed apps is less than that of the store, that means an app was added
|
|
107
117
|
action = "add";
|
|
108
118
|
}
|
|
109
119
|
if (action) {
|
|
@@ -116,9 +126,17 @@ export class AppCatalogComponent extends React.Component {
|
|
|
116
126
|
});
|
|
117
127
|
}
|
|
118
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Force an update. Used to update from store listeners.
|
|
131
|
+
*
|
|
132
|
+
* @memberof AppMarket
|
|
133
|
+
*/
|
|
119
134
|
update() {
|
|
120
135
|
this.forceUpdate();
|
|
121
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Determines the apps page based on the state of the activeTags, search text, etc
|
|
139
|
+
*/
|
|
122
140
|
determineActivePage() {
|
|
123
141
|
const activeTags = this.getActiveTags();
|
|
124
142
|
const filteredApps = this.getFilteredApps();
|
|
@@ -136,30 +154,72 @@ export class AppCatalogComponent extends React.Component {
|
|
|
136
154
|
}
|
|
137
155
|
return page;
|
|
138
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Returns the activeApp from the Store
|
|
159
|
+
*
|
|
160
|
+
* @returns {string} activeApp
|
|
161
|
+
* @memberof AppMarket
|
|
162
|
+
*/
|
|
139
163
|
getActiveApp() {
|
|
140
164
|
return storeActions.getActiveApp();
|
|
141
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Checks if we have an activeApp defined
|
|
168
|
+
*
|
|
169
|
+
* @returns {boolean}
|
|
170
|
+
* @memberof AppMarket
|
|
171
|
+
*/
|
|
142
172
|
isActiveApp() {
|
|
143
173
|
return storeActions.getActiveApp() !== null;
|
|
144
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Returns the active tags from the store
|
|
177
|
+
*
|
|
178
|
+
* @returns {array} activeTags
|
|
179
|
+
* @memberof AppMarket
|
|
180
|
+
*/
|
|
145
181
|
getActiveTags() {
|
|
146
182
|
return storeActions.getActiveTags();
|
|
147
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Returns the filtered list of apps from search
|
|
186
|
+
*
|
|
187
|
+
* @returns {object} filteredApps
|
|
188
|
+
* @memberof AppMarket
|
|
189
|
+
*/
|
|
148
190
|
getFilteredApps() {
|
|
149
191
|
return storeActions.getFilteredApps();
|
|
150
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Calls the store to add a tag to the activeTag list. Also updates the app view to switch to the AppResults page (since adding a tag implies filtering has begun)
|
|
195
|
+
* @param {string} tag The name of the tag to add
|
|
196
|
+
*/
|
|
151
197
|
addTag(tag) {
|
|
152
198
|
storeActions.addTag(tag);
|
|
153
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Calls the store to remove a tag from the activeTag list. Also updates the app view to switch to the homepage if all tags have been removed
|
|
202
|
+
* @param {string} tag The name of the tag to add
|
|
203
|
+
*/
|
|
154
204
|
removeTag(tag) {
|
|
155
205
|
storeActions.removeTag(tag);
|
|
156
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Action to take when the back button is clicked (which just goes home)
|
|
209
|
+
*/
|
|
157
210
|
goHome() {
|
|
158
211
|
storeActions.goHome();
|
|
159
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Performs a search through the catalog
|
|
215
|
+
* @param {string} search The text to search the catalog with
|
|
216
|
+
*/
|
|
160
217
|
changeSearch(search) {
|
|
161
218
|
storeActions.searchApps(search);
|
|
162
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* When the notification for installing/removing an app is shown a timeout is set to call this function to cease showing the notification
|
|
222
|
+
*/
|
|
163
223
|
stopShowingInstalledNotification() {
|
|
164
224
|
this.setState({
|
|
165
225
|
installationActionTaken: null,
|
|
@@ -168,6 +228,9 @@ export class AppCatalogComponent extends React.Component {
|
|
|
168
228
|
navigateToShowcase(id) {
|
|
169
229
|
storeActions.openApp(id);
|
|
170
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Opens the AppShowcase page for the app supplied
|
|
233
|
+
*/
|
|
171
234
|
openAppShowcase() {
|
|
172
235
|
let app = storeActions.getActiveApp();
|
|
173
236
|
if (app !== null) {
|
|
@@ -177,6 +240,11 @@ export class AppCatalogComponent extends React.Component {
|
|
|
177
240
|
}
|
|
178
241
|
this.forceUpdate();
|
|
179
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Compiles a list of apps that are installed from the information received back from appd
|
|
245
|
+
* and the information contained on the system
|
|
246
|
+
* @param {boolean} filtered If true, uses the filtered apps array. Otherwise uses all apps
|
|
247
|
+
*/
|
|
180
248
|
compileAddedInfo(filtered) {
|
|
181
249
|
const { installed } = this.state;
|
|
182
250
|
const forceSearch = storeActions.getForceSearch();
|
|
@@ -196,6 +264,7 @@ export class AppCatalogComponent extends React.Component {
|
|
|
196
264
|
const activeTags = this.getActiveTags();
|
|
197
265
|
const activePage = this.determineActivePage();
|
|
198
266
|
const apps = this.compileAddedInfo(filteredApps.length > 0);
|
|
267
|
+
// Force default case if activepage isn't search and apps.length is 0
|
|
199
268
|
if (apps.length === 0 && activePage !== "appSearch")
|
|
200
269
|
activePage = -1;
|
|
201
270
|
const theApp = this.compileAddedInfo(false).find((app) => this.getActiveApp() === app.appId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppCatalogComponent.js","sourceRoot":"","sources":["../../../src/components/appCatalog/AppCatalogComponent.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n// components\nimport SearchBar from \"./components/SearchBar\";\nimport Home from \"./components/Home\";\nimport AppResults from \"./components/AppResults\";\nimport AppShowcase from \"./components/Showcase/AppShowcase\";\n\n// data\nimport { getStore } from \"./stores/appStore\";\nimport storeActions from \"./stores/storeActions\";\n\nimport \"../../assets/css/appCatalog.css\";\n\nexport class AppCatalogComponent extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tapps: [], // type: AppMetadata (from \"../../../types/fdc3\")\n\t\t\tisLoading: false,\n\t\t\tserverError: false,\n\t\t\tinstalled: [],\n\t\t\ttags: [], // type: string[]\n\t\t\tinstallationActionTaken: null, // type: string | null\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.addedAppsChanged = this.addedAppsChanged.bind(this);\n\t\tthis.update = this.update.bind(this);\n\t\tthis.goHome = this.goHome.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t\tthis.removeTag = this.removeTag.bind(this);\n\t\tthis.changeSearch = this.changeSearch.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.stopShowingInstalledNotification = this.stopShowingInstalledNotification.bind(this);\n\t\tthis.compileAddedInfo = this.compileAddedInfo.bind(this);\n\t\tthis.getPageContents = this.getPageContents.bind(this);\n\t\tthis.determineActivePage = this.determineActivePage.bind(this);\n\t\tthis.navigateToShowcase = this.navigateToShowcase.bind(this);\n\t\tthis.viewApp = this.viewApp.bind(this);\n\t\tthis.isActiveApp = this.isActiveApp.bind(this);\n\t\tthis.getActiveTags = this.getActiveTags.bind(this);\n\t}\n\n\t// eslint-disable-next-line react/no-deprecated\n\tUNSAFE_componentWillMount() {\n\t\t// For more information on async react rendering, see here\n\t\t// https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tisLoading: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis._asyncAppRequest = storeActions\n\t\t\t\t\t.getApps()\n\t\t\t\t\t.then((apps) => {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tapps,\n\t\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\tthis.setState(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error connecting to FDC3 AppD server.\", err);\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}\n\t\t);\n\n\t\tthis._asyncTagsRequest = storeActions\n\t\t\t.getTags()\n\t\t\t.then((tags) => {\n\t\t\t\tthis.setState({\n\t\t\t\t\ttags,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthis.setState(\n\t\t\t\t\t{\n\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t},\n\t\t\t\t\t() => {\n\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error retrieving tags from FDC3 AppD server.\", err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tgetStore().addListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().addListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.addListener(\"viewApp\", this.viewApp);\n\t\tlet installed = storeActions.getInstalledApps();\n\n\t\tthis.setState({\n\t\t\tinstalled: Object.keys(installed),\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tgetStore().removeListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().removeListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.removeListener(\"viewApp\", this.viewApp);\n\n\t\t// Make sure async requests have finished.\n\t\tif (this._asyncAppRequest && this._asyncAppRequest.cancel) {\n\t\t\tthis._asyncAppRequest.cancel();\n\t\t}\n\n\t\tif (this._asyncTagsRequest && this._asyncTagsRequest.cancel) {\n\t\t\tthis._asyncTagsRequest.cancel();\n\t\t}\n\t}\n\n\tviewApp(error, event) {\n\t\t!error && this.navigateToShowcase(event.data.app.appID);\n\t}\n\n\taddedAppsChanged() {\n\t\tlet action;\n\t\tif (this.state.installed.length > Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the components installed apps is greater than that of the store, that means an app was removed\n\t\t\taction = \"remove\";\n\t\t} else if (this.state.installed.length < Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the component's installed apps is less than that of the store, that means an app was added\n\t\t\taction = \"add\";\n\t\t}\n\n\t\tif (action) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tinstallationActionTaken: action,\n\t\t\t\t\tinstalled: Object.keys(storeActions.getInstalledApps()),\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tsetTimeout(this.stopShowingInstalledNotification, 1500);\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Force an update. Used to update from store listeners.\n\t *\n\t * @memberof AppMarket\n\t */\n\tupdate() {\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Determines the apps page based on the state of the activeTags, search text, etc\n\t */\n\tdetermineActivePage() {\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeApp = this.getActiveApp();\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tlet page;\n\n\t\tif (activeApp && !forceSearch) {\n\t\t\tpage = \"showcase\";\n\t\t} else if (filteredApps.length > 0 || forceSearch) {\n\t\t\tpage = \"appSearch\";\n\t\t} else if (filteredApps.length === 0 && activeTags.length === 0) {\n\t\t\tpage = \"home\";\n\t\t}\n\n\t\treturn page;\n\t}\n\n\t/**\n\t * Returns the activeApp from the Store\n\t *\n\t * @returns {string} activeApp\n\t * @memberof AppMarket\n\t */\n\tgetActiveApp() {\n\t\treturn storeActions.getActiveApp();\n\t}\n\n\t/**\n\t * Checks if we have an activeApp defined\n\t *\n\t * @returns {boolean}\n\t * @memberof AppMarket\n\t */\n\tisActiveApp() {\n\t\treturn storeActions.getActiveApp() !== null;\n\t}\n\n\t/**\n\t * Returns the active tags from the store\n\t *\n\t * @returns {array} activeTags\n\t * @memberof AppMarket\n\t */\n\tgetActiveTags() {\n\t\treturn storeActions.getActiveTags();\n\t}\n\n\t/**\n\t * Returns the filtered list of apps from search\n\t *\n\t * @returns {object} filteredApps\n\t * @memberof AppMarket\n\t */\n\tgetFilteredApps() {\n\t\treturn storeActions.getFilteredApps();\n\t}\n\n\t/**\n\t * Calls the store to add a tag to the activeTag list. Also updates the app view to switch to the AppResults page (since adding a tag implies filtering has begun)\n\t * @param {string} tag The name of the tag to add\n\t */\n\taddTag(tag) {\n\t\tstoreActions.addTag(tag);\n\t}\n\n\t/**\n\t * Calls the store to remove a tag from the activeTag list. Also updates the app view to switch to the homepage if all tags have been removed\n\t * @param {string} tag The name of the tag to add\n\t */\n\tremoveTag(tag) {\n\t\tstoreActions.removeTag(tag);\n\t}\n\n\t/**\n\t * Action to take when the back button is clicked (which just goes home)\n\t */\n\tgoHome() {\n\t\tstoreActions.goHome();\n\t}\n\n\t/**\n\t * Performs a search through the catalog\n\t * @param {string} search The text to search the catalog with\n\t */\n\tchangeSearch(search) {\n\t\tstoreActions.searchApps(search);\n\t}\n\n\t/**\n\t * When the notification for installing/removing an app is shown a timeout is set to call this function to cease showing the notification\n\t */\n\tstopShowingInstalledNotification() {\n\t\tthis.setState({\n\t\t\tinstallationActionTaken: null,\n\t\t});\n\t}\n\n\tnavigateToShowcase(id) {\n\t\tstoreActions.openApp(id);\n\t}\n\n\t/**\n\t * Opens the AppShowcase page for the app supplied\n\t */\n\topenAppShowcase() {\n\t\tlet app = storeActions.getActiveApp();\n\n\t\tif (app !== null) {\n\t\t\tstoreActions.setForceSearch(false);\n\t\t\tstoreActions.clearTags();\n\t\t\tstoreActions.clearFilteredApps();\n\t\t}\n\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Compiles a list of apps that are installed from the information received back from appd\n\t * and the information contained on the system\n\t * @param {boolean} filtered If true, uses the filtered apps array. Otherwise uses all apps\n\t */\n\tcompileAddedInfo(filtered) {\n\t\tconst { installed } = this.state;\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tconst apps = filtered || forceSearch ? storeActions.getFilteredApps() : this.state.apps;\n\n\t\treturn apps.map((app) => {\n\t\t\tif (installed.includes(app.appId)) {\n\t\t\t\tapp.installed = true;\n\t\t\t} else {\n\t\t\t\tapp.installed = false;\n\t\t\t}\n\n\t\t\treturn app;\n\t\t});\n\t}\n\n\tgetPageContents() {\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst activePage = this.determineActivePage();\n\t\tconst apps = this.compileAddedInfo(filteredApps.length > 0);\n\t\t// Force default case if activepage isn't search and apps.length is 0\n\t\tif (apps.length === 0 && activePage !== \"appSearch\") activePage = -1;\n\t\tconst theApp = this.compileAddedInfo(false).find((app) => this.getActiveApp() === app.appId);\n\t\tswitch (activePage) {\n\t\t\tcase \"home\":\n\t\t\t\treturn (\n\t\t\t\t\t<Home\n\t\t\t\t\t\ttags={this.state.tags}\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\tseeMore={this.addTag}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"appSearch\":\n\t\t\t\treturn (\n\t\t\t\t\t<AppResults\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\ttags={activeTags}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"showcase\":\n\t\t\t\treturn <AppShowcase app={theApp} addApp={this.addApp} removeApp={this.removeApp} addTag={this.addTag} />;\n\t\t\tdefault:\n\t\t\t\treturn <div></div>;\n\t\t}\n\t}\n\n\trender() {\n\t\tlet { tags } = this.state;\n\t\tlet page = this.determineActivePage();\n\t\tlet pageContents = this.getPageContents();\n\n\t\treturn (\n\t\t\t<div className=\"app-catalog\">\n\t\t\t\t{this.state.serverError && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Catalog contents are currently unavailable.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please check your connection or consult your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length === 0 && !this.state.isLoading && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>There are no apps available in this catalog.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please contact your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length > 0 && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\thidden={page === \"showcase\"}\n\t\t\t\t\t\t\tbackButton={page !== \"home\"}\n\t\t\t\t\t\t\ttags={tags}\n\t\t\t\t\t\t\tactiveTags={this.getActiveTags}\n\t\t\t\t\t\t\ttagSelected={this.addTag}\n\t\t\t\t\t\t\tremoveTag={this.removeTag}\n\t\t\t\t\t\t\tgoHome={this.goHome}\n\t\t\t\t\t\t\tinstallationActionTaken={this.state.installationActionTaken}\n\t\t\t\t\t\t\tsearch={this.changeSearch}\n\t\t\t\t\t\t\tisViewingApp={this.isActiveApp}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"market_content\">{pageContents}</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AppCatalogComponent.js","sourceRoot":"","sources":["../../../src/components/appCatalog/AppCatalogComponent.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n// components\nimport SearchBar from \"./components/SearchBar\";\nimport Home from \"./components/Home\";\nimport AppResults from \"./components/AppResults\";\nimport AppShowcase from \"./components/Showcase/AppShowcase\";\n\n// data\nimport { getStore } from \"./stores/appStore\";\nimport storeActions from \"./stores/storeActions\";\n\nimport \"../../assets/css/appCatalog.css\";\n\nexport class AppCatalogComponent extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tapps: [], // type: AppMetadata (from \"../../../types/fdc3\")\n\t\t\tisLoading: false,\n\t\t\tserverError: false,\n\t\t\tinstalled: [],\n\t\t\ttags: [], // type: string[]\n\t\t\tinstallationActionTaken: null, // type: string | null\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.addedAppsChanged = this.addedAppsChanged.bind(this);\n\t\tthis.update = this.update.bind(this);\n\t\tthis.goHome = this.goHome.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t\tthis.removeTag = this.removeTag.bind(this);\n\t\tthis.changeSearch = this.changeSearch.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.stopShowingInstalledNotification = this.stopShowingInstalledNotification.bind(this);\n\t\tthis.compileAddedInfo = this.compileAddedInfo.bind(this);\n\t\tthis.getPageContents = this.getPageContents.bind(this);\n\t\tthis.determineActivePage = this.determineActivePage.bind(this);\n\t\tthis.navigateToShowcase = this.navigateToShowcase.bind(this);\n\t\tthis.viewApp = this.viewApp.bind(this);\n\t\tthis.isActiveApp = this.isActiveApp.bind(this);\n\t\tthis.getActiveTags = this.getActiveTags.bind(this);\n\t}\n\n\t// eslint-disable-next-line react/no-deprecated\n\tUNSAFE_componentWillMount() {\n\t\t// For more information on async react rendering, see here\n\t\t// https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tisLoading: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis._asyncAppRequest = storeActions\n\t\t\t\t\t.getApps()\n\t\t\t\t\t.then((apps) => {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tapps,\n\t\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\tthis.setState(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error connecting to FDC3 AppD server.\", err);\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}\n\t\t);\n\n\t\tthis._asyncTagsRequest = storeActions\n\t\t\t.getTags()\n\t\t\t.then((tags) => {\n\t\t\t\tthis.setState({\n\t\t\t\t\ttags,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthis.setState(\n\t\t\t\t\t{\n\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t},\n\t\t\t\t\t() => {\n\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error retrieving tags from FDC3 AppD server.\", err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tgetStore().addListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().addListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.addListener(\"viewApp\", this.viewApp);\n\t\tlet installed = storeActions.getInstalledApps();\n\n\t\tthis.setState({\n\t\t\tinstalled: Object.keys(installed),\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tgetStore().removeListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().removeListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.removeListener(\"viewApp\", this.viewApp);\n\n\t\t// Make sure async requests have finished.\n\t\tif (this._asyncAppRequest && this._asyncAppRequest.cancel) {\n\t\t\tthis._asyncAppRequest.cancel();\n\t\t}\n\n\t\tif (this._asyncTagsRequest && this._asyncTagsRequest.cancel) {\n\t\t\tthis._asyncTagsRequest.cancel();\n\t\t}\n\t}\n\n\tviewApp(error, event) {\n\t\t!error && this.navigateToShowcase(event.data.app.appID);\n\t}\n\n\taddedAppsChanged() {\n\t\tlet action;\n\t\tif (this.state.installed.length > Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the components installed apps is greater than that of the store, that means an app was removed\n\t\t\taction = \"remove\";\n\t\t} else if (this.state.installed.length < Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the component's installed apps is less than that of the store, that means an app was added\n\t\t\taction = \"add\";\n\t\t}\n\n\t\tif (action) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tinstallationActionTaken: action,\n\t\t\t\t\tinstalled: Object.keys(storeActions.getInstalledApps()),\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tsetTimeout(this.stopShowingInstalledNotification, 1500);\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Force an update. Used to update from store listeners.\n\t *\n\t * @memberof AppMarket\n\t */\n\tupdate() {\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Determines the apps page based on the state of the activeTags, search text, etc\n\t */\n\tdetermineActivePage() {\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeApp = this.getActiveApp();\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tlet page;\n\n\t\tif (activeApp && !forceSearch) {\n\t\t\tpage = \"showcase\";\n\t\t} else if (filteredApps.length > 0 || forceSearch) {\n\t\t\tpage = \"appSearch\";\n\t\t} else if (filteredApps.length === 0 && activeTags.length === 0) {\n\t\t\tpage = \"home\";\n\t\t}\n\n\t\treturn page;\n\t}\n\n\t/**\n\t * Returns the activeApp from the Store\n\t *\n\t * @returns {string} activeApp\n\t * @memberof AppMarket\n\t */\n\tgetActiveApp() {\n\t\treturn storeActions.getActiveApp();\n\t}\n\n\t/**\n\t * Checks if we have an activeApp defined\n\t *\n\t * @returns {boolean}\n\t * @memberof AppMarket\n\t */\n\tisActiveApp() {\n\t\treturn storeActions.getActiveApp() !== null;\n\t}\n\n\t/**\n\t * Returns the active tags from the store\n\t *\n\t * @returns {array} activeTags\n\t * @memberof AppMarket\n\t */\n\tgetActiveTags() {\n\t\treturn storeActions.getActiveTags();\n\t}\n\n\t/**\n\t * Returns the filtered list of apps from search\n\t *\n\t * @returns {object} filteredApps\n\t * @memberof AppMarket\n\t */\n\tgetFilteredApps() {\n\t\treturn storeActions.getFilteredApps();\n\t}\n\n\t/**\n\t * Calls the store to add a tag to the activeTag list. Also updates the app view to switch to the AppResults page (since adding a tag implies filtering has begun)\n\t * @param {string} tag The name of the tag to add\n\t */\n\taddTag(tag) {\n\t\tstoreActions.addTag(tag);\n\t}\n\n\t/**\n\t * Calls the store to remove a tag from the activeTag list. Also updates the app view to switch to the homepage if all tags have been removed\n\t * @param {string} tag The name of the tag to add\n\t */\n\tremoveTag(tag) {\n\t\tstoreActions.removeTag(tag);\n\t}\n\n\t/**\n\t * Action to take when the back button is clicked (which just goes home)\n\t */\n\tgoHome() {\n\t\tstoreActions.goHome();\n\t}\n\n\t/**\n\t * Performs a search through the catalog\n\t * @param {string} search The text to search the catalog with\n\t */\n\tchangeSearch(search) {\n\t\tstoreActions.searchApps(search);\n\t}\n\n\t/**\n\t * When the notification for installing/removing an app is shown a timeout is set to call this function to cease showing the notification\n\t */\n\tstopShowingInstalledNotification() {\n\t\tthis.setState({\n\t\t\tinstallationActionTaken: null,\n\t\t});\n\t}\n\n\tnavigateToShowcase(id) {\n\t\tstoreActions.openApp(id);\n\t}\n\n\t/**\n\t * Opens the AppShowcase page for the app supplied\n\t */\n\topenAppShowcase() {\n\t\tlet app = storeActions.getActiveApp();\n\n\t\tif (app !== null) {\n\t\t\tstoreActions.setForceSearch(false);\n\t\t\tstoreActions.clearTags();\n\t\t\tstoreActions.clearFilteredApps();\n\t\t}\n\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Compiles a list of apps that are installed from the information received back from appd\n\t * and the information contained on the system\n\t * @param {boolean} filtered If true, uses the filtered apps array. Otherwise uses all apps\n\t */\n\tcompileAddedInfo(filtered) {\n\t\tconst { installed } = this.state;\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tconst apps = filtered || forceSearch ? storeActions.getFilteredApps() : this.state.apps;\n\n\t\treturn apps.map((app) => {\n\t\t\tif (installed.includes(app.appId)) {\n\t\t\t\tapp.installed = true;\n\t\t\t} else {\n\t\t\t\tapp.installed = false;\n\t\t\t}\n\n\t\t\treturn app;\n\t\t});\n\t}\n\n\tgetPageContents() {\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst activePage = this.determineActivePage();\n\t\tconst apps = this.compileAddedInfo(filteredApps.length > 0);\n\t\t// Force default case if activepage isn't search and apps.length is 0\n\t\tif (apps.length === 0 && activePage !== \"appSearch\") activePage = -1;\n\t\tconst theApp = this.compileAddedInfo(false).find((app) => this.getActiveApp() === app.appId);\n\t\tswitch (activePage) {\n\t\t\tcase \"home\":\n\t\t\t\treturn (\n\t\t\t\t\t<Home\n\t\t\t\t\t\ttags={this.state.tags}\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\tseeMore={this.addTag}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"appSearch\":\n\t\t\t\treturn (\n\t\t\t\t\t<AppResults\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\ttags={activeTags}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"showcase\":\n\t\t\t\treturn <AppShowcase app={theApp} addApp={this.addApp} removeApp={this.removeApp} addTag={this.addTag} />;\n\t\t\tdefault:\n\t\t\t\treturn <div></div>;\n\t\t}\n\t}\n\n\trender() {\n\t\tlet { tags } = this.state;\n\t\tlet page = this.determineActivePage();\n\t\tlet pageContents = this.getPageContents();\n\n\t\treturn (\n\t\t\t<div className=\"app-catalog\">\n\t\t\t\t{this.state.serverError && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Catalog contents are currently unavailable.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please check your connection or consult your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length === 0 && !this.state.isLoading && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>There are no apps available in this catalog.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please contact your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length > 0 && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\thidden={page === \"showcase\"}\n\t\t\t\t\t\t\tbackButton={page !== \"home\"}\n\t\t\t\t\t\t\ttags={tags}\n\t\t\t\t\t\t\tactiveTags={this.getActiveTags}\n\t\t\t\t\t\t\ttagSelected={this.addTag}\n\t\t\t\t\t\t\tremoveTag={this.removeTag}\n\t\t\t\t\t\t\tgoHome={this.goHome}\n\t\t\t\t\t\t\tinstallationActionTaken={this.state.installationActionTaken}\n\t\t\t\t\t\t\tsearch={this.changeSearch}\n\t\t\t\t\t\t\tisViewingApp={this.isActiveApp}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"market_content\">{pageContents}</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
|
|
@@ -1,14 +1,49 @@
|
|
|
1
1
|
export default AppCard;
|
|
2
|
+
/**
|
|
3
|
+
* The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)
|
|
4
|
+
* @param {object} props Component props
|
|
5
|
+
* @param {object} props...card The entire object that belongs to a single app. See FDC app directory.
|
|
6
|
+
* @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed
|
|
7
|
+
* @param {boolean} props.installed If true the app is installed on this local fsbl
|
|
8
|
+
*/
|
|
2
9
|
declare class AppCard extends React.Component<any, any, any> {
|
|
3
10
|
constructor(props: any);
|
|
4
11
|
bindCorrectContext(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Toggles the highlight state of the check mark for installing an app
|
|
14
|
+
*/
|
|
5
15
|
toggleHighlight(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link
|
|
18
|
+
*/
|
|
6
19
|
toggleTitleUnderline(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Shows the check mark for adding/removing an app
|
|
22
|
+
*/
|
|
7
23
|
showCheck(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Hides the check mark for adding/removing an app
|
|
26
|
+
*/
|
|
8
27
|
hideCheck(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Calls parent passed function to open the app showcase for the supplied app
|
|
30
|
+
*/
|
|
9
31
|
openAppShowcase(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Prevents bubbling (which would open the app showcase), then calls to add an app
|
|
34
|
+
* @param {object} e React Synthetic event
|
|
35
|
+
*/
|
|
10
36
|
addApp(e: object): void;
|
|
37
|
+
/**
|
|
38
|
+
* Prevents bubbling (which would open the app showcase), then calls to remove an app
|
|
39
|
+
* @param {object} e React Synthetic event
|
|
40
|
+
*/
|
|
11
41
|
removeApp(e: object): void;
|
|
42
|
+
/**
|
|
43
|
+
* Prevents bubbling (which would open the app showcase), then calls to add a filtering tag
|
|
44
|
+
* @param {string} name The tag name to add
|
|
45
|
+
* @param {object} e React Synthetic event
|
|
46
|
+
*/
|
|
12
47
|
addTag(name: string, e: object): void;
|
|
13
48
|
footer: HTMLDivElement | null | undefined;
|
|
14
49
|
tagNamesList: HTMLDivElement | null | undefined;
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2017 by ChartIQ, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
1
5
|
import React, { Component } from "react";
|
|
2
6
|
import { getAppNameIconWhenNoImage, getTruncatedStringWithEllipses } from "./helpers";
|
|
7
|
+
// data
|
|
3
8
|
import storeActions from "../stores/storeActions";
|
|
9
|
+
/**
|
|
10
|
+
* The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)
|
|
11
|
+
* @param {object} props Component props
|
|
12
|
+
* @param {object} props...card The entire object that belongs to a single app. See FDC app directory.
|
|
13
|
+
* @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed
|
|
14
|
+
* @param {boolean} props.installed If true the app is installed on this local fsbl
|
|
15
|
+
*/
|
|
4
16
|
class AppCard extends Component {
|
|
5
17
|
constructor(props) {
|
|
6
18
|
super(props);
|
|
@@ -39,28 +51,42 @@ class AppCard extends Component {
|
|
|
39
51
|
});
|
|
40
52
|
}
|
|
41
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Toggles the highlight state of the check mark for installing an app
|
|
56
|
+
*/
|
|
42
57
|
toggleHighlight() {
|
|
43
58
|
this.setState({
|
|
44
59
|
checkHighlighted: !this.state.checkHighlighted,
|
|
45
60
|
});
|
|
46
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link
|
|
64
|
+
*/
|
|
47
65
|
toggleTitleUnderline() {
|
|
48
66
|
this.setState({
|
|
49
67
|
titleUnderlined: !this.state.titleUnderlined,
|
|
50
68
|
});
|
|
51
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Shows the check mark for adding/removing an app
|
|
72
|
+
*/
|
|
52
73
|
showCheck() {
|
|
53
74
|
this.setState({
|
|
54
75
|
checkShown: true,
|
|
55
76
|
});
|
|
56
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Hides the check mark for adding/removing an app
|
|
80
|
+
*/
|
|
57
81
|
hideCheck() {
|
|
58
82
|
if (this.state.awaitingInstall) {
|
|
83
|
+
// If an add/remove is taking place and this is called, toggle the check after the action completes
|
|
59
84
|
this.setState({
|
|
60
85
|
toggleCheckAfterAction: true,
|
|
61
86
|
});
|
|
62
87
|
}
|
|
63
88
|
else {
|
|
89
|
+
// Don't hide if installed. Stay green and showing
|
|
64
90
|
if (!this.props.installed) {
|
|
65
91
|
this.setState({
|
|
66
92
|
checkShown: false,
|
|
@@ -68,9 +94,16 @@ class AppCard extends Component {
|
|
|
68
94
|
}
|
|
69
95
|
}
|
|
70
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Calls parent passed function to open the app showcase for the supplied app
|
|
99
|
+
*/
|
|
71
100
|
openAppShowcase() {
|
|
72
101
|
this.props.viewAppShowcase(this.state.id);
|
|
73
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Prevents bubbling (which would open the app showcase), then calls to add an app
|
|
105
|
+
* @param {object} e React Synthetic event
|
|
106
|
+
*/
|
|
74
107
|
addApp(e) {
|
|
75
108
|
e.preventDefault();
|
|
76
109
|
e.stopPropagation();
|
|
@@ -84,6 +117,10 @@ class AppCard extends Component {
|
|
|
84
117
|
});
|
|
85
118
|
});
|
|
86
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Prevents bubbling (which would open the app showcase), then calls to remove an app
|
|
122
|
+
* @param {object} e React Synthetic event
|
|
123
|
+
*/
|
|
87
124
|
removeApp(e) {
|
|
88
125
|
e.preventDefault();
|
|
89
126
|
e.stopPropagation();
|
|
@@ -106,6 +143,11 @@ class AppCard extends Component {
|
|
|
106
143
|
});
|
|
107
144
|
});
|
|
108
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Prevents bubbling (which would open the app showcase), then calls to add a filtering tag
|
|
148
|
+
* @param {string} name The tag name to add
|
|
149
|
+
* @param {object} e React Synthetic event
|
|
150
|
+
*/
|
|
109
151
|
addTag(name, e) {
|
|
110
152
|
e.preventDefault();
|
|
111
153
|
e.stopPropagation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppCard.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppCard.jsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React, { Component } from \"react\";\nimport { getAppNameIconWhenNoImage, getTruncatedStringWithEllipses } from \"./helpers\";\n\n// data\nimport storeActions from \"../stores/storeActions\";\n\n/**\n * The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)\n * @param {object} props Component props\n * @param {object} props...card The entire object that belongs to a single app. See FDC app directory.\n * @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed\n * @param {boolean} props.installed If true the app is installed on this local fsbl\n */\nclass AppCard extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tcheckShown: this.props.installed === true,\n\t\t\tcheckHighlighted: false,\n\t\t\tawaitingInstall: false,\n\t\t\ttoggleCheckAfterAction: false,\n\t\t\ttitleUnderlined: false,\n\t\t\tappName: this.props.title || this.props.name,\n\t\t\tid: this.props.appId,\n\t\t\tentitled: this.props.entitled ? this.props.entitled : false,\n\t\t\ttags: this.props.tags || [],\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.toggleHighlight = this.toggleHighlight.bind(this);\n\t\tthis.toggleTitleUnderline = this.toggleTitleUnderline.bind(this);\n\t\tthis.showCheck = this.showCheck.bind(this);\n\t\tthis.hideCheck = this.hideCheck.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.addApp = this.addApp.bind(this);\n\t\tthis.removeApp = this.removeApp.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tif (!this.props.tags || this.props.tags.length === 0) return;\n\t\tconst list = this.tagNamesList;\n\t\tconst { footer } = this;\n\t\tif (list.offsetHeight >= footer.scrollHeight + 5) {\n\t\t\tlet newTags = this.state.tags.slice(0, 2);\n\t\t\tthis.setState({\n\t\t\t\ttags: newTags,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the highlight state of the check mark for installing an app\n\t */\n\ttoggleHighlight() {\n\t\tthis.setState({\n\t\t\tcheckHighlighted: !this.state.checkHighlighted,\n\t\t});\n\t}\n\n\t/**\n\t * Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link\n\t */\n\ttoggleTitleUnderline() {\n\t\tthis.setState({\n\t\t\ttitleUnderlined: !this.state.titleUnderlined,\n\t\t});\n\t}\n\n\t/**\n\t * Shows the check mark for adding/removing an app\n\t */\n\tshowCheck() {\n\t\tthis.setState({\n\t\t\tcheckShown: true,\n\t\t});\n\t}\n\n\t/**\n\t * Hides the check mark for adding/removing an app\n\t */\n\thideCheck() {\n\t\tif (this.state.awaitingInstall) {\n\t\t\t// If an add/remove is taking place and this is called, toggle the check after the action completes\n\t\t\tthis.setState({\n\t\t\t\ttoggleCheckAfterAction: true,\n\t\t\t});\n\t\t} else {\n\t\t\t// Don't hide if installed. Stay green and showing\n\t\t\tif (!this.props.installed) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tcheckShown: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calls parent passed function to open the app showcase for the supplied app\n\t */\n\topenAppShowcase() {\n\t\tthis.props.viewAppShowcase(this.state.id);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to add an app\n\t * @param {object} e React Synthetic event\n\t */\n\taddApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.addApp(this.state.id, (err) => {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tawaitingInstall: false,\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 * Prevents bubbling (which would open the app showcase), then calls to remove an app\n\t * @param {object} e React Synthetic event\n\t */\n\tremoveApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.removeApp(this.state.id, (err) => {\n\t\t\t\t\tif (this.state.toggleCheckAfterAction) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t\t\ttoggleCheckAfterAction: false,\n\t\t\t\t\t\t\tcheckShown: !this.state.checkShown,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\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 * Prevents bubbling (which would open the app showcase), then calls to add a filtering tag\n\t * @param {string} name The tag name to add\n\t * @param {object} e React Synthetic event\n\t */\n\taddTag(name, e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tstoreActions.addTag(name);\n\t}\n\n\trender() {\n\t\tlet imageUrl = this.props.icons !== undefined ? this.props.icons[0].url : null;\n\n\t\tlet { appName, checkShown, checkHighlighted } = this.state;\n\n\t\tlet imageIconClasses = \"ff-check-mark-2\";\n\t\tif (this.props.installed && checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted added`;\n\t\telse if (this.props.installed || checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted`;\n\t\telse imageIconClasses = `${imageIconClasses} faded`;\n\n\t\tlet titleClass = this.state.titleUnderlined ? \"app-title highlighted\" : \"app-title\";\n\n\t\tlet entitled = this.state.entitled ? \" entitled\" : \"\";\n\n\t\tlet imageStyle = `app-image ${entitled}`;\n\n\t\tif (!imageUrl) {\n\t\t\timageUrl = this.props.images !== undefined ? this.props.images[0].url : null;\n\t\t\timageStyle = `${imageStyle} noIcon`;\n\t\t}\n\n\t\tif (!imageUrl) {\n\t\t\timageStyle = `${imageStyle} noImg`;\n\t\t}\n\n\t\tlet cardStyle = this.state.tags.length > 0 ? \"app-card\" : \"app-card no-tags\";\n\n\t\tlet appAction = this.props.installed ? this.removeApp : this.addApp;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cardStyle}\n\t\t\t\tonClick={this.openAppShowcase}\n\t\t\t\tonMouseEnter={this.showCheck}\n\t\t\t\tonMouseLeave={this.hideCheck}\n\t\t\t>\n\t\t\t\t<div className=\"app-image-container\">\n\t\t\t\t\t{imageUrl ? (\n\t\t\t\t\t\t<img className={imageStyle} src={imageUrl} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className={imageStyle}>\n\t\t\t\t\t\t\t<span>{getAppNameIconWhenNoImage(appName)}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={titleClass}\n\t\t\t\t\t\tonMouseEnter={this.toggleTitleUnderline}\n\t\t\t\t\t\tonMouseLeave={this.toggleTitleUnderline}\n\t\t\t\t\t\ttitle={appName}\n\t\t\t\t\t>\n\t\t\t\t\t\t{appName}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"row_description\">\n\t\t\t\t\t<div className=\"status-indicator\">\n\t\t\t\t\t\t{!entitled || !checkShown ? (\n\t\t\t\t\t\t\t<i> </i>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\tclassName={imageIconClasses}\n\t\t\t\t\t\t\t\tonMouseEnter={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonMouseLeave={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonClick={appAction}\n\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"app-description\">{this.props.description ? this.props.description : \"\"}</div>\n\t\t\t\t</div>\n\t\t\t\t{this.state.tags.length > 0 && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"app-tags\"\n\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\tthis.footer = el;\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<i className=\"ff-tag\"></i>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"app-tag-names\"\n\t\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\t\tthis.tagNamesList = el;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this.state.tags.map((tag, i) => {\n\t\t\t\t\t\t\t\tconst tagName = tag;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<span key={i} className=\"tag-name\" onClick={this.addTag.bind(this, tag)} title={tagName}>\n\t\t\t\t\t\t\t\t\t\t{getTruncatedStringWithEllipses(tagName)}\n\t\t\t\t\t\t\t\t\t\t{i !== this.props.tags.length - 1 ? \", \" : null}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default AppCard;\n"]}
|
|
1
|
+
{"version":3,"file":"AppCard.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppCard.jsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React, { Component } from \"react\";\nimport { getAppNameIconWhenNoImage, getTruncatedStringWithEllipses } from \"./helpers\";\n\n// data\nimport storeActions from \"../stores/storeActions\";\n\n/**\n * The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)\n * @param {object} props Component props\n * @param {object} props...card The entire object that belongs to a single app. See FDC app directory.\n * @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed\n * @param {boolean} props.installed If true the app is installed on this local fsbl\n */\nclass AppCard extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tcheckShown: this.props.installed === true,\n\t\t\tcheckHighlighted: false,\n\t\t\tawaitingInstall: false,\n\t\t\ttoggleCheckAfterAction: false,\n\t\t\ttitleUnderlined: false,\n\t\t\tappName: this.props.title || this.props.name,\n\t\t\tid: this.props.appId,\n\t\t\tentitled: this.props.entitled ? this.props.entitled : false,\n\t\t\ttags: this.props.tags || [],\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.toggleHighlight = this.toggleHighlight.bind(this);\n\t\tthis.toggleTitleUnderline = this.toggleTitleUnderline.bind(this);\n\t\tthis.showCheck = this.showCheck.bind(this);\n\t\tthis.hideCheck = this.hideCheck.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.addApp = this.addApp.bind(this);\n\t\tthis.removeApp = this.removeApp.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tif (!this.props.tags || this.props.tags.length === 0) return;\n\t\tconst list = this.tagNamesList;\n\t\tconst { footer } = this;\n\t\tif (list.offsetHeight >= footer.scrollHeight + 5) {\n\t\t\tlet newTags = this.state.tags.slice(0, 2);\n\t\t\tthis.setState({\n\t\t\t\ttags: newTags,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the highlight state of the check mark for installing an app\n\t */\n\ttoggleHighlight() {\n\t\tthis.setState({\n\t\t\tcheckHighlighted: !this.state.checkHighlighted,\n\t\t});\n\t}\n\n\t/**\n\t * Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link\n\t */\n\ttoggleTitleUnderline() {\n\t\tthis.setState({\n\t\t\ttitleUnderlined: !this.state.titleUnderlined,\n\t\t});\n\t}\n\n\t/**\n\t * Shows the check mark for adding/removing an app\n\t */\n\tshowCheck() {\n\t\tthis.setState({\n\t\t\tcheckShown: true,\n\t\t});\n\t}\n\n\t/**\n\t * Hides the check mark for adding/removing an app\n\t */\n\thideCheck() {\n\t\tif (this.state.awaitingInstall) {\n\t\t\t// If an add/remove is taking place and this is called, toggle the check after the action completes\n\t\t\tthis.setState({\n\t\t\t\ttoggleCheckAfterAction: true,\n\t\t\t});\n\t\t} else {\n\t\t\t// Don't hide if installed. Stay green and showing\n\t\t\tif (!this.props.installed) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tcheckShown: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calls parent passed function to open the app showcase for the supplied app\n\t */\n\topenAppShowcase() {\n\t\tthis.props.viewAppShowcase(this.state.id);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to add an app\n\t * @param {object} e React Synthetic event\n\t */\n\taddApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.addApp(this.state.id, (err) => {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tawaitingInstall: false,\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 * Prevents bubbling (which would open the app showcase), then calls to remove an app\n\t * @param {object} e React Synthetic event\n\t */\n\tremoveApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.removeApp(this.state.id, (err) => {\n\t\t\t\t\tif (this.state.toggleCheckAfterAction) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t\t\ttoggleCheckAfterAction: false,\n\t\t\t\t\t\t\tcheckShown: !this.state.checkShown,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\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 * Prevents bubbling (which would open the app showcase), then calls to add a filtering tag\n\t * @param {string} name The tag name to add\n\t * @param {object} e React Synthetic event\n\t */\n\taddTag(name, e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tstoreActions.addTag(name);\n\t}\n\n\trender() {\n\t\tlet imageUrl = this.props.icons !== undefined ? this.props.icons[0].url : null;\n\n\t\tlet { appName, checkShown, checkHighlighted } = this.state;\n\n\t\tlet imageIconClasses = \"ff-check-mark-2\";\n\t\tif (this.props.installed && checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted added`;\n\t\telse if (this.props.installed || checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted`;\n\t\telse imageIconClasses = `${imageIconClasses} faded`;\n\n\t\tlet titleClass = this.state.titleUnderlined ? \"app-title highlighted\" : \"app-title\";\n\n\t\tlet entitled = this.state.entitled ? \" entitled\" : \"\";\n\n\t\tlet imageStyle = `app-image ${entitled}`;\n\n\t\tif (!imageUrl) {\n\t\t\timageUrl = this.props.images !== undefined ? this.props.images[0].url : null;\n\t\t\timageStyle = `${imageStyle} noIcon`;\n\t\t}\n\n\t\tif (!imageUrl) {\n\t\t\timageStyle = `${imageStyle} noImg`;\n\t\t}\n\n\t\tlet cardStyle = this.state.tags.length > 0 ? \"app-card\" : \"app-card no-tags\";\n\n\t\tlet appAction = this.props.installed ? this.removeApp : this.addApp;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cardStyle}\n\t\t\t\tonClick={this.openAppShowcase}\n\t\t\t\tonMouseEnter={this.showCheck}\n\t\t\t\tonMouseLeave={this.hideCheck}\n\t\t\t>\n\t\t\t\t<div className=\"app-image-container\">\n\t\t\t\t\t{imageUrl ? (\n\t\t\t\t\t\t<img className={imageStyle} src={imageUrl} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className={imageStyle}>\n\t\t\t\t\t\t\t<span>{getAppNameIconWhenNoImage(appName)}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={titleClass}\n\t\t\t\t\t\tonMouseEnter={this.toggleTitleUnderline}\n\t\t\t\t\t\tonMouseLeave={this.toggleTitleUnderline}\n\t\t\t\t\t\ttitle={appName}\n\t\t\t\t\t>\n\t\t\t\t\t\t{appName}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"row_description\">\n\t\t\t\t\t<div className=\"status-indicator\">\n\t\t\t\t\t\t{!entitled || !checkShown ? (\n\t\t\t\t\t\t\t<i> </i>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\tclassName={imageIconClasses}\n\t\t\t\t\t\t\t\tonMouseEnter={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonMouseLeave={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonClick={appAction}\n\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"app-description\">{this.props.description ? this.props.description : \"\"}</div>\n\t\t\t\t</div>\n\t\t\t\t{this.state.tags.length > 0 && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"app-tags\"\n\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\tthis.footer = el;\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<i className=\"ff-tag\"></i>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"app-tag-names\"\n\t\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\t\tthis.tagNamesList = el;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this.state.tags.map((tag, i) => {\n\t\t\t\t\t\t\t\tconst tagName = tag;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<span key={i} className=\"tag-name\" onClick={this.addTag.bind(this, tag)} title={tagName}>\n\t\t\t\t\t\t\t\t\t\t{getTruncatedStringWithEllipses(tagName)}\n\t\t\t\t\t\t\t\t\t\t{i !== this.props.tags.length - 1 ? \", \" : null}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default AppCard;\n"]}
|
|
@@ -7,5 +7,15 @@ declare type ResultsProps = {
|
|
|
7
7
|
})[];
|
|
8
8
|
viewAppShowcase: (id: AppMetadata["appId"]) => void;
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* The results page. Shown when filter tags are applied, search text is entered, or both.
|
|
12
|
+
* @param {object} props Component props
|
|
13
|
+
* @param {array} props.tags Array of tags that are applied for filtering
|
|
14
|
+
* @param {array} props.cards Array of app card objects (apps that come from FDC app directory)
|
|
15
|
+
* @param {func} props.addApp See AppCard.jsx
|
|
16
|
+
* @param {func} props.removeApp See AppCard.jsx
|
|
17
|
+
* @param {func} props.openAppShowcase See AppCard.jsx
|
|
18
|
+
* @param {func} props.addTag Parent function to add a filtering tag
|
|
19
|
+
*/
|
|
10
20
|
declare const AppResults: (props: ResultsProps) => JSX.Element;
|
|
11
21
|
export default AppResults;
|
|
@@ -1,10 +1,31 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2017 by ChartIQ, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
1
5
|
import React from "react";
|
|
6
|
+
//components
|
|
2
7
|
import EmptyResults from "./EmptyResults";
|
|
3
8
|
import AppCard from "./AppCard";
|
|
9
|
+
//consts
|
|
4
10
|
const NUMBER_OF_CARDS_PER_ROW = 2;
|
|
11
|
+
/**
|
|
12
|
+
* The results page. Shown when filter tags are applied, search text is entered, or both.
|
|
13
|
+
* @param {object} props Component props
|
|
14
|
+
* @param {array} props.tags Array of tags that are applied for filtering
|
|
15
|
+
* @param {array} props.cards Array of app card objects (apps that come from FDC app directory)
|
|
16
|
+
* @param {func} props.addApp See AppCard.jsx
|
|
17
|
+
* @param {func} props.removeApp See AppCard.jsx
|
|
18
|
+
* @param {func} props.openAppShowcase See AppCard.jsx
|
|
19
|
+
* @param {func} props.addTag Parent function to add a filtering tag
|
|
20
|
+
*/
|
|
5
21
|
const AppResults = (props) => {
|
|
22
|
+
/**
|
|
23
|
+
* Function to take the incoming apps and any filtering tags and filter the list.
|
|
24
|
+
* If there are no tags, we'll use all of the cards supplied
|
|
25
|
+
*/
|
|
6
26
|
const buildResultCards = () => {
|
|
7
27
|
let cardsForShowcase = [];
|
|
28
|
+
//Filter cards by tags
|
|
8
29
|
if (props.tags && props.tags.length > 0) {
|
|
9
30
|
cardsForShowcase = props.cards.filter((card) => {
|
|
10
31
|
for (let i = 0; i < props.tags.length; i++) {
|
|
@@ -21,6 +42,9 @@ const AppResults = (props) => {
|
|
|
21
42
|
return cardsForShowcase;
|
|
22
43
|
};
|
|
23
44
|
let cardsForShowcase = buildResultCards();
|
|
45
|
+
/**
|
|
46
|
+
* Function to build the table of cards based on filtered information
|
|
47
|
+
*/
|
|
24
48
|
const getCardRows = () => {
|
|
25
49
|
let cardRows = [];
|
|
26
50
|
let cardsInRow = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppResults.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppResults.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AppResults.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppResults.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,YAAY;AACZ,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,OAAO,MAAM,WAAW,CAAC;AAGhC,QAAQ;AACR,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAQlC;;;;;;;;;GASG;AACH,MAAM,UAAU,GAAG,CAAC,KAAmB,EAAE,EAAE;IAC1C;;;OAGG;IACH,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAE1B,sBAAsB;QACtB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC3C,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;wBAAE,OAAO,KAAK,CAAC;iBACtD;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;SACH;aAAM;YACN,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;SAC/B;QAED,OAAO,gBAAgB,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAE1C;;OAEG;IACH,MAAM,WAAW,GAAG,GAAG,EAAE;QACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAE5C,UAAU,CAAC,IAAI,CACd,4BAAI,GAAG,EAAE,GAAG;gBACX,oBAAC,OAAO,oBAAK,IAAI,IAAE,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CACzD,CACL,CAAC;YAEF,IAAI,UAAU,CAAC,MAAM,KAAK,uBAAuB,IAAI,CAAC,KAAK,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,UAAU,GAAG,EAAE,CAAC;aAChB;SACD;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oBAAC,YAAY,OAAG,CAAC;IAE3D,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE7B,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;QAC3B,+BAAO,SAAS,EAAC,mBAAmB;YACnC,mCACE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,4BAAI,GAAG,EAAE,YAAY,CAAC,EAAE,IAAG,GAAG,CAAM,CACpC,CAAC,CACK,CACD,CACH,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React from \"react\";\n\n//components\nimport EmptyResults from \"./EmptyResults\";\nimport AppCard from \"./AppCard\";\nimport { AppMetadata } from \"../../../types/fdc3\";\n\n//consts\nconst NUMBER_OF_CARDS_PER_ROW = 2;\n\ntype ResultsProps = {\n\ttags: string[];\n\tcards: (AppMetadata & { tags: string[] })[];\n\tviewAppShowcase: (id: AppMetadata[\"appId\"]) => void;\n};\n\n/**\n * The results page. Shown when filter tags are applied, search text is entered, or both.\n * @param {object} props Component props\n * @param {array} props.tags Array of tags that are applied for filtering\n * @param {array} props.cards Array of app card objects (apps that come from FDC app directory)\n * @param {func} props.addApp See AppCard.jsx\n * @param {func} props.removeApp See AppCard.jsx\n * @param {func} props.openAppShowcase See AppCard.jsx\n * @param {func} props.addTag Parent function to add a filtering tag\n */\nconst AppResults = (props: ResultsProps) => {\n\t/**\n\t * Function to take the incoming apps and any filtering tags and filter the list.\n\t * If there are no tags, we'll use all of the cards supplied\n\t */\n\tconst buildResultCards = () => {\n\t\tlet cardsForShowcase = [];\n\n\t\t//Filter cards by tags\n\t\tif (props.tags && props.tags.length > 0) {\n\t\t\tcardsForShowcase = props.cards.filter((card) => {\n\t\t\t\tfor (let i = 0; i < props.tags.length; i++) {\n\t\t\t\t\tlet tagToSearchFor = props.tags[i];\n\t\t\t\t\tif (!card.tags.includes(tagToSearchFor)) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t} else {\n\t\t\tcardsForShowcase = props.cards;\n\t\t}\n\n\t\treturn cardsForShowcase;\n\t};\n\n\tlet cardsForShowcase = buildResultCards();\n\n\t/**\n\t * Function to build the table of cards based on filtered information\n\t */\n\tconst getCardRows = () => {\n\t\tlet cardRows = [];\n\t\tlet cardsInRow = [];\n\t\tfor (let i = 0; i < cardsForShowcase.length; i++) {\n\t\t\tlet card = cardsForShowcase[i];\n\t\t\tlet name = card.title || card.name;\n\n\t\t\tlet key = `card-${i}-${name.toLowerCase()}`;\n\n\t\t\tcardsInRow.push(\n\t\t\t\t<td key={key}>\n\t\t\t\t\t<AppCard {...card} viewAppShowcase={props.viewAppShowcase} />\n\t\t\t\t</td>\n\t\t\t);\n\n\t\t\tif (cardsInRow.length === NUMBER_OF_CARDS_PER_ROW || i === cardsForShowcase.length - 1) {\n\t\t\t\tcardRows.push(cardsInRow);\n\t\t\t\tcardsInRow = [];\n\t\t\t}\n\t\t}\n\n\t\treturn cardRows;\n\t};\n\n\tif (cardsForShowcase.length === 0) return <EmptyResults />;\n\n\tlet cardRows = getCardRows();\n\n\treturn (\n\t\t<div className=\"app-results\">\n\t\t\t<table className=\"app-results-table\">\n\t\t\t\t<tbody>\n\t\t\t\t\t{cardRows.map((row, i) => (\n\t\t\t\t\t\t<tr key={`tablerow-${i}`}>{row}</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n};\n\nexport default AppResults;\n"]}
|
|
@@ -1,11 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A carousel of AppCards
|
|
3
|
+
* @param {object} props Component props
|
|
4
|
+
* @param {array} props.cards An array of AppCards to display in a carousel
|
|
5
|
+
* @param {string} props.tag The carousel's tag (title)
|
|
6
|
+
* @param {func} props.openAppShowcase Parent function to show the AppShowcase for the selected card
|
|
7
|
+
*/
|
|
1
8
|
export default class Carousel extends React.Component<any, any, any> {
|
|
2
9
|
constructor(props: any);
|
|
3
10
|
bindCorrectContext(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Pages through the carousel by one card (right)
|
|
13
|
+
*/
|
|
4
14
|
pageUp(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Pages through the carousel by one card (left)
|
|
17
|
+
*/
|
|
5
18
|
pageDown(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Toggles the highlight on a carousel's title. When a user mouses over, we want to style it so its obvious its a link
|
|
21
|
+
* @param {*} highlight
|
|
22
|
+
*/
|
|
6
23
|
highlightTitle(highlight: any): void;
|
|
24
|
+
/**
|
|
25
|
+
* Calls the parents seeMore function, which will add the selected tag as a filter
|
|
26
|
+
*/
|
|
7
27
|
seeMore(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Spits out a warning if the number of cards supplied to the carousel is < 3
|
|
30
|
+
*/
|
|
8
31
|
notEnoughCards(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Function to build the items in the carousel
|
|
34
|
+
*/
|
|
9
35
|
buildCarousel(): any[];
|
|
10
36
|
}
|
|
11
37
|
import React from "react";
|