UNPKG

buefy

Version:

Lightweight UI components for Vue.js based on Bulma

1,282 lines (1,133 loc) 44.9 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var __chunk_1 = require('./chunk-9f6a8079.js'); var __chunk_2 = require('./chunk-59b91990.js'); var __chunk_3 = require('./chunk-545f01b1.js'); var __chunk_4 = require('./chunk-c146745e.js'); var __chunk_5 = require('./chunk-60061aa8.js'); var __chunk_6 = require('./chunk-13e039f5.js'); var __chunk_7 = require('./chunk-f0c597f9.js'); var __chunk_11 = require('./chunk-544a95da.js'); var __chunk_12 = require('./chunk-ef4753d5.js'); var __chunk_13 = require('./chunk-1b1231ce.js'); // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // var script = { name: 'BDatepickerTableRow', props: { selectedDate: { type: [Date, Array] }, hoveredDateRange: Array, week: { type: Array, required: true }, month: { type: Number, required: true }, minDate: Date, maxDate: Date, disabled: Boolean, unselectableDates: Array, unselectableDaysOfWeek: Array, selectableDates: Array, events: Array, indicators: String, dateCreator: Function, nearbyMonthDays: Boolean, nearbySelectableMonthDays: Boolean, showWeekNumber: { type: Boolean, default: function _default() { return false; } }, rulesForFirstWeek: { type: Number, default: function _default() { return 4; } }, firstDayOfWeek: Number }, methods: { firstWeekOffset: function firstWeekOffset(year, dow, doy) { // first-week day -- which january is always in the first week (4 for iso, 1 for other) var fwd = 7 + dow - doy; // first-week day local weekday -- which local weekday is fwd var firstJanuary = new Date(year, 0, fwd); var fwdlw = (7 + firstJanuary.getDay() - dow) % 7; return -fwdlw + fwd - 1; }, daysInYear: function daysInYear(year) { return this.isLeapYear(year) ? 366 : 365; }, isLeapYear: function isLeapYear(year) { return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; }, getSetDayOfYear: function getSetDayOfYear(input) { var dayOfYear = Math.round((input - new Date(input.getFullYear(), 0, 1)) / 864e5) + 1; return dayOfYear; }, weeksInYear: function weeksInYear(year, dow, doy) { var weekOffset = this.firstWeekOffset(year, dow, doy); var weekOffsetNext = this.firstWeekOffset(year + 1, dow, doy); return (this.daysInYear(year) - weekOffset + weekOffsetNext) / 7; }, getWeekNumber: function getWeekNumber(mom) { var dow = this.firstDayOfWeek; // first day of week // Rules for the first week : 1 for the 1st January, 4 for the 4th January var doy = this.rulesForFirstWeek; var weekOffset = this.firstWeekOffset(mom.getFullYear(), dow, doy); var week = Math.floor((this.getSetDayOfYear(mom) - weekOffset - 1) / 7) + 1; var resWeek; var resYear; if (week < 1) { resYear = mom.getFullYear() - 1; resWeek = week + this.weeksInYear(resYear, dow, doy); } else if (week > this.weeksInYear(mom.getFullYear(), dow, doy)) { resWeek = week - this.weeksInYear(mom.getFullYear(), dow, doy); resYear = mom.getFullYear() + 1; } else { resYear = mom.getFullYear(); resWeek = week; } return resWeek; }, /* * Check that selected day is within earliest/latest params and * is within this month */ selectableDate: function selectableDate(day) { var validity = []; if (this.minDate) { validity.push(day >= this.minDate); } if (this.maxDate) { validity.push(day <= this.maxDate); } if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) { validity.push(day.getMonth() === this.month); } if (this.selectableDates) { for (var i = 0; i < this.selectableDates.length; i++) { var enabledDate = this.selectableDates[i]; if (day.getDate() === enabledDate.getDate() && day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) { return true; } else { validity.push(false); } } } if (this.unselectableDates) { for (var _i = 0; _i < this.unselectableDates.length; _i++) { var disabledDate = this.unselectableDates[_i]; validity.push(day.getDate() !== disabledDate.getDate() || day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth()); } } if (this.unselectableDaysOfWeek) { for (var _i2 = 0; _i2 < this.unselectableDaysOfWeek.length; _i2++) { var dayOfWeek = this.unselectableDaysOfWeek[_i2]; validity.push(day.getDay() !== dayOfWeek); } } return validity.indexOf(false) < 0; }, /* * Emit select event with chosen date as payload */ emitChosenDate: function emitChosenDate(day) { if (this.disabled) return; if (this.selectableDate(day)) { this.$emit('select', day); } }, eventsDateMatch: function eventsDateMatch(day) { if (!this.events || !this.events.length) return false; var dayEvents = []; for (var i = 0; i < this.events.length; i++) { if (this.events[i].date.getDay() === day.getDay()) { dayEvents.push(this.events[i]); } } if (!dayEvents.length) { return false; } return dayEvents; }, /* * Build classObject for cell using validations */ classObject: function classObject(day) { function dateMatch(dateOne, dateTwo) { // if either date is null or undefined, return false if (!dateOne || !dateTwo) { return false; } if (Array.isArray(dateTwo)) { return dateTwo.some(function (date) { return dateOne.getDate() === date.getDate() && dateOne.getFullYear() === date.getFullYear() && dateOne.getMonth() === date.getMonth(); }); } return dateOne.getDate() === dateTwo.getDate() && dateOne.getFullYear() === dateTwo.getFullYear() && dateOne.getMonth() === dateTwo.getMonth(); } function dateWithin(dateOne, dates) { if (!Array.isArray(dates)) { return false; } return dateOne > dates[0] && dateOne < dates[1]; } return { 'is-selected': dateMatch(day, this.selectedDate) || dateWithin(day, this.selectedDate), 'is-first-selected': dateMatch(day, Array.isArray(this.selectedDate) && this.selectedDate[0]), 'is-within-selected': dateWithin(day, this.selectedDate), 'is-last-selected': dateMatch(day, Array.isArray(this.selectedDate) && this.selectedDate[1]), 'is-within-hovered-range': this.hoveredDateRange && this.hoveredDateRange.length === 2 && (dateMatch(day, this.hoveredDateRange) || dateWithin(day, this.hoveredDateRange)), 'is-first-hovered': dateMatch(day, Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[0]), 'is-within-hovered': dateWithin(day, this.hoveredDateRange), 'is-last-hovered': dateMatch(day, Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[1]), 'is-today': dateMatch(day, this.dateCreator()), 'is-selectable': this.selectableDate(day) && !this.disabled, 'is-unselectable': !this.selectableDate(day) || this.disabled, 'is-invisible': !this.nearbyMonthDays && day.getMonth() !== this.month, 'is-nearby': this.nearbySelectableMonthDays && day.getMonth() !== this.month }; }, setRangeHoverEndDate: function setRangeHoverEndDate(day) { var isRangeInput = Array.isArray(this.selectedDate); if (isRangeInput) { this.$emit('rangeHoverEndDate', day); } } } }; /* script */ const __vue_script__ = script; /* template */ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"datepicker-row"},[(_vm.showWeekNumber)?_c('a',{staticClass:"datepicker-cell is-week-number"},[_vm._v("\n "+_vm._s(_vm.getWeekNumber(_vm.week[6]))+"\n ")]):_vm._e(),_vm._v(" "),_vm._l((_vm.week),function(day,index){return [(_vm.selectableDate(day) && !_vm.disabled)?_c('a',{key:index,staticClass:"datepicker-cell",class:[_vm.classObject(day), {'has-event': _vm.eventsDateMatch(day)}, _vm.indicators],attrs:{"role":"button","href":"#","disabled":_vm.disabled},on:{"click":function($event){$event.preventDefault();_vm.emitChosenDate(day);},"keydown":[function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"enter",13,$event.key)){ return null; }$event.preventDefault();_vm.emitChosenDate(day);},function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"space",32,$event.key)){ return null; }$event.preventDefault();_vm.emitChosenDate(day);}],"mouseenter":function($event){_vm.setRangeHoverEndDate(day);}}},[_vm._v("\n "+_vm._s(day.getDate())+"\n "),(_vm.eventsDateMatch(day))?_c('div',{staticClass:"events"},_vm._l((_vm.eventsDateMatch(day)),function(event,index){return _c('div',{key:index,staticClass:"event",class:event.type})})):_vm._e()]):_c('div',{key:index,staticClass:"datepicker-cell",class:_vm.classObject(day)},[_vm._v("\n "+_vm._s(day.getDate())+"\n ")])]})],2)}; var __vue_staticRenderFns__ = []; /* style */ const __vue_inject_styles__ = undefined; /* scoped */ const __vue_scope_id__ = undefined; /* module identifier */ const __vue_module_identifier__ = undefined; /* functional template */ const __vue_is_functional_template__ = false; /* style inject */ /* style inject SSR */ var DatepickerTableRow = __chunk_6.__vue_normalize__( { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined ); var isDefined = function isDefined(d) { return d !== undefined; }; var script$1 = { name: 'BDatepickerTable', components: __chunk_1._defineProperty({}, DatepickerTableRow.name, DatepickerTableRow), props: { value: { type: [Date, Array] }, dayNames: Array, monthNames: Array, firstDayOfWeek: Number, events: Array, indicators: String, minDate: Date, maxDate: Date, focused: Object, disabled: Boolean, dateCreator: Function, unselectableDates: Array, unselectableDaysOfWeek: Array, selectableDates: Array, nearbyMonthDays: Boolean, nearbySelectableMonthDays: Boolean, showWeekNumber: { type: Boolean, default: function _default() { return false; } }, rulesForFirstWeek: { type: Number, default: function _default() { return 4; } }, range: Boolean }, data: function data() { return { selectedBeginDate: undefined, selectedEndDate: undefined, hoveredEndDate: undefined }; }, computed: { visibleDayNames: function visibleDayNames() { var visibleDayNames = []; var index = this.firstDayOfWeek; while (visibleDayNames.length < this.dayNames.length) { var currentDayName = this.dayNames[index % this.dayNames.length]; visibleDayNames.push(currentDayName); index++; } if (this.showWeekNumber) visibleDayNames.unshift(''); return visibleDayNames; }, hasEvents: function hasEvents() { return this.events && this.events.length; }, /* * Return array of all events in the specified month */ eventsInThisMonth: function eventsInThisMonth() { if (!this.events) return []; var monthEvents = []; for (var i = 0; i < this.events.length; i++) { var event = this.events[i]; if (!event.hasOwnProperty('date')) { event = { date: event }; } if (!event.hasOwnProperty('type')) { event.type = 'is-primary'; } if (event.date.getMonth() === this.focused.month && event.date.getFullYear() === this.focused.year) { monthEvents.push(event); } } return monthEvents; }, /* * Return array of all weeks in the specified month */ weeksInThisMonth: function weeksInThisMonth() { var month = this.focused.month; var year = this.focused.year; var weeksInThisMonth = []; var daysInThisMonth = new Date(year, month + 1, 0).getDate(); var startingDay = 1; while (startingDay <= daysInThisMonth + 6) { var newWeek = this.weekBuilder(startingDay, month, year); var weekValid = false; newWeek.forEach(function (day) { if (day.getMonth() === month) { weekValid = true; } }); if (weekValid) { weeksInThisMonth.push(newWeek); } startingDay += 7; } return weeksInThisMonth; }, hoveredDateRange: function hoveredDateRange() { if (!this.range) { return []; } if (!isNaN(this.selectedEndDate)) { return []; } if (this.hoveredEndDate < this.selectedBeginDate) { return [this.hoveredEndDate, this.selectedBeginDate].filter(isDefined); } return [this.selectedBeginDate, this.hoveredEndDate].filter(isDefined); } }, methods: { /* * Emit input event with selected date as payload for v-model in parent */ updateSelectedDate: function updateSelectedDate(date) { if (!this.range) { this.$emit('input', date); } else { this.handleSelectRangeDate(date); } }, /* * If both begin and end dates are set, reset the end date and set the begin date. * If only begin date is selected, emit an array of the begin date and the new date. * If not set, only set the begin date. */ handleSelectRangeDate: function handleSelectRangeDate(date) { if (this.selectedBeginDate && this.selectedEndDate) { this.selectedBeginDate = date; this.selectedEndDate = undefined; } else if (this.selectedBeginDate && !this.selectedEndDate) { if (this.selectedBeginDate > date) { this.selectedEndDate = this.selectedBeginDate; this.selectedBeginDate = date; } else { this.selectedEndDate = date; } this.$emit('input', [this.selectedBeginDate, this.selectedEndDate]); } else { this.selectedBeginDate = date; } }, /* * Return array of all days in the week that the startingDate is within */ weekBuilder: function weekBuilder(startingDate, month, year) { var thisMonth = new Date(year, month); var thisWeek = []; var dayOfWeek = new Date(year, month, startingDate).getDay(); var end = dayOfWeek >= this.firstDayOfWeek ? dayOfWeek - this.firstDayOfWeek : 7 - this.firstDayOfWeek + dayOfWeek; var daysAgo = 1; for (var i = 0; i < end; i++) { thisWeek.unshift(new Date(thisMonth.getFullYear(), thisMonth.getMonth(), startingDate - daysAgo)); daysAgo++; } thisWeek.push(new Date(year, month, startingDate)); var daysForward = 1; while (thisWeek.length < 7) { thisWeek.push(new Date(year, month, startingDate + daysForward)); daysForward++; } return thisWeek; }, eventsInThisWeek: function eventsInThisWeek(week) { return this.eventsInThisMonth.filter(function (event) { var stripped = new Date(Date.parse(event.date)); stripped.setHours(0); stripped.setMinutes(0); stripped.setSeconds(0); stripped.setMilliseconds(0); var timed = stripped.getTime(); return week.some(function (weekDate) { return weekDate.getTime() === timed; }); }); }, setRangeHoverEndDate: function setRangeHoverEndDate(day) { this.hoveredEndDate = day; } } }; /* script */ const __vue_script__$1 = script$1; /* template */ var __vue_render__$1 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:"datepicker-table"},[_c('header',{staticClass:"datepicker-header"},_vm._l((_vm.visibleDayNames),function(day,index){return _c('div',{key:index,staticClass:"datepicker-cell"},[_vm._v("\n "+_vm._s(day)+"\n ")])})),_vm._v(" "),_c('div',{staticClass:"datepicker-body",class:{'has-events':_vm.hasEvents}},_vm._l((_vm.weeksInThisMonth),function(week,index){return _c('b-datepicker-table-row',{key:index,attrs:{"selected-date":_vm.value,"week":week,"month":_vm.focused.month,"min-date":_vm.minDate,"max-date":_vm.maxDate,"disabled":_vm.disabled,"unselectable-dates":_vm.unselectableDates,"unselectable-days-of-week":_vm.unselectableDaysOfWeek,"selectable-dates":_vm.selectableDates,"events":_vm.eventsInThisWeek(week),"indicators":_vm.indicators,"date-creator":_vm.dateCreator,"nearby-month-days":_vm.nearbyMonthDays,"nearby-selectable-month-days":_vm.nearbySelectableMonthDays,"show-week-number":_vm.showWeekNumber,"first-day-of-week":_vm.firstDayOfWeek,"rules-for-first-week":_vm.rulesForFirstWeek,"range":_vm.range,"hovered-date-range":_vm.hoveredDateRange},on:{"select":_vm.updateSelectedDate,"rangeHoverEndDate":_vm.setRangeHoverEndDate}})}))])}; var __vue_staticRenderFns__$1 = []; /* style */ const __vue_inject_styles__$1 = undefined; /* scoped */ const __vue_scope_id__$1 = undefined; /* module identifier */ const __vue_module_identifier__$1 = undefined; /* functional template */ const __vue_is_functional_template__$1 = false; /* style inject */ /* style inject SSR */ var DatepickerTable = __chunk_6.__vue_normalize__( { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, undefined, undefined ); // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // var script$2 = { name: 'BDatepickerMonth', props: { value: Date, monthNames: Array, events: Array, indicators: String, minDate: Date, maxDate: Date, focused: Object, disabled: Boolean, dateCreator: Function, unselectableDates: Array, unselectableDaysOfWeek: Array, selectableDates: Array }, computed: { hasEvents: function hasEvents() { return this.events && this.events.length; }, /* * Return array of all events in the specified month */ eventsInThisYear: function eventsInThisYear() { if (!this.events) return []; var yearEvents = []; for (var i = 0; i < this.events.length; i++) { var event = this.events[i]; if (!event.hasOwnProperty('date')) { event = { date: event }; } if (!event.hasOwnProperty('type')) { event.type = 'is-primary'; } if (event.date.getFullYear() === this.focused.year) { yearEvents.push(event); } } return yearEvents; }, monthDates: function monthDates() { var year = this.focused.year; var months = []; for (var i = 0; i < 12; i++) { var d = new Date(year, i, 1); d.setHours(0, 0, 0, 0); months.push(d); } return months; } }, methods: { selectableDate: function selectableDate(day) { var validity = []; if (this.minDate) { validity.push(day >= this.minDate); } if (this.maxDate) { validity.push(day <= this.maxDate); } validity.push(day.getFullYear() === this.focused.year); if (this.selectableDates) { for (var i = 0; i < this.selectableDates.length; i++) { var enabledDate = this.selectableDates[i]; if (day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) { return true; } else { validity.push(false); } } } if (this.unselectableDates) { for (var _i = 0; _i < this.unselectableDates.length; _i++) { var disabledDate = this.unselectableDates[_i]; validity.push(day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth()); } } if (this.unselectableDaysOfWeek) { for (var _i2 = 0; _i2 < this.unselectableDaysOfWeek.length; _i2++) { var dayOfWeek = this.unselectableDaysOfWeek[_i2]; validity.push(day.getDay() !== dayOfWeek); } } return validity.indexOf(false) < 0; }, eventsDateMatch: function eventsDateMatch(day) { if (!this.eventsInThisYear.length) return false; var monthEvents = []; for (var i = 0; i < this.eventsInThisYear.length; i++) { if (this.eventsInThisYear[i].date.getMonth() === day.getMonth()) { monthEvents.push(this.events[i]); } } if (!monthEvents.length) { return false; } return monthEvents; }, /* * Build classObject for cell using validations */ classObject: function classObject(day) { function dateMatch(dateOne, dateTwo) { // if either date is null or undefined, return false if (!dateOne || !dateTwo) { return false; } return dateOne.getFullYear() === dateTwo.getFullYear() && dateOne.getMonth() === dateTwo.getMonth(); } return { 'is-selected': dateMatch(day, this.value), 'is-today': dateMatch(day, this.dateCreator()), 'is-selectable': this.selectableDate(day) && !this.disabled, 'is-unselectable': !this.selectableDate(day) || this.disabled }; }, /* * Emit select event with chosen date as payload */ emitChosenDate: function emitChosenDate(day) { if (this.disabled) return; if (this.selectableDate(day)) { this.$emit('input', day); } } } }; /* script */ const __vue_script__$2 = script$2; /* template */ var __vue_render__$2 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:"datepicker-table"},[_c('div',{staticClass:"datepicker-body",class:{'has-events':_vm.hasEvents}},[_c('div',{staticClass:"datepicker-months"},[_vm._l((_vm.monthDates),function(date,index){return [(_vm.selectableDate(date) && !_vm.disabled)?_c('a',{key:index,staticClass:"datepicker-cell",class:[ _vm.classObject(date), {'has-event': _vm.eventsDateMatch(date)}, _vm.indicators ],attrs:{"role":"button","href":"#","disabled":_vm.disabled},on:{"click":function($event){$event.preventDefault();_vm.emitChosenDate(date);},"keydown":[function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"enter",13,$event.key)){ return null; }$event.preventDefault();_vm.emitChosenDate(date);},function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"space",32,$event.key)){ return null; }$event.preventDefault();_vm.emitChosenDate(date);}]}},[_vm._v("\n "+_vm._s(_vm.monthNames[date.getMonth()])+"\n "),(_vm.eventsDateMatch(date))?_c('div',{staticClass:"events"},_vm._l((_vm.eventsDateMatch(date)),function(event,index){return _c('div',{key:index,staticClass:"event",class:event.type})})):_vm._e()]):_c('div',{key:index,staticClass:"datepicker-cell",class:_vm.classObject(date)},[_vm._v("\n "+_vm._s(_vm.monthNames[date.getMonth()])+"\n ")])]})],2)])])}; var __vue_staticRenderFns__$2 = []; /* style */ const __vue_inject_styles__$2 = undefined; /* scoped */ const __vue_scope_id__$2 = undefined; /* module identifier */ const __vue_module_identifier__$2 = undefined; /* functional template */ const __vue_is_functional_template__$2 = false; /* style inject */ /* style inject SSR */ var DatepickerMonth = __chunk_6.__vue_normalize__( { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 }, __vue_inject_styles__$2, __vue_script__$2, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, undefined, undefined ); var _components; var defaultDateFormatter = function defaultDateFormatter(date, vm) { var targetDates = Array.isArray(date) ? date : [date]; return targetDates.map(function (date) { var yyyyMMdd = date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate(); var d = new Date(yyyyMMdd); return !vm.isTypeMonth ? d.toLocaleDateString() : d.toLocaleDateString(undefined, { year: 'numeric', month: '2-digit' }); }).join(' - '); }; var defaultDateParser = function defaultDateParser(date, vm) { if (!vm.isTypeMonth) return new Date(Date.parse(date)); if (date) { var s = date.split('/'); var year = s[0].length === 4 ? s[0] : s[1]; var month = s[0].length === 2 ? s[0] : s[1]; if (year && month) { return new Date(parseInt(year, 10), parseInt(month - 1, 10), 1, 0, 0, 0, 0); } } return null; }; var script$3 = { name: 'BDatepicker', components: (_components = {}, __chunk_1._defineProperty(_components, DatepickerTable.name, DatepickerTable), __chunk_1._defineProperty(_components, DatepickerMonth.name, DatepickerMonth), __chunk_1._defineProperty(_components, __chunk_7.Input.name, __chunk_7.Input), __chunk_1._defineProperty(_components, __chunk_12.Field.name, __chunk_12.Field), __chunk_1._defineProperty(_components, __chunk_13.Select.name, __chunk_13.Select), __chunk_1._defineProperty(_components, __chunk_5.Icon.name, __chunk_5.Icon), __chunk_1._defineProperty(_components, __chunk_11.Dropdown.name, __chunk_11.Dropdown), __chunk_1._defineProperty(_components, __chunk_11.DropdownItem.name, __chunk_11.DropdownItem), _components), mixins: [__chunk_4.FormElementMixin], inheritAttrs: false, props: { value: { type: [Date, Array] }, dayNames: { type: Array, default: function _default() { if (Array.isArray(__chunk_3.config.defaultDayNames)) { return __chunk_3.config.defaultDayNames; } else { return ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'S']; } } }, monthNames: { type: Array, default: function _default() { if (Array.isArray(__chunk_3.config.defaultMonthNames)) { return __chunk_3.config.defaultMonthNames; } else { return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; } } }, firstDayOfWeek: { type: Number, default: function _default() { if (typeof __chunk_3.config.defaultFirstDayOfWeek === 'number') { return __chunk_3.config.defaultFirstDayOfWeek; } else { return 0; } } }, inline: Boolean, minDate: Date, maxDate: Date, focusedDate: Date, placeholder: String, editable: Boolean, disabled: Boolean, unselectableDates: Array, unselectableDaysOfWeek: { type: Array, default: function _default() { return __chunk_3.config.defaultUnselectableDaysOfWeek; } }, selectableDates: Array, dateFormatter: { type: Function, default: function _default(date, vm) { if (typeof __chunk_3.config.defaultDateFormatter === 'function') { return __chunk_3.config.defaultDateFormatter(date); } else { return defaultDateFormatter(date, vm); } } }, dateParser: { type: Function, default: function _default(date, vm) { if (typeof __chunk_3.config.defaultDateParser === 'function') { return __chunk_3.config.defaultDateParser(date); } else { return defaultDateParser(date, vm); } } }, dateCreator: { type: Function, default: function _default() { if (typeof __chunk_3.config.defaultDateCreator === 'function') { return __chunk_3.config.defaultDateCreator(); } else { return new Date(); } } }, mobileNative: { type: Boolean, default: function _default() { return __chunk_3.config.defaultDatepickerMobileNative; } }, position: String, events: Array, indicators: { type: String, default: 'dots' }, openOnFocus: Boolean, yearsRange: { type: Array, default: function _default() { return __chunk_3.config.defaultDatepickerYearsRange; } }, type: { type: String, validator: function validator(value) { return ['month'].indexOf(value) >= 0; } }, nearbyMonthDays: { type: Boolean, default: function _default() { return __chunk_3.config.defaultDatepickerNearbyMonthDays; } }, nearbySelectableMonthDays: { type: Boolean, default: function _default() { return __chunk_3.config.defaultDatepickerNearbySelectableMonthDays; } }, showWeekNumber: { type: Boolean, default: function _default() { return __chunk_3.config.defaultDatepickerShowWeekNumber; } }, rulesForFirstWeek: { type: Number, default: function _default() { return 4; } }, range: { type: Boolean, default: false } }, data: function data() { var focusedDate = Array.isArray(this.value) ? this.value[0] : this.value || this.focusedDate || this.dateCreator(); return { dateSelected: this.value, focusedDateData: { month: focusedDate.getMonth(), year: focusedDate.getFullYear() }, _elementRef: 'input', _isDatepicker: true }; }, computed: { computedValue: { get: function get() { return this.dateSelected; }, set: function set(value) { this.updateInternalState(value); this.togglePicker(false); this.$emit('input', value); } }, /* * Returns an array of years for the year dropdown. If earliest/latest * dates are set by props, range of years will fall within those dates. */ listOfYears: function listOfYears() { var latestYear = this.focusedDateData.year + this.yearsRange[1]; if (this.maxDate && this.maxDate.getFullYear() < latestYear) { latestYear = Math.max(this.maxDate.getFullYear(), this.focusedDateData.year); } var earliestYear = this.focusedDateData.year + this.yearsRange[0]; if (this.minDate && this.minDate.getFullYear() > earliestYear) { earliestYear = Math.min(this.minDate.getFullYear(), this.focusedDateData.year); } var arrayOfYears = []; for (var i = earliestYear; i <= latestYear; i++) { arrayOfYears.push(i); } return arrayOfYears.reverse(); }, showPrev: function showPrev() { if (!this.minDate) return false; if (this.isTypeMonth) { return this.focusedDateData.year <= this.minDate.getFullYear(); } var dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month); var date = new Date(this.minDate.getFullYear(), this.minDate.getMonth()); return dateToCheck <= date; }, showNext: function showNext() { if (!this.maxDate) return false; if (this.isTypeMonth) { return this.focusedDateData.year >= this.maxDate.getFullYear(); } var dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month); var date = new Date(this.maxDate.getFullYear(), this.maxDate.getMonth()); return dateToCheck >= date; }, isMobile: function isMobile() { return this.mobileNative && __chunk_2.isMobile.any(); }, isTypeMonth: function isTypeMonth() { return this.type === 'month'; } }, watch: { /** * When v-model is changed: * 1. Update internal value. * 2. If it's invalid, validate again. */ value: function value(_value) { this.updateInternalState(_value); this.togglePicker(false); !this.isValid && this.$refs.input.checkHtml5Validity(); }, focusedDate: function focusedDate(value) { if (value) { this.focusedDateData = { month: value.getMonth(), year: value.getFullYear() }; } }, /* * Emit input event on month and/or year change */ 'focusedDateData.month': function focusedDateDataMonth(value) { this.$emit('change-month', value); }, 'focusedDateData.year': function focusedDateDataYear(value) { this.$emit('change-year', value); } }, methods: { /* * Parse string into date */ onChange: function onChange(value) { var date = this.dateParser(value, this); if (date && !isNaN(date)) { this.computedValue = date; } else { // Force refresh input value when not valid date this.computedValue = null; this.$refs.input.newValue = this.computedValue; } }, /* * Format date into string */ formatValue: function formatValue(value) { if (Array.isArray(value)) { var isArrayWithValidDates = Array.isArray(value) && value.every(function (v) { return !isNaN(v); }); return isArrayWithValidDates ? this.dateFormatter(value, this) : null; } return value && !isNaN(value) ? this.dateFormatter(value, this) : null; }, /* * Either decrement month by 1 if not January or decrement year by 1 * and set month to 11 (December) or decrement year when 'month' */ prev: function prev() { if (this.disabled) return; if (this.isTypeMonth) { this.focusedDateData.year -= 1; } else { if (this.focusedDateData.month > 0) { this.focusedDateData.month -= 1; } else { this.focusedDateData.month = 11; this.focusedDateData.year -= 1; } } }, /* * Either increment month by 1 if not December or increment year by 1 * and set month to 0 (January) or increment year when 'month' */ next: function next() { if (this.disabled) return; if (this.isTypeMonth) { this.focusedDateData.year += 1; } else { if (this.focusedDateData.month < 11) { this.focusedDateData.month += 1; } else { this.focusedDateData.month = 0; this.focusedDateData.year += 1; } } }, formatNative: function formatNative(value) { return this.isTypeMonth ? this.formatYYYYMM(value) : this.formatYYYYMMDD(value); }, /* * Format date into string 'YYYY-MM-DD' */ formatYYYYMMDD: function formatYYYYMMDD(value) { var date = new Date(value); if (value && !isNaN(date)) { var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); return year + '-' + ((month < 10 ? '0' : '') + month) + '-' + ((day < 10 ? '0' : '') + day); } return ''; }, /* * Format date into string 'YYYY-MM' */ formatYYYYMM: function formatYYYYMM(value) { var date = new Date(value); if (value && !isNaN(date)) { var year = date.getFullYear(); var month = date.getMonth() + 1; return year + '-' + ((month < 10 ? '0' : '') + month); } return ''; }, /* * Parse date from string */ onChangeNativePicker: function onChangeNativePicker(event) { var date = event.target.value; this.computedValue = date ? new Date(date + ' 00:00:00') : null; }, updateInternalState: function updateInternalState(value) { var currentDate = Array.isArray(value) ? value[0] : !value ? this.dateCreator() : value; this.focusedDateData = { month: currentDate.getMonth(), year: currentDate.getFullYear() }; this.dateSelected = value; }, /* * Toggle datepicker */ togglePicker: function togglePicker(active) { if (this.$refs.dropdown) { this.$refs.dropdown.isActive = typeof active === 'boolean' ? active : !this.$refs.dropdown.isActive; } }, /* * Call default onFocus method and show datepicker */ handleOnFocus: function handleOnFocus(event) { this.onFocus(event); if (this.openOnFocus) { this.togglePicker(true); } }, /* * Toggle dropdown */ toggle: function toggle() { if (this.mobileNative && this.isMobile) { var input = this.$refs.input.$refs.input; input.focus(); input.click(); return; } this.$refs.dropdown.toggle(); }, /* * Avoid dropdown toggle when is already visible */ onInputClick: function onInputClick(event) { if (this.$refs.dropdown.isActive) { event.stopPropagation(); } }, /** * Keypress event that is bound to the document. */ keyPress: function keyPress(event) { // Esc key if (this.$refs.dropdown && this.$refs.dropdown.isActive && event.keyCode === 27) { this.togglePicker(false); } } }, created: function created() { if (typeof window !== 'undefined') { document.addEventListener('keyup', this.keyPress); } }, beforeDestroy: function beforeDestroy() { if (typeof window !== 'undefined') { document.removeEventListener('keyup', this.keyPress); } } }; /* script */ const __vue_script__$3 = script$3; /* template */ var __vue_render__$3 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"datepicker control",class:[_vm.size, {'is-expanded': _vm.expanded}]},[(!_vm.isMobile || _vm.inline)?_c('b-dropdown',{ref:"dropdown",attrs:{"position":_vm.position,"disabled":_vm.disabled,"inline":_vm.inline}},[(!_vm.inline)?_c('b-input',_vm._b({ref:"input",attrs:{"slot":"trigger","autocomplete":"off","value":_vm.formatValue(_vm.computedValue),"placeholder":_vm.placeholder,"size":_vm.size,"icon":_vm.icon,"icon-pack":_vm.iconPack,"rounded":_vm.rounded,"loading":_vm.loading,"disabled":_vm.disabled,"readonly":!_vm.editable,"use-html5-validation":_vm.useHtml5Validation},on:{"focus":_vm.handleOnFocus,"blur":_vm.onBlur},nativeOn:{"click":function($event){_vm.onInputClick($event);},"keyup":function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"enter",13,$event.key)){ return null; }_vm.togglePicker(true);},"change":function($event){_vm.onChange($event.target.value);}},slot:"trigger"},'b-input',_vm.$attrs,false)):_vm._e(),_vm._v(" "),_c('b-dropdown-item',{attrs:{"disabled":_vm.disabled,"custom":""}},[_c('header',{staticClass:"datepicker-header"},[(_vm.$slots.header !== undefined && _vm.$slots.header.length)?[_vm._t("header")]:_c('div',{staticClass:"pagination field is-centered",class:_vm.size},[_c('a',{directives:[{name:"show",rawName:"v-show",value:(!_vm.showPrev && !_vm.disabled),expression:"!showPrev && !disabled"}],staticClass:"pagination-previous",attrs:{"role":"button","href":"#","disabled":_vm.disabled},on:{"click":function($event){$event.preventDefault();_vm.prev($event);},"keydown":[function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"enter",13,$event.key)){ return null; }$event.preventDefault();_vm.prev($event);},function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"space",32,$event.key)){ return null; }$event.preventDefault();_vm.prev($event);}]}},[_c('b-icon',{attrs:{"icon":"chevron-left","pack":_vm.iconPack,"both":"","type":"is-primary is-clickable"}})],1),_vm._v(" "),_c('a',{directives:[{name:"show",rawName:"v-show",value:(!_vm.showNext && !_vm.disabled),expression:"!showNext && !disabled"}],staticClass:"pagination-next",attrs:{"role":"button","href":"#","disabled":_vm.disabled},on:{"click":function($event){$event.preventDefault();_vm.next($event);},"keydown":[function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"enter",13,$event.key)){ return null; }$event.preventDefault();_vm.next($event);},function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"space",32,$event.key)){ return null; }$event.preventDefault();_vm.next($event);}]}},[_c('b-icon',{attrs:{"icon":"chevron-right","pack":_vm.iconPack,"both":"","type":"is-primary is-clickable"}})],1),_vm._v(" "),_c('div',{staticClass:"pagination-list"},[_c('b-field',[(!_vm.isTypeMonth)?_c('b-select',{attrs:{"disabled":_vm.disabled,"size":_vm.size},model:{value:(_vm.focusedDateData.month),callback:function ($$v) {_vm.$set(_vm.focusedDateData, "month", $$v);},expression:"focusedDateData.month"}},_vm._l((_vm.monthNames),function(month,index){return _c('option',{key:month,domProps:{"value":index}},[_vm._v("\n "+_vm._s(month)+"\n ")])})):_vm._e(),_vm._v(" "),_c('b-select',{attrs:{"disabled":_vm.disabled,"size":_vm.size},model:{value:(_vm.focusedDateData.year),callback:function ($$v) {_vm.$set(_vm.focusedDateData, "year", $$v);},expression:"focusedDateData.year"}},_vm._l((_vm.listOfYears),function(year){return _c('option',{key:year,domProps:{"value":year}},[_vm._v("\n "+_vm._s(year)+"\n ")])}))],1)],1)])],2),_vm._v(" "),(!_vm.isTypeMonth)?_c('div',{staticClass:"datepicker-content"},[_c('b-datepicker-table',{attrs:{"day-names":_vm.dayNames,"month-names":_vm.monthNames,"first-day-of-week":_vm.firstDayOfWeek,"rules-for-first-week":_vm.rulesForFirstWeek,"min-date":_vm.minDate,"max-date":_vm.maxDate,"focused":_vm.focusedDateData,"disabled":_vm.disabled,"unselectable-dates":_vm.unselectableDates,"unselectable-days-of-week":_vm.unselectableDaysOfWeek,"selectable-dates":_vm.selectableDates,"events":_vm.events,"indicators":_vm.indicators,"date-creator":_vm.dateCreator,"type-month":_vm.isTypeMonth,"nearby-month-days":_vm.nearbyMonthDays,"nearby-selectable-month-days":_vm.nearbySelectableMonthDays,"show-week-number":_vm.showWeekNumber,"range":_vm.range},on:{"close":function($event){_vm.togglePicker(false);}},model:{value:(_vm.computedValue),callback:function ($$v) {_vm.computedValue=$$v;},expression:"computedValue"}})],1):_c('div',[_c('b-datepicker-month',{attrs:{"month-names":_vm.monthNames,"min-date":_vm.minDate,"max-date":_vm.maxDate,"focused":_vm.focusedDateData,"disabled":_vm.disabled,"unselectable-dates":_vm.unselectableDates,"unselectable-days-of-week":_vm.unselectableDaysOfWeek,"selectable-dates":_vm.selectableDates,"events":_vm.events,"indicators":_vm.indicators,"date-creator":_vm.dateCreator},on:{"close":function($event){_vm.togglePicker(false);}},model:{value:(_vm.computedValue),callback:function ($$v) {_vm.computedValue=$$v;},expression:"computedValue"}})],1),_vm._v(" "),(_vm.$slots.default !== undefined && _vm.$slots.default.length)?_c('footer',{staticClass:"datepicker-footer"},[_vm._t("default")],2):_vm._e()])],1):_c('b-input',_vm._b({ref:"input",attrs:{"type":!_vm.isTypeMonth ? 'date' : 'month',"autocomplete":"off","value":_vm.formatNative(_vm.computedValue),"placeholder":_vm.placeholder,"size":_vm.size,"icon":_vm.icon,"icon-pack":_vm.iconPack,"loading":_vm.loading,"max":_vm.formatNative(_vm.maxDate),"min":_vm.formatNative(_vm.minDate),"disabled":_vm.disabled,"readonly":false,"show-week-number":_vm.showWeekNumber,"use-html5-validation":_vm.useHtml5Validation},on:{"focus":_vm.handleOnFocus,"blur":_vm.onBlur},nativeOn:{"change":function($event){_vm.onChangeNativePicker($event);}}},'b-input',_vm.$attrs,false))],1)}; var __vue_staticRenderFns__$3 = []; /* style */ const __vue_inject_styles__$3 = undefined; /* scoped */ const __vue_scope_id__$3 = undefined; /* module identifier */ const __vue_module_identifier__$3 = undefined; /* functional template */ const __vue_is_functional_template__$3 = false; /* style inject */ /* style inject SSR */ var Datepicker = __chunk_6.__vue_normalize__( { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 }, __vue_inject_styles__$3, __vue_script__$3, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, undefined, undefined ); var Plugin = { install: function install(Vue) { __chunk_6.registerComponent(Vue, Datepicker); } }; __chunk_6.use(Plugin); exports.Datepicker = Datepicker; exports.default = Plugin;