fomantic-ui 2.10.0-beta.1 → 2.10.0-beta.11

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 (291) hide show
  1. package/.all-contributorsrc +9 -0
  2. package/.eslintrc.js +0 -10
  3. package/CONTRIBUTING.md +4 -1
  4. package/CONTRIBUTORS.md +1 -0
  5. package/FAQ.md +7 -2
  6. package/README.md +5 -9
  7. package/ROADMAP.md +4 -4
  8. package/SECURITY.md +8 -7
  9. package/changelog-setup.js +64 -70
  10. package/dist/components/accordion.css +1 -1
  11. package/dist/components/accordion.js +103 -142
  12. package/dist/components/accordion.min.css +1 -1
  13. package/dist/components/accordion.min.js +2 -2
  14. package/dist/components/ad.css +1 -1
  15. package/dist/components/ad.min.css +1 -1
  16. package/dist/components/api.js +157 -210
  17. package/dist/components/api.min.js +2 -2
  18. package/dist/components/breadcrumb.css +1 -1
  19. package/dist/components/breadcrumb.min.css +1 -1
  20. package/dist/components/button.css +1 -2
  21. package/dist/components/button.min.css +2 -2
  22. package/dist/components/calendar.css +1 -2
  23. package/dist/components/calendar.js +314 -352
  24. package/dist/components/calendar.min.css +2 -2
  25. package/dist/components/calendar.min.js +2 -2
  26. package/dist/components/card.css +1 -1
  27. package/dist/components/card.min.css +1 -1
  28. package/dist/components/checkbox.css +1 -2
  29. package/dist/components/checkbox.js +85 -135
  30. package/dist/components/checkbox.min.css +2 -2
  31. package/dist/components/checkbox.min.js +2 -2
  32. package/dist/components/comment.css +1 -1
  33. package/dist/components/comment.min.css +1 -1
  34. package/dist/components/container.css +2 -4
  35. package/dist/components/container.min.css +2 -2
  36. package/dist/components/dimmer.css +1 -11
  37. package/dist/components/dimmer.js +61 -94
  38. package/dist/components/dimmer.min.css +2 -2
  39. package/dist/components/dimmer.min.js +2 -2
  40. package/dist/components/divider.css +1 -2
  41. package/dist/components/divider.min.css +2 -2
  42. package/dist/components/dropdown.css +30 -51
  43. package/dist/components/dropdown.js +736 -1055
  44. package/dist/components/dropdown.min.css +2 -2
  45. package/dist/components/dropdown.min.js +2 -2
  46. package/dist/components/embed.css +1 -1
  47. package/dist/components/embed.js +85 -114
  48. package/dist/components/embed.min.css +1 -1
  49. package/dist/components/embed.min.js +2 -2
  50. package/dist/components/emoji.css +3809 -7617
  51. package/dist/components/emoji.min.css +2 -2
  52. package/dist/components/feed.css +1 -1
  53. package/dist/components/feed.min.css +1 -1
  54. package/dist/components/flag.css +1 -1
  55. package/dist/components/flag.min.css +1 -1
  56. package/dist/components/flyout.css +2 -3
  57. package/dist/components/flyout.js +226 -355
  58. package/dist/components/flyout.min.css +2 -2
  59. package/dist/components/flyout.min.js +2 -2
  60. package/dist/components/form.css +5 -95
  61. package/dist/components/form.js +335 -444
  62. package/dist/components/form.min.css +2 -2
  63. package/dist/components/form.min.js +2 -2
  64. package/dist/components/grid.css +2 -58
  65. package/dist/components/grid.min.css +2 -2
  66. package/dist/components/header.css +1 -1
  67. package/dist/components/header.min.css +1 -1
  68. package/dist/components/icon.css +4 -4
  69. package/dist/components/icon.min.css +2 -2
  70. package/dist/components/image.css +1 -1
  71. package/dist/components/image.min.css +1 -1
  72. package/dist/components/input.css +1 -536
  73. package/dist/components/input.min.css +2 -2
  74. package/dist/components/item.css +1 -1
  75. package/dist/components/item.min.css +1 -1
  76. package/dist/components/label.css +1 -1
  77. package/dist/components/label.min.css +1 -1
  78. package/dist/components/list.css +1 -3
  79. package/dist/components/list.min.css +2 -2
  80. package/dist/components/loader.css +1 -1
  81. package/dist/components/loader.min.css +1 -1
  82. package/dist/components/menu.css +40 -48
  83. package/dist/components/menu.min.css +2 -2
  84. package/dist/components/message.css +1 -1
  85. package/dist/components/message.min.css +1 -1
  86. package/dist/components/modal.css +5 -9
  87. package/dist/components/modal.js +261 -384
  88. package/dist/components/modal.min.css +2 -2
  89. package/dist/components/modal.min.js +2 -2
  90. package/dist/components/nag.css +1 -1
  91. package/dist/components/nag.js +68 -98
  92. package/dist/components/nag.min.css +1 -1
  93. package/dist/components/nag.min.js +2 -2
  94. package/dist/components/placeholder.css +1 -1
  95. package/dist/components/placeholder.min.css +1 -1
  96. package/dist/components/popup.css +1 -2
  97. package/dist/components/popup.js +198 -271
  98. package/dist/components/popup.min.css +2 -2
  99. package/dist/components/popup.min.js +2 -2
  100. package/dist/components/progress.css +1 -1
  101. package/dist/components/progress.js +109 -144
  102. package/dist/components/progress.min.css +1 -1
  103. package/dist/components/progress.min.js +2 -2
  104. package/dist/components/rail.css +1 -1
  105. package/dist/components/rail.min.css +1 -1
  106. package/dist/components/rating.css +1 -1
  107. package/dist/components/rating.js +91 -123
  108. package/dist/components/rating.min.css +1 -1
  109. package/dist/components/rating.min.js +2 -2
  110. package/dist/components/reset.css +1 -1
  111. package/dist/components/reset.min.css +1 -1
  112. package/dist/components/reveal.css +1 -1
  113. package/dist/components/reveal.min.css +1 -1
  114. package/dist/components/search.css +2 -9
  115. package/dist/components/search.js +277 -379
  116. package/dist/components/search.min.css +2 -2
  117. package/dist/components/search.min.js +2 -2
  118. package/dist/components/segment.css +2 -7
  119. package/dist/components/segment.min.css +2 -2
  120. package/dist/components/shape.css +1 -2
  121. package/dist/components/shape.js +158 -224
  122. package/dist/components/shape.min.css +2 -2
  123. package/dist/components/shape.min.js +2 -2
  124. package/dist/components/sidebar.css +2 -3
  125. package/dist/components/sidebar.js +124 -206
  126. package/dist/components/sidebar.min.css +2 -2
  127. package/dist/components/sidebar.min.js +2 -2
  128. package/dist/components/site.css +9 -25
  129. package/dist/components/site.js +38 -57
  130. package/dist/components/site.min.css +2 -2
  131. package/dist/components/site.min.js +2 -2
  132. package/dist/components/slider.css +1 -1
  133. package/dist/components/slider.js +246 -329
  134. package/dist/components/slider.min.css +1 -1
  135. package/dist/components/slider.min.js +2 -2
  136. package/dist/components/state.js +70 -100
  137. package/dist/components/state.min.js +2 -2
  138. package/dist/components/statistic.css +1 -1
  139. package/dist/components/statistic.min.css +1 -1
  140. package/dist/components/step.css +1 -1
  141. package/dist/components/step.min.css +1 -1
  142. package/dist/components/sticky.css +1 -1
  143. package/dist/components/sticky.js +135 -180
  144. package/dist/components/sticky.min.css +1 -1
  145. package/dist/components/sticky.min.js +2 -2
  146. package/dist/components/tab.css +1 -1
  147. package/dist/components/tab.js +176 -244
  148. package/dist/components/tab.min.css +1 -1
  149. package/dist/components/tab.min.js +2 -2
  150. package/dist/components/table.css +3 -37
  151. package/dist/components/table.min.css +2 -2
  152. package/dist/components/text.css +1 -1
  153. package/dist/components/text.min.css +1 -1
  154. package/dist/components/toast.css +1 -3
  155. package/dist/components/toast.js +109 -147
  156. package/dist/components/toast.min.css +1 -1
  157. package/dist/components/toast.min.js +2 -2
  158. package/dist/components/transition.css +1 -1
  159. package/dist/components/transition.js +91 -146
  160. package/dist/components/transition.min.css +1 -1
  161. package/dist/components/transition.min.js +2 -2
  162. package/dist/components/visibility.js +146 -224
  163. package/dist/components/visibility.min.js +2 -2
  164. package/dist/semantic.css +3945 -8759
  165. package/dist/semantic.js +4397 -6155
  166. package/dist/semantic.min.css +2 -2
  167. package/dist/semantic.min.js +2 -2
  168. package/examples/assets/show-examples.js +2 -4
  169. package/examples/attached.html +1 -1
  170. package/examples/components/menu.html +1 -1
  171. package/gulpfile.js +5 -7
  172. package/package.json +3 -5
  173. package/scripts/nightly-version.js +7 -10
  174. package/src/README.md +3 -3
  175. package/src/definitions/behaviors/api.js +156 -209
  176. package/src/definitions/behaviors/form.js +334 -443
  177. package/src/definitions/behaviors/state.js +69 -99
  178. package/src/definitions/behaviors/visibility.js +145 -223
  179. package/src/definitions/collections/form.less +1 -13
  180. package/src/definitions/collections/grid.less +1 -61
  181. package/src/definitions/collections/menu.less +101 -107
  182. package/src/definitions/collections/table.less +1 -35
  183. package/src/definitions/elements/input.less +1 -61
  184. package/src/definitions/elements/segment.less +0 -6
  185. package/src/definitions/globals/site.js +37 -56
  186. package/src/definitions/globals/site.less +2 -18
  187. package/src/definitions/modules/accordion.js +102 -141
  188. package/src/definitions/modules/calendar.js +313 -351
  189. package/src/definitions/modules/checkbox.js +84 -134
  190. package/src/definitions/modules/dimmer.js +60 -93
  191. package/src/definitions/modules/dimmer.less +0 -9
  192. package/src/definitions/modules/dropdown.js +735 -1054
  193. package/src/definitions/modules/dropdown.less +31 -47
  194. package/src/definitions/modules/embed.js +84 -113
  195. package/src/definitions/modules/flyout.js +225 -354
  196. package/src/definitions/modules/modal.js +260 -383
  197. package/src/definitions/modules/modal.less +1 -1
  198. package/src/definitions/modules/nag.js +67 -97
  199. package/src/definitions/modules/popup.js +197 -270
  200. package/src/definitions/modules/progress.js +108 -143
  201. package/src/definitions/modules/rating.js +90 -122
  202. package/src/definitions/modules/search.js +276 -378
  203. package/src/definitions/modules/search.less +0 -3
  204. package/src/definitions/modules/shape.js +157 -223
  205. package/src/definitions/modules/sidebar.js +123 -205
  206. package/src/definitions/modules/slider.js +245 -328
  207. package/src/definitions/modules/slider.less +1 -1
  208. package/src/definitions/modules/sticky.js +134 -179
  209. package/src/definitions/modules/tab.js +175 -243
  210. package/src/definitions/modules/toast.js +108 -146
  211. package/src/definitions/modules/toast.less +1 -1
  212. package/src/definitions/modules/transition.js +90 -145
  213. package/src/theme.less +0 -13
  214. package/src/themes/basic/elements/icon.variables +1 -1
  215. package/src/themes/chubby/collections/menu.variables +1 -1
  216. package/src/themes/default/collections/grid.variables +0 -30
  217. package/src/themes/default/collections/menu.variables +23 -23
  218. package/src/themes/default/collections/table.variables +1 -5
  219. package/src/themes/default/elements/icon.variables +3 -3
  220. package/src/themes/default/globals/site.variables +8 -15
  221. package/src/themes/default/globals/variation.variables +3 -3
  222. package/src/themes/default/modules/dropdown.variables +1 -0
  223. package/src/themes/default/modules/slider.variables +1 -1
  224. package/src/themes/github/elements/icon.variables +1 -1
  225. package/src/themes/material/elements/icon.variables +1 -1
  226. package/tasks/README.md +1 -1
  227. package/tasks/admin/components/create.js +89 -122
  228. package/tasks/admin/components/init.js +34 -65
  229. package/tasks/admin/components/update.js +50 -61
  230. package/tasks/admin/distributions/create.js +71 -111
  231. package/tasks/admin/distributions/init.js +32 -63
  232. package/tasks/admin/distributions/update.js +49 -57
  233. package/tasks/admin/publish.js +1 -1
  234. package/tasks/admin/register.js +14 -19
  235. package/tasks/admin/release.js +2 -2
  236. package/tasks/build/assets.js +14 -18
  237. package/tasks/build/css.js +59 -68
  238. package/tasks/build/javascript.js +48 -56
  239. package/tasks/build.js +4 -6
  240. package/tasks/check-install.js +5 -8
  241. package/tasks/clean.js +5 -7
  242. package/tasks/collections/admin.js +14 -16
  243. package/tasks/collections/build.js +6 -8
  244. package/tasks/collections/docs.js +4 -6
  245. package/tasks/collections/install.js +2 -4
  246. package/tasks/collections/rtl.js +2 -4
  247. package/tasks/collections/various.js +2 -4
  248. package/tasks/config/admin/github.js +9 -19
  249. package/tasks/config/admin/templates/README.md +2 -2
  250. package/tasks/config/admin/templates/bower.json +2 -4
  251. package/tasks/config/admin/templates/composer.json +1 -1
  252. package/tasks/config/admin/templates/css-package.js +1 -4
  253. package/tasks/config/admin/templates/less-package.js +1 -3
  254. package/tasks/config/defaults.js +0 -1
  255. package/tasks/config/npm/gulpfile.js +4 -6
  256. package/tasks/config/project/config.js +27 -35
  257. package/tasks/config/project/install.js +64 -82
  258. package/tasks/config/project/release.js +7 -9
  259. package/tasks/config/tasks.js +10 -21
  260. package/tasks/config/user.js +14 -20
  261. package/tasks/docs/build.js +26 -31
  262. package/tasks/docs/metadata.js +30 -39
  263. package/tasks/docs/serve.js +23 -27
  264. package/tasks/install.js +94 -128
  265. package/tasks/rtl/build.js +2 -4
  266. package/tasks/rtl/watch.js +3 -5
  267. package/tasks/watch.js +13 -13
  268. package/test/meteor/fonts.js +1 -2
  269. package/test/modules/module.spec.js +16 -18
  270. package/types/fomantic-ui-calendar.d.ts +1 -1
  271. package/types/fomantic-ui-dropdown.d.ts +45 -1
  272. package/types/fomantic-ui-embed.d.ts +1 -1
  273. package/types/fomantic-ui-flyout.d.ts +1 -1
  274. package/types/fomantic-ui-form.d.ts +0 -7
  275. package/types/fomantic-ui-modal.d.ts +1 -1
  276. package/types/fomantic-ui-search.d.ts +12 -6
  277. package/types/fomantic-ui-toast.d.ts +1 -1
  278. package/src/themes/basic/assets/fonts/icons.woff +0 -0
  279. package/src/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  280. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  281. package/src/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  282. package/src/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  283. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  284. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  285. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  286. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  287. package/src/themes/default/assets/fonts/brand-icons.woff +0 -0
  288. package/src/themes/default/assets/fonts/icons.woff +0 -0
  289. package/src/themes/default/assets/fonts/outline-icons.woff +0 -0
  290. package/src/themes/github/assets/fonts/octicons.woff +0 -0
  291. package/src/themes/material/assets/fonts/icons.woff +0 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.10.0-beta.1+bee406e - Calendar
2
+ * # Fomantic-UI 2.10.0-beta.11+6d1b302 - 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
 
@@ -149,11 +145,9 @@
149
145
  $container = $('<div/>', { id: module.popupId }).addClass(className.popup).appendTo($document.find(settings.context));
150
146
  } else {
151
147
  // prepend the popup element to the activator's parent so that it has less chance of messing with
152
- // the styling (eg input action button needs to be the last child to have correct border radius)
153
- var
154
- $activatorParent = $activator.parent(),
155
- domPositionFunction = $activatorParent.closest(selector.append).length > 0 ? 'appendTo' : 'prependTo'
156
- ;
148
+ // the styling (e.g., input action button needs to be the last child to have the correct border radius)
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
- // clicked on a child element, switch to parent (used when clicking directly on prev/next <i> icon element)
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) {
@@ -750,11 +732,9 @@
750
732
  },
751
733
 
752
734
  observeChanges: function () {
753
- if ('MutationObserver' in window) {
754
- classObserver = new MutationObserver(module.event.class.mutation);
755
- module.debug('Setting up mutation observer', classObserver);
756
- module.observe.class();
757
- }
735
+ classObserver = new MutationObserver(module.event.class.mutation);
736
+ module.debug('Setting up mutation observer', classObserver);
737
+ module.observe.class();
758
738
  },
759
739
 
760
740
  disconnect: {
@@ -790,12 +770,11 @@
790
770
  get: {
791
771
  weekOfYear: function (weekYear, weekMonth, weekDay) {
792
772
  // 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
- ;
773
+ let ms1d = 24 * 3600 * 1000;
774
+ let ms7d = 7 * ms1d;
775
+ let DC3 = Date.UTC(weekYear, weekMonth, weekDay + 3) / ms1d; // an absolute day number
776
+ let AWN = Math.floor(DC3 / 7); // an absolute week number
777
+ let Wyr = new Date(AWN * ms7d).getUTCFullYear();
799
778
 
800
779
  return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
801
780
  },
@@ -812,7 +791,7 @@
812
791
  return module.helper.dateObjectOrFormatted(format, $module.data(metadata.focusDate));
813
792
  },
814
793
  startDate: function (format) {
815
- var startModule = module.get.calendarModule(settings.startCalendar);
794
+ let startModule = module.get.calendarModule(settings.startCalendar);
816
795
 
817
796
  if (startModule) {
818
797
  return startModule.get.date(format);
@@ -821,7 +800,7 @@
821
800
  return module.helper.dateObjectOrFormatted(format, $module.data(metadata.startDate));
822
801
  },
823
802
  endDate: function (format) {
824
- var endModule = module.get.calendarModule(settings.endCalendar);
803
+ let endModule = module.get.calendarModule(settings.endCalendar);
825
804
 
826
805
  if (endModule) {
827
806
  return endModule.get.date(format);
@@ -840,12 +819,12 @@
840
819
  },
841
820
  mode: function () {
842
821
  // only returns valid modes for the current settings
843
- var mode = $module.data(metadata.mode) || settings.startMode;
822
+ let mode = $module.data(metadata.mode) || settings.startMode;
844
823
 
845
824
  return module.get.validatedMode(mode);
846
825
  },
847
826
  validatedMode: function (mode) {
848
- var validModes = module.get.validModes();
827
+ let validModes = module.get.validModes();
849
828
  if ($.inArray(mode, validModes) >= 0) {
850
829
  return mode;
851
830
  }
@@ -860,7 +839,7 @@
860
839
  return $module.data(metadata.type) || settings.type;
861
840
  },
862
841
  validModes: function () {
863
- var validModes = [];
842
+ let validModes = [];
864
843
  if (settings.type !== 'time') {
865
844
  if (!settings.disableYear || settings.type === 'year') {
866
845
  validModes.push('year');
@@ -910,8 +889,8 @@
910
889
  date = module.helper.sanitiseDate(date);
911
890
  date = module.helper.dateInRange(date);
912
891
 
913
- var mode = module.get.mode();
914
- var text = module.helper.dateFormat(formatter[settings.type], date);
892
+ let mode = module.get.mode();
893
+ let text = module.helper.dateFormat(formatter[settings.type], date);
915
894
 
916
895
  if (fireChange && settings.onBeforeChange.call(element, date, text, mode) === false) {
917
896
  return false;
@@ -923,7 +902,7 @@
923
902
  return false;
924
903
  }
925
904
 
926
- var endDate = module.get.endDate();
905
+ let endDate = module.get.endDate();
927
906
  if (!!endDate && !!date && date > endDate) {
928
907
  // selected date is greater than end date in range, so clear end date
929
908
  module.set.endDate();
@@ -940,7 +919,7 @@
940
919
  },
941
920
  startDate: function (date, refreshCalendar) {
942
921
  date = module.helper.sanitiseDate(date);
943
- var startModule = module.get.calendarModule(settings.startCalendar);
922
+ let startModule = module.get.calendarModule(settings.startCalendar);
944
923
  if (startModule) {
945
924
  startModule.set.date(date);
946
925
  }
@@ -948,7 +927,7 @@
948
927
  },
949
928
  endDate: function (date, refreshCalendar) {
950
929
  date = module.helper.sanitiseDate(date);
951
- var endModule = module.get.calendarModule(settings.endCalendar);
930
+ let endModule = module.get.calendarModule(settings.endCalendar);
952
931
  if (endModule) {
953
932
  endModule.set.date(date);
954
933
  }
@@ -957,17 +936,17 @@
957
936
  focusDate: function (date, refreshCalendar, updateFocus, updateRange) {
958
937
  date = module.helper.sanitiseDate(date);
959
938
  date = module.helper.dateInRange(date);
960
- var isDay = module.get.mode() === 'day';
961
- var oldFocusDate = module.get.focusDate();
939
+ let isDay = module.get.mode() === 'day';
940
+ let oldFocusDate = module.get.focusDate();
962
941
  if (isDay && date && oldFocusDate) {
963
- var yearDelta = date.getFullYear() - oldFocusDate.getFullYear();
964
- var monthDelta = yearDelta * 12 + date.getMonth() - oldFocusDate.getMonth();
942
+ let yearDelta = date.getFullYear() - oldFocusDate.getFullYear();
943
+ let monthDelta = yearDelta * 12 + date.getMonth() - oldFocusDate.getMonth();
965
944
  if (monthDelta) {
966
- var monthOffset = module.get.monthOffset() - monthDelta;
945
+ let monthOffset = module.get.monthOffset() - monthDelta;
967
946
  module.set.monthOffset(monthOffset, false);
968
947
  }
969
948
  }
970
- var changed = module.set.dataKeyValue(metadata.focusDate, date, !!date && refreshCalendar);
949
+ let changed = module.set.dataKeyValue(metadata.focusDate, date, !!date && refreshCalendar);
971
950
  updateFocus = (updateFocus !== false && changed && refreshCalendar === false) || focusDateUsedForRange != updateRange;
972
951
  focusDateUsedForRange = updateRange;
973
952
  if (updateFocus) {
@@ -993,7 +972,7 @@
993
972
  }
994
973
  },
995
974
  monthOffset: function (monthOffset, refreshCalendar) {
996
- var multiMonth = Math.max(settings.multiMonth, 1);
975
+ let multiMonth = Math.max(settings.multiMonth, 1);
997
976
  monthOffset = Math.max(1 - multiMonth, Math.min(0, monthOffset));
998
977
  module.set.dataKeyValue(metadata.monthOffset, monthOffset, refreshCalendar);
999
978
  },
@@ -1001,8 +980,8 @@
1001
980
  module.set.dataKeyValue(metadata.mode, mode, refreshCalendar);
1002
981
  },
1003
982
  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
983
+ let oldValue = $module.data(key);
984
+ let equal = oldValue === value || (oldValue <= value && oldValue >= value); // equality test for dates and string objects
1006
985
  if (value) {
1007
986
  $module.data(key, value);
1008
987
  } else {
@@ -1019,20 +998,20 @@
1019
998
 
1020
999
  selectDate: function (date, forceSet) {
1021
1000
  module.verbose('New date selection', date);
1022
- var mode = module.get.mode();
1023
- var complete = forceSet || mode === 'minute'
1001
+ let mode = module.get.mode();
1002
+ let complete = forceSet || mode === 'minute'
1024
1003
  || (settings.disableMinute && mode === 'hour')
1025
1004
  || (settings.type === 'date' && mode === 'day')
1026
1005
  || (settings.type === 'month' && mode === 'month')
1027
1006
  || (settings.type === 'year' && mode === 'year');
1028
1007
  if (complete) {
1029
- var canceled = module.set.date(date) === false;
1008
+ let canceled = module.set.date(date) === false;
1030
1009
  if (!canceled) {
1031
1010
  selectionComplete = true;
1032
1011
  if (settings.closable) {
1033
1012
  module.popup('hide');
1034
1013
  // 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);
1014
+ let endModule = module.get.calendarModule(settings.endCalendar);
1036
1015
  if (endModule) {
1037
1016
  endModule.refresh();
1038
1017
  if (endModule.setting('on') !== 'focus') {
@@ -1043,7 +1022,7 @@
1043
1022
  }
1044
1023
  }
1045
1024
  } else {
1046
- var newMode = mode === 'year'
1025
+ let newMode = mode === 'year'
1047
1026
  ? (!settings.disableMonth ? 'month' : 'day')
1048
1027
  : (mode === 'month'
1049
1028
  ? 'day'
@@ -1094,46 +1073,44 @@
1094
1073
  return format.call(module, date, settings);
1095
1074
  }
1096
1075
 
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
- ;
1076
+ let D = date.getDate();
1077
+ let M = date.getMonth();
1078
+ let Y = date.getFullYear();
1079
+ let d = date.getDay();
1080
+ let H = date.getHours();
1081
+ let m = date.getMinutes();
1082
+ let s = date.getSeconds();
1083
+ let w = module.get.weekOfYear(Y, M, D + 1 - settings.firstDayOfWeek);
1084
+ let h = H % 12 || 12;
1085
+ let a = H < 12 ? settings.text.am.toLowerCase() : settings.text.pm.toLowerCase();
1086
+ let tokens = {
1087
+ D: D,
1088
+ DD: ('0' + D).slice(-2),
1089
+ M: M + 1,
1090
+ MM: ('0' + (M + 1)).slice(-2),
1091
+ MMM: settings.text.monthsShort[M],
1092
+ MMMM: settings.text.months[M],
1093
+ Y: Y,
1094
+ YY: String(Y).slice(2),
1095
+ YYYY: Y,
1096
+ d: d,
1097
+ dd: settings.text.dayNamesShort[d].slice(0, 2),
1098
+ ddd: settings.text.dayNamesShort[d],
1099
+ dddd: settings.text.dayNames[d],
1100
+ h: h,
1101
+ hh: ('0' + h).slice(-2),
1102
+ H: H,
1103
+ HH: ('0' + H).slice(-2),
1104
+ m: m,
1105
+ mm: ('0' + m).slice(-2),
1106
+ s: s,
1107
+ ss: ('0' + s).slice(-2),
1108
+ a: a,
1109
+ A: a.toUpperCase(),
1110
+ S: ['th', 'st', 'nd', 'rd'][(D % 10) > 3 ? 0 : ((D % 100) - (D % 10) === 10 ? 0 : D % 10)],
1111
+ w: w,
1112
+ ww: ('0' + w).slice(-2),
1113
+ };
1137
1114
 
1138
1115
  return format.replace(settings.regExp.token, function (match) {
1139
1116
  if (match in tokens) {
@@ -1159,7 +1136,7 @@
1159
1136
  },
1160
1137
  isDisabled: function (date, mode) {
1161
1138
  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;
1139
+ let blocked = false;
1163
1140
 
1164
1141
  if (typeof d === 'string') {
1165
1142
  d = module.helper.sanitiseDate(d);
@@ -1179,7 +1156,7 @@
1179
1156
  } else if (Array.isArray(d[metadata.month])) {
1180
1157
  blocked = d[metadata.month].indexOf(date.getMonth()) > -1;
1181
1158
  } else if (d[metadata.month] instanceof Date) {
1182
- var sdate = module.helper.sanitiseDate(d[metadata.month]);
1159
+ let sdate = module.helper.sanitiseDate(d[metadata.month]);
1183
1160
 
1184
1161
  blocked = (date.getMonth() === sdate.getMonth()) && (date.getFullYear() === sdate.getFullYear());
1185
1162
  }
@@ -1196,7 +1173,7 @@
1196
1173
 
1197
1174
  return blocked;
1198
1175
  })) || (mode === 'hour' && settings.disabledHours.some(function (d) {
1199
- var blocked = false;
1176
+ let blocked = false;
1200
1177
 
1201
1178
  if (typeof d === 'string') {
1202
1179
  d = module.helper.sanitiseDate(d);
@@ -1239,7 +1216,7 @@
1239
1216
  isEnabled: function (date, mode) {
1240
1217
  if (mode === 'day') {
1241
1218
  return settings.enabledDates.length === 0 || settings.enabledDates.some(function (d) {
1242
- var enabled = false;
1219
+ let enabled = false;
1243
1220
 
1244
1221
  if (typeof d === 'string') {
1245
1222
  d = module.helper.sanitiseDate(d);
@@ -1258,14 +1235,14 @@
1258
1235
  },
1259
1236
  findDayAsObject: function (date, mode, dates) {
1260
1237
  if (mode === 'day' || mode === 'month' || mode === 'year') {
1261
- var d;
1262
- for (var i = 0; i < dates.length; i++) {
1238
+ let d;
1239
+ for (let i = 0; i < dates.length; i++) {
1263
1240
  d = dates[i];
1264
1241
  if (typeof d === 'string') {
1265
1242
  d = module.helper.sanitiseDate(d);
1266
1243
  }
1267
1244
  if (d instanceof Date && module.helper.dateEqual(date, d, mode)) {
1268
- var dateObject = {};
1245
+ let dateObject = {};
1269
1246
  dateObject[metadata.date] = d;
1270
1247
 
1271
1248
  return dateObject;
@@ -1289,7 +1266,7 @@
1289
1266
  return d;
1290
1267
  }
1291
1268
  } else if (d[metadata.month] instanceof Date) {
1292
- var sdate = module.helper.sanitiseDate(d[metadata.month]);
1269
+ let sdate = module.helper.sanitiseDate(d[metadata.month]);
1293
1270
  if ((date.getMonth() === sdate.getMonth()) && (date.getFullYear() === sdate.getFullYear())) {
1294
1271
  return d;
1295
1272
  }
@@ -1314,8 +1291,8 @@
1314
1291
  },
1315
1292
  findHourAsObject: function (date, mode, hours) {
1316
1293
  if (mode === 'hour') {
1317
- var d;
1318
- var hourCheck = function (date, d) {
1294
+ let d;
1295
+ let hourCheck = function (date, d) {
1319
1296
  if (d[metadata.hours]) {
1320
1297
  if (typeof d[metadata.hours] === 'number' && date.getHours() === d[metadata.hours]) {
1321
1298
  return d;
@@ -1327,7 +1304,7 @@
1327
1304
  }
1328
1305
  }
1329
1306
  };
1330
- for (var i = 0; i < hours.length; i++) {
1307
+ for (let i = 0; i < hours.length; i++) {
1331
1308
  d = hours[i];
1332
1309
  if (typeof d === 'number' && date.getHours() === d) {
1333
1310
  return null;
@@ -1377,11 +1354,11 @@
1377
1354
  mode = 'day';
1378
1355
  }
1379
1356
 
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';
1357
+ let isTimeOnly = settings.type === 'time';
1358
+ let isYear = mode === 'year';
1359
+ let isYearOrMonth = isYear || mode === 'month';
1360
+ let isMinute = mode === 'minute';
1361
+ let isHourOrMinute = isMinute || mode === 'hour';
1385
1362
  // only care about a minute accuracy of settings.minTimeGap
1386
1363
  date1 = new Date(
1387
1364
  isTimeOnly ? 2000 : date1.getFullYear(),
@@ -1405,7 +1382,7 @@
1405
1382
  },
1406
1383
  isDateInRange: function (date, mode, minDate, maxDate) {
1407
1384
  if (!minDate && !maxDate) {
1408
- var startDate = module.get.startDate();
1385
+ let startDate = module.get.startDate();
1409
1386
  minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
1410
1387
  maxDate = settings.maxDate;
1411
1388
  }
@@ -1417,12 +1394,12 @@
1417
1394
  },
1418
1395
  dateInRange: function (date, minDate, maxDate) {
1419
1396
  if (!minDate && !maxDate) {
1420
- var startDate = module.get.startDate();
1397
+ let startDate = module.get.startDate();
1421
1398
  minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
1422
1399
  maxDate = settings.maxDate;
1423
1400
  }
1424
1401
  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';
1402
+ let isTimeOnly = settings.type === 'time';
1426
1403
 
1427
1404
  return !date
1428
1405
  ? date
@@ -1493,11 +1470,9 @@
1493
1470
  },
1494
1471
  performance: {
1495
1472
  log: function (message) {
1496
- var
1497
- currentTime,
1498
- executionTime,
1499
- previousTime
1500
- ;
1473
+ let currentTime;
1474
+ let executionTime;
1475
+ let previousTime;
1501
1476
  if (settings.performance) {
1502
1477
  currentTime = Date.now();
1503
1478
  previousTime = time || currentTime;
@@ -1516,10 +1491,8 @@
1516
1491
  }, 500);
1517
1492
  },
1518
1493
  display: function () {
1519
- var
1520
- title = settings.name + ':',
1521
- totalTime = 0
1522
- ;
1494
+ let title = settings.name + ':';
1495
+ let totalTime = 0;
1523
1496
  time = false;
1524
1497
  clearTimeout(module.performance.timer);
1525
1498
  $.each(performance, function (index, data) {
@@ -1541,22 +1514,19 @@
1541
1514
  },
1542
1515
  },
1543
1516
  invoke: function (query, passedArguments, context) {
1544
- var
1545
- object = instance,
1546
- maxDepth,
1547
- found,
1548
- response
1549
- ;
1517
+ let object = instance;
1518
+ let maxDepth;
1519
+ let found;
1520
+ let response;
1550
1521
  passedArguments = passedArguments || queryArguments;
1551
1522
  context = context || element;
1552
1523
  if (typeof query === 'string' && object !== undefined) {
1553
1524
  query = query.split(/[ .]/);
1554
1525
  maxDepth = query.length - 1;
1555
1526
  $.each(query, function (depth, value) {
1556
- var camelCaseValue = depth !== maxDepth
1527
+ let camelCaseValue = depth !== maxDepth
1557
1528
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1558
- : query
1559
- ;
1529
+ : query;
1560
1530
  if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
1561
1531
  object = object[camelCaseValue];
1562
1532
  } else if (object[camelCaseValue] !== undefined) {
@@ -1623,12 +1593,12 @@
1623
1593
 
1624
1594
  context: false,
1625
1595
 
1626
- type: 'datetime', // picker type, can be 'datetime', 'date', 'time', 'month', or 'year'
1596
+ type: 'datetime', // picker type. can be 'datetime', 'date', 'time', 'month', or 'year'
1627
1597
  firstDayOfWeek: 0, // day for first day column (0 = Sunday)
1628
1598
  constantHeight: true, // add rows to shorter months to keep day calendar height consistent (6 rows)
1629
1599
  today: false, // show a 'today/now' button at the bottom of the calendar
1630
1600
  closable: true, // close the popup after selecting a date/time
1631
- monthFirst: true, // month before day when parsing date from text
1601
+ monthFirst: false, // month before day when parsing date from a text
1632
1602
  touchReadonly: true, // set input to readonly on touch devices
1633
1603
  inline: false, // create the calendar inline instead of inside a popup
1634
1604
  on: null, // when to show the popup (defaults to 'focus' for input, 'click' for others)
@@ -1645,7 +1615,7 @@
1645
1615
  multiMonth: 1, // show multiple months when in 'day' mode
1646
1616
  monthOffset: 0, // position current month by offset when multimonth > 1
1647
1617
  minTimeGap: 5,
1648
- showWeekNumbers: false, // show Number of Week at the very first column of a dayView
1618
+ showWeekNumbers: false, // show Number of Weeks at the very first column of a dayView
1649
1619
  disabledHours: [], // specific hour(s) which won't be selectable and contain additional information.
1650
1620
  disabledDates: [], // specific day(s) which won't be selectable and contain additional information.
1651
1621
  disabledDaysOfWeek: [], // day(s) which won't be selectable(s) (0 = Sunday)
@@ -1678,7 +1648,7 @@
1678
1648
 
1679
1649
  formatter: {
1680
1650
  yearHeader: function (date, settings) {
1681
- var decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
1651
+ let decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
1682
1652
 
1683
1653
  return (decadeYear - 9) + ' - ' + (decadeYear + 2);
1684
1654
  },
@@ -1719,42 +1689,34 @@
1719
1689
  }
1720
1690
  // Reverse date and month in some cases
1721
1691
  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;
1692
+ let textDate = new Date(text);
1693
+ let numberOnly = text.match(/^\d+$/) !== null;
1694
+ let isShortYear = text.match(/^(?:\d{1,2}[./-]){2}\d{1,2}$/) !== null;
1725
1695
  if (!isShortYear && !numberOnly && !isNaN(textDate.getDate())) {
1726
1696
  return textDate;
1727
1697
  }
1728
1698
  text = text.toLowerCase();
1729
1699
 
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;
1700
+ let i;
1701
+ let j;
1702
+ let k;
1703
+ let minute = -1;
1704
+ let hour = -1;
1705
+ let day = -1;
1706
+ let month = -1;
1707
+ let year = -1;
1708
+ let isAm;
1709
+
1710
+ let isTimeOnly = settings.type === 'time';
1711
+ let isDateOnly = settings.type.indexOf('time') < 0;
1712
+
1713
+ let words = text.split(settings.regExp.dateWords);
1714
+ let word;
1715
+ let numbers = text.split(settings.regExp.dateNumbers);
1716
+ let number;
1717
+
1718
+ let parts;
1719
+ let monthString;
1758
1720
 
1759
1721
  if (!isDateOnly) {
1760
1722
  // am/pm
@@ -1938,9 +1900,9 @@
1938
1900
  }
1939
1901
  }
1940
1902
 
1941
- var date = new Date(year, month - 1, day, hour, minute);
1903
+ let date = new Date(year, month - 1, day, hour, minute);
1942
1904
  if (date.getMonth() !== month - 1 || date.getFullYear() !== year) {
1943
- // month or year don't match up, switch to last day of the month
1905
+ // month or year don't match up, switch to the last day of the month
1944
1906
  date = new Date(year, month, 0, hour, minute);
1945
1907
  }
1946
1908