From a13290a35f9dc25a0647afcc021ba2658f39d7cb Mon Sep 17 00:00:00 2001 From: Aaron Rubin Date: Sat, 10 Jun 2017 22:32:47 -0400 Subject: [PATCH 1/6] Add disabledDays prop to accept array of dates to disable --- README.md | 3 ++- datepicker/calendar-panel.vue | 18 +++++++++++++++++- datepicker/index.vue | 9 +++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 20eb156..da0bfea 100644 --- a/README.md +++ b/README.md @@ -43,8 +43,9 @@ export default { |-----------------|---------------|-------------|---------------------------------------| | range | Boolean | false | if true, the type is daterange | | format | String | yyyy-MM-dd | Date formatting string | -| lang | String | zh | Translation (en/zh/es) | +| lang | String | zh | Translation (en/zh/es) | | placeholder | String | | input placeholder text | | width | String/Number | 210 | input size | +| disabledDays | Array | [] | Days in YYYY-MM-DD format to disable | diff --git a/datepicker/calendar-panel.vue b/datepicker/calendar-panel.vue index d0f0888..8ff6990 100644 --- a/datepicker/calendar-panel.vue +++ b/datepicker/calendar-panel.vue @@ -40,7 +40,8 @@ export default { startAt: null, endAt: null, value: null, - show: Boolean + show: Boolean, + disabledDays: Array }, data () { const translation = this.$parent.translation @@ -91,12 +92,14 @@ export default { const date = new Date(time.getFullYear(), time.getMonth(), day) return { title: date.toLocaleDateString(), + iso: cal.isoDate(date), date, day, classes } }) } + var cal = this; const time = new Date(this.now) time.setDate(0) // 把时间切换到上个月最后一天 const lastMonthLength = time.getDay() + 1 // time.getDay() 0是星期天, 1是星期一 ... @@ -121,6 +124,15 @@ export default { } this.dates = result }, + isoDate(date) { + function doubleDigits(num) { + if ( parseInt(num) < 10 ) { + return '0'+num; + } + return num; + } + return date.getFullYear()+'-'+doubleDigits((date.getMonth()+1))+'-'+doubleDigits(date.getDate()); + }, getClasses (cell) { const classes = [] const cellTime = cell.date.getTime() @@ -131,6 +143,10 @@ export default { classes.push(cell.classes) + if ( typeof this.disabledDays.find(function(disabledDate) { return disabledDate === cell.iso } ) !== 'undefined' ) { + classes.push('disabled'); + } + if (cellTime === today) { classes.push('today') } diff --git a/datepicker/index.vue b/datepicker/index.vue index 0e0fe5d..93b06e9 100644 --- a/datepicker/index.vue +++ b/datepicker/index.vue @@ -20,14 +20,14 @@ ref="calendar" v-show="showPopup"> @@ -57,7 +57,8 @@ export default { type: String, default: 'zh' }, - value: null + value: null, + disabledDays: Array }, data () { return { From fe36d75c13d937e8c14e575e003eb0da87b02b44 Mon Sep 17 00:00:00 2001 From: "Aaron J. Rubin" Date: Mon, 12 Jun 2017 08:24:16 -0400 Subject: [PATCH 2/6] Add default empty array for disabledDays, add showYearNav prop --- README.md | 1 + datepicker/calendar-panel.vue | 13 ++++++++++--- datepicker/index.vue | 15 +++++++++++---- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index da0bfea..a2e4c54 100644 --- a/README.md +++ b/README.md @@ -47,5 +47,6 @@ export default { | placeholder | String | | input placeholder text | | width | String/Number | 210 | input size | | disabledDays | Array | [] | Days in YYYY-MM-DD format to disable | +| showYearNav | Boolean | true | Show the year nav in the calendar | diff --git a/datepicker/calendar-panel.vue b/datepicker/calendar-panel.vue index 8ff6990..dfac1d5 100644 --- a/datepicker/calendar-panel.vue +++ b/datepicker/calendar-panel.vue @@ -1,9 +1,9 @@