@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
115 lines (105 loc) • 3.92 kB
JavaScript
import { createElement, Fragment } from "@wordpress/element";
/**
* External dependencies
*/
import { get } from 'lodash';
/**
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
import { Icon, PanelBody } from '@wordpress/components';
import { useSelect } from '@wordpress/data';
import { wordpress } from '@wordpress/icons';
import { filterURLForDisplay } from '@wordpress/url';
/**
* Internal dependencies
*/
import PostVisibility from '../post-visibility';
import PostVisibilityLabel from '../post-visibility/label';
import PostSchedule from '../post-schedule';
import PostScheduleLabel from '../post-schedule/label';
import MaybeTagsPanel from './maybe-tags-panel';
import MaybePostFormatPanel from './maybe-post-format-panel';
function PostPublishPanelPrepublish({
children
}) {
const {
isBeingScheduled,
isRequestingSiteIcon,
hasPublishAction,
siteIconUrl,
siteTitle,
siteHome
} = useSelect(select => {
const {
isResolving
} = select('core/data');
const {
getCurrentPost,
isEditedPostBeingScheduled
} = select('core/editor');
const {
getEntityRecord
} = select('core');
const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
return {
hasPublishAction: get(getCurrentPost(), ['_links', 'wp:action-publish'], false),
isBeingScheduled: isEditedPostBeingScheduled(),
isRequestingSiteIcon: isResolving('core', 'getEntityRecord', ['root', '__unstableBase', undefined]),
siteIconUrl: siteData.site_icon_url,
siteTitle: siteData.name,
siteHome: siteData.home && filterURLForDisplay(siteData.home)
};
}, []);
let siteIcon = createElement(Icon, {
className: "components-site-icon",
size: "36px",
icon: wordpress
});
if (siteIconUrl) {
siteIcon = createElement("img", {
alt: __('Site Icon'),
className: "components-site-icon",
src: siteIconUrl
});
}
if (isRequestingSiteIcon) {
siteIcon = null;
}
let prePublishTitle, prePublishBodyText;
if (!hasPublishAction) {
prePublishTitle = __('Are you ready to submit for review?');
prePublishBodyText = __('When you’re ready, submit your work for review, and an Editor will be able to approve it for you.');
} else if (isBeingScheduled) {
prePublishTitle = __('Are you ready to schedule?');
prePublishBodyText = __('Your work will be published at the specified date and time.');
} else {
prePublishTitle = __('Are you ready to publish?');
prePublishBodyText = __('Double-check your settings before publishing.');
}
return createElement("div", {
className: "editor-post-publish-panel__prepublish"
}, createElement("div", null, createElement("strong", null, prePublishTitle)), createElement("p", null, prePublishBodyText), createElement("div", {
className: "components-site-card"
}, siteIcon, createElement("div", {
className: "components-site-info"
}, createElement("span", {
className: "components-site-name"
}, siteTitle || __('(Untitled)')), createElement("span", {
className: "components-site-home"
}, siteHome))), hasPublishAction && createElement(Fragment, null, createElement(PanelBody, {
initialOpen: false,
title: [__('Visibility:'), createElement("span", {
className: "editor-post-publish-panel__link",
key: "label"
}, createElement(PostVisibilityLabel, null))]
}, createElement(PostVisibility, null)), createElement(PanelBody, {
initialOpen: false,
title: [__('Publish:'), createElement("span", {
className: "editor-post-publish-panel__link",
key: "label"
}, createElement(PostScheduleLabel, null))]
}, createElement(PostSchedule, null))), createElement(MaybePostFormatPanel, null), createElement(MaybeTagsPanel, null), children);
}
export default PostPublishPanelPrepublish;
//# sourceMappingURL=prepublish.js.map