mirror of
https://github.com/xdan/datetimepicker.git
synced 2024-11-18 06:24:22 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
031fe1f32f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
.idea
|
||||
node_modules
|
||||
bower_components/
|
@ -1,7 +1,5 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "8"
|
||||
before_script:
|
||||
- "export DISPLAY=:99.0"
|
||||
- "sh -e /etc/init.d/xvfb start"
|
||||
- sleep 3 # give xvfb some time to start
|
||||
services:
|
||||
- xvfb
|
10
README.md
10
README.md
@ -5,9 +5,7 @@
|
||||
[![npm version](https://badge.fury.io/js/jquery-datetimepicker.svg)](https://badge.fury.io/js/jquery-datetimepicker)
|
||||
[![npm](https://img.shields.io/npm/dm/jquery-datetimepicker.svg)](https://www.npmjs.com/package/jquery-datetimepicker)
|
||||
|
||||
|
||||
|
||||
PLEASE. Help me update documentation.
|
||||
PLEASE. Help me update the documentation.
|
||||
[Doc.tpl](https://github.com/xdan/datetimepicker/blob/master/doc.tpl)
|
||||
This file will be automatically displayed on the site
|
||||
|
||||
@ -24,7 +22,7 @@ or download [zip](https://github.com/xdan/datetimepicker/releases)
|
||||
# datetimepicker
|
||||
==============
|
||||
|
||||
**!!! The latest version of the options 'lang' obsolete. The language setting is now global. !!!**
|
||||
**!!! In the latest version the 'lang' option is obsolete. The language setting is now global. !!!**
|
||||
|
||||
Use this:
|
||||
```javascript
|
||||
@ -66,7 +64,7 @@ Install:
|
||||
2. Run `npm install`. npm will look at `package.json` and automatically install the necessary dependencies.
|
||||
3. Run `bower install`, which installs front-end packages defined in `bower.json`.
|
||||
|
||||
Notice: If you use Bower v1.5.2, you will get error: `The "main" field cannot contain minified files`
|
||||
Notice: If you use Bower v1.5.2, you will get the error: `The "main" field cannot contain minified files`
|
||||
You can regress to version 1.3.12
|
||||
|
||||
1. `npm uninstall bower -g`
|
||||
@ -77,7 +75,7 @@ Build:
|
||||
First install npm requirements: `npm install -g uglifycss concat-cli`
|
||||
Then build the files: `npm run build`
|
||||
|
||||
When build completed, you'll have the following files:
|
||||
When the build completes, you'll have the following files:
|
||||
- **build/jquery.datetimepicker.full.js** - browser file
|
||||
- **build/jquery.datetimepicker.full.min.js** - browser minified file
|
||||
- **build/jquery.datetimepicker.min.js** - amd module style minified file
|
||||
|
File diff suppressed because one or more lines are too long
1
build/jquery.datetimepicker.min.js
vendored
1
build/jquery.datetimepicker.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1122,11 +1122,11 @@ var datetimepickerFactory = function ($) {
|
||||
$(this).parent().parent().hide();
|
||||
|
||||
datetimepicker.trigger('xchange.xdsoft');
|
||||
if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
|
||||
if (options.onChangeMonth && typeof options.onChangeMonth === 'function') {
|
||||
options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
|
||||
}
|
||||
|
||||
if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
|
||||
if (year !== _xdsoft_datetime.currentTime.getFullYear() && typeof options.onChangeYear === 'function') {
|
||||
options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
|
||||
}
|
||||
}
|
||||
@ -1141,15 +1141,15 @@ var datetimepickerFactory = function ($) {
|
||||
|
||||
options = $.extend(true, {}, options, _options);
|
||||
|
||||
if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {
|
||||
if (_options.allowTimes && Array.isArray(_options.allowTimes) && _options.allowTimes.length) {
|
||||
options.allowTimes = $.extend(true, [], _options.allowTimes);
|
||||
}
|
||||
|
||||
if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {
|
||||
if (_options.weekends && Array.isArray(_options.weekends) && _options.weekends.length) {
|
||||
options.weekends = $.extend(true, [], _options.weekends);
|
||||
}
|
||||
|
||||
if (_options.allowDates && $.isArray(_options.allowDates) && _options.allowDates.length) {
|
||||
if (_options.allowDates && Array.isArray(_options.allowDates) && _options.allowDates.length) {
|
||||
options.allowDates = $.extend(true, [], _options.allowDates);
|
||||
}
|
||||
|
||||
@ -1157,7 +1157,7 @@ var datetimepickerFactory = function ($) {
|
||||
options.allowDateRe = new RegExp(_options.allowDateRe);
|
||||
}
|
||||
|
||||
if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) {
|
||||
if (_options.highlightedDates && Array.isArray(_options.highlightedDates) && _options.highlightedDates.length) {
|
||||
$.each(_options.highlightedDates, function (index, value) {
|
||||
var splitData = $.map(value.split(','), $.trim),
|
||||
exDesc,
|
||||
@ -1176,7 +1176,7 @@ var datetimepickerFactory = function ($) {
|
||||
options.highlightedDates = $.extend(true, [], highlightedDates);
|
||||
}
|
||||
|
||||
if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {
|
||||
if (_options.highlightedPeriods && Array.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {
|
||||
highlightedDates = $.extend(true, [], options.highlightedDates);
|
||||
$.each(_options.highlightedPeriods, function (index, value) {
|
||||
var dateTest, // start date
|
||||
@ -1186,7 +1186,7 @@ var datetimepickerFactory = function ($) {
|
||||
keyDate,
|
||||
exDesc,
|
||||
style;
|
||||
if ($.isArray(value)) {
|
||||
if (Array.isArray(value)) {
|
||||
dateTest = value[0];
|
||||
dateEnd = value[1];
|
||||
desc = value[2];
|
||||
@ -1218,11 +1218,11 @@ var datetimepickerFactory = function ($) {
|
||||
options.highlightedDates = $.extend(true, [], highlightedDates);
|
||||
}
|
||||
|
||||
if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {
|
||||
if (_options.disabledDates && Array.isArray(_options.disabledDates) && _options.disabledDates.length) {
|
||||
options.disabledDates = $.extend(true, [], _options.disabledDates);
|
||||
}
|
||||
|
||||
if (_options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) {
|
||||
if (_options.disabledWeekDays && Array.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) {
|
||||
options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays);
|
||||
}
|
||||
|
||||
@ -1306,8 +1306,8 @@ var datetimepickerFactory = function ($) {
|
||||
input
|
||||
.off('blur.xdsoft')
|
||||
.on('blur.xdsoft', function () {
|
||||
if (options.allowBlank && (!$.trim($(this).val()).length ||
|
||||
(typeof options.mask === "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) {
|
||||
if (options.allowBlank && (!$(this).val().trim().length ||
|
||||
(typeof options.mask === "string" && $(this).val().trim() === options.mask.replace(/[0-9]/g, '_')))) {
|
||||
$(this).val(null);
|
||||
datetimepicker.data('xdsoft_datetime').empty();
|
||||
} else {
|
||||
@ -1460,11 +1460,11 @@ var datetimepickerFactory = function ($) {
|
||||
);
|
||||
_this.currentTime.setMonth(month);
|
||||
|
||||
if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
|
||||
if (options.onChangeMonth && typeof options.onChangeMonth === 'function') {
|
||||
options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
|
||||
}
|
||||
|
||||
if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
|
||||
if (year !== _this.currentTime.getFullYear() && typeof options.onChangeYear === 'function') {
|
||||
options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
|
||||
}
|
||||
|
||||
@ -1490,7 +1490,7 @@ var datetimepickerFactory = function ($) {
|
||||
)
|
||||
);
|
||||
_this.currentTime.setMonth(month);
|
||||
if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
|
||||
if (options.onChangeMonth && typeof options.onChangeMonth === 'function') {
|
||||
options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
|
||||
}
|
||||
datetimepicker.trigger('xchange.xdsoft');
|
||||
@ -1498,7 +1498,7 @@ var datetimepickerFactory = function ($) {
|
||||
};
|
||||
|
||||
_this.getWeekOfYear = function (datetime) {
|
||||
if (options.onGetWeekOfYear && $.isFunction(options.onGetWeekOfYear)) {
|
||||
if (options.onGetWeekOfYear && typeof options.onGetWeekOfYear === 'function') {
|
||||
var week = options.onGetWeekOfYear.call(datetimepicker, datetime);
|
||||
if (typeof week !== 'undefined') {
|
||||
return week;
|
||||
@ -1777,7 +1777,7 @@ var datetimepickerFactory = function ($) {
|
||||
|
||||
classes.push('xdsoft_date');
|
||||
|
||||
if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {
|
||||
if (options.beforeShowDay && typeof options.beforeShowDay.call === 'function') {
|
||||
customDateSettings = options.beforeShowDay.call(datetimepicker, start);
|
||||
} else {
|
||||
customDateSettings = null;
|
||||
@ -1838,7 +1838,7 @@ var datetimepickerFactory = function ($) {
|
||||
description = hDate.desc === undefined ? '' : hDate.desc;
|
||||
}
|
||||
|
||||
if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {
|
||||
if (options.beforeShowDay && typeof options.beforeShowDay === 'function') {
|
||||
classes.push(options.beforeShowDay(start));
|
||||
}
|
||||
|
||||
@ -1904,7 +1904,7 @@ var datetimepickerFactory = function ($) {
|
||||
|
||||
line_time = function line_time(h, m) {
|
||||
var now = _xdsoft_datetime.now(), current_time,
|
||||
isALlowTimesInit = options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length;
|
||||
isALlowTimesInit = options.allowTimes && Array.isArray(options.allowTimes) && options.allowTimes.length;
|
||||
now.setHours(h);
|
||||
h = parseInt(now.getHours(), 10);
|
||||
now.setMinutes(m);
|
||||
@ -1935,7 +1935,7 @@ var datetimepickerFactory = function ($) {
|
||||
time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>';
|
||||
};
|
||||
|
||||
if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {
|
||||
if (!options.allowTimes || !Array.isArray(options.allowTimes) || !options.allowTimes.length) {
|
||||
for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {
|
||||
for (j = 0; j < 60; j += options.step) {
|
||||
var currentMinutesOfDay = i * 60 + j;
|
||||
@ -2021,7 +2021,7 @@ var datetimepickerFactory = function ($) {
|
||||
|
||||
input.val(_xdsoft_datetime.str());
|
||||
|
||||
if (options.onSelectDate && $.isFunction(options.onSelectDate)) {
|
||||
if (options.onSelectDate && typeof options.onSelectDate === 'function') {
|
||||
options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
|
||||
}
|
||||
|
||||
@ -2061,7 +2061,7 @@ var datetimepickerFactory = function ($) {
|
||||
|
||||
datetimepicker.data('input').val(_xdsoft_datetime.str());
|
||||
|
||||
if (options.onSelectTime && $.isFunction(options.onSelectTime)) {
|
||||
if (options.onSelectTime && typeof options.onSelectTime === 'function') {
|
||||
options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
|
||||
}
|
||||
datetimepicker.data('changed', true);
|
||||
@ -2113,7 +2113,7 @@ var datetimepickerFactory = function ($) {
|
||||
|
||||
datetimepicker
|
||||
.on('changedatetime.xdsoft', function (event) {
|
||||
if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {
|
||||
if (options.onChangeDateTime && typeof options.onChangeDateTime === 'function') {
|
||||
var $input = datetimepicker.data('input');
|
||||
options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);
|
||||
delete options.value;
|
||||
@ -2121,7 +2121,7 @@ var datetimepickerFactory = function ($) {
|
||||
}
|
||||
})
|
||||
.on('generate.xdsoft', function () {
|
||||
if (options.onGenerate && $.isFunction(options.onGenerate)) {
|
||||
if (options.onGenerate && typeof options.onGenerate === 'function') {
|
||||
options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
|
||||
}
|
||||
if (triggerAfterOpen) {
|
||||
@ -2271,7 +2271,7 @@ var datetimepickerFactory = function ($) {
|
||||
datetimepicker
|
||||
.on('open.xdsoft', function (event) {
|
||||
var onShow = true;
|
||||
if (options.onShow && $.isFunction(options.onShow)) {
|
||||
if (options.onShow && typeof options.onShow === 'function') {
|
||||
onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
|
||||
}
|
||||
if (onShow !== false) {
|
||||
@ -2295,7 +2295,7 @@ var datetimepickerFactory = function ($) {
|
||||
.find('.xdsoft_month,.xdsoft_year')
|
||||
.find('.xdsoft_select')
|
||||
.hide();
|
||||
if (options.onClose && $.isFunction(options.onClose)) {
|
||||
if (options.onClose && typeof options.onClose === 'function') {
|
||||
onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
|
||||
}
|
||||
if (onClose !== false && !options.opened && !options.inline) {
|
||||
@ -2411,7 +2411,7 @@ var datetimepickerFactory = function ($) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($.type(options.mask) === 'string') {
|
||||
if (typeof options.mask === 'string') {
|
||||
if (!isValidValue(options.mask, input.val())) {
|
||||
input.val(options.mask.replace(/[0-9]/g, '_'));
|
||||
setCaretPos(input[0], 0);
|
||||
@ -2432,8 +2432,8 @@ var datetimepickerFactory = function ($) {
|
||||
val = this.value,
|
||||
pos = this.selectionStart
|
||||
|
||||
var valueBeforeCursor = val.substr(0, pos);
|
||||
var valueAfterPaste = val.substr(pos + pastedData.length);
|
||||
var valueBeforeCursor = val.slice(0, pos);
|
||||
var valueAfterPaste = val.slice(pos + pastedData.length);
|
||||
|
||||
val = valueBeforeCursor + pastedData + valueAfterPaste;
|
||||
pos += pastedData.length;
|
||||
@ -2441,7 +2441,7 @@ var datetimepickerFactory = function ($) {
|
||||
if (isValidValue(options.mask, val)) {
|
||||
this.value = val;
|
||||
setCaretPos(this, pos);
|
||||
} else if ($.trim(val) === '') {
|
||||
} else if (val.trim() === '') {
|
||||
this.value = options.mask.replace(/[0-9]/g, '_');
|
||||
} else {
|
||||
input.trigger('error_input.xdsoft');
|
||||
@ -2478,7 +2478,7 @@ var datetimepickerFactory = function ($) {
|
||||
// value char - keep incrementing position while on separator char and we still have room
|
||||
// del char - keep decrementing position while on separator char and we still have room
|
||||
while (true) {
|
||||
var maskValueAtCurPos = options.mask.substr(pos, 1);
|
||||
var maskValueAtCurPos = options.mask.slice(pos, pos+1);
|
||||
var posShorterThanMaskLength = pos < options.mask.length;
|
||||
var posGreaterThanZero = pos > 0;
|
||||
var notNumberOrPlaceholder = /[^0-9_]/;
|
||||
@ -2504,24 +2504,24 @@ var datetimepickerFactory = function ($) {
|
||||
|
||||
// if we have a selection length we will wipe out entire selection and replace with default template for that range
|
||||
var defaultBlank = options.mask.replace(/[0-9]/g, '_');
|
||||
var defaultBlankSelectionReplacement = defaultBlank.substr(pos, selLength);
|
||||
var selReplacementRemainder = defaultBlankSelectionReplacement.substr(1) // might be empty
|
||||
var defaultBlankSelectionReplacement = defaultBlank.slice(pos, pos+selLength);
|
||||
var selReplacementRemainder = defaultBlankSelectionReplacement.slice(1) // might be empty
|
||||
|
||||
var valueBeforeSel = val.substr(0, pos);
|
||||
var valueBeforeSel = val.slice(0, pos);
|
||||
var insertChars = digit + selReplacementRemainder;
|
||||
var charsAfterSelection = val.substr(pos + selLength);
|
||||
var charsAfterSelection = val.slice(pos + selLength);
|
||||
|
||||
val = valueBeforeSel + insertChars + charsAfterSelection
|
||||
|
||||
} else {
|
||||
var valueBeforeCursor = val.substr(0, pos);
|
||||
var valueBeforeCursor = val.slice(0, pos);
|
||||
var insertChar = digit;
|
||||
var valueAfterNextChar = val.substr(pos + 1);
|
||||
var valueAfterNextChar = val.slice(pos + 1);
|
||||
|
||||
val = valueBeforeCursor + insertChar + valueAfterNextChar
|
||||
}
|
||||
|
||||
if ($.trim(val) === '') {
|
||||
if (val.trim() === '') {
|
||||
// if empty, set to default
|
||||
val = defaultBlank
|
||||
} else {
|
||||
@ -2535,14 +2535,14 @@ var datetimepickerFactory = function ($) {
|
||||
// resume cursor location
|
||||
pos += (key === BACKSPACE) ? 0 : 1;
|
||||
// don't stop on a separator, continue whatever direction you were going
|
||||
while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
|
||||
while (/[^0-9_]/.test(options.mask.slice(pos, pos+1)) && pos < options.mask.length && pos > 0) {
|
||||
pos += (key === BACKSPACE) ? 0 : 1;
|
||||
}
|
||||
|
||||
if (isValidValue(options.mask, val)) {
|
||||
this.value = val;
|
||||
setCaretPos(this, pos);
|
||||
} else if ($.trim(val) === '') {
|
||||
} else if (val.trim() === '') {
|
||||
this.value = options.mask.replace(/[0-9]/g, '_');
|
||||
} else {
|
||||
input.trigger('error_input.xdsoft');
|
||||
@ -2644,7 +2644,7 @@ var datetimepickerFactory = function ($) {
|
||||
this.each(function () {
|
||||
var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input;
|
||||
if (datetimepicker) {
|
||||
if ($.type(opt) === 'string') {
|
||||
if (typeof opt === 'string') {
|
||||
switch (opt) {
|
||||
case 'show':
|
||||
$(this).select().focus();
|
||||
@ -2671,7 +2671,7 @@ var datetimepickerFactory = function ($) {
|
||||
$input.trigger('blur.xdsoft');
|
||||
break;
|
||||
default:
|
||||
if (datetimepicker[opt] && $.isFunction(datetimepicker[opt])) {
|
||||
if (datetimepicker[opt] && typeof datetimepicker[opt] === 'function') {
|
||||
result = datetimepicker[opt](opt2);
|
||||
}
|
||||
}
|
||||
@ -2681,7 +2681,7 @@ var datetimepickerFactory = function ($) {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if ($.type(opt) !== 'string') {
|
||||
if (typeof opt !== 'string') {
|
||||
if (!options.lazyInit || options.open || options.inline) {
|
||||
createDateTimePicker($(this));
|
||||
} else {
|
||||
|
8
package-lock.json
generated
8
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jquery-datetimepicker",
|
||||
"version": "2.5.21",
|
||||
"version": "2.5.22",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@ -4394,9 +4394,9 @@
|
||||
"optional": true
|
||||
},
|
||||
"php-date-formatter": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/php-date-formatter/-/php-date-formatter-1.3.4.tgz",
|
||||
"integrity": "sha1-CaFa4HZroL6xkAwnwewxnvLkVj4="
|
||||
"version": "1.3.6",
|
||||
"resolved": "https://registry.npmjs.org/php-date-formatter/-/php-date-formatter-1.3.6.tgz",
|
||||
"integrity": "sha512-/CKsZYmAwXeNh8KpD/CF9hcJDZNhdb2ICN8+qgqOt5sUu9liZIxZ1R284TNj5MtPt8RjG5X0xn6WSqL0kcKMBg=="
|
||||
},
|
||||
"pinkie": {
|
||||
"version": "2.0.4",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jquery-datetimepicker",
|
||||
"version": "2.5.21",
|
||||
"version": "2.5.22",
|
||||
"description": "jQuery Plugin DateTimePicker it is DatePicker and TimePicker in one",
|
||||
"main": "build/jquery.datetimepicker.full.min.js",
|
||||
"scripts": {
|
||||
@ -34,7 +34,7 @@
|
||||
"dependencies": {
|
||||
"jquery": ">= 1.7.2",
|
||||
"jquery-mousewheel": ">= 3.1.13",
|
||||
"php-date-formatter": "^1.3.4"
|
||||
"php-date-formatter": "^1.3.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"chai": "^4.1.2",
|
||||
|
Loading…
Reference in New Issue
Block a user