diff -r 618ff34bcd7c -r d1742b03d5a7 src/pyams_skin/resources/js/myams-init.js --- a/src/pyams_skin/resources/js/myams-init.js Fri Jul 26 12:42:05 2019 +0200 +++ b/src/pyams_skin/resources/js/myams-init.js Fri Jul 26 12:42:35 2019 +0200 @@ -356,65 +356,8 @@ $(button.get(0).form).data('ams-submit-button', button); }); - // Cancel clicks on readonly checkbox - $(document).on('click', 'input[type="checkbox"][readonly]', function() { - return false; - }); - - // Initialize custom click handlers - $(document).on('click', '[data-ams-click-handler]', function(event) { - var source = $(this); - var handlers = source.data('ams-disabled-handlers'); - if ((handlers === true) || (handlers === 'click') || (handlers === 'all')) { - return; - } - var data = source.data(); - if (data.amsClickHandler) { - if ((data.amsStopPropagation === true) || (data.amsClickStopPropagation === true)) { - event.stopPropagation(); - } - if (data.amsClickKeepDefault !== true) { - event.preventDefault(); - } - var clickHandlers = data.amsClickHandler.split(/\s+/); - for (var index=0; index < clickHandlers.length; index++) { - var callback = ams.getFunctionByName(clickHandlers[index]); - if (callback !== undefined) { - callback.call(source, event, data.amsClickHandlerOptions); - } - } - } - }); - - // Initialize custom change handlers - $(document).on('change', '[data-ams-change-handler]', function(event) { - var source = $(this); - // Disable change handlers for readonly inputs - // These change handlers are activated by IE!!! - if (source.prop('readonly')) { - return; - } - var handlers = source.data('ams-disabled-handlers'); - if ((handlers === true) || (handlers === 'change') || (handlers === 'all')) { - return; - } - var data = source.data(); - if (data.amsChangeHandler) { - if ((data.amsStopPropagation === true) || (data.amsChangeStopPropagation === true)) { - event.stopPropagation(); - } - if (data.amsChangeKeepDefault !== true) { - event.preventDefault(); - } - var changeHandlers = data.amsChangeHandler.split(/\s+/); - for (var index=0; index < changeHandlers.length; index++) { - var callback = ams.getFunctionByName(changeHandlers[index]); - if (callback !== undefined) { - callback.call(source, event, data.amsChangeHandlerOptions); - } - } - } - }); + // Initialize main event handlers + ams.initHandlers(document); // Submit form when CTRL+Enter key is pressed in textarea $(document).on('keydown', 'textarea', function(e) { @@ -423,54 +366,6 @@ } }); - // Notify reset to update Select2 widgets - $(document).on('reset', 'form', function(e) { - var form = $(this); - setTimeout(function() { - $('.alert-danger, SPAN.state-error', form).not('.persistent').remove(); - $('LABEL.state-error', form).removeClass('state-error'); - $('INPUT.select2[type="hidden"]', form).each(function() { - var input = $(this); - var select = input.data('select2'); - var value = input.data('ams-select2-input-value'); - if (value) { - input.select2('val', value.split(select.opts.separator)); - } - }); - form.find('.select2').trigger('change'); - $('[data-ams-reset-callback]', form).each(function() { - var element = $(this); - var data = element.data(); - var callback = ams.getFunctionByName(data.amsResetCallback); - if (callback !== undefined) { - callback.call(form, element, data.amsResetCallbackOptions); - } - }); - }, 10); - ams.form && ams.form.setFocus(form); - }); - - // Initialize custom reset handlers - $(document).on('reset', '[data-ams-reset-handler]', function(e) { - var form = $(this); - var data = form.data(); - if (data.amsResetHandler) { - if (data.amsResetKeepDefault !== true) { - e.preventDefault(); - } - var callback = ams.getFunctionByName(data.amsResetHandler); - if (callback !== undefined) { - callback.call(form, data.amsResetHandlerOptions); - } - } - }); - - // Initialize custom event on click - $(document).on('click', '[data-ams-click-event]', function(e) { - var source = $(this); - $(e.target).trigger(source.data('ams-click-event'), source.data('ams-click-event-options')); - }); - // Handle update on file upload placeholder $(document).on('change', 'input[type="file"]', function(e) { e.preventDefault();