UNPKG

@mantine/dates

Version:

Calendars, date and time pickers based on Mantine components

110 lines (109 loc) 3.75 kB
"use client"; import { useDatesState } from "../../hooks/use-dates-state/use-dates-state.mjs"; import { Calendar } from "../Calendar/Calendar.mjs"; import { pickCalendarProps } from "../Calendar/pick-calendar-levels-props/pick-calendar-levels-props.mjs"; import YearPicker_module_default from "./YearPicker.module.mjs"; import { useRef } from "react"; import { jsx, jsxs } from "react/jsx-runtime"; import { Box, UnstyledButton, createVarsResolver, factory, getFontSize, useProps, useResolvedStylesApi, useStyles } from "@mantine/core"; //#region packages/@mantine/dates/src/components/YearPicker/YearPicker.tsx const varsResolver = createVarsResolver((_, { size }) => ({ yearPickerRoot: { "--preset-font-size": getFontSize(size) } })); const defaultProps = { type: "default" }; const YearPicker = factory((_props) => { const props = useProps("YearPicker", defaultProps, _props); const { classNames, styles, vars, type, defaultValue, value, onChange, __staticSelector, getYearControlProps, allowSingleDateInRange, allowDeselect, onMouseLeave, onYearSelect, __updateDateOnYearSelect, __onPresetSelect, __stopPropagation, presets, className, style, unstyled, size, attributes, ...rest } = props; const { calendarProps, others } = pickCalendarProps(rest); const setDateRef = useRef(null); const setLevelRef = useRef(null); const getStyles = useStyles({ name: __staticSelector || "YearPicker", classes: YearPicker_module_default, props, className, style, classNames, styles, unstyled, attributes, rootSelector: presets ? "yearPickerRoot" : void 0, varsResolver, vars }); const { onDateChange, onRootMouseLeave, onHoveredDateChange, getControlProps, setValue } = useDatesState({ type, level: "year", allowDeselect, allowSingleDateInRange, value, defaultValue, onChange, onMouseLeave }); const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({ classNames, styles, props }); const calendar = /* @__PURE__ */ jsx(Calendar, { classNames: resolvedClassNames, styles: resolvedStyles, size, ...calendarProps, ...!presets ? others : {}, minLevel: "decade", __updateDateOnYearSelect: __updateDateOnYearSelect ?? false, __staticSelector: __staticSelector || "YearPicker", onMouseLeave: onRootMouseLeave, onYearMouseEnter: (_event, date) => onHoveredDateChange(date), onYearSelect: (date) => { onDateChange(date); onYearSelect?.(date); }, getYearControlProps: (date) => ({ ...getControlProps(date), ...getYearControlProps?.(date) }), __setDateRef: setDateRef, __setLevelRef: setLevelRef, __stopPropagation, attributes, ...!presets ? { className, style } : {} }); if (!presets) return calendar; const handlePresetSelect = (val) => { const _val = Array.isArray(val) ? val[0] : val; if (_val !== void 0) { setDateRef.current?.(_val); setLevelRef.current?.("decade"); __onPresetSelect ? __onPresetSelect(val) : setValue(val); } }; const presetButtons = presets.map((preset, index) => /* @__PURE__ */ jsx(UnstyledButton, { ...getStyles("presetButton"), onClick: () => handlePresetSelect(preset.value), onMouseDown: (event) => event.preventDefault(), "data-mantine-stop-propagation": __stopPropagation || void 0, children: preset.label }, index)); return /* @__PURE__ */ jsxs(Box, { ...getStyles("yearPickerRoot"), size, ...others, children: [/* @__PURE__ */ jsx("div", { ...getStyles("presetsList"), children: presetButtons }), calendar] }); }); YearPicker.classes = { ...Calendar.classes, ...YearPicker_module_default }; YearPicker.varsResolver = varsResolver; YearPicker.displayName = "@mantine/dates/YearPicker"; //#endregion export { YearPicker }; //# sourceMappingURL=YearPicker.mjs.map