@webiny/app-headless-cms-workflows 6.4.5 → 6.6.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +27 -25
- package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +1 -1
- package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js +14 -22
- package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +1 -1
- package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +3 -4
- package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +1 -1
- package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +20 -36
- package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +1 -1
- package/Components/ContentEntryForm/index.d.ts +0 -3
- package/Components/ContentEntryForm/index.js +0 -3
- package/Routes/CmsWorkflowsEditor.js +1 -1
- package/Routes/CmsWorkflowsEditor.js.map +1 -1
- package/features/WorkflowStateCacheHandler.d.ts +11 -0
- package/features/WorkflowStateCacheHandler.js +50 -0
- package/features/WorkflowStateCacheHandler.js.map +1 -0
- package/features/feature.d.ts +1 -0
- package/features/feature.js +11 -0
- package/features/feature.js.map +1 -0
- package/index.js +12 -3
- package/index.js.map +1 -1
- package/package.json +14 -12
- package/presentation/CmsWorkflowsEditorView.d.ts +5 -0
- package/{Components/CmsWorkflows → presentation}/CmsWorkflowsEditorView.js +27 -27
- package/presentation/CmsWorkflowsEditorView.js.map +1 -0
- package/presentation/ContentEntryFormPresenterWorkflowDecorator.d.ts +24 -0
- package/presentation/ContentEntryFormPresenterWorkflowDecorator.js +67 -0
- package/presentation/ContentEntryFormPresenterWorkflowDecorator.js.map +1 -0
- package/presentation/TableRowMapperWorkflowDecorator.d.ts +11 -0
- package/presentation/TableRowMapperWorkflowDecorator.js +25 -0
- package/presentation/TableRowMapperWorkflowDecorator.js.map +1 -0
- package/presentation/WorkflowStateGetEntryFieldSelection.d.ts +8 -0
- package/presentation/WorkflowStateGetEntryFieldSelection.js +24 -0
- package/presentation/WorkflowStateGetEntryFieldSelection.js.map +1 -0
- package/presentation/WorkflowStateListEntriesFieldSelection.d.ts +8 -0
- package/presentation/WorkflowStateListEntriesFieldSelection.js +24 -0
- package/presentation/WorkflowStateListEntriesFieldSelection.js.map +1 -0
- package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.d.ts +15 -0
- package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js +50 -0
- package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js.map +1 -0
- package/presentation/cmsWorkflowsEditor/abstractions.d.ts +19 -0
- package/presentation/cmsWorkflowsEditor/abstractions.js +5 -0
- package/presentation/cmsWorkflowsEditor/abstractions.js.map +1 -0
- package/presentation/cmsWorkflowsEditor/feature.d.ts +3 -0
- package/presentation/cmsWorkflowsEditor/feature.js +17 -0
- package/presentation/cmsWorkflowsEditor/feature.js.map +1 -0
- package/presentation/feature.d.ts +1 -0
- package/presentation/feature.js +21 -0
- package/presentation/feature.js.map +1 -0
- package/types.d.ts +10 -0
- package/types.js +0 -0
- package/Components/CmsWorkflows/CmsWorkflowsEditorView.d.ts +0 -3
- package/Components/CmsWorkflows/CmsWorkflowsEditorView.js.map +0 -1
- package/Components/ContentEntryForm/CmsEntryFormPublishButton.d.ts +0 -2
- package/Components/ContentEntryForm/CmsEntryFormPublishButton.js +0 -26
- package/Components/ContentEntryForm/CmsEntryFormPublishButton.js.map +0 -1
- package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.d.ts +0 -2
- package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js +0 -24
- package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js.map +0 -1
- package/Components/ContentEntryForm/CmsEntryFormSaveButton.d.ts +0 -2
- package/Components/ContentEntryForm/CmsEntryFormSaveButton.js +0 -23
- package/Components/ContentEntryForm/CmsEntryFormSaveButton.js.map +0 -1
- package/Components/ContentEntryForm/ContentEntryWorkflow.d.ts +0 -2
- package/Components/ContentEntryForm/ContentEntryWorkflow.js +0 -23
- package/Components/ContentEntryForm/ContentEntryWorkflow.js.map +0 -1
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
import react from "react";
|
|
2
|
-
import { Components } from "@webiny/app-headless-cms";
|
|
3
2
|
import { Sidebar } from "@webiny/admin-ui";
|
|
4
3
|
import { ReactComponent } from "@webiny/icons/flowchart.svg";
|
|
5
|
-
import { Components
|
|
6
|
-
import {
|
|
4
|
+
import { Components } from "@webiny/app-workflows";
|
|
5
|
+
import { ContentEntryListConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
|
|
7
6
|
import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
7
|
+
import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
8
8
|
import { createAppName } from "../../utils/appName.js";
|
|
9
|
-
|
|
10
|
-
const {
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
9
|
+
const { Overlay: { WorkflowStateListAppOverlay: WorkflowStateListAppOverlay } } = Components;
|
|
10
|
+
const { Browser: Browser } = ContentEntryListConfig;
|
|
11
|
+
const ContentReviewsMenuItem = ()=>{
|
|
12
|
+
const presenter = useContentEntriesPresenter();
|
|
13
|
+
const model = presenter.vm.model;
|
|
14
|
+
const app = createAppName(model);
|
|
15
|
+
return /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(WorkflowStateListAppOverlay, {
|
|
16
|
+
app: app
|
|
17
|
+
}, ({ showOverlay })=>/*#__PURE__*/ react.createElement("div", {
|
|
18
|
+
className: "list-none"
|
|
19
|
+
}, /*#__PURE__*/ react.createElement(Sidebar.Item, {
|
|
20
|
+
onClick: showOverlay,
|
|
21
|
+
text: "Content Reviews",
|
|
22
|
+
icon: /*#__PURE__*/ react.createElement(Sidebar.Item.Icon, {
|
|
23
|
+
element: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
24
|
+
label: "Content Reviews"
|
|
25
|
+
})
|
|
26
|
+
}))));
|
|
27
|
+
};
|
|
28
|
+
const CmsEntriesWorkflowStateListFooterMenu = ()=>/*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
|
|
29
|
+
name: "content-reviews",
|
|
30
|
+
element: /*#__PURE__*/ react.createElement(ContentReviewsMenuItem, null)
|
|
31
|
+
}));
|
|
32
|
+
export { CmsEntriesWorkflowStateListFooterMenu };
|
|
31
33
|
|
|
32
34
|
//# sourceMappingURL=CmsEntriesWorkflowStateListFooterMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js","sources":["../../../src/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js","sources":["../../../src/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { ReactComponent as WorkflowStateListIcon } from \"@webiny/icons/flowchart.svg\";\nimport { Components as WorkflowsComponents } from \"@webiny/app-workflows\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { createAppName } from \"~/utils/appName.js\";\n\nconst {\n Overlay: { WorkflowStateListAppOverlay }\n} = WorkflowsComponents;\n\nconst { Browser } = ContentEntryListConfig;\n\nconst ContentReviewsMenuItem = () => {\n const presenter = useContentEntriesPresenter();\n\n const model = presenter.vm.model;\n const app = createAppName(model);\n\n return (\n <IsModelPublishable>\n <WorkflowStateListAppOverlay app={app}>\n {({ showOverlay }) => {\n return (\n <div className={\"list-none\"}>\n <Sidebar.Item\n onClick={showOverlay}\n text={\"Content Reviews\"}\n icon={\n <Sidebar.Item.Icon\n element={<WorkflowStateListIcon />}\n label={\"Content Reviews\"}\n />\n }\n />\n </div>\n );\n }}\n </WorkflowStateListAppOverlay>\n </IsModelPublishable>\n );\n};\n\nexport const CmsEntriesWorkflowStateListFooterMenu = () => {\n return (\n <ContentEntryListConfig>\n <Browser.Sidebar.Footer name={\"content-reviews\"} element={<ContentReviewsMenuItem />} />\n </ContentEntryListConfig>\n );\n};\n"],"names":["WorkflowStateListAppOverlay","WorkflowsComponents","Browser","ContentEntryListConfig","ContentReviewsMenuItem","presenter","useContentEntriesPresenter","model","app","createAppName","IsModelPublishable","showOverlay","Sidebar","WorkflowStateListIcon","CmsEntriesWorkflowStateListFooterMenu"],"mappings":";;;;;;;;AASA,MAAM,EACF,SAAS,EAAEA,6BAAAA,2BAA2B,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,yBAAyB;IAC3B,MAAMC,YAAYC;IAElB,MAAMC,QAAQF,UAAU,EAAE,CAAC,KAAK;IAChC,MAAMG,MAAMC,cAAcF;IAE1B,OAAO,WAAP,GACI,oBAACG,oBAAkBA,MAAAA,WAAAA,GACf,oBAACV,6BAA2BA;QAAC,KAAKQ;OAC7B,CAAC,EAAEG,WAAW,EAAE,GACN,WAAP,GACI,oBAAC;YAAI,WAAW;yBACZ,oBAACC,QAAQ,IAAI;YACT,SAASD;YACT,MAAM;YACN,oBACI,oBAACC,QAAQ,IAAI,CAAC,IAAI;gBACd,uBAAS,oBAACC,gBAAqBA;gBAC/B,OAAO;;;AAU/C;AAEO,MAAMC,wCAAwC,IAC1C,WAAP,GACI,oBAACX,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,OAAO,CAAC,MAAM;QAAC,MAAM;QAAmB,uBAAS,oBAACE,wBAAsBA"}
|
|
@@ -1,43 +1,35 @@
|
|
|
1
1
|
import react, { useCallback } from "react";
|
|
2
|
-
import { useRoute } from "@webiny/app";
|
|
2
|
+
import { useFeature, useRoute } from "@webiny/app";
|
|
3
3
|
import { useToast } from "@webiny/admin-ui";
|
|
4
4
|
import { ContentEntryEditorConfig, usePermission } from "@webiny/app-headless-cms";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { useContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js";
|
|
6
|
+
import { RevisionsListFeature } from "@webiny/app-headless-cms/presentation/contentEntries/revisionsList/feature.js";
|
|
7
7
|
import { ReactComponent } from "@webiny/icons/new_releases.svg";
|
|
8
8
|
import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
9
|
+
import { OptionsMenuItem } from "@webiny/app-admin";
|
|
9
10
|
const { Actions: Actions } = ContentEntryEditorConfig;
|
|
10
11
|
const CreateNewRevisionMenuItem = ()=>{
|
|
11
12
|
const toast = useToast();
|
|
12
13
|
const { setRouteParams } = useRoute();
|
|
13
14
|
const { canEdit } = usePermission();
|
|
14
|
-
const
|
|
15
|
-
const {
|
|
16
|
-
const
|
|
17
|
-
addItemToListCache: true
|
|
18
|
-
});
|
|
15
|
+
const formPresenter = useContentEntryFormPresenter();
|
|
16
|
+
const { presenter: revisionsPresenter } = useFeature(RevisionsListFeature);
|
|
17
|
+
const entry = formPresenter.vm.entry;
|
|
19
18
|
const onClick = useCallback(async ()=>{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"required"
|
|
25
|
-
],
|
|
26
|
-
createNewRevision: true
|
|
27
|
-
});
|
|
28
|
-
if (newRevision.error) return void toast.showWarningToast({
|
|
29
|
-
title: "Could not create a new revision.",
|
|
30
|
-
description: newRevision.error.message
|
|
19
|
+
if (!entry) return;
|
|
20
|
+
const newEntry = await revisionsPresenter.createRevision(entry.id);
|
|
21
|
+
if (!newEntry) return void toast.showWarningToast({
|
|
22
|
+
title: "Could not create a new revision."
|
|
31
23
|
});
|
|
32
24
|
setRouteParams((params)=>({
|
|
33
25
|
...params,
|
|
34
|
-
id:
|
|
26
|
+
id: newEntry.id
|
|
35
27
|
}));
|
|
36
28
|
}, [
|
|
37
29
|
entry,
|
|
38
|
-
|
|
30
|
+
revisionsPresenter
|
|
39
31
|
]);
|
|
40
|
-
if (!canEdit(entry, "cms.contentEntry")) return null;
|
|
32
|
+
if (!entry || !canEdit(entry, "cms.contentEntry")) return null;
|
|
41
33
|
return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
|
|
42
34
|
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
43
35
|
disabled: !entry.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useRoute } from \"@webiny/app\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { ContentEntryEditorConfig, usePermission } from \"@webiny/app-headless-cms\";\nimport {
|
|
1
|
+
{"version":3,"file":"Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { useRoute } from \"@webiny/app\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { ContentEntryEditorConfig, usePermission } from \"@webiny/app-headless-cms\";\nimport { useContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js\";\nimport { RevisionsListFeature } from \"@webiny/app-headless-cms/presentation/contentEntries/revisionsList/feature.js\";\nimport { ReactComponent as NewReleaseIcon } from \"@webiny/icons/new_releases.svg\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { OptionsMenuItem } from \"@webiny/app-admin\";\n\nconst { Actions } = ContentEntryEditorConfig;\n\nconst CreateNewRevisionMenuItem = () => {\n const toast = useToast();\n const { setRouteParams } = useRoute();\n const { canEdit } = usePermission();\n const formPresenter = useContentEntryFormPresenter();\n const { presenter: revisionsPresenter } = useFeature(RevisionsListFeature);\n\n const entry = formPresenter.vm.entry;\n\n const onClick = useCallback(async () => {\n if (!entry) {\n return;\n }\n\n const newEntry = await revisionsPresenter.createRevision(entry.id);\n\n if (!newEntry) {\n toast.showWarningToast({\n title: \"Could not create a new revision.\"\n });\n return;\n }\n\n setRouteParams(params => {\n return { ...params, id: newEntry.id };\n });\n }, [entry, revisionsPresenter]);\n\n if (!entry || !canEdit(entry, \"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <OptionsMenuItem\n icon={<NewReleaseIcon />}\n disabled={!entry.id}\n label={`Create New Revision`}\n onAction={onClick}\n data-testid={\"cms.content-form.header.createNewRevision\"}\n />\n );\n};\n\nexport const CmsEntryFormCreateNewRevisionButton = () => {\n return (\n <ContentEntryEditorConfig>\n <IsModelPublishable>\n <Actions.MenuItemAction\n name={\"createNewRevision\"}\n element={<CreateNewRevisionMenuItem />}\n />\n </IsModelPublishable>\n </ContentEntryEditorConfig>\n );\n};\n"],"names":["Actions","ContentEntryEditorConfig","CreateNewRevisionMenuItem","toast","useToast","setRouteParams","useRoute","canEdit","usePermission","formPresenter","useContentEntryFormPresenter","revisionsPresenter","useFeature","RevisionsListFeature","entry","onClick","useCallback","newEntry","params","OptionsMenuItem","NewReleaseIcon","CmsEntryFormCreateNewRevisionButton","IsModelPublishable"],"mappings":";;;;;;;;;AAWA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,4BAA4B;IAC9B,MAAMC,QAAQC;IACd,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAC3B,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAMC,gBAAgBC;IACtB,MAAM,EAAE,WAAWC,kBAAkB,EAAE,GAAGC,WAAWC;IAErD,MAAMC,QAAQL,cAAc,EAAE,CAAC,KAAK;IAEpC,MAAMM,UAAUC,YAAY;QACxB,IAAI,CAACF,OACD;QAGJ,MAAMG,WAAW,MAAMN,mBAAmB,cAAc,CAACG,MAAM,EAAE;QAEjE,IAAI,CAACG,UAAU,YACXd,MAAM,gBAAgB,CAAC;YACnB,OAAO;QACX;QAIJE,eAAea,CAAAA,SACJ;gBAAE,GAAGA,MAAM;gBAAE,IAAID,SAAS,EAAE;YAAC;IAE5C,GAAG;QAACH;QAAOH;KAAmB;IAE9B,IAAI,CAACG,SAAS,CAACP,QAAQO,OAAO,qBAC1B,OAAO;IAGX,OAAO,WAAP,GACI,oBAACK,iBAAeA;QACZ,oBAAM,oBAACC,gBAAcA;QACrB,UAAU,CAACN,MAAM,EAAE;QACnB,OAAO;QACP,UAAUC;QACV,eAAa;;AAGzB;AAEO,MAAMM,sCAAsC,IACxC,WAAP,GACI,oBAACpB,0BAAwBA,MAAAA,WAAAA,GACrB,oBAACqB,oBAAkBA,MAAAA,WAAAA,GACf,oBAACtB,QAAQ,cAAc;QACnB,MAAM;QACN,uBAAS,oBAACE,2BAAyBA"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import react from "react";
|
|
2
2
|
import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
|
|
3
|
-
import {
|
|
3
|
+
import { useWorkflowState } from "@webiny/app-workflows";
|
|
4
4
|
const { Actions: Actions } = ContentEntryEditorConfig;
|
|
5
5
|
const { MenuItemAction: MenuItemAction } = Actions;
|
|
6
6
|
const OverrideScheduleMenuItemAction = (props)=>{
|
|
7
7
|
const { presenter } = useWorkflowState();
|
|
8
|
-
if (presenter.vm.
|
|
9
|
-
|
|
10
|
-
}
|
|
8
|
+
if (!presenter.vm.hasWorkflow || presenter.vm.isApproved) ;
|
|
9
|
+
else if ("schedule" === props.name) return null;
|
|
11
10
|
return props.children;
|
|
12
11
|
};
|
|
13
12
|
const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator((Original)=>function(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState
|
|
1
|
+
{"version":3,"file":"Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { MenuItemAction } = Actions;\n\ninterface IOverrideScheduleMenuItemActionProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideScheduleMenuItemAction = (props: IOverrideScheduleMenuItemActionProps) => {\n const { presenter } = useWorkflowState();\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 (!presenter.vm.hasWorkflow || presenter.vm.isApproved) {\n return props.children;\n } else if (props.name === \"schedule\") {\n return null;\n }\n return props.children;\n};\n/**\n * There is a possibility that this decorator will not do anything, because scheduler is not turned on.\n */\nexport const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator(Original => {\n return function WorkflowCmsEntryScheduleMenuItemAction(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideScheduleMenuItemAction name={props.name}>\n {props.element}\n </OverrideScheduleMenuItemAction>\n }\n />\n );\n };\n});\n"],"names":["Actions","ContentEntryEditorConfig","MenuItemAction","OverrideScheduleMenuItemAction","props","presenter","useWorkflowState","CmsEntryFormScheduleMenuItemAction","Original"],"mappings":";;;AAIA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,gBAAAA,cAAc,EAAE,GAAGF;AAO3B,MAAMG,iCAAiC,CAACC;IACpC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAKtB,IAAI,CAACD,UAAU,EAAE,CAAC,WAAW,IAAIA,UAAU,EAAE,CAAC,UAAU;SAEjD,IAAID,AAAe,eAAfA,MAAM,IAAI,EACjB,OAAO;IAEX,OAAOA,MAAM,QAAQ;AACzB;AAIO,MAAMG,qCAAqCL,eAAe,eAAe,CAACM,CAAAA,WACtE,SAAgDJ,KAAK;QACxD,OAAO,WAAP,GACI,oBAACI,UAAAA;YACI,GAAGJ,KAAK;YACT,uBACI,oBAACD,gCAA8BA;gBAAC,MAAMC,MAAM,IAAI;eAC3CA,MAAM,OAAO;;IAKlC"}
|
|
@@ -1,40 +1,24 @@
|
|
|
1
1
|
import react from "react";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { Alert } from "@webiny/admin-ui";
|
|
4
|
+
import { ContentEntryFormContent } from "@webiny/app-headless-cms/presentation/contentEntries/views/layout/index.js";
|
|
5
|
+
import { useContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js";
|
|
6
|
+
import { Components, useWorkflowState } from "@webiny/app-workflows";
|
|
5
7
|
import { CMS_MODEL_SINGLETON_TAG } from "@webiny/app-headless-cms-common";
|
|
6
|
-
const { ContentReview: { WorkflowStateBar: WorkflowStateBar
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const { model } = useModel();
|
|
22
|
-
const showOriginal = shouldShowOriginal({
|
|
23
|
-
entry: props.entry,
|
|
24
|
-
model
|
|
25
|
-
});
|
|
26
|
-
if (showOriginal) return /*#__PURE__*/ react.createElement(Original, props);
|
|
27
|
-
return /*#__PURE__*/ react.createElement(Grid, null, /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
28
|
-
span: 12
|
|
29
|
-
}, /*#__PURE__*/ react.createElement(WorkflowStateBar, null)), /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
30
|
-
span: 12
|
|
31
|
-
}, /*#__PURE__*/ react.createElement(WorkflowStateOverlay, null, ({ state })=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(StoreAlert, {
|
|
32
|
-
state: state
|
|
33
|
-
}), /*#__PURE__*/ react.createElement(Original, {
|
|
34
|
-
...props,
|
|
35
|
-
persistEntry: state ? emptyFunction : props.persistEntry
|
|
36
|
-
})))));
|
|
37
|
-
});
|
|
38
|
-
export { ContentEntryFormWorkflow_ContentEntryFormWorkflow as ContentEntryFormWorkflow };
|
|
8
|
+
const { ContentReview: { WorkflowStateBar: WorkflowStateBar } } = Components;
|
|
9
|
+
const ContentEntryFormWorkflow = ContentEntryFormContent.createDecorator((Original)=>observer(function(props) {
|
|
10
|
+
const formPresenter = useContentEntryFormPresenter();
|
|
11
|
+
const { presenter } = useWorkflowState();
|
|
12
|
+
const model = formPresenter.vm.model;
|
|
13
|
+
const isSingleton = model.tags.includes(CMS_MODEL_SINGLETON_TAG);
|
|
14
|
+
if (isSingleton || formPresenter.vm.isNewEntry || !presenter.vm.hasWorkflow) return /*#__PURE__*/ react.createElement(Original, props);
|
|
15
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
|
|
16
|
+
className: "max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed"
|
|
17
|
+
}, /*#__PURE__*/ react.createElement(WorkflowStateBar, null), presenter.vm.hasState ? /*#__PURE__*/ react.createElement(Alert, {
|
|
18
|
+
type: "danger",
|
|
19
|
+
className: "mt-sm"
|
|
20
|
+
}, "Any changes you do on the entry will not be stored!") : null), /*#__PURE__*/ react.createElement(Original, props));
|
|
21
|
+
}));
|
|
22
|
+
export { ContentEntryFormWorkflow };
|
|
39
23
|
|
|
40
24
|
//# sourceMappingURL=ContentEntryFormWorkflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Components/ContentEntryForm/ContentEntryFormWorkflow.js","sources":["../../../src/Components/ContentEntryForm/ContentEntryFormWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"Components/ContentEntryForm/ContentEntryFormWorkflow.js","sources":["../../../src/Components/ContentEntryForm/ContentEntryFormWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Alert } from \"@webiny/admin-ui\";\nimport { ContentEntryFormContent } from \"@webiny/app-headless-cms/presentation/contentEntries/views/layout/index.js\";\nimport { useContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\n\nconst {\n ContentReview: { WorkflowStateBar }\n} = Components;\n\nexport const ContentEntryFormWorkflow = ContentEntryFormContent.createDecorator(Original => {\n return observer(function ContentEntryFormWorkflowDecorator(props) {\n const formPresenter = useContentEntryFormPresenter();\n const { presenter } = useWorkflowState();\n const model = formPresenter.vm.model;\n\n const isSingleton = model.tags.includes(CMS_MODEL_SINGLETON_TAG);\n\n if (isSingleton || formPresenter.vm.isNewEntry || !presenter.vm.hasWorkflow) {\n return <Original {...props} />;\n }\n\n return (\n <>\n <div\n className={\n \"max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed\"\n }\n >\n <WorkflowStateBar />\n {presenter.vm.hasState ? (\n <Alert type=\"danger\" className={\"mt-sm\"}>\n Any changes you do on the entry will not be stored!\n </Alert>\n ) : null}\n </div>\n <Original {...props} />\n </>\n );\n });\n});\n"],"names":["WorkflowStateBar","Components","ContentEntryFormWorkflow","ContentEntryFormContent","Original","observer","props","formPresenter","useContentEntryFormPresenter","presenter","useWorkflowState","model","isSingleton","CMS_MODEL_SINGLETON_TAG","Alert"],"mappings":";;;;;;;AASA,MAAM,EACF,eAAe,EAAEA,kBAAAA,gBAAgB,EAAE,EACtC,GAAGC;AAEG,MAAMC,2BAA2BC,wBAAwB,eAAe,CAACC,CAAAA,WACrEC,SAAS,SAA2CC,KAAK;QAC5D,MAAMC,gBAAgBC;QACtB,MAAM,EAAEC,SAAS,EAAE,GAAGC;QACtB,MAAMC,QAAQJ,cAAc,EAAE,CAAC,KAAK;QAEpC,MAAMK,cAAcD,MAAM,IAAI,CAAC,QAAQ,CAACE;QAExC,IAAID,eAAeL,cAAc,EAAE,CAAC,UAAU,IAAI,CAACE,UAAU,EAAE,CAAC,WAAW,EACvE,OAAO,WAAP,GAAO,oBAACL,UAAaE;QAGzB,OAAO,WAAP,GACI,wDACI,oBAAC;YACG,WACI;yBAGJ,oBAACN,kBAAgBA,OAChBS,UAAU,EAAE,CAAC,QAAQ,GAAG,WAAH,GAClB,oBAACK,OAAKA;YAAC,MAAK;YAAS,WAAW;WAAS,yDAGzC,qBAER,oBAACV,UAAaE;IAG1B"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export { ContentEntryFormWorkflow } from "./ContentEntryFormWorkflow.js";
|
|
2
|
-
export { ContentEntryWorkflow } from "./ContentEntryWorkflow.js";
|
|
3
2
|
export { CmsEntryFormTooltipButton } from "./CmsEntryFormTooltipButton.js";
|
|
4
3
|
export { CmsEntryFormScheduleMenuItemAction } from "./CmsEntryFormScheduleMenuItemAction.js";
|
|
5
|
-
export { CmsEntryFormSaveAndPublishButton } from "./CmsEntryFormSaveAndPublishButton.js";
|
|
6
|
-
export { CmsEntryFormSaveButton } from "./CmsEntryFormSaveButton.js";
|
|
7
4
|
export { CmsEntryFormCreateNewRevisionButton } from "./CmsEntryFormCreateNewRevisionButton.js";
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export { ContentEntryFormWorkflow } from "./ContentEntryFormWorkflow.js";
|
|
2
|
-
export { ContentEntryWorkflow } from "./ContentEntryWorkflow.js";
|
|
3
2
|
export { CmsEntryFormTooltipButton } from "./CmsEntryFormTooltipButton.js";
|
|
4
3
|
export { CmsEntryFormScheduleMenuItemAction } from "./CmsEntryFormScheduleMenuItemAction.js";
|
|
5
|
-
export { CmsEntryFormSaveAndPublishButton } from "./CmsEntryFormSaveAndPublishButton.js";
|
|
6
|
-
export { CmsEntryFormSaveButton } from "./CmsEntryFormSaveButton.js";
|
|
7
4
|
export { CmsEntryFormCreateNewRevisionButton } from "./CmsEntryFormCreateNewRevisionButton.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import react, { Suspense } from "react";
|
|
2
2
|
import { Routes } from "../routes.js";
|
|
3
3
|
import react_helmet from "react-helmet";
|
|
4
|
-
import { CmsWorkflowsEditorMenu, CmsWorkflowsEditorView } from "../Components/CmsWorkflows/CmsWorkflowsEditorView.js";
|
|
5
4
|
import { i18n } from "@webiny/app/i18n/index.js";
|
|
6
5
|
import { AdminConfig, AdminLayout, SecureRoute } from "@webiny/app-admin";
|
|
7
6
|
import { OverlayLoader } from "@webiny/admin-ui";
|
|
8
7
|
import { useCanUseWorkflows } from "@webiny/app-workflows";
|
|
8
|
+
import { CmsWorkflowsEditorMenu, CmsWorkflowsEditorView } from "../presentation/CmsWorkflowsEditorView.js";
|
|
9
9
|
const t = i18n.namespace("HeadlessCms.Workflows.Editor");
|
|
10
10
|
const Loader = ({ children, ...props })=>/*#__PURE__*/ react.createElement(Suspense, {
|
|
11
11
|
fallback: /*#__PURE__*/ react.createElement(OverlayLoader, null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Routes/CmsWorkflowsEditor.js","sources":["../../src/Routes/CmsWorkflowsEditor.tsx"],"sourcesContent":["import React, { Suspense } from \"react\";\nimport { Routes } from \"~/routes.js\";\nimport Helmet from \"react-helmet\";\nimport {
|
|
1
|
+
{"version":3,"file":"Routes/CmsWorkflowsEditor.js","sources":["../../src/Routes/CmsWorkflowsEditor.tsx"],"sourcesContent":["import React, { Suspense } from \"react\";\nimport { Routes } from \"~/routes.js\";\nimport Helmet from \"react-helmet\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { SecureRoute } from \"@webiny/app-admin\";\nimport { OverlayLoader } from \"@webiny/admin-ui\";\nimport { AdminConfig, AdminLayout } from \"@webiny/app-admin\";\nimport { useCanUseWorkflows } from \"@webiny/app-workflows\";\nimport { CmsWorkflowsEditorView } from \"~/presentation/CmsWorkflowsEditorView.js\";\nimport { CmsWorkflowsEditorMenu } from \"~/presentation/CmsWorkflowsEditorView.js\";\n\nconst t = i18n.namespace(\"HeadlessCms.Workflows.Editor\");\n\ninterface LoaderProps {\n children: React.ReactNode;\n}\n\nconst Loader = ({ children, ...props }: LoaderProps) => (\n <Suspense fallback={<OverlayLoader />}>\n {React.cloneElement(children as unknown as React.ReactElement, props)}\n </Suspense>\n);\n\nconst { Route } = AdminConfig;\n\nexport const CmsWorkflowsEditor = () => {\n const { canUseWorkflows } = useCanUseWorkflows();\n if (!canUseWorkflows) {\n return null;\n }\n return (\n <AdminConfig>\n <Route\n route={Routes.ContentModels.Workflows}\n element={\n <SecureRoute permission={\"cms.contentModel\"}>\n <AdminLayout>\n <Helmet>\n <title>{t`Workflows`}</title>\n </Helmet>\n <Loader>\n <CmsWorkflowsEditorView />\n </Loader>\n </AdminLayout>\n </SecureRoute>\n }\n />\n <CmsWorkflowsEditorMenu />\n </AdminConfig>\n );\n};\n"],"names":["t","i18n","Loader","children","props","Suspense","OverlayLoader","React","Route","AdminConfig","CmsWorkflowsEditor","canUseWorkflows","useCanUseWorkflows","Routes","SecureRoute","AdminLayout","Helmet","CmsWorkflowsEditorView","CmsWorkflowsEditorMenu"],"mappings":";;;;;;;;AAWA,MAAMA,IAAIC,KAAK,SAAS,CAAC;AAMzB,MAAMC,SAAS,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAoB,iBAC/C,oBAACC,UAAQA;QAAC,wBAAU,oBAACC,eAAaA;qBAC7BC,MAAAA,YAAkB,CAACJ,UAA2CC;AAIvE,MAAM,EAAEI,OAAAA,KAAK,EAAE,GAAGC;AAEX,MAAMC,qBAAqB;IAC9B,MAAM,EAAEC,eAAe,EAAE,GAAGC;IAC5B,IAAI,CAACD,iBACD,OAAO;IAEX,OAAO,WAAP,GACI,oBAACF,aAAWA,MAAAA,WAAAA,GACR,oBAACD,OAAKA;QACF,OAAOK,OAAO,aAAa,CAAC,SAAS;QACrC,uBACI,oBAACC,aAAWA;YAAC,YAAY;yBACrB,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACC,cAAMA,MAAAA,WAAAA,GACH,oBAAC,eAAOhB,CAAC,CAAC,SAAS,CAAC,kBAExB,oBAACE,QAAMA,MAAAA,WAAAA,GACH,oBAACe,wBAAsBA;sBAM3C,oBAACC,wBAAsBA;AAGnC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
|
|
2
|
+
import { WorkflowStateChangedHandler, type WorkflowStateChangedEvent } from "@webiny/app-workflows/domain/events.js";
|
|
3
|
+
declare class WorkflowStateCacheHandlerImpl implements WorkflowStateChangedHandler.Interface {
|
|
4
|
+
private cacheProvider;
|
|
5
|
+
constructor(cacheProvider: ContentEntriesCacheProvider.Interface);
|
|
6
|
+
handle(event: WorkflowStateChangedEvent): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const WorkflowStateCacheHandler: typeof WorkflowStateCacheHandlerImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/app/features/eventPublisher").IEventHandler<WorkflowStateChangedEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { parseIdentifier } from "@webiny/utils/parseIdentifier.js";
|
|
2
|
+
import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
|
|
3
|
+
import { WorkflowStateChangedHandler } from "@webiny/app-workflows/domain/events.js";
|
|
4
|
+
function getModelIdFromAppName(app) {
|
|
5
|
+
const matched = app.match(/^cms\.([a-zA-Z0-9_-]+)$/);
|
|
6
|
+
return matched ? matched[1] : null;
|
|
7
|
+
}
|
|
8
|
+
function toWorkflowStateValues(state) {
|
|
9
|
+
if (!state) return null;
|
|
10
|
+
return {
|
|
11
|
+
workflowId: state.id,
|
|
12
|
+
stepId: state.currentStep.id,
|
|
13
|
+
stepName: state.currentStep.title,
|
|
14
|
+
state: state.state
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
class WorkflowStateCacheHandlerImpl {
|
|
18
|
+
constructor(cacheProvider){
|
|
19
|
+
this.cacheProvider = cacheProvider;
|
|
20
|
+
}
|
|
21
|
+
async handle(event) {
|
|
22
|
+
const { app, targetRevisionId, state } = event.payload;
|
|
23
|
+
const modelId = getModelIdFromAppName(app);
|
|
24
|
+
if (!modelId) return;
|
|
25
|
+
const { id: entryId } = parseIdentifier(targetRevisionId);
|
|
26
|
+
const cache = this.cacheProvider.get(modelId);
|
|
27
|
+
const workflowValues = toWorkflowStateValues(state);
|
|
28
|
+
cache.updateItems((entry)=>{
|
|
29
|
+
if (entry.entryId !== entryId) return entry;
|
|
30
|
+
return {
|
|
31
|
+
...entry,
|
|
32
|
+
meta: {
|
|
33
|
+
...entry.meta,
|
|
34
|
+
system: {
|
|
35
|
+
workflow: workflowValues
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const WorkflowStateCacheHandler = WorkflowStateChangedHandler.createImplementation({
|
|
43
|
+
implementation: WorkflowStateCacheHandlerImpl,
|
|
44
|
+
dependencies: [
|
|
45
|
+
ContentEntriesCacheProvider
|
|
46
|
+
]
|
|
47
|
+
});
|
|
48
|
+
export { WorkflowStateCacheHandler };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=WorkflowStateCacheHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/WorkflowStateCacheHandler.js","sources":["../../src/features/WorkflowStateCacheHandler.ts"],"sourcesContent":["import { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { ContentEntriesCacheProvider } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport {\n WorkflowStateChangedHandler,\n type WorkflowStateChangedEvent\n} from \"@webiny/app-workflows/domain/events.js\";\nimport type { CmsContentEntry } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport type { ICmsEntryWorkflowState } from \"~/types.js\";\n\nfunction getModelIdFromAppName(app: string): string | null {\n const matched = app.match(/^cms\\.([a-zA-Z0-9_-]+)$/);\n return matched ? matched[1] : null;\n}\n\nfunction toWorkflowStateValues(\n state: WorkflowStateChangedEvent[\"payload\"][\"state\"]\n): ICmsEntryWorkflowState | null {\n if (!state) {\n return null;\n }\n\n return {\n workflowId: state.id,\n stepId: state.currentStep.id,\n stepName: state.currentStep.title,\n state: state.state\n };\n}\n\nclass WorkflowStateCacheHandlerImpl implements WorkflowStateChangedHandler.Interface {\n constructor(private cacheProvider: ContentEntriesCacheProvider.Interface) {}\n\n async handle(event: WorkflowStateChangedEvent): Promise<void> {\n const { app, targetRevisionId, state } = event.payload;\n\n const modelId = getModelIdFromAppName(app);\n if (!modelId) {\n return;\n }\n\n const { id: entryId } = parseIdentifier(targetRevisionId);\n const cache = this.cacheProvider.get(modelId);\n const workflowValues = toWorkflowStateValues(state);\n\n cache.updateItems((entry: CmsContentEntry) => {\n if (entry.entryId !== entryId) {\n return entry;\n }\n\n return {\n ...entry,\n meta: {\n ...entry.meta,\n system: {\n workflow: workflowValues\n }\n }\n };\n });\n }\n}\n\nexport const WorkflowStateCacheHandler = WorkflowStateChangedHandler.createImplementation({\n implementation: WorkflowStateCacheHandlerImpl,\n dependencies: [ContentEntriesCacheProvider]\n});\n"],"names":["getModelIdFromAppName","app","matched","toWorkflowStateValues","state","WorkflowStateCacheHandlerImpl","cacheProvider","event","targetRevisionId","modelId","entryId","parseIdentifier","cache","workflowValues","entry","WorkflowStateCacheHandler","WorkflowStateChangedHandler","ContentEntriesCacheProvider"],"mappings":";;;AASA,SAASA,sBAAsBC,GAAW;IACtC,MAAMC,UAAUD,IAAI,KAAK,CAAC;IAC1B,OAAOC,UAAUA,OAAO,CAAC,EAAE,GAAG;AAClC;AAEA,SAASC,sBACLC,KAAoD;IAEpD,IAAI,CAACA,OACD,OAAO;IAGX,OAAO;QACH,YAAYA,MAAM,EAAE;QACpB,QAAQA,MAAM,WAAW,CAAC,EAAE;QAC5B,UAAUA,MAAM,WAAW,CAAC,KAAK;QACjC,OAAOA,MAAM,KAAK;IACtB;AACJ;AAEA,MAAMC;IACF,YAAoBC,aAAoD,CAAE;aAAtDA,aAAa,GAAbA;IAAuD;IAE3E,MAAM,OAAOC,KAAgC,EAAiB;QAC1D,MAAM,EAAEN,GAAG,EAAEO,gBAAgB,EAAEJ,KAAK,EAAE,GAAGG,MAAM,OAAO;QAEtD,MAAME,UAAUT,sBAAsBC;QACtC,IAAI,CAACQ,SACD;QAGJ,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,gBAAgBH;QACxC,MAAMI,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAACH;QACrC,MAAMI,iBAAiBV,sBAAsBC;QAE7CQ,MAAM,WAAW,CAAC,CAACE;YACf,IAAIA,MAAM,OAAO,KAAKJ,SAClB,OAAOI;YAGX,OAAO;gBACH,GAAGA,KAAK;gBACR,MAAM;oBACF,GAAGA,MAAM,IAAI;oBACb,QAAQ;wBACJ,UAAUD;oBACd;gBACJ;YACJ;QACJ;IACJ;AACJ;AAEO,MAAME,4BAA4BC,4BAA4B,oBAAoB,CAAC;IACtF,gBAAgBX;IAChB,cAAc;QAACY;KAA4B;AAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CmsWorkflowsCacheFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { WorkflowStateCacheHandler } from "./WorkflowStateCacheHandler.js";
|
|
3
|
+
const CmsWorkflowsCacheFeature = createFeature({
|
|
4
|
+
name: "CmsWorkflows/Cache",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(WorkflowStateCacheHandler);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { CmsWorkflowsCacheFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/feature.js","sources":["../../src/features/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WorkflowStateCacheHandler } from \"./WorkflowStateCacheHandler.js\";\n\nexport const CmsWorkflowsCacheFeature = createFeature({\n name: \"CmsWorkflows/Cache\",\n register(container) {\n container.register(WorkflowStateCacheHandler);\n }\n});\n"],"names":["CmsWorkflowsCacheFeature","createFeature","container","WorkflowStateCacheHandler"],"mappings":";;AAGO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
package/index.js
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import react from "react";
|
|
2
|
-
import { Wcp } from "@webiny/app-admin";
|
|
2
|
+
import { RegisterFeature, Wcp } from "@webiny/app-admin";
|
|
3
3
|
import { CmsWorkflowsEditor } from "./Routes/index.js";
|
|
4
|
-
import {
|
|
4
|
+
import { CmsEntryFormScheduleMenuItemAction, CmsEntryFormTooltipButton, ContentEntryFormWorkflow } from "./Components/ContentEntryForm/index.js";
|
|
5
5
|
import { CmsEntriesWorkflowStateListFooterMenu } from "./Components/CmsEntriesWorkflowStateList/index.js";
|
|
6
6
|
import { ListOpenInNewWindow } from "./Components/OptionItem/OpenInNewWindow.js";
|
|
7
7
|
import { CmsEntryFormCreateNewRevisionButton } from "./Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js";
|
|
8
|
-
|
|
8
|
+
import { CmsWorkflowsFeature } from "./presentation/feature.js";
|
|
9
|
+
import { CmsWorkflowsCacheFeature } from "./features/feature.js";
|
|
10
|
+
import { CmsWorkflowsEditorPresenterFeature } from "./presentation/cmsWorkflowsEditor/feature.js";
|
|
11
|
+
const CmsWorkflows = ()=>/*#__PURE__*/ react.createElement(Wcp.CanUseWorkflows, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
12
|
+
feature: CmsWorkflowsFeature
|
|
13
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
14
|
+
feature: CmsWorkflowsCacheFeature
|
|
15
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
16
|
+
feature: CmsWorkflowsEditorPresenterFeature
|
|
17
|
+
}), /*#__PURE__*/ react.createElement(ListOpenInNewWindow, null), /*#__PURE__*/ react.createElement(CmsEntriesWorkflowStateListFooterMenu, null), /*#__PURE__*/ react.createElement(CmsWorkflowsEditor, null), /*#__PURE__*/ react.createElement(ContentEntryFormWorkflow, null), /*#__PURE__*/ react.createElement(CmsEntryFormTooltipButton, null), /*#__PURE__*/ react.createElement(CmsEntryFormScheduleMenuItemAction, null), /*#__PURE__*/ react.createElement(CmsEntryFormCreateNewRevisionButton, null));
|
|
9
18
|
export { CmsWorkflows };
|
|
10
19
|
|
|
11
20
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Wcp } from \"@webiny/app-admin\";\nimport { CmsWorkflowsEditor } from \"~/Routes/index.js\";\nimport {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature, Wcp } from \"@webiny/app-admin\";\nimport { CmsWorkflowsEditor } from \"~/Routes/index.js\";\nimport {\n CmsEntryFormScheduleMenuItemAction,\n CmsEntryFormTooltipButton,\n ContentEntryFormWorkflow\n} from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsEntriesWorkflowStateListFooterMenu } from \"~/Components/CmsEntriesWorkflowStateList/index.js\";\nimport { ListOpenInNewWindow } from \"~/Components/OptionItem/OpenInNewWindow.js\";\nimport { CmsEntryFormCreateNewRevisionButton } from \"~/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js\";\nimport { CmsWorkflowsFeature } from \"~/presentation/feature.js\";\nimport { CmsWorkflowsCacheFeature } from \"~/features/feature.js\";\nimport { CmsWorkflowsEditorPresenterFeature } from \"~/presentation/cmsWorkflowsEditor/feature.js\";\n\nexport const CmsWorkflows = () => {\n return (\n <Wcp.CanUseWorkflows>\n <RegisterFeature feature={CmsWorkflowsFeature} />\n <RegisterFeature feature={CmsWorkflowsCacheFeature} />\n <RegisterFeature feature={CmsWorkflowsEditorPresenterFeature} />\n <ListOpenInNewWindow />\n <CmsEntriesWorkflowStateListFooterMenu />\n <CmsWorkflowsEditor />\n <ContentEntryFormWorkflow />\n <CmsEntryFormTooltipButton />\n <CmsEntryFormScheduleMenuItemAction />\n <CmsEntryFormCreateNewRevisionButton />\n </Wcp.CanUseWorkflows>\n );\n};\n"],"names":["CmsWorkflows","Wcp","RegisterFeature","CmsWorkflowsFeature","CmsWorkflowsCacheFeature","CmsWorkflowsEditorPresenterFeature","ListOpenInNewWindow","CmsEntriesWorkflowStateListFooterMenu","CmsWorkflowsEditor","ContentEntryFormWorkflow","CmsEntryFormTooltipButton","CmsEntryFormScheduleMenuItemAction","CmsEntryFormCreateNewRevisionButton"],"mappings":";;;;;;;;;;AAeO,MAAMA,eAAe,IACjB,WAAP,GACI,oBAACC,IAAI,eAAe,sBAChB,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACC,uCAAqCA,OAAAA,WAAAA,GACtC,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACC,0BAAwBA,OAAAA,WAAAA,GACzB,oBAACC,2BAAyBA,OAAAA,WAAAA,GAC1B,oBAACC,oCAAkCA,OAAAA,WAAAA,GACnC,oBAACC,qCAAmCA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-headless-cms-workflows",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0-alpha.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -13,15 +13,17 @@
|
|
|
13
13
|
"author": "Webiny Ltd",
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@
|
|
17
|
-
"@
|
|
18
|
-
"@webiny/
|
|
19
|
-
"@webiny/app": "6.
|
|
20
|
-
"@webiny/app-
|
|
21
|
-
"@webiny/app-headless-cms": "6.
|
|
22
|
-
"@webiny/app-
|
|
23
|
-
"@webiny/
|
|
24
|
-
"@webiny/icons": "6.
|
|
16
|
+
"@fortawesome/react-fontawesome": "3.5.0",
|
|
17
|
+
"@webiny/admin-ui": "6.6.0-alpha.0",
|
|
18
|
+
"@webiny/app": "6.6.0-alpha.0",
|
|
19
|
+
"@webiny/app-admin": "6.6.0-alpha.0",
|
|
20
|
+
"@webiny/app-headless-cms": "6.6.0-alpha.0",
|
|
21
|
+
"@webiny/app-headless-cms-common": "6.6.0-alpha.0",
|
|
22
|
+
"@webiny/app-workflows": "6.6.0-alpha.0",
|
|
23
|
+
"@webiny/feature": "6.6.0-alpha.0",
|
|
24
|
+
"@webiny/icons": "6.6.0-alpha.0",
|
|
25
|
+
"@webiny/utils": "6.6.0-alpha.0",
|
|
26
|
+
"mobx": "6.16.1",
|
|
25
27
|
"mobx-react-lite": "4.1.1",
|
|
26
28
|
"react": "18.3.1",
|
|
27
29
|
"react-dom": "18.3.1",
|
|
@@ -29,9 +31,9 @@
|
|
|
29
31
|
},
|
|
30
32
|
"devDependencies": {
|
|
31
33
|
"@types/react": "18.3.31",
|
|
32
|
-
"@webiny/build-tools": "6.
|
|
34
|
+
"@webiny/build-tools": "6.6.0-alpha.0",
|
|
33
35
|
"rimraf": "6.1.3",
|
|
34
|
-
"typescript": "
|
|
36
|
+
"typescript": "7.0.2"
|
|
35
37
|
},
|
|
36
38
|
"publishConfig": {
|
|
37
39
|
"access": "public"
|