Formidable Forms – Form Builder for WordPress - Version 5.0.03

Version Description

  • New: Added an Elementor widget.
  • New: When duplicating fields, most unsaved changes will now duplicate as well.
  • New: Next button label and slider field label previews will now update as soon as the setting is changed in the form builder.
  • New: Slider field previews will now update when the min and max values are updated in the form builder.
  • Fix: The search dropdown was getting cut off on pages with no search results.
  • Fix: When legacy views or visual views are active, both versions were appearing active on the add ons page.
Download this release

Release Info

Developer formidableforms
Plugin Icon 128x128 Formidable Forms – Form Builder for WordPress
Version 5.0.03
Comparing to
See all releases

Code changes from version 5.0.02 to 5.0.03

classes/controllers/FrmAddonsController.php CHANGED
@@ -532,10 +532,17 @@ class FrmAddonsController {
532
  }
533
  }
534
 
535
- $addon['installed'] = self::is_installed( $file_name );
 
 
 
 
 
 
 
536
  $addon['activate_url'] = '';
537
 
538
- if ( $addon['installed'] && ! empty( $activate_url ) && ! is_plugin_active( $file_name ) ) {
539
  $addon['activate_url'] = add_query_arg(
540
  array(
541
  '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $file_name ),
@@ -560,6 +567,24 @@ class FrmAddonsController {
560
  }
561
  }
562
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
563
  /**
564
  * @since 3.04.02
565
  */
532
  }
533
  }
534
 
535
+ $addon['installed'] = self::is_installed( $file_name );
536
+ if ( $addon['installed'] && 'formidable-views/formidable-views.php' === $file_name ) {
537
+ $active_views_version = self::get_active_views_version();
538
+ if ( false !== $active_views_version && $slug !== $active_views_version ) {
539
+ $addon['installed'] = false;
540
+ }
541
+ }
542
+
543
  $addon['activate_url'] = '';
544
 
545
+ if ( $addon['installed'] && ! empty( $activate_url ) && ! self::is_plugin_active( $file_name, $slug ) ) {
546
  $addon['activate_url'] = add_query_arg(
547
  array(
548
  '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $file_name ),
567
  }
568
  }
569
 
570
+ private static function is_plugin_active( $file_name, $slug ) {
571
+ if ( 'formidable-views/formidable-views.php' === $file_name ) {
572
+ return self::get_active_views_version() === $slug;
573
+ }
574
+ return is_plugin_active( $file_name );
575
+ }
576
+
577
+ /**
578
+ * @return string|false either 'visual-views' or 'views', false if one is not found.
579
+ */
580
+ private static function get_active_views_version() {
581
+ if ( ! is_callable( 'FrmViewsAppHelper::plugin_version' ) ) {
582
+ return false;
583
+ }
584
+ $plugin_version = FrmViewsAppHelper::plugin_version();
585
+ return version_compare( $plugin_version, '5.0', '>=' ) ? 'visual-views' : 'views';
586
+ }
587
+
588
  /**
589
  * @since 3.04.02
590
  */
classes/controllers/FrmHooksController.php CHANGED
@@ -90,6 +90,8 @@ class FrmHooksController {
90
  * FrmProContent::replace_single_shortcode() applies this filter like 'frm_keep_' . $field->type . '_value_array'
91
  */
92
  add_filter( 'frm_keep_name_value_array', '__return_true' );
 
 
93
  }
94
 
95
  public static function load_admin_hooks() {
@@ -243,4 +245,18 @@ class FrmHooksController {
243
  // Drop tables when mu site is deleted.
244
  add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
245
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  }
90
  * FrmProContent::replace_single_shortcode() applies this filter like 'frm_keep_' . $field->type . '_value_array'
91
  */
92
  add_filter( 'frm_keep_name_value_array', '__return_true' );
93
+
94
+ add_action( 'elementor/widgets/widgets_registered', 'FrmHooksController::register_elementor_hooks' );
95
  }
96
 
97
  public static function load_admin_hooks() {
245
  // Drop tables when mu site is deleted.
246
  add_filter( 'wpmu_drop_tables', 'FrmAppController::drop_tables' );
247
  }
248
+
249
+ public static function register_elementor_hooks() {
250
+ require_once FrmAppHelper::plugin_path() . '/classes/widgets/FrmElementorWidget.php';
251
+ \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new \FrmElementorWidget() );
252
+
253
+ if ( is_admin() ) {
254
+ add_action(
255
+ 'elementor/editor/after_enqueue_styles',
256
+ function() {
257
+ wp_enqueue_style( 'font_icons', FrmAppHelper::plugin_url() . '/css/font_icons.css', array(), FrmAppHelper::plugin_version() );
258
+ }
259
+ );
260
+ }
261
+ }
262
  }
classes/controllers/FrmSimpleBlocksController.php CHANGED
@@ -19,7 +19,13 @@ class FrmSimpleBlocksController {
19
  true
20
  );
21
 
22
- $icon = str_replace( 'dashicons-', '', apply_filters( 'frm_icon', 'svg' ) );
 
 
 
 
 
 
23
  $block_name = FrmAppHelper::get_menu_name();
24
  if ( $block_name === 'Formidable' ) {
25
  $block_name = 'Formidable Forms';
19
  true
20
  );
21
 
22
+ $icon = apply_filters( 'frm_icon', 'svg' );
23
+ if ( 0 === strpos( $icon, 'data:image/svg+xml;base64,' ) ) {
24
+ $icon = ' ' . FrmAppHelper::get_menu_icon_class();
25
+ } else {
26
+ $icon = str_replace( 'dashicons-', '', $icon );
27
+ }
28
+
29
  $block_name = FrmAppHelper::get_menu_name();
30
  if ( $block_name === 'Formidable' ) {
31
  $block_name = 'Formidable Forms';
classes/helpers/FrmAppHelper.php CHANGED
@@ -11,7 +11,7 @@ class FrmAppHelper {
11
  /**
12
  * @since 2.0
13
  */
14
- public static $plug_version = '5.0.02';
15
 
16
  /**
17
  * @since 1.07.02
@@ -2735,6 +2735,16 @@ class FrmAppHelper {
2735
  include_once self::plugin_path() . '/classes/views/frm-forms/multiselect-accessibility.php';
2736
  }
2737
 
 
 
 
 
 
 
 
 
 
 
2738
  /**
2739
  * @since 4.07
2740
  * @deprecated 4.09.01
11
  /**
12
  * @since 2.0
13
  */
14
+ public static $plug_version = '5.0.03';
15
 
16
  /**
17
  * @since 1.07.02
2735
  include_once self::plugin_path() . '/classes/views/frm-forms/multiselect-accessibility.php';
2736
  }
2737
 
2738
+ public static function get_menu_icon_class() {
2739
+ if ( is_callable( 'FrmProAppHelper::get_settings' ) ) {
2740
+ $settings = FrmProAppHelper::get_settings();
2741
+ if ( is_object( $settings ) && ! empty( $settings->menu_icon ) ) {
2742
+ return $settings->menu_icon;
2743
+ }
2744
+ }
2745
+ return 'frmfont frm_logo_icon';
2746
+ }
2747
+
2748
  /**
2749
  * @since 4.07
2750
  * @deprecated 4.09.01
classes/views/frm-fields/back-end/number-range.php CHANGED
@@ -9,10 +9,10 @@ if ( ! defined( 'ABSPATH' ) ) {
9
  </label>
10
  <span class="frm_grid_container">
11
  <span class="frm5 frm_form_field frm-range-min">
12
- <input type="text" name="field_options[minnum_<?php echo absint( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['minnum'] ); ?>" />
13
  </span>
14
  <span class="frm5 frm_last frm_form_field">
15
- <input type="text" name="field_options[maxnum_<?php echo absint( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['maxnum'] ); ?>" />
16
  </span>
17
  </span>
18
  </p>
9
  </label>
10
  <span class="frm_grid_container">
11
  <span class="frm5 frm_form_field frm-range-min">
12
+ <input type="text" name="field_options[minnum_<?php echo absint( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['minnum'] ); ?>" data-changeme="field_<?php echo esc_attr( $field['field_key'] ); ?>" data-changeatt="min" />
13
  </span>
14
  <span class="frm5 frm_last frm_form_field">
15
+ <input type="text" name="field_options[maxnum_<?php echo absint( $field['id'] ); ?>]" value="<?php echo esc_attr( $field['maxnum'] ); ?>" data-changeme="field_<?php echo esc_attr( $field['field_key'] ); ?>" data-changeatt="max" />
16
  </span>
17
  </span>
18
  </p>
classes/views/frm-settings/recaptcha.php CHANGED
@@ -19,18 +19,14 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  <label class="frm_help" for="frm_pubkey" title="<?php esc_attr_e( 'reCAPTCHA is a free, accessible CAPTCHA service that helps to digitize books while blocking spam on your blog. reCAPTCHA asks commenters to retype two words scanned from a book to prove that they are a human. This verifies that they are not a spambot.', 'formidable' ); ?>">
20
  <?php esc_html_e( 'Site Key', 'formidable' ); ?>
21
  </label>
22
- <input type="text" name="frm_pubkey" id="frm_pubkey" size="42"
23
- value="<?php echo esc_attr( $frm_settings->pubkey ); ?>"
24
- placeholder="<?php esc_attr_e( 'Optional', 'formidable' ); ?>"/>
25
  </p>
26
 
27
  <p class="frm6 frm_form_field">
28
  <label for="frm_privkey">
29
  <?php esc_html_e( 'Secret Key', 'formidable' ); ?>
30
  </label>
31
- <input type="text" name="frm_privkey" id="frm_privkey" size="42"
32
- value="<?php echo esc_attr( $frm_settings->privkey ); ?>"
33
- placeholder="<?php esc_attr_e( 'Optional', 'formidable' ); ?>"/>
34
  </p>
35
 
36
  <p class="frm6 frm_form_field">
19
  <label class="frm_help" for="frm_pubkey" title="<?php esc_attr_e( 'reCAPTCHA is a free, accessible CAPTCHA service that helps to digitize books while blocking spam on your blog. reCAPTCHA asks commenters to retype two words scanned from a book to prove that they are a human. This verifies that they are not a spambot.', 'formidable' ); ?>">
20
  <?php esc_html_e( 'Site Key', 'formidable' ); ?>
21
  </label>
22
+ <input type="text" name="frm_pubkey" id="frm_pubkey" size="42" value="<?php echo esc_attr( $frm_settings->pubkey ); ?>" />
 
 
23
  </p>
24
 
25
  <p class="frm6 frm_form_field">
26
  <label for="frm_privkey">
27
  <?php esc_html_e( 'Secret Key', 'formidable' ); ?>
28
  </label>
29
+ <input type="text" name="frm_privkey" id="frm_privkey" size="42" value="<?php echo esc_attr( $frm_settings->privkey ); ?>" />
 
 
30
  </p>
31
 
32
  <p class="frm6 frm_form_field">
classes/widgets/FrmElementorWidget.php ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ die( 'You are not allowed to call this page directly.' );
4
+ }
5
+
6
+ if ( class_exists( '\Elementor\Widget_Base' ) ) {
7
+ class FrmElementorWidget extends \Elementor\Widget_Base {
8
+
9
+ public function get_name() {
10
+ return 'formidable';
11
+ }
12
+
13
+ public function get_title() {
14
+ return FrmAppHelper::get_menu_name() . ' ' . __( 'Forms', 'formidable' );
15
+ }
16
+
17
+ public function get_icon() {
18
+ return FrmAppHelper::get_menu_icon_class();
19
+ }
20
+
21
+ public function get_categories() {
22
+ return array( 'general' );
23
+ }
24
+
25
+ protected function _register_controls() {
26
+ $this->start_controls_section(
27
+ 'section_form_dropdown',
28
+ array(
29
+ 'label' => __( 'Select Form', 'formidable' ),
30
+ 'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
31
+ )
32
+ );
33
+
34
+ $this->add_control(
35
+ 'form_id',
36
+ array(
37
+ 'label' => __( 'Form', 'formidable' ),
38
+ 'type' => \Elementor\Controls_Manager::SELECT2,
39
+ 'options' => $this->get_form_options(),
40
+ )
41
+ );
42
+
43
+ $this->end_controls_section();
44
+
45
+ $this->start_controls_section(
46
+ 'section_options',
47
+ array(
48
+ 'label' => __( 'Options', 'formidable' ),
49
+ 'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
50
+ )
51
+ );
52
+
53
+ $this->add_basic_switcher_control( 'title', __( 'Show Form Title', 'formidable' ) );
54
+ $this->add_basic_switcher_control( 'description', __( 'Show Form Description', 'formidable' ) );
55
+ $this->add_basic_switcher_control( 'minimize', __( 'Minimize HTML', 'formidable' ) );
56
+
57
+ $this->end_controls_section();
58
+ }
59
+
60
+ private function add_basic_switcher_control( $key, $title ) {
61
+ $this->add_control(
62
+ $key,
63
+ array(
64
+ 'label' => $title,
65
+ 'type' => \Elementor\Controls_Manager::SWITCHER,
66
+ )
67
+ );
68
+ }
69
+
70
+ private function get_form_options() {
71
+ $query = array();
72
+ $where = apply_filters( 'frm_forms_dropdown', $query, 'form' );
73
+ $forms = FrmForm::get_published_forms( $where, 999, 'exclude' );
74
+ $options = array( '' => '' );
75
+
76
+ foreach ( $forms as $form ) {
77
+ $form_title = '' === $form->name ? __( '(no title)', 'formidable' ) : FrmAppHelper::truncate( $form->name, 50 );
78
+ $options[ $form->id ] = esc_html( $form_title );
79
+ }
80
+
81
+ return $options;
82
+ }
83
+
84
+ protected function render() {
85
+ $settings = $this->get_settings_for_display();
86
+ $form_id = isset( $settings['form_id'] ) ? absint( $settings['form_id'] ) : 0;
87
+ $title = isset( $settings['title'] ) && 'yes' === $settings['title'];
88
+ $description = isset( $settings['description'] ) && 'yes' === $settings['description'];
89
+ $minimize = isset( $settings['minimize'] ) && 'yes' === $settings['minimize'];
90
+
91
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
92
+ echo FrmFormsController::get_form_shortcode(
93
+ array(
94
+ 'id' => $form_id,
95
+ 'title' => $title,
96
+ 'description' => $description,
97
+ 'minimize' => $minimize,
98
+ )
99
+ );
100
+ }
101
+ }
102
+ }
css/frm_admin.css CHANGED
@@ -5344,6 +5344,10 @@ span.howto {
5344
  line-height: 200%;
5345
  }
5346
 
 
 
 
 
5347
  /* Reports Page */
5348
  #form_reports_page img.frm_no_reports {
5349
  max-width: 100%;
5344
  line-height: 200%;
5345
  }
5346
 
5347
+ #form_entries_page #the-list .no-items {
5348
+ height: 240px; /* Equals to the max height of search dropdown */
5349
+ }
5350
+
5351
  /* Reports Page */
5352
  #form_reports_page img.frm_no_reports {
5353
  max-width: 100%;
formidable.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
- Version: 5.0.02
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
2
  /*
3
  Plugin Name: Formidable Forms
4
  Description: Quickly and easily create drag-and-drop forms
5
+ Version: 5.0.03
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
js/formidable_admin.js CHANGED
@@ -829,6 +829,13 @@ function frmAdminBuildJS() {
829
  // A new field was dragged into the form
830
  insertNewFieldByDragging( this, ui.item, opts );
831
  }
 
 
 
 
 
 
 
832
  }
833
  },
834
  change: function( event, ui ) {
@@ -1742,7 +1749,13 @@ function frmAdminBuildJS() {
1742
  if ( null !== fieldOrder ) {
1743
  newRow.lastElementChild.setAttribute( 'frm-field-order', fieldOrder );
1744
  }
1745
- jQuery( newRow ).trigger( 'frm_added_duplicated_field_to_row' );
 
 
 
 
 
 
1746
  afterAddField( msg, false );
1747
  return;
1748
  }
@@ -1757,11 +1770,97 @@ function frmAdminBuildJS() {
1757
 
1758
  updateFieldOrder();
1759
  afterAddField( msg, false );
 
1760
  }
1761
  });
1762
  return false;
1763
  }
1764
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1765
  function closeOpenFieldDropdowns() {
1766
  var openSettings = document.querySelector( '.frm-field-settings-open' );
1767
  if ( null !== openSettings ) {
@@ -2450,6 +2549,8 @@ function frmAdminBuildJS() {
2450
  }
2451
  } else if ( att === 'class' ) {
2452
  changeFieldClass( changes, this );
 
 
2453
  } else {
2454
  changes.setAttribute( att, newValue );
2455
  }
@@ -2459,9 +2560,47 @@ function frmAdminBuildJS() {
2459
  }
2460
  } else {
2461
  changes.innerHTML = newValue;
 
 
 
2462
  }
2463
  }
2464
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2465
  function toggleInvalidMsg() {
2466
  /*jshint validthis:true */
2467
  var typeDropdown, fieldType,
@@ -2986,7 +3125,7 @@ function frmAdminBuildJS() {
2986
  }
2987
 
2988
  function duplicateFieldGroup() {
2989
- var hoverTarget, newRowId, $newRow, $fields, syncDetails, expectedLength, duplicatedCount, injectedCloneOptions;
2990
 
2991
  hoverTarget = document.querySelector( '.frm-field-group-hover-target' );
2992
 
@@ -3007,12 +3146,15 @@ function frmAdminBuildJS() {
3007
 
3008
  expectedLength = $fields.length;
3009
  duplicatedCount = 0;
 
3010
 
3011
  $newRow.on(
3012
  'frm_added_duplicated_field_to_row',
3013
- function() {
3014
  var $duplicatedFields, index;
3015
 
 
 
3016
  if ( expectedLength > ++duplicatedCount ) {
3017
  return;
3018
  }
@@ -3026,14 +3168,18 @@ function frmAdminBuildJS() {
3026
  );
3027
 
3028
  for ( index = 0; index < expectedLength; ++index ) {
3029
- $newRowUl.append(
3030
- $newRowUl.children( 'li.form-field[frm-field-order="' + index + '"]' )
3031
- );
3032
  }
3033
 
3034
  syncLayoutClasses( $duplicatedFields.first(), syncDetails );
3035
  $newRow.removeClass( 'frm_hidden' );
3036
  updateFieldOrder();
 
 
 
 
 
 
3037
  }
3038
  );
3039
 
829
  // A new field was dragged into the form
830
  insertNewFieldByDragging( this, ui.item, opts );
831
  }
832
+ } else if ( ui.item.hasClass( 'frm_field_box' ) ) {
833
+ // dragging a group.
834
+ getFieldsInRow( ui.item.children( 'ul' ) ).each(
835
+ function() {
836
+ updateFieldAfterMovingBetweenSections( jQuery( this ) );
837
+ }
838
+ );
839
  }
840
  },
841
  change: function( event, ui ) {
1749
  if ( null !== fieldOrder ) {
1750
  newRow.lastElementChild.setAttribute( 'frm-field-order', fieldOrder );
1751
  }
1752
+ jQuery( newRow ).trigger(
1753
+ 'frm_added_duplicated_field_to_row',
1754
+ {
1755
+ duplicatedFieldHtml: msg,
1756
+ originalFieldId: fieldId
1757
+ }
1758
+ );
1759
  afterAddField( msg, false );
1760
  return;
1761
  }
1770
 
1771
  updateFieldOrder();
1772
  afterAddField( msg, false );
1773
+ maybeDuplicateUnsavedSettings( fieldId, msg );
1774
  }
1775
  });
1776
  return false;
1777
  }
1778
 
1779
+ function maybeDuplicateUnsavedSettings( originalFieldId, newFieldHtml ) {
1780
+ var originalSettings, newFieldId, copySettings, fieldOptionKeys, originalDefault, copyDefault;
1781
+
1782
+ originalSettings = document.getElementById( 'frm-single-settings-' + originalFieldId );
1783
+ if ( null === originalSettings ) {
1784
+ return;
1785
+ }
1786
+
1787
+ newFieldId = jQuery( newFieldHtml ).attr( 'data-fid' );
1788
+ if ( 'undefined' === typeof newFieldId ) {
1789
+ return;
1790
+ }
1791
+
1792
+ copySettings = document.getElementById( 'frm-single-settings-' + newFieldId );
1793
+ if ( null === copySettings ) {
1794
+ return;
1795
+ }
1796
+
1797
+ fieldOptionKeys = [
1798
+ 'name', 'required', 'unique', 'read_only', 'placeholder', 'description', 'size', 'max', 'format', 'prepend', 'append', 'separate_value'
1799
+ ];
1800
+
1801
+ originalSettings.querySelectorAll( 'input[name^="field_options["], textarea[name^="field_options["]' ).forEach(
1802
+ function( originalSetting ) {
1803
+ var key, tagType, copySetting;
1804
+
1805
+ key = getKeyFromSettingInput( originalSetting );
1806
+
1807
+ if ( 'options' === key ) {
1808
+ copyOption( originalSetting, copySettings, originalFieldId, newFieldId );
1809
+ return;
1810
+ }
1811
+
1812
+ if ( -1 === fieldOptionKeys.indexOf( key ) ) {
1813
+ return;
1814
+ }
1815
+
1816
+ tagType = originalSetting.matches( 'input' ) ? 'input' : 'textarea';
1817
+ copySetting = copySettings.querySelector( tagType + '[name="field_options[' + key + '_' + newFieldId + ']"]' );
1818
+ if ( null === copySetting ) {
1819
+ return;
1820
+ }
1821
+
1822
+ if ( 'checkbox' === originalSetting.type ) {
1823
+ if ( originalSetting.checked !== copySetting.checked ) {
1824
+ jQuery( copySetting ).trigger( 'click' );
1825
+ }
1826
+ } else if ( 'text' === originalSetting.type || 'textarea' === tagType ) {
1827
+ if ( originalSetting.value !== copySetting.value ) {
1828
+ copySetting.value = originalSetting.value;
1829
+ jQuery( copySetting ).trigger( 'change' );
1830
+ }
1831
+ }
1832
+ }
1833
+ );
1834
+
1835
+ originalDefault = originalSettings.querySelector( 'input[name="default_value_' + originalFieldId + '"]' );
1836
+ if ( null !== originalDefault ) {
1837
+ copyDefault = copySettings.querySelector( 'input[name="default_value_' + newFieldId + '"]' );
1838
+ if ( null !== copyDefault && originalDefault.value !== copyDefault.value ) {
1839
+ copyDefault.value = originalDefault.value;
1840
+ jQuery( copyDefault ).trigger( 'change' );
1841
+ }
1842
+ }
1843
+ }
1844
+
1845
+ function copyOption( originalSetting, copySettings, originalFieldId, newFieldId ) {
1846
+ var remainingKeyDetails, copyKey, copySetting;
1847
+ remainingKeyDetails = originalSetting.name.substr( 23 + ( '' + originalFieldId ).length );
1848
+ copyKey = 'field_options[options_' + newFieldId + ']' + remainingKeyDetails;
1849
+ copySetting = copySettings.querySelector( 'input[name="' + copyKey + '"]' );
1850
+ if ( null !== copySetting && copySetting.value !== originalSetting.value ) {
1851
+ copySetting.value = originalSetting.value;
1852
+ jQuery( copySetting ).trigger( 'change' );
1853
+ }
1854
+ }
1855
+
1856
+ function getKeyFromSettingInput( input ) {
1857
+ var nameWithoutPrefix, nameSplit;
1858
+ nameWithoutPrefix = input.name.substr( 14 );
1859
+ nameSplit = nameWithoutPrefix.split( '_' );
1860
+ nameSplit.pop();
1861
+ return nameSplit.join( '_' );
1862
+ }
1863
+
1864
  function closeOpenFieldDropdowns() {
1865
  var openSettings = document.querySelector( '.frm-field-settings-open' );
1866
  if ( null !== openSettings ) {
2549
  }
2550
  } else if ( att === 'class' ) {
2551
  changeFieldClass( changes, this );
2552
+ } else if ( isSliderField( changes ) ) {
2553
+ updateSliderFieldPreview( changes, att, newValue );
2554
  } else {
2555
  changes.setAttribute( att, newValue );
2556
  }
2560
  }
2561
  } else {
2562
  changes.innerHTML = newValue;
2563
+ if ( changes.classList.contains( 'frm_primary_label' ) && 'break' === changes.nextElementSibling.getAttribute( 'data-ftype' ) ) {
2564
+ changes.nextElementSibling.querySelector( '.frm_button_submit' ).textContent = newValue;
2565
+ }
2566
  }
2567
  }
2568
 
2569
+ function updateSliderFieldPreview( field, att, newValue ) {
2570
+ if ( 'value' === att ) {
2571
+ if ( '' === newValue ) {
2572
+ newValue = getSliderMidpoint( field );
2573
+ }
2574
+ field.value = newValue;
2575
+ } else {
2576
+ field.setAttribute( att, newValue );
2577
+ }
2578
+
2579
+ if ( -1 === [ 'value', 'min', 'max' ].indexOf( att ) ) {
2580
+ return;
2581
+ }
2582
+
2583
+ if ( ( 'max' === att || 'min' === att ) && '' === getSliderDefaultValueInput( field.id ) ) {
2584
+ field.value = getSliderMidpoint( field );
2585
+ }
2586
+
2587
+ field.parentNode.querySelector( '.frm_range_value' ).textContent = field.value;
2588
+ }
2589
+
2590
+ function getSliderDefaultValueInput( previewInputId ) {
2591
+ return document.querySelector( 'input[data-changeme="' + previewInputId + '"][data-changeatt="value"]' ).value;
2592
+ }
2593
+
2594
+ function getSliderMidpoint( sliderInput ) {
2595
+ const max = parseFloat( sliderInput.getAttribute( 'max' ) );
2596
+ const min = parseFloat( sliderInput.getAttribute( 'min' ) );
2597
+ return ( max - min ) / 2 + min;
2598
+ }
2599
+
2600
+ function isSliderField( previewInput ) {
2601
+ return 'range' === previewInput.type && previewInput.parentNode.classList.contains( 'frm_range_container' );
2602
+ }
2603
+
2604
  function toggleInvalidMsg() {
2605
  /*jshint validthis:true */
2606
  var typeDropdown, fieldType,
3125
  }
3126
 
3127
  function duplicateFieldGroup() {
3128
+ var hoverTarget, newRowId, $newRow, $fields, syncDetails, expectedLength, duplicatedCount, originalFieldIdByDuplicatedFieldId, injectedCloneOptions;
3129
 
3130
  hoverTarget = document.querySelector( '.frm-field-group-hover-target' );
3131
 
3146
 
3147
  expectedLength = $fields.length;
3148
  duplicatedCount = 0;
3149
+ originalFieldIdByDuplicatedFieldId = {};
3150
 
3151
  $newRow.on(
3152
  'frm_added_duplicated_field_to_row',
3153
+ function( event, args ) {
3154
  var $duplicatedFields, index;
3155
 
3156
+ originalFieldIdByDuplicatedFieldId[ jQuery( args.duplicatedFieldHtml ).attr( 'data-fid' ) ] = args.originalFieldId;
3157
+
3158
  if ( expectedLength > ++duplicatedCount ) {
3159
  return;
3160
  }
3168
  );
3169
 
3170
  for ( index = 0; index < expectedLength; ++index ) {
3171
+ $newRowUl.append( $newRowUl.children( 'li.form-field[frm-field-order="' + index + '"]' ) );
 
 
3172
  }
3173
 
3174
  syncLayoutClasses( $duplicatedFields.first(), syncDetails );
3175
  $newRow.removeClass( 'frm_hidden' );
3176
  updateFieldOrder();
3177
+
3178
+ getFieldsInRow( $newRowUl ).each(
3179
+ function() {
3180
+ maybeDuplicateUnsavedSettings( originalFieldIdByDuplicatedFieldId[ this.getAttribute( 'data-fid' ) ], jQuery( this ).prop( 'outerHTML' ) );
3181
+ }
3182
+ );
3183
  }
3184
  );
3185
 
languages/formidable.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Formidable Forms plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Formidable Forms 5.0.02\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2021-08-25T17:01:50+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: formidable\n"
@@ -73,6 +73,7 @@ msgid "forms"
73
  msgstr ""
74
 
75
  #: js/src/form/inspector.js:43
 
76
  #: languages/formidable-js-strings.php:39
77
  msgid "Select Form"
78
  msgstr ""
@@ -84,21 +85,25 @@ msgstr ""
84
 
85
  #: js/src/form/inspector.js:62
86
  #: classes/views/frm-forms/shortcode_opts.php:16
 
87
  #: languages/formidable-js-strings.php:45
88
  msgid "Options"
89
  msgstr ""
90
 
91
  #: js/src/form/inspector.js:66
 
92
  #: languages/formidable-js-strings.php:48
93
  msgid "Show Form Title"
94
  msgstr ""
95
 
96
  #: js/src/form/inspector.js:73
 
97
  #: languages/formidable-js-strings.php:51
98
  msgid "Show Form Description"
99
  msgstr ""
100
 
101
  #: js/src/form/inspector.js:80
 
102
  #: languages/formidable-js-strings.php:54
103
  msgid "Minimize HTML"
104
  msgstr ""
@@ -142,40 +147,40 @@ msgstr ""
142
  msgid "There are no plugins on your site that require a license"
143
  msgstr ""
144
 
145
- #: classes/controllers/FrmAddonsController.php:590
146
  msgid "Installed"
147
  msgstr ""
148
 
149
- #: classes/controllers/FrmAddonsController.php:595
150
  #: classes/helpers/FrmAppHelper.php:2548
151
  msgid "Active"
152
  msgstr ""
153
 
154
- #: classes/controllers/FrmAddonsController.php:600
155
  msgid "Not Installed"
156
  msgstr ""
157
 
158
- #: classes/controllers/FrmAddonsController.php:887
159
  msgid "Sorry, your site requires FTP authentication. Please download plugins from FormidableForms.com and install them manually."
160
  msgstr ""
161
 
162
- #: classes/controllers/FrmAddonsController.php:943
163
  msgid "Your plugin has been activated. Please reload the page to see more options."
164
  msgstr ""
165
 
166
- #: classes/controllers/FrmAddonsController.php:1042
167
  msgid "Could not install an upgrade. Please download from formidableforms.com and install manually."
168
  msgstr ""
169
 
170
- #: classes/controllers/FrmAddonsController.php:1127
171
- #: classes/controllers/FrmAddonsController.php:1128
172
  #: classes/controllers/FrmWelcomeController.php:141
173
  #: classes/views/frm-forms/new-form-overlay.php:112
174
  #: classes/views/shared/reports-info.php:24
175
  msgid "Upgrade Now"
176
  msgstr ""
177
 
178
- #: classes/controllers/FrmAddonsController.php:1142
179
  msgid "Your plugin has been installed. Please reload the page to see more options."
180
  msgstr ""
181
 
@@ -228,6 +233,7 @@ msgstr ""
228
  #: classes/controllers/FrmEntriesController.php:84
229
  #: classes/controllers/FrmFormsController.php:673
230
  #: classes/views/xml/import_form.php:152
 
231
  #: classes/widgets/FrmShowForm.php:59
232
  msgid "Form"
233
  msgstr ""
@@ -320,6 +326,7 @@ msgstr ""
320
  #: classes/controllers/FrmStylesController.php:51
321
  #: classes/controllers/FrmXMLController.php:258
322
  #: classes/views/frm-forms/list.php:10
 
323
  msgid "Forms"
324
  msgstr ""
325
 
@@ -634,6 +641,7 @@ msgstr ""
634
  #: classes/views/frm-forms/create-template-from-an-existing-form.php:25
635
  #: classes/views/styles/manage.php:59
636
  #: classes/views/xml/import_form.php:133
 
637
  msgid "(no title)"
638
  msgstr ""
639
 
@@ -1215,7 +1223,7 @@ msgstr ""
1215
  #: classes/views/frm-forms/new-form-overlay.php:139
1216
  #: classes/views/shared/admin-header.php:63
1217
  #: classes/views/shared/confirm-overlay.php:19
1218
- #: js/formidable_admin.js:3435
1219
  msgid "Cancel"
1220
  msgstr ""
1221
 
@@ -1242,7 +1250,7 @@ msgstr ""
1242
 
1243
  #: classes/helpers/FrmAppHelper.php:2514
1244
  #: classes/helpers/FrmListHelper.php:405
1245
- #: js/formidable_admin.js:3817
1246
  msgid "Heads up"
1247
  msgstr ""
1248
 
@@ -1624,11 +1632,11 @@ msgstr ""
1624
  msgid "Vietnamese"
1625
  msgstr ""
1626
 
1627
- #: classes/helpers/FrmAppHelper.php:2756
1628
  msgid "Your account has expired"
1629
  msgstr ""
1630
 
1631
- #: classes/helpers/FrmAppHelper.php:2759
1632
  msgid "Renew Now"
1633
  msgstr ""
1634
 
@@ -1750,7 +1758,7 @@ msgstr ""
1750
  #: classes/helpers/FrmFormsHelper.php:1134
1751
  #: classes/helpers/FrmFormsListHelper.php:133
1752
  #: classes/views/frm-form-actions/form_action.php:25
1753
- #: js/formidable_admin.js:1898
1754
  msgid "Delete"
1755
  msgstr ""
1756
 
@@ -4722,7 +4730,7 @@ msgid "Conditional emails"
4722
  msgstr ""
4723
 
4724
  #: classes/views/frm-form-actions/form_action.php:21
4725
- #: js/formidable_admin.js:1904
4726
  msgid "Duplicate"
4727
  msgstr ""
4728
 
@@ -4847,7 +4855,7 @@ msgid "Move Field"
4847
  msgstr ""
4848
 
4849
  #: classes/views/frm-forms/add_field.php:29
4850
- #: js/formidable_admin.js:1185
4851
  msgid "More Options"
4852
  msgstr ""
4853
 
@@ -5501,36 +5509,31 @@ msgstr ""
5501
  msgid "Site Key"
5502
  msgstr ""
5503
 
5504
- #: classes/views/frm-settings/recaptcha.php:24
5505
- #: classes/views/frm-settings/recaptcha.php:33
5506
- msgid "Optional"
5507
- msgstr ""
5508
-
5509
- #: classes/views/frm-settings/recaptcha.php:29
5510
  msgid "Secret Key"
5511
  msgstr ""
5512
 
5513
- #: classes/views/frm-settings/recaptcha.php:38
5514
  msgid "reCAPTCHA Type"
5515
  msgstr ""
5516
 
5517
- #: classes/views/frm-settings/recaptcha.php:42
5518
  msgid "Checkbox (V2)"
5519
  msgstr ""
5520
 
5521
- #: classes/views/frm-settings/recaptcha.php:45
5522
  msgid "Invisible"
5523
  msgstr ""
5524
 
5525
- #: classes/views/frm-settings/recaptcha.php:52
5526
  msgid "reCAPTCHA Language"
5527
  msgstr ""
5528
 
5529
- #: classes/views/frm-settings/recaptcha.php:56
5530
  msgid "Browser Default"
5531
  msgstr ""
5532
 
5533
- #: classes/views/frm-settings/recaptcha.php:70
5534
  msgid "Allow multiple reCaptchas to be used on a single page"
5535
  msgstr ""
5536
 
@@ -6217,47 +6220,47 @@ msgstr ""
6217
  msgid "Error"
6218
  msgstr ""
6219
 
6220
- #: js/formidable_admin.js:1874
6221
  msgid "Field settings"
6222
  msgstr ""
6223
 
6224
- #: js/formidable_admin.js:1898
6225
  msgid "Delete Group"
6226
  msgstr ""
6227
 
6228
- #: js/formidable_admin.js:1904
6229
  msgid "Duplicate Group"
6230
  msgstr ""
6231
 
6232
- #: js/formidable_admin.js:3148
6233
  msgid "Custom layout"
6234
  msgstr ""
6235
 
6236
- #: js/formidable_admin.js:3162
6237
  msgid "Break into rows"
6238
  msgstr ""
6239
 
6240
- #: js/formidable_admin.js:3171
6241
  msgid "Row Layout"
6242
  msgstr ""
6243
 
6244
- #: js/formidable_admin.js:3420
6245
  msgid "Enter number of columns for each field"
6246
  msgstr ""
6247
 
6248
- #: js/formidable_admin.js:3424
6249
  msgid "Layouts are based on a 12-column grid system"
6250
  msgstr ""
6251
 
6252
- #: js/formidable_admin.js:3440
6253
  msgid "Save"
6254
  msgstr ""
6255
 
6256
- #: js/formidable_admin.js:3731
6257
  msgid "Merge into row"
6258
  msgstr ""
6259
 
6260
  #. translators: %1$s: Number of fields that are selected to be deleted.
6261
- #: js/formidable_admin.js:3819
6262
  msgid "Are you sure you want to delete these %1$s selected fields?"
6263
  msgstr ""
2
  # This file is distributed under the same license as the Formidable Forms plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Formidable Forms 5.0.03\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/formidable\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-09-08T17:52:01+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: formidable\n"
73
  msgstr ""
74
 
75
  #: js/src/form/inspector.js:43
76
+ #: classes/widgets/FrmElementorWidget.php:29
77
  #: languages/formidable-js-strings.php:39
78
  msgid "Select Form"
79
  msgstr ""
85
 
86
  #: js/src/form/inspector.js:62
87
  #: classes/views/frm-forms/shortcode_opts.php:16
88
+ #: classes/widgets/FrmElementorWidget.php:48
89
  #: languages/formidable-js-strings.php:45
90
  msgid "Options"
91
  msgstr ""
92
 
93
  #: js/src/form/inspector.js:66
94
+ #: classes/widgets/FrmElementorWidget.php:53
95
  #: languages/formidable-js-strings.php:48
96
  msgid "Show Form Title"
97
  msgstr ""
98
 
99
  #: js/src/form/inspector.js:73
100
+ #: classes/widgets/FrmElementorWidget.php:54
101
  #: languages/formidable-js-strings.php:51
102
  msgid "Show Form Description"
103
  msgstr ""
104
 
105
  #: js/src/form/inspector.js:80
106
+ #: classes/widgets/FrmElementorWidget.php:55
107
  #: languages/formidable-js-strings.php:54
108
  msgid "Minimize HTML"
109
  msgstr ""
147
  msgid "There are no plugins on your site that require a license"
148
  msgstr ""
149
 
150
+ #: classes/controllers/FrmAddonsController.php:615
151
  msgid "Installed"
152
  msgstr ""
153
 
154
+ #: classes/controllers/FrmAddonsController.php:620
155
  #: classes/helpers/FrmAppHelper.php:2548
156
  msgid "Active"
157
  msgstr ""
158
 
159
+ #: classes/controllers/FrmAddonsController.php:625
160
  msgid "Not Installed"
161
  msgstr ""
162
 
163
+ #: classes/controllers/FrmAddonsController.php:912
164
  msgid "Sorry, your site requires FTP authentication. Please download plugins from FormidableForms.com and install them manually."
165
  msgstr ""
166
 
167
+ #: classes/controllers/FrmAddonsController.php:968
168
  msgid "Your plugin has been activated. Please reload the page to see more options."
169
  msgstr ""
170
 
171
+ #: classes/controllers/FrmAddonsController.php:1067
172
  msgid "Could not install an upgrade. Please download from formidableforms.com and install manually."
173
  msgstr ""
174
 
175
+ #: classes/controllers/FrmAddonsController.php:1152
176
+ #: classes/controllers/FrmAddonsController.php:1153
177
  #: classes/controllers/FrmWelcomeController.php:141
178
  #: classes/views/frm-forms/new-form-overlay.php:112
179
  #: classes/views/shared/reports-info.php:24
180
  msgid "Upgrade Now"
181
  msgstr ""
182
 
183
+ #: classes/controllers/FrmAddonsController.php:1167
184
  msgid "Your plugin has been installed. Please reload the page to see more options."
185
  msgstr ""
186
 
233
  #: classes/controllers/FrmEntriesController.php:84
234
  #: classes/controllers/FrmFormsController.php:673
235
  #: classes/views/xml/import_form.php:152
236
+ #: classes/widgets/FrmElementorWidget.php:37
237
  #: classes/widgets/FrmShowForm.php:59
238
  msgid "Form"
239
  msgstr ""
326
  #: classes/controllers/FrmStylesController.php:51
327
  #: classes/controllers/FrmXMLController.php:258
328
  #: classes/views/frm-forms/list.php:10
329
+ #: classes/widgets/FrmElementorWidget.php:14
330
  msgid "Forms"
331
  msgstr ""
332
 
641
  #: classes/views/frm-forms/create-template-from-an-existing-form.php:25
642
  #: classes/views/styles/manage.php:59
643
  #: classes/views/xml/import_form.php:133
644
+ #: classes/widgets/FrmElementorWidget.php:77
645
  msgid "(no title)"
646
  msgstr ""
647
 
1223
  #: classes/views/frm-forms/new-form-overlay.php:139
1224
  #: classes/views/shared/admin-header.php:63
1225
  #: classes/views/shared/confirm-overlay.php:19
1226
+ #: js/formidable_admin.js:3581
1227
  msgid "Cancel"
1228
  msgstr ""
1229
 
1250
 
1251
  #: classes/helpers/FrmAppHelper.php:2514
1252
  #: classes/helpers/FrmListHelper.php:405
1253
+ #: js/formidable_admin.js:3963
1254
  msgid "Heads up"
1255
  msgstr ""
1256
 
1632
  msgid "Vietnamese"
1633
  msgstr ""
1634
 
1635
+ #: classes/helpers/FrmAppHelper.php:2766
1636
  msgid "Your account has expired"
1637
  msgstr ""
1638
 
1639
+ #: classes/helpers/FrmAppHelper.php:2769
1640
  msgid "Renew Now"
1641
  msgstr ""
1642
 
1758
  #: classes/helpers/FrmFormsHelper.php:1134
1759
  #: classes/helpers/FrmFormsListHelper.php:133
1760
  #: classes/views/frm-form-actions/form_action.php:25
1761
+ #: js/formidable_admin.js:1997
1762
  msgid "Delete"
1763
  msgstr ""
1764
 
4730
  msgstr ""
4731
 
4732
  #: classes/views/frm-form-actions/form_action.php:21
4733
+ #: js/formidable_admin.js:2003
4734
  msgid "Duplicate"
4735
  msgstr ""
4736
 
4855
  msgstr ""
4856
 
4857
  #: classes/views/frm-forms/add_field.php:29
4858
+ #: js/formidable_admin.js:1192
4859
  msgid "More Options"
4860
  msgstr ""
4861
 
5509
  msgid "Site Key"
5510
  msgstr ""
5511
 
5512
+ #: classes/views/frm-settings/recaptcha.php:27
 
 
 
 
 
5513
  msgid "Secret Key"
5514
  msgstr ""
5515
 
5516
+ #: classes/views/frm-settings/recaptcha.php:34
5517
  msgid "reCAPTCHA Type"
5518
  msgstr ""
5519
 
5520
+ #: classes/views/frm-settings/recaptcha.php:38
5521
  msgid "Checkbox (V2)"
5522
  msgstr ""
5523
 
5524
+ #: classes/views/frm-settings/recaptcha.php:41
5525
  msgid "Invisible"
5526
  msgstr ""
5527
 
5528
+ #: classes/views/frm-settings/recaptcha.php:48
5529
  msgid "reCAPTCHA Language"
5530
  msgstr ""
5531
 
5532
+ #: classes/views/frm-settings/recaptcha.php:52
5533
  msgid "Browser Default"
5534
  msgstr ""
5535
 
5536
+ #: classes/views/frm-settings/recaptcha.php:66
5537
  msgid "Allow multiple reCaptchas to be used on a single page"
5538
  msgstr ""
5539
 
6220
  msgid "Error"
6221
  msgstr ""
6222
 
6223
+ #: js/formidable_admin.js:1973
6224
  msgid "Field settings"
6225
  msgstr ""
6226
 
6227
+ #: js/formidable_admin.js:1997
6228
  msgid "Delete Group"
6229
  msgstr ""
6230
 
6231
+ #: js/formidable_admin.js:2003
6232
  msgid "Duplicate Group"
6233
  msgstr ""
6234
 
6235
+ #: js/formidable_admin.js:3294
6236
  msgid "Custom layout"
6237
  msgstr ""
6238
 
6239
+ #: js/formidable_admin.js:3308
6240
  msgid "Break into rows"
6241
  msgstr ""
6242
 
6243
+ #: js/formidable_admin.js:3317
6244
  msgid "Row Layout"
6245
  msgstr ""
6246
 
6247
+ #: js/formidable_admin.js:3566
6248
  msgid "Enter number of columns for each field"
6249
  msgstr ""
6250
 
6251
+ #: js/formidable_admin.js:3570
6252
  msgid "Layouts are based on a 12-column grid system"
6253
  msgstr ""
6254
 
6255
+ #: js/formidable_admin.js:3586
6256
  msgid "Save"
6257
  msgstr ""
6258
 
6259
+ #: js/formidable_admin.js:3877
6260
  msgid "Merge into row"
6261
  msgstr ""
6262
 
6263
  #. translators: %1$s: Number of fields that are selected to be deleted.
6264
+ #: js/formidable_admin.js:3965
6265
  msgid "Are you sure you want to delete these %1$s selected fields?"
6266
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: forms, contact form, form builder, survey, form maker, form creator, paypa
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 5.6
8
- Stable tag: 5.0.02
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
11
 
@@ -440,6 +440,14 @@ Using our Zapier integration, you can easily connect Formidable with over 1000+
440
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
441
 
442
  == Changelog ==
 
 
 
 
 
 
 
 
443
  = 5.0.02 =
444
  * New: Field groups can now be duplicated and deleted.
445
 
@@ -475,7 +483,4 @@ See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zap
475
  * Fix: Images were not properly loading when styles were loading via an AJAX request.
476
  * Fix: Zeros were not appearing in the entries list for repeaters.
477
 
478
- = 4.11.02 =
479
- * New: The padding for descriptions can now be customized when editing styles.
480
-
481
  <a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 5.6
8
+ Stable tag: 5.0.03
9
 
10
  The most advanced WordPress forms plugin. Go beyond contact forms with our drag & drop form builder for surveys, quizzes, and more.
11
 
440
  See all <a href="https://zapier.com/apps/formidable/integrations">Formidable Zapier Integrations</a>.
441
 
442
  == Changelog ==
443
+ = 5.0.03 =
444
+ * New: Added an Elementor widget.
445
+ * New: When duplicating fields, most unsaved changes will now duplicate as well.
446
+ * New: Next button label and slider field label previews will now update as soon as the setting is changed in the form builder.
447
+ * New: Slider field previews will now update when the min and max values are updated in the form builder.
448
+ * Fix: The search dropdown was getting cut off on pages with no search results.
449
+ * Fix: When legacy views or visual views are active, both versions were appearing active on the add ons page.
450
+
451
  = 5.0.02 =
452
  * New: Field groups can now be duplicated and deleted.
453
 
483
  * Fix: Images were not properly loading when styles were loading via an AJAX request.
484
  * Fix: Zeros were not appearing in the entries list for repeaters.
485
 
 
 
 
486
  <a href="https://raw.githubusercontent.com/Strategy11/formidable-forms/master/changelog.txt">See changelog for all versions</a>