@webiny/app-headless-cms-scheduler 6.4.5 → 6.6.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,12 @@ import react from "react";
2
2
  import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
3
3
  import { ContentEntryListConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
4
4
  import { MenuItem } from "./MenuItem.js";
5
+ import { SchedulerMenuItem } from "./SchedulerMenuItem.js";
5
6
  const { Browser: Browser } = ContentEntryListConfig;
6
- const BrowserConfig = ()=>/*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(Browser.Entry.Action, {
7
+ const BrowserConfig = ()=>/*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
8
+ name: "scheduler",
9
+ element: /*#__PURE__*/ react.createElement(SchedulerMenuItem, null)
10
+ }), /*#__PURE__*/ react.createElement(Browser.Entry.Action, {
7
11
  name: "schedule",
8
12
  element: /*#__PURE__*/ react.createElement(MenuItem, null)
9
13
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"components/Browser/BrowserConfig.js","sources":["../../../src/components/Browser/BrowserConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { MenuItem } from \"./MenuItem.js\";\n\nconst { Browser } = ContentEntryListConfig;\n\nexport const BrowserConfig = () => {\n return (\n <ContentEntryListConfig>\n <IsModelPublishable>\n <Browser.Entry.Action name={\"schedule\"} element={<MenuItem />} />\n </IsModelPublishable>\n </ContentEntryListConfig>\n );\n};\n"],"names":["Browser","ContentEntryListConfig","BrowserConfig","IsModelPublishable","MenuItem"],"mappings":";;;;AAKA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,gBAAgB,IAClB,WAAP,GACI,oBAACD,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACE,oBAAkBA,MAAAA,WAAAA,GACf,oBAACH,QAAQ,KAAK,CAAC,MAAM;QAAC,MAAM;QAAY,uBAAS,oBAACI,UAAQA"}
1
+ {"version":3,"file":"components/Browser/BrowserConfig.js","sources":["../../../src/components/Browser/BrowserConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { MenuItem } from \"./MenuItem.js\";\nimport { SchedulerMenuItem } from \"./SchedulerMenuItem.js\";\n\nconst { Browser } = ContentEntryListConfig;\n\nexport const BrowserConfig = () => {\n return (\n <ContentEntryListConfig>\n <IsModelPublishable>\n <Browser.Sidebar.Footer name={\"scheduler\"} element={<SchedulerMenuItem />} />\n <Browser.Entry.Action name={\"schedule\"} element={<MenuItem />} />\n </IsModelPublishable>\n </ContentEntryListConfig>\n );\n};\n"],"names":["Browser","ContentEntryListConfig","BrowserConfig","IsModelPublishable","SchedulerMenuItem","MenuItem"],"mappings":";;;;;AAMA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,gBAAgB,IAClB,WAAP,GACI,oBAACD,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACE,oBAAkBA,MAAAA,WAAAA,GACf,oBAACH,QAAQ,OAAO,CAAC,MAAM;QAAC,MAAM;QAAa,uBAAS,oBAACI,mBAAiBA;sBACtE,oBAACJ,QAAQ,KAAK,CAAC,MAAM;QAAC,MAAM;QAAY,uBAAS,oBAACK,UAAQA"}
@@ -1,2 +1,4 @@
1
1
  import React from "react";
2
- export declare const MenuItem: () => React.JSX.Element | null;
2
+ export declare const MenuItem: (() => React.JSX.Element | null) & {
3
+ displayName: string;
4
+ };
@@ -1,20 +1,19 @@
1
1
  import react, { useCallback } from "react";
2
+ import { observer } from "mobx-react-lite";
2
3
  import { ReactComponent } from "@webiny/icons/cell_tower.svg";
3
- import { useApolloClient } from "@apollo/react-hooks";
4
4
  import { useScheduleDialog } from "@webiny/app-scheduler";
5
+ import { ContentEntryListConfig } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
6
+ import { useEntry } from "@webiny/app-headless-cms";
7
+ import { useModel } from "@webiny/app-headless-cms/exports/admin/cms.js";
5
8
  import { usePermissions } from "../../hooks/usePermissions.js";
6
9
  import { createNamespace } from "../../utils/index.js";
7
- import { ContentEntryListConfig, useContentEntriesList } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
8
- import { useEntry } from "@webiny/app-headless-cms";
9
- const MenuItem = ()=>{
10
- const { modelId } = useContentEntriesList();
10
+ const MenuItem = observer(()=>{
11
+ const { model } = useModel();
11
12
  const { entry } = useEntry();
12
13
  const { canPublish, canUnpublish } = usePermissions();
13
- const client = useApolloClient();
14
14
  const { showDialog: showSchedulerDialog } = useScheduleDialog({
15
- client,
16
15
  namespace: createNamespace({
17
- modelId
16
+ modelId: model.modelId
18
17
  }),
19
18
  target: {
20
19
  id: entry.id,
@@ -37,7 +36,7 @@ const MenuItem = ()=>{
37
36
  disabled: !entry?.meta?.status,
38
37
  "data-testid": "cms.content-form.header.schedule"
39
38
  });
40
- };
39
+ });
41
40
  export { MenuItem };
42
41
 
43
42
  //# sourceMappingURL=MenuItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components/Browser/MenuItem.js","sources":["../../../src/components/Browser/MenuItem.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { ReactComponent as ScheduleIcon } from \"@webiny/icons/cell_tower.svg\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { useScheduleDialog } from \"@webiny/app-scheduler\";\nimport { usePermissions } from \"~/hooks/usePermissions.js\";\nimport { createNamespace } from \"~/utils/index.js\";\nimport {\n ContentEntryListConfig,\n useContentEntriesList\n} from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { useEntry } from \"@webiny/app-headless-cms\";\n\nexport const MenuItem = () => {\n const { modelId } = useContentEntriesList();\n const { entry } = useEntry();\n\n const { canPublish, canUnpublish } = usePermissions();\n const client = useApolloClient();\n\n const { showDialog: showSchedulerDialog } = useScheduleDialog({\n client,\n namespace: createNamespace({\n modelId\n }),\n target: {\n id: entry.id,\n title: entry.meta.title,\n status: entry.meta.status\n }\n });\n\n const { OptionsMenuItem } = ContentEntryListConfig.Browser.Entry.Action;\n\n const showDialog = useCallback(() => {\n showSchedulerDialog();\n }, [showSchedulerDialog]);\n\n if (!canPublish && !canUnpublish) {\n return null;\n }\n\n const action = entry.meta?.status === \"published\" ? \"unpublish\" : \"publish\";\n\n return (\n <OptionsMenuItem\n icon={<ScheduleIcon />}\n label={`Schedule ${action}`}\n onAction={showDialog}\n disabled={!entry?.meta?.status}\n data-testid={\"cms.content-form.header.schedule\"}\n />\n );\n};\n"],"names":["MenuItem","modelId","useContentEntriesList","entry","useEntry","canPublish","canUnpublish","usePermissions","client","useApolloClient","showSchedulerDialog","useScheduleDialog","createNamespace","OptionsMenuItem","ContentEntryListConfig","showDialog","useCallback","action","ScheduleIcon"],"mappings":";;;;;;;;AAYO,MAAMA,WAAW;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAM,EAAEC,KAAK,EAAE,GAAGC;IAElB,MAAM,EAAEC,UAAU,EAAEC,YAAY,EAAE,GAAGC;IACrC,MAAMC,SAASC;IAEf,MAAM,EAAE,YAAYC,mBAAmB,EAAE,GAAGC,kBAAkB;QAC1DH;QACA,WAAWI,gBAAgB;YACvBX;QACJ;QACA,QAAQ;YACJ,IAAIE,MAAM,EAAE;YACZ,OAAOA,MAAM,IAAI,CAAC,KAAK;YACvB,QAAQA,MAAM,IAAI,CAAC,MAAM;QAC7B;IACJ;IAEA,MAAM,EAAEU,eAAe,EAAE,GAAGC,uBAAuB,OAAO,CAAC,KAAK,CAAC,MAAM;IAEvE,MAAMC,aAAaC,YAAY;QAC3BN;IACJ,GAAG;QAACA;KAAoB;IAExB,IAAI,CAACL,cAAc,CAACC,cAChB,OAAO;IAGX,MAAMW,SAASd,MAAM,IAAI,EAAE,WAAW,cAAc,cAAc;IAElE,OAAO,WAAP,GACI,oBAACU,iBAAAA;QACG,oBAAM,oBAACK,gBAAYA;QACnB,OAAO,CAAC,SAAS,EAAED,QAAQ;QAC3B,UAAUF;QACV,UAAU,CAACZ,OAAO,MAAM;QACxB,eAAa;;AAGzB"}
1
+ {"version":3,"file":"components/Browser/MenuItem.js","sources":["../../../src/components/Browser/MenuItem.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { ReactComponent as ScheduleIcon } from \"@webiny/icons/cell_tower.svg\";\nimport { useScheduleDialog } from \"@webiny/app-scheduler\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { useEntry } from \"@webiny/app-headless-cms\";\nimport { useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { usePermissions } from \"~/hooks/usePermissions.js\";\nimport { createNamespace } from \"~/utils/index.js\";\n\nexport const MenuItem = observer(() => {\n const { model } = useModel();\n const { entry } = useEntry();\n\n const { canPublish, canUnpublish } = usePermissions();\n\n const { showDialog: showSchedulerDialog } = useScheduleDialog({\n namespace: createNamespace({ modelId: model.modelId }),\n target: {\n id: entry.id,\n title: entry.meta.title,\n status: entry.meta.status\n }\n });\n\n const { OptionsMenuItem } = ContentEntryListConfig.Browser.Entry.Action;\n\n const showDialog = useCallback(() => {\n showSchedulerDialog();\n }, [showSchedulerDialog]);\n\n if (!canPublish && !canUnpublish) {\n return null;\n }\n\n const action = entry.meta?.status === \"published\" ? \"unpublish\" : \"publish\";\n\n return (\n <OptionsMenuItem\n icon={<ScheduleIcon />}\n label={`Schedule ${action}`}\n onAction={showDialog}\n disabled={!entry?.meta?.status}\n data-testid={\"cms.content-form.header.schedule\"}\n />\n );\n});\n"],"names":["MenuItem","observer","model","useModel","entry","useEntry","canPublish","canUnpublish","usePermissions","showSchedulerDialog","useScheduleDialog","createNamespace","OptionsMenuItem","ContentEntryListConfig","showDialog","useCallback","action","ScheduleIcon"],"mappings":";;;;;;;;;AAUO,MAAMA,WAAWC,SAAS;IAC7B,MAAM,EAAEC,KAAK,EAAE,GAAGC;IAClB,MAAM,EAAEC,KAAK,EAAE,GAAGC;IAElB,MAAM,EAAEC,UAAU,EAAEC,YAAY,EAAE,GAAGC;IAErC,MAAM,EAAE,YAAYC,mBAAmB,EAAE,GAAGC,kBAAkB;QAC1D,WAAWC,gBAAgB;YAAE,SAAST,MAAM,OAAO;QAAC;QACpD,QAAQ;YACJ,IAAIE,MAAM,EAAE;YACZ,OAAOA,MAAM,IAAI,CAAC,KAAK;YACvB,QAAQA,MAAM,IAAI,CAAC,MAAM;QAC7B;IACJ;IAEA,MAAM,EAAEQ,eAAe,EAAE,GAAGC,uBAAuB,OAAO,CAAC,KAAK,CAAC,MAAM;IAEvE,MAAMC,aAAaC,YAAY;QAC3BN;IACJ,GAAG;QAACA;KAAoB;IAExB,IAAI,CAACH,cAAc,CAACC,cAChB,OAAO;IAGX,MAAMS,SAASZ,MAAM,IAAI,EAAE,WAAW,cAAc,cAAc;IAElE,OAAO,WAAP,GACI,oBAACQ,iBAAAA;QACG,oBAAM,oBAACK,gBAAYA;QACnB,OAAO,CAAC,SAAS,EAAED,QAAQ;QAC3B,UAAUF;QACV,UAAU,CAACV,OAAO,MAAM;QACxB,eAAa;;AAGzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Sidebar/SchedulerButton.js","sources":["../../../src/components/Sidebar/SchedulerButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { ReactComponent as ScheduleIcon } from \"@webiny/icons/cell_tower.svg\";\n\nexport interface ScheduleButtonProps {\n onClick: () => void;\n}\n\nexport const SchedulerButton = (props: ScheduleButtonProps) => {\n return (\n <div className={\"list-none\"}>\n <Sidebar.Item\n onClick={props.onClick}\n text={\"Schedule\"}\n icon={<Sidebar.Item.Icon element={<ScheduleIcon />} label={\"Schedule\"} />}\n />\n </div>\n );\n};\n"],"names":["SchedulerButton","props","Sidebar","ScheduleIcon"],"mappings":";;;AAQO,MAAMA,kBAAkB,CAACC,QACrB,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACC,QAAQ,IAAI;QACT,SAASD,MAAM,OAAO;QACtB,MAAM;QACN,oBAAM,oBAACC,QAAQ,IAAI,CAAC,IAAI;YAAC,uBAAS,oBAACC,gBAAYA;YAAK,OAAO"}
1
+ {"version":3,"file":"components/Browser/SchedulerButton.js","sources":["../../../src/components/Browser/SchedulerButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { ReactComponent as ScheduleIcon } from \"@webiny/icons/cell_tower.svg\";\n\nexport interface ScheduleButtonProps {\n onClick: () => void;\n}\n\nexport const SchedulerButton = (props: ScheduleButtonProps) => {\n return (\n <div className={\"list-none\"}>\n <Sidebar.Item\n onClick={props.onClick}\n text={\"Schedule\"}\n icon={<Sidebar.Item.Icon element={<ScheduleIcon />} label={\"Schedule\"} />}\n />\n </div>\n );\n};\n"],"names":["SchedulerButton","props","Sidebar","ScheduleIcon"],"mappings":";;;AAQO,MAAMA,kBAAkB,CAACC,QACrB,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACC,QAAQ,IAAI;QACT,SAASD,MAAM,OAAO;QACtB,MAAM;QACN,oBAAM,oBAACC,QAAQ,IAAI,CAAC,IAAI;YAAC,uBAAS,oBAACC,gBAAYA;YAAK,OAAO"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SchedulerMenuItem: () => React.JSX.Element | null;
@@ -0,0 +1,23 @@
1
+ import react from "react";
2
+ import { useModel } from "@webiny/app-headless-cms/exports/admin/cms.js";
3
+ import { usePermissions } from "../../hooks/usePermissions.js";
4
+ import { Scheduler } from "@webiny/app-scheduler";
5
+ import { SchedulerButton } from "./SchedulerButton.js";
6
+ import { createNamespace } from "../../utils/index.js";
7
+ const SchedulerMenuItem = ()=>{
8
+ const { model } = useModel();
9
+ const { canPublish, canUnpublish } = usePermissions();
10
+ const namespace = createNamespace(model);
11
+ if (!canPublish && !canUnpublish) return null;
12
+ return /*#__PURE__*/ react.createElement(Scheduler, {
13
+ namespace: namespace,
14
+ canPublish: canPublish,
15
+ canUnpublish: canUnpublish,
16
+ render: ({ showScheduler })=>/*#__PURE__*/ react.createElement(SchedulerButton, {
17
+ onClick: showScheduler
18
+ })
19
+ });
20
+ };
21
+ export { SchedulerMenuItem };
22
+
23
+ //# sourceMappingURL=SchedulerMenuItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components/Browser/SchedulerMenuItem.js","sources":["../../../src/components/Browser/SchedulerMenuItem.tsx"],"sourcesContent":["import React from \"react\";\nimport { useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { usePermissions } from \"~/hooks/usePermissions.js\";\nimport { Scheduler as BaseScheduler } from \"@webiny/app-scheduler\";\nimport { SchedulerButton } from \"./SchedulerButton.js\";\nimport { createNamespace } from \"~/utils/index.js\";\n\nexport const SchedulerMenuItem = () => {\n const { model } = useModel();\n const { canPublish, canUnpublish } = usePermissions();\n\n const namespace = createNamespace(model);\n\n if (!canPublish && !canUnpublish) {\n return null;\n }\n\n return (\n <BaseScheduler\n namespace={namespace}\n canPublish={canPublish}\n canUnpublish={canUnpublish}\n render={({ showScheduler }) => {\n return <SchedulerButton onClick={showScheduler} />;\n }}\n />\n );\n};\n"],"names":["SchedulerMenuItem","model","useModel","canPublish","canUnpublish","usePermissions","namespace","createNamespace","BaseScheduler","showScheduler","SchedulerButton"],"mappings":";;;;;;AAOO,MAAMA,oBAAoB;IAC7B,MAAM,EAAEC,KAAK,EAAE,GAAGC;IAClB,MAAM,EAAEC,UAAU,EAAEC,YAAY,EAAE,GAAGC;IAErC,MAAMC,YAAYC,gBAAgBN;IAElC,IAAI,CAACE,cAAc,CAACC,cAChB,OAAO;IAGX,OAAO,WAAP,GACI,oBAACI,WAAaA;QACV,WAAWF;QACX,YAAYH;QACZ,cAAcC;QACd,QAAQ,CAAC,EAAEK,aAAa,EAAE,GACf,WAAP,GAAO,oBAACC,iBAAeA;gBAAC,SAASD;;;AAIjD"}
@@ -1,2 +1,4 @@
1
1
  import React from "react";
2
- export declare const MenuItem: () => React.JSX.Element | null;
2
+ export declare const MenuItem: (() => React.JSX.Element | null) & {
3
+ displayName: string;
4
+ };
@@ -1,42 +1,43 @@
1
1
  import react, { useCallback } from "react";
2
- import { ContentEntryEditorConfig, useContentEntryEditor } from "@webiny/app-headless-cms/exports/admin/cms/entry/editor.js";
2
+ import { observer } from "mobx-react-lite";
3
+ import { OptionsMenuItem } from "@webiny/app-admin";
4
+ import { useContentEntryFormPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/editor.js";
3
5
  import { ReactComponent } from "@webiny/icons/cell_tower.svg";
4
- import { useApolloClient } from "@apollo/react-hooks";
5
6
  import { useScheduleDialog } from "@webiny/app-scheduler";
6
7
  import { usePermissions } from "../../hooks/usePermissions.js";
7
8
  import { createNamespace } from "../../utils/index.js";
8
- const MenuItemWithId = ({ entry, contentModel, loading })=>{
9
- const client = useApolloClient();
9
+ const MenuItemWithId = ({ entryId, entryTitle, entryStatus, modelId, loading })=>{
10
10
  const { showDialog: showSchedulerDialog } = useScheduleDialog({
11
- client,
12
- namespace: createNamespace(contentModel),
11
+ namespace: createNamespace({
12
+ modelId
13
+ }),
13
14
  target: {
14
- id: entry.id,
15
- title: entry.meta.title,
16
- status: entry.meta.status
15
+ id: entryId,
16
+ title: entryTitle,
17
+ status: entryStatus
17
18
  }
18
19
  });
19
- const { OptionsMenuItem } = ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();
20
20
  const showDialog = useCallback(()=>{
21
21
  showSchedulerDialog();
22
22
  }, [
23
23
  showSchedulerDialog
24
24
  ]);
25
- const action = entry.meta?.status === "published" ? "unpublish" : "publish";
25
+ const action = "published" === entryStatus ? "unpublish" : "publish";
26
26
  return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
27
27
  icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
28
28
  label: `Schedule ${action}`,
29
29
  onAction: showDialog,
30
- disabled: !entry?.meta?.status || loading,
30
+ disabled: !entryStatus || loading,
31
31
  "data-testid": "cms.content-form.header.schedule"
32
32
  });
33
33
  };
34
- const MenuItem = ()=>{
35
- const { entry, loading, contentModel } = useContentEntryEditor();
34
+ const MenuItem = observer(()=>{
35
+ const presenter = useContentEntryFormPresenter();
36
36
  const { canPublish, canUnpublish } = usePermissions();
37
- const { OptionsMenuItem } = ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();
37
+ const vm = presenter.vm;
38
+ if (!vm.canPublish && !vm.canUnpublish) return null;
38
39
  if (!canPublish && !canUnpublish) return null;
39
- if (!entry.id) return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
40
+ if (!vm.entry) return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
40
41
  icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
41
42
  label: "Schedule",
42
43
  onAction: ()=>void 0,
@@ -44,11 +45,13 @@ const MenuItem = ()=>{
44
45
  "data-testid": "cms.content-form.header.schedule"
45
46
  });
46
47
  return /*#__PURE__*/ react.createElement(MenuItemWithId, {
47
- entry: entry,
48
- contentModel: contentModel,
49
- loading: loading
48
+ entryId: vm.entry.id,
49
+ entryTitle: vm.entry.meta?.title || "",
50
+ entryStatus: vm.entry.meta?.status || "",
51
+ modelId: vm.model.modelId,
52
+ loading: null !== vm.loading
50
53
  });
51
- };
54
+ });
52
55
  export { MenuItem };
53
56
 
54
57
  //# sourceMappingURL=MenuItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components/Editor/MenuItem.js","sources":["../../../src/components/Editor/MenuItem.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport {\n ContentEntryEditorConfig,\n useContentEntryEditor\n} from \"@webiny/app-headless-cms/exports/admin/cms/entry/editor.js\";\nimport { ReactComponent as ScheduleIcon } from \"@webiny/icons/cell_tower.svg\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { useScheduleDialog } from \"@webiny/app-scheduler\";\nimport { usePermissions } from \"~/hooks/usePermissions.js\";\nimport { createNamespace } from \"~/utils/index.js\";\n\ninterface MenuItemWithIdProps {\n entry: ReturnType<typeof useContentEntryEditor>[\"entry\"];\n contentModel: ReturnType<typeof useContentEntryEditor>[\"contentModel\"];\n loading: boolean;\n}\n\n/* Rendered only when entry.id exists; hooks that depend on entry.id live here. */\nconst MenuItemWithId = ({ entry, contentModel, loading }: MenuItemWithIdProps) => {\n const client = useApolloClient();\n\n const { showDialog: showSchedulerDialog } = useScheduleDialog({\n client,\n namespace: createNamespace(contentModel),\n target: {\n id: entry.id,\n title: entry.meta.title,\n status: entry.meta.status\n }\n });\n\n const { OptionsMenuItem } =\n ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();\n\n const showDialog = useCallback(() => {\n showSchedulerDialog();\n }, [showSchedulerDialog]);\n\n const action = entry.meta?.status === \"published\" ? \"unpublish\" : \"publish\";\n\n return (\n <OptionsMenuItem\n icon={<ScheduleIcon />}\n label={`Schedule ${action}`}\n onAction={showDialog}\n disabled={!entry?.meta?.status || loading}\n data-testid={\"cms.content-form.header.schedule\"}\n />\n );\n};\n\nexport const MenuItem = () => {\n const { entry, loading, contentModel } = useContentEntryEditor();\n const { canPublish, canUnpublish } = usePermissions();\n\n const { OptionsMenuItem } =\n ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();\n\n if (!canPublish && !canUnpublish) {\n return null;\n }\n\n /* When entry.id is missing (e.g. new unsaved entry), render a disabled item\n * without invoking hooks that require a persisted entry. */\n if (!entry.id) {\n return (\n <OptionsMenuItem\n icon={<ScheduleIcon />}\n label={\"Schedule\"}\n onAction={() => void 0}\n disabled={true}\n data-testid={\"cms.content-form.header.schedule\"}\n />\n );\n }\n\n return <MenuItemWithId entry={entry} contentModel={contentModel} loading={loading} />;\n};\n"],"names":["MenuItemWithId","entry","contentModel","loading","client","useApolloClient","showSchedulerDialog","useScheduleDialog","createNamespace","OptionsMenuItem","ContentEntryEditorConfig","showDialog","useCallback","action","ScheduleIcon","MenuItem","useContentEntryEditor","canPublish","canUnpublish","usePermissions"],"mappings":";;;;;;;AAkBA,MAAMA,iBAAiB,CAAC,EAAEC,KAAK,EAAEC,YAAY,EAAEC,OAAO,EAAuB;IACzE,MAAMC,SAASC;IAEf,MAAM,EAAE,YAAYC,mBAAmB,EAAE,GAAGC,kBAAkB;QAC1DH;QACA,WAAWI,gBAAgBN;QAC3B,QAAQ;YACJ,IAAID,MAAM,EAAE;YACZ,OAAOA,MAAM,IAAI,CAAC,KAAK;YACvB,QAAQA,MAAM,IAAI,CAAC,MAAM;QAC7B;IACJ;IAEA,MAAM,EAAEQ,eAAe,EAAE,GACrBC,yBAAyB,OAAO,CAAC,cAAc,CAAC,kBAAkB;IAEtE,MAAMC,aAAaC,YAAY;QAC3BN;IACJ,GAAG;QAACA;KAAoB;IAExB,MAAMO,SAASZ,MAAM,IAAI,EAAE,WAAW,cAAc,cAAc;IAElE,OAAO,WAAP,GACI,oBAACQ,iBAAAA;QACG,oBAAM,oBAACK,gBAAYA;QACnB,OAAO,CAAC,SAAS,EAAED,QAAQ;QAC3B,UAAUF;QACV,UAAU,CAACV,OAAO,MAAM,UAAUE;QAClC,eAAa;;AAGzB;AAEO,MAAMY,WAAW;IACpB,MAAM,EAAEd,KAAK,EAAEE,OAAO,EAAED,YAAY,EAAE,GAAGc;IACzC,MAAM,EAAEC,UAAU,EAAEC,YAAY,EAAE,GAAGC;IAErC,MAAM,EAAEV,eAAe,EAAE,GACrBC,yBAAyB,OAAO,CAAC,cAAc,CAAC,kBAAkB;IAEtE,IAAI,CAACO,cAAc,CAACC,cAChB,OAAO;IAKX,IAAI,CAACjB,MAAM,EAAE,EACT,OAAO,WAAP,GACI,oBAACQ,iBAAAA;QACG,oBAAM,oBAACK,gBAAYA;QACnB,OAAO;QACP,UAAU,IAAM,KAAK;QACrB,UAAU;QACV,eAAa;;IAKzB,OAAO,WAAP,GAAO,oBAACd,gBAAcA;QAAC,OAAOC;QAAO,cAAcC;QAAc,SAASC;;AAC9E"}
1
+ {"version":3,"file":"components/Editor/MenuItem.js","sources":["../../../src/components/Editor/MenuItem.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { OptionsMenuItem } from \"@webiny/app-admin\";\nimport { useContentEntryFormPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/editor.js\";\nimport { ReactComponent as ScheduleIcon } from \"@webiny/icons/cell_tower.svg\";\nimport { useScheduleDialog } from \"@webiny/app-scheduler\";\nimport { usePermissions } from \"~/hooks/usePermissions.js\";\nimport { createNamespace } from \"~/utils/index.js\";\n\ninterface MenuItemWithIdProps {\n entryId: string;\n entryTitle: string;\n entryStatus: string;\n modelId: string;\n loading: boolean;\n}\n\nconst MenuItemWithId = ({\n entryId,\n entryTitle,\n entryStatus,\n modelId,\n loading\n}: MenuItemWithIdProps) => {\n const { showDialog: showSchedulerDialog } = useScheduleDialog({\n namespace: createNamespace({ modelId }),\n target: {\n id: entryId,\n title: entryTitle,\n status: entryStatus\n }\n });\n\n const showDialog = useCallback(() => {\n showSchedulerDialog();\n }, [showSchedulerDialog]);\n\n const action = entryStatus === \"published\" ? \"unpublish\" : \"publish\";\n\n return (\n <OptionsMenuItem\n icon={<ScheduleIcon />}\n label={`Schedule ${action}`}\n onAction={showDialog}\n disabled={!entryStatus || loading}\n data-testid={\"cms.content-form.header.schedule\"}\n />\n );\n};\n\nexport const MenuItem = observer(() => {\n const presenter = useContentEntryFormPresenter();\n const { canPublish, canUnpublish } = usePermissions();\n\n const vm = presenter.vm;\n\n if (!vm.canPublish && !vm.canUnpublish) {\n return null;\n }\n\n if (!canPublish && !canUnpublish) {\n return null;\n }\n\n if (!vm.entry) {\n return (\n <OptionsMenuItem\n icon={<ScheduleIcon />}\n label={\"Schedule\"}\n onAction={() => void 0}\n disabled={true}\n data-testid={\"cms.content-form.header.schedule\"}\n />\n );\n }\n\n return (\n <MenuItemWithId\n entryId={vm.entry.id}\n entryTitle={vm.entry.meta?.title || \"\"}\n entryStatus={vm.entry.meta?.status || \"\"}\n modelId={vm.model.modelId}\n loading={vm.loading !== null}\n />\n );\n});\n"],"names":["MenuItemWithId","entryId","entryTitle","entryStatus","modelId","loading","showSchedulerDialog","useScheduleDialog","createNamespace","showDialog","useCallback","action","OptionsMenuItem","ScheduleIcon","MenuItem","observer","presenter","useContentEntryFormPresenter","canPublish","canUnpublish","usePermissions","vm"],"mappings":";;;;;;;;AAiBA,MAAMA,iBAAiB,CAAC,EACpBC,OAAO,EACPC,UAAU,EACVC,WAAW,EACXC,OAAO,EACPC,OAAO,EACW;IAClB,MAAM,EAAE,YAAYC,mBAAmB,EAAE,GAAGC,kBAAkB;QAC1D,WAAWC,gBAAgB;YAAEJ;QAAQ;QACrC,QAAQ;YACJ,IAAIH;YACJ,OAAOC;YACP,QAAQC;QACZ;IACJ;IAEA,MAAMM,aAAaC,YAAY;QAC3BJ;IACJ,GAAG;QAACA;KAAoB;IAExB,MAAMK,SAASR,AAAgB,gBAAhBA,cAA8B,cAAc;IAE3D,OAAO,WAAP,GACI,oBAACS,iBAAeA;QACZ,oBAAM,oBAACC,gBAAYA;QACnB,OAAO,CAAC,SAAS,EAAEF,QAAQ;QAC3B,UAAUF;QACV,UAAU,CAACN,eAAeE;QAC1B,eAAa;;AAGzB;AAEO,MAAMS,WAAWC,SAAS;IAC7B,MAAMC,YAAYC;IAClB,MAAM,EAAEC,UAAU,EAAEC,YAAY,EAAE,GAAGC;IAErC,MAAMC,KAAKL,UAAU,EAAE;IAEvB,IAAI,CAACK,GAAG,UAAU,IAAI,CAACA,GAAG,YAAY,EAClC,OAAO;IAGX,IAAI,CAACH,cAAc,CAACC,cAChB,OAAO;IAGX,IAAI,CAACE,GAAG,KAAK,EACT,OAAO,WAAP,GACI,oBAACT,iBAAeA;QACZ,oBAAM,oBAACC,gBAAYA;QACnB,OAAO;QACP,UAAU,IAAM,KAAK;QACrB,UAAU;QACV,eAAa;;IAKzB,OAAO,WAAP,GACI,oBAACb,gBAAcA;QACX,SAASqB,GAAG,KAAK,CAAC,EAAE;QACpB,YAAYA,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS;QACpC,aAAaA,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU;QACtC,SAASA,GAAG,KAAK,CAAC,OAAO;QACzB,SAASA,AAAe,SAAfA,GAAG,OAAO;;AAG/B"}
@@ -1,3 +1,2 @@
1
1
  export * from "./Editor/EditorConfig.js";
2
- export * from "./Sidebar/Sidebar.js";
3
2
  export * from "./Browser/BrowserConfig.js";
@@ -1,3 +1,2 @@
1
1
  export * from "./Editor/EditorConfig.js";
2
- export * from "./Sidebar/Sidebar.js";
3
2
  export * from "./Browser/BrowserConfig.js";
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import react from "react";
2
- import { BrowserConfig, EditorConfig, Sidebar } from "./components/index.js";
3
- const CmsScheduler = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Sidebar, null), /*#__PURE__*/ react.createElement(BrowserConfig, null), /*#__PURE__*/ react.createElement(EditorConfig, null));
2
+ import { BrowserConfig, EditorConfig } from "./components/index.js";
3
+ const CmsScheduler = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(BrowserConfig, null), /*#__PURE__*/ react.createElement(EditorConfig, null));
4
4
  export { CmsScheduler };
5
5
 
6
6
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { EditorConfig, BrowserConfig, Sidebar } from \"./components/index.js\";\n\nexport const CmsScheduler = () => {\n return (\n <>\n <Sidebar />\n <BrowserConfig />\n <EditorConfig />\n </>\n );\n};\n"],"names":["CmsScheduler","Sidebar","BrowserConfig","EditorConfig"],"mappings":";;AAGO,MAAMA,eAAe,IACjB,WAAP,GACI,wDACI,oBAACC,SAAOA,OAAAA,WAAAA,GACR,oBAACC,eAAaA,OAAAA,WAAAA,GACd,oBAACC,cAAYA"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { EditorConfig, BrowserConfig } from \"./components/index.js\";\n\nexport const CmsScheduler = () => {\n return (\n <>\n <BrowserConfig />\n <EditorConfig />\n </>\n );\n};\n"],"names":["CmsScheduler","BrowserConfig","EditorConfig"],"mappings":";;AAGO,MAAMA,eAAe,IACjB,WAAP,GACI,wDACI,oBAACC,eAAaA,OAAAA,WAAAA,GACd,oBAACC,cAAYA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-headless-cms-scheduler",
3
- "version": "6.4.5",
3
+ "version": "6.6.0-alpha.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -13,20 +13,21 @@
13
13
  "author": "Webiny Ltd",
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
- "@apollo/react-hooks": "3.1.5",
17
- "@webiny/admin-ui": "6.4.5",
18
- "@webiny/app-headless-cms": "6.4.5",
19
- "@webiny/app-headless-cms-common": "6.4.5",
20
- "@webiny/app-scheduler": "6.4.5",
21
- "@webiny/icons": "6.4.5",
16
+ "@webiny/admin-ui": "6.6.0-alpha.0",
17
+ "@webiny/app-admin": "6.6.0-alpha.0",
18
+ "@webiny/app-headless-cms": "6.6.0-alpha.0",
19
+ "@webiny/app-headless-cms-common": "6.6.0-alpha.0",
20
+ "@webiny/app-scheduler": "6.6.0-alpha.0",
21
+ "@webiny/icons": "6.6.0-alpha.0",
22
+ "mobx-react-lite": "4.1.1",
22
23
  "react": "18.3.1",
23
24
  "react-dom": "18.3.1"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@types/react": "18.3.31",
27
- "@webiny/build-tools": "6.4.5",
28
+ "@webiny/build-tools": "6.6.0-alpha.0",
28
29
  "rimraf": "6.1.3",
29
- "typescript": "6.0.3"
30
+ "typescript": "7.0.2"
30
31
  },
31
32
  "publishConfig": {
32
33
  "access": "public"
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const Sidebar: () => React.JSX.Element;
@@ -1,27 +0,0 @@
1
- import react from "react";
2
- import { Components } from "@webiny/app-headless-cms";
3
- import { useApolloClient } from "@apollo/react-hooks";
4
- import { IsModelPublishable, useModel } from "@webiny/app-headless-cms/exports/admin/cms.js";
5
- import { usePermissions } from "../../hooks/usePermissions.js";
6
- import { Scheduler } from "@webiny/app-scheduler";
7
- import { SchedulerButton } from "./SchedulerButton.js";
8
- import { createNamespace } from "../../utils/index.js";
9
- const Sidebar = Components.Sidebar.Footer.createDecorator((Original)=>function({ children }) {
10
- const client = useApolloClient();
11
- const { model } = useModel();
12
- const { canPublish, canUnpublish } = usePermissions();
13
- const namespace = createNamespace(model);
14
- if (!canPublish && !canUnpublish) return /*#__PURE__*/ react.createElement(Original, null, children);
15
- return /*#__PURE__*/ react.createElement(Original, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, children, /*#__PURE__*/ react.createElement(Scheduler, {
16
- namespace: namespace,
17
- client: client,
18
- canPublish: canPublish,
19
- canUnpublish: canUnpublish,
20
- render: ({ showScheduler })=>/*#__PURE__*/ react.createElement(SchedulerButton, {
21
- onClick: showScheduler
22
- })
23
- })));
24
- });
25
- export { Sidebar };
26
-
27
- //# sourceMappingURL=Sidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"components/Sidebar/Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-headless-cms\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { IsModelPublishable, useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { usePermissions } from \"~/hooks/usePermissions.js\";\nimport { Scheduler as BaseScheduler } from \"@webiny/app-scheduler\";\nimport { SchedulerButton } from \"./SchedulerButton.js\";\nimport { createNamespace } from \"~/utils/index.js\";\n\nexport const Sidebar = Components.Sidebar.Footer.createDecorator(Original => {\n return function ScheduleSidebarFooter({ children }) {\n const client = useApolloClient();\n const { model } = useModel();\n const { canPublish, canUnpublish } = usePermissions();\n\n const namespace = createNamespace(model);\n\n if (!canPublish && !canUnpublish) {\n return <Original>{children}</Original>;\n }\n\n return (\n <Original>\n <IsModelPublishable>\n {children}\n <BaseScheduler\n namespace={namespace}\n client={client}\n canPublish={canPublish}\n canUnpublish={canUnpublish}\n render={({ showScheduler }) => {\n return <SchedulerButton onClick={showScheduler} />;\n }}\n />\n </IsModelPublishable>\n </Original>\n );\n };\n});\n"],"names":["Sidebar","Components","Original","children","client","useApolloClient","model","useModel","canPublish","canUnpublish","usePermissions","namespace","createNamespace","IsModelPublishable","BaseScheduler","showScheduler","SchedulerButton"],"mappings":";;;;;;;;AASO,MAAMA,UAAUC,WAAW,OAAO,CAAC,MAAM,CAAC,eAAe,CAACC,CAAAA,WACtD,SAA+B,EAAEC,QAAQ,EAAE;QAC9C,MAAMC,SAASC;QACf,MAAM,EAAEC,KAAK,EAAE,GAAGC;QAClB,MAAM,EAAEC,UAAU,EAAEC,YAAY,EAAE,GAAGC;QAErC,MAAMC,YAAYC,gBAAgBN;QAElC,IAAI,CAACE,cAAc,CAACC,cAChB,OAAO,WAAP,GAAO,oBAACP,UAAAA,MAAUC;QAGtB,OAAO,WAAP,GACI,oBAACD,UAAAA,MAAAA,WAAAA,GACG,oBAACW,oBAAkBA,MACdV,UAAAA,WAAAA,GACD,oBAACW,WAAaA;YACV,WAAWH;YACX,QAAQP;YACR,YAAYI;YACZ,cAAcC;YACd,QAAQ,CAAC,EAAEM,aAAa,EAAE,GACf,WAAP,GAAO,oBAACC,iBAAeA;oBAAC,SAASD;;;IAMzD"}