@webiny/app-website-builder-workflows 0.0.0-unstable.0d717d18dd

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 (84) hide show
  1. package/Components/OptionItem/OpenInNewWindow.d.ts +2 -0
  2. package/Components/OptionItem/OpenInNewWindow.js +34 -0
  3. package/Components/OptionItem/OpenInNewWindow.js.map +1 -0
  4. package/Components/OptionItem/index.d.ts +1 -0
  5. package/Components/OptionItem/index.js +1 -0
  6. package/Components/PageEditor/PageEditorAutoSave.d.ts +2 -0
  7. package/Components/PageEditor/PageEditorAutoSave.js +22 -0
  8. package/Components/PageEditor/PageEditorAutoSave.js.map +1 -0
  9. package/Components/PageEditor/PageEditorConfig.d.ts +2 -0
  10. package/Components/PageEditor/PageEditorConfig.js +11 -0
  11. package/Components/PageEditor/PageEditorConfig.js.map +1 -0
  12. package/Components/PageEditor/PageEditorLayout.d.ts +2 -0
  13. package/Components/PageEditor/PageEditorLayout.js +26 -0
  14. package/Components/PageEditor/PageEditorLayout.js.map +1 -0
  15. package/Components/PageEditor/PageEditorTopBar.d.ts +2 -0
  16. package/Components/PageEditor/PageEditorTopBar.js +28 -0
  17. package/Components/PageEditor/PageEditorTopBar.js.map +1 -0
  18. package/Components/PageEditor/PageFormWorkflowState.d.ts +4 -0
  19. package/Components/PageEditor/PageFormWorkflowState.js +18 -0
  20. package/Components/PageEditor/PageFormWorkflowState.js.map +1 -0
  21. package/Components/PageEditor/PageFormWorkflowStatePublishButton.d.ts +2 -0
  22. package/Components/PageEditor/PageFormWorkflowStatePublishButton.js +22 -0
  23. package/Components/PageEditor/PageFormWorkflowStatePublishButton.js.map +1 -0
  24. package/Components/PageEditor/PageFormWorkflowStateTooltip.d.ts +2 -0
  25. package/Components/PageEditor/PageFormWorkflowStateTooltip.js +14 -0
  26. package/Components/PageEditor/PageFormWorkflowStateTooltip.js.map +1 -0
  27. package/Components/PageEditor/ToggleEditorMode.d.ts +3 -0
  28. package/Components/PageEditor/ToggleEditorMode.js +21 -0
  29. package/Components/PageEditor/ToggleEditorMode.js.map +1 -0
  30. package/Components/PageWorkflows/PageWorkflowsEditorView.d.ts +3 -0
  31. package/Components/PageWorkflows/PageWorkflowsEditorView.js +54 -0
  32. package/Components/PageWorkflows/PageWorkflowsEditorView.js.map +1 -0
  33. package/Components/PageWorkflows/index.d.ts +1 -0
  34. package/Components/PageWorkflows/index.js +1 -0
  35. package/Components/PagesList/PageListChangeStatus.d.ts +2 -0
  36. package/Components/PagesList/PageListChangeStatus.js +23 -0
  37. package/Components/PagesList/PageListChangeStatus.js.map +1 -0
  38. package/Components/PagesList/PagesList.d.ts +2 -0
  39. package/Components/PagesList/PagesList.js +8 -0
  40. package/Components/PagesList/PagesList.js.map +1 -0
  41. package/Components/PagesList/PagesListContentReviews.d.ts +2 -0
  42. package/Components/PagesList/PagesListContentReviews.js +26 -0
  43. package/Components/PagesList/PagesListContentReviews.js.map +1 -0
  44. package/Components/PagesList/index.d.ts +1 -0
  45. package/Components/PagesList/index.js +1 -0
  46. package/Components/index.d.ts +3 -0
  47. package/Components/index.js +3 -0
  48. package/LICENSE +21 -0
  49. package/README.md +11 -0
  50. package/Routes/WebsiteBuilderWorkflowsMenu.d.ts +2 -0
  51. package/Routes/WebsiteBuilderWorkflowsMenu.js +32 -0
  52. package/Routes/WebsiteBuilderWorkflowsMenu.js.map +1 -0
  53. package/Routes/index.d.ts +1 -0
  54. package/Routes/index.js +1 -0
  55. package/constants.d.ts +1 -0
  56. package/constants.js +4 -0
  57. package/constants.js.map +1 -0
  58. package/hooks/usePage.d.ts +5 -0
  59. package/hooks/usePage.js +15 -0
  60. package/hooks/usePage.js.map +1 -0
  61. package/index.d.ts +2 -0
  62. package/index.js +14 -0
  63. package/index.js.map +1 -0
  64. package/package.json +46 -0
  65. package/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.d.ts +8 -0
  66. package/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.js +22 -0
  67. package/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.js.map +1 -0
  68. package/presentation/page/PageGet/feature.d.ts +1 -0
  69. package/presentation/page/PageGet/feature.js +11 -0
  70. package/presentation/page/PageGet/feature.js.map +1 -0
  71. package/presentation/page/PageList/TableRowMapperDecorator.d.ts +12 -0
  72. package/presentation/page/PageList/TableRowMapperDecorator.js +24 -0
  73. package/presentation/page/PageList/TableRowMapperDecorator.js.map +1 -0
  74. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.d.ts +8 -0
  75. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js +22 -0
  76. package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js.map +1 -0
  77. package/presentation/page/PageList/feature.d.ts +1 -0
  78. package/presentation/page/PageList/feature.js +13 -0
  79. package/presentation/page/PageList/feature.js.map +1 -0
  80. package/routes.d.ts +9 -0
  81. package/routes.js +19 -0
  82. package/routes.js.map +1 -0
  83. package/types.d.ts +15 -0
  84. package/types.js +0 -0
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const ListOpenInNewWindow: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,34 @@
1
+ import react, { useCallback } from "react";
2
+ import { DropdownMenu, Icon } from "@webiny/admin-ui";
3
+ import { Components } from "@webiny/app-workflows";
4
+ import { ReactComponent } from "@webiny/icons/open_in_new.svg";
5
+ import { useRouter } from "@webiny/app";
6
+ import { Routes } from "@webiny/app-website-builder/routes.js";
7
+ import { WB_PAGE_APP } from "../../constants.js";
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 url = getLink(Routes.Pages.Editor, {
14
+ id: state.targetRevisionId,
15
+ folderId: "root"
16
+ });
17
+ const goTo = `${window.location.origin}${url}`;
18
+ window.open(goTo, "_blank");
19
+ }, [
20
+ state.id
21
+ ]);
22
+ if (state.app !== WB_PAGE_APP) return /*#__PURE__*/ react.createElement(Original, props);
23
+ return /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
24
+ icon: /*#__PURE__*/ react.createElement(Icon, {
25
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
26
+ label: "Open In New Window"
27
+ }),
28
+ text: "Open in New Window",
29
+ onClick: onClick
30
+ });
31
+ });
32
+ export { OpenInNewWindow_ListOpenInNewWindow as ListOpenInNewWindow };
33
+
34
+ //# sourceMappingURL=OpenInNewWindow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/OptionItem/OpenInNewWindow.js","sources":["../../../src/Components/OptionItem/OpenInNewWindow.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { DropdownMenu, Icon } from \"@webiny/admin-ui\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { ReactComponent as OpenInNewIcon } from \"@webiny/icons/open_in_new.svg\";\nimport { useRouter } from \"@webiny/app\";\nimport { Routes } from \"@webiny/app-website-builder/routes.js\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\n\nconst { OpenInNewWindow } = Components.List.Options;\n\nexport const ListOpenInNewWindow = OpenInNewWindow.createDecorator(Original => {\n return function ListOpenInNewWindow(props) {\n const { state } = props;\n\n const { getLink } = useRouter();\n const onClick = useCallback(() => {\n const url = getLink(Routes.Pages.Editor, {\n id: state.targetRevisionId,\n folderId: \"root\"\n });\n\n const goTo = `${window.location.origin}${url}`;\n\n window.open(goTo, \"_blank\");\n }, [state.id]);\n\n if (state.app !== WB_PAGE_APP) {\n return <Original {...props} />;\n }\n\n return (\n <DropdownMenu.Item\n icon={<Icon icon={<OpenInNewIcon />} label={\"Open In New Window\"} />}\n text={\"Open in New Window\"}\n onClick={onClick}\n />\n );\n };\n});\n"],"names":["OpenInNewWindow","Components","ListOpenInNewWindow","Original","props","state","getLink","useRouter","onClick","useCallback","url","Routes","goTo","window","WB_PAGE_APP","DropdownMenu","Icon","OpenInNewIcon"],"mappings":";;;;;;;AAQA,MAAM,EAAEA,iBAAAA,eAAe,EAAE,GAAGC,WAAW,IAAI,CAAC,OAAO;AAE5C,MAAMC,sCAAsBF,gBAAgB,eAAe,CAACG,CAAAA,WACxD,SAA6BC,KAAK;QACrC,MAAM,EAAEC,KAAK,EAAE,GAAGD;QAElB,MAAM,EAAEE,OAAO,EAAE,GAAGC;QACpB,MAAMC,UAAUC,YAAY;YACxB,MAAMC,MAAMJ,QAAQK,OAAO,KAAK,CAAC,MAAM,EAAE;gBACrC,IAAIN,MAAM,gBAAgB;gBAC1B,UAAU;YACd;YAEA,MAAMO,OAAO,GAAGC,OAAO,QAAQ,CAAC,MAAM,GAAGH,KAAK;YAE9CG,OAAO,IAAI,CAACD,MAAM;QACtB,GAAG;YAACP,MAAM,EAAE;SAAC;QAEb,IAAIA,MAAM,GAAG,KAAKS,aACd,OAAO,WAAP,GAAO,oBAACX,UAAaC;QAGzB,OAAO,WAAP,GACI,oBAACW,aAAa,IAAI;YACd,oBAAM,oBAACC,MAAIA;gBAAC,oBAAM,oBAACC,gBAAaA;gBAAK,OAAO;;YAC5C,MAAM;YACN,SAAST;;IAGrB"}
@@ -0,0 +1 @@
1
+ export { ListOpenInNewWindow } from "./OpenInNewWindow.js";
@@ -0,0 +1 @@
1
+ export { ListOpenInNewWindow } from "./OpenInNewWindow.js";
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageEditorAutoSave: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,22 @@
1
+ import react from "react";
2
+ import { PageEditorConfig } from "@webiny/app-website-builder";
3
+ import { useWorkflowState } from "@webiny/app-workflows";
4
+ import { observer } from "mobx-react-lite";
5
+ const { Ui: Ui } = PageEditorConfig;
6
+ const WrappedAutoSave = observer((props)=>{
7
+ const { presenter } = useWorkflowState();
8
+ if (!presenter.vm.hasState) return props.element;
9
+ return null;
10
+ });
11
+ const PageEditorAutoSave = Ui.TopBar.Element.createDecorator((Original)=>function(props) {
12
+ if ("autoSave" === props.name) return /*#__PURE__*/ react.createElement(Original, {
13
+ ...props,
14
+ element: /*#__PURE__*/ react.createElement(WrappedAutoSave, {
15
+ element: props.element
16
+ })
17
+ });
18
+ return /*#__PURE__*/ react.createElement(Original, props);
19
+ });
20
+ export { PageEditorAutoSave };
21
+
22
+ //# sourceMappingURL=PageEditorAutoSave.js.map
@@ -0,0 +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.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"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageEditorConfig: () => React.JSX.Element;
@@ -0,0 +1,11 @@
1
+ import react from "react";
2
+ import { PageEditorConfig } from "@webiny/app-website-builder";
3
+ import { PageFormWorkflowStateTooltip } from "./PageFormWorkflowStateTooltip.js";
4
+ import { PageFormWorkflowStatePublishButton } from "./PageFormWorkflowStatePublishButton.js";
5
+ import { PageEditorTopBar } from "./PageEditorTopBar.js";
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 };
10
+
11
+ //# sourceMappingURL=PageEditorConfig.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageEditorTopBar: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,28 @@
1
+ import react, { useEffect } from "react";
2
+ import { PageEditorConfig } from "@webiny/app-website-builder";
3
+ import { useSelectFromDocument } from "@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js";
4
+ import { useWorkflowState } from "@webiny/app-workflows";
5
+ import { WB_PAGE_APP } from "../../constants.js";
6
+ import { PageFormWorkflowState } from "./PageFormWorkflowState.js";
7
+ import { ToggleEditorMode } from "./ToggleEditorMode.js";
8
+ import { WbPageStatus } from "@webiny/app-website-builder/constants.js";
9
+ const { Ui: Ui } = PageEditorConfig;
10
+ const PageEditorTopBar = Ui.TopBar.Layout.createDecorator((Original)=>function() {
11
+ const page = useSelectFromDocument((doc)=>({
12
+ id: doc.id,
13
+ title: doc.properties.title || "unknown page",
14
+ status: doc.status || "draft"
15
+ }));
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));
25
+ });
26
+ export { PageEditorTopBar };
27
+
28
+ //# sourceMappingURL=PageEditorTopBar.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export declare const PageFormWorkflowState: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => React.JSX.Element;
4
+ };
@@ -0,0 +1,18 @@
1
+ import react from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { Alert } from "@webiny/admin-ui";
4
+ import { Components, useWorkflowState } from "@webiny/app-workflows";
5
+ const { ContentReview: { WorkflowStateBar: WorkflowStateBar } } = Components;
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
+ });
16
+ export { PageFormWorkflowState };
17
+
18
+ //# sourceMappingURL=PageFormWorkflowState.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageFormWorkflowStatePublishButton: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,22 @@
1
+ import react from "react";
2
+ import { PageEditorConfig } from "@webiny/app-website-builder";
3
+ import { useWorkflowState } from "@webiny/app-workflows";
4
+ import { observer } from "mobx-react-lite";
5
+ const { Ui: Ui } = PageEditorConfig;
6
+ const WrappedPublishButton = observer((props)=>{
7
+ const { presenter } = useWorkflowState();
8
+ if (!presenter.vm.hasWorkflow || presenter.vm.isApproved) return props.element;
9
+ return null;
10
+ });
11
+ const PageFormWorkflowStatePublishButton = Ui.TopBar.Action.createDecorator((Original)=>function(props) {
12
+ if ("buttonPublish" === props.name) return /*#__PURE__*/ react.createElement(Original, {
13
+ ...props,
14
+ element: /*#__PURE__*/ react.createElement(WrappedPublishButton, {
15
+ element: props.element
16
+ })
17
+ });
18
+ return /*#__PURE__*/ react.createElement(Original, props);
19
+ });
20
+ export { PageFormWorkflowStatePublishButton };
21
+
22
+ //# sourceMappingURL=PageFormWorkflowStatePublishButton.js.map
@@ -0,0 +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 } 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"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageFormWorkflowStateTooltip: () => React.JSX.Element;
@@ -0,0 +1,14 @@
1
+ import react from "react";
2
+ import { Components } from "@webiny/app-workflows";
3
+ import { PageEditorConfig } from "@webiny/app-website-builder";
4
+ const { ContentReview: { WorkflowStateTooltip: WorkflowStateTooltip } } = Components;
5
+ const { Ui: Ui } = PageEditorConfig;
6
+ const TooltipButton = ()=>/*#__PURE__*/ react.createElement(WorkflowStateTooltip, null);
7
+ const PageFormWorkflowStateTooltip = ()=>/*#__PURE__*/ react.createElement(Ui.TopBar.Action, {
8
+ before: "buttonPublish",
9
+ name: "buttonWorkflowStateTooltip",
10
+ element: /*#__PURE__*/ react.createElement(TooltipButton, null)
11
+ });
12
+ export { PageFormWorkflowStateTooltip };
13
+
14
+ //# sourceMappingURL=PageFormWorkflowStateTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/PageEditor/PageFormWorkflowStateTooltip.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowStateTooltip.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Ui } = PageEditorConfig;\n\nconst TooltipButton = () => {\n return <WorkflowStateTooltip />;\n};\n\nexport const PageFormWorkflowStateTooltip = () => {\n return (\n <Ui.TopBar.Action\n before={\"buttonPublish\"}\n name={\"buttonWorkflowStateTooltip\"}\n element={<TooltipButton />}\n />\n );\n};\n"],"names":["WorkflowStateTooltip","Components","Ui","PageEditorConfig","TooltipButton","PageFormWorkflowStateTooltip"],"mappings":";;;AAIA,MAAM,EACF,eAAe,EAAEA,sBAAAA,oBAAoB,EAAE,EAC1C,GAAGC;AAEJ,MAAM,EAAEC,IAAAA,EAAE,EAAE,GAAGC;AAEf,MAAMC,gBAAgB,IACX,WAAP,GAAO,oBAACJ,sBAAoBA;AAGzB,MAAMK,+BAA+B,IACjC,WAAP,GACI,oBAACH,GAAG,MAAM,CAAC,MAAM;QACb,QAAQ;QACR,MAAM;QACN,uBAAS,oBAACE,eAAaA"}
@@ -0,0 +1,3 @@
1
+ export declare const ToggleEditorMode: (() => null) & import("react").NamedExoticComponent<unknown> & {
2
+ readonly type: () => null;
3
+ };
@@ -0,0 +1,21 @@
1
+ import { useEffect } from "react";
2
+ import { observer } from "mobx-react-lite";
3
+ import { useWorkflowState } from "@webiny/app-workflows";
4
+ import { useDocumentEditor } from "@webiny/app-website-builder/DocumentEditor/index.js";
5
+ const ToggleEditorMode = observer(()=>{
6
+ const { presenter } = useWorkflowState();
7
+ const editor = useDocumentEditor();
8
+ const hasState = presenter.vm.hasState;
9
+ useEffect(()=>{
10
+ const options = editor.getEditorOptions();
11
+ editor.updateEditor((state)=>{
12
+ state.isReadOnly = options.isReadOnly || hasState;
13
+ });
14
+ }, [
15
+ hasState
16
+ ]);
17
+ return null;
18
+ });
19
+ export { ToggleEditorMode };
20
+
21
+ //# sourceMappingURL=ToggleEditorMode.js.map
@@ -0,0 +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 } 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"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const PageWorkflowsEditorMenu: () => React.JSX.Element;
3
+ export declare const PageWorkflowsEditorView: () => React.JSX.Element;
@@ -0,0 +1,54 @@
1
+ import react, { useCallback, useMemo } from "react";
2
+ import { AdminConfig, useRoute, useRouter } from "@webiny/app-admin";
3
+ import { Routes } from "../../routes.js";
4
+ import { Components } from "@webiny/app-workflows";
5
+ import { Icon } from "@webiny/admin-ui";
6
+ import { ReactComponent } from "@webiny/icons/workspaces.svg";
7
+ import { WB_PAGE_APP } from "../../constants.js";
8
+ const { Admin: { WorkflowsEditor: WorkflowsEditor } } = Components;
9
+ const { Menu: Menu } = AdminConfig;
10
+ const PageWorkflowsEditorMenu = ()=>{
11
+ const router = useRouter();
12
+ return /*#__PURE__*/ react.createElement(Menu, {
13
+ name: "websiteBuilder.pages.workflows",
14
+ pinnable: true,
15
+ parent: "wb",
16
+ element: /*#__PURE__*/ react.createElement(Menu.Link, {
17
+ text: "Workflows",
18
+ to: router.getLink(Routes.Pages.Workflows)
19
+ })
20
+ });
21
+ };
22
+ const PageWorkflowsEditorView = ()=>{
23
+ const { route } = useRoute(Routes.Pages.Workflows);
24
+ const { goToRoute } = useRouter();
25
+ const apps = useMemo(()=>[
26
+ {
27
+ id: WB_PAGE_APP,
28
+ name: "Pages",
29
+ icon: /*#__PURE__*/ react.createElement(Icon, {
30
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
31
+ label: "Pages Workflows"
32
+ })
33
+ }
34
+ ], []);
35
+ const onAppClick = useCallback((id)=>{
36
+ goToRoute(Routes.Pages.Workflows, {
37
+ app: id
38
+ });
39
+ }, [
40
+ apps
41
+ ]);
42
+ const app = useMemo(()=>apps.find((a)=>a.id === route.params.app) || apps[0], [
43
+ route.params.app,
44
+ apps
45
+ ]);
46
+ return /*#__PURE__*/ react.createElement(WorkflowsEditor, {
47
+ apps: apps,
48
+ onAppClick: onAppClick,
49
+ app: app.id
50
+ });
51
+ };
52
+ export { PageWorkflowsEditorMenu, PageWorkflowsEditorView };
53
+
54
+ //# sourceMappingURL=PageWorkflowsEditorView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/PageWorkflows/PageWorkflowsEditorView.js","sources":["../../../src/Components/PageWorkflows/PageWorkflowsEditorView.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { AdminConfig, useRoute, useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"~/routes.js\";\nimport type { IWorkflowApplication } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { ReactComponent as WorkflowsIcon } from \"@webiny/icons/workspaces.svg\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\n\nconst {\n Admin: { WorkflowsEditor }\n} = Components;\n\nconst { Menu } = AdminConfig;\n\nexport const PageWorkflowsEditorMenu = () => {\n const router = useRouter();\n\n return (\n <Menu\n name={\"websiteBuilder.pages.workflows\"}\n pinnable={true}\n parent={\"wb\"}\n element={<Menu.Link text={\"Workflows\"} to={router.getLink(Routes.Pages.Workflows)} />}\n />\n );\n};\n\nexport const PageWorkflowsEditorView = () => {\n const { route } = useRoute(Routes.Pages.Workflows);\n const { goToRoute } = useRouter();\n\n const apps = useMemo<IWorkflowApplication[]>(() => {\n return [\n {\n id: WB_PAGE_APP,\n name: \"Pages\",\n icon: <Icon icon={<WorkflowsIcon />} label={\"Pages Workflows\"} />\n }\n ];\n }, []);\n\n const onAppClick = useCallback(\n (id: string) => {\n goToRoute(Routes.Pages.Workflows, {\n app: id\n });\n },\n [apps]\n );\n\n const app = useMemo(() => {\n return apps.find(a => a.id === route.params.app) || apps[0];\n }, [route.params.app, apps]);\n\n return <WorkflowsEditor apps={apps} onAppClick={onAppClick} app={app.id} />;\n};\n"],"names":["WorkflowsEditor","Components","Menu","AdminConfig","PageWorkflowsEditorMenu","router","useRouter","Routes","PageWorkflowsEditorView","route","useRoute","goToRoute","apps","useMemo","WB_PAGE_APP","Icon","WorkflowsIcon","onAppClick","useCallback","id","app","a"],"mappings":";;;;;;;AASA,MAAM,EACF,OAAO,EAAEA,iBAAAA,eAAe,EAAE,EAC7B,GAAGC;AAEJ,MAAM,EAAEC,MAAAA,IAAI,EAAE,GAAGC;AAEV,MAAMC,0BAA0B;IACnC,MAAMC,SAASC;IAEf,OAAO,WAAP,GACI,oBAACJ,MAAIA;QACD,MAAM;QACN,UAAU;QACV,QAAQ;QACR,uBAAS,oBAACA,KAAK,IAAI;YAAC,MAAM;YAAa,IAAIG,OAAO,OAAO,CAACE,OAAO,KAAK,CAAC,SAAS;;;AAG5F;AAEO,MAAMC,0BAA0B;IACnC,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASH,OAAO,KAAK,CAAC,SAAS;IACjD,MAAM,EAAEI,SAAS,EAAE,GAAGL;IAEtB,MAAMM,OAAOC,QAAgC,IAClC;YACH;gBACI,IAAIC;gBACJ,MAAM;gBACN,MAAM,WAAN,GAAM,oBAACC,MAAIA;oBAAC,oBAAM,oBAACC,gBAAaA;oBAAK,OAAO;;YAChD;SACH,EACF,EAAE;IAEL,MAAMC,aAAaC,YACf,CAACC;QACGR,UAAUJ,OAAO,KAAK,CAAC,SAAS,EAAE;YAC9B,KAAKY;QACT;IACJ,GACA;QAACP;KAAK;IAGV,MAAMQ,MAAMP,QAAQ,IACTD,KAAK,IAAI,CAACS,CAAAA,IAAKA,EAAE,EAAE,KAAKZ,MAAM,MAAM,CAAC,GAAG,KAAKG,IAAI,CAAC,EAAE,EAC5D;QAACH,MAAM,MAAM,CAAC,GAAG;QAAEG;KAAK;IAE3B,OAAO,WAAP,GAAO,oBAACZ,iBAAeA;QAAC,MAAMY;QAAM,YAAYK;QAAY,KAAKG,IAAI,EAAE;;AAC3E"}
@@ -0,0 +1 @@
1
+ export * from "./PageWorkflowsEditorView.js";
@@ -0,0 +1 @@
1
+ export * from "./PageWorkflowsEditorView.js";
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PageListChangeStatus: (props: unknown) => React.JSX.Element;
@@ -0,0 +1,23 @@
1
+ import react from "react";
2
+ import { PageListConfig } from "@webiny/app-website-builder";
3
+ import { WorkflowStateValue } from "@webiny/app-workflows/types.js";
4
+ import { usePage } from "../../hooks/usePage.js";
5
+ const { Browser: Browser } = PageListConfig;
6
+ const WrappedElement = (props)=>{
7
+ const { page } = usePage();
8
+ const workflowState = page.workflow?.state;
9
+ if (!workflowState || workflowState === WorkflowStateValue.approved) return props.element;
10
+ return null;
11
+ };
12
+ const PageListChangeStatus = Browser.Page.Action.createDecorator((Original)=>function(props) {
13
+ if ("changeStatus" === props.name) return /*#__PURE__*/ react.createElement(Original, {
14
+ ...props,
15
+ element: /*#__PURE__*/ react.createElement(WrappedElement, {
16
+ element: props.element
17
+ })
18
+ });
19
+ return /*#__PURE__*/ react.createElement(Original, props);
20
+ });
21
+ export { PageListChangeStatus };
22
+
23
+ //# sourceMappingURL=PageListChangeStatus.js.map
@@ -0,0 +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 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"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PagesList: () => React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ import react from "react";
2
+ import { PageListConfig } from "@webiny/app-website-builder";
3
+ import { PagesListContentReviews } from "./PagesListContentReviews.js";
4
+ import { PageListChangeStatus } from "./PageListChangeStatus.js";
5
+ const PagesList = ()=>/*#__PURE__*/ react.createElement(PageListConfig, null, /*#__PURE__*/ react.createElement(PagesListContentReviews, null), /*#__PURE__*/ react.createElement(PageListChangeStatus, null));
6
+ export { PagesList };
7
+
8
+ //# sourceMappingURL=PagesList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/PagesList/PagesList.js","sources":["../../../src/Components/PagesList/PagesList.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageListConfig } from \"@webiny/app-website-builder\";\nimport { PagesListContentReviews } from \"./PagesListContentReviews.js\";\nimport { PageListChangeStatus } from \"./PageListChangeStatus.js\";\n\nexport const PagesList = () => {\n return (\n <PageListConfig>\n {/* Add a Content Reviews button to footer in sidebar */}\n <PagesListContentReviews />\n {/* Decorate the Change Status action in row options to hide it for pages in certain workflow states */}\n <PageListChangeStatus />\n </PageListConfig>\n );\n};\n"],"names":["PagesList","PageListConfig","PagesListContentReviews","PageListChangeStatus"],"mappings":";;;;AAKO,MAAMA,YAAY,IACd,WAAP,GACI,oBAACC,gBAAcA,MAAAA,WAAAA,GAEX,oBAACC,yBAAuBA,OAAAA,WAAAA,GAExB,oBAACC,sBAAoBA"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const PagesListContentReviews: () => React.JSX.Element;
@@ -0,0 +1,26 @@
1
+ import react from "react";
2
+ import { Sidebar } from "@webiny/admin-ui";
3
+ import { PageListConfig } from "@webiny/app-website-builder";
4
+ import { Components } from "@webiny/app-workflows";
5
+ import { WB_PAGE_APP } from "../../constants.js";
6
+ import { ReactComponent } from "@webiny/icons/work_outline.svg";
7
+ const { Overlay: { WorkflowStateListAppOverlay: WorkflowStateListAppOverlay } } = Components;
8
+ const { Browser: Browser } = PageListConfig;
9
+ const PageListContentReviewsButton = ()=>/*#__PURE__*/ react.createElement(WorkflowStateListAppOverlay, {
10
+ app: WB_PAGE_APP
11
+ }, ({ showOverlay })=>/*#__PURE__*/ react.createElement(Sidebar.Item, {
12
+ className: "w-full",
13
+ onClick: showOverlay,
14
+ text: "Content Reviews",
15
+ icon: /*#__PURE__*/ react.createElement(Sidebar.Item.Icon, {
16
+ element: /*#__PURE__*/ react.createElement(ReactComponent, null),
17
+ label: "Content Reviews"
18
+ })
19
+ }));
20
+ const PagesListContentReviews = ()=>/*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
21
+ name: "contentReviews",
22
+ element: /*#__PURE__*/ react.createElement(PageListContentReviewsButton, null)
23
+ });
24
+ export { PagesListContentReviews };
25
+
26
+ //# sourceMappingURL=PagesListContentReviews.js.map
@@ -0,0 +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 { 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"}
@@ -0,0 +1 @@
1
+ export { PagesList } from "./PagesList.js";
@@ -0,0 +1 @@
1
+ export { PagesList } from "./PagesList.js";
@@ -0,0 +1,3 @@
1
+ export * from "./OptionItem/index.js";
2
+ export * from "./PageEditor/PageEditorConfig.js";
3
+ export * from "./PagesList/index.js";
@@ -0,0 +1,3 @@
1
+ export * from "./OptionItem/index.js";
2
+ export * from "./PageEditor/PageEditorConfig.js";
3
+ export * from "./PagesList/index.js";
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Webiny
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # @webiny/app-website-builder-workflows
2
+
3
+ > [!NOTE]
4
+ > This package is part of the [Webiny](https://www.webiny.com) monorepo.
5
+ > It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
6
+
7
+ 📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
8
+
9
+ ---
10
+
11
+ _This README file is automatically generated during the publish process._
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const WebsiteBuilderWorkflowsMenu: () => React.JSX.Element | null;
@@ -0,0 +1,32 @@
1
+ import react, { Suspense } from "react";
2
+ import { Routes } from "../routes.js";
3
+ import react_helmet from "react-helmet";
4
+ import { PageWorkflowsEditorMenu, PageWorkflowsEditorView } from "../Components/PageWorkflows/PageWorkflowsEditorView.js";
5
+ import { i18n } from "@webiny/app/i18n/index.js";
6
+ import { AdminConfig, AdminLayout, SecureRoute } from "@webiny/app-admin";
7
+ import { OverlayLoader } from "@webiny/admin-ui";
8
+ import { useCanUseWorkflows } from "@webiny/app-workflows";
9
+ const t = i18n.namespace("WebsiteBuilder.Page.Workflows.Editor");
10
+ const Loader = ({ children, ...props })=>/*#__PURE__*/ react.createElement(Suspense, {
11
+ fallback: /*#__PURE__*/ react.createElement(OverlayLoader, null)
12
+ }, /*#__PURE__*/ react.cloneElement(children, props));
13
+ const { Route: Route } = AdminConfig;
14
+ const WebsiteBuilderWorkflowsMenu = ()=>{
15
+ const { canUseWorkflows } = useCanUseWorkflows();
16
+ if (!canUseWorkflows) return null;
17
+ return /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(Route, {
18
+ route: Routes.Pages.Workflows,
19
+ element: /*#__PURE__*/ react.createElement(SecureRoute, {
20
+ permission: "wb.page"
21
+ }, /*#__PURE__*/ react.createElement(AdminLayout, null, /*#__PURE__*/ react.createElement(react_helmet, null, /*#__PURE__*/ react.createElement("title", null, t`Workflows`)), /*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
22
+ name: "wb",
23
+ label: "Website Builder"
24
+ }), /*#__PURE__*/ react.createElement(AdminConfig.Breadcrumb, {
25
+ name: "wb.workflows",
26
+ label: "Workflows"
27
+ }), /*#__PURE__*/ react.createElement(Loader, null, /*#__PURE__*/ react.createElement(PageWorkflowsEditorView, null))))
28
+ }), /*#__PURE__*/ react.createElement(PageWorkflowsEditorMenu, null));
29
+ };
30
+ export { WebsiteBuilderWorkflowsMenu };
31
+
32
+ //# sourceMappingURL=WebsiteBuilderWorkflowsMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Routes/WebsiteBuilderWorkflowsMenu.js","sources":["../../src/Routes/WebsiteBuilderWorkflowsMenu.tsx"],"sourcesContent":["import React, { Suspense } from \"react\";\nimport { Routes } from \"~/routes.js\";\nimport Helmet from \"react-helmet\";\nimport {\n PageWorkflowsEditorMenu,\n PageWorkflowsEditorView\n} from \"~/Components/PageWorkflows/PageWorkflowsEditorView.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { SecureRoute } from \"@webiny/app-admin\";\nimport { OverlayLoader } from \"@webiny/admin-ui\";\nimport { AdminConfig, AdminLayout } from \"@webiny/app-admin\";\nimport { useCanUseWorkflows } from \"@webiny/app-workflows\";\n\nconst t = i18n.namespace(\"WebsiteBuilder.Page.Workflows.Editor\");\n\ninterface LoaderProps {\n children: React.ReactNode;\n}\n\nconst Loader = ({ children, ...props }: LoaderProps) => (\n <Suspense fallback={<OverlayLoader />}>\n {React.cloneElement(children as unknown as React.ReactElement, props)}\n </Suspense>\n);\n\nconst { Route } = AdminConfig;\n\nexport const WebsiteBuilderWorkflowsMenu = () => {\n const { canUseWorkflows } = useCanUseWorkflows();\n if (!canUseWorkflows) {\n return null;\n }\n return (\n <AdminConfig>\n <Route\n route={Routes.Pages.Workflows}\n element={\n <SecureRoute permission={\"wb.page\"}>\n <AdminLayout>\n <Helmet>\n <title>{t`Workflows`}</title>\n </Helmet>\n <AdminConfig.Breadcrumb name={\"wb\"} label={\"Website Builder\"} />\n <AdminConfig.Breadcrumb name={\"wb.workflows\"} label={\"Workflows\"} />\n <Loader>\n <PageWorkflowsEditorView />\n </Loader>\n </AdminLayout>\n </SecureRoute>\n }\n />\n <PageWorkflowsEditorMenu />\n </AdminConfig>\n );\n};\n"],"names":["t","i18n","Loader","children","props","Suspense","OverlayLoader","React","Route","AdminConfig","WebsiteBuilderWorkflowsMenu","canUseWorkflows","useCanUseWorkflows","Routes","SecureRoute","AdminLayout","Helmet","PageWorkflowsEditorView","PageWorkflowsEditorMenu"],"mappings":";;;;;;;;AAaA,MAAMA,IAAIC,KAAK,SAAS,CAAC;AAMzB,MAAMC,SAAS,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAoB,iBAC/C,oBAACC,UAAQA;QAAC,wBAAU,oBAACC,eAAaA;qBAC7BC,MAAAA,YAAkB,CAACJ,UAA2CC;AAIvE,MAAM,EAAEI,OAAAA,KAAK,EAAE,GAAGC;AAEX,MAAMC,8BAA8B;IACvC,MAAM,EAAEC,eAAe,EAAE,GAAGC;IAC5B,IAAI,CAACD,iBACD,OAAO;IAEX,OAAO,WAAP,GACI,oBAACF,aAAWA,MAAAA,WAAAA,GACR,oBAACD,OAAKA;QACF,OAAOK,OAAO,KAAK,CAAC,SAAS;QAC7B,uBACI,oBAACC,aAAWA;YAAC,YAAY;yBACrB,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACC,cAAMA,MAAAA,WAAAA,GACH,oBAAC,eAAOhB,CAAC,CAAC,SAAS,CAAC,kBAExB,oBAACS,YAAY,UAAU;YAAC,MAAM;YAAM,OAAO;0BAC3C,oBAACA,YAAY,UAAU;YAAC,MAAM;YAAgB,OAAO;0BACrD,oBAACP,QAAMA,MAAAA,WAAAA,GACH,oBAACe,yBAAuBA;sBAM5C,oBAACC,yBAAuBA;AAGpC"}
@@ -0,0 +1 @@
1
+ export { WebsiteBuilderWorkflowsMenu } from "./WebsiteBuilderWorkflowsMenu.js";
@@ -0,0 +1 @@
1
+ export { WebsiteBuilderWorkflowsMenu } from "./WebsiteBuilderWorkflowsMenu.js";
package/constants.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const WB_PAGE_APP = "wb.page";
package/constants.js ADDED
@@ -0,0 +1,4 @@
1
+ const WB_PAGE_APP = "wb.page";
2
+ export { WB_PAGE_APP };
3
+
4
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export const WB_PAGE_APP = \"wb.page\";\n"],"names":["WB_PAGE_APP"],"mappings":"AAAO,MAAMA,cAAc"}
@@ -0,0 +1,5 @@
1
+ import type { PageDto } from "@webiny/app-website-builder/domain/Page/index.js";
2
+ import type { WithWorkflows } from "../types.js";
3
+ export declare const usePage: () => {
4
+ page: WithWorkflows<PageDto>;
5
+ };
@@ -0,0 +1,15 @@
1
+ import { usePage } from "@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js";
2
+ const decoratePage = (page)=>({
3
+ ...page,
4
+ workflow: page.system?.workflow ?? null
5
+ });
6
+ const usePage_usePage = ()=>{
7
+ const usage = usePage();
8
+ return {
9
+ ...usage,
10
+ page: decoratePage(usage.page)
11
+ };
12
+ };
13
+ export { usePage_usePage as usePage };
14
+
15
+ //# sourceMappingURL=usePage.js.map
@@ -0,0 +1 @@
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.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const WebsiteBuilderWorkflows: () => React.JSX.Element;
package/index.js ADDED
@@ -0,0 +1,14 @@
1
+ import react from "react";
2
+ import { RegisterFeature, Wcp } from "@webiny/app-admin";
3
+ import { WebsiteBuilderWorkflowsMenu } from "./Routes/index.js";
4
+ import { ListOpenInNewWindow, PageEditorConfig, PagesList } from "./Components/index.js";
5
+ import { PageListWorkflowsFeature } from "./presentation/page/PageList/feature.js";
6
+ import { PageGetWorkflowsFeature } from "./presentation/page/PageGet/feature.js";
7
+ const WebsiteBuilderWorkflows = ()=>/*#__PURE__*/ react.createElement(Wcp.CanUseWorkflows, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
8
+ feature: PageListWorkflowsFeature
9
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
10
+ feature: PageGetWorkflowsFeature
11
+ }), /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflowsMenu, null), /*#__PURE__*/ react.createElement(PageEditorConfig, null), /*#__PURE__*/ react.createElement(PagesList, null), /*#__PURE__*/ react.createElement(ListOpenInNewWindow, null));
12
+ export { WebsiteBuilderWorkflows };
13
+
14
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +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\";\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 ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@webiny/app-website-builder-workflows",
3
+ "version": "0.0.0-unstable.0d717d18dd",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": "./index.js",
7
+ "./*": "./*"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/webiny/webiny-js.git"
12
+ },
13
+ "author": "Webiny Ltd",
14
+ "license": "MIT",
15
+ "dependencies": {
16
+ "@webiny/admin-ui": "0.0.0-unstable.0d717d18dd",
17
+ "@webiny/app": "0.0.0-unstable.0d717d18dd",
18
+ "@webiny/app-admin": "0.0.0-unstable.0d717d18dd",
19
+ "@webiny/app-website-builder": "0.0.0-unstable.0d717d18dd",
20
+ "@webiny/app-workflows": "0.0.0-unstable.0d717d18dd",
21
+ "@webiny/feature": "0.0.0-unstable.0d717d18dd",
22
+ "@webiny/icons": "0.0.0-unstable.0d717d18dd",
23
+ "mobx-react-lite": "5.0.0",
24
+ "react": "18.3.1",
25
+ "react-dom": "18.3.1",
26
+ "react-helmet": "6.1.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/react": "18.3.31",
30
+ "@webiny/build-tools": "0.0.0-unstable.0d717d18dd",
31
+ "rimraf": "6.1.3",
32
+ "typescript": "7.0.2"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "svgo": {
38
+ "plugins": {
39
+ "removeViewBox": false
40
+ }
41
+ },
42
+ "gitHead": "b8aec8a1be3f25c3b428b357fe1e352c7cbff9ae",
43
+ "webiny": {
44
+ "publishFrom": "dist"
45
+ }
46
+ }
@@ -0,0 +1,8 @@
1
+ import { GetPageGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/getPage/abstractions.js";
2
+ declare class WorkflowStatesGetPageGraphQLFieldSelection implements GetPageGraphQLFieldSelection.Interface {
3
+ getSelection(): string[];
4
+ }
5
+ export declare const WorkflowStateGetPageFieldSelection: typeof WorkflowStatesGetPageGraphQLFieldSelection & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/features/pages/getPage/abstractions.js").IGetPageGraphQLFieldSelection>;
7
+ };
8
+ export {};
@@ -0,0 +1,22 @@
1
+ import { GetPageGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/getPage/abstractions.js";
2
+ class WorkflowStatesGetPageGraphQLFieldSelection {
3
+ getSelection() {
4
+ return [
5
+ `system {
6
+ workflow {
7
+ workflowId
8
+ stepId
9
+ stepName
10
+ state
11
+ }
12
+ }`
13
+ ];
14
+ }
15
+ }
16
+ const WorkflowStateGetPageFieldSelection = GetPageGraphQLFieldSelection.createImplementation({
17
+ dependencies: [],
18
+ implementation: WorkflowStatesGetPageGraphQLFieldSelection
19
+ });
20
+ export { WorkflowStateGetPageFieldSelection };
21
+
22
+ //# sourceMappingURL=WorkflowStatesGetPageGraphQLFieldSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.js","sources":["../../../../src/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.ts"],"sourcesContent":["import { GetPageGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/getPage/abstractions.js\";\n\nclass WorkflowStatesGetPageGraphQLFieldSelection implements GetPageGraphQLFieldSelection.Interface {\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 WorkflowStateGetPageFieldSelection = GetPageGraphQLFieldSelection.createImplementation(\n {\n dependencies: [],\n implementation: WorkflowStatesGetPageGraphQLFieldSelection\n }\n);\n"],"names":["WorkflowStatesGetPageGraphQLFieldSelection","WorkflowStateGetPageFieldSelection","GetPageGraphQLFieldSelection"],"mappings":";AAEA,MAAMA;IACF,eAAyB;QACrB,OAAO;YACH,CAAC;;;;;;;aAOA,CAAC;SACL;IACL;AACJ;AAEO,MAAMC,qCAAqCC,6BAA6B,oBAAoB,CAC/F;IACI,cAAc,EAAE;IAChB,gBAAgBF;AACpB"}
@@ -0,0 +1 @@
1
+ export declare const PageGetWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { WorkflowStateGetPageFieldSelection } from "./WorkflowStatesGetPageGraphQLFieldSelection.js";
3
+ const PageGetWorkflowsFeature = createFeature({
4
+ name: "PageGetWorkflows",
5
+ register (container) {
6
+ container.register(WorkflowStateGetPageFieldSelection);
7
+ }
8
+ });
9
+ export { PageGetWorkflowsFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/page/PageGet/feature.js","sources":["../../../../src/presentation/page/PageGet/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WorkflowStateGetPageFieldSelection } from \"./WorkflowStatesGetPageGraphQLFieldSelection.js\";\n\nexport const PageGetWorkflowsFeature = createFeature({\n name: \"PageGetWorkflows\",\n register(container) {\n container.register(WorkflowStateGetPageFieldSelection);\n }\n});\n"],"names":["PageGetWorkflowsFeature","createFeature","container","WorkflowStateGetPageFieldSelection"],"mappings":";;AAGO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -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"}
@@ -0,0 +1,8 @@
1
+ import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
2
+ declare class WorkflowStatesListPagesGraphQLFieldSelection implements ListPagesGraphQLFieldSelection.Interface {
3
+ getSelection(): string[];
4
+ }
5
+ export declare const WorkflowStateListPagesFieldSelection: typeof WorkflowStatesListPagesGraphQLFieldSelection & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/features/pages/listPages/abstractions.js").IListPagesGraphQLFieldSelection>;
7
+ };
8
+ export {};
@@ -0,0 +1,22 @@
1
+ import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
2
+ class WorkflowStatesListPagesGraphQLFieldSelection {
3
+ getSelection() {
4
+ return [
5
+ `system {
6
+ workflow {
7
+ workflowId
8
+ stepId
9
+ stepName
10
+ state
11
+ }
12
+ }`
13
+ ];
14
+ }
15
+ }
16
+ const WorkflowStateListPagesFieldSelection = ListPagesGraphQLFieldSelection.createImplementation({
17
+ dependencies: [],
18
+ implementation: WorkflowStatesListPagesGraphQLFieldSelection
19
+ });
20
+ export { WorkflowStateListPagesFieldSelection };
21
+
22
+ //# sourceMappingURL=WorkflowStateListPagesFieldSelection.js.map
@@ -0,0 +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/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"}
@@ -0,0 +1 @@
1
+ export declare const PageListWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,13 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { WorkflowStateListPagesFieldSelection } from "./WorkflowStateListPagesFieldSelection.js";
3
+ import { TableRowMapperWorkflowDecorator } from "./TableRowMapperDecorator.js";
4
+ const PageListWorkflowsFeature = createFeature({
5
+ name: "PageListWorkflows",
6
+ register (container) {
7
+ container.register(WorkflowStateListPagesFieldSelection);
8
+ container.registerDecorator(TableRowMapperWorkflowDecorator);
9
+ }
10
+ });
11
+ export { PageListWorkflowsFeature };
12
+
13
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +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 { 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/routes.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ export declare const Routes: {
3
+ Pages: {
4
+ Workflows: Route<{
5
+ app: import("zod").ZodOptional<import("zod").ZodString>;
6
+ }>;
7
+ WorkflowStateList: Route<undefined>;
8
+ };
9
+ };
package/routes.js ADDED
@@ -0,0 +1,19 @@
1
+ import { Route } from "@webiny/app-admin";
2
+ const Routes = {
3
+ Pages: {
4
+ Workflows: new Route({
5
+ name: "WebsiteBuilder/PageWorkflow",
6
+ path: "/website-builder/workflows",
7
+ params: (zod)=>({
8
+ app: zod.string().optional()
9
+ })
10
+ }),
11
+ WorkflowStateList: new Route({
12
+ name: "WebsiteBuilder/Pages/WorkflowStateList",
13
+ path: "/website-builder/pages/content-reviews"
14
+ })
15
+ }
16
+ };
17
+ export { Routes };
18
+
19
+ //# sourceMappingURL=routes.js.map
package/routes.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sources":["../src/routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n Pages: {\n Workflows: new Route({\n name: \"WebsiteBuilder/PageWorkflow\",\n path: \"/website-builder/workflows\",\n params: zod => {\n return {\n app: zod.string().optional()\n };\n }\n }),\n WorkflowStateList: new Route({\n name: \"WebsiteBuilder/Pages/WorkflowStateList\",\n path: \"/website-builder/pages/content-reviews\"\n })\n }\n};\n"],"names":["Routes","Route","zod"],"mappings":";AAEO,MAAMA,SAAS;IAClB,OAAO;QACH,WAAW,IAAIC,MAAM;YACjB,MAAM;YACN,MAAM;YACN,QAAQC,CAAAA,MACG;oBACH,KAAKA,IAAI,MAAM,GAAG,QAAQ;gBAC9B;QAER;QACA,mBAAmB,IAAID,MAAM;YACzB,MAAM;YACN,MAAM;QACV;IACJ;AACJ"}
package/types.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import type { WorkflowStateValue } from "@webiny/app-workflows/types.js";
2
+ export interface IPageWorkflowState {
3
+ workflowId: string;
4
+ stepId: string;
5
+ stepName: string;
6
+ state: WorkflowStateValue;
7
+ }
8
+ export type WithWorkflows<T> = T & {
9
+ workflow: IPageWorkflowState | null;
10
+ };
11
+ declare module "@webiny/app-website-builder/types.js" {
12
+ interface WbPageSystem {
13
+ workflow: IPageWorkflowState | null;
14
+ }
15
+ }
package/types.js ADDED
File without changes