@webiny/app-website-builder 6.5.0-beta.0 → 6.5.0-beta.10
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/BaseEditor/config/Sidebar/Tab.d.ts +0 -4
- package/BaseEditor/config/Sidebar/Tab.js +5 -21
- package/BaseEditor/config/Sidebar/Tab.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js +6 -66
- package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/Iframe.d.ts +2 -2
- package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlays.d.ts +2 -2
- package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.d.ts +1 -6
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.js +1 -26
- package/BaseEditor/defaultConfig/DocumentStateEditor/DocumentStateEditor.d.ts +2 -2
- package/BaseEditor/defaultConfig/ElementInputRenderers.js +12 -0
- package/BaseEditor/defaultConfig/ElementInputRenderers.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js +2 -5
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.d.ts +22 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.js +17 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.d.ts +1 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.js +64 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js +7 -2
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js +8 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/Alignment.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Margin.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Padding.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Visibility/Visibility.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js +2 -5
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js.map +1 -1
- package/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.d.ts +2 -2
- package/DocumentEditor/DocumentEditor.d.ts +2 -2
- package/DocumentEditor/StateInspector.d.ts +4 -2
- package/Extension.js +3 -0
- package/Extension.js.map +1 -1
- package/domain/Page/Page.d.ts +2 -0
- package/domain/Page/Page.js +1 -0
- package/domain/Page/Page.js.map +1 -1
- package/domain/PageRevision/PageRevision.d.ts +11 -0
- package/domain/PageRevision/PageRevision.js +20 -0
- package/domain/PageRevision/PageRevision.js.map +1 -1
- package/ecommerce/components/ResourcePage.d.ts +6 -2
- package/ecommerce/components/ResourcesList.d.ts +4 -4
- package/ecommerce/components/ResourcesPicker.d.ts +9 -4
- package/editorSdk/CommandBus.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js +41 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.d.ts +3 -2
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js +8 -2
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js.map +1 -1
- package/features/pages/deletePageRevision/DeletePageRevision.test.d.ts +1 -0
- package/features/pages/deletePageRevision/DeletePageRevision.test.js +67 -0
- package/features/pages/deletePageRevision/DeletePageRevision.test.js.map +1 -0
- package/features/pages/deletePageRevision/DeletePageRevisionGateway.d.ts +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionGateway.js +2 -3
- package/features/pages/deletePageRevision/DeletePageRevisionGateway.js.map +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionRepository.d.ts +4 -2
- package/features/pages/deletePageRevision/DeletePageRevisionRepository.js +7 -3
- package/features/pages/deletePageRevision/DeletePageRevisionRepository.js.map +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionUseCase.js +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionUseCase.js.map +1 -1
- package/features/pages/deletePageRevision/abstractions.d.ts +2 -3
- package/features/pages/deletePageRevision/abstractions.js.map +1 -1
- package/features/pages/getPage/PageGatewayDto.d.ts +2 -0
- package/features/pages/publishPage/PublishPage.test.js +41 -1
- package/features/pages/publishPage/PublishPage.test.js.map +1 -1
- package/features/pages/publishPage/PublishPageRepository.d.ts +3 -2
- package/features/pages/publishPage/PublishPageRepository.js +15 -4
- package/features/pages/publishPage/PublishPageRepository.js.map +1 -1
- package/features/pages/shared/pageGraphQLFields.js +1 -0
- package/features/pages/shared/pageGraphQLFields.js.map +1 -1
- package/features/pages/unpublishPage/UnpublishPage.test.js +4 -1
- package/features/pages/unpublishPage/UnpublishPage.test.js.map +1 -1
- package/features/pages/unpublishPage/UnpublishPageRepository.d.ts +3 -2
- package/features/pages/unpublishPage/UnpublishPageRepository.js +12 -4
- package/features/pages/unpublishPage/UnpublishPageRepository.js.map +1 -1
- package/inputRenderers/DateTimeInput.d.ts +9 -0
- package/inputRenderers/DateTimeInput.js +21 -0
- package/inputRenderers/DateTimeInput.js.map +1 -0
- package/inputRenderers/DateTimeInput.test.d.ts +1 -0
- package/inputRenderers/DateTimeInput.test.js +27 -0
- package/inputRenderers/DateTimeInput.test.js.map +1 -0
- package/inputRenderers/FileInput.js +1 -1
- package/inputRenderers/FileInput.js.map +1 -1
- package/inputRenderers/RadioInput.d.ts +3 -0
- package/inputRenderers/RadioInput.js +20 -0
- package/inputRenderers/RadioInput.js.map +1 -0
- package/inputRenderers/TagsInput.d.ts +3 -0
- package/inputRenderers/TagsInput.js +22 -0
- package/inputRenderers/TagsInput.js.map +1 -0
- package/package.json +31 -31
- package/presentation/pages/CreatePage/CreatePageDialog.d.ts +2 -2
- package/presentation/pages/PageEditor/Revisions/RevisionListDrawer.js +4 -0
- package/presentation/pages/PageEditor/Revisions/RevisionListDrawer.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/RevisionListItem.d.ts +3 -3
- package/presentation/pages/PageEditor/Revisions/RevisionListItem.js +9 -20
- package/presentation/pages/PageEditor/Revisions/RevisionListItem.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/RevisionsList.js +7 -19
- package/presentation/pages/PageEditor/Revisions/RevisionsList.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/useRevision.d.ts +1 -1
- package/presentation/pages/PageEditor/Revisions/useRevision.js +84 -14
- package/presentation/pages/PageEditor/Revisions/useRevision.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/useRevisionList.d.ts +3 -0
- package/presentation/pages/PageEditor/Revisions/useRevisionList.js +31 -0
- package/presentation/pages/PageEditor/Revisions/useRevisionList.js.map +1 -0
- package/presentation/pages/PageEditor/TopBar/PageSettingsDrawer.d.ts +2 -2
- package/presentation/pages/PageEditor/TopBar/RevisionsMenu.js +7 -19
- package/presentation/pages/PageEditor/TopBar/RevisionsMenu.js.map +1 -1
- package/presentation/pages/PageList/PageListDataSource.js +1 -1
- package/presentation/pages/PageList/PageListDataSource.js.map +1 -1
- package/presentation/pages/PageList/PageListPresenter.test.d.ts +1 -0
- package/presentation/pages/PageList/PageListPresenter.test.js +293 -0
- package/presentation/pages/PageList/PageListPresenter.test.js.map +1 -0
- package/presentation/pages/PageList/components/BulkActions/BulkActionDelete.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionDuplicate.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionMovePage.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionPublish.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionUnpublish.d.ts +2 -2
- package/presentation/pages/PageList/components/DocumentList.d.ts +2 -2
- package/presentation/pages/PageList/components/Table/Table.d.ts +2 -2
- package/presentation/pages/RevisionList/RevisionListPresenter.d.ts +27 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.js +73 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.js.map +1 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.test.d.ts +1 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.test.js +219 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.test.js.map +1 -0
- package/presentation/pages/RevisionList/abstractions.d.ts +34 -0
- package/presentation/pages/RevisionList/abstractions.js +5 -0
- package/presentation/pages/RevisionList/abstractions.js.map +1 -0
- package/presentation/pages/RevisionList/feature.d.ts +3 -0
- package/presentation/pages/RevisionList/feature.js +17 -0
- package/presentation/pages/RevisionList/feature.js.map +1 -0
- package/presentation/pages/RevisionList/index.d.ts +2 -0
- package/presentation/pages/RevisionList/index.js +1 -0
- package/presentation/pages/TrashBin/WbTrashBin.d.ts +2 -2
- package/presentation/redirects/RedirectList/RedirectListDataSource.js +1 -1
- package/presentation/redirects/RedirectList/RedirectListDataSource.js.map +1 -1
- package/presentation/redirects/RedirectList/RedirectListPresenter.js.map +1 -1
- package/presentation/redirects/RedirectList/RedirectListPresenter.test.d.ts +1 -0
- package/presentation/redirects/RedirectList/RedirectListPresenter.test.js +273 -0
- package/presentation/redirects/RedirectList/RedirectListPresenter.test.js.map +1 -0
- package/presentation/redirects/RedirectList/components/BulkActionDelete.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/BulkActionMove.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/CreateRedirectDialog.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/DocumentList.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/EditRedirectDialog.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/Table/Table.d.ts +2 -2
- package/shared/fileManagerItemToValue.js +3 -1
- package/shared/fileManagerItemToValue.js.map +1 -1
- package/shared/fileManagerItemToValue.test.d.ts +1 -0
- package/shared/fileManagerItemToValue.test.js +73 -0
- package/shared/fileManagerItemToValue.test.js.map +1 -0
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-website-builder",
|
|
3
|
-
"version": "6.5.0-beta.
|
|
3
|
+
"version": "6.5.0-beta.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -16,56 +16,56 @@
|
|
|
16
16
|
"@emotion/css": "11.13.5",
|
|
17
17
|
"@emotion/react": "11.14.0",
|
|
18
18
|
"@emotion/styled": "11.14.1",
|
|
19
|
-
"@lexical/utils": "0.
|
|
19
|
+
"@lexical/utils": "0.52.0",
|
|
20
20
|
"@monaco-editor/react": "4.7.0",
|
|
21
21
|
"@types/react": "18.3.31",
|
|
22
|
-
"@webiny/admin-ui": "6.5.0-beta.
|
|
23
|
-
"@webiny/app": "6.5.0-beta.
|
|
24
|
-
"@webiny/app-aco": "6.5.0-beta.
|
|
25
|
-
"@webiny/app-admin": "6.5.0-beta.
|
|
26
|
-
"@webiny/app-headless-cms": "6.5.0-beta.
|
|
27
|
-
"@webiny/app-headless-cms-common": "6.5.0-beta.
|
|
28
|
-
"@webiny/app-utils": "6.5.0-beta.
|
|
29
|
-
"@webiny/di": "1.0
|
|
30
|
-
"@webiny/feature": "6.5.0-beta.
|
|
31
|
-
"@webiny/form": "6.5.0-beta.
|
|
32
|
-
"@webiny/frontend-settings": "6.5.0-beta.
|
|
33
|
-
"@webiny/icons": "6.5.0-beta.
|
|
34
|
-
"@webiny/languages": "6.5.0-beta.
|
|
35
|
-
"@webiny/lexical-converter": "6.5.0-beta.
|
|
36
|
-
"@webiny/lexical-editor": "6.5.0-beta.
|
|
37
|
-
"@webiny/lexical-nodes": "6.5.0-beta.
|
|
38
|
-
"@webiny/lexical-theme": "6.5.0-beta.
|
|
39
|
-
"@webiny/react-composition": "6.5.0-beta.
|
|
40
|
-
"@webiny/react-properties": "6.5.0-beta.
|
|
41
|
-
"@webiny/utils": "6.5.0-beta.
|
|
42
|
-
"@webiny/validation": "6.5.0-beta.
|
|
43
|
-
"@webiny/website-builder-sdk": "6.5.0-beta.
|
|
22
|
+
"@webiny/admin-ui": "6.5.0-beta.10",
|
|
23
|
+
"@webiny/app": "6.5.0-beta.10",
|
|
24
|
+
"@webiny/app-aco": "6.5.0-beta.10",
|
|
25
|
+
"@webiny/app-admin": "6.5.0-beta.10",
|
|
26
|
+
"@webiny/app-headless-cms": "6.5.0-beta.10",
|
|
27
|
+
"@webiny/app-headless-cms-common": "6.5.0-beta.10",
|
|
28
|
+
"@webiny/app-utils": "6.5.0-beta.10",
|
|
29
|
+
"@webiny/di": "1.1.0",
|
|
30
|
+
"@webiny/feature": "6.5.0-beta.10",
|
|
31
|
+
"@webiny/form": "6.5.0-beta.10",
|
|
32
|
+
"@webiny/frontend-settings": "6.5.0-beta.10",
|
|
33
|
+
"@webiny/icons": "6.5.0-beta.10",
|
|
34
|
+
"@webiny/languages": "6.5.0-beta.10",
|
|
35
|
+
"@webiny/lexical-converter": "6.5.0-beta.10",
|
|
36
|
+
"@webiny/lexical-editor": "6.5.0-beta.10",
|
|
37
|
+
"@webiny/lexical-nodes": "6.5.0-beta.10",
|
|
38
|
+
"@webiny/lexical-theme": "6.5.0-beta.10",
|
|
39
|
+
"@webiny/react-composition": "6.5.0-beta.10",
|
|
40
|
+
"@webiny/react-properties": "6.5.0-beta.10",
|
|
41
|
+
"@webiny/utils": "6.5.0-beta.10",
|
|
42
|
+
"@webiny/validation": "6.5.0-beta.10",
|
|
43
|
+
"@webiny/website-builder-sdk": "6.5.0-beta.10",
|
|
44
44
|
"classnames": "2.5.1",
|
|
45
45
|
"deep-equal": "2.2.3",
|
|
46
46
|
"graphql": "16.14.2",
|
|
47
47
|
"is-hotkey": "0.2.0",
|
|
48
48
|
"lodash": "4.18.1",
|
|
49
|
-
"matcher": "
|
|
50
|
-
"mobx": "
|
|
51
|
-
"mobx-react-lite": "
|
|
49
|
+
"matcher": "7.0.0",
|
|
50
|
+
"mobx": "7.0.6",
|
|
51
|
+
"mobx-react-lite": "5.1.0",
|
|
52
52
|
"pluralize": "8.0.0",
|
|
53
|
-
"radix-ui": "1.6.
|
|
53
|
+
"radix-ui": "1.6.7",
|
|
54
54
|
"react": "18.3.1",
|
|
55
55
|
"react-dnd": "16.0.1",
|
|
56
56
|
"react-dnd-html5-backend": "16.0.1",
|
|
57
57
|
"react-dom": "18.3.1",
|
|
58
58
|
"slugify": "1.6.9",
|
|
59
|
-
"zod": "4.
|
|
59
|
+
"zod": "4.6.5"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/deep-equal": "1.0.4",
|
|
63
63
|
"@types/is-hotkey": "0.1.10",
|
|
64
|
-
"@webiny/build-tools": "6.5.0-beta.
|
|
64
|
+
"@webiny/build-tools": "6.5.0-beta.10",
|
|
65
65
|
"execa": "5.1.1",
|
|
66
66
|
"rimraf": "6.1.3",
|
|
67
67
|
"typescript": "7.0.2",
|
|
68
|
-
"vitest": "
|
|
68
|
+
"vitest": "5.0.3"
|
|
69
69
|
},
|
|
70
70
|
"publishConfig": {
|
|
71
71
|
"access": "public"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export declare const CREATE_PAGE_DIALOG = "createPage";
|
|
3
3
|
export declare const useCreatePageDialog: () => (folderId: string) => void;
|
|
4
|
-
export declare const CreatePageDialog: (() => React.JSX.Element) & {
|
|
5
|
-
|
|
4
|
+
export declare const CreatePageDialog: (() => React.JSX.Element) & React.NamedExoticComponent<unknown> & {
|
|
5
|
+
readonly type: () => React.JSX.Element;
|
|
6
6
|
};
|
|
@@ -17,6 +17,10 @@ const RevisionListDrawer = (props)=>{
|
|
|
17
17
|
title: "Entry revisions",
|
|
18
18
|
open: isRevisionListOpen,
|
|
19
19
|
onOpenChange: (open)=>openRevisionList(open),
|
|
20
|
+
onInteractOutside: (e)=>{
|
|
21
|
+
const target = e.target;
|
|
22
|
+
if (target.closest("[data-role='dialog']")) e.preventDefault();
|
|
23
|
+
},
|
|
20
24
|
modal: true,
|
|
21
25
|
bodyPadding: false,
|
|
22
26
|
headerSeparator: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation/pages/PageEditor/Revisions/RevisionListDrawer.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/RevisionListDrawer.tsx"],"sourcesContent":["import React from \"react\";\nimport { useHotkeys } from \"@webiny/app-admin\";\nimport { RevisionsList } from \"./RevisionsList.js\";\nimport { Drawer } from \"@webiny/admin-ui\";\nimport type { Page } from \"~/domain/Page/Page.js\";\nimport { usePageEditorDrawer } from \"./usePageEditorDrawer.js\";\n\ninterface IRevisionListDrawerProps {\n page: Pick<Page, \"id\">;\n}\n\nexport const RevisionListDrawer = (props: IRevisionListDrawerProps) => {\n const { page } = props;\n const { isRevisionListOpen, openRevisionList } = usePageEditorDrawer();\n\n useHotkeys({\n zIndex: 55,\n disabled: !isRevisionListOpen,\n keys: {\n esc: () => openRevisionList(false)\n }\n });\n\n return (\n <Drawer\n title={\"Entry revisions\"}\n open={isRevisionListOpen}\n onOpenChange={open => openRevisionList(open)}\n modal\n bodyPadding={false}\n headerSeparator={true}\n width={1000}\n >\n <RevisionsList page={page} />\n </Drawer>\n );\n};\n"],"names":["RevisionListDrawer","props","page","isRevisionListOpen","openRevisionList","usePageEditorDrawer","useHotkeys","Drawer","open","RevisionsList"],"mappings":";;;;;AAWO,MAAMA,qBAAqB,CAACC;IAC/B,MAAM,EAAEC,IAAI,EAAE,GAAGD;IACjB,MAAM,EAAEE,kBAAkB,EAAEC,gBAAgB,EAAE,GAAGC;IAEjDC,WAAW;QACP,QAAQ;QACR,UAAU,CAACH;QACX,MAAM;YACF,KAAK,IAAMC,iBAAiB;QAChC;IACJ;IAEA,OAAO,WAAP,GACI,oBAACG,QAAMA;QACH,OAAO;QACP,MAAMJ;QACN,cAAcK,CAAAA,OAAQJ,iBAAiBI;QACvC;QACA,aAAa;QACb,iBAAiB;QACjB,OAAO;qBAEP,
|
|
1
|
+
{"version":3,"file":"presentation/pages/PageEditor/Revisions/RevisionListDrawer.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/RevisionListDrawer.tsx"],"sourcesContent":["import React from \"react\";\nimport { useHotkeys } from \"@webiny/app-admin\";\nimport { RevisionsList } from \"./RevisionsList.js\";\nimport { Drawer } from \"@webiny/admin-ui\";\nimport type { Page } from \"~/domain/Page/Page.js\";\nimport { usePageEditorDrawer } from \"./usePageEditorDrawer.js\";\n\ninterface IRevisionListDrawerProps {\n page: Pick<Page, \"id\">;\n}\n\nexport const RevisionListDrawer = (props: IRevisionListDrawerProps) => {\n const { page } = props;\n const { isRevisionListOpen, openRevisionList } = usePageEditorDrawer();\n\n useHotkeys({\n zIndex: 55,\n disabled: !isRevisionListOpen,\n keys: {\n esc: () => openRevisionList(false)\n }\n });\n\n return (\n <Drawer\n title={\"Entry revisions\"}\n open={isRevisionListOpen}\n onOpenChange={open => openRevisionList(open)}\n onInteractOutside={e => {\n // Confirmation dialogs render above the drawer; clicking their overlay must not\n // close the drawer underneath them.\n const target = e.target as HTMLElement;\n if (target.closest(\"[data-role='dialog']\")) {\n e.preventDefault();\n }\n }}\n modal\n bodyPadding={false}\n headerSeparator={true}\n width={1000}\n >\n <RevisionsList page={page} />\n </Drawer>\n );\n};\n"],"names":["RevisionListDrawer","props","page","isRevisionListOpen","openRevisionList","usePageEditorDrawer","useHotkeys","Drawer","open","e","target","RevisionsList"],"mappings":";;;;;AAWO,MAAMA,qBAAqB,CAACC;IAC/B,MAAM,EAAEC,IAAI,EAAE,GAAGD;IACjB,MAAM,EAAEE,kBAAkB,EAAEC,gBAAgB,EAAE,GAAGC;IAEjDC,WAAW;QACP,QAAQ;QACR,UAAU,CAACH;QACX,MAAM;YACF,KAAK,IAAMC,iBAAiB;QAChC;IACJ;IAEA,OAAO,WAAP,GACI,oBAACG,QAAMA;QACH,OAAO;QACP,MAAMJ;QACN,cAAcK,CAAAA,OAAQJ,iBAAiBI;QACvC,mBAAmBC,CAAAA;YAGf,MAAMC,SAASD,EAAE,MAAM;YACvB,IAAIC,OAAO,OAAO,CAAC,yBACfD,EAAE,cAAc;QAExB;QACA;QACA,aAAa;QACb,iBAAiB;QACjB,OAAO;qBAEP,oBAACE,eAAaA;QAAC,MAAMT;;AAGjC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RevisionListPresenter } from "../../../../presentation/pages/RevisionList/abstractions.js";
|
|
3
3
|
interface RevisionListItemProps {
|
|
4
|
-
|
|
4
|
+
item: RevisionListPresenter.ItemViewModel;
|
|
5
5
|
}
|
|
6
|
-
declare const RevisionListItem: ({
|
|
6
|
+
declare const RevisionListItem: ({ item }: RevisionListItemProps) => React.JSX.Element;
|
|
7
7
|
export default RevisionListItem;
|
|
@@ -11,7 +11,6 @@ import { ReactComponent as visibility_off_svg_ReactComponent } from "@webiny/ico
|
|
|
11
11
|
import { ReactComponent as delete_svg_ReactComponent } from "@webiny/icons/delete.svg";
|
|
12
12
|
import { useRevision } from "./useRevision.js";
|
|
13
13
|
import { i18n } from "@webiny/app/i18n/index.js";
|
|
14
|
-
import { HasPermission } from "../../../security/HasPermission.js";
|
|
15
14
|
const DateDisplay = ({ date })=>{
|
|
16
15
|
const formatted = react.useMemo(()=>{
|
|
17
16
|
const d = new globalThis.Date(date);
|
|
@@ -59,7 +58,8 @@ const getIcon = (revision)=>{
|
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
60
|
};
|
|
62
|
-
const RevisionListItem = ({
|
|
61
|
+
const RevisionListItem = ({ item })=>{
|
|
62
|
+
const { revision } = item;
|
|
63
63
|
const { createRevision, editRevision, deleteRevision, unpublishRevision, publishRevision } = useRevision({
|
|
64
64
|
revision
|
|
65
65
|
});
|
|
@@ -93,44 +93,33 @@ const RevisionListItem = ({ revision })=>{
|
|
|
93
93
|
icon: /*#__PURE__*/ react.createElement(ReactComponent, null)
|
|
94
94
|
}),
|
|
95
95
|
"data-testid": "page.revisions.more-options"
|
|
96
|
-
}, /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(
|
|
97
|
-
entity: "page",
|
|
98
|
-
action: "edit"
|
|
99
|
-
}, /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
96
|
+
}, /*#__PURE__*/ react.createElement(react.Fragment, null, item.canCreateFrom ? /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
100
97
|
onClick: ()=>createRevision(),
|
|
101
98
|
"data-testid": "page.revisioncreate-revision",
|
|
102
99
|
icon: /*#__PURE__*/ react.createElement(add_svg_ReactComponent, null),
|
|
103
100
|
text: t`New revision from current`
|
|
104
|
-
}),
|
|
101
|
+
}) : null, item.canEdit ? /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
105
102
|
onClick: ()=>{
|
|
106
103
|
editRevision();
|
|
107
104
|
},
|
|
108
105
|
icon: /*#__PURE__*/ react.createElement(edit_svg_ReactComponent, null),
|
|
109
106
|
text: t`Edit revision`
|
|
110
|
-
})
|
|
111
|
-
entity: "page",
|
|
112
|
-
action: "publish"
|
|
113
|
-
}, "published" !== revision.status ? /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
107
|
+
}) : null, item.canPublish ? /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
114
108
|
onClick: ()=>publishRevision(),
|
|
109
|
+
"data-testid": "page.revisionpublish",
|
|
115
110
|
icon: /*#__PURE__*/ react.createElement(visibility_svg_ReactComponent, null),
|
|
116
111
|
text: t`Publish revision`
|
|
117
|
-
}) : null
|
|
118
|
-
entity: "page",
|
|
119
|
-
action: "unpublish"
|
|
120
|
-
}, "published" === revision.status ? /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
112
|
+
}) : null, item.canUnpublish ? /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
121
113
|
onClick: ()=>unpublishRevision(),
|
|
122
114
|
"data-testid": "page.revisionunpublish",
|
|
123
115
|
icon: /*#__PURE__*/ react.createElement(visibility_off_svg_ReactComponent, null),
|
|
124
116
|
text: t`Unpublish revision`
|
|
125
|
-
}) : null), /*#__PURE__*/ react.createElement(
|
|
126
|
-
entity: "page",
|
|
127
|
-
action: "delete"
|
|
128
|
-
}, revision.locked ? null : /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(DropdownMenu.Separator, null), /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
117
|
+
}) : null, item.canDelete ? /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(DropdownMenu.Separator, null), /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
129
118
|
onClick: ()=>deleteRevision(),
|
|
130
119
|
icon: /*#__PURE__*/ react.createElement(delete_svg_ReactComponent, null),
|
|
131
120
|
text: t`Delete revision`,
|
|
132
121
|
variant: "destructive"
|
|
133
|
-
}))))
|
|
122
|
+
})) : null))
|
|
134
123
|
});
|
|
135
124
|
};
|
|
136
125
|
const Revisions_RevisionListItem = RevisionListItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation/pages/PageEditor/Revisions/RevisionListItem.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/RevisionListItem.tsx"],"sourcesContent":["import React from \"react\";\nconst DateDisplay = ({ date }: { date: string }) => {\n const formatted = React.useMemo(() => {\n const d = new globalThis.Date(date);\n if (isNaN(d.getTime())) {\n return \"\";\n }\n return new Intl.DateTimeFormat(navigator.language, {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\"\n }).format(d);\n }, [date]);\n return <>{formatted}</>;\n};\nimport { DropdownMenu, Icon, IconButton, List, Text, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as MoreVerticalIcon } from \"@webiny/icons/more_vert.svg\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/lock.svg\";\nimport { ReactComponent as BeenHereIcon } from \"@webiny/icons/beenhere.svg\";\nimport { ReactComponent as GestureIcon } from \"@webiny/icons/gesture.svg\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as PublishIcon } from \"@webiny/icons/visibility.svg\";\nimport { ReactComponent as UnpublishIcon } from \"@webiny/icons/visibility_off.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { useRevision } from \"./useRevision.js\";\nimport type { PageRevision } from \"~/domain/PageRevision/index.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\n\nconst t = i18n.ns(\"app-website-builder/modules/Pages/PageEditor/Revisions\");\n\nconst getIcon = (revision: PageRevision) => {\n switch (true) {\n case revision.locked && revision.status !== \"published\":\n return {\n icon: (\n <Icon\n label={\"Locked revision\"}\n icon={<LockIcon />}\n data-testid={\"page.revision.status.locked\"}\n />\n ),\n text: \"This revision is locked (it has already been published)\"\n };\n case revision.status === \"published\":\n return {\n icon: (\n <Icon\n label=\"Published revision\"\n icon={<BeenHereIcon />}\n color={\"accent\"}\n data-testid={\"page.revision.status.published\"}\n />\n ),\n text: \"This revision is currently published!\"\n };\n default:\n return {\n icon: (\n <Icon\n label={\"Draft revision\"}\n icon={<GestureIcon />}\n data-testid={\"page.revision.status.draft\"}\n />\n ),\n text: \"This is a draft\"\n };\n }\n};\n\ninterface RevisionListItemProps {\n revision: PageRevision;\n}\n\nconst RevisionListItem = ({ revision }: RevisionListItemProps) => {\n const { createRevision, editRevision, deleteRevision, unpublishRevision, publishRevision } =\n useRevision({\n revision\n });\n\n const { icon, text: tooltipText } = getIcon(revision);\n\n return (\n <List.Item\n icon={<Tooltip content={tooltipText} trigger={icon} />}\n title={revision.title || t`N/A`}\n description={\n <>\n {revision.revisionDescription ? (\n <Text as={\"div\"} size={\"md\"} className={\"mb-2\"}>\n {revision.revisionDescription}\n </Text>\n ) : null}\n <Text as={\"div\"} size={\"sm\"}>\n {t`Last modified by {author} on {time} (#{version})`({\n // Added this because revisionCreatedBy can be returned as null from GraphQL.\n author: revision.createdBy?.displayName,\n time: <DateDisplay date={revision.savedOn} />,\n version: revision.version\n })}\n </Text>\n </>\n }\n about={revision.revisionDescription}\n actions={\n <DropdownMenu\n trigger={\n <IconButton\n variant={\"ghost\"}\n size={\"sm\"}\n iconSize={\"lg\"}\n icon={<MoreVerticalIcon />}\n />\n }\n data-testid={\"page.revisions.more-options\"}\n >\n <>\n <HasPermission entity={\"page\"} action={\"edit\"}>\n <DropdownMenu.Item\n onClick={() => createRevision()}\n data-testid={\"page.revisioncreate-revision\"}\n icon={<AddIcon />}\n text={t`New revision from current`}\n />\n {!revision.locked ? (\n <DropdownMenu.Item\n onClick={() => {\n editRevision();\n }}\n icon={<EditIcon />}\n text={t`Edit revision`}\n />\n ) : null}\n </HasPermission>\n\n <HasPermission entity={\"page\"} action={\"publish\"}>\n {revision.status !== \"published\" ? (\n <DropdownMenu.Item\n onClick={() => publishRevision()}\n icon={<PublishIcon />}\n text={t`Publish revision`}\n />\n ) : null}\n </HasPermission>\n\n <HasPermission entity={\"page\"} action={\"unpublish\"}>\n {revision.status === \"published\" ? (\n <DropdownMenu.Item\n onClick={() => unpublishRevision()}\n data-testid={\"page.revisionunpublish\"}\n icon={<UnpublishIcon />}\n text={t`Unpublish revision`}\n />\n ) : null}\n </HasPermission>\n\n <HasPermission entity={\"page\"} action={\"delete\"}>\n {!revision.locked ? (\n <>\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n onClick={() => deleteRevision()}\n icon={<DeleteIcon />}\n text={t`Delete revision`}\n variant={\"destructive\"}\n />\n </>\n ) : null}\n </HasPermission>\n </>\n </DropdownMenu>\n }\n />\n );\n};\n\nexport default RevisionListItem;\n"],"names":["DateDisplay","date","formatted","React","d","globalThis","isNaN","Intl","navigator","t","i18n","getIcon","revision","Icon","LockIcon","BeenHereIcon","GestureIcon","RevisionListItem","createRevision","editRevision","deleteRevision","unpublishRevision","publishRevision","useRevision","icon","tooltipText","List","Tooltip","Text","DropdownMenu","IconButton","MoreVerticalIcon","HasPermission","AddIcon","EditIcon","PublishIcon","UnpublishIcon","DeleteIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"presentation/pages/PageEditor/Revisions/RevisionListItem.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/RevisionListItem.tsx"],"sourcesContent":["import React from \"react\";\nconst DateDisplay = ({ date }: { date: string }) => {\n const formatted = React.useMemo(() => {\n const d = new globalThis.Date(date);\n if (isNaN(d.getTime())) {\n return \"\";\n }\n return new Intl.DateTimeFormat(navigator.language, {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\"\n }).format(d);\n }, [date]);\n return <>{formatted}</>;\n};\nimport { DropdownMenu, Icon, IconButton, List, Text, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as MoreVerticalIcon } from \"@webiny/icons/more_vert.svg\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/lock.svg\";\nimport { ReactComponent as BeenHereIcon } from \"@webiny/icons/beenhere.svg\";\nimport { ReactComponent as GestureIcon } from \"@webiny/icons/gesture.svg\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { ReactComponent as EditIcon } from \"@webiny/icons/edit.svg\";\nimport { ReactComponent as PublishIcon } from \"@webiny/icons/visibility.svg\";\nimport { ReactComponent as UnpublishIcon } from \"@webiny/icons/visibility_off.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { useRevision } from \"./useRevision.js\";\nimport type { PageRevision } from \"~/domain/PageRevision/index.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport type { RevisionListPresenter } from \"~/presentation/pages/RevisionList/abstractions.js\";\n\nconst t = i18n.ns(\"app-website-builder/modules/Pages/PageEditor/Revisions\");\n\nconst getIcon = (revision: PageRevision) => {\n switch (true) {\n case revision.locked && revision.status !== \"published\":\n return {\n icon: (\n <Icon\n label={\"Locked revision\"}\n icon={<LockIcon />}\n data-testid={\"page.revision.status.locked\"}\n />\n ),\n text: \"This revision is locked (it has already been published)\"\n };\n case revision.status === \"published\":\n return {\n icon: (\n <Icon\n label=\"Published revision\"\n icon={<BeenHereIcon />}\n color={\"accent\"}\n data-testid={\"page.revision.status.published\"}\n />\n ),\n text: \"This revision is currently published!\"\n };\n default:\n return {\n icon: (\n <Icon\n label={\"Draft revision\"}\n icon={<GestureIcon />}\n data-testid={\"page.revision.status.draft\"}\n />\n ),\n text: \"This is a draft\"\n };\n }\n};\n\ninterface RevisionListItemProps {\n item: RevisionListPresenter.ItemViewModel;\n}\n\nconst RevisionListItem = ({ item }: RevisionListItemProps) => {\n const { revision } = item;\n const { createRevision, editRevision, deleteRevision, unpublishRevision, publishRevision } =\n useRevision({\n revision\n });\n\n const { icon, text: tooltipText } = getIcon(revision);\n\n return (\n <List.Item\n icon={<Tooltip content={tooltipText} trigger={icon} />}\n title={revision.title || t`N/A`}\n description={\n <>\n {revision.revisionDescription ? (\n <Text as={\"div\"} size={\"md\"} className={\"mb-2\"}>\n {revision.revisionDescription}\n </Text>\n ) : null}\n <Text as={\"div\"} size={\"sm\"}>\n {t`Last modified by {author} on {time} (#{version})`({\n // Added this because revisionCreatedBy can be returned as null from GraphQL.\n author: revision.createdBy?.displayName,\n time: <DateDisplay date={revision.savedOn} />,\n version: revision.version\n })}\n </Text>\n </>\n }\n about={revision.revisionDescription}\n actions={\n <DropdownMenu\n trigger={\n <IconButton\n variant={\"ghost\"}\n size={\"sm\"}\n iconSize={\"lg\"}\n icon={<MoreVerticalIcon />}\n />\n }\n data-testid={\"page.revisions.more-options\"}\n >\n <>\n {item.canCreateFrom ? (\n <DropdownMenu.Item\n onClick={() => createRevision()}\n data-testid={\"page.revisioncreate-revision\"}\n icon={<AddIcon />}\n text={t`New revision from current`}\n />\n ) : null}\n\n {item.canEdit ? (\n <DropdownMenu.Item\n onClick={() => {\n editRevision();\n }}\n icon={<EditIcon />}\n text={t`Edit revision`}\n />\n ) : null}\n\n {item.canPublish ? (\n <DropdownMenu.Item\n onClick={() => publishRevision()}\n data-testid={\"page.revisionpublish\"}\n icon={<PublishIcon />}\n text={t`Publish revision`}\n />\n ) : null}\n\n {item.canUnpublish ? (\n <DropdownMenu.Item\n onClick={() => unpublishRevision()}\n data-testid={\"page.revisionunpublish\"}\n icon={<UnpublishIcon />}\n text={t`Unpublish revision`}\n />\n ) : null}\n\n {item.canDelete ? (\n <>\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n onClick={() => deleteRevision()}\n icon={<DeleteIcon />}\n text={t`Delete revision`}\n variant={\"destructive\"}\n />\n </>\n ) : null}\n </>\n </DropdownMenu>\n }\n />\n );\n};\n\nexport default RevisionListItem;\n"],"names":["DateDisplay","date","formatted","React","d","globalThis","isNaN","Intl","navigator","t","i18n","getIcon","revision","Icon","LockIcon","BeenHereIcon","GestureIcon","RevisionListItem","item","createRevision","editRevision","deleteRevision","unpublishRevision","publishRevision","useRevision","icon","tooltipText","List","Tooltip","Text","DropdownMenu","IconButton","MoreVerticalIcon","AddIcon","EditIcon","PublishIcon","UnpublishIcon","DeleteIcon"],"mappings":"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"}
|
|
@@ -1,29 +1,17 @@
|
|
|
1
|
-
import react
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { List, OverlayLoader } from "@webiny/admin-ui";
|
|
3
3
|
import RevisionListItem from "./RevisionListItem.js";
|
|
4
|
-
import {
|
|
5
|
-
import { parseIdentifier } from "@webiny/utils/parseIdentifier.js";
|
|
4
|
+
import { useRevisionList } from "./useRevisionList.js";
|
|
6
5
|
const RevisionsList = (props)=>{
|
|
7
6
|
const { page } = props;
|
|
8
|
-
const
|
|
9
|
-
const { loading, getPageRevisions } = useGetPageRevisions();
|
|
10
|
-
useEffect(()=>{
|
|
11
|
-
const { id: entryId } = parseIdentifier(page.id);
|
|
12
|
-
getPageRevisions({
|
|
13
|
-
entryId
|
|
14
|
-
}).then((revisions)=>{
|
|
15
|
-
setRevisions(revisions.sort((a, b)=>new Date(a.savedOn).getTime() - new Date(b.savedOn).getTime()).reverse());
|
|
16
|
-
});
|
|
17
|
-
}, [
|
|
18
|
-
page.id
|
|
19
|
-
]);
|
|
7
|
+
const { vm } = useRevisionList(page.id);
|
|
20
8
|
return /*#__PURE__*/ react.createElement("div", {
|
|
21
9
|
className: "relative"
|
|
22
|
-
},
|
|
10
|
+
}, (vm.isLoading || vm.isMutating) && /*#__PURE__*/ react.createElement(OverlayLoader, null), vm.revisions.length ? /*#__PURE__*/ react.createElement(List, {
|
|
23
11
|
"data-testid": "cms.content-form.revisions"
|
|
24
|
-
}, revisions.map((
|
|
25
|
-
|
|
26
|
-
key: revision.id
|
|
12
|
+
}, vm.revisions.map((item)=>/*#__PURE__*/ react.createElement(RevisionListItem, {
|
|
13
|
+
item: item,
|
|
14
|
+
key: item.revision.id
|
|
27
15
|
}))) : /*#__PURE__*/ react.createElement("div", {
|
|
28
16
|
className: "p-lg"
|
|
29
17
|
}, "No revisions to show."));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation/pages/PageEditor/Revisions/RevisionsList.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/RevisionsList.tsx"],"sourcesContent":["import React
|
|
1
|
+
{"version":3,"file":"presentation/pages/PageEditor/Revisions/RevisionsList.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/RevisionsList.tsx"],"sourcesContent":["import React from \"react\";\nimport { List, OverlayLoader } from \"@webiny/admin-ui\";\nimport RevisionListItem from \"./RevisionListItem.js\";\nimport type { Page } from \"~/domain/Page/index.js\";\nimport { useRevisionList } from \"./useRevisionList.js\";\n\ninterface IRevisionsListProps {\n page: Pick<Page, \"id\">;\n}\n\nexport const RevisionsList = (props: IRevisionsListProps) => {\n const { page } = props;\n const { vm } = useRevisionList(page.id);\n\n return (\n <div className={\"relative\"}>\n {(vm.isLoading || vm.isMutating) && <OverlayLoader />}\n {vm.revisions.length ? (\n <List data-testid={\"cms.content-form.revisions\"}>\n {vm.revisions.map(item => (\n <RevisionListItem item={item} key={item.revision.id} />\n ))}\n </List>\n ) : (\n <div className={\"p-lg\"}>No revisions to show.</div>\n )}\n </div>\n );\n};\n"],"names":["RevisionsList","props","page","vm","useRevisionList","OverlayLoader","List","item","RevisionListItem"],"mappings":";;;;AAUO,MAAMA,gBAAgB,CAACC;IAC1B,MAAM,EAAEC,IAAI,EAAE,GAAGD;IACjB,MAAM,EAAEE,EAAE,EAAE,GAAGC,gBAAgBF,KAAK,EAAE;IAEtC,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;OACVC,AAAAA,CAAAA,GAAG,SAAS,IAAIA,GAAG,UAAS,mBAAM,oBAACE,eAAaA,OACjDF,GAAG,SAAS,CAAC,MAAM,GAAG,WAAH,GAChB,oBAACG,MAAIA;QAAC,eAAa;OACdH,GAAG,SAAS,CAAC,GAAG,CAACI,CAAAA,OAAAA,WAAAA,GACd,oBAACC,kBAAgBA;YAAC,MAAMD;YAAM,KAAKA,KAAK,QAAQ,CAAC,EAAE;6BAI3D,oBAAC;QAAI,WAAW;OAAQ;AAIxC"}
|
|
@@ -3,7 +3,7 @@ export interface UseRevisionProps {
|
|
|
3
3
|
revision: PageRevision;
|
|
4
4
|
}
|
|
5
5
|
export declare const useRevision: (props: UseRevisionProps) => {
|
|
6
|
-
createRevision: () => void
|
|
6
|
+
createRevision: () => Promise<void>;
|
|
7
7
|
editRevision: () => void;
|
|
8
8
|
deleteRevision: () => void;
|
|
9
9
|
publishRevision: () => void;
|
|
@@ -1,49 +1,119 @@
|
|
|
1
|
+
import react, { useCallback } from "react";
|
|
1
2
|
import { useCreatePageRevisionFrom, useDeletePageRevision, usePublishPage, useUnpublishPage } from "../../../../features/pages/index.js";
|
|
2
|
-
import {
|
|
3
|
+
import { Text, useToast } from "@webiny/admin-ui";
|
|
4
|
+
import { useDialogs } from "@webiny/app-admin";
|
|
5
|
+
import { ReactComponent } from "@webiny/icons/visibility.svg";
|
|
6
|
+
import { ReactComponent as visibility_off_svg_ReactComponent } from "@webiny/icons/visibility_off.svg";
|
|
7
|
+
import { ReactComponent as delete_svg_ReactComponent } from "@webiny/icons/delete.svg";
|
|
3
8
|
import { Routes } from "../../../../routes.js";
|
|
4
9
|
import { useRouter } from "@webiny/app";
|
|
10
|
+
import { usePageEditorDrawer } from "./usePageEditorDrawer.js";
|
|
5
11
|
const useRevision = (props)=>{
|
|
6
12
|
const { revision } = props;
|
|
7
13
|
const { goToRoute } = useRouter();
|
|
14
|
+
const { openRevisionList } = usePageEditorDrawer();
|
|
15
|
+
const { showDialog } = useDialogs();
|
|
16
|
+
const { showSuccessToast, showWarningToast } = useToast();
|
|
8
17
|
const { createPageRevisionFrom } = useCreatePageRevisionFrom();
|
|
9
18
|
const { deletePageRevision } = useDeletePageRevision();
|
|
10
19
|
const { publishPage } = usePublishPage();
|
|
11
20
|
const { unpublishPage } = useUnpublishPage();
|
|
12
|
-
const createRevision = useCallback(()=>{
|
|
13
|
-
createPageRevisionFrom({
|
|
21
|
+
const createRevision = useCallback(async ()=>{
|
|
22
|
+
await createPageRevisionFrom({
|
|
14
23
|
id: revision.id
|
|
15
24
|
});
|
|
16
25
|
}, [
|
|
17
26
|
revision.id
|
|
18
27
|
]);
|
|
19
28
|
const deleteRevision = useCallback(()=>{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
showDialog({
|
|
30
|
+
title: "Delete revision",
|
|
31
|
+
icon: /*#__PURE__*/ react.createElement(delete_svg_ReactComponent, null),
|
|
32
|
+
content: /*#__PURE__*/ react.createElement(Text, null, `You are about to delete revision #${revision.version}. This cannot be undone. Are you sure you want to continue?`),
|
|
33
|
+
acceptLabel: "Yes, delete this revision!",
|
|
34
|
+
cancelLabel: "Cancel",
|
|
35
|
+
onAccept: async ()=>{
|
|
36
|
+
try {
|
|
37
|
+
await deletePageRevision({
|
|
38
|
+
id: revision.id
|
|
39
|
+
});
|
|
40
|
+
showSuccessToast({
|
|
41
|
+
title: `Revision #${revision.version} was deleted successfully!`
|
|
42
|
+
});
|
|
43
|
+
} catch (ex) {
|
|
44
|
+
showWarningToast({
|
|
45
|
+
title: "Could not delete the revision.",
|
|
46
|
+
description: ex.message
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
23
50
|
});
|
|
24
51
|
}, [
|
|
25
|
-
revision.id
|
|
52
|
+
revision.id,
|
|
53
|
+
revision.version
|
|
26
54
|
]);
|
|
27
55
|
const publishRevision = useCallback(()=>{
|
|
28
|
-
|
|
29
|
-
|
|
56
|
+
showDialog({
|
|
57
|
+
title: "Publish revision",
|
|
58
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
59
|
+
content: /*#__PURE__*/ react.createElement(Text, null, `You are about to publish revision #${revision.version}. Are you sure you want to continue?`),
|
|
60
|
+
acceptLabel: "Yes, publish this revision!",
|
|
61
|
+
cancelLabel: "Cancel",
|
|
62
|
+
onAccept: async ()=>{
|
|
63
|
+
try {
|
|
64
|
+
await publishPage({
|
|
65
|
+
id: revision.id
|
|
66
|
+
});
|
|
67
|
+
showSuccessToast({
|
|
68
|
+
title: `Revision #${revision.version} was published successfully!`
|
|
69
|
+
});
|
|
70
|
+
} catch (ex) {
|
|
71
|
+
showWarningToast({
|
|
72
|
+
title: "Could not publish the revision.",
|
|
73
|
+
description: ex.message
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
30
77
|
});
|
|
31
78
|
}, [
|
|
32
|
-
revision.id
|
|
79
|
+
revision.id,
|
|
80
|
+
revision.version
|
|
33
81
|
]);
|
|
34
82
|
const unpublishRevision = useCallback(()=>{
|
|
35
|
-
|
|
36
|
-
|
|
83
|
+
showDialog({
|
|
84
|
+
title: "Unpublish revision",
|
|
85
|
+
icon: /*#__PURE__*/ react.createElement(visibility_off_svg_ReactComponent, null),
|
|
86
|
+
content: /*#__PURE__*/ react.createElement(Text, null, `You are about to unpublish revision #${revision.version}, which will take the page off the live website. Are you sure you want to continue?`),
|
|
87
|
+
acceptLabel: "Yes, unpublish this revision!",
|
|
88
|
+
cancelLabel: "Cancel",
|
|
89
|
+
onAccept: async ()=>{
|
|
90
|
+
try {
|
|
91
|
+
await unpublishPage({
|
|
92
|
+
id: revision.id
|
|
93
|
+
});
|
|
94
|
+
showSuccessToast({
|
|
95
|
+
title: `Revision #${revision.version} was unpublished successfully!`
|
|
96
|
+
});
|
|
97
|
+
} catch (ex) {
|
|
98
|
+
showWarningToast({
|
|
99
|
+
title: "Could not unpublish the revision.",
|
|
100
|
+
description: ex.message
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
37
104
|
});
|
|
38
105
|
}, [
|
|
39
|
-
revision.id
|
|
106
|
+
revision.id,
|
|
107
|
+
revision.version
|
|
40
108
|
]);
|
|
41
109
|
const editRevision = useCallback(()=>{
|
|
110
|
+
openRevisionList(false);
|
|
42
111
|
goToRoute(Routes.Pages.Editor, {
|
|
43
112
|
id: revision.id
|
|
44
113
|
});
|
|
45
114
|
}, [
|
|
46
|
-
revision.id
|
|
115
|
+
revision.id,
|
|
116
|
+
openRevisionList
|
|
47
117
|
]);
|
|
48
118
|
return {
|
|
49
119
|
createRevision,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation/pages/PageEditor/Revisions/useRevision.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/useRevision.tsx"],"sourcesContent":["import type { PageRevision } from \"~/domain/PageRevision/index.js\";\nimport {\n usePublishPage,\n useUnpublishPage,\n useCreatePageRevisionFrom,\n useDeletePageRevision\n} from \"~/features/pages/index.js\";\nimport { useCallback } from \"react\";\nimport { Routes } from \"~/routes.js\";\nimport { useRouter } from \"@webiny/app\";\n\nexport interface UseRevisionProps {\n revision: PageRevision;\n}\n\nexport const useRevision = (props: UseRevisionProps) => {\n const { revision } = props;\n\n const { goToRoute } = useRouter();\n\n const { createPageRevisionFrom } = useCreatePageRevisionFrom();\n const { deletePageRevision } = useDeletePageRevision();\n const { publishPage } = usePublishPage();\n const { unpublishPage } = useUnpublishPage();\n\n const createRevision = useCallback(() => {\n createPageRevisionFrom({\n id: revision.id\n });\n }, [revision.id]);\n\n const deleteRevision = useCallback(() => {\n deletePageRevision({\n
|
|
1
|
+
{"version":3,"file":"presentation/pages/PageEditor/Revisions/useRevision.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/useRevision.tsx"],"sourcesContent":["import React from \"react\";\nimport type { PageRevision } from \"~/domain/PageRevision/index.js\";\nimport {\n usePublishPage,\n useUnpublishPage,\n useCreatePageRevisionFrom,\n useDeletePageRevision\n} from \"~/features/pages/index.js\";\nimport { useCallback } from \"react\";\nimport { Text, useToast } from \"@webiny/admin-ui\";\nimport { useDialogs } from \"@webiny/app-admin\";\nimport { ReactComponent as PublishIcon } from \"@webiny/icons/visibility.svg\";\nimport { ReactComponent as UnpublishIcon } from \"@webiny/icons/visibility_off.svg\";\nimport { ReactComponent as DeleteIcon } from \"@webiny/icons/delete.svg\";\nimport { Routes } from \"~/routes.js\";\nimport { useRouter } from \"@webiny/app\";\nimport { usePageEditorDrawer } from \"./usePageEditorDrawer.js\";\n\nexport interface UseRevisionProps {\n revision: PageRevision;\n}\n\nexport const useRevision = (props: UseRevisionProps) => {\n const { revision } = props;\n\n const { goToRoute } = useRouter();\n const { openRevisionList } = usePageEditorDrawer();\n const { showDialog } = useDialogs();\n const { showSuccessToast, showWarningToast } = useToast();\n\n const { createPageRevisionFrom } = useCreatePageRevisionFrom();\n const { deletePageRevision } = useDeletePageRevision();\n const { publishPage } = usePublishPage();\n const { unpublishPage } = useUnpublishPage();\n\n const createRevision = useCallback(async () => {\n await createPageRevisionFrom({\n id: revision.id\n });\n }, [revision.id]);\n\n const deleteRevision = useCallback(() => {\n showDialog({\n title: \"Delete revision\",\n icon: <DeleteIcon />,\n content: (\n <Text>\n {`You are about to delete revision #${revision.version}. This cannot be undone. Are you sure you want to continue?`}\n </Text>\n ),\n acceptLabel: \"Yes, delete this revision!\",\n cancelLabel: \"Cancel\",\n onAccept: async () => {\n try {\n await deletePageRevision({\n id: revision.id\n });\n\n showSuccessToast({\n title: `Revision #${revision.version} was deleted successfully!`\n });\n } catch (ex) {\n showWarningToast({\n title: \"Could not delete the revision.\",\n description: ex.message\n });\n }\n }\n });\n }, [revision.id, revision.version]);\n\n const publishRevision = useCallback(() => {\n showDialog({\n title: \"Publish revision\",\n icon: <PublishIcon />,\n content: (\n <Text>\n {`You are about to publish revision #${revision.version}. Are you sure you want to continue?`}\n </Text>\n ),\n acceptLabel: \"Yes, publish this revision!\",\n cancelLabel: \"Cancel\",\n onAccept: async () => {\n try {\n await publishPage({\n id: revision.id\n });\n\n showSuccessToast({\n title: `Revision #${revision.version} was published successfully!`\n });\n } catch (ex) {\n showWarningToast({\n title: \"Could not publish the revision.\",\n description: ex.message\n });\n }\n }\n });\n }, [revision.id, revision.version]);\n\n const unpublishRevision = useCallback(() => {\n showDialog({\n title: \"Unpublish revision\",\n icon: <UnpublishIcon />,\n content: (\n <Text>\n {`You are about to unpublish revision #${revision.version}, which will take the page off the live website. Are you sure you want to continue?`}\n </Text>\n ),\n acceptLabel: \"Yes, unpublish this revision!\",\n cancelLabel: \"Cancel\",\n onAccept: async () => {\n try {\n await unpublishPage({\n id: revision.id\n });\n\n showSuccessToast({\n title: `Revision #${revision.version} was unpublished successfully!`\n });\n } catch (ex) {\n showWarningToast({\n title: \"Could not unpublish the revision.\",\n description: ex.message\n });\n }\n }\n });\n }, [revision.id, revision.version]);\n\n const editRevision = useCallback(() => {\n // The drawer lives outside the editor, so it would stay open across the navigation.\n openRevisionList(false);\n\n goToRoute(Routes.Pages.Editor, {\n id: revision.id\n });\n }, [revision.id, openRevisionList]);\n\n return {\n createRevision,\n editRevision,\n deleteRevision,\n publishRevision,\n unpublishRevision\n };\n};\n"],"names":["useRevision","props","revision","goToRoute","useRouter","openRevisionList","usePageEditorDrawer","showDialog","useDialogs","showSuccessToast","showWarningToast","useToast","createPageRevisionFrom","useCreatePageRevisionFrom","deletePageRevision","useDeletePageRevision","publishPage","usePublishPage","unpublishPage","useUnpublishPage","createRevision","useCallback","deleteRevision","DeleteIcon","Text","ex","publishRevision","PublishIcon","unpublishRevision","UnpublishIcon","editRevision","Routes"],"mappings":";;;;;;;;;;AAsBO,MAAMA,cAAc,CAACC;IACxB,MAAM,EAAEC,QAAQ,EAAE,GAAGD;IAErB,MAAM,EAAEE,SAAS,EAAE,GAAGC;IACtB,MAAM,EAAEC,gBAAgB,EAAE,GAAGC;IAC7B,MAAM,EAAEC,UAAU,EAAE,GAAGC;IACvB,MAAM,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAE,GAAGC;IAE/C,MAAM,EAAEC,sBAAsB,EAAE,GAAGC;IACnC,MAAM,EAAEC,kBAAkB,EAAE,GAAGC;IAC/B,MAAM,EAAEC,WAAW,EAAE,GAAGC;IACxB,MAAM,EAAEC,aAAa,EAAE,GAAGC;IAE1B,MAAMC,iBAAiBC,YAAY;QAC/B,MAAMT,uBAAuB;YACzB,IAAIV,SAAS,EAAE;QACnB;IACJ,GAAG;QAACA,SAAS,EAAE;KAAC;IAEhB,MAAMoB,iBAAiBD,YAAY;QAC/Bd,WAAW;YACP,OAAO;YACP,MAAM,WAAN,GAAM,oBAACgB,2BAAUA;YACjB,SAAS,WAAT,GACI,oBAACC,MAAIA,MACA,CAAC,kCAAkC,EAAEtB,SAAS,OAAO,CAAC,2DAA2D,CAAC;YAG3H,aAAa;YACb,aAAa;YACb,UAAU;gBACN,IAAI;oBACA,MAAMY,mBAAmB;wBACrB,IAAIZ,SAAS,EAAE;oBACnB;oBAEAO,iBAAiB;wBACb,OAAO,CAAC,UAAU,EAAEP,SAAS,OAAO,CAAC,0BAA0B,CAAC;oBACpE;gBACJ,EAAE,OAAOuB,IAAI;oBACTf,iBAAiB;wBACb,OAAO;wBACP,aAAae,GAAG,OAAO;oBAC3B;gBACJ;YACJ;QACJ;IACJ,GAAG;QAACvB,SAAS,EAAE;QAAEA,SAAS,OAAO;KAAC;IAElC,MAAMwB,kBAAkBL,YAAY;QAChCd,WAAW;YACP,OAAO;YACP,MAAM,WAAN,GAAM,oBAACoB,gBAAWA;YAClB,SAAS,WAAT,GACI,oBAACH,MAAIA,MACA,CAAC,mCAAmC,EAAEtB,SAAS,OAAO,CAAC,oCAAoC,CAAC;YAGrG,aAAa;YACb,aAAa;YACb,UAAU;gBACN,IAAI;oBACA,MAAMc,YAAY;wBACd,IAAId,SAAS,EAAE;oBACnB;oBAEAO,iBAAiB;wBACb,OAAO,CAAC,UAAU,EAAEP,SAAS,OAAO,CAAC,4BAA4B,CAAC;oBACtE;gBACJ,EAAE,OAAOuB,IAAI;oBACTf,iBAAiB;wBACb,OAAO;wBACP,aAAae,GAAG,OAAO;oBAC3B;gBACJ;YACJ;QACJ;IACJ,GAAG;QAACvB,SAAS,EAAE;QAAEA,SAAS,OAAO;KAAC;IAElC,MAAM0B,oBAAoBP,YAAY;QAClCd,WAAW;YACP,OAAO;YACP,MAAM,WAAN,GAAM,oBAACsB,mCAAaA;YACpB,SAAS,WAAT,GACI,oBAACL,MAAIA,MACA,CAAC,qCAAqC,EAAEtB,SAAS,OAAO,CAAC,mFAAmF,CAAC;YAGtJ,aAAa;YACb,aAAa;YACb,UAAU;gBACN,IAAI;oBACA,MAAMgB,cAAc;wBAChB,IAAIhB,SAAS,EAAE;oBACnB;oBAEAO,iBAAiB;wBACb,OAAO,CAAC,UAAU,EAAEP,SAAS,OAAO,CAAC,8BAA8B,CAAC;oBACxE;gBACJ,EAAE,OAAOuB,IAAI;oBACTf,iBAAiB;wBACb,OAAO;wBACP,aAAae,GAAG,OAAO;oBAC3B;gBACJ;YACJ;QACJ;IACJ,GAAG;QAACvB,SAAS,EAAE;QAAEA,SAAS,OAAO;KAAC;IAElC,MAAM4B,eAAeT,YAAY;QAE7BhB,iBAAiB;QAEjBF,UAAU4B,OAAO,KAAK,CAAC,MAAM,EAAE;YAC3B,IAAI7B,SAAS,EAAE;QACnB;IACJ,GAAG;QAACA,SAAS,EAAE;QAAEG;KAAiB;IAElC,OAAO;QACHe;QACAU;QACAR;QACAI;QACAE;IACJ;AACJ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from "react";
|
|
2
|
+
import { autorun } from "mobx";
|
|
3
|
+
import { useFeature } from "@webiny/app";
|
|
4
|
+
import { parseIdentifier } from "@webiny/utils/parseIdentifier.js";
|
|
5
|
+
import { RevisionListFeature } from "../../RevisionList/feature.js";
|
|
6
|
+
const useRevisionList = (pageId)=>{
|
|
7
|
+
const { presenter } = useFeature(RevisionListFeature);
|
|
8
|
+
const { id: entryId } = useMemo(()=>parseIdentifier(pageId), [
|
|
9
|
+
pageId
|
|
10
|
+
]);
|
|
11
|
+
useEffect(()=>{
|
|
12
|
+
presenter.init({
|
|
13
|
+
entryId
|
|
14
|
+
});
|
|
15
|
+
}, [
|
|
16
|
+
entryId,
|
|
17
|
+
presenter
|
|
18
|
+
]);
|
|
19
|
+
const [vm, setVm] = useState(presenter.vm);
|
|
20
|
+
useEffect(()=>autorun(()=>{
|
|
21
|
+
setVm(presenter.vm);
|
|
22
|
+
}), [
|
|
23
|
+
presenter
|
|
24
|
+
]);
|
|
25
|
+
return {
|
|
26
|
+
vm
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export { useRevisionList };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=useRevisionList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation/pages/PageEditor/Revisions/useRevisionList.js","sources":["../../../../../src/presentation/pages/PageEditor/Revisions/useRevisionList.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { autorun } from \"mobx\";\nimport { useFeature } from \"@webiny/app\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier.js\";\nimport { RevisionListFeature } from \"~/presentation/pages/RevisionList/feature.js\";\n\nexport const useRevisionList = (pageId: string) => {\n const { presenter } = useFeature(RevisionListFeature);\n\n const { id: entryId } = useMemo(() => parseIdentifier(pageId), [pageId]);\n\n useEffect(() => {\n presenter.init({ entryId });\n }, [entryId, presenter]);\n\n const [vm, setVm] = useState(presenter.vm);\n\n useEffect(() => {\n return autorun(() => {\n setVm(presenter.vm);\n });\n }, [presenter]);\n\n return { vm };\n};\n"],"names":["useRevisionList","pageId","presenter","useFeature","RevisionListFeature","entryId","useMemo","parseIdentifier","useEffect","vm","setVm","useState","autorun"],"mappings":";;;;;AAMO,MAAMA,kBAAkB,CAACC;IAC5B,MAAM,EAAEC,SAAS,EAAE,GAAGC,WAAWC;IAEjC,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,QAAQ,IAAMC,gBAAgBN,SAAS;QAACA;KAAO;IAEvEO,UAAU;QACNN,UAAU,IAAI,CAAC;YAAEG;QAAQ;IAC7B,GAAG;QAACA;QAASH;KAAU;IAEvB,MAAM,CAACO,IAAIC,MAAM,GAAGC,SAAST,UAAU,EAAE;IAEzCM,UAAU,IACCI,QAAQ;YACXF,MAAMR,UAAU,EAAE;QACtB,IACD;QAACA;KAAU;IAEd,OAAO;QAAEO;IAAG;AAChB"}
|
|
@@ -6,6 +6,6 @@ export interface PageSettingsDrawerProps {
|
|
|
6
6
|
onClose: () => void;
|
|
7
7
|
onSave: () => void;
|
|
8
8
|
}
|
|
9
|
-
export declare const PageSettingsDrawer: (({ presenter, open, onClose, onSave }: PageSettingsDrawerProps) => React.JSX.Element) & {
|
|
10
|
-
|
|
9
|
+
export declare const PageSettingsDrawer: (({ presenter, open, onClose, onSave }: PageSettingsDrawerProps) => React.JSX.Element) & React.NamedExoticComponent<PageSettingsDrawerProps> & {
|
|
10
|
+
readonly type: ({ presenter, open, onClose, onSave }: PageSettingsDrawerProps) => React.JSX.Element;
|
|
11
11
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import react, { useCallback
|
|
1
|
+
import react, { useCallback } from "react";
|
|
2
2
|
import { Button, DropdownMenu, Text } from "@webiny/admin-ui";
|
|
3
3
|
import { ReactComponent } from "@webiny/icons/keyboard_arrow_down.svg";
|
|
4
4
|
import { ReactComponent as draw_svg_ReactComponent } from "@webiny/icons/draw.svg";
|
|
5
5
|
import { ReactComponent as lock_svg_ReactComponent } from "@webiny/icons/lock.svg";
|
|
6
6
|
import { ReactComponent as remove_red_eye_svg_ReactComponent } from "@webiny/icons/remove_red_eye.svg";
|
|
7
|
-
import { useGetPageRevisions } from "../../../../features/pages/index.js";
|
|
8
7
|
import { useSelectFromDocument } from "../../../../BaseEditor/hooks/useSelectFromDocument.js";
|
|
8
|
+
import { useRevisionList } from "../Revisions/useRevisionList.js";
|
|
9
9
|
import { useRouter } from "@webiny/app-admin";
|
|
10
10
|
import { Routes } from "../../../../routes.js";
|
|
11
11
|
import { usePageEditorDrawer } from "../Revisions/usePageEditorDrawer.js";
|
|
@@ -17,23 +17,11 @@ const statusIcon = {
|
|
|
17
17
|
};
|
|
18
18
|
const RevisionsMenu = ()=>{
|
|
19
19
|
const { getLink } = useRouter();
|
|
20
|
-
const [revisions, setRevisions] = useState([]);
|
|
21
|
-
const { loading, getPageRevisions } = useGetPageRevisions();
|
|
22
20
|
const id = useSelectFromDocument((document)=>document.id);
|
|
23
|
-
const status = useSelectFromDocument((document)=>document.status);
|
|
24
21
|
const { openRevisionList } = usePageEditorDrawer();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
entryId
|
|
29
|
-
}).then((revisions)=>{
|
|
30
|
-
setRevisions(revisions.sort((a, b)=>new Date(a.savedOn).getTime() - new Date(b.savedOn).getTime()).reverse());
|
|
31
|
-
});
|
|
32
|
-
}, [
|
|
33
|
-
id,
|
|
34
|
-
status
|
|
35
|
-
]);
|
|
36
|
-
const currentRevision = revisions.find((r)=>r.id === id);
|
|
22
|
+
const { vm } = useRevisionList(id);
|
|
23
|
+
const { revisions, isLoading } = vm;
|
|
24
|
+
const currentRevision = revisions.find((item)=>item.revision.id === id)?.revision;
|
|
37
25
|
const goToRevision = useCallback((id)=>{
|
|
38
26
|
window.location.pathname = getLink(Routes.Pages.Editor, {
|
|
39
27
|
id
|
|
@@ -44,13 +32,13 @@ const RevisionsMenu = ()=>{
|
|
|
44
32
|
}, []);
|
|
45
33
|
return /*#__PURE__*/ react.createElement(DropdownMenu, {
|
|
46
34
|
trigger: /*#__PURE__*/ react.createElement(Button, {
|
|
47
|
-
disabled:
|
|
35
|
+
disabled: isLoading,
|
|
48
36
|
variant: "ghost",
|
|
49
37
|
text: currentRevision ? currentRevision.getLabel() : "Loading...",
|
|
50
38
|
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
51
39
|
iconPosition: "end"
|
|
52
40
|
})
|
|
53
|
-
}, revisions.slice(0, 5).map((revision)=>/*#__PURE__*/ react.createElement(Item, {
|
|
41
|
+
}, revisions.slice(0, 5).map(({ revision })=>/*#__PURE__*/ react.createElement(Item, {
|
|
54
42
|
key: revision.id,
|
|
55
43
|
className: "cursor-pointer",
|
|
56
44
|
onClick: ()=>goToRevision(revision.id),
|