@wordpress/components
Version:
UI components for WordPress.
69 lines (65 loc) • 2.1 kB
JavaScript
;
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