@webiny/app-file-manager 5.38.0 → 5.38.1

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.
Files changed (72) hide show
  1. package/components/BulkActions/ActionEdit/ActionEdit.d.ts +4 -0
  2. package/components/BulkActions/ActionEdit/ActionEdit.js +159 -0
  3. package/components/BulkActions/ActionEdit/ActionEdit.js.map +1 -0
  4. package/components/BulkActions/ActionEdit/ActionEdit.styled.d.ts +32 -0
  5. package/components/BulkActions/ActionEdit/ActionEdit.styled.js +39 -0
  6. package/components/BulkActions/ActionEdit/ActionEdit.styled.js.map +1 -0
  7. package/components/BulkActions/ActionEdit/ActionEdit.types.d.ts +2 -0
  8. package/components/BulkActions/ActionEdit/ActionEdit.types.js +7 -0
  9. package/components/BulkActions/ActionEdit/ActionEdit.types.js.map +1 -0
  10. package/components/BulkActions/ActionEdit/ActionEditPresenter.d.ts +34 -0
  11. package/components/BulkActions/ActionEdit/ActionEditPresenter.js +75 -0
  12. package/components/BulkActions/ActionEdit/ActionEditPresenter.js.map +1 -0
  13. package/components/BulkActions/ActionEdit/ActionEditPresenter.test.d.ts +1 -0
  14. package/components/BulkActions/ActionEdit/ActionEditPresenter.test.js +162 -0
  15. package/components/BulkActions/ActionEdit/ActionEditPresenter.test.js.map +1 -0
  16. package/components/BulkActions/ActionEdit/BatchEditorDialog/AddOperation.d.ts +7 -0
  17. package/components/BulkActions/ActionEdit/BatchEditorDialog/AddOperation.js +23 -0
  18. package/components/BulkActions/ActionEdit/BatchEditorDialog/AddOperation.js.map +1 -0
  19. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditor.d.ts +15 -0
  20. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditor.js +64 -0
  21. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditor.js.map +1 -0
  22. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialog.d.ts +15 -0
  23. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialog.js +60 -0
  24. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialog.js.map +1 -0
  25. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialogPresenter.d.ts +66 -0
  26. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialogPresenter.js +193 -0
  27. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialogPresenter.js.map +1 -0
  28. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialogPresenter.test.d.ts +1 -0
  29. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialogPresenter.test.js +328 -0
  30. package/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialogPresenter.test.js.map +1 -0
  31. package/components/BulkActions/ActionEdit/BatchEditorDialog/FieldRenderer.d.ts +8 -0
  32. package/components/BulkActions/ActionEdit/BatchEditorDialog/FieldRenderer.js +42 -0
  33. package/components/BulkActions/ActionEdit/BatchEditorDialog/FieldRenderer.js.map +1 -0
  34. package/components/BulkActions/ActionEdit/BatchEditorDialog/Operation.d.ts +11 -0
  35. package/components/BulkActions/ActionEdit/BatchEditorDialog/Operation.js +54 -0
  36. package/components/BulkActions/ActionEdit/BatchEditorDialog/Operation.js.map +1 -0
  37. package/components/BulkActions/ActionEdit/BatchEditorDialog/RemoveOperation.d.ts +7 -0
  38. package/components/BulkActions/ActionEdit/BatchEditorDialog/RemoveOperation.js +27 -0
  39. package/components/BulkActions/ActionEdit/BatchEditorDialog/RemoveOperation.js.map +1 -0
  40. package/components/BulkActions/ActionEdit/BatchEditorDialog/index.d.ts +1 -0
  41. package/components/BulkActions/ActionEdit/BatchEditorDialog/index.js +18 -0
  42. package/components/BulkActions/ActionEdit/BatchEditorDialog/index.js.map +1 -0
  43. package/components/BulkActions/ActionEdit/GraphQLInputMapper.d.ts +7 -0
  44. package/components/BulkActions/ActionEdit/GraphQLInputMapper.js +54 -0
  45. package/components/BulkActions/ActionEdit/GraphQLInputMapper.js.map +1 -0
  46. package/components/BulkActions/ActionEdit/GraphQLInputMapper.test.d.ts +1 -0
  47. package/components/BulkActions/ActionEdit/GraphQLInputMapper.test.js +59 -0
  48. package/components/BulkActions/ActionEdit/GraphQLInputMapper.test.js.map +1 -0
  49. package/components/BulkActions/ActionEdit/domain/Batch.d.ts +53 -0
  50. package/components/BulkActions/ActionEdit/domain/Batch.js +48 -0
  51. package/components/BulkActions/ActionEdit/domain/Batch.js.map +1 -0
  52. package/components/BulkActions/ActionEdit/domain/BatchMapper.d.ts +4 -0
  53. package/components/BulkActions/ActionEdit/domain/BatchMapper.js +32 -0
  54. package/components/BulkActions/ActionEdit/domain/BatchMapper.js.map +1 -0
  55. package/components/BulkActions/ActionEdit/domain/Field.d.ts +32 -0
  56. package/components/BulkActions/ActionEdit/domain/Field.js +74 -0
  57. package/components/BulkActions/ActionEdit/domain/Field.js.map +1 -0
  58. package/components/BulkActions/ActionEdit/domain/FieldMapper.d.ts +7 -0
  59. package/components/BulkActions/ActionEdit/domain/FieldMapper.js +49 -0
  60. package/components/BulkActions/ActionEdit/domain/FieldMapper.js.map +1 -0
  61. package/components/BulkActions/ActionEdit/domain/index.d.ts +4 -0
  62. package/components/BulkActions/ActionEdit/domain/index.js +51 -0
  63. package/components/BulkActions/ActionEdit/domain/index.js.map +1 -0
  64. package/components/BulkActions/ActionEdit/index.d.ts +1 -0
  65. package/components/BulkActions/ActionEdit/index.js +18 -0
  66. package/components/BulkActions/ActionEdit/index.js.map +1 -0
  67. package/components/BulkActions/index.d.ts +1 -0
  68. package/components/BulkActions/index.js +8 -0
  69. package/components/BulkActions/index.js.map +1 -1
  70. package/modules/FileManagerRenderer/index.js +3 -0
  71. package/modules/FileManagerRenderer/index.js.map +1 -1
  72. package/package.json +19 -18
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare const ActionEdit: (() => JSX.Element | null) & {
3
+ displayName: string;
4
+ };
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ActionEdit = void 0;
9
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _edit = require("@material-design-icons/svg/outlined/edit.svg");
14
+ var _appHeadlessCmsCommon = require("@webiny/app-headless-cms-common");
15
+ var _mobxReactLite = require("mobx-react-lite");
16
+ var _omit = _interopRequireDefault(require("lodash/omit"));
17
+ var _FileManagerViewConfig = require("../../../modules/FileManagerRenderer/FileManagerView/FileManagerViewConfig");
18
+ var _FileManagerApiContext = require("../../../modules/FileManagerApiProvider/FileManagerApiContext");
19
+ var _FileManagerViewProvider = require("../../../modules/FileManagerRenderer/FileManagerViewProvider");
20
+ var _useFileModel2 = require("../../../hooks/useFileModel");
21
+ var _ = require("./..");
22
+ var _GraphQLInputMapper = require("./GraphQLInputMapper");
23
+ var _BatchEditorDialog = require("./BatchEditorDialog");
24
+ var _ActionEditPresenter = require("./ActionEditPresenter");
25
+ var ActionEdit = (0, _mobxReactLite.observer)(function () {
26
+ var _useFileModel = (0, _useFileModel2.useFileModel)(),
27
+ defaultFields = _useFileModel.fields;
28
+ var _FileManagerViewConfi = _FileManagerViewConfig.FileManagerViewConfig.Browser.BulkAction,
29
+ useWorker = _FileManagerViewConfi.useWorker,
30
+ useButtons = _FileManagerViewConfi.useButtons,
31
+ useBulkActionDialog = _FileManagerViewConfi.useDialog;
32
+ var worker = useWorker();
33
+ var _useFileManagerView = (0, _FileManagerViewProvider.useFileManagerView)(),
34
+ updateFile = _useFileManagerView.updateFile;
35
+ var _useFileManagerApi = (0, _FileManagerApiContext.useFileManagerApi)(),
36
+ canEdit = _useFileManagerApi.canEdit;
37
+ var _useButtons = useButtons(),
38
+ IconButton = _useButtons.IconButton;
39
+ var _useBulkActionDialog = useBulkActionDialog(),
40
+ showConfirmationDialog = _useBulkActionDialog.showConfirmationDialog,
41
+ showResultsDialog = _useBulkActionDialog.showResultsDialog;
42
+ var presenter = (0, _react.useMemo)(function () {
43
+ return new _ActionEditPresenter.ActionEditPresenter();
44
+ }, []);
45
+ (0, _react.useEffect)(function () {
46
+ presenter.load(defaultFields);
47
+ }, [defaultFields]);
48
+ var filesLabel = (0, _react.useMemo)(function () {
49
+ return (0, _.getFilesLabel)(worker.items.length);
50
+ }, [worker.items.length]);
51
+ var canEditAll = (0, _react.useMemo)(function () {
52
+ return worker.items.every(function (item) {
53
+ return canEdit(item);
54
+ });
55
+ }, [worker.items]);
56
+ var openWorkerDialog = function openWorkerDialog(batch) {
57
+ showConfirmationDialog({
58
+ title: "Edit files",
59
+ message: "You are about to edit ".concat(filesLabel, ". Are you sure you want to continue?"),
60
+ loadingLabel: "Processing ".concat(filesLabel),
61
+ execute: function () {
62
+ var _execute = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
63
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
64
+ while (1) switch (_context2.prev = _context2.next) {
65
+ case 0:
66
+ _context2.next = 2;
67
+ return worker.processInSeries( /*#__PURE__*/function () {
68
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(_ref) {
69
+ var item, report, _extensions$settings, extensions, extensionsData, output, fileData;
70
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
71
+ while (1) switch (_context.prev = _context.next) {
72
+ case 0:
73
+ item = _ref.item, report = _ref.report;
74
+ _context.prev = 1;
75
+ extensions = defaultFields.find(function (field) {
76
+ return field.fieldId === "extensions";
77
+ });
78
+ extensionsData = _GraphQLInputMapper.GraphQLInputMapper.toGraphQLExtensions(item.extensions, batch);
79
+ output = (0, _omit.default)(item, ["id", "createdBy", "createdOn", "src"]);
80
+ fileData = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, output), {}, {
81
+ extensions: (0, _appHeadlessCmsCommon.prepareFormData)(extensionsData, (extensions === null || extensions === void 0 ? void 0 : (_extensions$settings = extensions.settings) === null || _extensions$settings === void 0 ? void 0 : _extensions$settings.fields) || [])
82
+ });
83
+ _context.next = 8;
84
+ return updateFile(item.id, fileData);
85
+ case 8:
86
+ report.success({
87
+ title: "".concat(item.name),
88
+ message: "File successfully edited."
89
+ });
90
+ _context.next = 14;
91
+ break;
92
+ case 11:
93
+ _context.prev = 11;
94
+ _context.t0 = _context["catch"](1);
95
+ report.error({
96
+ title: "".concat(item.name),
97
+ message: _context.t0.message
98
+ });
99
+ case 14:
100
+ case "end":
101
+ return _context.stop();
102
+ }
103
+ }, _callee, null, [[1, 11]]);
104
+ }));
105
+ return function (_x) {
106
+ return _ref2.apply(this, arguments);
107
+ };
108
+ }());
109
+ case 2:
110
+ worker.resetItems();
111
+ showResultsDialog({
112
+ results: worker.results,
113
+ title: "Edit files",
114
+ message: "Finished editing files! See full report below:"
115
+ });
116
+ case 4:
117
+ case "end":
118
+ return _context2.stop();
119
+ }
120
+ }, _callee2);
121
+ }));
122
+ function execute() {
123
+ return _execute.apply(this, arguments);
124
+ }
125
+ return execute;
126
+ }()
127
+ });
128
+ };
129
+ var onBatchEditorSubmit = (0, _react.useCallback)(function (batch) {
130
+ presenter.closeEditor();
131
+ openWorkerDialog(batch);
132
+ }, [openWorkerDialog]);
133
+ if (!presenter.vm.show) {
134
+ return null;
135
+ }
136
+ if (!canEditAll) {
137
+ console.log("You don't have permissions to edit files.");
138
+ return null;
139
+ }
140
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(IconButton, {
141
+ icon: /*#__PURE__*/_react.default.createElement(_edit.ReactComponent, null),
142
+ onAction: function onAction() {
143
+ return presenter.openEditor();
144
+ },
145
+ label: "Edit ".concat(filesLabel),
146
+ tooltipPlacement: "bottom"
147
+ }), /*#__PURE__*/_react.default.createElement(_BatchEditorDialog.BatchEditorDialog, {
148
+ onClose: function onClose() {
149
+ return presenter.closeEditor();
150
+ },
151
+ fields: presenter.vm.fields,
152
+ batch: presenter.vm.currentBatch,
153
+ vm: presenter.vm.editorVm,
154
+ onApply: onBatchEditorSubmit
155
+ }));
156
+ });
157
+ exports.ActionEdit = ActionEdit;
158
+
159
+ //# sourceMappingURL=ActionEdit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_edit","_appHeadlessCmsCommon","_mobxReactLite","_omit","_interopRequireDefault","_FileManagerViewConfig","_FileManagerApiContext","_FileManagerViewProvider","_useFileModel2","_","_GraphQLInputMapper","_BatchEditorDialog","_ActionEditPresenter","ActionEdit","observer","_useFileModel","useFileModel","defaultFields","fields","_FileManagerViewConfi","FileManagerViewConfig","Browser","BulkAction","useWorker","useButtons","useBulkActionDialog","useDialog","worker","_useFileManagerView","useFileManagerView","updateFile","_useFileManagerApi","useFileManagerApi","canEdit","_useButtons","IconButton","_useBulkActionDialog","showConfirmationDialog","showResultsDialog","presenter","useMemo","ActionEditPresenter","useEffect","load","filesLabel","getFilesLabel","items","length","canEditAll","every","item","openWorkerDialog","batch","title","message","concat","loadingLabel","execute","_execute","_asyncToGenerator2","default","_regeneratorRuntime2","mark","_callee2","wrap","_callee2$","_context2","prev","next","processInSeries","_ref2","_callee","_ref","report","_extensions$settings","extensions","extensionsData","output","fileData","_callee$","_context","find","field","fieldId","GraphQLInputMapper","toGraphQLExtensions","omit","_objectSpread2","prepareFormData","settings","id","success","name","t0","error","stop","_x","apply","arguments","resetItems","results","onBatchEditorSubmit","useCallback","closeEditor","vm","show","console","log","createElement","Fragment","icon","ReactComponent","onAction","openEditor","label","tooltipPlacement","BatchEditorDialog","onClose","currentBatch","editorVm","onApply","exports"],"sources":["ActionEdit.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo } from \"react\";\nimport { ReactComponent as EditIcon } from \"@material-design-icons/svg/outlined/edit.svg\";\nimport { prepareFormData } from \"@webiny/app-headless-cms-common\";\nimport { observer } from \"mobx-react-lite\";\nimport omit from \"lodash/omit\";\n\nimport { FileManagerViewConfig } from \"~/modules/FileManagerRenderer/FileManagerView/FileManagerViewConfig\";\nimport { useFileManagerApi } from \"~/modules/FileManagerApiProvider/FileManagerApiContext\";\nimport { useFileManagerView } from \"~/modules/FileManagerRenderer/FileManagerViewProvider\";\n\nimport { useFileModel } from \"~/hooks/useFileModel\";\nimport { getFilesLabel } from \"~/components/BulkActions\";\nimport { GraphQLInputMapper } from \"~/components/BulkActions/ActionEdit/GraphQLInputMapper\";\nimport { BatchDTO } from \"~/components/BulkActions/ActionEdit/domain\";\n\nimport { BatchEditorDialog } from \"./BatchEditorDialog\";\nimport { ActionEditPresenter } from \"./ActionEditPresenter\";\n\nexport const ActionEdit = observer(() => {\n const { fields: defaultFields } = useFileModel();\n const {\n useWorker,\n useButtons,\n useDialog: useBulkActionDialog\n } = FileManagerViewConfig.Browser.BulkAction;\n const worker = useWorker();\n const { updateFile } = useFileManagerView();\n const { canEdit } = useFileManagerApi();\n const { IconButton } = useButtons();\n const { showConfirmationDialog, showResultsDialog } = useBulkActionDialog();\n\n const presenter = useMemo<ActionEditPresenter>(() => {\n return new ActionEditPresenter();\n }, []);\n\n useEffect(() => {\n presenter.load(defaultFields);\n }, [defaultFields]);\n\n const filesLabel = useMemo(() => {\n return getFilesLabel(worker.items.length);\n }, [worker.items.length]);\n\n const canEditAll = useMemo(() => {\n return worker.items.every(item => canEdit(item));\n }, [worker.items]);\n\n const openWorkerDialog = (batch: BatchDTO) => {\n showConfirmationDialog({\n title: \"Edit files\",\n message: `You are about to edit ${filesLabel}. Are you sure you want to continue?`,\n loadingLabel: `Processing ${filesLabel}`,\n execute: async () => {\n await worker.processInSeries(async ({ item, report }) => {\n try {\n const extensions = defaultFields.find(\n field => field.fieldId === \"extensions\"\n );\n\n const extensionsData = GraphQLInputMapper.toGraphQLExtensions(\n item.extensions,\n batch\n );\n\n const output = omit(item, [\"id\", \"createdBy\", \"createdOn\", \"src\"]);\n\n const fileData = {\n ...output,\n extensions: prepareFormData(\n extensionsData,\n extensions?.settings?.fields || []\n )\n };\n\n await updateFile(item.id, fileData);\n\n report.success({\n title: `${item.name}`,\n message: \"File successfully edited.\"\n });\n } catch (e) {\n report.error({\n title: `${item.name}`,\n message: e.message\n });\n }\n });\n\n worker.resetItems();\n\n showResultsDialog({\n results: worker.results,\n title: \"Edit files\",\n message: \"Finished editing files! See full report below:\"\n });\n }\n });\n };\n\n const onBatchEditorSubmit = useCallback(\n (batch: BatchDTO) => {\n presenter.closeEditor();\n openWorkerDialog(batch);\n },\n [openWorkerDialog]\n );\n\n if (!presenter.vm.show) {\n return null;\n }\n\n if (!canEditAll) {\n console.log(\"You don't have permissions to edit files.\");\n return null;\n }\n\n return (\n <>\n <IconButton\n icon={<EditIcon />}\n onAction={() => presenter.openEditor()}\n label={`Edit ${filesLabel}`}\n tooltipPlacement={\"bottom\"}\n />\n <BatchEditorDialog\n onClose={() => presenter.closeEditor()}\n fields={presenter.vm.fields}\n batch={presenter.vm.currentBatch}\n vm={presenter.vm.editorVm}\n onApply={onBatchEditorSubmit}\n />\n </>\n );\n});\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /// <reference types="react" />
2
+ /// <reference types="react" />
3
+ /// <reference types="web" />
4
+ import { Dialog } from "@webiny/ui/Dialog";
5
+ export declare const ActionEditFormContainer: import("@emotion/styled").StyledComponent<{
6
+ theme?: import("@emotion/react").Theme | undefined;
7
+ as?: import("react").ElementType<any> | undefined;
8
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
9
+ export declare const DialogContainer: import("@emotion/styled").StyledComponent<import("@webiny/ui/Dialog").DialogProps & {
10
+ theme?: import("@emotion/react").Theme | undefined;
11
+ }, {}, {
12
+ ref?: import("react").Ref<Dialog> | undefined;
13
+ }>;
14
+ export declare const BatchEditorContainer: import("@emotion/styled").StyledComponent<{
15
+ theme?: import("@emotion/react").Theme | undefined;
16
+ as?: import("react").ElementType<any> | undefined;
17
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
18
+ export declare const AddOperationInner: import("@emotion/styled").StyledComponent<{
19
+ theme?: import("@emotion/react").Theme | undefined;
20
+ as?: import("react").ElementType<any> | undefined;
21
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
22
+ interface ButtonIconProps {
23
+ disabled?: boolean;
24
+ }
25
+ export declare const ButtonIcon: import("@emotion/styled").StyledComponent<import("react").SVGProps<SVGSVGElement> & {
26
+ alt?: string | undefined;
27
+ } & {
28
+ children?: import("react").ReactNode;
29
+ } & {
30
+ theme?: import("@emotion/react").Theme | undefined;
31
+ } & ButtonIconProps, {}, {}>;
32
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DialogContainer = exports.ButtonIcon = exports.BatchEditorContainer = exports.AddOperationInner = exports.ActionEditFormContainer = void 0;
8
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _add = require("@material-design-icons/svg/round/add.svg");
10
+ var _Dialog = require("@webiny/ui/Dialog");
11
+ var ActionEditFormContainer = /*#__PURE__*/(0, _styled.default)("div", {
12
+ label: "ActionEditFormContainer",
13
+ target: "e8q9yhg0"
14
+ })("margin:-24px !important;");
15
+ exports.ActionEditFormContainer = ActionEditFormContainer;
16
+ var DialogContainer = /*#__PURE__*/(0, _styled.default)(_Dialog.Dialog, {
17
+ label: "DialogContainer",
18
+ target: "e8q9yhg1"
19
+ })("z-index:22;.mdc-dialog__surface{width:800px;min-width:800px;}");
20
+ exports.DialogContainer = DialogContainer;
21
+ var BatchEditorContainer = /*#__PURE__*/(0, _styled.default)("div", {
22
+ label: "BatchEditorContainer",
23
+ target: "e8q9yhg2"
24
+ })("padding:24px;");
25
+ exports.BatchEditorContainer = BatchEditorContainer;
26
+ var AddOperationInner = /*#__PURE__*/(0, _styled.default)("div", {
27
+ label: "AddOperationInner",
28
+ target: "e8q9yhg3"
29
+ })("padding:24px 0 0;text-align:center;");
30
+ exports.AddOperationInner = AddOperationInner;
31
+ var ButtonIcon = /*#__PURE__*/(0, _styled.default)(_add.ReactComponent, {
32
+ label: "ButtonIcon",
33
+ target: "e8q9yhg4"
34
+ })("fill:", function (props) {
35
+ return props.disabled ? "var(--mdc-theme-text-hint-on-light)" : "var(--mdc-theme-primary)";
36
+ }, ";width:18px;margin-right:8px;");
37
+ exports.ButtonIcon = ButtonIcon;
38
+
39
+ //# sourceMappingURL=ActionEdit.styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_styled","_interopRequireDefault","require","_add","_Dialog","ActionEditFormContainer","styled","label","target","exports","DialogContainer","Dialog","BatchEditorContainer","AddOperationInner","ButtonIcon","AddIcon","props","disabled"],"sources":["ActionEdit.styled.tsx"],"sourcesContent":["import styled from \"@emotion/styled\";\nimport { ReactComponent as AddIcon } from \"@material-design-icons/svg/round/add.svg\";\nimport { Dialog } from \"@webiny/ui/Dialog\";\n\nexport const ActionEditFormContainer = styled.div`\n margin: -24px !important;\n`;\n\nexport const DialogContainer = styled(Dialog)`\n z-index: 22;\n\n .mdc-dialog__surface {\n width: 800px;\n min-width: 800px;\n }\n`;\n\nexport const BatchEditorContainer = styled.div`\n padding: 24px;\n`;\n\nexport const AddOperationInner = styled.div`\n padding: 24px 0 0;\n text-align: center;\n`;\n\ninterface ButtonIconProps {\n disabled?: boolean;\n}\n\nexport const ButtonIcon = styled(AddIcon)<ButtonIconProps>`\n fill: ${props =>\n props.disabled ? \"var(--mdc-theme-text-hint-on-light)\" : \"var(--mdc-theme-primary)\"};\n width: 18px;\n margin-right: 8px;\n`;\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEO,IAAMG,uBAAuB,oBAAGC,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,8BAE5C;AAACC,OAAA,CAAAJ,uBAAA,GAAAA,uBAAA;AAEK,IAAMK,eAAe,oBAAGJ,eAAM,EAACK,cAAM;EAAAJ,KAAA;EAAAC,MAAA;AAAA,mEAO3C;AAACC,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEK,IAAME,oBAAoB,oBAAGN,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,mBAEzC;AAACC,OAAA,CAAAG,oBAAA,GAAAA,oBAAA;AAEK,IAAMC,iBAAiB,oBAAGP,eAAM;EAAAC,KAAA;EAAAC,MAAA;AAAA,yCAGtC;AAACC,OAAA,CAAAI,iBAAA,GAAAA,iBAAA;AAMK,IAAMC,UAAU,oBAAGR,eAAM,EAACS,mBAAO;EAAAR,KAAA;EAAAC,MAAA;AAAA,YAC5B,UAAAQ,KAAK;EAAA,OACTA,KAAK,CAACC,QAAQ,GAAG,qCAAqC,GAAG,0BAA0B;AAAA,mCAG1F;AAACR,OAAA,CAAAK,UAAA,GAAAA,UAAA"}
@@ -0,0 +1,2 @@
1
+ import { FileItem } from "@webiny/app-admin/types";
2
+ export declare type ActionFormData = Partial<Omit<FileItem, "id">>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=ActionEdit.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["ActionEdit.types.ts"],"sourcesContent":["import { FileItem } from \"@webiny/app-admin/types\";\n\nexport type ActionFormData = Partial<Omit<FileItem, \"id\">>;\n"],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { BatchDTO, FieldDTO, FieldRaw } from "./domain";
2
+ interface IActionEditPresenter {
3
+ load: (fields: FieldRaw[]) => void;
4
+ openEditor: () => void;
5
+ closeEditor: () => void;
6
+ get vm(): {
7
+ show: boolean;
8
+ currentBatch: BatchDTO;
9
+ fields: FieldDTO[];
10
+ editorVm: {
11
+ isOpen: boolean;
12
+ };
13
+ };
14
+ }
15
+ export declare class ActionEditPresenter implements IActionEditPresenter {
16
+ private showEditor;
17
+ private readonly currentBatch;
18
+ private extensionFields;
19
+ constructor();
20
+ load(fields: FieldRaw[]): void;
21
+ private getExtensionFields;
22
+ private get editorVm();
23
+ get vm(): {
24
+ show: boolean;
25
+ currentBatch: BatchDTO;
26
+ fields: FieldDTO[];
27
+ editorVm: {
28
+ isOpen: boolean;
29
+ };
30
+ };
31
+ openEditor(): void;
32
+ closeEditor(): void;
33
+ }
34
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ActionEditPresenter = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _mobx = require("mobx");
12
+ var _domain = require("./domain");
13
+ var ActionEditPresenter = /*#__PURE__*/function () {
14
+ function ActionEditPresenter() {
15
+ (0, _classCallCheck2.default)(this, ActionEditPresenter);
16
+ (0, _defineProperty2.default)(this, "showEditor", false);
17
+ this.extensionFields = [];
18
+ this.currentBatch = _domain.BatchMapper.toDTO(_domain.Batch.createEmpty());
19
+ (0, _mobx.makeAutoObservable)(this);
20
+ }
21
+ (0, _createClass2.default)(ActionEditPresenter, [{
22
+ key: "load",
23
+ value: function load(fields) {
24
+ this.extensionFields = this.getExtensionFields(fields);
25
+ }
26
+ }, {
27
+ key: "getExtensionFields",
28
+ value: function getExtensionFields(fields) {
29
+ var _extensions$settings;
30
+ var extensions = fields.find(function (field) {
31
+ return field.fieldId === "extensions";
32
+ });
33
+ if (!(extensions !== null && extensions !== void 0 && (_extensions$settings = extensions.settings) !== null && _extensions$settings !== void 0 && _extensions$settings.fields)) {
34
+ return [];
35
+ }
36
+ var extensionFields = extensions.settings.fields.filter(function (field) {
37
+ return field.tags && field.tags.includes("$bulk-edit");
38
+ }) || [];
39
+ return _domain.FieldMapper.toDTO(extensionFields.map(function (field) {
40
+ return _domain.Field.createFromRaw(field);
41
+ }));
42
+ }
43
+ }, {
44
+ key: "editorVm",
45
+ get: function get() {
46
+ return {
47
+ isOpen: this.showEditor
48
+ };
49
+ }
50
+ }, {
51
+ key: "vm",
52
+ get: function get() {
53
+ return {
54
+ show: this.extensionFields.length > 0,
55
+ currentBatch: this.currentBatch,
56
+ fields: this.extensionFields,
57
+ editorVm: this.editorVm
58
+ };
59
+ }
60
+ }, {
61
+ key: "openEditor",
62
+ value: function openEditor() {
63
+ this.showEditor = true;
64
+ }
65
+ }, {
66
+ key: "closeEditor",
67
+ value: function closeEditor() {
68
+ this.showEditor = false;
69
+ }
70
+ }]);
71
+ return ActionEditPresenter;
72
+ }();
73
+ exports.ActionEditPresenter = ActionEditPresenter;
74
+
75
+ //# sourceMappingURL=ActionEditPresenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_mobx","require","_domain","ActionEditPresenter","_classCallCheck2","default","_defineProperty2","extensionFields","currentBatch","BatchMapper","toDTO","Batch","createEmpty","makeAutoObservable","_createClass2","key","value","load","fields","getExtensionFields","_extensions$settings","extensions","find","field","fieldId","settings","filter","tags","includes","FieldMapper","map","Field","createFromRaw","get","isOpen","showEditor","show","length","editorVm","openEditor","closeEditor","exports"],"sources":["ActionEditPresenter.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\n\nimport {\n Batch,\n BatchDTO,\n BatchMapper,\n Field,\n FieldDTO,\n FieldMapper,\n FieldRaw\n} from \"~/components/BulkActions/ActionEdit/domain\";\n\ninterface IActionEditPresenter {\n load: (fields: FieldRaw[]) => void;\n openEditor: () => void;\n closeEditor: () => void;\n get vm(): {\n show: boolean;\n currentBatch: BatchDTO;\n fields: FieldDTO[];\n editorVm: {\n isOpen: boolean;\n };\n };\n}\n\nexport class ActionEditPresenter implements IActionEditPresenter {\n private showEditor = false;\n private readonly currentBatch: BatchDTO;\n private extensionFields: FieldDTO[];\n\n constructor() {\n this.extensionFields = [];\n this.currentBatch = BatchMapper.toDTO(Batch.createEmpty());\n makeAutoObservable(this);\n }\n\n load(fields: FieldRaw[]) {\n this.extensionFields = this.getExtensionFields(fields);\n }\n\n private getExtensionFields(fields: FieldRaw[]) {\n const extensions = fields.find(field => field.fieldId === \"extensions\");\n\n if (!extensions?.settings?.fields) {\n return [];\n }\n\n const extensionFields =\n extensions.settings.fields.filter(\n field => field.tags && field.tags.includes(\"$bulk-edit\")\n ) || [];\n\n return FieldMapper.toDTO(extensionFields.map(field => Field.createFromRaw(field)));\n }\n\n private get editorVm() {\n return {\n isOpen: this.showEditor\n };\n }\n\n get vm() {\n return {\n show: this.extensionFields.length > 0,\n currentBatch: this.currentBatch,\n fields: this.extensionFields,\n editorVm: this.editorVm\n };\n }\n\n openEditor() {\n this.showEditor = true;\n }\n\n closeEditor() {\n this.showEditor = false;\n }\n}\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAQoD,IAgBvCE,mBAAmB;EAK5B,SAAAA,oBAAA,EAAc;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAF,mBAAA;IAAA,IAAAG,gBAAA,CAAAD,OAAA,sBAJO,KAAK;IAKtB,IAAI,CAACE,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,YAAY,GAAGC,mBAAW,CAACC,KAAK,CAACC,aAAK,CAACC,WAAW,CAAC,CAAC,CAAC;IAC1D,IAAAC,wBAAkB,EAAC,IAAI,CAAC;EAC5B;EAAC,IAAAC,aAAA,CAAAT,OAAA,EAAAF,mBAAA;IAAAY,GAAA;IAAAC,KAAA,EAED,SAAAC,KAAKC,MAAkB,EAAE;MACrB,IAAI,CAACX,eAAe,GAAG,IAAI,CAACY,kBAAkB,CAACD,MAAM,CAAC;IAC1D;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAAG,mBAA2BD,MAAkB,EAAE;MAAA,IAAAE,oBAAA;MAC3C,IAAMC,UAAU,GAAGH,MAAM,CAACI,IAAI,CAAC,UAAAC,KAAK;QAAA,OAAIA,KAAK,CAACC,OAAO,KAAK,YAAY;MAAA,EAAC;MAEvE,IAAI,EAACH,UAAU,aAAVA,UAAU,gBAAAD,oBAAA,GAAVC,UAAU,CAAEI,QAAQ,cAAAL,oBAAA,eAApBA,oBAAA,CAAsBF,MAAM,GAAE;QAC/B,OAAO,EAAE;MACb;MAEA,IAAMX,eAAe,GACjBc,UAAU,CAACI,QAAQ,CAACP,MAAM,CAACQ,MAAM,CAC7B,UAAAH,KAAK;QAAA,OAAIA,KAAK,CAACI,IAAI,IAAIJ,KAAK,CAACI,IAAI,CAACC,QAAQ,CAAC,YAAY,CAAC;MAAA,CAC5D,CAAC,IAAI,EAAE;MAEX,OAAOC,mBAAW,CAACnB,KAAK,CAACH,eAAe,CAACuB,GAAG,CAAC,UAAAP,KAAK;QAAA,OAAIQ,aAAK,CAACC,aAAa,CAACT,KAAK,CAAC;MAAA,EAAC,CAAC;IACtF;EAAC;IAAAR,GAAA;IAAAkB,GAAA,EAED,SAAAA,IAAA,EAAuB;MACnB,OAAO;QACHC,MAAM,EAAE,IAAI,CAACC;MACjB,CAAC;IACL;EAAC;IAAApB,GAAA;IAAAkB,GAAA,EAED,SAAAA,IAAA,EAAS;MACL,OAAO;QACHG,IAAI,EAAE,IAAI,CAAC7B,eAAe,CAAC8B,MAAM,GAAG,CAAC;QACrC7B,YAAY,EAAE,IAAI,CAACA,YAAY;QAC/BU,MAAM,EAAE,IAAI,CAACX,eAAe;QAC5B+B,QAAQ,EAAE,IAAI,CAACA;MACnB,CAAC;IACL;EAAC;IAAAvB,GAAA;IAAAC,KAAA,EAED,SAAAuB,WAAA,EAAa;MACT,IAAI,CAACJ,UAAU,GAAG,IAAI;IAC1B;EAAC;IAAApB,GAAA;IAAAC,KAAA,EAED,SAAAwB,YAAA,EAAc;MACV,IAAI,CAACL,UAAU,GAAG,KAAK;IAC3B;EAAC;EAAA,OAAAhC,mBAAA;AAAA;AAAAsC,OAAA,CAAAtC,mBAAA,GAAAA,mBAAA"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ var _ActionEditPresenter = require("./ActionEditPresenter");
4
+ describe("ActionEditPresenter", function () {
5
+ var extensionFields = [{
6
+ id: "field1",
7
+ fieldId: "field1",
8
+ label: "Field 1",
9
+ type: "text",
10
+ renderer: {
11
+ name: "text-input"
12
+ },
13
+ tags: ["$bulk-edit"],
14
+ storageId: "text@field1"
15
+ }, {
16
+ id: "field2",
17
+ fieldId: "field2",
18
+ label: "Field 2",
19
+ type: "ref",
20
+ renderer: {
21
+ name: "ref-inputs"
22
+ },
23
+ multipleValues: true,
24
+ settings: {
25
+ models: [{
26
+ modelId: "any-model"
27
+ }]
28
+ },
29
+ tags: ["$bulk-edit"],
30
+ storageId: "ref@field2"
31
+ }, {
32
+ id: "field3",
33
+ fieldId: "field3",
34
+ label: "Field 3",
35
+ type: "number",
36
+ renderer: {
37
+ name: "number-input"
38
+ },
39
+ tags: [],
40
+ storageId: "number@field3"
41
+ }];
42
+ var createFields = function createFields(extensionFields) {
43
+ return [{
44
+ id: "name",
45
+ storageId: "text@name",
46
+ fieldId: "name",
47
+ label: "Name",
48
+ type: "text",
49
+ settings: {},
50
+ listValidation: [],
51
+ validation: [{
52
+ name: "required",
53
+ message: "Value is required."
54
+ }],
55
+ multipleValues: false,
56
+ predefinedValues: {
57
+ values: [],
58
+ enabled: false
59
+ },
60
+ renderer: {
61
+ name: "text-input"
62
+ }
63
+ }, {
64
+ id: "extensions",
65
+ storageId: "object@extensions",
66
+ fieldId: "extensions",
67
+ label: "Extensions",
68
+ type: "object",
69
+ settings: {
70
+ layout: extensionFields.map(function (field) {
71
+ return [field.id];
72
+ }),
73
+ fields: extensionFields
74
+ },
75
+ listValidation: [],
76
+ validation: [],
77
+ multipleValues: false,
78
+ predefinedValues: {
79
+ values: [],
80
+ enabled: false
81
+ },
82
+ renderer: {
83
+ name: "any"
84
+ }
85
+ }];
86
+ };
87
+ var presenter;
88
+ beforeEach(function () {
89
+ jest.clearAllMocks();
90
+ presenter = new _ActionEditPresenter.ActionEditPresenter();
91
+ });
92
+ it("should create a presenter and load extensions fields", function () {
93
+ presenter.load(createFields(extensionFields));
94
+
95
+ // I should see the bulk edit action
96
+ expect(presenter.vm.show).toEqual(true);
97
+
98
+ // I should receive a `currentBatch`
99
+ expect(presenter.vm.currentBatch).toEqual({
100
+ operations: [{
101
+ field: "",
102
+ operator: "",
103
+ value: {}
104
+ }]
105
+ });
106
+
107
+ // I should receive the `fields` available for bulk edit
108
+ expect(presenter.vm.fields).toEqual([{
109
+ label: "Field 1",
110
+ value: "field1",
111
+ operators: [{
112
+ label: "Override existing values",
113
+ value: "OVERRIDE"
114
+ }, {
115
+ label: "Clear all existing values",
116
+ value: "REMOVE"
117
+ }],
118
+ raw: extensionFields[0]
119
+ }, {
120
+ label: "Field 2",
121
+ value: "field2",
122
+ operators: [{
123
+ label: "Override existing values",
124
+ value: "OVERRIDE"
125
+ }, {
126
+ label: "Clear all existing values",
127
+ value: "REMOVE"
128
+ }, {
129
+ label: "Append to existing values",
130
+ value: "APPEND"
131
+ }],
132
+ raw: extensionFields[1]
133
+ }]);
134
+
135
+ // I should receive the editor.vm
136
+ expect(presenter.vm.editorVm).toEqual({
137
+ isOpen: false
138
+ });
139
+ });
140
+ it("should not show the bulk action if no `extensions` fields are defined", function () {
141
+ presenter.load(createFields([]));
142
+
143
+ // The editor action should not be rendered
144
+ expect(presenter.vm.show).toBe(false);
145
+ });
146
+ it("should open / close the editor", function () {
147
+ presenter.load(createFields(extensionFields));
148
+
149
+ // The editor should be closed by default
150
+ expect(presenter.vm.editorVm.isOpen).toBe(false);
151
+
152
+ // Let's open the editor
153
+ presenter.openEditor();
154
+ expect(presenter.vm.editorVm.isOpen).toBe(true);
155
+
156
+ // Let's open the editor
157
+ presenter.closeEditor();
158
+ expect(presenter.vm.editorVm.isOpen).toBe(false);
159
+ });
160
+ });
161
+
162
+ //# sourceMappingURL=ActionEditPresenter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ActionEditPresenter","require","describe","extensionFields","id","fieldId","label","type","renderer","name","tags","storageId","multipleValues","settings","models","modelId","createFields","listValidation","validation","message","predefinedValues","values","enabled","layout","map","field","fields","presenter","beforeEach","jest","clearAllMocks","ActionEditPresenter","it","load","expect","vm","show","toEqual","currentBatch","operations","operator","value","operators","raw","editorVm","isOpen","toBe","openEditor","closeEditor"],"sources":["ActionEditPresenter.test.ts"],"sourcesContent":["import { ActionEditPresenter } from \"./ActionEditPresenter\";\nimport { FieldRaw } from \"~/components/BulkActions/ActionEdit/domain\";\n\ndescribe(\"ActionEditPresenter\", () => {\n const extensionFields = [\n {\n id: \"field1\",\n fieldId: \"field1\",\n label: \"Field 1\",\n type: \"text\",\n renderer: {\n name: \"text-input\"\n },\n tags: [\"$bulk-edit\"],\n storageId: \"text@field1\"\n },\n {\n id: \"field2\",\n fieldId: \"field2\",\n label: \"Field 2\",\n type: \"ref\",\n renderer: {\n name: \"ref-inputs\"\n },\n multipleValues: true,\n settings: {\n models: [\n {\n modelId: \"any-model\"\n }\n ]\n },\n tags: [\"$bulk-edit\"],\n storageId: \"ref@field2\"\n },\n {\n id: \"field3\",\n fieldId: \"field3\",\n label: \"Field 3\",\n type: \"number\",\n renderer: {\n name: \"number-input\"\n },\n tags: [],\n storageId: \"number@field3\"\n }\n ];\n\n const createFields = (extensionFields: FieldRaw[]) => {\n return [\n {\n id: \"name\",\n storageId: \"text@name\",\n fieldId: \"name\",\n label: \"Name\",\n type: \"text\",\n settings: {},\n listValidation: [],\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ],\n multipleValues: false,\n predefinedValues: {\n values: [],\n enabled: false\n },\n renderer: {\n name: \"text-input\"\n }\n },\n {\n id: \"extensions\",\n storageId: \"object@extensions\",\n fieldId: \"extensions\",\n label: \"Extensions\",\n type: \"object\",\n settings: {\n layout: extensionFields.map(field => [field.id]),\n fields: extensionFields\n },\n listValidation: [],\n validation: [],\n multipleValues: false,\n predefinedValues: {\n values: [],\n enabled: false\n },\n renderer: {\n name: \"any\"\n }\n }\n ];\n };\n\n let presenter: ActionEditPresenter;\n\n beforeEach(() => {\n jest.clearAllMocks();\n presenter = new ActionEditPresenter();\n });\n\n it(\"should create a presenter and load extensions fields\", () => {\n presenter.load(createFields(extensionFields));\n\n // I should see the bulk edit action\n expect(presenter.vm.show).toEqual(true);\n\n // I should receive a `currentBatch`\n expect(presenter.vm.currentBatch).toEqual({\n operations: [\n {\n field: \"\",\n operator: \"\",\n value: {}\n }\n ]\n });\n\n // I should receive the `fields` available for bulk edit\n expect(presenter.vm.fields).toEqual([\n {\n label: \"Field 1\",\n value: \"field1\",\n operators: [\n {\n label: \"Override existing values\",\n value: \"OVERRIDE\"\n },\n {\n label: \"Clear all existing values\",\n value: \"REMOVE\"\n }\n ],\n raw: extensionFields[0]\n },\n {\n label: \"Field 2\",\n value: \"field2\",\n operators: [\n {\n label: \"Override existing values\",\n value: \"OVERRIDE\"\n },\n {\n label: \"Clear all existing values\",\n value: \"REMOVE\"\n },\n {\n label: \"Append to existing values\",\n value: \"APPEND\"\n }\n ],\n raw: extensionFields[1]\n }\n ]);\n\n // I should receive the editor.vm\n expect(presenter.vm.editorVm).toEqual({\n isOpen: false\n });\n });\n\n it(\"should not show the bulk action if no `extensions` fields are defined\", () => {\n presenter.load(createFields([]));\n\n // The editor action should not be rendered\n expect(presenter.vm.show).toBe(false);\n });\n\n it(\"should open / close the editor\", () => {\n presenter.load(createFields(extensionFields));\n\n // The editor should be closed by default\n expect(presenter.vm.editorVm.isOpen).toBe(false);\n\n // Let's open the editor\n presenter.openEditor();\n expect(presenter.vm.editorVm.isOpen).toBe(true);\n\n // Let's open the editor\n presenter.closeEditor();\n expect(presenter.vm.editorVm.isOpen).toBe(false);\n });\n});\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ interface AddOperationProps {
3
+ disabled: boolean;
4
+ onClick: () => void;
5
+ }
6
+ export declare const AddOperation: ({ disabled, onClick }: AddOperationProps) => JSX.Element;
7
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AddOperation = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _Button = require("@webiny/ui/Button");
10
+ var _ActionEdit = require("../ActionEdit.styled");
11
+ var AddOperation = function AddOperation(_ref) {
12
+ var disabled = _ref.disabled,
13
+ onClick = _ref.onClick;
14
+ return /*#__PURE__*/_react.default.createElement(_ActionEdit.AddOperationInner, null, /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
15
+ disabled: disabled,
16
+ onClick: onClick
17
+ }, /*#__PURE__*/_react.default.createElement(_ActionEdit.ButtonIcon, {
18
+ disabled: disabled
19
+ }), " ", "Add new operation"));
20
+ };
21
+ exports.AddOperation = AddOperation;
22
+
23
+ //# sourceMappingURL=AddOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_Button","_ActionEdit","AddOperation","_ref","disabled","onClick","default","createElement","AddOperationInner","ButtonDefault","ButtonIcon","exports"],"sources":["AddOperation.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { ButtonDefault } from \"@webiny/ui/Button\";\n\nimport {\n AddOperationInner,\n ButtonIcon\n} from \"~/components/BulkActions/ActionEdit/ActionEdit.styled\";\n\ninterface AddOperationProps {\n disabled: boolean;\n onClick: () => void;\n}\n\nexport const AddOperation = ({ disabled, onClick }: AddOperationProps) => {\n return (\n <AddOperationInner>\n <ButtonDefault disabled={disabled} onClick={onClick}>\n <ButtonIcon disabled={disabled} /> {\"Add new operation\"}\n </ButtonDefault>\n </AddOperationInner>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAUO,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA,EAAiD;EAAA,IAA3CC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,OAAO,GAAAF,IAAA,CAAPE,OAAO;EAC5C,oBACIR,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACN,WAAA,CAAAO,iBAAiB,qBACdX,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACP,OAAA,CAAAS,aAAa;IAACL,QAAQ,EAAEA,QAAS;IAACC,OAAO,EAAEA;EAAQ,gBAChDR,MAAA,CAAAS,OAAA,CAAAC,aAAA,CAACN,WAAA,CAAAS,UAAU;IAACN,QAAQ,EAAEA;EAAS,CAAE,CAAC,KAAC,EAAC,mBACzB,CACA,CAAC;AAE5B,CAAC;AAACO,OAAA,CAAAT,YAAA,GAAAA,YAAA"}