UNPKG

@wordpress/components

Version:
88 lines (81 loc) 3.68 kB
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