@webiny/app-website-builder-workflows 6.4.12-beta.5 → 6.5.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/Components/PageEditor/PageEditorAutoSave.js +1 -1
  2. package/Components/PageEditor/PageEditorAutoSave.js.map +1 -1
  3. package/Components/PageEditor/PageEditorConfig.js +5 -3
  4. package/Components/PageEditor/PageEditorConfig.js.map +1 -1
  5. package/Components/PageEditor/PageEditorLayout.d.ts +2 -0
  6. package/Components/PageEditor/PageEditorLayout.js +26 -0
  7. package/Components/PageEditor/PageEditorLayout.js.map +1 -0
  8. package/Components/PageEditor/PageEditorTopBar.js +11 -14
  9. package/Components/PageEditor/PageEditorTopBar.js.map +1 -1
  10. package/Components/PageEditor/PageFormWorkflowState.d.ts +3 -1
  11. package/Components/PageEditor/PageFormWorkflowState.js +13 -5
  12. package/Components/PageEditor/PageFormWorkflowState.js.map +1 -1
  13. package/Components/PageEditor/PageFormWorkflowStatePublishButton.js +2 -2
  14. package/Components/PageEditor/PageFormWorkflowStatePublishButton.js.map +1 -1
  15. package/Components/PageEditor/ToggleEditorMode.d.ts +2 -2
  16. package/Components/PageEditor/ToggleEditorMode.js +4 -5
  17. package/Components/PageEditor/ToggleEditorMode.js.map +1 -1
  18. package/Components/PagesList/PageListChangeStatus.js +2 -2
  19. package/Components/PagesList/PageListChangeStatus.js.map +1 -1
  20. package/Components/PagesList/PagesListContentReviews.js +1 -6
  21. package/Components/PagesList/PagesListContentReviews.js.map +1 -1
  22. package/Components/index.d.ts +0 -1
  23. package/Components/index.js +0 -1
  24. package/hooks/usePage.js +2 -5
  25. package/hooks/usePage.js.map +1 -1
  26. package/index.js +0 -3
  27. package/index.js.map +1 -1
  28. package/package.json +11 -13
  29. package/presentation/page/PageList/TableRowMapperDecorator.d.ts +12 -0
  30. package/presentation/page/PageList/TableRowMapperDecorator.js +24 -0
  31. package/presentation/page/PageList/TableRowMapperDecorator.js.map +1 -0
  32. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.d.ts +2 -2
  33. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js +1 -1
  34. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js.map +1 -1
  35. package/presentation/page/PageList/feature.js +2 -2
  36. package/presentation/page/PageList/feature.js.map +1 -1
  37. package/types.d.ts +5 -19
  38. package/presentation/page/PageList/PageListPresenterDecorator.d.ts +0 -13
  39. package/presentation/page/PageList/PageListPresenterDecorator.js +0 -38
  40. package/presentation/page/PageList/PageListPresenterDecorator.js.map +0 -1
  41. package/presentation/page/RevisionList/RevisionListPresenterDecorator.d.ts +0 -21
  42. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js +0 -28
  43. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js.map +0 -1
  44. package/presentation/page/RevisionList/feature.d.ts +0 -1
  45. package/presentation/page/RevisionList/feature.js +0 -11
  46. package/presentation/page/RevisionList/feature.js.map +0 -1
@@ -5,7 +5,7 @@ import { observer } from "mobx-react-lite";
5
5
  const { Ui: Ui } = PageEditorConfig;
6
6
  const WrappedAutoSave = observer((props)=>{
7
7
  const { presenter } = useWorkflowState();
8
- if (!presenter.vm.state?.state) return props.element;
8
+ if (!presenter.vm.hasState) return props.element;
9
9
  return null;
10
10
  });
11
11
  const PageEditorAutoSave = Ui.TopBar.Element.createDecorator((Original)=>function(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PageEditor/PageEditorAutoSave.js","sources":["../../../src/Components/PageEditor/PageEditorAutoSave.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface IWrappedAutoSave {\n element?: React.ReactElement | null;\n}\nconst WrappedAutoSave = observer((props: IWrappedAutoSave) => {\n const { presenter } = useWorkflowState();\n /**\n * Autosave should work only when the page does not have a workflow state assigned.\n */\n if (!presenter.vm.state?.state) {\n return props.element;\n }\n\n return null;\n});\n\nexport const PageEditorAutoSave = Ui.TopBar.Element.createDecorator(Original => {\n return function PageEditorAutoSaveDecorated(props) {\n if (props.name === \"autoSave\") {\n return <Original {...props} element={<WrappedAutoSave element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","WrappedAutoSave","observer","props","presenter","useWorkflowState","PageEditorAutoSave","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAKf,MAAMC,kBAAkBC,SAAS,CAACC;IAC9B,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAItB,IAAI,CAACD,UAAU,EAAE,CAAC,KAAK,EAAE,OACrB,OAAOD,MAAM,OAAO;IAGxB,OAAO;AACX;AAEO,MAAMG,qBAAqBP,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAACQ,CAAAA,WACzD,SAAqCJ,KAAK;QAC7C,IAAIA,AAAe,eAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACI,UAAAA;YAAU,GAAGJ,KAAK;YAAE,uBAAS,oBAACF,iBAAeA;gBAAC,SAASE,MAAM,OAAO;;;QAEhF,OAAO,WAAP,GAAO,oBAACI,UAAaJ;IACzB"}
1
+ {"version":3,"file":"Components/PageEditor/PageEditorAutoSave.js","sources":["../../../src/Components/PageEditor/PageEditorAutoSave.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface IWrappedAutoSave {\n element?: React.ReactElement | null;\n}\nconst WrappedAutoSave = observer((props: IWrappedAutoSave) => {\n const { presenter } = useWorkflowState();\n /**\n * Autosave should work only when the page does not have a workflow state assigned.\n */\n if (!presenter.vm.hasState) {\n return props.element;\n }\n\n return null;\n});\n\nexport const PageEditorAutoSave = Ui.TopBar.Element.createDecorator(Original => {\n return function PageEditorAutoSaveDecorated(props) {\n if (props.name === \"autoSave\") {\n return <Original {...props} element={<WrappedAutoSave element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","WrappedAutoSave","observer","props","presenter","useWorkflowState","PageEditorAutoSave","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAKf,MAAMC,kBAAkBC,SAAS,CAACC;IAC9B,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAItB,IAAI,CAACD,UAAU,EAAE,CAAC,QAAQ,EACtB,OAAOD,MAAM,OAAO;IAGxB,OAAO;AACX;AAEO,MAAMG,qBAAqBP,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAACQ,CAAAA,WACzD,SAAqCJ,KAAK;QAC7C,IAAIA,AAAe,eAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACI,UAAAA;YAAU,GAAGJ,KAAK;YAAE,uBAAS,oBAACF,iBAAeA;gBAAC,SAASE,MAAM,OAAO;;;QAEhF,OAAO,WAAP,GAAO,oBAACI,UAAaJ;IACzB"}
@@ -1,9 +1,11 @@
1
1
  import react from "react";
2
- import { Plugins } from "@webiny/app";
2
+ import { PageEditorConfig } from "@webiny/app-website-builder";
3
3
  import { PageFormWorkflowStateTooltip } from "./PageFormWorkflowStateTooltip.js";
4
4
  import { PageFormWorkflowStatePublishButton } from "./PageFormWorkflowStatePublishButton.js";
5
5
  import { PageEditorTopBar } from "./PageEditorTopBar.js";
6
- const PageEditorConfig = ()=>/*#__PURE__*/ react.createElement(Plugins, null, /*#__PURE__*/ react.createElement(PageEditorTopBar, null), /*#__PURE__*/ react.createElement(PageFormWorkflowStateTooltip, null), /*#__PURE__*/ react.createElement(PageFormWorkflowStatePublishButton, null));
7
- export { PageEditorConfig };
6
+ import { PageEditorLayout } from "./PageEditorLayout.js";
7
+ import { PageEditorAutoSave } from "./PageEditorAutoSave.js";
8
+ const PageEditorConfig_PageEditorConfig = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(PageEditorTopBar, null), /*#__PURE__*/ react.createElement(PageEditorLayout, null), /*#__PURE__*/ react.createElement(PageEditorAutoSave, null), /*#__PURE__*/ react.createElement(PageEditorConfig, null, /*#__PURE__*/ react.createElement(PageFormWorkflowStateTooltip, null), /*#__PURE__*/ react.createElement(PageFormWorkflowStatePublishButton, null)));
9
+ export { PageEditorConfig_PageEditorConfig as PageEditorConfig };
8
10
 
9
11
  //# sourceMappingURL=PageEditorConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PageEditor/PageEditorConfig.js","sources":["../../../src/Components/PageEditor/PageEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { Plugins } from \"@webiny/app\";\nimport { PageFormWorkflowStateTooltip } from \"./PageFormWorkflowStateTooltip.js\";\nimport { PageFormWorkflowStatePublishButton } from \"./PageFormWorkflowStatePublishButton.js\";\nimport { PageEditorTopBar } from \"./PageEditorTopBar.js\";\n\nexport const PageEditorConfig = () => {\n return (\n <Plugins>\n {/* Toggle editor \"readonly\" mode, and add workflow alerts */}\n <PageEditorTopBar />\n {/* Should add a button with list of steps and their states + comment button in each row */}\n <PageFormWorkflowStateTooltip />\n {/* should remove publish button from the form */}\n <PageFormWorkflowStatePublishButton />\n </Plugins>\n );\n};\n"],"names":["PageEditorConfig","Plugins","PageEditorTopBar","PageFormWorkflowStateTooltip","PageFormWorkflowStatePublishButton"],"mappings":";;;;;AAMO,MAAMA,mBAAmB,IACrB,WAAP,GACI,oBAACC,SAAOA,MAAAA,WAAAA,GAEJ,oBAACC,kBAAgBA,OAAAA,WAAAA,GAEjB,oBAACC,8BAA4BA,OAAAA,WAAAA,GAE7B,oBAACC,oCAAkCA"}
1
+ {"version":3,"file":"Components/PageEditor/PageEditorConfig.js","sources":["../../../src/Components/PageEditor/PageEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig as BaseConfig } from \"@webiny/app-website-builder\";\nimport { PageFormWorkflowStateTooltip } from \"./PageFormWorkflowStateTooltip.js\";\nimport { PageFormWorkflowStatePublishButton } from \"./PageFormWorkflowStatePublishButton.js\";\nimport { PageEditorTopBar } from \"./PageEditorTopBar.js\";\nimport { PageEditorLayout } from \"./PageEditorLayout.js\";\nimport { PageEditorAutoSave } from \"./PageEditorAutoSave.js\";\n\nexport const PageEditorConfig = () => {\n return (\n <>\n {/* Toggle editor \"readonly\" mode, and add workflow alerts */}\n <PageEditorTopBar />\n <PageEditorLayout />\n <PageEditorAutoSave />\n <BaseConfig>\n {/* Should add a button with list of steps and their states + comment button in each row */}\n <PageFormWorkflowStateTooltip />\n {/* should remove publish button from the form */}\n <PageFormWorkflowStatePublishButton />\n </BaseConfig>\n </>\n );\n};\n"],"names":["PageEditorConfig","PageEditorTopBar","PageEditorLayout","PageEditorAutoSave","BaseConfig","PageFormWorkflowStateTooltip","PageFormWorkflowStatePublishButton"],"mappings":";;;;;;;AAQO,MAAMA,oCAAmB,IACrB,WAAP,GACI,wDAEI,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACC,kBAAUA,MAAAA,WAAAA,GAEP,oBAACC,8BAA4BA,OAAAA,WAAAA,GAE7B,oBAACC,oCAAkCA"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageEditorLayout: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,26 @@
1
+ import react, { useEffect } from "react";
2
+ import { useWorkflowState } from "@webiny/app-workflows";
3
+ import { PageEditorConfig } from "@webiny/app-website-builder";
4
+ import { observer } from "mobx-react-lite";
5
+ import { useDocumentEditor } from "@webiny/app-website-builder/DocumentEditor/index.js";
6
+ const { Ui: Ui } = PageEditorConfig;
7
+ const ToggleReadonly = observer(()=>{
8
+ const { presenter } = useWorkflowState();
9
+ const editor = useDocumentEditor();
10
+ const hasState = presenter.vm.hasState;
11
+ useEffect(()=>{
12
+ const options = editor.getEditorOptions();
13
+ editor.updateEditor((state)=>{
14
+ state.isReadOnly = options.isReadOnly || hasState;
15
+ });
16
+ }, [
17
+ hasState
18
+ ]);
19
+ return null;
20
+ });
21
+ const PageEditorLayout = Ui.Layout.createDecorator((Original)=>function() {
22
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Original, null), /*#__PURE__*/ react.createElement(ToggleReadonly, null));
23
+ });
24
+ export { PageEditorLayout };
25
+
26
+ //# sourceMappingURL=PageEditorLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/PageEditor/PageEditorLayout.js","sources":["../../../src/Components/PageEditor/PageEditorLayout.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { observer } from \"mobx-react-lite\";\nimport { useDocumentEditor } from \"@webiny/app-website-builder/DocumentEditor/index.js\";\n\nconst { Ui } = PageEditorConfig;\n\nconst ToggleReadonly = observer(() => {\n const { presenter } = useWorkflowState();\n const editor = useDocumentEditor();\n\n const hasState = presenter.vm.hasState;\n\n useEffect(() => {\n const options = editor.getEditorOptions();\n editor.updateEditor(state => {\n state.isReadOnly = options.isReadOnly || hasState;\n });\n }, [hasState]);\n\n return null;\n});\n\nexport const PageEditorLayout = Ui.Layout.createDecorator(Original => {\n return function PageEditorLayoutWorkflowsState() {\n return (\n <>\n <Original />\n <ToggleReadonly />\n </>\n );\n };\n});\n"],"names":["Ui","PageEditorConfig","ToggleReadonly","observer","presenter","useWorkflowState","editor","useDocumentEditor","hasState","useEffect","options","state","PageEditorLayout","Original"],"mappings":";;;;;AAMA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAEf,MAAMC,iBAAiBC,SAAS;IAC5B,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,SAASC;IAEf,MAAMC,WAAWJ,UAAU,EAAE,CAAC,QAAQ;IAEtCK,UAAU;QACN,MAAMC,UAAUJ,OAAO,gBAAgB;QACvCA,OAAO,YAAY,CAACK,CAAAA;YAChBA,MAAM,UAAU,GAAGD,QAAQ,UAAU,IAAIF;QAC7C;IACJ,GAAG;QAACA;KAAS;IAEb,OAAO;AACX;AAEO,MAAMI,mBAAmBZ,GAAG,MAAM,CAAC,eAAe,CAACa,CAAAA,WAC/C;QACH,OAAO,WAAP,GACI,wDACI,oBAACA,UAAAA,OAAAA,WAAAA,GACD,oBAACX,gBAAcA;IAG3B"}
@@ -1,9 +1,7 @@
1
- import react from "react";
2
- import { useApolloClient } from "@apollo/react-hooks";
1
+ import react, { useEffect } from "react";
3
2
  import { PageEditorConfig } from "@webiny/app-website-builder";
4
3
  import { useSelectFromDocument } from "@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js";
5
- import { useAuthentication } from "@webiny/app-admin";
6
- import { WorkflowStateProvider } from "@webiny/app-workflows/Components/WorkflowState/index.js";
4
+ import { useWorkflowState } from "@webiny/app-workflows";
7
5
  import { WB_PAGE_APP } from "../../constants.js";
8
6
  import { PageFormWorkflowState } from "./PageFormWorkflowState.js";
9
7
  import { ToggleEditorMode } from "./ToggleEditorMode.js";
@@ -15,16 +13,15 @@ const PageEditorTopBar = Ui.TopBar.Layout.createDecorator((Original)=>function()
15
13
  title: doc.properties.title || "unknown page",
16
14
  status: doc.status || "draft"
17
15
  }));
18
- const client = useApolloClient();
19
- const { identity } = useAuthentication();
20
- return /*#__PURE__*/ react.createElement(WorkflowStateProvider, {
21
- app: WB_PAGE_APP,
22
- id: page.id,
23
- disabled: page.status !== WbPageStatus.Draft,
24
- identity: identity,
25
- client: client,
26
- title: `Website Builder: ${page.title}`
27
- }, /*#__PURE__*/ react.createElement(Original, null), /*#__PURE__*/ react.createElement(ToggleEditorMode, null), /*#__PURE__*/ react.createElement(PageFormWorkflowState, null));
16
+ const { presenter } = useWorkflowState();
17
+ useEffect(()=>{
18
+ if (page.status === WbPageStatus.Draft) presenter.init(WB_PAGE_APP, page.id, `Website Builder: ${page.title}`);
19
+ return ()=>presenter.dispose();
20
+ }, [
21
+ page.id,
22
+ page.status
23
+ ]);
24
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Original, null), /*#__PURE__*/ react.createElement(ToggleEditorMode, null), /*#__PURE__*/ react.createElement(PageFormWorkflowState, null));
28
25
  });
29
26
  export { PageEditorTopBar };
30
27
 
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PageEditor/PageEditorTopBar.js","sources":["../../../src/Components/PageEditor/PageEditorTopBar.tsx"],"sourcesContent":["import React from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport {\n type EditorDocument,\n useSelectFromDocument\n} from \"@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js\";\nimport { useAuthentication } from \"@webiny/app-admin\";\nimport { WorkflowStateProvider } from \"@webiny/app-workflows/Components/WorkflowState/index.js\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { PageFormWorkflowState } from \"~/Components/PageEditor/PageFormWorkflowState.js\";\nimport { ToggleEditorMode } from \"~/Components/PageEditor/ToggleEditorMode.js\";\nimport { WbPageStatus, type WbStatus } from \"@webiny/app-website-builder/constants.js\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface PageEditorTopBarEditorDocument extends EditorDocument {\n status: WbStatus;\n}\n\ninterface ISelectedPage {\n id: string;\n title: string;\n status: WbStatus;\n}\n\nexport const PageEditorTopBar = Ui.TopBar.Layout.createDecorator(Original => {\n return function PageEditorTopBarWorkflowsState() {\n const page = useSelectFromDocument<ISelectedPage, PageEditorTopBarEditorDocument>(doc => {\n return {\n id: doc.id,\n title: doc.properties.title || \"unknown page\",\n status: doc.status || \"draft\"\n };\n });\n\n const client = useApolloClient();\n const { identity } = useAuthentication();\n\n return (\n <WorkflowStateProvider\n app={WB_PAGE_APP}\n id={page.id}\n disabled={page.status !== WbPageStatus.Draft}\n identity={identity}\n client={client}\n title={`Website Builder: ${page.title}`}\n >\n <Original />\n <ToggleEditorMode />\n <PageFormWorkflowState />\n </WorkflowStateProvider>\n );\n };\n});\n"],"names":["Ui","PageEditorConfig","PageEditorTopBar","Original","page","useSelectFromDocument","doc","client","useApolloClient","identity","useAuthentication","WorkflowStateProvider","WB_PAGE_APP","WbPageStatus","ToggleEditorMode","PageFormWorkflowState"],"mappings":";;;;;;;;;;AAcA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAYR,MAAMC,mBAAmBF,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAACG,CAAAA,WACtD;QACH,MAAMC,OAAOC,sBAAqEC,CAAAA,MACvE;gBACH,IAAIA,IAAI,EAAE;gBACV,OAAOA,IAAI,UAAU,CAAC,KAAK,IAAI;gBAC/B,QAAQA,IAAI,MAAM,IAAI;YAC1B;QAGJ,MAAMC,SAASC;QACf,MAAM,EAAEC,QAAQ,EAAE,GAAGC;QAErB,OAAO,WAAP,GACI,oBAACC,uBAAqBA;YAClB,KAAKC;YACL,IAAIR,KAAK,EAAE;YACX,UAAUA,KAAK,MAAM,KAAKS,aAAa,KAAK;YAC5C,UAAUJ;YACV,QAAQF;YACR,OAAO,CAAC,iBAAiB,EAAEH,KAAK,KAAK,EAAE;yBAEvC,oBAACD,UAAAA,OAAAA,WAAAA,GACD,oBAACW,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,uBAAqBA;IAGlC"}
1
+ {"version":3,"file":"Components/PageEditor/PageEditorTopBar.js","sources":["../../../src/Components/PageEditor/PageEditorTopBar.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport {\n type EditorDocument,\n useSelectFromDocument\n} from \"@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { PageFormWorkflowState } from \"~/Components/PageEditor/PageFormWorkflowState.js\";\nimport { ToggleEditorMode } from \"~/Components/PageEditor/ToggleEditorMode.js\";\nimport { WbPageStatus, type WbStatus } from \"@webiny/app-website-builder/constants.js\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface PageEditorTopBarEditorDocument extends EditorDocument {\n status: WbStatus;\n}\n\ninterface ISelectedPage {\n id: string;\n title: string;\n status: WbStatus;\n}\n\nexport const PageEditorTopBar = Ui.TopBar.Layout.createDecorator(Original => {\n return function PageEditorTopBarWorkflowsState() {\n const page = useSelectFromDocument<ISelectedPage, PageEditorTopBarEditorDocument>(doc => {\n return {\n id: doc.id,\n title: doc.properties.title || \"unknown page\",\n status: doc.status || \"draft\"\n };\n });\n\n const { presenter } = useWorkflowState();\n\n useEffect(() => {\n if (page.status === WbPageStatus.Draft) {\n presenter.init(WB_PAGE_APP, page.id, `Website Builder: ${page.title}`);\n }\n return () => presenter.dispose();\n }, [page.id, page.status]);\n\n return (\n <>\n <Original />\n <ToggleEditorMode />\n <PageFormWorkflowState />\n </>\n );\n };\n});\n"],"names":["Ui","PageEditorConfig","PageEditorTopBar","Original","page","useSelectFromDocument","doc","presenter","useWorkflowState","useEffect","WbPageStatus","WB_PAGE_APP","ToggleEditorMode","PageFormWorkflowState"],"mappings":";;;;;;;;AAYA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAYR,MAAMC,mBAAmBF,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAACG,CAAAA,WACtD;QACH,MAAMC,OAAOC,sBAAqEC,CAAAA,MACvE;gBACH,IAAIA,IAAI,EAAE;gBACV,OAAOA,IAAI,UAAU,CAAC,KAAK,IAAI;gBAC/B,QAAQA,IAAI,MAAM,IAAI;YAC1B;QAGJ,MAAM,EAAEC,SAAS,EAAE,GAAGC;QAEtBC,UAAU;YACN,IAAIL,KAAK,MAAM,KAAKM,aAAa,KAAK,EAClCH,UAAU,IAAI,CAACI,aAAaP,KAAK,EAAE,EAAE,CAAC,iBAAiB,EAAEA,KAAK,KAAK,EAAE;YAEzE,OAAO,IAAMG,UAAU,OAAO;QAClC,GAAG;YAACH,KAAK,EAAE;YAAEA,KAAK,MAAM;SAAC;QAEzB,OAAO,WAAP,GACI,wDACI,oBAACD,UAAAA,OAAAA,WAAAA,GACD,oBAACS,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,uBAAqBA;IAGlC"}
@@ -1,2 +1,4 @@
1
1
  import React from "react";
2
- export declare const PageFormWorkflowState: () => React.JSX.Element;
2
+ export declare const PageFormWorkflowState: (() => React.JSX.Element) & {
3
+ displayName: string;
4
+ };
@@ -1,10 +1,18 @@
1
1
  import react from "react";
2
- import { Components } from "@webiny/app-workflows";
2
+ import { observer } from "mobx-react-lite";
3
+ import { Alert } from "@webiny/admin-ui";
4
+ import { Components, useWorkflowState } from "@webiny/app-workflows";
3
5
  const { ContentReview: { WorkflowStateBar: WorkflowStateBar } } = Components;
4
- const PageFormWorkflowState = ()=>/*#__PURE__*/ react.createElement(WorkflowStateBar, null, ({ stateBar })=>/*#__PURE__*/ react.createElement("div", {
5
- className: "max-w-screen bg-white p-sm",
6
- "data-affects-preview": "height"
7
- }, stateBar));
6
+ const PageFormWorkflowState = observer(()=>{
7
+ const { presenter } = useWorkflowState();
8
+ return /*#__PURE__*/ react.createElement("div", {
9
+ className: "max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed",
10
+ "data-affects-preview": "height"
11
+ }, /*#__PURE__*/ react.createElement(WorkflowStateBar, null), presenter.vm.hasState ? /*#__PURE__*/ react.createElement(Alert, {
12
+ type: "danger",
13
+ className: "mt-sm"
14
+ }, "Any changes you do on the page will not be stored!") : null);
15
+ });
8
16
  export { PageFormWorkflowState };
9
17
 
10
18
  //# sourceMappingURL=PageFormWorkflowState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PageEditor/PageFormWorkflowState.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowState.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\n\nconst {\n ContentReview: { WorkflowStateBar }\n} = Components;\n\nexport const PageFormWorkflowState = () => {\n return (\n <WorkflowStateBar>\n {({ stateBar }) => {\n return (\n <div className={\"max-w-screen bg-white p-sm\"} data-affects-preview={\"height\"}>\n {stateBar}\n </div>\n );\n }}\n </WorkflowStateBar>\n );\n};\n"],"names":["WorkflowStateBar","Components","PageFormWorkflowState","stateBar"],"mappings":";;AAGA,MAAM,EACF,eAAe,EAAEA,kBAAAA,gBAAgB,EAAE,EACtC,GAAGC;AAEG,MAAMC,wBAAwB,IAC1B,WAAP,GACI,oBAACF,kBAAgBA,MACZ,CAAC,EAAEG,QAAQ,EAAE,GACH,WAAP,GACI,oBAAC;YAAI,WAAW;YAA8B,wBAAsB;WAC/DA"}
1
+ {"version":3,"file":"Components/PageEditor/PageFormWorkflowState.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowState.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Alert } from \"@webiny/admin-ui\";\nimport { Components, useWorkflowState } from \"@webiny/app-workflows\";\n\nconst {\n ContentReview: { WorkflowStateBar }\n} = Components;\n\nexport const PageFormWorkflowState = observer(() => {\n const { presenter } = useWorkflowState();\n\n return (\n <div\n className={\"max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed\"}\n data-affects-preview={\"height\"}\n >\n <WorkflowStateBar />\n {presenter.vm.hasState ? (\n <Alert type=\"danger\" className={\"mt-sm\"}>\n Any changes you do on the page will not be stored!\n </Alert>\n ) : null}\n </div>\n );\n});\n"],"names":["WorkflowStateBar","Components","PageFormWorkflowState","observer","presenter","useWorkflowState","Alert"],"mappings":";;;;AAKA,MAAM,EACF,eAAe,EAAEA,kBAAAA,gBAAgB,EAAE,EACtC,GAAGC;AAEG,MAAMC,wBAAwBC,SAAS;IAC1C,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAEtB,OAAO,WAAP,GACI,oBAAC;QACG,WAAW;QACX,wBAAsB;qBAEtB,oBAACL,kBAAgBA,OAChBI,UAAU,EAAE,CAAC,QAAQ,GAAG,WAAH,GAClB,oBAACE,OAAKA;QAAC,MAAK;QAAS,WAAW;OAAS,wDAGzC;AAGhB"}
@@ -1,11 +1,11 @@
1
1
  import react from "react";
2
2
  import { PageEditorConfig } from "@webiny/app-website-builder";
3
- import { WorkflowStateValue, useWorkflowState } from "@webiny/app-workflows";
3
+ import { useWorkflowState } from "@webiny/app-workflows";
4
4
  import { observer } from "mobx-react-lite";
5
5
  const { Ui: Ui } = PageEditorConfig;
6
6
  const WrappedPublishButton = observer((props)=>{
7
7
  const { presenter } = useWorkflowState();
8
- if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) return props.element;
8
+ if (!presenter.vm.hasWorkflow || presenter.vm.isApproved) return props.element;
9
9
  return null;
10
10
  });
11
11
  const PageFormWorkflowStatePublishButton = Ui.TopBar.Action.createDecorator((Original)=>function(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PageEditor/PageFormWorkflowStatePublishButton.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowStatePublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { useWorkflowState, WorkflowStateValue } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface IWrappedPublishButtonProps {\n element?: React.ReactElement | null;\n}\n\nconst WrappedPublishButton = observer((props: IWrappedPublishButtonProps) => {\n const { presenter } = useWorkflowState();\n /**\n * Publish button should be visible only when there is no workflow available and when workflow state is approved.\n */\n if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {\n return props.element;\n }\n\n return null;\n});\n\nexport const PageFormWorkflowStatePublishButton = Ui.TopBar.Action.createDecorator(Original => {\n return function AutoSaveDecorator(props) {\n if (props.name === \"buttonPublish\") {\n return (\n <Original {...props} element={<WrappedPublishButton element={props.element} />} />\n );\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","WrappedPublishButton","observer","props","presenter","useWorkflowState","WorkflowStateValue","PageFormWorkflowStatePublishButton","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAMf,MAAMC,uBAAuBC,SAAS,CAACC;IACnC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAItB,IAAI,CAACD,UAAU,EAAE,CAAC,QAAQ,IAAIA,UAAU,EAAE,CAAC,KAAK,EAAE,UAAUE,mBAAmB,QAAQ,EACnF,OAAOH,MAAM,OAAO;IAGxB,OAAO;AACX;AAEO,MAAMI,qCAAqCR,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAACS,CAAAA,WACxE,SAA2BL,KAAK;QACnC,IAAIA,AAAe,oBAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACK,UAAAA;YAAU,GAAGL,KAAK;YAAE,uBAAS,oBAACF,sBAAoBA;gBAAC,SAASE,MAAM,OAAO;;;QAGlF,OAAO,WAAP,GAAO,oBAACK,UAAaL;IACzB"}
1
+ {"version":3,"file":"Components/PageEditor/PageFormWorkflowStatePublishButton.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowStatePublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface IWrappedPublishButtonProps {\n element?: React.ReactElement | null;\n}\n\nconst WrappedPublishButton = observer((props: IWrappedPublishButtonProps) => {\n const { presenter } = useWorkflowState();\n /**\n * Publish button should be visible only when there is no workflow available and when workflow state is approved.\n */\n if (!presenter.vm.hasWorkflow || presenter.vm.isApproved) {\n return props.element;\n }\n\n return null;\n});\n\nexport const PageFormWorkflowStatePublishButton = Ui.TopBar.Action.createDecorator(Original => {\n return function AutoSaveDecorator(props) {\n if (props.name === \"buttonPublish\") {\n return (\n <Original {...props} element={<WrappedPublishButton element={props.element} />} />\n );\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","WrappedPublishButton","observer","props","presenter","useWorkflowState","PageFormWorkflowStatePublishButton","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAMf,MAAMC,uBAAuBC,SAAS,CAACC;IACnC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAItB,IAAI,CAACD,UAAU,EAAE,CAAC,WAAW,IAAIA,UAAU,EAAE,CAAC,UAAU,EACpD,OAAOD,MAAM,OAAO;IAGxB,OAAO;AACX;AAEO,MAAMG,qCAAqCP,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAACQ,CAAAA,WACxE,SAA2BJ,KAAK;QACnC,IAAIA,AAAe,oBAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACI,UAAAA;YAAU,GAAGJ,KAAK;YAAE,uBAAS,oBAACF,sBAAoBA;gBAAC,SAASE,MAAM,OAAO;;;QAGlF,OAAO,WAAP,GAAO,oBAACI,UAAaJ;IACzB"}
@@ -1,3 +1,3 @@
1
- export declare const ToggleEditorMode: (() => null) & import("react").NamedExoticComponent<unknown> & {
2
- readonly type: () => null;
1
+ export declare const ToggleEditorMode: (() => null) & {
2
+ displayName: string;
3
3
  };
@@ -1,19 +1,18 @@
1
1
  import { useEffect } from "react";
2
2
  import { observer } from "mobx-react-lite";
3
- import { WorkflowStateValue, useWorkflowState } from "@webiny/app-workflows";
3
+ import { useWorkflowState } from "@webiny/app-workflows";
4
4
  import { useDocumentEditor } from "@webiny/app-website-builder/DocumentEditor/index.js";
5
5
  const ToggleEditorMode = observer(()=>{
6
6
  const { presenter } = useWorkflowState();
7
7
  const editor = useDocumentEditor();
8
- const state = presenter.vm.state?.state;
9
- const isUnderReview = !!state && state !== WorkflowStateValue.approved;
8
+ const hasState = presenter.vm.hasState;
10
9
  useEffect(()=>{
11
10
  const options = editor.getEditorOptions();
12
11
  editor.updateEditor((state)=>{
13
- state.isReadOnly = options.isReadOnly || isUnderReview;
12
+ state.isReadOnly = options.isReadOnly || hasState;
14
13
  });
15
14
  }, [
16
- isUnderReview
15
+ hasState
17
16
  ]);
18
17
  return null;
19
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PageEditor/ToggleEditorMode.js","sources":["../../../src/Components/PageEditor/ToggleEditorMode.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useWorkflowState, WorkflowStateValue } from \"@webiny/app-workflows\";\nimport { useDocumentEditor } from \"@webiny/app-website-builder/DocumentEditor/index.js\";\n\nexport const ToggleEditorMode = observer(() => {\n const { presenter } = useWorkflowState();\n const editor = useDocumentEditor();\n\n const state = presenter.vm.state?.state;\n\n /**\n * A page is locked for the duration of the review. Once the review is approved the page can\n * be published, so the editor has to become writable again - otherwise the top bar keeps\n * offering \"New Revision\" instead of \"Publish\".\n */\n const isUnderReview = !!state && state !== WorkflowStateValue.approved;\n\n useEffect(() => {\n const options = editor.getEditorOptions();\n editor.updateEditor(state => {\n state.isReadOnly = options.isReadOnly || isUnderReview;\n });\n }, [isUnderReview]);\n\n return null;\n});\n"],"names":["ToggleEditorMode","observer","presenter","useWorkflowState","editor","useDocumentEditor","state","isUnderReview","WorkflowStateValue","useEffect","options"],"mappings":";;;;AAKO,MAAMA,mBAAmBC,SAAS;IACrC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,SAASC;IAEf,MAAMC,QAAQJ,UAAU,EAAE,CAAC,KAAK,EAAE;IAOlC,MAAMK,gBAAgB,CAAC,CAACD,SAASA,UAAUE,mBAAmB,QAAQ;IAEtEC,UAAU;QACN,MAAMC,UAAUN,OAAO,gBAAgB;QACvCA,OAAO,YAAY,CAACE,CAAAA;YAChBA,MAAM,UAAU,GAAGI,QAAQ,UAAU,IAAIH;QAC7C;IACJ,GAAG;QAACA;KAAc;IAElB,OAAO;AACX"}
1
+ {"version":3,"file":"Components/PageEditor/ToggleEditorMode.js","sources":["../../../src/Components/PageEditor/ToggleEditorMode.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { useDocumentEditor } from \"@webiny/app-website-builder/DocumentEditor/index.js\";\n\nexport const ToggleEditorMode = observer(() => {\n const { presenter } = useWorkflowState();\n const editor = useDocumentEditor();\n\n const hasState = presenter.vm.hasState;\n\n useEffect(() => {\n const options = editor.getEditorOptions();\n editor.updateEditor(state => {\n state.isReadOnly = options.isReadOnly || hasState;\n });\n }, [hasState]);\n\n return null;\n});\n"],"names":["ToggleEditorMode","observer","presenter","useWorkflowState","editor","useDocumentEditor","hasState","useEffect","options","state"],"mappings":";;;;AAKO,MAAMA,mBAAmBC,SAAS;IACrC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,SAASC;IAEf,MAAMC,WAAWJ,UAAU,EAAE,CAAC,QAAQ;IAEtCK,UAAU;QACN,MAAMC,UAAUJ,OAAO,gBAAgB;QACvCA,OAAO,YAAY,CAACK,CAAAA;YAChBA,MAAM,UAAU,GAAGD,QAAQ,UAAU,IAAIF;QAC7C;IACJ,GAAG;QAACA;KAAS;IAEb,OAAO;AACX"}
@@ -5,8 +5,8 @@ import { usePage } from "../../hooks/usePage.js";
5
5
  const { Browser: Browser } = PageListConfig;
6
6
  const WrappedElement = (props)=>{
7
7
  const { page } = usePage();
8
- const state = page.workflows?.state;
9
- if (!state?.state || state.state === WorkflowStateValue.approved) return props.element;
8
+ const workflowState = page.workflow?.state;
9
+ if (!workflowState || workflowState === WorkflowStateValue.approved) return props.element;
10
10
  return null;
11
11
  };
12
12
  const PageListChangeStatus = Browser.Page.Action.createDecorator((Original)=>function(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PagesList/PageListChangeStatus.js","sources":["../../../src/Components/PagesList/PageListChangeStatus.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageListConfig } from \"@webiny/app-website-builder\";\nimport { WorkflowStateValue } from \"@webiny/app-workflows/types.js\";\nimport { usePage } from \"~/hooks/usePage.js\";\n\nconst { Browser } = PageListConfig;\n\ninterface IWrappedElementProps {\n element: React.ReactElement | undefined;\n}\n\nconst WrappedElement = (props: IWrappedElementProps) => {\n const { page } = usePage();\n const state = page.workflows?.state;\n\n if (!state?.state || state.state === WorkflowStateValue.approved) {\n return props.element;\n }\n return null;\n};\n\nexport const PageListChangeStatus = Browser.Page.Action.createDecorator(Original => {\n return function PageListChangeStatusAction(props) {\n if (props.name === \"changeStatus\") {\n return <Original {...props} element={<WrappedElement element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Browser","PageListConfig","WrappedElement","props","page","usePage","state","WorkflowStateValue","PageListChangeStatus","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAMpB,MAAMC,iBAAiB,CAACC;IACpB,MAAM,EAAEC,IAAI,EAAE,GAAGC;IACjB,MAAMC,QAAQF,KAAK,SAAS,EAAE;IAE9B,IAAI,CAACE,OAAO,SAASA,MAAM,KAAK,KAAKC,mBAAmB,QAAQ,EAC5D,OAAOJ,MAAM,OAAO;IAExB,OAAO;AACX;AAEO,MAAMK,uBAAuBR,QAAQ,IAAI,CAAC,MAAM,CAAC,eAAe,CAACS,CAAAA,WAC7D,SAAoCN,KAAK;QAC5C,IAAIA,AAAe,mBAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACM,UAAAA;YAAU,GAAGN,KAAK;YAAE,uBAAS,oBAACD,gBAAcA;gBAAC,SAASC,MAAM,OAAO;;;QAE/E,OAAO,WAAP,GAAO,oBAACM,UAAaN;IACzB"}
1
+ {"version":3,"file":"Components/PagesList/PageListChangeStatus.js","sources":["../../../src/Components/PagesList/PageListChangeStatus.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageListConfig } from \"@webiny/app-website-builder\";\nimport { WorkflowStateValue } from \"@webiny/app-workflows/types.js\";\nimport { usePage } from \"~/hooks/usePage.js\";\n\nconst { Browser } = PageListConfig;\n\ninterface IWrappedElementProps {\n element: React.ReactElement | undefined;\n}\n\nconst WrappedElement = (props: IWrappedElementProps) => {\n const { page } = usePage();\n const workflowState = page.workflow?.state;\n\n if (!workflowState || workflowState === WorkflowStateValue.approved) {\n return props.element;\n }\n return null;\n};\n\nexport const PageListChangeStatus = Browser.Page.Action.createDecorator(Original => {\n return function PageListChangeStatusAction(props) {\n if (props.name === \"changeStatus\") {\n return <Original {...props} element={<WrappedElement element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Browser","PageListConfig","WrappedElement","props","page","usePage","workflowState","WorkflowStateValue","PageListChangeStatus","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAMpB,MAAMC,iBAAiB,CAACC;IACpB,MAAM,EAAEC,IAAI,EAAE,GAAGC;IACjB,MAAMC,gBAAgBF,KAAK,QAAQ,EAAE;IAErC,IAAI,CAACE,iBAAiBA,kBAAkBC,mBAAmB,QAAQ,EAC/D,OAAOJ,MAAM,OAAO;IAExB,OAAO;AACX;AAEO,MAAMK,uBAAuBR,QAAQ,IAAI,CAAC,MAAM,CAAC,eAAe,CAACS,CAAAA,WAC7D,SAAoCN,KAAK;QAC5C,IAAIA,AAAe,mBAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACM,UAAAA;YAAU,GAAGN,KAAK;YAAE,uBAAS,oBAACD,gBAAcA;gBAAC,SAASC,MAAM,OAAO;;;QAE/E,OAAO,WAAP,GAAO,oBAACM,UAAaN;IACzB"}
@@ -2,15 +2,11 @@ import react from "react";
2
2
  import { Sidebar } from "@webiny/admin-ui";
3
3
  import { PageListConfig } from "@webiny/app-website-builder";
4
4
  import { Components } from "@webiny/app-workflows";
5
- import { useApolloClient } from "@apollo/react-hooks";
6
5
  import { WB_PAGE_APP } from "../../constants.js";
7
6
  import { ReactComponent } from "@webiny/icons/work_outline.svg";
8
7
  const { Overlay: { WorkflowStateListAppOverlay: WorkflowStateListAppOverlay } } = Components;
9
8
  const { Browser: Browser } = PageListConfig;
10
- const PageListContentReviewsButton = ()=>{
11
- const client = useApolloClient();
12
- return /*#__PURE__*/ react.createElement(WorkflowStateListAppOverlay, {
13
- client: client,
9
+ const PageListContentReviewsButton = ()=>/*#__PURE__*/ react.createElement(WorkflowStateListAppOverlay, {
14
10
  app: WB_PAGE_APP
15
11
  }, ({ showOverlay })=>/*#__PURE__*/ react.createElement(Sidebar.Item, {
16
12
  className: "w-full",
@@ -21,7 +17,6 @@ const PageListContentReviewsButton = ()=>{
21
17
  label: "Content Reviews"
22
18
  })
23
19
  }));
24
- };
25
20
  const PagesListContentReviews = ()=>/*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
26
21
  name: "contentReviews",
27
22
  element: /*#__PURE__*/ react.createElement(PageListContentReviewsButton, null)
@@ -1 +1 @@
1
- {"version":3,"file":"Components/PagesList/PagesListContentReviews.js","sources":["../../../src/Components/PagesList/PagesListContentReviews.tsx"],"sourcesContent":["import React from \"react\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { PageListConfig } from \"@webiny/app-website-builder\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { ReactComponent as WorkflowStateListIcon } from \"@webiny/icons/work_outline.svg\";\n\nconst {\n Overlay: { WorkflowStateListAppOverlay }\n} = Components;\n\nconst { Browser } = PageListConfig;\n\nconst PageListContentReviewsButton = () => {\n const client = useApolloClient();\n\n return (\n <WorkflowStateListAppOverlay client={client} app={WB_PAGE_APP}>\n {({ showOverlay }) => {\n return (\n <Sidebar.Item\n className={\"w-full\"}\n onClick={showOverlay}\n text={\"Content Reviews\"}\n icon={\n <Sidebar.Item.Icon\n element={<WorkflowStateListIcon />}\n label={\"Content Reviews\"}\n />\n }\n />\n );\n }}\n </WorkflowStateListAppOverlay>\n );\n};\n\nexport const PagesListContentReviews = () => {\n return (\n <Browser.Sidebar.Footer\n name={\"contentReviews\"}\n element={<PageListContentReviewsButton />}\n />\n );\n};\n"],"names":["WorkflowStateListAppOverlay","Components","Browser","PageListConfig","PageListContentReviewsButton","client","useApolloClient","WB_PAGE_APP","showOverlay","Sidebar","WorkflowStateListIcon","PagesListContentReviews"],"mappings":";;;;;;;AAQA,MAAM,EACF,SAAS,EAAEA,6BAAAA,2BAA2B,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,+BAA+B;IACjC,MAAMC,SAASC;IAEf,OAAO,WAAP,GACI,oBAACN,6BAA2BA;QAAC,QAAQK;QAAQ,KAAKE;OAC7C,CAAC,EAAEC,WAAW,EAAE,GACN,WAAP,GACI,oBAACC,QAAQ,IAAI;YACT,WAAW;YACX,SAASD;YACT,MAAM;YACN,oBACI,oBAACC,QAAQ,IAAI,CAAC,IAAI;gBACd,uBAAS,oBAACC,gBAAqBA;gBAC/B,OAAO;;;AAQvC;AAEO,MAAMC,0BAA0B,IAC5B,WAAP,GACI,oBAACT,QAAQ,OAAO,CAAC,MAAM;QACnB,MAAM;QACN,uBAAS,oBAACE,8BAA4BA"}
1
+ {"version":3,"file":"Components/PagesList/PagesListContentReviews.js","sources":["../../../src/Components/PagesList/PagesListContentReviews.tsx"],"sourcesContent":["import React from \"react\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { PageListConfig } from \"@webiny/app-website-builder\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { ReactComponent as WorkflowStateListIcon } from \"@webiny/icons/work_outline.svg\";\n\nconst {\n Overlay: { WorkflowStateListAppOverlay }\n} = Components;\n\nconst { Browser } = PageListConfig;\n\nconst PageListContentReviewsButton = () => {\n return (\n <WorkflowStateListAppOverlay app={WB_PAGE_APP}>\n {({ showOverlay }) => {\n return (\n <Sidebar.Item\n className={\"w-full\"}\n onClick={showOverlay}\n text={\"Content Reviews\"}\n icon={\n <Sidebar.Item.Icon\n element={<WorkflowStateListIcon />}\n label={\"Content Reviews\"}\n />\n }\n />\n );\n }}\n </WorkflowStateListAppOverlay>\n );\n};\n\nexport const PagesListContentReviews = () => {\n return (\n <Browser.Sidebar.Footer\n name={\"contentReviews\"}\n element={<PageListContentReviewsButton />}\n />\n );\n};\n"],"names":["WorkflowStateListAppOverlay","Components","Browser","PageListConfig","PageListContentReviewsButton","WB_PAGE_APP","showOverlay","Sidebar","WorkflowStateListIcon","PagesListContentReviews"],"mappings":";;;;;;AAOA,MAAM,EACF,SAAS,EAAEA,6BAAAA,2BAA2B,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,+BAA+B,IAC1B,WAAP,GACI,oBAACJ,6BAA2BA;QAAC,KAAKK;OAC7B,CAAC,EAAEC,WAAW,EAAE,GACN,WAAP,GACI,oBAACC,QAAQ,IAAI;YACT,WAAW;YACX,SAASD;YACT,MAAM;YACN,oBACI,oBAACC,QAAQ,IAAI,CAAC,IAAI;gBACd,uBAAS,oBAACC,gBAAqBA;gBAC/B,OAAO;;;AAUhC,MAAMC,0BAA0B,IAC5B,WAAP,GACI,oBAACP,QAAQ,OAAO,CAAC,MAAM;QACnB,MAAM;QACN,uBAAS,oBAACE,8BAA4BA"}
@@ -1,4 +1,3 @@
1
1
  export * from "./OptionItem/index.js";
2
2
  export * from "./PageEditor/PageEditorConfig.js";
3
3
  export * from "./PagesList/index.js";
4
- export * from "./PageWorkflows/index.js";
@@ -1,4 +1,3 @@
1
1
  export * from "./OptionItem/index.js";
2
2
  export * from "./PageEditor/PageEditorConfig.js";
3
3
  export * from "./PagesList/index.js";
4
- export * from "./PageWorkflows/index.js";
package/hooks/usePage.js CHANGED
@@ -1,10 +1,7 @@
1
- import { usePage } from "@webiny/app-website-builder/modules/pages/PagesList/hooks/usePage.js";
1
+ import { usePage } from "@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js";
2
2
  const decoratePage = (page)=>({
3
3
  ...page,
4
- workflows: {
5
- ...page.workflows
6
- },
7
- $selectable: false
4
+ workflow: page.system?.workflow ?? null
8
5
  });
9
6
  const usePage_usePage = ()=>{
10
7
  const usage = usePage();
@@ -1 +1 @@
1
- {"version":3,"file":"hooks/usePage.js","sources":["../../src/hooks/usePage.ts"],"sourcesContent":["import { usePage as baseUsePage } from \"@webiny/app-website-builder/modules/pages/PagesList/hooks/usePage.js\";\nimport type { PageDto } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport type { WithWorkflows } from \"~/types.js\";\n\nconst decoratePage = (page: PageDto): WithWorkflows<PageDto> => {\n return {\n ...page,\n workflows: {\n // @ts-expect-error\n ...page.workflows\n },\n $selectable: false\n };\n};\n\nexport const usePage = () => {\n const usage = baseUsePage();\n\n return {\n ...usage,\n page: decoratePage(usage.page)\n };\n};\n"],"names":["decoratePage","page","usePage","usage","baseUsePage"],"mappings":";AAIA,MAAMA,eAAe,CAACC,OACX;QACH,GAAGA,IAAI;QACP,WAAW;YAEP,GAAGA,KAAK,SAAS;QACrB;QACA,aAAa;IACjB;AAGG,MAAMC,kBAAU;IACnB,MAAMC,QAAQC;IAEd,OAAO;QACH,GAAGD,KAAK;QACR,MAAMH,aAAaG,MAAM,IAAI;IACjC;AACJ"}
1
+ {"version":3,"file":"hooks/usePage.js","sources":["../../src/hooks/usePage.ts"],"sourcesContent":["import { usePage as baseUsePage } from \"@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js\";\nimport type { PageDto } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport type { WithWorkflows } from \"~/types.js\";\n\nconst decoratePage = (page: PageDto): WithWorkflows<PageDto> => {\n return {\n ...page,\n workflow: page.system?.workflow ?? null\n };\n};\n\nexport const usePage = () => {\n const usage = baseUsePage();\n\n return {\n ...usage,\n page: decoratePage(usage.page)\n };\n};\n"],"names":["decoratePage","page","usePage","usage","baseUsePage"],"mappings":";AAIA,MAAMA,eAAe,CAACC,OACX;QACH,GAAGA,IAAI;QACP,UAAUA,KAAK,MAAM,EAAE,YAAY;IACvC;AAGG,MAAMC,kBAAU;IACnB,MAAMC,QAAQC;IAEd,OAAO;QACH,GAAGD,KAAK;QACR,MAAMH,aAAaG,MAAM,IAAI;IACjC;AACJ"}
package/index.js CHANGED
@@ -4,13 +4,10 @@ import { WebsiteBuilderWorkflowsMenu } from "./Routes/index.js";
4
4
  import { ListOpenInNewWindow, PageEditorConfig, PagesList } from "./Components/index.js";
5
5
  import { PageListWorkflowsFeature } from "./presentation/page/PageList/feature.js";
6
6
  import { PageGetWorkflowsFeature } from "./presentation/page/PageGet/feature.js";
7
- import { RevisionListWorkflowsFeature } from "./presentation/page/RevisionList/feature.js";
8
7
  const WebsiteBuilderWorkflows = ()=>/*#__PURE__*/ react.createElement(Wcp.CanUseWorkflows, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
9
8
  feature: PageListWorkflowsFeature
10
9
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
11
10
  feature: PageGetWorkflowsFeature
12
- }), /*#__PURE__*/ react.createElement(RegisterFeature, {
13
- feature: RevisionListWorkflowsFeature
14
11
  }), /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflowsMenu, null), /*#__PURE__*/ react.createElement(PageEditorConfig, null), /*#__PURE__*/ react.createElement(PagesList, null), /*#__PURE__*/ react.createElement(ListOpenInNewWindow, null));
15
12
  export { WebsiteBuilderWorkflows };
16
13
 
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature, Wcp } from \"@webiny/app-admin\";\nimport { WebsiteBuilderWorkflowsMenu } from \"~/Routes/index.js\";\nimport { ListOpenInNewWindow, PageEditorConfig, PagesList } from \"~/Components/index.js\";\nimport { PageListWorkflowsFeature } from \"~/presentation/page/PageList/feature.js\";\nimport { PageGetWorkflowsFeature } from \"~/presentation/page/PageGet/feature.js\";\nimport { RevisionListWorkflowsFeature } from \"~/presentation/page/RevisionList/feature.js\";\n\nexport const WebsiteBuilderWorkflows = () => {\n return (\n <Wcp.CanUseWorkflows>\n <RegisterFeature feature={PageListWorkflowsFeature} />\n <RegisterFeature feature={PageGetWorkflowsFeature} />\n <RegisterFeature feature={RevisionListWorkflowsFeature} />\n <WebsiteBuilderWorkflowsMenu />\n <PageEditorConfig />\n <PagesList />\n <ListOpenInNewWindow />\n </Wcp.CanUseWorkflows>\n );\n};\n"],"names":["WebsiteBuilderWorkflows","Wcp","RegisterFeature","PageListWorkflowsFeature","PageGetWorkflowsFeature","RevisionListWorkflowsFeature","WebsiteBuilderWorkflowsMenu","PageEditorConfig","PagesList","ListOpenInNewWindow"],"mappings":";;;;;;;AAQO,MAAMA,0BAA0B,IAC5B,WAAP,GACI,oBAACC,IAAI,eAAe,sBAChB,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACC,6BAA2BA,OAAAA,WAAAA,GAC5B,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,WAASA,OAAAA,WAAAA,GACV,oBAACC,qBAAmBA"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature, Wcp } from \"@webiny/app-admin\";\nimport { WebsiteBuilderWorkflowsMenu } from \"~/Routes/index.js\";\nimport { ListOpenInNewWindow, PageEditorConfig, PagesList } from \"~/Components/index.js\";\nimport { PageListWorkflowsFeature } from \"~/presentation/page/PageList/feature.js\";\nimport { PageGetWorkflowsFeature } from \"~/presentation/page/PageGet/feature.js\";\n\nexport const WebsiteBuilderWorkflows = () => {\n return (\n <Wcp.CanUseWorkflows>\n <RegisterFeature feature={PageListWorkflowsFeature} />\n <RegisterFeature feature={PageGetWorkflowsFeature} />\n <WebsiteBuilderWorkflowsMenu />\n <PageEditorConfig />\n <PagesList />\n <ListOpenInNewWindow />\n </Wcp.CanUseWorkflows>\n );\n};\n"],"names":["WebsiteBuilderWorkflows","Wcp","RegisterFeature","PageListWorkflowsFeature","PageGetWorkflowsFeature","WebsiteBuilderWorkflowsMenu","PageEditorConfig","PagesList","ListOpenInNewWindow"],"mappings":";;;;;;AAOO,MAAMA,0BAA0B,IAC5B,WAAP,GACI,oBAACC,IAAI,eAAe,sBAChB,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACC,6BAA2BA,OAAAA,WAAAA,GAC5B,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,WAASA,OAAAA,WAAAA,GACV,oBAACC,qBAAmBA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-website-builder-workflows",
3
- "version": "6.4.12-beta.5",
3
+ "version": "6.5.0-beta.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -13,25 +13,23 @@
13
13
  "author": "Webiny Ltd",
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
- "@apollo/react-hooks": "3.1.5",
17
- "@webiny/admin-ui": "6.4.12-beta.5",
18
- "@webiny/app": "6.4.12-beta.5",
19
- "@webiny/app-admin": "6.4.12-beta.5",
20
- "@webiny/app-website-builder": "6.4.12-beta.5",
21
- "@webiny/app-workflows": "6.4.12-beta.5",
22
- "@webiny/feature": "6.4.12-beta.5",
23
- "@webiny/icons": "6.4.12-beta.5",
24
- "mobx": "7.0.3",
25
- "mobx-react-lite": "5.0.3",
16
+ "@webiny/admin-ui": "6.5.0-beta.1",
17
+ "@webiny/app": "6.5.0-beta.1",
18
+ "@webiny/app-admin": "6.5.0-beta.1",
19
+ "@webiny/app-website-builder": "6.5.0-beta.1",
20
+ "@webiny/app-workflows": "6.5.0-beta.1",
21
+ "@webiny/feature": "6.5.0-beta.1",
22
+ "@webiny/icons": "6.5.0-beta.1",
23
+ "mobx-react-lite": "4.1.1",
26
24
  "react": "18.3.1",
27
25
  "react-dom": "18.3.1",
28
26
  "react-helmet": "6.1.0"
29
27
  },
30
28
  "devDependencies": {
31
29
  "@types/react": "18.3.31",
32
- "@webiny/build-tools": "6.4.12-beta.5",
30
+ "@webiny/build-tools": "6.5.0-beta.1",
33
31
  "rimraf": "6.1.3",
34
- "typescript": "6.0.3"
32
+ "typescript": "7.0.2"
35
33
  },
36
34
  "publishConfig": {
37
35
  "access": "public"
@@ -0,0 +1,12 @@
1
+ import { TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/index.js";
2
+ import type { Page } from "@webiny/app-website-builder/domain/Page/Page.js";
3
+ import "~/types.js";
4
+ declare class TableRowMapperWithWorkflows implements TableRowMapper.Interface {
5
+ private decoratee;
6
+ constructor(decoratee: TableRowMapper.Interface);
7
+ fromPage(page: Page): TableRowMapper.TableRow;
8
+ }
9
+ export declare const TableRowMapperWorkflowDecorator: typeof TableRowMapperWithWorkflows & {
10
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions").ITableRowMapper>;
11
+ };
12
+ export {};
@@ -0,0 +1,24 @@
1
+ import { TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/index.js";
2
+ import { WorkflowStateValue } from "@webiny/app-workflows/types.js";
3
+ import "../../../types.js";
4
+ class TableRowMapperWithWorkflows {
5
+ constructor(decoratee){
6
+ this.decoratee = decoratee;
7
+ }
8
+ fromPage(page) {
9
+ const row = this.decoratee.fromPage(page);
10
+ const workflowState = page.system?.workflow?.state;
11
+ if (workflowState && workflowState !== WorkflowStateValue.approved) return {
12
+ ...row,
13
+ $selectable: false
14
+ };
15
+ return row;
16
+ }
17
+ }
18
+ const TableRowMapperWorkflowDecorator = TableRowMapper.createDecorator({
19
+ decorator: TableRowMapperWithWorkflows,
20
+ dependencies: []
21
+ });
22
+ export { TableRowMapperWorkflowDecorator };
23
+
24
+ //# sourceMappingURL=TableRowMapperDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/page/PageList/TableRowMapperDecorator.js","sources":["../../../../src/presentation/page/PageList/TableRowMapperDecorator.ts"],"sourcesContent":["import { TableRowMapper } from \"@webiny/app-website-builder/presentation/pages/PageList/index.js\";\nimport type { Page } from \"@webiny/app-website-builder/domain/Page/Page.js\";\nimport { WorkflowStateValue } from \"@webiny/app-workflows/types.js\";\nimport \"~/types.js\";\n\nclass TableRowMapperWithWorkflows implements TableRowMapper.Interface {\n constructor(private decoratee: TableRowMapper.Interface) {}\n\n fromPage(page: Page): TableRowMapper.TableRow {\n const row = this.decoratee.fromPage(page);\n\n const workflowState = page.system?.workflow?.state;\n if (workflowState && workflowState !== WorkflowStateValue.approved) {\n return { ...row, $selectable: false };\n }\n\n return row;\n }\n}\n\nexport const TableRowMapperWorkflowDecorator = TableRowMapper.createDecorator({\n decorator: TableRowMapperWithWorkflows,\n dependencies: []\n});\n"],"names":["TableRowMapperWithWorkflows","decoratee","page","row","workflowState","WorkflowStateValue","TableRowMapperWorkflowDecorator","TableRowMapper"],"mappings":";;;AAKA,MAAMA;IACF,YAAoBC,SAAmC,CAAE;aAArCA,SAAS,GAATA;IAAsC;IAE1D,SAASC,IAAU,EAA2B;QAC1C,MAAMC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAACD;QAEpC,MAAME,gBAAgBF,KAAK,MAAM,EAAE,UAAU;QAC7C,IAAIE,iBAAiBA,kBAAkBC,mBAAmB,QAAQ,EAC9D,OAAO;YAAE,GAAGF,GAAG;YAAE,aAAa;QAAM;QAGxC,OAAOA;IACX;AACJ;AAEO,MAAMG,kCAAkCC,eAAe,eAAe,CAAC;IAC1E,WAAWP;IACX,cAAc,EAAE;AACpB"}
@@ -1,8 +1,8 @@
1
- import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/loadPages/abstractions.js";
1
+ import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
2
2
  declare class WorkflowStatesListPagesGraphQLFieldSelection implements ListPagesGraphQLFieldSelection.Interface {
3
3
  getSelection(): string[];
4
4
  }
5
5
  export declare const WorkflowStateListPagesFieldSelection: typeof WorkflowStatesListPagesGraphQLFieldSelection & {
6
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/features/pages/loadPages/abstractions.js").IListPagesGraphQLFieldSelection>;
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/features/pages/listPages/abstractions.js").IListPagesGraphQLFieldSelection>;
7
7
  };
8
8
  export {};
@@ -1,4 +1,4 @@
1
- import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/loadPages/abstractions.js";
1
+ import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
2
2
  class WorkflowStatesListPagesGraphQLFieldSelection {
3
3
  getSelection() {
4
4
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/page/PageList/WorkflowStateListPagesFieldSelection.js","sources":["../../../../src/presentation/page/PageList/WorkflowStateListPagesFieldSelection.ts"],"sourcesContent":["import { ListPagesGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/loadPages/abstractions.js\";\n\nclass WorkflowStatesListPagesGraphQLFieldSelection\n implements ListPagesGraphQLFieldSelection.Interface\n{\n getSelection(): string[] {\n return [\n `system {\n workflow {\n workflowId\n stepId\n stepName\n state\n }\n }`\n ];\n }\n}\n\nexport const WorkflowStateListPagesFieldSelection =\n ListPagesGraphQLFieldSelection.createImplementation({\n dependencies: [],\n implementation: WorkflowStatesListPagesGraphQLFieldSelection\n });\n"],"names":["WorkflowStatesListPagesGraphQLFieldSelection","WorkflowStateListPagesFieldSelection","ListPagesGraphQLFieldSelection"],"mappings":";AAEA,MAAMA;IAGF,eAAyB;QACrB,OAAO;YACH,CAAC;;;;;;;aAOA,CAAC;SACL;IACL;AACJ;AAEO,MAAMC,uCACTC,+BAA+B,oBAAoB,CAAC;IAChD,cAAc,EAAE;IAChB,gBAAgBF;AACpB"}
1
+ {"version":3,"file":"presentation/page/PageList/WorkflowStateListPagesFieldSelection.js","sources":["../../../../src/presentation/page/PageList/WorkflowStateListPagesFieldSelection.ts"],"sourcesContent":["import { ListPagesGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/listPages/abstractions.js\";\n\nclass WorkflowStatesListPagesGraphQLFieldSelection\n implements ListPagesGraphQLFieldSelection.Interface\n{\n getSelection(): string[] {\n return [\n `system {\n workflow {\n workflowId\n stepId\n stepName\n state\n }\n }`\n ];\n }\n}\n\nexport const WorkflowStateListPagesFieldSelection =\n ListPagesGraphQLFieldSelection.createImplementation({\n dependencies: [],\n implementation: WorkflowStatesListPagesGraphQLFieldSelection\n });\n"],"names":["WorkflowStatesListPagesGraphQLFieldSelection","WorkflowStateListPagesFieldSelection","ListPagesGraphQLFieldSelection"],"mappings":";AAEA,MAAMA;IAGF,eAAyB;QACrB,OAAO;YACH,CAAC;;;;;;;aAOA,CAAC;SACL;IACL;AACJ;AAEO,MAAMC,uCACTC,+BAA+B,oBAAoB,CAAC;IAChD,cAAc,EAAE;IAChB,gBAAgBF;AACpB"}
@@ -1,11 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/admin";
2
- import { PageListPresenterDecorator } from "./PageListPresenterDecorator.js";
3
2
  import { WorkflowStateListPagesFieldSelection } from "./WorkflowStateListPagesFieldSelection.js";
3
+ import { TableRowMapperWorkflowDecorator } from "./TableRowMapperDecorator.js";
4
4
  const PageListWorkflowsFeature = createFeature({
5
5
  name: "PageListWorkflows",
6
6
  register (container) {
7
- container.registerDecorator(PageListPresenterDecorator);
8
7
  container.register(WorkflowStateListPagesFieldSelection);
8
+ container.registerDecorator(TableRowMapperWorkflowDecorator);
9
9
  }
10
10
  });
11
11
  export { PageListWorkflowsFeature };
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/page/PageList/feature.js","sources":["../../../../src/presentation/page/PageList/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { PageListPresenterDecorator } from \"./PageListPresenterDecorator.js\";\nimport { WorkflowStateListPagesFieldSelection } from \"./WorkflowStateListPagesFieldSelection.js\";\n\nexport const PageListWorkflowsFeature = createFeature({\n name: \"PageListWorkflows\",\n register(container) {\n container.registerDecorator(PageListPresenterDecorator);\n container.register(WorkflowStateListPagesFieldSelection);\n }\n});\n"],"names":["PageListWorkflowsFeature","createFeature","container","PageListPresenterDecorator","WorkflowStateListPagesFieldSelection"],"mappings":";;;AAIO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,iBAAiB,CAACC;QAC5BD,UAAU,QAAQ,CAACE;IACvB;AACJ"}
1
+ {"version":3,"file":"presentation/page/PageList/feature.js","sources":["../../../../src/presentation/page/PageList/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WorkflowStateListPagesFieldSelection } from \"./WorkflowStateListPagesFieldSelection.js\";\nimport { TableRowMapperWorkflowDecorator } from \"./TableRowMapperDecorator.js\";\n\nexport const PageListWorkflowsFeature = createFeature({\n name: \"PageListWorkflows\",\n register(container) {\n container.register(WorkflowStateListPagesFieldSelection);\n container.registerDecorator(TableRowMapperWorkflowDecorator);\n }\n});\n"],"names":["PageListWorkflowsFeature","createFeature","container","WorkflowStateListPagesFieldSelection","TableRowMapperWorkflowDecorator"],"mappings":";;;AAIO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,iBAAiB,CAACE;IAChC;AACJ"}
package/types.d.ts CHANGED
@@ -1,29 +1,15 @@
1
1
  import type { WorkflowStateValue } from "@webiny/app-workflows/types.js";
2
- export interface IRecordWorkflowStateIdentity {
3
- id: string;
4
- displayName: string;
5
- type: string;
6
- }
7
- export interface IRecordWorkflowState {
2
+ export interface IPageWorkflowState {
8
3
  workflowId: string;
9
4
  stepId: string;
5
+ stepName: string;
10
6
  state: WorkflowStateValue;
11
- savedBy?: IRecordWorkflowStateIdentity | null;
12
- }
13
- export interface IRecordWorkflow {
14
- state?: IRecordWorkflowState | null;
15
7
  }
16
8
  export type WithWorkflows<T> = T & {
17
- workflows: IRecordWorkflow | null;
18
- $selectable: boolean;
9
+ workflow: IPageWorkflowState | null;
19
10
  };
20
11
  declare module "@webiny/app-website-builder/types.js" {
21
- interface WbSystem {
22
- workflow: IRecordWorkflow | null;
23
- }
24
- }
25
- declare module "@webiny/app-website-builder/domain/Page/PageDto.js" {
26
- interface PageDto {
27
- $selectable: boolean;
12
+ interface WbPageSystem {
13
+ workflow: IPageWorkflowState | null;
28
14
  }
29
15
  }
@@ -1,13 +0,0 @@
1
- import { IDocumentListPresenterInit, IDocumentListVm, PageListPresenter } from "@webiny/app-website-builder/presentation/pages/PageList/index.js";
2
- declare class PageListPresenterWithWorkflows implements PageListPresenter.Interface {
3
- private readonly decoratee;
4
- constructor(decoratee: PageListPresenter.Interface);
5
- get vm(): IDocumentListVm;
6
- init(params: IDocumentListPresenterInit): void;
7
- showFilters(show: boolean): void;
8
- private decoratePage;
9
- }
10
- export declare const PageListPresenterDecorator: typeof PageListPresenterWithWorkflows & {
11
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/presentation/pages/PageList/abstractions").IDocumentListPresenter>;
12
- };
13
- export {};
@@ -1,38 +0,0 @@
1
- import { makeAutoObservable } from "mobx";
2
- import { PageListPresenter } from "@webiny/app-website-builder/presentation/pages/PageList/index.js";
3
- class PageListPresenterWithWorkflows {
4
- constructor(decoratee){
5
- this.decoratee = decoratee;
6
- makeAutoObservable(this);
7
- }
8
- get vm() {
9
- const vm = this.decoratee.vm;
10
- return {
11
- ...vm,
12
- data: vm.data.map((page)=>this.decoratePage(page))
13
- };
14
- }
15
- init(params) {
16
- this.decoratee.init(params);
17
- }
18
- showFilters(show) {
19
- this.decoratee.showFilters(show);
20
- }
21
- decoratePage(page) {
22
- return {
23
- ...page,
24
- system: {
25
- ...page.system,
26
- workflow: page.system?.workflow || null
27
- },
28
- $selectable: !page.system?.workflow?.state
29
- };
30
- }
31
- }
32
- const PageListPresenterDecorator = PageListPresenter.createDecorator({
33
- decorator: PageListPresenterWithWorkflows,
34
- dependencies: []
35
- });
36
- export { PageListPresenterDecorator };
37
-
38
- //# sourceMappingURL=PageListPresenterDecorator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presentation/page/PageList/PageListPresenterDecorator.js","sources":["../../../../src/presentation/page/PageList/PageListPresenterDecorator.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport {\n IDocumentListPresenterInit,\n IDocumentListVm,\n PageListPresenter\n} from \"@webiny/app-website-builder/presentation/pages/PageList/index.js\";\nimport type { PageDto } from \"@webiny/app-website-builder/domain/Page/index.js\";\n\nclass PageListPresenterWithWorkflows implements PageListPresenter.Interface {\n private readonly decoratee;\n\n public constructor(decoratee: PageListPresenter.Interface) {\n this.decoratee = decoratee;\n makeAutoObservable(this);\n }\n\n public get vm(): IDocumentListVm {\n const vm = this.decoratee.vm;\n return {\n ...vm,\n data: vm.data.map(page => {\n return this.decoratePage(page);\n })\n };\n }\n\n public init(params: IDocumentListPresenterInit): void {\n this.decoratee.init(params);\n }\n\n public showFilters(show: boolean): void {\n this.decoratee.showFilters(show);\n }\n\n private decoratePage(page: PageDto): PageDto {\n return {\n ...page,\n system: {\n ...page.system,\n workflow: page.system?.workflow || null\n },\n $selectable: !page.system?.workflow?.state\n };\n }\n}\n\nexport const PageListPresenterDecorator = PageListPresenter.createDecorator({\n decorator: PageListPresenterWithWorkflows,\n dependencies: []\n});\n"],"names":["PageListPresenterWithWorkflows","decoratee","makeAutoObservable","vm","page","params","show","PageListPresenterDecorator","PageListPresenter"],"mappings":";;AAQA,MAAMA;IAGF,YAAmBC,SAAsC,CAAE;QACvD,IAAI,CAAC,SAAS,GAAGA;QACjBC,mBAAmB,IAAI;IAC3B;IAEA,IAAW,KAAsB;QAC7B,MAAMC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE;QAC5B,OAAO;YACH,GAAGA,EAAE;YACL,MAAMA,GAAG,IAAI,CAAC,GAAG,CAACC,CAAAA,OACP,IAAI,CAAC,YAAY,CAACA;QAEjC;IACJ;IAEO,KAAKC,MAAkC,EAAQ;QAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA;IACxB;IAEO,YAAYC,IAAa,EAAQ;QACpC,IAAI,CAAC,SAAS,CAAC,WAAW,CAACA;IAC/B;IAEQ,aAAaF,IAAa,EAAW;QACzC,OAAO;YACH,GAAGA,IAAI;YACP,QAAQ;gBACJ,GAAGA,KAAK,MAAM;gBACd,UAAUA,KAAK,MAAM,EAAE,YAAY;YACvC;YACA,aAAa,CAACA,KAAK,MAAM,EAAE,UAAU;QACzC;IACJ;AACJ;AAEO,MAAMG,6BAA6BC,kBAAkB,eAAe,CAAC;IACxE,WAAWR;IACX,cAAc,EAAE;AACpB"}
@@ -1,21 +0,0 @@
1
- import { type IRevisionListPresenterInit, type IRevisionListVm, RevisionListPresenter } from "@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js";
2
- /**
3
- * Publishing a page revision straight from the revisions drawer bypasses the workflow: the top bar
4
- * hides its own Publish button while a review is in progress, but the drawer knew nothing about
5
- * workflows and kept offering the action.
6
- *
7
- * This decorator is registered only from within `Wcp.CanUseWorkflows`, so its presence already
8
- * means workflows are enabled for the project. That is a blunt rule - it also hides the action on
9
- * a page no workflow applies to - but it is the safe direction while the drawer has no access to
10
- * the per-page workflow state. Publishing remains available from the top bar, which does know it.
11
- */
12
- declare class RevisionListPresenterWithWorkflows implements RevisionListPresenter.Interface {
13
- private readonly decoratee;
14
- constructor(decoratee: RevisionListPresenter.Interface);
15
- get vm(): IRevisionListVm;
16
- init(params: IRevisionListPresenterInit): void;
17
- }
18
- export declare const RevisionListPresenterDecorator: typeof RevisionListPresenterWithWorkflows & {
19
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js").IRevisionListPresenter>;
20
- };
21
- export {};
@@ -1,28 +0,0 @@
1
- import { makeAutoObservable } from "mobx";
2
- import { RevisionListPresenter } from "@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js";
3
- class RevisionListPresenterWithWorkflows {
4
- constructor(decoratee){
5
- this.decoratee = decoratee;
6
- makeAutoObservable(this);
7
- }
8
- get vm() {
9
- const vm = this.decoratee.vm;
10
- return {
11
- ...vm,
12
- revisions: vm.revisions.map((item)=>({
13
- ...item,
14
- canPublish: false
15
- }))
16
- };
17
- }
18
- init(params) {
19
- this.decoratee.init(params);
20
- }
21
- }
22
- const RevisionListPresenterDecorator = RevisionListPresenter.createDecorator({
23
- decorator: RevisionListPresenterWithWorkflows,
24
- dependencies: []
25
- });
26
- export { RevisionListPresenterDecorator };
27
-
28
- //# sourceMappingURL=RevisionListPresenterDecorator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presentation/page/RevisionList/RevisionListPresenterDecorator.js","sources":["../../../../src/presentation/page/RevisionList/RevisionListPresenterDecorator.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport {\n type IRevisionListPresenterInit,\n type IRevisionListVm,\n RevisionListPresenter\n} from \"@webiny/app-website-builder/presentation/pages/RevisionList/abstractions.js\";\n\n/**\n * Publishing a page revision straight from the revisions drawer bypasses the workflow: the top bar\n * hides its own Publish button while a review is in progress, but the drawer knew nothing about\n * workflows and kept offering the action.\n *\n * This decorator is registered only from within `Wcp.CanUseWorkflows`, so its presence already\n * means workflows are enabled for the project. That is a blunt rule - it also hides the action on\n * a page no workflow applies to - but it is the safe direction while the drawer has no access to\n * the per-page workflow state. Publishing remains available from the top bar, which does know it.\n */\nclass RevisionListPresenterWithWorkflows implements RevisionListPresenter.Interface {\n private readonly decoratee;\n\n public constructor(decoratee: RevisionListPresenter.Interface) {\n this.decoratee = decoratee;\n makeAutoObservable(this);\n }\n\n public get vm(): IRevisionListVm {\n const vm = this.decoratee.vm;\n\n return {\n ...vm,\n revisions: vm.revisions.map(item => {\n return {\n ...item,\n canPublish: false\n };\n })\n };\n }\n\n public init(params: IRevisionListPresenterInit): void {\n this.decoratee.init(params);\n }\n}\n\nexport const RevisionListPresenterDecorator = RevisionListPresenter.createDecorator({\n decorator: RevisionListPresenterWithWorkflows,\n dependencies: []\n});\n"],"names":["RevisionListPresenterWithWorkflows","decoratee","makeAutoObservable","vm","item","params","RevisionListPresenterDecorator","RevisionListPresenter"],"mappings":";;AAiBA,MAAMA;IAGF,YAAmBC,SAA0C,CAAE;QAC3D,IAAI,CAAC,SAAS,GAAGA;QACjBC,mBAAmB,IAAI;IAC3B;IAEA,IAAW,KAAsB;QAC7B,MAAMC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE;QAE5B,OAAO;YACH,GAAGA,EAAE;YACL,WAAWA,GAAG,SAAS,CAAC,GAAG,CAACC,CAAAA,OACjB;oBACH,GAAGA,IAAI;oBACP,YAAY;gBAChB;QAER;IACJ;IAEO,KAAKC,MAAkC,EAAQ;QAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA;IACxB;AACJ;AAEO,MAAMC,iCAAiCC,sBAAsB,eAAe,CAAC;IAChF,WAAWP;IACX,cAAc,EAAE;AACpB"}
@@ -1 +0,0 @@
1
- export declare const RevisionListWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -1,11 +0,0 @@
1
- import { createFeature } from "@webiny/feature/admin";
2
- import { RevisionListPresenterDecorator } from "./RevisionListPresenterDecorator.js";
3
- const RevisionListWorkflowsFeature = createFeature({
4
- name: "RevisionListWorkflows",
5
- register (container) {
6
- container.registerDecorator(RevisionListPresenterDecorator);
7
- }
8
- });
9
- export { RevisionListWorkflowsFeature };
10
-
11
- //# sourceMappingURL=feature.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presentation/page/RevisionList/feature.js","sources":["../../../../src/presentation/page/RevisionList/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { RevisionListPresenterDecorator } from \"./RevisionListPresenterDecorator.js\";\n\nexport const RevisionListWorkflowsFeature = createFeature({\n name: \"RevisionListWorkflows\",\n register(container) {\n container.registerDecorator(RevisionListPresenterDecorator);\n }\n});\n"],"names":["RevisionListWorkflowsFeature","createFeature","container","RevisionListPresenterDecorator"],"mappings":";;AAGO,MAAMA,+BAA+BC,cAAc;IACtD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,iBAAiB,CAACC;IAChC;AACJ"}