@webiny/app-headless-cms-workflows 0.0.0-unstable.ac6ebf63c6 → 0.0.0-unstable.b6d7105cee

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 (79) hide show
  1. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +28 -39
  2. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +1 -1
  3. package/Components/CmsEntriesWorkflowStateList/index.js +0 -2
  4. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js +41 -63
  5. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +1 -1
  6. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +17 -33
  7. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +1 -1
  8. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js +10 -17
  9. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js.map +1 -1
  10. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +21 -70
  11. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +1 -1
  12. package/Components/ContentEntryForm/index.d.ts +0 -3
  13. package/Components/ContentEntryForm/index.js +0 -5
  14. package/Components/OptionItem/OpenInNewWindow.js +28 -36
  15. package/Components/OptionItem/OpenInNewWindow.js.map +1 -1
  16. package/Routes/CmsWorkflowsEditor.js +18 -27
  17. package/Routes/CmsWorkflowsEditor.js.map +1 -1
  18. package/Routes/index.js +0 -2
  19. package/features/WorkflowStateCacheHandler.d.ts +11 -0
  20. package/features/WorkflowStateCacheHandler.js +50 -0
  21. package/features/WorkflowStateCacheHandler.js.map +1 -0
  22. package/features/feature.d.ts +1 -0
  23. package/features/feature.js +11 -0
  24. package/features/feature.js.map +1 -0
  25. package/index.js +14 -6
  26. package/index.js.map +1 -1
  27. package/package.json +27 -20
  28. package/presentation/CmsWorkflowsEditorView.d.ts +5 -0
  29. package/presentation/CmsWorkflowsEditorView.js +90 -0
  30. package/presentation/CmsWorkflowsEditorView.js.map +1 -0
  31. package/presentation/ContentEntryFormPresenterWorkflowDecorator.d.ts +24 -0
  32. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js +67 -0
  33. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js.map +1 -0
  34. package/presentation/TableRowMapperWorkflowDecorator.d.ts +11 -0
  35. package/presentation/TableRowMapperWorkflowDecorator.js +25 -0
  36. package/presentation/TableRowMapperWorkflowDecorator.js.map +1 -0
  37. package/presentation/WorkflowStateGetEntryFieldSelection.d.ts +8 -0
  38. package/presentation/WorkflowStateGetEntryFieldSelection.js +24 -0
  39. package/presentation/WorkflowStateGetEntryFieldSelection.js.map +1 -0
  40. package/presentation/WorkflowStateListEntriesFieldSelection.d.ts +8 -0
  41. package/presentation/WorkflowStateListEntriesFieldSelection.js +24 -0
  42. package/presentation/WorkflowStateListEntriesFieldSelection.js.map +1 -0
  43. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.d.ts +15 -0
  44. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js +50 -0
  45. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js.map +1 -0
  46. package/presentation/cmsWorkflowsEditor/abstractions.d.ts +19 -0
  47. package/presentation/cmsWorkflowsEditor/abstractions.js +5 -0
  48. package/presentation/cmsWorkflowsEditor/abstractions.js.map +1 -0
  49. package/presentation/cmsWorkflowsEditor/feature.d.ts +3 -0
  50. package/presentation/cmsWorkflowsEditor/feature.js +17 -0
  51. package/presentation/cmsWorkflowsEditor/feature.js.map +1 -0
  52. package/presentation/feature.d.ts +1 -0
  53. package/presentation/feature.js +21 -0
  54. package/presentation/feature.js.map +1 -0
  55. package/routes.d.ts +1 -1
  56. package/routes.js +17 -18
  57. package/routes.js.map +1 -1
  58. package/types.d.ts +10 -0
  59. package/types.js +0 -0
  60. package/utils/appName.js +9 -12
  61. package/utils/appName.js.map +1 -1
  62. package/Components/CmsEntriesWorkflowStateList/index.js.map +0 -1
  63. package/Components/CmsWorkflows/CmsWorkflowsEditorView.d.ts +0 -3
  64. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js +0 -128
  65. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js.map +0 -1
  66. package/Components/ContentEntryForm/CmsEntryFormPublishButton.d.ts +0 -2
  67. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js +0 -38
  68. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js.map +0 -1
  69. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.d.ts +0 -2
  70. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js +0 -39
  71. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js.map +0 -1
  72. package/Components/ContentEntryForm/CmsEntryFormSaveButton.d.ts +0 -2
  73. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js +0 -37
  74. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js.map +0 -1
  75. package/Components/ContentEntryForm/ContentEntryWorkflow.d.ts +0 -2
  76. package/Components/ContentEntryForm/ContentEntryWorkflow.js +0 -35
  77. package/Components/ContentEntryForm/ContentEntryWorkflow.js.map +0 -1
  78. package/Components/ContentEntryForm/index.js.map +0 -1
  79. package/Routes/index.js.map +0 -1
@@ -1,45 +1,34 @@
1
- import React from "react";
2
- import { Components } from "@webiny/app-headless-cms";
1
+ import react from "react";
3
2
  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";
6
- import { useContentEntries } from "@webiny/app-headless-cms/admin/views/contentEntries/hooks/index.js";
3
+ import { ReactComponent } from "@webiny/icons/flowchart.svg";
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
- 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();
9
+ const { Overlay: { WorkflowStateListAppOverlay: WorkflowStateListAppOverlay } } = Components;
10
+ const { Browser: Browser } = ContentEntryListConfig;
11
+ const ContentReviewsMenuItem = ()=>{
12
+ const presenter = useContentEntriesPresenter();
13
+ const model = presenter.vm.model;
24
14
  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: "Workflow States",
36
- icon: /*#__PURE__*/React.createElement(Sidebar.Item.Icon, {
37
- element: /*#__PURE__*/React.createElement(WorkflowStateListIcon, null),
38
- label: "Workflow States"
39
- })
40
- }));
41
- })));
42
- };
43
- });
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 };
44
33
 
45
34
  //# 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={\"Workflow States\"}\n icon={\n <Sidebar.Item.Icon\n element={<WorkflowStateListIcon />}\n label={\"Workflow States\"}\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 { 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,3 +1 @@
1
1
  export { CmsEntriesWorkflowStateListFooterMenu } from "./CmsEntriesWorkflowStateListFooterMenu.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1,69 +1,47 @@
1
- import React, { useCallback } from "react";
2
- import { useRoute } from "@webiny/app";
1
+ import react, { useCallback } from "react";
2
+ import { useFeature, useRoute } from "@webiny/app";
3
3
  import { useToast } from "@webiny/admin-ui";
4
- import { ContentEntryEditorConfig, usePermission } from "@webiny/app-headless-cms";
5
- import { useContentEntryForm } from "@webiny/app-headless-cms/admin/components/ContentEntryForm/useContentEntryForm.js";
6
- import { usePersistEntry } from "@webiny/app-headless-cms/admin/hooks/usePersistEntry.js";
7
- import { ReactComponent as NewReleaseIcon } from "@webiny/icons/new_releases.svg";
4
+ import { InternalContentEntryEditorConfig, usePermission } from "@webiny/app-headless-cms";
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
+ 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
+ import { OptionsMenuItem } from "@webiny/app-admin";
10
+ const { Actions: Actions } = InternalContentEntryEditorConfig;
11
+ const CreateNewRevisionMenuItem = ()=>{
12
+ const toast = useToast();
13
+ const { setRouteParams } = useRoute();
14
+ const { canEdit } = usePermission();
15
+ const formPresenter = useContentEntryFormPresenter();
16
+ const { presenter: revisionsPresenter } = useFeature(RevisionsListFeature);
17
+ const entry = formPresenter.vm.entry;
18
+ const onClick = useCallback(async ()=>{
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."
23
+ });
24
+ setRouteParams((params)=>({
25
+ ...params,
26
+ id: newEntry.id
27
+ }));
28
+ }, [
29
+ entry,
30
+ revisionsPresenter
31
+ ]);
32
+ if (!entry || !canEdit(entry, "cms.contentEntry")) return null;
33
+ return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
34
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
35
+ disabled: !entry.id,
36
+ label: "Create New Revision",
37
+ onAction: onClick,
38
+ "data-testid": "cms.content-form.header.createNewRevision"
37
39
  });
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
- };
50
- });
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
40
  };
41
+ const CmsEntryFormCreateNewRevisionButton = ()=>/*#__PURE__*/ react.createElement(InternalContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(Actions.MenuItemAction, {
42
+ name: "createNewRevision",
43
+ element: /*#__PURE__*/ react.createElement(CreateNewRevisionMenuItem, null)
44
+ })));
45
+ export { CmsEntryFormCreateNewRevisionButton };
68
46
 
69
47
  //# 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 { useFeature } from \"@webiny/app\";\nimport { useRoute } from \"@webiny/app\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { InternalContentEntryEditorConfig, 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 } = InternalContentEntryEditorConfig;\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 <InternalContentEntryEditorConfig>\n <IsModelPublishable>\n <Actions.MenuItemAction\n name={\"createNewRevision\"}\n element={<CreateNewRevisionMenuItem />}\n />\n </IsModelPublishable>\n </InternalContentEntryEditorConfig>\n );\n};\n"],"names":["Actions","InternalContentEntryEditorConfig","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,kCAAgCA,MAAAA,WAAAA,GAC7B,oBAACqB,oBAAkBA,MAAAA,WAAAA,GACf,oBAACtB,QAAQ,cAAc;QACnB,MAAM;QACN,uBAAS,oBAACE,2BAAyBA"}
@@ -1,38 +1,22 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
- import { useWorkflowState, WorkflowStateValue } from "@webiny/app-workflows";
4
- const {
5
- Actions
6
- } = ContentEntryEditorConfig;
7
- const {
8
- MenuItemAction
9
- } = Actions;
10
- const OverrideScheduleMenuItemAction = props => {
11
- const {
12
- presenter
13
- } = useWorkflowState();
14
- /**
15
- * If there is no workflow state or state is approved, we simply render the original element.
16
- * This is to ensure that no button will be shown if workflow state is active.
17
- */
18
- if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {
3
+ import { useWorkflowState } from "@webiny/app-workflows";
4
+ const { Actions: Actions } = ContentEntryEditorConfig;
5
+ const { MenuItemAction: MenuItemAction } = Actions;
6
+ const OverrideScheduleMenuItemAction = (props)=>{
7
+ const { presenter } = useWorkflowState();
8
+ if (!presenter.vm.hasWorkflow || presenter.vm.isApproved) ;
9
+ else if ("schedule" === props.name) return null;
19
10
  return props.children;
20
- } else if (props.name === "schedule") {
21
- return null;
22
- }
23
- return props.children;
24
11
  };
25
- /**
26
- * There is a possibility that this decorator will not do anything, because scheduler is not turned on.
27
- */
28
- export const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator(Original => {
29
- return function WorkflowCmsEntryScheduleMenuItemAction(props) {
30
- return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
31
- element: /*#__PURE__*/React.createElement(OverrideScheduleMenuItemAction, {
32
- name: props.name
33
- }, props.element)
34
- }));
35
- };
36
- });
12
+ const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator((Original)=>function(props) {
13
+ return /*#__PURE__*/ react.createElement(Original, {
14
+ ...props,
15
+ element: /*#__PURE__*/ react.createElement(OverrideScheduleMenuItemAction, {
16
+ name: props.name
17
+ }, props.element)
18
+ });
19
+ });
20
+ export { CmsEntryFormScheduleMenuItemAction };
37
21
 
38
22
  //# sourceMappingURL=CmsEntryFormScheduleMenuItemAction.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ContentEntryEditorConfig","useWorkflowState","WorkflowStateValue","Actions","MenuItemAction","OverrideScheduleMenuItemAction","props","presenter","vm","workflow","state","approved","children","name","CmsEntryFormScheduleMenuItemAction","createDecorator","Original","WorkflowCmsEntryScheduleMenuItemAction","createElement","Object","assign","element"],"sources":["CmsEntryFormScheduleMenuItemAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState, WorkflowStateValue } 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.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {\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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,wBAAwB,QAAQ,0BAA0B;AACnE,SAASC,gBAAgB,EAAEC,kBAAkB,QAAQ,uBAAuB;AAE5E,MAAM;EAAEC;AAAQ,CAAC,GAAGH,wBAAwB;AAC5C,MAAM;EAAEI;AAAe,CAAC,GAAGD,OAAO;AAOlC,MAAME,8BAA8B,GAAIC,KAA2C,IAAK;EACpF,MAAM;IAAEC;EAAU,CAAC,GAAGN,gBAAgB,CAAC,CAAC;EACxC;AACJ;AACA;AACA;EACI,IAAI,CAACM,SAAS,CAACC,EAAE,CAACC,QAAQ,IAAIF,SAAS,CAACC,EAAE,CAACE,KAAK,EAAEA,KAAK,KAAKR,kBAAkB,CAACS,QAAQ,EAAE;IACrF,OAAOL,KAAK,CAACM,QAAQ;EACzB,CAAC,MAAM,IAAIN,KAAK,CAACO,IAAI,KAAK,UAAU,EAAE;IAClC,OAAO,IAAI;EACf;EACA,OAAOP,KAAK,CAACM,QAAQ;AACzB,CAAC;AACD;AACA;AACA;AACA,OAAO,MAAME,kCAAkC,GAAGV,cAAc,CAACW,eAAe,CAACC,QAAQ,IAAI;EACzF,OAAO,SAASC,sCAAsCA,CAACX,KAAK,EAAE;IAC1D,oBACIP,KAAA,CAAAmB,aAAA,CAACF,QAAQ,EAAAG,MAAA,CAAAC,MAAA,KACDd,KAAK;MACTe,OAAO,eACHtB,KAAA,CAAAmB,aAAA,CAACb,8BAA8B;QAACQ,IAAI,EAAEP,KAAK,CAACO;MAAK,GAC5CP,KAAK,CAACe,OACqB;IACnC,EACJ,CAAC;EAEV,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
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,20 +1,13 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { Components } from "@webiny/app-workflows";
3
- import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
4
- const {
5
- ContentReview: {
6
- WorkflowStateTooltip
7
- }
8
- } = Components;
9
- const {
10
- Actions
11
- } = ContentEntryEditorConfig;
12
- export const CmsEntryFormTooltipButton = () => {
13
- return /*#__PURE__*/React.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/React.createElement(Actions.ButtonAction, {
14
- before: "save",
15
- name: "workflowStateTooltip",
16
- element: /*#__PURE__*/React.createElement(WorkflowStateTooltip, null)
17
- }));
18
- };
3
+ import { InternalContentEntryEditorConfig } from "@webiny/app-headless-cms";
4
+ const { ContentReview: { WorkflowStateTooltip: WorkflowStateTooltip } } = Components;
5
+ const { Actions: Actions } = InternalContentEntryEditorConfig;
6
+ const CmsEntryFormTooltipButton = ()=>/*#__PURE__*/ react.createElement(InternalContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(Actions.ButtonAction, {
7
+ before: "save",
8
+ name: "workflowStateTooltip",
9
+ element: /*#__PURE__*/ react.createElement(WorkflowStateTooltip, null)
10
+ }));
11
+ export { CmsEntryFormTooltipButton };
19
12
 
20
13
  //# sourceMappingURL=CmsEntryFormTooltipButton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Components","ContentEntryEditorConfig","ContentReview","WorkflowStateTooltip","Actions","CmsEntryFormTooltipButton","createElement","ButtonAction","before","name","element"],"sources":["CmsEntryFormTooltipButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Actions } = ContentEntryEditorConfig;\n\nexport const CmsEntryFormTooltipButton = () => {\n return (\n <ContentEntryEditorConfig>\n <Actions.ButtonAction\n before={\"save\"}\n name={\"workflowStateTooltip\"}\n element={<WorkflowStateTooltip />}\n />\n </ContentEntryEditorConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,wBAAwB,QAAQ,0BAA0B;AAEnE,MAAM;EACFC,aAAa,EAAE;IAAEC;EAAqB;AAC1C,CAAC,GAAGH,UAAU;AAEd,MAAM;EAAEI;AAAQ,CAAC,GAAGH,wBAAwB;AAE5C,OAAO,MAAMI,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,oBACIN,KAAA,CAAAO,aAAA,CAACL,wBAAwB,qBACrBF,KAAA,CAAAO,aAAA,CAACF,OAAO,CAACG,YAAY;IACjBC,MAAM,EAAE,MAAO;IACfC,IAAI,EAAE,sBAAuB;IAC7BC,OAAO,eAAEX,KAAA,CAAAO,aAAA,CAACH,oBAAoB,MAAE;EAAE,CACrC,CACqB,CAAC;AAEnC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormTooltipButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormTooltipButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { InternalContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Actions } = InternalContentEntryEditorConfig;\n\nexport const CmsEntryFormTooltipButton = () => {\n return (\n <InternalContentEntryEditorConfig>\n <Actions.ButtonAction\n before={\"save\"}\n name={\"workflowStateTooltip\"}\n element={<WorkflowStateTooltip />}\n />\n </InternalContentEntryEditorConfig>\n );\n};\n"],"names":["WorkflowStateTooltip","Components","Actions","InternalContentEntryEditorConfig","CmsEntryFormTooltipButton"],"mappings":";;;AAIA,MAAM,EACF,eAAe,EAAEA,sBAAAA,oBAAoB,EAAE,EAC1C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,4BAA4B,IAC9B,WAAP,GACI,oBAACD,kCAAgCA,MAAAA,WAAAA,GAC7B,oBAACD,QAAQ,YAAY;QACjB,QAAQ;QACR,MAAM;QACN,uBAAS,oBAACF,sBAAoBA"}
@@ -1,73 +1,24 @@
1
- import React from "react";
2
- import { ContentEntryForm, useModel } from "@webiny/app-headless-cms";
3
- import { Components } from "@webiny/app-workflows";
4
- import { Alert, Grid } from "@webiny/admin-ui";
1
+ import react from "react";
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 {
7
- ContentReview: {
8
- WorkflowStateBar,
9
- WorkflowStateOverlay
10
- }
11
- } = Components;
12
-
13
- /**
14
- * To override storing of the entry when in workflow state.
15
- */
16
- // @ts-expect-error
17
- const emptyFunction = async () => {
18
- return void 0;
19
- };
20
- const StoreAlert = ({
21
- state
22
- }) => {
23
- if (!state) {
24
- return null;
25
- }
26
- return /*#__PURE__*/React.createElement(Alert, {
27
- className: "mb-md",
28
- type: "danger"
29
- }, "Any changes you do on the entry will not be stored!");
30
- };
31
- const shouldShowOriginal = params => {
32
- const {
33
- entry,
34
- model
35
- } = params;
36
- /**
37
- * In case of new entry or no model, show original.
38
- * Also, for singleton models, show original.
39
- */
40
- if (!entry?.id || !model?.tags) {
41
- return true;
42
- }
43
- return model.tags.includes(CMS_MODEL_SINGLETON_TAG);
44
- };
45
- export const ContentEntryFormWorkflow = ContentEntryForm.createDecorator(Original => {
46
- return function ContentEntryFormWorkflow(props) {
47
- const {
48
- model
49
- } = useModel();
50
- const showOriginal = shouldShowOriginal({
51
- entry: props.entry,
52
- model
53
- });
54
- if (showOriginal) {
55
- return /*#__PURE__*/React.createElement(Original, props);
56
- }
57
- return /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Grid.Column, {
58
- span: 12
59
- }, /*#__PURE__*/React.createElement(WorkflowStateBar, null)), /*#__PURE__*/React.createElement(Grid.Column, {
60
- span: 12
61
- }, /*#__PURE__*/React.createElement(WorkflowStateOverlay, null, ({
62
- state
63
- }) => {
64
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StoreAlert, {
65
- state: state
66
- }), /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
67
- persistEntry: state ? emptyFunction : props.persistEntry
68
- })));
69
- })));
70
- };
71
- });
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 };
72
23
 
73
24
  //# sourceMappingURL=ContentEntryFormWorkflow.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ContentEntryForm","useModel","Components","Alert","Grid","CMS_MODEL_SINGLETON_TAG","ContentReview","WorkflowStateBar","WorkflowStateOverlay","emptyFunction","StoreAlert","state","createElement","className","type","shouldShowOriginal","params","entry","model","id","tags","includes","ContentEntryFormWorkflow","createDecorator","Original","props","showOriginal","Column","span","Fragment","Object","assign","persistEntry"],"sources":["ContentEntryFormWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryForm, useModel } from \"@webiny/app-headless-cms\";\nimport type { IWorkflowState } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { Alert, Grid } from \"@webiny/admin-ui\";\nimport type { PersistEntry } from \"@webiny/app-headless-cms/admin/components/ContentEntryForm/ContentEntryFormProvider.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\nimport type { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nconst {\n ContentReview: { WorkflowStateBar, WorkflowStateOverlay }\n} = Components;\n\n/**\n * To override storing of the entry when in workflow state.\n */\n// @ts-expect-error\nconst emptyFunction: PersistEntry = async () => {\n return void 0;\n};\n\ninterface IStoreAlertProps {\n state: IWorkflowState | undefined;\n}\n\nconst StoreAlert = ({ state }: IStoreAlertProps) => {\n if (!state) {\n return null;\n }\n return (\n <Alert className={\"mb-md\"} type=\"danger\">\n Any changes you do on the entry will not be stored!\n </Alert>\n );\n};\n\ninterface IShouldShowOriginalParams {\n entry: Partial<Pick<CmsContentEntry, \"id\">>;\n model: Partial<Pick<CmsModel, \"tags\">>;\n}\nconst shouldShowOriginal = (params: IShouldShowOriginalParams): boolean => {\n const { entry, model } = params;\n /**\n * In case of new entry or no model, show original.\n * Also, for singleton models, show original.\n */\n if (!entry?.id || !model?.tags) {\n return true;\n }\n return model.tags.includes(CMS_MODEL_SINGLETON_TAG);\n};\n\nexport const ContentEntryFormWorkflow = ContentEntryForm.createDecorator(Original => {\n return function ContentEntryFormWorkflow(props) {\n const { model } = useModel();\n\n const showOriginal = shouldShowOriginal({\n entry: props.entry,\n model\n });\n\n if (showOriginal) {\n return <Original {...props} />;\n }\n\n return (\n <Grid>\n <Grid.Column span={12}>\n <WorkflowStateBar />\n </Grid.Column>\n <Grid.Column span={12}>\n <WorkflowStateOverlay>\n {({ state }) => {\n return (\n <>\n <StoreAlert state={state} />\n <Original\n {...props}\n persistEntry={state ? emptyFunction : props.persistEntry}\n />\n </>\n );\n }}\n </WorkflowStateOverlay>\n </Grid.Column>\n </Grid>\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,EAAEC,QAAQ,QAAQ,0BAA0B;AAErE,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,KAAK,EAAEC,IAAI,QAAQ,kBAAkB;AAE9C,SAASC,uBAAuB,QAAQ,iCAAiC;AAGzE,MAAM;EACFC,aAAa,EAAE;IAAEC,gBAAgB;IAAEC;EAAqB;AAC5D,CAAC,GAAGN,UAAU;;AAEd;AACA;AACA;AACA;AACA,MAAMO,aAA2B,GAAG,MAAAA,CAAA,KAAY;EAC5C,OAAO,KAAK,CAAC;AACjB,CAAC;AAMD,MAAMC,UAAU,GAAGA,CAAC;EAAEC;AAAwB,CAAC,KAAK;EAChD,IAAI,CAACA,KAAK,EAAE;IACR,OAAO,IAAI;EACf;EACA,oBACIZ,KAAA,CAAAa,aAAA,CAACT,KAAK;IAACU,SAAS,EAAE,OAAQ;IAACC,IAAI,EAAC;EAAQ,GAAC,qDAElC,CAAC;AAEhB,CAAC;AAMD,MAAMC,kBAAkB,GAAIC,MAAiC,IAAc;EACvE,MAAM;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGF,MAAM;EAC/B;AACJ;AACA;AACA;EACI,IAAI,CAACC,KAAK,EAAEE,EAAE,IAAI,CAACD,KAAK,EAAEE,IAAI,EAAE;IAC5B,OAAO,IAAI;EACf;EACA,OAAOF,KAAK,CAACE,IAAI,CAACC,QAAQ,CAAChB,uBAAuB,CAAC;AACvD,CAAC;AAED,OAAO,MAAMiB,wBAAwB,GAAGtB,gBAAgB,CAACuB,eAAe,CAACC,QAAQ,IAAI;EACjF,OAAO,SAASF,wBAAwBA,CAACG,KAAK,EAAE;IAC5C,MAAM;MAAEP;IAAM,CAAC,GAAGjB,QAAQ,CAAC,CAAC;IAE5B,MAAMyB,YAAY,GAAGX,kBAAkB,CAAC;MACpCE,KAAK,EAAEQ,KAAK,CAACR,KAAK;MAClBC;IACJ,CAAC,CAAC;IAEF,IAAIQ,YAAY,EAAE;MACd,oBAAO3B,KAAA,CAAAa,aAAA,CAACY,QAAQ,EAAKC,KAAQ,CAAC;IAClC;IAEA,oBACI1B,KAAA,CAAAa,aAAA,CAACR,IAAI,qBACDL,KAAA,CAAAa,aAAA,CAACR,IAAI,CAACuB,MAAM;MAACC,IAAI,EAAE;IAAG,gBAClB7B,KAAA,CAAAa,aAAA,CAACL,gBAAgB,MAAE,CACV,CAAC,eACdR,KAAA,CAAAa,aAAA,CAACR,IAAI,CAACuB,MAAM;MAACC,IAAI,EAAE;IAAG,gBAClB7B,KAAA,CAAAa,aAAA,CAACJ,oBAAoB,QAChB,CAAC;MAAEG;IAAM,CAAC,KAAK;MACZ,oBACIZ,KAAA,CAAAa,aAAA,CAAAb,KAAA,CAAA8B,QAAA,qBACI9B,KAAA,CAAAa,aAAA,CAACF,UAAU;QAACC,KAAK,EAAEA;MAAM,CAAE,CAAC,eAC5BZ,KAAA,CAAAa,aAAA,CAACY,QAAQ,EAAAM,MAAA,CAAAC,MAAA,KACDN,KAAK;QACTO,YAAY,EAAErB,KAAK,GAAGF,aAAa,GAAGgB,KAAK,CAACO;MAAa,EAC5D,CACH,CAAC;IAEX,CACkB,CACb,CACX,CAAC;EAEf,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
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,9 +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";
8
-
9
- //# sourceMappingURL=index.js.map
@@ -1,44 +1,36 @@
1
- import React, { useCallback } from "react";
1
+ import react, { useCallback } from "react";
2
2
  import { DropdownMenu, Icon } from "@webiny/admin-ui";
3
3
  import { Components } from "@webiny/app-workflows";
4
- import { ReactComponent as OpenInNewIcon } from "@webiny/icons/open_in_new.svg";
4
+ import { ReactComponent } from "@webiny/icons/open_in_new.svg";
5
5
  import { useRouter } from "@webiny/app";
6
6
  import { Routes } from "@webiny/app-headless-cms/routes.js";
7
7
  import { isCmsAppName, parseAppName } from "../../utils/appName.js";
8
- const {
9
- OpenInNewWindow
10
- } = Components.List.Options;
11
- export const ListOpenInNewWindow = OpenInNewWindow.createDecorator(Original => {
12
- return function ListOpenInNewWindow(props) {
13
- const {
14
- state
15
- } = props;
16
- const {
17
- getLink
18
- } = useRouter();
19
- const onClick = useCallback(() => {
20
- const modelId = parseAppName(state.app);
21
- const url = getLink(Routes.ContentEntries.List, {
22
- modelId,
23
- id: state.targetRevisionId,
24
- // TODO figure out how to load folderId
25
- folderId: "root"
26
- });
27
- const goTo = `${window.location.origin}${url}`;
28
- window.open(goTo, "_blank");
29
- }, [state.id]);
30
- if (isCmsAppName(state.app) === false) {
31
- return /*#__PURE__*/React.createElement(Original, props);
32
- }
33
- return /*#__PURE__*/React.createElement(DropdownMenu.Item, {
34
- icon: /*#__PURE__*/React.createElement(Icon, {
35
- icon: /*#__PURE__*/React.createElement(OpenInNewIcon, null),
36
- label: "Open In New Window"
37
- }),
38
- text: "Open in New Window",
39
- onClick: onClick
8
+ const { OpenInNewWindow: OpenInNewWindow } = Components.List.Options;
9
+ const OpenInNewWindow_ListOpenInNewWindow = OpenInNewWindow.createDecorator((Original)=>function(props) {
10
+ const { state } = props;
11
+ const { getLink } = useRouter();
12
+ const onClick = useCallback(()=>{
13
+ const modelId = parseAppName(state.app);
14
+ const url = getLink(Routes.ContentEntries.List, {
15
+ modelId,
16
+ id: state.targetRevisionId,
17
+ folderId: "root"
18
+ });
19
+ const goTo = `${window.location.origin}${url}`;
20
+ window.open(goTo, "_blank");
21
+ }, [
22
+ state.id
23
+ ]);
24
+ if (false === isCmsAppName(state.app)) return /*#__PURE__*/ react.createElement(Original, props);
25
+ return /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
26
+ icon: /*#__PURE__*/ react.createElement(Icon, {
27
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
28
+ label: "Open In New Window"
29
+ }),
30
+ text: "Open in New Window",
31
+ onClick: onClick
32
+ });
40
33
  });
41
- };
42
- });
34
+ export { OpenInNewWindow_ListOpenInNewWindow as ListOpenInNewWindow };
43
35
 
44
36
  //# sourceMappingURL=OpenInNewWindow.js.map