@webiny/app-headless-cms-workflows 6.3.0-beta.4 → 6.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +24 -37
  2. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +1 -1
  3. package/Components/CmsEntriesWorkflowStateList/index.js +0 -2
  4. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js +74 -112
  5. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js.map +1 -1
  6. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js +44 -58
  7. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +1 -1
  8. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js +21 -33
  9. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js.map +1 -1
  10. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js +18 -33
  11. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js.map +1 -1
  12. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js +17 -31
  13. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js.map +1 -1
  14. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +18 -33
  15. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +1 -1
  16. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js +9 -16
  17. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js.map +1 -1
  18. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +31 -64
  19. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +1 -1
  20. package/Components/ContentEntryForm/ContentEntryWorkflow.js +16 -28
  21. package/Components/ContentEntryForm/ContentEntryWorkflow.js.map +1 -1
  22. package/Components/ContentEntryForm/index.js +0 -2
  23. package/Components/OptionItem/OpenInNewWindow.js +28 -36
  24. package/Components/OptionItem/OpenInNewWindow.js.map +1 -1
  25. package/Routes/CmsWorkflowsEditor.js +18 -27
  26. package/Routes/CmsWorkflowsEditor.js.map +1 -1
  27. package/Routes/index.js +0 -2
  28. package/index.js +3 -4
  29. package/index.js.map +1 -1
  30. package/package.json +10 -10
  31. package/routes.js +17 -18
  32. package/routes.js.map +1 -1
  33. package/utils/appName.js +9 -12
  34. package/utils/appName.js.map +1 -1
  35. package/Components/CmsEntriesWorkflowStateList/index.js.map +0 -1
  36. package/Components/ContentEntryForm/index.js.map +0 -1
  37. package/Routes/index.js.map +0 -1
@@ -1,45 +1,32 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { Components } from "@webiny/app-headless-cms";
3
3
  import { Sidebar } from "@webiny/admin-ui";
4
- import { ReactComponent as WorkflowStateListIcon } from "@webiny/icons/flowchart.svg";
5
- import { Components as WorkflowsComponents } from "@webiny/app-workflows";
4
+ import { ReactComponent } from "@webiny/icons/flowchart.svg";
5
+ import { Components as app_workflows_Components } from "@webiny/app-workflows";
6
6
  import { useContentEntries } from "@webiny/app-headless-cms/admin/views/contentEntries/hooks/index.js";
7
7
  import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
8
8
  import { createAppName } from "../../utils/appName.js";
9
9
  import { useApolloClient } from "@apollo/react-hooks";
10
- const {
11
- Overlay: {
12
- WorkflowStateListAppOverlay
13
- }
14
- } = WorkflowsComponents;
15
- const {
16
- Footer
17
- } = Components.Sidebar;
18
- export const CmsEntriesWorkflowStateListFooterMenu = Footer.createDecorator(Original => {
19
- return function CmsEntriesWorkflowStateListFooterMenu(props) {
20
- const {
21
- contentModel: model
22
- } = useContentEntries();
23
- const client = useApolloClient();
24
- const app = createAppName(model);
25
- return /*#__PURE__*/React.createElement(Original, props, /*#__PURE__*/React.createElement(IsModelPublishable, null, /*#__PURE__*/React.createElement(WorkflowStateListAppOverlay, {
26
- client: client,
27
- app: app
28
- }, ({
29
- showOverlay
30
- }) => {
31
- return /*#__PURE__*/React.createElement("div", {
32
- className: "list-none"
33
- }, /*#__PURE__*/React.createElement(Sidebar.Item, {
34
- onClick: showOverlay,
35
- text: "Content Reviews",
36
- icon: /*#__PURE__*/React.createElement(Sidebar.Item.Icon, {
37
- element: /*#__PURE__*/React.createElement(WorkflowStateListIcon, null),
38
- label: "Content Reviews"
39
- })
40
- }));
41
- })));
42
- };
43
- });
10
+ const { Overlay: { WorkflowStateListAppOverlay: WorkflowStateListAppOverlay } } = app_workflows_Components;
11
+ const { Footer: Footer } = Components.Sidebar;
12
+ const CmsEntriesWorkflowStateListFooterMenu_CmsEntriesWorkflowStateListFooterMenu = Footer.createDecorator((Original)=>function(props) {
13
+ const { contentModel: model } = useContentEntries();
14
+ const client = useApolloClient();
15
+ const app = createAppName(model);
16
+ return /*#__PURE__*/ react.createElement(Original, props, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(WorkflowStateListAppOverlay, {
17
+ client: client,
18
+ app: app
19
+ }, ({ showOverlay })=>/*#__PURE__*/ react.createElement("div", {
20
+ className: "list-none"
21
+ }, /*#__PURE__*/ react.createElement(Sidebar.Item, {
22
+ onClick: showOverlay,
23
+ text: "Content Reviews",
24
+ icon: /*#__PURE__*/ react.createElement(Sidebar.Item.Icon, {
25
+ element: /*#__PURE__*/ react.createElement(ReactComponent, null),
26
+ label: "Content Reviews"
27
+ })
28
+ })))));
29
+ });
30
+ export { CmsEntriesWorkflowStateListFooterMenu_CmsEntriesWorkflowStateListFooterMenu as CmsEntriesWorkflowStateListFooterMenu };
44
31
 
45
32
  //# sourceMappingURL=CmsEntriesWorkflowStateListFooterMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Components","Sidebar","ReactComponent","WorkflowStateListIcon","WorkflowsComponents","useContentEntries","IsModelPublishable","createAppName","useApolloClient","Overlay","WorkflowStateListAppOverlay","Footer","CmsEntriesWorkflowStateListFooterMenu","createDecorator","Original","props","contentModel","model","client","app","createElement","showOverlay","className","Item","onClick","text","icon","Icon","element","label"],"sources":["CmsEntriesWorkflowStateListFooterMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-headless-cms\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { ReactComponent as WorkflowStateListIcon } from \"@webiny/icons/flowchart.svg\";\nimport { Components as WorkflowsComponents } from \"@webiny/app-workflows\";\nimport { useContentEntries } from \"@webiny/app-headless-cms/admin/views/contentEntries/hooks/index.js\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\n\nconst {\n Overlay: { WorkflowStateListAppOverlay }\n} = WorkflowsComponents;\n\nconst { Footer } = Components.Sidebar;\n\nexport const CmsEntriesWorkflowStateListFooterMenu = Footer.createDecorator(Original => {\n return function CmsEntriesWorkflowStateListFooterMenu(props) {\n const { contentModel: model } = useContentEntries();\n const client = useApolloClient();\n\n const app = createAppName(model);\n\n return (\n <Original {...props}>\n <IsModelPublishable>\n <WorkflowStateListAppOverlay client={client} 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 </Original>\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,cAAc,IAAIC,qBAAqB,QAAQ,6BAA6B;AACrF,SAASH,UAAU,IAAII,mBAAmB,QAAQ,uBAAuB;AACzE,SAASC,iBAAiB,QAAQ,oEAAoE;AACtG,SAASC,kBAAkB,QAAQ,+CAA+C;AAClF,SAASC,aAAa;AACtB,SAASC,eAAe,QAAQ,qBAAqB;AAErD,MAAM;EACFC,OAAO,EAAE;IAAEC;EAA4B;AAC3C,CAAC,GAAGN,mBAAmB;AAEvB,MAAM;EAAEO;AAAO,CAAC,GAAGX,UAAU,CAACC,OAAO;AAErC,OAAO,MAAMW,qCAAqC,GAAGD,MAAM,CAACE,eAAe,CAACC,QAAQ,IAAI;EACpF,OAAO,SAASF,qCAAqCA,CAACG,KAAK,EAAE;IACzD,MAAM;MAAEC,YAAY,EAAEC;IAAM,CAAC,GAAGZ,iBAAiB,CAAC,CAAC;IACnD,MAAMa,MAAM,GAAGV,eAAe,CAAC,CAAC;IAEhC,MAAMW,GAAG,GAAGZ,aAAa,CAACU,KAAK,CAAC;IAEhC,oBACIlB,KAAA,CAAAqB,aAAA,CAACN,QAAQ,EAAKC,KAAK,eACfhB,KAAA,CAAAqB,aAAA,CAACd,kBAAkB,qBACfP,KAAA,CAAAqB,aAAA,CAACV,2BAA2B;MAACQ,MAAM,EAAEA,MAAO;MAACC,GAAG,EAAEA;IAAI,GACjD,CAAC;MAAEE;IAAY,CAAC,KAAK;MAClB,oBACItB,KAAA,CAAAqB,aAAA;QAAKE,SAAS,EAAE;MAAY,gBACxBvB,KAAA,CAAAqB,aAAA,CAACnB,OAAO,CAACsB,IAAI;QACTC,OAAO,EAAEH,WAAY;QACrBI,IAAI,EAAE,iBAAkB;QACxBC,IAAI,eACA3B,KAAA,CAAAqB,aAAA,CAACnB,OAAO,CAACsB,IAAI,CAACI,IAAI;UACdC,OAAO,eAAE7B,KAAA,CAAAqB,aAAA,CAACjB,qBAAqB,MAAE,CAAE;UACnC0B,KAAK,EAAE;QAAkB,CAC5B;MACJ,CACJ,CACA,CAAC;IAEd,CACyB,CACb,CACd,CAAC;EAEnB,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js","sources":["../../../src/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-headless-cms\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { ReactComponent as WorkflowStateListIcon } from \"@webiny/icons/flowchart.svg\";\nimport { Components as WorkflowsComponents } from \"@webiny/app-workflows\";\nimport { useContentEntries } from \"@webiny/app-headless-cms/admin/views/contentEntries/hooks/index.js\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\n\nconst {\n Overlay: { WorkflowStateListAppOverlay }\n} = WorkflowsComponents;\n\nconst { Footer } = Components.Sidebar;\n\nexport const CmsEntriesWorkflowStateListFooterMenu = Footer.createDecorator(Original => {\n return function CmsEntriesWorkflowStateListFooterMenu(props) {\n const { contentModel: model } = useContentEntries();\n const client = useApolloClient();\n\n const app = createAppName(model);\n\n return (\n <Original {...props}>\n <IsModelPublishable>\n <WorkflowStateListAppOverlay client={client} 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 </Original>\n );\n };\n});\n"],"names":["WorkflowStateListAppOverlay","WorkflowsComponents","Footer","Components","CmsEntriesWorkflowStateListFooterMenu","Original","props","model","useContentEntries","client","useApolloClient","app","createAppName","IsModelPublishable","showOverlay","Sidebar","WorkflowStateListIcon"],"mappings":";;;;;;;;;AAUA,MAAM,EACF,SAAS,EAAEA,6BAAAA,2BAA2B,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,QAAAA,MAAM,EAAE,GAAGC,WAAW,OAAO;AAE9B,MAAMC,8EAAwCF,OAAO,eAAe,CAACG,CAAAA,WACjE,SAA+CC,KAAK;QACvD,MAAM,EAAE,cAAcC,KAAK,EAAE,GAAGC;QAChC,MAAMC,SAASC;QAEf,MAAMC,MAAMC,cAAcL;QAE1B,OAAO,WAAP,GACI,oBAACF,UAAaC,OAAAA,WAAAA,GACV,oBAACO,oBAAkBA,MAAAA,WAAAA,GACf,oBAACb,6BAA2BA;YAAC,QAAQS;YAAQ,KAAKE;WAC7C,CAAC,EAAEG,WAAW,EAAE,GACN,WAAP,GACI,oBAAC;gBAAI,WAAW;6BACZ,oBAACC,QAAQ,IAAI;gBACT,SAASD;gBACT,MAAM;gBACN,oBACI,oBAACC,QAAQ,IAAI,CAAC,IAAI;oBACd,uBAAS,oBAACC,gBAAqBA;oBAC/B,OAAO;;;IAWnD"}
@@ -1,3 +1 @@
1
1
  export { CmsEntriesWorkflowStateListFooterMenu } from "./CmsEntriesWorkflowStateListFooterMenu.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import React, { useCallback, useMemo } from "react";
1
+ import react, { useCallback, useMemo } from "react";
2
2
  import { AdminConfig, useRoute, useRouter } from "@webiny/app-admin";
3
3
  import { Routes } from "../../routes.js";
4
4
  import { Components } from "@webiny/app-workflows";
@@ -7,122 +7,84 @@ import { useModels, usePermission } from "@webiny/app-headless-cms/admin/hooks/i
7
7
  import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
8
8
  import { createAppName } from "../../utils/appName.js";
9
9
  import { normalizeIcon } from "@webiny/app-headless-cms/utils/normalizeIcon.js";
10
- const {
11
- Admin: {
12
- WorkflowsEditor
13
- },
14
- Permissions: {
15
- HasWorkflowsEditorPermission
16
- }
17
- } = Components;
18
- const {
19
- Menu
20
- } = AdminConfig;
21
- export const CmsWorkflowsEditorMenu = () => {
22
- const router = useRouter();
23
- const {
24
- canCreateContentModels
25
- } = usePermission();
26
- if (!canCreateContentModels) {
27
- return null;
28
- }
29
- return /*#__PURE__*/React.createElement(HasWorkflowsEditorPermission, null, /*#__PURE__*/React.createElement(Menu, {
30
- name: "headlessCMS.contentModels.workflows",
31
- parent: "headlessCMS",
32
- element: /*#__PURE__*/React.createElement(Menu.Link, {
33
- pinnable: true,
34
- text: "Workflows",
35
- to: router.getLink(Routes.ContentModels.Workflows)
36
- })
37
- }));
10
+ const { Admin: { WorkflowsEditor: WorkflowsEditor }, Permissions: { HasWorkflowsEditorPermission: HasWorkflowsEditorPermission } } = Components;
11
+ const { Menu: Menu } = AdminConfig;
12
+ const CmsWorkflowsEditorMenu = ()=>{
13
+ const router = useRouter();
14
+ const { canCreateContentModels } = usePermission();
15
+ if (!canCreateContentModels) return null;
16
+ return /*#__PURE__*/ react.createElement(HasWorkflowsEditorPermission, null, /*#__PURE__*/ react.createElement(Menu, {
17
+ name: "headlessCMS.contentModels.workflows",
18
+ parent: "headlessCMS",
19
+ element: /*#__PURE__*/ react.createElement(Menu.Link, {
20
+ pinnable: true,
21
+ text: "Workflows",
22
+ to: router.getLink(Routes.ContentModels.Workflows)
23
+ })
24
+ }));
38
25
  };
39
- const ModelIcon = ({
40
- model
41
- }) => {
42
- if (!model.icon) {
43
- return null;
44
- }
45
- const icon = normalizeIcon(model.icon);
46
- if (!icon) {
47
- return null;
48
- }
49
- return /*#__PURE__*/React.createElement(Icon, {
50
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
51
- icon: icon
52
- }),
53
- label: model.name,
54
- size: "sm",
55
- className: "text-neutral-strong"
56
- });
26
+ const ModelIcon = ({ model })=>{
27
+ if (!model.icon) return null;
28
+ const icon = normalizeIcon(model.icon);
29
+ if (!icon) return null;
30
+ return /*#__PURE__*/ react.createElement(Icon, {
31
+ icon: /*#__PURE__*/ react.createElement(FontAwesomeIcon, {
32
+ icon: icon
33
+ }),
34
+ label: model.name,
35
+ size: "sm",
36
+ className: "text-neutral-strong"
37
+ });
57
38
  };
58
- const isAllowed = model => {
59
- // Exclude models that have the "$publishing:false" tag
60
- if (model.tags.includes("$publishing:false")) {
61
- return false;
62
- }
63
- // Exclude single entry models
64
- else if (model.tags.includes("singleEntry")) {
65
- return false;
66
- }
67
- return true;
39
+ const isAllowed = (model)=>{
40
+ if (model.tags.includes("$publishing:false")) return false;
41
+ if (model.tags.includes("singleEntry")) return false;
42
+ return true;
68
43
  };
69
- export const CmsWorkflowsEditorView = () => {
70
- const {
71
- route
72
- } = useRoute(Routes.ContentModels.Workflows);
73
- const {
74
- models,
75
- loading
76
- } = useModels();
77
- const {
78
- canEdit,
79
- canCreateContentModels
80
- } = usePermission();
81
- const {
82
- goToRoute
83
- } = useRouter();
84
- const apps = useMemo(() => {
85
- return models.filter(model => {
86
- if (isAllowed(model) === false) {
87
- return false;
88
- }
89
- return canEdit(model, "cms.contentModel");
90
- }).map(model => {
91
- return {
92
- id: createAppName(model),
93
- name: model.name,
94
- icon: /*#__PURE__*/React.createElement(ModelIcon, {
95
- model: model
96
- })
97
- };
98
- });
99
- }, [models, canEdit]);
100
- const app = useMemo(() => {
101
- if (!route.params.app) {
102
- return apps.find(() => true);
103
- }
104
- return apps.find(a => a.id === route.params.app) || null;
105
- }, [route.params.app]);
106
- const onAppClick = useCallback(id => {
107
- goToRoute(Routes.ContentModels.Workflows, {
108
- app: id
44
+ const CmsWorkflowsEditorView = ()=>{
45
+ const { route } = useRoute(Routes.ContentModels.Workflows);
46
+ const { models, loading } = useModels();
47
+ const { canEdit, canCreateContentModels } = usePermission();
48
+ const { goToRoute } = useRouter();
49
+ const apps = useMemo(()=>models.filter((model)=>{
50
+ if (false === isAllowed(model)) return false;
51
+ return canEdit(model, "cms.contentModel");
52
+ }).map((model)=>({
53
+ id: createAppName(model),
54
+ name: model.name,
55
+ icon: /*#__PURE__*/ react.createElement(ModelIcon, {
56
+ model: model
57
+ })
58
+ })), [
59
+ models,
60
+ canEdit
61
+ ]);
62
+ const app = useMemo(()=>{
63
+ if (!route.params.app) return apps.find(()=>true);
64
+ return apps.find((a)=>a.id === route.params.app) || null;
65
+ }, [
66
+ route.params.app
67
+ ]);
68
+ const onAppClick = useCallback((id)=>{
69
+ goToRoute(Routes.ContentModels.Workflows, {
70
+ app: id
71
+ });
72
+ }, [
73
+ apps
74
+ ]);
75
+ if (!canCreateContentModels) return null;
76
+ if (loading) return /*#__PURE__*/ react.createElement(Loader, {
77
+ size: "lg",
78
+ variant: "accent",
79
+ indeterminate: true,
80
+ text: "Loading..."
109
81
  });
110
- }, [apps]);
111
- if (!canCreateContentModels) {
112
- return null;
113
- } else if (loading) {
114
- return /*#__PURE__*/React.createElement(Loader, {
115
- size: "lg",
116
- variant: "accent",
117
- indeterminate: true,
118
- text: "Loading..."
82
+ return /*#__PURE__*/ react.createElement(WorkflowsEditor, {
83
+ apps: apps,
84
+ onAppClick: onAppClick,
85
+ app: app?.id
119
86
  });
120
- }
121
- return /*#__PURE__*/React.createElement(WorkflowsEditor, {
122
- apps: apps,
123
- onAppClick: onAppClick,
124
- app: app?.id
125
- });
126
87
  };
88
+ export { CmsWorkflowsEditorMenu, CmsWorkflowsEditorView };
127
89
 
128
90
  //# sourceMappingURL=CmsWorkflowsEditorView.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","AdminConfig","useRoute","useRouter","Routes","Components","Icon","Loader","useModels","usePermission","FontAwesomeIcon","createAppName","normalizeIcon","Admin","WorkflowsEditor","Permissions","HasWorkflowsEditorPermission","Menu","CmsWorkflowsEditorMenu","router","canCreateContentModels","createElement","name","parent","element","Link","pinnable","text","to","getLink","ContentModels","Workflows","ModelIcon","model","icon","label","size","className","isAllowed","tags","includes","CmsWorkflowsEditorView","route","models","loading","canEdit","goToRoute","apps","filter","map","id","app","params","find","a","onAppClick","variant","indeterminate"],"sources":["CmsWorkflowsEditorView.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { AdminConfig, useRoute, useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"~/routes.js\";\nimport type { IWorkflowApplication } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { Icon, Loader } from \"@webiny/admin-ui\";\nimport { useModels, usePermission } from \"@webiny/app-headless-cms/admin/hooks/index.js\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { normalizeIcon } from \"@webiny/app-headless-cms/utils/normalizeIcon.js\";\n\nconst {\n Admin: { WorkflowsEditor },\n Permissions: { HasWorkflowsEditorPermission }\n} = Components;\n\nconst { Menu } = AdminConfig;\n\nexport const CmsWorkflowsEditorMenu = () => {\n const router = useRouter();\n const { canCreateContentModels } = usePermission();\n\n if (!canCreateContentModels) {\n return null;\n }\n\n return (\n <HasWorkflowsEditorPermission>\n <Menu\n name={\"headlessCMS.contentModels.workflows\"}\n parent={\"headlessCMS\"}\n element={\n <Menu.Link\n pinnable={true}\n text={\"Workflows\"}\n to={router.getLink(Routes.ContentModels.Workflows)}\n />\n }\n />\n </HasWorkflowsEditorPermission>\n );\n};\n\ninterface IModelIconProps {\n model: Pick<CmsModel, \"icon\" | \"name\">;\n}\n\nconst ModelIcon = ({ model }: IModelIconProps) => {\n if (!model.icon) {\n return null;\n }\n\n const icon = normalizeIcon(model.icon);\n if (!icon) {\n return null;\n }\n\n return (\n <Icon\n icon={<FontAwesomeIcon icon={icon} />}\n label={model.name}\n size={\"sm\"}\n className={\"text-neutral-strong\"}\n />\n );\n};\n\nconst isAllowed = (model: Pick<CmsModel, \"modelId\" | \"tags\">) => {\n // Exclude models that have the \"$publishing:false\" tag\n if (model.tags.includes(\"$publishing:false\")) {\n return false;\n }\n // Exclude single entry models\n else if (model.tags.includes(\"singleEntry\")) {\n return false;\n }\n\n return true;\n};\n\nexport const CmsWorkflowsEditorView = () => {\n const { route } = useRoute(Routes.ContentModels.Workflows);\n const { models, loading } = useModels();\n const { canEdit, canCreateContentModels } = usePermission();\n const { goToRoute } = useRouter();\n\n const apps = useMemo<IWorkflowApplication[]>(() => {\n return models\n .filter(model => {\n if (isAllowed(model) === false) {\n return false;\n }\n return canEdit(model, \"cms.contentModel\");\n })\n .map(model => {\n return {\n id: createAppName(model),\n name: model.name,\n icon: <ModelIcon model={model} />\n };\n });\n }, [models, canEdit]);\n\n const app = useMemo(() => {\n if (!route.params.app) {\n return apps.find(() => true);\n }\n return apps.find(a => a.id === route.params.app) || null;\n }, [route.params.app]);\n\n const onAppClick = useCallback(\n (id: string) => {\n goToRoute(Routes.ContentModels.Workflows, {\n app: id\n });\n },\n [apps]\n );\n\n if (!canCreateContentModels) {\n return null;\n } else if (loading) {\n return <Loader size=\"lg\" variant=\"accent\" indeterminate={true} text=\"Loading...\" />;\n }\n\n return <WorkflowsEditor apps={apps} onAppClick={onAppClick} app={app?.id} />;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Components/CmsWorkflows/CmsWorkflowsEditorView.js","sources":["../../../src/Components/CmsWorkflows/CmsWorkflowsEditorView.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { AdminConfig, useRoute, useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"~/routes.js\";\nimport type { IWorkflowApplication } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { Icon, Loader } from \"@webiny/admin-ui\";\nimport { useModels, usePermission } from \"@webiny/app-headless-cms/admin/hooks/index.js\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { normalizeIcon } from \"@webiny/app-headless-cms/utils/normalizeIcon.js\";\n\nconst {\n Admin: { WorkflowsEditor },\n Permissions: { HasWorkflowsEditorPermission }\n} = Components;\n\nconst { Menu } = AdminConfig;\n\nexport const CmsWorkflowsEditorMenu = () => {\n const router = useRouter();\n const { canCreateContentModels } = usePermission();\n\n if (!canCreateContentModels) {\n return null;\n }\n\n return (\n <HasWorkflowsEditorPermission>\n <Menu\n name={\"headlessCMS.contentModels.workflows\"}\n parent={\"headlessCMS\"}\n element={\n <Menu.Link\n pinnable={true}\n text={\"Workflows\"}\n to={router.getLink(Routes.ContentModels.Workflows)}\n />\n }\n />\n </HasWorkflowsEditorPermission>\n );\n};\n\ninterface IModelIconProps {\n model: Pick<CmsModel, \"icon\" | \"name\">;\n}\n\nconst ModelIcon = ({ model }: IModelIconProps) => {\n if (!model.icon) {\n return null;\n }\n\n const icon = normalizeIcon(model.icon);\n if (!icon) {\n return null;\n }\n\n return (\n <Icon\n icon={<FontAwesomeIcon icon={icon} />}\n label={model.name}\n size={\"sm\"}\n className={\"text-neutral-strong\"}\n />\n );\n};\n\nconst isAllowed = (model: Pick<CmsModel, \"modelId\" | \"tags\">) => {\n // Exclude models that have the \"$publishing:false\" tag\n if (model.tags.includes(\"$publishing:false\")) {\n return false;\n }\n // Exclude single entry models\n else if (model.tags.includes(\"singleEntry\")) {\n return false;\n }\n\n return true;\n};\n\nexport const CmsWorkflowsEditorView = () => {\n const { route } = useRoute(Routes.ContentModels.Workflows);\n const { models, loading } = useModels();\n const { canEdit, canCreateContentModels } = usePermission();\n const { goToRoute } = useRouter();\n\n const apps = useMemo<IWorkflowApplication[]>(() => {\n return models\n .filter(model => {\n if (isAllowed(model) === false) {\n return false;\n }\n return canEdit(model, \"cms.contentModel\");\n })\n .map(model => {\n return {\n id: createAppName(model),\n name: model.name,\n icon: <ModelIcon model={model} />\n };\n });\n }, [models, canEdit]);\n\n const app = useMemo(() => {\n if (!route.params.app) {\n return apps.find(() => true);\n }\n return apps.find(a => a.id === route.params.app) || null;\n }, [route.params.app]);\n\n const onAppClick = useCallback(\n (id: string) => {\n goToRoute(Routes.ContentModels.Workflows, {\n app: id\n });\n },\n [apps]\n );\n\n if (!canCreateContentModels) {\n return null;\n } else if (loading) {\n return <Loader size=\"lg\" variant=\"accent\" indeterminate={true} text=\"Loading...\" />;\n }\n\n return <WorkflowsEditor apps={apps} onAppClick={onAppClick} app={app?.id} />;\n};\n"],"names":["WorkflowsEditor","HasWorkflowsEditorPermission","Components","Menu","AdminConfig","CmsWorkflowsEditorMenu","router","useRouter","canCreateContentModels","usePermission","Routes","ModelIcon","model","icon","normalizeIcon","Icon","FontAwesomeIcon","isAllowed","CmsWorkflowsEditorView","route","useRoute","models","loading","useModels","canEdit","goToRoute","apps","useMemo","createAppName","app","a","onAppClick","useCallback","id","Loader"],"mappings":";;;;;;;;;AAYA,MAAM,EACF,OAAO,EAAEA,iBAAAA,eAAe,EAAE,EAC1B,aAAa,EAAEC,8BAAAA,4BAA4B,EAAE,EAChD,GAAGC;AAEJ,MAAM,EAAEC,MAAAA,IAAI,EAAE,GAAGC;AAEV,MAAMC,yBAAyB;IAClC,MAAMC,SAASC;IACf,MAAM,EAAEC,sBAAsB,EAAE,GAAGC;IAEnC,IAAI,CAACD,wBACD,OAAO;IAGX,OAAO,WAAP,GACI,oBAACP,8BAA4BA,MAAAA,WAAAA,GACzB,oBAACE,MAAIA;QACD,MAAM;QACN,QAAQ;QACR,uBACI,oBAACA,KAAK,IAAI;YACN,UAAU;YACV,MAAM;YACN,IAAIG,OAAO,OAAO,CAACI,OAAO,aAAa,CAAC,SAAS;;;AAMzE;AAMA,MAAMC,YAAY,CAAC,EAAEC,KAAK,EAAmB;IACzC,IAAI,CAACA,MAAM,IAAI,EACX,OAAO;IAGX,MAAMC,OAAOC,cAAcF,MAAM,IAAI;IACrC,IAAI,CAACC,MACD,OAAO;IAGX,OAAO,WAAP,GACI,oBAACE,MAAIA;QACD,oBAAM,oBAACC,iBAAeA;YAAC,MAAMH;;QAC7B,OAAOD,MAAM,IAAI;QACjB,MAAM;QACN,WAAW;;AAGvB;AAEA,MAAMK,YAAY,CAACL;IAEf,IAAIA,MAAM,IAAI,CAAC,QAAQ,CAAC,sBACpB,OAAO;IAGN,IAAIA,MAAM,IAAI,CAAC,QAAQ,CAAC,gBACzB,OAAO;IAGX,OAAO;AACX;AAEO,MAAMM,yBAAyB;IAClC,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASV,OAAO,aAAa,CAAC,SAAS;IACzD,MAAM,EAAEW,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAC5B,MAAM,EAAEC,OAAO,EAAEhB,sBAAsB,EAAE,GAAGC;IAC5C,MAAM,EAAEgB,SAAS,EAAE,GAAGlB;IAEtB,MAAMmB,OAAOC,QAAgC,IAClCN,OACF,MAAM,CAACT,CAAAA;YACJ,IAAIK,AAAqB,UAArBA,UAAUL,QACV,OAAO;YAEX,OAAOY,QAAQZ,OAAO;QAC1B,GACC,GAAG,CAACA,CAAAA,QACM;gBACH,IAAIgB,cAAchB;gBAClB,MAAMA,MAAM,IAAI;gBAChB,MAAM,WAAN,GAAM,oBAACD,WAASA;oBAAC,OAAOC;;YAC5B,KAET;QAACS;QAAQG;KAAQ;IAEpB,MAAMK,MAAMF,QAAQ;QAChB,IAAI,CAACR,MAAM,MAAM,CAAC,GAAG,EACjB,OAAOO,KAAK,IAAI,CAAC,IAAM;QAE3B,OAAOA,KAAK,IAAI,CAACI,CAAAA,IAAKA,EAAE,EAAE,KAAKX,MAAM,MAAM,CAAC,GAAG,KAAK;IACxD,GAAG;QAACA,MAAM,MAAM,CAAC,GAAG;KAAC;IAErB,MAAMY,aAAaC,YACf,CAACC;QACGR,UAAUf,OAAO,aAAa,CAAC,SAAS,EAAE;YACtC,KAAKuB;QACT;IACJ,GACA;QAACP;KAAK;IAGV,IAAI,CAAClB,wBACD,OAAO;IACJ,IAAIc,SACP,OAAO,WAAP,GAAO,oBAACY,QAAMA;QAAC,MAAK;QAAK,SAAQ;QAAS,eAAe;QAAM,MAAK;;IAGxE,OAAO,WAAP,GAAO,oBAAClC,iBAAeA;QAAC,MAAM0B;QAAM,YAAYK;QAAY,KAAKF,KAAK;;AAC1E"}
@@ -1,69 +1,55 @@
1
- import React, { useCallback } from "react";
1
+ import react, { useCallback } from "react";
2
2
  import { useRoute } from "@webiny/app";
3
3
  import { useToast } from "@webiny/admin-ui";
4
4
  import { ContentEntryEditorConfig, usePermission } from "@webiny/app-headless-cms";
5
5
  import { useContentEntryForm } from "@webiny/app-headless-cms/admin/components/ContentEntryForm/useContentEntryForm.js";
6
6
  import { usePersistEntry } from "@webiny/app-headless-cms/admin/hooks/usePersistEntry.js";
7
- import { ReactComponent as NewReleaseIcon } from "@webiny/icons/new_releases.svg";
7
+ import { ReactComponent } from "@webiny/icons/new_releases.svg";
8
8
  import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
9
- const {
10
- Actions
11
- } = ContentEntryEditorConfig;
12
- const CreateNewRevisionMenuItem = () => {
13
- const toast = useToast();
14
- const {
15
- setRouteParams
16
- } = useRoute();
17
- const {
18
- canEdit
19
- } = usePermission();
20
- const {
21
- OptionsMenuItem
22
- } = Actions.MenuItemAction.useOptionsMenuItem();
23
- const {
24
- entry
25
- } = useContentEntryForm();
26
- const {
27
- persistEntry
28
- } = usePersistEntry({
29
- addItemToListCache: true
30
- });
31
- const onClick = useCallback(async () => {
32
- const newRevision = await persistEntry({
33
- id: entry.id
34
- }, {
35
- skipValidators: ["required"],
36
- createNewRevision: true
9
+ const { Actions: Actions } = ContentEntryEditorConfig;
10
+ const CreateNewRevisionMenuItem = ()=>{
11
+ const toast = useToast();
12
+ const { setRouteParams } = useRoute();
13
+ const { canEdit } = usePermission();
14
+ const { OptionsMenuItem } = Actions.MenuItemAction.useOptionsMenuItem();
15
+ const { entry } = useContentEntryForm();
16
+ const { persistEntry } = usePersistEntry({
17
+ addItemToListCache: true
37
18
  });
38
- if (newRevision.error) {
39
- toast.showWarningToast({
40
- title: "Could not create a new revision.",
41
- description: newRevision.error.message
42
- });
43
- return;
44
- }
45
- setRouteParams(params => {
46
- return {
47
- ...params,
48
- id: newRevision.entry.id
49
- };
19
+ const onClick = useCallback(async ()=>{
20
+ const newRevision = await persistEntry({
21
+ id: entry.id
22
+ }, {
23
+ skipValidators: [
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
31
+ });
32
+ setRouteParams((params)=>({
33
+ ...params,
34
+ id: newRevision.entry.id
35
+ }));
36
+ }, [
37
+ entry,
38
+ persistEntry
39
+ ]);
40
+ if (!canEdit(entry, "cms.contentEntry")) return null;
41
+ return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
42
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
43
+ disabled: !entry.id,
44
+ label: "Create New Revision",
45
+ onAction: onClick,
46
+ "data-testid": "cms.content-form.header.createNewRevision"
50
47
  });
51
- }, [entry, persistEntry]);
52
- if (!canEdit(entry, "cms.contentEntry")) {
53
- return null;
54
- }
55
- return /*#__PURE__*/React.createElement(OptionsMenuItem, {
56
- icon: /*#__PURE__*/React.createElement(NewReleaseIcon, null),
57
- label: `Create New Revision`,
58
- onAction: onClick,
59
- "data-testid": "cms.content-form.header.createNewRevision"
60
- });
61
- };
62
- export const CmsEntryFormCreateNewRevisionButton = () => {
63
- return /*#__PURE__*/React.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/React.createElement(IsModelPublishable, null, /*#__PURE__*/React.createElement(Actions.MenuItemAction, {
64
- name: "createNewRevision",
65
- element: /*#__PURE__*/React.createElement(CreateNewRevisionMenuItem, null)
66
- })));
67
48
  };
49
+ const CmsEntryFormCreateNewRevisionButton = ()=>/*#__PURE__*/ react.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(Actions.MenuItemAction, {
50
+ name: "createNewRevision",
51
+ element: /*#__PURE__*/ react.createElement(CreateNewRevisionMenuItem, null)
52
+ })));
53
+ export { CmsEntryFormCreateNewRevisionButton };
68
54
 
69
55
  //# sourceMappingURL=CmsEntryFormCreateNewRevisionButton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useRoute","useToast","ContentEntryEditorConfig","usePermission","useContentEntryForm","usePersistEntry","ReactComponent","NewReleaseIcon","IsModelPublishable","Actions","CreateNewRevisionMenuItem","toast","setRouteParams","canEdit","OptionsMenuItem","MenuItemAction","useOptionsMenuItem","entry","persistEntry","addItemToListCache","onClick","newRevision","id","skipValidators","createNewRevision","error","showWarningToast","title","description","message","params","createElement","icon","label","onAction","CmsEntryFormCreateNewRevisionButton","name","element"],"sources":["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 { useContentEntryForm } from \"@webiny/app-headless-cms/admin/components/ContentEntryForm/useContentEntryForm.js\";\nimport { usePersistEntry } from \"@webiny/app-headless-cms/admin/hooks/usePersistEntry.js\";\nimport { ReactComponent as NewReleaseIcon } from \"@webiny/icons/new_releases.svg\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\n\nconst { Actions } = ContentEntryEditorConfig;\n\nconst CreateNewRevisionMenuItem = () => {\n const toast = useToast();\n const { setRouteParams } = useRoute();\n const { canEdit } = usePermission();\n const { OptionsMenuItem } = Actions.MenuItemAction.useOptionsMenuItem();\n const { entry } = useContentEntryForm();\n const { persistEntry } = usePersistEntry({\n addItemToListCache: true\n });\n\n const onClick = useCallback(async () => {\n const newRevision = await persistEntry(\n {\n id: entry.id\n },\n {\n skipValidators: [\"required\"],\n createNewRevision: true\n }\n );\n\n if (newRevision.error) {\n toast.showWarningToast({\n title: \"Could not create a new revision.\",\n description: newRevision.error.message\n });\n return;\n }\n\n setRouteParams(params => {\n return { ...params, id: newRevision.entry.id };\n });\n }, [entry, persistEntry]);\n\n if (!canEdit(entry, \"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <OptionsMenuItem\n icon={<NewReleaseIcon />}\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"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,0BAA0B;AAClF,SAASC,mBAAmB,QAAQ,mFAAmF;AACvH,SAASC,eAAe,QAAQ,yDAAyD;AACzF,SAASC,cAAc,IAAIC,cAAc,QAAQ,gCAAgC;AACjF,SAASC,kBAAkB,QAAQ,+CAA+C;AAElF,MAAM;EAAEC;AAAQ,CAAC,GAAGP,wBAAwB;AAE5C,MAAMQ,yBAAyB,GAAGA,CAAA,KAAM;EACpC,MAAMC,KAAK,GAAGV,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEW;EAAe,CAAC,GAAGZ,QAAQ,CAAC,CAAC;EACrC,MAAM;IAAEa;EAAQ,CAAC,GAAGV,aAAa,CAAC,CAAC;EACnC,MAAM;IAAEW;EAAgB,CAAC,GAAGL,OAAO,CAACM,cAAc,CAACC,kBAAkB,CAAC,CAAC;EACvE,MAAM;IAAEC;EAAM,CAAC,GAAGb,mBAAmB,CAAC,CAAC;EACvC,MAAM;IAAEc;EAAa,CAAC,GAAGb,eAAe,CAAC;IACrCc,kBAAkB,EAAE;EACxB,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAGrB,WAAW,CAAC,YAAY;IACpC,MAAMsB,WAAW,GAAG,MAAMH,YAAY,CAClC;MACII,EAAE,EAAEL,KAAK,CAACK;IACd,CAAC,EACD;MACIC,cAAc,EAAE,CAAC,UAAU,CAAC;MAC5BC,iBAAiB,EAAE;IACvB,CACJ,CAAC;IAED,IAAIH,WAAW,CAACI,KAAK,EAAE;MACnBd,KAAK,CAACe,gBAAgB,CAAC;QACnBC,KAAK,EAAE,kCAAkC;QACzCC,WAAW,EAAEP,WAAW,CAACI,KAAK,CAACI;MACnC,CAAC,CAAC;MACF;IACJ;IAEAjB,cAAc,CAACkB,MAAM,IAAI;MACrB,OAAO;QAAE,GAAGA,MAAM;QAAER,EAAE,EAAED,WAAW,CAACJ,KAAK,CAACK;MAAG,CAAC;IAClD,CAAC,CAAC;EACN,CAAC,EAAE,CAACL,KAAK,EAAEC,YAAY,CAAC,CAAC;EAEzB,IAAI,CAACL,OAAO,CAACI,KAAK,EAAE,kBAAkB,CAAC,EAAE;IACrC,OAAO,IAAI;EACf;EAEA,oBACInB,KAAA,CAAAiC,aAAA,CAACjB,eAAe;IACZkB,IAAI,eAAElC,KAAA,CAAAiC,aAAA,CAACxB,cAAc,MAAE,CAAE;IACzB0B,KAAK,EAAE,qBAAsB;IAC7BC,QAAQ,EAAEd,OAAQ;IAClB,eAAa;EAA4C,CAC5D,CAAC;AAEV,CAAC;AAED,OAAO,MAAMe,mCAAmC,GAAGA,CAAA,KAAM;EACrD,oBACIrC,KAAA,CAAAiC,aAAA,CAAC7B,wBAAwB,qBACrBJ,KAAA,CAAAiC,aAAA,CAACvB,kBAAkB,qBACfV,KAAA,CAAAiC,aAAA,CAACtB,OAAO,CAACM,cAAc;IACnBqB,IAAI,EAAE,mBAAoB;IAC1BC,OAAO,eAAEvC,KAAA,CAAAiC,aAAA,CAACrB,yBAAyB,MAAE;EAAE,CAC1C,CACe,CACE,CAAC;AAEnC,CAAC","ignoreList":[]}
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 { useContentEntryForm } from \"@webiny/app-headless-cms/admin/components/ContentEntryForm/useContentEntryForm.js\";\nimport { usePersistEntry } from \"@webiny/app-headless-cms/admin/hooks/usePersistEntry.js\";\nimport { ReactComponent as NewReleaseIcon } from \"@webiny/icons/new_releases.svg\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\n\nconst { Actions } = ContentEntryEditorConfig;\n\nconst CreateNewRevisionMenuItem = () => {\n const toast = useToast();\n const { setRouteParams } = useRoute();\n const { canEdit } = usePermission();\n const { OptionsMenuItem } = Actions.MenuItemAction.useOptionsMenuItem();\n const { entry } = useContentEntryForm();\n const { persistEntry } = usePersistEntry({\n addItemToListCache: true\n });\n\n const onClick = useCallback(async () => {\n const newRevision = await persistEntry(\n {\n id: entry.id\n },\n {\n skipValidators: [\"required\"],\n createNewRevision: true\n }\n );\n\n if (newRevision.error) {\n toast.showWarningToast({\n title: \"Could not create a new revision.\",\n description: newRevision.error.message\n });\n return;\n }\n\n setRouteParams(params => {\n return { ...params, id: newRevision.entry.id };\n });\n }, [entry, persistEntry]);\n\n if (!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","OptionsMenuItem","entry","useContentEntryForm","persistEntry","usePersistEntry","onClick","useCallback","newRevision","params","NewReleaseIcon","CmsEntryFormCreateNewRevisionButton","IsModelPublishable"],"mappings":";;;;;;;;AASA,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,MAAM,EAAEC,eAAe,EAAE,GAAGT,QAAQ,cAAc,CAAC,kBAAkB;IACrE,MAAM,EAAEU,KAAK,EAAE,GAAGC;IAClB,MAAM,EAAEC,YAAY,EAAE,GAAGC,gBAAgB;QACrC,oBAAoB;IACxB;IAEA,MAAMC,UAAUC,YAAY;QACxB,MAAMC,cAAc,MAAMJ,aACtB;YACI,IAAIF,MAAM,EAAE;QAChB,GACA;YACI,gBAAgB;gBAAC;aAAW;YAC5B,mBAAmB;QACvB;QAGJ,IAAIM,YAAY,KAAK,EAAE,YACnBb,MAAM,gBAAgB,CAAC;YACnB,OAAO;YACP,aAAaa,YAAY,KAAK,CAAC,OAAO;QAC1C;QAIJX,eAAeY,CAAAA,SACJ;gBAAE,GAAGA,MAAM;gBAAE,IAAID,YAAY,KAAK,CAAC,EAAE;YAAC;IAErD,GAAG;QAACN;QAAOE;KAAa;IAExB,IAAI,CAACL,QAAQG,OAAO,qBAChB,OAAO;IAGX,OAAO,WAAP,GACI,oBAACD,iBAAAA;QACG,oBAAM,oBAACS,gBAAcA;QACrB,UAAU,CAACR,MAAM,EAAE;QACnB,OAAO;QACP,UAAUI;QACV,eAAa;;AAGzB;AAEO,MAAMK,sCAAsC,IACxC,WAAP,GACI,oBAAClB,0BAAwBA,MAAAA,WAAAA,GACrB,oBAACmB,oBAAkBA,MAAAA,WAAAA,GACf,oBAACpB,QAAQ,cAAc;QACnB,MAAM;QACN,uBAAS,oBAACE,2BAAyBA"}
@@ -1,38 +1,26 @@
1
1
  import { useContentEntry, usePermission } from "@webiny/app-headless-cms";
2
2
  import { ContentEntryEditorConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
3
- import React, { useCallback } from "react";
4
- export const CmsEntryFormPublishButton = () => {
5
- const {
6
- loading,
7
- entry,
8
- publishEntryRevision
9
- } = useContentEntry();
10
- const {
11
- ButtonPrimary
12
- } = ContentEntryEditorConfig.Actions.ButtonAction.useButtons();
13
- const publish = useCallback(() => {
14
- if (!entry.id) {
15
- console.warn(`You cannot publish an entry that hasn't been saved yet.`);
16
- return;
17
- }
18
- publishEntryRevision({
19
- id: entry.id
20
- });
21
- }, [entry.id]);
22
- const {
23
- canEdit,
24
- canPublish
25
- } = usePermission();
26
- if (entry.meta.status === "published") {
27
- return null;
28
- } else if (!canEdit(entry, "cms.contentEntry") || !canPublish("cms.contentEntry")) {
29
- return null;
30
- }
31
- return /*#__PURE__*/React.createElement(ButtonPrimary, {
32
- onAction: publish,
33
- disabled: loading,
34
- "data-testid": "workflows-cms-content-publish-content-button"
35
- }, "Publish");
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");
36
23
  };
24
+ export { CmsEntryFormPublishButton };
37
25
 
38
26
  //# sourceMappingURL=CmsEntryFormPublishButton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useContentEntry","usePermission","ContentEntryEditorConfig","React","useCallback","CmsEntryFormPublishButton","loading","entry","publishEntryRevision","ButtonPrimary","Actions","ButtonAction","useButtons","publish","id","console","warn","canEdit","canPublish","meta","status","createElement","onAction","disabled"],"sources":["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"],"mappings":"AAAA,SAASA,eAAe,EAAEC,aAAa,QAAQ,0BAA0B;AACzE,SAASC,wBAAwB,QAAQ,+DAA+D;AACxG,OAAOC,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAE1C,OAAO,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAqB,CAAC,GAAGR,eAAe,CAAC,CAAC;EAClE,MAAM;IAAES;EAAc,CAAC,GAAGP,wBAAwB,CAACQ,OAAO,CAACC,YAAY,CAACC,UAAU,CAAC,CAAC;EAEpF,MAAMC,OAAO,GAAGT,WAAW,CAAC,MAAM;IAC9B,IAAI,CAACG,KAAK,CAACO,EAAE,EAAE;MACXC,OAAO,CAACC,IAAI,CAAC,yDAAyD,CAAC;MACvE;IACJ;IACAR,oBAAoB,CAAC;MAAEM,EAAE,EAAEP,KAAK,CAACO;IAAG,CAAC,CAAC;EAC1C,CAAC,EAAE,CAACP,KAAK,CAACO,EAAE,CAAC,CAAC;EAEd,MAAM;IAAEG,OAAO;IAAEC;EAAW,CAAC,GAAGjB,aAAa,CAAC,CAAC;EAE/C,IAAIM,KAAK,CAACY,IAAI,CAACC,MAAM,KAAK,WAAW,EAAE;IACnC,OAAO,IAAI;EACf,CAAC,MAAM,IAAI,CAACH,OAAO,CAACV,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAACW,UAAU,CAAC,kBAAkB,CAAC,EAAE;IAC/E,OAAO,IAAI;EACf;EAEA,oBACIf,KAAA,CAAAkB,aAAA,CAACZ,aAAa;IACVa,QAAQ,EAAET,OAAQ;IAClBU,QAAQ,EAAEjB,OAAQ;IAClB,eAAY;EAA8C,GAEzD,SACU,CAAC;AAExB,CAAC","ignoreList":[]}
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"}