timepicker 1.13.17 → 1.13.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright © 2021 Jon Thornton
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -55,7 +55,7 @@ Disable the onscreen keyboard for touch devices. There can be instances where Fi
55
55
  *default: false*
56
56
 
57
57
  - **durationTime**
58
- The time against which ```showDuration``` will compute relative times. If this is a function, its result will be used.
58
+ The time against which ```showDuration``` will compute relative times. Accepts a time string, Date object, integer seconds from midnight, or a function that returns one of those types.
59
59
  *default: minTime*
60
60
 
61
61
  - **forceRoundTime**
@@ -80,11 +80,11 @@ Set this to override CSS styling and set the list width to match the input eleme
80
80
  *default: null (CSS styling)*
81
81
 
82
82
  - **maxTime**
83
- The time that should appear last in the dropdown list. Can be used to limit the range of time options.
83
+ The time that should appear last in the dropdown list. Can be used to limit the range of time options. Accepts a time string, Date object, integer seconds from midnight, or a function that returns one of those types.
84
84
  *default: 24 hours after minTime*
85
85
 
86
86
  - **minTime**
87
- The time that should appear first in the dropdown list.
87
+ The time that should appear first in the dropdown list. Accepts a time string, Date object, integer seconds from midnight, or a function that returns one of those types.
88
88
  *default: 12:00am*
89
89
 
90
90
  - **noneOption**
@@ -104,7 +104,7 @@ Function used to compute rounded times. The function will receive time in second
104
104
  *default: round to nearest step*
105
105
 
106
106
  - **scrollDefault**
107
- If no time value is selected, set the dropdown scroll position to show the time provided, e.g. "09:00". A time string, Date object, or integer (seconds past midnight) is acceptible, as well as the string `'now'`.
107
+ If no time value is selected, set the dropdown scroll position to show the time provided, e.g. "09:00". Accepts a time string, Date object, integer seconds from midnight, or a function that returns one of those types.
108
108
  *default: null*
109
109
 
110
110
  - **selectOnBlur**
@@ -1,7 +1,7 @@
1
1
  .ui-timepicker-wrapper {
2
2
  overflow-y: auto;
3
3
  max-height: 150px;
4
- width: 6.5em;
4
+ width: auto;
5
5
  background: #fff;
6
6
  border: 1px solid #ddd;
7
7
  -webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);
@@ -12,13 +12,8 @@
12
12
  margin: 0;
13
13
  }
14
14
 
15
- .ui-timepicker-wrapper.ui-timepicker-with-duration {
16
- width: 13em;
17
- }
18
-
19
- .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,
20
- .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60 {
21
- width: 11em;
15
+ .ui-timepicker-wrapper .ui-timepicker-list li {
16
+ padding-right: 20px;
22
17
  }
23
18
 
24
19
  .ui-timepicker-list {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * jquery-timepicker v1.13.17 - A jQuery timepicker plugin inspired by Google Calendar. It supports both mouse and keyboard navigation.
2
+ * jquery-timepicker v1.13.19 - A jQuery timepicker plugin inspired by Google Calendar. It supports both mouse and keyboard navigation.
3
3
  * Copyright (c) 2021 Jon Thornton - https://www.jonthornton.com/jquery-timepicker/
4
4
  * License: MIT
5
5
  */
@@ -172,29 +172,26 @@
172
172
  var roundingFunction = function roundingFunction(seconds, settings) {
173
173
  if (seconds === null) {
174
174
  return null;
175
- } else if (typeof settings.step !== "number") {
176
- // TODO: nearest fit irregular steps
177
- return seconds;
178
- } else {
179
- var offset = seconds % (settings.step * 60); // step is in minutes
175
+ }
180
176
 
181
- var start = settings.minTime || 0; // adjust offset by start mod step so that the offset is aligned not to 00:00 but to the start
177
+ var i = 0;
178
+ var nextVal = 0;
182
179
 
183
- offset -= start % (settings.step * 60);
180
+ while (nextVal < seconds) {
181
+ i++;
182
+ nextVal += settings.step(i) * 60;
183
+ }
184
184
 
185
- if (offset >= settings.step * 30) {
186
- // if offset is larger than a half step, round up
187
- seconds += settings.step * 60 - offset;
188
- } else {
189
- // round down
190
- seconds -= offset;
191
- }
185
+ var prevVal = nextVal - settings.step(i - 1) * 60;
192
186
 
193
- return _moduloSeconds(seconds, settings);
187
+ if (seconds - prevVal < nextVal - seconds) {
188
+ return moduloSeconds(prevVal, settings);
189
+ } else {
190
+ return moduloSeconds(nextVal, settings);
194
191
  }
195
192
  };
196
193
 
197
- function _moduloSeconds(seconds, settings) {
194
+ function moduloSeconds(seconds, settings) {
198
195
  if (seconds == ONE_DAY && settings.show2400) {
199
196
  return seconds;
200
197
  }
@@ -326,7 +323,7 @@
326
323
  var settings = tp.settings;
327
324
 
328
325
  if (settings.useSelect && source != "select" && tp.list) {
329
- tp.list.val(tp._roundAndFormatTime(tp.time2int(value)));
326
+ tp.list.val(tp._roundAndFormatTime(tp.anytime2int(value)));
330
327
  }
331
328
  }
332
329
 
@@ -402,13 +399,30 @@
402
399
 
403
400
  return true;
404
401
  }
402
+ }, {
403
+ key: "anytime2int",
404
+ value: function anytime2int(input) {
405
+ if (typeof input === 'number') {
406
+ return input;
407
+ } else if (typeof input === 'string') {
408
+ return this.time2int(input);
409
+ } else if (_typeof(input) === 'object' && input instanceof Date) {
410
+ return input.getHours() * 3600 + input.getMinutes() * 60 + input.getSeconds();
411
+ } else if (typeof input == 'function') {
412
+ return input();
413
+ } else {
414
+ return null;
415
+ }
416
+ }
405
417
  }, {
406
418
  key: "time2int",
407
419
  value: function time2int(timeString) {
408
- if (timeString === "" || timeString === null || timeString === undefined) return null;
420
+ if (timeString === "" || timeString === null || timeString === undefined) {
421
+ return null;
422
+ }
409
423
 
410
- if (timeString instanceof Date) {
411
- return timeString.getHours() * 3600 + timeString.getMinutes() * 60 + timeString.getSeconds();
424
+ if (timeString === 'now') {
425
+ return this.anytime2int(new Date());
412
426
  }
413
427
 
414
428
  if (typeof timeString != "string") {
@@ -436,8 +450,7 @@
436
450
 
437
451
  var hour = parseInt(time[3] * 1, 10);
438
452
  var ampm = time[2] || time[9];
439
- var hours = hour;
440
- var minutes = time[5] * 1 || 0;
453
+ var minutes = this.parseMinuteString(time[5]);
441
454
  var seconds = time[7] * 1 || 0;
442
455
 
443
456
  if (!ampm && time[3].length == 2 && time[3][0] == "0") {
@@ -445,6 +458,14 @@
445
458
  ampm = "am";
446
459
  }
447
460
 
461
+ if (hour > 24 && !minutes) {
462
+ // if someone types in something like "83", turn it into "8h 30m"
463
+ hour = time[3][0] * 1;
464
+ minutes = this.parseMinuteString(time[3][1]);
465
+ }
466
+
467
+ var hours = hour;
468
+
448
469
  if (hour <= 12 && ampm) {
449
470
  ampm = ampm.trim();
450
471
  var isPm = ampm == this.settings.lang.pm || ampm == this.settings.lang.PM;
@@ -468,7 +489,7 @@
468
489
 
469
490
  var timeInt = hours * 3600 + minutes * 60 + seconds; // if no am/pm provided, intelligently guess based on the scrollDefault
470
491
 
471
- if (hour < 12 && !ampm && this.settings._twelveHourTime && this.settings.scrollDefault) {
492
+ if (hour < 12 && !ampm && this.settings._twelveHourTime && this.settings.scrollDefault()) {
472
493
  var delta = timeInt - this.settings.scrollDefault();
473
494
 
474
495
  if (delta < 0 && delta >= ONE_DAY / -2) {
@@ -479,45 +500,59 @@
479
500
  return timeInt;
480
501
  }
481
502
  }, {
482
- key: "parseSettings",
483
- value: function parseSettings(settings) {
503
+ key: "parseMinuteString",
504
+ value: function parseMinuteString(minutesString) {
505
+ if (!minutesString) {
506
+ minutesString = 0;
507
+ }
508
+
509
+ var multiplier = 1;
510
+
511
+ if (minutesString.length == 1) {
512
+ multiplier = 10;
513
+ }
514
+
515
+ return parseInt(minutesString) * multiplier || 0;
516
+ }
517
+ }, {
518
+ key: "intStringDateOrFunc2func",
519
+ value: function intStringDateOrFunc2func(input) {
484
520
  var _this = this;
485
521
 
522
+ if (input === null || input === undefined) {
523
+ return function () {
524
+ return null;
525
+ };
526
+ } else if (typeof input === 'function') {
527
+ return function () {
528
+ return _this.anytime2int(input());
529
+ };
530
+ } else {
531
+ return function () {
532
+ return _this.anytime2int(input);
533
+ };
534
+ }
535
+ }
536
+ }, {
537
+ key: "parseSettings",
538
+ value: function parseSettings(settings) {
486
539
  settings.lang = _objectSpread2(_objectSpread2({}, DEFAULT_LANG), settings.lang); // lang is used by other functions the rest of this depends on
487
540
  // todo: unwind circular dependency on lang
488
541
 
489
542
  this.settings = settings;
490
543
 
491
- if (settings.minTime) {
492
- settings.minTime = this.time2int(settings.minTime);
493
- }
494
-
495
- if (settings.maxTime) {
496
- settings.maxTime = this.time2int(settings.maxTime);
497
- }
498
-
499
544
  if (settings.listWidth) {
500
- settings.listWidth = this.time2int(settings.listWidth);
501
- }
502
-
503
- if (settings.durationTime && typeof settings.durationTime !== "function") {
504
- settings.durationTime = this.time2int(settings.durationTime);
545
+ settings.listWidth = this.anytime2int(settings.listWidth);
505
546
  }
506
547
 
507
- if (settings.scrollDefault == "now") {
508
- settings.scrollDefault = function () {
509
- return settings.roundingFunction(_this.time2int(new Date()), settings);
510
- };
511
- } else if (settings.scrollDefault && typeof settings.scrollDefault != "function") {
512
- var val = settings.scrollDefault;
548
+ settings.minTime = this.intStringDateOrFunc2func(settings.minTime);
549
+ settings.maxTime = this.intStringDateOrFunc2func(settings.maxTime);
550
+ settings.durationTime = this.intStringDateOrFunc2func(settings.durationTime);
513
551
 
514
- settings.scrollDefault = function () {
515
- return settings.roundingFunction(_this.time2int(val), settings);
516
- };
517
- } else if (settings.minTime) {
518
- settings.scrollDefault = function () {
519
- return settings.roundingFunction(settings.minTime, settings);
520
- };
552
+ if (settings.scrollDefault) {
553
+ settings.scrollDefault = this.intStringDateOrFunc2func(settings.scrollDefault);
554
+ } else {
555
+ settings.scrollDefault = settings.minTime;
521
556
  }
522
557
 
523
558
  if (typeof settings.timeFormat === "string" && settings.timeFormat.match(/[gh]/)) {
@@ -528,30 +563,42 @@
528
563
  settings.showOn.splice(settings.showOn.indexOf("focus"), 1);
529
564
  }
530
565
 
531
- if (!settings.disableTimeRanges) {
532
- settings.disableTimeRanges = [];
566
+ if (typeof settings.step != 'function') {
567
+ var curryStep = settings.step;
568
+
569
+ settings.step = function () {
570
+ return curryStep;
571
+ };
533
572
  }
534
573
 
535
- if (settings.disableTimeRanges.length > 0) {
536
- // convert string times to integers
537
- for (var i in settings.disableTimeRanges) {
538
- settings.disableTimeRanges[i] = [this.time2int(settings.disableTimeRanges[i][0]), this.time2int(settings.disableTimeRanges[i][1])];
539
- } // sort by starting time
574
+ settings.disableTimeRanges = this._parseDisableTimeRanges(settings.disableTimeRanges);
575
+ return settings;
576
+ }
577
+ }, {
578
+ key: "_parseDisableTimeRanges",
579
+ value: function _parseDisableTimeRanges(disableTimeRanges) {
580
+ if (!disableTimeRanges || disableTimeRanges.length == 0) {
581
+ return [];
582
+ } // convert string times to integers
540
583
 
541
584
 
542
- settings.disableTimeRanges = settings.disableTimeRanges.sort(function (a, b) {
543
- return a[0] - b[0];
544
- }); // merge any overlapping ranges
585
+ for (var i in disableTimeRanges) {
586
+ disableTimeRanges[i] = [this.anytime2int(disableTimeRanges[i][0]), this.anytime2int(disableTimeRanges[i][1])];
587
+ } // sort by starting time
545
588
 
546
- for (var i = settings.disableTimeRanges.length - 1; i > 0; i--) {
547
- if (settings.disableTimeRanges[i][0] <= settings.disableTimeRanges[i - 1][1]) {
548
- settings.disableTimeRanges[i - 1] = [Math.min(settings.disableTimeRanges[i][0], settings.disableTimeRanges[i - 1][0]), Math.max(settings.disableTimeRanges[i][1], settings.disableTimeRanges[i - 1][1])];
549
- settings.disableTimeRanges.splice(i, 1);
550
- }
589
+
590
+ disableTimeRanges = disableTimeRanges.sort(function (a, b) {
591
+ return a[0] - b[0];
592
+ }); // merge any overlapping ranges
593
+
594
+ for (var i = disableTimeRanges.length - 1; i > 0; i--) {
595
+ if (disableTimeRanges[i][0] <= disableTimeRanges[i - 1][1]) {
596
+ disableTimeRanges[i - 1] = [Math.min(disableTimeRanges[i][0], disableTimeRanges[i - 1][0]), Math.max(disableTimeRanges[i][1], disableTimeRanges[i - 1][1])];
597
+ disableTimeRanges.splice(i, 1);
551
598
  }
552
599
  }
553
600
 
554
- return settings;
601
+ return disableTimeRanges;
555
602
  }
556
603
  /*
557
604
  * Filter freeform input
@@ -606,6 +653,7 @@
606
653
  }, {
607
654
  key: "_roundAndFormatTime",
608
655
  value: function _roundAndFormatTime(seconds) {
656
+ // console.log('_roundAndFormatTime')
609
657
  seconds = this.settings.roundingFunction(seconds, this.settings);
610
658
 
611
659
  if (seconds !== null) {
@@ -702,7 +750,7 @@
702
750
  value: function _setSelected() {
703
751
  var list = this.list;
704
752
  list.find("li").removeClass("ui-timepicker-selected");
705
- var timeValue = this.time2int(this._getTimeValue());
753
+ var timeValue = this.anytime2int(this._getTimeValue());
706
754
 
707
755
  if (timeValue === null) {
708
756
  return;
@@ -756,7 +804,7 @@
756
804
  }
757
805
 
758
806
  var settings = this.settings;
759
- var seconds = this.time2int(this.targetEl.value);
807
+ var seconds = this.anytime2int(this.targetEl.value);
760
808
 
761
809
  if (seconds === null) {
762
810
  var timeFormatErrorEvent = new CustomEvent('timeFormatError', EVENT_DEFAULTS);
@@ -766,7 +814,7 @@
766
814
 
767
815
  var rangeError = false; // check that the time in within bounds
768
816
 
769
- if (settings.minTime !== null && settings.maxTime !== null && (seconds < settings.minTime || seconds > settings.maxTime)) {
817
+ if (settings.minTime !== null && settings.maxTime !== null && (seconds < settings.minTime() || seconds > settings.maxTime())) {
770
818
  rangeError = true;
771
819
  } // check that time isn't within disabled time ranges
772
820
 
@@ -983,6 +1031,241 @@
983
1031
  window.CustomEvent = CustomEvent;
984
1032
  })();
985
1033
 
1034
+ function _getNoneOptionItems(settings) {
1035
+ if (!settings.noneOption) {
1036
+ return [];
1037
+ }
1038
+
1039
+ var noneOptions = _getNoneOptionItemsHelper(settings.noneOption);
1040
+
1041
+ if (Array.isArray(settings.noneOption)) {
1042
+ return noneOptions;
1043
+ } else {
1044
+ return [noneOptions];
1045
+ }
1046
+ }
1047
+
1048
+ function _getNoneOptionItemsHelper(noneOption) {
1049
+ if (Array.isArray(noneOption)) {
1050
+ return noneOption.map(_getNoneOptionItemsHelper);
1051
+ }
1052
+
1053
+ if (noneOption === true) {
1054
+ return {
1055
+ 'label': 'None',
1056
+ 'value': ''
1057
+ };
1058
+ }
1059
+
1060
+ if (_typeof(noneOption) === 'object') {
1061
+ return noneOption;
1062
+ }
1063
+
1064
+ return {
1065
+ 'label': noneOption,
1066
+ 'value': ''
1067
+ };
1068
+ }
1069
+
1070
+ function _getDropdownTimes(tp) {
1071
+ var _settings$minTime, _settings$maxTime;
1072
+
1073
+ var settings = tp.settings;
1074
+ var start = (_settings$minTime = settings.minTime()) !== null && _settings$minTime !== void 0 ? _settings$minTime : 0;
1075
+ var end = (_settings$maxTime = settings.maxTime()) !== null && _settings$maxTime !== void 0 ? _settings$maxTime : start + ONE_DAY - 1;
1076
+
1077
+ if (end < start) {
1078
+ // make sure the end time is greater than start time, otherwise there will be no list to show
1079
+ end += ONE_DAY;
1080
+ }
1081
+
1082
+ if (end === ONE_DAY - 1 && typeof settings.timeFormat === 'string' && settings.show2400) {
1083
+ // show a 24:00 option when using military time
1084
+ end = ONE_DAY;
1085
+ }
1086
+
1087
+ var output = [];
1088
+
1089
+ for (var i = start, j = 0; i <= end; j++, i += settings.step(j) * 60) {
1090
+ var timeInt = i;
1091
+
1092
+ var timeString = tp._int2time(timeInt);
1093
+
1094
+ var className = timeInt % ONE_DAY < ONE_DAY / 2 ? 'ui-timepicker-am' : 'ui-timepicker-pm';
1095
+ var item = {
1096
+ 'label': timeString,
1097
+ 'value': moduloSeconds(timeInt, settings),
1098
+ 'className': className
1099
+ };
1100
+
1101
+ if ((settings.minTime() !== null || settings.durationTime() !== null) && settings.showDuration) {
1102
+ var _settings$durationTim;
1103
+
1104
+ var durStart = (_settings$durationTim = settings.durationTime()) !== null && _settings$durationTim !== void 0 ? _settings$durationTim : settings.minTime();
1105
+
1106
+ var durationString = tp._int2duration(i - durStart, settings.step());
1107
+
1108
+ item.duration = durationString;
1109
+ }
1110
+
1111
+ var _iterator = _createForOfIteratorHelper(settings.disableTimeRanges),
1112
+ _step;
1113
+
1114
+ try {
1115
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
1116
+ var range = _step.value;
1117
+
1118
+ if (timeInt % ONE_DAY >= range[0] && timeInt % ONE_DAY < range[1]) {
1119
+ item.disabled = true;
1120
+ break;
1121
+ }
1122
+ }
1123
+ } catch (err) {
1124
+ _iterator.e(err);
1125
+ } finally {
1126
+ _iterator.f();
1127
+ }
1128
+
1129
+ output.push(item);
1130
+ }
1131
+
1132
+ return output;
1133
+ }
1134
+
1135
+ function _renderSelectItem(item) {
1136
+ var el = document.createElement('option');
1137
+ el.value = item.label;
1138
+
1139
+ if (item.duration) {
1140
+ el.appendChild(document.createTextNode(item.label + ' (' + item.duration + ')'));
1141
+ } else {
1142
+ el.appendChild(document.createTextNode(item.label));
1143
+ }
1144
+
1145
+ if (item.disabled) {
1146
+ el.disabled = true;
1147
+ }
1148
+
1149
+ return el;
1150
+ }
1151
+
1152
+ function _renderStandardItem(item) {
1153
+ var el = document.createElement('li');
1154
+ el.dataset['time'] = item.value;
1155
+
1156
+ if (item.className) {
1157
+ el.classList.add(item.className);
1158
+ }
1159
+
1160
+ el.className = item.className;
1161
+ el.appendChild(document.createTextNode(item.label));
1162
+
1163
+ if (item.duration) {
1164
+ var durationEl = document.createElement('span');
1165
+ durationEl.appendChild(document.createTextNode('(' + item.duration + ')'));
1166
+ durationEl.classList.add('ui-timepicker-duration');
1167
+ el.appendChild(durationEl);
1168
+ }
1169
+
1170
+ if (item.disabled) {
1171
+ el.classList.add('ui-timepicker-disabled');
1172
+ }
1173
+
1174
+ return el;
1175
+ }
1176
+
1177
+ function _renderStandardList(items) {
1178
+ var list = document.createElement('ul');
1179
+ list.classList.add('ui-timepicker-list');
1180
+
1181
+ var _iterator2 = _createForOfIteratorHelper(items),
1182
+ _step2;
1183
+
1184
+ try {
1185
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1186
+ var item = _step2.value;
1187
+
1188
+ var itemEl = _renderStandardItem(item);
1189
+
1190
+ list.appendChild(itemEl);
1191
+ }
1192
+ } catch (err) {
1193
+ _iterator2.e(err);
1194
+ } finally {
1195
+ _iterator2.f();
1196
+ }
1197
+
1198
+ var wrapper = document.createElement('div');
1199
+ wrapper.classList.add('ui-timepicker-wrapper');
1200
+ wrapper.tabIndex = -1;
1201
+ wrapper.style.display = 'none';
1202
+ wrapper.style.position = 'absolute';
1203
+ wrapper.appendChild(list);
1204
+ return wrapper;
1205
+ }
1206
+
1207
+ function _renderSelectList(items, targetName) {
1208
+ var el = document.createElement('select');
1209
+ el.classList.add('ui-timepicker-select');
1210
+
1211
+ if (targetName) {
1212
+ el.name = 'ui-timepicker-' + targetName;
1213
+ }
1214
+
1215
+ var _iterator3 = _createForOfIteratorHelper(items),
1216
+ _step3;
1217
+
1218
+ try {
1219
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1220
+ var item = _step3.value;
1221
+
1222
+ var itemEl = _renderSelectItem(item);
1223
+
1224
+ el.appendChild(itemEl);
1225
+ }
1226
+ } catch (err) {
1227
+ _iterator3.e(err);
1228
+ } finally {
1229
+ _iterator3.f();
1230
+ }
1231
+
1232
+ return el;
1233
+ }
1234
+
1235
+ function renderHtml(tp) {
1236
+ var items = [].concat(_getNoneOptionItems(tp.settings), _getDropdownTimes(tp));
1237
+ var el;
1238
+
1239
+ if (tp.settings.useSelect) {
1240
+ el = _renderSelectList(items, tp.targetEl.name);
1241
+ } else {
1242
+ el = _renderStandardList(items);
1243
+ }
1244
+
1245
+ if (tp.settings.className) {
1246
+ var _iterator4 = _createForOfIteratorHelper(tp.settings.className.split(' ')),
1247
+ _step4;
1248
+
1249
+ try {
1250
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
1251
+ var token = _step4.value;
1252
+ el.classList.add(token);
1253
+ }
1254
+ } catch (err) {
1255
+ _iterator4.e(err);
1256
+ } finally {
1257
+ _iterator4.f();
1258
+ }
1259
+ }
1260
+
1261
+ if (tp.settings.showDuration && (tp.settings.minTime !== null || tp.settings.durationTime !== null)) {
1262
+ el.classList.add("ui-timepicker-with-duration");
1263
+ el.classList.add("ui-timepicker-step-" + tp.settings.step());
1264
+ }
1265
+
1266
+ return el;
1267
+ }
1268
+
986
1269
  (function (factory) {
987
1270
  if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && exports && (typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" && module && module.exports === exports) {
988
1271
  // Browserify. Attach to jQuery module.
@@ -1057,11 +1340,9 @@
1057
1340
  } // check if list needs to be rendered
1058
1341
 
1059
1342
 
1060
- if (!list || list.length === 0 || typeof settings.durationTime === "function") {
1061
- _render(self);
1343
+ _render(self);
1062
1344
 
1063
- list = tp.list;
1064
- }
1345
+ list = tp.list;
1065
1346
 
1066
1347
  if (Timepicker.isVisible(list)) {
1067
1348
  return;
@@ -1122,11 +1403,11 @@
1122
1403
  var selected = list.find(".ui-timepicker-selected");
1123
1404
 
1124
1405
  if (!selected.length) {
1125
- var timeInt = tp.time2int(tp._getTimeValue());
1406
+ var timeInt = tp.anytime2int(tp._getTimeValue());
1126
1407
 
1127
1408
  if (timeInt !== null) {
1128
1409
  selected = $(tp._findRow(timeInt));
1129
- } else if (settings.scrollDefault) {
1410
+ } else if (settings.scrollDefault()) {
1130
1411
  selected = $(tp._findRow(settings.scrollDefault()));
1131
1412
  }
1132
1413
  } // if not found or disabled, intelligently find first selectable element
@@ -1210,7 +1491,7 @@
1210
1491
  },
1211
1492
  getSecondsFromMidnight: function getSecondsFromMidnight() {
1212
1493
  var tp = this[0].timepickerObj;
1213
- return tp.time2int(tp._getTimeValue());
1494
+ return tp.anytime2int(tp._getTimeValue());
1214
1495
  },
1215
1496
  getTime: function getTime(relative_date) {
1216
1497
  var tp = this[0].timepickerObj;
@@ -1221,7 +1502,7 @@
1221
1502
  return null;
1222
1503
  }
1223
1504
 
1224
- var offset = tp.time2int(time_string);
1505
+ var offset = tp.anytime2int(time_string);
1225
1506
 
1226
1507
  if (offset === null) {
1227
1508
  return null;
@@ -1248,9 +1529,9 @@
1248
1529
  var settings = tp.settings;
1249
1530
 
1250
1531
  if (settings.forceRoundTime) {
1251
- var prettyTime = tp._roundAndFormatTime(tp.time2int(value));
1532
+ var prettyTime = tp._roundAndFormatTime(tp.anytime2int(value));
1252
1533
  } else {
1253
- var prettyTime = tp._int2time(tp.time2int(value));
1534
+ var prettyTime = tp._int2time(tp.anytime2int(value));
1254
1535
  }
1255
1536
 
1256
1537
  if (value && prettyTime === null && settings.noneOption) {
@@ -1306,138 +1587,12 @@
1306
1587
  tp.list = null;
1307
1588
  }
1308
1589
 
1309
- if (settings.useSelect) {
1310
- list = $("<select></select>", {
1311
- "class": "ui-timepicker-select"
1312
- });
1313
-
1314
- if (self.attr("name")) {
1315
- list.attr("name", "ui-timepicker-" + self.attr("name"));
1316
- }
1590
+ var wrapped_list = $(renderHtml(tp));
1317
1591
 
1318
- var wrapped_list = list;
1592
+ if (settings.useSelect) {
1593
+ list = wrapped_list;
1319
1594
  } else {
1320
- list = $("<ul></ul>", {
1321
- "class": "ui-timepicker-list"
1322
- });
1323
- var wrapped_list = $("<div></div>", {
1324
- "class": "ui-timepicker-wrapper",
1325
- tabindex: -1
1326
- });
1327
- wrapped_list.css({
1328
- display: "none",
1329
- position: "absolute"
1330
- }).append(list);
1331
- }
1332
-
1333
- if (settings.noneOption) {
1334
- if (settings.noneOption === true) {
1335
- settings.noneOption = settings.useSelect ? "Time..." : "None";
1336
- }
1337
-
1338
- if ($.isArray(settings.noneOption)) {
1339
- for (var i in settings.noneOption) {
1340
- if (parseInt(i, 10) == i) {
1341
- var noneElement = tp._generateNoneElement(settings.noneOption[i], settings.useSelect);
1342
-
1343
- list.append(noneElement);
1344
- }
1345
- }
1346
- } else {
1347
- var noneElement = tp._generateNoneElement(settings.noneOption, settings.useSelect);
1348
-
1349
- list.append(noneElement);
1350
- }
1351
- }
1352
-
1353
- if (settings.className) {
1354
- wrapped_list.addClass(settings.className);
1355
- }
1356
-
1357
- if ((settings.minTime !== null || settings.durationTime !== null) && settings.showDuration) {
1358
- typeof settings.step == "function" ? "function" : settings.step;
1359
- wrapped_list.addClass("ui-timepicker-with-duration");
1360
- wrapped_list.addClass("ui-timepicker-step-" + settings.step);
1361
- }
1362
-
1363
- var durStart = settings.minTime;
1364
-
1365
- if (typeof settings.durationTime === "function") {
1366
- durStart = tp.time2int(settings.durationTime());
1367
- } else if (settings.durationTime !== null) {
1368
- durStart = settings.durationTime;
1369
- }
1370
-
1371
- var start = settings.minTime !== null ? settings.minTime : 0;
1372
- var end = settings.maxTime !== null ? settings.maxTime : start + ONE_DAY - 1;
1373
-
1374
- if (end < start) {
1375
- // make sure the end time is greater than start time, otherwise there will be no list to show
1376
- end += ONE_DAY;
1377
- }
1378
-
1379
- if (end === ONE_DAY - 1 && $.type(settings.timeFormat) === "string" && settings.show2400) {
1380
- // show a 24:00 option when using military time
1381
- end = ONE_DAY;
1382
- }
1383
-
1384
- var dr = settings.disableTimeRanges;
1385
- var drCur = 0;
1386
- var drLen = dr.length;
1387
- var stepFunc = settings.step;
1388
-
1389
- if (typeof stepFunc != "function") {
1390
- stepFunc = function stepFunc() {
1391
- return settings.step;
1392
- };
1393
- }
1394
-
1395
- for (var i = start, j = 0; i <= end; j++, i += stepFunc(j) * 60) {
1396
- var timeInt = i;
1397
-
1398
- var timeString = tp._int2time(timeInt);
1399
-
1400
- if (settings.useSelect) {
1401
- var row = $("<option></option>", {
1402
- value: timeString
1403
- });
1404
- row.text(timeString);
1405
- } else {
1406
- var row = $("<li></li>");
1407
- row.addClass(timeInt % ONE_DAY < ONE_DAY / 2 ? "ui-timepicker-am" : "ui-timepicker-pm");
1408
- row.attr("data-time", roundingFunction(timeInt, settings));
1409
- row.text(timeString);
1410
- }
1411
-
1412
- if ((settings.minTime !== null || settings.durationTime !== null) && settings.showDuration) {
1413
- var durationString = tp._int2duration(i - durStart, settings.step);
1414
-
1415
- if (settings.useSelect) {
1416
- row.text(row.text() + " (" + durationString + ")");
1417
- } else {
1418
- var duration = $("<span></span>", {
1419
- "class": "ui-timepicker-duration"
1420
- });
1421
- duration.text(" (" + durationString + ")");
1422
- row.append(duration);
1423
- }
1424
- }
1425
-
1426
- if (drCur < drLen) {
1427
- if (timeInt >= dr[drCur][1]) {
1428
- drCur += 1;
1429
- }
1430
-
1431
- if (dr[drCur] && timeInt >= dr[drCur][0] && timeInt < dr[drCur][1]) {
1432
- if (settings.useSelect) {
1433
- row.prop("disabled", true);
1434
- } else {
1435
- row.addClass("ui-timepicker-disabled");
1436
- }
1437
- }
1438
- }
1439
-
1440
- list.append(row);
1595
+ list = wrapped_list.children('ul');
1441
1596
  }
1442
1597
 
1443
1598
  wrapped_list.data("timepicker-input", self);
@@ -1445,7 +1600,7 @@
1445
1600
 
1446
1601
  if (settings.useSelect) {
1447
1602
  if (self.val()) {
1448
- list.val(tp._roundAndFormatTime(tp.time2int(self.val())));
1603
+ list.val(tp._roundAndFormatTime(tp.anytime2int(self.val())));
1449
1604
  }
1450
1605
 
1451
1606
  list.on("focus", function () {
@@ -1518,8 +1673,8 @@
1518
1673
  }
1519
1674
 
1520
1675
  Timepicker.hideAll();
1521
- $(document).unbind(".ui-timepicker");
1522
- $(window).unbind(".ui-timepicker");
1676
+ $(document).off(".ui-timepicker");
1677
+ $(window).off(".ui-timepicker");
1523
1678
  }
1524
1679
  /*
1525
1680
  * Keyboard navigation via arrow keys
@@ -1,7 +1,7 @@
1
1
  .ui-timepicker-wrapper {
2
2
  overflow-y: auto;
3
3
  max-height: 150px;
4
- width: 6.5em;
4
+ width: auto;
5
5
  background: #fff;
6
6
  border: 1px solid #ddd;
7
7
  -webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);
@@ -12,13 +12,8 @@
12
12
  margin: 0;
13
13
  }
14
14
 
15
- .ui-timepicker-wrapper.ui-timepicker-with-duration {
16
- width: 13em;
17
- }
18
-
19
- .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,
20
- .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60 {
21
- width: 11em;
15
+ .ui-timepicker-wrapper .ui-timepicker-list li {
16
+ padding-right: 20px;
22
17
  }
23
18
 
24
19
  .ui-timepicker-list {
@@ -1 +1 @@
1
- !function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?s(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):s(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function o(e,t){var i;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return a(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,s=function(){};return{s:s,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return o=e.done,e},e:function(e){l=!0,r=e},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}var l=86400,u=function(e,t){if(null===e)return null;if("number"!=typeof t.step)return e;var i=e%(60*t.step);return(i-=(t.minTime||0)%(60*t.step))>=30*t.step?e+=60*t.step-i:e-=i,function(e,t){if(e==l&&t.show2400)return e;return e%l}(e,t)};var c,m={appendTo:"body",className:null,closeOnWindowScroll:!1,disableTextInput:!1,disableTimeRanges:[],disableTouchKeyboard:!1,durationTime:null,forceRoundTime:!1,lang:{},listWidth:null,maxTime:null,minTime:null,noneOption:!1,orientation:"l",roundingFunction:u,scrollDefault:null,selectOnBlur:!1,show2400:!1,showDuration:!1,showOn:["click","focus"],showOnFocus:!0,step:30,stopScrollPropagation:!1,timeFormat:"g:ia",typeaheadHighlight:!0,useSelect:!1,wrapHours:!0},p={am:"am",pm:"pm",AM:"AM",PM:"PM",decimal:".",mins:"mins",hr:"hr",hrs:"hrs"},f={bubbles:!0,cancelable:!1,detail:null},d=function(){function n(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,n),this._handleFormatValue=this._handleFormatValue.bind(this),this._handleKeyUp=this._handleKeyUp.bind(this),this.targetEl=e;var s=n.extractAttrOptions(e,Object.keys(m));this.settings=this.parseSettings(r(r(r({},m),i),s))}var s,a,u;return s=n,u=[{key:"extractAttrOptions",value:function(e,t){var i,n={},s=o(t);try{for(s.s();!(i=s.n()).done;){var r=i.value;r in e.dataset&&(n[r]=e.dataset[r])}}catch(e){s.e(e)}finally{s.f()}return n}},{key:"isVisible",value:function(e){var t=e[0];return t.offsetWidth>0&&t.offsetHeight>0}},{key:"hideAll",value:function(){var e,t=o(document.getElementsByClassName("ui-timepicker-input"));try{for(t.s();!(e=t.n()).done;){var i=e.value.timepickerObj;i&&i.hideMe()}}catch(e){t.e(e)}finally{t.f()}}}],(a=[{key:"hideMe",value:function(){if(this.settings.useSelect)this.targetEl.blur();else if(this.list&&n.isVisible(this.list)){this.settings.selectOnBlur&&this._selectValue(),this.list.hide();var e=new CustomEvent("hideTimepicker",f);this.targetEl.dispatchEvent(e)}}},{key:"_findRow",value:function(e){if(!e&&0!==e)return!1;var t=!1;return e=this.settings.roundingFunction(e,this.settings),!!this.list&&(this.list.find("li").each((function(i,n){var s=parseInt(n.dataset.time);if(!isNaN(s))return s==e?(t=n,!1):void 0})),t)}},{key:"_hideKeyboard",value:function(){return(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.settings.disableTouchKeyboard}},{key:"_setTimeValue",value:function(e,t){if("INPUT"===this.targetEl.nodeName){null===e&&""==this.targetEl.value||(this.targetEl.value=e);var i=this;i.settings.useSelect&&"select"!=t&&i.list&&i.list.val(i._roundAndFormatTime(i.time2int(e)))}var n=new CustomEvent("selectTime",f);if(this.selectedValue!=e){this.selectedValue=e;var s=new CustomEvent("changeTime",f),r=new CustomEvent("change",Object.assign(f,{detail:"timepicker"}));return"select"==t?(this.targetEl.dispatchEvent(n),this.targetEl.dispatchEvent(s),this.targetEl.dispatchEvent(r)):-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(s),!0}return-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(n),!1}},{key:"_getTimeValue",value:function(){return"INPUT"===this.targetEl.nodeName?this.targetEl.value:this.selectedValue}},{key:"_selectValue",value:function(){var e=this;e.settings;var t=e.list.find(".ui-timepicker-selected");if(t.hasClass("ui-timepicker-disabled"))return!1;if(!t.length)return!0;var i=t.get(0).dataset.time;if(i){var n=parseInt(i);isNaN(n)||(i=n)}return null!==i&&("string"!=typeof i&&(i=e._int2time(i)),e._setTimeValue(i,"select")),!0}},{key:"time2int",value:function(e){if(""===e||null==e)return null;if(e instanceof Date)return 3600*e.getHours()+60*e.getMinutes()+e.getSeconds();if("string"!=typeof e)return e;"a"!=(e=e.toLowerCase().replace(/[\s\.]/g,"")).slice(-1)&&"p"!=e.slice(-1)||(e+="m");var t=/^(([^0-9]*))?([0-9]?[0-9])(([0-5][0-9]))?(([0-5][0-9]))?(([^0-9]*))$/;e.match(/\W/)&&(t=/^(([^0-9]*))?([0-9]?[0-9])(\W+([0-5][0-9]?))?(\W+([0-5][0-9]))?(([^0-9]*))$/);var i=e.match(t);if(!i)return null;var n=parseInt(1*i[3],10),s=i[2]||i[9],r=n,a=1*i[5]||0,o=1*i[7]||0;if(s||2!=i[3].length||"0"!=i[3][0]||(s="am"),n<=12&&s){var u=(s=s.trim())==this.settings.lang.pm||s==this.settings.lang.PM;r=12==n?u?12:0:n+(u?12:0)}else if(3600*n+60*a+o>=l+(this.settings.show2400?1:0)){if(!1===this.settings.wrapHours)return null;r=n%24}var c=3600*r+60*a+o;if(n<12&&!s&&this.settings._twelveHourTime&&this.settings.scrollDefault){var m=c-this.settings.scrollDefault();m<0&&m>=-43200&&(c=(c+43200)%l)}return c}},{key:"parseSettings",value:function(e){var t=this;if(e.lang=r(r({},p),e.lang),this.settings=e,e.minTime&&(e.minTime=this.time2int(e.minTime)),e.maxTime&&(e.maxTime=this.time2int(e.maxTime)),e.listWidth&&(e.listWidth=this.time2int(e.listWidth)),e.durationTime&&"function"!=typeof e.durationTime&&(e.durationTime=this.time2int(e.durationTime)),"now"==e.scrollDefault)e.scrollDefault=function(){return e.roundingFunction(t.time2int(new Date),e)};else if(e.scrollDefault&&"function"!=typeof e.scrollDefault){var i=e.scrollDefault;e.scrollDefault=function(){return e.roundingFunction(t.time2int(i),e)}}else e.minTime&&(e.scrollDefault=function(){return e.roundingFunction(e.minTime,e)});if("string"==typeof e.timeFormat&&e.timeFormat.match(/[gh]/)&&(e._twelveHourTime=!0),!1===e.showOnFocus&&-1!=e.showOn.indexOf("focus")&&e.showOn.splice(e.showOn.indexOf("focus"),1),e.disableTimeRanges||(e.disableTimeRanges=[]),e.disableTimeRanges.length>0){for(var n in e.disableTimeRanges)e.disableTimeRanges[n]=[this.time2int(e.disableTimeRanges[n][0]),this.time2int(e.disableTimeRanges[n][1])];for(e.disableTimeRanges=e.disableTimeRanges.sort((function(e,t){return e[0]-t[0]})),n=e.disableTimeRanges.length-1;n>0;n--)e.disableTimeRanges[n][0]<=e.disableTimeRanges[n-1][1]&&(e.disableTimeRanges[n-1]=[Math.min(e.disableTimeRanges[n][0],e.disableTimeRanges[n-1][0]),Math.max(e.disableTimeRanges[n][1],e.disableTimeRanges[n-1][1])],e.disableTimeRanges.splice(n,1))}return e}},{key:"_disableTextInputHandler",value:function(e){switch(e.keyCode){case 13:case 9:return;default:e.preventDefault()}}},{key:"_int2duration",value:function(e,t){e=Math.abs(e);var i,n,s=Math.round(e/60),r=[];return s<60?r=[s,this.settings.lang.mins]:(i=Math.floor(s/60),n=s%60,30==t&&30==n&&(i+=this.settings.lang.decimal+5),r.push(i),r.push(1==i?this.settings.lang.hr:this.settings.lang.hrs),30!=t&&n&&(r.push(n),r.push(this.settings.lang.mins))),r.join(" ")}},{key:"_roundAndFormatTime",value:function(e){if(null!==(e=this.settings.roundingFunction(e,this.settings)))return this._int2time(e)}},{key:"_int2time",value:function(e){if("number"!=typeof e)return null;var t=parseInt(e%60),i=parseInt(e/60%60),n=parseInt(e/3600%24),s=new Date(1970,0,2,n,i,t,0);if(isNaN(s.getTime()))return null;if("function"==typeof this.settings.timeFormat)return this.settings.timeFormat(s);for(var r,a,o="",u=0;u<this.settings.timeFormat.length;u++)switch(a=this.settings.timeFormat.charAt(u)){case"a":o+=s.getHours()>11?this.settings.lang.pm:this.settings.lang.am;break;case"A":o+=s.getHours()>11?this.settings.lang.PM:this.settings.lang.AM;break;case"g":o+=0==(r=s.getHours()%12)?"12":r;break;case"G":r=s.getHours(),e===l&&(r=this.settings.show2400?24:0),o+=r;break;case"h":0!=(r=s.getHours()%12)&&r<10&&(r="0"+r),o+=0===r?"12":r;break;case"H":r=s.getHours(),e===l&&(r=this.settings.show2400?24:0),o+=r>9?r:"0"+r;break;case"i":o+=(i=s.getMinutes())>9?i:"0"+i;break;case"s":o+=(t=s.getSeconds())>9?t:"0"+t;break;case"\\":u++,o+=this.settings.timeFormat.charAt(u);break;default:o+=a}return o}},{key:"_setSelected",value:function(){var e=this.list;e.find("li").removeClass("ui-timepicker-selected");var t=this.time2int(this._getTimeValue());if(null!==t){var i=this._findRow(t);if(i){var n=i.getBoundingClientRect(),s=e.get(0).getBoundingClientRect(),r=n.top-s.top;if(r+n.height>s.height||r<0){var a=e.scrollTop()+(n.top-s.top)-n.height;e.scrollTop(a)}var o=parseInt(i.dataset.time);(this.settings.forceRoundTime||o===t)&&i.classList.add("ui-timepicker-selected")}}}},{key:"_isFocused",value:function(e){return e===document.activeElement}},{key:"_handleFormatValue",value:function(e){e&&"timepicker"==e.detail||this._formatValue(e)}},{key:"_formatValue",value:function(e,t){if(""!==this.targetEl.value){if(!this._isFocused(this.targetEl)||e&&"change"==e.type){var i=this.settings,n=this.time2int(this.targetEl.value);if(null!==n){var s=!1;null!==i.minTime&&null!==i.maxTime&&(n<i.minTime||n>i.maxTime)&&(s=!0);var r,a=o(i.disableTimeRanges);try{for(a.s();!(r=a.n()).done;){var l=r.value;if(n>=l[0]&&n<l[1]){s=!0;break}}}catch(e){a.e(e)}finally{a.f()}if(i.forceRoundTime){var u=i.roundingFunction(n,i);u!=n&&(n=u,t=null)}var c=this._int2time(n);if(s){this._setTimeValue(c);var m=new CustomEvent("timeRangeError",f);this.targetEl.dispatchEvent(m)}else this._setTimeValue(c,t)}else{var p=new CustomEvent("timeFormatError",f);this.targetEl.dispatchEvent(p)}}}else this._setTimeValue(null,t)}},{key:"_generateNoneElement",value:function(t,i){var n,s,r,a;return"object"==e(t)?(n=t.label,s=t.className,r=t.value):"string"==typeof t?(n=t,r=""):$.error("Invalid noneOption value"),i?(a=document.createElement("option")).value=r:(a=document.createElement("li")).dataset.time=String(r),a.innerText=n,a.classList.add(s),a}},{key:"_handleKeyUp",value:function(e){var t=this;if(!this.list||!n.isVisible(this.list)||this.settings.disableTextInput)return!0;if("paste"!==e.type&&"cut"!==e.type)switch(e.keyCode){case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 65:case 77:case 80:case 186:case 8:case 46:this.settings.typeaheadHighlight?this._setSelected():this.list.hide()}else setTimeout((function(){t.settings.typeaheadHighlight?t._setSelected():t.list.hide()}),0)}}])&&i(s.prototype,a),u&&i(s,u),n}();!function(){if("function"==typeof window.CustomEvent)return!1;window.CustomEvent=function(e,t){t||(t={}),t=Object.assign(f,t);var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}}(),c=function(t){var i={init:function(e){return this.each((function(){var s=t(this),a=new d(this,e),o=a.settings;if(o.lang,this.timepickerObj=a,s.addClass("ui-timepicker-input"),o.useSelect)n(s);else{if(s.prop("autocomplete","off"),o.showOn)for(var l in o.showOn)s.on(o.showOn[l]+".timepicker",i.show);s.on("change.timepicker",a._handleFormatValue),s.on("keydown.timepicker",r),s.on("keyup.timepicker",a._handleKeyUp),o.disableTextInput&&s.on("keydown.timepicker",a._disableTextInputHandler),s.on("cut.timepicker",a._handleKeyUp),s.on("paste.timepicker",a._handleKeyUp),a._formatValue(null,"initial")}}))},show:function(e){var i=t(this),r=i[0].timepickerObj,a=r.settings;if(e&&e.preventDefault(),a.useSelect)r.list.trigger("focus");else{r._hideKeyboard()&&i.trigger("blur");var o=r.list;if(!i.prop("readonly")&&(o&&0!==o.length&&"function"!=typeof a.durationTime||(n(i),o=r.list),!d.isVisible(o))){i.is("input")&&(r.selectedValue=i.val()),r._setSelected(),d.hideAll(),"number"==typeof a.listWidth&&o.width(i.outerWidth()*a.listWidth),o.show();var l={};a.orientation.match(/r/)?l.left=i.offset().left+i.outerWidth()-o.outerWidth()+parseInt(o.css("marginLeft").replace("px",""),10):a.orientation.match(/l/)?l.left=i.offset().left+parseInt(o.css("marginLeft").replace("px",""),10):a.orientation.match(/c/)&&(l.left=i.offset().left+(i.outerWidth()-o.outerWidth())/2+parseInt(o.css("marginLeft").replace("px",""),10)),"t"==(a.orientation.match(/t/)?"t":a.orientation.match(/b/)?"b":i.offset().top+i.outerHeight(!0)+o.outerHeight()>t(window).height()+t(window).scrollTop()?"t":"b")?(o.addClass("ui-timepicker-positioned-top"),l.top=i.offset().top-o.outerHeight()+parseInt(o.css("marginTop").replace("px",""),10)):(o.removeClass("ui-timepicker-positioned-top"),l.top=i.offset().top+i.outerHeight()+parseInt(o.css("marginTop").replace("px",""),10)),o.offset(l);var u=o.find(".ui-timepicker-selected");if(!u.length){var c=r.time2int(r._getTimeValue());null!==c?u=t(r._findRow(c)):a.scrollDefault&&(u=t(r._findRow(a.scrollDefault())))}if(u.length&&!u.hasClass("ui-timepicker-disabled")||(u=o.find("li:not(.ui-timepicker-disabled):first")),u&&u.length){var m=o.scrollTop()+u.position().top-u.outerHeight();o.scrollTop(m)}else o.scrollTop(0);return a.stopScrollPropagation&&t(document).on("wheel.ui-timepicker",".ui-timepicker-wrapper",(function(e){e.preventDefault();var i=t(this).scrollTop();t(this).scrollTop(i+e.originalEvent.deltaY)})),t(document).on("mousedown.ui-timepicker",s),window.addEventListener("resize",s),a.closeOnWindowScroll&&t(document).on("scroll.ui-timepicker",s),i.trigger("showTimepicker"),this}}},hide:function(e){var t=this[0].timepickerObj;return t&&t.hideMe(),d.hideAll(),this},option:function(i,s){return"string"==typeof i&&void 0===s?this[0].timepickerObj.settings[i]:this.each((function(){var r=t(this),a=r[0].timepickerObj,o=a.settings,l=a.list;"object"==e(i)?o=t.extend(o,i):"string"==typeof i&&(o[i]=s),o=a.parseSettings(o),a.settings=o,a._formatValue({type:"change"},"initial"),l&&(l.remove(),a.list=null),o.useSelect&&n(r)}))},getSecondsFromMidnight:function(){var e=this[0].timepickerObj;return e.time2int(e._getTimeValue())},getTime:function(e){var t=this[0].timepickerObj,i=t._getTimeValue();if(!i)return null;var n=t.time2int(i);if(null===n)return null;e||(e=new Date);var s=new Date(e);return s.setHours(n/3600),s.setMinutes(n%3600/60),s.setSeconds(n%60),s.setMilliseconds(0),s},isVisible:function(){var e=this[0].timepickerObj;return!!(e&&e.list&&d.isVisible(e.list))},setTime:function(e){var t=this[0].timepickerObj,i=t.settings;if(i.forceRoundTime)var n=t._roundAndFormatTime(t.time2int(e));else n=t._int2time(t.time2int(e));return e&&null===n&&i.noneOption&&(n=e),t._setTimeValue(n,"initial"),t._formatValue({type:"change"},"initial"),t&&t.list&&t._setSelected(),this},remove:function(){var e=this;if(e.hasClass("ui-timepicker-input")){var t=e[0].timepickerObj,i=t.settings;return e.removeAttr("autocomplete","off"),e.removeClass("ui-timepicker-input"),e.removeData("timepicker-obj"),e.off(".timepicker"),t.list&&t.list.remove(),i.useSelect&&e.show(),t.list=null,this}}};function n(e){var n=e[0].timepickerObj,s=n.list,r=n.settings;if(s&&s.length&&(s.remove(),n.list=null),r.useSelect){s=t("<select></select>",{class:"ui-timepicker-select"}),e.attr("name")&&s.attr("name","ui-timepicker-"+e.attr("name"));var a=s}else s=t("<ul></ul>",{class:"ui-timepicker-list"}),(a=t("<div></div>",{class:"ui-timepicker-wrapper",tabindex:-1})).css({display:"none",position:"absolute"}).append(s);if(r.noneOption)if(!0===r.noneOption&&(r.noneOption=r.useSelect?"Time...":"None"),t.isArray(r.noneOption)){for(var o in r.noneOption)if(parseInt(o,10)==o){var c=n._generateNoneElement(r.noneOption[o],r.useSelect);s.append(c)}}else c=n._generateNoneElement(r.noneOption,r.useSelect),s.append(c);r.className&&a.addClass(r.className),null===r.minTime&&null===r.durationTime||!r.showDuration||("function"==typeof r.step||r.step,a.addClass("ui-timepicker-with-duration"),a.addClass("ui-timepicker-step-"+r.step));var m=r.minTime;"function"==typeof r.durationTime?m=n.time2int(r.durationTime()):null!==r.durationTime&&(m=r.durationTime);var p=null!==r.minTime?r.minTime:0,f=null!==r.maxTime?r.maxTime:p+l-1;f<p&&(f+=l),86399===f&&"string"===t.type(r.timeFormat)&&r.show2400&&(f=l);var d=r.disableTimeRanges,h=0,g=d.length,v=r.step;"function"!=typeof v&&(v=function(){return r.step}),o=p;for(var b=0;o<=f;o+=60*v(++b)){var y,k=o,T=n._int2time(k);if(r.useSelect?(y=t("<option></option>",{value:T})).text(T):((y=t("<li></li>")).addClass(k%l<43200?"ui-timepicker-am":"ui-timepicker-pm"),y.attr("data-time",u(k,r)),y.text(T)),(null!==r.minTime||null!==r.durationTime)&&r.showDuration){var w=n._int2duration(o-m,r.step);if(r.useSelect)y.text(y.text()+" ("+w+")");else{var _=t("<span></span>",{class:"ui-timepicker-duration"});_.text(" ("+w+")"),y.append(_)}}h<g&&(k>=d[h][1]&&(h+=1),d[h]&&k>=d[h][0]&&k<d[h][1]&&(r.useSelect?y.prop("disabled",!0):y.addClass("ui-timepicker-disabled"))),s.append(y)}if(a.data("timepicker-input",e),n.list=a,r.useSelect)e.val()&&s.val(n._roundAndFormatTime(n.time2int(e.val()))),s.on("focus",(function(){t(this).data("timepicker-input").trigger("showTimepicker")})),s.on("blur",(function(){t(this).data("timepicker-input").trigger("hideTimepicker")})),s.on("change",(function(){n._setTimeValue(t(this).val(),"select")})),n._setTimeValue(s.val(),"initial"),e.hide().after(s);else{var O=r.appendTo;"string"==typeof O?O=t(O):"function"==typeof O&&(O=O(e)),O.append(a),n._setSelected(),s.on("mousedown click","li",(function(r){e.off("focus.timepicker"),e.on("focus.timepicker-ie-hack",(function(){e.off("focus.timepicker-ie-hack"),e.on("focus.timepicker",i.show)})),n._hideKeyboard()||e[0].focus(),s.find("li").removeClass("ui-timepicker-selected"),t(this).addClass("ui-timepicker-selected"),n._selectValue()&&(e.trigger("hideTimepicker"),s.on("mouseup.timepicker click.timepicker","li",(function(e){s.off("mouseup.timepicker click.timepicker"),a.hide()})))}))}}function s(e){if("focus"!=e.type||e.target!=window){var i=t(e.target);i.closest(".ui-timepicker-input").length||i.closest(".ui-timepicker-wrapper").length||(d.hideAll(),t(document).unbind(".ui-timepicker"),t(window).unbind(".ui-timepicker"))}}function r(e){var n=t(this),s=n[0].timepickerObj,r=s.list;if(!r||!d.isVisible(r)){if(40!=e.keyCode)return!0;i.show.call(n.get(0)),r=s.list,s._hideKeyboard()||n.trigger("focus")}switch(e.keyCode){case 13:return s._selectValue()&&(s._formatValue({type:"change"}),s.hideMe()),e.preventDefault(),!1;case 38:var a=r.find(".ui-timepicker-selected");return a.length?a.is(":first-child")||(a.removeClass("ui-timepicker-selected"),a.prev().addClass("ui-timepicker-selected"),a.prev().position().top<a.outerHeight()&&r.scrollTop(r.scrollTop()-a.outerHeight())):(r.find("li").each((function(e,i){if(t(i).position().top>0)return a=t(i),!1})),a.addClass("ui-timepicker-selected")),!1;case 40:return 0===(a=r.find(".ui-timepicker-selected")).length?(r.find("li").each((function(e,i){if(t(i).position().top>0)return a=t(i),!1})),a.addClass("ui-timepicker-selected")):a.is(":last-child")||(a.removeClass("ui-timepicker-selected"),a.next().addClass("ui-timepicker-selected"),a.next().position().top+2*a.outerHeight()>r.outerHeight()&&r.scrollTop(r.scrollTop()+a.outerHeight())),!1;case 27:r.find("li").removeClass("ui-timepicker-selected"),s.hideMe();break;case 9:s.hideMe();break;default:return!0}}t.fn.timepicker=function(n){return this.length?i[n]?this.hasClass("ui-timepicker-input")?i[n].apply(this,Array.prototype.slice.call(arguments,1)):this:"object"!==e(n)&&n?void t.error("Method "+n+" does not exist on jQuery.timepicker"):i.init.apply(this,arguments):this},t.fn.timepicker.defaults=m},"object"===("undefined"==typeof exports?"undefined":e(exports))&&exports&&"object"===("undefined"==typeof module?"undefined":e(module))&&module&&module.exports===exports?c(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],c):c(jQuery)}();
1
+ !function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?r(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):r(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function l(e,t){var i;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return a(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,l=!0,o=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return l=e.done,e},e:function(e){o=!0,s=e},f:function(){try{l||null==i.return||i.return()}finally{if(o)throw s}}}}var o=86400;function u(e,t){return e==o&&t.show2400?e:e%o}var c,m={appendTo:"body",className:null,closeOnWindowScroll:!1,disableTextInput:!1,disableTimeRanges:[],disableTouchKeyboard:!1,durationTime:null,forceRoundTime:!1,lang:{},listWidth:null,maxTime:null,minTime:null,noneOption:!1,orientation:"l",roundingFunction:function(e,t){if(null===e)return null;for(var i=0,n=0;n<e;)i++,n+=60*t.step(i);var r=n-60*t.step(i-1);return u(e-r<n-e?r:n,t)},scrollDefault:null,selectOnBlur:!1,show2400:!1,showDuration:!1,showOn:["click","focus"],showOnFocus:!0,step:30,stopScrollPropagation:!1,timeFormat:"g:ia",typeaheadHighlight:!0,useSelect:!1,wrapHours:!0},d={am:"am",pm:"pm",AM:"AM",PM:"PM",decimal:".",mins:"mins",hr:"hr",hrs:"hrs"},f={bubbles:!0,cancelable:!1,detail:null},p=function(){function n(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,n),this._handleFormatValue=this._handleFormatValue.bind(this),this._handleKeyUp=this._handleKeyUp.bind(this),this.targetEl=e;var r=n.extractAttrOptions(e,Object.keys(m));this.settings=this.parseSettings(s(s(s({},m),i),r))}var r,a,u;return r=n,u=[{key:"extractAttrOptions",value:function(e,t){var i,n={},r=l(t);try{for(r.s();!(i=r.n()).done;){var s=i.value;s in e.dataset&&(n[s]=e.dataset[s])}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"isVisible",value:function(e){var t=e[0];return t.offsetWidth>0&&t.offsetHeight>0}},{key:"hideAll",value:function(){var e,t=l(document.getElementsByClassName("ui-timepicker-input"));try{for(t.s();!(e=t.n()).done;){var i=e.value.timepickerObj;i&&i.hideMe()}}catch(e){t.e(e)}finally{t.f()}}}],(a=[{key:"hideMe",value:function(){if(this.settings.useSelect)this.targetEl.blur();else if(this.list&&n.isVisible(this.list)){this.settings.selectOnBlur&&this._selectValue(),this.list.hide();var e=new CustomEvent("hideTimepicker",f);this.targetEl.dispatchEvent(e)}}},{key:"_findRow",value:function(e){if(!e&&0!==e)return!1;var t=!1;return e=this.settings.roundingFunction(e,this.settings),!!this.list&&(this.list.find("li").each((function(i,n){var r=parseInt(n.dataset.time);if(!isNaN(r))return r==e?(t=n,!1):void 0})),t)}},{key:"_hideKeyboard",value:function(){return(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.settings.disableTouchKeyboard}},{key:"_setTimeValue",value:function(e,t){if("INPUT"===this.targetEl.nodeName){null===e&&""==this.targetEl.value||(this.targetEl.value=e);var i=this;i.settings.useSelect&&"select"!=t&&i.list&&i.list.val(i._roundAndFormatTime(i.anytime2int(e)))}var n=new CustomEvent("selectTime",f);if(this.selectedValue!=e){this.selectedValue=e;var r=new CustomEvent("changeTime",f),s=new CustomEvent("change",Object.assign(f,{detail:"timepicker"}));return"select"==t?(this.targetEl.dispatchEvent(n),this.targetEl.dispatchEvent(r),this.targetEl.dispatchEvent(s)):-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(r),!0}return-1==["error","initial"].indexOf(t)&&this.targetEl.dispatchEvent(n),!1}},{key:"_getTimeValue",value:function(){return"INPUT"===this.targetEl.nodeName?this.targetEl.value:this.selectedValue}},{key:"_selectValue",value:function(){var e=this;e.settings;var t=e.list.find(".ui-timepicker-selected");if(t.hasClass("ui-timepicker-disabled"))return!1;if(!t.length)return!0;var i=t.get(0).dataset.time;if(i){var n=parseInt(i);isNaN(n)||(i=n)}return null!==i&&("string"!=typeof i&&(i=e._int2time(i)),e._setTimeValue(i,"select")),!0}},{key:"anytime2int",value:function(t){return"number"==typeof t?t:"string"==typeof t?this.time2int(t):"object"===e(t)&&t instanceof Date?3600*t.getHours()+60*t.getMinutes()+t.getSeconds():"function"==typeof t?t():null}},{key:"time2int",value:function(e){if(""===e||null==e)return null;if("now"===e)return this.anytime2int(new Date);if("string"!=typeof e)return e;"a"!=(e=e.toLowerCase().replace(/[\s\.]/g,"")).slice(-1)&&"p"!=e.slice(-1)||(e+="m");var t=/^(([^0-9]*))?([0-9]?[0-9])(([0-5][0-9]))?(([0-5][0-9]))?(([^0-9]*))$/;e.match(/\W/)&&(t=/^(([^0-9]*))?([0-9]?[0-9])(\W+([0-5][0-9]?))?(\W+([0-5][0-9]))?(([^0-9]*))$/);var i=e.match(t);if(!i)return null;var n=parseInt(1*i[3],10),r=i[2]||i[9],s=this.parseMinuteString(i[5]),a=1*i[7]||0;r||2!=i[3].length||"0"!=i[3][0]||(r="am"),n>24&&!s&&(n=1*i[3][0],s=this.parseMinuteString(i[3][1]));var l=n;if(n<=12&&r){var u=(r=r.trim())==this.settings.lang.pm||r==this.settings.lang.PM;l=12==n?u?12:0:n+(u?12:0)}else if(3600*n+60*s+a>=o+(this.settings.show2400?1:0)){if(!1===this.settings.wrapHours)return null;l=n%24}var c=3600*l+60*s+a;if(n<12&&!r&&this.settings._twelveHourTime&&this.settings.scrollDefault()){var m=c-this.settings.scrollDefault();m<0&&m>=-43200&&(c=(c+43200)%o)}return c}},{key:"parseMinuteString",value:function(e){e||(e=0);var t=1;return 1==e.length&&(t=10),parseInt(e)*t||0}},{key:"intStringDateOrFunc2func",value:function(e){var t=this;return null==e?function(){return null}:"function"==typeof e?function(){return t.anytime2int(e())}:function(){return t.anytime2int(e)}}},{key:"parseSettings",value:function(e){if(e.lang=s(s({},d),e.lang),this.settings=e,e.listWidth&&(e.listWidth=this.anytime2int(e.listWidth)),e.minTime=this.intStringDateOrFunc2func(e.minTime),e.maxTime=this.intStringDateOrFunc2func(e.maxTime),e.durationTime=this.intStringDateOrFunc2func(e.durationTime),e.scrollDefault?e.scrollDefault=this.intStringDateOrFunc2func(e.scrollDefault):e.scrollDefault=e.minTime,"string"==typeof e.timeFormat&&e.timeFormat.match(/[gh]/)&&(e._twelveHourTime=!0),!1===e.showOnFocus&&-1!=e.showOn.indexOf("focus")&&e.showOn.splice(e.showOn.indexOf("focus"),1),"function"!=typeof e.step){var t=e.step;e.step=function(){return t}}return e.disableTimeRanges=this._parseDisableTimeRanges(e.disableTimeRanges),e}},{key:"_parseDisableTimeRanges",value:function(e){if(!e||0==e.length)return[];for(var t in e)e[t]=[this.anytime2int(e[t][0]),this.anytime2int(e[t][1])];for(t=(e=e.sort((function(e,t){return e[0]-t[0]}))).length-1;t>0;t--)e[t][0]<=e[t-1][1]&&(e[t-1]=[Math.min(e[t][0],e[t-1][0]),Math.max(e[t][1],e[t-1][1])],e.splice(t,1));return e}},{key:"_disableTextInputHandler",value:function(e){switch(e.keyCode){case 13:case 9:return;default:e.preventDefault()}}},{key:"_int2duration",value:function(e,t){e=Math.abs(e);var i,n,r=Math.round(e/60),s=[];return r<60?s=[r,this.settings.lang.mins]:(i=Math.floor(r/60),n=r%60,30==t&&30==n&&(i+=this.settings.lang.decimal+5),s.push(i),s.push(1==i?this.settings.lang.hr:this.settings.lang.hrs),30!=t&&n&&(s.push(n),s.push(this.settings.lang.mins))),s.join(" ")}},{key:"_roundAndFormatTime",value:function(e){if(null!==(e=this.settings.roundingFunction(e,this.settings)))return this._int2time(e)}},{key:"_int2time",value:function(e){if("number"!=typeof e)return null;var t=parseInt(e%60),i=parseInt(e/60%60),n=parseInt(e/3600%24),r=new Date(1970,0,2,n,i,t,0);if(isNaN(r.getTime()))return null;if("function"==typeof this.settings.timeFormat)return this.settings.timeFormat(r);for(var s,a,l="",u=0;u<this.settings.timeFormat.length;u++)switch(a=this.settings.timeFormat.charAt(u)){case"a":l+=r.getHours()>11?this.settings.lang.pm:this.settings.lang.am;break;case"A":l+=r.getHours()>11?this.settings.lang.PM:this.settings.lang.AM;break;case"g":l+=0==(s=r.getHours()%12)?"12":s;break;case"G":s=r.getHours(),e===o&&(s=this.settings.show2400?24:0),l+=s;break;case"h":0!=(s=r.getHours()%12)&&s<10&&(s="0"+s),l+=0===s?"12":s;break;case"H":s=r.getHours(),e===o&&(s=this.settings.show2400?24:0),l+=s>9?s:"0"+s;break;case"i":l+=(i=r.getMinutes())>9?i:"0"+i;break;case"s":l+=(t=r.getSeconds())>9?t:"0"+t;break;case"\\":u++,l+=this.settings.timeFormat.charAt(u);break;default:l+=a}return l}},{key:"_setSelected",value:function(){var e=this.list;e.find("li").removeClass("ui-timepicker-selected");var t=this.anytime2int(this._getTimeValue());if(null!==t){var i=this._findRow(t);if(i){var n=i.getBoundingClientRect(),r=e.get(0).getBoundingClientRect(),s=n.top-r.top;if(s+n.height>r.height||s<0){var a=e.scrollTop()+(n.top-r.top)-n.height;e.scrollTop(a)}var l=parseInt(i.dataset.time);(this.settings.forceRoundTime||l===t)&&i.classList.add("ui-timepicker-selected")}}}},{key:"_isFocused",value:function(e){return e===document.activeElement}},{key:"_handleFormatValue",value:function(e){e&&"timepicker"==e.detail||this._formatValue(e)}},{key:"_formatValue",value:function(e,t){if(""!==this.targetEl.value){if(!this._isFocused(this.targetEl)||e&&"change"==e.type){var i=this.settings,n=this.anytime2int(this.targetEl.value);if(null!==n){var r=!1;null!==i.minTime&&null!==i.maxTime&&(n<i.minTime()||n>i.maxTime())&&(r=!0);var s,a=l(i.disableTimeRanges);try{for(a.s();!(s=a.n()).done;){var o=s.value;if(n>=o[0]&&n<o[1]){r=!0;break}}}catch(e){a.e(e)}finally{a.f()}if(i.forceRoundTime){var u=i.roundingFunction(n,i);u!=n&&(n=u,t=null)}var c=this._int2time(n);if(r){this._setTimeValue(c);var m=new CustomEvent("timeRangeError",f);this.targetEl.dispatchEvent(m)}else this._setTimeValue(c,t)}else{var d=new CustomEvent("timeFormatError",f);this.targetEl.dispatchEvent(d)}}}else this._setTimeValue(null,t)}},{key:"_generateNoneElement",value:function(t,i){var n,r,s,a;return"object"==e(t)?(n=t.label,r=t.className,s=t.value):"string"==typeof t?(n=t,s=""):$.error("Invalid noneOption value"),i?(a=document.createElement("option")).value=s:(a=document.createElement("li")).dataset.time=String(s),a.innerText=n,a.classList.add(r),a}},{key:"_handleKeyUp",value:function(e){var t=this;if(!this.list||!n.isVisible(this.list)||this.settings.disableTextInput)return!0;if("paste"!==e.type&&"cut"!==e.type)switch(e.keyCode){case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 65:case 77:case 80:case 186:case 8:case 46:this.settings.typeaheadHighlight?this._setSelected():this.list.hide()}else setTimeout((function(){t.settings.typeaheadHighlight?t._setSelected():t.list.hide()}),0)}}])&&i(r.prototype,a),u&&i(r,u),n}();function h(t){return Array.isArray(t)?t.map(h):!0===t?{label:"None",value:""}:"object"===e(t)?t:{label:t,value:""}}function g(e){var t=document.createElement("option");return t.value=e.label,e.duration?t.appendChild(document.createTextNode(e.label+" ("+e.duration+")")):t.appendChild(document.createTextNode(e.label)),e.disabled&&(t.disabled=!0),t}function v(e){var t=document.createElement("li");if(t.dataset.time=e.value,e.className&&t.classList.add(e.className),t.className=e.className,t.appendChild(document.createTextNode(e.label)),e.duration){var i=document.createElement("span");i.appendChild(document.createTextNode("("+e.duration+")")),i.classList.add("ui-timepicker-duration"),t.appendChild(i)}return e.disabled&&t.classList.add("ui-timepicker-disabled"),t}function y(e){var t,i=[].concat(function(e){if(!e.noneOption)return[];var t=h(e.noneOption);return Array.isArray(e.noneOption)?t:[t]}(e.settings),function(e){var t,i,n=e.settings,r=null!==(t=n.minTime())&&void 0!==t?t:0,s=null!==(i=n.maxTime())&&void 0!==i?i:r+o-1;s<r&&(s+=o),86399===s&&"string"==typeof n.timeFormat&&n.show2400&&(s=o);for(var a=[],c=r,m=0;c<=s;m++,c+=60*n.step(m)){var d=c,f=e._int2time(d),p=d%o<43200?"ui-timepicker-am":"ui-timepicker-pm",h={label:f,value:u(d,n),className:p};if((null!==n.minTime()||null!==n.durationTime())&&n.showDuration){var g,v=null!==(g=n.durationTime())&&void 0!==g?g:n.minTime(),y=e._int2duration(c-v,n.step());h.duration=y}var b,k=l(n.disableTimeRanges);try{for(k.s();!(b=k.n()).done;){var T=b.value;if(d%o>=T[0]&&d%o<T[1]){h.disabled=!0;break}}}catch(e){k.e(e)}finally{k.f()}a.push(h)}return a}(e));if(t=e.settings.useSelect?function(e,t){var i=document.createElement("select");i.classList.add("ui-timepicker-select"),t&&(i.name="ui-timepicker-"+t);var n,r=l(e);try{for(r.s();!(n=r.n()).done;){var s=g(n.value);i.appendChild(s)}}catch(e){r.e(e)}finally{r.f()}return i}(i,e.targetEl.name):function(e){var t=document.createElement("ul");t.classList.add("ui-timepicker-list");var i,n=l(e);try{for(n.s();!(i=n.n()).done;){var r=v(i.value);t.appendChild(r)}}catch(e){n.e(e)}finally{n.f()}var s=document.createElement("div");return s.classList.add("ui-timepicker-wrapper"),s.tabIndex=-1,s.style.display="none",s.style.position="absolute",s.appendChild(t),s}(i),e.settings.className){var n,r=l(e.settings.className.split(" "));try{for(r.s();!(n=r.n()).done;){var s=n.value;t.classList.add(s)}}catch(e){r.e(e)}finally{r.f()}}return!e.settings.showDuration||null===e.settings.minTime&&null===e.settings.durationTime||(t.classList.add("ui-timepicker-with-duration"),t.classList.add("ui-timepicker-step-"+e.settings.step())),t}!function(){if("function"==typeof window.CustomEvent)return!1;window.CustomEvent=function(e,t){t||(t={}),t=Object.assign(f,t);var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}}(),c=function(t){var i={init:function(e){return this.each((function(){var r=t(this),a=new p(this,e),l=a.settings;if(l.lang,this.timepickerObj=a,r.addClass("ui-timepicker-input"),l.useSelect)n(r);else{if(r.prop("autocomplete","off"),l.showOn)for(var o in l.showOn)r.on(l.showOn[o]+".timepicker",i.show);r.on("change.timepicker",a._handleFormatValue),r.on("keydown.timepicker",s),r.on("keyup.timepicker",a._handleKeyUp),l.disableTextInput&&r.on("keydown.timepicker",a._disableTextInputHandler),r.on("cut.timepicker",a._handleKeyUp),r.on("paste.timepicker",a._handleKeyUp),a._formatValue(null,"initial")}}))},show:function(e){var i=t(this),s=i[0].timepickerObj,a=s.settings;if(e&&e.preventDefault(),a.useSelect)s.list.trigger("focus");else{s._hideKeyboard()&&i.trigger("blur");var l=s.list;if(!i.prop("readonly")&&(n(i),l=s.list,!p.isVisible(l))){i.is("input")&&(s.selectedValue=i.val()),s._setSelected(),p.hideAll(),"number"==typeof a.listWidth&&l.width(i.outerWidth()*a.listWidth),l.show();var o={};a.orientation.match(/r/)?o.left=i.offset().left+i.outerWidth()-l.outerWidth()+parseInt(l.css("marginLeft").replace("px",""),10):a.orientation.match(/l/)?o.left=i.offset().left+parseInt(l.css("marginLeft").replace("px",""),10):a.orientation.match(/c/)&&(o.left=i.offset().left+(i.outerWidth()-l.outerWidth())/2+parseInt(l.css("marginLeft").replace("px",""),10)),"t"==(a.orientation.match(/t/)?"t":a.orientation.match(/b/)?"b":i.offset().top+i.outerHeight(!0)+l.outerHeight()>t(window).height()+t(window).scrollTop()?"t":"b")?(l.addClass("ui-timepicker-positioned-top"),o.top=i.offset().top-l.outerHeight()+parseInt(l.css("marginTop").replace("px",""),10)):(l.removeClass("ui-timepicker-positioned-top"),o.top=i.offset().top+i.outerHeight()+parseInt(l.css("marginTop").replace("px",""),10)),l.offset(o);var u=l.find(".ui-timepicker-selected");if(!u.length){var c=s.anytime2int(s._getTimeValue());null!==c?u=t(s._findRow(c)):a.scrollDefault()&&(u=t(s._findRow(a.scrollDefault())))}if(u.length&&!u.hasClass("ui-timepicker-disabled")||(u=l.find("li:not(.ui-timepicker-disabled):first")),u&&u.length){var m=l.scrollTop()+u.position().top-u.outerHeight();l.scrollTop(m)}else l.scrollTop(0);return a.stopScrollPropagation&&t(document).on("wheel.ui-timepicker",".ui-timepicker-wrapper",(function(e){e.preventDefault();var i=t(this).scrollTop();t(this).scrollTop(i+e.originalEvent.deltaY)})),t(document).on("mousedown.ui-timepicker",r),window.addEventListener("resize",r),a.closeOnWindowScroll&&t(document).on("scroll.ui-timepicker",r),i.trigger("showTimepicker"),this}}},hide:function(e){var t=this[0].timepickerObj;return t&&t.hideMe(),p.hideAll(),this},option:function(i,r){return"string"==typeof i&&void 0===r?this[0].timepickerObj.settings[i]:this.each((function(){var s=t(this),a=s[0].timepickerObj,l=a.settings,o=a.list;"object"==e(i)?l=t.extend(l,i):"string"==typeof i&&(l[i]=r),l=a.parseSettings(l),a.settings=l,a._formatValue({type:"change"},"initial"),o&&(o.remove(),a.list=null),l.useSelect&&n(s)}))},getSecondsFromMidnight:function(){var e=this[0].timepickerObj;return e.anytime2int(e._getTimeValue())},getTime:function(e){var t=this[0].timepickerObj,i=t._getTimeValue();if(!i)return null;var n=t.anytime2int(i);if(null===n)return null;e||(e=new Date);var r=new Date(e);return r.setHours(n/3600),r.setMinutes(n%3600/60),r.setSeconds(n%60),r.setMilliseconds(0),r},isVisible:function(){var e=this[0].timepickerObj;return!!(e&&e.list&&p.isVisible(e.list))},setTime:function(e){var t=this[0].timepickerObj,i=t.settings;if(i.forceRoundTime)var n=t._roundAndFormatTime(t.anytime2int(e));else n=t._int2time(t.anytime2int(e));return e&&null===n&&i.noneOption&&(n=e),t._setTimeValue(n,"initial"),t._formatValue({type:"change"},"initial"),t&&t.list&&t._setSelected(),this},remove:function(){var e=this;if(e.hasClass("ui-timepicker-input")){var t=e[0].timepickerObj,i=t.settings;return e.removeAttr("autocomplete","off"),e.removeClass("ui-timepicker-input"),e.removeData("timepicker-obj"),e.off(".timepicker"),t.list&&t.list.remove(),i.useSelect&&e.show(),t.list=null,this}}};function n(e){var n=e[0].timepickerObj,r=n.list,s=n.settings;r&&r.length&&(r.remove(),n.list=null);var a=t(y(n));if(r=s.useSelect?a:a.children("ul"),a.data("timepicker-input",e),n.list=a,s.useSelect)e.val()&&r.val(n._roundAndFormatTime(n.anytime2int(e.val()))),r.on("focus",(function(){t(this).data("timepicker-input").trigger("showTimepicker")})),r.on("blur",(function(){t(this).data("timepicker-input").trigger("hideTimepicker")})),r.on("change",(function(){n._setTimeValue(t(this).val(),"select")})),n._setTimeValue(r.val(),"initial"),e.hide().after(r);else{var l=s.appendTo;"string"==typeof l?l=t(l):"function"==typeof l&&(l=l(e)),l.append(a),n._setSelected(),r.on("mousedown click","li",(function(s){e.off("focus.timepicker"),e.on("focus.timepicker-ie-hack",(function(){e.off("focus.timepicker-ie-hack"),e.on("focus.timepicker",i.show)})),n._hideKeyboard()||e[0].focus(),r.find("li").removeClass("ui-timepicker-selected"),t(this).addClass("ui-timepicker-selected"),n._selectValue()&&(e.trigger("hideTimepicker"),r.on("mouseup.timepicker click.timepicker","li",(function(e){r.off("mouseup.timepicker click.timepicker"),a.hide()})))}))}}function r(e){if("focus"!=e.type||e.target!=window){var i=t(e.target);i.closest(".ui-timepicker-input").length||i.closest(".ui-timepicker-wrapper").length||(p.hideAll(),t(document).off(".ui-timepicker"),t(window).off(".ui-timepicker"))}}function s(e){var n=t(this),r=n[0].timepickerObj,s=r.list;if(!s||!p.isVisible(s)){if(40!=e.keyCode)return!0;i.show.call(n.get(0)),s=r.list,r._hideKeyboard()||n.trigger("focus")}switch(e.keyCode){case 13:return r._selectValue()&&(r._formatValue({type:"change"}),r.hideMe()),e.preventDefault(),!1;case 38:var a=s.find(".ui-timepicker-selected");return a.length?a.is(":first-child")||(a.removeClass("ui-timepicker-selected"),a.prev().addClass("ui-timepicker-selected"),a.prev().position().top<a.outerHeight()&&s.scrollTop(s.scrollTop()-a.outerHeight())):(s.find("li").each((function(e,i){if(t(i).position().top>0)return a=t(i),!1})),a.addClass("ui-timepicker-selected")),!1;case 40:return 0===(a=s.find(".ui-timepicker-selected")).length?(s.find("li").each((function(e,i){if(t(i).position().top>0)return a=t(i),!1})),a.addClass("ui-timepicker-selected")):a.is(":last-child")||(a.removeClass("ui-timepicker-selected"),a.next().addClass("ui-timepicker-selected"),a.next().position().top+2*a.outerHeight()>s.outerHeight()&&s.scrollTop(s.scrollTop()+a.outerHeight())),!1;case 27:s.find("li").removeClass("ui-timepicker-selected"),r.hideMe();break;case 9:r.hideMe();break;default:return!0}}t.fn.timepicker=function(n){return this.length?i[n]?this.hasClass("ui-timepicker-input")?i[n].apply(this,Array.prototype.slice.call(arguments,1)):this:"object"!==e(n)&&n?void t.error("Method "+n+" does not exist on jQuery.timepicker"):i.init.apply(this,arguments):this},t.fn.timepicker.defaults=m},"object"===("undefined"==typeof exports?"undefined":e(exports))&&exports&&"object"===("undefined"==typeof module?"undefined":e(module))&&module&&module.exports===exports?c(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],c):c(jQuery)}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "timepicker",
3
- "version": "1.13.17",
3
+ "version": "1.13.19",
4
4
  "title": "jquery-timepicker",
5
5
  "author": {
6
6
  "name": "Jon Thornton",