@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,15 @@
1
+ /// <reference types="react" />
2
+ import { FormAPI, FormOnSubmit } from "@webiny/form";
3
+ import { BatchEditorDialogViewModel, BatchEditorFormData } from "./BatchEditorDialogPresenter";
4
+ export interface BatchEditorProps {
5
+ onForm: (form: FormAPI) => void;
6
+ onAdd: () => void;
7
+ onDelete: (operationIndex: number) => void;
8
+ onChange: (data: BatchEditorFormData) => void;
9
+ onSetOperationFieldData: (operationIndex: number, data: string) => void;
10
+ onSubmit: FormOnSubmit<BatchEditorFormData>;
11
+ vm: BatchEditorDialogViewModel;
12
+ }
13
+ export declare const BatchEditor: ((props: BatchEditorProps) => JSX.Element) & {
14
+ displayName: string;
15
+ };
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.BatchEditor = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _mobxReactLite = require("mobx-react-lite");
10
+ var _delete_outline = require("@material-design-icons/svg/outlined/delete_outline.svg");
11
+ var _form = require("@webiny/form");
12
+ var _Accordion = require("@webiny/ui/Accordion");
13
+ var _AddOperation = require("./AddOperation");
14
+ var _Operation = require("./Operation");
15
+ var _ActionEdit = require("../ActionEdit.styled");
16
+ var BatchEditor = (0, _mobxReactLite.observer)(function (props) {
17
+ var formRef = /*#__PURE__*/_react.default.createRef();
18
+ (0, _react.useEffect)(function () {
19
+ if (formRef.current) {
20
+ props.onForm(formRef.current);
21
+ }
22
+ }, []);
23
+ return /*#__PURE__*/_react.default.createElement(_form.Form, {
24
+ ref: formRef,
25
+ data: props.vm.data,
26
+ onChange: props.onChange,
27
+ onSubmit: props.onSubmit,
28
+ invalidFields: props.vm.invalidFields
29
+ }, function () {
30
+ return /*#__PURE__*/_react.default.createElement(_ActionEdit.BatchEditorContainer, null, /*#__PURE__*/_react.default.createElement(_Accordion.Accordion, {
31
+ elevation: 1
32
+ }, props.vm.data.operations.map(function (operation, operationIndex) {
33
+ return /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem, {
34
+ key: "operation-".concat(operationIndex),
35
+ title: operation.title,
36
+ open: operation.open,
37
+ actions: /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem.Actions, null, /*#__PURE__*/_react.default.createElement(_Accordion.AccordionItem.Action, {
38
+ icon: /*#__PURE__*/_react.default.createElement(_delete_outline.ReactComponent, null),
39
+ onClick: function onClick() {
40
+ return props.onDelete(operationIndex);
41
+ },
42
+ disabled: !operation.canDelete
43
+ }))
44
+ }, /*#__PURE__*/_react.default.createElement(_Operation.Operation, {
45
+ name: "operations.".concat(operationIndex),
46
+ operation: operation,
47
+ onDelete: function onDelete() {
48
+ return props.onDelete(operationIndex);
49
+ },
50
+ onSetOperationFieldData: function onSetOperationFieldData(data) {
51
+ return props.onSetOperationFieldData(operationIndex, data);
52
+ }
53
+ }));
54
+ })), /*#__PURE__*/_react.default.createElement(_AddOperation.AddOperation, {
55
+ disabled: !props.vm.canAddOperation,
56
+ onClick: function onClick() {
57
+ return props.onAdd();
58
+ }
59
+ }));
60
+ });
61
+ });
62
+ exports.BatchEditor = BatchEditor;
63
+
64
+ //# sourceMappingURL=BatchEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_mobxReactLite","_delete_outline","_form","_Accordion","_AddOperation","_Operation","_ActionEdit","BatchEditor","observer","props","formRef","React","createRef","useEffect","current","onForm","default","createElement","Form","ref","data","vm","onChange","onSubmit","invalidFields","BatchEditorContainer","Accordion","elevation","operations","map","operation","operationIndex","AccordionItem","key","concat","title","open","actions","Actions","Action","icon","ReactComponent","onClick","onDelete","disabled","canDelete","Operation","name","onSetOperationFieldData","AddOperation","canAddOperation","onAdd","exports"],"sources":["BatchEditor.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\n\nimport { observer } from \"mobx-react-lite\";\nimport { ReactComponent as DeleteIcon } from \"@material-design-icons/svg/outlined/delete_outline.svg\";\nimport { Form, FormAPI, FormOnSubmit } from \"@webiny/form\";\nimport { Accordion, AccordionItem } from \"@webiny/ui/Accordion\";\n\nimport { AddOperation } from \"~/components/BulkActions/ActionEdit/BatchEditorDialog/AddOperation\";\nimport { Operation } from \"~/components/BulkActions/ActionEdit/BatchEditorDialog/Operation\";\nimport {\n BatchEditorDialogViewModel,\n BatchEditorFormData\n} from \"~/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditorDialogPresenter\";\nimport { BatchEditorContainer } from \"~/components/BulkActions/ActionEdit/ActionEdit.styled\";\n\nexport interface BatchEditorProps {\n onForm: (form: FormAPI) => void;\n onAdd: () => void;\n onDelete: (operationIndex: number) => void;\n onChange: (data: BatchEditorFormData) => void;\n onSetOperationFieldData: (operationIndex: number, data: string) => void;\n onSubmit: FormOnSubmit<BatchEditorFormData>;\n vm: BatchEditorDialogViewModel;\n}\n\nexport const BatchEditor = observer((props: BatchEditorProps) => {\n const formRef = React.createRef<FormAPI>();\n\n useEffect(() => {\n if (formRef.current) {\n props.onForm(formRef.current);\n }\n }, []);\n\n return (\n <Form\n ref={formRef}\n data={props.vm.data}\n onChange={props.onChange}\n onSubmit={props.onSubmit}\n invalidFields={props.vm.invalidFields}\n >\n {() => (\n <BatchEditorContainer>\n <Accordion elevation={1}>\n {props.vm.data.operations.map((operation, operationIndex) => (\n <AccordionItem\n key={`operation-${operationIndex}`}\n title={operation.title}\n open={operation.open}\n actions={\n <AccordionItem.Actions>\n <AccordionItem.Action\n icon={<DeleteIcon />}\n onClick={() => props.onDelete(operationIndex)}\n disabled={!operation.canDelete}\n />\n </AccordionItem.Actions>\n }\n >\n <Operation\n name={`operations.${operationIndex}`}\n operation={operation}\n onDelete={() => props.onDelete(operationIndex)}\n onSetOperationFieldData={data =>\n props.onSetOperationFieldData(operationIndex, data)\n }\n />\n </AccordionItem>\n ))}\n </Accordion>\n <AddOperation\n disabled={!props.vm.canAddOperation}\n onClick={() => props.onAdd()}\n />\n </BatchEditorContainer>\n )}\n </Form>\n );\n});\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { BatchDTO, FieldDTO } from "../domain";
3
+ interface BatchEditorDialogProps {
4
+ fields: FieldDTO[];
5
+ batch: BatchDTO;
6
+ vm: {
7
+ isOpen: boolean;
8
+ };
9
+ onApply: (batch: BatchDTO) => void;
10
+ onClose: () => void;
11
+ }
12
+ export declare const BatchEditorDialog: ((props: BatchEditorDialogProps) => JSX.Element) & {
13
+ displayName: string;
14
+ };
15
+ export {};
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.BatchEditorDialog = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _mobxReactLite = require("mobx-react-lite");
10
+ var _Button = require("@webiny/ui/Button");
11
+ var _Dialog = require("@webiny/ui/Dialog");
12
+ var _BatchEditorDialogPresenter = require("./BatchEditorDialogPresenter");
13
+ var _BatchEditor = require("./BatchEditor");
14
+ var _ActionEdit = require("../ActionEdit.styled");
15
+ var BatchEditorDialog = (0, _mobxReactLite.observer)(function (props) {
16
+ var presenter = (0, _react.useMemo)(function () {
17
+ return new _BatchEditorDialogPresenter.BatchEditorDialogPresenter();
18
+ }, []);
19
+ (0, _react.useEffect)(function () {
20
+ presenter.load(props.batch, props.fields);
21
+ }, [props.batch, props.fields]);
22
+ var _onChange = function onChange(data) {
23
+ presenter.setBatch(data);
24
+ };
25
+ var onApply = function onApply() {
26
+ presenter.onApply(function (batch) {
27
+ props.onApply(batch);
28
+ });
29
+ };
30
+ var ref = (0, _react.useRef)(null);
31
+ return /*#__PURE__*/_react.default.createElement(_ActionEdit.DialogContainer, {
32
+ open: props.vm.isOpen,
33
+ onClose: props.onClose
34
+ }, props.vm.isOpen ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Dialog.DialogTitle, null, "Edit items"), /*#__PURE__*/_react.default.createElement(_Dialog.DialogContent, null, /*#__PURE__*/_react.default.createElement(_ActionEdit.ActionEditFormContainer, null, /*#__PURE__*/_react.default.createElement(_BatchEditor.BatchEditor, {
35
+ onForm: function onForm(form) {
36
+ return ref.current = form;
37
+ },
38
+ onChange: function onChange(data) {
39
+ return _onChange(data);
40
+ },
41
+ onSubmit: onApply,
42
+ onDelete: function onDelete(operationIndex) {
43
+ return presenter.deleteOperation(operationIndex);
44
+ },
45
+ onAdd: function onAdd() {
46
+ return presenter.addOperation();
47
+ },
48
+ onSetOperationFieldData: function onSetOperationFieldData(operationIndex, data) {
49
+ return presenter.setOperationFieldData(operationIndex, data);
50
+ },
51
+ vm: presenter.vm
52
+ }))), /*#__PURE__*/_react.default.createElement(_Dialog.DialogActions, null, /*#__PURE__*/_react.default.createElement(_Dialog.DialogCancel, {
53
+ onClick: props.onClose
54
+ }, "Cancel"), /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
55
+ onClick: onApply
56
+ }, "Submit"))) : null);
57
+ });
58
+ exports.BatchEditorDialog = BatchEditorDialog;
59
+
60
+ //# sourceMappingURL=BatchEditorDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_mobxReactLite","_Button","_Dialog","_BatchEditorDialogPresenter","_BatchEditor","_ActionEdit","BatchEditorDialog","observer","props","presenter","useMemo","BatchEditorDialogPresenter","useEffect","load","batch","fields","onChange","data","setBatch","onApply","ref","useRef","default","createElement","DialogContainer","open","vm","isOpen","onClose","Fragment","DialogTitle","DialogContent","ActionEditFormContainer","BatchEditor","onForm","form","current","onSubmit","onDelete","operationIndex","deleteOperation","onAdd","addOperation","onSetOperationFieldData","setOperationFieldData","DialogActions","DialogCancel","onClick","ButtonPrimary","exports"],"sources":["BatchEditorDialog.tsx"],"sourcesContent":["import React, { useMemo, useEffect, useRef } from \"react\";\n\nimport { observer } from \"mobx-react-lite\";\nimport { FormAPI } from \"@webiny/form\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\nimport { DialogActions, DialogCancel, DialogContent, DialogTitle } from \"@webiny/ui/Dialog\";\n\nimport { BatchEditorDialogPresenter, BatchEditorFormData } from \"./BatchEditorDialogPresenter\";\nimport { BatchEditor } from \"~/components/BulkActions/ActionEdit/BatchEditorDialog/BatchEditor\";\nimport { ActionEditFormContainer, DialogContainer } from \"../ActionEdit.styled\";\nimport { BatchDTO, FieldDTO } from \"~/components/BulkActions/ActionEdit/domain\";\n\ninterface BatchEditorDialogProps {\n fields: FieldDTO[];\n batch: BatchDTO;\n vm: {\n isOpen: boolean;\n };\n onApply: (batch: BatchDTO) => void;\n onClose: () => void;\n}\n\nexport const BatchEditorDialog = observer((props: BatchEditorDialogProps) => {\n const presenter = useMemo<BatchEditorDialogPresenter>(() => {\n return new BatchEditorDialogPresenter();\n }, []);\n\n useEffect(() => {\n presenter.load(props.batch, props.fields);\n }, [props.batch, props.fields]);\n\n const onChange = (data: BatchEditorFormData) => {\n presenter.setBatch(data);\n };\n\n const onApply = () => {\n presenter.onApply(batch => {\n props.onApply(batch);\n });\n };\n\n const ref = useRef<FormAPI | null>(null);\n\n return (\n <DialogContainer open={props.vm.isOpen} onClose={props.onClose}>\n {props.vm.isOpen ? (\n <>\n <DialogTitle>{\"Edit items\"}</DialogTitle>\n <DialogContent>\n <ActionEditFormContainer>\n <BatchEditor\n onForm={form => (ref.current = form)}\n onChange={data => onChange(data)}\n onSubmit={onApply}\n onDelete={operationIndex =>\n presenter.deleteOperation(operationIndex)\n }\n onAdd={() => presenter.addOperation()}\n onSetOperationFieldData={(operationIndex, data) =>\n presenter.setOperationFieldData(operationIndex, data)\n }\n vm={presenter.vm}\n />\n </ActionEditFormContainer>\n </DialogContent>\n <DialogActions>\n <DialogCancel onClick={props.onClose}>{\"Cancel\"}</DialogCancel>\n <ButtonPrimary onClick={onApply}>{\"Submit\"}</ButtonPrimary>\n </DialogActions>\n </>\n ) : null}\n </DialogContainer>\n );\n});\n"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { BatchDTO, FieldDTO, OperationDTO, OperatorDTO } from "../domain";
2
+ export interface IBatchEditorDialogPresenter {
3
+ load(batch: BatchDTO, fields: FieldDTO[]): void;
4
+ addOperation(): void;
5
+ deleteOperation(operationIndex: number): void;
6
+ setOperationFieldData(operationIndex: number, data: string): void;
7
+ setBatch(data: any): void;
8
+ onApply(onSuccess?: (batch: BatchDTO) => void, onError?: (batch: BatchDTO) => void): void;
9
+ get vm(): BatchEditorDialogViewModel;
10
+ }
11
+ export interface BatchEditorDialogViewModel {
12
+ invalidFields: Record<string, {
13
+ isValid: boolean;
14
+ message: string;
15
+ }>;
16
+ canAddOperation: boolean;
17
+ data: BatchEditorFormData;
18
+ }
19
+ export interface BatchEditorFormData {
20
+ operations: OperationFormData[];
21
+ }
22
+ export declare type OperationFormData = OperationDTO & {
23
+ canDelete: boolean;
24
+ title: string;
25
+ open: boolean;
26
+ fieldOptions: FieldDTO[];
27
+ operatorOptions: OperatorDTO[];
28
+ selectedField?: FieldDTO;
29
+ };
30
+ export declare class BatchEditorDialogPresenter implements IBatchEditorDialogPresenter {
31
+ private batch;
32
+ private fields;
33
+ private invalidFields;
34
+ private formWasSubmitted;
35
+ constructor();
36
+ load(batch: BatchDTO, fields: FieldDTO[]): void;
37
+ get vm(): {
38
+ invalidFields: Record<string, {
39
+ isValid: boolean;
40
+ message: string;
41
+ }>;
42
+ canAddOperation: boolean;
43
+ data: {
44
+ operations: {
45
+ title: string;
46
+ open: boolean;
47
+ field: string;
48
+ operator: string;
49
+ value: Record<string, any> | undefined;
50
+ canDelete: boolean;
51
+ fieldOptions: FieldDTO[];
52
+ selectedField: FieldDTO | undefined;
53
+ operatorOptions: OperatorDTO[];
54
+ }[];
55
+ };
56
+ };
57
+ private getOperations;
58
+ private getOperationTitle;
59
+ private getFieldOptions;
60
+ addOperation(): void;
61
+ deleteOperation(operationIndex: number): void;
62
+ setOperationFieldData(batchIndex: number, data: string): void;
63
+ setBatch(data: BatchEditorFormData): void;
64
+ onApply(onSuccess?: (batch: BatchDTO) => void, onError?: (batch: BatchDTO, invalidFields: BatchEditorDialogViewModel["invalidFields"]) => void): void;
65
+ private validateBatch;
66
+ }
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.BatchEditorDialogPresenter = void 0;
8
+ var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _mobx = require("mobx");
14
+ var _domain = require("../domain");
15
+ var BatchEditorDialogPresenter = /*#__PURE__*/function () {
16
+ function BatchEditorDialogPresenter() {
17
+ var _this = this;
18
+ (0, _classCallCheck2.default)(this, BatchEditorDialogPresenter);
19
+ (0, _defineProperty2.default)(this, "invalidFields", {});
20
+ (0, _defineProperty2.default)(this, "formWasSubmitted", false);
21
+ (0, _defineProperty2.default)(this, "getOperations", function () {
22
+ var _this$batch;
23
+ return ((_this$batch = _this.batch) === null || _this$batch === void 0 ? void 0 : _this$batch.operations.map(function (operation, operationIndex) {
24
+ var _this$getOperationTit;
25
+ var fieldOptions = _this.getFieldOptions(operation.field);
26
+ var selectedField = fieldOptions.find(function (field) {
27
+ return field.value === operation.field;
28
+ });
29
+ var operatorOptions = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.operators) || [];
30
+ return {
31
+ title: (_this$getOperationTit = _this.getOperationTitle(operation.field, operation.operator)) !== null && _this$getOperationTit !== void 0 ? _this$getOperationTit : "Operation #".concat(operationIndex + 1),
32
+ open: true,
33
+ field: operation.field,
34
+ operator: operation.operator,
35
+ value: operation.value,
36
+ canDelete: operationIndex !== 0,
37
+ fieldOptions: fieldOptions,
38
+ selectedField: selectedField,
39
+ operatorOptions: operatorOptions
40
+ };
41
+ })) || [];
42
+ });
43
+ this.batch = undefined;
44
+ this.fields = [];
45
+ (0, _mobx.makeAutoObservable)(this);
46
+ }
47
+ (0, _createClass2.default)(BatchEditorDialogPresenter, [{
48
+ key: "load",
49
+ value: function load(batch, fields) {
50
+ this.batch = batch;
51
+ this.fields = fields;
52
+ }
53
+ }, {
54
+ key: "vm",
55
+ get: function get() {
56
+ var _ref;
57
+ var operations = this.getOperations();
58
+ var canAddOperation = (_ref = operations[operations.length - 1].fieldOptions.length > 1) !== null && _ref !== void 0 ? _ref : false;
59
+ return {
60
+ invalidFields: this.invalidFields,
61
+ canAddOperation: canAddOperation,
62
+ data: {
63
+ operations: operations
64
+ }
65
+ };
66
+ }
67
+ }, {
68
+ key: "getOperationTitle",
69
+ value: function getOperationTitle(inputField, inputOperation) {
70
+ if (!inputField || !inputOperation) {
71
+ return undefined;
72
+ }
73
+ var field = this.fields.find(function (field) {
74
+ return field.value === inputField;
75
+ });
76
+ if (!field) {
77
+ return undefined;
78
+ }
79
+ var operator = field.operators.find(function (operator) {
80
+ return operator.value === inputOperation;
81
+ });
82
+ if (!operator) {
83
+ return undefined;
84
+ }
85
+ return "".concat(operator.label, " for field \"").concat(field.label, "\"");
86
+ }
87
+ }, {
88
+ key: "getFieldOptions",
89
+ value: function getFieldOptions() {
90
+ var currentFieldId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
91
+ if (!this.batch) {
92
+ return [];
93
+ }
94
+ var existings = this.batch.operations.filter(function (operation) {
95
+ return operation.field !== currentFieldId;
96
+ }).map(function (operation) {
97
+ return operation.field;
98
+ });
99
+ return this.fields.filter(function (field) {
100
+ return !existings.includes(field.value);
101
+ });
102
+ }
103
+ }, {
104
+ key: "addOperation",
105
+ value: function addOperation() {
106
+ if (!this.batch) {
107
+ return;
108
+ }
109
+ this.batch.operations.push({
110
+ field: "",
111
+ operator: "",
112
+ value: {}
113
+ });
114
+ }
115
+ }, {
116
+ key: "deleteOperation",
117
+ value: function deleteOperation(operationIndex) {
118
+ if (!this.batch) {
119
+ return;
120
+ }
121
+ this.batch.operations = this.batch.operations.filter(function (_, index) {
122
+ return index !== operationIndex;
123
+ });
124
+
125
+ // Make sure we always have at least 1 operation!
126
+ if (this.batch.operations.length === 0) {
127
+ this.addOperation();
128
+ }
129
+ }
130
+ }, {
131
+ key: "setOperationFieldData",
132
+ value: function setOperationFieldData(batchIndex, data) {
133
+ if (!this.batch) {
134
+ return;
135
+ }
136
+ this.batch.operations = [].concat((0, _toConsumableArray2.default)(this.batch.operations.slice(0, batchIndex)), [{
137
+ field: data,
138
+ operator: "",
139
+ value: {}
140
+ }], (0, _toConsumableArray2.default)(this.batch.operations.slice(batchIndex + 1)));
141
+ }
142
+ }, {
143
+ key: "setBatch",
144
+ value: function setBatch(data) {
145
+ if (!this.batch) {
146
+ return;
147
+ }
148
+ this.batch = (0, _objectSpread3.default)((0, _objectSpread3.default)({}, this.batch), {}, {
149
+ operations: data.operations.map(function (operation) {
150
+ return {
151
+ field: operation.field,
152
+ operator: operation.operator,
153
+ value: operation.value
154
+ };
155
+ })
156
+ });
157
+ if (this.formWasSubmitted) {
158
+ this.validateBatch(this.batch);
159
+ }
160
+ }
161
+ }, {
162
+ key: "onApply",
163
+ value: function onApply(onSuccess, onError) {
164
+ if (!this.batch) {
165
+ return;
166
+ }
167
+ var result = this.validateBatch(this.batch);
168
+ if (result.success) {
169
+ onSuccess && onSuccess(this.batch);
170
+ } else {
171
+ onError && onError(this.batch, this.invalidFields);
172
+ }
173
+ }
174
+ }, {
175
+ key: "validateBatch",
176
+ value: function validateBatch(data) {
177
+ this.formWasSubmitted = true;
178
+ var validation = _domain.Batch.validate(data);
179
+ if (!validation.success) {
180
+ this.invalidFields = validation.error.issues.reduce(function (acc, issue) {
181
+ return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, acc), {}, (0, _defineProperty2.default)({}, issue.path.join("."), issue.message));
182
+ }, {});
183
+ } else {
184
+ this.invalidFields = {};
185
+ }
186
+ return validation;
187
+ }
188
+ }]);
189
+ return BatchEditorDialogPresenter;
190
+ }();
191
+ exports.BatchEditorDialogPresenter = BatchEditorDialogPresenter;
192
+
193
+ //# sourceMappingURL=BatchEditorDialogPresenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_mobx","require","_domain","BatchEditorDialogPresenter","_this","_classCallCheck2","default","_defineProperty2","_this$batch","batch","operations","map","operation","operationIndex","_this$getOperationTit","fieldOptions","getFieldOptions","field","selectedField","find","value","operatorOptions","operators","title","getOperationTitle","operator","concat","open","canDelete","undefined","fields","makeAutoObservable","_createClass2","key","load","get","_ref","getOperations","canAddOperation","length","invalidFields","data","inputField","inputOperation","label","currentFieldId","arguments","existings","filter","includes","addOperation","push","deleteOperation","_","index","setOperationFieldData","batchIndex","_toConsumableArray2","slice","setBatch","_objectSpread3","formWasSubmitted","validateBatch","onApply","onSuccess","onError","result","success","validation","Batch","validate","error","issues","reduce","acc","issue","path","join","message","exports"],"sources":["BatchEditorDialogPresenter.tsx"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\n\nimport {\n Batch,\n BatchDTO,\n FieldDTO,\n OperationDTO,\n OperatorDTO\n} from \"~/components/BulkActions/ActionEdit/domain\";\n\nexport interface IBatchEditorDialogPresenter {\n load(batch: BatchDTO, fields: FieldDTO[]): void;\n addOperation(): void;\n deleteOperation(operationIndex: number): void;\n setOperationFieldData(operationIndex: number, data: string): void;\n setBatch(data: any): void;\n onApply(onSuccess?: (batch: BatchDTO) => void, onError?: (batch: BatchDTO) => void): void;\n get vm(): BatchEditorDialogViewModel;\n}\n\nexport interface BatchEditorDialogViewModel {\n invalidFields: Record<string, { isValid: boolean; message: string }>;\n canAddOperation: boolean;\n data: BatchEditorFormData;\n}\n\nexport interface BatchEditorFormData {\n operations: OperationFormData[];\n}\n\nexport type OperationFormData = OperationDTO & {\n canDelete: boolean;\n title: string;\n open: boolean;\n fieldOptions: FieldDTO[];\n operatorOptions: OperatorDTO[];\n selectedField?: FieldDTO;\n};\n\nexport class BatchEditorDialogPresenter implements IBatchEditorDialogPresenter {\n private batch: BatchDTO | undefined;\n private fields: FieldDTO[];\n private invalidFields: BatchEditorDialogViewModel[\"invalidFields\"] = {};\n private formWasSubmitted = false;\n\n constructor() {\n this.batch = undefined;\n this.fields = [];\n makeAutoObservable(this);\n }\n\n load(batch: BatchDTO, fields: FieldDTO[]) {\n this.batch = batch;\n this.fields = fields;\n }\n\n get vm() {\n const operations = this.getOperations();\n const canAddOperation = operations[operations.length - 1].fieldOptions.length > 1 ?? false;\n\n return {\n invalidFields: this.invalidFields,\n canAddOperation,\n data: {\n operations\n }\n };\n }\n\n private getOperations = () => {\n return (\n this.batch?.operations.map((operation: OperationDTO, operationIndex) => {\n const fieldOptions = this.getFieldOptions(operation.field);\n const selectedField = fieldOptions.find(field => field.value === operation.field);\n const operatorOptions = selectedField?.operators || [];\n\n return {\n title:\n this.getOperationTitle(operation.field, operation.operator) ??\n `Operation #${operationIndex + 1}`,\n open: true,\n field: operation.field,\n operator: operation.operator,\n value: operation.value,\n canDelete: operationIndex !== 0,\n fieldOptions,\n selectedField,\n operatorOptions\n };\n }) || []\n );\n };\n\n private getOperationTitle(inputField?: string, inputOperation?: string) {\n if (!inputField || !inputOperation) {\n return undefined;\n }\n\n const field = this.fields.find(field => field.value === inputField);\n\n if (!field) {\n return undefined;\n }\n\n const operator = field.operators.find(operator => operator.value === inputOperation);\n\n if (!operator) {\n return undefined;\n }\n\n return `${operator.label} for field \"${field.label}\"`;\n }\n\n private getFieldOptions(currentFieldId = \"\") {\n if (!this.batch) {\n return [];\n }\n\n const existings = this.batch.operations\n .filter(operation => operation.field !== currentFieldId)\n .map(operation => operation.field);\n\n return this.fields.filter(field => !existings.includes(field.value));\n }\n\n addOperation(): void {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations.push({\n field: \"\",\n operator: \"\",\n value: {}\n });\n }\n\n deleteOperation(operationIndex: number): void {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations = this.batch.operations.filter(\n (_, index) => index !== operationIndex\n );\n\n // Make sure we always have at least 1 operation!\n if (this.batch.operations.length === 0) {\n this.addOperation();\n }\n }\n\n setOperationFieldData(batchIndex: number, data: string) {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations = [\n ...this.batch.operations.slice(0, batchIndex),\n {\n field: data,\n operator: \"\",\n value: {}\n },\n ...this.batch.operations.slice(batchIndex + 1)\n ];\n }\n\n setBatch(data: BatchEditorFormData): void {\n if (!this.batch) {\n return;\n }\n\n this.batch = {\n ...this.batch,\n operations: data.operations.map(operation => ({\n field: operation.field,\n operator: operation.operator,\n value: operation.value\n }))\n };\n\n if (this.formWasSubmitted) {\n this.validateBatch(this.batch);\n }\n }\n\n onApply(\n onSuccess?: (batch: BatchDTO) => void,\n onError?: (\n batch: BatchDTO,\n invalidFields: BatchEditorDialogViewModel[\"invalidFields\"]\n ) => void\n ) {\n if (!this.batch) {\n return;\n }\n\n const result = this.validateBatch(this.batch);\n if (result.success) {\n onSuccess && onSuccess(this.batch);\n } else {\n onError && onError(this.batch, this.invalidFields);\n }\n }\n\n private validateBatch(data: BatchDTO) {\n this.formWasSubmitted = true;\n const validation = Batch.validate(data);\n\n if (!validation.success) {\n this.invalidFields = validation.error.issues.reduce((acc, issue) => {\n return {\n ...acc,\n [issue.path.join(\".\")]: issue.message\n };\n }, {});\n } else {\n this.invalidFields = {};\n }\n\n return validation;\n }\n}\n"],"mappings":"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"}