UNPKG

@wordpress/components

Version:
69 lines (65 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DateCalendar = void 0; var _reactDayPicker = require("react-day-picker"); var _locale = require("react-day-picker/locale"); var _element = require("@wordpress/element"); var _constants = require("../utils/constants"); var _misc = require("../utils/misc"); var _hooks = require("../../utils/hooks"); var _useLocalizationProps = require("../utils/use-localization-props"); var _jsxRuntime = require("react/jsx-runtime"); /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ /** * `DateCalendar` is a React component that provides a customizable calendar * interface for **single date** selection. * * The component is built with accessibility in mind and follows ARIA best * practices for calendar widgets. It provides keyboard navigation, screen reader * support, and customizable labels for internationalization. */ const DateCalendar = ({ defaultSelected, selected: selectedProp, onSelect, numberOfMonths = 1, locale = _locale.enUS, timeZone, ...props }) => { const localizationProps = (0, _useLocalizationProps.useLocalizationProps)({ locale, timeZone, mode: 'single' }); const onChange = (0, _element.useCallback)((selected, triggerDate, modifiers, e) => { // Convert internal `null` to `undefined` for the public event handler. onSelect?.(selected !== null && selected !== void 0 ? selected : undefined, triggerDate, modifiers, e); }, [onSelect]); const [selected, setSelected] = (0, _hooks.useControlledValue)({ defaultValue: defaultSelected, value: selectedProp, onChange }); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactDayPicker.DayPicker, { ..._constants.COMMON_PROPS, ...localizationProps, ...props, mode: "single", numberOfMonths: (0, _misc.clampNumberOfMonths)(numberOfMonths), selected: selected !== null && selected !== void 0 ? selected : undefined, onSelect: setSelected }); }; exports.DateCalendar = DateCalendar; //# sourceMappingURL=index.js.map