@webiny/app-headless-cms-workflows 6.4.11 → 6.6.0-alpha.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 (67) hide show
  1. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +27 -25
  2. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +1 -1
  3. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js +17 -25
  4. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +1 -1
  5. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +3 -4
  6. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +1 -1
  7. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js +3 -3
  8. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js.map +1 -1
  9. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +20 -36
  10. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +1 -1
  11. package/Components/ContentEntryForm/index.d.ts +0 -3
  12. package/Components/ContentEntryForm/index.js +0 -3
  13. package/Routes/CmsWorkflowsEditor.js +8 -2
  14. package/Routes/CmsWorkflowsEditor.js.map +1 -1
  15. package/features/WorkflowStateCacheHandler.d.ts +11 -0
  16. package/features/WorkflowStateCacheHandler.js +50 -0
  17. package/features/WorkflowStateCacheHandler.js.map +1 -0
  18. package/features/feature.d.ts +1 -0
  19. package/features/feature.js +11 -0
  20. package/features/feature.js.map +1 -0
  21. package/index.d.ts +1 -1
  22. package/index.js +16 -3
  23. package/index.js.map +1 -1
  24. package/package.json +15 -13
  25. package/presentation/CmsWorkflowsEditorView.d.ts +5 -0
  26. package/{Components/CmsWorkflows → presentation}/CmsWorkflowsEditorView.js +27 -27
  27. package/presentation/CmsWorkflowsEditorView.js.map +1 -0
  28. package/presentation/ContentEntryFormPresenterWorkflowDecorator.d.ts +24 -0
  29. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js +67 -0
  30. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js.map +1 -0
  31. package/presentation/TableRowMapperWorkflowDecorator.d.ts +11 -0
  32. package/presentation/TableRowMapperWorkflowDecorator.js +25 -0
  33. package/presentation/TableRowMapperWorkflowDecorator.js.map +1 -0
  34. package/presentation/WorkflowStateGetEntryFieldSelection.d.ts +8 -0
  35. package/presentation/WorkflowStateGetEntryFieldSelection.js +24 -0
  36. package/presentation/WorkflowStateGetEntryFieldSelection.js.map +1 -0
  37. package/presentation/WorkflowStateListEntriesFieldSelection.d.ts +8 -0
  38. package/presentation/WorkflowStateListEntriesFieldSelection.js +24 -0
  39. package/presentation/WorkflowStateListEntriesFieldSelection.js.map +1 -0
  40. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.d.ts +15 -0
  41. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js +50 -0
  42. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js.map +1 -0
  43. package/presentation/cmsWorkflowsEditor/abstractions.d.ts +19 -0
  44. package/presentation/cmsWorkflowsEditor/abstractions.js +5 -0
  45. package/presentation/cmsWorkflowsEditor/abstractions.js.map +1 -0
  46. package/presentation/cmsWorkflowsEditor/feature.d.ts +3 -0
  47. package/presentation/cmsWorkflowsEditor/feature.js +17 -0
  48. package/presentation/cmsWorkflowsEditor/feature.js.map +1 -0
  49. package/presentation/feature.d.ts +1 -0
  50. package/presentation/feature.js +21 -0
  51. package/presentation/feature.js.map +1 -0
  52. package/types.d.ts +10 -0
  53. package/types.js +0 -0
  54. package/Components/CmsWorkflows/CmsWorkflowsEditorView.d.ts +0 -3
  55. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js.map +0 -1
  56. package/Components/ContentEntryForm/CmsEntryFormPublishButton.d.ts +0 -2
  57. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js +0 -26
  58. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js.map +0 -1
  59. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.d.ts +0 -2
  60. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js +0 -24
  61. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js.map +0 -1
  62. package/Components/ContentEntryForm/CmsEntryFormSaveButton.d.ts +0 -2
  63. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js +0 -23
  64. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js.map +0 -1
  65. package/Components/ContentEntryForm/ContentEntryWorkflow.d.ts +0 -2
  66. package/Components/ContentEntryForm/ContentEntryWorkflow.js +0 -23
  67. package/Components/ContentEntryForm/ContentEntryWorkflow.js.map +0 -1
@@ -1,26 +0,0 @@
1
- import { useContentEntry, usePermission } from "@webiny/app-headless-cms";
2
- import { ContentEntryEditorConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
3
- import react, { useCallback } from "react";
4
- const CmsEntryFormPublishButton = ()=>{
5
- const { loading, entry, publishEntryRevision } = useContentEntry();
6
- const { ButtonPrimary } = ContentEntryEditorConfig.Actions.ButtonAction.useButtons();
7
- const publish = useCallback(()=>{
8
- if (!entry.id) return void console.warn("You cannot publish an entry that hasn't been saved yet.");
9
- publishEntryRevision({
10
- id: entry.id
11
- });
12
- }, [
13
- entry.id
14
- ]);
15
- const { canEdit, canPublish } = usePermission();
16
- if ("published" === entry.meta.status) return null;
17
- if (!canEdit(entry, "cms.contentEntry") || !canPublish("cms.contentEntry")) return null;
18
- return /*#__PURE__*/ react.createElement(ButtonPrimary, {
19
- onAction: publish,
20
- disabled: loading,
21
- "data-testid": "workflows-cms-content-publish-content-button"
22
- }, "Publish");
23
- };
24
- export { CmsEntryFormPublishButton };
25
-
26
- //# sourceMappingURL=CmsEntryFormPublishButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormPublishButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormPublishButton.tsx"],"sourcesContent":["import { useContentEntry, usePermission } from \"@webiny/app-headless-cms\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport React, { useCallback } from \"react\";\n\nexport const CmsEntryFormPublishButton = () => {\n const { loading, entry, publishEntryRevision } = useContentEntry();\n const { ButtonPrimary } = ContentEntryEditorConfig.Actions.ButtonAction.useButtons();\n\n const publish = useCallback(() => {\n if (!entry.id) {\n console.warn(`You cannot publish an entry that hasn't been saved yet.`);\n return;\n }\n publishEntryRevision({ id: entry.id });\n }, [entry.id]);\n\n const { canEdit, canPublish } = usePermission();\n\n if (entry.meta.status === \"published\") {\n return null;\n } else if (!canEdit(entry, \"cms.contentEntry\") || !canPublish(\"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <ButtonPrimary\n onAction={publish}\n disabled={loading}\n data-testid=\"workflows-cms-content-publish-content-button\"\n >\n {\"Publish\"}\n </ButtonPrimary>\n );\n};\n"],"names":["CmsEntryFormPublishButton","loading","entry","publishEntryRevision","useContentEntry","ButtonPrimary","ContentEntryEditorConfig","publish","useCallback","console","canEdit","canPublish","usePermission"],"mappings":";;;AAIO,MAAMA,4BAA4B;IACrC,MAAM,EAAEC,OAAO,EAAEC,KAAK,EAAEC,oBAAoB,EAAE,GAAGC;IACjD,MAAM,EAAEC,aAAa,EAAE,GAAGC,yBAAyB,OAAO,CAAC,YAAY,CAAC,UAAU;IAElF,MAAMC,UAAUC,YAAY;QACxB,IAAI,CAACN,MAAM,EAAE,EAAE,YACXO,QAAQ,IAAI,CAAC;QAGjBN,qBAAqB;YAAE,IAAID,MAAM,EAAE;QAAC;IACxC,GAAG;QAACA,MAAM,EAAE;KAAC;IAEb,MAAM,EAAEQ,OAAO,EAAEC,UAAU,EAAE,GAAGC;IAEhC,IAAIV,AAAsB,gBAAtBA,MAAM,IAAI,CAAC,MAAM,EACjB,OAAO;IACJ,IAAI,CAACQ,QAAQR,OAAO,uBAAuB,CAACS,WAAW,qBAC1D,OAAO;IAGX,OAAO,WAAP,GACI,oBAACN,eAAAA;QACG,UAAUE;QACV,UAAUN;QACV,eAAY;OAEX;AAGb"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntryFormSaveAndPublishButton: (props: unknown) => React.JSX.Element;
@@ -1,24 +0,0 @@
1
- import react from "react";
2
- import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
- import { WorkflowStateValue, useWorkflowState } from "@webiny/app-workflows";
4
- import { observer } from "mobx-react-lite";
5
- import { CmsEntryFormPublishButton } from "./CmsEntryFormPublishButton.js";
6
- const { Actions: Actions } = ContentEntryEditorConfig;
7
- const { ButtonAction: ButtonAction } = Actions;
8
- const OverrideSaveAndPublishButton = observer((props)=>{
9
- const { presenter } = useWorkflowState();
10
- if ("publish" !== props.name || !presenter.vm.workflow) return props.children;
11
- if (presenter.vm.state?.state === WorkflowStateValue.approved) return /*#__PURE__*/ react.createElement(CmsEntryFormPublishButton, null);
12
- return null;
13
- });
14
- const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator((Original)=>function(props) {
15
- return /*#__PURE__*/ react.createElement(Original, {
16
- ...props,
17
- element: /*#__PURE__*/ react.createElement(OverrideSaveAndPublishButton, {
18
- name: props.name
19
- }, props.element)
20
- });
21
- });
22
- export { CmsEntryFormSaveAndPublishButton };
23
-
24
- //# sourceMappingURL=CmsEntryFormSaveAndPublishButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\nimport { WorkflowStateValue } from \"@webiny/app-workflows\";\nimport { CmsEntryFormPublishButton } from \"./CmsEntryFormPublishButton.js\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { ButtonAction } = Actions;\n\ninterface IOverrideSaveAndPublishButtonProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideSaveAndPublishButton = observer((props: IOverrideSaveAndPublishButtonProps) => {\n const { presenter } = useWorkflowState();\n\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (props.name !== \"publish\" || !presenter.vm.workflow) {\n return props.children;\n } else if (presenter.vm.state?.state === WorkflowStateValue.approved) {\n return <CmsEntryFormPublishButton />;\n }\n return null;\n});\n\nexport const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator(Original => {\n return function WorkflowCmsEntryFormSaveAndPublishButton(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideSaveAndPublishButton name={props.name}>\n {props.element}\n </OverrideSaveAndPublishButton>\n }\n />\n );\n };\n});\n"],"names":["Actions","ContentEntryEditorConfig","ButtonAction","OverrideSaveAndPublishButton","observer","props","presenter","useWorkflowState","WorkflowStateValue","CmsEntryFormPublishButton","CmsEntryFormSaveAndPublishButton","Original"],"mappings":";;;;;AAOA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,cAAAA,YAAY,EAAE,GAAGF;AAOzB,MAAMG,+BAA+BC,SAAS,CAACC;IAC3C,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAMtB,IAAIF,AAAe,cAAfA,MAAM,IAAI,IAAkB,CAACC,UAAU,EAAE,CAAC,QAAQ,EAClD,OAAOD,MAAM,QAAQ;IAClB,IAAIC,UAAU,EAAE,CAAC,KAAK,EAAE,UAAUE,mBAAmB,QAAQ,EAChE,OAAO,WAAP,GAAO,oBAACC,2BAAyBA;IAErC,OAAO;AACX;AAEO,MAAMC,mCAAmCR,aAAa,eAAe,CAACS,CAAAA,WAClE,SAAkDN,KAAK;QAC1D,OAAO,WAAP,GACI,oBAACM,UAAAA;YACI,GAAGN,KAAK;YACT,uBACI,oBAACF,8BAA4BA;gBAAC,MAAME,MAAM,IAAI;eACzCA,MAAM,OAAO;;IAKlC"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntryFormSaveButton: (props: unknown) => React.JSX.Element;
@@ -1,23 +0,0 @@
1
- import react from "react";
2
- import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
- import { useWorkflowState } from "@webiny/app-workflows";
4
- import { observer } from "mobx-react-lite";
5
- const { Actions: Actions } = ContentEntryEditorConfig;
6
- const { ButtonAction: ButtonAction } = Actions;
7
- const OverrideSaveButton = observer((props)=>{
8
- const { presenter } = useWorkflowState();
9
- if ("save" !== props.name) return props.children;
10
- if (!presenter.vm.state) return props.children;
11
- return null;
12
- });
13
- const CmsEntryFormSaveButton = ButtonAction.createDecorator((Original)=>function(props) {
14
- return /*#__PURE__*/ react.createElement(Original, {
15
- ...props,
16
- element: /*#__PURE__*/ react.createElement(OverrideSaveButton, {
17
- name: props.name
18
- }, props.element)
19
- });
20
- });
21
- export { CmsEntryFormSaveButton };
22
-
23
- //# sourceMappingURL=CmsEntryFormSaveButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormSaveButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormSaveButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { ButtonAction } = Actions;\n\ninterface IOverrideSaveButtonProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideSaveButton = observer((props: IOverrideSaveButtonProps) => {\n const { presenter } = useWorkflowState();\n\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (props.name !== \"save\") {\n return props.children;\n } else if (!presenter.vm.state) {\n return props.children;\n }\n return null;\n});\n\nexport const CmsEntryFormSaveButton = ButtonAction.createDecorator(Original => {\n return function WorkflowCmsEntryFormSaveButton(props) {\n return (\n <Original\n {...props}\n element={<OverrideSaveButton name={props.name}>{props.element}</OverrideSaveButton>}\n />\n );\n };\n});\n"],"names":["Actions","ContentEntryEditorConfig","ButtonAction","OverrideSaveButton","observer","props","presenter","useWorkflowState","CmsEntryFormSaveButton","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,cAAAA,YAAY,EAAE,GAAGF;AAOzB,MAAMG,qBAAqBC,SAAS,CAACC;IACjC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAMtB,IAAIF,AAAe,WAAfA,MAAM,IAAI,EACV,OAAOA,MAAM,QAAQ;IAClB,IAAI,CAACC,UAAU,EAAE,CAAC,KAAK,EAC1B,OAAOD,MAAM,QAAQ;IAEzB,OAAO;AACX;AAEO,MAAMG,yBAAyBN,aAAa,eAAe,CAACO,CAAAA,WACxD,SAAwCJ,KAAK;QAChD,OAAO,WAAP,GACI,oBAACI,UAAAA;YACI,GAAGJ,KAAK;YACT,uBAAS,oBAACF,oBAAkBA;gBAAC,MAAME,MAAM,IAAI;eAAGA,MAAM,OAAO;;IAGzE"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const ContentEntryWorkflow: (props: unknown) => React.JSX.Element;
@@ -1,23 +0,0 @@
1
- import react from "react";
2
- import { ContentEntryEditorConfig, useContentEntry } from "@webiny/app-headless-cms";
3
- import { Components } from "@webiny/app-workflows";
4
- import { useSecurity } from "@webiny/app-admin";
5
- import { useApolloClient } from "@apollo/react-hooks";
6
- import { createAppName } from "../../utils/appName.js";
7
- const { ContentReview: { WorkflowStateProvider: WorkflowStateProvider } } = Components;
8
- const { ContentEntry: ContentEntry } = ContentEntryEditorConfig;
9
- const ContentEntryWorkflow = ContentEntry.createDecorator((Original)=>function() {
10
- const { entry, contentModel: model } = useContentEntry();
11
- const client = useApolloClient();
12
- const { identity } = useSecurity();
13
- return /*#__PURE__*/ react.createElement(WorkflowStateProvider, {
14
- app: createAppName(model),
15
- id: entry.id,
16
- identity: identity,
17
- client: client,
18
- title: `${model.name}: ${entry.meta?.title || "unknown"}`
19
- }, /*#__PURE__*/ react.createElement(Original, null));
20
- });
21
- export { ContentEntryWorkflow };
22
-
23
- //# sourceMappingURL=ContentEntryWorkflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Components/ContentEntryForm/ContentEntryWorkflow.js","sources":["../../../src/Components/ContentEntryForm/ContentEntryWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig, useContentEntry } from \"@webiny/app-headless-cms\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createAppName } from \"~/utils/appName.js\";\n\nconst {\n ContentReview: { WorkflowStateProvider }\n} = Components;\n\nconst { ContentEntry } = ContentEntryEditorConfig;\n\nexport const ContentEntryWorkflow = ContentEntry.createDecorator(Original => {\n return function ContentEntryWorkflowSetup() {\n const { entry, contentModel: model } = useContentEntry();\n const client = useApolloClient();\n\n const { identity } = useSecurity();\n\n return (\n <WorkflowStateProvider\n app={createAppName(model)}\n id={entry.id}\n identity={identity}\n client={client}\n title={`${model.name}: ${entry.meta?.title || \"unknown\"}`}\n >\n <Original />\n </WorkflowStateProvider>\n );\n };\n});\n"],"names":["WorkflowStateProvider","Components","ContentEntry","ContentEntryEditorConfig","ContentEntryWorkflow","Original","entry","model","useContentEntry","client","useApolloClient","identity","useSecurity","createAppName"],"mappings":";;;;;;AAOA,MAAM,EACF,eAAe,EAAEA,uBAAAA,qBAAqB,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,cAAAA,YAAY,EAAE,GAAGC;AAElB,MAAMC,uBAAuBF,aAAa,eAAe,CAACG,CAAAA,WACtD;QACH,MAAM,EAAEC,KAAK,EAAE,cAAcC,KAAK,EAAE,GAAGC;QACvC,MAAMC,SAASC;QAEf,MAAM,EAAEC,QAAQ,EAAE,GAAGC;QAErB,OAAO,WAAP,GACI,oBAACZ,uBAAqBA;YAClB,KAAKa,cAAcN;YACnB,IAAID,MAAM,EAAE;YACZ,UAAUK;YACV,QAAQF;YACR,OAAO,GAAGF,MAAM,IAAI,CAAC,EAAE,EAAED,MAAM,IAAI,EAAE,SAAS,WAAW;yBAEzD,oBAACD,UAAAA;IAGb"}