UNPKG

@hitachivantara/uikit-react-core

Version:
77 lines (76 loc) 2.52 kB
import { HvFormElementValueContext } from "../FormElement/context.js"; import { useClasses } from "./Calendar.styles.js"; import { isRange } from "./utils.js"; import { HvSingleCalendar } from "./SingleCalendar/SingleCalendar.js"; import { useDefaultProps } from "@hitachivantara/uikit-react-utils"; import { useContext } from "react"; import { jsx, jsxs } from "react/jsx-runtime"; //#region src/Calendar/Calendar.tsx var HvCalendar = (props) => { const { classes: classesProp, id, locale = "en", value: valueProp, visibleMonth, visibleYear, rightVisibleMonth, rightVisibleYear, minimumDate, maximumDate, startAdornment, onChange, onInputChange, onVisibleDateChange, invalidDateLabel, ...others } = useDefaultProps("HvCalendar", props); const { classes } = useClasses(classesProp); const elementValue = useContext(HvFormElementValueContext); const value = valueProp ?? elementValue; const rangeMode = isRange(value); const clampedMonth = visibleMonth && visibleMonth % 13 > 0 ? visibleMonth % 13 : 1; const singleCalendar = /* @__PURE__ */ jsx(HvSingleCalendar, { id, locale, value, visibleMonth: clampedMonth, visibleYear, minimumDate, maximumDate, onChange, onInputChange: (evt, date) => { onInputChange?.(evt, date, "left"); }, onVisibleDateChange, invalidDateLabel, ...others }); const rangeCalendar = /* @__PURE__ */ jsxs("div", { className: classes.rangeCalendarContainer, children: [/* @__PURE__ */ jsx(HvSingleCalendar, { className: classes.singleCalendar, id, locale, value, visibleMonth: clampedMonth, visibleYear, minimumDate, maximumDate, onChange, onInputChange: (evt, date) => { onInputChange?.(evt, date, "left"); }, onVisibleDateChange: (event, action, index) => onVisibleDateChange?.(event, action, index, "left"), invalidDateLabel, ...others }), /* @__PURE__ */ jsx(HvSingleCalendar, { className: classes.singleCalendar, locale, value, visibleMonth: rightVisibleMonth, visibleYear: rightVisibleYear, minimumDate, maximumDate, onChange, onInputChange: (evt, date) => { onInputChange?.(evt, date, "right"); }, onVisibleDateChange: (event, action, index) => { onVisibleDateChange?.(event, action, index, "right"); }, showEndDate: true, invalidDateLabel, ...others })] }); return /* @__PURE__ */ jsxs("div", { className: classes.root, children: [startAdornment, rangeMode ? rangeCalendar : singleCalendar] }); }; //#endregion export { HvCalendar };