From 9b71679ef98f2e46a0035124b3776748d1aceb01 Mon Sep 17 00:00:00 2001 From: palmplus <43737385+palmplus@users.noreply.github.com> Date: Tue, 22 Dec 2020 08:48:41 +0700 Subject: [PATCH 1/6] Update yii2-dynamic-form.js edit row 458 and 463 --- src/assets/yii2-dynamic-form.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/yii2-dynamic-form.js b/src/assets/yii2-dynamic-form.js index fbe3045..d1413fc 100644 --- a/src/assets/yii2-dynamic-form.js +++ b/src/assets/yii2-dynamic-form.js @@ -455,12 +455,12 @@ _restoreKrajeeDepdrop($(this)); } - $.when($('#' + id).select2(configSelect2)).done(initSelect2Loading(id, '.select2-container--krajee')); + $.when($('#' + id).select2(configSelect2)).done(initS2Loading(id, '.select2-container--krajee')); var kvClose = 'kv_close_' + id.replace(/\-/g, '_'); $('#' + id).on('select2:opening', function(ev) { - initSelect2DropStyle(id, kvClose, ev); + initS2Loading(id, kvClose, ev); }); $('#' + id).on('select2:unselect', function() { From b4081fbc39aa77ce9e6acb60a6cc7a5460c1b7fd Mon Sep 17 00:00:00 2001 From: palmplus Date: Wed, 23 Dec 2020 09:13:02 +0700 Subject: [PATCH 2/6] Update yii2-dynamic-form.js edit select2 --- src/assets/yii2-dynamic-form.js | 119 ++++++++++---------------------- 1 file changed, 38 insertions(+), 81 deletions(-) diff --git a/src/assets/yii2-dynamic-form.js b/src/assets/yii2-dynamic-form.js index d1413fc..d92378d 100644 --- a/src/assets/yii2-dynamic-form.js +++ b/src/assets/yii2-dynamic-form.js @@ -66,30 +66,18 @@ }); $template.find('input, textarea, select').each(function() { - if ($(this).is(':checkbox') || $(this).is(':radio')) { - var type = ($(this).is(':checkbox')) ? 'checkbox' : 'radio'; - var inputName = $(this).attr('name'); - var $inputHidden = $template.find('input[type="hidden"][name="' + inputName + '"]').first(); - var count = $template.find('input[type="' + type +'"][name="' + inputName + '"]').length; - - if ($inputHidden && count === 1) { - $(this).val(1); - $inputHidden.val(0); - } + $(this).val(''); + }); - $(this).prop('checked', false); - } else if($(this).is('select')) { - $(this).find('option:selected').removeAttr("selected"); - } else { - $(this).val(''); + $template.find('input[type="checkbox"], input[type="radio"]').each(function() { + var inputName = $(this).attr('name'); + var $inputHidden = $template.find('input[type="hidden"][name="' + inputName + '"]').first(); + if ($inputHidden) { + $(this).val(1); + $inputHidden.val(0); } }); - // remove "error/success" css class - var yiiActiveFormData = $('#' + widgetOptions.formId).yiiActiveForm('data'); - $template.find('.' + yiiActiveFormData.settings.errorCssClass).removeClass(yiiActiveFormData.settings.errorCssClass); - $template.find('.' + yiiActiveFormData.settings.successCssClass).removeClass(yiiActiveFormData.settings.successCssClass); - return $template; }; @@ -115,7 +103,7 @@ var count = _count($elem, widgetOptions); if (count < widgetOptions.limit) { - $toclone = $(widgetOptions.template); + $toclone = widgetOptions.template; $newclone = $toclone.clone(false, false); if (widgetOptions.insertPosition === 'top') { @@ -199,7 +187,7 @@ matches[2] = matches[2].substring(1, matches[2].length - 1); var identifiers = matches[2].split('-'); identifiers[0] = index; - + if (identifiers.length > 1) { var widgetsOptions = []; $elem.parents('div[data-dynamicform]').each(function(i){ @@ -225,7 +213,7 @@ $(this).removeClass('field-' + id).addClass('field-' + newID); }); // update "for" attribute - $elem.closest(widgetOptions.widgetItem).find("label[for='" + id + "']").attr('for',newID); + $elem.closest(widgetOptions.widgetItem).find("label[for='" + id + "']").attr('for',newID); } return newID; @@ -318,35 +306,9 @@ }); }; - var _restoreKrajeeDepdrop = function($elem) { - var configDepdrop = $.extend(true, {}, eval($elem.attr('data-krajee-depdrop'))); - var inputID = $elem.attr('id'); - var matchID = inputID.match(regexID); - - if (matchID && matchID.length === 4) { - for (index = 0; index < configDepdrop.depends.length; ++index) { - var match = configDepdrop.depends[index].match(regexID); - if (match && match.length === 4) { - configDepdrop.depends[index] = match[1] + matchID[2] + match[3]; - } - } - } - - $elem.depdrop(configDepdrop); - }; - var _restoreSpecialJs = function(widgetOptions) { var widgetOptionsRoot = _getWidgetOptionsRoot(widgetOptions); - // "jquery.inputmask" - var $hasInputmask = $(widgetOptionsRoot.widgetItem).find('[data-plugin-inputmask]'); - if ($hasInputmask.length > 0) { - $hasInputmask.each(function() { - $(this).inputmask('remove'); - $(this).inputmask(eval($(this).attr('data-plugin-inputmask'))); - }); - } - // "kartik-v/yii2-widget-datepicker" var $hasDatepicker = $(widgetOptionsRoot.widgetItem).find('[data-krajee-datepicker]'); if ($hasDatepicker.length > 0) { @@ -424,15 +386,24 @@ }); } - // "kartik-v/yii2-widget-depdrop" + "kartik-v/yii2-widget-depdrop" var $hasDepdrop = $(widgetOptionsRoot.widgetItem).find('[data-krajee-depdrop]'); if ($hasDepdrop.length > 0) { $hasDepdrop.each(function() { - if ($(this).data('select2') === undefined) { - $(this).removeData().off(); - $(this).unbind(); - _restoreKrajeeDepdrop($(this)); + $(this).removeData().off(); + $(this).unbind(); + var configDepdrop = eval($(this).attr('data-krajee-depdrop')); + var inputID = $(this).attr('id'); + var matchID = inputID.match(regex); + if (matchID && matchID.length === 4) { + for (index = 0; index < configDepdrop.depends.length; ++index) { + var match = configDepdrop.depends[index].match(regex); + if (match && match.length === 4) { + configDepdrop.depends[index] = match[1] + matchID[2] + match[3]; + } + } } + $(this).depdrop(configDepdrop); }); } @@ -442,34 +413,20 @@ $hasSelect2.each(function() { var id = $(this).attr('id'); var configSelect2 = eval($(this).attr('data-krajee-select2')); - - if ($(this).data('select2')) { - $(this).select2('destroy'); - } - - var configDepdrop = $(this).data('depdrop'); - if (configDepdrop) { - configDepdrop = $.extend(true, {}, configDepdrop); - $(this).removeData().off(); - $(this).unbind(); - _restoreKrajeeDepdrop($(this)); - } - - $.when($('#' + id).select2(configSelect2)).done(initS2Loading(id, '.select2-container--krajee')); - - var kvClose = 'kv_close_' + id.replace(/\-/g, '_'); - - $('#' + id).on('select2:opening', function(ev) { - initS2Loading(id, kvClose, ev); - }); - - $('#' + id).on('select2:unselect', function() { - window[kvClose] = true; + $(this).select2('destroy'); + $.when($('#' + id).select2(configSelect2)).done(initSelect2Loading(id)); + $('#' + id).on('select2-open', function() { + initSelect2DropStyle(id) }); - - if (configDepdrop) { - var loadingText = (configDepdrop.loadingText) ? configDepdrop.loadingText : 'Loading ...'; - initDepdropS2(id, loadingText); + if ($(this).attr('data-krajee-depdrop')) { + $(this).on('depdrop.beforeChange', function(e,i,v) { + var configDepdrop = eval($(this).attr('data-krajee-depdrop')); + var loadingText = (configDepdrop.loadingText)? configDepdrop.loadingText : 'Loading ...'; + $('#' + id).select2('data', {text: loadingText}); + }); + $(this).on('depdrop.change', function(e,i,v,c) { + $('#' + id).select2('val', $('#' + id).val()); + }); } }); } From 7ece3616566dd43163b3bbd4d3963d0df1286d0d Mon Sep 17 00:00:00 2001 From: palmplus Date: Wed, 23 Dec 2020 09:28:48 +0700 Subject: [PATCH 3/6] Update yii2-dynamic-form.js edit initS2Loading --- src/assets/yii2-dynamic-form.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/yii2-dynamic-form.js b/src/assets/yii2-dynamic-form.js index d92378d..dd867e6 100644 --- a/src/assets/yii2-dynamic-form.js +++ b/src/assets/yii2-dynamic-form.js @@ -414,9 +414,9 @@ var id = $(this).attr('id'); var configSelect2 = eval($(this).attr('data-krajee-select2')); $(this).select2('destroy'); - $.when($('#' + id).select2(configSelect2)).done(initSelect2Loading(id)); + $.when($('#' + id).select2(configSelect2)).done(initS2Loading(id)); $('#' + id).on('select2-open', function() { - initSelect2DropStyle(id) + initS2Loading(id) }); if ($(this).attr('data-krajee-depdrop')) { $(this).on('depdrop.beforeChange', function(e,i,v) { From c4a9c576a8bd44610878f488a94d0e7e323cc2a2 Mon Sep 17 00:00:00 2001 From: palmplus Date: Wed, 23 Dec 2020 09:36:43 +0700 Subject: [PATCH 4/6] Update yii2-dynamic-form.js edit 458 and 463 --- src/assets/yii2-dynamic-form.js | 115 ++++++++++++++++++++++---------- 1 file changed, 79 insertions(+), 36 deletions(-) diff --git a/src/assets/yii2-dynamic-form.js b/src/assets/yii2-dynamic-form.js index dd867e6..35509e7 100644 --- a/src/assets/yii2-dynamic-form.js +++ b/src/assets/yii2-dynamic-form.js @@ -66,18 +66,30 @@ }); $template.find('input, textarea, select').each(function() { - $(this).val(''); - }); + if ($(this).is(':checkbox') || $(this).is(':radio')) { + var type = ($(this).is(':checkbox')) ? 'checkbox' : 'radio'; + var inputName = $(this).attr('name'); + var $inputHidden = $template.find('input[type="hidden"][name="' + inputName + '"]').first(); + var count = $template.find('input[type="' + type +'"][name="' + inputName + '"]').length; + + if ($inputHidden && count === 1) { + $(this).val(1); + $inputHidden.val(0); + } - $template.find('input[type="checkbox"], input[type="radio"]').each(function() { - var inputName = $(this).attr('name'); - var $inputHidden = $template.find('input[type="hidden"][name="' + inputName + '"]').first(); - if ($inputHidden) { - $(this).val(1); - $inputHidden.val(0); + $(this).prop('checked', false); + } else if($(this).is('select')) { + $(this).find('option:selected').removeAttr("selected"); + } else { + $(this).val(''); } }); + // remove "error/success" css class + var yiiActiveFormData = $('#' + widgetOptions.formId).yiiActiveForm('data'); + $template.find('.' + yiiActiveFormData.settings.errorCssClass).removeClass(yiiActiveFormData.settings.errorCssClass); + $template.find('.' + yiiActiveFormData.settings.successCssClass).removeClass(yiiActiveFormData.settings.successCssClass); + return $template; }; @@ -103,7 +115,7 @@ var count = _count($elem, widgetOptions); if (count < widgetOptions.limit) { - $toclone = widgetOptions.template; + $toclone = $(widgetOptions.template); $newclone = $toclone.clone(false, false); if (widgetOptions.insertPosition === 'top') { @@ -306,9 +318,35 @@ }); }; + var _restoreKrajeeDepdrop = function($elem) { + var configDepdrop = $.extend(true, {}, eval($elem.attr('data-krajee-depdrop'))); + var inputID = $elem.attr('id'); + var matchID = inputID.match(regexID); + + if (matchID && matchID.length === 4) { + for (index = 0; index < configDepdrop.depends.length; ++index) { + var match = configDepdrop.depends[index].match(regexID); + if (match && match.length === 4) { + configDepdrop.depends[index] = match[1] + matchID[2] + match[3]; + } + } + } + + $elem.depdrop(configDepdrop); + }; + var _restoreSpecialJs = function(widgetOptions) { var widgetOptionsRoot = _getWidgetOptionsRoot(widgetOptions); + // "jquery.inputmask" + var $hasInputmask = $(widgetOptionsRoot.widgetItem).find('[data-plugin-inputmask]'); + if ($hasInputmask.length > 0) { + $hasInputmask.each(function() { + $(this).inputmask('remove'); + $(this).inputmask(eval($(this).attr('data-plugin-inputmask'))); + }); + } + // "kartik-v/yii2-widget-datepicker" var $hasDatepicker = $(widgetOptionsRoot.widgetItem).find('[data-krajee-datepicker]'); if ($hasDatepicker.length > 0) { @@ -386,24 +424,15 @@ }); } - "kartik-v/yii2-widget-depdrop" + // "kartik-v/yii2-widget-depdrop" var $hasDepdrop = $(widgetOptionsRoot.widgetItem).find('[data-krajee-depdrop]'); if ($hasDepdrop.length > 0) { $hasDepdrop.each(function() { - $(this).removeData().off(); - $(this).unbind(); - var configDepdrop = eval($(this).attr('data-krajee-depdrop')); - var inputID = $(this).attr('id'); - var matchID = inputID.match(regex); - if (matchID && matchID.length === 4) { - for (index = 0; index < configDepdrop.depends.length; ++index) { - var match = configDepdrop.depends[index].match(regex); - if (match && match.length === 4) { - configDepdrop.depends[index] = match[1] + matchID[2] + match[3]; - } - } + if ($(this).data('select2') === undefined) { + $(this).removeData().off(); + $(this).unbind(); + _restoreKrajeeDepdrop($(this)); } - $(this).depdrop(configDepdrop); }); } @@ -413,20 +442,34 @@ $hasSelect2.each(function() { var id = $(this).attr('id'); var configSelect2 = eval($(this).attr('data-krajee-select2')); - $(this).select2('destroy'); - $.when($('#' + id).select2(configSelect2)).done(initS2Loading(id)); - $('#' + id).on('select2-open', function() { - initS2Loading(id) + + if ($(this).data('select2')) { + $(this).select2('destroy'); + } + + var configDepdrop = $(this).data('depdrop'); + if (configDepdrop) { + configDepdrop = $.extend(true, {}, configDepdrop); + $(this).removeData().off(); + $(this).unbind(); + _restoreKrajeeDepdrop($(this)); + } + + $.when($('#' + id).select2(configSelect2)).done(init2Loading(id, '.select2-container--krajee')); + + var kvClose = 'kv_close_' + id.replace(/\-/g, '_'); + + $('#' + id).on('select2:opening', function(ev) { + init2Loading(id, kvClose, ev); }); - if ($(this).attr('data-krajee-depdrop')) { - $(this).on('depdrop.beforeChange', function(e,i,v) { - var configDepdrop = eval($(this).attr('data-krajee-depdrop')); - var loadingText = (configDepdrop.loadingText)? configDepdrop.loadingText : 'Loading ...'; - $('#' + id).select2('data', {text: loadingText}); - }); - $(this).on('depdrop.change', function(e,i,v,c) { - $('#' + id).select2('val', $('#' + id).val()); - }); + + $('#' + id).on('select2:unselect', function() { + window[kvClose] = true; + }); + + if (configDepdrop) { + var loadingText = (configDepdrop.loadingText) ? configDepdrop.loadingText : 'Loading ...'; + initDepdropS2(id, loadingText); } }); } From e3f081dce4437e4cca7aa20f598fb14117fc7bb5 Mon Sep 17 00:00:00 2001 From: palmplus Date: Wed, 23 Dec 2020 09:42:34 +0700 Subject: [PATCH 5/6] Update yii2-dynamic-form.js edit initS2Loading --- src/assets/yii2-dynamic-form.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/yii2-dynamic-form.js b/src/assets/yii2-dynamic-form.js index 35509e7..0c51d3d 100644 --- a/src/assets/yii2-dynamic-form.js +++ b/src/assets/yii2-dynamic-form.js @@ -455,12 +455,12 @@ _restoreKrajeeDepdrop($(this)); } - $.when($('#' + id).select2(configSelect2)).done(init2Loading(id, '.select2-container--krajee')); + $.when($('#' + id).select2(configSelect2)).done(initS2Loading(id, '.select2-container--krajee')); var kvClose = 'kv_close_' + id.replace(/\-/g, '_'); $('#' + id).on('select2:opening', function(ev) { - init2Loading(id, kvClose, ev); + initS2Loading(id, kvClose, ev); }); $('#' + id).on('select2:unselect', function() { From 6ef831404ea1a51f198ad7556b6a9daba69125d6 Mon Sep 17 00:00:00 2001 From: palmplus Date: Wed, 23 Dec 2020 10:18:47 +0700 Subject: [PATCH 6/6] Update yii2-dynamic-form.js add s2LoadingFunc and s2OpenFunc --- src/assets/yii2-dynamic-form.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/assets/yii2-dynamic-form.js b/src/assets/yii2-dynamic-form.js index 0c51d3d..9b44799 100644 --- a/src/assets/yii2-dynamic-form.js +++ b/src/assets/yii2-dynamic-form.js @@ -455,12 +455,14 @@ _restoreKrajeeDepdrop($(this)); } - $.when($('#' + id).select2(configSelect2)).done(initS2Loading(id, '.select2-container--krajee')); + var s2LoadingFunc = typeof initSelect2Loading != 'undefined' ? initSelect2Loading : initS2Loading; + var s2OpenFunc = typeof initSelect2DropStyle != 'undefined' ? initSelect2Loading : initS2Loading; + $.when($('#' + id).select2(configSelect2)).done(s2LoadingFunc(id, '.select2-container--krajee')); var kvClose = 'kv_close_' + id.replace(/\-/g, '_'); $('#' + id).on('select2:opening', function(ev) { - initS2Loading(id, kvClose, ev); + s2OpenFunc(id, kvClose, ev); }); $('#' + id).on('select2:unselect', function() {