flatpickr 4.6.3.0 → 4.6.13.1
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.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/lib/flatpickr/version.rb +1 -1
- data/vendor/assets/javascripts/flatpickr/l10n/ar-dz.js +61 -0
- data/vendor/assets/javascripts/flatpickr/l10n/ar.js +17 -7
- data/vendor/assets/javascripts/flatpickr/l10n/at.js +8 -7
- data/vendor/assets/javascripts/flatpickr/l10n/az.js +8 -8
- data/vendor/assets/javascripts/flatpickr/l10n/be.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/bg.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/bn.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/bs.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/cat.js +9 -8
- data/vendor/assets/javascripts/flatpickr/l10n/ckb.js +76 -0
- data/vendor/assets/javascripts/flatpickr/l10n/cs.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/cy.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/da.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/de.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/default.js +7 -6
- data/vendor/assets/javascripts/flatpickr/l10n/eo.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/es.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/et.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/fa.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/fi.js +39 -39
- data/vendor/assets/javascripts/flatpickr/l10n/fo.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/fr.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/ga.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/gr.js +13 -9
- data/vendor/assets/javascripts/flatpickr/l10n/he.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/hi.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/hr.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/hu.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/hy.js +78 -0
- data/vendor/assets/javascripts/flatpickr/l10n/id.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/index.js +820 -474
- data/vendor/assets/javascripts/flatpickr/l10n/is.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/it.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/ja.js +11 -7
- data/vendor/assets/javascripts/flatpickr/l10n/ka.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/km.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/ko.js +8 -7
- data/vendor/assets/javascripts/flatpickr/l10n/kz.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/lt.js +8 -7
- data/vendor/assets/javascripts/flatpickr/l10n/lv.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/mk.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/mn.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/ms.js +8 -16
- data/vendor/assets/javascripts/flatpickr/l10n/my.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/nl.js +8 -8
- data/vendor/assets/javascripts/flatpickr/l10n/nn.js +73 -0
- data/vendor/assets/javascripts/flatpickr/l10n/no.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/pa.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/pl.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/pt.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/ro.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/ru.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/si.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/sk.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/sl.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/sq.js +14 -7
- data/vendor/assets/javascripts/flatpickr/l10n/sr-cyr.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/sr.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/sv.js +40 -39
- data/vendor/assets/javascripts/flatpickr/l10n/th.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/tr.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/uk.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/uz.js +75 -0
- data/vendor/assets/javascripts/flatpickr/l10n/uz_latn.js +75 -0
- data/vendor/assets/javascripts/flatpickr/l10n/vn.js +9 -9
- data/vendor/assets/javascripts/flatpickr/l10n/zh-tw.js +7 -7
- data/vendor/assets/javascripts/flatpickr/l10n/zh.js +7 -7
- data/vendor/assets/javascripts/flatpickr/plugins/confirmDate/confirmDate.js +38 -18
- data/vendor/assets/javascripts/flatpickr/plugins/labelPlugin/labelPlugin.js +4 -4
- data/vendor/assets/javascripts/flatpickr/plugins/minMaxTimePlugin.js +47 -24
- data/vendor/assets/javascripts/flatpickr/plugins/momentPlugin.js +69 -0
- data/vendor/assets/javascripts/flatpickr/plugins/monthSelect/index.js +154 -56
- data/vendor/assets/javascripts/flatpickr/plugins/rangePlugin.js +175 -142
- data/vendor/assets/javascripts/flatpickr/plugins/scrollPlugin.js +53 -18
- data/vendor/assets/javascripts/flatpickr/plugins/weekSelect/weekSelect.js +18 -5
- data/vendor/assets/javascripts/flatpickr.js +435 -321
- data/vendor/assets/stylesheets/flatpickr/plugins/monthSelect/style.css +45 -7
- data/vendor/assets/stylesheets/flatpickr/themes/airbnb.css +13 -2
- data/vendor/assets/stylesheets/flatpickr/themes/confetti.css +15 -4
- data/vendor/assets/stylesheets/flatpickr/themes/dark.css +13 -2
- data/vendor/assets/stylesheets/flatpickr/themes/light.css +15 -4
- data/vendor/assets/stylesheets/flatpickr/themes/material_blue.css +15 -4
- data/vendor/assets/stylesheets/flatpickr/themes/material_green.css +15 -4
- data/vendor/assets/stylesheets/flatpickr/themes/material_orange.css +15 -4
- data/vendor/assets/stylesheets/flatpickr/themes/material_red.css +15 -4
- data/vendor/assets/stylesheets/flatpickr.css +13 -2
- metadata +15 -17
- data/.gitignore +0 -10
- data/.rspec +0 -2
- data/.travis.yml +0 -5
- data/Gemfile +0 -3
- data/Rakefile +0 -44
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/flatpickr.gemspec +0 -26
@@ -1,23 +1,23 @@
|
|
1
|
-
/* flatpickr v4.6.
|
1
|
+
/* flatpickr v4.6.13, @license MIT */
|
2
2
|
(function (global, factory) {
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
4
4
|
typeof define === 'function' && define.amd ? define(factory) :
|
5
|
-
(global = global || self, global.flatpickr = factory());
|
6
|
-
}(this, function () { 'use strict';
|
5
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.flatpickr = factory());
|
6
|
+
}(this, (function () { 'use strict';
|
7
7
|
|
8
8
|
/*! *****************************************************************************
|
9
|
-
Copyright (c) Microsoft Corporation.
|
10
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
11
|
-
this file except in compliance with the License. You may obtain a copy of the
|
12
|
-
License at http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
Copyright (c) Microsoft Corporation.
|
13
10
|
|
14
|
-
|
15
|
-
|
16
|
-
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
17
|
-
MERCHANTABLITY OR NON-INFRINGEMENT.
|
11
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
12
|
+
purpose with or without fee is hereby granted.
|
18
13
|
|
19
|
-
|
20
|
-
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
15
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
16
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
17
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
18
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
19
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
20
|
+
PERFORMANCE OF THIS SOFTWARE.
|
21
21
|
***************************************************************************** */
|
22
22
|
|
23
23
|
var __assign = function() {
|
@@ -29,7 +29,15 @@
|
|
29
29
|
return t;
|
30
30
|
};
|
31
31
|
return __assign.apply(this, arguments);
|
32
|
-
};
|
32
|
+
};
|
33
|
+
|
34
|
+
function __spreadArrays() {
|
35
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
36
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
37
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
38
|
+
r[k] = a[j];
|
39
|
+
return r;
|
40
|
+
}
|
33
41
|
|
34
42
|
var HOOKS = [
|
35
43
|
"onChange",
|
@@ -47,14 +55,15 @@
|
|
47
55
|
];
|
48
56
|
var defaults = {
|
49
57
|
_disable: [],
|
50
|
-
_enable: [],
|
51
58
|
allowInput: false,
|
59
|
+
allowInvalidPreload: false,
|
52
60
|
altFormat: "F j, Y",
|
53
61
|
altInput: false,
|
54
62
|
altInputClass: "form-control input",
|
55
63
|
animate: typeof window === "object" &&
|
56
64
|
window.navigator.userAgent.indexOf("MSIE") === -1,
|
57
65
|
ariaDateFormat: "F j, Y",
|
66
|
+
autoFillDefaultTime: true,
|
58
67
|
clickOpens: true,
|
59
68
|
closeOnSelect: true,
|
60
69
|
conjunction: ", ",
|
@@ -64,7 +73,6 @@
|
|
64
73
|
defaultSeconds: 0,
|
65
74
|
disable: [],
|
66
75
|
disableMobile: false,
|
67
|
-
enable: [],
|
68
76
|
enableSeconds: false,
|
69
77
|
enableTime: false,
|
70
78
|
errorHandler: function (err) {
|
@@ -115,7 +123,7 @@
|
|
115
123
|
static: false,
|
116
124
|
time_24hr: false,
|
117
125
|
weekNumbers: false,
|
118
|
-
wrap: false
|
126
|
+
wrap: false,
|
119
127
|
};
|
120
128
|
|
121
129
|
var english = {
|
@@ -129,7 +137,7 @@
|
|
129
137
|
"Thursday",
|
130
138
|
"Friday",
|
131
139
|
"Saturday",
|
132
|
-
]
|
140
|
+
],
|
133
141
|
},
|
134
142
|
months: {
|
135
143
|
shorthand: [
|
@@ -159,7 +167,7 @@
|
|
159
167
|
"October",
|
160
168
|
"November",
|
161
169
|
"December",
|
162
|
-
]
|
170
|
+
],
|
163
171
|
},
|
164
172
|
daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
|
165
173
|
firstDayOfWeek: 0,
|
@@ -184,27 +192,25 @@
|
|
184
192
|
toggleTitle: "Click to toggle",
|
185
193
|
amPM: ["AM", "PM"],
|
186
194
|
yearAriaLabel: "Year",
|
195
|
+
monthAriaLabel: "Month",
|
187
196
|
hourAriaLabel: "Hour",
|
188
197
|
minuteAriaLabel: "Minute",
|
189
|
-
time_24hr: false
|
198
|
+
time_24hr: false,
|
190
199
|
};
|
191
200
|
|
192
|
-
var pad = function (number) {
|
201
|
+
var pad = function (number, length) {
|
202
|
+
if (length === void 0) { length = 2; }
|
203
|
+
return ("000" + number).slice(length * -1);
|
204
|
+
};
|
193
205
|
var int = function (bool) { return (bool === true ? 1 : 0); };
|
194
206
|
/* istanbul ignore next */
|
195
|
-
function debounce(
|
196
|
-
|
197
|
-
var timeout;
|
207
|
+
function debounce(fn, wait) {
|
208
|
+
var t;
|
198
209
|
return function () {
|
199
|
-
var
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
if (!immediate)
|
204
|
-
func.apply(context, args);
|
205
|
-
}, wait);
|
206
|
-
if (immediate && !timeout)
|
207
|
-
func.apply(context, args);
|
210
|
+
var _this = this;
|
211
|
+
var args = arguments;
|
212
|
+
clearTimeout(t);
|
213
|
+
t = setTimeout(function () { return fn.apply(_this, args); }, wait);
|
208
214
|
};
|
209
215
|
}
|
210
216
|
var arrayify = function (obj) {
|
@@ -254,11 +260,16 @@
|
|
254
260
|
return wrapper;
|
255
261
|
}
|
256
262
|
function getEventTarget(event) {
|
257
|
-
|
258
|
-
|
259
|
-
|
263
|
+
try {
|
264
|
+
if (typeof event.composedPath === "function") {
|
265
|
+
var path = event.composedPath();
|
266
|
+
return path[0];
|
267
|
+
}
|
268
|
+
return event.target;
|
269
|
+
}
|
270
|
+
catch (error) {
|
271
|
+
return event.target;
|
260
272
|
}
|
261
|
-
return event.target;
|
262
273
|
}
|
263
274
|
|
264
275
|
var doNothing = function () { return undefined; };
|
@@ -269,7 +280,7 @@
|
|
269
280
|
dateObj.setMonth(locale.months.longhand.indexOf(monthName));
|
270
281
|
},
|
271
282
|
G: function (dateObj, hour) {
|
272
|
-
dateObj.setHours(parseFloat(hour));
|
283
|
+
dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));
|
273
284
|
},
|
274
285
|
H: function (dateObj, hour) {
|
275
286
|
dateObj.setHours(parseFloat(hour));
|
@@ -302,7 +313,7 @@
|
|
302
313
|
dateObj.setDate(parseFloat(day));
|
303
314
|
},
|
304
315
|
h: function (dateObj, hour) {
|
305
|
-
dateObj.setHours(parseFloat(hour));
|
316
|
+
dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));
|
306
317
|
},
|
307
318
|
i: function (dateObj, minutes) {
|
308
319
|
dateObj.setMinutes(parseFloat(minutes));
|
@@ -326,16 +337,16 @@
|
|
326
337
|
w: doNothing,
|
327
338
|
y: function (dateObj, year) {
|
328
339
|
dateObj.setFullYear(2000 + parseFloat(year));
|
329
|
-
}
|
340
|
+
},
|
330
341
|
};
|
331
342
|
var tokenRegex = {
|
332
|
-
D: "
|
333
|
-
F: "
|
343
|
+
D: "",
|
344
|
+
F: "",
|
334
345
|
G: "(\\d\\d|\\d)",
|
335
346
|
H: "(\\d\\d|\\d)",
|
336
347
|
J: "(\\d\\d|\\d)\\w+",
|
337
348
|
K: "",
|
338
|
-
M: "
|
349
|
+
M: "",
|
339
350
|
S: "(\\d\\d|\\d)",
|
340
351
|
U: "(.+)",
|
341
352
|
W: "(\\d\\d|\\d)",
|
@@ -345,13 +356,13 @@
|
|
345
356
|
h: "(\\d\\d|\\d)",
|
346
357
|
i: "(\\d\\d|\\d)",
|
347
358
|
j: "(\\d\\d|\\d)",
|
348
|
-
l: "
|
359
|
+
l: "",
|
349
360
|
m: "(\\d\\d|\\d)",
|
350
361
|
n: "(\\d\\d|\\d)",
|
351
362
|
s: "(\\d\\d|\\d)",
|
352
363
|
u: "(.+)",
|
353
364
|
w: "(\\d\\d|\\d)",
|
354
|
-
y: "(\\d{2})"
|
365
|
+
y: "(\\d{2})",
|
355
366
|
};
|
356
367
|
var formats = {
|
357
368
|
// get the date in UTC
|
@@ -389,8 +400,8 @@
|
|
389
400
|
W: function (date, _, options) {
|
390
401
|
return options.getWeek(date);
|
391
402
|
},
|
392
|
-
// full year e.g. 2016
|
393
|
-
Y: function (date) { return date.getFullYear(); },
|
403
|
+
// full year e.g. 2016, padded (0001-9999)
|
404
|
+
Y: function (date) { return pad(date.getFullYear(), 4); },
|
394
405
|
// day in month, padded (01-30)
|
395
406
|
d: function (date) { return pad(date.getDate()); },
|
396
407
|
// hour from 1-12 (am/pm)
|
@@ -414,14 +425,14 @@
|
|
414
425
|
// number of the day of the week
|
415
426
|
w: function (date) { return date.getDay(); },
|
416
427
|
// last two digits of year e.g. 16 for 2016
|
417
|
-
y: function (date) { return String(date.getFullYear()).substring(2); }
|
428
|
+
y: function (date) { return String(date.getFullYear()).substring(2); },
|
418
429
|
};
|
419
430
|
|
420
431
|
var createDateFormatter = function (_a) {
|
421
|
-
var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
|
432
|
+
var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;
|
422
433
|
return function (dateObj, frmt, overrideLocale) {
|
423
434
|
var locale = overrideLocale || l10n;
|
424
|
-
if (config.formatDate !== undefined) {
|
435
|
+
if (config.formatDate !== undefined && !isMobile) {
|
425
436
|
return config.formatDate(dateObj, frmt, locale);
|
426
437
|
}
|
427
438
|
return frmt
|
@@ -459,17 +470,15 @@
|
|
459
470
|
parsedDate = new Date();
|
460
471
|
timeless = true;
|
461
472
|
}
|
473
|
+
else if (config && config.parseDate) {
|
474
|
+
parsedDate = config.parseDate(date, format);
|
475
|
+
}
|
462
476
|
else if (/Z$/.test(datestr) ||
|
463
477
|
/GMT$/.test(datestr) // datestrings w/ timezone
|
464
|
-
)
|
478
|
+
) {
|
465
479
|
parsedDate = new Date(date);
|
466
|
-
|
467
|
-
parsedDate = config.parseDate(date, format);
|
480
|
+
}
|
468
481
|
else {
|
469
|
-
parsedDate =
|
470
|
-
!config || !config.noCalendar
|
471
|
-
? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)
|
472
|
-
: new Date(new Date().setHours(0, 0, 0, 0));
|
473
482
|
var matched = void 0, ops = [];
|
474
483
|
for (var i = 0, matchIndex = 0, regexStr = ""; i < format.length; i++) {
|
475
484
|
var token_1 = format[i];
|
@@ -481,17 +490,21 @@
|
|
481
490
|
if (match && (matched = true)) {
|
482
491
|
ops[token_1 !== "Y" ? "push" : "unshift"]({
|
483
492
|
fn: revFormat[token_1],
|
484
|
-
val: match[++matchIndex]
|
493
|
+
val: match[++matchIndex],
|
485
494
|
});
|
486
495
|
}
|
487
496
|
}
|
488
497
|
else if (!isBackSlash)
|
489
498
|
regexStr += "."; // don't really care
|
490
|
-
ops.forEach(function (_a) {
|
491
|
-
var fn = _a.fn, val = _a.val;
|
492
|
-
return (parsedDate = fn(parsedDate, val, locale) || parsedDate);
|
493
|
-
});
|
494
499
|
}
|
500
|
+
parsedDate =
|
501
|
+
!config || !config.noCalendar
|
502
|
+
? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)
|
503
|
+
: new Date(new Date().setHours(0, 0, 0, 0));
|
504
|
+
ops.forEach(function (_a) {
|
505
|
+
var fn = _a.fn, val = _a.val;
|
506
|
+
return (parsedDate = fn(parsedDate, val, locale) || parsedDate);
|
507
|
+
});
|
495
508
|
parsedDate = matched ? parsedDate : undefined;
|
496
509
|
}
|
497
510
|
}
|
@@ -519,9 +532,44 @@
|
|
519
532
|
var isBetween = function (ts, ts1, ts2) {
|
520
533
|
return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);
|
521
534
|
};
|
535
|
+
var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {
|
536
|
+
return hours * 3600 + minutes * 60 + seconds;
|
537
|
+
};
|
538
|
+
var parseSeconds = function (secondsSinceMidnight) {
|
539
|
+
var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;
|
540
|
+
return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];
|
541
|
+
};
|
522
542
|
var duration = {
|
523
|
-
DAY: 86400000
|
543
|
+
DAY: 86400000,
|
524
544
|
};
|
545
|
+
function getDefaultHours(config) {
|
546
|
+
var hours = config.defaultHour;
|
547
|
+
var minutes = config.defaultMinute;
|
548
|
+
var seconds = config.defaultSeconds;
|
549
|
+
if (config.minDate !== undefined) {
|
550
|
+
var minHour = config.minDate.getHours();
|
551
|
+
var minMinutes = config.minDate.getMinutes();
|
552
|
+
var minSeconds = config.minDate.getSeconds();
|
553
|
+
if (hours < minHour) {
|
554
|
+
hours = minHour;
|
555
|
+
}
|
556
|
+
if (hours === minHour && minutes < minMinutes) {
|
557
|
+
minutes = minMinutes;
|
558
|
+
}
|
559
|
+
if (hours === minHour && minutes === minMinutes && seconds < minSeconds)
|
560
|
+
seconds = config.minDate.getSeconds();
|
561
|
+
}
|
562
|
+
if (config.maxDate !== undefined) {
|
563
|
+
var maxHr = config.maxDate.getHours();
|
564
|
+
var maxMinutes = config.maxDate.getMinutes();
|
565
|
+
hours = Math.min(hours, maxHr);
|
566
|
+
if (hours === maxHr)
|
567
|
+
minutes = Math.min(maxMinutes, minutes);
|
568
|
+
if (hours === maxHr && minutes === maxMinutes)
|
569
|
+
seconds = config.maxDate.getSeconds();
|
570
|
+
}
|
571
|
+
return { hours: hours, minutes: minutes, seconds: seconds };
|
572
|
+
}
|
525
573
|
|
526
574
|
if (typeof Object.assign !== "function") {
|
527
575
|
Object.assign = function (target) {
|
@@ -548,8 +596,8 @@
|
|
548
596
|
var DEBOUNCED_CHANGE_MS = 300;
|
549
597
|
function FlatpickrInstance(element, instanceConfig) {
|
550
598
|
var self = {
|
551
|
-
config: __assign({}, defaults, flatpickr.defaultConfig),
|
552
|
-
l10n: english
|
599
|
+
config: __assign(__assign({}, defaults), flatpickr.defaultConfig),
|
600
|
+
l10n: english,
|
553
601
|
};
|
554
602
|
self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });
|
555
603
|
self._handlers = [];
|
@@ -562,10 +610,13 @@
|
|
562
610
|
self.changeYear = changeYear;
|
563
611
|
self.clear = clear;
|
564
612
|
self.close = close;
|
613
|
+
self.onMouseOver = onMouseOver;
|
565
614
|
self._createElement = createElement;
|
615
|
+
self.createDay = createDay;
|
566
616
|
self.destroy = destroy;
|
567
617
|
self.isEnabled = isEnabled;
|
568
618
|
self.jumpToDate = jumpToDate;
|
619
|
+
self.updateValue = updateValue;
|
569
620
|
self.open = open;
|
570
621
|
self.redraw = redraw;
|
571
622
|
self.set = set;
|
@@ -579,7 +630,7 @@
|
|
579
630
|
if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))
|
580
631
|
return 29;
|
581
632
|
return self.l10n.daysInMonth[month];
|
582
|
-
}
|
633
|
+
},
|
583
634
|
};
|
584
635
|
}
|
585
636
|
function init() {
|
@@ -595,15 +646,11 @@
|
|
595
646
|
bindEvents();
|
596
647
|
if (self.selectedDates.length || self.config.noCalendar) {
|
597
648
|
if (self.config.enableTime) {
|
598
|
-
setHoursFromDate(self.config.noCalendar
|
599
|
-
? self.latestSelectedDateObj || self.config.minDate
|
600
|
-
: undefined);
|
649
|
+
setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);
|
601
650
|
}
|
602
651
|
updateValue(false);
|
603
652
|
}
|
604
653
|
setCalendarWidth();
|
605
|
-
self.showTimeInput =
|
606
|
-
self.selectedDates.length > 0 || self.config.noCalendar;
|
607
654
|
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
608
655
|
/* TODO: investigate this further
|
609
656
|
|
@@ -618,13 +665,19 @@
|
|
618
665
|
}
|
619
666
|
triggerEvent("onReady");
|
620
667
|
}
|
668
|
+
function getClosestActiveElement() {
|
669
|
+
var _a;
|
670
|
+
return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())
|
671
|
+
.activeElement || document.activeElement);
|
672
|
+
}
|
621
673
|
function bindToInstance(fn) {
|
622
674
|
return fn.bind(self);
|
623
675
|
}
|
624
676
|
function setCalendarWidth() {
|
625
677
|
var config = self.config;
|
626
|
-
if (config.weekNumbers === false && config.showMonths === 1)
|
678
|
+
if (config.weekNumbers === false && config.showMonths === 1) {
|
627
679
|
return;
|
680
|
+
}
|
628
681
|
else if (config.noCalendar !== true) {
|
629
682
|
window.requestAnimationFrame(function () {
|
630
683
|
if (self.calendarContainer !== undefined) {
|
@@ -651,7 +704,14 @@
|
|
651
704
|
*/
|
652
705
|
function updateTime(e) {
|
653
706
|
if (self.selectedDates.length === 0) {
|
654
|
-
|
707
|
+
var defaultDate = self.config.minDate === undefined ||
|
708
|
+
compareDates(new Date(), self.config.minDate) >= 0
|
709
|
+
? new Date()
|
710
|
+
: new Date(self.config.minDate.getTime());
|
711
|
+
var defaults = getDefaultHours(self.config);
|
712
|
+
defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());
|
713
|
+
self.selectedDates = [defaultDate];
|
714
|
+
self.latestSelectedDateObj = defaultDate;
|
655
715
|
}
|
656
716
|
if (e !== undefined && e.type !== "blur") {
|
657
717
|
timeWrapper(e);
|
@@ -699,25 +759,40 @@
|
|
699
759
|
self.latestSelectedDateObj &&
|
700
760
|
compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===
|
701
761
|
0);
|
702
|
-
if (
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
762
|
+
if (self.config.maxTime !== undefined &&
|
763
|
+
self.config.minTime !== undefined &&
|
764
|
+
self.config.minTime > self.config.maxTime) {
|
765
|
+
var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());
|
766
|
+
var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());
|
767
|
+
var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);
|
768
|
+
if (currentTime > maxBound && currentTime < minBound) {
|
769
|
+
var result = parseSeconds(minBound);
|
770
|
+
hours = result[0];
|
771
|
+
minutes = result[1];
|
772
|
+
seconds = result[2];
|
773
|
+
}
|
774
|
+
}
|
775
|
+
else {
|
776
|
+
if (limitMaxHours) {
|
777
|
+
var maxTime = self.config.maxTime !== undefined
|
778
|
+
? self.config.maxTime
|
779
|
+
: self.config.maxDate;
|
780
|
+
hours = Math.min(hours, maxTime.getHours());
|
781
|
+
if (hours === maxTime.getHours())
|
782
|
+
minutes = Math.min(minutes, maxTime.getMinutes());
|
783
|
+
if (minutes === maxTime.getMinutes())
|
784
|
+
seconds = Math.min(seconds, maxTime.getSeconds());
|
785
|
+
}
|
786
|
+
if (limitMinHours) {
|
787
|
+
var minTime = self.config.minTime !== undefined
|
788
|
+
? self.config.minTime
|
789
|
+
: self.config.minDate;
|
790
|
+
hours = Math.max(hours, minTime.getHours());
|
791
|
+
if (hours === minTime.getHours() && minutes < minTime.getMinutes())
|
792
|
+
minutes = minTime.getMinutes();
|
793
|
+
if (minutes === minTime.getMinutes())
|
794
|
+
seconds = Math.max(seconds, minTime.getSeconds());
|
795
|
+
}
|
721
796
|
}
|
722
797
|
setHours(hours, minutes, seconds);
|
723
798
|
}
|
@@ -726,32 +801,9 @@
|
|
726
801
|
*/
|
727
802
|
function setHoursFromDate(dateObj) {
|
728
803
|
var date = dateObj || self.latestSelectedDateObj;
|
729
|
-
if (date)
|
804
|
+
if (date && date instanceof Date) {
|
730
805
|
setHours(date.getHours(), date.getMinutes(), date.getSeconds());
|
731
|
-
}
|
732
|
-
function setDefaultHours() {
|
733
|
-
var hours = self.config.defaultHour;
|
734
|
-
var minutes = self.config.defaultMinute;
|
735
|
-
var seconds = self.config.defaultSeconds;
|
736
|
-
if (self.config.minDate !== undefined) {
|
737
|
-
var minHr = self.config.minDate.getHours();
|
738
|
-
var minMinutes = self.config.minDate.getMinutes();
|
739
|
-
hours = Math.max(hours, minHr);
|
740
|
-
if (hours === minHr)
|
741
|
-
minutes = Math.max(minMinutes, minutes);
|
742
|
-
if (hours === minHr && minutes === minMinutes)
|
743
|
-
seconds = self.config.minDate.getSeconds();
|
744
|
-
}
|
745
|
-
if (self.config.maxDate !== undefined) {
|
746
|
-
var maxHr = self.config.maxDate.getHours();
|
747
|
-
var maxMinutes = self.config.maxDate.getMinutes();
|
748
|
-
hours = Math.min(hours, maxHr);
|
749
|
-
if (hours === maxHr)
|
750
|
-
minutes = Math.min(maxMinutes, minutes);
|
751
|
-
if (hours === maxHr && minutes === maxMinutes)
|
752
|
-
seconds = self.config.maxDate.getSeconds();
|
753
806
|
}
|
754
|
-
setHours(hours, minutes, seconds);
|
755
807
|
}
|
756
808
|
/**
|
757
809
|
* Sets the hours, minutes, and optionally seconds
|
@@ -782,7 +834,8 @@
|
|
782
834
|
* @param {Event} event the keyup or increment event
|
783
835
|
*/
|
784
836
|
function onYearInput(event) {
|
785
|
-
var
|
837
|
+
var eventTarget = getEventTarget(event);
|
838
|
+
var year = parseInt(eventTarget.value) + (event.delta || 0);
|
786
839
|
if (year / 1000 > 1 ||
|
787
840
|
(event.key === "Enter" && !/[^\d]/.test(year.toString()))) {
|
788
841
|
changeYear(year);
|
@@ -801,24 +854,9 @@
|
|
801
854
|
return element.forEach(function (el) { return bind(el, event, handler, options); });
|
802
855
|
element.addEventListener(event, handler, options);
|
803
856
|
self._handlers.push({
|
804
|
-
|
805
|
-
event: event,
|
806
|
-
handler: handler,
|
807
|
-
options: options
|
857
|
+
remove: function () { return element.removeEventListener(event, handler, options); },
|
808
858
|
});
|
809
859
|
}
|
810
|
-
/**
|
811
|
-
* A mousedown handler which mimics click.
|
812
|
-
* Minimizes latency, since we don't need to wait for mouseup in most cases.
|
813
|
-
* Also, avoids handling right clicks.
|
814
|
-
*
|
815
|
-
* @param {Function} handler the event handler
|
816
|
-
*/
|
817
|
-
function onClick(handler) {
|
818
|
-
return function (evt) {
|
819
|
-
evt.which === 1 && handler(evt);
|
820
|
-
};
|
821
|
-
}
|
822
860
|
function triggerChange() {
|
823
861
|
triggerEvent("onChange");
|
824
862
|
}
|
@@ -842,44 +880,49 @@
|
|
842
880
|
if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))
|
843
881
|
bind(self.daysContainer, "mouseover", function (e) {
|
844
882
|
if (self.config.mode === "range")
|
845
|
-
onMouseOver(e
|
883
|
+
onMouseOver(getEventTarget(e));
|
846
884
|
});
|
847
|
-
bind(
|
885
|
+
bind(self._input, "keydown", onKeyDown);
|
886
|
+
if (self.calendarContainer !== undefined) {
|
887
|
+
bind(self.calendarContainer, "keydown", onKeyDown);
|
888
|
+
}
|
848
889
|
if (!self.config.inline && !self.config.static)
|
849
890
|
bind(window, "resize", debouncedResize);
|
850
891
|
if (window.ontouchstart !== undefined)
|
851
892
|
bind(window.document, "touchstart", documentClick);
|
852
893
|
else
|
853
|
-
bind(window.document, "mousedown",
|
894
|
+
bind(window.document, "mousedown", documentClick);
|
854
895
|
bind(window.document, "focus", documentClick, { capture: true });
|
855
896
|
if (self.config.clickOpens === true) {
|
856
897
|
bind(self._input, "focus", self.open);
|
857
|
-
bind(self._input, "
|
898
|
+
bind(self._input, "click", self.open);
|
858
899
|
}
|
859
900
|
if (self.daysContainer !== undefined) {
|
860
|
-
bind(self.monthNav, "
|
901
|
+
bind(self.monthNav, "click", onMonthNavClick);
|
861
902
|
bind(self.monthNav, ["keyup", "increment"], onYearInput);
|
862
|
-
bind(self.daysContainer, "
|
903
|
+
bind(self.daysContainer, "click", selectDate);
|
863
904
|
}
|
864
905
|
if (self.timeContainer !== undefined &&
|
865
906
|
self.minuteElement !== undefined &&
|
866
907
|
self.hourElement !== undefined) {
|
867
908
|
var selText = function (e) {
|
868
|
-
return e.
|
909
|
+
return getEventTarget(e).select();
|
869
910
|
};
|
870
911
|
bind(self.timeContainer, ["increment"], updateTime);
|
871
912
|
bind(self.timeContainer, "blur", updateTime, { capture: true });
|
872
|
-
bind(self.timeContainer, "
|
913
|
+
bind(self.timeContainer, "click", timeIncrement);
|
873
914
|
bind([self.hourElement, self.minuteElement], ["focus", "click"], selText);
|
874
915
|
if (self.secondElement !== undefined)
|
875
916
|
bind(self.secondElement, "focus", function () { return self.secondElement && self.secondElement.select(); });
|
876
917
|
if (self.amPM !== undefined) {
|
877
|
-
bind(self.amPM, "
|
918
|
+
bind(self.amPM, "click", function (e) {
|
878
919
|
updateTime(e);
|
879
|
-
|
880
|
-
}));
|
920
|
+
});
|
881
921
|
}
|
882
922
|
}
|
923
|
+
if (self.config.allowInput) {
|
924
|
+
bind(self._input, "blur", onBlur);
|
925
|
+
}
|
883
926
|
}
|
884
927
|
/**
|
885
928
|
* Set the calendar view to a particular date.
|
@@ -923,8 +966,9 @@
|
|
923
966
|
* @param {Event} e the click event
|
924
967
|
*/
|
925
968
|
function timeIncrement(e) {
|
926
|
-
|
927
|
-
|
969
|
+
var eventTarget = getEventTarget(e);
|
970
|
+
if (~eventTarget.className.indexOf("arrow"))
|
971
|
+
incrementNumInput(e, eventTarget.classList.contains("arrowUp") ? 1 : -1);
|
928
972
|
}
|
929
973
|
/**
|
930
974
|
* Increments/decrements the value of input associ-
|
@@ -936,7 +980,7 @@
|
|
936
980
|
* @param {Element} inputElem the input element
|
937
981
|
*/
|
938
982
|
function incrementNumInput(e, delta, inputElem) {
|
939
|
-
var target = e && e
|
983
|
+
var target = e && getEventTarget(e);
|
940
984
|
var input = inputElem ||
|
941
985
|
(target && target.parentNode && target.parentNode.firstChild);
|
942
986
|
var event = createEvent("increment");
|
@@ -999,8 +1043,8 @@
|
|
999
1043
|
? self.config.appendTo
|
1000
1044
|
: window.document.body).appendChild(self.calendarContainer);
|
1001
1045
|
}
|
1002
|
-
function createDay(className, date,
|
1003
|
-
var dateIsEnabled = isEnabled(date, true), dayElement = createElement("span",
|
1046
|
+
function createDay(className, date, _dayNumber, i) {
|
1047
|
+
var dateIsEnabled = isEnabled(date, true), dayElement = createElement("span", className, date.getDate().toString());
|
1004
1048
|
dayElement.dateObj = date;
|
1005
1049
|
dayElement.$i = i;
|
1006
1050
|
dayElement.setAttribute("aria-label", self.formatDate(date, self.config.ariaDateFormat));
|
@@ -1035,7 +1079,7 @@
|
|
1035
1079
|
if (self.weekNumbers &&
|
1036
1080
|
self.config.showMonths === 1 &&
|
1037
1081
|
className !== "prevMonthDay" &&
|
1038
|
-
|
1082
|
+
i % 7 === 6) {
|
1039
1083
|
self.weekNumbers.insertAdjacentHTML("beforeend", "<span class='flatpickr-day'>" + self.config.getWeek(date) + "</span>");
|
1040
1084
|
}
|
1041
1085
|
triggerEvent("onDayCreate", dayElement);
|
@@ -1088,39 +1132,44 @@
|
|
1088
1132
|
return undefined;
|
1089
1133
|
}
|
1090
1134
|
function focusOnDay(current, offset) {
|
1091
|
-
var
|
1135
|
+
var activeElement = getClosestActiveElement();
|
1136
|
+
var dayFocused = isInView(activeElement || document.body);
|
1092
1137
|
var startElem = current !== undefined
|
1093
1138
|
? current
|
1094
1139
|
: dayFocused
|
1095
|
-
?
|
1140
|
+
? activeElement
|
1096
1141
|
: self.selectedDateElem !== undefined && isInView(self.selectedDateElem)
|
1097
1142
|
? self.selectedDateElem
|
1098
1143
|
: self.todayDateElem !== undefined && isInView(self.todayDateElem)
|
1099
1144
|
? self.todayDateElem
|
1100
1145
|
: getFirstAvailableDay(offset > 0 ? 1 : -1);
|
1101
|
-
if (startElem === undefined)
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1146
|
+
if (startElem === undefined) {
|
1147
|
+
self._input.focus();
|
1148
|
+
}
|
1149
|
+
else if (!dayFocused) {
|
1150
|
+
focusOnDayElem(startElem);
|
1151
|
+
}
|
1152
|
+
else {
|
1153
|
+
getNextAvailableDay(startElem, offset);
|
1154
|
+
}
|
1106
1155
|
}
|
1107
1156
|
function buildMonthDays(year, month) {
|
1108
1157
|
var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;
|
1109
|
-
var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);
|
1110
|
-
var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? "prevMonthDay hidden" : "prevMonthDay", nextMonthDayClass = isMultiMonth ? "nextMonthDay hidden" : "nextMonthDay";
|
1158
|
+
var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);
|
1159
|
+
var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? "prevMonthDay hidden" : "prevMonthDay", nextMonthDayClass = isMultiMonth ? "nextMonthDay hidden" : "nextMonthDay";
|
1111
1160
|
var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;
|
1112
1161
|
// prepend days from the ending of previous month
|
1113
1162
|
for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {
|
1114
|
-
days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));
|
1163
|
+
days.appendChild(createDay("flatpickr-day " + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));
|
1115
1164
|
}
|
1116
1165
|
// Start at 1 since there is no 0th day
|
1117
1166
|
for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {
|
1118
|
-
days.appendChild(createDay("", new Date(year, month, dayNumber), dayNumber, dayIndex));
|
1167
|
+
days.appendChild(createDay("flatpickr-day", new Date(year, month, dayNumber), dayNumber, dayIndex));
|
1119
1168
|
}
|
1120
1169
|
// append days from the next month
|
1121
1170
|
for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&
|
1122
1171
|
(self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {
|
1123
|
-
days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));
|
1172
|
+
days.appendChild(createDay("flatpickr-day " + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));
|
1124
1173
|
}
|
1125
1174
|
//updateNavigationCurrentMonth();
|
1126
1175
|
var dayContainer = createElement("div", "dayContainer");
|
@@ -1186,8 +1235,9 @@
|
|
1186
1235
|
}
|
1187
1236
|
else {
|
1188
1237
|
self.monthsDropdownContainer = createElement("select", "flatpickr-monthDropdown-months");
|
1238
|
+
self.monthsDropdownContainer.setAttribute("aria-label", self.l10n.monthAriaLabel);
|
1189
1239
|
bind(self.monthsDropdownContainer, "change", function (e) {
|
1190
|
-
var target = e
|
1240
|
+
var target = getEventTarget(e);
|
1191
1241
|
var selectedMonth = parseInt(target.value, 10);
|
1192
1242
|
self.changeMonth(selectedMonth - self.currentMonth);
|
1193
1243
|
triggerEvent("onMonthChange");
|
@@ -1215,7 +1265,7 @@
|
|
1215
1265
|
return {
|
1216
1266
|
container: container,
|
1217
1267
|
yearElement: yearElement,
|
1218
|
-
monthElement: monthElement
|
1268
|
+
monthElement: monthElement,
|
1219
1269
|
};
|
1220
1270
|
}
|
1221
1271
|
function buildMonths() {
|
@@ -1249,7 +1299,7 @@
|
|
1249
1299
|
toggleClass(self.prevMonthNav, "flatpickr-disabled", bool);
|
1250
1300
|
self.__hidePrevMonthArrow = bool;
|
1251
1301
|
}
|
1252
|
-
}
|
1302
|
+
},
|
1253
1303
|
});
|
1254
1304
|
Object.defineProperty(self, "_hideNextMonthArrow", {
|
1255
1305
|
get: function () { return self.__hideNextMonthArrow; },
|
@@ -1258,7 +1308,7 @@
|
|
1258
1308
|
toggleClass(self.nextMonthNav, "flatpickr-disabled", bool);
|
1259
1309
|
self.__hideNextMonthArrow = bool;
|
1260
1310
|
}
|
1261
|
-
}
|
1311
|
+
},
|
1262
1312
|
});
|
1263
1313
|
self.currentYearElement = self.yearElements[0];
|
1264
1314
|
updateNavigationCurrentMonth();
|
@@ -1268,32 +1318,35 @@
|
|
1268
1318
|
self.calendarContainer.classList.add("hasTime");
|
1269
1319
|
if (self.config.noCalendar)
|
1270
1320
|
self.calendarContainer.classList.add("noCalendar");
|
1321
|
+
var defaults = getDefaultHours(self.config);
|
1271
1322
|
self.timeContainer = createElement("div", "flatpickr-time");
|
1272
1323
|
self.timeContainer.tabIndex = -1;
|
1273
1324
|
var separator = createElement("span", "flatpickr-time-separator", ":");
|
1274
1325
|
var hourInput = createNumberInput("flatpickr-hour", {
|
1275
|
-
"aria-label": self.l10n.hourAriaLabel
|
1326
|
+
"aria-label": self.l10n.hourAriaLabel,
|
1276
1327
|
});
|
1277
1328
|
self.hourElement = hourInput.getElementsByTagName("input")[0];
|
1278
1329
|
var minuteInput = createNumberInput("flatpickr-minute", {
|
1279
|
-
"aria-label": self.l10n.minuteAriaLabel
|
1330
|
+
"aria-label": self.l10n.minuteAriaLabel,
|
1280
1331
|
});
|
1281
1332
|
self.minuteElement = minuteInput.getElementsByTagName("input")[0];
|
1282
1333
|
self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;
|
1283
1334
|
self.hourElement.value = pad(self.latestSelectedDateObj
|
1284
1335
|
? self.latestSelectedDateObj.getHours()
|
1285
1336
|
: self.config.time_24hr
|
1286
|
-
?
|
1287
|
-
: military2ampm(
|
1337
|
+
? defaults.hours
|
1338
|
+
: military2ampm(defaults.hours));
|
1288
1339
|
self.minuteElement.value = pad(self.latestSelectedDateObj
|
1289
1340
|
? self.latestSelectedDateObj.getMinutes()
|
1290
|
-
:
|
1341
|
+
: defaults.minutes);
|
1291
1342
|
self.hourElement.setAttribute("step", self.config.hourIncrement.toString());
|
1292
1343
|
self.minuteElement.setAttribute("step", self.config.minuteIncrement.toString());
|
1293
1344
|
self.hourElement.setAttribute("min", self.config.time_24hr ? "0" : "1");
|
1294
1345
|
self.hourElement.setAttribute("max", self.config.time_24hr ? "23" : "12");
|
1346
|
+
self.hourElement.setAttribute("maxlength", "2");
|
1295
1347
|
self.minuteElement.setAttribute("min", "0");
|
1296
1348
|
self.minuteElement.setAttribute("max", "59");
|
1349
|
+
self.minuteElement.setAttribute("maxlength", "2");
|
1297
1350
|
self.timeContainer.appendChild(hourInput);
|
1298
1351
|
self.timeContainer.appendChild(separator);
|
1299
1352
|
self.timeContainer.appendChild(minuteInput);
|
@@ -1305,10 +1358,11 @@
|
|
1305
1358
|
self.secondElement = secondInput.getElementsByTagName("input")[0];
|
1306
1359
|
self.secondElement.value = pad(self.latestSelectedDateObj
|
1307
1360
|
? self.latestSelectedDateObj.getSeconds()
|
1308
|
-
:
|
1361
|
+
: defaults.seconds);
|
1309
1362
|
self.secondElement.setAttribute("step", self.minuteElement.getAttribute("step"));
|
1310
1363
|
self.secondElement.setAttribute("min", "0");
|
1311
1364
|
self.secondElement.setAttribute("max", "59");
|
1365
|
+
self.secondElement.setAttribute("maxlength", "2");
|
1312
1366
|
self.timeContainer.appendChild(createElement("span", "flatpickr-time-separator", ":"));
|
1313
1367
|
self.timeContainer.appendChild(secondInput);
|
1314
1368
|
}
|
@@ -1340,9 +1394,9 @@
|
|
1340
1394
|
return;
|
1341
1395
|
}
|
1342
1396
|
var firstDayOfWeek = self.l10n.firstDayOfWeek;
|
1343
|
-
var weekdays = self.l10n.weekdays.shorthand
|
1397
|
+
var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);
|
1344
1398
|
if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {
|
1345
|
-
weekdays = weekdays.splice(firstDayOfWeek, weekdays.length)
|
1399
|
+
weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));
|
1346
1400
|
}
|
1347
1401
|
for (var i = self.config.showMonths; i--;) {
|
1348
1402
|
self.weekdayContainer.children[i].innerHTML = "\n <span class='flatpickr-weekday'>\n " + weekdays.join("</span><span class='flatpickr-weekday'>") + "\n </span>\n ";
|
@@ -1357,7 +1411,7 @@
|
|
1357
1411
|
weekWrapper.appendChild(weekNumbers);
|
1358
1412
|
return {
|
1359
1413
|
weekWrapper: weekWrapper,
|
1360
|
-
weekNumbers: weekNumbers
|
1414
|
+
weekNumbers: weekNumbers,
|
1361
1415
|
};
|
1362
1416
|
}
|
1363
1417
|
function changeMonth(value, isOffset) {
|
@@ -1391,9 +1445,9 @@
|
|
1391
1445
|
self.currentYear = self._initialDate.getFullYear();
|
1392
1446
|
self.currentMonth = self._initialDate.getMonth();
|
1393
1447
|
}
|
1394
|
-
self.showTimeInput = false;
|
1395
1448
|
if (self.config.enableTime === true) {
|
1396
|
-
|
1449
|
+
var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;
|
1450
|
+
setHours(hours, minutes, seconds);
|
1397
1451
|
}
|
1398
1452
|
self.redraw();
|
1399
1453
|
if (triggerChangeEvent)
|
@@ -1416,8 +1470,7 @@
|
|
1416
1470
|
if (self.config !== undefined)
|
1417
1471
|
triggerEvent("onDestroy");
|
1418
1472
|
for (var i = self._handlers.length; i--;) {
|
1419
|
-
|
1420
|
-
h.element.removeEventListener(h.event, h.handler, h.options);
|
1473
|
+
self._handlers[i].remove();
|
1421
1474
|
}
|
1422
1475
|
self._handlers = [];
|
1423
1476
|
if (self.mobileInput) {
|
@@ -1448,7 +1501,6 @@
|
|
1448
1501
|
self.input.type = self.input._type;
|
1449
1502
|
self.input.classList.remove("flatpickr-input");
|
1450
1503
|
self.input.removeAttribute("readonly");
|
1451
|
-
self.input.value = "";
|
1452
1504
|
}
|
1453
1505
|
[
|
1454
1506
|
"_showTimeInput",
|
@@ -1488,8 +1540,6 @@
|
|
1488
1540
|
});
|
1489
1541
|
}
|
1490
1542
|
function isCalendarElem(elem) {
|
1491
|
-
if (self.config.appendTo && self.config.appendTo.contains(elem))
|
1492
|
-
return true;
|
1493
1543
|
return self.calendarContainer.contains(elem);
|
1494
1544
|
}
|
1495
1545
|
function documentClick(e) {
|
@@ -1505,27 +1555,30 @@
|
|
1505
1555
|
e.path.indexOf &&
|
1506
1556
|
(~e.path.indexOf(self.input) ||
|
1507
1557
|
~e.path.indexOf(self.altInput)));
|
1508
|
-
var lostFocus =
|
1509
|
-
|
1510
|
-
|
1511
|
-
!isCalendarElem(e.relatedTarget)
|
1512
|
-
: !isInput &&
|
1513
|
-
!isCalendarElement &&
|
1514
|
-
!isCalendarElem(e.relatedTarget);
|
1558
|
+
var lostFocus = !isInput &&
|
1559
|
+
!isCalendarElement &&
|
1560
|
+
!isCalendarElem(e.relatedTarget);
|
1515
1561
|
var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {
|
1516
1562
|
return elem.contains(eventTarget_1);
|
1517
1563
|
});
|
1518
1564
|
if (lostFocus && isIgnored) {
|
1565
|
+
if (self.config.allowInput) {
|
1566
|
+
self.setDate(self._input.value, false, self.config.altInput
|
1567
|
+
? self.config.altFormat
|
1568
|
+
: self.config.dateFormat);
|
1569
|
+
}
|
1519
1570
|
if (self.timeContainer !== undefined &&
|
1520
1571
|
self.minuteElement !== undefined &&
|
1521
|
-
self.hourElement !== undefined
|
1572
|
+
self.hourElement !== undefined &&
|
1573
|
+
self.input.value !== "" &&
|
1574
|
+
self.input.value !== undefined) {
|
1522
1575
|
updateTime();
|
1523
1576
|
}
|
1524
1577
|
self.close();
|
1525
|
-
if (self.config
|
1578
|
+
if (self.config &&
|
1579
|
+
self.config.mode === "range" &&
|
1580
|
+
self.selectedDates.length === 1)
|
1526
1581
|
self.clear(false);
|
1527
|
-
self.redraw();
|
1528
|
-
}
|
1529
1582
|
}
|
1530
1583
|
}
|
1531
1584
|
}
|
@@ -1551,6 +1604,7 @@
|
|
1551
1604
|
}
|
1552
1605
|
}
|
1553
1606
|
function isEnabled(date, timeless) {
|
1607
|
+
var _a;
|
1554
1608
|
if (timeless === void 0) { timeless = true; }
|
1555
1609
|
var dateToCheck = self.parseDate(date, undefined, timeless); // timeless
|
1556
1610
|
if ((self.config.minDate &&
|
@@ -1560,11 +1614,11 @@
|
|
1560
1614
|
dateToCheck &&
|
1561
1615
|
compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))
|
1562
1616
|
return false;
|
1563
|
-
if (self.config.enable
|
1617
|
+
if (!self.config.enable && self.config.disable.length === 0)
|
1564
1618
|
return true;
|
1565
1619
|
if (dateToCheck === undefined)
|
1566
1620
|
return false;
|
1567
|
-
var bool = self.config.enable
|
1621
|
+
var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;
|
1568
1622
|
for (var i = 0, d = void 0; i < array.length; i++) {
|
1569
1623
|
d = array[i];
|
1570
1624
|
if (typeof d === "function" &&
|
@@ -1576,7 +1630,7 @@
|
|
1576
1630
|
d.getTime() === dateToCheck.getTime())
|
1577
1631
|
// disabled by date
|
1578
1632
|
return bool;
|
1579
|
-
else if (typeof d === "string"
|
1633
|
+
else if (typeof d === "string") {
|
1580
1634
|
// disabled by date string
|
1581
1635
|
var parsed = self.parseDate(d, undefined, true);
|
1582
1636
|
return parsed && parsed.getTime() === dateToCheck.getTime()
|
@@ -1598,9 +1652,21 @@
|
|
1598
1652
|
function isInView(elem) {
|
1599
1653
|
if (self.daysContainer !== undefined)
|
1600
1654
|
return (elem.className.indexOf("hidden") === -1 &&
|
1655
|
+
elem.className.indexOf("flatpickr-disabled") === -1 &&
|
1601
1656
|
self.daysContainer.contains(elem));
|
1602
1657
|
return false;
|
1603
1658
|
}
|
1659
|
+
function onBlur(e) {
|
1660
|
+
var isInput = e.target === self._input;
|
1661
|
+
var valueChanged = self._input.value.trimEnd() !== getDateStr();
|
1662
|
+
if (isInput &&
|
1663
|
+
valueChanged &&
|
1664
|
+
!(e.relatedTarget && isCalendarElem(e.relatedTarget))) {
|
1665
|
+
self.setDate(self._input.value, true, e.target === self.altInput
|
1666
|
+
? self.config.altFormat
|
1667
|
+
: self.config.dateFormat);
|
1668
|
+
}
|
1669
|
+
}
|
1604
1670
|
function onKeyDown(e) {
|
1605
1671
|
// e.key e.keyCode
|
1606
1672
|
// "Backspace" 8
|
@@ -1612,26 +1678,30 @@
|
|
1612
1678
|
// "ArrowRight" (IE "Right") 39
|
1613
1679
|
// "ArrowDown" (IE "Down") 40
|
1614
1680
|
// "Delete" (IE "Del") 46
|
1615
|
-
var
|
1681
|
+
var eventTarget = getEventTarget(e);
|
1682
|
+
var isInput = self.config.wrap
|
1683
|
+
? element.contains(eventTarget)
|
1684
|
+
: eventTarget === self._input;
|
1616
1685
|
var allowInput = self.config.allowInput;
|
1617
1686
|
var allowKeydown = self.isOpen && (!allowInput || !isInput);
|
1618
1687
|
var allowInlineKeydown = self.config.inline && isInput && !allowInput;
|
1619
1688
|
if (e.keyCode === 13 && isInput) {
|
1620
1689
|
if (allowInput) {
|
1621
|
-
self.setDate(self._input.value, true,
|
1690
|
+
self.setDate(self._input.value, true, eventTarget === self.altInput
|
1622
1691
|
? self.config.altFormat
|
1623
1692
|
: self.config.dateFormat);
|
1624
|
-
|
1693
|
+
self.close();
|
1694
|
+
return eventTarget.blur();
|
1625
1695
|
}
|
1626
1696
|
else {
|
1627
1697
|
self.open();
|
1628
1698
|
}
|
1629
1699
|
}
|
1630
|
-
else if (isCalendarElem(
|
1700
|
+
else if (isCalendarElem(eventTarget) ||
|
1631
1701
|
allowKeydown ||
|
1632
1702
|
allowInlineKeydown) {
|
1633
1703
|
var isTimeObj = !!self.timeContainer &&
|
1634
|
-
self.timeContainer.contains(
|
1704
|
+
self.timeContainer.contains(eventTarget);
|
1635
1705
|
switch (e.keyCode) {
|
1636
1706
|
case 13:
|
1637
1707
|
if (isTimeObj) {
|
@@ -1657,9 +1727,10 @@
|
|
1657
1727
|
case 39:
|
1658
1728
|
if (!isTimeObj && !isInput) {
|
1659
1729
|
e.preventDefault();
|
1730
|
+
var activeElement = getClosestActiveElement();
|
1660
1731
|
if (self.daysContainer !== undefined &&
|
1661
1732
|
(allowInput === false ||
|
1662
|
-
(
|
1733
|
+
(activeElement && isInView(activeElement)))) {
|
1663
1734
|
var delta_1 = e.keyCode === 39 ? 1 : -1;
|
1664
1735
|
if (!e.ctrlKey)
|
1665
1736
|
focusOnDay(undefined, delta_1);
|
@@ -1677,9 +1748,10 @@
|
|
1677
1748
|
case 40:
|
1678
1749
|
e.preventDefault();
|
1679
1750
|
var delta = e.keyCode === 40 ? 1 : -1;
|
1680
|
-
if ((self.daysContainer &&
|
1681
|
-
|
1682
|
-
|
1751
|
+
if ((self.daysContainer &&
|
1752
|
+
eventTarget.$i !== undefined) ||
|
1753
|
+
eventTarget === self.input ||
|
1754
|
+
eventTarget === self.altInput) {
|
1683
1755
|
if (e.ctrlKey) {
|
1684
1756
|
e.stopPropagation();
|
1685
1757
|
changeYear(self.currentYear - delta);
|
@@ -1688,7 +1760,7 @@
|
|
1688
1760
|
else if (!isTimeObj)
|
1689
1761
|
focusOnDay(undefined, delta * 7);
|
1690
1762
|
}
|
1691
|
-
else if (
|
1763
|
+
else if (eventTarget === self.currentYearElement) {
|
1692
1764
|
changeYear(self.currentYear - delta);
|
1693
1765
|
}
|
1694
1766
|
else if (self.config.enableTime) {
|
@@ -1708,7 +1780,7 @@
|
|
1708
1780
|
]
|
1709
1781
|
.concat(self.pluginElements)
|
1710
1782
|
.filter(function (x) { return x; });
|
1711
|
-
var i = elems.indexOf(
|
1783
|
+
var i = elems.indexOf(eventTarget);
|
1712
1784
|
if (i !== -1) {
|
1713
1785
|
var target = elems[i + (e.shiftKey ? -1 : 1)];
|
1714
1786
|
e.preventDefault();
|
@@ -1717,17 +1789,15 @@
|
|
1717
1789
|
}
|
1718
1790
|
else if (!self.config.noCalendar &&
|
1719
1791
|
self.daysContainer &&
|
1720
|
-
self.daysContainer.contains(
|
1792
|
+
self.daysContainer.contains(eventTarget) &&
|
1721
1793
|
e.shiftKey) {
|
1722
1794
|
e.preventDefault();
|
1723
1795
|
self._input.focus();
|
1724
1796
|
}
|
1725
1797
|
break;
|
1726
|
-
default:
|
1727
|
-
break;
|
1728
1798
|
}
|
1729
1799
|
}
|
1730
|
-
if (self.amPM !== undefined &&
|
1800
|
+
if (self.amPM !== undefined && eventTarget === self.amPM) {
|
1731
1801
|
switch (e.key) {
|
1732
1802
|
case self.l10n.amPM[0].charAt(0):
|
1733
1803
|
case self.l10n.amPM[0].charAt(0).toLowerCase():
|
@@ -1743,14 +1813,15 @@
|
|
1743
1813
|
break;
|
1744
1814
|
}
|
1745
1815
|
}
|
1746
|
-
if (isInput || isCalendarElem(
|
1816
|
+
if (isInput || isCalendarElem(eventTarget)) {
|
1747
1817
|
triggerEvent("onKeyDown", e);
|
1748
1818
|
}
|
1749
1819
|
}
|
1750
|
-
function onMouseOver(elem) {
|
1820
|
+
function onMouseOver(elem, cellClass) {
|
1821
|
+
if (cellClass === void 0) { cellClass = "flatpickr-day"; }
|
1751
1822
|
if (self.selectedDates.length !== 1 ||
|
1752
1823
|
(elem &&
|
1753
|
-
(!elem.classList.contains(
|
1824
|
+
(!elem.classList.contains(cellClass) ||
|
1754
1825
|
elem.classList.contains("flatpickr-disabled"))))
|
1755
1826
|
return;
|
1756
1827
|
var hoverDate = elem
|
@@ -1768,61 +1839,52 @@
|
|
1768
1839
|
maxRange = t;
|
1769
1840
|
}
|
1770
1841
|
}
|
1771
|
-
|
1772
|
-
|
1773
|
-
var
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1778
|
-
|
1779
|
-
|
1780
|
-
["inRange", "startRange", "endRange"].forEach(function (c) {
|
1781
|
-
dayElem.classList.remove(c);
|
1782
|
-
});
|
1783
|
-
return "continue";
|
1784
|
-
}
|
1785
|
-
else if (containsDisabled && !outOfRange)
|
1786
|
-
return "continue";
|
1787
|
-
["startRange", "inRange", "endRange", "notAllowed"].forEach(function (c) {
|
1842
|
+
var hoverableCells = Array.from(self.rContainer.querySelectorAll("*:nth-child(-n+" + self.config.showMonths + ") > ." + cellClass));
|
1843
|
+
hoverableCells.forEach(function (dayElem) {
|
1844
|
+
var date = dayElem.dateObj;
|
1845
|
+
var timestamp = date.getTime();
|
1846
|
+
var outOfRange = (minRange > 0 && timestamp < minRange) ||
|
1847
|
+
(maxRange > 0 && timestamp > maxRange);
|
1848
|
+
if (outOfRange) {
|
1849
|
+
dayElem.classList.add("notAllowed");
|
1850
|
+
["inRange", "startRange", "endRange"].forEach(function (c) {
|
1788
1851
|
dayElem.classList.remove(c);
|
1789
1852
|
});
|
1790
|
-
|
1791
|
-
elem.classList.add(hoverDate <= self.selectedDates[0].getTime()
|
1792
|
-
? "startRange"
|
1793
|
-
: "endRange");
|
1794
|
-
if (initialDate < hoverDate && timestamp === initialDate)
|
1795
|
-
dayElem.classList.add("startRange");
|
1796
|
-
else if (initialDate > hoverDate && timestamp === initialDate)
|
1797
|
-
dayElem.classList.add("endRange");
|
1798
|
-
if (timestamp >= minRange &&
|
1799
|
-
(maxRange === 0 || timestamp <= maxRange) &&
|
1800
|
-
isBetween(timestamp, initialDate, hoverDate))
|
1801
|
-
dayElem.classList.add("inRange");
|
1802
|
-
}
|
1803
|
-
};
|
1804
|
-
for (var i = 0, l = month.children.length; i < l; i++) {
|
1805
|
-
_loop_1(i, l);
|
1853
|
+
return;
|
1806
1854
|
}
|
1807
|
-
|
1855
|
+
else if (containsDisabled && !outOfRange)
|
1856
|
+
return;
|
1857
|
+
["startRange", "inRange", "endRange", "notAllowed"].forEach(function (c) {
|
1858
|
+
dayElem.classList.remove(c);
|
1859
|
+
});
|
1860
|
+
if (elem !== undefined) {
|
1861
|
+
elem.classList.add(hoverDate <= self.selectedDates[0].getTime()
|
1862
|
+
? "startRange"
|
1863
|
+
: "endRange");
|
1864
|
+
if (initialDate < hoverDate && timestamp === initialDate)
|
1865
|
+
dayElem.classList.add("startRange");
|
1866
|
+
else if (initialDate > hoverDate && timestamp === initialDate)
|
1867
|
+
dayElem.classList.add("endRange");
|
1868
|
+
if (timestamp >= minRange &&
|
1869
|
+
(maxRange === 0 || timestamp <= maxRange) &&
|
1870
|
+
isBetween(timestamp, initialDate, hoverDate))
|
1871
|
+
dayElem.classList.add("inRange");
|
1872
|
+
}
|
1873
|
+
});
|
1808
1874
|
}
|
1809
1875
|
function onResize() {
|
1810
1876
|
if (self.isOpen && !self.config.static && !self.config.inline)
|
1811
1877
|
positionCalendar();
|
1812
1878
|
}
|
1813
|
-
function setDefaultTime() {
|
1814
|
-
self.setDate(self.config.minDate !== undefined
|
1815
|
-
? new Date(self.config.minDate.getTime())
|
1816
|
-
: new Date(), true);
|
1817
|
-
setDefaultHours();
|
1818
|
-
updateValue();
|
1819
|
-
}
|
1820
1879
|
function open(e, positionElement) {
|
1821
1880
|
if (positionElement === void 0) { positionElement = self._positionElement; }
|
1822
1881
|
if (self.isMobile === true) {
|
1823
1882
|
if (e) {
|
1824
1883
|
e.preventDefault();
|
1825
|
-
|
1884
|
+
var eventTarget = getEventTarget(e);
|
1885
|
+
if (eventTarget) {
|
1886
|
+
eventTarget.blur();
|
1887
|
+
}
|
1826
1888
|
}
|
1827
1889
|
if (self.mobileInput !== undefined) {
|
1828
1890
|
self.mobileInput.focus();
|
@@ -1831,8 +1893,9 @@
|
|
1831
1893
|
triggerEvent("onOpen");
|
1832
1894
|
return;
|
1833
1895
|
}
|
1834
|
-
if (self._input.disabled || self.config.inline)
|
1896
|
+
else if (self._input.disabled || self.config.inline) {
|
1835
1897
|
return;
|
1898
|
+
}
|
1836
1899
|
var wasOpen = self.isOpen;
|
1837
1900
|
self.isOpen = true;
|
1838
1901
|
if (!wasOpen) {
|
@@ -1842,9 +1905,6 @@
|
|
1842
1905
|
positionCalendar(positionElement);
|
1843
1906
|
}
|
1844
1907
|
if (self.config.enableTime === true && self.config.noCalendar === true) {
|
1845
|
-
if (self.selectedDates.length === 0) {
|
1846
|
-
setDefaultTime();
|
1847
|
-
}
|
1848
1908
|
if (self.config.allowInput === false &&
|
1849
1909
|
(e === undefined ||
|
1850
1910
|
!self.timeContainer.contains(e.relatedTarget))) {
|
@@ -1886,6 +1946,7 @@
|
|
1886
1946
|
"wrap",
|
1887
1947
|
"weekNumbers",
|
1888
1948
|
"allowInput",
|
1949
|
+
"allowInvalidPreload",
|
1889
1950
|
"clickOpens",
|
1890
1951
|
"time_24hr",
|
1891
1952
|
"enableTime",
|
@@ -1897,7 +1958,7 @@
|
|
1897
1958
|
"enableSeconds",
|
1898
1959
|
"disableMobile",
|
1899
1960
|
];
|
1900
|
-
var userConfig = __assign({},
|
1961
|
+
var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);
|
1901
1962
|
var formats = {};
|
1902
1963
|
self.config.parseDate = userConfig.parseDate;
|
1903
1964
|
self.config.formatDate = userConfig.formatDate;
|
@@ -1905,13 +1966,13 @@
|
|
1905
1966
|
get: function () { return self.config._enable; },
|
1906
1967
|
set: function (dates) {
|
1907
1968
|
self.config._enable = parseDateRules(dates);
|
1908
|
-
}
|
1969
|
+
},
|
1909
1970
|
});
|
1910
1971
|
Object.defineProperty(self.config, "disable", {
|
1911
1972
|
get: function () { return self.config._disable; },
|
1912
1973
|
set: function (dates) {
|
1913
1974
|
self.config._disable = parseDateRules(dates);
|
1914
|
-
}
|
1975
|
+
},
|
1915
1976
|
});
|
1916
1977
|
var timeMode = userConfig.mode === "time";
|
1917
1978
|
if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {
|
@@ -1930,28 +1991,24 @@
|
|
1930
1991
|
? "h:i" + (userConfig.enableSeconds ? ":S K" : " K")
|
1931
1992
|
: defaultAltFormat + (" h:i" + (userConfig.enableSeconds ? ":S" : "") + " K");
|
1932
1993
|
}
|
1933
|
-
if (!userConfig.altInputClass) {
|
1934
|
-
self.config.altInputClass =
|
1935
|
-
self.input.className + " " + self.config.altInputClass;
|
1936
|
-
}
|
1937
1994
|
Object.defineProperty(self.config, "minDate", {
|
1938
1995
|
get: function () { return self.config._minDate; },
|
1939
|
-
set: minMaxDateSetter("min")
|
1996
|
+
set: minMaxDateSetter("min"),
|
1940
1997
|
});
|
1941
1998
|
Object.defineProperty(self.config, "maxDate", {
|
1942
1999
|
get: function () { return self.config._maxDate; },
|
1943
|
-
set: minMaxDateSetter("max")
|
2000
|
+
set: minMaxDateSetter("max"),
|
1944
2001
|
});
|
1945
2002
|
var minMaxTimeSetter = function (type) { return function (val) {
|
1946
2003
|
self.config[type === "min" ? "_minTime" : "_maxTime"] = self.parseDate(val, "H:i:S");
|
1947
2004
|
}; };
|
1948
2005
|
Object.defineProperty(self.config, "minTime", {
|
1949
2006
|
get: function () { return self.config._minTime; },
|
1950
|
-
set: minMaxTimeSetter("min")
|
2007
|
+
set: minMaxTimeSetter("min"),
|
1951
2008
|
});
|
1952
2009
|
Object.defineProperty(self.config, "maxTime", {
|
1953
2010
|
get: function () { return self.config._maxTime; },
|
1954
|
-
set: minMaxTimeSetter("max")
|
2011
|
+
set: minMaxTimeSetter("max"),
|
1955
2012
|
});
|
1956
2013
|
if (userConfig.mode === "time") {
|
1957
2014
|
self.config.noCalendar = true;
|
@@ -1959,6 +2016,7 @@
|
|
1959
2016
|
}
|
1960
2017
|
Object.assign(self.config, formats, userConfig);
|
1961
2018
|
for (var i = 0; i < boolOpts.length; i++)
|
2019
|
+
// https://github.com/microsoft/TypeScript/issues/31663
|
1962
2020
|
self.config[boolOpts[i]] =
|
1963
2021
|
self.config[boolOpts[i]] === true ||
|
1964
2022
|
self.config[boolOpts[i]] === "true";
|
@@ -1970,7 +2028,7 @@
|
|
1970
2028
|
!self.config.inline &&
|
1971
2029
|
self.config.mode === "single" &&
|
1972
2030
|
!self.config.disable.length &&
|
1973
|
-
!self.config.enable
|
2031
|
+
!self.config.enable &&
|
1974
2032
|
!self.config.weekNumbers &&
|
1975
2033
|
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
1976
2034
|
for (var i = 0; i < self.config.plugins.length; i++) {
|
@@ -1985,19 +2043,32 @@
|
|
1985
2043
|
self.config[key] = pluginConf[key];
|
1986
2044
|
}
|
1987
2045
|
}
|
2046
|
+
if (!userConfig.altInputClass) {
|
2047
|
+
self.config.altInputClass =
|
2048
|
+
getInputElem().className + " " + self.config.altInputClass;
|
2049
|
+
}
|
1988
2050
|
triggerEvent("onParseConfig");
|
1989
2051
|
}
|
2052
|
+
function getInputElem() {
|
2053
|
+
return self.config.wrap
|
2054
|
+
? element.querySelector("[data-input]")
|
2055
|
+
: element;
|
2056
|
+
}
|
1990
2057
|
function setupLocale() {
|
1991
2058
|
if (typeof self.config.locale !== "object" &&
|
1992
2059
|
typeof flatpickr.l10ns[self.config.locale] === "undefined")
|
1993
2060
|
self.config.errorHandler(new Error("flatpickr: invalid locale " + self.config.locale));
|
1994
|
-
self.l10n = __assign({}, flatpickr.l10ns
|
2061
|
+
self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === "object"
|
1995
2062
|
? self.config.locale
|
1996
2063
|
: self.config.locale !== "default"
|
1997
2064
|
? flatpickr.l10ns[self.config.locale]
|
1998
2065
|
: undefined));
|
2066
|
+
tokenRegex.D = "(" + self.l10n.weekdays.shorthand.join("|") + ")";
|
2067
|
+
tokenRegex.l = "(" + self.l10n.weekdays.longhand.join("|") + ")";
|
2068
|
+
tokenRegex.M = "(" + self.l10n.months.shorthand.join("|") + ")";
|
2069
|
+
tokenRegex.F = "(" + self.l10n.months.longhand.join("|") + ")";
|
1999
2070
|
tokenRegex.K = "(" + self.l10n.amPM[0] + "|" + self.l10n.amPM[1] + "|" + self.l10n.amPM[0].toLowerCase() + "|" + self.l10n.amPM[1].toLowerCase() + ")";
|
2000
|
-
var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));
|
2071
|
+
var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));
|
2001
2072
|
if (userConfig.time_24hr === undefined &&
|
2002
2073
|
flatpickr.defaultConfig.time_24hr === undefined) {
|
2003
2074
|
self.config.time_24hr = self.l10n.time_24hr;
|
@@ -2006,6 +2077,9 @@
|
|
2006
2077
|
self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });
|
2007
2078
|
}
|
2008
2079
|
function positionCalendar(customPositionElement) {
|
2080
|
+
if (typeof self.config.position === "function") {
|
2081
|
+
return void self.config.position(self, customPositionElement);
|
2082
|
+
}
|
2009
2083
|
if (self.calendarContainer === undefined)
|
2010
2084
|
return;
|
2011
2085
|
triggerEvent("onPreCalendarPosition");
|
@@ -2021,12 +2095,22 @@
|
|
2021
2095
|
toggleClass(self.calendarContainer, "arrowBottom", showOnTop);
|
2022
2096
|
if (self.config.inline)
|
2023
2097
|
return;
|
2024
|
-
var left = window.pageXOffset +
|
2025
|
-
|
2026
|
-
|
2027
|
-
|
2028
|
-
|
2029
|
-
|
2098
|
+
var left = window.pageXOffset + inputBounds.left;
|
2099
|
+
var isCenter = false;
|
2100
|
+
var isRight = false;
|
2101
|
+
if (configPosHorizontal === "center") {
|
2102
|
+
left -= (calendarWidth - inputBounds.width) / 2;
|
2103
|
+
isCenter = true;
|
2104
|
+
}
|
2105
|
+
else if (configPosHorizontal === "right") {
|
2106
|
+
left -= calendarWidth - inputBounds.width;
|
2107
|
+
isRight = true;
|
2108
|
+
}
|
2109
|
+
toggleClass(self.calendarContainer, "arrowLeft", !isCenter && !isRight);
|
2110
|
+
toggleClass(self.calendarContainer, "arrowCenter", isCenter);
|
2111
|
+
toggleClass(self.calendarContainer, "arrowRight", isRight);
|
2112
|
+
var right = window.document.body.offsetWidth -
|
2113
|
+
(window.pageXOffset + inputBounds.right);
|
2030
2114
|
var rightMost = left + calendarWidth > window.document.body.offsetWidth;
|
2031
2115
|
var centerMost = right + calendarWidth > window.document.body.offsetWidth;
|
2032
2116
|
toggleClass(self.calendarContainer, "rightMost", rightMost);
|
@@ -2042,7 +2126,7 @@
|
|
2042
2126
|
self.calendarContainer.style.right = right + "px";
|
2043
2127
|
}
|
2044
2128
|
else {
|
2045
|
-
var doc =
|
2129
|
+
var doc = getDocumentStyleSheet();
|
2046
2130
|
// some testing environments don't have css support
|
2047
2131
|
if (doc === undefined)
|
2048
2132
|
return;
|
@@ -2059,9 +2143,32 @@
|
|
2059
2143
|
self.calendarContainer.style.right = "auto";
|
2060
2144
|
}
|
2061
2145
|
}
|
2146
|
+
function getDocumentStyleSheet() {
|
2147
|
+
var editableSheet = null;
|
2148
|
+
for (var i = 0; i < document.styleSheets.length; i++) {
|
2149
|
+
var sheet = document.styleSheets[i];
|
2150
|
+
if (!sheet.cssRules)
|
2151
|
+
continue;
|
2152
|
+
try {
|
2153
|
+
sheet.cssRules;
|
2154
|
+
}
|
2155
|
+
catch (err) {
|
2156
|
+
continue;
|
2157
|
+
}
|
2158
|
+
editableSheet = sheet;
|
2159
|
+
break;
|
2160
|
+
}
|
2161
|
+
return editableSheet != null ? editableSheet : createStyleSheet();
|
2162
|
+
}
|
2163
|
+
function createStyleSheet() {
|
2164
|
+
var style = document.createElement("style");
|
2165
|
+
document.head.appendChild(style);
|
2166
|
+
return style.sheet;
|
2167
|
+
}
|
2062
2168
|
function redraw() {
|
2063
2169
|
if (self.config.noCalendar || self.isMobile)
|
2064
2170
|
return;
|
2171
|
+
buildMonthSwitch();
|
2065
2172
|
updateNavigationCurrentMonth();
|
2066
2173
|
buildDays();
|
2067
2174
|
}
|
@@ -2085,7 +2192,7 @@
|
|
2085
2192
|
!day.classList.contains("flatpickr-disabled") &&
|
2086
2193
|
!day.classList.contains("notAllowed");
|
2087
2194
|
};
|
2088
|
-
var t = findParent(e
|
2195
|
+
var t = findParent(getEventTarget(e), isSelectable);
|
2089
2196
|
if (t === undefined)
|
2090
2197
|
return;
|
2091
2198
|
var target = t;
|
@@ -2128,8 +2235,6 @@
|
|
2128
2235
|
updateNavigationCurrentMonth();
|
2129
2236
|
buildDays();
|
2130
2237
|
updateValue();
|
2131
|
-
if (self.config.enableTime)
|
2132
|
-
setTimeout(function () { return (self.showTimeInput = true); }, 50);
|
2133
2238
|
// maintain focus
|
2134
2239
|
if (!shouldChangeMonth &&
|
2135
2240
|
self.config.mode !== "range" &&
|
@@ -2156,7 +2261,20 @@
|
|
2156
2261
|
locale: [setupLocale, updateWeekdays],
|
2157
2262
|
showMonths: [buildMonths, setCalendarWidth, buildWeekdays],
|
2158
2263
|
minDate: [jumpToDate],
|
2159
|
-
maxDate: [jumpToDate]
|
2264
|
+
maxDate: [jumpToDate],
|
2265
|
+
positionElement: [updatePositionElement],
|
2266
|
+
clickOpens: [
|
2267
|
+
function () {
|
2268
|
+
if (self.config.clickOpens === true) {
|
2269
|
+
bind(self._input, "focus", self.open);
|
2270
|
+
bind(self._input, "click", self.open);
|
2271
|
+
}
|
2272
|
+
else {
|
2273
|
+
self._input.removeEventListener("focus", self.open);
|
2274
|
+
self._input.removeEventListener("click", self.open);
|
2275
|
+
}
|
2276
|
+
},
|
2277
|
+
],
|
2160
2278
|
};
|
2161
2279
|
function set(option, value) {
|
2162
2280
|
if (option !== null && typeof option === "object") {
|
@@ -2174,7 +2292,7 @@
|
|
2174
2292
|
self.config[option] = arrayify(value);
|
2175
2293
|
}
|
2176
2294
|
self.redraw();
|
2177
|
-
updateValue(
|
2295
|
+
updateValue(true);
|
2178
2296
|
}
|
2179
2297
|
function setSelectedDate(inputDate, format) {
|
2180
2298
|
var dates = [];
|
@@ -2198,13 +2316,13 @@
|
|
2198
2316
|
.split(self.l10n.rangeSeparator)
|
2199
2317
|
.map(function (date) { return self.parseDate(date, format); });
|
2200
2318
|
break;
|
2201
|
-
default:
|
2202
|
-
break;
|
2203
2319
|
}
|
2204
2320
|
}
|
2205
2321
|
else
|
2206
2322
|
self.config.errorHandler(new Error("Invalid date supplied: " + JSON.stringify(inputDate)));
|
2207
|
-
self.selectedDates =
|
2323
|
+
self.selectedDates = (self.config.allowInvalidPreload
|
2324
|
+
? dates
|
2325
|
+
: dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));
|
2208
2326
|
if (self.config.mode === "range")
|
2209
2327
|
self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });
|
2210
2328
|
}
|
@@ -2214,11 +2332,10 @@
|
|
2214
2332
|
if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))
|
2215
2333
|
return self.clear(triggerChange);
|
2216
2334
|
setSelectedDate(date, format);
|
2217
|
-
self.showTimeInput = self.selectedDates.length > 0;
|
2218
2335
|
self.latestSelectedDateObj =
|
2219
2336
|
self.selectedDates[self.selectedDates.length - 1];
|
2220
2337
|
self.redraw();
|
2221
|
-
jumpToDate();
|
2338
|
+
jumpToDate(undefined, triggerChange);
|
2222
2339
|
setHoursFromDate();
|
2223
2340
|
if (self.selectedDates.length === 0) {
|
2224
2341
|
self.clear(false);
|
@@ -2242,7 +2359,7 @@
|
|
2242
2359
|
rule.to)
|
2243
2360
|
return {
|
2244
2361
|
from: self.parseDate(rule.from, undefined),
|
2245
|
-
to: self.parseDate(rule.to, undefined)
|
2362
|
+
to: self.parseDate(rule.to, undefined),
|
2246
2363
|
};
|
2247
2364
|
return rule;
|
2248
2365
|
})
|
@@ -2289,20 +2406,9 @@
|
|
2289
2406
|
(self.config.maxDate.getHours() > 0 ||
|
2290
2407
|
self.config.maxDate.getMinutes() > 0 ||
|
2291
2408
|
self.config.maxDate.getSeconds() > 0);
|
2292
|
-
Object.defineProperty(self, "showTimeInput", {
|
2293
|
-
get: function () { return self._showTimeInput; },
|
2294
|
-
set: function (bool) {
|
2295
|
-
self._showTimeInput = bool;
|
2296
|
-
if (self.calendarContainer)
|
2297
|
-
toggleClass(self.calendarContainer, "showTimeInput", bool);
|
2298
|
-
self.isOpen && positionCalendar();
|
2299
|
-
}
|
2300
|
-
});
|
2301
2409
|
}
|
2302
2410
|
function setupInputs() {
|
2303
|
-
self.input =
|
2304
|
-
? element.querySelector("[data-input]")
|
2305
|
-
: element;
|
2411
|
+
self.input = getInputElem();
|
2306
2412
|
/* istanbul ignore next */
|
2307
2413
|
if (!self.input) {
|
2308
2414
|
self.config.errorHandler(new Error("Invalid input element specified"));
|
@@ -2328,6 +2434,9 @@
|
|
2328
2434
|
}
|
2329
2435
|
if (!self.config.allowInput)
|
2330
2436
|
self._input.setAttribute("readonly", "readonly");
|
2437
|
+
updatePositionElement();
|
2438
|
+
}
|
2439
|
+
function updatePositionElement() {
|
2331
2440
|
self._positionElement = self.config.positionElement || self._input;
|
2332
2441
|
}
|
2333
2442
|
function setupMobile() {
|
@@ -2337,7 +2446,6 @@
|
|
2337
2446
|
: "datetime-local"
|
2338
2447
|
: "date";
|
2339
2448
|
self.mobileInput = createElement("input", self.input.className + " flatpickr-mobile");
|
2340
|
-
self.mobileInput.step = self.input.getAttribute("step") || "any";
|
2341
2449
|
self.mobileInput.tabIndex = 1;
|
2342
2450
|
self.mobileInput.type = inputType;
|
2343
2451
|
self.mobileInput.disabled = self.input.disabled;
|
@@ -2356,6 +2464,8 @@
|
|
2356
2464
|
self.mobileInput.min = self.formatDate(self.config.minDate, "Y-m-d");
|
2357
2465
|
if (self.config.maxDate)
|
2358
2466
|
self.mobileInput.max = self.formatDate(self.config.maxDate, "Y-m-d");
|
2467
|
+
if (self.input.getAttribute("step"))
|
2468
|
+
self.mobileInput.step = String(self.input.getAttribute("step"));
|
2359
2469
|
self.input.type = "hidden";
|
2360
2470
|
if (self.altInput !== undefined)
|
2361
2471
|
self.altInput.type = "hidden";
|
@@ -2365,7 +2475,7 @@
|
|
2365
2475
|
}
|
2366
2476
|
catch (_a) { }
|
2367
2477
|
bind(self.mobileInput, "change", function (e) {
|
2368
|
-
self.setDate(e.
|
2478
|
+
self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);
|
2369
2479
|
triggerEvent("onChange");
|
2370
2480
|
triggerEvent("onClose");
|
2371
2481
|
});
|
@@ -2397,7 +2507,9 @@
|
|
2397
2507
|
}
|
2398
2508
|
function isDateSelected(date) {
|
2399
2509
|
for (var i = 0; i < self.selectedDates.length; i++) {
|
2400
|
-
|
2510
|
+
var selectedDate = self.selectedDates[i];
|
2511
|
+
if (selectedDate instanceof Date &&
|
2512
|
+
compareDates(selectedDate, date) === 0)
|
2401
2513
|
return "" + i;
|
2402
2514
|
}
|
2403
2515
|
return false;
|
@@ -2435,7 +2547,9 @@
|
|
2435
2547
|
? self.currentMonth + 1 > self.config.maxDate.getMonth()
|
2436
2548
|
: self.currentYear > self.config.maxDate.getFullYear());
|
2437
2549
|
}
|
2438
|
-
function getDateStr(
|
2550
|
+
function getDateStr(specificFormat) {
|
2551
|
+
var format = specificFormat ||
|
2552
|
+
(self.config.altInput ? self.config.altFormat : self.config.dateFormat);
|
2439
2553
|
return self.selectedDates
|
2440
2554
|
.map(function (dObj) { return self.formatDate(dObj, format); })
|
2441
2555
|
.filter(function (d, i, arr) {
|
@@ -2466,25 +2580,26 @@
|
|
2466
2580
|
triggerEvent("onValueUpdate");
|
2467
2581
|
}
|
2468
2582
|
function onMonthNavClick(e) {
|
2469
|
-
var
|
2470
|
-
var
|
2583
|
+
var eventTarget = getEventTarget(e);
|
2584
|
+
var isPrevMonth = self.prevMonthNav.contains(eventTarget);
|
2585
|
+
var isNextMonth = self.nextMonthNav.contains(eventTarget);
|
2471
2586
|
if (isPrevMonth || isNextMonth) {
|
2472
2587
|
changeMonth(isPrevMonth ? -1 : 1);
|
2473
2588
|
}
|
2474
|
-
else if (self.yearElements.indexOf(
|
2475
|
-
|
2589
|
+
else if (self.yearElements.indexOf(eventTarget) >= 0) {
|
2590
|
+
eventTarget.select();
|
2476
2591
|
}
|
2477
|
-
else if (
|
2592
|
+
else if (eventTarget.classList.contains("arrowUp")) {
|
2478
2593
|
self.changeYear(self.currentYear + 1);
|
2479
2594
|
}
|
2480
|
-
else if (
|
2595
|
+
else if (eventTarget.classList.contains("arrowDown")) {
|
2481
2596
|
self.changeYear(self.currentYear - 1);
|
2482
2597
|
}
|
2483
2598
|
}
|
2484
2599
|
function timeWrapper(e) {
|
2485
2600
|
e.preventDefault();
|
2486
|
-
var isKeyDown = e.type === "keydown", input =
|
2487
|
-
if (self.amPM !== undefined &&
|
2601
|
+
var isKeyDown = e.type === "keydown", eventTarget = getEventTarget(e), input = eventTarget;
|
2602
|
+
if (self.amPM !== undefined && eventTarget === self.amPM) {
|
2488
2603
|
self.amPM.textContent =
|
2489
2604
|
self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
|
2490
2605
|
}
|
@@ -2575,13 +2690,13 @@
|
|
2575
2690
|
flatpickr.defaultConfig = {};
|
2576
2691
|
flatpickr.l10ns = {
|
2577
2692
|
en: __assign({}, english),
|
2578
|
-
|
2693
|
+
default: __assign({}, english),
|
2579
2694
|
};
|
2580
2695
|
flatpickr.localize = function (l10n) {
|
2581
|
-
flatpickr.l10ns
|
2696
|
+
flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);
|
2582
2697
|
};
|
2583
2698
|
flatpickr.setDefaults = function (config) {
|
2584
|
-
flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);
|
2699
|
+
flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);
|
2585
2700
|
};
|
2586
2701
|
flatpickr.parseDate = createDateParser({});
|
2587
2702
|
flatpickr.formatDate = createDateFormatter({});
|
@@ -2592,7 +2707,6 @@
|
|
2592
2707
|
return _flatpickr(this, config);
|
2593
2708
|
};
|
2594
2709
|
}
|
2595
|
-
// eslint-disable-next-line @typescript-eslint/camelcase
|
2596
2710
|
Date.prototype.fp_incr = function (days) {
|
2597
2711
|
return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === "string" ? parseInt(days, 10) : days));
|
2598
2712
|
};
|
@@ -2602,4 +2716,4 @@
|
|
2602
2716
|
|
2603
2717
|
return flatpickr;
|
2604
2718
|
|
2605
|
-
}));
|
2719
|
+
})));
|