@webiny/app-admin 0.0.0-ee-vpcs.549378cf03
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/LICENSE +21 -0
- package/README.md +21 -0
- package/assets/icons/add-18px.svg +3 -0
- package/assets/icons/arrow_drop_down-24px.svg +4 -0
- package/assets/icons/attach_file_black_24dp.svg +1 -0
- package/assets/icons/baseline-menu-24px.svg +4 -0
- package/assets/icons/baseline-notification_important-24px.svg +4 -0
- package/assets/icons/baseline-security-24px.svg +4 -0
- package/assets/icons/filter-24px.svg +8 -0
- package/assets/icons/github-brands.svg +1 -0
- package/assets/icons/highlight-24px.svg +1 -0
- package/assets/icons/icon-community.svg +16 -0
- package/assets/icons/icon-documentation.svg +16 -0
- package/assets/icons/info.svg +1 -0
- package/assets/icons/insert_drive_file-24px.svg +1 -0
- package/assets/icons/insert_photo-24px.svg +1 -0
- package/assets/icons/label-24px.svg +1 -0
- package/assets/icons/round-account_circle-24px.svg +1 -0
- package/assets/icons/round-add-24px.svg +16 -0
- package/assets/icons/round-arrow_drop_down-24px.svg +1 -0
- package/assets/icons/round-chevron_right-24px.svg +12 -0
- package/assets/icons/round-feedback-24px.svg +54 -0
- package/assets/icons/round-help-24px.svg +1 -0
- package/assets/icons/round-invert_colors-24px.svg +52 -0
- package/assets/icons/round-keyboard_arrow_down-24px.svg +16 -0
- package/assets/icons/round-keyboard_arrow_up-24px.svg +16 -0
- package/assets/icons/round-lock_open-24px.svg +60 -0
- package/assets/icons/round-more_vert-24px.svg +12 -0
- package/assets/icons/round-open_in_new-24px.svg +44 -0
- package/assets/icons/round-settings-24px.svg +4 -0
- package/assets/icons/search-24px.svg +20 -0
- package/assets/icons/slack-logo.svg +1 -0
- package/assets/icons/today-24px.svg +1 -0
- package/assets/icons/touch_app.svg +1 -0
- package/assets/images/arr.png +0 -0
- package/assets/images/arr_2.png +0 -0
- package/assets/images/header_bg.jpg +0 -0
- package/assets/images/icons.png +0 -0
- package/assets/images/icons_retina.png +0 -0
- package/assets/images/logo.png +0 -0
- package/assets/images/logo_orange.png +0 -0
- package/assets/images/public/bg-login.png +0 -0
- package/assets/images/public/favicon.ico +0 -0
- package/assets/images/public/logo_orange.png +0 -0
- package/assets/images/public/preloader_2.png +0 -0
- package/assets/images/swich.png +0 -0
- package/assets/images/table_img.jpg +0 -0
- package/assets/images/webiny-logo.svg +20 -0
- package/assets/images/webiny-orange-logo.svg +20 -0
- package/base/Admin.d.ts +7 -0
- package/base/Admin.js +55 -0
- package/base/Admin.js.map +1 -0
- package/base/Base.d.ts +2 -0
- package/base/Base.js +110 -0
- package/base/Base.js.map +1 -0
- package/base/plugins/AddGraphQLQuerySelection.d.ts +9 -0
- package/base/plugins/AddGraphQLQuerySelection.js +31 -0
- package/base/plugins/AddGraphQLQuerySelection.js.map +1 -0
- package/base/providers/ApolloProvider.d.ts +10 -0
- package/base/providers/ApolloProvider.js +26 -0
- package/base/providers/ApolloProvider.js.map +1 -0
- package/base/providers/TelemetryProvider.d.ts +2 -0
- package/base/providers/TelemetryProvider.js +37 -0
- package/base/providers/TelemetryProvider.js.map +1 -0
- package/base/providers/UiStateProvider.d.ts +2 -0
- package/base/providers/UiStateProvider.js +23 -0
- package/base/providers/UiStateProvider.js.map +1 -0
- package/base/providers/ViewCompositionProvider.d.ts +17 -0
- package/base/providers/ViewCompositionProvider.js +70 -0
- package/base/providers/ViewCompositionProvider.js.map +1 -0
- package/base/ui/Brand.d.ts +2 -0
- package/base/ui/Brand.js +19 -0
- package/base/ui/Brand.js.map +1 -0
- package/base/ui/CenteredView.d.ts +4 -0
- package/base/ui/CenteredView.js +40 -0
- package/base/ui/CenteredView.js.map +1 -0
- package/base/ui/Dashboard.d.ts +2 -0
- package/base/ui/Dashboard.js +19 -0
- package/base/ui/Dashboard.js.map +1 -0
- package/base/ui/Layout.d.ts +7 -0
- package/base/ui/Layout.js +24 -0
- package/base/ui/Layout.js.map +1 -0
- package/base/ui/LocaleSelector.d.ts +2 -0
- package/base/ui/LocaleSelector.js +19 -0
- package/base/ui/LocaleSelector.js.map +1 -0
- package/base/ui/LoginScreen.d.ts +6 -0
- package/base/ui/LoginScreen.js +27 -0
- package/base/ui/LoginScreen.js.map +1 -0
- package/base/ui/Logo.d.ts +8 -0
- package/base/ui/Logo.js +36 -0
- package/base/ui/Logo.js.map +1 -0
- package/base/ui/Menu.d.ts +31 -0
- package/base/ui/Menu.js +166 -0
- package/base/ui/Menu.js.map +1 -0
- package/base/ui/Navigation.d.ts +24 -0
- package/base/ui/Navigation.js +184 -0
- package/base/ui/Navigation.js.map +1 -0
- package/base/ui/NotFound.d.ts +2 -0
- package/base/ui/NotFound.js +19 -0
- package/base/ui/NotFound.js.map +1 -0
- package/base/ui/Search.d.ts +19 -0
- package/base/ui/Search.js +81 -0
- package/base/ui/Search.js.map +1 -0
- package/base/ui/Tags.d.ts +10 -0
- package/base/ui/Tags.js +29 -0
- package/base/ui/Tags.js.map +1 -0
- package/base/ui/UserMenu.d.ts +30 -0
- package/base/ui/UserMenu.js +137 -0
- package/base/ui/UserMenu.js.map +1 -0
- package/components/AdminLayout.d.ts +6 -0
- package/components/AdminLayout.js +22 -0
- package/components/AdminLayout.js.map +1 -0
- package/components/AppInstaller/AppInstaller.d.ts +7 -0
- package/components/AppInstaller/AppInstaller.js +183 -0
- package/components/AppInstaller/AppInstaller.js.map +1 -0
- package/components/AppInstaller/Sidebar.d.ts +9 -0
- package/components/AppInstaller/Sidebar.js +178 -0
- package/components/AppInstaller/Sidebar.js.map +1 -0
- package/components/AppInstaller/assets/sign-in-divider.svg +19 -0
- package/components/AppInstaller/index.d.ts +2 -0
- package/components/AppInstaller/index.js +29 -0
- package/components/AppInstaller/index.js.map +1 -0
- package/components/AppInstaller/styled.d.ts +9 -0
- package/components/AppInstaller/styled.js +91 -0
- package/components/AppInstaller/styled.js.map +1 -0
- package/components/AppInstaller/useInstaller.d.ts +31 -0
- package/components/AppInstaller/useInstaller.js +321 -0
- package/components/AppInstaller/useInstaller.js.map +1 -0
- package/components/EmptyView.d.ts +8 -0
- package/components/EmptyView.js +70 -0
- package/components/EmptyView.js.map +1 -0
- package/components/FileManager/BottomInfoBar/SupportedFileTypes.d.ts +6 -0
- package/components/FileManager/BottomInfoBar/SupportedFileTypes.js +55 -0
- package/components/FileManager/BottomInfoBar/SupportedFileTypes.js.map +1 -0
- package/components/FileManager/BottomInfoBar/UploadStatus.d.ts +6 -0
- package/components/FileManager/BottomInfoBar/UploadStatus.js +60 -0
- package/components/FileManager/BottomInfoBar/UploadStatus.js.map +1 -0
- package/components/FileManager/BottomInfoBar.d.ts +5 -0
- package/components/FileManager/BottomInfoBar.js +60 -0
- package/components/FileManager/BottomInfoBar.js.map +1 -0
- package/components/FileManager/DropFilesHere.d.ts +10 -0
- package/components/FileManager/DropFilesHere.js +76 -0
- package/components/FileManager/DropFilesHere.js.map +1 -0
- package/components/FileManager/File.d.ts +17 -0
- package/components/FileManager/File.js +155 -0
- package/components/FileManager/File.js.map +1 -0
- package/components/FileManager/FileDetails/Name.d.ts +8 -0
- package/components/FileManager/FileDetails/Name.js +138 -0
- package/components/FileManager/FileDetails/Name.js.map +1 -0
- package/components/FileManager/FileDetails/Tags.d.ts +10 -0
- package/components/FileManager/FileDetails/Tags.js +339 -0
- package/components/FileManager/FileDetails/Tags.js.map +1 -0
- package/components/FileManager/FileDetails.d.ts +24 -0
- package/components/FileManager/FileDetails.js +474 -0
- package/components/FileManager/FileDetails.js.map +1 -0
- package/components/FileManager/FileManagerContext.d.ts +42 -0
- package/components/FileManager/FileManagerContext.js +224 -0
- package/components/FileManager/FileManagerContext.js.map +1 -0
- package/components/FileManager/FileManagerView.d.ts +18 -0
- package/components/FileManager/FileManagerView.js +728 -0
- package/components/FileManager/FileManagerView.js.map +1 -0
- package/components/FileManager/LeftSidebar.d.ts +10 -0
- package/components/FileManager/LeftSidebar.js +127 -0
- package/components/FileManager/LeftSidebar.js.map +1 -0
- package/components/FileManager/NoPermissionView.d.ts +3 -0
- package/components/FileManager/NoPermissionView.js +87 -0
- package/components/FileManager/NoPermissionView.js.map +1 -0
- package/components/FileManager/NoResults.d.ts +3 -0
- package/components/FileManager/NoResults.js +28 -0
- package/components/FileManager/NoResults.js.map +1 -0
- package/components/FileManager/getFileTypePlugin.d.ts +4 -0
- package/components/FileManager/getFileTypePlugin.js +57 -0
- package/components/FileManager/getFileTypePlugin.js.map +1 -0
- package/components/FileManager/getFileUploader.d.ts +3 -0
- package/components/FileManager/getFileUploader.js +20 -0
- package/components/FileManager/getFileUploader.js.map +1 -0
- package/components/FileManager/graphql.d.ts +96 -0
- package/components/FileManager/graphql.js +58 -0
- package/components/FileManager/graphql.js.map +1 -0
- package/components/FileManager/icons/content_copy-black-24px.svg +1 -0
- package/components/FileManager/icons/delete.svg +12 -0
- package/components/FileManager/icons/privacy_tip-24px.svg +10 -0
- package/components/FileManager/icons/round-check_box-24px.svg +4 -0
- package/components/FileManager/icons/round-check_box_outline_blank-24px.svg +4 -0
- package/components/FileManager/icons/round-cloud_download-24px.svg +4 -0
- package/components/FileManager/icons/round-cloud_upload-24px.svg +4 -0
- package/components/FileManager/icons/round-description-24px.svg +4 -0
- package/components/FileManager/icons/round-edit-24px.svg +4 -0
- package/components/FileManager/icons/round-info-24px.svg +4 -0
- package/components/FileManager/icons/round-label-24px.svg +4 -0
- package/components/FileManager/icons/round-more_vert-24px.svg +4 -0
- package/components/FileManager/icons/round-search-24px.svg +20 -0
- package/components/FileManager/outputFileSelectionError.d.ts +7 -0
- package/components/FileManager/outputFileSelectionError.js +54 -0
- package/components/FileManager/outputFileSelectionError.js.map +1 -0
- package/components/FileManager/types.d.ts +21 -0
- package/components/FileManager/types.js +5 -0
- package/components/FileManager/types.js.map +1 -0
- package/components/FileManager.d.ts +67 -0
- package/components/FileManager.js +144 -0
- package/components/FileManager.js.map +1 -0
- package/components/FloatingActionButton.d.ts +3 -0
- package/components/FloatingActionButton.js +29 -0
- package/components/FloatingActionButton.js.map +1 -0
- package/components/MultiImageUpload.d.ts +13 -0
- package/components/MultiImageUpload.js +43 -0
- package/components/MultiImageUpload.js.map +1 -0
- package/components/OverlayLayout/OverlayLayout.d.ts +23 -0
- package/components/OverlayLayout/OverlayLayout.js +184 -0
- package/components/OverlayLayout/OverlayLayout.js.map +1 -0
- package/components/OverlayLayout/icons/close.svg +13 -0
- package/components/OverlayLayout/icons/navigate_before.svg +16 -0
- package/components/OverlayLayout/index.d.ts +1 -0
- package/components/OverlayLayout/index.js +18 -0
- package/components/OverlayLayout/index.js.map +1 -0
- package/components/Permissions/Permissions.d.ts +7 -0
- package/components/Permissions/Permissions.js +54 -0
- package/components/Permissions/Permissions.js.map +1 -0
- package/components/Permissions/StyledComponents.d.ts +8 -0
- package/components/Permissions/StyledComponents.js +36 -0
- package/components/Permissions/StyledComponents.js.map +1 -0
- package/components/Permissions/index.d.ts +2 -0
- package/components/Permissions/index.js +30 -0
- package/components/Permissions/index.js.map +1 -0
- package/components/RichTextEditor/RichTextEditor.d.ts +3 -0
- package/components/RichTextEditor/RichTextEditor.js +30 -0
- package/components/RichTextEditor/RichTextEditor.js.map +1 -0
- package/components/RichTextEditor/index.d.ts +2 -0
- package/components/RichTextEditor/index.js +21 -0
- package/components/RichTextEditor/index.js.map +1 -0
- package/components/RichTextEditor/styles.scss +96 -0
- package/components/RichTextEditor/tools/header/index.d.ts +229 -0
- package/components/RichTextEditor/tools/header/index.js +731 -0
- package/components/RichTextEditor/tools/header/index.js.map +1 -0
- package/components/RichTextEditor/tools/header/styles.scss +48 -0
- package/components/RichTextEditor/tools/image/index.d.ts +124 -0
- package/components/RichTextEditor/tools/image/index.js +265 -0
- package/components/RichTextEditor/tools/image/index.js.map +1 -0
- package/components/RichTextEditor/tools/image/styles.scss +90 -0
- package/components/RichTextEditor/tools/image/svgs.d.ts +6 -0
- package/components/RichTextEditor/tools/image/svgs.js +12 -0
- package/components/RichTextEditor/tools/image/svgs.js.map +1 -0
- package/components/RichTextEditor/tools/image/tunes.d.ts +57 -0
- package/components/RichTextEditor/tools/image/tunes.js +146 -0
- package/components/RichTextEditor/tools/image/tunes.js.map +1 -0
- package/components/RichTextEditor/tools/image/types.d.ts +29 -0
- package/components/RichTextEditor/tools/image/types.js +5 -0
- package/components/RichTextEditor/tools/image/types.js.map +1 -0
- package/components/RichTextEditor/tools/image/ui.d.ts +122 -0
- package/components/RichTextEditor/tools/image/ui.js +301 -0
- package/components/RichTextEditor/tools/image/ui.js.map +1 -0
- package/components/RichTextEditor/tools/paragraph/index.d.ts +209 -0
- package/components/RichTextEditor/tools/paragraph/index.js +514 -0
- package/components/RichTextEditor/tools/paragraph/index.js.map +1 -0
- package/components/RichTextEditor/tools/paragraph/styles.scss +29 -0
- package/components/RichTextEditor/tools/textColor/index.d.ts +64 -0
- package/components/RichTextEditor/tools/textColor/index.js +271 -0
- package/components/RichTextEditor/tools/textColor/index.js.map +1 -0
- package/components/RichTextEditor/tools/textColor/styles.scss +21 -0
- package/components/RichTextEditor/tools/utils.d.ts +19 -0
- package/components/RichTextEditor/tools/utils.js +33 -0
- package/components/RichTextEditor/tools/utils.js.map +1 -0
- package/components/Routes.d.ts +6 -0
- package/components/Routes.js +49 -0
- package/components/Routes.js.map +1 -0
- package/components/SearchUI.d.ts +8 -0
- package/components/SearchUI.js +73 -0
- package/components/SearchUI.js.map +1 -0
- package/components/SimpleForm/SimpleForm.d.ts +21 -0
- package/components/SimpleForm/SimpleForm.js +106 -0
- package/components/SimpleForm/SimpleForm.js.map +1 -0
- package/components/SimpleForm/index.d.ts +1 -0
- package/components/SimpleForm/index.js +31 -0
- package/components/SimpleForm/index.js.map +1 -0
- package/components/SimpleUI/InputField.d.ts +10 -0
- package/components/SimpleUI/InputField.js +116 -0
- package/components/SimpleUI/InputField.js.map +1 -0
- package/components/SingleImageUpload.d.ts +55 -0
- package/components/SingleImageUpload.js +114 -0
- package/components/SingleImageUpload.js.map +1 -0
- package/components/SplitView/SplitView.d.ts +11 -0
- package/components/SplitView/SplitView.js +95 -0
- package/components/SplitView/SplitView.js.map +1 -0
- package/components/SplitView/index.d.ts +1 -0
- package/components/SplitView/index.js +25 -0
- package/components/SplitView/index.js.map +1 -0
- package/components/index.d.ts +1 -0
- package/components/index.js +13 -0
- package/components/index.js.map +1 -0
- package/hooks/useConfirmationDialog.d.ts +13 -0
- package/hooks/useConfirmationDialog.js +63 -0
- package/hooks/useConfirmationDialog.js.map +1 -0
- package/hooks/useDialog.d.ts +10 -0
- package/hooks/useDialog.js +37 -0
- package/hooks/useDialog.js.map +1 -0
- package/hooks/useSnackbar.d.ts +7 -0
- package/hooks/useSnackbar.js +38 -0
- package/hooks/useSnackbar.js.map +1 -0
- package/index.d.ts +35 -0
- package/index.js +373 -0
- package/index.js.map +1 -0
- package/package.json +102 -0
- package/plugins/FileManagerFileTypePlugin.d.ts +33 -0
- package/plugins/FileManagerFileTypePlugin.js +63 -0
- package/plugins/FileManagerFileTypePlugin.js.map +1 -0
- package/plugins/MenuPlugin.d.ts +37 -0
- package/plugins/MenuPlugin.js +58 -0
- package/plugins/MenuPlugin.js.map +1 -0
- package/plugins/PermissionRendererPlugin.d.ts +22 -0
- package/plugins/PermissionRendererPlugin.js +58 -0
- package/plugins/PermissionRendererPlugin.js.map +1 -0
- package/plugins/fileManager/fileDefault.d.ts +2 -0
- package/plugins/fileManager/fileDefault.js +34 -0
- package/plugins/fileManager/fileDefault.js.map +1 -0
- package/plugins/fileManager/fileImage/DeleteAction.d.ts +7 -0
- package/plugins/fileManager/fileImage/DeleteAction.js +83 -0
- package/plugins/fileManager/fileImage/DeleteAction.js.map +1 -0
- package/plugins/fileManager/fileImage/EditAction.d.ts +10 -0
- package/plugins/fileManager/fileImage/EditAction.js +179 -0
- package/plugins/fileManager/fileImage/EditAction.js.map +1 -0
- package/plugins/fileManager/fileImage/index.d.ts +2 -0
- package/plugins/fileManager/fileImage/index.js +46 -0
- package/plugins/fileManager/fileImage/index.js.map +1 -0
- package/plugins/fileManager/icons/edit.svg +17 -0
- package/plugins/fileManager/icons/round-description-24px.svg +1 -0
- package/plugins/fileManager/index.d.ts +2 -0
- package/plugins/fileManager/index.js +21 -0
- package/plugins/fileManager/index.js.map +1 -0
- package/plugins/globalSearch/SearchBar.d.ts +15 -0
- package/plugins/globalSearch/SearchBar.js +273 -0
- package/plugins/globalSearch/SearchBar.js.map +1 -0
- package/plugins/globalSearch/SearchBarDropdown.d.ts +23 -0
- package/plugins/globalSearch/SearchBarDropdown.js +101 -0
- package/plugins/globalSearch/SearchBarDropdown.js.map +1 -0
- package/plugins/globalSearch/icons/round-search-24px.svg +20 -0
- package/plugins/globalSearch/index.d.ts +7 -0
- package/plugins/globalSearch/index.js +16 -0
- package/plugins/globalSearch/index.js.map +1 -0
- package/plugins/globalSearch/styled.d.ts +11 -0
- package/plugins/globalSearch/styled.js +135 -0
- package/plugins/globalSearch/styled.js.map +1 -0
- package/plugins/uiLayoutRenderer/index.d.ts +2 -0
- package/plugins/uiLayoutRenderer/index.js +75 -0
- package/plugins/uiLayoutRenderer/index.js.map +1 -0
- package/styles/material-theme-assignments.scss +350 -0
- package/styles/material.scss +43 -0
- package/styles/theme.scss +46 -0
- package/styles.scss +2 -0
- package/types.d.ts +93 -0
- package/types.js +5 -0
- package/types.js.map +1 -0
- package/ui/UIElement.d.ts +2 -0
- package/ui/UIElement.js +19 -0
- package/ui/UIElement.js.map +1 -0
- package/ui/UILayout.d.ts +1 -0
- package/ui/UILayout.js +19 -0
- package/ui/UILayout.js.map +1 -0
- package/ui/UIRenderer.d.ts +2 -0
- package/ui/UIRenderer.js +13 -0
- package/ui/UIRenderer.js.map +1 -0
- package/ui/UIView.d.ts +2 -0
- package/ui/UIView.js +25 -0
- package/ui/UIView.js.map +1 -0
- package/ui/elements/AccordionElement.d.ts +27 -0
- package/ui/elements/AccordionElement.js +110 -0
- package/ui/elements/AccordionElement.js.map +1 -0
- package/ui/elements/ButtonElement.d.ts +24 -0
- package/ui/elements/ButtonElement.js +105 -0
- package/ui/elements/ButtonElement.js.map +1 -0
- package/ui/elements/ButtonGroupElement.d.ts +6 -0
- package/ui/elements/ButtonGroupElement.js +67 -0
- package/ui/elements/ButtonGroupElement.js.map +1 -0
- package/ui/elements/GenericElement.d.ts +1 -0
- package/ui/elements/GenericElement.js +18 -0
- package/ui/elements/GenericElement.js.map +1 -0
- package/ui/elements/LabelElement.d.ts +16 -0
- package/ui/elements/LabelElement.js +60 -0
- package/ui/elements/LabelElement.js.map +1 -0
- package/ui/elements/NavigationMenuElement.d.ts +33 -0
- package/ui/elements/NavigationMenuElement.js +177 -0
- package/ui/elements/NavigationMenuElement.js.map +1 -0
- package/ui/elements/PanelElement.d.ts +3 -0
- package/ui/elements/PanelElement.js +33 -0
- package/ui/elements/PanelElement.js.map +1 -0
- package/ui/elements/PlaceholderElement.d.ts +6 -0
- package/ui/elements/PlaceholderElement.js +44 -0
- package/ui/elements/PlaceholderElement.js.map +1 -0
- package/ui/elements/SmallButtonElement.d.ts +6 -0
- package/ui/elements/SmallButtonElement.js +64 -0
- package/ui/elements/SmallButtonElement.js.map +1 -0
- package/ui/elements/TypographyElement.d.ts +13 -0
- package/ui/elements/TypographyElement.js +67 -0
- package/ui/elements/TypographyElement.js.map +1 -0
- package/ui/elements/ViewElement.d.ts +1 -0
- package/ui/elements/ViewElement.js +18 -0
- package/ui/elements/ViewElement.js.map +1 -0
- package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.d.ts +6 -0
- package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +60 -0
- package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +1 -0
- package/ui/elements/form/DynamicFieldsetElement.d.ts +43 -0
- package/ui/elements/form/DynamicFieldsetElement.js +158 -0
- package/ui/elements/form/DynamicFieldsetElement.js.map +1 -0
- package/ui/elements/form/FileManagerElement/EmptyStateElement.d.ts +4 -0
- package/ui/elements/form/FileManagerElement/EmptyStateElement.js +41 -0
- package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +1 -0
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.d.ts +7 -0
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js +95 -0
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -0
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.d.ts +13 -0
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +123 -0
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -0
- package/ui/elements/form/FileManagerElement/styled.d.ts +20 -0
- package/ui/elements/form/FileManagerElement/styled.js +120 -0
- package/ui/elements/form/FileManagerElement/styled.js.map +1 -0
- package/ui/elements/form/FileManagerElement.d.ts +24 -0
- package/ui/elements/form/FileManagerElement.js +108 -0
- package/ui/elements/form/FileManagerElement.js.map +1 -0
- package/ui/elements/form/FormElement.d.ts +21 -0
- package/ui/elements/form/FormElement.js +66 -0
- package/ui/elements/form/FormElement.js.map +1 -0
- package/ui/elements/form/FormFieldElement.d.ts +56 -0
- package/ui/elements/form/FormFieldElement.js +206 -0
- package/ui/elements/form/FormFieldElement.js.map +1 -0
- package/ui/elements/form/HiddenElement.d.ts +6 -0
- package/ui/elements/form/HiddenElement.js +64 -0
- package/ui/elements/form/HiddenElement.js.map +1 -0
- package/ui/elements/form/InputElement.d.ts +7 -0
- package/ui/elements/form/InputElement.js +72 -0
- package/ui/elements/form/InputElement.js.map +1 -0
- package/ui/elements/form/PasswordElement.d.ts +6 -0
- package/ui/elements/form/PasswordElement.js +66 -0
- package/ui/elements/form/PasswordElement.js.map +1 -0
- package/ui/elements/form/README.md +2 -0
- package/ui/elements/form/SelectElement.d.ts +15 -0
- package/ui/elements/form/SelectElement.js +87 -0
- package/ui/elements/form/SelectElement.js.map +1 -0
- package/ui/elements/form/TextareaElement.d.ts +15 -0
- package/ui/elements/form/TextareaElement.js +72 -0
- package/ui/elements/form/TextareaElement.js.map +1 -0
- package/ui/views/AdminView/ContentElement.d.ts +4 -0
- package/ui/views/AdminView/ContentElement.js +78 -0
- package/ui/views/AdminView/ContentElement.js.map +1 -0
- package/ui/views/AdminView/HeaderElement.d.ts +13 -0
- package/ui/views/AdminView/HeaderElement.js +144 -0
- package/ui/views/AdminView/HeaderElement.js.map +1 -0
- package/ui/views/AdminView/HeaderSectionCenterElement.d.ts +6 -0
- package/ui/views/AdminView/HeaderSectionCenterElement.js +62 -0
- package/ui/views/AdminView/HeaderSectionCenterElement.js.map +1 -0
- package/ui/views/AdminView/HeaderSectionLeftElement.d.ts +6 -0
- package/ui/views/AdminView/HeaderSectionLeftElement.js +62 -0
- package/ui/views/AdminView/HeaderSectionLeftElement.js.map +1 -0
- package/ui/views/AdminView/HeaderSectionRightElement.d.ts +6 -0
- package/ui/views/AdminView/HeaderSectionRightElement.js +62 -0
- package/ui/views/AdminView/HeaderSectionRightElement.js.map +1 -0
- package/ui/views/AdminView/components/Dialog.d.ts +2 -0
- package/ui/views/AdminView/components/Dialog.js +57 -0
- package/ui/views/AdminView/components/Dialog.js.map +1 -0
- package/ui/views/AdminView/components/Hamburger.d.ts +3 -0
- package/ui/views/AdminView/components/Hamburger.js +39 -0
- package/ui/views/AdminView/components/Hamburger.js.map +1 -0
- package/ui/views/AdminView/components/Snackbar.d.ts +3 -0
- package/ui/views/AdminView/components/Snackbar.js +41 -0
- package/ui/views/AdminView/components/Snackbar.js.map +1 -0
- package/ui/views/FormView/FormContainerElement.d.ts +12 -0
- package/ui/views/FormView/FormContainerElement.js +71 -0
- package/ui/views/FormView/FormContainerElement.js.map +1 -0
- package/ui/views/FormView/FormContentElement.d.ts +3 -0
- package/ui/views/FormView/FormContentElement.js +33 -0
- package/ui/views/FormView/FormContentElement.js.map +1 -0
- package/ui/views/FormView/FormFooterElement.d.ts +6 -0
- package/ui/views/FormView/FormFooterElement.js +68 -0
- package/ui/views/FormView/FormFooterElement.js.map +1 -0
- package/ui/views/FormView/FormHeaderElement.d.ts +14 -0
- package/ui/views/FormView/FormHeaderElement.js +103 -0
- package/ui/views/FormView/FormHeaderElement.js.map +1 -0
- package/ui/views/FormView.d.ts +40 -0
- package/ui/views/FormView.js +208 -0
- package/ui/views/FormView.js.map +1 -0
- package/ui/views/OverlayView/ContentElement.d.ts +6 -0
- package/ui/views/OverlayView/ContentElement.js +61 -0
- package/ui/views/OverlayView/ContentElement.js.map +1 -0
- package/ui/views/OverlayView/HeaderElement.d.ts +24 -0
- package/ui/views/OverlayView/HeaderElement.js +134 -0
- package/ui/views/OverlayView/HeaderElement.js.map +1 -0
- package/ui/views/OverlayView/HeaderTitleElement.d.ts +13 -0
- package/ui/views/OverlayView/HeaderTitleElement.js +73 -0
- package/ui/views/OverlayView/HeaderTitleElement.js.map +1 -0
- package/ui/views/OverlayView/useOverlayView.d.ts +5 -0
- package/ui/views/OverlayView/useOverlayView.js +54 -0
- package/ui/views/OverlayView/useOverlayView.js.map +1 -0
- package/ui/views/OverlayView.d.ts +29 -0
- package/ui/views/OverlayView.js +199 -0
- package/ui/views/OverlayView.js.map +1 -0
- package/ui/views/SplitView/SplitViewPanelElement.d.ts +11 -0
- package/ui/views/SplitView/SplitViewPanelElement.js +91 -0
- package/ui/views/SplitView/SplitViewPanelElement.js.map +1 -0
- package/ui/views/SplitView.d.ts +21 -0
- package/ui/views/SplitView.js +162 -0
- package/ui/views/SplitView.js.map +1 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
19
|
+
|
|
20
|
+
var React = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _reactHotkeyz = require("react-hotkeyz");
|
|
23
|
+
|
|
24
|
+
var _dataurlToBlob = _interopRequireDefault(require("dataurl-to-blob"));
|
|
25
|
+
|
|
26
|
+
var _ImageUpload = require("@webiny/ui/ImageUpload");
|
|
27
|
+
|
|
28
|
+
var _Tooltip = require("@webiny/ui/Tooltip");
|
|
29
|
+
|
|
30
|
+
var _Button = require("@webiny/ui/Button");
|
|
31
|
+
|
|
32
|
+
var _outputFileSelectionError = require("../../../components/FileManager/outputFileSelectionError");
|
|
33
|
+
|
|
34
|
+
var _useSnackbar2 = require("../../../hooks/useSnackbar");
|
|
35
|
+
|
|
36
|
+
var _edit = require("../icons/edit.svg");
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Package react-hotkeyz has no types.
|
|
40
|
+
*/
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Package dataurl-to-blob has no types.
|
|
45
|
+
*/
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
function toDataUrl(url) {
|
|
48
|
+
return new Promise(function (resolve) {
|
|
49
|
+
var xhr = new window.XMLHttpRequest();
|
|
50
|
+
|
|
51
|
+
xhr.onload = function () {
|
|
52
|
+
var reader = new window.FileReader();
|
|
53
|
+
|
|
54
|
+
reader.onloadend = function () {
|
|
55
|
+
resolve(reader.result);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
reader.readAsDataURL(xhr.response);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
xhr.open("GET", url);
|
|
62
|
+
xhr.responseType = "blob";
|
|
63
|
+
xhr.send();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var initialState = {
|
|
68
|
+
showImageEditor: false,
|
|
69
|
+
dataUrl: null
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
var reducer = function reducer(state, action) {
|
|
73
|
+
var next = (0, _objectSpread2.default)({}, state);
|
|
74
|
+
|
|
75
|
+
switch (action.type) {
|
|
76
|
+
case "setDataUrl":
|
|
77
|
+
next.dataUrl = action.dataUrl;
|
|
78
|
+
next.showImageEditor = true;
|
|
79
|
+
break;
|
|
80
|
+
|
|
81
|
+
case "hideImageEditor":
|
|
82
|
+
next.dataUrl = null;
|
|
83
|
+
next.showImageEditor = false;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return next;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
var EditAction = function EditAction(props) {
|
|
91
|
+
var file = props.file,
|
|
92
|
+
uploadFile = props.uploadFile,
|
|
93
|
+
validateFiles = props.validateFiles,
|
|
94
|
+
canEdit = props.canEdit;
|
|
95
|
+
|
|
96
|
+
var _React$useReducer = React.useReducer(reducer, initialState),
|
|
97
|
+
_React$useReducer2 = (0, _slicedToArray2.default)(_React$useReducer, 2),
|
|
98
|
+
state = _React$useReducer2[0],
|
|
99
|
+
dispatch = _React$useReducer2[1];
|
|
100
|
+
|
|
101
|
+
var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
|
|
102
|
+
showSnackbar = _useSnackbar.showSnackbar; // Render nothing if the user don't have required permission for "edit".
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
if (!canEdit(file)) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Tooltip.Tooltip, {
|
|
110
|
+
content: /*#__PURE__*/React.createElement("span", null, "Edit image"),
|
|
111
|
+
placement: "bottom"
|
|
112
|
+
}, /*#__PURE__*/React.createElement(_Button.IconButton, {
|
|
113
|
+
"data-testid": "fm-edit-image-button",
|
|
114
|
+
icon: /*#__PURE__*/React.createElement(_edit.ReactComponent, {
|
|
115
|
+
style: {
|
|
116
|
+
margin: "0 8px 0 0"
|
|
117
|
+
}
|
|
118
|
+
}),
|
|
119
|
+
onClick: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
120
|
+
var dataUrl;
|
|
121
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
122
|
+
while (1) {
|
|
123
|
+
switch (_context.prev = _context.next) {
|
|
124
|
+
case 0:
|
|
125
|
+
_context.next = 2;
|
|
126
|
+
return toDataUrl(file.src);
|
|
127
|
+
|
|
128
|
+
case 2:
|
|
129
|
+
dataUrl = _context.sent;
|
|
130
|
+
dispatch({
|
|
131
|
+
type: "setDataUrl",
|
|
132
|
+
dataUrl: dataUrl
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
case 4:
|
|
136
|
+
case "end":
|
|
137
|
+
return _context.stop();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}, _callee);
|
|
141
|
+
}))
|
|
142
|
+
})), /*#__PURE__*/React.createElement(_reactHotkeyz.Hotkeys, {
|
|
143
|
+
zIndex: 60,
|
|
144
|
+
disabled: !state.dataUrl
|
|
145
|
+
}, /*#__PURE__*/React.createElement(_ImageUpload.ImageEditorDialog, {
|
|
146
|
+
"data-testid": "fm-image-editor-dialog",
|
|
147
|
+
dialogZIndex: 100,
|
|
148
|
+
open: state.showImageEditor,
|
|
149
|
+
src: state.dataUrl,
|
|
150
|
+
onClose: function onClose() {
|
|
151
|
+
return dispatch({
|
|
152
|
+
type: "hideImageEditor"
|
|
153
|
+
});
|
|
154
|
+
},
|
|
155
|
+
onAccept: function onAccept(src) {
|
|
156
|
+
var blob = (0, _dataurlToBlob.default)(src);
|
|
157
|
+
var errors = validateFiles([blob]);
|
|
158
|
+
|
|
159
|
+
if (errors.length) {
|
|
160
|
+
/**
|
|
161
|
+
* TODO @ts-refactor
|
|
162
|
+
* Figure out if incoming errors var is wrong or the one in the outputFileSelectionError
|
|
163
|
+
*/
|
|
164
|
+
// @ts-ignore
|
|
165
|
+
showSnackbar((0, _outputFileSelectionError.outputFileSelectionError)(errors));
|
|
166
|
+
} else {
|
|
167
|
+
blob.name = file.name;
|
|
168
|
+
uploadFile(blob);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
dispatch({
|
|
172
|
+
type: "hideImageEditor"
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
})));
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
var _default = EditAction;
|
|
179
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toDataUrl","url","Promise","resolve","xhr","window","XMLHttpRequest","onload","reader","FileReader","onloadend","result","readAsDataURL","response","open","responseType","send","initialState","showImageEditor","dataUrl","reducer","state","action","next","type","EditAction","props","file","uploadFile","validateFiles","canEdit","React","useReducer","dispatch","useSnackbar","showSnackbar","margin","src","blob","dataURLtoBlob","errors","length","outputFileSelectionError","name"],"sources":["EditAction.tsx"],"sourcesContent":["import * as React from \"react\";\n/**\n * Package react-hotkeyz has no types.\n */\n// @ts-ignore\nimport { Hotkeys } from \"react-hotkeyz\";\n/**\n * Package dataurl-to-blob has no types.\n */\n// @ts-ignore\nimport dataURLtoBlob from \"dataurl-to-blob\";\nimport { ImageEditorDialog } from \"@webiny/ui/ImageUpload\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { outputFileSelectionError } from \"~/components/FileManager/outputFileSelectionError\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { ReactComponent as EditIcon } from \"../icons/edit.svg\";\nimport { FileItem } from \"~/components/FileManager/types\";\n\nfunction toDataUrl(url: string): Promise<string> {\n return new Promise((resolve: (value: string) => void) => {\n const xhr = new window.XMLHttpRequest();\n xhr.onload = function () {\n const reader = new window.FileReader();\n reader.onloadend = function () {\n resolve(reader.result as string);\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.send();\n });\n}\ninterface State {\n showImageEditor: boolean;\n dataUrl: string | null;\n}\ninterface Action {\n type: \"setDataUrl\" | \"hideImageEditor\";\n dataUrl?: string | null;\n}\nconst initialState: State = {\n showImageEditor: false,\n dataUrl: null\n};\nconst reducer = (state: State, action: Action): State => {\n const next: State = { ...state };\n\n switch (action.type) {\n case \"setDataUrl\":\n next.dataUrl = action.dataUrl as string;\n next.showImageEditor = true;\n break;\n case \"hideImageEditor\":\n next.dataUrl = null;\n next.showImageEditor = false;\n break;\n }\n\n return next;\n};\n\ninterface EditActionProps {\n file: FileItem;\n uploadFile: (file: FileItem) => void;\n validateFiles: (blobs: any[]) => Error[];\n canEdit: (file: FileItem) => boolean;\n}\n\nconst EditAction: React.FC<EditActionProps> = props => {\n const { file, uploadFile, validateFiles, canEdit } = props;\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const { showSnackbar } = useSnackbar();\n // Render nothing if the user don't have required permission for \"edit\".\n if (!canEdit(file)) {\n return null;\n }\n\n return (\n <>\n <Tooltip content={<span>Edit image</span>} placement={\"bottom\"}>\n <IconButton\n data-testid={\"fm-edit-image-button\"}\n icon={<EditIcon style={{ margin: \"0 8px 0 0\" }} />}\n onClick={async () => {\n const dataUrl = await toDataUrl(file.src);\n dispatch({ type: \"setDataUrl\", dataUrl });\n }}\n />\n </Tooltip>\n <Hotkeys zIndex={60} disabled={!state.dataUrl}>\n <ImageEditorDialog\n data-testid={\"fm-image-editor-dialog\"}\n dialogZIndex={100}\n open={state.showImageEditor}\n src={state.dataUrl as string}\n onClose={() => dispatch({ type: \"hideImageEditor\" })}\n onAccept={src => {\n const blob = dataURLtoBlob(src);\n const errors = validateFiles([blob]);\n\n if (errors.length) {\n /**\n * TODO @ts-refactor\n * Figure out if incoming errors var is wrong or the one in the outputFileSelectionError\n */\n // @ts-ignore\n showSnackbar(outputFileSelectionError(errors));\n } else {\n blob.name = file.name;\n uploadFile(blob);\n }\n\n dispatch({ type: \"hideImageEditor\" });\n }}\n />\n </Hotkeys>\n </>\n );\n};\n\nexport default EditAction;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAKA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAfA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAUA,SAASA,SAAT,CAAmBC,GAAnB,EAAiD;EAC7C,OAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAsC;IACrD,IAAMC,GAAG,GAAG,IAAIC,MAAM,CAACC,cAAX,EAAZ;;IACAF,GAAG,CAACG,MAAJ,GAAa,YAAY;MACrB,IAAMC,MAAM,GAAG,IAAIH,MAAM,CAACI,UAAX,EAAf;;MACAD,MAAM,CAACE,SAAP,GAAmB,YAAY;QAC3BP,OAAO,CAACK,MAAM,CAACG,MAAR,CAAP;MACH,CAFD;;MAGAH,MAAM,CAACI,aAAP,CAAqBR,GAAG,CAACS,QAAzB;IACH,CAND;;IAOAT,GAAG,CAACU,IAAJ,CAAS,KAAT,EAAgBb,GAAhB;IACAG,GAAG,CAACW,YAAJ,GAAmB,MAAnB;IACAX,GAAG,CAACY,IAAJ;EACH,CAZM,CAAP;AAaH;;AASD,IAAMC,YAAmB,GAAG;EACxBC,eAAe,EAAE,KADO;EAExBC,OAAO,EAAE;AAFe,CAA5B;;AAIA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,KAAD,EAAeC,MAAf,EAAyC;EACrD,IAAMC,IAAW,mCAAQF,KAAR,CAAjB;;EAEA,QAAQC,MAAM,CAACE,IAAf;IACI,KAAK,YAAL;MACID,IAAI,CAACJ,OAAL,GAAeG,MAAM,CAACH,OAAtB;MACAI,IAAI,CAACL,eAAL,GAAuB,IAAvB;MACA;;IACJ,KAAK,iBAAL;MACIK,IAAI,CAACJ,OAAL,GAAe,IAAf;MACAI,IAAI,CAACL,eAAL,GAAuB,KAAvB;MACA;EARR;;EAWA,OAAOK,IAAP;AACH,CAfD;;AAwBA,IAAME,UAAqC,GAAG,SAAxCA,UAAwC,CAAAC,KAAK,EAAI;EACnD,IAAQC,IAAR,GAAqDD,KAArD,CAAQC,IAAR;EAAA,IAAcC,UAAd,GAAqDF,KAArD,CAAcE,UAAd;EAAA,IAA0BC,aAA1B,GAAqDH,KAArD,CAA0BG,aAA1B;EAAA,IAAyCC,OAAzC,GAAqDJ,KAArD,CAAyCI,OAAzC;;EACA,wBAA0BC,KAAK,CAACC,UAAN,CAAiBZ,OAAjB,EAA0BH,YAA1B,CAA1B;EAAA;EAAA,IAAOI,KAAP;EAAA,IAAcY,QAAd;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR,CAHmD,CAInD;;;EACA,IAAI,CAACL,OAAO,CAACH,IAAD,CAAZ,EAAoB;IAChB,OAAO,IAAP;EACH;;EAED,oBACI,uDACI,oBAAC,gBAAD;IAAS,OAAO,eAAE,+CAAlB;IAA2C,SAAS,EAAE;EAAtD,gBACI,oBAAC,kBAAD;IACI,eAAa,sBADjB;IAEI,IAAI,eAAE,oBAAC,oBAAD;MAAU,KAAK,EAAE;QAAES,MAAM,EAAE;MAAV;IAAjB,EAFV;IAGI,OAAO,sGAAE;MAAA;MAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACiBpC,SAAS,CAAC2B,IAAI,CAACU,GAAN,CAD1B;;YAAA;cACClB,OADD;cAELc,QAAQ,CAAC;gBAAET,IAAI,EAAE,YAAR;gBAAsBL,OAAO,EAAPA;cAAtB,CAAD,CAAR;;YAFK;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAF;EAHX,EADJ,CADJ,eAWI,oBAAC,qBAAD;IAAS,MAAM,EAAE,EAAjB;IAAqB,QAAQ,EAAE,CAACE,KAAK,CAACF;EAAtC,gBACI,oBAAC,8BAAD;IACI,eAAa,wBADjB;IAEI,YAAY,EAAE,GAFlB;IAGI,IAAI,EAAEE,KAAK,CAACH,eAHhB;IAII,GAAG,EAAEG,KAAK,CAACF,OAJf;IAKI,OAAO,EAAE;MAAA,OAAMc,QAAQ,CAAC;QAAET,IAAI,EAAE;MAAR,CAAD,CAAd;IAAA,CALb;IAMI,QAAQ,EAAE,kBAAAa,GAAG,EAAI;MACb,IAAMC,IAAI,GAAG,IAAAC,sBAAA,EAAcF,GAAd,CAAb;MACA,IAAMG,MAAM,GAAGX,aAAa,CAAC,CAACS,IAAD,CAAD,CAA5B;;MAEA,IAAIE,MAAM,CAACC,MAAX,EAAmB;QACf;AAC5B;AACA;AACA;QAC4B;QACAN,YAAY,CAAC,IAAAO,kDAAA,EAAyBF,MAAzB,CAAD,CAAZ;MACH,CAPD,MAOO;QACHF,IAAI,CAACK,IAAL,GAAYhB,IAAI,CAACgB,IAAjB;QACAf,UAAU,CAACU,IAAD,CAAV;MACH;;MAEDL,QAAQ,CAAC;QAAET,IAAI,EAAE;MAAR,CAAD,CAAR;IACH;EAvBL,EADJ,CAXJ,CADJ;AAyCH,CAlDD;;eAoDeC,U"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.imageFileTypePlugin = void 0;
|
|
11
|
+
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _emotion = require("emotion");
|
|
15
|
+
|
|
16
|
+
var _components = require("@webiny/app/components");
|
|
17
|
+
|
|
18
|
+
var _EditAction = _interopRequireDefault(require("./EditAction"));
|
|
19
|
+
|
|
20
|
+
var _FileManagerFileTypePlugin = require("../../FileManagerFileTypePlugin");
|
|
21
|
+
|
|
22
|
+
var styles = /*#__PURE__*/(0, _emotion.css)({
|
|
23
|
+
maxHeight: 200,
|
|
24
|
+
maxWidth: 200,
|
|
25
|
+
width: "auto",
|
|
26
|
+
position: "absolute",
|
|
27
|
+
top: "50%",
|
|
28
|
+
left: "50%",
|
|
29
|
+
transform: "translateX(-50%) translateY(-50%)"
|
|
30
|
+
}, "label:styles;");
|
|
31
|
+
var imageFileTypePlugin = new _FileManagerFileTypePlugin.FileManagerFileTypePlugin({
|
|
32
|
+
types: ["image/*"],
|
|
33
|
+
actions: [_EditAction.default],
|
|
34
|
+
render: function render(_ref) {
|
|
35
|
+
var file = _ref.file;
|
|
36
|
+
return /*#__PURE__*/React.createElement(_components.Image, {
|
|
37
|
+
className: styles,
|
|
38
|
+
src: file.src,
|
|
39
|
+
alt: file.name,
|
|
40
|
+
transform: {
|
|
41
|
+
width: 300
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
exports.imageFileTypePlugin = imageFileTypePlugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["styles","css","maxHeight","maxWidth","width","position","top","left","transform","imageFileTypePlugin","FileManagerFileTypePlugin","types","actions","EditAction","render","file","src","name"],"sources":["index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { css } from \"emotion\";\nimport { Image } from \"@webiny/app/components\";\n\nimport EditAction from \"./EditAction\";\nimport { FileManagerFileTypePlugin } from \"~/plugins/FileManagerFileTypePlugin\";\n\nconst styles = css({\n maxHeight: 200,\n maxWidth: 200,\n width: \"auto\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translateX(-50%) translateY(-50%)\"\n});\n\nexport const imageFileTypePlugin = new FileManagerFileTypePlugin({\n types: [\"image/*\"],\n actions: [EditAction],\n render({ file }) {\n return (\n <Image className={styles} src={file.src} alt={file.name} transform={{ width: 300 }} />\n );\n }\n});\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA,IAAMA,MAAM,gBAAG,IAAAC,YAAA,EAAI;EACfC,SAAS,EAAE,GADI;EAEfC,QAAQ,EAAE,GAFK;EAGfC,KAAK,EAAE,MAHQ;EAIfC,QAAQ,EAAE,UAJK;EAKfC,GAAG,EAAE,KALU;EAMfC,IAAI,EAAE,KANS;EAOfC,SAAS,EAAE;AAPI,CAAJ,kBAAf;AAUO,IAAMC,mBAAmB,GAAG,IAAIC,oDAAJ,CAA8B;EAC7DC,KAAK,EAAE,CAAC,SAAD,CADsD;EAE7DC,OAAO,EAAE,CAACC,mBAAD,CAFoD;EAG7DC,MAH6D,wBAG5C;IAAA,IAARC,IAAQ,QAARA,IAAQ;IACb,oBACI,oBAAC,iBAAD;MAAO,SAAS,EAAEf,MAAlB;MAA0B,GAAG,EAAEe,IAAI,CAACC,GAApC;MAAyC,GAAG,EAAED,IAAI,CAACE,IAAnD;MAAyD,SAAS,EAAE;QAAEb,KAAK,EAAE;MAAT;IAApE,EADJ;EAGH;AAP4D,CAA9B,CAA5B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
|
|
4
|
+
height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
|
|
5
|
+
<g id="Bounding_Boxes">
|
|
6
|
+
<g id="ui_x5F_spec_x5F_header_copy_3">
|
|
7
|
+
</g>
|
|
8
|
+
<path fill="none" d="M0,0h24v24H0V0z"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="Rounded">
|
|
11
|
+
<g id="ui_x5F_spec_x5F_header_copy_7">
|
|
12
|
+
</g>
|
|
13
|
+
<path d="M3,17.46v3.04C3,20.78,3.22,21,3.5,21h3.04c0.13,0,0.26-0.05,0.35-0.15L17.81,9.94l-3.75-3.75L3.15,17.1
|
|
14
|
+
C3.05,17.2,3,17.32,3,17.46z M20.71,7.04c0.39-0.39,0.39-1.02,0-1.41l-2.34-2.34c-0.39-0.39-1.02-0.39-1.41,0l-1.83,1.83l3.75,3.75
|
|
15
|
+
L20.71,7.04z"/>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M14.59 2.59c-.38-.38-.89-.59-1.42-.59H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8.83c0-.53-.21-1.04-.59-1.41l-4.82-4.83zM15 18H9c-.55 0-1-.45-1-1s.45-1 1-1h6c.55 0 1 .45 1 1s-.45 1-1 1zm0-4H9c-.55 0-1-.45-1-1s.45-1 1-1h6c.55 0 1 .45 1 1s-.45 1-1 1zm-2-6V3.5L18.5 9H14c-.55 0-1-.45-1-1z"/></svg>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "defaultFileTypePlugin", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _fileDefault.defaultFileTypePlugin;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "imageFileTypePlugin", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _fileImage.imageFileTypePlugin;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
var _fileDefault = require("./fileDefault");
|
|
20
|
+
|
|
21
|
+
var _fileImage = require("./fileImage");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { defaultFileTypePlugin } from \"./fileDefault\";\nexport { imageFileTypePlugin } from \"./fileImage\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AdminGlobalSearchPlugin, AdminGlobalSearchPreventHotkeyPlugin } from "../../types";
|
|
2
|
+
export interface SearchBarState {
|
|
3
|
+
active: boolean;
|
|
4
|
+
searchTerm: {
|
|
5
|
+
previous: string;
|
|
6
|
+
current: string;
|
|
7
|
+
};
|
|
8
|
+
plugins: {
|
|
9
|
+
list: ReadonlyArray<AdminGlobalSearchPlugin>;
|
|
10
|
+
hotKeys: ReadonlyArray<AdminGlobalSearchPreventHotkeyPlugin>;
|
|
11
|
+
current?: AdminGlobalSearchPlugin;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
declare const _default: import("../../index").ComposableFC<{}>;
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
20
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
+
|
|
22
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var React = _interopRequireWildcard(require("react"));
|
|
27
|
+
|
|
28
|
+
var _dotPropImmutable = require("dot-prop-immutable");
|
|
29
|
+
|
|
30
|
+
var _reactRouter = require("@webiny/react-router");
|
|
31
|
+
|
|
32
|
+
var _downshift = _interopRequireDefault(require("downshift"));
|
|
33
|
+
|
|
34
|
+
var _plugins = require("@webiny/plugins");
|
|
35
|
+
|
|
36
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
37
|
+
|
|
38
|
+
var _reactHotkeyz = require("react-hotkeyz");
|
|
39
|
+
|
|
40
|
+
var _Icon = require("@webiny/ui/Icon");
|
|
41
|
+
|
|
42
|
+
var _Elevation = require("@webiny/ui/Elevation");
|
|
43
|
+
|
|
44
|
+
var _SearchBarDropdown = _interopRequireDefault(require("./SearchBarDropdown"));
|
|
45
|
+
|
|
46
|
+
var _roundSearch24px = require("./icons/round-search-24px.svg");
|
|
47
|
+
|
|
48
|
+
var _styled = require("./styled");
|
|
49
|
+
|
|
50
|
+
var _ = require("../..");
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Package react-hotkeyz does not have types.
|
|
54
|
+
*/
|
|
55
|
+
// @ts-ignore
|
|
56
|
+
// UI components
|
|
57
|
+
// Icons
|
|
58
|
+
// Local components
|
|
59
|
+
var SearchBar = /*#__PURE__*/function (_React$Component) {
|
|
60
|
+
(0, _inherits2.default)(SearchBar, _React$Component);
|
|
61
|
+
|
|
62
|
+
var _super = (0, _createSuper2.default)(SearchBar);
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Helps us trigger some of the downshift's methods (eg. clearSelection) and helps us to avoid adding state.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* At some point we must programmatically focus the input.
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Let's check if current route is defined in one of the registered plugins.
|
|
74
|
+
* If so, then check current route query for search term and set it as default value of search input.
|
|
75
|
+
* @param props
|
|
76
|
+
*/
|
|
77
|
+
function SearchBar(props) {
|
|
78
|
+
var _this;
|
|
79
|
+
|
|
80
|
+
(0, _classCallCheck2.default)(this, SearchBar);
|
|
81
|
+
_this = _super.call(this, props);
|
|
82
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
|
|
83
|
+
active: false,
|
|
84
|
+
searchTerm: {
|
|
85
|
+
previous: "",
|
|
86
|
+
current: ""
|
|
87
|
+
},
|
|
88
|
+
plugins: {
|
|
89
|
+
// List of all registered "admin-global-search" plugins.
|
|
90
|
+
get list() {
|
|
91
|
+
return _plugins.plugins.byType("admin-global-search");
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
hotKeys: _plugins.plugins.byType("admin-global-search-prevent-hotkey"),
|
|
95
|
+
// Current plugin - set by examining current route and its query params (on construct).
|
|
96
|
+
current: undefined
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "downshift", /*#__PURE__*/React.createRef());
|
|
100
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "input", /*#__PURE__*/React.createRef());
|
|
101
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleOpenHotkey", function (e) {
|
|
102
|
+
for (var i = 0; i < _this.state.plugins.hotKeys.length; i++) {
|
|
103
|
+
var hotKey = _this.state.plugins.hotKeys[i];
|
|
104
|
+
|
|
105
|
+
if (hotKey.preventOpen(e)) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
|
|
112
|
+
if (!_this.input.current) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
_this.input.current.focus();
|
|
117
|
+
});
|
|
118
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "submitSearchTerm", function (plugin) {
|
|
119
|
+
_this.setState(function (state) {
|
|
120
|
+
var newState = (0, _dotPropImmutable.set)(state, "searchTerm.previous", state.searchTerm.current);
|
|
121
|
+
return (0, _dotPropImmutable.set)(newState, "plugins.current", plugin);
|
|
122
|
+
}, function () {
|
|
123
|
+
var query = new URLSearchParams();
|
|
124
|
+
|
|
125
|
+
if (_this.state.searchTerm.current) {
|
|
126
|
+
// If "search" key in the plugin was defined, it means SearchInput values were set. Otherwise,
|
|
127
|
+
// we need to send the plain string into the "search" query param. This behavior was needed
|
|
128
|
+
// eg. for pages, since Page entity doesn't use regular SearchInput type, but plain string.
|
|
129
|
+
if (plugin.search) {
|
|
130
|
+
query.set("search", JSON.stringify((0, _objectSpread2.default)({
|
|
131
|
+
query: _this.state.searchTerm.current
|
|
132
|
+
}, plugin.search)));
|
|
133
|
+
} else {
|
|
134
|
+
query.set("search", _this.state.searchTerm.current);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
_this.props.history.push({
|
|
139
|
+
pathname: plugin.route,
|
|
140
|
+
search: query.toString()
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "cancelSearchTerm", function () {
|
|
145
|
+
_this.setState(function (state) {
|
|
146
|
+
state.searchTerm.current = state.searchTerm.previous;
|
|
147
|
+
return state;
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
_this.state.plugins.current = _this.state.plugins.list.find(function (p) {
|
|
151
|
+
return p.route === props.location.pathname;
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
if (_this.state.plugins.current) {
|
|
155
|
+
var search;
|
|
156
|
+
var query = new URLSearchParams(props.location.search);
|
|
157
|
+
|
|
158
|
+
try {
|
|
159
|
+
search = JSON.parse(query.get("search") || "").query;
|
|
160
|
+
} catch (e) {
|
|
161
|
+
search = query.get("search");
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
_this.state.searchTerm.current = search || "";
|
|
165
|
+
_this.state.searchTerm.previous = _this.state.searchTerm.current;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return _this;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
(0, _createClass2.default)(SearchBar, [{
|
|
172
|
+
key: "render",
|
|
173
|
+
value: function render() {
|
|
174
|
+
var _this2 = this;
|
|
175
|
+
|
|
176
|
+
return /*#__PURE__*/React.createElement(_downshift.default, {
|
|
177
|
+
ref: this.downshift,
|
|
178
|
+
itemToString: function itemToString(item) {
|
|
179
|
+
return item && item.label;
|
|
180
|
+
}
|
|
181
|
+
}, function (downshiftProps) {
|
|
182
|
+
var isOpen = downshiftProps.isOpen,
|
|
183
|
+
openMenu = downshiftProps.openMenu,
|
|
184
|
+
closeMenu = downshiftProps.closeMenu,
|
|
185
|
+
getInputProps = downshiftProps.getInputProps;
|
|
186
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
187
|
+
style: {
|
|
188
|
+
width: "100%"
|
|
189
|
+
}
|
|
190
|
+
}, /*#__PURE__*/React.createElement(_reactHotkeyz.Hotkeys, {
|
|
191
|
+
zIndex: 10,
|
|
192
|
+
keys: {
|
|
193
|
+
// @ts-ignore
|
|
194
|
+
esc: function esc() {
|
|
195
|
+
return document.activeElement.blur();
|
|
196
|
+
},
|
|
197
|
+
"/": _this2.handleOpenHotkey
|
|
198
|
+
}
|
|
199
|
+
}), /*#__PURE__*/React.createElement(_reactHotkeyz.Hotkeys, {
|
|
200
|
+
zIndex: 11,
|
|
201
|
+
disabled: !isOpen,
|
|
202
|
+
keys: {
|
|
203
|
+
esc: function esc() {
|
|
204
|
+
_this2.cancelSearchTerm();
|
|
205
|
+
|
|
206
|
+
closeMenu();
|
|
207
|
+
},
|
|
208
|
+
enter: function enter() {
|
|
209
|
+
return setTimeout(function () {
|
|
210
|
+
var selectedItem = _this2.downshift.current.state.selectedItem;
|
|
211
|
+
|
|
212
|
+
if (selectedItem) {
|
|
213
|
+
closeMenu();
|
|
214
|
+
|
|
215
|
+
_this2.submitSearchTerm(selectedItem);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}), /*#__PURE__*/React.createElement(_Elevation.Elevation, {
|
|
221
|
+
className: (0, _classnames.default)(_styled.searchWrapper, {
|
|
222
|
+
active: _this2.state.active
|
|
223
|
+
}),
|
|
224
|
+
z: 0
|
|
225
|
+
}, /*#__PURE__*/React.createElement(_styled.SearchBarWrapper, null, /*#__PURE__*/React.createElement(_styled.SearchBarInputWrapper, null, /*#__PURE__*/React.createElement(_Icon.Icon, {
|
|
226
|
+
className: _styled.icon,
|
|
227
|
+
icon: /*#__PURE__*/React.createElement(_roundSearch24px.ReactComponent, null)
|
|
228
|
+
}), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("input", getInputProps({
|
|
229
|
+
placeholder: "Search...",
|
|
230
|
+
className: (0, _classnames.default)("mdc-text-field__input", _styled.searchBarInput),
|
|
231
|
+
ref: _this2.input,
|
|
232
|
+
value: _this2.state.searchTerm.current,
|
|
233
|
+
// @ts-ignore
|
|
234
|
+
onClick: openMenu,
|
|
235
|
+
onBlur: function onBlur() {
|
|
236
|
+
_this2.cancelSearchTerm();
|
|
237
|
+
|
|
238
|
+
_this2.setState({
|
|
239
|
+
active: false
|
|
240
|
+
});
|
|
241
|
+
},
|
|
242
|
+
onFocus: function onFocus() {
|
|
243
|
+
_this2.setState({
|
|
244
|
+
active: true
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
openMenu();
|
|
248
|
+
},
|
|
249
|
+
onChange: function onChange(e) {
|
|
250
|
+
var value = e.target.value || "";
|
|
251
|
+
|
|
252
|
+
_this2.setState(function (state) {
|
|
253
|
+
state.searchTerm.current = value;
|
|
254
|
+
return state;
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}))), /*#__PURE__*/React.createElement(_styled.SearchShortcut, null, "/"))), isOpen && /*#__PURE__*/React.createElement(_SearchBarDropdown.default, {
|
|
258
|
+
context: _this2
|
|
259
|
+
})));
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}]);
|
|
263
|
+
return SearchBar;
|
|
264
|
+
}(React.Component);
|
|
265
|
+
|
|
266
|
+
var SearchBarContainer = function SearchBarContainer() {
|
|
267
|
+
var routerProps = (0, _reactRouter.useRouter)();
|
|
268
|
+
return /*#__PURE__*/React.createElement(SearchBar, routerProps);
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
var _default = (0, _.makeComposable)("SearchBarContainer", SearchBarContainer);
|
|
272
|
+
|
|
273
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SearchBar","props","active","searchTerm","previous","current","plugins","list","byType","hotKeys","undefined","React","createRef","e","i","state","length","hotKey","preventOpen","preventDefault","input","focus","plugin","setState","newState","set","query","URLSearchParams","search","JSON","stringify","history","push","pathname","route","toString","find","p","location","parse","get","downshift","item","label","downshiftProps","isOpen","openMenu","closeMenu","getInputProps","width","esc","document","activeElement","blur","handleOpenHotkey","cancelSearchTerm","enter","setTimeout","selectedItem","submitSearchTerm","classnames","searchWrapper","icon","placeholder","className","searchBarInput","ref","value","onClick","onBlur","onFocus","onChange","target","Component","SearchBarContainer","routerProps","useRouter","makeComposable"],"sources":["SearchBar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { set } from \"dot-prop-immutable\";\nimport { useRouter, UseRouter } from \"@webiny/react-router\";\nimport Downshift from \"downshift\";\nimport { plugins } from \"@webiny/plugins\";\nimport { AdminGlobalSearchPlugin, AdminGlobalSearchPreventHotkeyPlugin } from \"~/types\";\nimport classnames from \"classnames\";\n/**\n * Package react-hotkeyz does not have types.\n */\n// @ts-ignore\nimport { Hotkeys } from \"react-hotkeyz\";\n\n// UI components\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Elevation } from \"@webiny/ui/Elevation\";\nimport SearchBarDropdown from \"./SearchBarDropdown\";\n\n// Icons\nimport { ReactComponent as SearchIcon } from \"./icons/round-search-24px.svg\";\n\n// Local components\nimport {\n SearchBarWrapper,\n SearchBarInputWrapper,\n SearchShortcut,\n searchBarInput,\n icon,\n searchWrapper\n} from \"./styled\";\nimport { makeComposable } from \"~/index\";\n\ntype SearchBarProps = UseRouter;\n\nexport interface SearchBarState {\n active: boolean;\n searchTerm: { previous: string; current: string };\n plugins: {\n list: ReadonlyArray<AdminGlobalSearchPlugin>;\n hotKeys: ReadonlyArray<AdminGlobalSearchPreventHotkeyPlugin>;\n current?: AdminGlobalSearchPlugin;\n };\n}\n\nclass SearchBar extends React.Component<SearchBarProps, SearchBarState> {\n public override state: SearchBarState = {\n active: false,\n searchTerm: {\n previous: \"\",\n current: \"\"\n },\n plugins: {\n // List of all registered \"admin-global-search\" plugins.\n get list() {\n return plugins.byType<AdminGlobalSearchPlugin>(\"admin-global-search\");\n },\n hotKeys: plugins.byType<AdminGlobalSearchPreventHotkeyPlugin>(\n \"admin-global-search-prevent-hotkey\"\n ),\n // Current plugin - set by examining current route and its query params (on construct).\n current: undefined\n }\n };\n\n /**\n * Helps us trigger some of the downshift's methods (eg. clearSelection) and helps us to avoid adding state.\n */\n public readonly downshift: any = React.createRef();\n\n /**\n * At some point we must programmatically focus the input.\n */\n private readonly input = React.createRef<HTMLInputElement>();\n\n /**\n * Let's check if current route is defined in one of the registered plugins.\n * If so, then check current route query for search term and set it as default value of search input.\n * @param props\n */\n constructor(props: SearchBarProps) {\n super(props);\n this.state.plugins.current = this.state.plugins.list.find(\n p => p.route === props.location.pathname\n );\n\n if (this.state.plugins.current) {\n let search;\n const query = new URLSearchParams(props.location.search);\n try {\n search = JSON.parse(query.get(\"search\") || \"\").query;\n } catch (e) {\n search = query.get(\"search\");\n }\n\n this.state.searchTerm.current = search || \"\";\n this.state.searchTerm.previous = this.state.searchTerm.current;\n }\n }\n\n private readonly handleOpenHotkey = (e: React.KeyboardEvent): void => {\n for (let i = 0; i < this.state.plugins.hotKeys.length; i++) {\n const hotKey = this.state.plugins.hotKeys[i];\n if (hotKey.preventOpen(e)) {\n return;\n }\n }\n\n e.preventDefault();\n if (!this.input.current) {\n return;\n }\n this.input.current.focus();\n };\n\n /**\n * Re-routes to given route (provided by the plugin) with needed search query params.\n * It also manages previous and current search terms and automatically highlighted item in dropdown.\n * @param plugin\n */\n public readonly submitSearchTerm = (plugin: AdminGlobalSearchPlugin): void => {\n this.setState(\n state => {\n const newState = set(state, \"searchTerm.previous\", state.searchTerm.current);\n return set(newState, \"plugins.current\", plugin) as any;\n },\n () => {\n const query = new URLSearchParams();\n\n if (this.state.searchTerm.current) {\n // If \"search\" key in the plugin was defined, it means SearchInput values were set. Otherwise,\n // we need to send the plain string into the \"search\" query param. This behavior was needed\n // eg. for pages, since Page entity doesn't use regular SearchInput type, but plain string.\n if (plugin.search) {\n query.set(\n \"search\",\n JSON.stringify({\n query: this.state.searchTerm.current,\n ...plugin.search\n })\n );\n } else {\n query.set(\"search\", this.state.searchTerm.current);\n }\n }\n\n this.props.history.push({\n pathname: plugin.route,\n search: query.toString()\n });\n }\n );\n };\n\n private readonly cancelSearchTerm = (): void => {\n this.setState(state => {\n state.searchTerm.current = state.searchTerm.previous;\n return state;\n });\n };\n\n public override render() {\n return (\n <Downshift ref={this.downshift} itemToString={item => item && item.label}>\n {downshiftProps => {\n const { isOpen, openMenu, closeMenu, getInputProps } = downshiftProps;\n\n return (\n <div style={{ width: \"100%\" }}>\n <Hotkeys\n zIndex={10}\n keys={{\n // @ts-ignore\n esc: () => document.activeElement.blur(),\n \"/\": this.handleOpenHotkey\n }}\n />\n\n <Hotkeys\n zIndex={11}\n disabled={!isOpen}\n keys={{\n esc: () => {\n this.cancelSearchTerm();\n closeMenu();\n },\n enter: () =>\n setTimeout(() => {\n const { selectedItem } = this.downshift.current.state;\n if (selectedItem) {\n closeMenu();\n this.submitSearchTerm(selectedItem);\n }\n })\n }}\n />\n\n <Elevation\n className={classnames(searchWrapper, { active: this.state.active })}\n z={0}\n >\n <SearchBarWrapper>\n <SearchBarInputWrapper>\n <Icon className={icon} icon={<SearchIcon />} />\n\n <React.Fragment>\n <input\n {...getInputProps({\n placeholder: \"Search...\",\n className: classnames(\n \"mdc-text-field__input\",\n searchBarInput\n ),\n ref: this.input,\n value: this.state.searchTerm.current,\n // @ts-ignore\n onClick: openMenu,\n onBlur: () => {\n this.cancelSearchTerm();\n this.setState({ active: false });\n },\n onFocus: () => {\n this.setState({ active: true });\n openMenu();\n },\n onChange: (\n e: React.ChangeEvent<HTMLInputElement>\n ) => {\n const value = e.target.value || \"\";\n this.setState(state => {\n state.searchTerm.current = value;\n return state;\n });\n }\n })}\n />\n </React.Fragment>\n\n <SearchShortcut>/</SearchShortcut>\n </SearchBarInputWrapper>\n </SearchBarWrapper>\n {isOpen && <SearchBarDropdown context={this} />}\n </Elevation>\n </div>\n );\n }}\n </Downshift>\n );\n }\n}\n\nconst SearchBarContainer: React.FC = () => {\n const routerProps = useRouter();\n\n return <SearchBar {...routerProps} />;\n};\n\nexport default makeComposable(\"SearchBarContainer\", SearchBarContainer);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { AdminGlobalSearchPlugin } from "../../types";
|
|
3
|
+
import { Actions as DownshiftActions, DownshiftState, PropGetters } from "downshift";
|
|
4
|
+
import { SearchBarState } from "./SearchBar";
|
|
5
|
+
interface SearchBarDropdownPropsContextDownshiftCurrent extends DownshiftActions<any>, PropGetters<any> {
|
|
6
|
+
state: DownshiftState<any>;
|
|
7
|
+
}
|
|
8
|
+
interface SearchBarDropdownPropsContextDownshift {
|
|
9
|
+
current: SearchBarDropdownPropsContextDownshiftCurrent;
|
|
10
|
+
}
|
|
11
|
+
interface SearchBarDropdownPropsContext {
|
|
12
|
+
downshift: SearchBarDropdownPropsContextDownshift;
|
|
13
|
+
submitSearchTerm: (item: AdminGlobalSearchPlugin) => void;
|
|
14
|
+
state: SearchBarState;
|
|
15
|
+
}
|
|
16
|
+
interface SearchBarDropdownProps {
|
|
17
|
+
context: SearchBarDropdownPropsContext;
|
|
18
|
+
}
|
|
19
|
+
export default class SearchBarDropdown extends React.Component<SearchBarDropdownProps> {
|
|
20
|
+
componentDidMount(): void;
|
|
21
|
+
render(): JSX.Element;
|
|
22
|
+
}
|
|
23
|
+
export {};
|