@webiny/app-headless-cms-scheduler 6.3.0-beta.4 → 6.4.0-beta.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.
- package/components/Browser/BrowserConfig.js +7 -10
- package/components/Browser/BrowserConfig.js.map +1 -1
- package/components/Browser/MenuItem.js +34 -44
- package/components/Browser/MenuItem.js.map +1 -1
- package/components/Editor/EditorConfig.js +7 -10
- package/components/Editor/EditorConfig.js.map +1 -1
- package/components/Editor/MenuItem.js +44 -66
- package/components/Editor/MenuItem.js.map +1 -1
- package/components/Sidebar/SchedulerButton.js +13 -14
- package/components/Sidebar/SchedulerButton.js.map +1 -1
- package/components/Sidebar/Sidebar.js +19 -33
- package/components/Sidebar/Sidebar.js.map +1 -1
- package/components/index.js +0 -2
- package/hooks/usePermissions.js +13 -12
- package/hooks/usePermissions.js.map +1 -1
- package/index.js +4 -5
- package/index.js.map +1 -1
- package/package.json +8 -9
- package/utils/index.js +0 -2
- package/utils/namespace.js +3 -9
- package/utils/namespace.js.map +1 -1
- package/components/index.js.map +0 -1
- package/utils/index.js.map +0 -1
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
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
|
-
const {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
element: /*#__PURE__*/React.createElement(MenuItem, null)
|
|
12
|
-
})));
|
|
13
|
-
};
|
|
5
|
+
const { Browser: Browser } = ContentEntryListConfig;
|
|
6
|
+
const BrowserConfig = ()=>/*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(Browser.Entry.Action, {
|
|
7
|
+
name: "schedule",
|
|
8
|
+
element: /*#__PURE__*/ react.createElement(MenuItem, null)
|
|
9
|
+
})));
|
|
10
|
+
export { BrowserConfig };
|
|
14
11
|
|
|
15
12
|
//# sourceMappingURL=BrowserConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,53 +1,43 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ReactComponent
|
|
1
|
+
import react, { useCallback } from "react";
|
|
2
|
+
import { ReactComponent } from "@webiny/icons/cell_tower.svg";
|
|
3
3
|
import { useApolloClient } from "@apollo/react-hooks";
|
|
4
4
|
import { useScheduleDialog } from "@webiny/app-scheduler";
|
|
5
5
|
import { usePermissions } from "../../hooks/usePermissions.js";
|
|
6
6
|
import { createNamespace } from "../../utils/index.js";
|
|
7
7
|
import { ContentEntryListConfig, useContentEntriesList } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
8
8
|
import { useEntry } from "@webiny/app-headless-cms";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!canPublish && !canUnpublish) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
const action = entry.meta?.status === "published" ? "unpublish" : "publish";
|
|
44
|
-
return /*#__PURE__*/React.createElement(OptionsMenuItem, {
|
|
45
|
-
icon: /*#__PURE__*/React.createElement(ScheduleIcon, null),
|
|
46
|
-
label: `Schedule ${action}`,
|
|
47
|
-
onAction: showDialog,
|
|
48
|
-
disabled: !entry?.meta?.status,
|
|
49
|
-
"data-testid": "cms.content-form.header.schedule"
|
|
50
|
-
});
|
|
9
|
+
const MenuItem = ()=>{
|
|
10
|
+
const { modelId } = useContentEntriesList();
|
|
11
|
+
const { entry } = useEntry();
|
|
12
|
+
const { canPublish, canUnpublish } = usePermissions();
|
|
13
|
+
const client = useApolloClient();
|
|
14
|
+
const { showDialog: showSchedulerDialog } = useScheduleDialog({
|
|
15
|
+
client,
|
|
16
|
+
namespace: createNamespace({
|
|
17
|
+
modelId
|
|
18
|
+
}),
|
|
19
|
+
target: {
|
|
20
|
+
id: entry.id,
|
|
21
|
+
title: entry.meta.title,
|
|
22
|
+
status: entry.meta.status
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const { OptionsMenuItem } = ContentEntryListConfig.Browser.Entry.Action;
|
|
26
|
+
const showDialog = useCallback(()=>{
|
|
27
|
+
showSchedulerDialog();
|
|
28
|
+
}, [
|
|
29
|
+
showSchedulerDialog
|
|
30
|
+
]);
|
|
31
|
+
if (!canPublish && !canUnpublish) return null;
|
|
32
|
+
const action = entry.meta?.status === "published" ? "unpublish" : "publish";
|
|
33
|
+
return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
|
|
34
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
35
|
+
label: `Schedule ${action}`,
|
|
36
|
+
onAction: showDialog,
|
|
37
|
+
disabled: !entry?.meta?.status,
|
|
38
|
+
"data-testid": "cms.content-form.header.schedule"
|
|
39
|
+
});
|
|
51
40
|
};
|
|
41
|
+
export { MenuItem };
|
|
52
42
|
|
|
53
43
|
//# sourceMappingURL=MenuItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,15 +1,12 @@
|
|
|
1
1
|
import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
2
2
|
import { ContentEntryEditorConfig } from "@webiny/app-headless-cms/exports/admin/cms/entry/editor.js";
|
|
3
|
-
import
|
|
3
|
+
import react from "react";
|
|
4
4
|
import { MenuItem } from "./MenuItem.js";
|
|
5
|
-
const {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
element: /*#__PURE__*/React.createElement(MenuItem, null)
|
|
12
|
-
})));
|
|
13
|
-
};
|
|
5
|
+
const { Actions: Actions } = ContentEntryEditorConfig;
|
|
6
|
+
const EditorConfig = ()=>/*#__PURE__*/ react.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(Actions.MenuItemAction, {
|
|
7
|
+
name: "schedule",
|
|
8
|
+
element: /*#__PURE__*/ react.createElement(MenuItem, null)
|
|
9
|
+
})));
|
|
10
|
+
export { EditorConfig };
|
|
14
11
|
|
|
15
12
|
//# sourceMappingURL=EditorConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"components/Editor/EditorConfig.js","sources":["../../../src/components/Editor/EditorConfig.tsx"],"sourcesContent":["import { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/editor.js\";\nimport React from \"react\";\nimport { MenuItem } from \"./MenuItem.js\";\n\nconst { Actions } = ContentEntryEditorConfig;\n\nexport const EditorConfig = () => {\n return (\n <ContentEntryEditorConfig>\n <IsModelPublishable>\n <Actions.MenuItemAction name={\"schedule\"} element={<MenuItem />} />\n </IsModelPublishable>\n </ContentEntryEditorConfig>\n );\n};\n"],"names":["Actions","ContentEntryEditorConfig","EditorConfig","IsModelPublishable","MenuItem"],"mappings":";;;;AAKA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,eAAe,IACjB,WAAP,GACI,oBAACD,0BAAwBA,MAAAA,WAAAA,GACrB,oBAACE,oBAAkBA,MAAAA,WAAAA,GACf,oBAACH,QAAQ,cAAc;QAAC,MAAM;QAAY,uBAAS,oBAACI,UAAQA"}
|
|
@@ -1,76 +1,54 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react, { useCallback } from "react";
|
|
2
2
|
import { ContentEntryEditorConfig, useContentEntryEditor } from "@webiny/app-headless-cms/exports/admin/cms/entry/editor.js";
|
|
3
|
-
import { ReactComponent
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/cell_tower.svg";
|
|
4
4
|
import { useApolloClient } from "@apollo/react-hooks";
|
|
5
5
|
import { useScheduleDialog } from "@webiny/app-scheduler";
|
|
6
6
|
import { usePermissions } from "../../hooks/usePermissions.js";
|
|
7
7
|
import { createNamespace } from "../../utils/index.js";
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return /*#__PURE__*/React.createElement(OptionsMenuItem, {
|
|
34
|
-
icon: /*#__PURE__*/React.createElement(ScheduleIcon, null),
|
|
35
|
-
label: `Schedule ${action}`,
|
|
36
|
-
onAction: showDialog,
|
|
37
|
-
disabled: !entry?.meta?.status || loading,
|
|
38
|
-
"data-testid": "cms.content-form.header.schedule"
|
|
39
|
-
});
|
|
8
|
+
const MenuItemWithId = ({ entry, contentModel, loading })=>{
|
|
9
|
+
const client = useApolloClient();
|
|
10
|
+
const { showDialog: showSchedulerDialog } = useScheduleDialog({
|
|
11
|
+
client,
|
|
12
|
+
namespace: createNamespace(contentModel),
|
|
13
|
+
target: {
|
|
14
|
+
id: entry.id,
|
|
15
|
+
title: entry.meta.title,
|
|
16
|
+
status: entry.meta.status
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const { OptionsMenuItem } = ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();
|
|
20
|
+
const showDialog = useCallback(()=>{
|
|
21
|
+
showSchedulerDialog();
|
|
22
|
+
}, [
|
|
23
|
+
showSchedulerDialog
|
|
24
|
+
]);
|
|
25
|
+
const action = entry.meta?.status === "published" ? "unpublish" : "publish";
|
|
26
|
+
return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
|
|
27
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
28
|
+
label: `Schedule ${action}`,
|
|
29
|
+
onAction: showDialog,
|
|
30
|
+
disabled: !entry?.meta?.status || loading,
|
|
31
|
+
"data-testid": "cms.content-form.header.schedule"
|
|
32
|
+
});
|
|
40
33
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
/* When entry.id is missing (e.g. new unsaved entry), render a disabled item
|
|
59
|
-
* without invoking hooks that require a persisted entry. */
|
|
60
|
-
if (!entry.id) {
|
|
61
|
-
return /*#__PURE__*/React.createElement(OptionsMenuItem, {
|
|
62
|
-
icon: /*#__PURE__*/React.createElement(ScheduleIcon, null),
|
|
63
|
-
label: "Schedule",
|
|
64
|
-
onAction: () => void 0,
|
|
65
|
-
disabled: true,
|
|
66
|
-
"data-testid": "cms.content-form.header.schedule"
|
|
34
|
+
const MenuItem = ()=>{
|
|
35
|
+
const { entry, loading, contentModel } = useContentEntryEditor();
|
|
36
|
+
const { canPublish, canUnpublish } = usePermissions();
|
|
37
|
+
const { OptionsMenuItem } = ContentEntryEditorConfig.Actions.MenuItemAction.useOptionsMenuItem();
|
|
38
|
+
if (!canPublish && !canUnpublish) return null;
|
|
39
|
+
if (!entry.id) return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
|
|
40
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
41
|
+
label: "Schedule",
|
|
42
|
+
onAction: ()=>void 0,
|
|
43
|
+
disabled: true,
|
|
44
|
+
"data-testid": "cms.content-form.header.schedule"
|
|
45
|
+
});
|
|
46
|
+
return /*#__PURE__*/ react.createElement(MenuItemWithId, {
|
|
47
|
+
entry: entry,
|
|
48
|
+
contentModel: contentModel,
|
|
49
|
+
loading: loading
|
|
67
50
|
});
|
|
68
|
-
}
|
|
69
|
-
return /*#__PURE__*/React.createElement(MenuItemWithId, {
|
|
70
|
-
entry: entry,
|
|
71
|
-
contentModel: contentModel,
|
|
72
|
-
loading: loading
|
|
73
|
-
});
|
|
74
51
|
};
|
|
52
|
+
export { MenuItem };
|
|
75
53
|
|
|
76
54
|
//# sourceMappingURL=MenuItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,17 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { Sidebar } from "@webiny/admin-ui";
|
|
3
|
-
import { ReactComponent
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
};
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/cell_tower.svg";
|
|
4
|
+
const SchedulerButton = (props)=>/*#__PURE__*/ react.createElement("div", {
|
|
5
|
+
className: "list-none"
|
|
6
|
+
}, /*#__PURE__*/ react.createElement(Sidebar.Item, {
|
|
7
|
+
onClick: props.onClick,
|
|
8
|
+
text: "Schedule",
|
|
9
|
+
icon: /*#__PURE__*/ react.createElement(Sidebar.Item.Icon, {
|
|
10
|
+
element: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
11
|
+
label: "Schedule"
|
|
12
|
+
})
|
|
13
|
+
}));
|
|
14
|
+
export { SchedulerButton };
|
|
16
15
|
|
|
17
16
|
//# sourceMappingURL=SchedulerButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,41 +1,27 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { Components } from "@webiny/app-headless-cms";
|
|
3
3
|
import { useApolloClient } from "@apollo/react-hooks";
|
|
4
4
|
import { IsModelPublishable, useModel } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
5
5
|
import { usePermissions } from "../../hooks/usePermissions.js";
|
|
6
|
-
import { Scheduler
|
|
6
|
+
import { Scheduler } from "@webiny/app-scheduler";
|
|
7
7
|
import { SchedulerButton } from "./SchedulerButton.js";
|
|
8
8
|
import { createNamespace } from "../../utils/index.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
namespace: namespace,
|
|
27
|
-
client: client,
|
|
28
|
-
canPublish: canPublish,
|
|
29
|
-
canUnpublish: canUnpublish,
|
|
30
|
-
render: ({
|
|
31
|
-
showScheduler
|
|
32
|
-
}) => {
|
|
33
|
-
return /*#__PURE__*/React.createElement(SchedulerButton, {
|
|
34
|
-
onClick: showScheduler
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
})));
|
|
38
|
-
};
|
|
39
|
-
});
|
|
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 };
|
|
40
26
|
|
|
41
27
|
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
package/components/index.js
CHANGED
package/hooks/usePermissions.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { usePermission } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
const usePermissions = ()=>{
|
|
4
|
+
const permission = usePermission();
|
|
5
|
+
const canPublish = useMemo(()=>permission.canPublish("cms.contentEntry"), [
|
|
6
|
+
permission.canPublish
|
|
7
|
+
]);
|
|
8
|
+
const canUnpublish = useMemo(()=>permission.canUnpublish("cms.contentEntry"), [
|
|
9
|
+
permission.canUnpublish
|
|
10
|
+
]);
|
|
11
|
+
return {
|
|
12
|
+
canPublish,
|
|
13
|
+
canUnpublish
|
|
14
|
+
};
|
|
15
15
|
};
|
|
16
|
+
export { usePermissions };
|
|
16
17
|
|
|
17
18
|
//# sourceMappingURL=usePermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"hooks/usePermissions.js","sources":["../../src/hooks/usePermissions.ts"],"sourcesContent":["import { usePermission } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { useMemo } from \"react\";\n\nexport const usePermissions = () => {\n const permission = usePermission();\n\n const canPublish = useMemo(() => {\n return permission.canPublish(\"cms.contentEntry\");\n }, [permission.canPublish]);\n\n const canUnpublish = useMemo(() => {\n return permission.canUnpublish(\"cms.contentEntry\");\n }, [permission.canUnpublish]);\n\n return {\n canPublish,\n canUnpublish\n };\n};\n"],"names":["usePermissions","permission","usePermission","canPublish","useMemo","canUnpublish"],"mappings":";;AAGO,MAAMA,iBAAiB;IAC1B,MAAMC,aAAaC;IAEnB,MAAMC,aAAaC,QAAQ,IAChBH,WAAW,UAAU,CAAC,qBAC9B;QAACA,WAAW,UAAU;KAAC;IAE1B,MAAMI,eAAeD,QAAQ,IAClBH,WAAW,YAAY,CAAC,qBAChC;QAACA,WAAW,YAAY;KAAC;IAE5B,OAAO;QACHE;QACAE;IACJ;AACJ"}
|
package/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
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));
|
|
4
|
+
export { CmsScheduler };
|
|
6
5
|
|
|
7
6
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-headless-cms-scheduler",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.4.0-beta.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -14,18 +14,17 @@
|
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@apollo/react-hooks": "3.1.5",
|
|
17
|
-
"@webiny/admin-ui": "6.
|
|
18
|
-
"@webiny/app-headless-cms": "6.
|
|
19
|
-
"@webiny/app-headless-cms-common": "6.
|
|
20
|
-
"@webiny/app-scheduler": "6.
|
|
21
|
-
"@webiny/icons": "6.
|
|
17
|
+
"@webiny/admin-ui": "6.4.0-beta.0",
|
|
18
|
+
"@webiny/app-headless-cms": "6.4.0-beta.0",
|
|
19
|
+
"@webiny/app-headless-cms-common": "6.4.0-beta.0",
|
|
20
|
+
"@webiny/app-scheduler": "6.4.0-beta.0",
|
|
21
|
+
"@webiny/icons": "6.4.0-beta.0",
|
|
22
22
|
"react": "18.3.1",
|
|
23
23
|
"react-dom": "18.3.1"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@emotion/babel-plugin": "11.13.5",
|
|
27
26
|
"@types/react": "18.3.28",
|
|
28
|
-
"@webiny/build-tools": "6.
|
|
27
|
+
"@webiny/build-tools": "6.4.0-beta.0",
|
|
29
28
|
"rimraf": "6.1.3",
|
|
30
29
|
"typescript": "6.0.3"
|
|
31
30
|
},
|
|
@@ -38,5 +37,5 @@
|
|
|
38
37
|
"removeViewBox": false
|
|
39
38
|
}
|
|
40
39
|
},
|
|
41
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "a545d7529828af07d08d49c3da1bcb967483b9ce"
|
|
42
41
|
}
|
package/utils/index.js
CHANGED
package/utils/namespace.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Namespace must be exactly like in the API, or it will not match - scheduling will fail.
|
|
5
|
-
* @param model
|
|
6
|
-
*/
|
|
7
|
-
export const createNamespace = model => {
|
|
8
|
-
return `${CMS_NAMESPACE}${model.modelId}`;
|
|
9
|
-
};
|
|
1
|
+
const CMS_NAMESPACE = "Cms/Entry/";
|
|
2
|
+
const createNamespace = (model)=>`${CMS_NAMESPACE}${model.modelId}`;
|
|
3
|
+
export { CMS_NAMESPACE, createNamespace };
|
|
10
4
|
|
|
11
5
|
//# sourceMappingURL=namespace.js.map
|
package/utils/namespace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils/namespace.js","sources":["../../src/utils/namespace.ts"],"sourcesContent":["import type { CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nexport const CMS_NAMESPACE = \"Cms/Entry/\";\n\n/**\n * Namespace must be exactly like in the API, or it will not match - scheduling will fail.\n * @param model\n */\nexport const createNamespace = (model: Pick<CmsModel, \"modelId\">): string => {\n return `${CMS_NAMESPACE}${model.modelId}`;\n};\n"],"names":["CMS_NAMESPACE","createNamespace","model"],"mappings":"AAEO,MAAMA,gBAAgB;AAMtB,MAAMC,kBAAkB,CAACC,QACrB,GAAGF,gBAAgBE,MAAM,OAAO,EAAE"}
|
package/components/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./Editor/EditorConfig.js\";\nexport * from \"./Sidebar/Sidebar.js\";\nexport * from \"./Browser/BrowserConfig.js\";\n"],"mappings":"AAAA;AACA;AACA","ignoreList":[]}
|
package/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./namespace.js\";\n"],"mappings":"AAAA","ignoreList":[]}
|