fomantic-ui 2.10.0-beta.6 → 2.10.0-beta.8

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 (227) hide show
  1. package/.eslintrc.js +0 -10
  2. package/README.md +4 -5
  3. package/changelog-setup.js +64 -70
  4. package/dist/components/accordion.css +1 -1
  5. package/dist/components/accordion.js +94 -131
  6. package/dist/components/accordion.min.css +1 -1
  7. package/dist/components/accordion.min.js +2 -2
  8. package/dist/components/ad.css +1 -1
  9. package/dist/components/ad.min.css +1 -1
  10. package/dist/components/api.js +152 -205
  11. package/dist/components/api.min.js +2 -2
  12. package/dist/components/breadcrumb.css +1 -1
  13. package/dist/components/breadcrumb.min.css +1 -1
  14. package/dist/components/button.css +1 -1
  15. package/dist/components/button.min.css +1 -1
  16. package/dist/components/calendar.css +1 -1
  17. package/dist/components/calendar.js +305 -341
  18. package/dist/components/calendar.min.css +1 -1
  19. package/dist/components/calendar.min.js +2 -2
  20. package/dist/components/card.css +1 -1
  21. package/dist/components/card.min.css +1 -1
  22. package/dist/components/checkbox.css +1 -1
  23. package/dist/components/checkbox.js +76 -116
  24. package/dist/components/checkbox.min.css +1 -1
  25. package/dist/components/checkbox.min.js +2 -2
  26. package/dist/components/comment.css +1 -1
  27. package/dist/components/comment.min.css +1 -1
  28. package/dist/components/container.css +1 -1
  29. package/dist/components/container.min.css +1 -1
  30. package/dist/components/dimmer.css +1 -1
  31. package/dist/components/dimmer.js +58 -91
  32. package/dist/components/dimmer.min.css +1 -1
  33. package/dist/components/dimmer.min.js +2 -2
  34. package/dist/components/divider.css +1 -1
  35. package/dist/components/divider.min.css +1 -1
  36. package/dist/components/dropdown.css +1 -1
  37. package/dist/components/dropdown.js +674 -977
  38. package/dist/components/dropdown.min.css +1 -1
  39. package/dist/components/dropdown.min.js +2 -2
  40. package/dist/components/embed.css +1 -1
  41. package/dist/components/embed.js +80 -127
  42. package/dist/components/embed.min.css +1 -1
  43. package/dist/components/embed.min.js +2 -2
  44. package/dist/components/emoji.css +1 -1
  45. package/dist/components/emoji.min.css +1 -1
  46. package/dist/components/feed.css +1 -1
  47. package/dist/components/feed.min.css +1 -1
  48. package/dist/components/flag.css +1 -1
  49. package/dist/components/flag.min.css +1 -1
  50. package/dist/components/flyout.css +1 -1
  51. package/dist/components/flyout.js +192 -274
  52. package/dist/components/flyout.min.css +1 -1
  53. package/dist/components/flyout.min.js +2 -2
  54. package/dist/components/form.css +1 -1
  55. package/dist/components/form.js +325 -429
  56. package/dist/components/form.min.css +1 -1
  57. package/dist/components/form.min.js +2 -2
  58. package/dist/components/grid.css +1 -1
  59. package/dist/components/grid.min.css +1 -1
  60. package/dist/components/header.css +1 -1
  61. package/dist/components/header.min.css +1 -1
  62. package/dist/components/icon.css +1 -1
  63. package/dist/components/icon.min.css +1 -1
  64. package/dist/components/image.css +1 -1
  65. package/dist/components/image.min.css +1 -1
  66. package/dist/components/input.css +1 -1
  67. package/dist/components/input.min.css +1 -1
  68. package/dist/components/item.css +1 -1
  69. package/dist/components/item.min.css +1 -1
  70. package/dist/components/label.css +1 -1
  71. package/dist/components/label.min.css +1 -1
  72. package/dist/components/list.css +1 -1
  73. package/dist/components/list.min.css +1 -1
  74. package/dist/components/loader.css +1 -1
  75. package/dist/components/loader.min.css +1 -1
  76. package/dist/components/menu.css +1 -1
  77. package/dist/components/menu.min.css +1 -1
  78. package/dist/components/message.css +1 -1
  79. package/dist/components/message.min.css +1 -1
  80. package/dist/components/modal.css +1 -1
  81. package/dist/components/modal.js +221 -313
  82. package/dist/components/modal.min.css +1 -1
  83. package/dist/components/modal.min.js +2 -2
  84. package/dist/components/nag.css +1 -1
  85. package/dist/components/nag.js +67 -97
  86. package/dist/components/nag.min.css +1 -1
  87. package/dist/components/nag.min.js +2 -2
  88. package/dist/components/placeholder.css +1 -1
  89. package/dist/components/placeholder.min.css +1 -1
  90. package/dist/components/popup.css +1 -1
  91. package/dist/components/popup.js +185 -254
  92. package/dist/components/popup.min.css +1 -1
  93. package/dist/components/popup.min.js +2 -2
  94. package/dist/components/progress.css +1 -1
  95. package/dist/components/progress.js +103 -138
  96. package/dist/components/progress.min.css +1 -1
  97. package/dist/components/progress.min.js +2 -2
  98. package/dist/components/rail.css +1 -1
  99. package/dist/components/rail.min.css +1 -1
  100. package/dist/components/rating.css +1 -1
  101. package/dist/components/rating.js +89 -139
  102. package/dist/components/rating.min.css +1 -1
  103. package/dist/components/rating.min.js +2 -2
  104. package/dist/components/reset.css +1 -1
  105. package/dist/components/reset.min.css +1 -1
  106. package/dist/components/reveal.css +1 -1
  107. package/dist/components/reveal.min.css +1 -1
  108. package/dist/components/search.css +1 -1
  109. package/dist/components/search.js +253 -352
  110. package/dist/components/search.min.css +1 -1
  111. package/dist/components/search.min.js +2 -2
  112. package/dist/components/segment.css +1 -1
  113. package/dist/components/segment.min.css +1 -1
  114. package/dist/components/shape.css +1 -1
  115. package/dist/components/shape.js +157 -223
  116. package/dist/components/shape.min.css +1 -1
  117. package/dist/components/shape.min.js +2 -2
  118. package/dist/components/sidebar.css +1 -1
  119. package/dist/components/sidebar.js +122 -163
  120. package/dist/components/sidebar.min.css +1 -1
  121. package/dist/components/sidebar.min.js +2 -2
  122. package/dist/components/site.css +1 -1
  123. package/dist/components/site.js +38 -57
  124. package/dist/components/site.min.css +1 -1
  125. package/dist/components/site.min.js +2 -2
  126. package/dist/components/slider.css +1 -1
  127. package/dist/components/slider.js +242 -325
  128. package/dist/components/slider.min.css +1 -1
  129. package/dist/components/slider.min.js +2 -2
  130. package/dist/components/state.js +68 -98
  131. package/dist/components/state.min.js +2 -2
  132. package/dist/components/statistic.css +1 -1
  133. package/dist/components/statistic.min.css +1 -1
  134. package/dist/components/step.css +1 -1
  135. package/dist/components/step.min.css +1 -1
  136. package/dist/components/sticky.css +1 -1
  137. package/dist/components/sticky.js +116 -159
  138. package/dist/components/sticky.min.css +1 -1
  139. package/dist/components/sticky.min.js +2 -2
  140. package/dist/components/tab.css +1 -1
  141. package/dist/components/tab.js +168 -233
  142. package/dist/components/tab.min.css +1 -1
  143. package/dist/components/tab.min.js +2 -2
  144. package/dist/components/table.css +1 -1
  145. package/dist/components/table.min.css +1 -1
  146. package/dist/components/text.css +1 -1
  147. package/dist/components/text.min.css +1 -1
  148. package/dist/components/toast.css +1 -1
  149. package/dist/components/toast.js +99 -132
  150. package/dist/components/toast.min.css +1 -1
  151. package/dist/components/toast.min.js +2 -2
  152. package/dist/components/transition.css +1 -1
  153. package/dist/components/transition.js +86 -141
  154. package/dist/components/transition.min.css +1 -1
  155. package/dist/components/transition.min.js +2 -2
  156. package/dist/components/visibility.js +134 -210
  157. package/dist/components/visibility.min.js +2 -2
  158. package/dist/semantic.css +53 -53
  159. package/dist/semantic.js +4100 -5721
  160. package/dist/semantic.min.css +1 -1
  161. package/dist/semantic.min.js +2 -2
  162. package/examples/assets/show-examples.js +2 -4
  163. package/gulpfile.js +5 -7
  164. package/package.json +1 -1
  165. package/scripts/nightly-version.js +7 -10
  166. package/src/definitions/behaviors/api.js +151 -204
  167. package/src/definitions/behaviors/form.js +324 -428
  168. package/src/definitions/behaviors/state.js +67 -97
  169. package/src/definitions/behaviors/visibility.js +133 -209
  170. package/src/definitions/globals/site.js +37 -56
  171. package/src/definitions/modules/accordion.js +93 -130
  172. package/src/definitions/modules/calendar.js +304 -340
  173. package/src/definitions/modules/checkbox.js +75 -115
  174. package/src/definitions/modules/dimmer.js +57 -90
  175. package/src/definitions/modules/dropdown.js +673 -976
  176. package/src/definitions/modules/embed.js +79 -126
  177. package/src/definitions/modules/flyout.js +191 -273
  178. package/src/definitions/modules/modal.js +220 -312
  179. package/src/definitions/modules/nag.js +66 -96
  180. package/src/definitions/modules/popup.js +184 -253
  181. package/src/definitions/modules/progress.js +102 -137
  182. package/src/definitions/modules/rating.js +88 -138
  183. package/src/definitions/modules/search.js +252 -351
  184. package/src/definitions/modules/shape.js +156 -222
  185. package/src/definitions/modules/sidebar.js +121 -162
  186. package/src/definitions/modules/slider.js +241 -324
  187. package/src/definitions/modules/sticky.js +115 -158
  188. package/src/definitions/modules/tab.js +167 -232
  189. package/src/definitions/modules/toast.js +98 -131
  190. package/src/definitions/modules/transition.js +85 -140
  191. package/tasks/admin/components/create.js +88 -108
  192. package/tasks/admin/components/init.js +26 -32
  193. package/tasks/admin/components/update.js +46 -53
  194. package/tasks/admin/distributions/create.js +71 -101
  195. package/tasks/admin/distributions/init.js +27 -33
  196. package/tasks/admin/distributions/update.js +45 -52
  197. package/tasks/admin/register.js +11 -15
  198. package/tasks/build/assets.js +14 -18
  199. package/tasks/build/css.js +54 -63
  200. package/tasks/build/javascript.js +45 -53
  201. package/tasks/build.js +4 -6
  202. package/tasks/check-install.js +5 -7
  203. package/tasks/clean.js +2 -4
  204. package/tasks/collections/admin.js +13 -15
  205. package/tasks/collections/build.js +6 -8
  206. package/tasks/collections/docs.js +2 -4
  207. package/tasks/collections/install.js +2 -4
  208. package/tasks/collections/rtl.js +2 -4
  209. package/tasks/collections/various.js +2 -4
  210. package/tasks/config/admin/github.js +7 -9
  211. package/tasks/config/admin/templates/css-package.js +1 -3
  212. package/tasks/config/admin/templates/less-package.js +1 -3
  213. package/tasks/config/npm/gulpfile.js +4 -6
  214. package/tasks/config/project/config.js +22 -30
  215. package/tasks/config/project/install.js +56 -70
  216. package/tasks/config/project/release.js +6 -8
  217. package/tasks/config/tasks.js +8 -12
  218. package/tasks/config/user.js +13 -17
  219. package/tasks/docs/build.js +26 -31
  220. package/tasks/docs/metadata.js +24 -30
  221. package/tasks/docs/serve.js +20 -26
  222. package/tasks/install.js +71 -98
  223. package/tasks/rtl/build.js +2 -4
  224. package/tasks/rtl/watch.js +2 -4
  225. package/tasks/watch.js +9 -11
  226. package/test/meteor/fonts.js +1 -2
  227. package/test/modules/module.spec.js +16 -18
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.10.0-beta.6+42a411a - Calendar
2
+ * # Fomantic-UI 2.10.0-beta.8+62e258f - Calendar
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -20,61 +20,57 @@
20
20
  : globalThis;
21
21
 
22
22
  $.fn.calendar = function (parameters) {
23
- var
24
- $allModules = $(this),
25
- $document = $(document),
26
-
27
- time = Date.now(),
28
- performance = [],
29
-
30
- query = arguments[0],
31
- methodInvoked = typeof query === 'string',
32
- queryArguments = [].slice.call(arguments, 1),
33
- returnedValue,
34
- timeGapTable = {
35
- 5: { row: 4, column: 3 },
36
- 10: { row: 3, column: 2 },
37
- 15: { row: 2, column: 2 },
38
- 20: { row: 3, column: 1 },
39
- 30: { row: 2, column: 1 },
40
- },
41
- numberText = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']
42
- ;
23
+ let $allModules = $(this);
24
+ let $document = $(document);
25
+
26
+ let time = Date.now();
27
+ let performance = [];
28
+
29
+ let query = arguments[0];
30
+ let methodInvoked = typeof query === 'string';
31
+ let queryArguments = [].slice.call(arguments, 1);
32
+ let returnedValue;
33
+ let timeGapTable = {
34
+ 5: { row: 4, column: 3 },
35
+ 10: { row: 3, column: 2 },
36
+ 15: { row: 2, column: 2 },
37
+ 20: { row: 3, column: 1 },
38
+ 30: { row: 2, column: 1 },
39
+ };
40
+ let numberText = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight'];
43
41
 
44
42
  $allModules.each(function () {
45
- var
46
- settings = $.isPlainObject(parameters)
47
- ? $.extend(true, {}, $.fn.calendar.settings, parameters)
48
- : $.extend({}, $.fn.calendar.settings),
49
-
50
- className = settings.className,
51
- namespace = settings.namespace,
52
- selector = settings.selector,
53
- formatter = settings.formatter,
54
- parser = settings.parser,
55
- metadata = settings.metadata,
56
- timeGap = timeGapTable[settings.minTimeGap],
57
- error = settings.error,
58
-
59
- eventNamespace = '.' + namespace,
60
- moduleNamespace = 'module-' + namespace,
61
-
62
- $module = $(this),
63
- $input = $module.find(selector.input),
64
- $activator = $module.find(selector.activator),
65
-
66
- element = this,
67
- instance = $module.data(moduleNamespace),
68
- $container = instance && instance.popupId ? $document.find('#' + instance.popupId) : $module.find(selector.popup),
69
-
70
- isTouch,
71
- isTouchDown = false,
72
- isInverted = $module.hasClass(className.inverted),
73
- focusDateUsedForRange = false,
74
- selectionComplete = false,
75
- classObserver,
76
- module
77
- ;
43
+ let settings = $.isPlainObject(parameters)
44
+ ? $.extend(true, {}, $.fn.calendar.settings, parameters)
45
+ : $.extend({}, $.fn.calendar.settings);
46
+
47
+ let className = settings.className;
48
+ let namespace = settings.namespace;
49
+ let selector = settings.selector;
50
+ let formatter = settings.formatter;
51
+ let parser = settings.parser;
52
+ let metadata = settings.metadata;
53
+ let timeGap = timeGapTable[settings.minTimeGap];
54
+ let error = settings.error;
55
+
56
+ let eventNamespace = '.' + namespace;
57
+ let moduleNamespace = 'module-' + namespace;
58
+
59
+ let $module = $(this);
60
+ let $input = $module.find(selector.input);
61
+ let $activator = $module.find(selector.activator);
62
+
63
+ let element = this;
64
+ let instance = $module.data(moduleNamespace);
65
+ let $container = instance && instance.popupId ? $document.find('#' + instance.popupId) : $module.find(selector.popup);
66
+
67
+ let isTouch;
68
+ let isTouchDown = false;
69
+ let isInverted = $module.hasClass(className.inverted);
70
+ let focusDateUsedForRange = false;
71
+ let selectionComplete = false;
72
+ let classObserver;
73
+ let module;
78
74
 
79
75
  module = {
80
76
 
@@ -150,10 +146,8 @@
150
146
  } else {
151
147
  // prepend the popup element to the activator's parent so that it has less chance of messing with
152
148
  // the styling (e.g., input action button needs to be the last child to have the correct border radius)
153
- var
154
- $activatorParent = $activator.parent(),
155
- domPositionFunction = $activatorParent.closest(selector.append).length > 0 ? 'appendTo' : 'prependTo'
156
- ;
149
+ let $activatorParent = $activator.parent();
150
+ let domPositionFunction = $activatorParent.closest(selector.append).length > 0 ? 'appendTo' : 'prependTo';
157
151
  $container = $('<div/>').addClass(className.popup)[domPositionFunction]($activatorParent);
158
152
  }
159
153
  }
@@ -161,12 +155,12 @@
161
155
  if (isInverted) {
162
156
  $container.addClass(className.inverted);
163
157
  }
164
- var onVisible = function () {
158
+ let onVisible = function () {
165
159
  module.refreshTooltips();
166
160
 
167
161
  return settings.onVisible.apply($container, arguments);
168
162
  };
169
- var onHidden = function () {
163
+ let onHidden = function () {
170
164
  module.blur();
171
165
 
172
166
  return settings.onHidden.apply($container, arguments);
@@ -181,15 +175,15 @@
181
175
  return settings.onVisible.apply($container, arguments);
182
176
  };
183
177
  }
184
- var onShow = function () {
178
+ let onShow = function () {
185
179
  // reset the focus date onShow
186
180
  module.set.focusDate(module.get.date());
187
181
  module.set.mode(module.get.validatedMode(settings.startMode));
188
182
 
189
183
  return settings.onShow.apply($container, arguments);
190
184
  };
191
- var on = module.setting('on');
192
- var options = $.extend({}, settings.popupOptions, {
185
+ let on = module.setting('on');
186
+ let options = $.extend({}, settings.popupOptions, {
193
187
  popup: $container,
194
188
  movePopup: !settings.context,
195
189
  on: on,
@@ -219,7 +213,7 @@
219
213
  module.check.disabled();
220
214
  },
221
215
  date: function () {
222
- var date;
216
+ let date;
223
217
  if (settings.initialDate) {
224
218
  date = parser.date(settings.initialDate, settings);
225
219
  } else if ($module.data(metadata.date) !== undefined) {
@@ -234,11 +228,9 @@
234
228
 
235
229
  trigger: {
236
230
  change: function () {
237
- var
238
- inputElement = $input[0]
239
- ;
231
+ let inputElement = $input[0];
240
232
  if (inputElement) {
241
- var events = document.createEvent('HTMLEvents');
233
+ let events = document.createEvent('HTMLEvents');
242
234
  module.verbose('Triggering native change event');
243
235
  events.initEvent('change', true, false);
244
236
  inputElement.dispatchEvent(events);
@@ -248,57 +240,49 @@
248
240
 
249
241
  create: {
250
242
  calendar: function () {
251
- var
252
- i,
253
- r,
254
- c,
255
- p,
256
- row,
257
- cell,
258
- pageGrid
259
- ;
260
-
261
- var
262
- mode = module.get.mode(),
263
- today = new Date(),
264
- date = module.get.date(),
265
- focusDate = module.get.focusDate(),
266
- display = module.helper.dateInRange(focusDate || date || parser.date(settings.initialDate, settings) || today)
267
- ;
243
+ let i;
244
+ let r;
245
+ let c;
246
+ let p;
247
+ let row;
248
+ let cell;
249
+ let pageGrid;
250
+
251
+ let mode = module.get.mode();
252
+ let today = new Date();
253
+ let date = module.get.date();
254
+ let focusDate = module.get.focusDate();
255
+ let display = module.helper.dateInRange(focusDate || date || parser.date(settings.initialDate, settings) || today);
268
256
 
269
257
  if (!focusDate) {
270
258
  focusDate = display;
271
259
  module.set.focusDate(focusDate, false, false);
272
260
  }
273
261
 
274
- var
275
- isYear = mode === 'year',
276
- isMonth = mode === 'month',
277
- isDay = mode === 'day',
278
- isHour = mode === 'hour',
279
- isMinute = mode === 'minute',
280
- isTimeOnly = settings.type === 'time'
281
- ;
262
+ let isYear = mode === 'year';
263
+ let isMonth = mode === 'month';
264
+ let isDay = mode === 'day';
265
+ let isHour = mode === 'hour';
266
+ let isMinute = mode === 'minute';
267
+ let isTimeOnly = settings.type === 'time';
282
268
 
283
- var multiMonth = Math.max(settings.multiMonth, 1);
284
- var monthOffset = !isDay ? 0 : module.get.monthOffset();
269
+ let multiMonth = Math.max(settings.multiMonth, 1);
270
+ let monthOffset = !isDay ? 0 : module.get.monthOffset();
285
271
 
286
- var
287
- minute = display.getMinutes(),
288
- hour = display.getHours(),
289
- day = display.getDate(),
290
- startMonth = display.getMonth() + monthOffset,
291
- year = display.getFullYear()
292
- ;
272
+ let minute = display.getMinutes();
273
+ let hour = display.getHours();
274
+ let day = display.getDate();
275
+ let startMonth = display.getMonth() + monthOffset;
276
+ let year = display.getFullYear();
293
277
 
294
- var columns = isDay
278
+ let columns = isDay
295
279
  ? (settings.showWeekNumbers ? 8 : 7)
296
280
  : (isHour ? 4 : timeGap.column);
297
- var rows = isDay || isHour ? 6 : timeGap.row;
298
- var pages = isDay ? multiMonth : 1;
281
+ let rows = isDay || isHour ? 6 : timeGap.row;
282
+ let pages = isDay ? multiMonth : 1;
299
283
 
300
- var container = $container;
301
- var tooltipPosition = container.hasClass('left') ? 'right center' : 'left center';
284
+ let container = $container;
285
+ let tooltipPosition = container.hasClass('left') ? 'right center' : 'left center';
302
286
  container.empty();
303
287
  if (pages > 1) {
304
288
  pageGrid = $('<div/>').addClass(className.grid).appendTo(container);
@@ -306,65 +290,63 @@
306
290
 
307
291
  for (p = 0; p < pages; p++) {
308
292
  if (pages > 1) {
309
- var pageColumn = $('<div/>').addClass(className.column).appendTo(pageGrid);
293
+ let pageColumn = $('<div/>').addClass(className.column).appendTo(pageGrid);
310
294
  container = pageColumn;
311
295
  }
312
296
 
313
- var month = startMonth + p;
314
- var firstMonthDayColumn = (new Date(year, month, 1).getDay() - (settings.firstDayOfWeek % 7) + 7) % 7;
297
+ let month = startMonth + p;
298
+ let firstMonthDayColumn = (new Date(year, month, 1).getDay() - (settings.firstDayOfWeek % 7) + 7) % 7;
315
299
  if (!settings.constantHeight && isDay) {
316
- var requiredCells = new Date(year, month + 1, 0).getDate() + firstMonthDayColumn;
300
+ let requiredCells = new Date(year, month + 1, 0).getDate() + firstMonthDayColumn;
317
301
  rows = Math.ceil(requiredCells / 7);
318
302
  }
319
303
 
320
- var
321
- yearChange = isYear ? 10 : (isMonth ? 1 : 0),
322
- monthChange = isDay ? 1 : 0,
323
- dayChange = isHour || isMinute ? 1 : 0,
324
- prevNextDay = isHour || isMinute ? day : 1,
325
- prevDate = new Date(year - yearChange, month - monthChange, prevNextDay - dayChange, hour),
326
- nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour),
327
- prevLast = isYear
328
- ? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0)
329
- : (isMonth
330
- ? new Date(year, 0, 0)
331
- : (isDay // eslint-disable-line unicorn/no-nested-ternary
332
- ? new Date(year, month, 0)
333
- : new Date(year, month, day, -1))),
334
- nextFirst = isYear
335
- ? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1)
336
- : (isMonth
337
- ? new Date(year + 1, 0, 1)
338
- : (isDay // eslint-disable-line unicorn/no-nested-ternary
339
- ? new Date(year, month + 1, 1)
340
- : new Date(year, month, day + 1)))
341
- ;
342
-
343
- var tempMode = mode;
304
+ let yearChange = isYear ? 10 : (isMonth ? 1 : 0);
305
+ let monthChange = isDay ? 1 : 0;
306
+ let dayChange = isHour || isMinute ? 1 : 0;
307
+ let prevNextDay = isHour || isMinute ? day : 1;
308
+ let prevDate = new Date(year - yearChange, month - monthChange, prevNextDay - dayChange, hour);
309
+ let nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour);
310
+ let prevLast = isYear
311
+ ? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0)
312
+ : (isMonth
313
+ ? new Date(year, 0, 0)
314
+ : (isDay // eslint-disable-line unicorn/no-nested-ternary
315
+ ? new Date(year, month, 0)
316
+ : new Date(year, month, day, -1)));
317
+ let nextFirst = isYear
318
+ ? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1)
319
+ : (isMonth
320
+ ? new Date(year + 1, 0, 1)
321
+ : (isDay // eslint-disable-line unicorn/no-nested-ternary
322
+ ? new Date(year, month + 1, 1)
323
+ : new Date(year, month, day + 1)));
324
+
325
+ let tempMode = mode;
344
326
  if (isDay && settings.showWeekNumbers) {
345
327
  tempMode += ' andweek';
346
328
  }
347
- var table = $('<table/>').addClass(className.table).addClass(tempMode).addClass(numberText[columns] + ' column')
329
+ let table = $('<table/>').addClass(className.table).addClass(tempMode).addClass(numberText[columns] + ' column')
348
330
  .appendTo(container);
349
331
  if (isInverted) {
350
332
  table.addClass(className.inverted);
351
333
  }
352
- var textColumns = columns;
334
+ let textColumns = columns;
353
335
  // no header for time-only mode
354
336
  if (!isTimeOnly) {
355
- var thead = $('<thead/>').appendTo(table);
337
+ let thead = $('<thead/>').appendTo(table);
356
338
 
357
339
  row = $('<tr/>').appendTo(thead);
358
340
  cell = $('<th/>').attr('colspan', '' + columns).appendTo(row);
359
341
 
360
- var headerDate = isYear || isMonth
342
+ let headerDate = isYear || isMonth
361
343
  ? new Date(year, 0, 1)
362
344
  : (isDay
363
345
  ? new Date(year, month, 1)
364
346
  : new Date(year, month, day, hour, minute));
365
- var headerText = $('<span/>').addClass(className.link).appendTo(cell);
347
+ let headerText = $('<span/>').addClass(className.link).appendTo(cell);
366
348
  headerText.text(module.helper.dateFormat(formatter[mode + 'Header'], headerDate));
367
- var newMode = isMonth
349
+ let newMode = isMonth
368
350
  ? (settings.disableYear ? 'day' : 'year')
369
351
  : (isDay
370
352
  ? (settings.disableMonth ? 'year' : 'month') // eslint-disable-line unicorn/no-nested-ternary
@@ -372,14 +354,14 @@
372
354
  headerText.data(metadata.mode, newMode);
373
355
 
374
356
  if (p === 0) {
375
- var prev = $('<span/>').addClass(className.prev).appendTo(cell);
357
+ let prev = $('<span/>').addClass(className.prev).appendTo(cell);
376
358
  prev.data(metadata.focusDate, prevDate);
377
359
  prev.toggleClass(className.disabledCell, !module.helper.isDateInRange(prevLast, mode));
378
360
  $('<i/>').addClass(className.prevIcon).appendTo(prev);
379
361
  }
380
362
 
381
363
  if (p === pages - 1) {
382
- var next = $('<span/>').addClass(className.next).appendTo(cell);
364
+ let next = $('<span/>').addClass(className.next).appendTo(cell);
383
365
  next.data(metadata.focusDate, nextDate);
384
366
  next.toggleClass(className.disabledCell, !module.helper.isDateInRange(nextFirst, mode));
385
367
  $('<i/>').addClass(className.nextIcon).appendTo(next);
@@ -399,7 +381,7 @@
399
381
  }
400
382
  }
401
383
 
402
- var tbody = $('<tbody/>').appendTo(table);
384
+ let tbody = $('<tbody/>').appendTo(table);
403
385
  i = isYear
404
386
  ? Math.ceil(year / 10) * 10 - 9
405
387
  : (isDay ? 1 - firstMonthDayColumn : 0);
@@ -411,7 +393,7 @@
411
393
  cell.addClass(className.weekCell);
412
394
  }
413
395
  for (c = 0; c < textColumns; c++, i++) {
414
- var cellDate = isYear
396
+ let cellDate = isYear
415
397
  ? new Date(i, month, 1, hour, minute)
416
398
  : (isMonth
417
399
  ? new Date(year, i, 1, hour, minute)
@@ -420,7 +402,7 @@
420
402
  : (isHour
421
403
  ? new Date(year, month, day, i)
422
404
  : new Date(year, month, day, hour, i * settings.minTimeGap))));
423
- var cellText = isYear
405
+ let cellText = isYear
424
406
  ? i
425
407
  : (isMonth
426
408
  ? settings.text.monthsShort[i]
@@ -430,11 +412,11 @@
430
412
  cell = $('<td/>').addClass(className.cell).appendTo(row);
431
413
  cell.text(cellText);
432
414
  cell.data(metadata.date, cellDate);
433
- var adjacent = isDay && cellDate.getMonth() !== ((month + 12) % 12);
434
- var disabled = (!settings.selectAdjacentDays && adjacent) || !module.helper.isDateInRange(cellDate, mode) || settings.isDisabled(cellDate, mode) || module.helper.isDisabled(cellDate, mode) || !module.helper.isEnabled(cellDate, mode);
435
- var eventDate;
415
+ let adjacent = isDay && cellDate.getMonth() !== ((month + 12) % 12);
416
+ let disabled = (!settings.selectAdjacentDays && adjacent) || !module.helper.isDateInRange(cellDate, mode) || settings.isDisabled(cellDate, mode) || module.helper.isDisabled(cellDate, mode) || !module.helper.isEnabled(cellDate, mode);
417
+ let eventDate;
436
418
  if (disabled) {
437
- var disabledDate = module.helper.findDayAsObject(cellDate, mode, settings.disabledDates);
419
+ let disabledDate = module.helper.findDayAsObject(cellDate, mode, settings.disabledDates);
438
420
  if (disabledDate !== null && disabledDate[metadata.message]) {
439
421
  cell.attr('data-tooltip', disabledDate[metadata.message]);
440
422
  cell.attr('data-position', disabledDate[metadata.position] || tooltipPosition);
@@ -446,7 +428,7 @@
446
428
  }
447
429
  }
448
430
  if (mode === 'hour') {
449
- var disabledHour = module.helper.findHourAsObject(cellDate, mode, settings.disabledHours);
431
+ let disabledHour = module.helper.findHourAsObject(cellDate, mode, settings.disabledHours);
450
432
  if (disabledHour !== null && disabledHour[metadata.message]) {
451
433
  cell.attr('data-tooltip', disabledHour[metadata.message]);
452
434
  cell.attr('data-position', disabledHour[metadata.position] || tooltipPosition);
@@ -474,8 +456,8 @@
474
456
  }
475
457
  }
476
458
  }
477
- var active = module.helper.dateEqual(cellDate, date, mode);
478
- var isToday = module.helper.dateEqual(cellDate, today, mode);
459
+ let active = module.helper.dateEqual(cellDate, date, mode);
460
+ let isToday = module.helper.dateEqual(cellDate, today, mode);
479
461
  cell.toggleClass(className.adjacentCell, adjacent && !eventDate);
480
462
  cell.toggleClass(className.disabledCell, disabled);
481
463
  cell.toggleClass(className.activeCell, active && !(adjacent && disabled));
@@ -484,7 +466,7 @@
484
466
  }
485
467
 
486
468
  // Allow for external modifications of each cell
487
- var cellOptions = {
469
+ let cellOptions = {
488
470
  mode: mode,
489
471
  adjacent: adjacent,
490
472
  disabled: disabled,
@@ -502,8 +484,8 @@
502
484
  }
503
485
 
504
486
  if (settings.today) {
505
- var todayRow = $('<tr/>').appendTo(tbody);
506
- var todayButton = $('<td/>').attr('colspan', '' + columns).addClass(className.today).appendTo(todayRow);
487
+ let todayRow = $('<tr/>').appendTo(tbody);
488
+ let todayButton = $('<td/>').attr('colspan', '' + columns).addClass(className.today).appendTo(todayRow);
507
489
  todayButton.text(formatter.today(settings));
508
490
  todayButton.data(metadata.date, today);
509
491
  }
@@ -520,24 +502,24 @@
520
502
  update: {
521
503
  focus: function (updateRange, container) {
522
504
  container = container || $container;
523
- var mode = module.get.mode();
524
- var date = module.get.date();
525
- var focusDate = module.get.focusDate();
526
- var startDate = module.get.startDate();
527
- var endDate = module.get.endDate();
528
- var rangeDate = (updateRange ? focusDate : null) || date || (!isTouch ? focusDate : null);
505
+ let mode = module.get.mode();
506
+ let date = module.get.date();
507
+ let focusDate = module.get.focusDate();
508
+ let startDate = module.get.startDate();
509
+ let endDate = module.get.endDate();
510
+ let rangeDate = (updateRange ? focusDate : null) || date || (!isTouch ? focusDate : null);
529
511
 
530
512
  container.find('td').each(function () {
531
- var $cell = $(this);
532
- var cellDate = $cell.data(metadata.date);
513
+ let $cell = $(this);
514
+ let cellDate = $cell.data(metadata.date);
533
515
  if (!cellDate) {
534
516
  return;
535
517
  }
536
- var disabled = $cell.hasClass(className.disabledCell);
537
- var active = $cell.hasClass(className.activeCell);
538
- var adjacent = $cell.hasClass(className.adjacentCell);
539
- var focused = module.helper.dateEqual(cellDate, focusDate, mode);
540
- var inRange = !rangeDate
518
+ let disabled = $cell.hasClass(className.disabledCell);
519
+ let active = $cell.hasClass(className.activeCell);
520
+ let adjacent = $cell.hasClass(className.adjacentCell);
521
+ let focused = module.helper.dateEqual(cellDate, focusDate, mode);
522
+ let inRange = !rangeDate
541
523
  ? false
542
524
  : (!!startDate && module.helper.isDateInRange(cellDate, mode, startDate, rangeDate))
543
525
  || (!!endDate && module.helper.isDateInRange(cellDate, mode, rangeDate, endDate));
@@ -556,13 +538,13 @@
556
538
  },
557
539
 
558
540
  refreshTooltips: function () {
559
- var winWidth = $(window).width();
541
+ let winWidth = $(window).width();
560
542
  $container.find('td[data-position]').each(function () {
561
- var $cell = $(this);
562
- var tooltipWidth = window.getComputedStyle($cell[0], '::after').width.replace(/[^\d.]/g, '');
563
- var tooltipPosition = $cell.attr('data-position');
543
+ let $cell = $(this);
544
+ let tooltipWidth = window.getComputedStyle($cell[0], '::after').width.replace(/[^\d.]/g, '');
545
+ let tooltipPosition = $cell.attr('data-position');
564
546
  // use a fallback width of 250 (calendar width) for IE/Edge (which return "auto")
565
- var calcPosition = (winWidth - $cell.width() - (parseInt(tooltipWidth, 10) || 250)) > $cell.offset().left ? 'right' : 'left';
547
+ let calcPosition = (winWidth - $cell.width() - (parseInt(tooltipWidth, 10) || 250)) > $cell.offset().left ? 'right' : 'left';
566
548
  if (tooltipPosition.indexOf(calcPosition) === -1) {
567
549
  $cell.attr('data-position', tooltipPosition.replace(/(left|right)/, calcPosition));
568
550
  }
@@ -600,9 +582,9 @@
600
582
 
601
583
  event: {
602
584
  mouseover: function (event) {
603
- var target = $(event.target);
604
- var date = target.data(metadata.date);
605
- var mousedown = event.buttons === 1;
585
+ let target = $(event.target);
586
+ let date = target.data(metadata.date);
587
+ let mousedown = event.buttons === 1;
606
588
  if (date) {
607
589
  module.set.focusDate(date, false, true, mousedown);
608
590
  }
@@ -613,8 +595,8 @@
613
595
  event.preventDefault();
614
596
  }
615
597
  isTouchDown = event.type.indexOf('touch') >= 0;
616
- var target = $(event.target);
617
- var date = target.data(metadata.date);
598
+ let target = $(event.target);
599
+ let date = target.data(metadata.date);
618
600
  if (date) {
619
601
  module.set.focusDate(date, false, true, true);
620
602
  }
@@ -625,20 +607,20 @@
625
607
  event.preventDefault();
626
608
  event.stopPropagation();
627
609
  isTouchDown = false;
628
- var target = $(event.target);
610
+ let target = $(event.target);
629
611
  if (target.hasClass('disabled')) {
630
612
  return;
631
613
  }
632
- var parent = target.parent();
614
+ let parent = target.parent();
633
615
  if (parent.data(metadata.date) || parent.data(metadata.focusDate) || parent.data(metadata.mode)) {
634
616
  // clicked on a child element, switch to parent (used when clicking directly on the prev/next <i> icon element)
635
617
  target = parent;
636
618
  }
637
- var date = target.data(metadata.date);
638
- var focusDate = target.data(metadata.focusDate);
639
- var mode = target.data(metadata.mode);
619
+ let date = target.data(metadata.date);
620
+ let focusDate = target.data(metadata.focusDate);
621
+ let mode = target.data(metadata.mode);
640
622
  if (date && settings.onSelect.call(element, date, module.get.mode()) !== false) {
641
- var forceSet = target.hasClass(className.today);
623
+ let forceSet = target.hasClass(className.today);
642
624
  module.selectDate(date, forceSet);
643
625
  } else if (focusDate) {
644
626
  module.set.focusDate(focusDate);
@@ -647,38 +629,38 @@
647
629
  }
648
630
  },
649
631
  keydown: function (event) {
650
- var keyCode = event.which;
632
+ let keyCode = event.which;
651
633
  if (keyCode === 9) {
652
634
  // tab
653
635
  module.popup('hide');
654
636
  }
655
637
 
656
638
  if (module.popup('is visible')) {
657
- var mode = module.get.mode();
639
+ let mode = module.get.mode();
658
640
  switch (keyCode) {
659
641
  // arrow keys
660
642
  case 37:
661
643
  case 38:
662
644
  case 39:
663
645
  case 40: {
664
- var bigIncrement = mode === 'day'
646
+ let bigIncrement = mode === 'day'
665
647
  ? 7
666
648
  : (mode === 'hour'
667
649
  ? 4
668
650
  : (mode === 'minute' ? timeGap.column : 3)); // eslint-disable-line unicorn/no-nested-ternary
669
- var increment = keyCode === 37
651
+ let increment = keyCode === 37
670
652
  ? -1
671
653
  : (keyCode === 38
672
654
  ? -bigIncrement
673
655
  : (keyCode === 39 ? 1 : bigIncrement)); // eslint-disable-line unicorn/no-nested-ternary
674
656
  increment *= mode === 'minute' ? settings.minTimeGap : 1;
675
- var focusDate = module.get.focusDate() || module.get.date() || new Date();
676
- var year = focusDate.getFullYear() + (mode === 'year' ? increment : 0);
677
- var month = focusDate.getMonth() + (mode === 'month' ? increment : 0);
678
- var day = focusDate.getDate() + (mode === 'day' ? increment : 0);
679
- var hour = focusDate.getHours() + (mode === 'hour' ? increment : 0);
680
- var minute = focusDate.getMinutes() + (mode === 'minute' ? increment : 0);
681
- var newFocusDate = new Date(year, month, day, hour, minute);
657
+ let focusDate = module.get.focusDate() || module.get.date() || new Date();
658
+ let year = focusDate.getFullYear() + (mode === 'year' ? increment : 0);
659
+ let month = focusDate.getMonth() + (mode === 'month' ? increment : 0);
660
+ let day = focusDate.getDate() + (mode === 'day' ? increment : 0);
661
+ let hour = focusDate.getHours() + (mode === 'hour' ? increment : 0);
662
+ let minute = focusDate.getMinutes() + (mode === 'minute' ? increment : 0);
663
+ let newFocusDate = new Date(year, month, day, hour, minute);
682
664
  if (settings.type === 'time') {
683
665
  newFocusDate = module.helper.mergeDateTime(focusDate, newFocusDate);
684
666
  }
@@ -690,7 +672,7 @@
690
672
  }
691
673
  // enter key
692
674
  case 13: {
693
- var date = module.get.focusDate();
675
+ let date = module.get.focusDate();
694
676
  if (date && !settings.isDisabled(date, mode) && !module.helper.isDisabled(date, mode) && module.helper.isEnabled(date, mode)) {
695
677
  if (settings.onSelect.call(element, date, module.get.mode()) !== false) {
696
678
  module.selectDate(date);
@@ -719,8 +701,8 @@
719
701
  }
720
702
  },
721
703
  inputChange: function () {
722
- var val = $input.val();
723
- var date = parser.date(val, settings);
704
+ let val = $input.val();
705
+ let date = parser.date(val, settings);
724
706
  module.set.date(date, false);
725
707
  },
726
708
  inputFocus: function () {
@@ -729,8 +711,8 @@
729
711
  inputBlur: function () {
730
712
  $container.removeClass(className.active);
731
713
  if (settings.formatInput) {
732
- var date = module.get.date();
733
- var text = module.helper.dateFormat(formatter[settings.type], date);
714
+ let date = module.get.date();
715
+ let text = module.helper.dateFormat(formatter[settings.type], date);
734
716
  $input.val(text);
735
717
  }
736
718
  if (selectionComplete) {
@@ -790,12 +772,11 @@
790
772
  get: {
791
773
  weekOfYear: function (weekYear, weekMonth, weekDay) {
792
774
  // adapted from http://www.merlyn.demon.co.uk/weekcalc.htm
793
- var ms1d = 24 * 3600 * 1000,
794
- ms7d = 7 * ms1d,
795
- DC3 = Date.UTC(weekYear, weekMonth, weekDay + 3) / ms1d, // an absolute day number
796
- AWN = Math.floor(DC3 / 7), // an absolute week number
797
- Wyr = new Date(AWN * ms7d).getUTCFullYear()
798
- ;
775
+ let ms1d = 24 * 3600 * 1000;
776
+ let ms7d = 7 * ms1d;
777
+ let DC3 = Date.UTC(weekYear, weekMonth, weekDay + 3) / ms1d; // an absolute day number
778
+ let AWN = Math.floor(DC3 / 7); // an absolute week number
779
+ let Wyr = new Date(AWN * ms7d).getUTCFullYear();
799
780
 
800
781
  return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
801
782
  },
@@ -812,7 +793,7 @@
812
793
  return module.helper.dateObjectOrFormatted(format, $module.data(metadata.focusDate));
813
794
  },
814
795
  startDate: function (format) {
815
- var startModule = module.get.calendarModule(settings.startCalendar);
796
+ let startModule = module.get.calendarModule(settings.startCalendar);
816
797
 
817
798
  if (startModule) {
818
799
  return startModule.get.date(format);
@@ -821,7 +802,7 @@
821
802
  return module.helper.dateObjectOrFormatted(format, $module.data(metadata.startDate));
822
803
  },
823
804
  endDate: function (format) {
824
- var endModule = module.get.calendarModule(settings.endCalendar);
805
+ let endModule = module.get.calendarModule(settings.endCalendar);
825
806
 
826
807
  if (endModule) {
827
808
  return endModule.get.date(format);
@@ -840,12 +821,12 @@
840
821
  },
841
822
  mode: function () {
842
823
  // only returns valid modes for the current settings
843
- var mode = $module.data(metadata.mode) || settings.startMode;
824
+ let mode = $module.data(metadata.mode) || settings.startMode;
844
825
 
845
826
  return module.get.validatedMode(mode);
846
827
  },
847
828
  validatedMode: function (mode) {
848
- var validModes = module.get.validModes();
829
+ let validModes = module.get.validModes();
849
830
  if ($.inArray(mode, validModes) >= 0) {
850
831
  return mode;
851
832
  }
@@ -860,7 +841,7 @@
860
841
  return $module.data(metadata.type) || settings.type;
861
842
  },
862
843
  validModes: function () {
863
- var validModes = [];
844
+ let validModes = [];
864
845
  if (settings.type !== 'time') {
865
846
  if (!settings.disableYear || settings.type === 'year') {
866
847
  validModes.push('year');
@@ -910,8 +891,8 @@
910
891
  date = module.helper.sanitiseDate(date);
911
892
  date = module.helper.dateInRange(date);
912
893
 
913
- var mode = module.get.mode();
914
- var text = module.helper.dateFormat(formatter[settings.type], date);
894
+ let mode = module.get.mode();
895
+ let text = module.helper.dateFormat(formatter[settings.type], date);
915
896
 
916
897
  if (fireChange && settings.onBeforeChange.call(element, date, text, mode) === false) {
917
898
  return false;
@@ -923,7 +904,7 @@
923
904
  return false;
924
905
  }
925
906
 
926
- var endDate = module.get.endDate();
907
+ let endDate = module.get.endDate();
927
908
  if (!!endDate && !!date && date > endDate) {
928
909
  // selected date is greater than end date in range, so clear end date
929
910
  module.set.endDate();
@@ -940,7 +921,7 @@
940
921
  },
941
922
  startDate: function (date, refreshCalendar) {
942
923
  date = module.helper.sanitiseDate(date);
943
- var startModule = module.get.calendarModule(settings.startCalendar);
924
+ let startModule = module.get.calendarModule(settings.startCalendar);
944
925
  if (startModule) {
945
926
  startModule.set.date(date);
946
927
  }
@@ -948,7 +929,7 @@
948
929
  },
949
930
  endDate: function (date, refreshCalendar) {
950
931
  date = module.helper.sanitiseDate(date);
951
- var endModule = module.get.calendarModule(settings.endCalendar);
932
+ let endModule = module.get.calendarModule(settings.endCalendar);
952
933
  if (endModule) {
953
934
  endModule.set.date(date);
954
935
  }
@@ -957,17 +938,17 @@
957
938
  focusDate: function (date, refreshCalendar, updateFocus, updateRange) {
958
939
  date = module.helper.sanitiseDate(date);
959
940
  date = module.helper.dateInRange(date);
960
- var isDay = module.get.mode() === 'day';
961
- var oldFocusDate = module.get.focusDate();
941
+ let isDay = module.get.mode() === 'day';
942
+ let oldFocusDate = module.get.focusDate();
962
943
  if (isDay && date && oldFocusDate) {
963
- var yearDelta = date.getFullYear() - oldFocusDate.getFullYear();
964
- var monthDelta = yearDelta * 12 + date.getMonth() - oldFocusDate.getMonth();
944
+ let yearDelta = date.getFullYear() - oldFocusDate.getFullYear();
945
+ let monthDelta = yearDelta * 12 + date.getMonth() - oldFocusDate.getMonth();
965
946
  if (monthDelta) {
966
- var monthOffset = module.get.monthOffset() - monthDelta;
947
+ let monthOffset = module.get.monthOffset() - monthDelta;
967
948
  module.set.monthOffset(monthOffset, false);
968
949
  }
969
950
  }
970
- var changed = module.set.dataKeyValue(metadata.focusDate, date, !!date && refreshCalendar);
951
+ let changed = module.set.dataKeyValue(metadata.focusDate, date, !!date && refreshCalendar);
971
952
  updateFocus = (updateFocus !== false && changed && refreshCalendar === false) || focusDateUsedForRange != updateRange;
972
953
  focusDateUsedForRange = updateRange;
973
954
  if (updateFocus) {
@@ -993,7 +974,7 @@
993
974
  }
994
975
  },
995
976
  monthOffset: function (monthOffset, refreshCalendar) {
996
- var multiMonth = Math.max(settings.multiMonth, 1);
977
+ let multiMonth = Math.max(settings.multiMonth, 1);
997
978
  monthOffset = Math.max(1 - multiMonth, Math.min(0, monthOffset));
998
979
  module.set.dataKeyValue(metadata.monthOffset, monthOffset, refreshCalendar);
999
980
  },
@@ -1001,8 +982,8 @@
1001
982
  module.set.dataKeyValue(metadata.mode, mode, refreshCalendar);
1002
983
  },
1003
984
  dataKeyValue: function (key, value, refreshCalendar) {
1004
- var oldValue = $module.data(key);
1005
- var equal = oldValue === value || (oldValue <= value && oldValue >= value); // equality test for dates and string objects
985
+ let oldValue = $module.data(key);
986
+ let equal = oldValue === value || (oldValue <= value && oldValue >= value); // equality test for dates and string objects
1006
987
  if (value) {
1007
988
  $module.data(key, value);
1008
989
  } else {
@@ -1019,20 +1000,20 @@
1019
1000
 
1020
1001
  selectDate: function (date, forceSet) {
1021
1002
  module.verbose('New date selection', date);
1022
- var mode = module.get.mode();
1023
- var complete = forceSet || mode === 'minute'
1003
+ let mode = module.get.mode();
1004
+ let complete = forceSet || mode === 'minute'
1024
1005
  || (settings.disableMinute && mode === 'hour')
1025
1006
  || (settings.type === 'date' && mode === 'day')
1026
1007
  || (settings.type === 'month' && mode === 'month')
1027
1008
  || (settings.type === 'year' && mode === 'year');
1028
1009
  if (complete) {
1029
- var canceled = module.set.date(date) === false;
1010
+ let canceled = module.set.date(date) === false;
1030
1011
  if (!canceled) {
1031
1012
  selectionComplete = true;
1032
1013
  if (settings.closable) {
1033
1014
  module.popup('hide');
1034
1015
  // if this is a range calendar, focus the container or input. This will open the popup from its event listeners.
1035
- var endModule = module.get.calendarModule(settings.endCalendar);
1016
+ let endModule = module.get.calendarModule(settings.endCalendar);
1036
1017
  if (endModule) {
1037
1018
  endModule.refresh();
1038
1019
  if (endModule.setting('on') !== 'focus') {
@@ -1043,7 +1024,7 @@
1043
1024
  }
1044
1025
  }
1045
1026
  } else {
1046
- var newMode = mode === 'year'
1027
+ let newMode = mode === 'year'
1047
1028
  ? (!settings.disableMonth ? 'month' : 'day')
1048
1029
  : (mode === 'month'
1049
1030
  ? 'day'
@@ -1094,46 +1075,44 @@
1094
1075
  return format.call(module, date, settings);
1095
1076
  }
1096
1077
 
1097
- var
1098
- D = date.getDate(),
1099
- M = date.getMonth(),
1100
- Y = date.getFullYear(),
1101
- d = date.getDay(),
1102
- H = date.getHours(),
1103
- m = date.getMinutes(),
1104
- s = date.getSeconds(),
1105
- w = module.get.weekOfYear(Y, M, D + 1 - settings.firstDayOfWeek),
1106
- h = H % 12 || 12,
1107
- a = H < 12 ? settings.text.am.toLowerCase() : settings.text.pm.toLowerCase(),
1108
- tokens = {
1109
- D: D,
1110
- DD: ('0' + D).slice(-2),
1111
- M: M + 1,
1112
- MM: ('0' + (M + 1)).slice(-2),
1113
- MMM: settings.text.monthsShort[M],
1114
- MMMM: settings.text.months[M],
1115
- Y: Y,
1116
- YY: String(Y).slice(2),
1117
- YYYY: Y,
1118
- d: d,
1119
- dd: settings.text.dayNamesShort[d].slice(0, 2),
1120
- ddd: settings.text.dayNamesShort[d],
1121
- dddd: settings.text.dayNames[d],
1122
- h: h,
1123
- hh: ('0' + h).slice(-2),
1124
- H: H,
1125
- HH: ('0' + H).slice(-2),
1126
- m: m,
1127
- mm: ('0' + m).slice(-2),
1128
- s: s,
1129
- ss: ('0' + s).slice(-2),
1130
- a: a,
1131
- A: a.toUpperCase(),
1132
- S: ['th', 'st', 'nd', 'rd'][(D % 10) > 3 ? 0 : ((D % 100) - (D % 10) === 10 ? 0 : D % 10)],
1133
- w: w,
1134
- ww: ('0' + w).slice(-2),
1135
- }
1136
- ;
1078
+ let D = date.getDate();
1079
+ let M = date.getMonth();
1080
+ let Y = date.getFullYear();
1081
+ let d = date.getDay();
1082
+ let H = date.getHours();
1083
+ let m = date.getMinutes();
1084
+ let s = date.getSeconds();
1085
+ let w = module.get.weekOfYear(Y, M, D + 1 - settings.firstDayOfWeek);
1086
+ let h = H % 12 || 12;
1087
+ let a = H < 12 ? settings.text.am.toLowerCase() : settings.text.pm.toLowerCase();
1088
+ let tokens = {
1089
+ D: D,
1090
+ DD: ('0' + D).slice(-2),
1091
+ M: M + 1,
1092
+ MM: ('0' + (M + 1)).slice(-2),
1093
+ MMM: settings.text.monthsShort[M],
1094
+ MMMM: settings.text.months[M],
1095
+ Y: Y,
1096
+ YY: String(Y).slice(2),
1097
+ YYYY: Y,
1098
+ d: d,
1099
+ dd: settings.text.dayNamesShort[d].slice(0, 2),
1100
+ ddd: settings.text.dayNamesShort[d],
1101
+ dddd: settings.text.dayNames[d],
1102
+ h: h,
1103
+ hh: ('0' + h).slice(-2),
1104
+ H: H,
1105
+ HH: ('0' + H).slice(-2),
1106
+ m: m,
1107
+ mm: ('0' + m).slice(-2),
1108
+ s: s,
1109
+ ss: ('0' + s).slice(-2),
1110
+ a: a,
1111
+ A: a.toUpperCase(),
1112
+ S: ['th', 'st', 'nd', 'rd'][(D % 10) > 3 ? 0 : ((D % 100) - (D % 10) === 10 ? 0 : D % 10)],
1113
+ w: w,
1114
+ ww: ('0' + w).slice(-2),
1115
+ };
1137
1116
 
1138
1117
  return format.replace(settings.regExp.token, function (match) {
1139
1118
  if (match in tokens) {
@@ -1159,7 +1138,7 @@
1159
1138
  },
1160
1139
  isDisabled: function (date, mode) {
1161
1140
  return (mode === 'day' || mode === 'month' || mode === 'year' || mode === 'hour') && (((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function (d) {
1162
- var blocked = false;
1141
+ let blocked = false;
1163
1142
 
1164
1143
  if (typeof d === 'string') {
1165
1144
  d = module.helper.sanitiseDate(d);
@@ -1179,7 +1158,7 @@
1179
1158
  } else if (Array.isArray(d[metadata.month])) {
1180
1159
  blocked = d[metadata.month].indexOf(date.getMonth()) > -1;
1181
1160
  } else if (d[metadata.month] instanceof Date) {
1182
- var sdate = module.helper.sanitiseDate(d[metadata.month]);
1161
+ let sdate = module.helper.sanitiseDate(d[metadata.month]);
1183
1162
 
1184
1163
  blocked = (date.getMonth() === sdate.getMonth()) && (date.getFullYear() === sdate.getFullYear());
1185
1164
  }
@@ -1196,7 +1175,7 @@
1196
1175
 
1197
1176
  return blocked;
1198
1177
  })) || (mode === 'hour' && settings.disabledHours.some(function (d) {
1199
- var blocked = false;
1178
+ let blocked = false;
1200
1179
 
1201
1180
  if (typeof d === 'string') {
1202
1181
  d = module.helper.sanitiseDate(d);
@@ -1239,7 +1218,7 @@
1239
1218
  isEnabled: function (date, mode) {
1240
1219
  if (mode === 'day') {
1241
1220
  return settings.enabledDates.length === 0 || settings.enabledDates.some(function (d) {
1242
- var enabled = false;
1221
+ let enabled = false;
1243
1222
 
1244
1223
  if (typeof d === 'string') {
1245
1224
  d = module.helper.sanitiseDate(d);
@@ -1258,14 +1237,14 @@
1258
1237
  },
1259
1238
  findDayAsObject: function (date, mode, dates) {
1260
1239
  if (mode === 'day' || mode === 'month' || mode === 'year') {
1261
- var d;
1262
- for (var i = 0; i < dates.length; i++) {
1240
+ let d;
1241
+ for (let i = 0; i < dates.length; i++) {
1263
1242
  d = dates[i];
1264
1243
  if (typeof d === 'string') {
1265
1244
  d = module.helper.sanitiseDate(d);
1266
1245
  }
1267
1246
  if (d instanceof Date && module.helper.dateEqual(date, d, mode)) {
1268
- var dateObject = {};
1247
+ let dateObject = {};
1269
1248
  dateObject[metadata.date] = d;
1270
1249
 
1271
1250
  return dateObject;
@@ -1289,7 +1268,7 @@
1289
1268
  return d;
1290
1269
  }
1291
1270
  } else if (d[metadata.month] instanceof Date) {
1292
- var sdate = module.helper.sanitiseDate(d[metadata.month]);
1271
+ let sdate = module.helper.sanitiseDate(d[metadata.month]);
1293
1272
  if ((date.getMonth() === sdate.getMonth()) && (date.getFullYear() === sdate.getFullYear())) {
1294
1273
  return d;
1295
1274
  }
@@ -1314,8 +1293,8 @@
1314
1293
  },
1315
1294
  findHourAsObject: function (date, mode, hours) {
1316
1295
  if (mode === 'hour') {
1317
- var d;
1318
- var hourCheck = function (date, d) {
1296
+ let d;
1297
+ let hourCheck = function (date, d) {
1319
1298
  if (d[metadata.hours]) {
1320
1299
  if (typeof d[metadata.hours] === 'number' && date.getHours() === d[metadata.hours]) {
1321
1300
  return d;
@@ -1327,7 +1306,7 @@
1327
1306
  }
1328
1307
  }
1329
1308
  };
1330
- for (var i = 0; i < hours.length; i++) {
1309
+ for (let i = 0; i < hours.length; i++) {
1331
1310
  d = hours[i];
1332
1311
  if (typeof d === 'number' && date.getHours() === d) {
1333
1312
  return null;
@@ -1377,11 +1356,11 @@
1377
1356
  mode = 'day';
1378
1357
  }
1379
1358
 
1380
- var isTimeOnly = settings.type === 'time';
1381
- var isYear = mode === 'year';
1382
- var isYearOrMonth = isYear || mode === 'month';
1383
- var isMinute = mode === 'minute';
1384
- var isHourOrMinute = isMinute || mode === 'hour';
1359
+ let isTimeOnly = settings.type === 'time';
1360
+ let isYear = mode === 'year';
1361
+ let isYearOrMonth = isYear || mode === 'month';
1362
+ let isMinute = mode === 'minute';
1363
+ let isHourOrMinute = isMinute || mode === 'hour';
1385
1364
  // only care about a minute accuracy of settings.minTimeGap
1386
1365
  date1 = new Date(
1387
1366
  isTimeOnly ? 2000 : date1.getFullYear(),
@@ -1405,7 +1384,7 @@
1405
1384
  },
1406
1385
  isDateInRange: function (date, mode, minDate, maxDate) {
1407
1386
  if (!minDate && !maxDate) {
1408
- var startDate = module.get.startDate();
1387
+ let startDate = module.get.startDate();
1409
1388
  minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
1410
1389
  maxDate = settings.maxDate;
1411
1390
  }
@@ -1417,12 +1396,12 @@
1417
1396
  },
1418
1397
  dateInRange: function (date, minDate, maxDate) {
1419
1398
  if (!minDate && !maxDate) {
1420
- var startDate = module.get.startDate();
1399
+ let startDate = module.get.startDate();
1421
1400
  minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
1422
1401
  maxDate = settings.maxDate;
1423
1402
  }
1424
1403
  minDate = minDate && new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), minDate.getHours(), settings.minTimeGap * Math.ceil(minDate.getMinutes() / settings.minTimeGap));
1425
- var isTimeOnly = settings.type === 'time';
1404
+ let isTimeOnly = settings.type === 'time';
1426
1405
 
1427
1406
  return !date
1428
1407
  ? date
@@ -1493,11 +1472,9 @@
1493
1472
  },
1494
1473
  performance: {
1495
1474
  log: function (message) {
1496
- var
1497
- currentTime,
1498
- executionTime,
1499
- previousTime
1500
- ;
1475
+ let currentTime;
1476
+ let executionTime;
1477
+ let previousTime;
1501
1478
  if (settings.performance) {
1502
1479
  currentTime = Date.now();
1503
1480
  previousTime = time || currentTime;
@@ -1516,10 +1493,8 @@
1516
1493
  }, 500);
1517
1494
  },
1518
1495
  display: function () {
1519
- var
1520
- title = settings.name + ':',
1521
- totalTime = 0
1522
- ;
1496
+ let title = settings.name + ':';
1497
+ let totalTime = 0;
1523
1498
  time = false;
1524
1499
  clearTimeout(module.performance.timer);
1525
1500
  $.each(performance, function (index, data) {
@@ -1541,22 +1516,19 @@
1541
1516
  },
1542
1517
  },
1543
1518
  invoke: function (query, passedArguments, context) {
1544
- var
1545
- object = instance,
1546
- maxDepth,
1547
- found,
1548
- response
1549
- ;
1519
+ let object = instance;
1520
+ let maxDepth;
1521
+ let found;
1522
+ let response;
1550
1523
  passedArguments = passedArguments || queryArguments;
1551
1524
  context = context || element;
1552
1525
  if (typeof query === 'string' && object !== undefined) {
1553
1526
  query = query.split(/[ .]/);
1554
1527
  maxDepth = query.length - 1;
1555
1528
  $.each(query, function (depth, value) {
1556
- var camelCaseValue = depth !== maxDepth
1529
+ let camelCaseValue = depth !== maxDepth
1557
1530
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1558
- : query
1559
- ;
1531
+ : query;
1560
1532
  if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
1561
1533
  object = object[camelCaseValue];
1562
1534
  } else if (object[camelCaseValue] !== undefined) {
@@ -1678,7 +1650,7 @@
1678
1650
 
1679
1651
  formatter: {
1680
1652
  yearHeader: function (date, settings) {
1681
- var decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
1653
+ let decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
1682
1654
 
1683
1655
  return (decadeYear - 9) + ' - ' + (decadeYear + 2);
1684
1656
  },
@@ -1719,42 +1691,34 @@
1719
1691
  }
1720
1692
  // Reverse date and month in some cases
1721
1693
  text = settings.monthFirst || !/^\d{1,2}[./-]/.test(text) ? text : text.replace(/[./-]/g, '/').replace(/(\d+)\/(\d+)/, '$2/$1');
1722
- var textDate = new Date(text);
1723
- var numberOnly = text.match(/^\d+$/) !== null;
1724
- var isShortYear = text.match(/^(?:\d{1,2}[./-]){2}\d{1,2}$/) !== null;
1694
+ let textDate = new Date(text);
1695
+ let numberOnly = text.match(/^\d+$/) !== null;
1696
+ let isShortYear = text.match(/^(?:\d{1,2}[./-]){2}\d{1,2}$/) !== null;
1725
1697
  if (!isShortYear && !numberOnly && !isNaN(textDate.getDate())) {
1726
1698
  return textDate;
1727
1699
  }
1728
1700
  text = text.toLowerCase();
1729
1701
 
1730
- var
1731
- i,
1732
- j,
1733
- k
1734
- ;
1735
- var
1736
- minute = -1,
1737
- hour = -1,
1738
- day = -1,
1739
- month = -1,
1740
- year = -1
1741
- ;
1742
- var isAm;
1743
-
1744
- var isTimeOnly = settings.type === 'time';
1745
- var isDateOnly = settings.type.indexOf('time') < 0;
1746
-
1747
- var
1748
- words = text.split(settings.regExp.dateWords),
1749
- word
1750
- ;
1751
- var
1752
- numbers = text.split(settings.regExp.dateNumbers),
1753
- number
1754
- ;
1755
-
1756
- var parts;
1757
- var monthString;
1702
+ let i;
1703
+ let j;
1704
+ let k;
1705
+ let minute = -1;
1706
+ let hour = -1;
1707
+ let day = -1;
1708
+ let month = -1;
1709
+ let year = -1;
1710
+ let isAm;
1711
+
1712
+ let isTimeOnly = settings.type === 'time';
1713
+ let isDateOnly = settings.type.indexOf('time') < 0;
1714
+
1715
+ let words = text.split(settings.regExp.dateWords);
1716
+ let word;
1717
+ let numbers = text.split(settings.regExp.dateNumbers);
1718
+ let number;
1719
+
1720
+ let parts;
1721
+ let monthString;
1758
1722
 
1759
1723
  if (!isDateOnly) {
1760
1724
  // am/pm
@@ -1938,7 +1902,7 @@
1938
1902
  }
1939
1903
  }
1940
1904
 
1941
- var date = new Date(year, month - 1, day, hour, minute);
1905
+ let date = new Date(year, month - 1, day, hour, minute);
1942
1906
  if (date.getMonth() !== month - 1 || date.getFullYear() !== year) {
1943
1907
  // month or year don't match up, switch to the last day of the month
1944
1908
  date = new Date(year, month, 0, hour, minute);