UNPKG

@varlet/ui

Version:

A Vue3 component library based on Material Design 2 and 3, supporting mobile and desktop.

81 lines (80 loc) 3.19 kB
import { toNumber } from "@varlet/shared"; import { hours24, hoursAmpm } from "./props.mjs"; const notConvert = (format, ampm) => format === "24hr" || ampm === "am"; const convertHour = (format, ampm, hour) => { const index = hoursAmpm.findIndex((hourAmpm) => toNumber(hourAmpm) === toNumber(hour)); const getHour = notConvert(format, ampm) ? hour : hours24[index]; return { hourStr: getHour, hourNum: toNumber(getHour) }; }; const getNumberTime = (time) => { const [hour, minute, second] = time.split(":"); return { hour: toNumber(hour), minute: toNumber(minute), second: toNumber(second) }; }; const getIsDisableMinute = (values) => { var _a, _b; const { time, format, ampm, hour, max, min, disableHour } = values; const { hourStr, hourNum } = convertHour(format, ampm, hour); let isBetweenMinMax = false; let isAllow = false; if (disableHour.includes(hourStr)) { return true; } if (max && !min) { const { hour: maxHour, minute: maxMinute } = getNumberTime(max); isBetweenMinMax = maxHour === hourNum && time > maxMinute; } if (!max && min) { const { hour: minHour, minute: minMinute } = getNumberTime(min); isBetweenMinMax = minHour === hourNum && time < minMinute; } if (max && min) { const { hour: maxHour, minute: maxMinute } = getNumberTime(max); const { hour: minHour, minute: minMinute } = getNumberTime(min); isBetweenMinMax = minHour === hourNum && time < minMinute || maxHour === hourNum && time > maxMinute; } if ((_a = values.allowedTime) == null ? void 0 : _a.minutes) { isAllow = (_b = values.allowedTime) == null ? void 0 : _b.minutes(time); } return isBetweenMinMax || isAllow; }; const getIsDisableSecond = (values) => { var _a, _b; const { time, format, ampm, hour, minute, max, min, disableHour } = values; const { hourStr, hourNum } = convertHour(format, ampm, hour); let isBetweenMinMax = false; let isAllow = false; if (disableHour.includes(hourStr)) { return true; } if (max && !min) { const { hour: maxHour, minute: maxMinute, second: maxSecond } = getNumberTime(max); isBetweenMinMax = maxHour === hourNum && maxMinute < minute || maxMinute === minute && time > maxSecond; } if (!max && min) { const { hour: minHour, minute: minMinute, second: minSecond } = getNumberTime(min); isBetweenMinMax = minHour === hourNum && minMinute > minute || minMinute === minute && time > minSecond; } if (max && min) { const { hour: maxHour, minute: maxMinute, second: maxSecond } = getNumberTime(max); const { hour: minHour, minute: minMinute, second: minSecond } = getNumberTime(min); isBetweenMinMax = maxHour === hourNum && maxMinute < minute || minHour === hourNum && minMinute > minute || maxHour === hourNum && maxMinute === minute && time > maxSecond || minHour === hourNum && minMinute === minute && time < minSecond; } if ((_a = values.allowedTime) == null ? void 0 : _a.seconds) { isAllow = (_b = values.allowedTime) == null ? void 0 : _b.seconds(time); } return isBetweenMinMax || isAllow; }; export { convertHour, getIsDisableMinute, getIsDisableSecond, getNumberTime, notConvert };