@wordpress/components
Version:
UI components for WordPress.
88 lines (81 loc) • 3.68 kB
JavaScript
import { createElement, Fragment } from "@wordpress/element";
/**
* External dependencies
*/
// Needed to initialise the default datepicker styles.
// See: https://github.com/airbnb/react-dates#initialize
import 'react-dates/initialize';
import { noop } from 'lodash';
/**
* WordPress dependencies
*/
import { useState, forwardRef } from '@wordpress/element';
import { __, _x } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import Button from '../button';
import { default as DatePicker } from './date';
import { default as TimePicker } from './time';
export { DatePicker, TimePicker };
function DateTimePicker({
currentDate,
is12Hour,
isInvalidDate,
onMonthPreviewed = noop,
onChange,
events
}, ref) {
const [calendarHelpIsVisible, setCalendarHelpIsVisible] = useState(false);
function onClickDescriptionToggle() {
setCalendarHelpIsVisible(!calendarHelpIsVisible);
}
return createElement("div", {
ref: ref,
className: "components-datetime"
}, !calendarHelpIsVisible && createElement(Fragment, null, createElement(TimePicker, {
currentTime: currentDate,
onChange: onChange,
is12Hour: is12Hour
}), createElement(DatePicker, {
currentDate: currentDate,
onChange: onChange,
isInvalidDate: isInvalidDate,
events: events,
onMonthPreviewed: onMonthPreviewed
})), calendarHelpIsVisible && createElement(Fragment, null, createElement("div", {
className: "components-datetime__calendar-help"
}, createElement("h4", null, __('Click to Select')), createElement("ul", null, createElement("li", null, __('Click the right or left arrows to select other months in the past or the future.')), createElement("li", null, __('Click the desired day to select it.'))), createElement("h4", null, __('Navigating with a keyboard')), createElement("ul", null, createElement("li", null, createElement("abbr", {
"aria-label": _x('Enter', 'keyboard button')
}, "\u21B5"), ' '
/* JSX removes whitespace, but a space is required for screen readers. */
, createElement("span", null, __('Select the date in focus.'))), createElement("li", null, createElement("abbr", {
"aria-label": __('Left and Right Arrows')
}, "\u2190/\u2192"), ' '
/* JSX removes whitespace, but a space is required for screen readers. */
, __('Move backward (left) or forward (right) by one day.')), createElement("li", null, createElement("abbr", {
"aria-label": __('Up and Down Arrows')
}, "\u2191/\u2193"), ' '
/* JSX removes whitespace, but a space is required for screen readers. */
, __('Move backward (up) or forward (down) by one week.')), createElement("li", null, createElement("abbr", {
"aria-label": __('Page Up and Page Down')
}, __('PgUp/PgDn')), ' '
/* JSX removes whitespace, but a space is required for screen readers. */
, __('Move backward (PgUp) or forward (PgDn) by one month.')), createElement("li", null, createElement("abbr", {
"aria-label": __('Home and End')
}, __('Home/End')), ' '
/* JSX removes whitespace, but a space is required for screen readers. */
, __('Go to the first (home) or last (end) day of a week.'))))), createElement("div", {
className: "components-datetime__buttons"
}, !calendarHelpIsVisible && currentDate && createElement(Button, {
className: "components-datetime__date-reset-button",
isLink: true,
onClick: () => onChange(null)
}, __('Reset')), createElement(Button, {
className: "components-datetime__date-help-toggle",
isLink: true,
onClick: onClickDescriptionToggle
}, calendarHelpIsVisible ? __('Close') : __('Calendar Help'))));
}
export default forwardRef(DateTimePicker);
//# sourceMappingURL=index.js.map