fomantic-ui 2.10.0-beta.62 → 2.10.0-beta.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +0 -1
- package/changelog-setup.js +10 -10
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +40 -41
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +2 -2
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +57 -61
- package/dist/components/api.min.js +2 -2
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +1 -1
- package/dist/components/button.min.css +1 -1
- package/dist/components/calendar.css +1 -1
- package/dist/components/calendar.js +186 -187
- package/dist/components/calendar.min.css +1 -1
- package/dist/components/calendar.min.js +2 -2
- package/dist/components/card.css +1 -1
- package/dist/components/card.min.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/checkbox.js +29 -30
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +2 -2
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +1 -1
- package/dist/components/container.min.css +1 -1
- package/dist/components/dimmer.css +1 -1
- package/dist/components/dimmer.js +22 -23
- package/dist/components/dimmer.min.css +1 -1
- package/dist/components/dimmer.min.js +2 -2
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +1 -1
- package/dist/components/dropdown.js +293 -337
- package/dist/components/dropdown.min.css +1 -1
- package/dist/components/dropdown.min.js +2 -2
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +33 -35
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +2 -2
- package/dist/components/emoji.css +1 -1
- package/dist/components/emoji.min.css +1 -1
- package/dist/components/feed.css +1 -1
- package/dist/components/feed.min.css +1 -1
- package/dist/components/flag.css +1 -1
- package/dist/components/flag.min.css +1 -1
- package/dist/components/flyout.css +1 -1
- package/dist/components/flyout.js +74 -81
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +1 -1
- package/dist/components/form.js +141 -146
- package/dist/components/form.min.css +1 -1
- package/dist/components/form.min.js +2 -2
- package/dist/components/grid.css +1 -1
- package/dist/components/grid.min.css +1 -1
- package/dist/components/header.css +1 -1
- package/dist/components/header.min.css +1 -1
- package/dist/components/icon.css +1 -1
- package/dist/components/icon.min.css +1 -1
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +1 -1
- package/dist/components/input.min.css +1 -1
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +1 -1
- package/dist/components/label.min.css +1 -1
- package/dist/components/list.css +1 -1
- package/dist/components/list.min.css +1 -1
- package/dist/components/loader.css +1 -1
- package/dist/components/loader.min.css +1 -1
- package/dist/components/menu.css +1 -1
- package/dist/components/menu.min.css +1 -1
- package/dist/components/message.css +1 -1
- package/dist/components/message.min.css +1 -1
- package/dist/components/modal.css +1 -1
- package/dist/components/modal.js +80 -81
- package/dist/components/modal.min.css +1 -1
- package/dist/components/modal.min.js +2 -2
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +27 -28
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +2 -2
- package/dist/components/placeholder.css +1 -1
- package/dist/components/placeholder.min.css +1 -1
- package/dist/components/popup.css +1 -1
- package/dist/components/popup.js +62 -72
- package/dist/components/popup.min.css +1 -1
- package/dist/components/popup.min.js +2 -2
- package/dist/components/progress.css +1 -1
- package/dist/components/progress.js +51 -55
- package/dist/components/progress.min.css +1 -1
- package/dist/components/progress.min.js +2 -2
- package/dist/components/rail.css +1 -1
- package/dist/components/rail.min.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/rating.js +33 -34
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +2 -2
- package/dist/components/reset.css +1 -1
- package/dist/components/reset.min.css +1 -1
- package/dist/components/reveal.css +1 -1
- package/dist/components/reveal.min.css +1 -1
- package/dist/components/search.css +1 -1
- package/dist/components/search.js +96 -109
- package/dist/components/search.min.css +1 -1
- package/dist/components/search.min.js +2 -2
- package/dist/components/segment.css +1 -1
- package/dist/components/segment.min.css +1 -1
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +44 -45
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +2 -2
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +56 -64
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +2 -2
- package/dist/components/site.css +1 -1
- package/dist/components/site.js +16 -17
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +2 -2
- package/dist/components/slider.css +1 -1
- package/dist/components/slider.js +143 -148
- package/dist/components/slider.min.css +1 -1
- package/dist/components/slider.min.js +2 -2
- package/dist/components/state.js +24 -25
- package/dist/components/state.min.js +2 -2
- package/dist/components/statistic.css +1 -1
- package/dist/components/statistic.min.css +1 -1
- package/dist/components/step.css +1 -1
- package/dist/components/step.min.css +1 -1
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +42 -43
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +2 -2
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +57 -66
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +2 -2
- package/dist/components/table.css +1 -1
- package/dist/components/table.min.css +1 -1
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toast.js +32 -33
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +2 -2
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +38 -45
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +2 -2
- package/dist/components/visibility.js +76 -77
- package/dist/components/visibility.min.js +2 -2
- package/dist/semantic.css +53 -53
- package/dist/semantic.js +1753 -1884
- package/dist/semantic.min.css +1 -1
- package/dist/semantic.min.js +2 -2
- package/package.json +1 -1
- package/scripts/nightly-version.js +3 -3
- package/src/definitions/behaviors/api.js +56 -60
- package/src/definitions/behaviors/form.js +140 -145
- package/src/definitions/behaviors/state.js +23 -24
- package/src/definitions/behaviors/visibility.js +75 -76
- package/src/definitions/globals/site.js +15 -16
- package/src/definitions/modules/accordion.js +39 -40
- package/src/definitions/modules/calendar.js +185 -186
- package/src/definitions/modules/checkbox.js +28 -29
- package/src/definitions/modules/dimmer.js +21 -22
- package/src/definitions/modules/dropdown.js +292 -336
- package/src/definitions/modules/embed.js +32 -34
- package/src/definitions/modules/flyout.js +73 -80
- package/src/definitions/modules/modal.js +79 -80
- package/src/definitions/modules/nag.js +26 -27
- package/src/definitions/modules/popup.js +61 -71
- package/src/definitions/modules/progress.js +50 -54
- package/src/definitions/modules/rating.js +32 -33
- package/src/definitions/modules/search.js +95 -108
- package/src/definitions/modules/shape.js +43 -44
- package/src/definitions/modules/sidebar.js +55 -63
- package/src/definitions/modules/slider.js +142 -147
- package/src/definitions/modules/sticky.js +41 -42
- package/src/definitions/modules/tab.js +56 -65
- package/src/definitions/modules/toast.js +31 -32
- package/src/definitions/modules/transition.js +37 -44
- package/tasks/admin/components/create.js +11 -11
- package/tasks/admin/components/init.js +11 -12
- package/tasks/admin/components/update.js +19 -20
- package/tasks/admin/distributions/create.js +24 -36
- package/tasks/admin/distributions/init.js +11 -12
- package/tasks/admin/distributions/update.js +18 -19
- package/tasks/admin/register.js +7 -7
- package/tasks/build/assets.js +1 -1
- package/tasks/build/css.js +1 -1
- package/tasks/build/javascript.js +1 -1
- package/tasks/config/admin/github.js +1 -1
- package/tasks/config/admin/templates/css-package.js +1 -1
- package/tasks/config/admin/templates/less-package.js +1 -1
- package/tasks/config/project/config.js +6 -6
- package/tasks/config/project/install.js +12 -12
- package/tasks/config/project/release.js +5 -11
- package/tasks/config/tasks.js +5 -5
- package/tasks/config/user.js +1 -4
- package/tasks/docs/metadata.js +11 -12
- package/tasks/install.js +9 -9
- package/test/meteor/assets.js +1 -1
- package/test/modules/module.spec.js +18 -18
|
@@ -20,59 +20,58 @@
|
|
|
20
20
|
: globalThis;
|
|
21
21
|
|
|
22
22
|
$.fn.calendar = function (...args) {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const $allModules = $(this);
|
|
24
|
+
const $document = $(document);
|
|
25
25
|
|
|
26
26
|
let time = Date.now();
|
|
27
27
|
let performance = [];
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const parameters = args[0];
|
|
30
|
+
const methodInvoked = typeof parameters === 'string';
|
|
31
|
+
const queryArguments = args.slice(1);
|
|
32
32
|
let returnedValue;
|
|
33
|
-
|
|
33
|
+
const timeGapTable = {
|
|
34
34
|
5: { row: 4, column: 3 },
|
|
35
35
|
10: { row: 3, column: 2 },
|
|
36
36
|
15: { row: 2, column: 2 },
|
|
37
37
|
20: { row: 3, column: 1 },
|
|
38
38
|
30: { row: 2, column: 1 },
|
|
39
39
|
};
|
|
40
|
-
|
|
40
|
+
const numberText = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight'];
|
|
41
41
|
|
|
42
42
|
$allModules.each(function () {
|
|
43
|
-
|
|
43
|
+
const settings = $.isPlainObject(parameters)
|
|
44
44
|
? $.extend(true, {}, $.fn.calendar.settings, parameters)
|
|
45
45
|
: $.extend({}, $.fn.calendar.settings);
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
const className = settings.className;
|
|
48
|
+
const namespace = settings.namespace;
|
|
49
|
+
const selector = settings.selector;
|
|
50
|
+
const formatter = settings.formatter;
|
|
51
|
+
const parser = settings.parser;
|
|
52
|
+
const metadata = settings.metadata;
|
|
53
|
+
const timeGap = timeGapTable[settings.minTimeGap];
|
|
54
|
+
const error = settings.error;
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
const eventNamespace = '.' + namespace;
|
|
57
|
+
const moduleNamespace = 'module-' + namespace;
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
const $module = $(this);
|
|
60
|
+
const $input = $module.find(selector.input);
|
|
61
61
|
let $activator = $module.find(selector.activator);
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
const element = this;
|
|
64
64
|
let instance = $module.data(moduleNamespace);
|
|
65
65
|
let $container = instance && instance.popupId ? $document.find('#' + instance.popupId) : $module.find(selector.popup);
|
|
66
66
|
|
|
67
67
|
let isTouch;
|
|
68
68
|
let isTouchDown = false;
|
|
69
|
-
|
|
69
|
+
const isInverted = $module.hasClass(className.inverted);
|
|
70
70
|
let focusDateUsedForRange = false;
|
|
71
71
|
let selectionComplete = false;
|
|
72
72
|
let classObserver;
|
|
73
|
-
let module;
|
|
74
73
|
|
|
75
|
-
module = {
|
|
74
|
+
const module = {
|
|
76
75
|
|
|
77
76
|
initialize: function () {
|
|
78
77
|
module.debug('Initializing calendar for', element, $module);
|
|
@@ -146,8 +145,8 @@
|
|
|
146
145
|
} else {
|
|
147
146
|
// prepend the popup element to the activator's parent so that it has less chance of messing with
|
|
148
147
|
// the styling (e.g., input action button needs to be the last child to have the correct border radius)
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
const $activatorParent = $activator.parent();
|
|
149
|
+
const domPositionFunction = $activatorParent.closest(selector.append).length > 0 ? 'appendTo' : 'prependTo';
|
|
151
150
|
$container = $('<div/>').addClass(className.popup)[domPositionFunction]($activatorParent);
|
|
152
151
|
}
|
|
153
152
|
}
|
|
@@ -160,7 +159,7 @@
|
|
|
160
159
|
|
|
161
160
|
return settings.onVisible.apply($container, args);
|
|
162
161
|
};
|
|
163
|
-
|
|
162
|
+
const onHidden = function (...args) {
|
|
164
163
|
module.blur();
|
|
165
164
|
|
|
166
165
|
return settings.onHidden.apply($container, args);
|
|
@@ -175,15 +174,15 @@
|
|
|
175
174
|
return settings.onVisible.apply($container, args);
|
|
176
175
|
};
|
|
177
176
|
}
|
|
178
|
-
|
|
177
|
+
const onShow = function (...args) {
|
|
179
178
|
// reset the focus date onShow
|
|
180
179
|
module.set.focusDate(module.get.date());
|
|
181
180
|
module.set.mode(module.get.validatedMode(settings.startMode));
|
|
182
181
|
|
|
183
182
|
return settings.onShow.apply($container, args);
|
|
184
183
|
};
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
const on = module.setting('on');
|
|
185
|
+
const options = $.extend({}, settings.popupOptions, {
|
|
187
186
|
popup: $container,
|
|
188
187
|
movePopup: !settings.context,
|
|
189
188
|
on: on,
|
|
@@ -228,9 +227,9 @@
|
|
|
228
227
|
|
|
229
228
|
trigger: {
|
|
230
229
|
change: function () {
|
|
231
|
-
|
|
230
|
+
const inputElement = $input[0];
|
|
232
231
|
if (inputElement) {
|
|
233
|
-
|
|
232
|
+
const event = new Event('change', { bubbles: true });
|
|
234
233
|
module.verbose('Triggering native change event');
|
|
235
234
|
inputElement.dispatchEvent(event);
|
|
236
235
|
}
|
|
@@ -247,41 +246,41 @@
|
|
|
247
246
|
let cell;
|
|
248
247
|
let pageGrid;
|
|
249
248
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
const mode = module.get.mode();
|
|
250
|
+
const today = new Date();
|
|
251
|
+
const date = module.get.date();
|
|
253
252
|
let focusDate = module.get.focusDate();
|
|
254
|
-
|
|
253
|
+
const display = module.helper.dateInRange(focusDate || date || parser.date(settings.initialDate, settings) || today);
|
|
255
254
|
|
|
256
255
|
if (!focusDate) {
|
|
257
256
|
focusDate = display;
|
|
258
257
|
module.set.focusDate(focusDate, false, false);
|
|
259
258
|
}
|
|
260
259
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
260
|
+
const isYear = mode === 'year';
|
|
261
|
+
const isMonth = mode === 'month';
|
|
262
|
+
const isDay = mode === 'day';
|
|
263
|
+
const isHour = mode === 'hour';
|
|
264
|
+
const isMinute = mode === 'minute';
|
|
265
|
+
const isTimeOnly = settings.type === 'time';
|
|
267
266
|
|
|
268
|
-
|
|
269
|
-
|
|
267
|
+
const multiMonth = Math.max(settings.multiMonth, 1);
|
|
268
|
+
const monthOffset = !isDay ? 0 : module.get.monthOffset();
|
|
270
269
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
270
|
+
const minute = display.getMinutes();
|
|
271
|
+
const hour = display.getHours();
|
|
272
|
+
const day = display.getDate();
|
|
273
|
+
const startMonth = display.getMonth() + monthOffset;
|
|
274
|
+
const year = display.getFullYear();
|
|
276
275
|
|
|
277
|
-
|
|
276
|
+
const columns = isDay
|
|
278
277
|
? (settings.showWeekNumbers ? 8 : 7)
|
|
279
278
|
: (isHour ? 4 : timeGap.column);
|
|
280
279
|
let rows = isDay || isHour ? 6 : timeGap.row;
|
|
281
|
-
|
|
280
|
+
const pages = isDay ? multiMonth : 1;
|
|
282
281
|
|
|
283
282
|
let container = $container;
|
|
284
|
-
|
|
283
|
+
const tooltipPosition = container.hasClass('left') ? 'right center' : 'left center';
|
|
285
284
|
container.empty();
|
|
286
285
|
if (pages > 1) {
|
|
287
286
|
pageGrid = $('<div/>').addClass(className.grid).appendTo(container);
|
|
@@ -289,31 +288,31 @@
|
|
|
289
288
|
|
|
290
289
|
for (p = 0; p < pages; p++) {
|
|
291
290
|
if (pages > 1) {
|
|
292
|
-
|
|
291
|
+
const pageColumn = $('<div/>').addClass(className.column).appendTo(pageGrid);
|
|
293
292
|
container = pageColumn;
|
|
294
293
|
}
|
|
295
294
|
|
|
296
|
-
|
|
297
|
-
|
|
295
|
+
const month = startMonth + p;
|
|
296
|
+
const firstMonthDayColumn = (new Date(year, month, 1).getDay() - (settings.firstDayOfWeek % 7) + 7) % 7;
|
|
298
297
|
if (!settings.constantHeight && isDay) {
|
|
299
|
-
|
|
298
|
+
const requiredCells = new Date(year, month + 1, 0).getDate() + firstMonthDayColumn;
|
|
300
299
|
rows = Math.ceil(requiredCells / 7);
|
|
301
300
|
}
|
|
302
301
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
302
|
+
const yearChange = isYear ? 10 : (isMonth ? 1 : 0);
|
|
303
|
+
const monthChange = isDay ? 1 : 0;
|
|
304
|
+
const dayChange = isHour || isMinute ? 1 : 0;
|
|
305
|
+
const prevNextDay = isHour || isMinute ? day : 1;
|
|
306
|
+
const prevDate = new Date(year - yearChange, month - monthChange, prevNextDay - dayChange, hour);
|
|
307
|
+
const nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour);
|
|
308
|
+
const prevLast = isYear
|
|
310
309
|
? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0)
|
|
311
310
|
: (isMonth
|
|
312
311
|
? new Date(year, 0, 0)
|
|
313
312
|
: (isDay // eslint-disable-line unicorn/no-nested-ternary
|
|
314
313
|
? new Date(year, month, 0)
|
|
315
314
|
: new Date(year, month, day, -1)));
|
|
316
|
-
|
|
315
|
+
const nextFirst = isYear
|
|
317
316
|
? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1)
|
|
318
317
|
: (isMonth
|
|
319
318
|
? new Date(year + 1, 0, 1)
|
|
@@ -325,7 +324,7 @@
|
|
|
325
324
|
if (isDay && settings.showWeekNumbers) {
|
|
326
325
|
tempMode += ' andweek';
|
|
327
326
|
}
|
|
328
|
-
|
|
327
|
+
const table = $('<table/>').addClass(className.table).addClass(tempMode).addClass(numberText[columns] + ' column')
|
|
329
328
|
.appendTo(container);
|
|
330
329
|
if (isInverted) {
|
|
331
330
|
table.addClass(className.inverted);
|
|
@@ -333,19 +332,19 @@
|
|
|
333
332
|
let textColumns = columns;
|
|
334
333
|
// no header for time-only mode
|
|
335
334
|
if (!isTimeOnly) {
|
|
336
|
-
|
|
335
|
+
const thead = $('<thead/>').appendTo(table);
|
|
337
336
|
|
|
338
337
|
row = $('<tr/>').appendTo(thead);
|
|
339
338
|
cell = $('<th/>').attr('colspan', '' + columns).appendTo(row);
|
|
340
339
|
|
|
341
|
-
|
|
340
|
+
const headerDate = isYear || isMonth
|
|
342
341
|
? new Date(year, 0, 1)
|
|
343
342
|
: (isDay
|
|
344
343
|
? new Date(year, month, 1)
|
|
345
344
|
: new Date(year, month, day, hour, minute));
|
|
346
|
-
|
|
345
|
+
const headerText = $('<span/>').addClass(className.link).appendTo(cell);
|
|
347
346
|
headerText.text(module.helper.dateFormat(formatter[mode + 'Header'], headerDate));
|
|
348
|
-
|
|
347
|
+
const newMode = isMonth
|
|
349
348
|
? (settings.disableYear ? 'day' : 'year')
|
|
350
349
|
: (isDay
|
|
351
350
|
? (settings.disableMonth ? 'year' : 'month') // eslint-disable-line unicorn/no-nested-ternary
|
|
@@ -353,14 +352,14 @@
|
|
|
353
352
|
headerText.data(metadata.mode, newMode);
|
|
354
353
|
|
|
355
354
|
if (p === 0) {
|
|
356
|
-
|
|
355
|
+
const prev = $('<span/>').addClass(className.prev).appendTo(cell);
|
|
357
356
|
prev.data(metadata.focusDate, prevDate);
|
|
358
357
|
prev.toggleClass(className.disabledCell, !module.helper.isDateInRange(prevLast, mode));
|
|
359
358
|
$('<i/>').addClass(className.prevIcon).appendTo(prev);
|
|
360
359
|
}
|
|
361
360
|
|
|
362
361
|
if (p === pages - 1) {
|
|
363
|
-
|
|
362
|
+
const next = $('<span/>').addClass(className.next).appendTo(cell);
|
|
364
363
|
next.data(metadata.focusDate, nextDate);
|
|
365
364
|
next.toggleClass(className.disabledCell, !module.helper.isDateInRange(nextFirst, mode));
|
|
366
365
|
$('<i/>').addClass(className.nextIcon).appendTo(next);
|
|
@@ -380,7 +379,7 @@
|
|
|
380
379
|
}
|
|
381
380
|
}
|
|
382
381
|
|
|
383
|
-
|
|
382
|
+
const tbody = $('<tbody/>').appendTo(table);
|
|
384
383
|
i = isYear
|
|
385
384
|
? Math.ceil(year / 10) * 10 - 9
|
|
386
385
|
: (isDay ? 1 - firstMonthDayColumn : 0);
|
|
@@ -392,7 +391,7 @@
|
|
|
392
391
|
cell.addClass(className.weekCell);
|
|
393
392
|
}
|
|
394
393
|
for (c = 0; c < textColumns; c++, i++) {
|
|
395
|
-
|
|
394
|
+
const cellDate = isYear
|
|
396
395
|
? new Date(i, month, 1, hour, minute)
|
|
397
396
|
: (isMonth
|
|
398
397
|
? new Date(year, i, 1, hour, minute)
|
|
@@ -401,7 +400,7 @@
|
|
|
401
400
|
: (isHour
|
|
402
401
|
? new Date(year, month, day, i)
|
|
403
402
|
: new Date(year, month, day, hour, i * settings.minTimeGap))));
|
|
404
|
-
|
|
403
|
+
const cellText = isYear
|
|
405
404
|
? i
|
|
406
405
|
: (isMonth
|
|
407
406
|
? settings.text.monthsShort[i]
|
|
@@ -411,11 +410,11 @@
|
|
|
411
410
|
cell = $('<td/>').addClass(className.cell).appendTo(row);
|
|
412
411
|
cell.text(cellText);
|
|
413
412
|
cell.data(metadata.date, cellDate);
|
|
414
|
-
|
|
415
|
-
|
|
413
|
+
const adjacent = isDay && cellDate.getMonth() !== ((month + 12) % 12);
|
|
414
|
+
const disabled = (!settings.selectAdjacentDays && adjacent) || !module.helper.isDateInRange(cellDate, mode) || settings.isDisabled(cellDate, mode) || module.helper.isDisabled(cellDate, mode) || !module.helper.isEnabled(cellDate, mode);
|
|
416
415
|
let eventDate;
|
|
417
416
|
if (disabled) {
|
|
418
|
-
|
|
417
|
+
const disabledDate = module.helper.findDayAsObject(cellDate, mode, settings.disabledDates);
|
|
419
418
|
if (disabledDate !== null && disabledDate[metadata.message]) {
|
|
420
419
|
cell.attr('data-tooltip', disabledDate[metadata.message]);
|
|
421
420
|
cell.attr('data-position', disabledDate[metadata.position] || tooltipPosition);
|
|
@@ -427,7 +426,7 @@
|
|
|
427
426
|
}
|
|
428
427
|
}
|
|
429
428
|
if (mode === 'hour') {
|
|
430
|
-
|
|
429
|
+
const disabledHour = module.helper.findHourAsObject(cellDate, mode, settings.disabledHours);
|
|
431
430
|
if (disabledHour !== null && disabledHour[metadata.message]) {
|
|
432
431
|
cell.attr('data-tooltip', disabledHour[metadata.message]);
|
|
433
432
|
cell.attr('data-position', disabledHour[metadata.position] || tooltipPosition);
|
|
@@ -455,8 +454,8 @@
|
|
|
455
454
|
}
|
|
456
455
|
}
|
|
457
456
|
}
|
|
458
|
-
|
|
459
|
-
|
|
457
|
+
const active = module.helper.dateEqual(cellDate, date, mode);
|
|
458
|
+
const isToday = module.helper.dateEqual(cellDate, today, mode);
|
|
460
459
|
cell.toggleClass(className.adjacentCell, adjacent && !eventDate);
|
|
461
460
|
cell.toggleClass(className.disabledCell, disabled);
|
|
462
461
|
cell.toggleClass(className.activeCell, active && !(adjacent && disabled));
|
|
@@ -465,7 +464,7 @@
|
|
|
465
464
|
}
|
|
466
465
|
|
|
467
466
|
// Allow for external modifications of each cell
|
|
468
|
-
|
|
467
|
+
const cellOptions = {
|
|
469
468
|
mode: mode,
|
|
470
469
|
adjacent: adjacent,
|
|
471
470
|
disabled: disabled,
|
|
@@ -483,8 +482,8 @@
|
|
|
483
482
|
}
|
|
484
483
|
|
|
485
484
|
if (settings.today) {
|
|
486
|
-
|
|
487
|
-
|
|
485
|
+
const todayRow = $('<tr/>').appendTo(tbody);
|
|
486
|
+
const todayButton = $('<td/>').attr('colspan', '' + columns).addClass(className.today).appendTo(todayRow);
|
|
488
487
|
todayButton.text(formatter.today(settings));
|
|
489
488
|
todayButton.data(metadata.date, today);
|
|
490
489
|
}
|
|
@@ -500,24 +499,24 @@
|
|
|
500
499
|
|
|
501
500
|
update: {
|
|
502
501
|
focus: function (updateRange, container = $container) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
502
|
+
const mode = module.get.mode();
|
|
503
|
+
const date = module.get.date();
|
|
504
|
+
const focusDate = module.get.focusDate();
|
|
505
|
+
const startDate = module.get.startDate();
|
|
506
|
+
const endDate = module.get.endDate();
|
|
507
|
+
const rangeDate = (updateRange ? focusDate : null) || date || (!isTouch ? focusDate : null);
|
|
509
508
|
|
|
510
509
|
container.find('td').each(function () {
|
|
511
|
-
|
|
512
|
-
|
|
510
|
+
const $cell = $(this);
|
|
511
|
+
const cellDate = $cell.data(metadata.date);
|
|
513
512
|
if (!cellDate) {
|
|
514
513
|
return;
|
|
515
514
|
}
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
515
|
+
const disabled = $cell.hasClass(className.disabledCell);
|
|
516
|
+
const active = $cell.hasClass(className.activeCell);
|
|
517
|
+
const adjacent = $cell.hasClass(className.adjacentCell);
|
|
518
|
+
const focused = module.helper.dateEqual(cellDate, focusDate, mode);
|
|
519
|
+
const inRange = !rangeDate
|
|
521
520
|
? false
|
|
522
521
|
: (!!startDate && module.helper.isDateInRange(cellDate, mode, startDate, rangeDate))
|
|
523
522
|
|| (!!endDate && module.helper.isDateInRange(cellDate, mode, rangeDate, endDate));
|
|
@@ -536,13 +535,13 @@
|
|
|
536
535
|
},
|
|
537
536
|
|
|
538
537
|
refreshTooltips: function () {
|
|
539
|
-
|
|
538
|
+
const winWidth = $(window).width();
|
|
540
539
|
$container.find('td[data-position]').each(function () {
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
540
|
+
const $cell = $(this);
|
|
541
|
+
const tooltipWidth = window.getComputedStyle($cell[0], '::after').width.replace(/[^\d.]/g, '');
|
|
542
|
+
const tooltipPosition = $cell.attr('data-position');
|
|
544
543
|
// use a fallback width of 250 (calendar width) for IE/Edge (which return "auto")
|
|
545
|
-
|
|
544
|
+
const calcPosition = (winWidth - $cell.width() - (parseInt(tooltipWidth, 10) || 250)) > $cell.offset().left ? 'right' : 'left';
|
|
546
545
|
if (!tooltipPosition.includes(calcPosition)) {
|
|
547
546
|
$cell.attr('data-position', tooltipPosition.replace(/(left|right)/, calcPosition));
|
|
548
547
|
}
|
|
@@ -580,9 +579,9 @@
|
|
|
580
579
|
|
|
581
580
|
event: {
|
|
582
581
|
mouseover: function (event) {
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
582
|
+
const target = $(event.target);
|
|
583
|
+
const date = target.data(metadata.date);
|
|
584
|
+
const mousedown = event.buttons === 1;
|
|
586
585
|
if (date) {
|
|
587
586
|
module.set.focusDate(date, false, true, mousedown);
|
|
588
587
|
}
|
|
@@ -593,8 +592,8 @@
|
|
|
593
592
|
event.preventDefault();
|
|
594
593
|
}
|
|
595
594
|
isTouchDown = event.type.includes('touch');
|
|
596
|
-
|
|
597
|
-
|
|
595
|
+
const target = $(event.target);
|
|
596
|
+
const date = target.data(metadata.date);
|
|
598
597
|
if (date) {
|
|
599
598
|
module.set.focusDate(date, false, true, true);
|
|
600
599
|
}
|
|
@@ -609,16 +608,16 @@
|
|
|
609
608
|
if (target.hasClass('disabled')) {
|
|
610
609
|
return;
|
|
611
610
|
}
|
|
612
|
-
|
|
611
|
+
const parent = target.parent();
|
|
613
612
|
if (parent.data(metadata.date) || parent.data(metadata.focusDate) || parent.data(metadata.mode)) {
|
|
614
613
|
// clicked on a child element, switch to parent (used when clicking directly on the prev/next <i> icon element)
|
|
615
614
|
target = parent;
|
|
616
615
|
}
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
616
|
+
const date = target.data(metadata.date);
|
|
617
|
+
const focusDate = target.data(metadata.focusDate);
|
|
618
|
+
const mode = target.data(metadata.mode);
|
|
620
619
|
if (date && settings.onSelect.call(element, date, module.get.mode()) !== false) {
|
|
621
|
-
|
|
620
|
+
const forceSet = target.hasClass(className.today);
|
|
622
621
|
module.selectDate(date, forceSet);
|
|
623
622
|
} else if (focusDate) {
|
|
624
623
|
module.set.focusDate(focusDate);
|
|
@@ -627,21 +626,21 @@
|
|
|
627
626
|
}
|
|
628
627
|
},
|
|
629
628
|
keydown: function (event) {
|
|
630
|
-
|
|
629
|
+
const keyCode = event.which;
|
|
631
630
|
if (keyCode === 9) {
|
|
632
631
|
// tab
|
|
633
632
|
module.popup('hide');
|
|
634
633
|
}
|
|
635
634
|
|
|
636
635
|
if (module.popup('is visible')) {
|
|
637
|
-
|
|
636
|
+
const mode = module.get.mode();
|
|
638
637
|
switch (keyCode) {
|
|
639
638
|
// arrow keys
|
|
640
639
|
case 37:
|
|
641
640
|
case 38:
|
|
642
641
|
case 39:
|
|
643
642
|
case 40: {
|
|
644
|
-
|
|
643
|
+
const bigIncrement = mode === 'day'
|
|
645
644
|
? 7
|
|
646
645
|
: (mode === 'hour'
|
|
647
646
|
? 4
|
|
@@ -652,12 +651,12 @@
|
|
|
652
651
|
? -bigIncrement
|
|
653
652
|
: (keyCode === 39 ? 1 : bigIncrement)); // eslint-disable-line unicorn/no-nested-ternary
|
|
654
653
|
increment *= mode === 'minute' ? settings.minTimeGap : 1;
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
654
|
+
const focusDate = module.get.focusDate() || module.get.date() || new Date();
|
|
655
|
+
const year = focusDate.getFullYear() + (mode === 'year' ? increment : 0);
|
|
656
|
+
const month = focusDate.getMonth() + (mode === 'month' ? increment : 0);
|
|
657
|
+
const day = focusDate.getDate() + (mode === 'day' ? increment : 0);
|
|
658
|
+
const hour = focusDate.getHours() + (mode === 'hour' ? increment : 0);
|
|
659
|
+
const minute = focusDate.getMinutes() + (mode === 'minute' ? increment : 0);
|
|
661
660
|
let newFocusDate = new Date(year, month, day, hour, minute);
|
|
662
661
|
if (settings.type === 'time') {
|
|
663
662
|
newFocusDate = module.helper.mergeDateTime(focusDate, newFocusDate);
|
|
@@ -670,7 +669,7 @@
|
|
|
670
669
|
}
|
|
671
670
|
// enter key
|
|
672
671
|
case 13: {
|
|
673
|
-
|
|
672
|
+
const date = module.get.focusDate();
|
|
674
673
|
if (date && !settings.isDisabled(date, mode) && !module.helper.isDisabled(date, mode) && module.helper.isEnabled(date, mode) && settings.onSelect.call(element, date, module.get.mode()) !== false) {
|
|
675
674
|
module.selectDate(date);
|
|
676
675
|
}
|
|
@@ -698,8 +697,8 @@
|
|
|
698
697
|
}
|
|
699
698
|
},
|
|
700
699
|
inputChange: function () {
|
|
701
|
-
|
|
702
|
-
|
|
700
|
+
const val = $input.val();
|
|
701
|
+
const date = parser.date(val, settings);
|
|
703
702
|
module.set.date(date, false);
|
|
704
703
|
},
|
|
705
704
|
inputFocus: function () {
|
|
@@ -708,8 +707,8 @@
|
|
|
708
707
|
inputBlur: function () {
|
|
709
708
|
$container.removeClass(className.active);
|
|
710
709
|
if (settings.formatInput) {
|
|
711
|
-
|
|
712
|
-
|
|
710
|
+
const date = module.get.date();
|
|
711
|
+
const text = module.helper.dateFormat(formatter[settings.type], date);
|
|
713
712
|
$input.val(text);
|
|
714
713
|
}
|
|
715
714
|
if (selectionComplete) {
|
|
@@ -767,11 +766,11 @@
|
|
|
767
766
|
get: {
|
|
768
767
|
weekOfYear: function (weekYear, weekMonth, weekDay) {
|
|
769
768
|
// adapted from http://www.merlyn.demon.co.uk/weekcalc.htm
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
769
|
+
const ms1d = 24 * 3600 * 1000;
|
|
770
|
+
const ms7d = 7 * ms1d;
|
|
771
|
+
const DC3 = Date.UTC(weekYear, weekMonth, weekDay + 3) / ms1d; // an absolute day number
|
|
772
|
+
const AWN = Math.floor(DC3 / 7); // an absolute week number
|
|
773
|
+
const Wyr = new Date(AWN * ms7d).getUTCFullYear();
|
|
775
774
|
|
|
776
775
|
return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
|
|
777
776
|
},
|
|
@@ -788,7 +787,7 @@
|
|
|
788
787
|
return module.helper.dateObjectOrFormatted(format, $module.data(metadata.focusDate));
|
|
789
788
|
},
|
|
790
789
|
startDate: function (format) {
|
|
791
|
-
|
|
790
|
+
const startModule = module.get.calendarModule(settings.startCalendar);
|
|
792
791
|
|
|
793
792
|
if (startModule) {
|
|
794
793
|
return startModule.get.date(format);
|
|
@@ -797,7 +796,7 @@
|
|
|
797
796
|
return module.helper.dateObjectOrFormatted(format, $module.data(metadata.startDate));
|
|
798
797
|
},
|
|
799
798
|
endDate: function (format) {
|
|
800
|
-
|
|
799
|
+
const endModule = module.get.calendarModule(settings.endCalendar);
|
|
801
800
|
|
|
802
801
|
if (endModule) {
|
|
803
802
|
return endModule.get.date(format);
|
|
@@ -816,7 +815,7 @@
|
|
|
816
815
|
},
|
|
817
816
|
mode: function () {
|
|
818
817
|
// only returns valid modes for the current settings
|
|
819
|
-
|
|
818
|
+
const mode = $module.data(metadata.mode) || settings.startMode;
|
|
820
819
|
|
|
821
820
|
return module.get.validatedMode(mode);
|
|
822
821
|
},
|
|
@@ -835,7 +834,7 @@
|
|
|
835
834
|
return $module.data(metadata.type) || settings.type;
|
|
836
835
|
},
|
|
837
836
|
validModes: function () {
|
|
838
|
-
|
|
837
|
+
const validModes = [];
|
|
839
838
|
if (settings.type !== 'time') {
|
|
840
839
|
if (!settings.disableYear || settings.type === 'year') {
|
|
841
840
|
validModes.push('year');
|
|
@@ -885,8 +884,8 @@
|
|
|
885
884
|
date = module.helper.sanitiseDate(date);
|
|
886
885
|
date = module.helper.dateInRange(date);
|
|
887
886
|
|
|
888
|
-
|
|
889
|
-
|
|
887
|
+
const mode = module.get.mode();
|
|
888
|
+
const text = module.helper.dateFormat(formatter[settings.type], date);
|
|
890
889
|
|
|
891
890
|
if (fireChange && settings.onBeforeChange.call(element, date, text, mode) === false) {
|
|
892
891
|
return false;
|
|
@@ -898,7 +897,7 @@
|
|
|
898
897
|
return false;
|
|
899
898
|
}
|
|
900
899
|
|
|
901
|
-
|
|
900
|
+
const endDate = module.get.endDate();
|
|
902
901
|
if (!!endDate && !!date && date > endDate) {
|
|
903
902
|
// selected date is greater than end date in range, so clear end date
|
|
904
903
|
module.set.endDate();
|
|
@@ -915,7 +914,7 @@
|
|
|
915
914
|
},
|
|
916
915
|
startDate: function (date, refreshCalendar) {
|
|
917
916
|
date = module.helper.sanitiseDate(date);
|
|
918
|
-
|
|
917
|
+
const startModule = module.get.calendarModule(settings.startCalendar);
|
|
919
918
|
if (startModule) {
|
|
920
919
|
startModule.set.date(date);
|
|
921
920
|
}
|
|
@@ -923,7 +922,7 @@
|
|
|
923
922
|
},
|
|
924
923
|
endDate: function (date, refreshCalendar) {
|
|
925
924
|
date = module.helper.sanitiseDate(date);
|
|
926
|
-
|
|
925
|
+
const endModule = module.get.calendarModule(settings.endCalendar);
|
|
927
926
|
if (endModule) {
|
|
928
927
|
endModule.set.date(date);
|
|
929
928
|
}
|
|
@@ -932,17 +931,17 @@
|
|
|
932
931
|
focusDate: function (date, refreshCalendar, updateFocus, updateRange) {
|
|
933
932
|
date = module.helper.sanitiseDate(date);
|
|
934
933
|
date = module.helper.dateInRange(date);
|
|
935
|
-
|
|
936
|
-
|
|
934
|
+
const isDay = module.get.mode() === 'day';
|
|
935
|
+
const oldFocusDate = module.get.focusDate();
|
|
937
936
|
if (isDay && date && oldFocusDate) {
|
|
938
|
-
|
|
939
|
-
|
|
937
|
+
const yearDelta = date.getFullYear() - oldFocusDate.getFullYear();
|
|
938
|
+
const monthDelta = yearDelta * 12 + date.getMonth() - oldFocusDate.getMonth();
|
|
940
939
|
if (monthDelta) {
|
|
941
|
-
|
|
940
|
+
const monthOffset = module.get.monthOffset() - monthDelta;
|
|
942
941
|
module.set.monthOffset(monthOffset, false);
|
|
943
942
|
}
|
|
944
943
|
}
|
|
945
|
-
|
|
944
|
+
const changed = module.set.dataKeyValue(metadata.focusDate, date, !!date && refreshCalendar);
|
|
946
945
|
updateFocus = (updateFocus !== false && changed && refreshCalendar === false) || focusDateUsedForRange != updateRange;
|
|
947
946
|
focusDateUsedForRange = updateRange;
|
|
948
947
|
if (updateFocus) {
|
|
@@ -968,7 +967,7 @@
|
|
|
968
967
|
}
|
|
969
968
|
},
|
|
970
969
|
monthOffset: function (monthOffset, refreshCalendar) {
|
|
971
|
-
|
|
970
|
+
const multiMonth = Math.max(settings.multiMonth, 1);
|
|
972
971
|
monthOffset = Math.max(1 - multiMonth, Math.min(0, monthOffset));
|
|
973
972
|
module.set.dataKeyValue(metadata.monthOffset, monthOffset, refreshCalendar);
|
|
974
973
|
},
|
|
@@ -976,8 +975,8 @@
|
|
|
976
975
|
module.set.dataKeyValue(metadata.mode, mode, refreshCalendar);
|
|
977
976
|
},
|
|
978
977
|
dataKeyValue: function (key, value, refreshCalendar) {
|
|
979
|
-
|
|
980
|
-
|
|
978
|
+
const oldValue = $module.data(key);
|
|
979
|
+
const equal = oldValue === value || (oldValue <= value && oldValue >= value); // equality test for dates and string objects
|
|
981
980
|
if (value) {
|
|
982
981
|
$module.data(key, value);
|
|
983
982
|
} else {
|
|
@@ -994,20 +993,20 @@
|
|
|
994
993
|
|
|
995
994
|
selectDate: function (date, forceSet) {
|
|
996
995
|
module.verbose('New date selection', date);
|
|
997
|
-
|
|
998
|
-
|
|
996
|
+
const mode = module.get.mode();
|
|
997
|
+
const complete = forceSet || mode === 'minute'
|
|
999
998
|
|| (settings.disableMinute && mode === 'hour')
|
|
1000
999
|
|| (settings.type === 'date' && mode === 'day')
|
|
1001
1000
|
|| (settings.type === 'month' && mode === 'month')
|
|
1002
1001
|
|| (settings.type === 'year' && mode === 'year');
|
|
1003
1002
|
if (complete) {
|
|
1004
|
-
|
|
1003
|
+
const canceled = module.set.date(date) === false;
|
|
1005
1004
|
if (!canceled) {
|
|
1006
1005
|
selectionComplete = true;
|
|
1007
1006
|
if (settings.closable) {
|
|
1008
1007
|
module.popup('hide');
|
|
1009
1008
|
// if this is a range calendar, focus the container or input. This will open the popup from its event listeners.
|
|
1010
|
-
|
|
1009
|
+
const endModule = module.get.calendarModule(settings.endCalendar);
|
|
1011
1010
|
if (endModule) {
|
|
1012
1011
|
endModule.refresh();
|
|
1013
1012
|
if (endModule.setting('on') !== 'focus') {
|
|
@@ -1018,7 +1017,7 @@
|
|
|
1018
1017
|
}
|
|
1019
1018
|
}
|
|
1020
1019
|
} else {
|
|
1021
|
-
|
|
1020
|
+
const newMode = mode === 'year'
|
|
1022
1021
|
? (!settings.disableMonth ? 'month' : 'day')
|
|
1023
1022
|
: (mode === 'month'
|
|
1024
1023
|
? 'day'
|
|
@@ -1069,17 +1068,17 @@
|
|
|
1069
1068
|
return format.call(module, date, settings);
|
|
1070
1069
|
}
|
|
1071
1070
|
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1071
|
+
const D = date.getDate();
|
|
1072
|
+
const M = date.getMonth();
|
|
1073
|
+
const Y = date.getFullYear();
|
|
1074
|
+
const d = date.getDay();
|
|
1075
|
+
const H = date.getHours();
|
|
1076
|
+
const m = date.getMinutes();
|
|
1077
|
+
const s = date.getSeconds();
|
|
1078
|
+
const w = module.get.weekOfYear(Y, M, D + 1 - settings.firstDayOfWeek);
|
|
1079
|
+
const h = H % 12 || 12;
|
|
1080
|
+
const a = H < 12 ? settings.text.am.toLowerCase() : settings.text.pm.toLowerCase();
|
|
1081
|
+
const tokens = {
|
|
1083
1082
|
D: D,
|
|
1084
1083
|
DD: ('0' + D).slice(-2),
|
|
1085
1084
|
M: M + 1,
|
|
@@ -1151,7 +1150,7 @@
|
|
|
1151
1150
|
} else if (Array.isArray(d[metadata.month])) {
|
|
1152
1151
|
blocked = d[metadata.month].includes(date.getMonth());
|
|
1153
1152
|
} else if (d[metadata.month] instanceof Date) {
|
|
1154
|
-
|
|
1153
|
+
const sdate = module.helper.sanitiseDate(d[metadata.month]);
|
|
1155
1154
|
|
|
1156
1155
|
blocked = (date.getMonth() === sdate.getMonth()) && (date.getFullYear() === sdate.getFullYear());
|
|
1157
1156
|
}
|
|
@@ -1235,7 +1234,7 @@
|
|
|
1235
1234
|
d = module.helper.sanitiseDate(d);
|
|
1236
1235
|
}
|
|
1237
1236
|
if (d instanceof Date && module.helper.dateEqual(date, d, mode)) {
|
|
1238
|
-
|
|
1237
|
+
const dateObject = {};
|
|
1239
1238
|
dateObject[metadata.date] = d;
|
|
1240
1239
|
|
|
1241
1240
|
return dateObject;
|
|
@@ -1257,7 +1256,7 @@
|
|
|
1257
1256
|
return d;
|
|
1258
1257
|
}
|
|
1259
1258
|
} else if (d[metadata.month] instanceof Date) {
|
|
1260
|
-
|
|
1259
|
+
const sdate = module.helper.sanitiseDate(d[metadata.month]);
|
|
1261
1260
|
if ((date.getMonth() === sdate.getMonth()) && (date.getFullYear() === sdate.getFullYear())) {
|
|
1262
1261
|
return d;
|
|
1263
1262
|
}
|
|
@@ -1280,7 +1279,7 @@
|
|
|
1280
1279
|
},
|
|
1281
1280
|
findHourAsObject: function (date, mode, hours) {
|
|
1282
1281
|
if (mode === 'hour') {
|
|
1283
|
-
|
|
1282
|
+
const hourCheck = function (date, d) {
|
|
1284
1283
|
if (d[metadata.hours]) {
|
|
1285
1284
|
if (typeof d[metadata.hours] === 'number' && date.getHours() === d[metadata.hours]) {
|
|
1286
1285
|
return d;
|
|
@@ -1290,7 +1289,7 @@
|
|
|
1290
1289
|
}
|
|
1291
1290
|
}
|
|
1292
1291
|
};
|
|
1293
|
-
for (
|
|
1292
|
+
for (const d of hours) {
|
|
1294
1293
|
if (typeof d === 'number' && date.getHours() === d) {
|
|
1295
1294
|
return null;
|
|
1296
1295
|
}
|
|
@@ -1335,11 +1334,11 @@
|
|
|
1335
1334
|
mode = 'day';
|
|
1336
1335
|
}
|
|
1337
1336
|
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1337
|
+
const isTimeOnly = settings.type === 'time';
|
|
1338
|
+
const isYear = mode === 'year';
|
|
1339
|
+
const isYearOrMonth = isYear || mode === 'month';
|
|
1340
|
+
const isMinute = mode === 'minute';
|
|
1341
|
+
const isHourOrMinute = isMinute || mode === 'hour';
|
|
1343
1342
|
// only care about a minute accuracy of settings.minTimeGap
|
|
1344
1343
|
date1 = new Date(
|
|
1345
1344
|
isTimeOnly ? 2000 : date1.getFullYear(),
|
|
@@ -1363,7 +1362,7 @@
|
|
|
1363
1362
|
},
|
|
1364
1363
|
isDateInRange: function (date, mode, minDate, maxDate) {
|
|
1365
1364
|
if (!minDate && !maxDate) {
|
|
1366
|
-
|
|
1365
|
+
const startDate = module.get.startDate();
|
|
1367
1366
|
minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
|
|
1368
1367
|
maxDate = settings.maxDate;
|
|
1369
1368
|
}
|
|
@@ -1375,12 +1374,12 @@
|
|
|
1375
1374
|
},
|
|
1376
1375
|
dateInRange: function (date, minDate, maxDate) {
|
|
1377
1376
|
if (!minDate && !maxDate) {
|
|
1378
|
-
|
|
1377
|
+
const startDate = module.get.startDate();
|
|
1379
1378
|
minDate = startDate && settings.minDate ? new Date(Math.max(startDate, settings.minDate)) : startDate || settings.minDate;
|
|
1380
1379
|
maxDate = settings.maxDate;
|
|
1381
1380
|
}
|
|
1382
1381
|
minDate = minDate && new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), minDate.getHours(), settings.minTimeGap * Math.ceil(minDate.getMinutes() / settings.minTimeGap));
|
|
1383
|
-
|
|
1382
|
+
const isTimeOnly = settings.type === 'time';
|
|
1384
1383
|
|
|
1385
1384
|
return !date
|
|
1386
1385
|
? date
|
|
@@ -1497,7 +1496,7 @@
|
|
|
1497
1496
|
query = query.split(/[ .]/);
|
|
1498
1497
|
maxDepth = query.length - 1;
|
|
1499
1498
|
$.each(query, function (depth, value) {
|
|
1500
|
-
|
|
1499
|
+
const camelCaseValue = depth !== maxDepth
|
|
1501
1500
|
? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
|
|
1502
1501
|
: query;
|
|
1503
1502
|
if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
|
|
@@ -1621,7 +1620,7 @@
|
|
|
1621
1620
|
|
|
1622
1621
|
formatter: {
|
|
1623
1622
|
yearHeader: function (date, settings) {
|
|
1624
|
-
|
|
1623
|
+
const decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
|
|
1625
1624
|
|
|
1626
1625
|
return (decadeYear - 9) + ' - ' + (decadeYear + 2);
|
|
1627
1626
|
},
|
|
@@ -1662,9 +1661,9 @@
|
|
|
1662
1661
|
}
|
|
1663
1662
|
// Reverse date and month in some cases
|
|
1664
1663
|
text = settings.monthFirst || !/^\d{1,2}[./-]/.test(text) ? text : text.replace(/[./-]/g, '/').replace(/(\d+)\/(\d+)/, '$2/$1');
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1664
|
+
const textDate = new Date(text);
|
|
1665
|
+
const numberOnly = text.match(/^\d+$/) !== null;
|
|
1666
|
+
const isShortYear = text.match(/^(?:\d{1,2}[./-]){2}\d{1,2}$/) !== null;
|
|
1668
1667
|
if (!isShortYear && !numberOnly && !isNaN(textDate.getDate())) {
|
|
1669
1668
|
return textDate;
|
|
1670
1669
|
}
|
|
@@ -1680,11 +1679,11 @@
|
|
|
1680
1679
|
let year = -1;
|
|
1681
1680
|
let isAm;
|
|
1682
1681
|
|
|
1683
|
-
|
|
1684
|
-
|
|
1682
|
+
const isTimeOnly = settings.type === 'time';
|
|
1683
|
+
const isDateOnly = !settings.type.includes('time');
|
|
1685
1684
|
|
|
1686
|
-
|
|
1687
|
-
|
|
1685
|
+
const words = text.split(settings.regExp.dateWords);
|
|
1686
|
+
const numbers = text.split(settings.regExp.dateNumbers);
|
|
1688
1687
|
let number;
|
|
1689
1688
|
|
|
1690
1689
|
let parts;
|