UNPKG

zent

Version:

一套前端设计语言和基于React的实现

102 lines (101 loc) 4.12 kB
import { __spreadArray } from "tslib"; import { endOfDay, isAfter, isBefore, isSameDay, startOfDay } from 'date-fns'; import { RangeTypeMap, } from './types'; var initArray = function (targetNum) { return Array.from({ length: targetNum }, function (_, index) { return index; }); }; var initRangeArray = function (start, end) { return Array.from({ length: end - start }, function (_, index) { return end - index; }); }; export var disabledTimeWithMin = function (date, min) { var hour = min.getHours(); var minute = min.getMinutes(); var second = min.getSeconds(); var isSame = isSameDay(date, min); return isSame ? { disabledHours: function () { return initArray(hour); }, disabledMinutes: function (hourValue) { return hourValue === hour ? initArray(minute) : []; }, disabledSeconds: function (hourValue, minuteValue) { return hourValue === hour && minuteValue === minute ? initArray(second) : []; }, } : {}; }; export var disabledTimeWithMax = function (date, max) { var hour = max.getHours(); var minute = max.getMinutes(); var second = max.getSeconds(); var isSame = isSameDay(date, max); return isSame ? { disabledHours: function () { return initRangeArray(hour, 23); }, disabledMinutes: function (hourValue) { return hourValue === hour ? initRangeArray(minute, 59) : []; }, disabledSeconds: function (hourValue, minuteValue) { return hourValue === hour && minuteValue === minute ? initRangeArray(second, 59) : []; }, } : {}; }; export var disabledTimeWithRange = function (date, range) { var min = range[0], max = range[1]; if (min && !max) { return disabledTimeWithMin(date, min); } if (max && !min) { return disabledTimeWithMax(date, max); } var minHour = min.getHours(); var minMinute = min.getMinutes(); var minSecond = min.getSeconds(); var maxHour = max.getHours(); var maxMinute = max.getMinutes(); var maxSecond = max.getSeconds(); var isMinSame = isSameDay(date, min); var isMaxSame = isSameDay(date, max); return { disabledHours: function () { var minDisabledHours = isMinSame ? initArray(minHour) : []; var maxDisabledHours = isMaxSame ? initRangeArray(maxHour, 23) : []; return __spreadArray(__spreadArray([], minDisabledHours), maxDisabledHours); }, disabledMinutes: function (hourValue) { var minDisabledMinutes = isMinSame && hourValue === minHour ? initArray(minMinute) : []; var maxDisabledMinutes = isMaxSame && hourValue === maxHour ? initRangeArray(maxMinute, 59) : []; return __spreadArray(__spreadArray([], minDisabledMinutes), maxDisabledMinutes); }, disabledSeconds: function (hourValue, minuteValue) { var minDisabledSeconds = isMinSame && hourValue === minHour && minuteValue === minMinute ? initArray(minSecond) : []; var maxDisabledSeconds = isMaxSame && hourValue === maxHour && minuteValue === maxMinute ? initRangeArray(maxSecond, 59) : []; return __spreadArray(__spreadArray([], minDisabledSeconds), maxDisabledSeconds); }, }; }; export var disabledDateWithRange = function (range) { var min = range[0], max = range[1]; return function (date) { return (!!min && isBefore(endOfDay(date), min)) || (!!max && isAfter(startOfDay(date), max)); }; }; export var getDisabledDateAndTimeWithRangeProps = function (range) { var min = range[0], max = range[1]; return { disabledDate: disabledDateWithRange(range), disabledTime: function (date, type) { return type === RangeTypeMap.START ? disabledTimeWithMin(date, min) : disabledTimeWithMax(date, max); }, }; };