flatpickr 4.6.3.1 → 4.6.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/lib/flatpickr/version.rb +1 -1
  4. data/vendor/assets/javascripts/flatpickr.js +224 -171
  5. data/vendor/assets/javascripts/flatpickr/l10n/ar.js +6 -6
  6. data/vendor/assets/javascripts/flatpickr/l10n/at.js +6 -6
  7. data/vendor/assets/javascripts/flatpickr/l10n/az.js +7 -7
  8. data/vendor/assets/javascripts/flatpickr/l10n/be.js +6 -6
  9. data/vendor/assets/javascripts/flatpickr/l10n/bg.js +6 -6
  10. data/vendor/assets/javascripts/flatpickr/l10n/bn.js +6 -6
  11. data/vendor/assets/javascripts/flatpickr/l10n/bs.js +6 -6
  12. data/vendor/assets/javascripts/flatpickr/l10n/cat.js +7 -7
  13. data/vendor/assets/javascripts/flatpickr/l10n/cs.js +6 -6
  14. data/vendor/assets/javascripts/flatpickr/l10n/cy.js +6 -6
  15. data/vendor/assets/javascripts/flatpickr/l10n/da.js +6 -6
  16. data/vendor/assets/javascripts/flatpickr/l10n/de.js +6 -6
  17. data/vendor/assets/javascripts/flatpickr/l10n/default.js +6 -5
  18. data/vendor/assets/javascripts/flatpickr/l10n/eo.js +6 -6
  19. data/vendor/assets/javascripts/flatpickr/l10n/es.js +6 -6
  20. data/vendor/assets/javascripts/flatpickr/l10n/et.js +6 -6
  21. data/vendor/assets/javascripts/flatpickr/l10n/fa.js +6 -6
  22. data/vendor/assets/javascripts/flatpickr/l10n/fi.js +6 -6
  23. data/vendor/assets/javascripts/flatpickr/l10n/fo.js +6 -6
  24. data/vendor/assets/javascripts/flatpickr/l10n/fr.js +6 -6
  25. data/vendor/assets/javascripts/flatpickr/l10n/ga.js +6 -6
  26. data/vendor/assets/javascripts/flatpickr/l10n/gr.js +6 -6
  27. data/vendor/assets/javascripts/flatpickr/l10n/he.js +6 -6
  28. data/vendor/assets/javascripts/flatpickr/l10n/hi.js +6 -6
  29. data/vendor/assets/javascripts/flatpickr/l10n/hr.js +6 -6
  30. data/vendor/assets/javascripts/flatpickr/l10n/hu.js +6 -6
  31. data/vendor/assets/javascripts/flatpickr/l10n/id.js +6 -6
  32. data/vendor/assets/javascripts/flatpickr/l10n/index.js +387 -256
  33. data/vendor/assets/javascripts/flatpickr/l10n/is.js +6 -6
  34. data/vendor/assets/javascripts/flatpickr/l10n/it.js +6 -6
  35. data/vendor/assets/javascripts/flatpickr/l10n/ja.js +6 -6
  36. data/vendor/assets/javascripts/flatpickr/l10n/ka.js +6 -6
  37. data/vendor/assets/javascripts/flatpickr/l10n/km.js +6 -6
  38. data/vendor/assets/javascripts/flatpickr/l10n/ko.js +6 -6
  39. data/vendor/assets/javascripts/flatpickr/l10n/kz.js +6 -6
  40. data/vendor/assets/javascripts/flatpickr/l10n/lt.js +7 -6
  41. data/vendor/assets/javascripts/flatpickr/l10n/lv.js +6 -6
  42. data/vendor/assets/javascripts/flatpickr/l10n/mk.js +6 -6
  43. data/vendor/assets/javascripts/flatpickr/l10n/mn.js +6 -6
  44. data/vendor/assets/javascripts/flatpickr/l10n/ms.js +6 -6
  45. data/vendor/assets/javascripts/flatpickr/l10n/my.js +6 -6
  46. data/vendor/assets/javascripts/flatpickr/l10n/nl.js +7 -7
  47. data/vendor/assets/javascripts/flatpickr/l10n/no.js +6 -6
  48. data/vendor/assets/javascripts/flatpickr/l10n/pa.js +6 -6
  49. data/vendor/assets/javascripts/flatpickr/l10n/pl.js +6 -6
  50. data/vendor/assets/javascripts/flatpickr/l10n/pt.js +6 -6
  51. data/vendor/assets/javascripts/flatpickr/l10n/ro.js +6 -6
  52. data/vendor/assets/javascripts/flatpickr/l10n/ru.js +6 -6
  53. data/vendor/assets/javascripts/flatpickr/l10n/si.js +6 -6
  54. data/vendor/assets/javascripts/flatpickr/l10n/sk.js +6 -6
  55. data/vendor/assets/javascripts/flatpickr/l10n/sl.js +6 -6
  56. data/vendor/assets/javascripts/flatpickr/l10n/sq.js +6 -6
  57. data/vendor/assets/javascripts/flatpickr/l10n/sr-cyr.js +6 -6
  58. data/vendor/assets/javascripts/flatpickr/l10n/sr.js +6 -6
  59. data/vendor/assets/javascripts/flatpickr/l10n/sv.js +6 -6
  60. data/vendor/assets/javascripts/flatpickr/l10n/th.js +6 -6
  61. data/vendor/assets/javascripts/flatpickr/l10n/tr.js +6 -6
  62. data/vendor/assets/javascripts/flatpickr/l10n/uk.js +6 -6
  63. data/vendor/assets/javascripts/flatpickr/l10n/uz.js +75 -0
  64. data/vendor/assets/javascripts/flatpickr/l10n/uz_latn.js +75 -0
  65. data/vendor/assets/javascripts/flatpickr/l10n/vn.js +6 -6
  66. data/vendor/assets/javascripts/flatpickr/l10n/zh-tw.js +6 -6
  67. data/vendor/assets/javascripts/flatpickr/l10n/zh.js +6 -6
  68. data/vendor/assets/javascripts/flatpickr/plugins/confirmDate/confirmDate.js +33 -17
  69. data/vendor/assets/javascripts/flatpickr/plugins/labelPlugin/labelPlugin.js +3 -3
  70. data/vendor/assets/javascripts/flatpickr/plugins/minMaxTimePlugin.js +23 -17
  71. data/vendor/assets/javascripts/flatpickr/plugins/momentPlugin.js +69 -0
  72. data/vendor/assets/javascripts/flatpickr/plugins/monthSelect/index.js +55 -25
  73. data/vendor/assets/javascripts/flatpickr/plugins/rangePlugin.js +165 -142
  74. data/vendor/assets/javascripts/flatpickr/plugins/scrollPlugin.js +32 -5
  75. data/vendor/assets/javascripts/flatpickr/plugins/weekSelect/weekSelect.js +17 -4
  76. data/vendor/assets/stylesheets/flatpickr.css +9 -2
  77. data/vendor/assets/stylesheets/flatpickr/ie.css +0 -0
  78. data/vendor/assets/stylesheets/flatpickr/plugins/confirmDate/confirmDate.css +0 -0
  79. data/vendor/assets/stylesheets/flatpickr/plugins/monthSelect/style.css +0 -0
  80. data/vendor/assets/stylesheets/flatpickr/themes/airbnb.css +9 -2
  81. data/vendor/assets/stylesheets/flatpickr/themes/confetti.css +11 -4
  82. data/vendor/assets/stylesheets/flatpickr/themes/dark.css +9 -2
  83. data/vendor/assets/stylesheets/flatpickr/themes/light.css +11 -4
  84. data/vendor/assets/stylesheets/flatpickr/themes/material_blue.css +11 -4
  85. data/vendor/assets/stylesheets/flatpickr/themes/material_green.css +11 -4
  86. data/vendor/assets/stylesheets/flatpickr/themes/material_orange.css +11 -4
  87. data/vendor/assets/stylesheets/flatpickr/themes/material_red.css +11 -4
  88. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8885c0176dcfabe65a584c2d766905f66bc89dc15bc8989830b10753039f6215
4
- data.tar.gz: c7f284dbb4a095417361aa98d3cdb3022f42f36517e480746d358a076703f9a4
3
+ metadata.gz: '038bfafb07ac618593d6a03c0450b07564034bc8b028e04374dc0d6c8a8e6b6b'
4
+ data.tar.gz: 65ae8576bf40a925163d142e14a1684e4f572191e2c7c986d671ae63842ecf83
5
5
  SHA512:
6
- metadata.gz: f204a0fd9d87ce791307aa8cfa5bf1bc95ed4c858790212495767111b1f1921de763de78b5eb44fe526b2dbc3715a68ef46ac6bd7aedbd2e6a8b23d9a46e515d
7
- data.tar.gz: 3abc3c660d8c5f49c4cbf45f7ce943eca75aaaf03f6b40a50839c7c8867b37591cd8e2c10c79669118157e83cac8ba665c1007f026cc545119c53b9e38697a1b
6
+ metadata.gz: fba205aed2b25eb29c5f997e9d5a812d3a1f559ad676575b1a5a962f0722e44982aaf2f9f3ef020e0b904b727e316d4b1db539a9c3685b820f86bd36b17bcd78
7
+ data.tar.gz: 2883d490dc16d76606e13526fbac9df17470f87b81929ddd0dc22a173a9904c3b19bfac9868333c2603fc9c1be276cce07b594c83cab7ad6e5a4a5023a337e14
data/.gitignore CHANGED
@@ -7,6 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
- /flatpickr_source/
11
10
  /node_modules/
12
11
  package-lock.json
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Flatpickr
4
- VERSION = '4.6.3.1'
4
+ VERSION = '4.6.6.0'
5
5
  end
@@ -1,23 +1,23 @@
1
- /* flatpickr v4.6.3, @license MIT */
1
+ /* flatpickr v4.6.6, @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
5
  (global = global || self, global.flatpickr = factory());
6
- }(this, function () { 'use strict';
6
+ }(this, (function () { 'use strict';
7
7
 
8
8
  /*! *****************************************************************************
9
- Copyright (c) Microsoft Corporation. All rights reserved.
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
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
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
- See the Apache Version 2.0 License for specific language governing permissions
20
- and limitations under the License.
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",
@@ -49,12 +57,14 @@
49
57
  _disable: [],
50
58
  _enable: [],
51
59
  allowInput: false,
60
+ allowInvalidPreload: false,
52
61
  altFormat: "F j, Y",
53
62
  altInput: false,
54
63
  altInputClass: "form-control input",
55
64
  animate: typeof window === "object" &&
56
65
  window.navigator.userAgent.indexOf("MSIE") === -1,
57
66
  ariaDateFormat: "F j, Y",
67
+ autoFillDefaultTime: true,
58
68
  clickOpens: true,
59
69
  closeOnSelect: true,
60
70
  conjunction: ", ",
@@ -115,7 +125,7 @@
115
125
  static: false,
116
126
  time_24hr: false,
117
127
  weekNumbers: false,
118
- wrap: false
128
+ wrap: false,
119
129
  };
120
130
 
121
131
  var english = {
@@ -129,7 +139,7 @@
129
139
  "Thursday",
130
140
  "Friday",
131
141
  "Saturday",
132
- ]
142
+ ],
133
143
  },
134
144
  months: {
135
145
  shorthand: [
@@ -159,7 +169,7 @@
159
169
  "October",
160
170
  "November",
161
171
  "December",
162
- ]
172
+ ],
163
173
  },
164
174
  daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
165
175
  firstDayOfWeek: 0,
@@ -184,12 +194,16 @@
184
194
  toggleTitle: "Click to toggle",
185
195
  amPM: ["AM", "PM"],
186
196
  yearAriaLabel: "Year",
197
+ monthAriaLabel: "Month",
187
198
  hourAriaLabel: "Hour",
188
199
  minuteAriaLabel: "Minute",
189
- time_24hr: false
200
+ time_24hr: false,
190
201
  };
191
202
 
192
- var pad = function (number) { return ("0" + number).slice(-2); };
203
+ var pad = function (number, length) {
204
+ if (length === void 0) { length = 2; }
205
+ return ("000" + number).slice(length * -1);
206
+ };
193
207
  var int = function (bool) { return (bool === true ? 1 : 0); };
194
208
  /* istanbul ignore next */
195
209
  function debounce(func, wait, immediate) {
@@ -254,11 +268,16 @@
254
268
  return wrapper;
255
269
  }
256
270
  function getEventTarget(event) {
257
- if (typeof event.composedPath === "function") {
258
- var path = event.composedPath();
259
- return path[0];
271
+ try {
272
+ if (typeof event.composedPath === "function") {
273
+ var path = event.composedPath();
274
+ return path[0];
275
+ }
276
+ return event.target;
277
+ }
278
+ catch (error) {
279
+ return event.target;
260
280
  }
261
- return event.target;
262
281
  }
263
282
 
264
283
  var doNothing = function () { return undefined; };
@@ -326,7 +345,7 @@
326
345
  w: doNothing,
327
346
  y: function (dateObj, year) {
328
347
  dateObj.setFullYear(2000 + parseFloat(year));
329
- }
348
+ },
330
349
  };
331
350
  var tokenRegex = {
332
351
  D: "(\\w+)",
@@ -351,7 +370,7 @@
351
370
  s: "(\\d\\d|\\d)",
352
371
  u: "(.+)",
353
372
  w: "(\\d\\d|\\d)",
354
- y: "(\\d{2})"
373
+ y: "(\\d{2})",
355
374
  };
356
375
  var formats = {
357
376
  // get the date in UTC
@@ -389,8 +408,8 @@
389
408
  W: function (date, _, options) {
390
409
  return options.getWeek(date);
391
410
  },
392
- // full year e.g. 2016
393
- Y: function (date) { return date.getFullYear(); },
411
+ // full year e.g. 2016, padded (0001-9999)
412
+ Y: function (date) { return pad(date.getFullYear(), 4); },
394
413
  // day in month, padded (01-30)
395
414
  d: function (date) { return pad(date.getDate()); },
396
415
  // hour from 1-12 (am/pm)
@@ -414,14 +433,14 @@
414
433
  // number of the day of the week
415
434
  w: function (date) { return date.getDay(); },
416
435
  // last two digits of year e.g. 16 for 2016
417
- y: function (date) { return String(date.getFullYear()).substring(2); }
436
+ y: function (date) { return String(date.getFullYear()).substring(2); },
418
437
  };
419
438
 
420
439
  var createDateFormatter = function (_a) {
421
- var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
440
+ 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
441
  return function (dateObj, frmt, overrideLocale) {
423
442
  var locale = overrideLocale || l10n;
424
- if (config.formatDate !== undefined) {
443
+ if (config.formatDate !== undefined && !isMobile) {
425
444
  return config.formatDate(dateObj, frmt, locale);
426
445
  }
427
446
  return frmt
@@ -481,7 +500,7 @@
481
500
  if (match && (matched = true)) {
482
501
  ops[token_1 !== "Y" ? "push" : "unshift"]({
483
502
  fn: revFormat[token_1],
484
- val: match[++matchIndex]
503
+ val: match[++matchIndex],
485
504
  });
486
505
  }
487
506
  }
@@ -520,7 +539,7 @@
520
539
  return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);
521
540
  };
522
541
  var duration = {
523
- DAY: 86400000
542
+ DAY: 86400000,
524
543
  };
525
544
 
526
545
  if (typeof Object.assign !== "function") {
@@ -548,8 +567,8 @@
548
567
  var DEBOUNCED_CHANGE_MS = 300;
549
568
  function FlatpickrInstance(element, instanceConfig) {
550
569
  var self = {
551
- config: __assign({}, defaults, flatpickr.defaultConfig),
552
- l10n: english
570
+ config: __assign(__assign({}, defaults), flatpickr.defaultConfig),
571
+ l10n: english,
553
572
  };
554
573
  self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });
555
574
  self._handlers = [];
@@ -579,7 +598,7 @@
579
598
  if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))
580
599
  return 29;
581
600
  return self.l10n.daysInMonth[month];
582
- }
601
+ },
583
602
  };
584
603
  }
585
604
  function init() {
@@ -602,8 +621,6 @@
602
621
  updateValue(false);
603
622
  }
604
623
  setCalendarWidth();
605
- self.showTimeInput =
606
- self.selectedDates.length > 0 || self.config.noCalendar;
607
624
  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
608
625
  /* TODO: investigate this further
609
626
 
@@ -623,8 +640,9 @@
623
640
  }
624
641
  function setCalendarWidth() {
625
642
  var config = self.config;
626
- if (config.weekNumbers === false && config.showMonths === 1)
643
+ if (config.weekNumbers === false && config.showMonths === 1) {
627
644
  return;
645
+ }
628
646
  else if (config.noCalendar !== true) {
629
647
  window.requestAnimationFrame(function () {
630
648
  if (self.calendarContainer !== undefined) {
@@ -651,7 +669,12 @@
651
669
  */
652
670
  function updateTime(e) {
653
671
  if (self.selectedDates.length === 0) {
654
- setDefaultTime();
672
+ var defaultDate = self.config.minDate !== undefined
673
+ ? new Date(self.config.minDate.getTime())
674
+ : new Date();
675
+ var _a = getDefaultHours(), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;
676
+ defaultDate.setHours(hours, minutes, seconds, 0);
677
+ self.setDate(defaultDate, false);
655
678
  }
656
679
  if (e !== undefined && e.type !== "blur") {
657
680
  timeWrapper(e);
@@ -726,10 +749,11 @@
726
749
  */
727
750
  function setHoursFromDate(dateObj) {
728
751
  var date = dateObj || self.latestSelectedDateObj;
729
- if (date)
752
+ if (date) {
730
753
  setHours(date.getHours(), date.getMinutes(), date.getSeconds());
754
+ }
731
755
  }
732
- function setDefaultHours() {
756
+ function getDefaultHours() {
733
757
  var hours = self.config.defaultHour;
734
758
  var minutes = self.config.defaultMinute;
735
759
  var seconds = self.config.defaultSeconds;
@@ -751,7 +775,7 @@
751
775
  if (hours === maxHr && minutes === maxMinutes)
752
776
  seconds = self.config.maxDate.getSeconds();
753
777
  }
754
- setHours(hours, minutes, seconds);
778
+ return { hours: hours, minutes: minutes, seconds: seconds };
755
779
  }
756
780
  /**
757
781
  * Sets the hours, minutes, and optionally seconds
@@ -782,7 +806,8 @@
782
806
  * @param {Event} event the keyup or increment event
783
807
  */
784
808
  function onYearInput(event) {
785
- var year = parseInt(event.target.value) + (event.delta || 0);
809
+ var eventTarget = getEventTarget(event);
810
+ var year = parseInt(eventTarget.value) + (event.delta || 0);
786
811
  if (year / 1000 > 1 ||
787
812
  (event.key === "Enter" && !/[^\d]/.test(year.toString()))) {
788
813
  changeYear(year);
@@ -804,21 +829,9 @@
804
829
  element: element,
805
830
  event: event,
806
831
  handler: handler,
807
- options: options
832
+ options: options,
808
833
  });
809
834
  }
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
835
  function triggerChange() {
823
836
  triggerEvent("onChange");
824
837
  }
@@ -842,7 +855,7 @@
842
855
  if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))
843
856
  bind(self.daysContainer, "mouseover", function (e) {
844
857
  if (self.config.mode === "range")
845
- onMouseOver(e.target);
858
+ onMouseOver(getEventTarget(e));
846
859
  });
847
860
  bind(window.document.body, "keydown", onKeyDown);
848
861
  if (!self.config.inline && !self.config.static)
@@ -850,36 +863,38 @@
850
863
  if (window.ontouchstart !== undefined)
851
864
  bind(window.document, "touchstart", documentClick);
852
865
  else
853
- bind(window.document, "mousedown", onClick(documentClick));
866
+ bind(window.document, "click", documentClick);
854
867
  bind(window.document, "focus", documentClick, { capture: true });
855
868
  if (self.config.clickOpens === true) {
856
869
  bind(self._input, "focus", self.open);
857
- bind(self._input, "mousedown", onClick(self.open));
870
+ bind(self._input, "click", self.open);
858
871
  }
859
872
  if (self.daysContainer !== undefined) {
860
- bind(self.monthNav, "mousedown", onClick(onMonthNavClick));
873
+ bind(self.monthNav, "click", onMonthNavClick);
861
874
  bind(self.monthNav, ["keyup", "increment"], onYearInput);
862
- bind(self.daysContainer, "mousedown", onClick(selectDate));
875
+ bind(self.daysContainer, "click", selectDate);
863
876
  }
864
877
  if (self.timeContainer !== undefined &&
865
878
  self.minuteElement !== undefined &&
866
879
  self.hourElement !== undefined) {
867
880
  var selText = function (e) {
868
- return e.target.select();
881
+ return getEventTarget(e).select();
869
882
  };
870
883
  bind(self.timeContainer, ["increment"], updateTime);
871
884
  bind(self.timeContainer, "blur", updateTime, { capture: true });
872
- bind(self.timeContainer, "mousedown", onClick(timeIncrement));
885
+ bind(self.timeContainer, "click", timeIncrement);
873
886
  bind([self.hourElement, self.minuteElement], ["focus", "click"], selText);
874
887
  if (self.secondElement !== undefined)
875
888
  bind(self.secondElement, "focus", function () { return self.secondElement && self.secondElement.select(); });
876
889
  if (self.amPM !== undefined) {
877
- bind(self.amPM, "mousedown", onClick(function (e) {
890
+ bind(self.amPM, "click", function (e) {
878
891
  updateTime(e);
879
892
  triggerChange();
880
- }));
893
+ });
881
894
  }
882
895
  }
896
+ if (self.config.allowInput)
897
+ bind(self._input, "blur", onBlur);
883
898
  }
884
899
  /**
885
900
  * Set the calendar view to a particular date.
@@ -923,8 +938,9 @@
923
938
  * @param {Event} e the click event
924
939
  */
925
940
  function timeIncrement(e) {
926
- if (~e.target.className.indexOf("arrow"))
927
- incrementNumInput(e, e.target.classList.contains("arrowUp") ? 1 : -1);
941
+ var eventTarget = getEventTarget(e);
942
+ if (~eventTarget.className.indexOf("arrow"))
943
+ incrementNumInput(e, eventTarget.classList.contains("arrowUp") ? 1 : -1);
928
944
  }
929
945
  /**
930
946
  * Increments/decrements the value of input associ-
@@ -936,7 +952,7 @@
936
952
  * @param {Element} inputElem the input element
937
953
  */
938
954
  function incrementNumInput(e, delta, inputElem) {
939
- var target = e && e.target;
955
+ var target = e && getEventTarget(e);
940
956
  var input = inputElem ||
941
957
  (target && target.parentNode && target.parentNode.firstChild);
942
958
  var event = createEvent("increment");
@@ -1098,16 +1114,20 @@
1098
1114
  : self.todayDateElem !== undefined && isInView(self.todayDateElem)
1099
1115
  ? self.todayDateElem
1100
1116
  : getFirstAvailableDay(offset > 0 ? 1 : -1);
1101
- if (startElem === undefined)
1102
- return self._input.focus();
1103
- if (!dayFocused)
1104
- return focusOnDayElem(startElem);
1105
- getNextAvailableDay(startElem, offset);
1117
+ if (startElem === undefined) {
1118
+ self._input.focus();
1119
+ }
1120
+ else if (!dayFocused) {
1121
+ focusOnDayElem(startElem);
1122
+ }
1123
+ else {
1124
+ getNextAvailableDay(startElem, offset);
1125
+ }
1106
1126
  }
1107
1127
  function buildMonthDays(year, month) {
1108
1128
  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";
1129
+ var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);
1130
+ 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
1131
  var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;
1112
1132
  // prepend days from the ending of previous month
1113
1133
  for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {
@@ -1186,8 +1206,9 @@
1186
1206
  }
1187
1207
  else {
1188
1208
  self.monthsDropdownContainer = createElement("select", "flatpickr-monthDropdown-months");
1209
+ self.monthsDropdownContainer.setAttribute("aria-label", self.l10n.monthAriaLabel);
1189
1210
  bind(self.monthsDropdownContainer, "change", function (e) {
1190
- var target = e.target;
1211
+ var target = getEventTarget(e);
1191
1212
  var selectedMonth = parseInt(target.value, 10);
1192
1213
  self.changeMonth(selectedMonth - self.currentMonth);
1193
1214
  triggerEvent("onMonthChange");
@@ -1215,7 +1236,7 @@
1215
1236
  return {
1216
1237
  container: container,
1217
1238
  yearElement: yearElement,
1218
- monthElement: monthElement
1239
+ monthElement: monthElement,
1219
1240
  };
1220
1241
  }
1221
1242
  function buildMonths() {
@@ -1249,7 +1270,7 @@
1249
1270
  toggleClass(self.prevMonthNav, "flatpickr-disabled", bool);
1250
1271
  self.__hidePrevMonthArrow = bool;
1251
1272
  }
1252
- }
1273
+ },
1253
1274
  });
1254
1275
  Object.defineProperty(self, "_hideNextMonthArrow", {
1255
1276
  get: function () { return self.__hideNextMonthArrow; },
@@ -1258,7 +1279,7 @@
1258
1279
  toggleClass(self.nextMonthNav, "flatpickr-disabled", bool);
1259
1280
  self.__hideNextMonthArrow = bool;
1260
1281
  }
1261
- }
1282
+ },
1262
1283
  });
1263
1284
  self.currentYearElement = self.yearElements[0];
1264
1285
  updateNavigationCurrentMonth();
@@ -1272,11 +1293,11 @@
1272
1293
  self.timeContainer.tabIndex = -1;
1273
1294
  var separator = createElement("span", "flatpickr-time-separator", ":");
1274
1295
  var hourInput = createNumberInput("flatpickr-hour", {
1275
- "aria-label": self.l10n.hourAriaLabel
1296
+ "aria-label": self.l10n.hourAriaLabel,
1276
1297
  });
1277
1298
  self.hourElement = hourInput.getElementsByTagName("input")[0];
1278
1299
  var minuteInput = createNumberInput("flatpickr-minute", {
1279
- "aria-label": self.l10n.minuteAriaLabel
1300
+ "aria-label": self.l10n.minuteAriaLabel,
1280
1301
  });
1281
1302
  self.minuteElement = minuteInput.getElementsByTagName("input")[0];
1282
1303
  self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;
@@ -1340,9 +1361,9 @@
1340
1361
  return;
1341
1362
  }
1342
1363
  var firstDayOfWeek = self.l10n.firstDayOfWeek;
1343
- var weekdays = self.l10n.weekdays.shorthand.slice();
1364
+ var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);
1344
1365
  if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {
1345
- weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));
1366
+ weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));
1346
1367
  }
1347
1368
  for (var i = self.config.showMonths; i--;) {
1348
1369
  self.weekdayContainer.children[i].innerHTML = "\n <span class='flatpickr-weekday'>\n " + weekdays.join("</span><span class='flatpickr-weekday'>") + "\n </span>\n ";
@@ -1357,7 +1378,7 @@
1357
1378
  weekWrapper.appendChild(weekNumbers);
1358
1379
  return {
1359
1380
  weekWrapper: weekWrapper,
1360
- weekNumbers: weekNumbers
1381
+ weekNumbers: weekNumbers,
1361
1382
  };
1362
1383
  }
1363
1384
  function changeMonth(value, isOffset) {
@@ -1391,9 +1412,9 @@
1391
1412
  self.currentYear = self._initialDate.getFullYear();
1392
1413
  self.currentMonth = self._initialDate.getMonth();
1393
1414
  }
1394
- self.showTimeInput = false;
1395
1415
  if (self.config.enableTime === true) {
1396
- setDefaultHours();
1416
+ var _a = getDefaultHours(), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;
1417
+ setHours(hours, minutes, seconds);
1397
1418
  }
1398
1419
  self.redraw();
1399
1420
  if (triggerChangeEvent)
@@ -1448,7 +1469,6 @@
1448
1469
  self.input.type = self.input._type;
1449
1470
  self.input.classList.remove("flatpickr-input");
1450
1471
  self.input.removeAttribute("readonly");
1451
- self.input.value = "";
1452
1472
  }
1453
1473
  [
1454
1474
  "_showTimeInput",
@@ -1518,11 +1538,15 @@
1518
1538
  if (lostFocus && isIgnored) {
1519
1539
  if (self.timeContainer !== undefined &&
1520
1540
  self.minuteElement !== undefined &&
1521
- self.hourElement !== undefined) {
1541
+ self.hourElement !== undefined &&
1542
+ self.input.value !== "" &&
1543
+ self.input.value !== undefined) {
1522
1544
  updateTime();
1523
1545
  }
1524
1546
  self.close();
1525
- if (self.config.mode === "range" && self.selectedDates.length === 1) {
1547
+ if (self.config &&
1548
+ self.config.mode === "range" &&
1549
+ self.selectedDates.length === 1) {
1526
1550
  self.clear(false);
1527
1551
  self.redraw();
1528
1552
  }
@@ -1598,9 +1622,19 @@
1598
1622
  function isInView(elem) {
1599
1623
  if (self.daysContainer !== undefined)
1600
1624
  return (elem.className.indexOf("hidden") === -1 &&
1625
+ elem.className.indexOf("flatpickr-disabled") === -1 &&
1601
1626
  self.daysContainer.contains(elem));
1602
1627
  return false;
1603
1628
  }
1629
+ function onBlur(e) {
1630
+ var isInput = e.target === self._input;
1631
+ if (isInput &&
1632
+ !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {
1633
+ self.setDate(self._input.value, true, e.target === self.altInput
1634
+ ? self.config.altFormat
1635
+ : self.config.dateFormat);
1636
+ }
1637
+ }
1604
1638
  function onKeyDown(e) {
1605
1639
  // e.key e.keyCode
1606
1640
  // "Backspace" 8
@@ -1612,26 +1646,29 @@
1612
1646
  // "ArrowRight" (IE "Right") 39
1613
1647
  // "ArrowDown" (IE "Down") 40
1614
1648
  // "Delete" (IE "Del") 46
1615
- var isInput = e.target === self._input;
1649
+ var eventTarget = getEventTarget(e);
1650
+ var isInput = self.config.wrap
1651
+ ? element.contains(eventTarget)
1652
+ : eventTarget === self._input;
1616
1653
  var allowInput = self.config.allowInput;
1617
1654
  var allowKeydown = self.isOpen && (!allowInput || !isInput);
1618
1655
  var allowInlineKeydown = self.config.inline && isInput && !allowInput;
1619
1656
  if (e.keyCode === 13 && isInput) {
1620
1657
  if (allowInput) {
1621
- self.setDate(self._input.value, true, e.target === self.altInput
1658
+ self.setDate(self._input.value, true, eventTarget === self.altInput
1622
1659
  ? self.config.altFormat
1623
1660
  : self.config.dateFormat);
1624
- return e.target.blur();
1661
+ return eventTarget.blur();
1625
1662
  }
1626
1663
  else {
1627
1664
  self.open();
1628
1665
  }
1629
1666
  }
1630
- else if (isCalendarElem(e.target) ||
1667
+ else if (isCalendarElem(eventTarget) ||
1631
1668
  allowKeydown ||
1632
1669
  allowInlineKeydown) {
1633
1670
  var isTimeObj = !!self.timeContainer &&
1634
- self.timeContainer.contains(e.target);
1671
+ self.timeContainer.contains(eventTarget);
1635
1672
  switch (e.keyCode) {
1636
1673
  case 13:
1637
1674
  if (isTimeObj) {
@@ -1677,9 +1714,10 @@
1677
1714
  case 40:
1678
1715
  e.preventDefault();
1679
1716
  var delta = e.keyCode === 40 ? 1 : -1;
1680
- if ((self.daysContainer && e.target.$i !== undefined) ||
1681
- e.target === self.input ||
1682
- e.target === self.altInput) {
1717
+ if ((self.daysContainer &&
1718
+ eventTarget.$i !== undefined) ||
1719
+ eventTarget === self.input ||
1720
+ eventTarget === self.altInput) {
1683
1721
  if (e.ctrlKey) {
1684
1722
  e.stopPropagation();
1685
1723
  changeYear(self.currentYear - delta);
@@ -1688,7 +1726,7 @@
1688
1726
  else if (!isTimeObj)
1689
1727
  focusOnDay(undefined, delta * 7);
1690
1728
  }
1691
- else if (e.target === self.currentYearElement) {
1729
+ else if (eventTarget === self.currentYearElement) {
1692
1730
  changeYear(self.currentYear - delta);
1693
1731
  }
1694
1732
  else if (self.config.enableTime) {
@@ -1708,7 +1746,7 @@
1708
1746
  ]
1709
1747
  .concat(self.pluginElements)
1710
1748
  .filter(function (x) { return x; });
1711
- var i = elems.indexOf(e.target);
1749
+ var i = elems.indexOf(eventTarget);
1712
1750
  if (i !== -1) {
1713
1751
  var target = elems[i + (e.shiftKey ? -1 : 1)];
1714
1752
  e.preventDefault();
@@ -1717,17 +1755,15 @@
1717
1755
  }
1718
1756
  else if (!self.config.noCalendar &&
1719
1757
  self.daysContainer &&
1720
- self.daysContainer.contains(e.target) &&
1758
+ self.daysContainer.contains(eventTarget) &&
1721
1759
  e.shiftKey) {
1722
1760
  e.preventDefault();
1723
1761
  self._input.focus();
1724
1762
  }
1725
1763
  break;
1726
- default:
1727
- break;
1728
1764
  }
1729
1765
  }
1730
- if (self.amPM !== undefined && e.target === self.amPM) {
1766
+ if (self.amPM !== undefined && eventTarget === self.amPM) {
1731
1767
  switch (e.key) {
1732
1768
  case self.l10n.amPM[0].charAt(0):
1733
1769
  case self.l10n.amPM[0].charAt(0).toLowerCase():
@@ -1743,7 +1779,7 @@
1743
1779
  break;
1744
1780
  }
1745
1781
  }
1746
- if (isInput || isCalendarElem(e.target)) {
1782
+ if (isInput || isCalendarElem(eventTarget)) {
1747
1783
  triggerEvent("onKeyDown", e);
1748
1784
  }
1749
1785
  }
@@ -1810,19 +1846,13 @@
1810
1846
  if (self.isOpen && !self.config.static && !self.config.inline)
1811
1847
  positionCalendar();
1812
1848
  }
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
1849
  function open(e, positionElement) {
1821
1850
  if (positionElement === void 0) { positionElement = self._positionElement; }
1822
1851
  if (self.isMobile === true) {
1823
1852
  if (e) {
1824
1853
  e.preventDefault();
1825
- e.target && e.target.blur();
1854
+ var eventTarget = getEventTarget(e);
1855
+ eventTarget && eventTarget.blur();
1826
1856
  }
1827
1857
  if (self.mobileInput !== undefined) {
1828
1858
  self.mobileInput.focus();
@@ -1842,9 +1872,6 @@
1842
1872
  positionCalendar(positionElement);
1843
1873
  }
1844
1874
  if (self.config.enableTime === true && self.config.noCalendar === true) {
1845
- if (self.selectedDates.length === 0) {
1846
- setDefaultTime();
1847
- }
1848
1875
  if (self.config.allowInput === false &&
1849
1876
  (e === undefined ||
1850
1877
  !self.timeContainer.contains(e.relatedTarget))) {
@@ -1886,6 +1913,7 @@
1886
1913
  "wrap",
1887
1914
  "weekNumbers",
1888
1915
  "allowInput",
1916
+ "allowInvalidPreload",
1889
1917
  "clickOpens",
1890
1918
  "time_24hr",
1891
1919
  "enableTime",
@@ -1897,7 +1925,7 @@
1897
1925
  "enableSeconds",
1898
1926
  "disableMobile",
1899
1927
  ];
1900
- var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));
1928
+ var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);
1901
1929
  var formats = {};
1902
1930
  self.config.parseDate = userConfig.parseDate;
1903
1931
  self.config.formatDate = userConfig.formatDate;
@@ -1905,13 +1933,13 @@
1905
1933
  get: function () { return self.config._enable; },
1906
1934
  set: function (dates) {
1907
1935
  self.config._enable = parseDateRules(dates);
1908
- }
1936
+ },
1909
1937
  });
1910
1938
  Object.defineProperty(self.config, "disable", {
1911
1939
  get: function () { return self.config._disable; },
1912
1940
  set: function (dates) {
1913
1941
  self.config._disable = parseDateRules(dates);
1914
- }
1942
+ },
1915
1943
  });
1916
1944
  var timeMode = userConfig.mode === "time";
1917
1945
  if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {
@@ -1930,28 +1958,24 @@
1930
1958
  ? "h:i" + (userConfig.enableSeconds ? ":S K" : " K")
1931
1959
  : defaultAltFormat + (" h:i" + (userConfig.enableSeconds ? ":S" : "") + " K");
1932
1960
  }
1933
- if (!userConfig.altInputClass) {
1934
- self.config.altInputClass =
1935
- self.input.className + " " + self.config.altInputClass;
1936
- }
1937
1961
  Object.defineProperty(self.config, "minDate", {
1938
1962
  get: function () { return self.config._minDate; },
1939
- set: minMaxDateSetter("min")
1963
+ set: minMaxDateSetter("min"),
1940
1964
  });
1941
1965
  Object.defineProperty(self.config, "maxDate", {
1942
1966
  get: function () { return self.config._maxDate; },
1943
- set: minMaxDateSetter("max")
1967
+ set: minMaxDateSetter("max"),
1944
1968
  });
1945
1969
  var minMaxTimeSetter = function (type) { return function (val) {
1946
1970
  self.config[type === "min" ? "_minTime" : "_maxTime"] = self.parseDate(val, "H:i:S");
1947
1971
  }; };
1948
1972
  Object.defineProperty(self.config, "minTime", {
1949
1973
  get: function () { return self.config._minTime; },
1950
- set: minMaxTimeSetter("min")
1974
+ set: minMaxTimeSetter("min"),
1951
1975
  });
1952
1976
  Object.defineProperty(self.config, "maxTime", {
1953
1977
  get: function () { return self.config._maxTime; },
1954
- set: minMaxTimeSetter("max")
1978
+ set: minMaxTimeSetter("max"),
1955
1979
  });
1956
1980
  if (userConfig.mode === "time") {
1957
1981
  self.config.noCalendar = true;
@@ -1959,6 +1983,7 @@
1959
1983
  }
1960
1984
  Object.assign(self.config, formats, userConfig);
1961
1985
  for (var i = 0; i < boolOpts.length; i++)
1986
+ // https://github.com/microsoft/TypeScript/issues/31663
1962
1987
  self.config[boolOpts[i]] =
1963
1988
  self.config[boolOpts[i]] === true ||
1964
1989
  self.config[boolOpts[i]] === "true";
@@ -1985,19 +2010,28 @@
1985
2010
  self.config[key] = pluginConf[key];
1986
2011
  }
1987
2012
  }
2013
+ if (!userConfig.altInputClass) {
2014
+ self.config.altInputClass =
2015
+ getInputElem().className + " " + self.config.altInputClass;
2016
+ }
1988
2017
  triggerEvent("onParseConfig");
1989
2018
  }
2019
+ function getInputElem() {
2020
+ return self.config.wrap
2021
+ ? element.querySelector("[data-input]")
2022
+ : element;
2023
+ }
1990
2024
  function setupLocale() {
1991
2025
  if (typeof self.config.locale !== "object" &&
1992
2026
  typeof flatpickr.l10ns[self.config.locale] === "undefined")
1993
2027
  self.config.errorHandler(new Error("flatpickr: invalid locale " + self.config.locale));
1994
- self.l10n = __assign({}, flatpickr.l10ns["default"], (typeof self.config.locale === "object"
2028
+ self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === "object"
1995
2029
  ? self.config.locale
1996
2030
  : self.config.locale !== "default"
1997
2031
  ? flatpickr.l10ns[self.config.locale]
1998
2032
  : undefined));
1999
2033
  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 || {})));
2034
+ var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));
2001
2035
  if (userConfig.time_24hr === undefined &&
2002
2036
  flatpickr.defaultConfig.time_24hr === undefined) {
2003
2037
  self.config.time_24hr = self.l10n.time_24hr;
@@ -2021,12 +2055,22 @@
2021
2055
  toggleClass(self.calendarContainer, "arrowBottom", showOnTop);
2022
2056
  if (self.config.inline)
2023
2057
  return;
2024
- var left = window.pageXOffset +
2025
- inputBounds.left -
2026
- (configPosHorizontal != null && configPosHorizontal === "center"
2027
- ? (calendarWidth - inputBounds.width) / 2
2028
- : 0);
2029
- var right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);
2058
+ var left = window.pageXOffset + inputBounds.left;
2059
+ var isCenter = false;
2060
+ var isRight = false;
2061
+ if (configPosHorizontal === "center") {
2062
+ left -= (calendarWidth - inputBounds.width) / 2;
2063
+ isCenter = true;
2064
+ }
2065
+ else if (configPosHorizontal === "right") {
2066
+ left -= calendarWidth - inputBounds.width;
2067
+ isRight = true;
2068
+ }
2069
+ toggleClass(self.calendarContainer, "arrowLeft", !isCenter && !isRight);
2070
+ toggleClass(self.calendarContainer, "arrowCenter", isCenter);
2071
+ toggleClass(self.calendarContainer, "arrowRight", isRight);
2072
+ var right = window.document.body.offsetWidth -
2073
+ (window.pageXOffset + inputBounds.right);
2030
2074
  var rightMost = left + calendarWidth > window.document.body.offsetWidth;
2031
2075
  var centerMost = right + calendarWidth > window.document.body.offsetWidth;
2032
2076
  toggleClass(self.calendarContainer, "rightMost", rightMost);
@@ -2042,7 +2086,7 @@
2042
2086
  self.calendarContainer.style.right = right + "px";
2043
2087
  }
2044
2088
  else {
2045
- var doc = document.styleSheets[0];
2089
+ var doc = getDocumentStyleSheet();
2046
2090
  // some testing environments don't have css support
2047
2091
  if (doc === undefined)
2048
2092
  return;
@@ -2059,9 +2103,30 @@
2059
2103
  self.calendarContainer.style.right = "auto";
2060
2104
  }
2061
2105
  }
2106
+ function getDocumentStyleSheet() {
2107
+ var editableSheet = null;
2108
+ for (var i = 0; i < document.styleSheets.length; i++) {
2109
+ var sheet = document.styleSheets[i];
2110
+ try {
2111
+ sheet.cssRules;
2112
+ }
2113
+ catch (err) {
2114
+ continue;
2115
+ }
2116
+ editableSheet = sheet;
2117
+ break;
2118
+ }
2119
+ return editableSheet != null ? editableSheet : createStyleSheet();
2120
+ }
2121
+ function createStyleSheet() {
2122
+ var style = document.createElement("style");
2123
+ document.head.appendChild(style);
2124
+ return style.sheet;
2125
+ }
2062
2126
  function redraw() {
2063
2127
  if (self.config.noCalendar || self.isMobile)
2064
2128
  return;
2129
+ buildMonthSwitch();
2065
2130
  updateNavigationCurrentMonth();
2066
2131
  buildDays();
2067
2132
  }
@@ -2085,7 +2150,7 @@
2085
2150
  !day.classList.contains("flatpickr-disabled") &&
2086
2151
  !day.classList.contains("notAllowed");
2087
2152
  };
2088
- var t = findParent(e.target, isSelectable);
2153
+ var t = findParent(getEventTarget(e), isSelectable);
2089
2154
  if (t === undefined)
2090
2155
  return;
2091
2156
  var target = t;
@@ -2128,8 +2193,6 @@
2128
2193
  updateNavigationCurrentMonth();
2129
2194
  buildDays();
2130
2195
  updateValue();
2131
- if (self.config.enableTime)
2132
- setTimeout(function () { return (self.showTimeInput = true); }, 50);
2133
2196
  // maintain focus
2134
2197
  if (!shouldChangeMonth &&
2135
2198
  self.config.mode !== "range" &&
@@ -2156,7 +2219,7 @@
2156
2219
  locale: [setupLocale, updateWeekdays],
2157
2220
  showMonths: [buildMonths, setCalendarWidth, buildWeekdays],
2158
2221
  minDate: [jumpToDate],
2159
- maxDate: [jumpToDate]
2222
+ maxDate: [jumpToDate],
2160
2223
  };
2161
2224
  function set(option, value) {
2162
2225
  if (option !== null && typeof option === "object") {
@@ -2174,7 +2237,7 @@
2174
2237
  self.config[option] = arrayify(value);
2175
2238
  }
2176
2239
  self.redraw();
2177
- updateValue(false);
2240
+ updateValue(true);
2178
2241
  }
2179
2242
  function setSelectedDate(inputDate, format) {
2180
2243
  var dates = [];
@@ -2198,13 +2261,13 @@
2198
2261
  .split(self.l10n.rangeSeparator)
2199
2262
  .map(function (date) { return self.parseDate(date, format); });
2200
2263
  break;
2201
- default:
2202
- break;
2203
2264
  }
2204
2265
  }
2205
2266
  else
2206
2267
  self.config.errorHandler(new Error("Invalid date supplied: " + JSON.stringify(inputDate)));
2207
- self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });
2268
+ self.selectedDates = (self.config.allowInvalidPreload
2269
+ ? dates
2270
+ : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));
2208
2271
  if (self.config.mode === "range")
2209
2272
  self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });
2210
2273
  }
@@ -2214,11 +2277,10 @@
2214
2277
  if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))
2215
2278
  return self.clear(triggerChange);
2216
2279
  setSelectedDate(date, format);
2217
- self.showTimeInput = self.selectedDates.length > 0;
2218
2280
  self.latestSelectedDateObj =
2219
2281
  self.selectedDates[self.selectedDates.length - 1];
2220
2282
  self.redraw();
2221
- jumpToDate();
2283
+ jumpToDate(undefined, triggerChange);
2222
2284
  setHoursFromDate();
2223
2285
  if (self.selectedDates.length === 0) {
2224
2286
  self.clear(false);
@@ -2242,7 +2304,7 @@
2242
2304
  rule.to)
2243
2305
  return {
2244
2306
  from: self.parseDate(rule.from, undefined),
2245
- to: self.parseDate(rule.to, undefined)
2307
+ to: self.parseDate(rule.to, undefined),
2246
2308
  };
2247
2309
  return rule;
2248
2310
  })
@@ -2289,20 +2351,9 @@
2289
2351
  (self.config.maxDate.getHours() > 0 ||
2290
2352
  self.config.maxDate.getMinutes() > 0 ||
2291
2353
  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
2354
  }
2302
2355
  function setupInputs() {
2303
- self.input = self.config.wrap
2304
- ? element.querySelector("[data-input]")
2305
- : element;
2356
+ self.input = getInputElem();
2306
2357
  /* istanbul ignore next */
2307
2358
  if (!self.input) {
2308
2359
  self.config.errorHandler(new Error("Invalid input element specified"));
@@ -2337,7 +2388,6 @@
2337
2388
  : "datetime-local"
2338
2389
  : "date";
2339
2390
  self.mobileInput = createElement("input", self.input.className + " flatpickr-mobile");
2340
- self.mobileInput.step = self.input.getAttribute("step") || "any";
2341
2391
  self.mobileInput.tabIndex = 1;
2342
2392
  self.mobileInput.type = inputType;
2343
2393
  self.mobileInput.disabled = self.input.disabled;
@@ -2356,6 +2406,8 @@
2356
2406
  self.mobileInput.min = self.formatDate(self.config.minDate, "Y-m-d");
2357
2407
  if (self.config.maxDate)
2358
2408
  self.mobileInput.max = self.formatDate(self.config.maxDate, "Y-m-d");
2409
+ if (self.input.getAttribute("step"))
2410
+ self.mobileInput.step = String(self.input.getAttribute("step"));
2359
2411
  self.input.type = "hidden";
2360
2412
  if (self.altInput !== undefined)
2361
2413
  self.altInput.type = "hidden";
@@ -2365,7 +2417,7 @@
2365
2417
  }
2366
2418
  catch (_a) { }
2367
2419
  bind(self.mobileInput, "change", function (e) {
2368
- self.setDate(e.target.value, false, self.mobileFormatStr);
2420
+ self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);
2369
2421
  triggerEvent("onChange");
2370
2422
  triggerEvent("onClose");
2371
2423
  });
@@ -2466,25 +2518,26 @@
2466
2518
  triggerEvent("onValueUpdate");
2467
2519
  }
2468
2520
  function onMonthNavClick(e) {
2469
- var isPrevMonth = self.prevMonthNav.contains(e.target);
2470
- var isNextMonth = self.nextMonthNav.contains(e.target);
2521
+ var eventTarget = getEventTarget(e);
2522
+ var isPrevMonth = self.prevMonthNav.contains(eventTarget);
2523
+ var isNextMonth = self.nextMonthNav.contains(eventTarget);
2471
2524
  if (isPrevMonth || isNextMonth) {
2472
2525
  changeMonth(isPrevMonth ? -1 : 1);
2473
2526
  }
2474
- else if (self.yearElements.indexOf(e.target) >= 0) {
2475
- e.target.select();
2527
+ else if (self.yearElements.indexOf(eventTarget) >= 0) {
2528
+ eventTarget.select();
2476
2529
  }
2477
- else if (e.target.classList.contains("arrowUp")) {
2530
+ else if (eventTarget.classList.contains("arrowUp")) {
2478
2531
  self.changeYear(self.currentYear + 1);
2479
2532
  }
2480
- else if (e.target.classList.contains("arrowDown")) {
2533
+ else if (eventTarget.classList.contains("arrowDown")) {
2481
2534
  self.changeYear(self.currentYear - 1);
2482
2535
  }
2483
2536
  }
2484
2537
  function timeWrapper(e) {
2485
2538
  e.preventDefault();
2486
- var isKeyDown = e.type === "keydown", input = e.target;
2487
- if (self.amPM !== undefined && e.target === self.amPM) {
2539
+ var isKeyDown = e.type === "keydown", eventTarget = getEventTarget(e), input = eventTarget;
2540
+ if (self.amPM !== undefined && eventTarget === self.amPM) {
2488
2541
  self.amPM.textContent =
2489
2542
  self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
2490
2543
  }
@@ -2575,13 +2628,13 @@
2575
2628
  flatpickr.defaultConfig = {};
2576
2629
  flatpickr.l10ns = {
2577
2630
  en: __assign({}, english),
2578
- "default": __assign({}, english)
2631
+ default: __assign({}, english),
2579
2632
  };
2580
2633
  flatpickr.localize = function (l10n) {
2581
- flatpickr.l10ns["default"] = __assign({}, flatpickr.l10ns["default"], l10n);
2634
+ flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);
2582
2635
  };
2583
2636
  flatpickr.setDefaults = function (config) {
2584
- flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);
2637
+ flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);
2585
2638
  };
2586
2639
  flatpickr.parseDate = createDateParser({});
2587
2640
  flatpickr.formatDate = createDateFormatter({});
@@ -2602,4 +2655,4 @@
2602
2655
 
2603
2656
  return flatpickr;
2604
2657
 
2605
- }));
2658
+ })));