fomantic-ui 2.9.1-beta.22 → 2.9.1-beta.24

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 (256) hide show
  1. package/.eslint/index.js +23 -0
  2. package/.eslint/no-extra-parens-rule.js +17 -0
  3. package/.eslint/package.json +11 -0
  4. package/.eslintrc.js +13 -70
  5. package/.stylelintrc.js +5 -7
  6. package/dist/components/accordion.css +1 -1
  7. package/dist/components/accordion.js +26 -26
  8. package/dist/components/accordion.min.css +1 -1
  9. package/dist/components/accordion.min.js +2 -2
  10. package/dist/components/ad.css +1 -1
  11. package/dist/components/ad.min.css +1 -1
  12. package/dist/components/api.js +95 -94
  13. package/dist/components/api.min.js +2 -2
  14. package/dist/components/breadcrumb.css +1 -1
  15. package/dist/components/breadcrumb.min.css +1 -1
  16. package/dist/components/button.css +1 -1
  17. package/dist/components/button.min.css +1 -1
  18. package/dist/components/calendar.css +3 -3
  19. package/dist/components/calendar.js +181 -151
  20. package/dist/components/calendar.min.css +2 -2
  21. package/dist/components/calendar.min.js +2 -2
  22. package/dist/components/card.css +1 -1
  23. package/dist/components/card.min.css +1 -1
  24. package/dist/components/checkbox.css +1 -1
  25. package/dist/components/checkbox.js +14 -14
  26. package/dist/components/checkbox.min.css +1 -1
  27. package/dist/components/checkbox.min.js +2 -2
  28. package/dist/components/comment.css +1 -1
  29. package/dist/components/comment.min.css +1 -1
  30. package/dist/components/container.css +1 -1
  31. package/dist/components/container.min.css +1 -1
  32. package/dist/components/dimmer.css +1 -1
  33. package/dist/components/dimmer.js +23 -25
  34. package/dist/components/dimmer.min.css +1 -1
  35. package/dist/components/dimmer.min.js +2 -2
  36. package/dist/components/divider.css +1 -1
  37. package/dist/components/divider.min.css +1 -1
  38. package/dist/components/dropdown.css +1 -1
  39. package/dist/components/dropdown.js +252 -254
  40. package/dist/components/dropdown.min.css +1 -1
  41. package/dist/components/dropdown.min.js +2 -2
  42. package/dist/components/embed.css +1 -1
  43. package/dist/components/embed.js +27 -33
  44. package/dist/components/embed.min.css +1 -1
  45. package/dist/components/embed.min.js +2 -2
  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 +2 -2
  51. package/dist/components/flyout.js +50 -44
  52. package/dist/components/flyout.min.css +1 -1
  53. package/dist/components/flyout.min.js +2 -2
  54. package/dist/components/form.css +2 -2
  55. package/dist/components/form.js +187 -163
  56. package/dist/components/form.min.css +2 -2
  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/message.css +1 -1
  77. package/dist/components/message.min.css +1 -1
  78. package/dist/components/modal.css +1 -1
  79. package/dist/components/modal.js +49 -45
  80. package/dist/components/modal.min.css +1 -1
  81. package/dist/components/modal.min.js +2 -2
  82. package/dist/components/nag.css +1 -1
  83. package/dist/components/nag.js +22 -20
  84. package/dist/components/nag.min.css +1 -1
  85. package/dist/components/nag.min.js +2 -2
  86. package/dist/components/placeholder.css +1 -1
  87. package/dist/components/placeholder.min.css +1 -1
  88. package/dist/components/popup.css +1 -1
  89. package/dist/components/popup.js +71 -71
  90. package/dist/components/popup.min.css +1 -1
  91. package/dist/components/popup.min.js +2 -2
  92. package/dist/components/progress.css +1 -1
  93. package/dist/components/progress.js +46 -46
  94. package/dist/components/progress.min.css +1 -1
  95. package/dist/components/progress.min.js +2 -2
  96. package/dist/components/rail.css +1 -1
  97. package/dist/components/rail.min.css +1 -1
  98. package/dist/components/rating.css +1 -1
  99. package/dist/components/rating.js +15 -15
  100. package/dist/components/rating.min.css +1 -1
  101. package/dist/components/rating.min.js +2 -2
  102. package/dist/components/reset.css +1 -1
  103. package/dist/components/reset.min.css +1 -1
  104. package/dist/components/reveal.css +1 -1
  105. package/dist/components/reveal.min.css +1 -1
  106. package/dist/components/search.css +1 -1
  107. package/dist/components/search.js +69 -74
  108. package/dist/components/search.min.css +1 -1
  109. package/dist/components/search.min.js +2 -2
  110. package/dist/components/segment.css +1 -1
  111. package/dist/components/segment.min.css +1 -1
  112. package/dist/components/shape.css +1 -1
  113. package/dist/components/shape.js +39 -39
  114. package/dist/components/shape.min.css +1 -1
  115. package/dist/components/shape.min.js +2 -2
  116. package/dist/components/sidebar.css +1 -1
  117. package/dist/components/sidebar.js +39 -37
  118. package/dist/components/sidebar.min.css +1 -1
  119. package/dist/components/sidebar.min.js +2 -2
  120. package/dist/components/site.css +1 -1
  121. package/dist/components/site.js +22 -21
  122. package/dist/components/site.min.css +1 -1
  123. package/dist/components/site.min.js +2 -2
  124. package/dist/components/slider.js +69 -64
  125. package/dist/components/slider.min.js +2 -2
  126. package/dist/components/state.js +15 -15
  127. package/dist/components/state.min.js +2 -2
  128. package/dist/components/statistic.css +1 -1
  129. package/dist/components/statistic.min.css +1 -1
  130. package/dist/components/step.css +1 -1
  131. package/dist/components/step.min.css +1 -1
  132. package/dist/components/sticky.css +1 -1
  133. package/dist/components/sticky.js +25 -25
  134. package/dist/components/sticky.min.css +1 -1
  135. package/dist/components/sticky.min.js +2 -2
  136. package/dist/components/tab.css +1 -1
  137. package/dist/components/tab.js +55 -57
  138. package/dist/components/tab.min.css +1 -1
  139. package/dist/components/tab.min.js +2 -2
  140. package/dist/components/table.css +1 -1
  141. package/dist/components/table.min.css +1 -1
  142. package/dist/components/text.css +1 -1
  143. package/dist/components/text.min.css +1 -1
  144. package/dist/components/toast.css +1 -1
  145. package/dist/components/toast.js +57 -30
  146. package/dist/components/toast.min.css +1 -1
  147. package/dist/components/toast.min.js +2 -2
  148. package/dist/components/transition.css +7 -7
  149. package/dist/components/transition.js +45 -39
  150. package/dist/components/transition.min.css +1 -1
  151. package/dist/components/transition.min.js +2 -2
  152. package/dist/components/visibility.js +25 -25
  153. package/dist/components/visibility.min.js +2 -2
  154. package/dist/semantic.css +60 -60
  155. package/dist/semantic.js +1518 -1427
  156. package/dist/semantic.min.css +2 -2
  157. package/dist/semantic.min.js +2 -2
  158. package/examples/responsive.html +1 -1
  159. package/gulpfile.js +1 -1
  160. package/package.json +2 -1
  161. package/scripts/nightly-version.js +6 -4
  162. package/src/definitions/behaviors/api.js +94 -93
  163. package/src/definitions/behaviors/form.js +186 -162
  164. package/src/definitions/behaviors/state.js +14 -14
  165. package/src/definitions/behaviors/visibility.js +24 -24
  166. package/src/definitions/collections/menu.less +2 -2
  167. package/src/definitions/elements/button.less +2 -2
  168. package/src/definitions/elements/loader.less +4 -4
  169. package/src/definitions/elements/step.less +1 -1
  170. package/src/definitions/globals/site.js +21 -20
  171. package/src/definitions/modules/accordion.js +25 -25
  172. package/src/definitions/modules/calendar.js +180 -150
  173. package/src/definitions/modules/calendar.less +2 -2
  174. package/src/definitions/modules/checkbox.js +13 -13
  175. package/src/definitions/modules/dimmer.js +22 -24
  176. package/src/definitions/modules/dimmer.less +10 -10
  177. package/src/definitions/modules/dropdown.js +251 -253
  178. package/src/definitions/modules/embed.js +26 -32
  179. package/src/definitions/modules/flyout.js +49 -43
  180. package/src/definitions/modules/flyout.less +1 -1
  181. package/src/definitions/modules/modal.js +48 -44
  182. package/src/definitions/modules/nag.js +21 -19
  183. package/src/definitions/modules/popup.js +70 -70
  184. package/src/definitions/modules/progress.js +45 -45
  185. package/src/definitions/modules/rating.js +14 -14
  186. package/src/definitions/modules/search.js +68 -73
  187. package/src/definitions/modules/shape.js +38 -38
  188. package/src/definitions/modules/sidebar.js +38 -36
  189. package/src/definitions/modules/slider.js +68 -63
  190. package/src/definitions/modules/sticky.js +24 -24
  191. package/src/definitions/modules/tab.js +54 -56
  192. package/src/definitions/modules/toast.js +56 -29
  193. package/src/definitions/modules/transition.js +44 -38
  194. package/src/themes/amazon/elements/button.overrides +7 -7
  195. package/src/themes/default/collections/form.variables +1 -1
  196. package/src/themes/default/elements/reveal.variables +1 -1
  197. package/src/themes/default/globals/site.variables +1 -1
  198. package/src/themes/default/modules/dimmer.variables +6 -6
  199. package/src/themes/default/modules/modal.variables +1 -1
  200. package/src/themes/default/modules/slider.variables +4 -4
  201. package/src/themes/default/modules/toast.variables +2 -2
  202. package/src/themes/default/modules/transition.overrides +12 -12
  203. package/src/themes/flat/collections/form.overrides +2 -2
  204. package/src/themes/flat/globals/site.variables +1 -1
  205. package/src/themes/github/collections/form.overrides +2 -2
  206. package/src/themes/github/collections/menu.variables +1 -1
  207. package/src/themes/github/collections/message.overrides +3 -3
  208. package/src/themes/github/elements/input.overrides +2 -2
  209. package/src/themes/timeline/views/feed.overrides +3 -3
  210. package/src/themes/twitter/elements/button.overrides +2 -2
  211. package/tasks/README.md +1 -3
  212. package/tasks/admin/components/create.js +9 -16
  213. package/tasks/admin/components/init.js +7 -7
  214. package/tasks/admin/components/update.js +10 -10
  215. package/tasks/admin/distributions/create.js +16 -18
  216. package/tasks/admin/distributions/init.js +7 -7
  217. package/tasks/admin/distributions/update.js +10 -10
  218. package/tasks/admin/publish.js +1 -3
  219. package/tasks/admin/register.js +6 -6
  220. package/tasks/admin/release.js +1 -3
  221. package/tasks/build/assets.js +2 -2
  222. package/tasks/build/css.js +8 -3
  223. package/tasks/build/javascript.js +3 -1
  224. package/tasks/build.js +1 -1
  225. package/tasks/check-install.js +1 -1
  226. package/tasks/clean.js +1 -1
  227. package/tasks/collections/README.md +3 -5
  228. package/tasks/collections/admin.js +1 -1
  229. package/tasks/collections/docs.js +1 -1
  230. package/tasks/collections/install.js +1 -1
  231. package/tasks/collections/rtl.js +1 -1
  232. package/tasks/collections/various.js +1 -1
  233. package/tasks/config/admin/github.js +6 -8
  234. package/tasks/config/admin/templates/css-package.js +1 -1
  235. package/tasks/config/admin/templates/less-package.js +1 -1
  236. package/tasks/config/npm/gulpfile.js +7 -7
  237. package/tasks/config/project/config.js +14 -19
  238. package/tasks/config/project/install.js +35 -34
  239. package/tasks/config/project/release.js +15 -16
  240. package/tasks/config/tasks.js +18 -20
  241. package/tasks/config/user.js +5 -3
  242. package/tasks/docs/build.js +5 -3
  243. package/tasks/docs/metadata.js +7 -8
  244. package/tasks/docs/serve.js +6 -3
  245. package/tasks/install.js +39 -39
  246. package/tasks/rtl/build.js +1 -3
  247. package/tasks/rtl/watch.js +1 -3
  248. package/tasks/version.js +1 -3
  249. package/tasks/watch.js +1 -1
  250. package/test/.eslintrc.js +0 -4
  251. package/test/meteor/assets.js +1 -1
  252. package/test/modules/module.spec.js +15 -15
  253. package/test/modules/popup.spec.js +1 -1
  254. package/test/modules/search.spec.js +1 -1
  255. package/test/modules/tab.spec.js +1 -1
  256. package/test/modules/transition.spec.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.1-beta.22+6a42d01 - Calendar
2
+ * # Fomantic-UI 2.9.1-beta.24+029436f - Calendar
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -15,7 +15,7 @@
15
15
  return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
16
  }
17
17
 
18
- window = (typeof window != 'undefined' && window.Math == Math)
18
+ window = window !== undefined && window.Math === Math
19
19
  ? window
20
20
  : globalThis;
21
21
 
@@ -26,11 +26,11 @@
26
26
 
27
27
  moduleSelector = $allModules.selector || '',
28
28
 
29
- time = new Date().getTime(),
29
+ time = Date.now(),
30
30
  performance = [],
31
31
 
32
32
  query = arguments[0],
33
- methodInvoked = (typeof query == 'string'),
33
+ methodInvoked = typeof query === 'string',
34
34
  queryArguments = [].slice.call(arguments, 1),
35
35
  returnedValue,
36
36
  timeGapTable = {
@@ -45,7 +45,7 @@
45
45
 
46
46
  $allModules.each(function () {
47
47
  var
48
- settings = ($.isPlainObject(parameters))
48
+ settings = $.isPlainObject(parameters)
49
49
  ? $.extend(true, {}, $.fn.calendar.settings, parameters)
50
50
  : $.extend({}, $.fn.calendar.settings),
51
51
 
@@ -124,9 +124,9 @@
124
124
  if (settings.inline) {
125
125
  return;
126
126
  }
127
- if (!$activator.length) {
127
+ if ($activator.length === 0) {
128
128
  $activator = $module.children().first();
129
- if (!$activator.length) {
129
+ if ($activator.length === 0) {
130
130
  return;
131
131
  }
132
132
  }
@@ -135,7 +135,7 @@
135
135
 
136
136
  return;
137
137
  }
138
- if (!$container.length) {
138
+ if ($container.length === 0) {
139
139
  if (settings.context) {
140
140
  module.popupId = namespace + '_popup_' + (Math.random().toString(16) + '000000000').slice(2, 10);
141
141
  $container = $('<div/>', { id: module.popupId }).addClass(className.popup).appendTo($document.find(settings.context));
@@ -144,7 +144,7 @@
144
144
  // the styling (eg input action button needs to be the last child to have correct border radius)
145
145
  var
146
146
  $activatorParent = $activator.parent(),
147
- domPositionFunction = $activatorParent.closest(selector.append).length !== 0 ? 'appendTo' : 'prependTo'
147
+ domPositionFunction = $activatorParent.closest(selector.append).length > 0 ? 'appendTo' : 'prependTo'
148
148
  ;
149
149
  $container = $('<div/>').addClass(className.popup)[domPositionFunction]($activatorParent);
150
150
  }
@@ -163,7 +163,7 @@
163
163
 
164
164
  return settings.onHidden.apply($container, arguments);
165
165
  };
166
- if (!$input.length) {
166
+ if ($input.length === 0) {
167
167
  // no input, $container has to handle focus/blur
168
168
  $container.attr('tabindex', '0');
169
169
  onVisible = function () {
@@ -195,17 +195,17 @@
195
195
  module.popup(options);
196
196
  },
197
197
  inline: function () {
198
- if ($activator.length && !settings.inline) {
198
+ if ($activator.length > 0 && !settings.inline) {
199
199
  return;
200
200
  }
201
201
  settings.inline = true;
202
202
  $container = $('<div/>').addClass(className.calendar).appendTo($module);
203
- if (!$input.length) {
203
+ if ($input.length === 0) {
204
204
  $container.attr('tabindex', '0');
205
205
  }
206
206
  },
207
207
  input: function () {
208
- if (settings.touchReadonly && $input.length && isTouch) {
208
+ if (settings.touchReadonly && $input.length > 0 && isTouch) {
209
209
  $input.prop('readonly', true);
210
210
  }
211
211
  module.check.disabled();
@@ -216,7 +216,7 @@
216
216
  date = parser.date(settings.initialDate, settings);
217
217
  } else if ($module.data(metadata.date) !== undefined) {
218
218
  date = parser.date($module.data(metadata.date), settings);
219
- } else if ($input.length) {
219
+ } else if ($input.length > 0) {
220
220
  date = parser.date($input.val(), settings);
221
221
  }
222
222
  module.set.date(date, settings.formatInput, false);
@@ -283,7 +283,9 @@
283
283
  year = display.getFullYear()
284
284
  ;
285
285
 
286
- var columns = isDay ? settings.showWeekNumbers ? 8 : 7 : isHour ? 4 : timeGap.column;
286
+ var columns = isDay
287
+ ? (settings.showWeekNumbers ? 8 : 7)
288
+ : (isHour ? 4 : timeGap.column);
287
289
  var rows = isDay || isHour ? 6 : timeGap.row;
288
290
  var pages = isDay ? multiMonth : 1;
289
291
 
@@ -301,14 +303,14 @@
301
303
  }
302
304
 
303
305
  var month = startMonth + p;
304
- var firstMonthDayColumn = (new Date(year, month, 1).getDay() - settings.firstDayOfWeek % 7 + 7) % 7;
306
+ var firstMonthDayColumn = (new Date(year, month, 1).getDay() - (settings.firstDayOfWeek % 7) + 7) % 7;
305
307
  if (!settings.constantHeight && isDay) {
306
308
  var requiredCells = new Date(year, month + 1, 0).getDate() + firstMonthDayColumn;
307
309
  rows = Math.ceil(requiredCells / 7);
308
310
  }
309
311
 
310
312
  var
311
- yearChange = isYear ? 10 : isMonth ? 1 : 0,
313
+ yearChange = isYear ? 10 : (isMonth ? 1 : 0),
312
314
  monthChange = isDay ? 1 : 0,
313
315
  dayChange = isHour || isMinute ? 1 : 0,
314
316
  prevNextDay = isHour || isMinute ? day : 1,
@@ -316,25 +318,26 @@
316
318
  nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour),
317
319
  prevLast = isYear
318
320
  ? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0)
319
- : isMonth
321
+ : (isMonth
320
322
  ? new Date(year, 0, 0)
321
- : isDay
323
+ : (isDay // eslint-disable-line unicorn/no-nested-ternary
322
324
  ? new Date(year, month, 0)
323
- : new Date(year, month, day, -1),
325
+ : new Date(year, month, day, -1))),
324
326
  nextFirst = isYear
325
327
  ? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1)
326
- : isMonth
328
+ : (isMonth
327
329
  ? new Date(year + 1, 0, 1)
328
- : isDay
330
+ : (isDay // eslint-disable-line unicorn/no-nested-ternary
329
331
  ? new Date(year, month + 1, 1)
330
- : new Date(year, month, day + 1)
332
+ : new Date(year, month, day + 1)))
331
333
  ;
332
334
 
333
335
  var tempMode = mode;
334
336
  if (isDay && settings.showWeekNumbers) {
335
337
  tempMode += ' andweek';
336
338
  }
337
- var table = $('<table/>').addClass(className.table).addClass(tempMode).addClass(numberText[columns] + ' column').appendTo(container);
339
+ var table = $('<table/>').addClass(className.table).addClass(tempMode).addClass(numberText[columns] + ' column')
340
+ .appendTo(container);
338
341
  if (isInverted) {
339
342
  table.addClass(className.inverted);
340
343
  }
@@ -348,16 +351,16 @@
348
351
 
349
352
  var headerDate = isYear || isMonth
350
353
  ? new Date(year, 0, 1)
351
- : isDay
354
+ : (isDay
352
355
  ? new Date(year, month, 1)
353
- : new Date(year, month, day, hour, minute);
356
+ : new Date(year, month, day, hour, minute));
354
357
  var headerText = $('<span/>').addClass(className.link).appendTo(cell);
355
358
  headerText.text(module.helper.dateFormat(formatter[mode + 'Header'], headerDate));
356
359
  var newMode = isMonth
357
360
  ? (settings.disableYear ? 'day' : 'year')
358
- : isDay
359
- ? (settings.disableMonth ? 'year' : 'month')
360
- : 'day';
361
+ : (isDay
362
+ ? (settings.disableMonth ? 'year' : 'month') // eslint-disable-line unicorn/no-nested-ternary
363
+ : 'day');
361
364
  headerText.data(metadata.mode, newMode);
362
365
 
363
366
  if (p === 0) {
@@ -389,7 +392,9 @@
389
392
  }
390
393
 
391
394
  var tbody = $('<tbody/>').appendTo(table);
392
- i = isYear ? Math.ceil(year / 10) * 10 - 9 : isDay ? 1 - firstMonthDayColumn : 0;
395
+ i = isYear
396
+ ? Math.ceil(year / 10) * 10 - 9
397
+ : (isDay ? 1 - firstMonthDayColumn : 0);
393
398
  for (r = 0; r < rows; r++) {
394
399
  row = $('<tr/>').appendTo(tbody);
395
400
  if (isDay && settings.showWeekNumbers) {
@@ -400,20 +405,20 @@
400
405
  for (c = 0; c < textColumns; c++, i++) {
401
406
  var cellDate = isYear
402
407
  ? new Date(i, month, 1, hour, minute)
403
- : isMonth
408
+ : (isMonth
404
409
  ? new Date(year, i, 1, hour, minute)
405
- : isDay
410
+ : (isDay // eslint-disable-line unicorn/no-nested-ternary
406
411
  ? new Date(year, month, i, hour, minute)
407
- : isHour
412
+ : (isHour
408
413
  ? new Date(year, month, day, i)
409
- : new Date(year, month, day, hour, i * settings.minTimeGap);
414
+ : new Date(year, month, day, hour, i * settings.minTimeGap))));
410
415
  var cellText = isYear
411
416
  ? i
412
- : isMonth
417
+ : (isMonth
413
418
  ? settings.text.monthsShort[i]
414
- : isDay
419
+ : (isDay // eslint-disable-line unicorn/no-nested-ternary
415
420
  ? cellDate.getDate()
416
- : module.helper.dateFormat(formatter.cellTime, cellDate);
421
+ : module.helper.dateFormat(formatter.cellTime, cellDate)));
417
422
  cell = $('<td/>').addClass(className.cell).appendTo(row);
418
423
  cell.text(cellText);
419
424
  cell.data(metadata.date, cellDate);
@@ -526,8 +531,8 @@
526
531
  var focused = module.helper.dateEqual(cellDate, focusDate, mode);
527
532
  var inRange = !rangeDate
528
533
  ? false
529
- : ((!!startDate && module.helper.isDateInRange(cellDate, mode, startDate, rangeDate))
530
- || (!!endDate && module.helper.isDateInRange(cellDate, mode, rangeDate, endDate)));
534
+ : (!!startDate && module.helper.isDateInRange(cellDate, mode, startDate, rangeDate))
535
+ || (!!endDate && module.helper.isDateInRange(cellDate, mode, rangeDate, endDate));
531
536
  $cell.toggleClass(className.focusCell, focused && (!isTouch || isTouchDown) && (!adjacent || (settings.selectAdjacentDays && adjacent)) && !disabled);
532
537
 
533
538
  if (module.helper.isTodayButton($cell)) {
@@ -546,7 +551,7 @@
546
551
  var winWidth = $(window).width();
547
552
  $container.find('td[data-position]').each(function () {
548
553
  var $cell = $(this);
549
- var tooltipWidth = window.getComputedStyle($cell[0], '::after').width.replace(/[^0-9\.]/g, '');
554
+ var tooltipWidth = window.getComputedStyle($cell[0], '::after').width.replace(/[^\d.]/g, '');
550
555
  var tooltipPosition = $cell.attr('data-position');
551
556
  // use a fallback width of 250 (calendar width) for IE/Edge (which return "auto")
552
557
  var calcPosition = (winWidth - $cell.width() - (parseInt(tooltipWidth, 10) || 250)) > $cell.offset().left ? 'right' : 'left';
@@ -564,7 +569,7 @@
564
569
  $container.on('mouseup' + eventNamespace, module.event.mouseup);
565
570
  $container.on('touchend' + eventNamespace, module.event.mouseup);
566
571
  $container.on('mouseover' + eventNamespace, module.event.mouseover);
567
- if ($input.length) {
572
+ if ($input.length > 0) {
568
573
  $input.on('input' + eventNamespace, module.event.inputChange);
569
574
  $input.on('focus' + eventNamespace, module.event.inputFocus);
570
575
  $input.on('blur' + eventNamespace, module.event.inputBlur);
@@ -579,7 +584,7 @@
579
584
  events: function () {
580
585
  module.debug('Unbinding events');
581
586
  $container.off(eventNamespace);
582
- if ($input.length) {
587
+ if ($input.length > 0) {
583
588
  $input.off(eventNamespace);
584
589
  }
585
590
  },
@@ -595,7 +600,7 @@
595
600
  }
596
601
  },
597
602
  mousedown: function (event) {
598
- if ($input.length) {
603
+ if ($input.length > 0) {
599
604
  // prevent the mousedown on the calendar causing the input to lose focus
600
605
  event.preventDefault();
601
606
  }
@@ -642,38 +647,59 @@
642
647
 
643
648
  if (module.popup('is visible')) {
644
649
  var mode = module.get.mode();
645
- if (keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40) {
650
+ switch (keyCode) {
646
651
  // arrow keys
647
- var bigIncrement = mode === 'day' ? 7 : mode === 'hour' ? 4 : mode === 'minute' ? timeGap.column : 3;
648
- var increment = keyCode === 37 ? -1 : keyCode === 38 ? -bigIncrement : keyCode == 39 ? 1 : bigIncrement;
649
- increment *= mode === 'minute' ? settings.minTimeGap : 1;
650
- var focusDate = module.get.focusDate() || module.get.date() || new Date();
651
- var year = focusDate.getFullYear() + (mode === 'year' ? increment : 0);
652
- var month = focusDate.getMonth() + (mode === 'month' ? increment : 0);
653
- var day = focusDate.getDate() + (mode === 'day' ? increment : 0);
654
- var hour = focusDate.getHours() + (mode === 'hour' ? increment : 0);
655
- var minute = focusDate.getMinutes() + (mode === 'minute' ? increment : 0);
656
- var newFocusDate = new Date(year, month, day, hour, minute);
657
- if (settings.type === 'time') {
658
- newFocusDate = module.helper.mergeDateTime(focusDate, newFocusDate);
659
- }
660
- if (module.helper.isDateInRange(newFocusDate, mode)) {
661
- module.set.focusDate(newFocusDate);
652
+ case 37:
653
+ case 38:
654
+ case 39:
655
+ case 40: {
656
+ var bigIncrement = mode === 'day'
657
+ ? 7
658
+ : (mode === 'hour'
659
+ ? 4
660
+ : (mode === 'minute' ? timeGap.column : 3)); // eslint-disable-line unicorn/no-nested-ternary
661
+ var increment = keyCode === 37
662
+ ? -1
663
+ : (keyCode === 38
664
+ ? -bigIncrement
665
+ : (keyCode == 39 ? 1 : bigIncrement)); // eslint-disable-line unicorn/no-nested-ternary
666
+ increment *= mode === 'minute' ? settings.minTimeGap : 1;
667
+ var focusDate = module.get.focusDate() || module.get.date() || new Date();
668
+ var year = focusDate.getFullYear() + (mode === 'year' ? increment : 0);
669
+ var month = focusDate.getMonth() + (mode === 'month' ? increment : 0);
670
+ var day = focusDate.getDate() + (mode === 'day' ? increment : 0);
671
+ var hour = focusDate.getHours() + (mode === 'hour' ? increment : 0);
672
+ var minute = focusDate.getMinutes() + (mode === 'minute' ? increment : 0);
673
+ var newFocusDate = new Date(year, month, day, hour, minute);
674
+ if (settings.type === 'time') {
675
+ newFocusDate = module.helper.mergeDateTime(focusDate, newFocusDate);
676
+ }
677
+ if (module.helper.isDateInRange(newFocusDate, mode)) {
678
+ module.set.focusDate(newFocusDate);
679
+ }
680
+
681
+ break;
662
682
  }
663
- } else if (keyCode === 13) {
664
- // enter
665
- var date = module.get.focusDate();
666
- if (date && !settings.isDisabled(date, mode) && !module.helper.isDisabled(date, mode) && module.helper.isEnabled(date, mode)) {
667
- if (settings.onSelect.call(element, date, module.get.mode()) !== false) {
668
- module.selectDate(date);
683
+ // enter key
684
+ case 13: {
685
+ var date = module.get.focusDate();
686
+ if (date && !settings.isDisabled(date, mode) && !module.helper.isDisabled(date, mode) && module.helper.isEnabled(date, mode)) {
687
+ if (settings.onSelect.call(element, date, module.get.mode()) !== false) {
688
+ module.selectDate(date);
689
+ }
669
690
  }
691
+ // disable form submission:
692
+ event.preventDefault();
693
+ event.stopPropagation();
694
+
695
+ break;
670
696
  }
671
- // disable form submission:
672
- event.preventDefault();
673
- event.stopPropagation();
674
- } else if (keyCode === 27) {
675
- module.popup('hide');
676
- event.stopPropagation();
697
+ // escape key
698
+ case 27:
699
+ module.popup('hide');
700
+ event.stopPropagation();
701
+
702
+ break;
677
703
  }
678
704
  }
679
705
 
@@ -724,7 +750,7 @@
724
750
 
725
751
  disconnect: {
726
752
  classObserver: function () {
727
- if ($input.length && classObserver) {
753
+ if ($input.length > 0 && classObserver) {
728
754
  classObserver.disconnect();
729
755
  }
730
756
  },
@@ -732,7 +758,7 @@
732
758
 
733
759
  observe: {
734
760
  class: function () {
735
- if ($input.length && classObserver) {
761
+ if ($input.length > 0 && classObserver) {
736
762
  classObserver.observe($module[0], {
737
763
  attributes: true,
738
764
  });
@@ -755,17 +781,14 @@
755
781
  get: {
756
782
  weekOfYear: function (weekYear, weekMonth, weekDay) {
757
783
  // adapted from http://www.merlyn.demon.co.uk/weekcalc.htm
758
- var ms1d = 864e5, // milliseconds in a day
759
- ms7d = 7 * ms1d; // milliseconds in a week
760
-
761
- // eslint-disable-next-line wrap-iife
762
- return function () { // return a closure so constants get calculated only once
763
- var DC3 = Date.UTC(weekYear, weekMonth, weekDay + 3) / ms1d, // an Absolute Day Number
764
- AWN = Math.floor(DC3 / 7), // an Absolute Week Number
765
- Wyr = new Date(AWN * ms7d).getUTCFullYear();
784
+ var ms1d = 24 * 3600 * 1000,
785
+ ms7d = 7 * ms1d,
786
+ DC3 = Date.UTC(weekYear, weekMonth, weekDay + 3) / ms1d, // an absolute day number
787
+ AWN = Math.floor(DC3 / 7), // an absolute week number
788
+ Wyr = new Date(AWN * ms7d).getUTCFullYear()
789
+ ;
766
790
 
767
- return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
768
- }();
791
+ return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
769
792
  },
770
793
  formattedDate: function (format, date) {
771
794
  return module.helper.dateFormat(format || formatter[settings.type], date || module.get.date());
@@ -812,9 +835,9 @@
812
835
 
813
836
  return settings.type === 'time'
814
837
  ? 'hour'
815
- : settings.type === 'month'
838
+ : (settings.type === 'month'
816
839
  ? 'month'
817
- : settings.type === 'year' ? 'year' : 'day';
840
+ : (settings.type === 'year' ? 'year' : 'day')); // eslint-disable-line unicorn/no-nested-ternary
818
841
  },
819
842
  type: function () {
820
843
  return $module.data(metadata.type) || settings.type;
@@ -890,7 +913,7 @@
890
913
  }
891
914
  module.set.dataKeyValue(metadata.date, date);
892
915
 
893
- if (updateInput && $input.length) {
916
+ if (updateInput && $input.length > 0) {
894
917
  $input.val(text);
895
918
  }
896
919
 
@@ -1005,9 +1028,9 @@
1005
1028
  } else {
1006
1029
  var newMode = mode === 'year'
1007
1030
  ? (!settings.disableMonth ? 'month' : 'day')
1008
- : mode === 'month'
1031
+ : (mode === 'month'
1009
1032
  ? 'day'
1010
- : mode === 'day' ? 'hour' : 'minute';
1033
+ : (mode === 'day' ? 'hour' : 'minute')); // eslint-disable-line unicorn/no-nested-ternary
1011
1034
  module.set.mode(newMode);
1012
1035
  if (mode === 'hour' || (mode === 'day' && module.get.date())) {
1013
1036
  // the user has chosen enough to consider a valid date/time has been chosen
@@ -1031,14 +1054,14 @@
1031
1054
  },
1032
1055
 
1033
1056
  focus: function () {
1034
- if ($input.length) {
1057
+ if ($input.length > 0) {
1035
1058
  $input.trigger('focus');
1036
1059
  } else {
1037
1060
  $container.trigger('focus');
1038
1061
  }
1039
1062
  },
1040
1063
  blur: function () {
1041
- if ($input.length) {
1064
+ if ($input.length > 0) {
1042
1065
  $input.trigger('blur');
1043
1066
  } else {
1044
1067
  $container.trigger('blur');
@@ -1089,7 +1112,7 @@
1089
1112
  ss: ('0' + s).slice(-2),
1090
1113
  a: a,
1091
1114
  A: a.toUpperCase(),
1092
- S: ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D % 100 - D % 10 !== 10) * D % 10],
1115
+ S: ['th', 'st', 'nd', 'rd'][(D % 10) > 3 ? 0 : ((D % 100) - (D % 10) === 10 ? 0 : D % 10)],
1093
1116
  w: w,
1094
1117
  ww: ('0' + w).slice(-2),
1095
1118
  }
@@ -1100,7 +1123,7 @@
1100
1123
  return tokens[match];
1101
1124
  }
1102
1125
 
1103
- return match.slice(1, match.length - 1);
1126
+ return match.slice(1, -1);
1104
1127
  });
1105
1128
  },
1106
1129
  isDisabled: function (date, mode) {
@@ -1198,9 +1221,9 @@
1198
1221
 
1199
1222
  return enabled;
1200
1223
  });
1201
- } else {
1202
- return true;
1203
1224
  }
1225
+
1226
+ return true;
1204
1227
  },
1205
1228
  findDayAsObject: function (date, mode, dates) {
1206
1229
  if (mode === 'day' || mode === 'month' || mode === 'year') {
@@ -1215,11 +1238,13 @@
1215
1238
  dateObject[metadata.date] = d;
1216
1239
 
1217
1240
  return dateObject;
1218
- } else if (d !== null && typeof d === 'object') {
1241
+ }
1242
+ if (d !== null && typeof d === 'object') {
1219
1243
  if (d[metadata.year]) {
1220
1244
  if (typeof d[metadata.year] === 'number' && date.getFullYear() == d[metadata.year]) {
1221
1245
  return d;
1222
- } else if (Array.isArray(d[metadata.year])) {
1246
+ }
1247
+ if (Array.isArray(d[metadata.year])) {
1223
1248
  if (d[metadata.year].indexOf(date.getFullYear()) > -1) {
1224
1249
  return d;
1225
1250
  }
@@ -1227,7 +1252,8 @@
1227
1252
  } else if (d[metadata.month]) {
1228
1253
  if (typeof d[metadata.month] === 'number' && date.getMonth() == d[metadata.month]) {
1229
1254
  return d;
1230
- } else if (Array.isArray(d[metadata.month])) {
1255
+ }
1256
+ if (Array.isArray(d[metadata.month])) {
1231
1257
  if (d[metadata.month].indexOf(date.getMonth()) > -1) {
1232
1258
  return d;
1233
1259
  }
@@ -1240,7 +1266,8 @@
1240
1266
  } else if (d[metadata.date] && mode === 'day') {
1241
1267
  if (d[metadata.date] instanceof Date && module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]), mode)) {
1242
1268
  return d;
1243
- } else if (Array.isArray(d[metadata.date])) {
1269
+ }
1270
+ if (Array.isArray(d[metadata.date])) {
1244
1271
  if (d[metadata.date].some(function (idate) {
1245
1272
  return module.helper.dateEqual(date, idate, mode);
1246
1273
  })) {
@@ -1261,7 +1288,8 @@
1261
1288
  if (d[metadata.hours]) {
1262
1289
  if (typeof d[metadata.hours] === 'number' && date.getHours() == d[metadata.hours]) {
1263
1290
  return d;
1264
- } else if (Array.isArray(d[metadata.hours])) {
1291
+ }
1292
+ if (Array.isArray(d[metadata.hours])) {
1265
1293
  if (d[metadata.hours].indexOf(date.getHours()) > -1) {
1266
1294
  return d;
1267
1295
  }
@@ -1272,11 +1300,13 @@
1272
1300
  d = hours[i];
1273
1301
  if (typeof d === 'number' && date.getHours() == d) {
1274
1302
  return null;
1275
- } else if (d !== null && typeof d === 'object') {
1303
+ }
1304
+ if (d !== null && typeof d === 'object') {
1276
1305
  if (d[metadata.days] && hourCheck(date, d)) {
1277
1306
  if (typeof d[metadata.days] === 'number' && date.getDay() == d[metadata.days]) {
1278
1307
  return d;
1279
- } else if (Array.isArray(d[metadata.days])) {
1308
+ }
1309
+ if (Array.isArray(d[metadata.days])) {
1280
1310
  if (d[metadata.days].indexOf(date.getDay()) > -1) {
1281
1311
  return d;
1282
1312
  }
@@ -1284,7 +1314,8 @@
1284
1314
  } else if (d[metadata.date] && hourCheck(date, d)) {
1285
1315
  if (d[metadata.date] instanceof Date && module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]))) {
1286
1316
  return d;
1287
- } else if (Array.isArray(d[metadata.date])) {
1317
+ }
1318
+ if (Array.isArray(d[metadata.date])) {
1288
1319
  if (d[metadata.date].some(function (idate) {
1289
1320
  return module.helper.dateEqual(date, idate, mode);
1290
1321
  })) {
@@ -1311,7 +1342,10 @@
1311
1342
  return date;
1312
1343
  },
1313
1344
  dateDiff: function (date1, date2, mode) {
1314
- mode = mode || 'day';
1345
+ if (!mode) {
1346
+ mode = 'day';
1347
+ }
1348
+
1315
1349
  var isTimeOnly = settings.type === 'time';
1316
1350
  var isYear = mode === 'year';
1317
1351
  var isYearOrMonth = isYear || mode === 'month';
@@ -1320,15 +1354,15 @@
1320
1354
  // only care about a minute accuracy of settings.minTimeGap
1321
1355
  date1 = new Date(
1322
1356
  isTimeOnly ? 2000 : date1.getFullYear(),
1323
- isTimeOnly ? 0 : isYear ? 0 : date1.getMonth(),
1324
- isTimeOnly ? 1 : isYearOrMonth ? 1 : date1.getDate(),
1357
+ isTimeOnly ? 0 : (isYear ? 0 : date1.getMonth()),
1358
+ isTimeOnly ? 1 : (isYearOrMonth ? 1 : date1.getDate()),
1325
1359
  !isHourOrMinute ? 0 : date1.getHours(),
1326
1360
  !isMinute ? 0 : settings.minTimeGap * Math.floor(date1.getMinutes() / settings.minTimeGap)
1327
1361
  );
1328
1362
  date2 = new Date(
1329
1363
  isTimeOnly ? 2000 : date2.getFullYear(),
1330
- isTimeOnly ? 0 : isYear ? 0 : date2.getMonth(),
1331
- isTimeOnly ? 1 : isYearOrMonth ? 1 : date2.getDate(),
1364
+ isTimeOnly ? 0 : (isYear ? 0 : date2.getMonth()),
1365
+ isTimeOnly ? 1 : (isYearOrMonth ? 1 : date2.getDate()),
1332
1366
  !isHourOrMinute ? 0 : date2.getHours(),
1333
1367
  !isMinute ? 0 : settings.minTimeGap * Math.floor(date2.getMinutes() / settings.minTimeGap)
1334
1368
  );
@@ -1361,14 +1395,14 @@
1361
1395
 
1362
1396
  return !date
1363
1397
  ? date
1364
- : (minDate && module.helper.dateDiff(date, minDate, 'minute') > 0)
1365
- ? (isTimeOnly ? module.helper.mergeDateTime(date, minDate) : minDate)
1366
- : (maxDate && module.helper.dateDiff(maxDate, date, 'minute') > 0)
1398
+ : (minDate && module.helper.dateDiff(date, minDate, 'minute') > 0
1399
+ ? (isTimeOnly ? module.helper.mergeDateTime(date, minDate) : minDate) // eslint-disable-line unicorn/no-nested-ternary
1400
+ : (maxDate && module.helper.dateDiff(maxDate, date, 'minute') > 0 // eslint-disable-line unicorn/no-nested-ternary
1367
1401
  ? (isTimeOnly ? module.helper.mergeDateTime(date, maxDate) : maxDate)
1368
- : date;
1402
+ : date));
1369
1403
  },
1370
1404
  mergeDateTime: function (date, time) {
1371
- return (!date || !time)
1405
+ return !date || !time
1372
1406
  ? time
1373
1407
  : new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes());
1374
1408
  },
@@ -1434,7 +1468,7 @@
1434
1468
  previousTime
1435
1469
  ;
1436
1470
  if (settings.performance) {
1437
- currentTime = new Date().getTime();
1471
+ currentTime = Date.now();
1438
1472
  previousTime = time || currentTime;
1439
1473
  executionTime = currentTime - previousTime;
1440
1474
  time = currentTime;
@@ -1485,11 +1519,11 @@
1485
1519
  ;
1486
1520
  passedArguments = passedArguments || queryArguments;
1487
1521
  context = context || element;
1488
- if (typeof query == 'string' && object !== undefined) {
1489
- query = query.split(/[\. ]/);
1522
+ if (typeof query === 'string' && object !== undefined) {
1523
+ query = query.split(/[ .]/);
1490
1524
  maxDepth = query.length - 1;
1491
1525
  $.each(query, function (depth, value) {
1492
- var camelCaseValue = (depth != maxDepth)
1526
+ var camelCaseValue = depth != maxDepth
1493
1527
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1494
1528
  : query
1495
1529
  ;
@@ -1542,7 +1576,7 @@
1542
1576
  }
1543
1577
  });
1544
1578
 
1545
- return (returnedValue !== undefined)
1579
+ return returnedValue !== undefined
1546
1580
  ? returnedValue
1547
1581
  : this;
1548
1582
  };
@@ -1634,8 +1668,7 @@
1634
1668
  today: function (settings) {
1635
1669
  return settings.type === 'date' ? settings.text.today : settings.text.now;
1636
1670
  },
1637
- cell: function (cell, date, cellOptions) {
1638
- },
1671
+ cell: function (cell, date, cellOptions) {},
1639
1672
  },
1640
1673
 
1641
1674
  parser: {
@@ -1646,17 +1679,18 @@
1646
1679
  if (!text) {
1647
1680
  return null;
1648
1681
  }
1649
- text = String(text).trim().replace(/([.:\/\-])\s+/g, '$1').replace(/\s+([.:\/-])/g, '$1').replace(/\s+/g, ' ');
1682
+ text = String(text).trim().replace(/([./:-])\s+/g, '$1').replace(/\s+([./:-])/g, '$1')
1683
+ .replace(/\s+/g, ' ');
1650
1684
  if (text.length === 0) {
1651
1685
  return null;
1652
1686
  }
1653
- if (text.match(/^[0-9]{4}[\/\-\.][0-9]{1,2}[\/\-\.][0-9]{1,2}$/)) {
1654
- text = text.replace(/[\/\-\.]/g, '/') + ' 00:00:00';
1687
+ if (/^\d{4}(?:[./-]\d{1,2}){2}$/.test(text)) {
1688
+ text = text.replace(/[./-]/g, '/') + ' 00:00:00';
1655
1689
  }
1656
1690
  // Reverse date and month in some cases
1657
- text = settings.monthFirst || !text.match(/^[0-9]{1,2}[\/\-\.]/) ? text : text.replace(/[\/\-\.]/g, '/').replace(/([0-9]+)\/([0-9]+)/, '$2/$1');
1691
+ text = settings.monthFirst || !/^\d{1,2}[./-]/.test(text) ? text : text.replace(/[./-]/g, '/').replace(/(\d+)\/(\d+)/, '$2/$1');
1658
1692
  var textDate = new Date(text);
1659
- var numberOnly = text.match(/^[0-9]+$/) !== null;
1693
+ var numberOnly = text.match(/^\d+$/) !== null;
1660
1694
  if (!numberOnly && !isNaN(textDate.getDate())) {
1661
1695
  return textDate;
1662
1696
  }
@@ -1674,7 +1708,7 @@
1674
1708
  month = -1,
1675
1709
  year = -1
1676
1710
  ;
1677
- var isAm = undefined;
1711
+ var isAm;
1678
1712
 
1679
1713
  var isTimeOnly = settings.type === 'time';
1680
1714
  var isDateOnly = settings.type.indexOf('time') < 0;
@@ -1695,7 +1729,7 @@
1695
1729
  // am/pm
1696
1730
  isAm = $.inArray(settings.text.am.toLowerCase(), words) >= 0
1697
1731
  ? true
1698
- : $.inArray(settings.text.pm.toLowerCase(), words) >= 0 ? false : undefined;
1732
+ : ($.inArray(settings.text.pm.toLowerCase(), words) >= 0 ? false : undefined);
1699
1733
 
1700
1734
  // time with ':'
1701
1735
  for (i = 0; i < numbers.length; i++) {
@@ -1704,7 +1738,7 @@
1704
1738
  if (hour < 0 || minute < 0) {
1705
1739
  parts = number.split(':');
1706
1740
  for (k = 0; k < Math.min(2, parts.length); k++) {
1707
- j = parseInt(parts[k]);
1741
+ j = parseInt(parts[k], 10);
1708
1742
  if (isNaN(j)) {
1709
1743
  j = 0;
1710
1744
  }
@@ -1743,7 +1777,7 @@
1743
1777
 
1744
1778
  // year > settings.centuryBreak
1745
1779
  for (i = 0; i < numbers.length; i++) {
1746
- j = parseInt(numbers[i]);
1780
+ j = parseInt(numbers[i], 10);
1747
1781
  if (isNaN(j)) {
1748
1782
  continue;
1749
1783
  }
@@ -1761,12 +1795,14 @@
1761
1795
  // numeric month
1762
1796
  if (month < 0) {
1763
1797
  for (i = 0; i < numbers.length; i++) {
1764
- k = i > 1 || settings.monthFirst ? i : i === 1 ? 0 : 1;
1765
- j = parseInt(numbers[k]);
1798
+ k = i > 1 || settings.monthFirst
1799
+ ? i
1800
+ : (i === 1 ? 0 : 1);
1801
+ j = parseInt(numbers[k], 10);
1766
1802
  if (isNaN(j)) {
1767
1803
  continue;
1768
1804
  }
1769
- if (1 <= j && j <= 12) {
1805
+ if (j >= 1 && j <= 12) {
1770
1806
  month = j;
1771
1807
  numbers.splice(k, 1);
1772
1808
 
@@ -1777,11 +1813,11 @@
1777
1813
 
1778
1814
  // day
1779
1815
  for (i = 0; i < numbers.length; i++) {
1780
- j = parseInt(numbers[i]);
1816
+ j = parseInt(numbers[i], 10);
1781
1817
  if (isNaN(j)) {
1782
1818
  continue;
1783
1819
  }
1784
- if (1 <= j && j <= 31) {
1820
+ if (j >= 1 && j <= 31) {
1785
1821
  day = j;
1786
1822
  numbers.splice(i, 1);
1787
1823
 
@@ -1792,7 +1828,7 @@
1792
1828
  // year <= settings.centuryBreak
1793
1829
  if (year < 0) {
1794
1830
  for (i = numbers.length - 1; i >= 0; i--) {
1795
- j = parseInt(numbers[i]);
1831
+ j = parseInt(numbers[i], 10);
1796
1832
  if (isNaN(j)) {
1797
1833
  continue;
1798
1834
  }
@@ -1811,11 +1847,11 @@
1811
1847
  // hour
1812
1848
  if (hour < 0) {
1813
1849
  for (i = 0; i < numbers.length; i++) {
1814
- j = parseInt(numbers[i]);
1850
+ j = parseInt(numbers[i], 10);
1815
1851
  if (isNaN(j)) {
1816
1852
  continue;
1817
1853
  }
1818
- if (0 <= j && j <= 23) {
1854
+ if (j >= 0 && j <= 23) {
1819
1855
  hour = j;
1820
1856
  numbers.splice(i, 1);
1821
1857
 
@@ -1827,11 +1863,11 @@
1827
1863
  // minute
1828
1864
  if (minute < 0) {
1829
1865
  for (i = 0; i < numbers.length; i++) {
1830
- j = parseInt(numbers[i]);
1866
+ j = parseInt(numbers[i], 10);
1831
1867
  if (isNaN(j)) {
1832
1868
  continue;
1833
1869
  }
1834
- if (0 <= j && j <= 59) {
1870
+ if (j >= 0 && j <= 59) {
1835
1871
  minute = j;
1836
1872
  numbers.splice(i, 1);
1837
1873
 
@@ -1887,28 +1923,22 @@
1887
1923
  },
1888
1924
 
1889
1925
  // callback when date changes
1890
- onChange: function (date, text, mode) {
1891
- },
1926
+ onChange: function (date, text, mode) {},
1892
1927
 
1893
1928
  // callback before show animation, return false to prevent show
1894
- onShow: function () {
1895
- },
1929
+ onShow: function () {},
1896
1930
 
1897
1931
  // callback after show animation
1898
- onVisible: function () {
1899
- },
1932
+ onVisible: function () {},
1900
1933
 
1901
1934
  // callback before hide animation, return false to prevent hide
1902
- onHide: function () {
1903
- },
1935
+ onHide: function () {},
1904
1936
 
1905
1937
  // callback after hide animation
1906
- onHidden: function () {
1907
- },
1938
+ onHidden: function () {},
1908
1939
 
1909
1940
  // callback before item is selected, return false to prevent selection
1910
- onSelect: function (date, mode) {
1911
- },
1941
+ onSelect: function (date, mode) {},
1912
1942
 
1913
1943
  // is the given date disabled?
1914
1944
  isDisabled: function (date, mode) {
@@ -1925,7 +1955,7 @@
1925
1955
  regExp: {
1926
1956
  dateWords: /[^A-Za-z\u00C0-\u024F]+/g,
1927
1957
  dateNumbers: /[^\d:]+/g,
1928
- token: /d{1,4}|D{1,2}|M{1,4}|YY(?:YY)?|([Hhmsw])\1?|[SAaY]|"[^"]*"|'[^']*'/g,
1958
+ token: /d{1,4}|D{1,2}|M{1,4}|YY(?:YY)?|([Hhmsw])\1?|[ASYa]|"[^"]*"|'[^']*'/g,
1929
1959
  },
1930
1960
 
1931
1961
  error: {