@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
77 lines (76 loc) • 2.52 kB
JavaScript
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 };