From 7a73527feb4d181f202cb9025cb6c13d795b7c81 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 5 Mar 2026 19:16:26 +0300 Subject: [PATCH 001/128] Change Email Marketing category name to Marketing --- classes/controllers/FrmFormActionsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/controllers/FrmFormActionsController.php b/classes/controllers/FrmFormActionsController.php index 05da258b6c..5cc791149d 100644 --- a/classes/controllers/FrmFormActionsController.php +++ b/classes/controllers/FrmFormActionsController.php @@ -187,7 +187,7 @@ public static function form_action_groups() { ), ), 'marketing' => array( - 'name' => __( 'Email Marketing', 'formidable' ), + 'name' => __( 'Marketing', 'formidable' ), 'icon' => 'frmfont frm_mail_bulk_icon', 'actions' => array( 'mailchimp', From 016567a3ad8fa4491cf56bdcf575b375f143595a Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 5 Mar 2026 19:16:34 +0300 Subject: [PATCH 002/128] Update form settings tab icons --- classes/controllers/FrmFormsController.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/classes/controllers/FrmFormsController.php b/classes/controllers/FrmFormsController.php index bc6799e307..b10905836d 100644 --- a/classes/controllers/FrmFormsController.php +++ b/classes/controllers/FrmFormsController.php @@ -1522,17 +1522,17 @@ private static function get_settings_tabs( $values ) { 'name' => __( 'General', 'formidable' ), 'title' => __( 'General Form Settings', 'formidable' ), 'function' => array( self::class, 'advanced_settings' ), - 'icon' => 'frmfont frm_settings_icon', + 'icon' => 'frmfont frm_small_settings_icon', ), 'email' => array( 'name' => __( 'Actions & Notifications', 'formidable' ), 'function' => array( 'FrmFormActionsController', 'email_settings' ), 'id' => 'frm_notification_settings', - 'icon' => 'frmfont frm_mail_bulk_icon', + 'icon' => 'frmfont frm_notification_check_icon', ), 'permissions' => array( 'name' => __( 'Form Permissions', 'formidable' ), - 'icon' => 'frmfont frm_lock_closed_icon', + 'icon' => 'frmfont frm_lock_closed2_icon', 'html_class' => 'frm_show_upgrade_tab frm_noallow', 'data' => array( 'medium' => 'permissions', @@ -1544,7 +1544,7 @@ private static function get_settings_tabs( $values ) { ), 'scheduling' => array( 'name' => __( 'Form Scheduling', 'formidable' ), - 'icon' => 'frmfont frm_calendar_icon', + 'icon' => 'frmfont frm_schedule_icon', 'html_class' => 'frm_show_upgrade_tab frm_noallow', 'data' => array( 'medium' => 'scheduling', @@ -1557,17 +1557,17 @@ private static function get_settings_tabs( $values ) { 'name' => __( 'Buttons', 'formidable' ), 'class' => self::class, 'function' => 'buttons_settings', - 'icon' => 'frmfont frm_button_icon', + 'icon' => 'frmfont frm-buttons-style', ), 'landing' => array( 'name' => __( 'Form Landing Page', 'formidable' ), - 'icon' => 'frmfont frm_file_text_icon', + 'icon' => 'frmfont frm_cross_device_icon', 'html_class' => 'frm_show_upgrade_tab frm_noallow', 'data' => FrmAppHelper::get_landing_page_upgrade_data_params(), ), 'chat' => array( 'name' => __( 'Conversational Forms', 'formidable' ), - 'icon' => 'frmfont frm_chat_forms_icon', + 'icon' => 'frmfont frm_chat_bubbles_icon', 'html_class' => 'frm_show_upgrade_tab frm_noallow', 'data' => FrmAppHelper::get_upgrade_data_params( 'chat', @@ -1597,7 +1597,7 @@ private static function get_settings_tabs( $values ) { 'name' => __( 'Customize HTML', 'formidable' ), 'class' => self::class, 'function' => 'html_settings', - 'icon' => 'frmfont frm_code_icon', + 'icon' => 'frmfont frm_code2_icon', ), ); From 34954b4fcc24980ea780afa49698033bfb662b7e Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 5 Mar 2026 19:16:49 +0300 Subject: [PATCH 003/128] Update form settings tab icons and add new icon symbols --- images/icons.svg | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/images/icons.svg b/images/icons.svg index e5c8955e0f..8b28c4b627 100644 --- a/images/icons.svg +++ b/images/icons.svg @@ -1,7 +1,7 @@ From d0b17f0bf4517f25e872e61751a2624cf2fafa10 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 5 Mar 2026 19:17:12 +0300 Subject: [PATCH 004/128] Add filter tabs to form actions settings page --- classes/views/frm-form-actions/settings.php | 46 +++++++++++++++------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/classes/views/frm-form-actions/settings.php b/classes/views/frm-form-actions/settings.php index 2d55a39a1d..ab69f806ce 100644 --- a/classes/views/frm-form-actions/settings.php +++ b/classes/views/frm-form-actions/settings.php @@ -8,15 +8,37 @@

- 'actions', - 'placeholder' => __( 'Search Form Actions', 'formidable' ), - 'tosearch' => 'frm-action', - ) - ); - ?> +
+
+
+ +
+
+
    +
  • + $group_data ) { + $tab_label = ! empty( $group_data['name'] ) ? $group_data['name'] : __( 'Featured', 'formidable' ); + ?> +
  • + +
+
+
+
+ 'actions', + 'placeholder' => __( 'Search Form Actions', 'formidable' ), + 'tosearch' => 'frm-action', + ) + ); + ?> +
+

@@ -26,10 +48,10 @@ $group ) { if ( ! empty( $group['name'] ) ) { ?> -

+

-

- +

- + action_options['classes'] ); ?> post_title ); ?> From e8ea5d0bc45c44b41e251aa9a0a91789a550452d Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 17:51:02 +0300 Subject: [PATCH 053/128] Remove obsolete action icon inactive state initialization and frm-inverse class logic from form settings Delete checkActiveAction() loop that set icons to inactive state on page load. Remove conditional frm-inverse class addition for icons with background images. This logic is no longer needed with updated icon styling approach. --- js/src/admin/admin.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/js/src/admin/admin.js b/js/src/admin/admin.js index 391765810b..d19883cec9 100644 --- a/js/src/admin/admin.js +++ b/js/src/admin/admin.js @@ -10616,17 +10616,6 @@ window.frmAdminBuildJS = function() { jQuery( '.frm_actions_list' ).on( 'click', '.frm_active_action', addFormAction ); initiateMultiselect(); - //set actions icons to inactive - jQuery( 'ul.frm_actions_list li' ).each( function() { - checkActiveAction( jQuery( this ).children( 'a' ).data( 'actiontype' ) ); - - // If the icon is a background image, don't add BG color. - const icon = jQuery( this ).find( 'i' ); - if ( icon.css( 'background-image' ) !== 'none' ) { - icon.addClass( 'frm-inverse' ); - } - } ); - jQuery( '.frm_submit_settings_btn' ).on( 'click', submitSettings ); addFormNameModalEvents(); From 102007dedb7a2491f6a46d033eaf060d1a40c0bf Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 17:51:13 +0300 Subject: [PATCH 054/128] Replace frm-filter-hidden class with frm_hidden in content filter toggle logic Update applyContentFilter() to use frm_hidden class instead of frm-filter-hidden when toggling visibility of filtered groups. Standardize on existing utility class naming convention. --- js/src/components/tabs/filter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/components/tabs/filter.js b/js/src/components/tabs/filter.js index 726ac298ab..708fb40061 100644 --- a/js/src/components/tabs/filter.js +++ b/js/src/components/tabs/filter.js @@ -7,7 +7,7 @@ export function applyContentFilter( target, filterValue ) { target.dataset.activeFilter = filterValue; target.querySelectorAll( '[data-group]' ).forEach( group => { - group.classList.toggle( 'frm-filter-hidden', 'all' !== filterValue && group.dataset.group !== filterValue ); + group.classList.toggle( 'frm_hidden', 'all' !== filterValue && group.dataset.group !== filterValue ); } ); } From 7fb3c31595c3f1ceddff857f45ef249fbb2ef0da Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 18:39:49 +0300 Subject: [PATCH 055/128] Refactor content filter to use internal state with getFilterTarget() resolver and simplified applyContentFilter() signature Move filter target resolution to new getFilterTarget() function that stores target in module-level variable. Change applyContentFilter() to accept only filterValue parameter and operate on stored filterTarget. Make hasFilterableGroups() private helper function. Add early return guard when filterTarget is not set. --- js/src/components/tabs/filter.js | 45 +++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/js/src/components/tabs/filter.js b/js/src/components/tabs/filter.js index 708fb40061..9b01a9b11d 100644 --- a/js/src/components/tabs/filter.js +++ b/js/src/components/tabs/filter.js @@ -1,14 +1,23 @@ +let filterTarget; + /** - * Applies a filter to content groups by matching filterValue against data-group attributes. + * Resolves filter target from a wrapper element's data-filter-target attribute and stores it internally. * - * @param {Element} target The container element with filterable groups. - * @param {string} filterValue The filter key matching data-group, or 'all'. + * @param {Element} wrapper The wrapper element containing data-filter-target. + * @return {Element|null} The filter target element if valid, null otherwise. */ -export function applyContentFilter( target, filterValue ) { - target.dataset.activeFilter = filterValue; - target.querySelectorAll( '[data-group]' ).forEach( group => { - group.classList.toggle( 'frm_hidden', 'all' !== filterValue && group.dataset.group !== filterValue ); - } ); +export function getFilterTarget( wrapper ) { + filterTarget = null; + + const selector = wrapper?.dataset?.filterTarget; + if ( selector ) { + const target = document.querySelector( selector ); + if ( hasFilterableGroups( target ) ) { + filterTarget = target; + } + } + + return filterTarget; } /** @@ -17,6 +26,22 @@ export function applyContentFilter( target, filterValue ) { * @param {Element} target The container element to check. * @return {boolean} True if target has data-group children. */ -export function hasFilterableGroups( target ) { - return target instanceof Element && target.querySelectorAll( '[data-group]' ).length > 0; +function hasFilterableGroups( target ) { + return target.querySelectorAll( '[data-group]' ).length > 0; +} + +/** + * Applies a filter to content groups by matching filterValue against data-group attributes. + * + * @param {string} filterValue The filter key matching data-group, or 'all'. + */ +export function applyContentFilter( filterValue ) { + if ( ! filterTarget ) { + return; + } + + filterTarget.dataset.activeFilter = filterValue; + filterTarget.querySelectorAll( '[data-group]' ).forEach( group => { + group.classList.toggle( 'frm_hidden', 'all' !== filterValue && group.dataset.group !== filterValue ); + } ); } From 8a231ff76e3df179402c95d22b7eb8b8ff086f4f Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 18:40:07 +0300 Subject: [PATCH 056/128] Refactor tabs navigator to use centralized filter target resolution from getFilterTarget() and simplified applyContentFilter() signature Replace local filterTarget initialization with getFilterTarget() call. Update applyContentFilter() calls to pass only filter value parameter. Simplify init() validation logic by inverting conditions to check for missing track and filter instead of separate isFilterMode and hasSlideTrack checks. --- js/src/components/tabs/class-tabs-navigator.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/js/src/components/tabs/class-tabs-navigator.js b/js/src/components/tabs/class-tabs-navigator.js index 63460adb3c..ea313ed8ca 100644 --- a/js/src/components/tabs/class-tabs-navigator.js +++ b/js/src/components/tabs/class-tabs-navigator.js @@ -1,4 +1,4 @@ -import { applyContentFilter, hasFilterableGroups } from './filter.js'; +import { applyContentFilter, getFilterTarget } from './filter.js'; import { observeVisibility, disconnectVisibilityObserver } from 'core/utils/visibilityObserver'; export class frmTabsNavigator { @@ -20,18 +20,15 @@ export class frmTabsNavigator { this.slides = this.wrapper.querySelectorAll( '.frm-tabs-slide-track > div' ); this.isRTL = document.documentElement.dir === 'rtl' || document.body.dir === 'rtl'; this.resizeObserver = null; - this.filterTarget = this.wrapper.dataset.filterTarget - ? document.querySelector( this.wrapper.dataset.filterTarget ) - : null; + this.filterTarget = getFilterTarget( this.wrapper ); this.init(); } init() { - const isFilterMode = null !== this.filterTarget && hasFilterableGroups( this.filterTarget ); - const hasSlideTrack = null !== this.slideTrack && this.slides.length; + const isMissingTrackAndFilter = ! this.filterTarget && ( null === this.slideTrack || 0 === this.slides.length ); - if ( null === this.wrapper || ! this.navs.length || null === this.slideTrackLine || ( ! isFilterMode && ! hasSlideTrack ) ) { + if ( null === this.wrapper || ! this.navs.length || null === this.slideTrackLine || isMissingTrackAndFilter ) { return; } @@ -40,7 +37,7 @@ export class frmTabsNavigator { if ( nav.classList.contains( 'frm-active' ) ) { this.initSlideTrackUnderline( nav ); if ( this.filterTarget ) { - applyContentFilter( this.filterTarget, nav.dataset.filter || 'all' ); + applyContentFilter( nav.dataset.filter || 'all' ); } } } ); @@ -62,7 +59,7 @@ export class frmTabsNavigator { this.initSlideTrackUnderline( navItem ); if ( this.filterTarget ) { - applyContentFilter( this.filterTarget, navItem.dataset.filter || 'all' ); + applyContentFilter( navItem.dataset.filter || 'all' ); return; } From e14b5b488830d3fe8a41fb5f45313eef535d766d Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 21:36:47 +0300 Subject: [PATCH 057/128] Remove obsolete upgrade prompt cursor styling for inactive form actions in field dragging styles Delete frm_show_upgrade.frm_inactive_action anchor selector from cursor pointer rule, leaving only frm_noallow.button.frm_show_upgrade selector. Simplify styling now that inactive action upgrade prompts are handled differently. --- resources/scss/admin/components/builder/_field-dragging.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/scss/admin/components/builder/_field-dragging.scss b/resources/scss/admin/components/builder/_field-dragging.scss index a9090d3cb5..c7a1145972 100644 --- a/resources/scss/admin/components/builder/_field-dragging.scss +++ b/resources/scss/admin/components/builder/_field-dragging.scss @@ -49,7 +49,6 @@ li.frm_noallow.button, opacity: 0.5; } -.frm_actions_list a.frm_show_upgrade.frm_inactive_action::before, li.frm_noallow.button.frm_show_upgrade { cursor: pointer; } From d1f95b052ae2abc7062a4094abb138faa531d242 Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 21:37:07 +0300 Subject: [PATCH 058/128] Simplify form actions filter and list styles by removing redundant selectors and consolidating display rules Remove individual filter state selectors and icon sizing rules from form actions list. Consolidate group heading visibility into single negation selector for non-"all" filter states. Delete frm-not-installed display rule and all icon dimension/alignment styles now handled elsewhere. --- .../admin/components/form/_form-actions.scss | 31 ++----------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index ac9009bc53..bbd196266e 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -1,37 +1,10 @@ // Filter -#frm-actions-filter-content { - margin-top: var(--gap-md); - - .frm-group-heading { - display: none; - } - - &[data-active-filter="all"] .frm-group-heading { - display: block; - } - - &[data-active-filter] .frm-not-installed { - display: list-item; - } +#frm-actions-filter-content:not([data-active-filter="all"]) .frm-group-heading { + display: none; } // Action Cards .frm_actions_list { - - .frmsvg, - i::before { - height: 15px; - width: 15px; - vertical-align: text-top; - } - - i::before { - vertical-align: middle; - } - - .frm_inactive_action i { - opacity: 0.4; - } } // Action Settings From e610297cda2024d7822d76c85eb7f98748e012b8 Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 21:37:19 +0300 Subject: [PATCH 059/128] Remove obsolete frm_actions_list margin override from desktop media query styles Delete frm_actions_list margin-left rule no longer needed with updated actions list layout. Simplify desktop breakpoint styles by removing redundant positioning override. --- resources/scss/admin/media-queries/_screen-desktop.scss | 4 ---- 1 file changed, 4 deletions(-) diff --git a/resources/scss/admin/media-queries/_screen-desktop.scss b/resources/scss/admin/media-queries/_screen-desktop.scss index 118d431cdd..fca66df9aa 100644 --- a/resources/scss/admin/media-queries/_screen-desktop.scss +++ b/resources/scss/admin/media-queries/_screen-desktop.scss @@ -20,10 +20,6 @@ margin: 0; } - .frm_actions_list { - margin-left: 0; - } - #frm_bs_dropdown .frm_bstooltip { /* There isn't enough room for the title on a screen this size so just hide it. */ From b4984e2a80cecbb3feffa7a95575f7826440a531 Mon Sep 17 00:00:00 2001 From: Sherv Date: Wed, 18 Mar 2026 21:37:46 +0300 Subject: [PATCH 060/128] Add bottom margin to actions filter tabs wrapper and remove default margin from actions list grid layout Update frm-h-stack container to include frm-mb-lg class for consistent spacing below filter tabs. Add frm-m-0 class to frm_actions_list to reset default margin on grid layout container. --- classes/views/frm-form-actions/settings.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/views/frm-form-actions/settings.php b/classes/views/frm-form-actions/settings.php index a143304c72..e4cbadaf12 100644 --- a/classes/views/frm-form-actions/settings.php +++ b/classes/views/frm-form-actions/settings.php @@ -8,7 +8,7 @@

-
+
@@ -52,7 +52,7 @@ $group['actions'] = array(); } ?> -
    +
      id_base, $displayed_actions, true ) || ! in_array( $action_control->id_base, $group['actions'], true ) ) { From 35918c572a8ab288285441f4409e679e9e5897f2 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 17:22:42 +0300 Subject: [PATCH 061/128] Remove obsolete card item styles from addons page CSS Delete frm-card-item padding, gap, border, shadow, and transition rules along with hover state. Remove margin resets for card item paragraphs and headings. These styles are now handled by parent component. --- css/admin/addons-page.css | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/css/admin/addons-page.css b/css/admin/addons-page.css index 0e03db3387..4f42f58334 100644 --- a/css/admin/addons-page.css +++ b/css/admin/addons-page.css @@ -23,23 +23,6 @@ } /* Card */ -#frm-addons-page .frm-card-item { - padding: var(--gap-sm) var(--gap-md); - gap: 12px; - border-color: var(--grey-300); - box-shadow: var(--box-shadow-sm); - transition: box-shadow 200ms ease-in-out; -} - -#frm-addons-page .frm-card-item:hover { - box-shadow: var(--box-shadow-md); -} - -.frm-card-item p, -.frm-card-item h3 { - margin: 0; -} - .frm-border-icon > svg { width: 24px; } From 94c6ed2669113eea225240ef40065d06a1493369 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 17:23:19 +0300 Subject: [PATCH 062/128] Remove border and padding from email settings headings and add consistent typography styling Delete border and padding from h2 and h3 elements in frm_email_settings. Set font-weight to 500 with important flag. Add font-size, color, and margin styling to h3 elements for consistent visual hierarchy. --- .../admin/components/form/_form-actions.scss | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index bbd196266e..42c487d2ed 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -1,3 +1,19 @@ +.frm_email_settings { + + h2, + h3 { + border: 0; + padding: 0; + font-weight: 500 !important; + } + + h3 { + font-size: var(--text-sm); + color: var(--grey-600); + margin: var(--gap-md) 0; + } +} + // Filter #frm-actions-filter-content:not([data-active-filter="all"]) .frm-group-heading { display: none; From 620b38f893cdd477d8e4c58ad3fd60034b2648a0 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 17:23:37 +0300 Subject: [PATCH 063/128] Reduce horizontal padding on outlined action cards and set icon color to primary-700 Add padding-left and padding-right overrides using --gap-sm variable for outlined card items in actions list. Update frmsvg icon color to use --primary-700 variable for consistent primary color styling. --- resources/scss/admin/components/form/_form-actions.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 42c487d2ed..2abca1fa1b 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -21,6 +21,14 @@ // Action Cards .frm_actions_list { + .frm-card-item.frm-card-item--outlined { + padding-left: var(--gap-sm); + padding-right: var(--gap-sm); + + .frmsvg { + color: var(--primary-700); + } + } } // Action Settings From 85a9f0e6538c5818b68a3645b27d4940c0b656c1 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 17:24:00 +0300 Subject: [PATCH 064/128] Update form settings headings with new typography and spacing styles including border-top separator Change h3 elements in frm_settings_form and frm_form_settings to use --text-md font size, add grey-300 border-top with --gap-sm padding, adjust margins to --gap-sm, reduce font-weight to 400, and update color to --medium-grey. Remove h2 border-bottom and padding overrides from frm_form_settings. --- .../components/settings/_form-settings.scss | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/resources/scss/admin/components/settings/_form-settings.scss b/resources/scss/admin/components/settings/_form-settings.scss index e24a314660..bacf7e56dc 100644 --- a/resources/scss/admin/components/settings/_form-settings.scss +++ b/resources/scss/admin/components/settings/_form-settings.scss @@ -17,20 +17,17 @@ h2.frm-h2, margin: 0; } -.frm_form_settings h2 { - border-bottom: 0; - padding: 0; -} - .frm_settings_form h3, .frm_form_settings h3, .frm_form_settings span.frm_add_logic_link { - display: block; - font-size: var(--text-sm); - font-weight: 500; + font-size: var(--text-md); + border-top: 1px solid var(--grey-300); + padding-top: var(--gap-sm); + margin: var(--gap-sm) 0; + font-weight: 400; text-transform: uppercase; - color: var(--grey-600); - margin: var(--gap-md) 0; + color: var(--medium-grey); + display: block; } .frm_form_settings .howto { From db42fcc560947f163f1a017cdb9efbc8526cac79 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 17:24:22 +0300 Subject: [PATCH 065/128] Refactor form settings tabs styles to use nested SCSS syntax and update spacing and hover states Move frm-form-setting-tabs styles to use nested SCSS syntax. Update margin-top from --gap-sm to 19px. Add border-radius, horizontal margins using --gap-xs, and transition for background-color. Change padding from --gap-md to --gap-sm. Update hover background from --sidebar-hover to --grey-100. Remove redundant icon and hover selectors for form setting tabs, consolidating with right panel styles. --- .../panel/_settings-components.scss | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/resources/scss/admin/components/panel/_settings-components.scss b/resources/scss/admin/components/panel/_settings-components.scss index a890dc7816..e845687c7b 100644 --- a/resources/scss/admin/components/panel/_settings-components.scss +++ b/resources/scss/admin/components/panel/_settings-components.scss @@ -2,11 +2,6 @@ * Component: Settings and Panel */ -/* Form Settings Tabs */ -.frm-form-setting-tabs { - margin-top: var(--gap-sm) !important; -} - .frm-right-panel > .postbox { background-color: transparent; border: none; @@ -27,17 +22,31 @@ position: relative; } -.frm-right-panel .inside a, -.frm-form-setting-tabs a { +.frm-right-panel .inside a { font-size: var(--text-md); color: var(--grey-700); padding: var(--gap-sm); display: block; } -.frm-form-setting-tabs a { - color: var(--grey-900); - padding: 13px var(--gap-md); +.frm-form-setting-tabs { + margin-top: 19px !important; + + a { + font-size: var(--text-md); + color: var(--grey-900); + border-radius: var(--small-radius); + padding: 13px var(--gap-sm); + margin-left: var(--gap-xs); + margin-right: var(--gap-xs); + transition: background-color 0.2s ease-out; + + &:hover { + color: var(--grey-900); + background: var(--grey-100); + } + } + } .frm-right-panel .inside a { @@ -50,14 +59,7 @@ color: var(--primary-700); } -.frm-form-setting-tabs a:hover { - background: var(--sidebar-hover); - color: var(--grey-900); -} - -.frm-right-panel .inside i, -.frm-form-setting-tabs a i, -.frm-form-setting-tabs a .frmsvg { +.frm-right-panel .inside i { margin: 0 5px; display: inline-block; width: 20px; @@ -65,14 +67,8 @@ color: var(--grey-500); } -.frm-form-setting-tabs a .frmsvg { - margin: 0; -} - .frm-right-panel .inside a:hover i, -.frm-right-panel .inside a:hover .frmsvg, -.frm-form-setting-tabs a:hover .frmsvg, -.frm-form-setting-tabs a:hover span { +.frm-right-panel .inside a:hover .frmsvg { color: var(--grey-700); } From 620f9d2ee72ca125a5e17ae9aeb2f4f62808329d Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 18:37:12 +0300 Subject: [PATCH 066/128] Update payment category label from "eCommerce" to "E-Commerce" in form actions controller for consistent hyphenation --- classes/controllers/FrmFormActionsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/controllers/FrmFormActionsController.php b/classes/controllers/FrmFormActionsController.php index 1e9721c9f1..d341bfb57d 100644 --- a/classes/controllers/FrmFormActionsController.php +++ b/classes/controllers/FrmFormActionsController.php @@ -179,7 +179,7 @@ public static function form_action_groups() { ), ), 'payment' => array( - 'name' => __( 'eCommerce', 'formidable' ), + 'name' => __( 'E-Commerce', 'formidable' ), 'icon' => 'frmfont frm_credit_card_alt_icon', 'actions' => array( 'paypal', From 7862d0bcf68c41c504524ba8102ccbb83b41ee9a Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 18:37:50 +0300 Subject: [PATCH 067/128] Add top margin to form actions menu wrapper and shorten search placeholder text from "Search Form Actions" to "Search Actions" --- classes/views/frm-form-actions/settings.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/views/frm-form-actions/settings.php b/classes/views/frm-form-actions/settings.php index e4cbadaf12..041a0b3da4 100644 --- a/classes/views/frm-form-actions/settings.php +++ b/classes/views/frm-form-actions/settings.php @@ -7,7 +7,7 @@

      -
      +
      @@ -28,7 +28,7 @@ FrmAppHelper::show_search_box( array( 'input_id' => 'actions', - 'placeholder' => __( 'Search Form Actions', 'formidable' ), + 'placeholder' => __( 'Search Actions', 'formidable' ), 'tosearch' => 'frm-action', 'class' => 'frm-ml-auto-force', ) From e2229f3e90b9b7e60564d936f4ac9a2cab61e8d0 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 18:38:07 +0300 Subject: [PATCH 068/128] Add white-space nowrap to tab navigator labels to prevent text wrapping --- .../frm-tab-navigator-component/frm-tab-navigator-component.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.scss b/js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.scss index 04d9cc63ec..cc4537e39f 100644 --- a/js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.scss +++ b/js/src/web-components/frm-tab-navigator-component/frm-tab-navigator-component.scss @@ -62,6 +62,7 @@ margin-top: var(--gap-xs); margin-bottom: 0; cursor: pointer; + white-space: nowrap; } } } From daa3faa81b0503c03a792996d159e98333236e17 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 18:38:41 +0300 Subject: [PATCH 069/128] Add white-space nowrap to form settings tabs to prevent label wrapping, set full width and max-width on actions search input, and add right padding to form settings page inner content --- .../scss/admin/components/form/_form-actions.scss | 12 ++++++++++++ .../admin/components/settings/_form-settings.scss | 3 ++- resources/scss/admin/components/settings/_tabs.scss | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 2abca1fa1b..8d33b4ace8 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -14,6 +14,18 @@ } } +// Search +#frm_email_addon_menu .frm-search { + float: unset; + clear: unset; + width: 100%; + max-width: 380px; + + input[type="search"] { + height: 44px; + } +} + // Filter #frm-actions-filter-content:not([data-active-filter="all"]) .frm-group-heading { display: none; diff --git a/resources/scss/admin/components/settings/_form-settings.scss b/resources/scss/admin/components/settings/_form-settings.scss index bacf7e56dc..3a19bc39f7 100644 --- a/resources/scss/admin/components/settings/_form-settings.scss +++ b/resources/scss/admin/components/settings/_form-settings.scss @@ -4,8 +4,9 @@ #form_settings_page .frm-inner-content { position: relative; - padding-left: var(--gap-xl); + padding-right: var(--gap-xl); padding-bottom: 150px; + padding-left: var(--gap-xl); } h2.frm-h2, diff --git a/resources/scss/admin/components/settings/_tabs.scss b/resources/scss/admin/components/settings/_tabs.scss index 829150f7f8..d0419bd633 100644 --- a/resources/scss/admin/components/settings/_tabs.scss +++ b/resources/scss/admin/components/settings/_tabs.scss @@ -66,7 +66,7 @@ margin-top: var(--gap-xs); margin-bottom: 0; cursor: pointer; - + white-space: nowrap; &.frm-active, &.frm-active a { From 9f6a8914aa5e1fd48aa5050c3d134e7989be45d1 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 18:38:53 +0300 Subject: [PATCH 070/128] Update email addon menu layout to stack vertically on smaller desktop screens with full-width search input Add flex-direction column, stretch alignment, and small gap to first child h-stack in email addon menu. Remove max-width constraint from search input to allow full width in stacked layout. --- .../scss/admin/media-queries/_screen-desktop.scss | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/scss/admin/media-queries/_screen-desktop.scss b/resources/scss/admin/media-queries/_screen-desktop.scss index fca66df9aa..c4d42838c1 100644 --- a/resources/scss/admin/media-queries/_screen-desktop.scss +++ b/resources/scss/admin/media-queries/_screen-desktop.scss @@ -7,6 +7,18 @@ #frm_top_bar h1 { min-width: 0; /* Reset the min-width to prevent menu items from stacking vertically */ } + + #frm_email_addon_menu { + > :first-child.frm-h-stack { + flex-direction: column; + align-items: stretch; + gap: var(--gap-sm); + } + + .frm-search { + max-width: unset; + } + } } @media only screen and (max-width: 1050px) { From c155934f5216d50c323663d2dbb853087195e2f9 Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 19:38:34 +0300 Subject: [PATCH 071/128] Remove obsolete action menu class toggling logic from admin search functionality Delete conditional code that added frm-limited-actions and removed frm-all-actions classes from email addon menu during search. This class switching is no longer needed as filter tabs now handle visibility. --- js/src/admin/admin.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/js/src/admin/admin.js b/js/src/admin/admin.js index d19883cec9..9910c078ea 100644 --- a/js/src/admin/admin.js +++ b/js/src/admin/admin.js @@ -9385,15 +9385,6 @@ window.frmAdminBuildJS = function() { regEx = true; } - if ( toSearch === 'frm-action' && searchText !== '' ) { - const addonMenu = document.getElementById( 'frm_email_addon_menu' ); - // Skip class switch when filter tabs handle visibility. - if ( ! addonMenu.querySelector( '[data-filter-target]' ) ) { - addonMenu.classList.remove( 'frm-all-actions' ); - addonMenu.classList.add( 'frm-limited-actions' ); - } - } - for ( i = 0; i < items.length; i++ ) { const innerText = items[ i ].innerText.toLowerCase(); From fd4f7308e97d49ebf4cc99d824b31ff194bbcdde Mon Sep 17 00:00:00 2001 From: Sherv Date: Thu, 19 Mar 2026 20:31:06 +0300 Subject: [PATCH 072/128] Add form actions search functionality to filter and toggle group heading visibility based on search input Create new formActionsSearch component that handles search behavior on Actions & Notifications settings page. Switch to "All" tab when searching to span all categories. Hide group headings when all their actions are filtered out by search. Initialize search handlers on DOM ready. --- .../components/formActionsSearch.js | 83 +++++++++++++++++++ js/src/settings-components/index.js | 2 + 2 files changed, 85 insertions(+) create mode 100644 js/src/settings-components/components/formActionsSearch.js diff --git a/js/src/settings-components/components/formActionsSearch.js b/js/src/settings-components/components/formActionsSearch.js new file mode 100644 index 0000000000..8a5176382b --- /dev/null +++ b/js/src/settings-components/components/formActionsSearch.js @@ -0,0 +1,83 @@ +/** + * Form actions search behavior for the Actions & Notifications settings page. + * + * @since x.x + */ + +const ACTIONS_LIST_WRAPPER_ID = 'frm_email_addon_menu'; +const FILTER_CONTENT_ID = 'frm-actions-filter-content'; + +/** + * Initializes search behavior for the form actions settings page. + */ +export const initFormActionsSearch = () => { + const actionsListWrapper = document.getElementById( ACTIONS_LIST_WRAPPER_ID ); + if ( ! actionsListWrapper ) { + return; + } + + const searchInput = actionsListWrapper.querySelector( '.frm-auto-search' ); + if ( ! searchInput ) { + return; + } + + const filterContent = document.getElementById( FILTER_CONTENT_ID ); + const onSearch = () => handleSearchInput( searchInput, actionsListWrapper, filterContent ); + + searchInput.addEventListener( 'input', onSearch ); + searchInput.addEventListener( 'search', onSearch ); +}; + +/** + * Handles search input for form actions. + * Switches to "All" tab and defers group heading visibility update. + * + * @since x.x + * + * @param {HTMLInputElement} searchInput The search input element. + * @param {HTMLElement} actionsListWrapper The actions wrapper container. + * @param {HTMLElement|null} filterContent The filter content container. + */ +const handleSearchInput = ( searchInput, actionsListWrapper, filterContent ) => { + if ( searchInput.value.trim() ) { + switchToAllTab( actionsListWrapper ); + } + + if ( filterContent ) { + // Defer heading update so the generic searchContent handler in admin.js + // finishes toggling individual item visibility first. + setTimeout( () => updateGroupHeadingVisibility( filterContent ), 0 ); + } +}; + +/** + * Switches the active filter tab to "All" so search spans every category. + * + * @param {HTMLElement} actionsListWrapper The actions wrapper container. + */ +const switchToAllTab = actionsListWrapper => { + const allTab = actionsListWrapper.querySelector( 'li[data-filter="all"]' ); + if ( ! allTab.classList.contains( 'frm-active' ) ) { + allTab.click(); + } +}; + +/** + * Toggles group headings visibility when all their actions are hidden by search. + * + * @param {HTMLElement} filterContent The filter content container. + */ +const updateGroupHeadingVisibility = filterContent => { + filterContent.querySelectorAll( '[data-group]' ).forEach( group => { + const heading = group.querySelector( '.frm-group-heading' ); + if ( ! heading ) { + return; + } + + const actions = group.querySelectorAll( '.frm-action' ); + const allHidden = actions.length > 0 && Array.from( actions ).every( + action => action.classList.contains( 'frm_hidden' ) + ); + heading.classList.toggle( 'frm-force-hidden', allHidden ); + } ); +}; diff --git a/js/src/settings-components/index.js b/js/src/settings-components/index.js index b31c543413..afd52363fe 100644 --- a/js/src/settings-components/index.js +++ b/js/src/settings-components/index.js @@ -15,6 +15,7 @@ import { initToggleGroupComponents, setupUnitInputHandlers } from './components'; +import { initFormActionsSearch } from './components/formActionsSearch'; domReady( () => { new frmRadioComponent(); @@ -24,4 +25,5 @@ domReady( () => { initTokenInputFields(); initToggleGroupComponents(); setupUnitInputHandlers(); + initFormActionsSearch(); } ); From 12ed36ecd8bd2a8a6f822b546cf8123b26738baf Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 13:37:30 +0300 Subject: [PATCH 073/128] Add is_new flag to action options and display "New" pill badge on n8n action card Add is_new boolean field to default action options in FrmFormAction model. Display pill badge in action icon template when is_new flag is true. Set is_new to true for n8n action to mark it as a new feature. --- classes/models/FrmFormAction.php | 1 + classes/views/frm-form-actions/_action_icon.php | 3 +++ classes/views/frm-form-actions/default_actions.php | 1 + 3 files changed, 5 insertions(+) diff --git a/classes/models/FrmFormAction.php b/classes/models/FrmFormAction.php index cb2b563502..0338ba72c4 100644 --- a/classes/models/FrmFormAction.php +++ b/classes/models/FrmFormAction.php @@ -159,6 +159,7 @@ public function __construct( $id_base, $name, $action_options = array(), $contro 'color' => '', 'keywords' => '', 'description' => '', + 'is_new' => false, ); $action_options = apply_filters( 'frm_' . $id_base . '_action_options', $action_options ); diff --git a/classes/views/frm-form-actions/_action_icon.php b/classes/views/frm-form-actions/_action_icon.php index c2d4e9af90..4c38ae8de9 100644 --- a/classes/views/frm-form-actions/_action_icon.php +++ b/classes/views/frm-form-actions/_action_icon.php @@ -22,6 +22,9 @@

      name ) ); ?> + action_options['is_new'] ) ) { ?> + +

      action_options['description'] ) ) { ?>

      action_options['description'] ); ?>

      diff --git a/classes/views/frm-form-actions/default_actions.php b/classes/views/frm-form-actions/default_actions.php index 5b4c7c9b86..8c071f079d 100644 --- a/classes/views/frm-form-actions/default_actions.php +++ b/classes/views/frm-form-actions/default_actions.php @@ -111,6 +111,7 @@ public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_n8n_icon frm_show_upgrade' ); $action_ops['color'] = '#EA4B71'; $action_ops['description'] = __( 'Workflow automation', 'formidable' ); + $action_ops['is_new'] = true; parent::__construct( 'n8n', 'n8n', $action_ops ); } } From 9602b9862a128c9ba0643375bc8dea1ed6abfa82 Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 13:40:24 +0300 Subject: [PATCH 074/128] Add lock icon to upgrade-required action cards that don't have one-click upgrade option Display lock icon before action name on action cards when data-upgrade attribute is set and data-oneclick is not present. Use FrmAppHelper::icon_by_class to render frmfont frm_lock_icon with Lock icon aria-label. --- classes/views/frm-form-actions/_action_icon.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/classes/views/frm-form-actions/_action_icon.php b/classes/views/frm-form-actions/_action_icon.php index 4c38ae8de9..900ad667e7 100644 --- a/classes/views/frm-form-actions/_action_icon.php +++ b/classes/views/frm-form-actions/_action_icon.php @@ -21,6 +21,11 @@

      + + + __( 'Lock icon', 'formidable' ) ) ); ?> + + name ) ); ?> action_options['is_new'] ) ) { ?> From 31c1e9fd0165e8950ee0bca4fcc29923c92142db Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 18:07:37 +0300 Subject: [PATCH 075/128] Redesign not-installed action cards to match new outlined card style with lock icon, pill badge support, and secondary Add button Update not-installed action card markup to use frm-card-item--outlined class and horizontal stack layout. Move lock icon before action name. Add support for displaying "New" pill badge when action is in group's new_actions array. Replace card link with secondary button containing plus icon and "Add" text. Use group icon if available, fallback to plus icon. Add data-upgrade and --- classes/views/frm-form-actions/settings.php | 54 ++++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/classes/views/frm-form-actions/settings.php b/classes/views/frm-form-actions/settings.php index 041a0b3da4..8c6e22807b 100644 --- a/classes/views/frm-form-actions/settings.php +++ b/classes/views/frm-form-actions/settings.php @@ -67,33 +67,39 @@ if ( in_array( $action, $displayed_actions, true ) ) { continue; } - ?> -
    • - - - > - '--primary-700:' . $group['color'], - ); - } - FrmAppHelper::icon_by_class( 'frmfont frm_plus_icon', $icon_atts ); - ?> - + $icon_atts = array(); + if ( isset( $group['color'] ) ) { + $icon_atts = array( + 'style' => '--primary-700:' . $group['color'], + ); + } + + $action_icon = isset( $group['icon'] ) ? $group['icon'] : 'frmfont frm_plus_icon'; + ?> +
    • +
    • Date: Fri, 20 Mar 2026 20:16:30 +0300 Subject: [PATCH 076/128] feat(form-actions): surface on-submit action groups --- .../controllers/FrmFormActionsController.php | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/classes/controllers/FrmFormActionsController.php b/classes/controllers/FrmFormActionsController.php index d341bfb57d..4e2ae39471 100644 --- a/classes/controllers/FrmFormActionsController.php +++ b/classes/controllers/FrmFormActionsController.php @@ -56,25 +56,25 @@ public static function register_actions() { 'email' => 'FrmEmailAction', 'wppost' => 'FrmDefPostAction', 'register' => 'FrmDefRegAction', - 'paypal' => 'FrmDefPayPalAction', - 'payment' => 'FrmTransLiteAction', 'quiz' => 'FrmDefQuizAction', 'quiz_outcome' => 'FrmDefQuizOutcomeAction', - 'mailchimp' => 'FrmDefMlcmpAction', + 'paypal' => 'FrmDefPayPalAction', + 'payment' => 'FrmTransLiteAction', 'api' => 'FrmDefApiAction', - 'salesforce' => 'FrmDefSalesforceAction', + 'mailchimp' => 'FrmDefMlcmpAction', 'activecampaign' => 'FrmDefActiveCampaignAction', 'constantcontact' => 'FrmDefConstContactAction', 'getresponse' => 'FrmDefGetResponseAction', - 'hubspot' => 'FrmDefHubspotAction', - 'zapier' => 'FrmDefZapierAction', - 'n8n' => 'FrmDefN8NAction', - 'twilio' => 'FrmDefTwilioAction', - 'highrise' => 'FrmDefHighriseAction', 'mailpoet' => 'FrmDefMailpoetAction', - 'aweber' => 'FrmDefAweberAction', 'convertkit' => 'FrmDefConvertKitAction', + 'aweber' => 'FrmDefAweberAction', + 'twilio' => 'FrmDefTwilioAction', + 'salesforce' => 'FrmDefSalesforceAction', + 'hubspot' => 'FrmDefHubspotAction', + 'highrise' => 'FrmDefHighriseAction', + 'zapier' => 'FrmDefZapierAction', 'googlespreadsheet' => 'FrmDefGoogleSpreadsheetAction', + 'n8n' => 'FrmDefN8NAction', ); $action_classes = apply_filters( 'frm_registered_form_actions', $action_classes ); @@ -170,12 +170,15 @@ public static function form_action_groups() { 'name' => '', 'icon' => 'frmfont frm_shuffle_icon', 'actions' => array( + 'on_submit', 'email', 'wppost', 'register', 'quiz', 'quiz_outcome', - 'twilio', + 'api', + 'googlespreadsheet', + 'n8n', ), ), 'payment' => array( @@ -197,6 +200,7 @@ public static function form_action_groups() { 'aweber', 'mailpoet', 'convertkit', + 'twilio', ), ), 'crm' => array( @@ -220,6 +224,7 @@ private static function get_crm_actions() { $crm_actions = array( 'salesforce', 'hubspot', + 'zapier', ); // Only include Highrise when the add-on is active. From bc2e0319f5f4895fd7808b848fcf0a45b8d2ad71 Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 20:17:48 +0300 Subject: [PATCH 077/128] fix(FrmOnSubmitAction): update icon class and color for success messages --- classes/models/FrmOnSubmitAction.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/models/FrmOnSubmitAction.php b/classes/models/FrmOnSubmitAction.php index 76e13c9b47..6b54aef52a 100644 --- a/classes/models/FrmOnSubmitAction.php +++ b/classes/models/FrmOnSubmitAction.php @@ -20,12 +20,12 @@ class FrmOnSubmitAction extends FrmFormAction { public function __construct() { $action_ops = array( - 'classes' => 'frmfont frm_checkmark_icon', + 'classes' => 'frmfont frm_checkmark_circle_icon', 'active' => true, 'event' => array( 'create' ), 'limit' => 99, 'priority' => 9, - 'color' => 'rgb(66, 193, 178)', + 'color' => '#42C1B2', 'keywords' => __( 'redirect, success, confirmation, submit', 'formidable' ), 'description' => __( 'Success messages', 'formidable' ), ); From 3ba1aeb0e4e67b9a117e2e887681a0730df91b39 Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 20:18:00 +0300 Subject: [PATCH 078/128] refactor(form-actions): update action colors for improved consistency and branding --- .../frm-form-actions/default_actions.php | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/classes/views/frm-form-actions/default_actions.php b/classes/views/frm-form-actions/default_actions.php index 8c071f079d..6fcbd56127 100644 --- a/classes/views/frm-form-actions/default_actions.php +++ b/classes/views/frm-form-actions/default_actions.php @@ -9,7 +9,7 @@ class FrmDefPostAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_wordpress_icon frm_show_upgrade' ); - $action_ops['color'] = 'rgb(0,160,210)'; + $action_ops['color'] = '#3177C7'; $action_ops['description'] = __( 'Content publishing', 'formidable' ); parent::__construct( 'wppost', __( 'Create Post', 'formidable' ), $action_ops ); @@ -23,7 +23,7 @@ class FrmDefRegAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_register_icon frm_show_upgrade' ); $action_ops['plugin'] = 'registration'; - $action_ops['color'] = 'var(--pink)'; + $action_ops['color'] = '#e22a6e'; $action_ops['description'] = __( 'Account creation', 'formidable' ); parent::__construct( 'register', __( 'Register User', 'formidable' ), $action_ops ); } @@ -35,7 +35,7 @@ public function __construct() { class FrmDefPayPalAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_paypal_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--primary-700)'; + $action_ops['color'] = '#001c64'; $action_ops['description'] = __( 'Payment gateway', 'formidable' ); parent::__construct( 'paypal', 'PayPal', $action_ops ); @@ -47,8 +47,9 @@ public function __construct() { */ class FrmDefQuizAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_percent_icon frm_quiz_icon frm_show_upgrade' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_quiz_icon frm_show_upgrade' ); $action_ops['plugin'] = 'quizzes'; + $action_ops['color'] = '#f15a24'; $action_ops['description'] = __( 'Automated grading', 'formidable' ); parent::__construct( 'quiz', __( 'Scored Quiz', 'formidable' ), $action_ops ); } @@ -59,8 +60,9 @@ public function __construct() { */ class FrmDefQuizOutcomeAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_check1_icon frm_quiz_icon frm_show_upgrade' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_quiz_outcome_icon frm_show_upgrade' ); $action_ops['plugin'] = 'quizzes'; + $action_ops['color'] = '#8d35f5'; $action_ops['description'] = __( 'Result logic', 'formidable' ); parent::__construct( 'quiz_outcome', __( 'Quiz Outcome', 'formidable' ), $action_ops ); } @@ -72,7 +74,7 @@ public function __construct() { class FrmDefAweberAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_aweber_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--green)'; + $action_ops['color'] = '#246BE8'; $action_ops['description'] = __( 'List triggers', 'formidable' ); parent::__construct( 'aweber', 'AWeber', $action_ops ); } @@ -84,7 +86,7 @@ public function __construct() { class FrmDefMlcmpAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_mailchimp_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--grey-700)'; + $action_ops['color'] = '#000'; $action_ops['description'] = __( 'Subscription confirmation', 'formidable' ); parent::__construct( 'mailchimp', 'Mailchimp', $action_ops ); @@ -97,7 +99,7 @@ public function __construct() { class FrmDefZapierAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_zapier_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--orange)'; + $action_ops['color'] = '#FF4A00'; $action_ops['description'] = __( 'App automation', 'formidable' ); parent::__construct( 'zapier', 'Zapier', $action_ops ); } @@ -122,6 +124,7 @@ public function __construct() { class FrmDefTwilioAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_sms_icon frm_show_upgrade' ); + $action_ops['color'] = '#F12E45'; $action_ops['description'] = __( 'Text notifications', 'formidable' ); parent::__construct( 'twilio', __( 'Twilio SMS', 'formidable' ), $action_ops ); } @@ -130,7 +133,7 @@ public function __construct() { class FrmDefActiveCampaignAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_activecampaign_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--primary-700)'; + $action_ops['color'] = '#004CFF'; $action_ops['description'] = __( 'Contact automation', 'formidable' ); parent::__construct( 'activecampaign', 'ActiveCampaign', $action_ops ); } @@ -138,8 +141,8 @@ public function __construct() { class FrmDefSalesforceAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_salesforce_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--primary-500)'; + $action_ops = FrmFormAction::default_action_opts( 'frm_salesforcealt_icon frm_show_upgrade' ); + $action_ops['color'] = '#00A1E0'; $action_ops['description'] = __( 'Lead automation', 'formidable' ); parent::__construct( 'salesforce', 'Salesforce', $action_ops ); } @@ -148,7 +151,7 @@ public function __construct() { class FrmDefConstContactAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_constant_contact_icon frm_show_upgrade' ); - $action_ops['color'] = 'rgb(0,160,210)'; + $action_ops['color'] = '#1856ED'; $action_ops['description'] = __( 'Content distribution', 'formidable' ); parent::__construct( 'constantcontact', 'Constant Contact', $action_ops ); } @@ -157,7 +160,7 @@ public function __construct() { class FrmDefGetResponseAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_getresponse_icon frm_show_upgrade' ); - $action_ops['color'] = '#00baff'; + $action_ops['color'] = '#00A2FF'; $action_ops['description'] = __( 'Success notifications', 'formidable' ); parent::__construct( 'getresponse', 'GetResponse', $action_ops ); } @@ -166,7 +169,7 @@ public function __construct() { class FrmDefHubspotAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_hubspot_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--orange)'; + $action_ops['color'] = '#FF7A59'; $action_ops['message'] = ''; @@ -184,7 +187,7 @@ public function __construct() { class FrmDefMailpoetAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_mailpoet_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--orange)'; + $action_ops['color'] = '#FE5301'; $action_ops['description'] = __( 'Plugin automation', 'formidable' ); parent::__construct( 'mailpoet', 'MailPoet', $action_ops ); } @@ -193,7 +196,7 @@ public function __construct() { class FrmDefApiAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_feed_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--purple)'; + $action_ops['color'] = '#0193d7'; $action_ops['description'] = __( 'System integration', 'formidable' ); parent::__construct( 'api', __( 'Send API data', 'formidable' ), $action_ops ); } @@ -205,7 +208,7 @@ public function __construct() { class FrmDefGoogleSpreadsheetAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_googlesheets_icon frm_show_upgrade' ); - $action_ops['color'] = 'var(--green)'; + $action_ops['color'] = '#0F9D58'; $action_ops['description'] = __( 'Spreadsheet sync', 'formidable' ); parent::__construct( 'googlespreadsheet', __( 'Google Sheets', 'formidable' ), $action_ops ); } @@ -225,7 +228,7 @@ public function __construct() { class FrmDefConvertKitAction extends FrmFormAction { public function __construct() { $action_ops = FrmFormAction::default_action_opts( 'frm_convertkit_icon frm_show_upgrade' ); - $action_ops['color'] = 'rgb(68 177 255)'; + $action_ops['color'] = '#1E1E1E'; $action_ops['description'] = __( 'Broadcast publishing', 'formidable' ); parent::__construct( 'convertkit', 'Kit', $action_ops ); } From 43786178944130d5c39f6ee8e8633c6f24985eea Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 20:18:07 +0300 Subject: [PATCH 079/128] fix(email_action): update color format for consistency in email action settings --- classes/views/frm-form-actions/email_action.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/views/frm-form-actions/email_action.php b/classes/views/frm-form-actions/email_action.php index 7b0132d27d..c373f3633e 100644 --- a/classes/views/frm-form-actions/email_action.php +++ b/classes/views/frm-form-actions/email_action.php @@ -12,7 +12,7 @@ public function __construct() { 'event' => array( 'create' ), 'limit' => 99, 'priority' => 10, - 'color' => 'rgb(49, 119, 199)', + 'color' => '#3177C7', 'description' => __( 'Autoresponder alerts', 'formidable' ), ); $action_ops = apply_filters( 'frm_email_control_settings', $action_ops ); From 912b4f548cc1d25af755735f3a58056393f1fd5c Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 20:18:25 +0300 Subject: [PATCH 080/128] fix(icons): update PayPal icon for improved clarity and consistency in design --- images/icons.svg | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/images/icons.svg b/images/icons.svg index 8b28c4b627..5ce1d9211a 100644 --- a/images/icons.svg +++ b/images/icons.svg @@ -17,7 +17,7 @@ hubspot mailchimp mailpoet -paypal icon + polylang salesforce salesforcealt @@ -38,12 +38,13 @@ clone tooltip tooltip_solid + + forbid checkmark image checkmark circle checkmark square -check check1 plus @@ -100,7 +101,7 @@ -register + account_circle_solid account_circle address_card @@ -128,7 +129,7 @@ -email_solid + mail_bulk @@ -186,8 +187,8 @@ pie_chart stats_bars -sms -feed + + align_left button @@ -232,7 +233,7 @@ wordpress credit_card -credit_card_alt + cc_amex cc_discover cc_mastercard From 593b48ba9bb489d5eef5b87bfbb8a39c2798fc04 Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 20:18:49 +0300 Subject: [PATCH 081/128] feat(form-actions): enhance action card styles with hover effects and new layout features --- .../admin/components/form/_form-actions.scss | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 8d33b4ace8..13bddf8190 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -33,18 +33,56 @@ // Action Cards .frm_actions_list { + .frm-card-item.frm-card-item--outlined { padding-left: var(--gap-sm); padding-right: var(--gap-sm); + transition: box-shadow 200ms ease-in-out, background-color 200ms ease-out; .frmsvg { color: var(--primary-700); } + + &:hover { + background-color: var(--grey-25); + } + + .frm_single_action { + display: none; + } + + &:hover .frm_single_action { + display: inline-flex; + animation: fadeIn 400ms ease-in-out forwards; + } + + .frm_single_action.frm_inactive_action { + opacity: 0.5; + } + } + + .frm-action h3 { + display: flex; + align-items: center; + gap: 4px; + } + + .frm-action-lock-icon .frmsvg { + display: flex; + width: 11px; + height: 13px; + flex-shrink: 0; + color: var(--grey-500); + } + + .frm-action h3 .frm-new-pill { + flex-shrink: 0; } } // Action Settings .frm_form_action_settings { + .widget-top { box-shadow: none; border-color: var(--grey-300); @@ -153,6 +191,7 @@ } .frm_email_settings .widget-title { + h4 { color: var(--grey-700); } From 8a08805da72658f7ea0f355940930fbd5f2ae5be Mon Sep 17 00:00:00 2001 From: Sherv Date: Fri, 20 Mar 2026 20:18:59 +0300 Subject: [PATCH 082/128] fix(FrmTransLiteAction): update action color to hex format for consistency --- stripe/models/FrmTransLiteAction.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stripe/models/FrmTransLiteAction.php b/stripe/models/FrmTransLiteAction.php index 3910b6b38b..f44343a90e 100755 --- a/stripe/models/FrmTransLiteAction.php +++ b/stripe/models/FrmTransLiteAction.php @@ -14,7 +14,7 @@ public function __construct() { // After user registration. 'priority' => 45, 'event' => array( 'create' ), - 'color' => 'var(--green)', + 'color' => '#3fac25', 'description' => __( 'Transaction alerts', 'formidable' ), ); From bed5dc7a95e42fbc746d9e2542fab96d60bd9a28 Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 23 Mar 2026 23:23:50 +0300 Subject: [PATCH 083/128] refactor(form-action): improve layout and styling of action card components for better user experience --- .../views/frm-form-actions/form_action.php | 75 ++++++++++--------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/classes/views/frm-form-actions/form_action.php b/classes/views/frm-form-actions/form_action.php index b5eafbcf11..8b0f1ecb1b 100644 --- a/classes/views/frm-form-actions/form_action.php +++ b/classes/views/frm-form-actions/form_action.php @@ -20,53 +20,56 @@ class="widget frm_form_action_settings frm_single_post_excerpt ); ?>_settings post_status === 'publish' ? '' : 'frm_disabled_action' ); ?>" > -
      -
      -

      - - action_options['classes'] ); ?> - - post_title ); ?> +
      +
      +

      + action_options['classes'] ); ?> + post_title ); ?>

      - - action_options['limit'] > 2 ) { ?> - - + +
      +
      + +
      + + + action_options['limit'] > 2 ) { ?> +
      + + + + + + - - - - - get_field_id( 'post_status', '' ), - $action_control->get_field_name( 'post_status', '' ), - array( - 'checked' => $form_action->post_status === 'publish', - 'on_label' => 'publish', - 'off_label' => 'OFF', - 'show_labels' => false, - 'echo' => true, - ) - ); - ?> - -
      - + get_field_id( 'post_status', '' ), + $action_control->get_field_name( 'post_status', '' ), + array( + 'checked' => $form_action->post_status === 'publish', + 'on_label' => 'publish', + 'off_label' => 'OFF', + 'show_labels' => false, + 'echo' => true, + ) + ); + ?> +
      +
      + ?> From db714efe82c7810f77e31794cce9161239e953a7 Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 23 Mar 2026 23:24:09 +0300 Subject: [PATCH 084/128] fix(settings-advanced): correct value assignment for on_submit_migrated input field --- classes/views/frm-forms/settings-advanced.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/views/frm-forms/settings-advanced.php b/classes/views/frm-forms/settings-advanced.php index 2d60dfb1b5..9651926b63 100644 --- a/classes/views/frm-forms/settings-advanced.php +++ b/classes/views/frm-forms/settings-advanced.php @@ -76,7 +76,7 @@

      - +

      ' + . esc_html__( 'No actions have been added yet. Select an action above to get started.', 'formidable' ) + . '

      '; + foreach ( $form_actions as $action ) { if ( ! isset( $action_map[ $action->post_excerpt ] ) ) { // Don't try and show settings if action no longer exists From cdcb204ed088812f8bc7540ee7d9e53a5dca96ac Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 19:34:22 +0300 Subject: [PATCH 093/128] feat(form-actions): toggle visibility of no actions message based on action presence --- js/src/admin/admin.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/src/admin/admin.js b/js/src/admin/admin.js index 50cbea766b..fac7d18438 100644 --- a/js/src/admin/admin.js +++ b/js/src/admin/admin.js @@ -642,6 +642,10 @@ window.frmAdminBuildJS = function() { function afterActionRemoved( type ) { checkActiveAction( type ); + if ( ! document.querySelector( '.frm_form_action_settings' ) ) { + document.querySelector( '.frm-no-actions-message' )?.classList.remove( 'frm_hidden' ); + } + const hookName = 'frm_after_action_removed'; const hookArgs = { type }; wp.hooks.doAction( hookName, hookArgs ); @@ -7500,6 +7504,8 @@ window.frmAdminBuildJS = function() { fieldUpdated(); placeholderSetting.remove(); + document.querySelector( '.frm-no-actions-message' )?.classList.add( 'frm_hidden' ); + closeOpenActions(); const newActionContainer = div(); From 2be2526346bbba97b9dfaaa3082f7134238fcc7c Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 20:28:05 +0300 Subject: [PATCH 094/128] refactor(form-actions): extract action icon attributes into a dedicated method for better code organization --- .../controllers/FrmFormActionsController.php | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/classes/controllers/FrmFormActionsController.php b/classes/controllers/FrmFormActionsController.php index 13bb38a8d9..a683fca655 100644 --- a/classes/controllers/FrmFormActionsController.php +++ b/classes/controllers/FrmFormActionsController.php @@ -307,16 +307,26 @@ public static function show_action_icon_link( $action_control, $allowed ) { } }//end if - // HTML to include on the icon. - $icon_atts = array(); + include FrmAppHelper::plugin_path() . '/classes/views/frm-form-actions/_action_icon.php'; + } - if ( $action_control->action_options['color'] !== 'var(--primary-700)' ) { - $icon_atts = array( + /** + * Get the HTML attributes for the action icon. + * + * @since x.x + * + * @param object $action_control + * + * @return array + */ + public static function get_action_icon_atts( $action_control ) { + if ( 'var(--primary-700)' !== $action_control->action_options['color'] ) { + return array( 'style' => '--primary-700:' . $action_control->action_options['color'], ); } - include FrmAppHelper::plugin_path() . '/classes/views/frm-form-actions/_action_icon.php'; + return array(); } /** From a811968067ab94595c748b59b20dc9d201fb5fc1 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 20:28:22 +0300 Subject: [PATCH 095/128] refactor(form-actions): update icon rendering to use centralized method for action icon attributes --- classes/views/frm-form-actions/_action_icon.php | 2 +- classes/views/frm-form-actions/form_action.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/views/frm-form-actions/_action_icon.php b/classes/views/frm-form-actions/_action_icon.php index 900ad667e7..dbfae253e3 100644 --- a/classes/views/frm-form-actions/_action_icon.php +++ b/classes/views/frm-form-actions/_action_icon.php @@ -16,7 +16,7 @@
    • - action_options['classes'], $icon_atts ); ?> + action_options['classes'], FrmFormActionsController::get_action_icon_atts( $action_control ) ); ?>
      diff --git a/classes/views/frm-form-actions/form_action.php b/classes/views/frm-form-actions/form_action.php index 8b0f1ecb1b..5600e19fa4 100644 --- a/classes/views/frm-form-actions/form_action.php +++ b/classes/views/frm-form-actions/form_action.php @@ -23,7 +23,7 @@ class="widget frm_form_action_settings frm_single_

      - action_options['classes'] ); ?> + action_options['classes'], FrmFormActionsController::get_action_icon_atts( $action_control ) ); ?> post_title ); ?>

      From 400ae5e02f4a3e9cf8a79deacf17beaa1da187e9 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 20:29:08 +0300 Subject: [PATCH 096/128] feat(variables): add new variable for x-small border radius to enhance styling options --- resources/scss/admin/base/_variables.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/scss/admin/base/_variables.scss b/resources/scss/admin/base/_variables.scss index 9015004a08..6b6acc7e71 100644 --- a/resources/scss/admin/base/_variables.scss +++ b/resources/scss/admin/base/_variables.scss @@ -51,6 +51,7 @@ --success-50: #ecfdf3; --success-25: #f6fef9; --border-radius: 35px; + --x-small-radius: 4px; --small-radius: 8px; --medium-radius: 16px; --small-sidebar: 275px; From c2141ef65f916284c1fae1cd9571648fb06a37c4 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 20:29:16 +0300 Subject: [PATCH 097/128] style(form-actions): update icon color for frm-border-icon and streamline transition properties --- .../scss/admin/components/form/_form-actions.scss | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 48950e68f1..210acaa8a8 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -12,6 +12,10 @@ color: var(--grey-600); margin: var(--gap-md) 0; } + + .frm-border-icon .frmsvg { + color: var(--primary-700); + } } // Search @@ -37,13 +41,7 @@ .frm-card-item.frm-card-item--outlined { padding-left: var(--gap-sm); padding-right: var(--gap-sm); - transition: - box-shadow 200ms ease-in-out, - background-color 200ms ease-out; - - .frmsvg { - color: var(--primary-700); - } + transition: box-shadow 200ms ease-in-out, background-color 200ms ease-out; &:hover { background-color: var(--grey-25); From 31f6b1cf0b2dcb9394679b4c86cd9922665f1066 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 20:29:25 +0300 Subject: [PATCH 098/128] feat(icons): add small variant for circled icons with adjusted dimensions and border radius --- .../scss/admin/components/icons/_circled-icons.scss | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/resources/scss/admin/components/icons/_circled-icons.scss b/resources/scss/admin/components/icons/_circled-icons.scss index 86f2f63a80..411feda621 100644 --- a/resources/scss/admin/components/icons/_circled-icons.scss +++ b/resources/scss/admin/components/icons/_circled-icons.scss @@ -48,6 +48,17 @@ height: 40px; border: 1px solid var(--grey-300); border-radius: var(--small-radius); + + &--small { + width: 24px; + height: 24px; + border-radius: var(--x-small-radius); + + .frmsvg { + width: 14px; + height: 14px; + } + } } .frm-upgrade-message img { From ddb20e4d46a3cf4f4b0e3b33220c59e8fc635206 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 20:29:33 +0300 Subject: [PATCH 099/128] feat(typography): add new text color utility for primary-700 to enhance styling options --- resources/scss/admin/utilities/typography/_text-color.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/scss/admin/utilities/typography/_text-color.scss b/resources/scss/admin/utilities/typography/_text-color.scss index 8079d9ea71..2d9b285471 100644 --- a/resources/scss/admin/utilities/typography/_text-color.scss +++ b/resources/scss/admin/utilities/typography/_text-color.scss @@ -41,3 +41,7 @@ .frm-text-warning-500 { color: var(--warning-500); } + +.frm-text-primary-700 { + color: var(--primary-700); +} From f0ff930221f7c8dc446dec6bfff3f17040792aaa Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 21:11:08 +0300 Subject: [PATCH 100/128] feat(form-actions): implement dynamic visibility toggle for no results message in actions search --- classes/views/frm-form-actions/settings.php | 4 ++++ js/src/admin/admin.js | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/classes/views/frm-form-actions/settings.php b/classes/views/frm-form-actions/settings.php index 8c6e22807b..dc88898b2e 100644 --- a/classes/views/frm-form-actions/settings.php +++ b/classes/views/frm-form-actions/settings.php @@ -109,6 +109,10 @@ + +

      + +

      diff --git a/js/src/admin/admin.js b/js/src/admin/admin.js index fac7d18438..bf0a6cc11f 100644 --- a/js/src/admin/admin.js +++ b/js/src/admin/admin.js @@ -639,6 +639,18 @@ window.frmAdminBuildJS = function() { return false; } + /** + * Updates the empty state of the actions search results. + * + * @since x.x + */ + function updateActionsSearchEmptyState() { + document.getElementById( 'frm-actions-no-results' )?.classList.toggle( + 'frm_hidden', + document.querySelector( '#frm-actions-filter-content .frm-action:not(.frm_hidden)' ) + ); + } + function afterActionRemoved( type ) { checkActiveAction( type ); @@ -10616,6 +10628,7 @@ window.frmAdminBuildJS = function() { $formActions.on( 'click', '.frm_toggle_cf_opts', toggleCfOpts ); $formActions.on( 'click', '.frm_duplicate_form_action', copyFormAction ); jQuery( '.frm_actions_list' ).on( 'click', '.frm_active_action', addFormAction ); + jQuery( document ).on( 'frmAfterSearch', '#actions-search-input', updateActionsSearchEmptyState ); initiateMultiselect(); jQuery( '.frm_submit_settings_btn' ).on( 'click', submitSettings ); From be09d2b9a9c5469a2d204169f60ae8bb9837192c Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 22:43:04 +0300 Subject: [PATCH 101/128] style(form-actions): add typography classes to action headers for improved text styling --- classes/views/frm-form-actions/_action_icon.php | 2 +- classes/views/frm-form-actions/settings.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/views/frm-form-actions/_action_icon.php b/classes/views/frm-form-actions/_action_icon.php index dbfae253e3..5405b53a27 100644 --- a/classes/views/frm-form-actions/_action_icon.php +++ b/classes/views/frm-form-actions/_action_icon.php @@ -20,7 +20,7 @@
      -

      +

      __( 'Lock icon', 'formidable' ) ) ); ?> diff --git a/classes/views/frm-form-actions/settings.php b/classes/views/frm-form-actions/settings.php index dc88898b2e..c0fee49144 100644 --- a/classes/views/frm-form-actions/settings.php +++ b/classes/views/frm-form-actions/settings.php @@ -84,7 +84,7 @@
      -

      +

      __( 'Lock icon', 'formidable' ) ) ); ?> From c5f0f3a4afa9160a968ea2281ab11fac4ff32618 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 22:43:12 +0300 Subject: [PATCH 102/128] style(form-actions): enhance layout and styling of action buttons and icons for better user experience --- .../views/frm-form-actions/form_action.php | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/classes/views/frm-form-actions/form_action.php b/classes/views/frm-form-actions/form_action.php index 5600e19fa4..0b956c945f 100644 --- a/classes/views/frm-form-actions/form_action.php +++ b/classes/views/frm-form-actions/form_action.php @@ -22,28 +22,22 @@ class="widget frm_form_action_settings frm_single_
      -

      +

      action_options['classes'], FrmFormActionsController::get_action_icon_atts( $action_control ) ); ?> post_title ); ?>

      -
      -
      - -
      - - +
      + action_options['limit'] > 2 ) { ?> - + - + 'OFF', 'show_labels' => false, 'echo' => true, + 'div_class' => 'frm-ml-xs', ) ); ?> + +
      + +
      From 86cbd4c191418c460e1e71678eadec72ef04b5d0 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 23:02:09 +0300 Subject: [PATCH 103/128] style(form-actions): update action icons to include text color utility for improved visibility --- classes/views/frm-form-actions/form_action.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/views/frm-form-actions/form_action.php b/classes/views/frm-form-actions/form_action.php index 0b956c945f..73bfca793f 100644 --- a/classes/views/frm-form-actions/form_action.php +++ b/classes/views/frm-form-actions/form_action.php @@ -32,12 +32,12 @@ class="widget frm_form_action_settings frm_single_ action_options['limit'] > 2 ) { ?> - + - + Date: Tue, 24 Mar 2026 23:02:15 +0300 Subject: [PATCH 104/128] style(icons): update frm_trash_icon and frm_copy_icon to improve design consistency and responsiveness --- images/icons.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/images/icons.svg b/images/icons.svg index 5ce1d9211a..fd5134ba40 100644 --- a/images/icons.svg +++ b/images/icons.svg @@ -268,7 +268,7 @@ - + @@ -307,7 +307,7 @@ - + From 725a42d1af28c6c4ae9e57ff6dae0c850e239f91 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 23:02:32 +0300 Subject: [PATCH 105/128] style(form-actions, typography): enhance button transitions and enforce text color and transform utilities with !important for consistency --- resources/scss/admin/components/form/_form-actions.scss | 1 + resources/scss/admin/utilities/spacing/_padding.scss | 4 ++++ resources/scss/admin/utilities/typography/_text-color.scss | 2 +- .../scss/admin/utilities/typography/_text-transform.scss | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 210acaa8a8..f80b2e9ab2 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -95,6 +95,7 @@ border-radius: var(--small-radius); border-color: var(--grey-300); box-shadow: none; + transition: background-color 200ms ease-out; } &:hover .widget-top { diff --git a/resources/scss/admin/utilities/spacing/_padding.scss b/resources/scss/admin/utilities/spacing/_padding.scss index dabb6fc225..4d282078ee 100644 --- a/resources/scss/admin/utilities/spacing/_padding.scss +++ b/resources/scss/admin/utilities/spacing/_padding.scss @@ -11,6 +11,10 @@ padding: var(--gap-2xs); } +.frm-p-2xs-force { + padding: var(--gap-2xs) !important; +} + .frm-p-sm, .frm-p-4 { padding: var(--gap-sm) !important; diff --git a/resources/scss/admin/utilities/typography/_text-color.scss b/resources/scss/admin/utilities/typography/_text-color.scss index 2d9b285471..38e78cf778 100644 --- a/resources/scss/admin/utilities/typography/_text-color.scss +++ b/resources/scss/admin/utilities/typography/_text-color.scss @@ -27,7 +27,7 @@ } .frm-text-grey-800 { - color: var(--grey-800); + color: var(--grey-800) !important; } .frm-text-grey-900 { diff --git a/resources/scss/admin/utilities/typography/_text-transform.scss b/resources/scss/admin/utilities/typography/_text-transform.scss index 894e1107b5..2c1093993c 100644 --- a/resources/scss/admin/utilities/typography/_text-transform.scss +++ b/resources/scss/admin/utilities/typography/_text-transform.scss @@ -3,5 +3,5 @@ */ .frm-capitalize { - text-transform: capitalize; + text-transform: capitalize !important; } From 79f8d41974241c903138673beb698e1e8786faf1 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 23:06:53 +0300 Subject: [PATCH 106/128] style(form-actions): update widget styling to enhance interactivity and cursor behavior --- classes/views/frm-form-actions/form_action.php | 4 ++-- .../scss/admin/components/form/_form-actions.scss | 12 ------------ .../scss/admin/utilities/Interactivity/_cursor.scss | 2 +- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/classes/views/frm-form-actions/form_action.php b/classes/views/frm-form-actions/form_action.php index 73bfca793f..04154408c7 100644 --- a/classes/views/frm-form-actions/form_action.php +++ b/classes/views/frm-form-actions/form_action.php @@ -20,9 +20,9 @@ class="widget frm_form_action_settings frm_single_post_excerpt ); ?>_settings post_status === 'publish' ? '' : 'frm_disabled_action' ); ?>" > -
      +
      -

      +

      action_options['classes'], FrmFormActionsController::get_action_icon_atts( $action_control ) ); ?> post_title ); ?>

      diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index f80b2e9ab2..fbe3522f7f 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -84,11 +84,6 @@ .frm_form_action_settings { margin-bottom: 12px; - .widget-top, - .widget-top h3 { - cursor: pointer !important; - } - .widget-top { color: var(--grey-700); background: #fff; @@ -115,13 +110,6 @@ } } - .widget-title { - - h4, - h3 { - } - } - > .widget-inside { display: none; } diff --git a/resources/scss/admin/utilities/Interactivity/_cursor.scss b/resources/scss/admin/utilities/Interactivity/_cursor.scss index 56ca49dd50..dbd2ae2221 100644 --- a/resources/scss/admin/utilities/Interactivity/_cursor.scss +++ b/resources/scss/admin/utilities/Interactivity/_cursor.scss @@ -3,5 +3,5 @@ */ .frm-cursor-pointer { - cursor: pointer; + cursor: pointer !important; } From 5992f67270ca8521e1f8b6ea96fcba035f6c417b Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 23:34:06 +0300 Subject: [PATCH 107/128] style(form-actions, typography, components): refine widget styles, remove unnecessary rules, and enhance layout for improved user experience --- classes/views/frm-form-actions/form_action.php | 2 +- resources/scss/admin/base/typography/_text.scss | 1 - resources/scss/admin/components/_page-collapsed.scss | 8 -------- resources/scss/admin/components/form/_fields-part3.scss | 4 ---- .../admin/components/form/_form-editor-container.scss | 5 ----- 5 files changed, 1 insertion(+), 19 deletions(-) diff --git a/classes/views/frm-form-actions/form_action.php b/classes/views/frm-form-actions/form_action.php index 04154408c7..0355640332 100644 --- a/classes/views/frm-form-actions/form_action.php +++ b/classes/views/frm-form-actions/form_action.php @@ -29,7 +29,7 @@ class="widget frm_form_action_settings frm_single_
      - + action_options['limit'] > 2 ) { ?> diff --git a/resources/scss/admin/base/typography/_text.scss b/resources/scss/admin/base/typography/_text.scss index 4a38705963..dd0336ae59 100644 --- a/resources/scss/admin/base/typography/_text.scss +++ b/resources/scss/admin/base/typography/_text.scss @@ -23,7 +23,6 @@ body:not(.frm-admin-page-styles):not(.frm-admin-page-style) .with_frm_style .frm } a, -.widget .widget-top, .stuffbox h3, .frm-collapsed { cursor: pointer; diff --git a/resources/scss/admin/components/_page-collapsed.scss b/resources/scss/admin/components/_page-collapsed.scss index b17f67144f..f574a713f7 100644 --- a/resources/scss/admin/components/_page-collapsed.scss +++ b/resources/scss/admin/components/_page-collapsed.scss @@ -60,14 +60,6 @@ transform: rotate(-90deg); } -.open .widget-top .widget-title-action button .frmsvg { - transform: rotate(90deg); -} - -.widget-top .widget-title-action button .frmsvg use { - color: var(--grey); -} - .frm-collapsed + .frm-collapse-me { overflow: hidden !important; } diff --git a/resources/scss/admin/components/form/_fields-part3.scss b/resources/scss/admin/components/form/_fields-part3.scss index 25064fa4c9..a5975e4f6a 100644 --- a/resources/scss/admin/components/form/_fields-part3.scss +++ b/resources/scss/admin/components/form/_fields-part3.scss @@ -30,10 +30,6 @@ label input[type="radio"] { padding: 10px 15px; } -.frm_form_builder .widget-top a.widget-action::after { - margin: 7px 12px 0; -} - .frmbutton.frm_tgateway { display: none !important; } diff --git a/resources/scss/admin/components/form/_form-editor-container.scss b/resources/scss/admin/components/form/_form-editor-container.scss index 07c2f04c6b..fb18438474 100644 --- a/resources/scss/admin/components/form/_form-editor-container.scss +++ b/resources/scss/admin/components/form/_form-editor-container.scss @@ -48,8 +48,3 @@ #styling_settings input[type="radio"] { border: solid 1px #bbb; } - -#styling_settings .widget .widget-top, -#frm_form_editor_container .widget .widget-top { - cursor: pointer; -} From a17c118c4b04dc0ad93aad9adc2aedf1b5bfaa32 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 24 Mar 2026 23:34:13 +0300 Subject: [PATCH 108/128] style(form-actions): enhance widget hover effects and add email icon visibility for improved interactivity --- .../admin/components/form/_form-actions.scss | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index fbe3522f7f..fe4285bcac 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -93,8 +93,25 @@ transition: background-color 200ms ease-out; } - &:hover .widget-top { - background: var(--grey-25); + .frm_email_icons { + --frm-fadein-time: 240ms; + display: none; + } + + .widget-action { + color: var(--grey-800); + transition: transform 200ms ease-out; + } + + &:hover { + + .widget-top { + background: var(--grey-25); + } + + .frm_email_icons { + display: flex; + } } &.open { @@ -105,8 +122,8 @@ border-bottom: none; } - &:hover .widget-top { - border-color: var(--grey-300); + .widget-action { + transform: rotate(-180deg); } } From e32179a2b67678fc435821d4c89d7ba46dd3d1a0 Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 30 Mar 2026 16:54:17 +0300 Subject: [PATCH 109/128] style(form-actions): update action icon classes for improved styling and consistency --- .../views/frm-form-actions/_action_icon.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/classes/views/frm-form-actions/_action_icon.php b/classes/views/frm-form-actions/_action_icon.php index 5405b53a27..e98684d278 100644 --- a/classes/views/frm-form-actions/_action_icon.php +++ b/classes/views/frm-form-actions/_action_icon.php @@ -7,25 +7,25 @@ $data, array( 'href' => 'javascript:void(0)', - 'class' => $classes . ' button frm-button-secondary frm-button-sm frm-with-icon frm-ml-auto-force', + 'class' => $classes . ' button frm-button-secondary frm-button-sm frm-with-icon frm-ml-auto-force frm-fadein-down-short', 'data-limit' => $action_control->action_options['limit'], 'data-actiontype' => $action_control->id_base, ) ); ?>
    • -
      +
      action_options['classes'], FrmFormActionsController::get_action_icon_atts( $action_control ) ); ?>
      -

      - - - __( 'Lock icon', 'formidable' ) ) ); ?> - - +

      + __( 'Lock icon', 'formidable' ) ) ); + } + ?> name ) ); ?> action_options['is_new'] ) ) { ?> @@ -37,7 +37,7 @@

      > - + From bc4466a1f6fe806f7a8a167e6286fd1211ea0fad Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 30 Mar 2026 16:54:28 +0300 Subject: [PATCH 110/128] style(form-actions): modify email icon class for enhanced animation effect --- classes/views/frm-form-actions/form_action.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/views/frm-form-actions/form_action.php b/classes/views/frm-form-actions/form_action.php index 0355640332..80d8c1c056 100644 --- a/classes/views/frm-form-actions/form_action.php +++ b/classes/views/frm-form-actions/form_action.php @@ -29,7 +29,7 @@ class="widget frm_form_action_settings frm_single_
    • -
      + From 6d99db2e4c53d75ee5fe1ba002e28f4873e0730c Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 30 Mar 2026 16:55:03 +0300 Subject: [PATCH 112/128] style(animations): refactor animation timing using CSS variables for improved flexibility and maintainability --- css/admin/animations.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/css/admin/animations.css b/css/admin/animations.css index 2942a90817..507f4187b3 100644 --- a/css/admin/animations.css +++ b/css/admin/animations.css @@ -1,6 +1,7 @@ /* fadeIn */ .frm-fadein { - animation: fadeIn 400ms ease-in-out forwards; + --frm-fadein-time: 400ms; + animation: fadeIn var(--frm-fadein-time, 400ms) ease-in-out forwards; } .frm-fadein-up { @@ -12,7 +13,8 @@ } .frm-fadein-down-short { - animation: fadeInDownShort 300ms ease-out forwards; + --frm-fadein-down-short-time: 300ms; + animation: fadeInDownShort var(--frm-fadein-down-short-time, 300ms) ease-out forwards; } .frm-fadeout { From ae370ddbef2980fa95ebf8468039ca3c92b06005 Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 30 Mar 2026 16:55:21 +0300 Subject: [PATCH 113/128] style(form-actions): refactor action card styles for improved layout and hover effects --- .../admin/components/form/_form-actions.scss | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index fe4285bcac..183d2c16f4 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -36,47 +36,44 @@ } // Action Cards -.frm_actions_list { +.frm_actions_list .frm-card-item.frm-card-item--outlined { + padding-left: var(--gap-sm); + padding-right: var(--gap-sm); + margin: 0; + transition: box-shadow 200ms ease-in-out, background-color 200ms ease-out; - .frm-card-item.frm-card-item--outlined { - padding-left: var(--gap-sm); - padding-right: var(--gap-sm); - transition: box-shadow 200ms ease-in-out, background-color 200ms ease-out; + &:hover { + background-color: var(--grey-25); + } - &:hover { - background-color: var(--grey-25); - } + h3 { + color: var(--grey-800); - .frm_single_action { - display: none; + .frm-new-pill { + margin-left: 0; } + } - &:hover .frm_single_action { - display: inline-flex; - animation: fadeIn 400ms ease-in-out forwards; + .frm_single_action { + display: none; + align-items: center; + gap: var(--gap-2xs); + font-size: var(--text-sm) !important; + padding: 7px var(--gap-sm) !important; + + .frmsvg { + width: 20px; + height: 20px; + opacity: 1; } - .frm_single_action.frm_inactive_action { - opacity: 0.5; + &.frm_inactive_action { + opacity: 0.55 !important; } } - .frm-action h3 { + &:hover .frm_single_action { display: flex; - align-items: center; - gap: 4px; - } - - .frm-action-lock-icon .frmsvg { - display: flex; - width: 11px; - height: 13px; - flex-shrink: 0; - color: var(--grey-500); - } - - .frm-action h3 .frm-new-pill { - flex-shrink: 0; } } @@ -94,7 +91,6 @@ } .frm_email_icons { - --frm-fadein-time: 240ms; display: none; } From 50e07a8877e7c440267b188c3b6a5e039a055c89 Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 30 Mar 2026 16:55:30 +0300 Subject: [PATCH 114/128] style(icons): update frm_plus_icon to use stroke styling for improved visual consistency --- images/icons.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/icons.svg b/images/icons.svg index fd5134ba40..97aae859bc 100644 --- a/images/icons.svg +++ b/images/icons.svg @@ -47,7 +47,7 @@ checkmark square check1 -plus + plus1 plus2 plus3 From 71c76ceedc3e98e3dbdd5a0a32757413f06013e0 Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 30 Mar 2026 20:46:33 +0300 Subject: [PATCH 115/128] style(form-actions): remove truncation class from action name spans for improved text visibility --- classes/views/frm-form-actions/_action_icon.php | 2 +- classes/views/frm-form-actions/settings.php | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/classes/views/frm-form-actions/_action_icon.php b/classes/views/frm-form-actions/_action_icon.php index e98684d278..d2e8f66933 100644 --- a/classes/views/frm-form-actions/_action_icon.php +++ b/classes/views/frm-form-actions/_action_icon.php @@ -26,7 +26,7 @@ FrmAppHelper::icon_by_class( 'frmfont frm_lock_icon frm_svg15', array( 'aria-label' => __( 'Lock icon', 'formidable' ) ) ); } ?> - name ) ); ?> + name ) ); ?> action_options['is_new'] ) ) { ?> diff --git a/classes/views/frm-form-actions/settings.php b/classes/views/frm-form-actions/settings.php index c8fb7a68ec..215f02f7fa 100644 --- a/classes/views/frm-form-actions/settings.php +++ b/classes/views/frm-form-actions/settings.php @@ -98,10 +98,12 @@

      __( 'Lock icon', 'formidable' ) ) ); ?> - - - - + +

      From dfbb27ae613cbc739808d5283f8f0dc18ebaa348 Mon Sep 17 00:00:00 2001 From: Sherv Date: Mon, 30 Mar 2026 20:47:08 +0300 Subject: [PATCH 116/128] style(form-actions): update padding and border radius for improved consistency, and enhance label layout with flexbox --- .../admin/components/form/_form-actions.scss | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 183d2c16f4..9b236fe582 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -133,10 +133,20 @@ .widget-inside { min-height: 25px; - padding: 15px; + padding: var(--gap-sm); border-color: var(--grey-300); - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; + border-bottom-left-radius: var(--small-radius); + border-bottom-right-radius: var(--small-radius); + + p > label { + display: flex; + align-items: center; + gap: var(--gap-xs); + + .frmsvg { + display: flex; + } + } } } From 3946bdb18c65a5f126359a94293039665aa3a30d Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:17:24 +0300 Subject: [PATCH 117/128] feat(form-actions): add default action descriptions for improved clarity and user guidance --- .../controllers/FrmFormActionsController.php | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/classes/controllers/FrmFormActionsController.php b/classes/controllers/FrmFormActionsController.php index a683fca655..cb1b81b3b4 100644 --- a/classes/controllers/FrmFormActionsController.php +++ b/classes/controllers/FrmFormActionsController.php @@ -86,6 +86,47 @@ public static function register_actions() { foreach ( $action_classes as $action_class ) { self::$registered_actions->register( $action_class ); } + + self::apply_default_action_descriptions(); + } + + /** + * Sets default descriptions on registered actions from a central list. + * + * Keeps the description when an add-on replaces a base action class without its own. + * + * @since x.x + * + * @return void + */ + private static function apply_default_action_descriptions() { + $descriptions = array( + 'wppost' => __( 'Content publishing', 'formidable' ), + 'register' => __( 'Account creation', 'formidable' ), + 'paypal' => __( 'Payment gateway', 'formidable' ), + 'quiz' => __( 'Automated grading', 'formidable' ), + 'quiz_outcome' => __( 'Result logic', 'formidable' ), + 'aweber' => __( 'List triggers', 'formidable' ), + 'mailchimp' => __( 'Subscription confirmation', 'formidable' ), + 'zapier' => __( 'App automation', 'formidable' ), + 'n8n' => __( 'Workflow automation', 'formidable' ), + 'twilio' => __( 'Text notifications', 'formidable' ), + 'activecampaign' => __( 'Contact automation', 'formidable' ), + 'salesforce' => __( 'Lead automation', 'formidable' ), + 'constantcontact' => __( 'Content distribution', 'formidable' ), + 'getresponse' => __( 'Success notifications', 'formidable' ), + 'hubspot' => __( 'CRM alerts', 'formidable' ), + 'mailpoet' => __( 'Plugin automation', 'formidable' ), + 'api' => __( 'System integration', 'formidable' ), + 'googlespreadsheet' => __( 'Spreadsheet sync', 'formidable' ), + 'convertkit' => __( 'Broadcast publishing', 'formidable' ), + ); + + foreach ( self::$registered_actions->actions as $action ) { + if ( $action->action_options['description'] === '' && isset( $descriptions[ $action->id_base ] ) ) { + $action->action_options['description'] = $descriptions[ $action->id_base ]; + } + } } /** From 649d4bb11fc1cbf90346f67f460f1617f4f21f18 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:18:06 +0300 Subject: [PATCH 118/128] style(form-actions): streamline action options initialization for improved readability --- .../frm-form-actions/default_actions.php | 103 +++++++----------- 1 file changed, 42 insertions(+), 61 deletions(-) diff --git a/classes/views/frm-form-actions/default_actions.php b/classes/views/frm-form-actions/default_actions.php index 6fcbd56127..fb714f8ef8 100644 --- a/classes/views/frm-form-actions/default_actions.php +++ b/classes/views/frm-form-actions/default_actions.php @@ -8,9 +8,8 @@ */ class FrmDefPostAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_wordpress_icon frm_show_upgrade' ); - $action_ops['color'] = '#3177C7'; - $action_ops['description'] = __( 'Content publishing', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_wordpress_icon frm_show_upgrade' ); + $action_ops['color'] = '#3177C7'; parent::__construct( 'wppost', __( 'Create Post', 'formidable' ), $action_ops ); } @@ -21,10 +20,9 @@ public function __construct() { */ class FrmDefRegAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_register_icon frm_show_upgrade' ); - $action_ops['plugin'] = 'registration'; - $action_ops['color'] = '#e22a6e'; - $action_ops['description'] = __( 'Account creation', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_register_icon frm_show_upgrade' ); + $action_ops['plugin'] = 'registration'; + $action_ops['color'] = '#e22a6e'; parent::__construct( 'register', __( 'Register User', 'formidable' ), $action_ops ); } } @@ -34,9 +32,8 @@ public function __construct() { */ class FrmDefPayPalAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_paypal_icon frm_show_upgrade' ); - $action_ops['color'] = '#001c64'; - $action_ops['description'] = __( 'Payment gateway', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_paypal_icon frm_show_upgrade' ); + $action_ops['color'] = '#001c64'; parent::__construct( 'paypal', 'PayPal', $action_ops ); } @@ -47,10 +44,9 @@ public function __construct() { */ class FrmDefQuizAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_quiz_icon frm_show_upgrade' ); - $action_ops['plugin'] = 'quizzes'; - $action_ops['color'] = '#f15a24'; - $action_ops['description'] = __( 'Automated grading', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_quiz_icon frm_show_upgrade' ); + $action_ops['plugin'] = 'quizzes'; + $action_ops['color'] = '#f15a24'; parent::__construct( 'quiz', __( 'Scored Quiz', 'formidable' ), $action_ops ); } } @@ -60,10 +56,9 @@ public function __construct() { */ class FrmDefQuizOutcomeAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_quiz_outcome_icon frm_show_upgrade' ); - $action_ops['plugin'] = 'quizzes'; - $action_ops['color'] = '#8d35f5'; - $action_ops['description'] = __( 'Result logic', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_quiz_outcome_icon frm_show_upgrade' ); + $action_ops['plugin'] = 'quizzes'; + $action_ops['color'] = '#8d35f5'; parent::__construct( 'quiz_outcome', __( 'Quiz Outcome', 'formidable' ), $action_ops ); } } @@ -73,9 +68,8 @@ public function __construct() { */ class FrmDefAweberAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_aweber_icon frm_show_upgrade' ); - $action_ops['color'] = '#246BE8'; - $action_ops['description'] = __( 'List triggers', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_aweber_icon frm_show_upgrade' ); + $action_ops['color'] = '#246BE8'; parent::__construct( 'aweber', 'AWeber', $action_ops ); } } @@ -85,9 +79,8 @@ public function __construct() { */ class FrmDefMlcmpAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_mailchimp_icon frm_show_upgrade' ); - $action_ops['color'] = '#000'; - $action_ops['description'] = __( 'Subscription confirmation', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_mailchimp_icon frm_show_upgrade' ); + $action_ops['color'] = '#000'; parent::__construct( 'mailchimp', 'Mailchimp', $action_ops ); } @@ -98,9 +91,8 @@ public function __construct() { */ class FrmDefZapierAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_zapier_icon frm_show_upgrade' ); - $action_ops['color'] = '#FF4A00'; - $action_ops['description'] = __( 'App automation', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_zapier_icon frm_show_upgrade' ); + $action_ops['color'] = '#FF4A00'; parent::__construct( 'zapier', 'Zapier', $action_ops ); } } @@ -110,10 +102,9 @@ public function __construct() { */ class FrmDefN8NAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_n8n_icon frm_show_upgrade' ); - $action_ops['color'] = '#EA4B71'; - $action_ops['description'] = __( 'Workflow automation', 'formidable' ); - $action_ops['is_new'] = true; + $action_ops = FrmFormAction::default_action_opts( 'frm_n8n_icon frm_show_upgrade' ); + $action_ops['color'] = '#EA4B71'; + $action_ops['is_new'] = true; parent::__construct( 'n8n', 'n8n', $action_ops ); } } @@ -123,45 +114,40 @@ public function __construct() { */ class FrmDefTwilioAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_sms_icon frm_show_upgrade' ); - $action_ops['color'] = '#F12E45'; - $action_ops['description'] = __( 'Text notifications', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_sms_icon frm_show_upgrade' ); + $action_ops['color'] = '#F12E45'; parent::__construct( 'twilio', __( 'Twilio SMS', 'formidable' ), $action_ops ); } } class FrmDefActiveCampaignAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_activecampaign_icon frm_show_upgrade' ); - $action_ops['color'] = '#004CFF'; - $action_ops['description'] = __( 'Contact automation', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_activecampaign_icon frm_show_upgrade' ); + $action_ops['color'] = '#004CFF'; parent::__construct( 'activecampaign', 'ActiveCampaign', $action_ops ); } } class FrmDefSalesforceAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_salesforcealt_icon frm_show_upgrade' ); - $action_ops['color'] = '#00A1E0'; - $action_ops['description'] = __( 'Lead automation', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_salesforcealt_icon frm_show_upgrade' ); + $action_ops['color'] = '#00A1E0'; parent::__construct( 'salesforce', 'Salesforce', $action_ops ); } } class FrmDefConstContactAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_constant_contact_icon frm_show_upgrade' ); - $action_ops['color'] = '#1856ED'; - $action_ops['description'] = __( 'Content distribution', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_constant_contact_icon frm_show_upgrade' ); + $action_ops['color'] = '#1856ED'; parent::__construct( 'constantcontact', 'Constant Contact', $action_ops ); } } class FrmDefGetResponseAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_getresponse_icon frm_show_upgrade' ); - $action_ops['color'] = '#00A2FF'; - $action_ops['description'] = __( 'Success notifications', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_getresponse_icon frm_show_upgrade' ); + $action_ops['color'] = '#00A2FF'; parent::__construct( 'getresponse', 'GetResponse', $action_ops ); } } @@ -177,27 +163,24 @@ public function __construct() { $action_ops['message'] .= __( 'The HubSpot integration is not available on your plan. Did you know you can upgrade to unlock more awesome features?', 'formidable' ) . '

      '; } - $link = FrmAppHelper::admin_upgrade_link( 'add-action', 'knowledgebase/hubspot-forms/' ); - $action_ops['message'] .= 'Get Free HubSpot Account'; - $action_ops['description'] = __( 'CRM alerts', 'formidable' ); + $link = FrmAppHelper::admin_upgrade_link( 'add-action', 'knowledgebase/hubspot-forms/' ); + $action_ops['message'] .= 'Get Free HubSpot Account'; parent::__construct( 'hubspot', 'Hubspot', $action_ops ); } } class FrmDefMailpoetAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_mailpoet_icon frm_show_upgrade' ); - $action_ops['color'] = '#FE5301'; - $action_ops['description'] = __( 'Plugin automation', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_mailpoet_icon frm_show_upgrade' ); + $action_ops['color'] = '#FE5301'; parent::__construct( 'mailpoet', 'MailPoet', $action_ops ); } } class FrmDefApiAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_feed_icon frm_show_upgrade' ); - $action_ops['color'] = '#0193d7'; - $action_ops['description'] = __( 'System integration', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_feed_icon frm_show_upgrade' ); + $action_ops['color'] = '#0193d7'; parent::__construct( 'api', __( 'Send API data', 'formidable' ), $action_ops ); } } @@ -207,9 +190,8 @@ public function __construct() { */ class FrmDefGoogleSpreadsheetAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_googlesheets_icon frm_show_upgrade' ); - $action_ops['color'] = '#0F9D58'; - $action_ops['description'] = __( 'Spreadsheet sync', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_googlesheets_icon frm_show_upgrade' ); + $action_ops['color'] = '#0F9D58'; parent::__construct( 'googlespreadsheet', __( 'Google Sheets', 'formidable' ), $action_ops ); } } @@ -227,9 +209,8 @@ public function __construct() { class FrmDefConvertKitAction extends FrmFormAction { public function __construct() { - $action_ops = FrmFormAction::default_action_opts( 'frm_convertkit_icon frm_show_upgrade' ); - $action_ops['color'] = '#1E1E1E'; - $action_ops['description'] = __( 'Broadcast publishing', 'formidable' ); + $action_ops = FrmFormAction::default_action_opts( 'frm_convertkit_icon frm_show_upgrade' ); + $action_ops['color'] = '#1E1E1E'; parent::__construct( 'convertkit', 'Kit', $action_ops ); } } From a77e9673421f7401a66373e9ff9b826e72e00071 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:19:29 +0300 Subject: [PATCH 119/128] style(form-actions): enhance section headers and adjust padding for improved layout and readability --- resources/scss/admin/components/form/_form-actions.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 9b236fe582..f011b764cb 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -81,6 +81,14 @@ .frm_form_action_settings { margin-bottom: 12px; + h2, + h3 { + border-top: 1px solid var(--grey-200); + padding-top: var(--gap-md); + margin-bottom: var(--gap-sm); + margin-top: var(--gap-xs); + } + .widget-top { color: var(--grey-700); background: #fff; From adfc0d0e5afb3f5ef252d6ec382bb74283440cb9 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:19:43 +0300 Subject: [PATCH 120/128] style(form-actions): update background color and adjust padding for improved layout and consistency --- resources/scss/admin/components/form/_form-actions.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index f011b764cb..b31e618d02 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -121,6 +121,7 @@ &.open { .widget-top { + background: var(--grey-25); border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom: none; @@ -141,7 +142,7 @@ .widget-inside { min-height: 25px; - padding: var(--gap-sm); + padding: var(--gap-xs) var(--gap-sm); border-color: var(--grey-300); border-bottom-left-radius: var(--small-radius); border-bottom-right-radius: var(--small-radius); From 681465ce5956ebe8a3a2c8109c35a3fb66c4db4f Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:19:57 +0300 Subject: [PATCH 121/128] style(form-actions): adjust label margin and enhance layout with flexbox for improved spacing and alignment --- .../scss/admin/components/form/_form-actions.scss | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index b31e618d02..9c05c3a20c 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -147,15 +147,18 @@ border-bottom-left-radius: var(--small-radius); border-bottom-right-radius: var(--small-radius); - p > label { - display: flex; - align-items: center; - gap: var(--gap-xs); + p { + margin-bottom: var(--gap-sm); - .frmsvg { + > label { display: flex; + align-items: center; + gap: var(--gap-xs); + + .frmsvg { + display: flex; + } } } } } - From 6dcc1fd7b73c0a9637a0254300e817f93b1f75b8 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:20:05 +0300 Subject: [PATCH 122/128] style(inputs): adjust button padding for improved consistency in form layout --- resources/scss/admin/components/form/_inputs.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/scss/admin/components/form/_inputs.scss b/resources/scss/admin/components/form/_inputs.scss index 7267c28c60..fc9500d49e 100644 --- a/resources/scss/admin/components/form/_inputs.scss +++ b/resources/scss/admin/components/form/_inputs.scss @@ -30,7 +30,7 @@ button.frm_choose_image_box, outline: 0; box-shadow: var(--box-shadow-xs); border-radius: var(--small-radius); - padding: 5px 14px; + padding: 5px 12px; border-color: var(--grey-300); color: var(--grey-800); font-size: var(--text-md); From a4ce7389463d94939ee7e443112c8f87788ca651 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:20:15 +0300 Subject: [PATCH 123/128] style(form-settings): update border color for improved visual consistency in settings form --- resources/scss/admin/components/settings/_form-settings.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/scss/admin/components/settings/_form-settings.scss b/resources/scss/admin/components/settings/_form-settings.scss index 3a19bc39f7..3b0132e5e4 100644 --- a/resources/scss/admin/components/settings/_form-settings.scss +++ b/resources/scss/admin/components/settings/_form-settings.scss @@ -22,7 +22,7 @@ h2.frm-h2, .frm_form_settings h3, .frm_form_settings span.frm_add_logic_link { font-size: var(--text-md); - border-top: 1px solid var(--grey-300); + border-top: 1px solid var(--grey-200); padding-top: var(--gap-sm); margin: var(--gap-sm) 0; font-weight: 400; From 5482309c1bc0e702e204e632283af971f94224c1 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:20:23 +0300 Subject: [PATCH 124/128] style(border): add new border-top utility class for enhanced styling options --- resources/scss/admin/utilities/border/_border.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/scss/admin/utilities/border/_border.scss b/resources/scss/admin/utilities/border/_border.scss index c8aacf7e07..1f76c4f1d6 100644 --- a/resources/scss/admin/utilities/border/_border.scss +++ b/resources/scss/admin/utilities/border/_border.scss @@ -9,3 +9,7 @@ .frm-no-border { border: none !important; } + +.frm-bt-200 { + border-top: 1px solid var(--grey-200); +} From 9826f1cbe4795795b27b480070c204bb53bb0558 Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:25:36 +0300 Subject: [PATCH 125/128] feat(form-actions): add default action descriptions for 'on_submit' and 'email' actions to enhance user guidance --- classes/controllers/FrmFormActionsController.php | 2 ++ classes/models/FrmOnSubmitAction.php | 1 - classes/views/frm-form-actions/email_action.php | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/controllers/FrmFormActionsController.php b/classes/controllers/FrmFormActionsController.php index cb1b81b3b4..7d489dec06 100644 --- a/classes/controllers/FrmFormActionsController.php +++ b/classes/controllers/FrmFormActionsController.php @@ -101,6 +101,8 @@ public static function register_actions() { */ private static function apply_default_action_descriptions() { $descriptions = array( + 'on_submit' => __( 'Success messages', 'formidable' ), + 'email' => __( 'Autoresponder alerts', 'formidable' ), 'wppost' => __( 'Content publishing', 'formidable' ), 'register' => __( 'Account creation', 'formidable' ), 'paypal' => __( 'Payment gateway', 'formidable' ), diff --git a/classes/models/FrmOnSubmitAction.php b/classes/models/FrmOnSubmitAction.php index 6b54aef52a..07374bb489 100644 --- a/classes/models/FrmOnSubmitAction.php +++ b/classes/models/FrmOnSubmitAction.php @@ -27,7 +27,6 @@ public function __construct() { 'priority' => 9, 'color' => '#42C1B2', 'keywords' => __( 'redirect, success, confirmation, submit', 'formidable' ), - 'description' => __( 'Success messages', 'formidable' ), ); $action_ops = apply_filters( 'frm_' . self::$slug . '_control_settings', $action_ops ); diff --git a/classes/views/frm-form-actions/email_action.php b/classes/views/frm-form-actions/email_action.php index c373f3633e..344ca8d4e1 100644 --- a/classes/views/frm-form-actions/email_action.php +++ b/classes/views/frm-form-actions/email_action.php @@ -13,7 +13,6 @@ public function __construct() { 'limit' => 99, 'priority' => 10, 'color' => '#3177C7', - 'description' => __( 'Autoresponder alerts', 'formidable' ), ); $action_ops = apply_filters( 'frm_email_control_settings', $action_ops ); From 77a9f33879741fe7d9fa8e7381a7d914d1559bbd Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 18:31:46 +0300 Subject: [PATCH 126/128] feat(form-actions): add 'payment' action description for transaction alerts to enhance user guidance --- classes/controllers/FrmFormActionsController.php | 1 + stripe/models/FrmTransLiteAction.php | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/classes/controllers/FrmFormActionsController.php b/classes/controllers/FrmFormActionsController.php index 7d489dec06..c71324e17d 100644 --- a/classes/controllers/FrmFormActionsController.php +++ b/classes/controllers/FrmFormActionsController.php @@ -105,6 +105,7 @@ private static function apply_default_action_descriptions() { 'email' => __( 'Autoresponder alerts', 'formidable' ), 'wppost' => __( 'Content publishing', 'formidable' ), 'register' => __( 'Account creation', 'formidable' ), + 'payment' => __( 'Transaction alerts', 'formidable' ), 'paypal' => __( 'Payment gateway', 'formidable' ), 'quiz' => __( 'Automated grading', 'formidable' ), 'quiz_outcome' => __( 'Result logic', 'formidable' ), diff --git a/stripe/models/FrmTransLiteAction.php b/stripe/models/FrmTransLiteAction.php index f44343a90e..95b4f31c4b 100755 --- a/stripe/models/FrmTransLiteAction.php +++ b/stripe/models/FrmTransLiteAction.php @@ -7,15 +7,14 @@ class FrmTransLiteAction extends FrmFormAction { public function __construct() { $action_ops = array( - 'classes' => 'frm_stripe_icon frm_credit_card_alt_icon frmfont', + 'classes' => 'frm_stripe_icon frm_credit_card_alt_icon frmfont', // This is 99 in the Payments submodule but Stripe Lite only supports a single action. - 'limit' => 1, - 'active' => true, + 'limit' => 1, + 'active' => true, // After user registration. - 'priority' => 45, - 'event' => array( 'create' ), - 'color' => '#3fac25', - 'description' => __( 'Transaction alerts', 'formidable' ), + 'priority' => 45, + 'event' => array( 'create' ), + 'color' => '#3fac25', ); $this->FrmFormAction( 'payment', __( 'Collect a Payment', 'formidable' ), $action_ops ); From c233b88bbfa9d6afc3613df644c3d66c0ab9cf9d Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 22:43:54 +0300 Subject: [PATCH 127/128] style(form-actions): adjust margin for 'add/remove' actions to improve spacing in form layout --- resources/scss/admin/components/form/_form-actions.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/scss/admin/components/form/_form-actions.scss b/resources/scss/admin/components/form/_form-actions.scss index 9c05c3a20c..b182c9bb52 100644 --- a/resources/scss/admin/components/form/_form-actions.scss +++ b/resources/scss/admin/components/form/_form-actions.scss @@ -147,6 +147,11 @@ border-bottom-left-radius: var(--small-radius); border-bottom-right-radius: var(--small-radius); + .frm_add_remove[style*="display: block"] + p { + margin-top: 0; + margin-bottom: var(--gap-xs); + } + p { margin-bottom: var(--gap-sm); From 7b46ab75be7436858f225c65f334528ca8c6dabe Mon Sep 17 00:00:00 2001 From: Sherv Date: Tue, 31 Mar 2026 22:44:05 +0300 Subject: [PATCH 128/128] style(panel-settings): update padding and margin for post tax option list to enhance layout consistency --- .../scss/admin/components/panel/_settings-components.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/scss/admin/components/panel/_settings-components.scss b/resources/scss/admin/components/panel/_settings-components.scss index e845687c7b..1390e8ba58 100644 --- a/resources/scss/admin/components/panel/_settings-components.scss +++ b/resources/scss/admin/components/panel/_settings-components.scss @@ -97,9 +97,9 @@ input.frm_enternew { .frm_posttax_opt_list { border: 1px solid var(--grey-300); - padding: var(--gap-md); + padding: var(--gap-md) var(--gap-sm); border-radius: var(--small-radius); - margin: 5px 0 5px var(--gap-md); + margin: var(--gap-sm) 0; } /* Color picker CSS */