@@ -103,6 +103,7 @@ import PickerDay from '~/components/PickerDay.vue'
103
103
import PickerMonth from ' ~/components/PickerMonth.vue'
104
104
import PickerYear from ' ~/components/PickerYear.vue'
105
105
import Popup from ' ~/components/Popup.vue'
106
+ import DisabledDate from ' ~/utils/DisabledDate'
106
107
107
108
const validDate = (val ) =>
108
109
val === null ||
@@ -266,6 +267,9 @@ export default {
266
267
translation () {
267
268
return this .language
268
269
},
270
+ disabledDatesClass () {
271
+ return new DisabledDate (this .utils , this .disabledDates )
272
+ },
269
273
},
270
274
watch: {
271
275
initialView () {
@@ -275,7 +279,8 @@ export default {
275
279
this .setPageDate ()
276
280
},
277
281
value (value ) {
278
- this .setValue (value)
282
+ const parsedValue = this .parseValue (value)
283
+ this .setValue (parsedValue)
279
284
},
280
285
},
281
286
mounted () {
@@ -326,7 +331,14 @@ export default {
326
331
*/
327
332
init () {
328
333
if (this .value ) {
329
- this .setValue (this .value )
334
+ let parsedValue = this .parseValue (this .value )
335
+ const isDateDisabled =
336
+ parsedValue && this .disabledDatesClass .isDateDisabled (parsedValue)
337
+ if (isDateDisabled) {
338
+ parsedValue = null
339
+ this .$emit (' input' , parsedValue)
340
+ }
341
+ this .setValue (parsedValue)
330
342
}
331
343
if (this .isInline ) {
332
344
this .setInitialView ()
@@ -414,18 +426,25 @@ export default {
414
426
* @param {Date|String|Number|null} date
415
427
*/
416
428
setValue (date ) {
429
+ if (! date) {
430
+ this .setPageDate ()
431
+ this .selectedDate = null
432
+ return
433
+ }
434
+ this .selectedDate = date
435
+ this .setPageDate (date)
436
+ },
437
+ /**
438
+ * parse a datepicker value from string/number to date
439
+ * @param {Date|String|Number|null} date
440
+ */
441
+ parseValue (date ) {
417
442
let dateTemp = date
418
443
if (typeof dateTemp === ' string' || typeof dateTemp === ' number' ) {
419
444
const parsed = new Date (dateTemp)
420
445
dateTemp = Number .isNaN (parsed .valueOf ()) ? null : parsed
421
446
}
422
- if (! dateTemp) {
423
- this .setPageDate ()
424
- this .selectedDate = null
425
- return
426
- }
427
- this .selectedDate = dateTemp
428
- this .setPageDate (dateTemp)
447
+ return dateTemp
429
448
},
430
449
/**
431
450
* @param {Object} date
0 commit comments