tdesign-vue-next
Version:
TDesign Component for vue-next
168 lines (164 loc) • 6.4 kB
JavaScript
/**
* tdesign v1.19.2
* (c) 2026 tdesign
* @license MIT
*/
import 'vue';
import { isArray, isFunction } from 'lodash-es';
import '@babel/runtime/helpers/toConsumableArray';
import '@babel/runtime/helpers/typeof';
import '../../_chunks/dep-c68ea098.js';
import { useConfig } from '../../config-provider/hooks/useConfig.js';
import '@babel/runtime/helpers/slicedToArray';
import '../../_chunks/dep-91fc762d.js';
import '@babel/runtime/helpers/defineProperty';
import dayjs from 'dayjs';
import { g as getRangeBounds, d as getWeeks, f as getQuarters, h as getMonths, j as getYears, k as flagActive, m as monthHasAnyAllowed, y as yearHasAnyAllowed } from '../../_chunks/dep-43987ea8.js';
import '../../_chunks/dep-f0f392fb.js';
import '../../config-provider/utils/context.js';
import '../../_chunks/dep-509ddbe3.js';
import '@babel/runtime/helpers/createClass';
import '@babel/runtime/helpers/classCallCheck';
import '@babel/runtime/helpers/objectDestructuringEmpty';
import '@babel/runtime/helpers/extends';
import '../../_chunks/dep-4d62a805.js';
import '../../_chunks/dep-4c859e6d.js';
import '../../_chunks/dep-dc276a19.js';
import '../../_chunks/dep-06660d60.js';
function useTableData(props) {
var _props$firstDayOfWeek;
var _useConfig = useConfig("datePicker"),
globalConfig = _useConfig.globalConfig;
var options = {
minDate: props.minDate,
maxDate: props.maxDate,
disableDate: props.disableDate,
firstDayOfWeek: (_props$firstDayOfWeek = props.firstDayOfWeek) !== null && _props$firstDayOfWeek !== void 0 ? _props$firstDayOfWeek : globalConfig.value.firstDayOfWeek,
monthLocal: globalConfig.value.months,
quarterLocal: globalConfig.value.quarters,
showWeekOfYear: props.mode === "week",
dayjsLocale: globalConfig.value.dayjsLocale,
cancelRangeSelectLimit: props.cancelRangeSelectLimit
};
var baseDisableDate = options.disableDate;
var finalDisableDate = function finalDisableDate(date) {
return baseDisableDate ? !!baseDisableDate(date) : false;
};
if (isArray(props.range)) {
var _getRangeBounds = getRangeBounds(props.range),
rawMin = _getRangeBounds.min,
rawMax = _getRangeBounds.max;
var rangeMin = rawMin ? new Date(dayjs(rawMin).startOf("day").format()) : null;
var rangeMax = rawMax ? new Date(dayjs(rawMax).endOf("day").format()) : null;
var min = rangeMin;
var max = rangeMax;
if (["date", "week"].includes(props.mode)) {
if (min) {
options.minDate = options.minDate ? new Date(Math.max(options.minDate.getTime(), min.getTime())) : min;
}
if (max) {
options.maxDate = options.maxDate ? new Date(Math.min(options.maxDate.getTime(), max.getTime())) : max;
}
}
var intervalOverlap = function intervalOverlap(aStart, aEnd, bStart, bEnd) {
var s1 = aStart.getTime();
var e1 = aEnd.getTime();
var s2 = bStart ? bStart.getTime() : -Infinity;
var e2 = bEnd ? bEnd.getTime() : Infinity;
return !(e1 < s2 || s1 > e2);
};
finalDisableDate = function finalDisableDate(date) {
var base = baseDisableDate ? !!baseDisableDate(date) : false;
if (props.mode === "date" || props.mode === "week") {
var t = date.getTime();
var aboveMin = min ? t >= min.getTime() : true;
var belowMax = max ? t <= max.getTime() : true;
var allowed = aboveMin && belowMax;
return base || !allowed;
}
if (props.mode === "month") {
var start = new Date(date.getFullYear(), date.getMonth(), 1);
var end = new Date(date.getFullYear(), date.getMonth() + 1, 0);
end.setHours(23, 59, 59, 999);
var _allowed = intervalOverlap(start, end, min, max);
return base || !_allowed;
}
if (props.mode === "quarter") {
var startMonth = Math.floor(date.getMonth() / 3) * 3;
var _start = new Date(date.getFullYear(), startMonth, 1);
var _end = new Date(date.getFullYear(), startMonth + 3, 0);
_end.setHours(23, 59, 59, 999);
var _allowed2 = intervalOverlap(_start, _end, min, max);
return base || !_allowed2;
}
if (props.mode === "year") {
var _start2 = new Date(date.getFullYear(), 0, 1);
var _end2 = new Date(date.getFullYear(), 11, 31);
_end2.setHours(23, 59, 59, 999);
var _allowed3 = intervalOverlap(_start2, _end2, min, max);
return base || !_allowed3;
}
return base;
};
} else if (isFunction(props.range)) {
var allow = props.range;
finalDisableDate = function finalDisableDate(date) {
var base = baseDisableDate ? !!baseDisableDate(date) : false;
if (props.mode === "date" || props.mode === "week") {
var disallowedByRange = !allow(date);
return base || disallowedByRange;
}
if (props.mode === "month") {
var allowed = monthHasAnyAllowed(props.range, date.getFullYear(), date.getMonth());
return base || !allowed;
}
if (props.mode === "quarter") {
var startMonth = Math.floor(date.getMonth() / 3) * 3;
var _allowed4 = false;
for (var m = startMonth; m < startMonth + 3; m++) {
if (monthHasAnyAllowed(props.range, date.getFullYear(), m)) {
_allowed4 = true;
break;
}
}
return base || !_allowed4;
}
if (props.mode === "year") {
var _allowed5 = yearHasAnyAllowed(props.range, date.getFullYear());
return base || !_allowed5;
}
return base;
};
}
options.disableDate = finalDisableDate;
var data = [];
if (props.mode === "date") {
data = getWeeks({
year: props.year,
month: props.month
}, options);
} else if (props.mode === "week") {
data = getWeeks({
year: props.year,
month: props.month
}, options);
} else if (props.mode === "quarter") {
data = getQuarters(props.year, options);
} else if (props.mode === "month") {
data = getMonths(props.year, options);
} else if (props.mode === "year") {
data = getYears(props.year, options);
}
return flagActive(data, {
start: props.start,
end: props.end,
hoverStart: props.hoverStart,
hoverEnd: props.hoverEnd,
type: props.mode,
isRange: props.isRange,
value: props.value,
multiple: props.multiple
});
}
export { useTableData };
//# sourceMappingURL=useTableData.js.map