-
Notifications
You must be signed in to change notification settings - Fork 583
/
PreviewPageButton.tsx
54 lines (50 loc) · 2 KB
/
PreviewPageButton.tsx
1
2
3
4
5
6
7
8
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import React from "react";
import { connect } from "@webiny/app-page-builder/editor/redux";
import { omit, isEqual } from "lodash";
import { getPage } from "@webiny/app-page-builder/editor/selectors";
import { MenuItem } from "@webiny/ui/Menu";
import { usePageBuilderSettings } from "@webiny/app-page-builder/admin/hooks/usePageBuilderSettings";
import { ListItemGraphic } from "@webiny/ui/List";
import { Icon } from "@webiny/ui/Icon";
import { ConfirmationDialog } from "@webiny/ui/ConfirmationDialog";
import { ReactComponent as PreviewIcon } from "@webiny/app-page-builder/admin/assets/visibility.svg";
import {
ConfigureDomainMessage,
configureDomainTitle
} from "@webiny/app-page-builder/utils/configureDomain";
const openTarget = window.Cypress ? "_self" : "_blank";
const PreviewPageButton = ({ page }) => {
const { getPagePreviewUrl, getDomain, isSiteRunning } = usePageBuilderSettings();
return (
<ConfirmationDialog
title={configureDomainTitle}
message={<ConfigureDomainMessage domain={getDomain()} />}
>
{({ showConfirmation }) => {
return (
<MenuItem
onClick={() => {
if (isSiteRunning) {
window.open(getPagePreviewUrl(page), openTarget);
} else {
showConfirmation();
}
}}
data-testid={"pb-editor-page-options-menu-preview"}
>
<ListItemGraphic>
<Icon icon={<PreviewIcon />} />
</ListItemGraphic>
Preview
</MenuItem>
);
}}
</ConfirmationDialog>
);
};
export default connect<any, any, any>(
state => ({ page: omit(getPage(state), ["content"]) }),
null,
null,
{ areStatePropsEqual: isEqual }
)(PreviewPageButton);