From e8b7199ffce3fd3f56f9f3a76f4e6d4748f8a64f Mon Sep 17 00:00:00 2001 From: Phyzical Date: Mon, 23 Nov 2020 16:25:59 +0800 Subject: [PATCH 1/9] feature/date-check-function: added disabled datetime checker function prop --- src/Datetime.vue | 5 +++++ src/DatetimeCalendar.vue | 6 +++++- src/DatetimeMonthPicker.vue | 6 +++++- src/DatetimePopup.vue | 8 ++++++++ src/DatetimeTimePicker.vue | 19 +++++++++++++++++-- src/DatetimeYearPicker.vue | 6 +++++- 6 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/Datetime.vue b/src/Datetime.vue index a8d9e99..505bacc 100644 --- a/src/Datetime.vue +++ b/src/Datetime.vue @@ -23,6 +23,7 @@ :phrases="phrases" :use12-hour="use12Hour" :hour-step="hourStep" + :datetime-disabled-checker="datetimeDisabledChecker" :minute-step="minuteStep" :min-datetime="popupMinDatetime" :max-datetime="popupMaxDatetime" @@ -119,6 +120,10 @@ export default { type: String, default: null }, + datetimeDisabledChecker: { + type: Function, + default: (year, month, day, hour, minute, second) => true + }, auto: { type: Boolean, default: false diff --git a/src/DatetimeCalendar.vue b/src/DatetimeCalendar.vue index b34bb40..e67cbc5 100644 --- a/src/DatetimeCalendar.vue +++ b/src/DatetimeCalendar.vue @@ -43,6 +43,10 @@ export default { disabled: { type: Array }, + datetimeDisabledChecker: { + type: Function, + default: (year, month, day, hour, minute, second) => true + }, minDate: { type: DateTime, default: null @@ -79,7 +83,7 @@ export default { return monthDays(this.newYear, this.newMonth, this.weekStart).map(day => ({ number: day, selected: day && this.year === this.newYear && this.month === this.newMonth && this.day === day, - disabled: !day || monthDayIsDisabled(this.minDate, this.maxDate, this.newYear, this.newMonth, day) + disabled: !day || monthDayIsDisabled(this.minDate, this.maxDate, this.newYear, this.newMonth, day) || this.datetimeDisabledChecker(this.newYear, this.newMonth, day) })) } }, diff --git a/src/DatetimeMonthPicker.vue b/src/DatetimeMonthPicker.vue index 279f8a0..4a6edb0 100644 --- a/src/DatetimeMonthPicker.vue +++ b/src/DatetimeMonthPicker.vue @@ -28,6 +28,10 @@ export default { maxDate: { type: DateTime, default: null + }, + datetimeDisabledChecker: { + type: Function, + default: (year, month, day, hour, minute, second) => true } }, @@ -37,7 +41,7 @@ export default { number: ++index, label: month, selected: index === this.month, - disabled: !index || monthIsDisabled(this.minDate, this.maxDate, this.year, index) + disabled: !index || monthIsDisabled(this.minDate, this.maxDate, this.year, index) || this.datetimeDisabledChecker(this.year, month) })) } }, diff --git a/src/DatetimePopup.vue b/src/DatetimePopup.vue index 5f62913..ef5b4a7 100644 --- a/src/DatetimePopup.vue +++ b/src/DatetimePopup.vue @@ -11,12 +11,14 @@ @change="onChangeYear" :min-date="minDatetime" :max-date="maxDatetime" + :datetime-disabled-checker="datetimeDisabledChecker" :year="year"> @@ -85,6 +89,10 @@ export default { } } }, + datetimeDisabledChecker: { + type: Function, + default: (year, month, day, hour, minute, second) => true + }, type: { type: String, default: 'date' diff --git a/src/DatetimeTimePicker.vue b/src/DatetimeTimePicker.vue index cc9775f..6a001c3 100644 --- a/src/DatetimeTimePicker.vue +++ b/src/DatetimeTimePicker.vue @@ -15,6 +15,7 @@