UNPKG

@wordpress/editor

Version:
104 lines (97 loc) 3.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrivatePostSchedule = PrivatePostSchedule; exports.default = PostSchedule; var _dateFns = require("date-fns"); var _date = require("@wordpress/date"); var _i18n = require("@wordpress/i18n"); var _data = require("@wordpress/data"); var _blockEditor = require("@wordpress/block-editor"); var _element = require("@wordpress/element"); var _coreData = require("@wordpress/core-data"); var _store = require("../../store"); var _lockUnlock = require("../../lock-unlock"); var _jsxRuntime = require("react/jsx-runtime"); /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { PrivatePublishDateTimePicker } = (0, _lockUnlock.unlock)(_blockEditor.privateApis); /** * Renders the PostSchedule component. It allows the user to schedule a post. * * @param {Object} props Props. * @param {Function} props.onClose Function to close the component. * * @return {Component} The component to be rendered. */ function PostSchedule(props) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(PrivatePostSchedule, { ...props, showPopoverHeaderActions: true, isCompact: false }); } function PrivatePostSchedule({ onClose, showPopoverHeaderActions, isCompact }) { const { postDate, postType } = (0, _data.useSelect)(select => ({ postDate: select(_store.store).getEditedPostAttribute('date'), postType: select(_store.store).getCurrentPostType() }), []); const { editPost } = (0, _data.useDispatch)(_store.store); const onUpdateDate = date => editPost({ date }); const [previewedMonth, setPreviewedMonth] = (0, _element.useState)((0, _dateFns.startOfMonth)(new Date(postDate))); // Pick up published and schduled site posts. const eventsByPostType = (0, _data.useSelect)(select => select(_coreData.store).getEntityRecords('postType', postType, { status: 'publish,future', after: (0, _dateFns.startOfMonth)(previewedMonth).toISOString(), before: (0, _dateFns.endOfMonth)(previewedMonth).toISOString(), exclude: [select(_store.store).getCurrentPostId()], per_page: 100, _fields: 'id,date' }), [previewedMonth, postType]); const events = (0, _element.useMemo)(() => (eventsByPostType || []).map(({ date: eventDate }) => ({ date: new Date(eventDate) })), [eventsByPostType]); const settings = (0, _date.getSettings)(); // To know if the current timezone is a 12 hour time with look for "a" in the time format // We also make sure this a is not escaped by a "/" const is12HourTime = /a(?!\\)/i.test(settings.formats.time.toLowerCase() // Test only the lower case a. .replace(/\\\\/g, '') // Replace "//" with empty strings. .split('').reverse().join('') // Reverse the string and test for "a" not followed by a slash. ); return /*#__PURE__*/(0, _jsxRuntime.jsx)(PrivatePublishDateTimePicker, { currentDate: postDate, onChange: onUpdateDate, is12Hour: is12HourTime, dateOrder: /* translators: Order of day, month, and year. Available formats are 'dmy', 'mdy', and 'ymd'. */ (0, _i18n._x)('dmy', 'date order'), events: events, onMonthPreviewed: date => setPreviewedMonth((0, _dateFns.parseISO)(date)), onClose: onClose, isCompact: isCompact, showPopoverHeaderActions: showPopoverHeaderActions }); } //# sourceMappingURL=index.js.map