tdesign-vue-next
Version:
TDesign Component for vue-next
188 lines (180 loc) • 9.89 kB
JavaScript
/**
* tdesign v1.19.2
* (c) 2026 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var Vue = require('vue');
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
var datePicker_components_base_Cell = require('./Cell.js');
require('@babel/runtime/helpers/toConsumableArray');
require('@babel/runtime/helpers/typeof');
require('../../../_chunks/dep-35e23c2b.js');
var index = require('../../../_chunks/dep-0238ed9a.js');
require('../../../_chunks/dep-0989c3be.js');
var format = require('../../../_chunks/dep-4d6191e3.js');
var isArray = require('../../../_chunks/dep-4cb26289.js');
var configProvider_hooks_useConfig = require('../../../config-provider/hooks/useConfig.js');
require('../../../_chunks/dep-1862d466.js');
require('../../../_chunks/dep-8d990e66.js');
require('../../../_chunks/dep-2dcf9237.js');
require('../../../_chunks/dep-22dc294c.js');
require('../../../_chunks/dep-bf76dead.js');
require('../../../_chunks/dep-631750cd.js');
require('../../../_chunks/dep-a6551cc4.js');
require('../../../_chunks/dep-7d9abefd.js');
require('../../../_chunks/dep-2fb8d44f.js');
require('../../../_chunks/dep-80a41429.js');
require('../../../_chunks/dep-91305690.js');
require('../../../_chunks/dep-0b92e695.js');
require('../../../_chunks/dep-b2024592.js');
require('../../../_chunks/dep-9f98bf9b.js');
require('../../../_chunks/dep-1035a9b6.js');
require('@babel/runtime/helpers/objectDestructuringEmpty');
require('@babel/runtime/helpers/extends');
require('dayjs');
require('../../../_chunks/dep-4a7162e7.js');
require('../../../_chunks/dep-58022b88.js');
require('../../../_chunks/dep-9bee89d3.js');
require('../../../_chunks/dep-027cd76f.js');
require('../../../_chunks/dep-484d5d62.js');
require('../../../_chunks/dep-7076a08a.js');
require('../../../_chunks/dep-c3bbd06c.js');
require('../../../_chunks/dep-f8f7b1af.js');
require('../../../_chunks/dep-66d3f30f.js');
require('../../../_chunks/dep-be1af85d.js');
require('../../../_chunks/dep-db9c85b1.js');
require('../../../_chunks/dep-82fe2026.js');
require('../../../_chunks/dep-33b46a52.js');
require('../../../_chunks/dep-930a2de5.js');
require('../../../_chunks/dep-6d87f74d.js');
require('../../../_chunks/dep-281f7eb2.js');
require('../../../_chunks/dep-e1d22111.js');
require('../../../_chunks/dep-754c0523.js');
require('@babel/runtime/helpers/createClass');
require('@babel/runtime/helpers/classCallCheck');
require('../../../_chunks/dep-692bdebe.js');
require('../../../_chunks/dep-2fc884aa.js');
require('../../../_chunks/dep-75d6da05.js');
require('../../../_chunks/dep-274369eb.js');
require('../../../_chunks/dep-df6e14a0.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var TDateTable = Vue.defineComponent({
name: "TDatePickerTable",
props: {
mode: {
type: String,
"default": "date"
},
value: [String, Number, Array, Date],
format: String,
firstDayOfWeek: Number,
multiple: Boolean,
data: Array,
time: String,
onCellClick: Function,
onCellMouseEnter: Function,
onCellMouseLeave: Function,
cell: {
type: Function
}
},
setup: function setup(props, _ref) {
var slots = _ref.slots;
var COMPONENT_NAME = index.usePrefixClass("date-picker__table");
var _useConfig = configProvider_hooks_useConfig.useConfig("datePicker"),
globalConfig = _useConfig.globalConfig;
var dayjsLocale = globalConfig.value.dayjsLocale;
var weekArr = Vue.computed(function () {
var weekArr2 = [];
var wi = props.firstDayOfWeek - 1;
var len = globalConfig.value.weekdays.length;
while (weekArr2.length < len) {
weekArr2.push(globalConfig.value.weekdays[wi]);
wi = (wi + len + 1) % len;
}
if (props.mode === "week") weekArr2.unshift(globalConfig.value.weekAbbreviation);
return weekArr2;
});
var showThead = Vue.computed(function () {
return props.mode === "date" || props.mode === "week";
});
var weekRowClass = function weekRowClass(value, targetValue) {
if (props.mode !== "week" || !value) return {};
if (isArray.isArray(value)) {
var _startObj$locale, _startObj$locale$week, _endObj$locale, _endObj$locale$week;
if (!value.length) return {};
var _value$map = value.map(function (v) {
return v && format.parseToDayjs(v, props.format);
}),
_value$map2 = _slicedToArray__default["default"](_value$map, 2),
startObj = _value$map2[0],
endObj = _value$map2[1];
var startYear = startObj && startObj.year();
var startWeek = startObj === null || startObj === void 0 || (_startObj$locale = startObj.locale) === null || _startObj$locale === void 0 || (_startObj$locale = _startObj$locale.call(startObj, dayjsLocale)) === null || _startObj$locale === void 0 || (_startObj$locale$week = _startObj$locale.week) === null || _startObj$locale$week === void 0 ? void 0 : _startObj$locale$week.call(_startObj$locale);
var endYear = endObj && endObj.year();
var endWeek = endObj === null || endObj === void 0 || (_endObj$locale = endObj.locale) === null || _endObj$locale === void 0 || (_endObj$locale = _endObj$locale.call(endObj, dayjsLocale)) === null || _endObj$locale === void 0 || (_endObj$locale$week = _endObj$locale.week) === null || _endObj$locale$week === void 0 ? void 0 : _endObj$locale$week.call(_endObj$locale);
var targetObj = format.parseToDayjs(targetValue, props.format);
var targetYear = targetObj.year();
var targetWeek = targetObj.week();
var isActive = targetYear === startYear && targetWeek === startWeek || targetYear === endYear && targetWeek === endWeek;
var isRange = targetYear >= startYear && targetYear <= endYear && targetWeek > startWeek && targetWeek < endWeek;
return _defineProperty__default["default"](_defineProperty__default["default"]({}, "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--active"), isActive), "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--range"), isRange);
}
var valueDayjs = format.parseToDayjs(value, props.format).locale(dayjsLocale);
var targetDayjs = format.parseToDayjs(targetValue, props.format).locale(dayjsLocale);
return _defineProperty__default["default"]({}, "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--active"), valueDayjs.year() === targetDayjs.year() && valueDayjs.week() === targetDayjs.week());
};
var multipleWeekRowClass = function multipleWeekRowClass(value, targetValue) {
var _value$map3;
var targetDayjs = format.parseToDayjs(targetValue, props.format);
if (props.mode !== "week" || Array.isArray(value) && !value.length) return {};
var isSomeYearWeek = (_value$map3 = value.map) === null || _value$map3 === void 0 ? void 0 : _value$map3.call(value, function (v) {
return format.parseToDayjs(v, props.format);
}).some(function (item) {
return item.week() === targetDayjs.week() && item.year() === targetDayjs.year();
});
return _defineProperty__default["default"]({}, "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--active"), isSomeYearWeek);
};
var activeRowCss = props.multiple ? multipleWeekRowClass : weekRowClass;
return function () {
return Vue.createVNode("div", {
"class": COMPONENT_NAME.value,
"onMouseleave": function onMouseleave(e) {
var _props$onCellMouseLea;
return (_props$onCellMouseLea = props.onCellMouseLeave) === null || _props$onCellMouseLea === void 0 ? void 0 : _props$onCellMouseLea.call(props, {
e: e
});
}
}, [Vue.createVNode("table", null, [showThead.value && Vue.createVNode("thead", null, [Vue.createVNode("tr", {
"class": "".concat(COMPONENT_NAME.value, "-header-row")
}, [weekArr.value.map(function (value, i) {
return Vue.createVNode("th", {
"class": "".concat(COMPONENT_NAME.value, "-header-cell"),
"key": i
}, [value]);
})])]), Vue.createVNode("tbody", null, [props.data.map(function (row, i) {
return Vue.createVNode("tr", {
"key": i,
"class": _objectSpread(_defineProperty__default["default"]({}, "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row"), true), activeRowCss(props.value, row[0].value))
}, [row.map(function (col, j) {
return Vue.createVNode(datePicker_components_base_Cell["default"], Vue.mergeProps(col, {
"key": j,
"time": props.time,
"onClick": props.onCellClick,
"onMouseEnter": props.onCellMouseEnter,
"cell": props.cell
}), slots);
})]);
})])])]);
};
}
});
exports["default"] = TDateTable;
//# sourceMappingURL=Table.js.map