2
0
mirror of https://github.com/tenrok/vue2-datepicker.git synced 2026-06-15 01:42:27 +03:00

feat: default-value supports Array for range (#395)

This commit is contained in:
xiemx
2019-12-16 18:13:08 +08:00
parent c8f7122b63
commit b33c9b8f19
9 changed files with 46 additions and 14 deletions
-3
View File
@@ -128,9 +128,6 @@ export default {
props: {
value: {},
defaultValue: {
validator(value) {
return !isNaN(new Date(value).getTime());
},
default() {
const date = new Date();
date.setHours(0, 0, 0, 0);
+7 -1
View File
@@ -27,6 +27,11 @@ export default {
calendarMaxDiff() {
return Infinity;
},
defaultValues() {
return Array.isArray(this.defaultValue)
? this.defaultValue
: [this.defaultValue, this.defaultValue];
},
},
watch: {
value: {
@@ -35,7 +40,7 @@ export default {
this.innerValue = isValidRangeDate(this.value)
? this.value
: [new Date(NaN), new Date(NaN)];
this.calendars = this.innerValue.map(v => getValidDate(v, this.defaultValue));
this.calendars = this.innerValue.map((v, i) => getValidDate(v, this.defaultValues[i]));
this.validateCalendars(1);
},
},
@@ -108,6 +113,7 @@ export default {
...this.$props,
calendar,
value: this.innerValue,
defaultValue: this.defaultValues[index],
getClasses: this.getRangeClasses,
// don't update when range is true
partialUpdate: false,
+2 -2
View File
@@ -87,7 +87,7 @@
<script>
import { parse, format, getWeek } from 'date-format-parse';
import { isValidDate, isValidRangeDate, getValidDate } from './util/date';
import { isValidDate, isValidRangeDate } from './util/date';
import { pick, isObject, mergeDeep } from './util/base';
import { getLocale, getLocaleFieldValue } from './locale';
import Popup from './popup';
@@ -306,7 +306,7 @@ export default {
if (isObject(this.format) && typeof this.format.parse === 'function') {
return this.format.parse(value, fmt);
}
const backupDate = getValidDate(this.defaultValue);
const backupDate = new Date();
return parse(value, fmt, { locale: this.locale.formatLocale, backupDate });
},
formatDate(date, fmt) {
+5 -2
View File
@@ -43,15 +43,18 @@ export default {
if (type === 'date') {
this.openTimePanel();
}
const defaultValues = Array.isArray(this.defaultValue)
? this.defaultValue
: [this.defaultValue, this.defaultValue];
let datetimes = dates.map((date, i) => {
const time = isValidRangeDate(this.value) ? this.value[i] : this.defaultValue;
const time = isValidRangeDate(this.value) ? this.value[i] : defaultValues[i];
return assignTime(date, time);
});
if (datetimes[1].getTime() < datetimes[0].getTime()) {
datetimes = [datetimes[0], datetimes[0]];
}
if (datetimes.some(this.disabledTime)) {
datetimes = dates.map(date => assignTime(date, this.defaultValue));
datetimes = dates.map((date, i) => assignTime(date, defaultValues[i]));
if (datetimes.some(this.disabledTime)) {
this.currentValue = datetimes;
return;
-3
View File
@@ -53,9 +53,6 @@ export default {
props: {
value: {},
defaultValue: {
validator(value) {
return !isNaN(new Date(value).getTime());
},
default() {
const date = new Date();
date.setHours(0, 0, 0, 0);
+5
View File
@@ -56,6 +56,9 @@ export default {
},
},
render() {
const defaultValues = Array.isArray(this.defaultValue)
? this.defaultValue
: [this.defaultValue, this.defaultValue];
return (
<div class="mx-range-wrapper">
<TimePanel
@@ -63,6 +66,7 @@ export default {
props: {
...this.$props,
value: this.startValue,
defaultValue: defaultValues[0],
disabledTime: this.disabledStartTime,
},
on: {
@@ -76,6 +80,7 @@ export default {
props: {
...this.$props,
value: this.endValue,
defaultValue: defaultValues[1],
disabledTime: this.disabledEndTime,
},
on: {