taro-ui-vue3
Version:
Taro UI Rewritten in Vue 3.0
51 lines (50 loc) • 1.72 kB
JavaScript
import dayjs from "dayjs/esm/index";
import _isEmpty from "lodash-es/isEmpty";
function handleActive(args, item) {
const {selectedDate} = args;
const {_value} = item;
const {start, end} = selectedDate;
const dayjsEnd = dayjs(end);
const dayjsStart = start ? dayjs(start) : dayjsEnd;
item.isSelected = _value.isSame(dayjsEnd) || _value.isSame(dayjsStart) || _value.isAfter(dayjsStart) && _value.isBefore(dayjsEnd);
item.isSelectedHead = _value.isSame(dayjsStart);
item.isSelectedTail = _value.isSame(dayjsEnd);
item.isToday = _value.diff(dayjs(Date.now()).startOf("day"), "day") === 0;
return item;
}
function handleMarks(args, item) {
const {options} = args;
const {_value} = item;
const {marks} = options;
const markList = marks.filter((mark) => dayjs(mark.value).startOf("day").isSame(_value));
item.marks = markList.slice(0, 1);
return item;
}
function handleDisabled(args, item) {
const {options} = args;
const {_value} = item;
const {minDate, maxDate} = options;
const dayjsMinDate = dayjs(minDate);
const dayjsMaxDate = dayjs(maxDate);
item.isDisabled = !!(minDate && _value.isBefore(dayjsMinDate)) || !!(maxDate && _value.isAfter(dayjsMaxDate));
return item;
}
function handleValid(args, item) {
const {options} = args;
const {_value} = item;
const {validDates} = options;
if (!_isEmpty(validDates)) {
const isInclude = validDates.some((date) => dayjs(date.value).startOf("day").isSame(_value));
item.isDisabled = !isInclude;
}
delete item._value;
return item;
}
var plugins_default = [handleActive, handleMarks, handleDisabled, handleValid];
export {
plugins_default as default,
handleActive,
handleDisabled,
handleMarks,
handleValid
};