element-plus
Version:
A Component Library for Vue 3
52 lines (50 loc) • 1.47 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
//#region ../../packages/components/time-picker/src/composables/use-time-panel.ts
const useTimePanel = ({ getAvailableHours, getAvailableMinutes, getAvailableSeconds }) => {
const getAvailableTime = (date, role, first, compareDate) => {
const availableTimeGetters = {
hour: getAvailableHours,
minute: getAvailableMinutes,
second: getAvailableSeconds
};
let result = date;
[
"hour",
"minute",
"second"
].forEach((type) => {
if (availableTimeGetters[type]) {
let availableTimeSlots;
const method = availableTimeGetters[type];
switch (type) {
case "minute":
availableTimeSlots = method(result.hour(), role, compareDate);
break;
case "second":
availableTimeSlots = method(result.hour(), result.minute(), role, compareDate);
break;
default:
availableTimeSlots = method(role, compareDate);
break;
}
if (availableTimeSlots?.length && !availableTimeSlots.includes(result[type]())) {
const pos = first ? 0 : availableTimeSlots.length - 1;
result = result[type](availableTimeSlots[pos]);
}
}
});
return result;
};
const timePickerOptions = {};
const onSetOption = ([key, val]) => {
timePickerOptions[key] = val;
};
return {
timePickerOptions,
getAvailableTime,
onSetOption
};
};
//#endregion
exports.useTimePanel = useTimePanel;
//# sourceMappingURL=use-time-panel.js.map