Merge pull request #693 from bmalpham8/master

fix onClose call multiple times
This commit is contained in:
Valeriy Chupurnov 2019-02-23 13:29:53 +03:00 committed by GitHub
commit af7dbc036b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -589,7 +589,7 @@ var datetimepickerFactory = function ($) {
inverseButton: false, inverseButton: false,
hours12: false, hours12: false,
next: 'xdsoft_next', next: 'xdsoft_next',
prev : 'xdsoft_prev', prev: 'xdsoft_prev',
dayOfWeekStart: 0, dayOfWeekStart: 0,
parentID: 'body', parentID: 'body',
timeHeightInTimePicker: 25, timeHeightInTimePicker: 25,
@ -619,9 +619,9 @@ var datetimepickerFactory = function ($) {
weekends: [], weekends: [],
highlightedDates: [], highlightedDates: [],
highlightedPeriods: [], highlightedPeriods: [],
allowDates : [], allowDates: [],
allowDateRe : null, allowDateRe: null,
disabledDates : [], disabledDates: [],
disabledWeekDays: [], disabledWeekDays: [],
yearOffset: 0, yearOffset: 0,
beforeShowDay: null, beforeShowDay: null,
@ -664,7 +664,7 @@ var datetimepickerFactory = function ($) {
}, },
formatter: { formatter: {
parseDate: function (date, format) { parseDate: function (date, format) {
if(isFormatStandard(format)){ if(isFormatStandard(format)) {
return defaultDateHelper.parseDate(date, format); return defaultDateHelper.parseDate(date, format);
} }
var d = moment(date, format); var d = moment(date, format);
@ -672,13 +672,13 @@ var datetimepickerFactory = function ($) {
}, },
formatDate: function (date, format) { formatDate: function (date, format) {
if(isFormatStandard(format)){ if(isFormatStandard(format)) {
return defaultDateHelper.formatDate(date, format); return defaultDateHelper.formatDate(date, format);
} }
return moment(date).format(format); return moment(date).format(format);
}, },
formatMask: function(format){ formatMask: function(format) {
return format return format
.replace(/Y{4}/g, '9999') .replace(/Y{4}/g, '9999')
.replace(/Y{2}/g, '99') .replace(/Y{2}/g, '99')
@ -690,11 +690,11 @@ var datetimepickerFactory = function ($) {
}, },
} }
} }
} };
// for locale settings // for locale settings
$.datetimepicker = { $.datetimepicker = {
setLocale: function(locale){ setLocale: function(locale) {
var newLocale = default_options.i18n[locale] ? locale : globalLocaleDefault; var newLocale = default_options.i18n[locale] ? locale : globalLocaleDefault;
if (globalLocale !== newLocale) { if (globalLocale !== newLocale) {
globalLocale = newLocale; globalLocale = newLocale;
@ -725,12 +725,12 @@ var datetimepickerFactory = function ($) {
RFC_1123: 'D, d M Y H:i:s O', RFC_1123: 'D, d M Y H:i:s O',
RSS: 'D, d M Y H:i:s O', RSS: 'D, d M Y H:i:s O',
W3C: 'Y-m-d\TH:i:sP' W3C: 'Y-m-d\TH:i:sP'
} };
var isFormatStandard = function(format){ var isFormatStandard = function(format) {
return $.map(standardFormats, function (val) { return val }) return $.map(standardFormats, function (val) { return val })
.indexOf(format) === -1 ? false : true; .indexOf(format) === -1 ? false : true;
} };
$.extend($.datetimepicker, standardFormats); $.extend($.datetimepicker, standardFormats);
@ -951,6 +951,7 @@ var datetimepickerFactory = function ($) {
ZKEY = 90, ZKEY = 90,
YKEY = 89, YKEY = 89,
ctrlDown = false, ctrlDown = false,
isClosed = false,
options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options), options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),
lazyInitTimer = 0, lazyInitTimer = 0,
@ -1067,7 +1068,7 @@ var datetimepickerFactory = function ($) {
if(distance > options.touchMovedThreshold) { if(distance > options.touchMovedThreshold) {
this.touchMoved = true; this.touchMoved = true;
} }
} };
month_picker month_picker
.find('.xdsoft_select') .find('.xdsoft_select')
@ -2225,6 +2226,7 @@ var datetimepickerFactory = function ($) {
datetimepicker datetimepicker
.on('open.xdsoft', function (event) { .on('open.xdsoft', function (event) {
var onShow = true; var onShow = true;
isClosed = false;
if (options.onShow && $.isFunction(options.onShow)) { if (options.onShow && $.isFunction(options.onShow)) {
onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
} }
@ -2245,6 +2247,12 @@ var datetimepickerFactory = function ($) {
}) })
.on('close.xdsoft', function (event) { .on('close.xdsoft', function (event) {
var onClose = true; var onClose = true;
event.stopPropagation();
if (isClosed) {
return;
}
month_picker month_picker
.find('.xdsoft_month,.xdsoft_year') .find('.xdsoft_month,.xdsoft_year')
.find('.xdsoft_select') .find('.xdsoft_select')
@ -2255,7 +2263,7 @@ var datetimepickerFactory = function ($) {
if (onClose !== false && !options.opened && !options.inline) { if (onClose !== false && !options.opened && !options.inline) {
datetimepicker.hide(); datetimepicker.hide();
} }
event.stopPropagation(); isClosed = true;
}) })
.on('toggle.xdsoft', function () { .on('toggle.xdsoft', function () {
if (datetimepicker.is(':visible')) { if (datetimepicker.is(':visible')) {
@ -2346,7 +2354,7 @@ var datetimepickerFactory = function ($) {
return false; return false;
}; };
if(options.mask) { if (options.mask) {
input.off('keydown.xdsoft'); input.off('keydown.xdsoft');
} }
@ -2384,13 +2392,13 @@ var datetimepickerFactory = function ($) {
var clipboardData = event.clipboardData || event.originalEvent.clipboardData || window.clipboardData, var clipboardData = event.clipboardData || event.originalEvent.clipboardData || window.clipboardData,
pastedData = clipboardData.getData('text'), pastedData = clipboardData.getData('text'),
val = this.value, val = this.value,
pos = this.selectionStart pos = this.selectionStart;
var valueBeforeCursor = val.substr(0, pos); var valueBeforeCursor = val.substr(0, pos);
var valueAfterPaste = val.substr(pos + pastedData.length); var valueAfterPaste = val.substr(pos + pastedData.length);
val = valueBeforeCursor + pastedData + valueAfterPaste; val = valueBeforeCursor + pastedData + valueAfterPaste;
val = val.substring(0, options.mask.length) val = val.substring(0, options.mask.length);
pos += pastedData.length; pos += pastedData.length;
if (isValidValue(options.mask, val)) { if (isValidValue(options.mask, val)) {
@ -2643,12 +2651,12 @@ var datetimepickerFactory = function ($) {
} }
}; };
;(function (factory) { ;(function (factory) {
if ( typeof define === 'function' && define.amd ) { if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module. // AMD. Register as an anonymous module.
define(['jquery', 'jquery-mousewheel'], factory); define(['jquery', 'jquery-mousewheel'], factory);
} else if (typeof exports === 'object') { } else if (typeof exports === 'object') {
// Node/CommonJS style for Browserify // Node/CommonJS style for Browserify
module.exports = factory(require('jquery'));; module.exports = factory(require('jquery'));
} else { } else {
// Browser globals // Browser globals
factory(jQuery); factory(jQuery);