jiaqingjiayi-xiaochengxu/甲情_甲意/miniprogram/node_modules/antd-mini/es/DatePicker/index.js

197 lines
8.3 KiB
JavaScript
Raw Normal View History

2024-11-10 07:01:22 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var props_1 = require("./props");
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
var fast_deep_equal_1 = tslib_1.__importDefault(require("fast-deep-equal"));
var util_1 = require("./util");
var fmtEvent_1 = tslib_1.__importDefault(require("../_util/fmtEvent"));
var value_1 = tslib_1.__importDefault(require("../mixins/value"));
var component2 = my.canIUse('component2');
Component({
props: props_1.DatePickerDefaultProps,
pickerVisible: false,
data: function () {
return {
currentValue: [],
columns: [],
forceUpdate: 0, // 强制更新picker组件已知需处理的情况value超限但是需要更新format由于picker的参数均未变化无法触发picker的渲染
};
},
mixins: [
(0, value_1.default)({
transformValue: function (value) {
return {
value: value ? (0, dayjs_1.default)(value).toDate() : undefined,
needUpdate: true,
};
},
}),
],
didMount: function () {
this.pickerVisible = false;
},
deriveDataFromProps: function (nextProps) {
this.updateValue(this.props, nextProps);
},
didUpdate: function (prevProps) {
if (!component2) {
this.updateValue(prevProps, this.props);
}
},
methods: {
updateValue: function (prevProps, currentProps) {
if (!(0, util_1.isEqualDate)(prevProps.value, currentProps.value)) {
this.setData({
forceUpdate: this.data.forceUpdate + 1,
});
// 展开状态才更新picker的数据否则下次triggerVisible触发
if (this.pickerVisible) {
this.setCurrentValue(currentProps);
}
}
},
// 当前选中的picker值处理无cValue时的情况优先取当前时间不在时间范围内取开始时间
getCurrentValueWithCValue: function (currentProps) {
var realValue = this.getValue();
var min = currentProps.min, max = currentProps.max, precision = currentProps.precision;
if (realValue) {
return (0, util_1.getValueByDate)(realValue, precision);
}
else {
var now = new Date();
if (!(min && (0, dayjs_1.default)(now).isBefore((0, dayjs_1.default)(min))) &&
!(max && (0, dayjs_1.default)(now).isAfter((0, dayjs_1.default)(max)))) {
return (0, util_1.getValueByDate)(now, precision);
}
else {
return (0, util_1.getValueByDate)(this.getMin(min).toDate(), precision);
}
}
},
getMin: function (min) {
return min ? (0, dayjs_1.default)(min) : (0, dayjs_1.default)().subtract(10, 'year');
},
getMax: function (max) {
return max ? (0, dayjs_1.default)(max) : (0, dayjs_1.default)().add(10, 'year');
},
/**
* didUpdate弹窗打开触发
*/
setCurrentValue: function (currentProps) {
var _this = this;
var currentValue = this.getCurrentValueWithCValue(currentProps);
var newColumns = this.generateData(currentValue, currentProps);
if (!(0, fast_deep_equal_1.default)(newColumns, this.data.columns)) {
this.setData({
columns: newColumns,
}, function () {
_this.setData({
currentValue: currentValue,
});
});
}
else {
this.setData({
currentValue: currentValue,
});
}
},
// 生成选项数据didmound、picker change、打开弹窗触发
generateData: function (currentValue, currentProps) {
var precision = currentProps.precision, propsMin = currentProps.min, propsMax = currentProps.max;
var min = this.getMin(propsMin);
var max = this.getMax(propsMax);
if (max < min) {
return [];
}
var currentPickerDay = (0, dayjs_1.default)();
if (currentValue.length > 0) {
currentPickerDay = (0, dayjs_1.default)((0, util_1.getDateByValue)(currentValue));
}
if (currentPickerDay < min || currentPickerDay > max) {
currentPickerDay = min;
}
var newColumns = (0, util_1.getRangeData)(precision, min, max, currentPickerDay);
return newColumns;
},
onChange: function (selectedIndex) {
var _this = this;
selectedIndex = (0, util_1.getValidValue)(selectedIndex);
var _a = this.props, onPickerChange = _a.onPickerChange, format = _a.format, precision = _a.precision;
var date = (0, util_1.getDateByValue)(selectedIndex);
var min = this.getMin(this.props.min);
var max = this.getMax(this.props.max);
if ((0, dayjs_1.default)(date).isBefore(min)) {
date = min.toDate();
selectedIndex = (0, util_1.getValueByDate)(date, precision);
}
if ((0, dayjs_1.default)(date).isAfter(max)) {
date = max.toDate();
selectedIndex = (0, util_1.getValueByDate)(date, precision);
}
var newColumns = this.generateData(selectedIndex, this.props);
if (!(0, fast_deep_equal_1.default)(newColumns, this.data.columns)) {
this.setData({
columns: newColumns,
}, function () {
_this.setData({ currentValue: selectedIndex });
if (onPickerChange) {
var date_1 = (0, util_1.getDateByValue)(selectedIndex);
onPickerChange(date_1, (0, dayjs_1.default)(date_1).format(format), (0, fmtEvent_1.default)(_this.props));
}
});
}
else {
this.setData({ currentValue: selectedIndex });
if (onPickerChange) {
var date_2 = (0, util_1.getDateByValue)(selectedIndex);
onPickerChange(date_2, (0, dayjs_1.default)(date_2).format(format), (0, fmtEvent_1.default)(this.props));
}
}
},
onCancel: function (e) {
var onCancel = this.props.onCancel;
if (onCancel) {
onCancel((0, fmtEvent_1.default)(this.props, e));
}
},
onOk: function () {
var currentValue = this.data.currentValue;
var format = this.props.format;
var date = (0, util_1.getDateByValue)(currentValue);
if (!this.isControlled()) {
this.update(date);
}
if (this.props.onOk) {
this.props.onOk(date, (0, dayjs_1.default)(date).format(format), (0, fmtEvent_1.default)(this.props));
}
},
defaultFormat: function (value, valueStr) {
if (this.props.format && valueStr) {
return valueStr;
}
return '';
},
onFormat: function () {
var _a = this.props, onFormat = _a.onFormat, format = _a.format;
var realValue = this.getValue();
var formatValueByProps = onFormat &&
onFormat(realValue, realValue ? (0, dayjs_1.default)(realValue).format(format) : null);
if (typeof formatValueByProps !== 'undefined') {
return formatValueByProps;
}
return this.defaultFormat(realValue, realValue ? (0, dayjs_1.default)(realValue).format(format) : null);
},
onVisibleChange: function (visible) {
this.pickerVisible = visible;
var onVisibleChange = this.props.onVisibleChange;
if (visible) {
this.setCurrentValue(this.props);
}
if (onVisibleChange) {
onVisibleChange(visible, (0, fmtEvent_1.default)(this.props));
}
},
},
});