tdesign-vue
Version:
155 lines (151 loc) • 7.65 kB
JavaScript
/**
* tdesign v1.14.1
* (c) 2025 tdesign
* @license MIT
*/
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import { defineComponent, computed } from '@vue/composition-api';
import { isArray } from 'lodash-es';
import TDatePickerCell from './Cell.js';
import { usePrefixClass } from '../../hooks/useConfig.js';
import { parseToDayjs } from '../../_common/js/date-picker/format.js';
import { useConfig } from '../../config-provider/useConfig.js';
import '../../_common/js/date-picker/utils.js';
import '@babel/runtime/helpers/objectDestructuringEmpty';
import '@babel/runtime/helpers/extends';
import 'dayjs';
import '../../_chunks/dep-fdb1b253.js';
import '../../_chunks/dep-84c94da7.js';
import '../../_chunks/dep-655d809c.js';
import '../../_common/js/log/log.js';
import '../../config-provider/context.js';
import '../../_common/js/global-config/default-config.js';
import '../../_common/js/global-config/locale/zh_CN.js';
import '../../_chunks/dep-ba613a02.js';
import '@babel/runtime/helpers/typeof';
import '../../_common/js/global-config/t.js';
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(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 = defineComponent({
name: "TDatePickerTable",
props: {
mode: {
type: String,
"default": "date"
},
firstDayOfWeek: Number,
multiple: Boolean,
data: Array,
time: String,
value: [String, Number, Array, Date],
format: String,
onCellClick: Function,
onCellMouseEnter: Function,
onCellMouseLeave: Function
},
setup: function setup(props) {
var COMPONENT_NAME = usePrefixClass("date-picker__table");
var _useConfig = useConfig("datePicker"),
global = _useConfig.global;
var _global$value = global.value,
weekdays = _global$value.weekdays,
weekAbbreviation = _global$value.weekAbbreviation,
dayjsLocale = _global$value.dayjsLocale;
var weekArr = computed(function () {
var _weekArr = [];
var wi = props.firstDayOfWeek - 1;
var len = weekdays.length;
while (_weekArr.length < len) {
_weekArr.push(weekdays[wi]);
wi = (wi + len + 1) % len;
}
if (props.mode === "week") _weekArr.unshift(weekAbbreviation);
return _weekArr;
});
var showThead = computed(function () {
return props.mode === "date" || props.mode === "week";
});
var weekRowClass = function weekRowClass(value, targetValue) {
if (props.mode !== "week" || !value) return {};
if (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 && parseToDayjs(v, props.format);
}),
_value$map2 = _slicedToArray(_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 = 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(_defineProperty({}, "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--active"), isActive), "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--range"), isRange);
}
return _defineProperty({}, "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--active"), parseToDayjs(value, props.format).locale(dayjsLocale).week() === parseToDayjs(targetValue, props.format).locale(dayjsLocale).week());
};
var multipleWeekRowClass = function multipleWeekRowClass(value, targetValue) {
var _value$map3;
var targetDayjs = 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 parseToDayjs(v, props.format);
}).some(function (item) {
return item.week() === targetDayjs.week() && item.year() === targetDayjs.year();
});
return _defineProperty({}, "".concat(COMPONENT_NAME.value, "-").concat(props.mode, "-row--active"), isSomeYearWeek);
};
var activeRowCss = props.multiple ? multipleWeekRowClass : weekRowClass;
return {
COMPONENT_NAME: COMPONENT_NAME,
weekArr: weekArr,
showThead: showThead,
activeRowCss: activeRowCss
};
},
render: function render() {
var _this = this;
var h = arguments[0];
var COMPONENT_NAME = this.COMPONENT_NAME,
weekArr = this.weekArr,
showThead = this.showThead,
activeRowCss = this.activeRowCss;
return h("div", {
"class": COMPONENT_NAME,
"on": {
"mouseleave": function mouseleave(e) {
var _this$onCellMouseLeav;
return (_this$onCellMouseLeav = _this.onCellMouseLeave) === null || _this$onCellMouseLeav === void 0 ? void 0 : _this$onCellMouseLeav.call(_this, {
e: e
});
}
}
}, [h("table", [showThead && h("thead", [h("tr", [weekArr.map(function (value, i) {
return h("th", {
"key": i
}, [value]);
})])]), h("tbody", [this.data.map(function (row, i) {
return h("tr", {
"key": i,
"class": _objectSpread(_defineProperty({}, "".concat(COMPONENT_NAME, "-").concat(_this.mode, "-row"), true), activeRowCss(_this.value, row[0].value))
}, [row.map(function (col, j) {
return h(TDatePickerCell, {
"key": j,
"props": _objectSpread({}, _objectSpread({
time: _this.time,
onClick: _this.onCellClick,
onMouseEnter: _this.onCellMouseEnter
}, col))
});
})]);
})])])]);
}
});
export { TDateTable as default };
//# sourceMappingURL=Table.js.map