@webiny/app-admin 5.27.0 → 5.29.0-beta.0
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/base/Admin.js +51 -29
- package/base/Admin.js.map +1 -1
- package/base/Base.js +52 -29
- package/base/Base.js.map +1 -1
- package/base/plugins/AddGraphQLQuerySelection.js +26 -11
- package/base/plugins/AddGraphQLQuerySelection.js.map +1 -1
- package/base/providers/ApolloProvider.d.ts +1 -1
- package/base/providers/ApolloProvider.js +25 -14
- package/base/providers/ApolloProvider.js.map +1 -1
- package/base/providers/TelemetryProvider.js +21 -8
- package/base/providers/TelemetryProvider.js.map +1 -1
- package/base/providers/UiStateProvider.js +18 -5
- package/base/providers/UiStateProvider.js.map +1 -1
- package/base/providers/ViewCompositionProvider.js +34 -15
- package/base/providers/ViewCompositionProvider.js.map +1 -1
- package/base/ui/Brand.js +18 -5
- package/base/ui/Brand.js.map +1 -1
- package/base/ui/CenteredView.js +21 -8
- package/base/ui/CenteredView.js.map +1 -1
- package/base/ui/Dashboard.js +18 -5
- package/base/ui/Dashboard.js.map +1 -1
- package/base/ui/Layout.js +21 -8
- package/base/ui/Layout.js.map +1 -1
- package/base/ui/LocaleSelector.js +18 -5
- package/base/ui/LocaleSelector.js.map +1 -1
- package/base/ui/LoginScreen.js +22 -7
- package/base/ui/LoginScreen.js.map +1 -1
- package/base/ui/Logo.js +25 -9
- package/base/ui/Logo.js.map +1 -1
- package/base/ui/Menu.js +46 -26
- package/base/ui/Menu.js.map +1 -1
- package/base/ui/Navigation.js +79 -42
- package/base/ui/Navigation.js.map +1 -1
- package/base/ui/NotFound.js +18 -5
- package/base/ui/NotFound.js.map +1 -1
- package/base/ui/Search.js +50 -22
- package/base/ui/Search.js.map +1 -1
- package/base/ui/Tags.js +23 -7
- package/base/ui/Tags.js.map +1 -1
- package/base/ui/UserMenu.js +74 -36
- package/base/ui/UserMenu.js.map +1 -1
- package/components/AdminLayout.js +18 -5
- package/components/AdminLayout.js.map +1 -1
- package/components/AppInstaller/AppInstaller.js +79 -49
- package/components/AppInstaller/AppInstaller.js.map +1 -1
- package/components/AppInstaller/Sidebar.js +50 -28
- package/components/AppInstaller/Sidebar.js.map +1 -1
- package/components/AppInstaller/index.js +20 -7
- package/components/AppInstaller/index.js.map +1 -1
- package/components/AppInstaller/styled.js +26 -9
- package/components/AppInstaller/styled.js.map +1 -1
- package/components/AppInstaller/useInstaller.js +67 -40
- package/components/AppInstaller/useInstaller.js.map +1 -1
- package/components/EmptyView.js +25 -11
- package/components/EmptyView.js.map +1 -1
- package/components/FileManager/BottomInfoBar/SupportedFileTypes.js +23 -9
- package/components/FileManager/BottomInfoBar/SupportedFileTypes.js.map +1 -1
- package/components/FileManager/BottomInfoBar/UploadStatus.js +21 -8
- package/components/FileManager/BottomInfoBar/UploadStatus.js.map +1 -1
- package/components/FileManager/BottomInfoBar.js +29 -11
- package/components/FileManager/BottomInfoBar.js.map +1 -1
- package/components/FileManager/DropFilesHere.js +27 -12
- package/components/FileManager/DropFilesHere.js.map +1 -1
- package/components/FileManager/File.js +42 -24
- package/components/FileManager/File.js.map +1 -1
- package/components/FileManager/FileDetails/Name.js +52 -30
- package/components/FileManager/FileDetails/Name.js.map +1 -1
- package/components/FileManager/FileDetails/Tags.js +112 -73
- package/components/FileManager/FileDetails/Tags.js.map +1 -1
- package/components/FileManager/FileDetails.js +157 -120
- package/components/FileManager/FileDetails.js.map +1 -1
- package/components/FileManager/FileManagerContext.js +39 -20
- package/components/FileManager/FileManagerContext.js.map +1 -1
- package/components/FileManager/FileManagerView.js +172 -130
- package/components/FileManager/FileManagerView.js.map +1 -1
- package/components/FileManager/LeftSidebar.js +49 -28
- package/components/FileManager/LeftSidebar.js.map +1 -1
- package/components/FileManager/NoPermissionView.js +35 -18
- package/components/FileManager/NoPermissionView.js.map +1 -1
- package/components/FileManager/NoResults.js +18 -6
- package/components/FileManager/NoResults.js.map +1 -1
- package/components/FileManager/getFileTypePlugin.js +23 -9
- package/components/FileManager/getFileTypePlugin.js.map +1 -1
- package/components/FileManager/getFileUploader.js +14 -4
- package/components/FileManager/getFileUploader.js.map +1 -1
- package/components/FileManager/graphql.js +24 -8
- package/components/FileManager/graphql.js.map +1 -1
- package/components/FileManager/outputFileSelectionError.js +16 -4
- package/components/FileManager/outputFileSelectionError.js.map +1 -1
- package/components/FileManager/types.js +5 -1
- package/components/FileManager/types.js.map +1 -1
- package/components/FileManager.js +60 -36
- package/components/FileManager.js.map +1 -1
- package/components/FloatingActionButton.js +18 -6
- package/components/FloatingActionButton.js.map +1 -1
- package/components/MultiImageUpload.js +24 -12
- package/components/MultiImageUpload.js.map +1 -1
- package/components/OverlayLayout/OverlayLayout.js +68 -43
- package/components/OverlayLayout/OverlayLayout.js.map +1 -1
- package/components/OverlayLayout/index.js +13 -1
- package/components/OverlayLayout/index.js.map +1 -1
- package/components/Permissions/Permissions.js +28 -11
- package/components/Permissions/Permissions.js.map +1 -1
- package/components/Permissions/StyledComponents.js +26 -9
- package/components/Permissions/StyledComponents.js.map +1 -1
- package/components/Permissions/index.js +30 -2
- package/components/Permissions/index.js.map +1 -1
- package/components/RichTextEditor/RichTextEditor.js +24 -9
- package/components/RichTextEditor/RichTextEditor.js.map +1 -1
- package/components/RichTextEditor/index.js +21 -2
- package/components/RichTextEditor/index.js.map +1 -1
- package/components/RichTextEditor/tools/header/index.js +34 -33
- package/components/RichTextEditor/tools/header/index.js.map +1 -1
- package/components/RichTextEditor/tools/image/index.js +34 -28
- package/components/RichTextEditor/tools/image/index.js.map +1 -1
- package/components/RichTextEditor/tools/image/svgs.js +9 -2
- package/components/RichTextEditor/tools/image/svgs.js.map +1 -1
- package/components/RichTextEditor/tools/image/tunes.js +28 -22
- package/components/RichTextEditor/tools/image/tunes.js.map +1 -1
- package/components/RichTextEditor/tools/image/types.js +5 -1
- package/components/RichTextEditor/tools/image/types.js.map +1 -1
- package/components/RichTextEditor/tools/image/ui.js +30 -23
- package/components/RichTextEditor/tools/image/ui.js.map +1 -1
- package/components/RichTextEditor/tools/paragraph/index.js +43 -41
- package/components/RichTextEditor/tools/paragraph/index.js.map +1 -1
- package/components/RichTextEditor/tools/textColor/index.js +27 -26
- package/components/RichTextEditor/tools/textColor/index.js.map +1 -1
- package/components/RichTextEditor/tools/utils.js +14 -5
- package/components/RichTextEditor/tools/utils.js.map +1 -1
- package/components/Routes.js +24 -9
- package/components/Routes.js.map +1 -1
- package/components/SearchUI.js +23 -9
- package/components/SearchUI.js.map +1 -1
- package/components/SimpleForm/SimpleForm.js +60 -29
- package/components/SimpleForm/SimpleForm.js.map +1 -1
- package/components/SimpleForm/index.js +31 -1
- package/components/SimpleForm/index.js.map +1 -1
- package/components/SimpleUI/InputField.js +35 -18
- package/components/SimpleUI/InputField.js.map +1 -1
- package/components/SingleImageUpload.js +41 -22
- package/components/SingleImageUpload.js.map +1 -1
- package/components/SplitView/SplitView.js +42 -19
- package/components/SplitView/SplitView.js.map +1 -1
- package/components/SplitView/index.js +25 -1
- package/components/SplitView/index.js.map +1 -1
- package/components/index.js +13 -1
- package/components/index.js.map +1 -1
- package/hooks/useConfirmationDialog.js +29 -16
- package/hooks/useConfirmationDialog.js.map +1 -1
- package/hooks/useDialog.js +16 -6
- package/hooks/useDialog.js.map +1 -1
- package/hooks/useSnackbar.js +20 -7
- package/hooks/useSnackbar.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +295 -26
- package/index.js.map +1 -1
- package/package.json +21 -20
- package/plugins/FileManagerFileTypePlugin.js +33 -20
- package/plugins/FileManagerFileTypePlugin.js.map +1 -1
- package/plugins/MenuPlugin.js +33 -20
- package/plugins/MenuPlugin.js.map +1 -1
- package/plugins/PermissionRendererPlugin.js +33 -20
- package/plugins/PermissionRendererPlugin.js.map +1 -1
- package/plugins/fileManager/fileDefault.js +24 -8
- package/plugins/fileManager/fileDefault.js.map +1 -1
- package/plugins/fileManager/fileImage/DeleteAction.js +45 -24
- package/plugins/fileManager/fileImage/DeleteAction.js.map +1 -1
- package/plugins/fileManager/fileImage/EditAction.js +51 -28
- package/plugins/fileManager/fileImage/EditAction.js.map +1 -1
- package/plugins/fileManager/fileImage/index.js +29 -10
- package/plugins/fileManager/fileImage/index.js.map +1 -1
- package/plugins/fileManager/index.js +15 -3
- package/plugins/fileManager/index.js.map +1 -1
- package/plugins/globalSearch/SearchBar.js +82 -60
- package/plugins/globalSearch/SearchBar.js.map +1 -1
- package/plugins/globalSearch/SearchBarDropdown.js +46 -27
- package/plugins/globalSearch/SearchBarDropdown.js.map +1 -1
- package/plugins/globalSearch/index.js +9 -2
- package/plugins/globalSearch/index.js.map +1 -1
- package/plugins/globalSearch/styled.js +33 -13
- package/plugins/globalSearch/styled.js.map +1 -1
- package/plugins/index.js +20 -6
- package/plugins/index.js.map +1 -1
- package/plugins/uiLayoutRenderer/index.js +26 -13
- package/plugins/uiLayoutRenderer/index.js.map +1 -1
- package/types.js +5 -1
- package/types.js.map +1 -1
- package/ui/UIElement.js +19 -1
- package/ui/UIElement.js.map +1 -1
- package/ui/UILayout.js +19 -1
- package/ui/UILayout.js.map +1 -1
- package/ui/UIRenderer.js +13 -1
- package/ui/UIRenderer.js.map +1 -1
- package/ui/UIView.js +25 -1
- package/ui/UIView.js.map +1 -1
- package/ui/elements/AccordionElement.js +52 -32
- package/ui/elements/AccordionElement.js.map +1 -1
- package/ui/elements/ButtonElement.js +36 -19
- package/ui/elements/ButtonElement.js.map +1 -1
- package/ui/elements/ButtonGroupElement.js +38 -19
- package/ui/elements/ButtonGroupElement.js.map +1 -1
- package/ui/elements/GenericElement.js +18 -1
- package/ui/elements/GenericElement.js.map +1 -1
- package/ui/elements/LabelElement.js +26 -13
- package/ui/elements/LabelElement.js.map +1 -1
- package/ui/elements/NavigationMenuElement.js +48 -30
- package/ui/elements/NavigationMenuElement.js.map +1 -1
- package/ui/elements/PanelElement.js +27 -12
- package/ui/elements/PanelElement.js.map +1 -1
- package/ui/elements/PlaceholderElement.js +27 -13
- package/ui/elements/PlaceholderElement.js.map +1 -1
- package/ui/elements/SmallButtonElement.js +36 -19
- package/ui/elements/SmallButtonElement.js.map +1 -1
- package/ui/elements/TypographyElement.js +38 -20
- package/ui/elements/TypographyElement.js.map +1 -1
- package/ui/elements/ViewElement.js +18 -1
- package/ui/elements/ViewElement.js.map +1 -1
- package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js +33 -17
- package/ui/elements/form/DynamicFieldsetElement/DynamicFieldsetRowElement.js.map +1 -1
- package/ui/elements/form/DynamicFieldsetElement.js +41 -23
- package/ui/elements/form/DynamicFieldsetElement.js.map +1 -1
- package/ui/elements/form/FileManagerElement/EmptyStateElement.js +30 -14
- package/ui/elements/form/FileManagerElement/EmptyStateElement.js.map +1 -1
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js +51 -28
- package/ui/elements/form/FileManagerElement/EmptyStateElementRenderer.js.map +1 -1
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +45 -25
- package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -1
- package/ui/elements/form/FileManagerElement/styled.d.ts +3 -3
- package/ui/elements/form/FileManagerElement/styled.js +26 -12
- package/ui/elements/form/FileManagerElement/styled.js.map +1 -1
- package/ui/elements/form/FileManagerElement.js +39 -22
- package/ui/elements/form/FileManagerElement.js.map +1 -1
- package/ui/elements/form/FormElement.js +42 -21
- package/ui/elements/form/FormElement.js.map +1 -1
- package/ui/elements/form/FormFieldElement.js +38 -23
- package/ui/elements/form/FormFieldElement.js.map +1 -1
- package/ui/elements/form/HiddenElement.js +30 -15
- package/ui/elements/form/HiddenElement.js.map +1 -1
- package/ui/elements/form/InputElement.js +34 -18
- package/ui/elements/form/InputElement.js.map +1 -1
- package/ui/elements/form/PasswordElement.js +34 -18
- package/ui/elements/form/PasswordElement.js.map +1 -1
- package/ui/elements/form/SelectElement.js +35 -19
- package/ui/elements/form/SelectElement.js.map +1 -1
- package/ui/elements/form/TextareaElement.js +34 -18
- package/ui/elements/form/TextareaElement.js.map +1 -1
- package/ui/views/AdminView/ContentElement.js +40 -24
- package/ui/views/AdminView/ContentElement.js.map +1 -1
- package/ui/views/AdminView/HeaderElement.js +60 -39
- package/ui/views/AdminView/HeaderElement.js.map +1 -1
- package/ui/views/AdminView/HeaderSectionCenterElement.js +41 -21
- package/ui/views/AdminView/HeaderSectionCenterElement.js.map +1 -1
- package/ui/views/AdminView/HeaderSectionLeftElement.js +41 -21
- package/ui/views/AdminView/HeaderSectionLeftElement.js.map +1 -1
- package/ui/views/AdminView/HeaderSectionRightElement.js +41 -21
- package/ui/views/AdminView/HeaderSectionRightElement.js.map +1 -1
- package/ui/views/AdminView/components/Dialog.js +32 -15
- package/ui/views/AdminView/components/Dialog.js.map +1 -1
- package/ui/views/AdminView/components/Hamburger.js +25 -11
- package/ui/views/AdminView/components/Hamburger.js.map +1 -1
- package/ui/views/AdminView/components/Snackbar.js +26 -13
- package/ui/views/AdminView/components/Snackbar.js.map +1 -1
- package/ui/views/FormView/FormContainerElement.js +45 -25
- package/ui/views/FormView/FormContainerElement.js.map +1 -1
- package/ui/views/FormView/FormContentElement.js +27 -12
- package/ui/views/FormView/FormContentElement.js.map +1 -1
- package/ui/views/FormView/FormFooterElement.js +38 -19
- package/ui/views/FormView/FormFooterElement.js.map +1 -1
- package/ui/views/FormView/FormHeaderElement.js +52 -30
- package/ui/views/FormView/FormHeaderElement.js.map +1 -1
- package/ui/views/FormView.js +60 -34
- package/ui/views/FormView.js.map +1 -1
- package/ui/views/OverlayView/ContentElement.js +38 -19
- package/ui/views/OverlayView/ContentElement.js.map +1 -1
- package/ui/views/OverlayView/HeaderElement.js +56 -37
- package/ui/views/OverlayView/HeaderElement.js.map +1 -1
- package/ui/views/OverlayView/HeaderTitleElement.js +44 -25
- package/ui/views/OverlayView/HeaderTitleElement.js.map +1 -1
- package/ui/views/OverlayView/useOverlayView.js +32 -16
- package/ui/views/OverlayView/useOverlayView.js.map +1 -1
- package/ui/views/OverlayView.js +65 -42
- package/ui/views/OverlayView.js.map +1 -1
- package/ui/views/SplitView/SplitViewPanelElement.js +47 -28
- package/ui/views/SplitView/SplitViewPanelElement.js.map +1 -1
- package/ui/views/SplitView.js +57 -37
- package/ui/views/SplitView.js.map +1 -1
|
@@ -1,42 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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.tagWithoutScopePrefix = exports.formatTagAsLabel = exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
|
|
14
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
15
|
+
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
|
|
18
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
19
|
+
|
|
20
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
21
|
+
|
|
22
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
23
|
+
|
|
24
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
25
|
+
|
|
26
|
+
var _emotion = require("emotion");
|
|
27
|
+
|
|
28
|
+
var _reactHooks = require("@apollo/react-hooks");
|
|
29
|
+
|
|
30
|
+
var _set = _interopRequireDefault(require("lodash/set"));
|
|
31
|
+
|
|
32
|
+
var _get = _interopRequireDefault(require("lodash/get"));
|
|
33
|
+
|
|
34
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
35
|
+
|
|
36
|
+
var _Chips = require("@webiny/ui/Chips");
|
|
37
|
+
|
|
38
|
+
var _Button = require("@webiny/ui/Button");
|
|
39
|
+
|
|
40
|
+
var _AutoComplete = require("@webiny/ui/AutoComplete");
|
|
41
|
+
|
|
42
|
+
var _Icon = require("@webiny/ui/Icon");
|
|
43
|
+
|
|
44
|
+
var _form = require("@webiny/form");
|
|
45
|
+
|
|
46
|
+
var _useSnackbar2 = require("../../../hooks/useSnackbar");
|
|
47
|
+
|
|
48
|
+
var _FileManagerContext = require("./../FileManagerContext");
|
|
49
|
+
|
|
50
|
+
var _graphql = require("./../graphql");
|
|
51
|
+
|
|
52
|
+
var _roundEdit24px = require("./../icons/round-edit-24px.svg");
|
|
53
|
+
|
|
54
|
+
var _roundLabel24px = require("./../icons/round-label-24px.svg");
|
|
55
|
+
|
|
5
56
|
var _excluded = ["value"];
|
|
6
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
|
-
import React, { useCallback, useState } from "react";
|
|
8
|
-
import classNames from "classnames";
|
|
9
|
-
import { css } from "emotion";
|
|
10
|
-
import { useApolloClient, useQuery } from "@apollo/react-hooks";
|
|
11
|
-
import set from "lodash/set";
|
|
12
|
-
import get from "lodash/get";
|
|
13
|
-
import cloneDeep from "lodash/cloneDeep";
|
|
14
|
-
import { Chips, Chip } from "@webiny/ui/Chips";
|
|
15
|
-
import { ButtonSecondary, ButtonPrimary, ButtonDefault, IconButton } from "@webiny/ui/Button";
|
|
16
|
-
import { MultiAutoComplete } from "@webiny/ui/AutoComplete";
|
|
17
|
-
import { Icon } from "@webiny/ui/Icon";
|
|
18
|
-
import { Form } from "@webiny/form";
|
|
19
|
-
import { useSnackbar } from "../../../hooks/useSnackbar";
|
|
20
|
-
import { getWhere, useFileManager } from "./../FileManagerContext";
|
|
21
|
-
import { UPDATE_FILE, LIST_FILES, LIST_TAGS } from "./../graphql";
|
|
22
|
-
import { ReactComponent as EditIcon } from "./../icons/round-edit-24px.svg";
|
|
23
|
-
import { ReactComponent as LabelIcon } from "./../icons/round-label-24px.svg";
|
|
24
57
|
var SCOPE_SEPARATOR = ":";
|
|
25
|
-
|
|
58
|
+
|
|
59
|
+
var formatTagAsLabel = function formatTagAsLabel(tag, scope) {
|
|
26
60
|
if (!scope) {
|
|
27
61
|
return tag;
|
|
28
62
|
}
|
|
29
63
|
|
|
30
64
|
return tag.replace("".concat(scope).concat(SCOPE_SEPARATOR), "");
|
|
31
65
|
};
|
|
32
|
-
|
|
66
|
+
|
|
67
|
+
exports.formatTagAsLabel = formatTagAsLabel;
|
|
68
|
+
|
|
69
|
+
var tagWithoutScopePrefix = function tagWithoutScopePrefix(tags, scope) {
|
|
33
70
|
return tags.filter(function (tag) {
|
|
34
71
|
return tag !== scope;
|
|
35
72
|
}).map(function (tag) {
|
|
36
73
|
return formatTagAsLabel(tag, scope);
|
|
37
74
|
});
|
|
38
75
|
};
|
|
39
|
-
|
|
76
|
+
|
|
77
|
+
exports.tagWithoutScopePrefix = tagWithoutScopePrefix;
|
|
78
|
+
var chipsStyle = /*#__PURE__*/(0, _emotion.css)({
|
|
40
79
|
"&.mdc-chip-set": {
|
|
41
80
|
padding: 0,
|
|
42
81
|
marginLeft: -4,
|
|
@@ -45,13 +84,13 @@ var chipsStyle = /*#__PURE__*/css({
|
|
|
45
84
|
}
|
|
46
85
|
}
|
|
47
86
|
}, "label:chipsStyle;");
|
|
48
|
-
var iconButtonStyle = /*#__PURE__*/css({
|
|
87
|
+
var iconButtonStyle = /*#__PURE__*/(0, _emotion.css)({
|
|
49
88
|
"&.mdc-icon-button svg": {
|
|
50
89
|
width: 20,
|
|
51
90
|
height: 20
|
|
52
91
|
}
|
|
53
92
|
}, "label:iconButtonStyle;");
|
|
54
|
-
var addTagsStyle = /*#__PURE__*/css({
|
|
93
|
+
var addTagsStyle = /*#__PURE__*/(0, _emotion.css)({
|
|
55
94
|
"&.mdc-button:not(:disabled)": {
|
|
56
95
|
color: "var(--mdc-theme-text-secondary-on-background)",
|
|
57
96
|
textTransform: "capitalize",
|
|
@@ -59,7 +98,7 @@ var addTagsStyle = /*#__PURE__*/css({
|
|
|
59
98
|
marginLeft: -8
|
|
60
99
|
}
|
|
61
100
|
}, "label:addTagsStyle;");
|
|
62
|
-
var actionWrapperStyle = /*#__PURE__*/css({
|
|
101
|
+
var actionWrapperStyle = /*#__PURE__*/(0, _emotion.css)({
|
|
63
102
|
marginTop: 16,
|
|
64
103
|
"& button:first-child": {
|
|
65
104
|
marginRight: 16
|
|
@@ -69,41 +108,41 @@ var actionWrapperStyle = /*#__PURE__*/css({
|
|
|
69
108
|
var Tags = function Tags(_ref) {
|
|
70
109
|
var file = _ref.file,
|
|
71
110
|
canEdit = _ref.canEdit;
|
|
72
|
-
var client = useApolloClient();
|
|
111
|
+
var client = (0, _reactHooks.useApolloClient)();
|
|
73
112
|
|
|
74
|
-
var _useState = useState(false),
|
|
75
|
-
_useState2 =
|
|
113
|
+
var _useState = (0, _react.useState)(false),
|
|
114
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
76
115
|
editing = _useState2[0],
|
|
77
116
|
setEdit = _useState2[1];
|
|
78
117
|
|
|
79
|
-
var _useState3 = useState(false),
|
|
80
|
-
_useState4 =
|
|
118
|
+
var _useState3 = (0, _react.useState)(false),
|
|
119
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
81
120
|
saving = _useState4[0],
|
|
82
121
|
setSaving = _useState4[1];
|
|
83
122
|
|
|
84
|
-
var _useState5 = useState(Array.isArray(file.tags) ?
|
|
85
|
-
_useState6 =
|
|
123
|
+
var _useState5 = (0, _react.useState)(Array.isArray(file.tags) ? (0, _toConsumableArray2.default)(file.tags) : []),
|
|
124
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
86
125
|
initialTags = _useState6[0],
|
|
87
126
|
setInitialTags = _useState6[1];
|
|
88
127
|
|
|
89
|
-
var _useSnackbar = useSnackbar(),
|
|
128
|
+
var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
|
|
90
129
|
showSnackbar = _useSnackbar.showSnackbar;
|
|
91
130
|
|
|
92
|
-
var _useFileManager = useFileManager(),
|
|
131
|
+
var _useFileManager = (0, _FileManagerContext.useFileManager)(),
|
|
93
132
|
queryParams = _useFileManager.queryParams;
|
|
94
133
|
|
|
95
|
-
var handleEdit = useCallback(function () {
|
|
134
|
+
var handleEdit = (0, _react.useCallback)(function () {
|
|
96
135
|
return setEdit(true);
|
|
97
136
|
}, []);
|
|
98
|
-
var listTagsQuery = useQuery(LIST_TAGS, {
|
|
137
|
+
var listTagsQuery = (0, _reactHooks.useQuery)(_graphql.LIST_TAGS, {
|
|
99
138
|
variables: {
|
|
100
|
-
where: getWhere(queryParams.scope)
|
|
139
|
+
where: (0, _FileManagerContext.getWhere)(queryParams.scope)
|
|
101
140
|
}
|
|
102
141
|
});
|
|
103
|
-
var listTags =
|
|
142
|
+
var listTags = (0, _get.default)(listTagsQuery, "data.fileManager.listTags", []);
|
|
104
143
|
var allTags = tagWithoutScopePrefix(listTags, queryParams.scope);
|
|
105
144
|
var isEditingAllowed = canEdit(file);
|
|
106
|
-
var renderHeaderContent = useCallback(function (_ref2) {
|
|
145
|
+
var renderHeaderContent = (0, _react.useCallback)(function (_ref2) {
|
|
107
146
|
var data = _ref2.data;
|
|
108
147
|
|
|
109
148
|
if (editing) {
|
|
@@ -114,45 +153,45 @@ var Tags = function Tags(_ref) {
|
|
|
114
153
|
|
|
115
154
|
if (hasTags) {
|
|
116
155
|
// Render existing tags and "edit tags" action.
|
|
117
|
-
return /*#__PURE__*/
|
|
118
|
-
className:
|
|
156
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Chips.Chips, {
|
|
157
|
+
className: (0, _classnames.default)("list-item__content", chipsStyle)
|
|
119
158
|
}, data.tags.filter(function (tag) {
|
|
120
159
|
return tag !== queryParams.scope;
|
|
121
160
|
}).map(function (tag, index) {
|
|
122
161
|
var label = typeof tag === "string" ? tag : tag.name;
|
|
123
|
-
return /*#__PURE__*/
|
|
162
|
+
return /*#__PURE__*/_react.default.createElement(_Chips.Chip, {
|
|
124
163
|
key: label + index,
|
|
125
164
|
label: formatTagAsLabel(label, queryParams.scope)
|
|
126
165
|
});
|
|
127
|
-
})), isEditingAllowed && /*#__PURE__*/
|
|
166
|
+
})), isEditingAllowed && /*#__PURE__*/_react.default.createElement(_Button.IconButton, {
|
|
128
167
|
className: iconButtonStyle,
|
|
129
|
-
icon: /*#__PURE__*/
|
|
168
|
+
icon: /*#__PURE__*/_react.default.createElement(_roundEdit24px.ReactComponent, null),
|
|
130
169
|
onClick: handleEdit
|
|
131
170
|
}));
|
|
132
171
|
} // Render "add tags" action.
|
|
133
172
|
|
|
134
173
|
|
|
135
|
-
return /*#__PURE__*/
|
|
174
|
+
return /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
|
|
136
175
|
className: addTagsStyle,
|
|
137
176
|
onClick: handleEdit,
|
|
138
177
|
disabled: !isEditingAllowed
|
|
139
178
|
}, "Add tags...");
|
|
140
179
|
}, [editing, isEditingAllowed]);
|
|
141
|
-
return /*#__PURE__*/
|
|
180
|
+
return /*#__PURE__*/_react.default.createElement(_form.Form, {
|
|
142
181
|
data: {
|
|
143
182
|
tags: initialTags
|
|
144
183
|
},
|
|
145
184
|
onSubmit: /*#__PURE__*/function () {
|
|
146
|
-
var _ref4 =
|
|
185
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(_ref3) {
|
|
147
186
|
var tags;
|
|
148
|
-
return
|
|
187
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
149
188
|
while (1) {
|
|
150
189
|
switch (_context.prev = _context.next) {
|
|
151
190
|
case 0:
|
|
152
191
|
tags = _ref3.tags;
|
|
153
192
|
setSaving(true);
|
|
154
193
|
client.mutate({
|
|
155
|
-
mutation: UPDATE_FILE,
|
|
194
|
+
mutation: _graphql.UPDATE_FILE,
|
|
156
195
|
variables: {
|
|
157
196
|
id: file.id,
|
|
158
197
|
data: {
|
|
@@ -160,10 +199,10 @@ var Tags = function Tags(_ref) {
|
|
|
160
199
|
}
|
|
161
200
|
},
|
|
162
201
|
update: function update(cache, updated) {
|
|
163
|
-
var newFileData =
|
|
202
|
+
var newFileData = (0, _get.default)(updated, "data.fileManager.updateFile.data"); // 1. Update files list cache
|
|
164
203
|
|
|
165
|
-
var data =
|
|
166
|
-
query: LIST_FILES,
|
|
204
|
+
var data = (0, _cloneDeep.default)(cache.readQuery({
|
|
205
|
+
query: _graphql.LIST_FILES,
|
|
167
206
|
variables: queryParams
|
|
168
207
|
}));
|
|
169
208
|
|
|
@@ -176,17 +215,17 @@ var Tags = function Tags(_ref) {
|
|
|
176
215
|
}
|
|
177
216
|
|
|
178
217
|
cache.writeQuery({
|
|
179
|
-
query: LIST_FILES,
|
|
218
|
+
query: _graphql.LIST_FILES,
|
|
180
219
|
variables: queryParams,
|
|
181
220
|
data: data
|
|
182
221
|
}); // 2. Update "LIST_TAGS" cache
|
|
183
222
|
|
|
184
223
|
if (Array.isArray(newFileData.tags)) {
|
|
185
224
|
// Get list tags data
|
|
186
|
-
var listTagsData =
|
|
187
|
-
query: LIST_TAGS,
|
|
225
|
+
var listTagsData = (0, _cloneDeep.default)(cache.readQuery({
|
|
226
|
+
query: _graphql.LIST_TAGS,
|
|
188
227
|
variables: {
|
|
189
|
-
where: getWhere(queryParams.scope)
|
|
228
|
+
where: (0, _FileManagerContext.getWhere)(queryParams.scope)
|
|
190
229
|
}
|
|
191
230
|
}));
|
|
192
231
|
|
|
@@ -195,7 +234,7 @@ var Tags = function Tags(_ref) {
|
|
|
195
234
|
} // Add new tag in list
|
|
196
235
|
|
|
197
236
|
|
|
198
|
-
var updatedTagsList =
|
|
237
|
+
var updatedTagsList = (0, _toConsumableArray2.default)(newFileData.tags);
|
|
199
238
|
|
|
200
239
|
if (Array.isArray(listTagsData.fileManager.listTags)) {
|
|
201
240
|
listTagsData.fileManager.listTags.forEach(function (tag) {
|
|
@@ -205,12 +244,12 @@ var Tags = function Tags(_ref) {
|
|
|
205
244
|
});
|
|
206
245
|
}
|
|
207
246
|
|
|
208
|
-
|
|
247
|
+
(0, _set.default)(listTagsData, "fileManager.listTags", updatedTagsList); // Write it to cache
|
|
209
248
|
|
|
210
249
|
cache.writeQuery({
|
|
211
|
-
query: LIST_TAGS,
|
|
250
|
+
query: _graphql.LIST_TAGS,
|
|
212
251
|
variables: {
|
|
213
|
-
where: getWhere(queryParams.scope)
|
|
252
|
+
where: (0, _FileManagerContext.getWhere)(queryParams.scope)
|
|
214
253
|
},
|
|
215
254
|
data: listTagsData
|
|
216
255
|
});
|
|
@@ -240,14 +279,14 @@ var Tags = function Tags(_ref) {
|
|
|
240
279
|
data = _ref5.data,
|
|
241
280
|
setValue = _ref5.setValue,
|
|
242
281
|
submit = _ref5.submit;
|
|
243
|
-
return /*#__PURE__*/
|
|
282
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("li-title", null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
244
283
|
className: "list-item__icon",
|
|
245
|
-
icon: /*#__PURE__*/
|
|
284
|
+
icon: /*#__PURE__*/_react.default.createElement(_roundLabel24px.ReactComponent, null)
|
|
246
285
|
}), renderHeaderContent({
|
|
247
286
|
// TODO @ts-refactor
|
|
248
287
|
// @ts-ignore
|
|
249
288
|
data: data
|
|
250
|
-
})), editing && /*#__PURE__*/
|
|
289
|
+
})), editing && /*#__PURE__*/_react.default.createElement("li-content", null, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
251
290
|
name: "tags",
|
|
252
291
|
beforeChange: function beforeChange(tags, baseOnChange) {
|
|
253
292
|
var formattedTags = tags.map(function (tag) {
|
|
@@ -266,9 +305,8 @@ var Tags = function Tags(_ref) {
|
|
|
266
305
|
}
|
|
267
306
|
}, function (_ref6) {
|
|
268
307
|
var value = _ref6.value,
|
|
269
|
-
bindProps =
|
|
270
|
-
|
|
271
|
-
return /*#__PURE__*/React.createElement(MultiAutoComplete, Object.assign({}, bindProps, {
|
|
308
|
+
bindProps = (0, _objectWithoutProperties2.default)(_ref6, _excluded);
|
|
309
|
+
return /*#__PURE__*/_react.default.createElement(_AutoComplete.MultiAutoComplete, Object.assign({}, bindProps, {
|
|
272
310
|
value: tagWithoutScopePrefix(value, queryParams.scope),
|
|
273
311
|
options: allTags,
|
|
274
312
|
placeholder: "homepage asset",
|
|
@@ -278,15 +316,15 @@ var Tags = function Tags(_ref) {
|
|
|
278
316
|
useSimpleValues: true,
|
|
279
317
|
disabled: saving
|
|
280
318
|
}));
|
|
281
|
-
}), /*#__PURE__*/
|
|
319
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
282
320
|
className: actionWrapperStyle
|
|
283
|
-
}, /*#__PURE__*/
|
|
321
|
+
}, /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
284
322
|
small: true,
|
|
285
323
|
onClick: function onClick(ev) {
|
|
286
324
|
submit(ev);
|
|
287
325
|
},
|
|
288
326
|
"data-testid": "fm.tags.submit"
|
|
289
|
-
}, "Submit"), /*#__PURE__*/
|
|
327
|
+
}, "Submit"), /*#__PURE__*/_react.default.createElement(_Button.ButtonSecondary, {
|
|
290
328
|
small: true,
|
|
291
329
|
onClick: function onClick() {
|
|
292
330
|
setValue("tags", initialTags);
|
|
@@ -296,4 +334,5 @@ var Tags = function Tags(_ref) {
|
|
|
296
334
|
});
|
|
297
335
|
};
|
|
298
336
|
|
|
299
|
-
|
|
337
|
+
var _default = Tags;
|
|
338
|
+
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Tags.tsx"],"names":["React","useCallback","useState","classNames","css","useApolloClient","useQuery","set","get","cloneDeep","Chips","Chip","ButtonSecondary","ButtonPrimary","ButtonDefault","IconButton","MultiAutoComplete","Icon","Form","useSnackbar","getWhere","useFileManager","UPDATE_FILE","LIST_FILES","LIST_TAGS","ReactComponent","EditIcon","LabelIcon","SCOPE_SEPARATOR","formatTagAsLabel","tag","scope","replace","tagWithoutScopePrefix","tags","filter","map","chipsStyle","padding","marginLeft","backgroundColor","iconButtonStyle","width","height","addTagsStyle","color","textTransform","letterSpacing","actionWrapperStyle","marginTop","marginRight","Tags","file","canEdit","client","editing","setEdit","saving","setSaving","Array","isArray","initialTags","setInitialTags","showSnackbar","queryParams","handleEdit","listTagsQuery","variables","where","listTags","allTags","isEditingAllowed","renderHeaderContent","data","hasTags","length","index","label","name","mutate","mutation","id","update","cache","updated","newFileData","readQuery","query","fileManager","listFiles","forEach","item","key","writeQuery","listTagsData","updatedTagsList","includes","push","then","Bind","setValue","submit","baseOnChange","formattedTags","tagInLowerCase","toLowerCase","startsWith","value","bindProps","ev"],"mappings":";;;;;;AAAA,OAAOA,KAAP,IAAgBC,WAAhB,EAA6BC,QAA7B,QAA6C,OAA7C;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,GAAT,QAAoB,SAApB;AACA,SAASC,eAAT,EAA0BC,QAA1B,QAA0C,qBAA1C;AACA,OAAOC,GAAP,MAAgB,YAAhB;AACA,OAAOC,GAAP,MAAgB,YAAhB;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,SAASC,KAAT,EAAgBC,IAAhB,QAA4B,kBAA5B;AACA,SAASC,eAAT,EAA0BC,aAA1B,EAAyCC,aAAzC,EAAwDC,UAAxD,QAA0E,mBAA1E;AACA,SAASC,iBAAT,QAAkC,yBAAlC;AACA,SAASC,IAAT,QAAqB,iBAArB;AACA,SAASC,IAAT,QAAqB,cAArB;AACA,SAASC,WAAT;AACA,SAASC,QAAT,EAAmBC,cAAnB;AACA,SACIC,WADJ,EAEIC,UAFJ,EAGIC,SAHJ;AAOA,SAASC,cAAc,IAAIC,QAA3B;AACA,SAASD,cAAc,IAAIE,SAA3B;AAGA,IAAMC,eAAe,GAAG,GAAxB;AAEA,OAAO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,GAAD,EAAcC,KAAd,EAA4C;AACxE,MAAI,CAACA,KAAL,EAAY;AACR,WAAOD,GAAP;AACH;;AACD,SAAOA,GAAG,CAACE,OAAJ,WAAeD,KAAf,SAAuBH,eAAvB,GAA0C,EAA1C,CAAP;AACH,CALM;AAOP,OAAO,IAAMK,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,IAAD,EAAiBH,KAAjB,EAAmC;AACpE,SAAOG,IAAI,CAACC,MAAL,CAAY,UAAAL,GAAG;AAAA,WAAIA,GAAG,KAAKC,KAAZ;AAAA,GAAf,EAAkCK,GAAlC,CAAsC,UAAAN,GAAG;AAAA,WAAID,gBAAgB,CAACC,GAAD,EAAMC,KAAN,CAApB;AAAA,GAAzC,CAAP;AACH,CAFM;AAIP,IAAMM,UAAU,gBAAGjC,GAAG,CAAC;AACnB,oBAAkB;AACdkC,IAAAA,OAAO,EAAE,CADK;AAEdC,IAAAA,UAAU,EAAE,CAAC,CAFC;AAGd,mBAAe;AACXC,MAAAA,eAAe,EAAE;AADN;AAHD;AADC,CAAD,sBAAtB;AASA,IAAMC,eAAe,gBAAGrC,GAAG,CAAC;AACxB,2BAAyB;AACrBsC,IAAAA,KAAK,EAAE,EADc;AAErBC,IAAAA,MAAM,EAAE;AAFa;AADD,CAAD,2BAA3B;AAMA,IAAMC,YAAY,gBAAGxC,GAAG,CAAC;AACrB,iCAA+B;AAC3ByC,IAAAA,KAAK,EAAE,+CADoB;AAE3BC,IAAAA,aAAa,EAAE,YAFY;AAG3BC,IAAAA,aAAa,EAAE,SAHY;AAI3BR,IAAAA,UAAU,EAAE,CAAC;AAJc;AADV,CAAD,wBAAxB;AAQA,IAAMS,kBAAkB,gBAAG5C,GAAG,CAAC;AAC3B6C,EAAAA,SAAS,EAAE,EADgB;AAE3B,0BAAwB;AACpBC,IAAAA,WAAW,EAAE;AADO;AAFG,CAAD,8BAA9B;;AAYA,IAAMC,IAAyB,GAAG,SAA5BA,IAA4B,OAAuB;AAAA,MAApBC,IAAoB,QAApBA,IAAoB;AAAA,MAAdC,OAAc,QAAdA,OAAc;AACrD,MAAMC,MAAM,GAAGjD,eAAe,EAA9B;;AAEA,kBAA2BH,QAAQ,CAAC,KAAD,CAAnC;AAAA;AAAA,MAAOqD,OAAP;AAAA,MAAgBC,OAAhB;;AACA,mBAA4BtD,QAAQ,CAAC,KAAD,CAApC;AAAA;AAAA,MAAOuD,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAAsCxD,QAAQ,CAACyD,KAAK,CAACC,OAAN,CAAcR,IAAI,CAAClB,IAAnB,uBAA+BkB,IAAI,CAAClB,IAApC,IAA4C,EAA7C,CAA9C;AAAA;AAAA,MAAO2B,WAAP;AAAA,MAAoBC,cAApB;;AACA,qBAAyB3C,WAAW,EAApC;AAAA,MAAQ4C,YAAR,gBAAQA,YAAR;;AACA,wBAAwB1C,cAAc,EAAtC;AAAA,MAAQ2C,WAAR,mBAAQA,WAAR;;AACA,MAAMC,UAAU,GAAGhE,WAAW,CAAC;AAAA,WAAMuD,OAAO,CAAC,IAAD,CAAb;AAAA,GAAD,EAAsB,EAAtB,CAA9B;AACA,MAAMU,aAAa,GAAG5D,QAAQ,CAACkB,SAAD,EAAY;AACtC2C,IAAAA,SAAS,EAAE;AAAEC,MAAAA,KAAK,EAAEhD,QAAQ,CAAC4C,WAAW,CAACjC,KAAb;AAAjB;AAD2B,GAAZ,CAA9B;AAGA,MAAMsC,QAAQ,GAAG7D,GAAG,CAAC0D,aAAD,EAAgB,2BAAhB,EAA6C,EAA7C,CAApB;AACA,MAAMI,OAAO,GAAGrC,qBAAqB,CAACoC,QAAD,EAAWL,WAAW,CAACjC,KAAvB,CAArC;AAEA,MAAMwC,gBAAgB,GAAGlB,OAAO,CAACD,IAAD,CAAhC;AAEA,MAAMoB,mBAAmB,GAAGvE,WAAW,CACnC,iBAAsD;AAAA,QAAnDwE,IAAmD,SAAnDA,IAAmD;;AAClD,QAAIlB,OAAJ,EAAa;AACT,aAAO,IAAP;AACH;;AACD,QAAMmB,OAAO,GAAGD,IAAI,CAACvC,IAAL,CAAUyC,MAAV,GAAmB,CAAnC;;AAEA,QAAID,OAAJ,EAAa;AACT;AACA,0BACI,uDACI,oBAAC,KAAD;AAAO,QAAA,SAAS,EAAEvE,UAAU,CAAC,oBAAD,EAAuBkC,UAAvB;AAA5B,SACKoC,IAAI,CAACvC,IAAL,CACIC,MADJ,CACW,UAAAL,GAAG;AAAA,eAAIA,GAAG,KAAKkC,WAAW,CAACjC,KAAxB;AAAA,OADd,EAEIK,GAFJ,CAEQ,UAACN,GAAD,EAAM8C,KAAN,EAAgB;AACjB,YAAMC,KAAK,GAAG,OAAO/C,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCA,GAAG,CAACgD,IAAlD;AACA,4BACI,oBAAC,IAAD;AACI,UAAA,GAAG,EAAED,KAAK,GAAGD,KADjB;AAEI,UAAA,KAAK,EAAE/C,gBAAgB,CAACgD,KAAD,EAAQb,WAAW,CAACjC,KAApB;AAF3B,UADJ;AAMH,OAVJ,CADL,CADJ,EAcKwC,gBAAgB,iBACb,oBAAC,UAAD;AACI,QAAA,SAAS,EAAE9B,eADf;AAEI,QAAA,IAAI,eAAE,oBAAC,QAAD,OAFV;AAGI,QAAA,OAAO,EAAEwB;AAHb,QAfR,CADJ;AAwBH,KAhCiD,CAiClD;;;AACA,wBACI,oBAAC,aAAD;AACI,MAAA,SAAS,EAAErB,YADf;AAEI,MAAA,OAAO,EAAEqB,UAFb;AAGI,MAAA,QAAQ,EAAE,CAACM;AAHf,qBADJ;AASH,GA5CkC,EA6CnC,CAAChB,OAAD,EAAUgB,gBAAV,CA7CmC,CAAvC;AAgDA,sBACI,oBAAC,IAAD;AACI,IAAA,IAAI,EAAE;AACFrC,MAAAA,IAAI,EAAE2B;AADJ,KADV;AAII,IAAA,QAAQ;AAAA,2EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAS3B,gBAAAA,IAAT,SAASA,IAAT;AACNwB,gBAAAA,SAAS,CAAC,IAAD,CAAT;AACAJ,gBAAAA,MAAM,CACDyB,MADL,CACY;AACJC,kBAAAA,QAAQ,EAAE1D,WADN;AAEJ6C,kBAAAA,SAAS,EAAE;AACPc,oBAAAA,EAAE,EAAE7B,IAAI,CAAC6B,EADF;AAEPR,oBAAAA,IAAI,EAAE;AAAEvC,sBAAAA,IAAI,EAAJA;AAAF;AAFC,mBAFP;AAMJgD,kBAAAA,MAAM,EAAE,gBAACC,KAAD,EAAQC,OAAR,EAAoB;AACxB,wBAAMC,WAAqB,GAAG7E,GAAG,CAC7B4E,OAD6B,EAE7B,kCAF6B,CAAjC,CADwB,CAMxB;;AACA,wBAAMX,IAAI,GAAGhE,SAAS,CAClB0E,KAAK,CAACG,SAAN,CAAwC;AACpCC,sBAAAA,KAAK,EAAEhE,UAD6B;AAEpC4C,sBAAAA,SAAS,EAAEH;AAFyB,qBAAxC,CADkB,CAAtB;;AAOA,wBAAIS,IAAJ,EAAU;AACNA,sBAAAA,IAAI,CAACe,WAAL,CAAiBC,SAAjB,CAA2BhB,IAA3B,CAAgCiB,OAAhC,CAAwC,UAAAC,IAAI,EAAI;AAC5C,4BAAIA,IAAI,CAACC,GAAL,KAAaP,WAAW,CAACO,GAA7B,EAAkC;AAC9BD,0BAAAA,IAAI,CAACzD,IAAL,GAAYmD,WAAW,CAACnD,IAAxB;AACH;AACJ,uBAJD;AAKH;;AAEDiD,oBAAAA,KAAK,CAACU,UAAN,CAAiB;AACbN,sBAAAA,KAAK,EAAEhE,UADM;AAEb4C,sBAAAA,SAAS,EAAEH,WAFE;AAGbS,sBAAAA,IAAI,EAAJA;AAHa,qBAAjB,EAtBwB,CA2BxB;;AACA,wBAAId,KAAK,CAACC,OAAN,CAAcyB,WAAW,CAACnD,IAA1B,CAAJ,EAAqC;AACjC;AACA,0BAAM4D,YAAY,GAAGrF,SAAS,CAC1B0E,KAAK,CAACG,SAAN,CAA2C;AACvCC,wBAAAA,KAAK,EAAE/D,SADgC;AAEvC2C,wBAAAA,SAAS,EAAE;AAAEC,0BAAAA,KAAK,EAAEhD,QAAQ,CAAC4C,WAAW,CAACjC,KAAb;AAAjB;AAF4B,uBAA3C,CAD0B,CAA9B;;AAMA,0BAAI,CAAC+D,YAAL,EAAmB;AACf;AACH,uBAVgC,CAWjC;;;AACA,0BAAMC,eAAe,sBAAOV,WAAW,CAACnD,IAAnB,CAArB;;AAEA,0BAAIyB,KAAK,CAACC,OAAN,CAAckC,YAAY,CAACN,WAAb,CAAyBnB,QAAvC,CAAJ,EAAsD;AAClDyB,wBAAAA,YAAY,CAACN,WAAb,CAAyBnB,QAAzB,CAAkCqB,OAAlC,CAA0C,UAAA5D,GAAG,EAAI;AAC7C,8BAAI,CAACiE,eAAe,CAACC,QAAhB,CAAyBlE,GAAzB,CAAL,EAAoC;AAChCiE,4BAAAA,eAAe,CAACE,IAAhB,CAAqBnE,GAArB;AACH;AACJ,yBAJD;AAKH;;AAEDvB,sBAAAA,GAAG,CAACuF,YAAD,EAAe,sBAAf,EAAuCC,eAAvC,CAAH,CAtBiC,CAuBjC;;AACAZ,sBAAAA,KAAK,CAACU,UAAN,CAAiB;AACbN,wBAAAA,KAAK,EAAE/D,SADM;AAEb2C,wBAAAA,SAAS,EAAE;AAAEC,0BAAAA,KAAK,EAAEhD,QAAQ,CAAC4C,WAAW,CAACjC,KAAb;AAAjB,yBAFE;AAGb0C,wBAAAA,IAAI,EAAEqB;AAHO,uBAAjB;AAKH;AACJ;AAhEG,iBADZ,EAmEKI,IAnEL,CAmEU,YAAM;AACRpC,kBAAAA,cAAc,CAAC5B,IAAD,CAAd;AACAwB,kBAAAA,SAAS,CAAC,KAAD,CAAT;AACAF,kBAAAA,OAAO,CAAC,KAAD,CAAP;AACAO,kBAAAA,YAAY,CAAC,4BAAD,CAAZ;AACH,iBAxEL;;AAFM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAF;;AAAA;AAAA;AAAA;AAAA;AAJZ,KAiFK;AAAA,QAAGoC,IAAH,SAAGA,IAAH;AAAA,QAAS1B,IAAT,SAASA,IAAT;AAAA,QAAe2B,QAAf,SAAeA,QAAf;AAAA,QAAyBC,MAAzB,SAAyBA,MAAzB;AAAA,wBACG,oBAAC,KAAD,CAAO,QAAP,qBACI,mDACI,oBAAC,IAAD;AAAM,MAAA,SAAS,EAAE,iBAAjB;AAAoC,MAAA,IAAI,eAAE,oBAAC,SAAD;AAA1C,MADJ,EAEK7B,mBAAmB,CAAC;AACjB;AACA;AACAC,MAAAA,IAAI,EAAJA;AAHiB,KAAD,CAFxB,CADJ,EASKlB,OAAO,iBACJ,qDACI,oBAAC,IAAD;AACI,MAAA,IAAI,EAAE,MADV;AAEI,MAAA,YAAY,EAAE,sBACVrB,IADU,EAEVoE,YAFU,EAGT;AACD,YAAMC,aAAa,GAAGrE,IAAI,CAACE,GAAL,CAAS,UAAAN,GAAG,EAAI;AAClC,cAAM0E,cAAc,GAAG1E,GAAG,CAAC2E,WAAJ,EAAvB;AACA;AACxC;AACA;;AACwC,cACIzC,WAAW,CAACjC,KAAZ,IACA,CAACyE,cAAc,CAACE,UAAf,CAA0B1C,WAAW,CAACjC,KAAtC,CAFL,EAGE;AACE,6BAAUiC,WAAW,CAACjC,KAAtB,SAA8BH,eAA9B,SAAgD4E,cAAhD;AACH;;AACD,iBAAOA,cAAP;AACH,SAZqB,CAAtB;AAaAF,QAAAA,YAAY,CAACC,aAAD,CAAZ;AACH;AApBL,OAsBK;AAAA,UAAGI,KAAH,SAAGA,KAAH;AAAA,UAAaC,SAAb;;AAAA,0BACG,oBAAC,iBAAD,oBACQA,SADR;AAEI,QAAA,KAAK,EAAE3E,qBAAqB,CAAC0E,KAAD,EAAQ3C,WAAW,CAACjC,KAApB,CAFhC;AAGI,QAAA,OAAO,EAAEuC,OAHb;AAII,QAAA,WAAW,EAAE,gBAJjB;AAKI,QAAA,WAAW,EAAE,8CALjB;AAMI,QAAA,MAAM,EAAE,IANZ;AAOI,QAAA,cAAc,EAAE,IAPpB;AAQI,QAAA,eAAe,EAAE,IARrB;AASI,QAAA,QAAQ,EAAEb;AATd,SADH;AAAA,KAtBL,CADJ,eAqCI;AAAK,MAAA,SAAS,EAAET;AAAhB,oBACI,oBAAC,aAAD;AACI,MAAA,KAAK,MADT;AAEI,MAAA,OAAO,EAAE,iBAAA6D,EAAE,EAAI;AACXR,QAAAA,MAAM,CAACQ,EAAD,CAAN;AACH,OAJL;AAKI,qBAAa;AALjB,gBADJ,eAUI,oBAAC,eAAD;AACI,MAAA,KAAK,MADT;AAEI,MAAA,OAAO,EAAE,mBAAM;AACXT,QAAAA,QAAQ,CAAC,MAAD,EAASvC,WAAT,CAAR;AACAL,QAAAA,OAAO,CAAC,KAAD,CAAP;AACH;AALL,gBAVJ,CArCJ,CAVR,CADH;AAAA,GAjFL,CADJ;AA4JH,CA7ND;;AA+NA,eAAeL,IAAf","sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { css } from \"emotion\";\nimport { useApolloClient, useQuery } from \"@apollo/react-hooks\";\nimport set from \"lodash/set\";\nimport get from \"lodash/get\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { Chips, Chip } from \"@webiny/ui/Chips\";\nimport { ButtonSecondary, ButtonPrimary, ButtonDefault, IconButton } from \"@webiny/ui/Button\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Form } from \"@webiny/form\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { getWhere, useFileManager } from \"./../FileManagerContext\";\nimport {\n UPDATE_FILE,\n LIST_FILES,\n LIST_TAGS,\n ListFilesQueryResponse,\n ListFileTagsQueryResponse\n} from \"./../graphql\";\nimport { ReactComponent as EditIcon } from \"./../icons/round-edit-24px.svg\";\nimport { ReactComponent as LabelIcon } from \"./../icons/round-label-24px.svg\";\nimport { FileItem } from \"../types\";\n\nconst SCOPE_SEPARATOR = \":\";\n\nexport const formatTagAsLabel = (tag: string, scope: string | undefined) => {\n if (!scope) {\n return tag;\n }\n return tag.replace(`${scope}${SCOPE_SEPARATOR}`, \"\");\n};\n\nexport const tagWithoutScopePrefix = (tags: string[], scope: string) => {\n return tags.filter(tag => tag !== scope).map(tag => formatTagAsLabel(tag, scope));\n};\n\nconst chipsStyle = css({\n \"&.mdc-chip-set\": {\n padding: 0,\n marginLeft: -4,\n \"& .mdc-chip\": {\n backgroundColor: \"var(--mdc-theme-background)\"\n }\n }\n});\nconst iconButtonStyle = css({\n \"&.mdc-icon-button svg\": {\n width: 20,\n height: 20\n }\n});\nconst addTagsStyle = css({\n \"&.mdc-button:not(:disabled)\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n textTransform: \"capitalize\",\n letterSpacing: \"initial\",\n marginLeft: -8\n }\n});\nconst actionWrapperStyle = css({\n marginTop: 16,\n \"& button:first-child\": {\n marginRight: 16\n }\n});\n\ninterface TagsProps {\n file: FileItem;\n canEdit: (file: FileItem) => boolean;\n}\n\nconst Tags: React.FC<TagsProps> = ({ file, canEdit }) => {\n const client = useApolloClient();\n\n const [editing, setEdit] = useState(false);\n const [saving, setSaving] = useState(false);\n const [initialTags, setInitialTags] = useState(Array.isArray(file.tags) ? [...file.tags] : []);\n const { showSnackbar } = useSnackbar();\n const { queryParams } = useFileManager();\n const handleEdit = useCallback(() => setEdit(true), []);\n const listTagsQuery = useQuery(LIST_TAGS, {\n variables: { where: getWhere(queryParams.scope) }\n });\n const listTags = get(listTagsQuery, \"data.fileManager.listTags\", []);\n const allTags = tagWithoutScopePrefix(listTags, queryParams.scope);\n\n const isEditingAllowed = canEdit(file);\n\n const renderHeaderContent = useCallback(\n ({ data }: { data: { tags: { name: string }[] } }) => {\n if (editing) {\n return null;\n }\n const hasTags = data.tags.length > 0;\n\n if (hasTags) {\n // Render existing tags and \"edit tags\" action.\n return (\n <>\n <Chips className={classNames(\"list-item__content\", chipsStyle)}>\n {data.tags\n .filter(tag => tag !== queryParams.scope)\n .map((tag, index) => {\n const label = typeof tag === \"string\" ? tag : tag.name;\n return (\n <Chip\n key={label + index}\n label={formatTagAsLabel(label, queryParams.scope)}\n />\n );\n })}\n </Chips>\n {isEditingAllowed && (\n <IconButton\n className={iconButtonStyle}\n icon={<EditIcon />}\n onClick={handleEdit}\n />\n )}\n </>\n );\n }\n // Render \"add tags\" action.\n return (\n <ButtonDefault\n className={addTagsStyle}\n onClick={handleEdit}\n disabled={!isEditingAllowed}\n >\n Add tags...\n </ButtonDefault>\n );\n },\n [editing, isEditingAllowed]\n );\n\n return (\n <Form\n data={{\n tags: initialTags\n }}\n onSubmit={async ({ tags }) => {\n setSaving(true);\n client\n .mutate({\n mutation: UPDATE_FILE,\n variables: {\n id: file.id,\n data: { tags }\n },\n update: (cache, updated) => {\n const newFileData: FileItem = get(\n updated,\n \"data.fileManager.updateFile.data\"\n );\n\n // 1. Update files list cache\n const data = cloneDeep(\n cache.readQuery<ListFilesQueryResponse>({\n query: LIST_FILES,\n variables: queryParams\n })\n );\n\n if (data) {\n data.fileManager.listFiles.data.forEach(item => {\n if (item.key === newFileData.key) {\n item.tags = newFileData.tags;\n }\n });\n }\n\n cache.writeQuery({\n query: LIST_FILES,\n variables: queryParams,\n data\n });\n // 2. Update \"LIST_TAGS\" cache\n if (Array.isArray(newFileData.tags)) {\n // Get list tags data\n const listTagsData = cloneDeep(\n cache.readQuery<ListFileTagsQueryResponse>({\n query: LIST_TAGS,\n variables: { where: getWhere(queryParams.scope) }\n })\n );\n if (!listTagsData) {\n return;\n }\n // Add new tag in list\n const updatedTagsList = [...newFileData.tags];\n\n if (Array.isArray(listTagsData.fileManager.listTags)) {\n listTagsData.fileManager.listTags.forEach(tag => {\n if (!updatedTagsList.includes(tag)) {\n updatedTagsList.push(tag);\n }\n });\n }\n\n set(listTagsData, \"fileManager.listTags\", updatedTagsList);\n // Write it to cache\n cache.writeQuery({\n query: LIST_TAGS,\n variables: { where: getWhere(queryParams.scope) },\n data: listTagsData\n });\n }\n }\n })\n .then(() => {\n setInitialTags(tags);\n setSaving(false);\n setEdit(false);\n showSnackbar(\"Tags successfully updated.\");\n });\n }}\n >\n {({ Bind, data, setValue, submit }) => (\n <React.Fragment>\n <li-title>\n <Icon className={\"list-item__icon\"} icon={<LabelIcon />} />\n {renderHeaderContent({\n // TODO @ts-refactor\n // @ts-ignore\n data\n })}\n </li-title>\n {editing && (\n <li-content>\n <Bind\n name={\"tags\"}\n beforeChange={(\n tags: string[],\n baseOnChange: (tags: string[]) => void\n ) => {\n const formattedTags = tags.map(tag => {\n const tagInLowerCase = tag.toLowerCase();\n /**\n * If \"scope\" exists, prefix tag with \"scope\" if not already.\n */\n if (\n queryParams.scope &&\n !tagInLowerCase.startsWith(queryParams.scope)\n ) {\n return `${queryParams.scope}${SCOPE_SEPARATOR}${tagInLowerCase}`;\n }\n return tagInLowerCase;\n });\n baseOnChange(formattedTags);\n }}\n >\n {({ value, ...bindProps }) => (\n <MultiAutoComplete\n {...bindProps}\n value={tagWithoutScopePrefix(value, queryParams.scope)}\n options={allTags}\n placeholder={\"homepage asset\"}\n description={\"Type in a new tag or select an existing one.\"}\n unique={true}\n allowFreeInput={true}\n useSimpleValues={true}\n disabled={saving}\n />\n )}\n </Bind>\n <div className={actionWrapperStyle}>\n <ButtonPrimary\n small\n onClick={ev => {\n submit(ev);\n }}\n data-testid={\"fm.tags.submit\"}\n >\n Submit\n </ButtonPrimary>\n <ButtonSecondary\n small\n onClick={() => {\n setValue(\"tags\", initialTags);\n setEdit(false);\n }}\n >\n Cancel\n </ButtonSecondary>\n </div>\n </li-content>\n )}\n </React.Fragment>\n )}\n </Form>\n );\n};\n\nexport default Tags;\n"]}
|
|
1
|
+
{"version":3,"names":["SCOPE_SEPARATOR","formatTagAsLabel","tag","scope","replace","tagWithoutScopePrefix","tags","filter","map","chipsStyle","css","padding","marginLeft","backgroundColor","iconButtonStyle","width","height","addTagsStyle","color","textTransform","letterSpacing","actionWrapperStyle","marginTop","marginRight","Tags","file","canEdit","client","useApolloClient","useState","editing","setEdit","saving","setSaving","Array","isArray","initialTags","setInitialTags","useSnackbar","showSnackbar","useFileManager","queryParams","handleEdit","useCallback","listTagsQuery","useQuery","LIST_TAGS","variables","where","getWhere","listTags","get","allTags","isEditingAllowed","renderHeaderContent","data","hasTags","length","classNames","index","label","name","mutate","mutation","UPDATE_FILE","id","update","cache","updated","newFileData","cloneDeep","readQuery","query","LIST_FILES","fileManager","listFiles","forEach","item","key","writeQuery","listTagsData","updatedTagsList","includes","push","set","then","Bind","setValue","submit","baseOnChange","formattedTags","tagInLowerCase","toLowerCase","startsWith","value","bindProps","ev"],"sources":["Tags.tsx"],"sourcesContent":["import React, { useCallback, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { css } from \"emotion\";\nimport { useApolloClient, useQuery } from \"@apollo/react-hooks\";\nimport set from \"lodash/set\";\nimport get from \"lodash/get\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { Chips, Chip } from \"@webiny/ui/Chips\";\nimport { ButtonSecondary, ButtonPrimary, ButtonDefault, IconButton } from \"@webiny/ui/Button\";\nimport { MultiAutoComplete } from \"@webiny/ui/AutoComplete\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Form } from \"@webiny/form\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { getWhere, useFileManager } from \"./../FileManagerContext\";\nimport {\n UPDATE_FILE,\n LIST_FILES,\n LIST_TAGS,\n ListFilesQueryResponse,\n ListFileTagsQueryResponse\n} from \"./../graphql\";\nimport { ReactComponent as EditIcon } from \"./../icons/round-edit-24px.svg\";\nimport { ReactComponent as LabelIcon } from \"./../icons/round-label-24px.svg\";\nimport { FileItem } from \"../types\";\n\nconst SCOPE_SEPARATOR = \":\";\n\nexport const formatTagAsLabel = (tag: string, scope: string | undefined) => {\n if (!scope) {\n return tag;\n }\n return tag.replace(`${scope}${SCOPE_SEPARATOR}`, \"\");\n};\n\nexport const tagWithoutScopePrefix = (tags: string[], scope: string) => {\n return tags.filter(tag => tag !== scope).map(tag => formatTagAsLabel(tag, scope));\n};\n\nconst chipsStyle = css({\n \"&.mdc-chip-set\": {\n padding: 0,\n marginLeft: -4,\n \"& .mdc-chip\": {\n backgroundColor: \"var(--mdc-theme-background)\"\n }\n }\n});\nconst iconButtonStyle = css({\n \"&.mdc-icon-button svg\": {\n width: 20,\n height: 20\n }\n});\nconst addTagsStyle = css({\n \"&.mdc-button:not(:disabled)\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n textTransform: \"capitalize\",\n letterSpacing: \"initial\",\n marginLeft: -8\n }\n});\nconst actionWrapperStyle = css({\n marginTop: 16,\n \"& button:first-child\": {\n marginRight: 16\n }\n});\n\ninterface TagsProps {\n file: FileItem;\n canEdit: (file: FileItem) => boolean;\n}\n\nconst Tags: React.FC<TagsProps> = ({ file, canEdit }) => {\n const client = useApolloClient();\n\n const [editing, setEdit] = useState(false);\n const [saving, setSaving] = useState(false);\n const [initialTags, setInitialTags] = useState(Array.isArray(file.tags) ? [...file.tags] : []);\n const { showSnackbar } = useSnackbar();\n const { queryParams } = useFileManager();\n const handleEdit = useCallback(() => setEdit(true), []);\n const listTagsQuery = useQuery(LIST_TAGS, {\n variables: { where: getWhere(queryParams.scope) }\n });\n const listTags = get(listTagsQuery, \"data.fileManager.listTags\", []);\n const allTags = tagWithoutScopePrefix(listTags, queryParams.scope);\n\n const isEditingAllowed = canEdit(file);\n\n const renderHeaderContent = useCallback(\n ({ data }: { data: { tags: { name: string }[] } }) => {\n if (editing) {\n return null;\n }\n const hasTags = data.tags.length > 0;\n\n if (hasTags) {\n // Render existing tags and \"edit tags\" action.\n return (\n <>\n <Chips className={classNames(\"list-item__content\", chipsStyle)}>\n {data.tags\n .filter(tag => tag !== queryParams.scope)\n .map((tag, index) => {\n const label = typeof tag === \"string\" ? tag : tag.name;\n return (\n <Chip\n key={label + index}\n label={formatTagAsLabel(label, queryParams.scope)}\n />\n );\n })}\n </Chips>\n {isEditingAllowed && (\n <IconButton\n className={iconButtonStyle}\n icon={<EditIcon />}\n onClick={handleEdit}\n />\n )}\n </>\n );\n }\n // Render \"add tags\" action.\n return (\n <ButtonDefault\n className={addTagsStyle}\n onClick={handleEdit}\n disabled={!isEditingAllowed}\n >\n Add tags...\n </ButtonDefault>\n );\n },\n [editing, isEditingAllowed]\n );\n\n return (\n <Form\n data={{\n tags: initialTags\n }}\n onSubmit={async ({ tags }) => {\n setSaving(true);\n client\n .mutate({\n mutation: UPDATE_FILE,\n variables: {\n id: file.id,\n data: { tags }\n },\n update: (cache, updated) => {\n const newFileData: FileItem = get(\n updated,\n \"data.fileManager.updateFile.data\"\n );\n\n // 1. Update files list cache\n const data = cloneDeep(\n cache.readQuery<ListFilesQueryResponse>({\n query: LIST_FILES,\n variables: queryParams\n })\n );\n\n if (data) {\n data.fileManager.listFiles.data.forEach(item => {\n if (item.key === newFileData.key) {\n item.tags = newFileData.tags;\n }\n });\n }\n\n cache.writeQuery({\n query: LIST_FILES,\n variables: queryParams,\n data\n });\n // 2. Update \"LIST_TAGS\" cache\n if (Array.isArray(newFileData.tags)) {\n // Get list tags data\n const listTagsData = cloneDeep(\n cache.readQuery<ListFileTagsQueryResponse>({\n query: LIST_TAGS,\n variables: { where: getWhere(queryParams.scope) }\n })\n );\n if (!listTagsData) {\n return;\n }\n // Add new tag in list\n const updatedTagsList = [...newFileData.tags];\n\n if (Array.isArray(listTagsData.fileManager.listTags)) {\n listTagsData.fileManager.listTags.forEach(tag => {\n if (!updatedTagsList.includes(tag)) {\n updatedTagsList.push(tag);\n }\n });\n }\n\n set(listTagsData, \"fileManager.listTags\", updatedTagsList);\n // Write it to cache\n cache.writeQuery({\n query: LIST_TAGS,\n variables: { where: getWhere(queryParams.scope) },\n data: listTagsData\n });\n }\n }\n })\n .then(() => {\n setInitialTags(tags);\n setSaving(false);\n setEdit(false);\n showSnackbar(\"Tags successfully updated.\");\n });\n }}\n >\n {({ Bind, data, setValue, submit }) => (\n <React.Fragment>\n <li-title>\n <Icon className={\"list-item__icon\"} icon={<LabelIcon />} />\n {renderHeaderContent({\n // TODO @ts-refactor\n // @ts-ignore\n data\n })}\n </li-title>\n {editing && (\n <li-content>\n <Bind\n name={\"tags\"}\n beforeChange={(\n tags: string[],\n baseOnChange: (tags: string[]) => void\n ) => {\n const formattedTags = tags.map(tag => {\n const tagInLowerCase = tag.toLowerCase();\n /**\n * If \"scope\" exists, prefix tag with \"scope\" if not already.\n */\n if (\n queryParams.scope &&\n !tagInLowerCase.startsWith(queryParams.scope)\n ) {\n return `${queryParams.scope}${SCOPE_SEPARATOR}${tagInLowerCase}`;\n }\n return tagInLowerCase;\n });\n baseOnChange(formattedTags);\n }}\n >\n {({ value, ...bindProps }) => (\n <MultiAutoComplete\n {...bindProps}\n value={tagWithoutScopePrefix(value, queryParams.scope)}\n options={allTags}\n placeholder={\"homepage asset\"}\n description={\"Type in a new tag or select an existing one.\"}\n unique={true}\n allowFreeInput={true}\n useSimpleValues={true}\n disabled={saving}\n />\n )}\n </Bind>\n <div className={actionWrapperStyle}>\n <ButtonPrimary\n small\n onClick={ev => {\n submit(ev);\n }}\n data-testid={\"fm.tags.submit\"}\n >\n Submit\n </ButtonPrimary>\n <ButtonSecondary\n small\n onClick={() => {\n setValue(\"tags\", initialTags);\n setEdit(false);\n }}\n >\n Cancel\n </ButtonSecondary>\n </div>\n </li-content>\n )}\n </React.Fragment>\n )}\n </Form>\n );\n};\n\nexport default Tags;\n"],"mappings":"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"}
|