diff --git a/lib/zin/wg/formsettingbtn/js/v1.js b/lib/zin/wg/formsettingbtn/js/v1.js index 46dd5ea891..17fa9003a5 100644 --- a/lib/zin/wg/formsettingbtn/js/v1.js +++ b/lib/zin/wg/formsettingbtn/js/v1.js @@ -1,6 +1,20 @@ function closeCustomPopupMenu(e) { - $(e.target).closest('menu').removeClass('show'); + $('#formSettingBtn-toggle').trigger('click'); +} + +function cancelFormSetting(e) +{ + $.get($(e.target).closest('button').data('url'), function(data) + { + e.target.closest('form').querySelectorAll('input').forEach(function(field) + { + const checked = `,${data},`.indexOf(`,${$(field).val()},`) >=0; + $(field).prop('checked', checked); + }); + }); + + closeCustomPopupMenu(e); } function revertDefaultFields(e) @@ -68,38 +82,47 @@ function toggleSingleField(customFields, showFields) customFields.forEach(function(field) { - var $this = $('form [name^="' + field + '"]'); - if($this.length == 0) return; + let $field = $('form [name^="' + field + '"]'); + if($field.length == 0) return; - var hidden = !showFields.includes(field); - var $inputGroup = $this.closest('.input-group'); - var $formGroup = $this.closest('.form-group'); + let hidden = !showFields.includes(field); + let $formRow = $field.closest('.form-row'); + let $formGroup = $field.closest('.form-group'); + let $inputGroup = $field.closest('.input-group'); + let $inputControl = $field.closest('.input-control'); if($inputGroup.length == 1) { - $prev = $this.prev(); + $prev = $field.prev(); if($prev.hasClass('input-group-addon')) $prev.toggleClass('hidden', hidden); - $this.toggleClass('hidden', hidden); - if($this.hasClass('pick-value')) + $field.toggleClass('hidden', hidden); + if($field.hasClass('pick-value')) { - $pickBox = $this.closest('.pick').parent(); + $pickBox = $field.closest('.pick').parent(); $pickBox.toggleClass('hidden', hidden); $prev = $pickBox.prev(); if($prev.hasClass('input-group-addon')) $prev.toggleClass('hidden', hidden); } + + if($inputControl.length == 1) + { + if($inputControl.hasClass('has-suffix')) + { + if($inputControl.prev().hasClass('input-group-addon')) $inputControl.prev().toggleClass('hidden', hidden); + $inputControl.toggleClass('hidden', hidden); + } + } + + if($inputGroup.prev().hasClass('form-label')) $inputGroup.prev().toggleClass('hidden', hidden); + $inputGroup.toggleClass('hidden', $inputGroup.children().length == $inputGroup.children('.hidden').length); } else { $formGroup.toggleClass('hidden', hidden); } - }) - - $('form .form-row').each(function() - { - var $this = $(this); - $this.removeClass('hidden'); - if($this.find('.form-group.hidden').length > 0 && $this.find('.form-group:not(.hidden)').length == 0) $this.addClass('hidden'); + $formGroup.toggleClass('hidden', $formGroup.children().length == $formGroup.children('.hidden').length); + $formRow.toggleClass('hidden', $formRow.children().length == $formRow.children('.hidden').length); }); } @@ -109,7 +132,7 @@ function toggleBatchField(customFields, showFields) customFields.forEach(function(field) { - var hidden = !showFields.includes(field); + let hidden = !showFields.includes(field); $('th.form-batch-head[data-name="' + field + '"]').toggleClass('hidden', hidden); $('td.form-batch-control[data-name="' + field + '"]').toggleClass('hidden', hidden); $($('template.form-batch-template')[0].content).find('td.form-batch-control[data-name="' + field + '"]').toggleClass('hidden', hidden); diff --git a/lib/zin/wg/formsettingbtn/v1.php b/lib/zin/wg/formsettingbtn/v1.php index baf74b892b..52631c3498 100644 --- a/lib/zin/wg/formsettingbtn/v1.php +++ b/lib/zin/wg/formsettingbtn/v1.php @@ -36,10 +36,12 @@ class formSettingBtn extends wg global $lang; $customLink = createLink('custom', 'ajaxSaveCustomFields', $this->prop('urlParams', '')); + $cancelLink = createLink('custom', 'ajaxGetCustomFields', $this->prop('urlParams', '')); return dropdown ( set::arrow('false'), set::placement('bottom-end'), + set::id('formSettingBtn'), to::trigger(btn(set::icon('cog-outline'), setClass('ghost'), set::caret(false))), to::menu(menu ( @@ -53,10 +55,9 @@ class formSettingBtn extends wg set::actions(array ( btn(set::text($lang->save), setClass('primary'), on::click('onSubmitFormtSetting')), - btn(set::text($lang->cancel), set::btnType('reset'), on::click('closeCustomPopupMenu')), - btn(set::text($lang->restore), setClass('text-primary ghost font-bold'), set::href('#'), set('data-url', $customLink), on::click('revertDefaultFields')), + btn(set::text($lang->cancel), set::btnType('button'), on::click('cancelFormSetting'), set('data-url', $cancelLink)), + btn(set::text($lang->restore), setClass('text-primary ghost'), set::href('#'), set('data-url', $customLink), on::click('revertDefaultFields')), )), - to::headingActions(array(btn(set::icon('close'), setClass('ghost'), set::size('sm'), on::click('closeCustomPopupMenu')))), array_map(function($field) { return checkbox