@webiny/app-headless-cms-workflows 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +28 -39
  2. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +1 -1
  3. package/Components/CmsEntriesWorkflowStateList/index.js +0 -2
  4. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js +41 -64
  5. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +1 -1
  6. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +17 -33
  7. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +1 -1
  8. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js +10 -17
  9. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js.map +1 -1
  10. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +21 -70
  11. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +1 -1
  12. package/Components/ContentEntryForm/index.d.ts +0 -3
  13. package/Components/ContentEntryForm/index.js +0 -5
  14. package/Components/OptionItem/OpenInNewWindow.js +28 -36
  15. package/Components/OptionItem/OpenInNewWindow.js.map +1 -1
  16. package/Routes/CmsWorkflowsEditor.js +24 -27
  17. package/Routes/CmsWorkflowsEditor.js.map +1 -1
  18. package/Routes/index.js +0 -2
  19. package/features/WorkflowStateCacheHandler.d.ts +11 -0
  20. package/features/WorkflowStateCacheHandler.js +50 -0
  21. package/features/WorkflowStateCacheHandler.js.map +1 -0
  22. package/features/feature.d.ts +1 -0
  23. package/features/feature.js +11 -0
  24. package/features/feature.js.map +1 -0
  25. package/index.d.ts +1 -1
  26. package/index.js +17 -5
  27. package/index.js.map +1 -1
  28. package/package.json +21 -17
  29. package/presentation/CmsWorkflowsEditorView.d.ts +5 -0
  30. package/presentation/CmsWorkflowsEditorView.js +90 -0
  31. package/presentation/CmsWorkflowsEditorView.js.map +1 -0
  32. package/presentation/ContentEntryFormPresenterWorkflowDecorator.d.ts +25 -0
  33. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js +70 -0
  34. package/presentation/ContentEntryFormPresenterWorkflowDecorator.js.map +1 -0
  35. package/presentation/TableRowMapperWorkflowDecorator.d.ts +11 -0
  36. package/presentation/TableRowMapperWorkflowDecorator.js +25 -0
  37. package/presentation/TableRowMapperWorkflowDecorator.js.map +1 -0
  38. package/presentation/WorkflowStateGetEntryFieldSelection.d.ts +8 -0
  39. package/presentation/WorkflowStateGetEntryFieldSelection.js +24 -0
  40. package/presentation/WorkflowStateGetEntryFieldSelection.js.map +1 -0
  41. package/presentation/WorkflowStateListEntriesFieldSelection.d.ts +8 -0
  42. package/presentation/WorkflowStateListEntriesFieldSelection.js +24 -0
  43. package/presentation/WorkflowStateListEntriesFieldSelection.js.map +1 -0
  44. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.d.ts +15 -0
  45. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js +50 -0
  46. package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js.map +1 -0
  47. package/presentation/cmsWorkflowsEditor/abstractions.d.ts +19 -0
  48. package/presentation/cmsWorkflowsEditor/abstractions.js +5 -0
  49. package/presentation/cmsWorkflowsEditor/abstractions.js.map +1 -0
  50. package/presentation/cmsWorkflowsEditor/feature.d.ts +3 -0
  51. package/presentation/cmsWorkflowsEditor/feature.js +17 -0
  52. package/presentation/cmsWorkflowsEditor/feature.js.map +1 -0
  53. package/presentation/feature.d.ts +1 -0
  54. package/presentation/feature.js +21 -0
  55. package/presentation/feature.js.map +1 -0
  56. package/routes.js +17 -18
  57. package/routes.js.map +1 -1
  58. package/types.d.ts +10 -0
  59. package/types.js +0 -0
  60. package/utils/appName.js +9 -12
  61. package/utils/appName.js.map +1 -1
  62. package/Components/CmsEntriesWorkflowStateList/index.js.map +0 -1
  63. package/Components/CmsWorkflows/CmsWorkflowsEditorView.d.ts +0 -3
  64. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js +0 -128
  65. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js.map +0 -1
  66. package/Components/ContentEntryForm/CmsEntryFormPublishButton.d.ts +0 -2
  67. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js +0 -38
  68. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js.map +0 -1
  69. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.d.ts +0 -2
  70. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js +0 -39
  71. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js.map +0 -1
  72. package/Components/ContentEntryForm/CmsEntryFormSaveButton.d.ts +0 -2
  73. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js +0 -37
  74. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js.map +0 -1
  75. package/Components/ContentEntryForm/ContentEntryWorkflow.d.ts +0 -2
  76. package/Components/ContentEntryForm/ContentEntryWorkflow.js +0 -35
  77. package/Components/ContentEntryForm/ContentEntryWorkflow.js.map +0 -1
  78. package/Components/ContentEntryForm/index.js.map +0 -1
  79. package/Routes/index.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import { GetEntryGraphQLFieldSelection } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
2
+ class WorkflowStateGetEntryFieldSelectionImpl {
3
+ getSelection() {
4
+ return [
5
+ `meta {
6
+ system {
7
+ workflow {
8
+ workflowId
9
+ stepId
10
+ stepName
11
+ state
12
+ }
13
+ }
14
+ }`
15
+ ];
16
+ }
17
+ }
18
+ const WorkflowStateGetEntryFieldSelection = GetEntryGraphQLFieldSelection.createImplementation({
19
+ dependencies: [],
20
+ implementation: WorkflowStateGetEntryFieldSelectionImpl
21
+ });
22
+ export { WorkflowStateGetEntryFieldSelection };
23
+
24
+ //# sourceMappingURL=WorkflowStateGetEntryFieldSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/WorkflowStateGetEntryFieldSelection.js","sources":["../../src/presentation/WorkflowStateGetEntryFieldSelection.ts"],"sourcesContent":["import { GetEntryGraphQLFieldSelection } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\n\nclass WorkflowStateGetEntryFieldSelectionImpl implements GetEntryGraphQLFieldSelection.Interface {\n getSelection(): string[] {\n return [\n `meta {\n system {\n workflow {\n workflowId\n stepId\n stepName\n state\n }\n }\n }`\n ];\n }\n}\n\nexport const WorkflowStateGetEntryFieldSelection =\n GetEntryGraphQLFieldSelection.createImplementation({\n dependencies: [],\n implementation: WorkflowStateGetEntryFieldSelectionImpl\n });\n"],"names":["WorkflowStateGetEntryFieldSelectionImpl","WorkflowStateGetEntryFieldSelection","GetEntryGraphQLFieldSelection"],"mappings":";AAEA,MAAMA;IACF,eAAyB;QACrB,OAAO;YACH,CAAC;;;;;;;;;aASA,CAAC;SACL;IACL;AACJ;AAEO,MAAMC,sCACTC,8BAA8B,oBAAoB,CAAC;IAC/C,cAAc,EAAE;IAChB,gBAAgBF;AACpB"}
@@ -0,0 +1,8 @@
1
+ import { ListEntriesGraphQLFieldSelection } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
2
+ declare class WorkflowStateListEntriesFieldSelectionImpl implements ListEntriesGraphQLFieldSelection.Interface {
3
+ getSelection(): string[];
4
+ }
5
+ export declare const WorkflowStateListEntriesFieldSelection: typeof WorkflowStateListEntriesFieldSelectionImpl & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-headless-cms/features/contentEntry/listEntries/abstractions").IListEntriesGraphQLFieldSelection>;
7
+ };
8
+ export {};
@@ -0,0 +1,24 @@
1
+ import { ListEntriesGraphQLFieldSelection } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
2
+ class WorkflowStateListEntriesFieldSelectionImpl {
3
+ getSelection() {
4
+ return [
5
+ `meta {
6
+ system {
7
+ workflow {
8
+ workflowId
9
+ stepId
10
+ stepName
11
+ state
12
+ }
13
+ }
14
+ }`
15
+ ];
16
+ }
17
+ }
18
+ const WorkflowStateListEntriesFieldSelection = ListEntriesGraphQLFieldSelection.createImplementation({
19
+ dependencies: [],
20
+ implementation: WorkflowStateListEntriesFieldSelectionImpl
21
+ });
22
+ export { WorkflowStateListEntriesFieldSelection };
23
+
24
+ //# sourceMappingURL=WorkflowStateListEntriesFieldSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/WorkflowStateListEntriesFieldSelection.js","sources":["../../src/presentation/WorkflowStateListEntriesFieldSelection.ts"],"sourcesContent":["import { ListEntriesGraphQLFieldSelection } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\n\nclass WorkflowStateListEntriesFieldSelectionImpl\n implements ListEntriesGraphQLFieldSelection.Interface\n{\n getSelection(): string[] {\n return [\n `meta {\n system {\n workflow {\n workflowId\n stepId\n stepName\n state\n }\n }\n }`\n ];\n }\n}\n\nexport const WorkflowStateListEntriesFieldSelection =\n ListEntriesGraphQLFieldSelection.createImplementation({\n dependencies: [],\n implementation: WorkflowStateListEntriesFieldSelectionImpl\n });\n"],"names":["WorkflowStateListEntriesFieldSelectionImpl","WorkflowStateListEntriesFieldSelection","ListEntriesGraphQLFieldSelection"],"mappings":";AAEA,MAAMA;IAGF,eAAyB;QACrB,OAAO;YACH,CAAC;;;;;;;;;aASA,CAAC;SACL;IACL;AACJ;AAEO,MAAMC,yCACTC,iCAAiC,oBAAoB,CAAC;IAClD,cAAc,EAAE;IAChB,gBAAgBF;AACpB"}
@@ -0,0 +1,15 @@
1
+ import { ListModelsUseCase } from "@webiny/app-headless-cms/features/model/listModels/abstractions.js";
2
+ import { ModelsCache } from "@webiny/app-headless-cms/features/model/abstractions.js";
3
+ import { CmsWorkflowsEditorPresenter as Abstraction } from "./abstractions.js";
4
+ declare class CmsWorkflowsEditorPresenterImpl implements Abstraction.Interface {
5
+ private listModelsUseCase;
6
+ private cache;
7
+ private _loading;
8
+ constructor(listModelsUseCase: ListModelsUseCase.Interface, cache: ModelsCache.Interface);
9
+ get vm(): Abstraction.ViewModel;
10
+ init(): void;
11
+ }
12
+ export declare const CmsWorkflowsEditorPresenter: typeof CmsWorkflowsEditorPresenterImpl & {
13
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICmsWorkflowsEditorPresenter>;
14
+ };
15
+ export {};
@@ -0,0 +1,50 @@
1
+ import { computed, makeAutoObservable, runInAction } from "mobx";
2
+ import { ListModelsUseCase } from "@webiny/app-headless-cms/features/model/listModels/abstractions.js";
3
+ import { ModelsCache } from "@webiny/app-headless-cms/features/model/abstractions.js";
4
+ import { createAppName } from "../../utils/appName.js";
5
+ import { CmsWorkflowsEditorPresenter } from "./abstractions.js";
6
+ class CmsWorkflowsEditorPresenterImpl {
7
+ constructor(listModelsUseCase, cache){
8
+ this.listModelsUseCase = listModelsUseCase;
9
+ this.cache = cache;
10
+ this._loading = true;
11
+ makeAutoObservable(this, {
12
+ listModelsUseCase: false,
13
+ cache: false,
14
+ vm: computed
15
+ });
16
+ }
17
+ get vm() {
18
+ const apps = this.cache.getItems().filter((model)=>{
19
+ if (model.tags.includes("$publishing:false")) return false;
20
+ if (model.tags.includes("singleEntry")) return false;
21
+ return true;
22
+ }).map((model)=>({
23
+ id: createAppName(model),
24
+ name: model.name,
25
+ modelId: model.modelId,
26
+ icon: model.icon
27
+ }));
28
+ return {
29
+ loading: this._loading,
30
+ apps
31
+ };
32
+ }
33
+ init() {
34
+ this.listModelsUseCase.execute().then(()=>{
35
+ runInAction(()=>{
36
+ this._loading = false;
37
+ });
38
+ }).catch(console.error);
39
+ }
40
+ }
41
+ const CmsWorkflowsEditorPresenter_CmsWorkflowsEditorPresenter = CmsWorkflowsEditorPresenter.createImplementation({
42
+ implementation: CmsWorkflowsEditorPresenterImpl,
43
+ dependencies: [
44
+ ListModelsUseCase,
45
+ ModelsCache
46
+ ]
47
+ });
48
+ export { CmsWorkflowsEditorPresenter_CmsWorkflowsEditorPresenter as CmsWorkflowsEditorPresenter };
49
+
50
+ //# sourceMappingURL=CmsWorkflowsEditorPresenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js","sources":["../../../src/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, computed } from \"mobx\";\nimport { ListModelsUseCase } from \"@webiny/app-headless-cms/features/model/listModels/abstractions.js\";\nimport { ModelsCache } from \"@webiny/app-headless-cms/features/model/abstractions.js\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { CmsWorkflowsEditorPresenter as Abstraction, type WorkflowApp } from \"./abstractions.js\";\n\nclass CmsWorkflowsEditorPresenterImpl implements Abstraction.Interface {\n private _loading = true;\n\n constructor(\n private listModelsUseCase: ListModelsUseCase.Interface,\n private cache: ModelsCache.Interface\n ) {\n makeAutoObservable<CmsWorkflowsEditorPresenterImpl, \"listModelsUseCase\" | \"cache\">(this, {\n listModelsUseCase: false,\n cache: false,\n vm: computed\n });\n }\n\n get vm(): Abstraction.ViewModel {\n const apps: WorkflowApp[] = this.cache\n .getItems()\n .filter(model => {\n if (model.tags.includes(\"$publishing:false\")) {\n return false;\n }\n if (model.tags.includes(\"singleEntry\")) {\n return false;\n }\n return true;\n })\n .map(model => ({\n id: createAppName(model),\n name: model.name,\n modelId: model.modelId,\n icon: model.icon\n }));\n\n return {\n loading: this._loading,\n apps\n };\n }\n\n init(): void {\n this.listModelsUseCase\n .execute()\n .then(() => {\n runInAction(() => {\n this._loading = false;\n });\n })\n .catch(console.error);\n }\n}\n\nexport const CmsWorkflowsEditorPresenter = Abstraction.createImplementation({\n implementation: CmsWorkflowsEditorPresenterImpl,\n dependencies: [ListModelsUseCase, ModelsCache]\n});\n"],"names":["CmsWorkflowsEditorPresenterImpl","listModelsUseCase","cache","makeAutoObservable","computed","apps","model","createAppName","runInAction","console","CmsWorkflowsEditorPresenter","Abstraction","ListModelsUseCase","ModelsCache"],"mappings":";;;;;AAMA,MAAMA;IAGF,YACYC,iBAA8C,EAC9CC,KAA4B,CACtC;aAFUD,iBAAiB,GAAjBA;aACAC,KAAK,GAALA;aAJJ,QAAQ,GAAG;QAMfC,mBAAmF,IAAI,EAAE;YACrF,mBAAmB;YACnB,OAAO;YACP,IAAIC;QACR;IACJ;IAEA,IAAI,KAA4B;QAC5B,MAAMC,OAAsB,IAAI,CAAC,KAAK,CACjC,QAAQ,GACR,MAAM,CAACC,CAAAA;YACJ,IAAIA,MAAM,IAAI,CAAC,QAAQ,CAAC,sBACpB,OAAO;YAEX,IAAIA,MAAM,IAAI,CAAC,QAAQ,CAAC,gBACpB,OAAO;YAEX,OAAO;QACX,GACC,GAAG,CAACA,CAAAA,QAAU;gBACX,IAAIC,cAAcD;gBAClB,MAAMA,MAAM,IAAI;gBAChB,SAASA,MAAM,OAAO;gBACtB,MAAMA,MAAM,IAAI;YACpB;QAEJ,OAAO;YACH,SAAS,IAAI,CAAC,QAAQ;YACtBD;QACJ;IACJ;IAEA,OAAa;QACT,IAAI,CAAC,iBAAiB,CACjB,OAAO,GACP,IAAI,CAAC;YACFG,YAAY;gBACR,IAAI,CAAC,QAAQ,GAAG;YACpB;QACJ,GACC,KAAK,CAACC,QAAQ,KAAK;IAC5B;AACJ;AAEO,MAAMC,0DAA8BC,4BAAAA,oBAAgC,CAAC;IACxE,gBAAgBX;IAChB,cAAc;QAACY;QAAmBC;KAAY;AAClD"}
@@ -0,0 +1,19 @@
1
+ export interface WorkflowApp {
2
+ id: string;
3
+ name: string;
4
+ modelId: string;
5
+ icon: string;
6
+ }
7
+ export interface ICmsWorkflowsEditorPresenterViewModel {
8
+ loading: boolean;
9
+ apps: WorkflowApp[];
10
+ }
11
+ export interface ICmsWorkflowsEditorPresenter {
12
+ readonly vm: ICmsWorkflowsEditorPresenterViewModel;
13
+ init(): void;
14
+ }
15
+ export declare const CmsWorkflowsEditorPresenter: import("@webiny/di").Abstraction<ICmsWorkflowsEditorPresenter>;
16
+ export declare namespace CmsWorkflowsEditorPresenter {
17
+ type Interface = ICmsWorkflowsEditorPresenter;
18
+ type ViewModel = ICmsWorkflowsEditorPresenterViewModel;
19
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const CmsWorkflowsEditorPresenter = createAbstraction("CmsWorkflowsEditor/Presenter");
3
+ export { CmsWorkflowsEditorPresenter };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/cmsWorkflowsEditor/abstractions.js","sources":["../../../src/presentation/cmsWorkflowsEditor/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface WorkflowApp {\n id: string;\n name: string;\n modelId: string;\n icon: string;\n}\n\nexport interface ICmsWorkflowsEditorPresenterViewModel {\n loading: boolean;\n apps: WorkflowApp[];\n}\n\nexport interface ICmsWorkflowsEditorPresenter {\n readonly vm: ICmsWorkflowsEditorPresenterViewModel;\n init(): void;\n}\n\nexport const CmsWorkflowsEditorPresenter = createAbstraction<ICmsWorkflowsEditorPresenter>(\n \"CmsWorkflowsEditor/Presenter\"\n);\n\nexport namespace CmsWorkflowsEditorPresenter {\n export type Interface = ICmsWorkflowsEditorPresenter;\n export type ViewModel = ICmsWorkflowsEditorPresenterViewModel;\n}\n"],"names":["CmsWorkflowsEditorPresenter","createAbstraction"],"mappings":";AAmBO,MAAMA,8BAA8BC,kBACvC"}
@@ -0,0 +1,3 @@
1
+ export declare const CmsWorkflowsEditorPresenterFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ presenter: import("./abstractions.js").ICmsWorkflowsEditorPresenter;
3
+ }, []>;
@@ -0,0 +1,17 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { CmsWorkflowsEditorPresenter } from "./abstractions.js";
3
+ import { CmsWorkflowsEditorPresenter as external_CmsWorkflowsEditorPresenter_js_CmsWorkflowsEditorPresenter } from "./CmsWorkflowsEditorPresenter.js";
4
+ const CmsWorkflowsEditorPresenterFeature = createFeature({
5
+ name: "CmsWorkflowsEditor/Presenter",
6
+ register (container) {
7
+ container.register(external_CmsWorkflowsEditorPresenter_js_CmsWorkflowsEditorPresenter).inSingletonScope();
8
+ },
9
+ resolve (container) {
10
+ return {
11
+ presenter: container.resolve(CmsWorkflowsEditorPresenter)
12
+ };
13
+ }
14
+ });
15
+ export { CmsWorkflowsEditorPresenterFeature };
16
+
17
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/cmsWorkflowsEditor/feature.js","sources":["../../../src/presentation/cmsWorkflowsEditor/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { CmsWorkflowsEditorPresenter as Abstraction } from \"./abstractions.js\";\nimport { CmsWorkflowsEditorPresenter } from \"./CmsWorkflowsEditorPresenter.js\";\n\nexport const CmsWorkflowsEditorPresenterFeature = createFeature({\n name: \"CmsWorkflowsEditor/Presenter\",\n register(container) {\n container.register(CmsWorkflowsEditorPresenter).inSingletonScope();\n },\n resolve(container) {\n return {\n presenter: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["CmsWorkflowsEditorPresenterFeature","createFeature","container","CmsWorkflowsEditorPresenter","Abstraction"],"mappings":";;;AAIO,MAAMA,qCAAqCC,cAAc;IAC5D,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,qEAA6B,gBAAgB;IACpE;IACA,SAAQD,SAAS;QACb,OAAO;YACH,WAAWA,UAAU,OAAO,CAACE;QACjC;IACJ;AACJ"}
@@ -0,0 +1 @@
1
+ export declare const CmsWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,21 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { WorkflowsFeature } from "@webiny/app-workflows";
3
+ import { WorkflowStatePresenterFeature } from "@webiny/app-workflows/presentation/workflowState/feature.js";
4
+ import { ContentEntryFormPresenterWorkflowDecorator } from "./ContentEntryFormPresenterWorkflowDecorator.js";
5
+ import { TableRowMapperWorkflowDecorator } from "./TableRowMapperWorkflowDecorator.js";
6
+ import { WorkflowStateListEntriesFieldSelection } from "./WorkflowStateListEntriesFieldSelection.js";
7
+ import { WorkflowStateGetEntryFieldSelection } from "./WorkflowStateGetEntryFieldSelection.js";
8
+ const CmsWorkflowsFeature = createFeature({
9
+ name: "CmsWorkflows",
10
+ register (container) {
11
+ WorkflowsFeature.register(container);
12
+ WorkflowStatePresenterFeature.register(container);
13
+ container.registerDecorator(ContentEntryFormPresenterWorkflowDecorator);
14
+ container.registerDecorator(TableRowMapperWorkflowDecorator);
15
+ container.register(WorkflowStateListEntriesFieldSelection);
16
+ container.register(WorkflowStateGetEntryFieldSelection);
17
+ }
18
+ });
19
+ export { CmsWorkflowsFeature };
20
+
21
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/feature.js","sources":["../../src/presentation/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WorkflowsFeature } from \"@webiny/app-workflows\";\nimport { WorkflowStatePresenterFeature } from \"@webiny/app-workflows/presentation/workflowState/feature.js\";\nimport { ContentEntryFormPresenterWorkflowDecorator } from \"./ContentEntryFormPresenterWorkflowDecorator.js\";\nimport { TableRowMapperWorkflowDecorator } from \"./TableRowMapperWorkflowDecorator.js\";\nimport { WorkflowStateListEntriesFieldSelection } from \"./WorkflowStateListEntriesFieldSelection.js\";\nimport { WorkflowStateGetEntryFieldSelection } from \"./WorkflowStateGetEntryFieldSelection.js\";\n\nexport const CmsWorkflowsFeature = createFeature({\n name: \"CmsWorkflows\",\n register(container) {\n WorkflowsFeature.register(container);\n WorkflowStatePresenterFeature.register(container);\n container.registerDecorator(ContentEntryFormPresenterWorkflowDecorator);\n container.registerDecorator(TableRowMapperWorkflowDecorator);\n container.register(WorkflowStateListEntriesFieldSelection);\n container.register(WorkflowStateGetEntryFieldSelection);\n }\n});\n"],"names":["CmsWorkflowsFeature","createFeature","container","WorkflowsFeature","WorkflowStatePresenterFeature","ContentEntryFormPresenterWorkflowDecorator","TableRowMapperWorkflowDecorator","WorkflowStateListEntriesFieldSelection","WorkflowStateGetEntryFieldSelection"],"mappings":";;;;;;;AAQO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QACdC,iBAAiB,QAAQ,CAACD;QAC1BE,8BAA8B,QAAQ,CAACF;QACvCA,UAAU,iBAAiB,CAACG;QAC5BH,UAAU,iBAAiB,CAACI;QAC5BJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;IACvB;AACJ"}
package/routes.js CHANGED
@@ -1,22 +1,21 @@
1
1
  import { Route } from "@webiny/app-admin";
2
- export const Routes = {
3
- ContentModels: {
4
- Workflows: new Route({
5
- name: "Cms/ContentModels/Workflows",
6
- path: "/cms/workflows",
7
- params: zod => {
8
- return {
9
- app: zod.string().optional()
10
- };
11
- }
12
- })
13
- },
14
- ContentEntries: {
15
- ContentReviews: new Route({
16
- name: "Cms/ContentEntries/WorkflowStateList",
17
- path: "/cms/content-reviews"
18
- })
19
- }
2
+ const Routes = {
3
+ ContentModels: {
4
+ Workflows: new Route({
5
+ name: "Cms/ContentModels/Workflows",
6
+ path: "/cms/workflows",
7
+ params: (zod)=>({
8
+ app: zod.string().optional()
9
+ })
10
+ })
11
+ },
12
+ ContentEntries: {
13
+ ContentReviews: new Route({
14
+ name: "Cms/ContentEntries/WorkflowStateList",
15
+ path: "/cms/content-reviews"
16
+ })
17
+ }
20
18
  };
19
+ export { Routes };
21
20
 
22
21
  //# sourceMappingURL=routes.js.map
package/routes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["Route","Routes","ContentModels","Workflows","name","path","params","zod","app","string","optional","ContentEntries","ContentReviews"],"sources":["routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n ContentModels: {\n Workflows: new Route({\n name: \"Cms/ContentModels/Workflows\",\n path: \"/cms/workflows\",\n params: zod => {\n return {\n app: zod.string().optional()\n };\n }\n })\n },\n ContentEntries: {\n ContentReviews: new Route({\n name: \"Cms/ContentEntries/WorkflowStateList\",\n path: \"/cms/content-reviews\"\n })\n }\n};\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,mBAAmB;AAEzC,OAAO,MAAMC,MAAM,GAAG;EAClBC,aAAa,EAAE;IACXC,SAAS,EAAE,IAAIH,KAAK,CAAC;MACjBI,IAAI,EAAE,6BAA6B;MACnCC,IAAI,EAAE,gBAAgB;MACtBC,MAAM,EAAEC,GAAG,IAAI;QACX,OAAO;UACHC,GAAG,EAAED,GAAG,CAACE,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC;QAC/B,CAAC;MACL;IACJ,CAAC;EACL,CAAC;EACDC,cAAc,EAAE;IACZC,cAAc,EAAE,IAAIZ,KAAK,CAAC;MACtBI,IAAI,EAAE,sCAAsC;MAC5CC,IAAI,EAAE;IACV,CAAC;EACL;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"routes.js","sources":["../src/routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n ContentModels: {\n Workflows: new Route({\n name: \"Cms/ContentModels/Workflows\",\n path: \"/cms/workflows\",\n params: zod => {\n return {\n app: zod.string().optional()\n };\n }\n })\n },\n ContentEntries: {\n ContentReviews: new Route({\n name: \"Cms/ContentEntries/WorkflowStateList\",\n path: \"/cms/content-reviews\"\n })\n }\n};\n"],"names":["Routes","Route","zod"],"mappings":";AAEO,MAAMA,SAAS;IAClB,eAAe;QACX,WAAW,IAAIC,MAAM;YACjB,MAAM;YACN,MAAM;YACN,QAAQC,CAAAA,MACG;oBACH,KAAKA,IAAI,MAAM,GAAG,QAAQ;gBAC9B;QAER;IACJ;IACA,gBAAgB;QACZ,gBAAgB,IAAID,MAAM;YACtB,MAAM;YACN,MAAM;QACV;IACJ;AACJ"}
package/types.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import type { WorkflowStateValue } from "@webiny/app-workflows/types.js";
2
+ export interface ICmsEntryWorkflowState {
3
+ workflowId: string;
4
+ stepId: string;
5
+ stepName: string;
6
+ state: WorkflowStateValue;
7
+ }
8
+ export interface ICmsEntrySystemWithWorkflow {
9
+ workflow?: ICmsEntryWorkflowState | null;
10
+ }
package/types.js ADDED
File without changes
package/utils/appName.js CHANGED
@@ -1,16 +1,13 @@
1
- export const createAppName = model => {
2
- return `cms.${model.modelId}`;
1
+ const createAppName = (model)=>`cms.${model.modelId}`;
2
+ const parseAppName = (appName)=>{
3
+ const parts = appName.split(".");
4
+ if (2 !== parts.length || "cms" !== parts[0]) throw new Error(`Invalid app name: "${appName}".`);
5
+ return parts[1];
3
6
  };
4
- export const parseAppName = appName => {
5
- const parts = appName.split(".");
6
- if (parts.length !== 2 || parts[0] !== "cms") {
7
- throw new Error(`Invalid app name: "${appName}".`);
8
- }
9
- return parts[1];
10
- };
11
- export const isCmsAppName = appName => {
12
- const parts = appName.split(".");
13
- return parts.length === 2 && parts[0] === "cms";
7
+ const isCmsAppName = (appName)=>{
8
+ const parts = appName.split(".");
9
+ return 2 === parts.length && "cms" === parts[0];
14
10
  };
11
+ export { createAppName, isCmsAppName, parseAppName };
15
12
 
16
13
  //# sourceMappingURL=appName.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAppName","model","modelId","parseAppName","appName","parts","split","length","Error","isCmsAppName"],"sources":["appName.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nexport const createAppName = (model: Pick<CmsModel, \"modelId\">): string => {\n return `cms.${model.modelId}`;\n};\n\nexport const parseAppName = (appName: string): string => {\n const parts = appName.split(\".\");\n if (parts.length !== 2 || parts[0] !== \"cms\") {\n throw new Error(`Invalid app name: \"${appName}\".`);\n }\n return parts[1];\n};\n\nexport const isCmsAppName = (appName: string): boolean => {\n const parts = appName.split(\".\");\n return parts.length === 2 && parts[0] === \"cms\";\n};\n"],"mappings":"AAEA,OAAO,MAAMA,aAAa,GAAIC,KAAgC,IAAa;EACvE,OAAO,OAAOA,KAAK,CAACC,OAAO,EAAE;AACjC,CAAC;AAED,OAAO,MAAMC,YAAY,GAAIC,OAAe,IAAa;EACrD,MAAMC,KAAK,GAAGD,OAAO,CAACE,KAAK,CAAC,GAAG,CAAC;EAChC,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,IAAIF,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;IAC1C,MAAM,IAAIG,KAAK,CAAC,sBAAsBJ,OAAO,IAAI,CAAC;EACtD;EACA,OAAOC,KAAK,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,OAAO,MAAMI,YAAY,GAAIL,OAAe,IAAc;EACtD,MAAMC,KAAK,GAAGD,OAAO,CAACE,KAAK,CAAC,GAAG,CAAC;EAChC,OAAOD,KAAK,CAACE,MAAM,KAAK,CAAC,IAAIF,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK;AACnD,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"utils/appName.js","sources":["../../src/utils/appName.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nexport const createAppName = (model: Pick<CmsModel, \"modelId\">): string => {\n return `cms.${model.modelId}`;\n};\n\nexport const parseAppName = (appName: string): string => {\n const parts = appName.split(\".\");\n if (parts.length !== 2 || parts[0] !== \"cms\") {\n throw new Error(`Invalid app name: \"${appName}\".`);\n }\n return parts[1];\n};\n\nexport const isCmsAppName = (appName: string): boolean => {\n const parts = appName.split(\".\");\n return parts.length === 2 && parts[0] === \"cms\";\n};\n"],"names":["createAppName","model","parseAppName","appName","parts","Error","isCmsAppName"],"mappings":"AAEO,MAAMA,gBAAgB,CAACC,QACnB,CAAC,IAAI,EAAEA,MAAM,OAAO,EAAE;AAG1B,MAAMC,eAAe,CAACC;IACzB,MAAMC,QAAQD,QAAQ,KAAK,CAAC;IAC5B,IAAIC,AAAiB,MAAjBA,MAAM,MAAM,IAAUA,AAAa,UAAbA,KAAK,CAAC,EAAE,EAC9B,MAAM,IAAIC,MAAM,CAAC,mBAAmB,EAAEF,QAAQ,EAAE,CAAC;IAErD,OAAOC,KAAK,CAAC,EAAE;AACnB;AAEO,MAAME,eAAe,CAACH;IACzB,MAAMC,QAAQD,QAAQ,KAAK,CAAC;IAC5B,OAAOC,AAAiB,MAAjBA,MAAM,MAAM,IAAUA,AAAa,UAAbA,KAAK,CAAC,EAAE;AACzC"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["CmsEntriesWorkflowStateListFooterMenu"],"sources":["index.ts"],"sourcesContent":["export { CmsEntriesWorkflowStateListFooterMenu } from \"./CmsEntriesWorkflowStateListFooterMenu.js\";\n"],"mappings":"AAAA,SAASA,qCAAqC","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- export declare const CmsWorkflowsEditorMenu: () => React.JSX.Element | null;
3
- export declare const CmsWorkflowsEditorView: () => React.JSX.Element | null;
@@ -1,128 +0,0 @@
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, Loader } from "@webiny/admin-ui";
6
- import { useModels, usePermission } from "@webiny/app-headless-cms/admin/hooks/index.js";
7
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
8
- import { createAppName } from "../../utils/appName.js";
9
- import { normalizeIcon } from "@webiny/app-headless-cms/utils/normalizeIcon.js";
10
- const {
11
- Admin: {
12
- WorkflowsEditor
13
- },
14
- Permissions: {
15
- HasWorkflowsEditorPermission
16
- }
17
- } = Components;
18
- const {
19
- Menu
20
- } = AdminConfig;
21
- export const CmsWorkflowsEditorMenu = () => {
22
- const router = useRouter();
23
- const {
24
- canCreateContentModels
25
- } = usePermission();
26
- if (!canCreateContentModels) {
27
- return null;
28
- }
29
- return /*#__PURE__*/React.createElement(HasWorkflowsEditorPermission, null, /*#__PURE__*/React.createElement(Menu, {
30
- name: "headlessCMS.contentModels.workflows",
31
- parent: "headlessCMS",
32
- element: /*#__PURE__*/React.createElement(Menu.Link, {
33
- pinnable: true,
34
- text: "Workflows",
35
- to: router.getLink(Routes.ContentModels.Workflows)
36
- })
37
- }));
38
- };
39
- const ModelIcon = ({
40
- model
41
- }) => {
42
- if (!model.icon) {
43
- return null;
44
- }
45
- const icon = normalizeIcon(model.icon);
46
- if (!icon) {
47
- return null;
48
- }
49
- return /*#__PURE__*/React.createElement(Icon, {
50
- icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
51
- icon: icon
52
- }),
53
- label: model.name,
54
- size: "sm",
55
- className: "text-neutral-strong"
56
- });
57
- };
58
- const isAllowed = model => {
59
- // Exclude models that have the "$publishing:false" tag
60
- if (model.tags.includes("$publishing:false")) {
61
- return false;
62
- }
63
- // Exclude single entry models
64
- else if (model.tags.includes("singleEntry")) {
65
- return false;
66
- }
67
- return true;
68
- };
69
- export const CmsWorkflowsEditorView = () => {
70
- const {
71
- route
72
- } = useRoute(Routes.ContentModels.Workflows);
73
- const {
74
- models,
75
- loading
76
- } = useModels();
77
- const {
78
- canEdit,
79
- canCreateContentModels
80
- } = usePermission();
81
- const {
82
- goToRoute
83
- } = useRouter();
84
- const apps = useMemo(() => {
85
- return models.filter(model => {
86
- if (isAllowed(model) === false) {
87
- return false;
88
- }
89
- return canEdit(model, "cms.contentModel");
90
- }).map(model => {
91
- return {
92
- id: createAppName(model),
93
- name: model.name,
94
- icon: /*#__PURE__*/React.createElement(ModelIcon, {
95
- model: model
96
- })
97
- };
98
- });
99
- }, [models, canEdit]);
100
- const app = useMemo(() => {
101
- if (!route.params.app) {
102
- return apps.find(() => true);
103
- }
104
- return apps.find(a => a.id === route.params.app) || null;
105
- }, [route.params.app]);
106
- const onAppClick = useCallback(id => {
107
- goToRoute(Routes.ContentModels.Workflows, {
108
- app: id
109
- });
110
- }, [apps]);
111
- if (!canCreateContentModels) {
112
- return null;
113
- } else if (loading) {
114
- return /*#__PURE__*/React.createElement(Loader, {
115
- size: "lg",
116
- variant: "accent",
117
- indeterminate: true,
118
- text: "Loading..."
119
- });
120
- }
121
- return /*#__PURE__*/React.createElement(WorkflowsEditor, {
122
- apps: apps,
123
- onAppClick: onAppClick,
124
- app: app?.id
125
- });
126
- };
127
-
128
- //# sourceMappingURL=CmsWorkflowsEditorView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useCallback","useMemo","AdminConfig","useRoute","useRouter","Routes","Components","Icon","Loader","useModels","usePermission","FontAwesomeIcon","createAppName","normalizeIcon","Admin","WorkflowsEditor","Permissions","HasWorkflowsEditorPermission","Menu","CmsWorkflowsEditorMenu","router","canCreateContentModels","createElement","name","parent","element","Link","pinnable","text","to","getLink","ContentModels","Workflows","ModelIcon","model","icon","label","size","className","isAllowed","tags","includes","CmsWorkflowsEditorView","route","models","loading","canEdit","goToRoute","apps","filter","map","id","app","params","find","a","onAppClick","variant","indeterminate"],"sources":["CmsWorkflowsEditorView.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { AdminConfig, useRoute, useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"~/routes.js\";\nimport type { IWorkflowApplication } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { Icon, Loader } from \"@webiny/admin-ui\";\nimport { useModels, usePermission } from \"@webiny/app-headless-cms/admin/hooks/index.js\";\nimport type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { createAppName } from \"~/utils/appName.js\";\nimport { normalizeIcon } from \"@webiny/app-headless-cms/utils/normalizeIcon.js\";\n\nconst {\n Admin: { WorkflowsEditor },\n Permissions: { HasWorkflowsEditorPermission }\n} = Components;\n\nconst { Menu } = AdminConfig;\n\nexport const CmsWorkflowsEditorMenu = () => {\n const router = useRouter();\n const { canCreateContentModels } = usePermission();\n\n if (!canCreateContentModels) {\n return null;\n }\n\n return (\n <HasWorkflowsEditorPermission>\n <Menu\n name={\"headlessCMS.contentModels.workflows\"}\n parent={\"headlessCMS\"}\n element={\n <Menu.Link\n pinnable={true}\n text={\"Workflows\"}\n to={router.getLink(Routes.ContentModels.Workflows)}\n />\n }\n />\n </HasWorkflowsEditorPermission>\n );\n};\n\ninterface IModelIconProps {\n model: Pick<CmsModel, \"icon\" | \"name\">;\n}\n\nconst ModelIcon = ({ model }: IModelIconProps) => {\n if (!model.icon) {\n return null;\n }\n\n const icon = normalizeIcon(model.icon);\n if (!icon) {\n return null;\n }\n\n return (\n <Icon\n icon={<FontAwesomeIcon icon={icon} />}\n label={model.name}\n size={\"sm\"}\n className={\"text-neutral-strong\"}\n />\n );\n};\n\nconst isAllowed = (model: Pick<CmsModel, \"modelId\" | \"tags\">) => {\n // Exclude models that have the \"$publishing:false\" tag\n if (model.tags.includes(\"$publishing:false\")) {\n return false;\n }\n // Exclude single entry models\n else if (model.tags.includes(\"singleEntry\")) {\n return false;\n }\n\n return true;\n};\n\nexport const CmsWorkflowsEditorView = () => {\n const { route } = useRoute(Routes.ContentModels.Workflows);\n const { models, loading } = useModels();\n const { canEdit, canCreateContentModels } = usePermission();\n const { goToRoute } = useRouter();\n\n const apps = useMemo<IWorkflowApplication[]>(() => {\n return models\n .filter(model => {\n if (isAllowed(model) === false) {\n return false;\n }\n return canEdit(model, \"cms.contentModel\");\n })\n .map(model => {\n return {\n id: createAppName(model),\n name: model.name,\n icon: <ModelIcon model={model} />\n };\n });\n }, [models, canEdit]);\n\n const app = useMemo(() => {\n if (!route.params.app) {\n return apps.find(() => true);\n }\n return apps.find(a => a.id === route.params.app) || null;\n }, [route.params.app]);\n\n const onAppClick = useCallback(\n (id: string) => {\n goToRoute(Routes.ContentModels.Workflows, {\n app: id\n });\n },\n [apps]\n );\n\n if (!canCreateContentModels) {\n return null;\n } else if (loading) {\n return <Loader size=\"lg\" variant=\"accent\" indeterminate={true} text=\"Loading...\" />;\n }\n\n return <WorkflowsEditor apps={apps} onAppClick={onAppClick} app={app?.id} />;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntryFormPublishButton: () => React.JSX.Element | null;
@@ -1,38 +0,0 @@
1
- import { useContentEntry, usePermission } from "@webiny/app-headless-cms";
2
- import { ContentEntryEditorConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
3
- import React, { useCallback } from "react";
4
- export const CmsEntryFormPublishButton = () => {
5
- const {
6
- loading,
7
- entry,
8
- publishEntryRevision
9
- } = useContentEntry();
10
- const {
11
- ButtonPrimary
12
- } = ContentEntryEditorConfig.Actions.ButtonAction.useButtons();
13
- const publish = useCallback(() => {
14
- if (!entry.id) {
15
- console.warn(`You cannot publish an entry that hasn't been saved yet.`);
16
- return;
17
- }
18
- publishEntryRevision({
19
- id: entry.id
20
- });
21
- }, [entry.id]);
22
- const {
23
- canEdit,
24
- canPublish
25
- } = usePermission();
26
- if (entry.meta.status === "published") {
27
- return null;
28
- } else if (!canEdit(entry, "cms.contentEntry") || !canPublish("cms.contentEntry")) {
29
- return null;
30
- }
31
- return /*#__PURE__*/React.createElement(ButtonPrimary, {
32
- onAction: publish,
33
- disabled: loading,
34
- "data-testid": "workflows-cms-content-publish-content-button"
35
- }, "Publish");
36
- };
37
-
38
- //# sourceMappingURL=CmsEntryFormPublishButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useContentEntry","usePermission","ContentEntryEditorConfig","React","useCallback","CmsEntryFormPublishButton","loading","entry","publishEntryRevision","ButtonPrimary","Actions","ButtonAction","useButtons","publish","id","console","warn","canEdit","canPublish","meta","status","createElement","onAction","disabled"],"sources":["CmsEntryFormPublishButton.tsx"],"sourcesContent":["import { useContentEntry, usePermission } from \"@webiny/app-headless-cms\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport React, { useCallback } from \"react\";\n\nexport const CmsEntryFormPublishButton = () => {\n const { loading, entry, publishEntryRevision } = useContentEntry();\n const { ButtonPrimary } = ContentEntryEditorConfig.Actions.ButtonAction.useButtons();\n\n const publish = useCallback(() => {\n if (!entry.id) {\n console.warn(`You cannot publish an entry that hasn't been saved yet.`);\n return;\n }\n publishEntryRevision({ id: entry.id });\n }, [entry.id]);\n\n const { canEdit, canPublish } = usePermission();\n\n if (entry.meta.status === \"published\") {\n return null;\n } else if (!canEdit(entry, \"cms.contentEntry\") || !canPublish(\"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <ButtonPrimary\n onAction={publish}\n disabled={loading}\n data-testid=\"workflows-cms-content-publish-content-button\"\n >\n {\"Publish\"}\n </ButtonPrimary>\n );\n};\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,aAAa,QAAQ,0BAA0B;AACzE,SAASC,wBAAwB,QAAQ,+DAA+D;AACxG,OAAOC,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAE1C,OAAO,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAqB,CAAC,GAAGR,eAAe,CAAC,CAAC;EAClE,MAAM;IAAES;EAAc,CAAC,GAAGP,wBAAwB,CAACQ,OAAO,CAACC,YAAY,CAACC,UAAU,CAAC,CAAC;EAEpF,MAAMC,OAAO,GAAGT,WAAW,CAAC,MAAM;IAC9B,IAAI,CAACG,KAAK,CAACO,EAAE,EAAE;MACXC,OAAO,CAACC,IAAI,CAAC,yDAAyD,CAAC;MACvE;IACJ;IACAR,oBAAoB,CAAC;MAAEM,EAAE,EAAEP,KAAK,CAACO;IAAG,CAAC,CAAC;EAC1C,CAAC,EAAE,CAACP,KAAK,CAACO,EAAE,CAAC,CAAC;EAEd,MAAM;IAAEG,OAAO;IAAEC;EAAW,CAAC,GAAGjB,aAAa,CAAC,CAAC;EAE/C,IAAIM,KAAK,CAACY,IAAI,CAACC,MAAM,KAAK,WAAW,EAAE;IACnC,OAAO,IAAI;EACf,CAAC,MAAM,IAAI,CAACH,OAAO,CAACV,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAACW,UAAU,CAAC,kBAAkB,CAAC,EAAE;IAC/E,OAAO,IAAI;EACf;EAEA,oBACIf,KAAA,CAAAkB,aAAA,CAACZ,aAAa;IACVa,QAAQ,EAAET,OAAQ;IAClBU,QAAQ,EAAEjB,OAAQ;IAClB,eAAY;EAA8C,GAEzD,SACU,CAAC;AAExB,CAAC","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntryFormSaveAndPublishButton: (props: unknown) => React.JSX.Element;
@@ -1,39 +0,0 @@
1
- import React from "react";
2
- import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
- import { useWorkflowState } from "@webiny/app-workflows";
4
- import { observer } from "mobx-react-lite";
5
- import { WorkflowStateValue } from "@webiny/app-workflows";
6
- import { CmsEntryFormPublishButton } from "./CmsEntryFormPublishButton.js";
7
- const {
8
- Actions
9
- } = ContentEntryEditorConfig;
10
- const {
11
- ButtonAction
12
- } = Actions;
13
- const OverrideSaveAndPublishButton = observer(props => {
14
- const {
15
- presenter
16
- } = useWorkflowState();
17
-
18
- /**
19
- * If there is no workflow state or state is approved, we simply render the original element.
20
- * This is to ensure that no button will be shown if workflow state is active.
21
- */
22
- if (props.name !== "publish" || !presenter.vm.workflow) {
23
- return props.children;
24
- } else if (presenter.vm.state?.state === WorkflowStateValue.approved) {
25
- return /*#__PURE__*/React.createElement(CmsEntryFormPublishButton, null);
26
- }
27
- return null;
28
- });
29
- export const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator(Original => {
30
- return function WorkflowCmsEntryFormSaveAndPublishButton(props) {
31
- return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
32
- element: /*#__PURE__*/React.createElement(OverrideSaveAndPublishButton, {
33
- name: props.name
34
- }, props.element)
35
- }));
36
- };
37
- });
38
-
39
- //# sourceMappingURL=CmsEntryFormSaveAndPublishButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","ContentEntryEditorConfig","useWorkflowState","observer","WorkflowStateValue","CmsEntryFormPublishButton","Actions","ButtonAction","OverrideSaveAndPublishButton","props","presenter","name","vm","workflow","children","state","approved","createElement","CmsEntryFormSaveAndPublishButton","createDecorator","Original","WorkflowCmsEntryFormSaveAndPublishButton","Object","assign","element"],"sources":["CmsEntryFormSaveAndPublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\nimport { WorkflowStateValue } from \"@webiny/app-workflows\";\nimport { CmsEntryFormPublishButton } from \"./CmsEntryFormPublishButton.js\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { ButtonAction } = Actions;\n\ninterface IOverrideSaveAndPublishButtonProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideSaveAndPublishButton = observer((props: IOverrideSaveAndPublishButtonProps) => {\n const { presenter } = useWorkflowState();\n\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (props.name !== \"publish\" || !presenter.vm.workflow) {\n return props.children;\n } else if (presenter.vm.state?.state === WorkflowStateValue.approved) {\n return <CmsEntryFormPublishButton />;\n }\n return null;\n});\n\nexport const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator(Original => {\n return function WorkflowCmsEntryFormSaveAndPublishButton(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideSaveAndPublishButton name={props.name}>\n {props.element}\n </OverrideSaveAndPublishButton>\n }\n />\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,wBAAwB,QAAQ,0BAA0B;AACnE,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,yBAAyB;AAElC,MAAM;EAAEC;AAAQ,CAAC,GAAGL,wBAAwB;AAC5C,MAAM;EAAEM;AAAa,CAAC,GAAGD,OAAO;AAOhC,MAAME,4BAA4B,GAAGL,QAAQ,CAAEM,KAAyC,IAAK;EACzF,MAAM;IAAEC;EAAU,CAAC,GAAGR,gBAAgB,CAAC,CAAC;;EAExC;AACJ;AACA;AACA;EACI,IAAIO,KAAK,CAACE,IAAI,KAAK,SAAS,IAAI,CAACD,SAAS,CAACE,EAAE,CAACC,QAAQ,EAAE;IACpD,OAAOJ,KAAK,CAACK,QAAQ;EACzB,CAAC,MAAM,IAAIJ,SAAS,CAACE,EAAE,CAACG,KAAK,EAAEA,KAAK,KAAKX,kBAAkB,CAACY,QAAQ,EAAE;IAClE,oBAAOhB,KAAA,CAAAiB,aAAA,CAACZ,yBAAyB,MAAE,CAAC;EACxC;EACA,OAAO,IAAI;AACf,CAAC,CAAC;AAEF,OAAO,MAAMa,gCAAgC,GAAGX,YAAY,CAACY,eAAe,CAACC,QAAQ,IAAI;EACrF,OAAO,SAASC,wCAAwCA,CAACZ,KAAK,EAAE;IAC5D,oBACIT,KAAA,CAAAiB,aAAA,CAACG,QAAQ,EAAAE,MAAA,CAAAC,MAAA,KACDd,KAAK;MACTe,OAAO,eACHxB,KAAA,CAAAiB,aAAA,CAACT,4BAA4B;QAACG,IAAI,EAAEF,KAAK,CAACE;MAAK,GAC1CF,KAAK,CAACe,OACmB;IACjC,EACJ,CAAC;EAEV,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const CmsEntryFormSaveButton: (props: unknown) => React.JSX.Element;