xdesign-vue-next
Version:
XDesign Component for vue-next
67 lines (63 loc) • 2.26 kB
JavaScript
/**
* xdesign v1.0.6
* (c) 2023 xdesign
* @license MIT
*/
import dayjs from 'dayjs';
import isArray from 'lodash/isArray';
import isFunction from 'lodash/isFunction';
import isObject from 'lodash/isObject';
function useDisableDate(props) {
return {
disableDate: function disableDate(value) {
return !isEnabled({
disableDate: props.disableDate,
format: props.format,
mode: props.mode,
value: value
});
},
minDate: isObject(props.disableDate) && "before" in props.disableDate ? new Date(props.disableDate.before) : props.start,
maxDate: isObject(props.disableDate) && "after" in props.disableDate ? new Date(props.disableDate.after) : props.end
};
}
function isEnabled(props) {
if (!props.disableDate) return true;
var isEnabled2 = true;
if (isFunction(props.disableDate)) {
return !props.disableDate(props.value);
}
if (isArray(props.disableDate)) {
var isIncludes = false;
var formatedDisabledDate = props.disableDate.map(function (item) {
return dayjs(item, props.format);
});
formatedDisabledDate.forEach(function (item) {
if (item.isSame(dayjs(props.value))) {
isIncludes = true;
}
});
return !isIncludes;
}
if (props.disableDate.from && props.disableDate.to) {
var compareMin = dayjs(new Date(props.disableDate.from));
var compareMax = dayjs(new Date(props.disableDate.to));
return !dayjs(props.value).isBetween(compareMin, compareMax, props.mode, "[]");
}
var min = props.disableDate.before ? new Date(props.disableDate.before) : null;
var max = props.disableDate.after ? new Date(props.disableDate.after) : null;
if (max && min) {
var _compareMin = dayjs(new Date(min));
var _compareMax = dayjs(new Date(max));
isEnabled2 = dayjs(props.value).isBetween(_compareMin, _compareMax, props.mode, "[]");
} else if (min) {
var _compareMin2 = dayjs(new Date(min));
isEnabled2 = !dayjs(props.value).isBefore(_compareMin2, props.mode);
} else if (max) {
var _compareMax2 = dayjs(new Date(max));
isEnabled2 = !dayjs(props.value).isAfter(_compareMax2, props.mode);
}
return isEnabled2;
}
export { useDisableDate as default };
//# sourceMappingURL=useDisableDate.js.map