flatpickr 4.6.3.1 → 4.6.6.0

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.
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
+ })));