UNPKG

@mantine/dates

Version:

Calendars, date and time pickers based on Mantine components

36 lines (35 loc) 1.3 kB
"use client"; import { toDateString, toDateTimeString } from "../../utils/to-date-string/to-date-string.mjs"; import { useRef } from "react"; import { useUncontrolled } from "@mantine/hooks"; //#region packages/@mantine/dates/src/hooks/use-uncontrolled-dates/use-uncontrolled-dates.ts const getEmptyValue = (type) => type === "range" ? [null, null] : type === "multiple" ? [] : null; const convertDatesValue = (value, withTime) => { const converter = withTime ? toDateTimeString : toDateString; return Array.isArray(value) ? value.map(converter) : converter(value); }; function useUncontrolledDates({ type, value, defaultValue, onChange, withTime = false }) { const storedType = useRef(type); const [_value, _setValue, controlled] = useUncontrolled({ value: convertDatesValue(value, withTime), defaultValue: convertDatesValue(defaultValue, withTime), finalValue: getEmptyValue(type), onChange }); let _finalValue = _value; if (storedType.current !== type) { storedType.current = type; if (value === void 0) { _finalValue = defaultValue !== void 0 ? defaultValue : getEmptyValue(type); _setValue(_finalValue); } } return [ _finalValue, _setValue, controlled ]; } //#endregion export { useUncontrolledDates }; //# sourceMappingURL=use-uncontrolled-dates.mjs.map