Skip to content

Commit 202a77a

Browse files
committed
DatePicker: fix trigger multiple watch, fixed ElemeFE#597
1 parent 4e36ff0 commit 202a77a

File tree

9 files changed

+12
-14
lines changed

9 files changed

+12
-14
lines changed

.gitattributes

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
*.js linguist-language=Vue
1+
test/**/*.js linguist-language=Vue

packages/date-picker/src/basic/month-table.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
</table>
4848
</template>
4949

50-
<script type="text/ecmascript-6">
50+
<script type="text/babel">
5151
import { $t } from '../util';
5252
5353
export default {

packages/date-picker/src/basic/time-spinner.vue

-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@
7878
this.hoursPrivate = oldVal;
7979
}
8080
this.$refs.hour.scrollTop = Math.max(0, (this.hoursPrivate - 2.5) * 32 + 80);
81-
8281
this.$emit('change', { hours: newVal });
8382
},
8483

packages/date-picker/src/panel/date-range.vue

+3
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,9 @@
400400
},
401401
402402
handleRangePick(val, close = true) {
403+
if (this.maxDate === val.maxDate && this.minDate === val.minDate) {
404+
return;
405+
}
403406
this.maxDate = val.maxDate;
404407
this.minDate = val.minDate;
405408

packages/date-picker/src/panel/date.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,8 @@
260260
} else {
261261
this.date.setMonth(month);
262262
this.resetDate();
263-
this.value = new Date(this.date.getFullYear(), month, 1);
264-
this.$emit('pick', this.value);
263+
const value = new Date(this.date.getFullYear(), month, 1);
264+
this.$emit('pick', value);
265265
}
266266
},
267267

packages/date-picker/src/panel/time-range.vue

+4
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@
8787
watch: {
8888
value(val) {
8989
const time = clacTime(val);
90+
if (time.minTime === this.minTime && time.maxTime === this.maxTime) {
91+
return;
92+
}
9093
9194
this.handleMinChange({
9295
hours: time.minTime.getHours(),
@@ -183,6 +186,7 @@
183186
this.minTime = limitRange(this.minTime, minSelectableRange);
184187
this.maxTime = limitRange(this.maxTime, maxSelectableRange);
185188
189+
if (first) return;
186190
this.$emit('pick', [this.minTime, this.maxTime], visible, first);
187191
},
188192

packages/date-picker/src/panel/time-select.vue

-8
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,6 @@
7272
if (this.value && val && compareTime(this.value, val) === -1) {
7373
this.$emit('pick');
7474
}
75-
},
76-
77-
value(val, old) {
78-
if (val && this.items.some(i => i.value === val && !i.disabled)) {
79-
this.$emit('pick', val, true);
80-
} else {
81-
this.$emit('pick', old, true);
82-
}
8375
}
8476
},
8577

packages/date-picker/src/panel/time.vue

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
},
130130
131131
handleConfirm(visible = false, first) {
132+
if (first) return;
132133
const date = new Date(limitRange(this.currentDate, this.selectableRange));
133134
this.$emit('pick', date, visible, first);
134135
},

packages/date-picker/src/picker.vue

-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ const newPopper = {
4646
beforeDestroy: Popper.beforeDestroy
4747
};
4848
49-
// const FUNCTION_KEYS = [13, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40];
5049
const RANGE_SEPARATOR = ' - ';
5150
const DEFAULT_FORMATS = {
5251
date: 'yyyy-MM-dd',

0 commit comments

Comments
 (0)