buefy 0.9.26 → 0.9.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/buefy.css +15904 -0
- package/dist/buefy.esm.js +17883 -0
- package/dist/buefy.esm.min.js +2 -0
- package/dist/buefy.js +17967 -0
- package/dist/buefy.min.css +1 -0
- package/dist/buefy.min.js +2 -0
- package/dist/cjs/Autocomplete-7a39c5ce.js +673 -0
- package/dist/cjs/Button-01827709.js +114 -0
- package/dist/cjs/CheckRadioMixin-c910f2ed.js +45 -0
- package/dist/cjs/Checkbox-43f54cc7.js +70 -0
- package/dist/cjs/Datepicker-680659bc.js +1679 -0
- package/dist/cjs/DropdownItem-422f8c34.js +559 -0
- package/dist/cjs/Field-4557b10c.js +315 -0
- package/dist/cjs/FormElementMixin-193a88b8.js +163 -0
- package/dist/cjs/Icon-78961800.js +189 -0
- package/dist/cjs/Image-c4bcd9b3.js +299 -0
- package/dist/cjs/InjectedChildMixin-d6bf7f91.js +135 -0
- package/dist/cjs/Input-e5a72d97.js +248 -0
- package/dist/cjs/Loading-6f2c7075.js +150 -0
- package/dist/cjs/MessageMixin-8d959514.js +146 -0
- package/dist/cjs/Modal-4cf07210.js +278 -0
- package/dist/cjs/NoticeMixin-01121bd2.js +154 -0
- package/dist/cjs/Pagination-d6b3fb85.js +413 -0
- package/dist/cjs/Select-2b3879bc.js +100 -0
- package/dist/cjs/SlotComponent-4fb48389.js +53 -0
- package/dist/cjs/TabbedChildMixin-907cad32.js +222 -0
- package/dist/cjs/Tag-437f65fb.js +154 -0
- package/dist/cjs/Timepicker-498fa02b.js +67 -0
- package/dist/cjs/TimepickerMixin-6c1a4ab4.js +661 -0
- package/dist/cjs/Tooltip-c1df7ee3.js +370 -0
- package/dist/cjs/_rollupPluginBabelHelpers-8b2e54ad.js +365 -0
- package/dist/cjs/autocomplete.js +22 -0
- package/dist/cjs/breadcrumb.js +139 -0
- package/dist/cjs/button.js +20 -0
- package/dist/cjs/carousel.js +662 -0
- package/dist/cjs/checkbox.js +86 -0
- package/dist/cjs/clockpicker.js +461 -0
- package/dist/cjs/collapse.js +128 -0
- package/dist/cjs/colorpicker.js +23 -0
- package/dist/cjs/config-8cfb5a4a.js +81 -0
- package/dist/cjs/config.js +18 -0
- package/dist/cjs/datepicker.js +27 -0
- package/dist/cjs/datetimepicker.js +377 -0
- package/dist/cjs/dialog.js +308 -0
- package/dist/cjs/dropdown.js +23 -0
- package/dist/cjs/field.js +18 -0
- package/dist/cjs/helpers.js +375 -0
- package/dist/cjs/icon.js +19 -0
- package/dist/cjs/image.js +19 -0
- package/dist/cjs/index-99d1c930.js +1633 -0
- package/dist/cjs/index.js +216 -0
- package/dist/cjs/input.js +21 -0
- package/dist/cjs/loading.js +38 -0
- package/dist/cjs/menu.js +304 -0
- package/dist/cjs/message.js +67 -0
- package/dist/cjs/modal.js +59 -0
- package/dist/cjs/navbar.js +679 -0
- package/dist/cjs/notification.js +181 -0
- package/dist/cjs/numberinput.js +278 -0
- package/dist/cjs/pagination.js +22 -0
- package/dist/cjs/plugins-7f41b028.js +94 -0
- package/dist/cjs/progress.js +239 -0
- package/dist/cjs/radio.js +130 -0
- package/dist/cjs/rate.js +156 -0
- package/dist/cjs/select.js +21 -0
- package/dist/cjs/sidebar.js +303 -0
- package/dist/cjs/skeleton.js +111 -0
- package/dist/cjs/slider.js +603 -0
- package/dist/cjs/snackbar.js +132 -0
- package/dist/cjs/ssr-20dba236.js +10 -0
- package/dist/cjs/steps.js +278 -0
- package/dist/cjs/switch.js +139 -0
- package/dist/cjs/table.js +1695 -0
- package/dist/cjs/tabs.js +214 -0
- package/dist/cjs/tag.js +70 -0
- package/dist/cjs/taginput.js +331 -0
- package/dist/cjs/timepicker.js +28 -0
- package/dist/cjs/toast.js +106 -0
- package/dist/cjs/tooltip.js +19 -0
- package/dist/cjs/trapFocus-261420b0.js +49 -0
- package/dist/cjs/upload.js +205 -0
- package/dist/components/autocomplete/index.js +1620 -0
- package/dist/components/autocomplete/index.min.js +2 -0
- package/dist/components/breadcrumb/index.js +297 -0
- package/dist/components/breadcrumb/index.min.js +2 -0
- package/dist/components/button/index.js +569 -0
- package/dist/components/button/index.min.js +2 -0
- package/dist/components/carousel/index.js +1629 -0
- package/dist/components/carousel/index.min.js +2 -0
- package/dist/components/checkbox/index.js +279 -0
- package/dist/components/checkbox/index.min.js +2 -0
- package/dist/components/clockpicker/index.js +3131 -0
- package/dist/components/clockpicker/index.min.js +2 -0
- package/dist/components/collapse/index.js +217 -0
- package/dist/components/collapse/index.min.js +2 -0
- package/dist/components/colorpicker/index.js +4249 -0
- package/dist/components/colorpicker/index.min.js +2 -0
- package/dist/components/datepicker/index.js +3845 -0
- package/dist/components/datepicker/index.min.js +2 -0
- package/dist/components/datetimepicker/index.js +4902 -0
- package/dist/components/datetimepicker/index.min.js +2 -0
- package/dist/components/dialog/index.js +1168 -0
- package/dist/components/dialog/index.min.js +2 -0
- package/dist/components/dropdown/index.js +1043 -0
- package/dist/components/dropdown/index.min.js +2 -0
- package/dist/components/field/index.js +511 -0
- package/dist/components/field/index.min.js +2 -0
- package/dist/components/icon/index.js +463 -0
- package/dist/components/icon/index.min.js +2 -0
- package/dist/components/image/index.js +513 -0
- package/dist/components/image/index.min.js +2 -0
- package/dist/components/input/index.js +862 -0
- package/dist/components/input/index.min.js +2 -0
- package/dist/components/loading/index.js +366 -0
- package/dist/components/loading/index.min.js +2 -0
- package/dist/components/menu/index.js +748 -0
- package/dist/components/menu/index.min.js +2 -0
- package/dist/components/message/index.js +650 -0
- package/dist/components/message/index.min.js +2 -0
- package/dist/components/modal/index.js +624 -0
- package/dist/components/modal/index.min.js +2 -0
- package/dist/components/navbar/index.js +805 -0
- package/dist/components/navbar/index.min.js +2 -0
- package/dist/components/notification/index.js +923 -0
- package/dist/components/notification/index.min.js +2 -0
- package/dist/components/numberinput/index.js +1119 -0
- package/dist/components/numberinput/index.min.js +2 -0
- package/dist/components/pagination/index.js +868 -0
- package/dist/components/pagination/index.min.js +2 -0
- package/dist/components/progress/index.js +621 -0
- package/dist/components/progress/index.min.js +2 -0
- package/dist/components/radio/index.js +260 -0
- package/dist/components/radio/index.min.js +2 -0
- package/dist/components/rate/index.js +600 -0
- package/dist/components/rate/index.min.js +2 -0
- package/dist/components/select/index.js +715 -0
- package/dist/components/select/index.min.js +2 -0
- package/dist/components/sidebar/index.js +467 -0
- package/dist/components/sidebar/index.min.js +2 -0
- package/dist/components/skeleton/index.js +200 -0
- package/dist/components/skeleton/index.min.js +2 -0
- package/dist/components/slider/index.js +1264 -0
- package/dist/components/slider/index.min.js +2 -0
- package/dist/components/snackbar/index.js +527 -0
- package/dist/components/snackbar/index.min.js +2 -0
- package/dist/components/steps/index.js +1180 -0
- package/dist/components/steps/index.min.js +2 -0
- package/dist/components/switch/index.js +297 -0
- package/dist/components/switch/index.min.js +2 -0
- package/dist/components/table/index.js +3480 -0
- package/dist/components/table/index.min.js +2 -0
- package/dist/components/tabs/index.js +1116 -0
- package/dist/components/tabs/index.min.js +2 -0
- package/dist/components/tag/index.js +307 -0
- package/dist/components/tag/index.min.js +2 -0
- package/dist/components/taginput/index.js +2104 -0
- package/dist/components/taginput/index.min.js +2 -0
- package/dist/components/timepicker/index.js +2843 -0
- package/dist/components/timepicker/index.min.js +2 -0
- package/dist/components/toast/index.js +501 -0
- package/dist/components/toast/index.min.js +2 -0
- package/dist/components/tooltip/index.js +630 -0
- package/dist/components/tooltip/index.min.js +2 -0
- package/dist/components/upload/index.js +525 -0
- package/dist/components/upload/index.min.js +2 -0
- package/dist/esm/Autocomplete-1a6e8770.js +671 -0
- package/dist/esm/Button-521f6efc.js +112 -0
- package/dist/esm/CheckRadioMixin-e726a83c.js +43 -0
- package/dist/esm/Checkbox-1d02686e.js +68 -0
- package/dist/esm/Datepicker-0ae1e826.js +1677 -0
- package/dist/esm/DropdownItem-55682322.js +556 -0
- package/dist/esm/Field-3ceba31e.js +313 -0
- package/dist/esm/FormElementMixin-b223d3c7.js +161 -0
- package/dist/esm/Icon-60d47b31.js +187 -0
- package/dist/esm/Image-75808acb.js +297 -0
- package/dist/esm/InjectedChildMixin-b4220787.js +130 -0
- package/dist/esm/Input-20612b63.js +246 -0
- package/dist/esm/Loading-ae028ea5.js +148 -0
- package/dist/esm/MessageMixin-d577a9f5.js +144 -0
- package/dist/esm/Modal-7da7641f.js +276 -0
- package/dist/esm/NoticeMixin-bd6f61d9.js +152 -0
- package/dist/esm/Pagination-68f12c1e.js +409 -0
- package/dist/esm/Select-97781d4e.js +98 -0
- package/dist/esm/SlotComponent-8871a20f.js +51 -0
- package/dist/esm/TabbedChildMixin-bcb13767.js +219 -0
- package/dist/esm/Tag-6365aa46.js +152 -0
- package/dist/esm/Timepicker-38480bbc.js +65 -0
- package/dist/esm/TimepickerMixin-d736b0a9.js +659 -0
- package/dist/esm/Tooltip-d98a769c.js +368 -0
- package/dist/esm/_rollupPluginBabelHelpers-df313029.js +350 -0
- package/dist/esm/autocomplete.js +18 -0
- package/dist/esm/breadcrumb.js +133 -0
- package/dist/esm/button.js +16 -0
- package/dist/esm/carousel.js +655 -0
- package/dist/esm/checkbox.js +81 -0
- package/dist/esm/clockpicker.js +456 -0
- package/dist/esm/collapse.js +123 -0
- package/dist/esm/colorpicker.js +14 -0
- package/dist/esm/config-e7d4b9c2.js +78 -0
- package/dist/esm/config.js +14 -0
- package/dist/esm/datepicker.js +23 -0
- package/dist/esm/datetimepicker.js +372 -0
- package/dist/esm/dialog.js +302 -0
- package/dist/esm/dropdown.js +18 -0
- package/dist/esm/field.js +14 -0
- package/dist/esm/helpers.js +348 -0
- package/dist/esm/icon.js +15 -0
- package/dist/esm/image.js +15 -0
- package/dist/esm/index-903f63ea.js +1629 -0
- package/dist/esm/index.js +182 -0
- package/dist/esm/input.js +17 -0
- package/dist/esm/loading.js +33 -0
- package/dist/esm/menu.js +297 -0
- package/dist/esm/message.js +62 -0
- package/dist/esm/modal.js +54 -0
- package/dist/esm/navbar.js +672 -0
- package/dist/esm/notification.js +175 -0
- package/dist/esm/numberinput.js +273 -0
- package/dist/esm/pagination.js +17 -0
- package/dist/esm/plugins-218aea86.js +89 -0
- package/dist/esm/progress.js +233 -0
- package/dist/esm/radio.js +124 -0
- package/dist/esm/rate.js +151 -0
- package/dist/esm/select.js +17 -0
- package/dist/esm/sidebar.js +298 -0
- package/dist/esm/skeleton.js +106 -0
- package/dist/esm/slider.js +597 -0
- package/dist/esm/snackbar.js +126 -0
- package/dist/esm/ssr-b847d137.js +7 -0
- package/dist/esm/steps.js +272 -0
- package/dist/esm/switch.js +134 -0
- package/dist/esm/table.js +1689 -0
- package/dist/esm/tabs.js +208 -0
- package/dist/esm/tag.js +65 -0
- package/dist/esm/taginput.js +326 -0
- package/dist/esm/timepicker.js +24 -0
- package/dist/esm/toast.js +100 -0
- package/dist/esm/tooltip.js +15 -0
- package/dist/esm/trapFocus-f0736873.js +47 -0
- package/dist/esm/upload.js +200 -0
- package/dist/vetur/attributes.json +3238 -0
- package/dist/vetur/tags.json +1183 -0
- package/package.json +3 -3
- package/src/components/autocomplete/Autocomplete.spec.js +16 -0
- package/src/components/autocomplete/Autocomplete.vue +9 -3
- package/src/components/colorpicker/ColorpickerHSLRepresentationSquare.vue +2 -0
- package/src/components/colorpicker/ColorpickerHSLRepresentationTriangle.vue +2 -0
- package/src/components/dropdown/Dropdown.vue +51 -3
- package/src/components/numberinput/Numberinput.vue +4 -0
- package/src/components/sidebar/Sidebar.vue +1 -0
- package/src/components/slider/Slider.vue +7 -2
- package/src/components/slider/SliderThumb.vue +8 -0
- package/src/components/table/Table.vue +4 -1
- package/src/components/table/TableColumn.spec.js +51 -0
- package/src/components/table/TableColumn.vue +8 -1
- package/src/components/taginput/Taginput.vue +7 -2
- package/src/components/tooltip/Tooltip.vue +10 -3
- package/src/scss/components/_dropdown.scss +4 -2
|
@@ -0,0 +1,1677 @@
|
|
|
1
|
+
import { _ as _defineProperty, e as _toConsumableArray } from './_rollupPluginBabelHelpers-df313029.js';
|
|
2
|
+
import { F as FormElementMixin } from './FormElementMixin-b223d3c7.js';
|
|
3
|
+
import { isDefined, getMonthNames, getWeekdayNames, isMobile, matchWithGroups } from './helpers.js';
|
|
4
|
+
import { c as config } from './config-e7d4b9c2.js';
|
|
5
|
+
import { D as DropdownItem, a as Dropdown } from './DropdownItem-55682322.js';
|
|
6
|
+
import { I as Input } from './Input-20612b63.js';
|
|
7
|
+
import { F as Field } from './Field-3ceba31e.js';
|
|
8
|
+
import { S as Select } from './Select-97781d4e.js';
|
|
9
|
+
import { I as Icon } from './Icon-60d47b31.js';
|
|
10
|
+
import { n as normalizeComponent } from './plugins-218aea86.js';
|
|
11
|
+
|
|
12
|
+
//
|
|
13
|
+
//
|
|
14
|
+
//
|
|
15
|
+
//
|
|
16
|
+
//
|
|
17
|
+
//
|
|
18
|
+
//
|
|
19
|
+
//
|
|
20
|
+
//
|
|
21
|
+
//
|
|
22
|
+
//
|
|
23
|
+
//
|
|
24
|
+
//
|
|
25
|
+
//
|
|
26
|
+
//
|
|
27
|
+
//
|
|
28
|
+
//
|
|
29
|
+
//
|
|
30
|
+
//
|
|
31
|
+
//
|
|
32
|
+
//
|
|
33
|
+
//
|
|
34
|
+
//
|
|
35
|
+
//
|
|
36
|
+
//
|
|
37
|
+
//
|
|
38
|
+
//
|
|
39
|
+
//
|
|
40
|
+
//
|
|
41
|
+
//
|
|
42
|
+
//
|
|
43
|
+
//
|
|
44
|
+
//
|
|
45
|
+
//
|
|
46
|
+
//
|
|
47
|
+
//
|
|
48
|
+
//
|
|
49
|
+
//
|
|
50
|
+
//
|
|
51
|
+
//
|
|
52
|
+
//
|
|
53
|
+
//
|
|
54
|
+
//
|
|
55
|
+
//
|
|
56
|
+
//
|
|
57
|
+
//
|
|
58
|
+
//
|
|
59
|
+
//
|
|
60
|
+
//
|
|
61
|
+
//
|
|
62
|
+
|
|
63
|
+
var script$3 = {
|
|
64
|
+
name: 'BDatepickerTableRow',
|
|
65
|
+
inject: {
|
|
66
|
+
$datepicker: {
|
|
67
|
+
name: '$datepicker',
|
|
68
|
+
default: false
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
props: {
|
|
72
|
+
selectedDate: {
|
|
73
|
+
type: [Date, Array]
|
|
74
|
+
},
|
|
75
|
+
hoveredDateRange: Array,
|
|
76
|
+
day: {
|
|
77
|
+
type: Number
|
|
78
|
+
},
|
|
79
|
+
week: {
|
|
80
|
+
type: Array,
|
|
81
|
+
required: true
|
|
82
|
+
},
|
|
83
|
+
month: {
|
|
84
|
+
type: Number,
|
|
85
|
+
required: true
|
|
86
|
+
},
|
|
87
|
+
minDate: Date,
|
|
88
|
+
maxDate: Date,
|
|
89
|
+
disabled: Boolean,
|
|
90
|
+
unselectableDates: [Array, Function],
|
|
91
|
+
unselectableDaysOfWeek: Array,
|
|
92
|
+
selectableDates: [Array, Function],
|
|
93
|
+
events: Array,
|
|
94
|
+
indicators: String,
|
|
95
|
+
dateCreator: Function,
|
|
96
|
+
nearbyMonthDays: Boolean,
|
|
97
|
+
nearbySelectableMonthDays: Boolean,
|
|
98
|
+
showWeekNumber: Boolean,
|
|
99
|
+
weekNumberClickable: Boolean,
|
|
100
|
+
range: Boolean,
|
|
101
|
+
multiple: Boolean,
|
|
102
|
+
rulesForFirstWeek: Number,
|
|
103
|
+
firstDayOfWeek: Number
|
|
104
|
+
},
|
|
105
|
+
watch: {
|
|
106
|
+
day: function day(_day) {
|
|
107
|
+
var _this = this;
|
|
108
|
+
var refName = "day-".concat(this.month, "-").concat(_day);
|
|
109
|
+
this.$nextTick(function () {
|
|
110
|
+
if (_this.$refs[refName] && _this.$refs[refName].length > 0) {
|
|
111
|
+
if (_this.$refs[refName][0]) {
|
|
112
|
+
_this.$refs[refName][0].focus();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}); // $nextTick needed when month is changed
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
methods: {
|
|
119
|
+
firstWeekOffset: function firstWeekOffset(year, dow, doy) {
|
|
120
|
+
// first-week day -- which january is always in the first week (4 for iso, 1 for other)
|
|
121
|
+
var fwd = 7 + dow - doy;
|
|
122
|
+
// first-week day local weekday -- which local weekday is fwd
|
|
123
|
+
var firstJanuary = new Date(year, 0, fwd);
|
|
124
|
+
var fwdlw = (7 + firstJanuary.getDay() - dow) % 7;
|
|
125
|
+
return -fwdlw + fwd - 1;
|
|
126
|
+
},
|
|
127
|
+
daysInYear: function daysInYear(year) {
|
|
128
|
+
return this.isLeapYear(year) ? 366 : 365;
|
|
129
|
+
},
|
|
130
|
+
isLeapYear: function isLeapYear(year) {
|
|
131
|
+
return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
|
|
132
|
+
},
|
|
133
|
+
getSetDayOfYear: function getSetDayOfYear(input) {
|
|
134
|
+
return Math.round((input - new Date(input.getFullYear(), 0, 1)) / 864e5) + 1;
|
|
135
|
+
},
|
|
136
|
+
weeksInYear: function weeksInYear(year, dow, doy) {
|
|
137
|
+
var weekOffset = this.firstWeekOffset(year, dow, doy);
|
|
138
|
+
var weekOffsetNext = this.firstWeekOffset(year + 1, dow, doy);
|
|
139
|
+
return (this.daysInYear(year) - weekOffset + weekOffsetNext) / 7;
|
|
140
|
+
},
|
|
141
|
+
getWeekNumber: function getWeekNumber(mom) {
|
|
142
|
+
var dow = this.firstDayOfWeek; // first day of week
|
|
143
|
+
// Rules for the first week : 1 for the 1st January, 4 for the 4th January
|
|
144
|
+
var doy = this.rulesForFirstWeek;
|
|
145
|
+
var weekOffset = this.firstWeekOffset(mom.getFullYear(), dow, doy);
|
|
146
|
+
var week = Math.floor((this.getSetDayOfYear(mom) - weekOffset - 1) / 7) + 1;
|
|
147
|
+
var resWeek;
|
|
148
|
+
var resYear;
|
|
149
|
+
if (week < 1) {
|
|
150
|
+
resYear = mom.getFullYear() - 1;
|
|
151
|
+
resWeek = week + this.weeksInYear(resYear, dow, doy);
|
|
152
|
+
} else if (week > this.weeksInYear(mom.getFullYear(), dow, doy)) {
|
|
153
|
+
resWeek = week - this.weeksInYear(mom.getFullYear(), dow, doy);
|
|
154
|
+
resYear = mom.getFullYear() + 1;
|
|
155
|
+
} else {
|
|
156
|
+
resYear = mom.getFullYear();
|
|
157
|
+
resWeek = week;
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
week: resWeek,
|
|
161
|
+
year: resYear
|
|
162
|
+
};
|
|
163
|
+
},
|
|
164
|
+
clickWeekNumber: function clickWeekNumber(weekData) {
|
|
165
|
+
if (this.weekNumberClickable) {
|
|
166
|
+
this.$datepicker.$emit('week-number-click', weekData.week, weekData.year);
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
/*
|
|
170
|
+
* Check that selected day is within earliest/latest params and
|
|
171
|
+
* is within this month
|
|
172
|
+
*/
|
|
173
|
+
selectableDate: function selectableDate(day) {
|
|
174
|
+
var validity = [];
|
|
175
|
+
if (this.minDate) {
|
|
176
|
+
validity.push(day >= this.minDate);
|
|
177
|
+
}
|
|
178
|
+
if (this.maxDate) {
|
|
179
|
+
validity.push(day <= this.maxDate);
|
|
180
|
+
}
|
|
181
|
+
if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) {
|
|
182
|
+
validity.push(day.getMonth() === this.month);
|
|
183
|
+
}
|
|
184
|
+
if (this.selectableDates) {
|
|
185
|
+
if (typeof this.selectableDates === 'function') {
|
|
186
|
+
if (this.selectableDates(day)) {
|
|
187
|
+
return true;
|
|
188
|
+
} else {
|
|
189
|
+
validity.push(false);
|
|
190
|
+
}
|
|
191
|
+
} else {
|
|
192
|
+
for (var i = 0; i < this.selectableDates.length; i++) {
|
|
193
|
+
var enabledDate = this.selectableDates[i];
|
|
194
|
+
if (day.getDate() === enabledDate.getDate() && day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) {
|
|
195
|
+
return true;
|
|
196
|
+
} else {
|
|
197
|
+
validity.push(false);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (this.unselectableDates) {
|
|
203
|
+
if (typeof this.unselectableDates === 'function') {
|
|
204
|
+
validity.push(!this.unselectableDates(day));
|
|
205
|
+
} else {
|
|
206
|
+
for (var _i = 0; _i < this.unselectableDates.length; _i++) {
|
|
207
|
+
var disabledDate = this.unselectableDates[_i];
|
|
208
|
+
validity.push(day.getDate() !== disabledDate.getDate() || day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth());
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (this.unselectableDaysOfWeek) {
|
|
213
|
+
for (var _i2 = 0; _i2 < this.unselectableDaysOfWeek.length; _i2++) {
|
|
214
|
+
var dayOfWeek = this.unselectableDaysOfWeek[_i2];
|
|
215
|
+
validity.push(day.getDay() !== dayOfWeek);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return validity.indexOf(false) < 0;
|
|
219
|
+
},
|
|
220
|
+
/*
|
|
221
|
+
* Emit select event with chosen date as payload
|
|
222
|
+
*/
|
|
223
|
+
emitChosenDate: function emitChosenDate(day) {
|
|
224
|
+
if (this.disabled) return;
|
|
225
|
+
if (this.selectableDate(day)) {
|
|
226
|
+
this.$emit('select', day);
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
eventsDateMatch: function eventsDateMatch(day) {
|
|
230
|
+
if (!this.events || !this.events.length) return false;
|
|
231
|
+
var dayEvents = [];
|
|
232
|
+
for (var i = 0; i < this.events.length; i++) {
|
|
233
|
+
if (this.events[i].date.getDay() === day.getDay()) {
|
|
234
|
+
dayEvents.push(this.events[i]);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (!dayEvents.length) {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
return dayEvents;
|
|
241
|
+
},
|
|
242
|
+
/*
|
|
243
|
+
* Build classObject for cell using validations
|
|
244
|
+
*/
|
|
245
|
+
classObject: function classObject(day) {
|
|
246
|
+
function dateMatch(dateOne, dateTwo, multiple) {
|
|
247
|
+
// if either date is null or undefined, return false
|
|
248
|
+
// if using multiple flag, return false
|
|
249
|
+
if (!dateOne || !dateTwo || multiple) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
if (Array.isArray(dateTwo)) {
|
|
253
|
+
return dateTwo.some(function (date) {
|
|
254
|
+
return dateOne.getDate() === date.getDate() && dateOne.getFullYear() === date.getFullYear() && dateOne.getMonth() === date.getMonth();
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
return dateOne.getDate() === dateTwo.getDate() && dateOne.getFullYear() === dateTwo.getFullYear() && dateOne.getMonth() === dateTwo.getMonth();
|
|
258
|
+
}
|
|
259
|
+
function dateWithin(dateOne, dates, multiple) {
|
|
260
|
+
if (!Array.isArray(dates) || multiple) {
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
return dateOne > dates[0] && dateOne < dates[1];
|
|
264
|
+
}
|
|
265
|
+
return _defineProperty({
|
|
266
|
+
'is-selected': dateMatch(day, this.selectedDate) || dateWithin(day, this.selectedDate, this.multiple),
|
|
267
|
+
'is-first-selected': dateMatch(day, Array.isArray(this.selectedDate) && this.selectedDate[0], this.multiple),
|
|
268
|
+
'is-within-selected': dateWithin(day, this.selectedDate, this.multiple),
|
|
269
|
+
'is-last-selected': dateMatch(day, Array.isArray(this.selectedDate) && this.selectedDate[1], this.multiple),
|
|
270
|
+
'is-within-hovered-range': this.hoveredDateRange && this.hoveredDateRange.length === 2 && (dateMatch(day, this.hoveredDateRange) || dateWithin(day, this.hoveredDateRange)),
|
|
271
|
+
'is-first-hovered': dateMatch(day, Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[0]),
|
|
272
|
+
'is-within-hovered': dateWithin(day, this.hoveredDateRange),
|
|
273
|
+
'is-last-hovered': dateMatch(day, Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[1]),
|
|
274
|
+
'is-today': dateMatch(day, this.dateCreator()),
|
|
275
|
+
'is-selectable': this.selectableDate(day) && !this.disabled,
|
|
276
|
+
'is-unselectable': !this.selectableDate(day) || this.disabled,
|
|
277
|
+
'is-invisible': !this.nearbyMonthDays && day.getMonth() !== this.month,
|
|
278
|
+
'is-nearby': this.nearbySelectableMonthDays && day.getMonth() !== this.month,
|
|
279
|
+
'has-event': this.eventsDateMatch(day)
|
|
280
|
+
}, this.indicators, this.eventsDateMatch(day));
|
|
281
|
+
},
|
|
282
|
+
setRangeHoverEndDate: function setRangeHoverEndDate(day) {
|
|
283
|
+
if (this.range) {
|
|
284
|
+
this.$emit('rangeHoverEndDate', day);
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
manageKeydown: function manageKeydown(event, weekDay) {
|
|
288
|
+
// https://developer.mozilla.org/fr/docs/Web/API/KeyboardEvent/key/Key_Values#Navigation_keys
|
|
289
|
+
var key = event.key;
|
|
290
|
+
var preventDefault = true;
|
|
291
|
+
switch (key) {
|
|
292
|
+
case 'Tab':
|
|
293
|
+
{
|
|
294
|
+
preventDefault = false;
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
case ' ':
|
|
298
|
+
case 'Space':
|
|
299
|
+
case 'Spacebar':
|
|
300
|
+
case 'Enter':
|
|
301
|
+
{
|
|
302
|
+
this.emitChosenDate(weekDay);
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
case 'ArrowLeft':
|
|
306
|
+
case 'Left':
|
|
307
|
+
{
|
|
308
|
+
this.changeFocus(weekDay, -1);
|
|
309
|
+
break;
|
|
310
|
+
}
|
|
311
|
+
case 'ArrowRight':
|
|
312
|
+
case 'Right':
|
|
313
|
+
{
|
|
314
|
+
this.changeFocus(weekDay, 1);
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
case 'ArrowUp':
|
|
318
|
+
case 'Up':
|
|
319
|
+
{
|
|
320
|
+
this.changeFocus(weekDay, -7);
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
case 'ArrowDown':
|
|
324
|
+
case 'Down':
|
|
325
|
+
{
|
|
326
|
+
this.changeFocus(weekDay, 7);
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
if (preventDefault) {
|
|
331
|
+
event.preventDefault();
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
changeFocus: function changeFocus(day, inc) {
|
|
335
|
+
var nextDay = new Date(day.getTime());
|
|
336
|
+
nextDay.setDate(day.getDate() + inc);
|
|
337
|
+
while ((!this.minDate || nextDay > this.minDate) && (!this.maxDate || nextDay < this.maxDate) && !this.selectableDate(nextDay)) {
|
|
338
|
+
nextDay.setDate(nextDay.getDate() + Math.sign(inc));
|
|
339
|
+
}
|
|
340
|
+
this.setRangeHoverEndDate(nextDay);
|
|
341
|
+
this.$emit('change-focus', nextDay);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
/* script */
|
|
347
|
+
const __vue_script__$3 = script$3;
|
|
348
|
+
|
|
349
|
+
/* template */
|
|
350
|
+
var __vue_render__$3 = 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",class:{'is-clickable': _vm.weekNumberClickable },on:{"click":function($event){$event.preventDefault();_vm.clickWeekNumber(_vm.getWeekNumber(_vm.week[6]));}}},[_c('span',[_vm._v(_vm._s(_vm.getWeekNumber(_vm.week[6]).week))])]):_vm._e(),_vm._l((_vm.week),function(weekDay,index){return [(_vm.selectableDate(weekDay) && !_vm.disabled)?_c('a',{key:index,ref:("day-" + (weekDay.getMonth()) + "-" + (weekDay.getDate())),refInFor:true,staticClass:"datepicker-cell",class:_vm.classObject(weekDay),attrs:{"role":"button","href":"#","disabled":_vm.disabled,"tabindex":_vm.day === weekDay.getDate() && _vm.month === weekDay.getMonth() ? null : -1},on:{"click":function($event){$event.preventDefault();return _vm.emitChosenDate(weekDay)},"mouseenter":function($event){return _vm.setRangeHoverEndDate(weekDay)},"keydown":function($event){return _vm.manageKeydown($event, weekDay)}}},[_c('span',[_vm._v(_vm._s(weekDay.getDate()))]),(_vm.eventsDateMatch(weekDay))?_c('div',{staticClass:"events"},_vm._l((_vm.eventsDateMatch(weekDay)),function(event,index){return _c('div',{key:index,staticClass:"event",class:event.type})}),0):_vm._e()]):_c('div',{key:index,staticClass:"datepicker-cell",class:_vm.classObject(weekDay)},[_c('span',[_vm._v(_vm._s(weekDay.getDate()))]),(_vm.eventsDateMatch(weekDay))?_c('div',{staticClass:"events"},_vm._l((_vm.eventsDateMatch(weekDay)),function(event,index){return _c('div',{key:index,staticClass:"event",class:event.type})}),0):_vm._e()])]})],2)};
|
|
351
|
+
var __vue_staticRenderFns__$3 = [];
|
|
352
|
+
|
|
353
|
+
/* style */
|
|
354
|
+
const __vue_inject_styles__$3 = undefined;
|
|
355
|
+
/* scoped */
|
|
356
|
+
const __vue_scope_id__$3 = undefined;
|
|
357
|
+
/* module identifier */
|
|
358
|
+
const __vue_module_identifier__$3 = undefined;
|
|
359
|
+
/* functional template */
|
|
360
|
+
const __vue_is_functional_template__$3 = false;
|
|
361
|
+
/* style inject */
|
|
362
|
+
|
|
363
|
+
/* style inject SSR */
|
|
364
|
+
|
|
365
|
+
/* style inject shadow dom */
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
const __vue_component__$3 = /*#__PURE__*/normalizeComponent(
|
|
370
|
+
{ render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },
|
|
371
|
+
__vue_inject_styles__$3,
|
|
372
|
+
__vue_script__$3,
|
|
373
|
+
__vue_scope_id__$3,
|
|
374
|
+
__vue_is_functional_template__$3,
|
|
375
|
+
__vue_module_identifier__$3,
|
|
376
|
+
false,
|
|
377
|
+
undefined,
|
|
378
|
+
undefined,
|
|
379
|
+
undefined
|
|
380
|
+
);
|
|
381
|
+
|
|
382
|
+
var DatepickerTableRow = __vue_component__$3;
|
|
383
|
+
|
|
384
|
+
var script$2 = {
|
|
385
|
+
name: 'BDatepickerTable',
|
|
386
|
+
components: _defineProperty({}, DatepickerTableRow.name, DatepickerTableRow),
|
|
387
|
+
props: {
|
|
388
|
+
value: {
|
|
389
|
+
type: [Date, Array]
|
|
390
|
+
},
|
|
391
|
+
dayNames: Array,
|
|
392
|
+
monthNames: Array,
|
|
393
|
+
firstDayOfWeek: Number,
|
|
394
|
+
events: Array,
|
|
395
|
+
indicators: String,
|
|
396
|
+
minDate: Date,
|
|
397
|
+
maxDate: Date,
|
|
398
|
+
focused: Object,
|
|
399
|
+
disabled: Boolean,
|
|
400
|
+
dateCreator: Function,
|
|
401
|
+
unselectableDates: [Array, Function],
|
|
402
|
+
unselectableDaysOfWeek: Array,
|
|
403
|
+
selectableDates: [Array, Function],
|
|
404
|
+
nearbyMonthDays: Boolean,
|
|
405
|
+
nearbySelectableMonthDays: Boolean,
|
|
406
|
+
showWeekNumber: Boolean,
|
|
407
|
+
weekNumberClickable: Boolean,
|
|
408
|
+
rulesForFirstWeek: Number,
|
|
409
|
+
range: Boolean,
|
|
410
|
+
multiple: Boolean
|
|
411
|
+
},
|
|
412
|
+
data: function data() {
|
|
413
|
+
return {
|
|
414
|
+
selectedBeginDate: undefined,
|
|
415
|
+
selectedEndDate: undefined,
|
|
416
|
+
hoveredEndDate: undefined
|
|
417
|
+
};
|
|
418
|
+
},
|
|
419
|
+
computed: {
|
|
420
|
+
multipleSelectedDates: {
|
|
421
|
+
get: function get() {
|
|
422
|
+
return this.multiple && this.value ? this.value : [];
|
|
423
|
+
},
|
|
424
|
+
set: function set(value) {
|
|
425
|
+
this.$emit('input', value);
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
visibleDayNames: function visibleDayNames() {
|
|
429
|
+
var visibleDayNames = [];
|
|
430
|
+
var index = this.firstDayOfWeek;
|
|
431
|
+
while (visibleDayNames.length < this.dayNames.length) {
|
|
432
|
+
var currentDayName = this.dayNames[index % this.dayNames.length];
|
|
433
|
+
visibleDayNames.push(currentDayName);
|
|
434
|
+
index++;
|
|
435
|
+
}
|
|
436
|
+
if (this.showWeekNumber) visibleDayNames.unshift('');
|
|
437
|
+
return visibleDayNames;
|
|
438
|
+
},
|
|
439
|
+
hasEvents: function hasEvents() {
|
|
440
|
+
return this.events && this.events.length;
|
|
441
|
+
},
|
|
442
|
+
/*
|
|
443
|
+
* Return array of all events in the specified month
|
|
444
|
+
*/
|
|
445
|
+
eventsInThisMonth: function eventsInThisMonth() {
|
|
446
|
+
if (!this.events) return [];
|
|
447
|
+
var monthEvents = [];
|
|
448
|
+
for (var i = 0; i < this.events.length; i++) {
|
|
449
|
+
var event = this.events[i];
|
|
450
|
+
if (!event.hasOwnProperty('date')) {
|
|
451
|
+
event = {
|
|
452
|
+
date: event
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
if (!event.hasOwnProperty('type')) {
|
|
456
|
+
event.type = 'is-primary';
|
|
457
|
+
}
|
|
458
|
+
if (event.date.getMonth() === this.focused.month && event.date.getFullYear() === this.focused.year) {
|
|
459
|
+
monthEvents.push(event);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return monthEvents;
|
|
463
|
+
},
|
|
464
|
+
/*
|
|
465
|
+
* Return array of all weeks in the specified month
|
|
466
|
+
*/
|
|
467
|
+
weeksInThisMonth: function weeksInThisMonth() {
|
|
468
|
+
this.validateFocusedDay();
|
|
469
|
+
var month = this.focused.month;
|
|
470
|
+
var year = this.focused.year;
|
|
471
|
+
var weeksInThisMonth = [];
|
|
472
|
+
var startingDay = 1;
|
|
473
|
+
while (weeksInThisMonth.length < 6) {
|
|
474
|
+
var newWeek = this.weekBuilder(startingDay, month, year);
|
|
475
|
+
weeksInThisMonth.push(newWeek);
|
|
476
|
+
startingDay += 7;
|
|
477
|
+
}
|
|
478
|
+
return weeksInThisMonth;
|
|
479
|
+
},
|
|
480
|
+
hoveredDateRange: function hoveredDateRange() {
|
|
481
|
+
if (!this.range) {
|
|
482
|
+
return [];
|
|
483
|
+
}
|
|
484
|
+
if (!isNaN(this.selectedEndDate)) {
|
|
485
|
+
return [];
|
|
486
|
+
}
|
|
487
|
+
if (this.hoveredEndDate < this.selectedBeginDate) {
|
|
488
|
+
return [this.hoveredEndDate, this.selectedBeginDate].filter(isDefined);
|
|
489
|
+
}
|
|
490
|
+
return [this.selectedBeginDate, this.hoveredEndDate].filter(isDefined);
|
|
491
|
+
}
|
|
492
|
+
},
|
|
493
|
+
methods: {
|
|
494
|
+
/*
|
|
495
|
+
* Emit input event with selected date as payload for v-model in parent
|
|
496
|
+
*/
|
|
497
|
+
updateSelectedDate: function updateSelectedDate(date) {
|
|
498
|
+
if (!this.range && !this.multiple) {
|
|
499
|
+
this.$emit('input', date);
|
|
500
|
+
} else if (this.range) {
|
|
501
|
+
this.handleSelectRangeDate(date);
|
|
502
|
+
} else if (this.multiple) {
|
|
503
|
+
this.handleSelectMultipleDates(date);
|
|
504
|
+
}
|
|
505
|
+
},
|
|
506
|
+
/*
|
|
507
|
+
* If both begin and end dates are set, reset the end date and set the begin date.
|
|
508
|
+
* If only begin date is selected, emit an array of the begin date and the new date.
|
|
509
|
+
* If not set, only set the begin date.
|
|
510
|
+
*/
|
|
511
|
+
handleSelectRangeDate: function handleSelectRangeDate(date) {
|
|
512
|
+
if (this.selectedBeginDate && this.selectedEndDate) {
|
|
513
|
+
this.selectedBeginDate = date;
|
|
514
|
+
this.selectedEndDate = undefined;
|
|
515
|
+
this.$emit('range-start', date);
|
|
516
|
+
} else if (this.selectedBeginDate && !this.selectedEndDate) {
|
|
517
|
+
if (this.selectedBeginDate > date) {
|
|
518
|
+
this.selectedEndDate = this.selectedBeginDate;
|
|
519
|
+
this.selectedBeginDate = date;
|
|
520
|
+
} else {
|
|
521
|
+
this.selectedEndDate = date;
|
|
522
|
+
}
|
|
523
|
+
this.$emit('range-end', date);
|
|
524
|
+
this.$emit('input', [this.selectedBeginDate, this.selectedEndDate]);
|
|
525
|
+
} else {
|
|
526
|
+
this.selectedBeginDate = date;
|
|
527
|
+
this.$emit('range-start', date);
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
/*
|
|
531
|
+
* If selected date already exists list of selected dates, remove it from the list
|
|
532
|
+
* Otherwise, add date to list of selected dates
|
|
533
|
+
*/
|
|
534
|
+
handleSelectMultipleDates: function handleSelectMultipleDates(date) {
|
|
535
|
+
var multipleSelect = this.multipleSelectedDates.filter(function (selectedDate) {
|
|
536
|
+
return selectedDate.getDate() === date.getDate() && selectedDate.getFullYear() === date.getFullYear() && selectedDate.getMonth() === date.getMonth();
|
|
537
|
+
});
|
|
538
|
+
if (multipleSelect.length) {
|
|
539
|
+
this.multipleSelectedDates = this.multipleSelectedDates.filter(function (selectedDate) {
|
|
540
|
+
return selectedDate.getDate() !== date.getDate() || selectedDate.getFullYear() !== date.getFullYear() || selectedDate.getMonth() !== date.getMonth();
|
|
541
|
+
});
|
|
542
|
+
} else {
|
|
543
|
+
this.multipleSelectedDates = [].concat(_toConsumableArray(this.multipleSelectedDates), [date]);
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
/*
|
|
547
|
+
* Return array of all days in the week that the startingDate is within
|
|
548
|
+
*/
|
|
549
|
+
weekBuilder: function weekBuilder(startingDate, month, year) {
|
|
550
|
+
var thisMonth = new Date(year, month);
|
|
551
|
+
var thisWeek = [];
|
|
552
|
+
var dayOfWeek = new Date(year, month, startingDate).getDay();
|
|
553
|
+
var end = dayOfWeek >= this.firstDayOfWeek ? dayOfWeek - this.firstDayOfWeek : 7 - this.firstDayOfWeek + dayOfWeek;
|
|
554
|
+
var daysAgo = 1;
|
|
555
|
+
for (var i = 0; i < end; i++) {
|
|
556
|
+
thisWeek.unshift(new Date(thisMonth.getFullYear(), thisMonth.getMonth(), startingDate - daysAgo));
|
|
557
|
+
daysAgo++;
|
|
558
|
+
}
|
|
559
|
+
thisWeek.push(new Date(year, month, startingDate));
|
|
560
|
+
var daysForward = 1;
|
|
561
|
+
while (thisWeek.length < 7) {
|
|
562
|
+
thisWeek.push(new Date(year, month, startingDate + daysForward));
|
|
563
|
+
daysForward++;
|
|
564
|
+
}
|
|
565
|
+
return thisWeek;
|
|
566
|
+
},
|
|
567
|
+
validateFocusedDay: function validateFocusedDay() {
|
|
568
|
+
var focusedDate = new Date(this.focused.year, this.focused.month, this.focused.day);
|
|
569
|
+
if (this.selectableDate(focusedDate)) return;
|
|
570
|
+
var day = 0;
|
|
571
|
+
// Number of days in the current month
|
|
572
|
+
var monthDays = new Date(this.focused.year, this.focused.month + 1, 0).getDate();
|
|
573
|
+
var firstFocusable = null;
|
|
574
|
+
while (!firstFocusable && ++day < monthDays) {
|
|
575
|
+
var date = new Date(this.focused.year, this.focused.month, day);
|
|
576
|
+
if (this.selectableDate(date)) {
|
|
577
|
+
firstFocusable = focusedDate;
|
|
578
|
+
var focused = {
|
|
579
|
+
day: date.getDate(),
|
|
580
|
+
month: date.getMonth(),
|
|
581
|
+
year: date.getFullYear()
|
|
582
|
+
};
|
|
583
|
+
this.$emit('update:focused', focused);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
},
|
|
587
|
+
/*
|
|
588
|
+
* Check that selected day is within earliest/latest params and
|
|
589
|
+
* is within this month
|
|
590
|
+
*/
|
|
591
|
+
selectableDate: function selectableDate(day) {
|
|
592
|
+
var validity = [];
|
|
593
|
+
if (this.minDate) {
|
|
594
|
+
validity.push(day >= this.minDate);
|
|
595
|
+
}
|
|
596
|
+
if (this.maxDate) {
|
|
597
|
+
validity.push(day <= this.maxDate);
|
|
598
|
+
}
|
|
599
|
+
if (this.nearbyMonthDays && !this.nearbySelectableMonthDays) {
|
|
600
|
+
validity.push(day.getMonth() === this.focused.month);
|
|
601
|
+
}
|
|
602
|
+
if (this.selectableDates) {
|
|
603
|
+
if (typeof this.selectableDates === 'function') {
|
|
604
|
+
if (this.selectableDates(day)) {
|
|
605
|
+
return true;
|
|
606
|
+
} else {
|
|
607
|
+
validity.push(false);
|
|
608
|
+
}
|
|
609
|
+
} else {
|
|
610
|
+
for (var i = 0; i < this.selectableDates.length; i++) {
|
|
611
|
+
var enabledDate = this.selectableDates[i];
|
|
612
|
+
if (day.getDate() === enabledDate.getDate() && day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) {
|
|
613
|
+
return true;
|
|
614
|
+
} else {
|
|
615
|
+
validity.push(false);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
if (this.unselectableDates) {
|
|
621
|
+
if (typeof this.unselectableDates === 'function') {
|
|
622
|
+
validity.push(!this.unselectableDates(day));
|
|
623
|
+
} else {
|
|
624
|
+
for (var _i = 0; _i < this.unselectableDates.length; _i++) {
|
|
625
|
+
var disabledDate = this.unselectableDates[_i];
|
|
626
|
+
validity.push(day.getDate() !== disabledDate.getDate() || day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth());
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
if (this.unselectableDaysOfWeek) {
|
|
631
|
+
for (var _i2 = 0; _i2 < this.unselectableDaysOfWeek.length; _i2++) {
|
|
632
|
+
var dayOfWeek = this.unselectableDaysOfWeek[_i2];
|
|
633
|
+
validity.push(day.getDay() !== dayOfWeek);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
return validity.indexOf(false) < 0;
|
|
637
|
+
},
|
|
638
|
+
eventsInThisWeek: function eventsInThisWeek(week) {
|
|
639
|
+
return this.eventsInThisMonth.filter(function (event) {
|
|
640
|
+
var stripped = new Date(Date.parse(event.date));
|
|
641
|
+
stripped.setHours(0, 0, 0, 0);
|
|
642
|
+
var timed = stripped.getTime();
|
|
643
|
+
return week.some(function (weekDate) {
|
|
644
|
+
return weekDate.getTime() === timed;
|
|
645
|
+
});
|
|
646
|
+
});
|
|
647
|
+
},
|
|
648
|
+
setRangeHoverEndDate: function setRangeHoverEndDate(day) {
|
|
649
|
+
this.hoveredEndDate = day;
|
|
650
|
+
},
|
|
651
|
+
changeFocus: function changeFocus(day) {
|
|
652
|
+
var focused = {
|
|
653
|
+
day: day.getDate(),
|
|
654
|
+
month: day.getMonth(),
|
|
655
|
+
year: day.getFullYear()
|
|
656
|
+
};
|
|
657
|
+
this.$emit('update:focused', focused);
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
};
|
|
661
|
+
|
|
662
|
+
/* script */
|
|
663
|
+
const __vue_script__$2 = script$2;
|
|
664
|
+
|
|
665
|
+
/* template */
|
|
666
|
+
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('header',{staticClass:"datepicker-header"},_vm._l((_vm.visibleDayNames),function(day,index){return _c('div',{key:index,staticClass:"datepicker-cell"},[_c('span',[_vm._v(_vm._s(day))])])}),0),_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,"day":_vm.focused.day,"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,"week-number-clickable":_vm.weekNumberClickable,"first-day-of-week":_vm.firstDayOfWeek,"rules-for-first-week":_vm.rulesForFirstWeek,"range":_vm.range,"hovered-date-range":_vm.hoveredDateRange,"multiple":_vm.multiple},on:{"select":_vm.updateSelectedDate,"rangeHoverEndDate":_vm.setRangeHoverEndDate,"change-focus":_vm.changeFocus}})}),1)])};
|
|
667
|
+
var __vue_staticRenderFns__$2 = [];
|
|
668
|
+
|
|
669
|
+
/* style */
|
|
670
|
+
const __vue_inject_styles__$2 = undefined;
|
|
671
|
+
/* scoped */
|
|
672
|
+
const __vue_scope_id__$2 = undefined;
|
|
673
|
+
/* module identifier */
|
|
674
|
+
const __vue_module_identifier__$2 = undefined;
|
|
675
|
+
/* functional template */
|
|
676
|
+
const __vue_is_functional_template__$2 = false;
|
|
677
|
+
/* style inject */
|
|
678
|
+
|
|
679
|
+
/* style inject SSR */
|
|
680
|
+
|
|
681
|
+
/* style inject shadow dom */
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
const __vue_component__$2 = /*#__PURE__*/normalizeComponent(
|
|
686
|
+
{ render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 },
|
|
687
|
+
__vue_inject_styles__$2,
|
|
688
|
+
__vue_script__$2,
|
|
689
|
+
__vue_scope_id__$2,
|
|
690
|
+
__vue_is_functional_template__$2,
|
|
691
|
+
__vue_module_identifier__$2,
|
|
692
|
+
false,
|
|
693
|
+
undefined,
|
|
694
|
+
undefined,
|
|
695
|
+
undefined
|
|
696
|
+
);
|
|
697
|
+
|
|
698
|
+
var DatepickerTable = __vue_component__$2;
|
|
699
|
+
|
|
700
|
+
//
|
|
701
|
+
var script$1 = {
|
|
702
|
+
name: 'BDatepickerMonth',
|
|
703
|
+
props: {
|
|
704
|
+
value: {
|
|
705
|
+
type: [Date, Array]
|
|
706
|
+
},
|
|
707
|
+
monthNames: Array,
|
|
708
|
+
events: Array,
|
|
709
|
+
indicators: String,
|
|
710
|
+
minDate: Date,
|
|
711
|
+
maxDate: Date,
|
|
712
|
+
focused: Object,
|
|
713
|
+
disabled: Boolean,
|
|
714
|
+
dateCreator: Function,
|
|
715
|
+
unselectableDates: [Array, Function],
|
|
716
|
+
unselectableDaysOfWeek: Array,
|
|
717
|
+
selectableDates: [Array, Function],
|
|
718
|
+
range: Boolean,
|
|
719
|
+
multiple: Boolean
|
|
720
|
+
},
|
|
721
|
+
data: function data() {
|
|
722
|
+
return {
|
|
723
|
+
selectedBeginDate: undefined,
|
|
724
|
+
selectedEndDate: undefined,
|
|
725
|
+
hoveredEndDate: undefined,
|
|
726
|
+
multipleSelectedDates: this.multiple && this.value ? this.value : []
|
|
727
|
+
};
|
|
728
|
+
},
|
|
729
|
+
computed: {
|
|
730
|
+
hasEvents: function hasEvents() {
|
|
731
|
+
return this.events && this.events.length;
|
|
732
|
+
},
|
|
733
|
+
/*
|
|
734
|
+
* Return array of all events in the specified month
|
|
735
|
+
*/
|
|
736
|
+
eventsInThisYear: function eventsInThisYear() {
|
|
737
|
+
if (!this.events) return [];
|
|
738
|
+
var yearEvents = [];
|
|
739
|
+
for (var i = 0; i < this.events.length; i++) {
|
|
740
|
+
var event = this.events[i];
|
|
741
|
+
if (!event.hasOwnProperty('date')) {
|
|
742
|
+
event = {
|
|
743
|
+
date: event
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
if (!event.hasOwnProperty('type')) {
|
|
747
|
+
event.type = 'is-primary';
|
|
748
|
+
}
|
|
749
|
+
if (event.date.getFullYear() === this.focused.year) {
|
|
750
|
+
yearEvents.push(event);
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
return yearEvents;
|
|
754
|
+
},
|
|
755
|
+
monthDates: function monthDates() {
|
|
756
|
+
var year = this.focused.year;
|
|
757
|
+
var months = [];
|
|
758
|
+
for (var i = 0; i < 12; i++) {
|
|
759
|
+
var d = new Date(year, i, 1);
|
|
760
|
+
d.setHours(0, 0, 0, 0);
|
|
761
|
+
months.push(d);
|
|
762
|
+
}
|
|
763
|
+
return months;
|
|
764
|
+
},
|
|
765
|
+
focusedMonth: function focusedMonth() {
|
|
766
|
+
return this.focused.month;
|
|
767
|
+
},
|
|
768
|
+
hoveredDateRange: function hoveredDateRange() {
|
|
769
|
+
if (!this.range) {
|
|
770
|
+
return [];
|
|
771
|
+
}
|
|
772
|
+
if (!isNaN(this.selectedEndDate)) {
|
|
773
|
+
return [];
|
|
774
|
+
}
|
|
775
|
+
if (this.hoveredEndDate < this.selectedBeginDate) {
|
|
776
|
+
return [this.hoveredEndDate, this.selectedBeginDate].filter(isDefined);
|
|
777
|
+
}
|
|
778
|
+
return [this.selectedBeginDate, this.hoveredEndDate].filter(isDefined);
|
|
779
|
+
}
|
|
780
|
+
},
|
|
781
|
+
watch: {
|
|
782
|
+
focusedMonth: function focusedMonth(month) {
|
|
783
|
+
var _this = this;
|
|
784
|
+
var refName = "month-".concat(month);
|
|
785
|
+
if (this.$refs[refName] && this.$refs[refName].length > 0) {
|
|
786
|
+
this.$nextTick(function () {
|
|
787
|
+
if (_this.$refs[refName][0]) {
|
|
788
|
+
_this.$refs[refName][0].focus();
|
|
789
|
+
}
|
|
790
|
+
}); // $nextTick needed when year is changed
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
},
|
|
794
|
+
methods: {
|
|
795
|
+
selectMultipleDates: function selectMultipleDates(date) {
|
|
796
|
+
var multipleSelect = this.multipleSelectedDates.filter(function (selectedDate) {
|
|
797
|
+
return selectedDate.getDate() === date.getDate() && selectedDate.getFullYear() === date.getFullYear() && selectedDate.getMonth() === date.getMonth();
|
|
798
|
+
});
|
|
799
|
+
if (multipleSelect.length) {
|
|
800
|
+
this.multipleSelectedDates = this.multipleSelectedDates.filter(function (selectedDate) {
|
|
801
|
+
return selectedDate.getDate() !== date.getDate() || selectedDate.getFullYear() !== date.getFullYear() || selectedDate.getMonth() !== date.getMonth();
|
|
802
|
+
});
|
|
803
|
+
} else {
|
|
804
|
+
this.multipleSelectedDates.push(date);
|
|
805
|
+
}
|
|
806
|
+
this.$emit('input', this.multipleSelectedDates);
|
|
807
|
+
},
|
|
808
|
+
selectableDate: function selectableDate(day) {
|
|
809
|
+
var validity = [];
|
|
810
|
+
if (this.minDate) {
|
|
811
|
+
validity.push(day >= this.minDate);
|
|
812
|
+
}
|
|
813
|
+
if (this.maxDate) {
|
|
814
|
+
validity.push(day <= this.maxDate);
|
|
815
|
+
}
|
|
816
|
+
validity.push(day.getFullYear() === this.focused.year);
|
|
817
|
+
if (this.selectableDates) {
|
|
818
|
+
if (typeof this.selectableDates === 'function') {
|
|
819
|
+
if (this.selectableDates(day)) {
|
|
820
|
+
return true;
|
|
821
|
+
} else {
|
|
822
|
+
validity.push(false);
|
|
823
|
+
}
|
|
824
|
+
} else {
|
|
825
|
+
for (var i = 0; i < this.selectableDates.length; i++) {
|
|
826
|
+
var enabledDate = this.selectableDates[i];
|
|
827
|
+
if (day.getFullYear() === enabledDate.getFullYear() && day.getMonth() === enabledDate.getMonth()) {
|
|
828
|
+
return true;
|
|
829
|
+
} else {
|
|
830
|
+
validity.push(false);
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
if (this.unselectableDates) {
|
|
836
|
+
if (typeof this.unselectableDates === 'function') {
|
|
837
|
+
validity.push(!this.unselectableDates(day));
|
|
838
|
+
} else {
|
|
839
|
+
for (var _i = 0; _i < this.unselectableDates.length; _i++) {
|
|
840
|
+
var disabledDate = this.unselectableDates[_i];
|
|
841
|
+
validity.push(day.getFullYear() !== disabledDate.getFullYear() || day.getMonth() !== disabledDate.getMonth());
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
if (this.unselectableDaysOfWeek) {
|
|
846
|
+
for (var _i2 = 0; _i2 < this.unselectableDaysOfWeek.length; _i2++) {
|
|
847
|
+
var dayOfWeek = this.unselectableDaysOfWeek[_i2];
|
|
848
|
+
validity.push(day.getDay() !== dayOfWeek);
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
return validity.indexOf(false) < 0;
|
|
852
|
+
},
|
|
853
|
+
eventsDateMatch: function eventsDateMatch(day) {
|
|
854
|
+
if (!this.eventsInThisYear.length) return false;
|
|
855
|
+
var monthEvents = [];
|
|
856
|
+
for (var i = 0; i < this.eventsInThisYear.length; i++) {
|
|
857
|
+
if (this.eventsInThisYear[i].date.getMonth() === day.getMonth()) {
|
|
858
|
+
monthEvents.push(this.events[i]);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
if (!monthEvents.length) {
|
|
862
|
+
return false;
|
|
863
|
+
}
|
|
864
|
+
return monthEvents;
|
|
865
|
+
},
|
|
866
|
+
/*
|
|
867
|
+
* Build classObject for cell using validations
|
|
868
|
+
*/
|
|
869
|
+
classObject: function classObject(day) {
|
|
870
|
+
function dateMatch(dateOne, dateTwo, multiple) {
|
|
871
|
+
// if either date is null or undefined, return false
|
|
872
|
+
if (!dateOne || !dateTwo || multiple) {
|
|
873
|
+
return false;
|
|
874
|
+
}
|
|
875
|
+
if (Array.isArray(dateTwo)) {
|
|
876
|
+
return dateTwo.some(function (date) {
|
|
877
|
+
return dateOne.getFullYear() === date.getFullYear() && dateOne.getMonth() === date.getMonth();
|
|
878
|
+
});
|
|
879
|
+
}
|
|
880
|
+
return dateOne.getFullYear() === dateTwo.getFullYear() && dateOne.getMonth() === dateTwo.getMonth();
|
|
881
|
+
}
|
|
882
|
+
function dateWithin(dateOne, dates, multiple) {
|
|
883
|
+
if (!Array.isArray(dates) || multiple) {
|
|
884
|
+
return false;
|
|
885
|
+
}
|
|
886
|
+
return dateOne > dates[0] && dateOne < dates[1];
|
|
887
|
+
}
|
|
888
|
+
function dateMultipleSelected(dateOne, dates, multiple) {
|
|
889
|
+
if (!Array.isArray(dates) || !multiple) {
|
|
890
|
+
return false;
|
|
891
|
+
}
|
|
892
|
+
return dates.some(function (date) {
|
|
893
|
+
return dateOne.getDate() === date.getDate() && dateOne.getFullYear() === date.getFullYear() && dateOne.getMonth() === date.getMonth();
|
|
894
|
+
});
|
|
895
|
+
}
|
|
896
|
+
return {
|
|
897
|
+
'is-selected': dateMatch(day, this.value, this.multiple) || dateWithin(day, this.value, this.multiple) || dateMultipleSelected(day, this.multipleSelectedDates, this.multiple),
|
|
898
|
+
'is-first-selected': dateMatch(day, Array.isArray(this.value) && this.value[0], this.multiple),
|
|
899
|
+
'is-within-selected': dateWithin(day, this.value, this.multiple),
|
|
900
|
+
'is-last-selected': dateMatch(day, Array.isArray(this.value) && this.value[1], this.multiple),
|
|
901
|
+
'is-within-hovered-range': this.hoveredDateRange && this.hoveredDateRange.length === 2 && (dateMatch(day, this.hoveredDateRange) || dateWithin(day, this.hoveredDateRange)),
|
|
902
|
+
'is-first-hovered': dateMatch(day, Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[0]),
|
|
903
|
+
'is-within-hovered': dateWithin(day, this.hoveredDateRange),
|
|
904
|
+
'is-last-hovered': dateMatch(day, Array.isArray(this.hoveredDateRange) && this.hoveredDateRange[1]),
|
|
905
|
+
'is-today': dateMatch(day, this.dateCreator()),
|
|
906
|
+
'is-selectable': this.selectableDate(day) && !this.disabled,
|
|
907
|
+
'is-unselectable': !this.selectableDate(day) || this.disabled
|
|
908
|
+
};
|
|
909
|
+
},
|
|
910
|
+
manageKeydown: function manageKeydown(_ref, date) {
|
|
911
|
+
var key = _ref.key;
|
|
912
|
+
// https://developer.mozilla.org/fr/docs/Web/API/KeyboardEvent/key/Key_Values#Navigation_keys
|
|
913
|
+
switch (key) {
|
|
914
|
+
case ' ':
|
|
915
|
+
case 'Space':
|
|
916
|
+
case 'Spacebar':
|
|
917
|
+
case 'Enter':
|
|
918
|
+
{
|
|
919
|
+
this.updateSelectedDate(date);
|
|
920
|
+
break;
|
|
921
|
+
}
|
|
922
|
+
case 'ArrowLeft':
|
|
923
|
+
case 'Left':
|
|
924
|
+
{
|
|
925
|
+
this.changeFocus(date, -1);
|
|
926
|
+
break;
|
|
927
|
+
}
|
|
928
|
+
case 'ArrowRight':
|
|
929
|
+
case 'Right':
|
|
930
|
+
{
|
|
931
|
+
this.changeFocus(date, 1);
|
|
932
|
+
break;
|
|
933
|
+
}
|
|
934
|
+
case 'ArrowUp':
|
|
935
|
+
case 'Up':
|
|
936
|
+
{
|
|
937
|
+
this.changeFocus(date, -3);
|
|
938
|
+
break;
|
|
939
|
+
}
|
|
940
|
+
case 'ArrowDown':
|
|
941
|
+
case 'Down':
|
|
942
|
+
{
|
|
943
|
+
this.changeFocus(date, 3);
|
|
944
|
+
break;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
},
|
|
948
|
+
/*
|
|
949
|
+
* Emit input event with selected date as payload for v-model in parent
|
|
950
|
+
*/
|
|
951
|
+
updateSelectedDate: function updateSelectedDate(date) {
|
|
952
|
+
if (!this.range && !this.multiple) {
|
|
953
|
+
this.emitChosenDate(date);
|
|
954
|
+
} else if (this.range) {
|
|
955
|
+
this.handleSelectRangeDate(date);
|
|
956
|
+
} else if (this.multiple) {
|
|
957
|
+
this.selectMultipleDates(date);
|
|
958
|
+
}
|
|
959
|
+
},
|
|
960
|
+
/*
|
|
961
|
+
* Emit select event with chosen date as payload
|
|
962
|
+
*/
|
|
963
|
+
emitChosenDate: function emitChosenDate(day) {
|
|
964
|
+
if (this.disabled) return;
|
|
965
|
+
if (!this.multiple) {
|
|
966
|
+
if (this.selectableDate(day)) {
|
|
967
|
+
this.$emit('input', day);
|
|
968
|
+
}
|
|
969
|
+
} else {
|
|
970
|
+
this.selectMultipleDates(day);
|
|
971
|
+
}
|
|
972
|
+
},
|
|
973
|
+
/*
|
|
974
|
+
* If both begin and end dates are set, reset the end date and set the begin date.
|
|
975
|
+
* If only begin date is selected, emit an array of the begin date and the new date.
|
|
976
|
+
* If not set, only set the begin date.
|
|
977
|
+
*/
|
|
978
|
+
handleSelectRangeDate: function handleSelectRangeDate(date) {
|
|
979
|
+
if (this.disabled) return;
|
|
980
|
+
if (this.selectedBeginDate && this.selectedEndDate) {
|
|
981
|
+
this.selectedBeginDate = date;
|
|
982
|
+
this.selectedEndDate = undefined;
|
|
983
|
+
this.$emit('range-start', date);
|
|
984
|
+
} else if (this.selectedBeginDate && !this.selectedEndDate) {
|
|
985
|
+
if (this.selectedBeginDate > date) {
|
|
986
|
+
this.selectedEndDate = this.selectedBeginDate;
|
|
987
|
+
this.selectedBeginDate = date;
|
|
988
|
+
} else {
|
|
989
|
+
this.selectedEndDate = date;
|
|
990
|
+
}
|
|
991
|
+
this.$emit('range-end', date);
|
|
992
|
+
this.$emit('input', [this.selectedBeginDate, this.selectedEndDate]);
|
|
993
|
+
} else {
|
|
994
|
+
this.selectedBeginDate = date;
|
|
995
|
+
this.$emit('range-start', date);
|
|
996
|
+
}
|
|
997
|
+
},
|
|
998
|
+
setRangeHoverEndDate: function setRangeHoverEndDate(day) {
|
|
999
|
+
if (this.range) {
|
|
1000
|
+
this.hoveredEndDate = day;
|
|
1001
|
+
}
|
|
1002
|
+
},
|
|
1003
|
+
changeFocus: function changeFocus(month, inc) {
|
|
1004
|
+
var nextMonth = month;
|
|
1005
|
+
nextMonth.setMonth(month.getMonth() + inc);
|
|
1006
|
+
this.$emit('change-focus', nextMonth);
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
};
|
|
1010
|
+
|
|
1011
|
+
/* script */
|
|
1012
|
+
const __vue_script__$1 = script$1;
|
|
1013
|
+
|
|
1014
|
+
/* template */
|
|
1015
|
+
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('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,ref:("month-" + (date.getMonth())),refInFor:true,staticClass:"datepicker-cell",class:[
|
|
1016
|
+
_vm.classObject(date),
|
|
1017
|
+
{'has-event': _vm.eventsDateMatch(date)},
|
|
1018
|
+
_vm.indicators
|
|
1019
|
+
],attrs:{"role":"button","href":"#","disabled":_vm.disabled,"tabindex":_vm.focused.month === date.getMonth() ? null : -1},on:{"click":function($event){$event.preventDefault();return _vm.updateSelectedDate(date)},"mouseenter":function($event){return _vm.setRangeHoverEndDate(date)},"keydown":function($event){$event.preventDefault();return _vm.manageKeydown($event, date)}}},[_vm._v(" "+_vm._s(_vm.monthNames[date.getMonth()])+" "),(_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})}),0):_vm._e()]):_c('div',{key:index,staticClass:"datepicker-cell",class:_vm.classObject(date)},[_vm._v(" "+_vm._s(_vm.monthNames[date.getMonth()])+" ")])]})],2)])])};
|
|
1020
|
+
var __vue_staticRenderFns__$1 = [];
|
|
1021
|
+
|
|
1022
|
+
/* style */
|
|
1023
|
+
const __vue_inject_styles__$1 = undefined;
|
|
1024
|
+
/* scoped */
|
|
1025
|
+
const __vue_scope_id__$1 = undefined;
|
|
1026
|
+
/* module identifier */
|
|
1027
|
+
const __vue_module_identifier__$1 = undefined;
|
|
1028
|
+
/* functional template */
|
|
1029
|
+
const __vue_is_functional_template__$1 = false;
|
|
1030
|
+
/* style inject */
|
|
1031
|
+
|
|
1032
|
+
/* style inject SSR */
|
|
1033
|
+
|
|
1034
|
+
/* style inject shadow dom */
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
const __vue_component__$1 = /*#__PURE__*/normalizeComponent(
|
|
1039
|
+
{ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },
|
|
1040
|
+
__vue_inject_styles__$1,
|
|
1041
|
+
__vue_script__$1,
|
|
1042
|
+
__vue_scope_id__$1,
|
|
1043
|
+
__vue_is_functional_template__$1,
|
|
1044
|
+
__vue_module_identifier__$1,
|
|
1045
|
+
false,
|
|
1046
|
+
undefined,
|
|
1047
|
+
undefined,
|
|
1048
|
+
undefined
|
|
1049
|
+
);
|
|
1050
|
+
|
|
1051
|
+
var DatepickerMonth = __vue_component__$1;
|
|
1052
|
+
|
|
1053
|
+
var defaultDateFormatter = function defaultDateFormatter(date, vm) {
|
|
1054
|
+
var targetDates = Array.isArray(date) ? date : [date];
|
|
1055
|
+
var dates = targetDates.map(function (date) {
|
|
1056
|
+
var d = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12);
|
|
1057
|
+
return !vm.isTypeMonth ? vm.dtf.format(d) : vm.dtfMonth.format(d);
|
|
1058
|
+
});
|
|
1059
|
+
return !vm.multiple ? dates.join(' - ') : dates.join(', ');
|
|
1060
|
+
};
|
|
1061
|
+
var defaultDateParser = function defaultDateParser(date, vm) {
|
|
1062
|
+
if (vm.dtf.formatToParts && typeof vm.dtf.formatToParts === 'function') {
|
|
1063
|
+
var formatRegex = (vm.isTypeMonth ? vm.dtfMonth : vm.dtf).formatToParts(new Date(2000, 11, 25)).map(function (part) {
|
|
1064
|
+
if (part.type === 'literal') {
|
|
1065
|
+
return part.value;
|
|
1066
|
+
}
|
|
1067
|
+
return "((?!=<".concat(part.type, ">)\\d+)");
|
|
1068
|
+
}).join('');
|
|
1069
|
+
var dateGroups = matchWithGroups(formatRegex, date);
|
|
1070
|
+
|
|
1071
|
+
// We do a simple validation for the group.
|
|
1072
|
+
// If it is not valid, it will fallback to Date.parse below
|
|
1073
|
+
if (dateGroups.year && dateGroups.year.length === 4 && dateGroups.month && dateGroups.month <= 12) {
|
|
1074
|
+
if (vm.isTypeMonth) return new Date(dateGroups.year, dateGroups.month - 1);else if (dateGroups.day && dateGroups.day <= 31) {
|
|
1075
|
+
return new Date(dateGroups.year, dateGroups.month - 1, dateGroups.day, 12);
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
// Fallback if formatToParts is not supported or if we were not able to parse a valid date
|
|
1080
|
+
if (!vm.isTypeMonth) return new Date(Date.parse(date));
|
|
1081
|
+
if (date) {
|
|
1082
|
+
var s = date.split('/');
|
|
1083
|
+
var year = s[0].length === 4 ? s[0] : s[1];
|
|
1084
|
+
var month = s[0].length === 2 ? s[0] : s[1];
|
|
1085
|
+
if (year && month) {
|
|
1086
|
+
return new Date(parseInt(year, 10), parseInt(month - 1, 10), 1, 0, 0, 0, 0);
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
return null;
|
|
1090
|
+
};
|
|
1091
|
+
var script = {
|
|
1092
|
+
name: 'BDatepicker',
|
|
1093
|
+
components: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, DatepickerTable.name, DatepickerTable), DatepickerMonth.name, DatepickerMonth), Input.name, Input), Field.name, Field), Select.name, Select), Icon.name, Icon), Dropdown.name, Dropdown), DropdownItem.name, DropdownItem),
|
|
1094
|
+
mixins: [FormElementMixin],
|
|
1095
|
+
inheritAttrs: false,
|
|
1096
|
+
provide: function provide() {
|
|
1097
|
+
return {
|
|
1098
|
+
$datepicker: this
|
|
1099
|
+
};
|
|
1100
|
+
},
|
|
1101
|
+
props: {
|
|
1102
|
+
value: {
|
|
1103
|
+
type: [Date, Array]
|
|
1104
|
+
},
|
|
1105
|
+
dayNames: {
|
|
1106
|
+
type: Array,
|
|
1107
|
+
default: function _default() {
|
|
1108
|
+
if (!Array.isArray(config.defaultDayNames)) {
|
|
1109
|
+
return undefined;
|
|
1110
|
+
}
|
|
1111
|
+
return config.defaultDayNames;
|
|
1112
|
+
}
|
|
1113
|
+
},
|
|
1114
|
+
monthNames: {
|
|
1115
|
+
type: Array,
|
|
1116
|
+
default: function _default() {
|
|
1117
|
+
if (!Array.isArray(config.defaultMonthNames)) {
|
|
1118
|
+
return undefined;
|
|
1119
|
+
}
|
|
1120
|
+
return config.defaultMonthNames;
|
|
1121
|
+
}
|
|
1122
|
+
},
|
|
1123
|
+
firstDayOfWeek: {
|
|
1124
|
+
type: Number,
|
|
1125
|
+
default: function _default() {
|
|
1126
|
+
if (typeof config.defaultFirstDayOfWeek === 'number') {
|
|
1127
|
+
return config.defaultFirstDayOfWeek;
|
|
1128
|
+
} else {
|
|
1129
|
+
return 0;
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
},
|
|
1133
|
+
inline: Boolean,
|
|
1134
|
+
minDate: Date,
|
|
1135
|
+
maxDate: Date,
|
|
1136
|
+
focusedDate: Date,
|
|
1137
|
+
placeholder: String,
|
|
1138
|
+
editable: Boolean,
|
|
1139
|
+
disabled: Boolean,
|
|
1140
|
+
horizontalTimePicker: Boolean,
|
|
1141
|
+
unselectableDates: [Array, Function],
|
|
1142
|
+
unselectableDaysOfWeek: {
|
|
1143
|
+
type: Array,
|
|
1144
|
+
default: function _default() {
|
|
1145
|
+
return config.defaultUnselectableDaysOfWeek;
|
|
1146
|
+
}
|
|
1147
|
+
},
|
|
1148
|
+
selectableDates: [Array, Function],
|
|
1149
|
+
dateFormatter: {
|
|
1150
|
+
type: Function,
|
|
1151
|
+
default: function _default(date, vm) {
|
|
1152
|
+
if (typeof config.defaultDateFormatter === 'function') {
|
|
1153
|
+
return config.defaultDateFormatter(date);
|
|
1154
|
+
} else {
|
|
1155
|
+
return defaultDateFormatter(date, vm);
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
},
|
|
1159
|
+
dateParser: {
|
|
1160
|
+
type: Function,
|
|
1161
|
+
default: function _default(date, vm) {
|
|
1162
|
+
if (typeof config.defaultDateParser === 'function') {
|
|
1163
|
+
return config.defaultDateParser(date);
|
|
1164
|
+
} else {
|
|
1165
|
+
return defaultDateParser(date, vm);
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
},
|
|
1169
|
+
dateCreator: {
|
|
1170
|
+
type: Function,
|
|
1171
|
+
default: function _default() {
|
|
1172
|
+
if (typeof config.defaultDateCreator === 'function') {
|
|
1173
|
+
return config.defaultDateCreator();
|
|
1174
|
+
} else {
|
|
1175
|
+
return new Date();
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
},
|
|
1179
|
+
mobileNative: {
|
|
1180
|
+
type: Boolean,
|
|
1181
|
+
default: function _default() {
|
|
1182
|
+
return config.defaultDatepickerMobileNative;
|
|
1183
|
+
}
|
|
1184
|
+
},
|
|
1185
|
+
position: String,
|
|
1186
|
+
iconRight: String,
|
|
1187
|
+
iconRightClickable: Boolean,
|
|
1188
|
+
events: Array,
|
|
1189
|
+
indicators: {
|
|
1190
|
+
type: String,
|
|
1191
|
+
default: 'dots'
|
|
1192
|
+
},
|
|
1193
|
+
openOnFocus: Boolean,
|
|
1194
|
+
iconPrev: {
|
|
1195
|
+
type: String,
|
|
1196
|
+
default: function _default() {
|
|
1197
|
+
return config.defaultIconPrev;
|
|
1198
|
+
}
|
|
1199
|
+
},
|
|
1200
|
+
iconNext: {
|
|
1201
|
+
type: String,
|
|
1202
|
+
default: function _default() {
|
|
1203
|
+
return config.defaultIconNext;
|
|
1204
|
+
}
|
|
1205
|
+
},
|
|
1206
|
+
yearsRange: {
|
|
1207
|
+
type: Array,
|
|
1208
|
+
default: function _default() {
|
|
1209
|
+
return config.defaultDatepickerYearsRange;
|
|
1210
|
+
}
|
|
1211
|
+
},
|
|
1212
|
+
type: {
|
|
1213
|
+
type: String,
|
|
1214
|
+
validator: function validator(value) {
|
|
1215
|
+
return ['month'].indexOf(value) >= 0;
|
|
1216
|
+
}
|
|
1217
|
+
},
|
|
1218
|
+
nearbyMonthDays: {
|
|
1219
|
+
type: Boolean,
|
|
1220
|
+
default: function _default() {
|
|
1221
|
+
return config.defaultDatepickerNearbyMonthDays;
|
|
1222
|
+
}
|
|
1223
|
+
},
|
|
1224
|
+
nearbySelectableMonthDays: {
|
|
1225
|
+
type: Boolean,
|
|
1226
|
+
default: function _default() {
|
|
1227
|
+
return config.defaultDatepickerNearbySelectableMonthDays;
|
|
1228
|
+
}
|
|
1229
|
+
},
|
|
1230
|
+
showWeekNumber: {
|
|
1231
|
+
type: Boolean,
|
|
1232
|
+
default: function _default() {
|
|
1233
|
+
return config.defaultDatepickerShowWeekNumber;
|
|
1234
|
+
}
|
|
1235
|
+
},
|
|
1236
|
+
weekNumberClickable: {
|
|
1237
|
+
type: Boolean,
|
|
1238
|
+
default: function _default() {
|
|
1239
|
+
return config.defaultDatepickerWeekNumberClickable;
|
|
1240
|
+
}
|
|
1241
|
+
},
|
|
1242
|
+
rulesForFirstWeek: {
|
|
1243
|
+
type: Number,
|
|
1244
|
+
default: function _default() {
|
|
1245
|
+
return 4;
|
|
1246
|
+
}
|
|
1247
|
+
},
|
|
1248
|
+
range: {
|
|
1249
|
+
type: Boolean,
|
|
1250
|
+
default: false
|
|
1251
|
+
},
|
|
1252
|
+
closeOnClick: {
|
|
1253
|
+
type: Boolean,
|
|
1254
|
+
default: true
|
|
1255
|
+
},
|
|
1256
|
+
multiple: {
|
|
1257
|
+
type: Boolean,
|
|
1258
|
+
default: false
|
|
1259
|
+
},
|
|
1260
|
+
mobileModal: {
|
|
1261
|
+
type: Boolean,
|
|
1262
|
+
default: function _default() {
|
|
1263
|
+
return config.defaultDatepickerMobileModal;
|
|
1264
|
+
}
|
|
1265
|
+
},
|
|
1266
|
+
focusable: {
|
|
1267
|
+
type: Boolean,
|
|
1268
|
+
default: true
|
|
1269
|
+
},
|
|
1270
|
+
trapFocus: {
|
|
1271
|
+
type: Boolean,
|
|
1272
|
+
default: function _default() {
|
|
1273
|
+
return config.defaultTrapFocus;
|
|
1274
|
+
}
|
|
1275
|
+
},
|
|
1276
|
+
appendToBody: Boolean,
|
|
1277
|
+
ariaNextLabel: String,
|
|
1278
|
+
ariaPreviousLabel: String
|
|
1279
|
+
},
|
|
1280
|
+
data: function data() {
|
|
1281
|
+
var focusedDate = (Array.isArray(this.value) ? this.value[0] : this.value) || this.focusedDate || this.dateCreator();
|
|
1282
|
+
if (!this.value && this.maxDate && this.maxDate.getFullYear() < focusedDate.getFullYear()) {
|
|
1283
|
+
focusedDate.setFullYear(this.maxDate.getFullYear());
|
|
1284
|
+
}
|
|
1285
|
+
return {
|
|
1286
|
+
dateSelected: this.value,
|
|
1287
|
+
focusedDateData: {
|
|
1288
|
+
day: focusedDate.getDate(),
|
|
1289
|
+
month: focusedDate.getMonth(),
|
|
1290
|
+
year: focusedDate.getFullYear()
|
|
1291
|
+
},
|
|
1292
|
+
_elementRef: 'input',
|
|
1293
|
+
_isDatepicker: true
|
|
1294
|
+
};
|
|
1295
|
+
},
|
|
1296
|
+
computed: {
|
|
1297
|
+
computedValue: {
|
|
1298
|
+
get: function get() {
|
|
1299
|
+
return this.dateSelected;
|
|
1300
|
+
},
|
|
1301
|
+
set: function set(value) {
|
|
1302
|
+
var _this = this;
|
|
1303
|
+
this.updateInternalState(value);
|
|
1304
|
+
if (!this.multiple) this.togglePicker(false);
|
|
1305
|
+
this.$emit('input', value);
|
|
1306
|
+
if (this.useHtml5Validation) {
|
|
1307
|
+
this.$nextTick(function () {
|
|
1308
|
+
_this.checkHtml5Validity();
|
|
1309
|
+
});
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
},
|
|
1313
|
+
formattedValue: function formattedValue() {
|
|
1314
|
+
return this.formatValue(this.computedValue);
|
|
1315
|
+
},
|
|
1316
|
+
localeOptions: function localeOptions() {
|
|
1317
|
+
return new Intl.DateTimeFormat(this.locale, {
|
|
1318
|
+
year: 'numeric',
|
|
1319
|
+
month: 'numeric'
|
|
1320
|
+
}).resolvedOptions();
|
|
1321
|
+
},
|
|
1322
|
+
dtf: function dtf() {
|
|
1323
|
+
return new Intl.DateTimeFormat(this.locale);
|
|
1324
|
+
},
|
|
1325
|
+
dtfMonth: function dtfMonth() {
|
|
1326
|
+
return new Intl.DateTimeFormat(this.locale, {
|
|
1327
|
+
year: this.localeOptions.year || 'numeric',
|
|
1328
|
+
month: this.localeOptions.month || '2-digit'
|
|
1329
|
+
});
|
|
1330
|
+
},
|
|
1331
|
+
newMonthNames: function newMonthNames() {
|
|
1332
|
+
if (Array.isArray(this.monthNames)) {
|
|
1333
|
+
return this.monthNames;
|
|
1334
|
+
}
|
|
1335
|
+
return getMonthNames(this.locale);
|
|
1336
|
+
},
|
|
1337
|
+
newDayNames: function newDayNames() {
|
|
1338
|
+
if (Array.isArray(this.dayNames)) {
|
|
1339
|
+
return this.dayNames;
|
|
1340
|
+
}
|
|
1341
|
+
return getWeekdayNames(this.locale);
|
|
1342
|
+
},
|
|
1343
|
+
listOfMonths: function listOfMonths() {
|
|
1344
|
+
var minMonth = 0;
|
|
1345
|
+
var maxMonth = 12;
|
|
1346
|
+
if (this.minDate && this.focusedDateData.year === this.minDate.getFullYear()) {
|
|
1347
|
+
minMonth = this.minDate.getMonth();
|
|
1348
|
+
}
|
|
1349
|
+
if (this.maxDate && this.focusedDateData.year === this.maxDate.getFullYear()) {
|
|
1350
|
+
maxMonth = this.maxDate.getMonth();
|
|
1351
|
+
}
|
|
1352
|
+
return this.newMonthNames.map(function (name, index) {
|
|
1353
|
+
return {
|
|
1354
|
+
name: name,
|
|
1355
|
+
index: index,
|
|
1356
|
+
disabled: index < minMonth || index > maxMonth
|
|
1357
|
+
};
|
|
1358
|
+
});
|
|
1359
|
+
},
|
|
1360
|
+
/*
|
|
1361
|
+
* Returns an array of years for the year dropdown. If earliest/latest
|
|
1362
|
+
* dates are set by props, range of years will fall within those dates.
|
|
1363
|
+
*/
|
|
1364
|
+
listOfYears: function listOfYears() {
|
|
1365
|
+
var latestYear = this.focusedDateData.year + this.yearsRange[1];
|
|
1366
|
+
if (this.maxDate && this.maxDate.getFullYear() < latestYear) {
|
|
1367
|
+
latestYear = Math.max(this.maxDate.getFullYear(), this.focusedDateData.year);
|
|
1368
|
+
}
|
|
1369
|
+
var earliestYear = this.focusedDateData.year + this.yearsRange[0];
|
|
1370
|
+
if (this.minDate && this.minDate.getFullYear() > earliestYear) {
|
|
1371
|
+
earliestYear = Math.min(this.minDate.getFullYear(), this.focusedDateData.year);
|
|
1372
|
+
}
|
|
1373
|
+
var arrayOfYears = [];
|
|
1374
|
+
for (var i = earliestYear; i <= latestYear; i++) {
|
|
1375
|
+
arrayOfYears.push(i);
|
|
1376
|
+
}
|
|
1377
|
+
return arrayOfYears.reverse();
|
|
1378
|
+
},
|
|
1379
|
+
showPrev: function showPrev() {
|
|
1380
|
+
if (!this.minDate) return false;
|
|
1381
|
+
if (this.isTypeMonth) {
|
|
1382
|
+
return this.focusedDateData.year <= this.minDate.getFullYear();
|
|
1383
|
+
}
|
|
1384
|
+
var dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month);
|
|
1385
|
+
var date = new Date(this.minDate.getFullYear(), this.minDate.getMonth());
|
|
1386
|
+
return dateToCheck <= date;
|
|
1387
|
+
},
|
|
1388
|
+
showNext: function showNext() {
|
|
1389
|
+
if (!this.maxDate) return false;
|
|
1390
|
+
if (this.isTypeMonth) {
|
|
1391
|
+
return this.focusedDateData.year >= this.maxDate.getFullYear();
|
|
1392
|
+
}
|
|
1393
|
+
var dateToCheck = new Date(this.focusedDateData.year, this.focusedDateData.month);
|
|
1394
|
+
var date = new Date(this.maxDate.getFullYear(), this.maxDate.getMonth());
|
|
1395
|
+
return dateToCheck >= date;
|
|
1396
|
+
},
|
|
1397
|
+
isMobile: function isMobile$1() {
|
|
1398
|
+
return this.mobileNative && isMobile.any();
|
|
1399
|
+
},
|
|
1400
|
+
isTypeMonth: function isTypeMonth() {
|
|
1401
|
+
return this.type === 'month';
|
|
1402
|
+
},
|
|
1403
|
+
ariaRole: function ariaRole() {
|
|
1404
|
+
if (!this.inline) {
|
|
1405
|
+
return 'dialog';
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
},
|
|
1409
|
+
watch: {
|
|
1410
|
+
/**
|
|
1411
|
+
* When v-model is changed:
|
|
1412
|
+
* 1. Update internal value.
|
|
1413
|
+
* 2. If it's invalid, validate again.
|
|
1414
|
+
*/
|
|
1415
|
+
value: function value(_value) {
|
|
1416
|
+
this.updateInternalState(_value);
|
|
1417
|
+
if (!this.multiple) this.togglePicker(false);
|
|
1418
|
+
},
|
|
1419
|
+
focusedDate: function focusedDate(value) {
|
|
1420
|
+
if (value) {
|
|
1421
|
+
this.focusedDateData = {
|
|
1422
|
+
day: value.getDate(),
|
|
1423
|
+
month: value.getMonth(),
|
|
1424
|
+
year: value.getFullYear()
|
|
1425
|
+
};
|
|
1426
|
+
}
|
|
1427
|
+
},
|
|
1428
|
+
/*
|
|
1429
|
+
* Emit input event on month and/or year change
|
|
1430
|
+
*/
|
|
1431
|
+
'focusedDateData.month': function focusedDateDataMonth(value) {
|
|
1432
|
+
this.$emit('change-month', value);
|
|
1433
|
+
},
|
|
1434
|
+
'focusedDateData.year': function focusedDateDataYear(value) {
|
|
1435
|
+
this.$emit('change-year', value);
|
|
1436
|
+
}
|
|
1437
|
+
},
|
|
1438
|
+
methods: {
|
|
1439
|
+
/*
|
|
1440
|
+
* Parse string into date
|
|
1441
|
+
*/
|
|
1442
|
+
onChange: function onChange(value) {
|
|
1443
|
+
var date = this.dateParser(value, this);
|
|
1444
|
+
if (date && (!isNaN(date) || Array.isArray(date) && date.length === 2 && !isNaN(date[0]) && !isNaN(date[1]))) {
|
|
1445
|
+
this.computedValue = date;
|
|
1446
|
+
} else {
|
|
1447
|
+
// Force refresh input value when not valid date
|
|
1448
|
+
this.computedValue = null;
|
|
1449
|
+
if (this.$refs.input) {
|
|
1450
|
+
this.$refs.input.newValue = this.computedValue;
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
},
|
|
1454
|
+
/*
|
|
1455
|
+
* Format date into string
|
|
1456
|
+
*/
|
|
1457
|
+
formatValue: function formatValue(value) {
|
|
1458
|
+
if (Array.isArray(value)) {
|
|
1459
|
+
var isArrayWithValidDates = Array.isArray(value) && value.every(function (v) {
|
|
1460
|
+
return !isNaN(v);
|
|
1461
|
+
});
|
|
1462
|
+
return isArrayWithValidDates ? this.dateFormatter(_toConsumableArray(value), this) : null;
|
|
1463
|
+
}
|
|
1464
|
+
return value && !isNaN(value) ? this.dateFormatter(value, this) : null;
|
|
1465
|
+
},
|
|
1466
|
+
/*
|
|
1467
|
+
* Either decrement month by 1 if not January or decrement year by 1
|
|
1468
|
+
* and set month to 11 (December) or decrement year when 'month'
|
|
1469
|
+
*/
|
|
1470
|
+
prev: function prev() {
|
|
1471
|
+
if (this.disabled) return;
|
|
1472
|
+
if (this.isTypeMonth) {
|
|
1473
|
+
this.focusedDateData.year -= 1;
|
|
1474
|
+
} else {
|
|
1475
|
+
if (this.focusedDateData.month > 0) {
|
|
1476
|
+
this.focusedDateData.month -= 1;
|
|
1477
|
+
} else {
|
|
1478
|
+
this.focusedDateData.month = 11;
|
|
1479
|
+
this.focusedDateData.year -= 1;
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
},
|
|
1483
|
+
/*
|
|
1484
|
+
* Either increment month by 1 if not December or increment year by 1
|
|
1485
|
+
* and set month to 0 (January) or increment year when 'month'
|
|
1486
|
+
*/
|
|
1487
|
+
next: function next() {
|
|
1488
|
+
if (this.disabled) return;
|
|
1489
|
+
if (this.isTypeMonth) {
|
|
1490
|
+
this.focusedDateData.year += 1;
|
|
1491
|
+
} else {
|
|
1492
|
+
if (this.focusedDateData.month < 11) {
|
|
1493
|
+
this.focusedDateData.month += 1;
|
|
1494
|
+
} else {
|
|
1495
|
+
this.focusedDateData.month = 0;
|
|
1496
|
+
this.focusedDateData.year += 1;
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
},
|
|
1500
|
+
formatNative: function formatNative(value) {
|
|
1501
|
+
return this.isTypeMonth ? this.formatYYYYMM(value) : this.formatYYYYMMDD(value);
|
|
1502
|
+
},
|
|
1503
|
+
/*
|
|
1504
|
+
* Format date into string 'YYYY-MM-DD'
|
|
1505
|
+
*/
|
|
1506
|
+
formatYYYYMMDD: function formatYYYYMMDD(value) {
|
|
1507
|
+
var date = new Date(value);
|
|
1508
|
+
if (value && !isNaN(date)) {
|
|
1509
|
+
var year = date.getFullYear();
|
|
1510
|
+
var month = date.getMonth() + 1;
|
|
1511
|
+
var day = date.getDate();
|
|
1512
|
+
return year + '-' + ((month < 10 ? '0' : '') + month) + '-' + ((day < 10 ? '0' : '') + day);
|
|
1513
|
+
}
|
|
1514
|
+
return '';
|
|
1515
|
+
},
|
|
1516
|
+
/*
|
|
1517
|
+
* Format date into string 'YYYY-MM'
|
|
1518
|
+
*/
|
|
1519
|
+
formatYYYYMM: function formatYYYYMM(value) {
|
|
1520
|
+
var date = new Date(value);
|
|
1521
|
+
if (value && !isNaN(date)) {
|
|
1522
|
+
var year = date.getFullYear();
|
|
1523
|
+
var month = date.getMonth() + 1;
|
|
1524
|
+
return year + '-' + ((month < 10 ? '0' : '') + month);
|
|
1525
|
+
}
|
|
1526
|
+
return '';
|
|
1527
|
+
},
|
|
1528
|
+
/*
|
|
1529
|
+
* Parse date from string
|
|
1530
|
+
*/
|
|
1531
|
+
onChangeNativePicker: function onChangeNativePicker(event) {
|
|
1532
|
+
var date = event.target.value;
|
|
1533
|
+
var s = date ? date.split('-') : [];
|
|
1534
|
+
if (s.length === 3) {
|
|
1535
|
+
var year = parseInt(s[0], 10);
|
|
1536
|
+
var month = parseInt(s[1]) - 1;
|
|
1537
|
+
var day = parseInt(s[2]);
|
|
1538
|
+
this.computedValue = new Date(year, month, day);
|
|
1539
|
+
} else {
|
|
1540
|
+
this.computedValue = null;
|
|
1541
|
+
}
|
|
1542
|
+
},
|
|
1543
|
+
updateInternalState: function updateInternalState(value) {
|
|
1544
|
+
if (this.dateSelected === value) return;
|
|
1545
|
+
var isArray = Array.isArray(value);
|
|
1546
|
+
var currentDate = isArray ? !value.length ? this.dateCreator() : value[value.length - 1] : !value ? this.dateCreator() : value;
|
|
1547
|
+
if (!isArray || isArray && this.dateSelected && value.length > this.dateSelected.length) {
|
|
1548
|
+
this.focusedDateData = {
|
|
1549
|
+
day: currentDate.getDate(),
|
|
1550
|
+
month: currentDate.getMonth(),
|
|
1551
|
+
year: currentDate.getFullYear()
|
|
1552
|
+
};
|
|
1553
|
+
}
|
|
1554
|
+
this.dateSelected = value;
|
|
1555
|
+
},
|
|
1556
|
+
/*
|
|
1557
|
+
* Toggle datepicker
|
|
1558
|
+
*/
|
|
1559
|
+
togglePicker: function togglePicker(active) {
|
|
1560
|
+
if (this.$refs.dropdown) {
|
|
1561
|
+
var isActive = typeof active === 'boolean' ? active : !this.$refs.dropdown.isActive;
|
|
1562
|
+
if (isActive) {
|
|
1563
|
+
this.$refs.dropdown.isActive = isActive;
|
|
1564
|
+
} else if (this.closeOnClick) {
|
|
1565
|
+
this.$refs.dropdown.isActive = isActive;
|
|
1566
|
+
}
|
|
1567
|
+
}
|
|
1568
|
+
},
|
|
1569
|
+
/*
|
|
1570
|
+
* Call default onFocus method and show datepicker
|
|
1571
|
+
*/
|
|
1572
|
+
handleOnFocus: function handleOnFocus(event) {
|
|
1573
|
+
this.onFocus(event);
|
|
1574
|
+
if (this.openOnFocus) {
|
|
1575
|
+
this.togglePicker(true);
|
|
1576
|
+
}
|
|
1577
|
+
},
|
|
1578
|
+
/*
|
|
1579
|
+
* Toggle dropdown
|
|
1580
|
+
*/
|
|
1581
|
+
toggle: function toggle() {
|
|
1582
|
+
if (this.mobileNative && this.isMobile) {
|
|
1583
|
+
var input = this.$refs.input.$refs.input;
|
|
1584
|
+
input.focus();
|
|
1585
|
+
input.click();
|
|
1586
|
+
return;
|
|
1587
|
+
}
|
|
1588
|
+
this.$refs.dropdown.toggle();
|
|
1589
|
+
},
|
|
1590
|
+
/*
|
|
1591
|
+
* Avoid dropdown toggle when is already visible
|
|
1592
|
+
*/
|
|
1593
|
+
onInputClick: function onInputClick(event) {
|
|
1594
|
+
if (this.$refs.dropdown.isActive) {
|
|
1595
|
+
event.stopPropagation();
|
|
1596
|
+
}
|
|
1597
|
+
},
|
|
1598
|
+
/**
|
|
1599
|
+
* Keypress event that is bound to the document.
|
|
1600
|
+
*/
|
|
1601
|
+
keyPress: function keyPress(_ref) {
|
|
1602
|
+
var key = _ref.key;
|
|
1603
|
+
if (this.$refs.dropdown && this.$refs.dropdown.isActive && (key === 'Escape' || key === 'Esc')) {
|
|
1604
|
+
this.togglePicker(false);
|
|
1605
|
+
}
|
|
1606
|
+
},
|
|
1607
|
+
/**
|
|
1608
|
+
* Emit 'blur' event on dropdown is not active (closed)
|
|
1609
|
+
*/
|
|
1610
|
+
onActiveChange: function onActiveChange(value) {
|
|
1611
|
+
if (!value) {
|
|
1612
|
+
this.onBlur();
|
|
1613
|
+
}
|
|
1614
|
+
/*
|
|
1615
|
+
* Emit 'active-change' when on dropdown active state change
|
|
1616
|
+
*/
|
|
1617
|
+
this.$emit('active-change', value);
|
|
1618
|
+
},
|
|
1619
|
+
changeFocus: function changeFocus(day) {
|
|
1620
|
+
this.focusedDateData = {
|
|
1621
|
+
day: day.getDate(),
|
|
1622
|
+
month: day.getMonth(),
|
|
1623
|
+
year: day.getFullYear()
|
|
1624
|
+
};
|
|
1625
|
+
}
|
|
1626
|
+
},
|
|
1627
|
+
created: function created() {
|
|
1628
|
+
if (typeof window !== 'undefined') {
|
|
1629
|
+
document.addEventListener('keyup', this.keyPress);
|
|
1630
|
+
}
|
|
1631
|
+
},
|
|
1632
|
+
beforeDestroy: function beforeDestroy() {
|
|
1633
|
+
if (typeof window !== 'undefined') {
|
|
1634
|
+
document.removeEventListener('keyup', this.keyPress);
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
};
|
|
1638
|
+
|
|
1639
|
+
/* script */
|
|
1640
|
+
const __vue_script__ = script;
|
|
1641
|
+
|
|
1642
|
+
/* template */
|
|
1643
|
+
var __vue_render__ = 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,"mobile-modal":_vm.mobileModal,"trap-focus":_vm.trapFocus,"aria-role":_vm.ariaRole,"append-to-body":_vm.appendToBody,"append-to-body-copy-parent":"","trigger-tabindex":-1},on:{"active-change":_vm.onActiveChange},scopedSlots:_vm._u([(!_vm.inline)?{key:"trigger",fn:function(props){return [_vm._t("trigger",[_c('b-input',_vm._b({ref:"input",attrs:{"autocomplete":"off","value":_vm.formattedValue,"placeholder":_vm.placeholder,"size":_vm.size,"icon":_vm.icon,"icon-right":_vm.iconRight,"icon-right-clickable":_vm.iconRightClickable,"icon-pack":_vm.iconPack,"rounded":_vm.rounded,"loading":_vm.loading,"disabled":_vm.disabled,"readonly":!_vm.editable,"use-html5-validation":false},on:{"icon-right-click":function($event){return _vm.$emit('icon-right-click', $event)},"focus":_vm.handleOnFocus},nativeOn:{"click":function($event){return _vm.onInputClick($event)},"keyup":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.togglePicker(true)},"change":function($event){return _vm.onChange($event.target.value)}}},'b-input',_vm.$attrs,false))],null,props)]}}:null],null,true)},[_c('b-dropdown-item',{class:{'dropdown-horizontal-timepicker': _vm.horizontalTimePicker},attrs:{"disabled":_vm.disabled,"focusable":_vm.focusable,"custom":""}},[_c('div',[_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,"aria-label":_vm.ariaPreviousLabel},on:{"click":function($event){$event.preventDefault();return _vm.prev($event)},"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }$event.preventDefault();return _vm.prev($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"space",32,$event.key,[" ","Spacebar"])){ return null; }$event.preventDefault();return _vm.prev($event)}]}},[_c('b-icon',{attrs:{"icon":_vm.iconPrev,"pack":_vm.iconPack,"both":"","type":"is-primary is-clickable"}})],1),_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,"aria-label":_vm.ariaNextLabel},on:{"click":function($event){$event.preventDefault();return _vm.next($event)},"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }$event.preventDefault();return _vm.next($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"space",32,$event.key,[" ","Spacebar"])){ return null; }$event.preventDefault();return _vm.next($event)}]}},[_c('b-icon',{attrs:{"icon":_vm.iconNext,"pack":_vm.iconPack,"both":"","type":"is-primary is-clickable"}})],1),_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.listOfMonths),function(month){return _c('option',{key:month.name,attrs:{"disabled":month.disabled},domProps:{"value":month.index}},[_vm._v(" "+_vm._s(month.name)+" ")])}),0):_vm._e(),_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(" "+_vm._s(year)+" ")])}),0)],1)],1)])],2),(!_vm.isTypeMonth)?_c('div',{staticClass:"datepicker-content",class:{'content-horizontal-timepicker': _vm.horizontalTimePicker}},[_c('b-datepicker-table',{attrs:{"day-names":_vm.newDayNames,"month-names":_vm.newMonthNames,"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,"week-number-clickable":_vm.weekNumberClickable,"range":_vm.range,"multiple":_vm.multiple},on:{"range-start":function (date) { return _vm.$emit('range-start', date); },"range-end":function (date) { return _vm.$emit('range-end', date); },"close":function($event){return _vm.togglePicker(false)},"update:focused":function($event){_vm.focusedDateData = $event;}},model:{value:(_vm.computedValue),callback:function ($$v) {_vm.computedValue=$$v;},expression:"computedValue"}})],1):_c('div',[_c('b-datepicker-month',{attrs:{"month-names":_vm.newMonthNames,"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,"range":_vm.range,"multiple":_vm.multiple},on:{"range-start":function (date) { return _vm.$emit('range-start', date); },"range-end":function (date) { return _vm.$emit('range-end', date); },"close":function($event){return _vm.togglePicker(false)},"change-focus":_vm.changeFocus,"update:focused":function($event){_vm.focusedDateData = $event;}},model:{value:(_vm.computedValue),callback:function ($$v) {_vm.computedValue=$$v;},expression:"computedValue"}})],1)]),(_vm.$slots.default !== undefined && _vm.$slots.default.length)?_c('footer',{staticClass:"datepicker-footer",class:{'footer-horizontal-timepicker': _vm.horizontalTimePicker}},[_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,"rounded":_vm.rounded,"loading":_vm.loading,"max":_vm.formatNative(_vm.maxDate),"min":_vm.formatNative(_vm.minDate),"disabled":_vm.disabled,"readonly":false,"use-html5-validation":false},on:{"focus":_vm.onFocus,"blur":_vm.onBlur},nativeOn:{"change":function($event){return _vm.onChangeNativePicker($event)}}},'b-input',_vm.$attrs,false))],1)};
|
|
1644
|
+
var __vue_staticRenderFns__ = [];
|
|
1645
|
+
|
|
1646
|
+
/* style */
|
|
1647
|
+
const __vue_inject_styles__ = undefined;
|
|
1648
|
+
/* scoped */
|
|
1649
|
+
const __vue_scope_id__ = undefined;
|
|
1650
|
+
/* module identifier */
|
|
1651
|
+
const __vue_module_identifier__ = undefined;
|
|
1652
|
+
/* functional template */
|
|
1653
|
+
const __vue_is_functional_template__ = false;
|
|
1654
|
+
/* style inject */
|
|
1655
|
+
|
|
1656
|
+
/* style inject SSR */
|
|
1657
|
+
|
|
1658
|
+
/* style inject shadow dom */
|
|
1659
|
+
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
const __vue_component__ = /*#__PURE__*/normalizeComponent(
|
|
1663
|
+
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
|
|
1664
|
+
__vue_inject_styles__,
|
|
1665
|
+
__vue_script__,
|
|
1666
|
+
__vue_scope_id__,
|
|
1667
|
+
__vue_is_functional_template__,
|
|
1668
|
+
__vue_module_identifier__,
|
|
1669
|
+
false,
|
|
1670
|
+
undefined,
|
|
1671
|
+
undefined,
|
|
1672
|
+
undefined
|
|
1673
|
+
);
|
|
1674
|
+
|
|
1675
|
+
var Datepicker = __vue_component__;
|
|
1676
|
+
|
|
1677
|
+
export { Datepicker as D };
|