mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
fix(DatetimePicker): should update value when range changed (#4676)
This commit is contained in:
parent
e4bdd50d4b
commit
1d9b3e2013
@ -29,6 +29,10 @@ export default createComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
filter: 'updateInnerValue',
|
||||||
|
minDate: 'updateInnerValue',
|
||||||
|
maxDate: 'updateInnerValue',
|
||||||
|
|
||||||
value(val) {
|
value(val) {
|
||||||
val = this.formatValue(val);
|
val = this.formatValue(val);
|
||||||
|
|
||||||
@ -128,8 +132,8 @@ export default createComponent({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
onChange(picker) {
|
updateInnerValue() {
|
||||||
const indexes = picker.getIndexes();
|
const indexes = this.$refs.picker.getIndexes();
|
||||||
const getValue = index => getTrueValue(this.originColumns[index].values[indexes[index]]);
|
const getValue = index => getTrueValue(this.originColumns[index].values[indexes[index]]);
|
||||||
|
|
||||||
const year = getValue(0);
|
const year = getValue(0);
|
||||||
@ -156,6 +160,10 @@ export default createComponent({
|
|||||||
const value = new Date(year, month - 1, date, hour, minute);
|
const value = new Date(year, month - 1, date, hour, minute);
|
||||||
|
|
||||||
this.innerValue = this.formatValue(value);
|
this.innerValue = this.formatValue(value);
|
||||||
|
},
|
||||||
|
|
||||||
|
onChange(picker) {
|
||||||
|
this.updateInnerValue();
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@ -164,8 +172,10 @@ export default createComponent({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
updateColumnValue(value) {
|
updateColumnValue() {
|
||||||
|
const value = this.innerValue;
|
||||||
const { formatter } = this;
|
const { formatter } = this;
|
||||||
|
|
||||||
let values = [
|
let values = [
|
||||||
formatter('year', `${value.getFullYear()}`),
|
formatter('year', `${value.getFullYear()}`),
|
||||||
formatter('month', padZero(value.getMonth() + 1)),
|
formatter('month', padZero(value.getMonth() + 1)),
|
||||||
|
@ -44,6 +44,12 @@ export default createComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
filter: 'updateInnerValue',
|
||||||
|
minHour: 'updateInnerValue',
|
||||||
|
maxHour: 'updateInnerValue',
|
||||||
|
minMinute: 'updateInnerValue',
|
||||||
|
maxMinute: 'updateInnerValue',
|
||||||
|
|
||||||
value(val) {
|
value(val) {
|
||||||
val = this.formatValue(val);
|
val = this.formatValue(val);
|
||||||
|
|
||||||
@ -67,13 +73,17 @@ export default createComponent({
|
|||||||
return `${hour}:${minute}`;
|
return `${hour}:${minute}`;
|
||||||
},
|
},
|
||||||
|
|
||||||
onChange(picker) {
|
updateInnerValue() {
|
||||||
const indexes = picker.getIndexes();
|
const indexes = this.$refs.picker.getIndexes();
|
||||||
const hour = this.originColumns[0].values[indexes[0]];
|
const hour = this.originColumns[0].values[indexes[0]];
|
||||||
const minute = this.originColumns[1].values[indexes[1]];
|
const minute = this.originColumns[1].values[indexes[1]];
|
||||||
const value = `${hour}:${minute}`;
|
const value = `${hour}:${minute}`;
|
||||||
|
|
||||||
this.innerValue = this.formatValue(value);
|
this.innerValue = this.formatValue(value);
|
||||||
|
},
|
||||||
|
|
||||||
|
onChange(picker) {
|
||||||
|
this.updateInnerValue();
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@ -82,9 +92,9 @@ export default createComponent({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
updateColumnValue(value) {
|
updateColumnValue() {
|
||||||
const { formatter } = this;
|
const { formatter } = this;
|
||||||
const pair = value.split(':');
|
const pair = this.innerValue.split(':');
|
||||||
const values = [formatter('hour', pair[0]), formatter('minute', pair[1])];
|
const values = [formatter('hour', pair[0]), formatter('minute', pair[1])];
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
|
@ -51,17 +51,15 @@ export const TimePickerMixin = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
columns: 'updateColumnValue',
|
||||||
|
|
||||||
innerValue(val) {
|
innerValue(val) {
|
||||||
this.$emit('input', val);
|
this.$emit('input', val);
|
||||||
},
|
|
||||||
|
|
||||||
columns() {
|
|
||||||
this.updateColumnValue(this.innerValue);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.updateColumnValue(this.innerValue);
|
this.updateColumnValue();
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -92,3 +92,18 @@ test('dynamic set value', () => {
|
|||||||
expect(wrapper.emitted('confirm')[0][0]).toEqual('00:00');
|
expect(wrapper.emitted('confirm')[0][0]).toEqual('00:00');
|
||||||
expect(wrapper.emitted('confirm')[1][0]).toEqual('22:30');
|
expect(wrapper.emitted('confirm')[1][0]).toEqual('22:30');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('change min-minute and emit correct value', async () => {
|
||||||
|
const wrapper = mount(TimePicker, {
|
||||||
|
propsData: {
|
||||||
|
value: '12:00',
|
||||||
|
minMinute: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await later();
|
||||||
|
|
||||||
|
wrapper.setProps({ minMinute: 30 });
|
||||||
|
wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
|
expect(wrapper.emitted('confirm')[0][0]).toEqual('12:30');
|
||||||
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user