From b38289c8231cce75cc3ac8b9ef383abdcecf7768 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 1 Aug 2024 19:00:43 +0300 Subject: [PATCH 1/5] Do not add a new option to conditional logic if renaming an option --- js/formidable_admin.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 4dcf465804..8a90abbb38 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -5628,13 +5628,16 @@ function frmAdminBuildJS() { expectedOption = fieldOptions[ optionIndex ]; optionMatch = valueSelect.querySelector( 'option[value="' + expectedOption + '"]' ); - if ( optionMatch === null ) { - optionMatch = document.createElement( 'option' ); - optionMatch.setAttribute( 'value', expectedOption ); - optionMatch.textContent = expectedOption; + const fieldChoices = document.querySelectorAll( '#frm_field_' + fieldId + '_opts input[data-value-on-focus]' ); + const expectedChoiceEl = Array.from( fieldChoices ).find( element => element.value === expectedOption ); + if ( expectedChoiceEl ) { + const hasMatch = valueSelect.querySelector( 'option[value="' + expectedChoiceEl.getAttribute( 'data-value-on-focus' ) + '"]' ); + if ( ! hasMatch ) { + prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ); + } + } else { + prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ); } - - valueSelect.prepend( optionMatch ); } optionMatch = valueSelect.querySelector( 'option[value=""]' ); @@ -5644,6 +5647,16 @@ function frmAdminBuildJS() { } } + function prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ) { + if ( optionMatch === null ) { + optionMatch = document.createElement( 'option' ); + optionMatch.setAttribute( 'value', expectedOption ); + optionMatch.textContent = expectedOption; + } + + valueSelect.prepend( optionMatch ); + } + function getFieldOptions( fieldId ) { let index, input, li, listItems, optsContainer, length, options = []; From 7175c5afaeed0f4e0386bee0aeeb0ce53e5a288b Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:43:16 +0300 Subject: [PATCH 2/5] Improve code readability --- js/formidable_admin.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 8a90abbb38..4a3d4144c5 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -5632,12 +5632,13 @@ function frmAdminBuildJS() { const expectedChoiceEl = Array.from( fieldChoices ).find( element => element.value === expectedOption ); if ( expectedChoiceEl ) { const hasMatch = valueSelect.querySelector( 'option[value="' + expectedChoiceEl.getAttribute( 'data-value-on-focus' ) + '"]' ); - if ( ! hasMatch ) { - prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ); + if ( hasMatch ) { + continue; } - } else { prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ); + continue; } + prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ); } optionMatch = valueSelect.querySelector( 'option[value=""]' ); From 8315897e985e1ae6a1a8521c323b46ff0145855b Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:45:20 +0300 Subject: [PATCH 3/5] Add a check for old value --- js/formidable_admin.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 4a3d4144c5..3e76e9edbc 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -5631,7 +5631,8 @@ function frmAdminBuildJS() { const fieldChoices = document.querySelectorAll( '#frm_field_' + fieldId + '_opts input[data-value-on-focus]' ); const expectedChoiceEl = Array.from( fieldChoices ).find( element => element.value === expectedOption ); if ( expectedChoiceEl ) { - const hasMatch = valueSelect.querySelector( 'option[value="' + expectedChoiceEl.getAttribute( 'data-value-on-focus' ) + '"]' ); + const oldValue = expectedChoiceEl.getAttribute( 'data-value-on-focus' ); + const hasMatch = oldValue && valueSelect.querySelector( 'option[value="' + oldValue + '"]' ); if ( hasMatch ) { continue; } From bf1f1b8e19ed69d7cf70a67622e106e75b2fc97c Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 5 Aug 2024 19:19:09 +0300 Subject: [PATCH 4/5] Do small enhancements --- js/formidable_admin.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 3e76e9edbc..6cb8be05e9 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -5631,7 +5631,7 @@ function frmAdminBuildJS() { const fieldChoices = document.querySelectorAll( '#frm_field_' + fieldId + '_opts input[data-value-on-focus]' ); const expectedChoiceEl = Array.from( fieldChoices ).find( element => element.value === expectedOption ); if ( expectedChoiceEl ) { - const oldValue = expectedChoiceEl.getAttribute( 'data-value-on-focus' ); + const oldValue = expectedChoiceEl.dataset.valueOnFocus; const hasMatch = oldValue && valueSelect.querySelector( 'option[value="' + oldValue + '"]' ); if ( hasMatch ) { continue; @@ -5651,9 +5651,11 @@ function frmAdminBuildJS() { function prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ) { if ( optionMatch === null ) { - optionMatch = document.createElement( 'option' ); - optionMatch.setAttribute( 'value', expectedOption ); - optionMatch.textContent = expectedOption; + optionMatch = frmDom.tag( 'option', { + text: expectedOption, + value: expectedOption + }); + optionMatch.value = expectedOption; } valueSelect.prepend( optionMatch ); From 3dc76a8c2c02e94c070a0b891c6c8f2d3834468d Mon Sep 17 00:00:00 2001 From: Mike Letellier Date: Tue, 6 Aug 2024 11:03:29 -0300 Subject: [PATCH 5/5] Fix code --- js/formidable_admin.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 6cb8be05e9..84d9afe38e 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -5636,8 +5636,6 @@ function frmAdminBuildJS() { if ( hasMatch ) { continue; } - prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ); - continue; } prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ); } @@ -5651,10 +5649,7 @@ function frmAdminBuildJS() { function prependValueSelectWithOptionMatch( valueSelect, optionMatch, expectedOption ) { if ( optionMatch === null ) { - optionMatch = frmDom.tag( 'option', { - text: expectedOption, - value: expectedOption - }); + optionMatch = frmDom.tag( 'option', { text: expectedOption }); optionMatch.value = expectedOption; }