@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
JavaScript
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
};