From 7f590c26be26b87c4222212cfb715f53f0347731 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 2 May 2025 17:38:10 +0300 Subject: [PATCH 01/22] Show slider type selection modal --- js/formidable_admin.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 317d6cc307..cf28f2961a 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1995,7 +1995,7 @@ function frmAdminBuildJS() { document.dispatchEvent( loadedEvent ); } - function addFieldClick() { + function addFieldClick( event ) { /*jshint validthis:true */ const $thisObj = jQuery( this ); // there is no real way to disable a (with a valid href attribute) in HTML - https://css-tricks.com/how-to-disable-links/ @@ -2011,6 +2011,9 @@ function frmAdminBuildJS() { hasBreak = $newFields.children( 'li[data-type="break"]' ).length > 0 ? 1 : 0; } + if ( 'range' === fieldType && event.originalEvent.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { + return; + } const formId = thisFormId; jQuery.ajax({ type: 'POST', From fcdcf77e07664f00c9bcaa939506246b1b4cef02 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 7 May 2025 09:37:25 +0300 Subject: [PATCH 02/22] Load gap settings for dual range sliders --- .../views/frm-fields/back-end/gap-range.php | 24 +++++++++++++++++++ .../views/frm-fields/back-end/settings.php | 4 +++- js/formidable_admin.js | 20 +++++++++------- 3 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 classes/views/frm-fields/back-end/gap-range.php diff --git a/classes/views/frm-fields/back-end/gap-range.php b/classes/views/frm-fields/back-end/gap-range.php new file mode 100644 index 0000000000..2b02a1a3e1 --- /dev/null +++ b/classes/views/frm-fields/back-end/gap-range.php @@ -0,0 +1,24 @@ + +
+ +
+

+ + +

+

+ + +

+
+
diff --git a/classes/views/frm-fields/back-end/settings.php b/classes/views/frm-fields/back-end/settings.php index 8d3f3cbb0b..4496151d71 100644 --- a/classes/views/frm-fields/back-end/settings.php +++ b/classes/views/frm-fields/back-end/settings.php @@ -122,7 +122,9 @@ include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/number-range.php'; } - $field_obj->show_primary_options( compact( 'field', 'display', 'values' ) ); + if ( ! empty( $field['is_dual_range_slider'] ) ) { + include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/gap-range.php'; + } if ( $display['format'] ) { include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/format-dropdown.php'; diff --git a/js/formidable_admin.js b/js/formidable_admin.js index cf28f2961a..4ae3498dca 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -2015,18 +2015,20 @@ function frmAdminBuildJS() { return; } const formId = thisFormId; + let args = { + action: 'frm_insert_field', + form_id: formId, + field_type: fieldType, + section_id: 0, + nonce: frmGlobal.nonce, + has_break: hasBreak, + last_row_field_ids: getFieldIdsInSubmitRow() + }; + args = wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); jQuery.ajax({ type: 'POST', url: ajaxurl, - data: { - action: 'frm_insert_field', - form_id: formId, - field_type: fieldType, - section_id: 0, - nonce: frmGlobal.nonce, - has_break: hasBreak, - last_row_field_ids: getFieldIdsInSubmitRow() - }, + data: args, success: function( msg ) { document.getElementById( 'frm_form_editor_container' ).classList.add( 'frm-has-fields' ); const replaceWith = wrapFieldLi( msg ); From 07c9dda678b1421521eac7efdaa56c559ed23af8 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 7 May 2025 10:46:41 +0300 Subject: [PATCH 03/22] Move range gap field settings to Pro --- .../views/frm-fields/back-end/gap-range.php | 24 ------------------- .../views/frm-fields/back-end/settings.php | 11 ++++++--- 2 files changed, 8 insertions(+), 27 deletions(-) delete mode 100644 classes/views/frm-fields/back-end/gap-range.php diff --git a/classes/views/frm-fields/back-end/gap-range.php b/classes/views/frm-fields/back-end/gap-range.php deleted file mode 100644 index 2b02a1a3e1..0000000000 --- a/classes/views/frm-fields/back-end/gap-range.php +++ /dev/null @@ -1,24 +0,0 @@ - -
- -
-

- - -

-

- - -

-
-
diff --git a/classes/views/frm-fields/back-end/settings.php b/classes/views/frm-fields/back-end/settings.php index 4496151d71..6a48163894 100644 --- a/classes/views/frm-fields/back-end/settings.php +++ b/classes/views/frm-fields/back-end/settings.php @@ -122,9 +122,14 @@ include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/number-range.php'; } - if ( ! empty( $field['is_dual_range_slider'] ) ) { - include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/gap-range.php'; - } + /** + * @since x.x + * + * @param array $field + * @param array $display + * @param array $values + */ + do_action( 'frm_after_number_range', $field, $display, $values ); if ( $display['format'] ) { include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/format-dropdown.php'; From 437dbb19d322f811a9ac243d838e8cdc57ce1e1a Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 7 May 2025 17:34:45 +0300 Subject: [PATCH 04/22] Add new action hook after number format --- classes/views/frm-fields/back-end/settings.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/classes/views/frm-fields/back-end/settings.php b/classes/views/frm-fields/back-end/settings.php index 6a48163894..9343d1393d 100644 --- a/classes/views/frm-fields/back-end/settings.php +++ b/classes/views/frm-fields/back-end/settings.php @@ -123,11 +123,13 @@ } /** + * Fires after the number range field settings. + * * @since x.x * - * @param array $field - * @param array $display - * @param array $values + * @param array $field The field settings. + * @param array $display The display settings for the field. + * @param array $values The values associated with the field. */ do_action( 'frm_after_number_range', $field, $display, $values ); From bb2bac5a0a16e569d7630a032b9b4807adb9ab56 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 12 May 2025 15:12:30 +0300 Subject: [PATCH 05/22] Intercept field dragging for Slider field modal --- js/formidable_admin.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 4ae3498dca..d0ae280d83 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -971,6 +971,7 @@ function frmAdminBuildJS() { } function handleFieldDrop( _, ui ) { + if ( ! dragState.dragging ) { // dragState.dragging is set to true on drag start. // The deactivate event gets called for every droppable. This check to make sure it happens once. @@ -995,7 +996,7 @@ function frmAdminBuildJS() { const newSection = placeholder.closest( 'ul.frm_sorting' ); if ( draggable.classList.contains( 'frm-new-field' ) ) { - insertNewFieldByDragging( draggable.id ); + insertNewFieldByDragging( draggable.id, _ ); } else { moveFieldThatAlreadyExists( draggable, placeholder ); } @@ -1576,7 +1577,10 @@ function frmAdminBuildJS() { * * @param {string} fieldType */ - function insertNewFieldByDragging( fieldType ) { + function insertNewFieldByDragging( fieldType, event ) { + if ( 'range' === fieldType && event.originalEvent.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { + return; + } const placeholder = document.getElementById( 'frm_drag_placeholder' ); const loadingID = fieldType.replace( '|', '-' ) + '_' + getAutoId(); const loading = tag( @@ -1602,17 +1606,19 @@ function frmAdminBuildJS() { hasBreak = jQuery( '.frmbutton_loadingnow#' + loadingID ).prevAll( 'li[data-type="break"]' ).length ? 1 : 0; } + let args = { + action: 'frm_insert_field', + form_id: formId, + field_type: fieldType, + section_id: 0, + nonce: frmGlobal.nonce, + has_break: hasBreak, + last_row_field_ids: getFieldIdsInSubmitRow() + }; + args = wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); jQuery.ajax({ type: 'POST', url: ajaxurl, - data: { - action: 'frm_insert_field', - form_id: formId, - field_type: fieldType, - section_id: sectionId, - nonce: frmGlobal.nonce, - has_break: hasBreak, - last_row_field_ids: getFieldIdsInSubmitRow() - }, + data: args, success: function( msg ) { let replaceWith; document.getElementById( 'frm_form_editor_container' ).classList.add( 'frm-has-fields' ); From 74dac2422043fa68af56e1e6e8258912656fcdfc Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 19 May 2025 09:34:39 +0300 Subject: [PATCH 06/22] Reduce repeated code --- js/formidable_admin.js | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index d0ae280d83..6da940745d 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1572,6 +1572,18 @@ function frmAdminBuildJS() { document.getElementById( 'frm_in_section_' + fieldId ).value = sectionId; } + function getInsertNewFieldArgs( fieldType, formId, hasBreak ) { + let args = { + action: 'frm_insert_field', + form_id: formId, + field_type: fieldType, + section_id: 0, + nonce: frmGlobal.nonce, + has_break: hasBreak, + last_row_field_ids: getFieldIdsInSubmitRow() + }; + return wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); + } /** * Add a new field by dragging and dropping it from the Fields sidebar * @@ -1606,19 +1618,9 @@ function frmAdminBuildJS() { hasBreak = jQuery( '.frmbutton_loadingnow#' + loadingID ).prevAll( 'li[data-type="break"]' ).length ? 1 : 0; } - let args = { - action: 'frm_insert_field', - form_id: formId, - field_type: fieldType, - section_id: 0, - nonce: frmGlobal.nonce, - has_break: hasBreak, - last_row_field_ids: getFieldIdsInSubmitRow() - }; - args = wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); jQuery.ajax({ type: 'POST', url: ajaxurl, - data: args, + data: getInsertNewFieldArgs( fieldType, formId, hasBreak ), success: function( msg ) { let replaceWith; document.getElementById( 'frm_form_editor_container' ).classList.add( 'frm-has-fields' ); @@ -2021,20 +2023,11 @@ function frmAdminBuildJS() { return; } const formId = thisFormId; - let args = { - action: 'frm_insert_field', - form_id: formId, - field_type: fieldType, - section_id: 0, - nonce: frmGlobal.nonce, - has_break: hasBreak, - last_row_field_ids: getFieldIdsInSubmitRow() - }; - args = wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); + jQuery.ajax({ type: 'POST', url: ajaxurl, - data: args, + data: getInsertNewFieldArgs( fieldType, formId, hasBreak ), success: function( msg ) { document.getElementById( 'frm_form_editor_container' ).classList.add( 'frm-has-fields' ); const replaceWith = wrapFieldLi( msg ); From 5f62666edc49f396397b16633ce50883dc1ada86 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 19 May 2025 09:41:11 +0300 Subject: [PATCH 07/22] Update function params comment --- js/formidable_admin.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 6da940745d..dcce18fa4a 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -970,8 +970,7 @@ function frmAdminBuildJS() { return droppable; } - function handleFieldDrop( _, ui ) { - + function handleFieldDrop( event, ui ) { if ( ! dragState.dragging ) { // dragState.dragging is set to true on drag start. // The deactivate event gets called for every droppable. This check to make sure it happens once. @@ -996,7 +995,7 @@ function frmAdminBuildJS() { const newSection = placeholder.closest( 'ul.frm_sorting' ); if ( draggable.classList.contains( 'frm-new-field' ) ) { - insertNewFieldByDragging( draggable.id, _ ); + insertNewFieldByDragging( draggable.id, event ); } else { moveFieldThatAlreadyExists( draggable, placeholder ); } @@ -1588,8 +1587,9 @@ function frmAdminBuildJS() { * Add a new field by dragging and dropping it from the Fields sidebar * * @param {string} fieldType + * @param {Event} event */ - function insertNewFieldByDragging( fieldType, event ) { + function insertNewFieldByDragging( fieldType, event ) { if ( 'range' === fieldType && event.originalEvent.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { return; } From ce7ce9300ecde855b7426e6a734a318adff02d5e Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Tue, 20 May 2025 09:48:25 +0300 Subject: [PATCH 08/22] Change hook's name --- classes/views/frm-fields/back-end/settings.php | 2 +- js/formidable_admin.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/classes/views/frm-fields/back-end/settings.php b/classes/views/frm-fields/back-end/settings.php index 9343d1393d..301d0ad434 100644 --- a/classes/views/frm-fields/back-end/settings.php +++ b/classes/views/frm-fields/back-end/settings.php @@ -131,7 +131,7 @@ * @param array $display The display settings for the field. * @param array $values The values associated with the field. */ - do_action( 'frm_after_number_range', $field, $display, $values ); + do_action( 'frm_after_number_range_option', $field, $display, $values ); if ( $display['format'] ) { include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/format-dropdown.php'; diff --git a/js/formidable_admin.js b/js/formidable_admin.js index dcce18fa4a..510113201d 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -971,6 +971,7 @@ function frmAdminBuildJS() { } function handleFieldDrop( event, ui ) { + if ( ! dragState.dragging ) { // dragState.dragging is set to true on drag start. // The deactivate event gets called for every droppable. This check to make sure it happens once. From 700e0b595d6a91ff701934b876f4793b49a1733f Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Tue, 20 May 2025 09:53:29 +0300 Subject: [PATCH 09/22] Bring back deleted code --- classes/views/frm-fields/back-end/settings.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/views/frm-fields/back-end/settings.php b/classes/views/frm-fields/back-end/settings.php index 301d0ad434..ab8cd8c987 100644 --- a/classes/views/frm-fields/back-end/settings.php +++ b/classes/views/frm-fields/back-end/settings.php @@ -132,6 +132,7 @@ * @param array $values The values associated with the field. */ do_action( 'frm_after_number_range_option', $field, $display, $values ); + $field_obj->show_primary_options( compact( 'field', 'display', 'values' ) ); if ( $display['format'] ) { include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/format-dropdown.php'; From 9668c638d422b3d93b4bba44de62e83292158dd7 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 2 Jun 2025 20:55:06 +0300 Subject: [PATCH 10/22] Add space below new action hook for code clarity --- classes/views/frm-fields/back-end/settings.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/views/frm-fields/back-end/settings.php b/classes/views/frm-fields/back-end/settings.php index ab8cd8c987..cf578bcdf6 100644 --- a/classes/views/frm-fields/back-end/settings.php +++ b/classes/views/frm-fields/back-end/settings.php @@ -132,6 +132,7 @@ * @param array $values The values associated with the field. */ do_action( 'frm_after_number_range_option', $field, $display, $values ); + $field_obj->show_primary_options( compact( 'field', 'display', 'values' ) ); if ( $display['format'] ) { From 40fc02296f38529fa8374cf072952010c644ea27 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 2 Jun 2025 20:58:23 +0300 Subject: [PATCH 11/22] Remove new hook not needed --- classes/views/frm-fields/back-end/settings.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/classes/views/frm-fields/back-end/settings.php b/classes/views/frm-fields/back-end/settings.php index cf578bcdf6..8d3f3cbb0b 100644 --- a/classes/views/frm-fields/back-end/settings.php +++ b/classes/views/frm-fields/back-end/settings.php @@ -122,17 +122,6 @@ include FrmAppHelper::plugin_path() . '/classes/views/frm-fields/back-end/number-range.php'; } - /** - * Fires after the number range field settings. - * - * @since x.x - * - * @param array $field The field settings. - * @param array $display The display settings for the field. - * @param array $values The values associated with the field. - */ - do_action( 'frm_after_number_range_option', $field, $display, $values ); - $field_obj->show_primary_options( compact( 'field', 'display', 'values' ) ); if ( $display['format'] ) { From f1ec9ef9addfce0d5698503d1208ab773aa4732e Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 2 Jun 2025 21:04:04 +0300 Subject: [PATCH 12/22] Add comment to function --- js/formidable_admin.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 510113201d..174901915e 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1572,6 +1572,17 @@ function frmAdminBuildJS() { document.getElementById( 'frm_in_section_' + fieldId ).value = sectionId; } + /** + * Get the arguments for inserting a new field. + * + * @since x.x + * + * @param {string} fieldType + * @param {string} formId + * @param {Number} hasBreak + * + * @returns {Object} + */ function getInsertNewFieldArgs( fieldType, formId, hasBreak ) { let args = { action: 'frm_insert_field', @@ -1584,6 +1595,7 @@ function frmAdminBuildJS() { }; return wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); } + /** * Add a new field by dragging and dropping it from the Fields sidebar * From 9504ca077218182a763660dce5ccacdd54c51900 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 13 Jun 2025 21:13:21 +0300 Subject: [PATCH 13/22] Use CustomEvent instead of a MouseEvent --- js/formidable_admin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 174901915e..7e9a725fbb 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1603,7 +1603,7 @@ function frmAdminBuildJS() { * @param {Event} event */ function insertNewFieldByDragging( fieldType, event ) { - if ( 'range' === fieldType && event.originalEvent.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { + if ( 'range' === fieldType && event.originalEvent.detail.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { return; } const placeholder = document.getElementById( 'frm_drag_placeholder' ); @@ -2032,7 +2032,7 @@ function frmAdminBuildJS() { hasBreak = $newFields.children( 'li[data-type="break"]' ).length > 0 ? 1 : 0; } - if ( 'range' === fieldType && event.originalEvent.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { + if ( 'range' === fieldType && event.originalEvent.detail.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { return; } const formId = thisFormId; From 8f99633b76a1a259f8d5849856b7aaf6c1bef86b Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 18 Jun 2025 17:16:36 +0300 Subject: [PATCH 14/22] Reduce repeated code --- js/formidable_admin.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 8d14764053..e409ca0b83 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1596,6 +1596,17 @@ function frmAdminBuildJS() { return wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); } + /** + * Returns true if it's a range field type and slider type is not selected. + * + * @param {string} fieldType + * @param {Event} event + * @returns {boolean} + */ + function shouldStopInsertingField( fieldType, event ) { + return 'range' === fieldType && event.originalEvent?.detail?.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1'; + } + /** * Add a new field by dragging and dropping it from the Fields sidebar * @@ -1603,7 +1614,7 @@ function frmAdminBuildJS() { * @param {Event} event */ function insertNewFieldByDragging( fieldType, event ) { - if ( 'range' === fieldType && event.originalEvent.detail.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { + if ( shouldStopInsertingField( fieldType, event ) ) { return; } const placeholder = document.getElementById( 'frm_drag_placeholder' ); @@ -2027,14 +2038,15 @@ function frmAdminBuildJS() { const $button = $thisObj.closest( '.frmbutton' ); const fieldType = $button.attr( 'id' ); + if ( shouldStopInsertingField( fieldType, event ) ) { + return; + } + let hasBreak = 0; if ( 'summary' === fieldType ) { hasBreak = $newFields.children( 'li[data-type="break"]' ).length > 0 ? 1 : 0; } - if ( 'range' === fieldType && event.originalEvent.detail.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1' ) { - return; - } const formId = thisFormId; jQuery.ajax({ From 20b4966971964f1967f624ce56c23b0167ffb1b1 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:05:52 +0300 Subject: [PATCH 15/22] Add since tag --- js/formidable_admin.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index e409ca0b83..69c56bd0a9 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1599,6 +1599,8 @@ function frmAdminBuildJS() { /** * Returns true if it's a range field type and slider type is not selected. * + * @since x.x + * * @param {string} fieldType * @param {Event} event * @returns {boolean} From 10c7f92f949e582193e7b05306afdaaf3faa2e4d Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Mon, 21 Jul 2025 17:59:55 +0300 Subject: [PATCH 16/22] Revert unintentionally set section id to 0 --- js/formidable_admin.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 69c56bd0a9..ed1e1061b9 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1583,12 +1583,12 @@ function frmAdminBuildJS() { * * @returns {Object} */ - function getInsertNewFieldArgs( fieldType, formId, hasBreak ) { - let args = { + function getInsertNewFieldArgs( fieldType, sectionId, formId, hasBreak ) { + const args = { action: 'frm_insert_field', form_id: formId, field_type: fieldType, - section_id: 0, + section_id: sectionId, nonce: frmGlobal.nonce, has_break: hasBreak, last_row_field_ids: getFieldIdsInSubmitRow() @@ -1645,8 +1645,9 @@ function frmAdminBuildJS() { } jQuery.ajax({ - type: 'POST', url: ajaxurl, - data: getInsertNewFieldArgs( fieldType, formId, hasBreak ), + type: 'POST', + url: ajaxurl, + data: getInsertNewFieldArgs( fieldType, sectionId, formId, hasBreak ), success: function( msg ) { let replaceWith; document.getElementById( 'frm_form_editor_container' ).classList.add( 'frm-has-fields' ); @@ -2054,7 +2055,7 @@ function frmAdminBuildJS() { jQuery.ajax({ type: 'POST', url: ajaxurl, - data: getInsertNewFieldArgs( fieldType, formId, hasBreak ), + data: getInsertNewFieldArgs( fieldType, 0, formId, hasBreak ), success: function( msg ) { document.getElementById( 'frm_form_editor_container' ).classList.add( 'frm-has-fields' ); const replaceWith = wrapFieldLi( msg ); From 7458d6283bea9b39acd3778435b6c0d974bdbac7 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:03:52 +0300 Subject: [PATCH 17/22] Pass more params to frm_insert_field_args --- js/formidable_admin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index ed1e1061b9..aa84dfea85 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1593,7 +1593,7 @@ function frmAdminBuildJS() { has_break: hasBreak, last_row_field_ids: getFieldIdsInSubmitRow() }; - return wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType ); + return wp.hooks.applyFilters( 'frm_insert_field_args', args, fieldType, formId, sectionId, hasBreak ); } /** From 1464e7b99f817ef4e3750e4519ec9d79e08a1c46 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:06:11 +0300 Subject: [PATCH 18/22] Fix function params order in descriptions --- js/formidable_admin.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index aa84dfea85..11eabec146 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1578,6 +1578,7 @@ function frmAdminBuildJS() { * @since x.x * * @param {string} fieldType + * @param {string} sectionId * @param {string} formId * @param {Number} hasBreak * From ad0e6c00616bd4a17c2af5dc9d179dd3eac70f29 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 7 Aug 2025 17:35:00 +0300 Subject: [PATCH 19/22] Improve equality check --- js/formidable_admin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 11eabec146..68ce1436c8 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1607,7 +1607,7 @@ function frmAdminBuildJS() { * @returns {boolean} */ function shouldStopInsertingField( fieldType, event ) { - return 'range' === fieldType && event.originalEvent?.detail?.showModal !== 0 && builderPage.dataset.supportsRangeSlider === '1'; + return 'range' === fieldType && ( event.originalEvent?.detail?.showModal ?? 0 ) !== 0 && builderPage.dataset.supportsRangeSlider === '1'; } /** From 4070d64e24b7fdadfc23779d3fa51d25115f14f4 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:24:17 +0300 Subject: [PATCH 20/22] Cleanup code --- js/formidable_admin.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index c7052af224..3fc962b69a 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -1603,11 +1603,10 @@ function frmAdminBuildJS() { * @since x.x * * @param {string} fieldType - * @param {Event} event * @returns {boolean} */ - function shouldStopInsertingField( fieldType, event ) { - return 'range' === fieldType && ( event.originalEvent?.detail?.showModal ?? 0 ) !== 0 && builderPage.dataset.supportsRangeSlider === '1'; + function shouldStopInsertingField( fieldType ) { + return wp.hooks.applyFilters( 'frm_should_stop_inserting_field', false, fieldType ); } /** @@ -1617,7 +1616,7 @@ function frmAdminBuildJS() { * @param {Event} event */ function insertNewFieldByDragging( fieldType, event ) { - if ( shouldStopInsertingField( fieldType, event ) ) { + if ( shouldStopInsertingField( fieldType ) ) { return; } const placeholder = document.getElementById( 'frm_drag_placeholder' ); @@ -2041,7 +2040,7 @@ function frmAdminBuildJS() { document.dispatchEvent( loadedEvent ); } - function addFieldClick( event ) { + function addFieldClick() { /*jshint validthis:true */ const $thisObj = jQuery( this ); // there is no real way to disable a
(with a valid href attribute) in HTML - https://css-tricks.com/how-to-disable-links/ @@ -2052,7 +2051,7 @@ function frmAdminBuildJS() { const $button = $thisObj.closest( '.frmbutton' ); const fieldType = $button.attr( 'id' ); - if ( shouldStopInsertingField( fieldType, event ) ) { + if ( shouldStopInsertingField( fieldType ) ) { return; } From 356d429161dfae6bb8b44473eeb2fcc75e362e11 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:25:16 +0300 Subject: [PATCH 21/22] Remove unused function params --- js/formidable_admin.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 3fc962b69a..426484624b 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -970,7 +970,7 @@ function frmAdminBuildJS() { return droppable; } - function handleFieldDrop( event, ui ) { + function handleFieldDrop( _, ui ) { if ( ! dragState.dragging ) { // dragState.dragging is set to true on drag start. @@ -996,7 +996,7 @@ function frmAdminBuildJS() { const newSection = placeholder.closest( 'ul.frm_sorting' ); if ( draggable.classList.contains( 'frm-new-field' ) ) { - insertNewFieldByDragging( draggable.id, event ); + insertNewFieldByDragging( draggable.id ); } else { moveFieldThatAlreadyExists( draggable, placeholder ); } @@ -1613,9 +1613,8 @@ function frmAdminBuildJS() { * Add a new field by dragging and dropping it from the Fields sidebar * * @param {string} fieldType - * @param {Event} event */ - function insertNewFieldByDragging( fieldType, event ) { + function insertNewFieldByDragging( fieldType ) { if ( shouldStopInsertingField( fieldType ) ) { return; } From 1009689e6eebc60299bc248d17c281d8ea6fdd91 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:26:01 +0300 Subject: [PATCH 22/22] Cleanup code --- js/formidable_admin.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/js/formidable_admin.js b/js/formidable_admin.js index 426484624b..95eca3e8cf 100644 --- a/js/formidable_admin.js +++ b/js/formidable_admin.js @@ -971,7 +971,6 @@ function frmAdminBuildJS() { } function handleFieldDrop( _, ui ) { - if ( ! dragState.dragging ) { // dragState.dragging is set to true on drag start. // The deactivate event gets called for every droppable. This check to make sure it happens once. @@ -2060,7 +2059,6 @@ function frmAdminBuildJS() { } const formId = thisFormId; - jQuery.ajax({ type: 'POST', url: ajaxurl,