Formidable Forms – Form Builder for WordPress - Version 3.0.01

Version Description

  • Fix: Trigger style update when a form is loaded instead of only when an admin page is visited
  • Fix: A few various form styling and layout fixes
  • Fix: Prevent screenreader text for accessibility from showing on sites with older cached css
  • Fix: Prevent conflict with Divi when a form shortcode with a recaptcha is included in page editor
  • Fix: Use 'readfile' instead of 'include' for css files for extra safety precautions
  • Fix: Load the field options before frm_new_fields_vars hook for reverse compatibility
  • Pro Version Forms
  • New: Use toggle fields in calculations and conditional logic
  • Fix: Some conditional logic based on empty radio fields wasn't functioning
  • Fix: Require time fields at the correct times
Download this release

Release Info

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

Code changes from version 3.0 to 3.0.01

classes/controllers/FrmAppController.php CHANGED
@@ -351,6 +351,17 @@ class FrmAppController {
351
  }
352
  }
353
 
 
 
 
 
 
 
 
 
 
 
 
354
  /**
355
  * @since 3.0
356
  */
351
  }
352
  }
353
 
354
+ /**
355
+ * Check if the styles are updated when a form is loaded on the front-end
356
+ *
357
+ * @since 3.0.1
358
+ */
359
+ public static function maybe_update_styles() {
360
+ if ( self::needs_update() ) {
361
+ self::network_upgrade_site();
362
+ }
363
+ }
364
+
365
  /**
366
  * @since 3.0
367
  */
classes/controllers/FrmFormsController.php CHANGED
@@ -1189,6 +1189,8 @@ class FrmFormsController {
1189
  return __( 'Please select a valid form', 'formidable' );
1190
  }
1191
 
 
 
1192
  add_action( 'frm_load_form_hooks', 'FrmHooksController::trigger_load_form_hooks' );
1193
  FrmAppHelper::trigger_hook_load( 'form', $form );
1194
 
1189
  return __( 'Please select a valid form', 'formidable' );
1190
  }
1191
 
1192
+ FrmAppController::maybe_update_styles();
1193
+
1194
  add_action( 'frm_load_form_hooks', 'FrmHooksController::trigger_load_form_hooks' );
1195
  FrmAppHelper::trigger_hook_load( 'form', $form );
1196
 
classes/helpers/FrmAppHelper.php CHANGED
@@ -4,14 +4,14 @@ if ( ! defined('ABSPATH') ) {
4
  }
5
 
6
  class FrmAppHelper {
7
- public static $db_version = 64; //version of the database we are moving to
8
  public static $pro_db_version = 37; //deprecated
9
  public static $font_version = 3;
10
 
11
  /**
12
  * @since 2.0
13
  */
14
- public static $plug_version = '3.0';
15
 
16
  /**
17
  * @since 1.07.02
4
  }
5
 
6
  class FrmAppHelper {
7
+ public static $db_version = 74; //version of the database we are moving to
8
  public static $pro_db_version = 37; //deprecated
9
  public static $font_version = 3;
10
 
11
  /**
12
  * @since 2.0
13
  */
14
+ public static $plug_version = '3.0.01';
15
 
16
  /**
17
  * @since 1.07.02
classes/helpers/FrmFieldsHelper.php CHANGED
@@ -90,13 +90,13 @@ class FrmFieldsHelper {
90
  // Track the original field's type
91
  $field_array['original_type'] = isset( $field->field_options['original_type'] ) ? $field->field_options['original_type'] : $field->type;
92
 
 
 
93
  if ( $args['action'] == 'edit' ) {
94
  $field_array = apply_filters( 'frm_setup_edit_fields_vars', $field_array, $field, $args['entry_id'], $args );
95
  } else {
96
  $field_array = apply_filters( 'frm_setup_new_fields_vars', $field_array, $field, $args );
97
  }
98
-
99
- self::prepare_field_options_for_display( $field_array, $field, $args );
100
  }
101
 
102
  /**
@@ -1054,7 +1054,7 @@ class FrmFieldsHelper {
1054
 
1055
  $label = isset( $args['opt_label'] ) ? $args['opt_label'] : $args['field']['name'];
1056
 
1057
- ?><label for="<?php echo esc_attr( $other_id ) ?>" class="frm_screen_reader"><?php
1058
  echo esc_html( $label );
1059
  ?></label><input type="text" id="<?php echo esc_attr( $other_id ) ?>" class="<?php echo sanitize_text_field( implode( ' ', $classes ) ) ?>" <?php
1060
  echo ( $args['read_only'] ? ' readonly="readonly" disabled="disabled"' : '' );
90
  // Track the original field's type
91
  $field_array['original_type'] = isset( $field->field_options['original_type'] ) ? $field->field_options['original_type'] : $field->type;
92
 
93
+ self::prepare_field_options_for_display( $field_array, $field, $args );
94
+
95
  if ( $args['action'] == 'edit' ) {
96
  $field_array = apply_filters( 'frm_setup_edit_fields_vars', $field_array, $field, $args['entry_id'], $args );
97
  } else {
98
  $field_array = apply_filters( 'frm_setup_new_fields_vars', $field_array, $field, $args );
99
  }
 
 
100
  }
101
 
102
  /**
1054
 
1055
  $label = isset( $args['opt_label'] ) ? $args['opt_label'] : $args['field']['name'];
1056
 
1057
+ ?><label for="<?php echo esc_attr( $other_id ) ?>" class="frm_screen_reader frm_hidden"><?php
1058
  echo esc_html( $label );
1059
  ?></label><input type="text" id="<?php echo esc_attr( $other_id ) ?>" class="<?php echo sanitize_text_field( implode( ' ', $classes ) ) ?>" <?php
1060
  echo ( $args['read_only'] ? ' readonly="readonly" disabled="disabled"' : '' );
classes/helpers/FrmFormsHelper.php CHANGED
@@ -842,10 +842,6 @@ BEFORE_HTML;
842
  */
843
  public static function css_classes() {
844
  $classes = array(
845
- 'frm_inline' => array(
846
- 'label' => __( 'Inline', 'formidable' ),
847
- 'title' => __( 'Align fields in a row without a specific width.', 'formidable' ),
848
- ),
849
  'frm_first' => array(
850
  'label' => __( 'First', 'formidable' ),
851
  'title' => __( 'Add this to the first field in each row along with a width. ie frm_first frm4', 'formidable' ),
842
  */
843
  public static function css_classes() {
844
  $classes = array(
 
 
 
 
845
  'frm_first' => array(
846
  'label' => __( 'First', 'formidable' ),
847
  'title' => __( 'Add this to the first field in each row along with a width. ie frm_first frm4', 'formidable' ),
classes/models/FrmMigrate.php CHANGED
@@ -59,7 +59,7 @@ class FrmMigrate {
59
  $frm_vars['doing_upgrade'] = false;
60
 
61
  /**** update the styling settings ****/
62
- if ( is_admin() && function_exists( 'get_filesystem_method' ) ) {
63
  $frm_style = new FrmStyle();
64
  $frm_style->update( 'default' );
65
  }
59
  $frm_vars['doing_upgrade'] = false;
60
 
61
  /**** update the styling settings ****/
62
+ if ( function_exists( 'get_filesystem_method' ) ) {
63
  $frm_style = new FrmStyle();
64
  $frm_style->update( 'default' );
65
  }
classes/models/fields/FrmFieldCaptcha.php CHANGED
@@ -93,7 +93,7 @@ class FrmFieldCaptcha extends FrmFieldType {
93
  protected function load_field_scripts( $args ) {
94
  $api_js_url = $this->api_url();
95
 
96
- wp_register_script( 'recaptcha-api', $api_js_url, array( 'formidable' ), true );
97
  wp_enqueue_script( 'recaptcha-api' );
98
  }
99
 
93
  protected function load_field_scripts( $args ) {
94
  $api_js_url = $this->api_url();
95
 
96
+ wp_register_script( 'recaptcha-api', $api_js_url, array( 'formidable' ), '', true );
97
  wp_enqueue_script( 'recaptcha-api' );
98
  }
99
 
classes/models/fields/FrmFieldType.php CHANGED
@@ -461,7 +461,7 @@ DEFAULT_HTML;
461
  }
462
 
463
  public function get_label_class() {
464
- return $this->get_field_column('label');
465
  }
466
 
467
  /**
461
  }
462
 
463
  public function get_label_class() {
464
+ return ' frm_primary_label';
465
  }
466
 
467
  /**
classes/views/frm-entries/form.php CHANGED
@@ -26,7 +26,7 @@ $frm_hide_fields = FrmAppHelper::get_post_param( 'frm_hide_fields_' . $form->id,
26
  <input type="hidden" name="form_key" value="<?php echo esc_attr($form->form_key) ?>" />
27
  <input type="hidden" name="item_meta[0]" value="" />
28
  <?php wp_nonce_field( 'frm_submit_entry_nonce', 'frm_submit_entry_' . $form->id ); ?>
29
- <label for="frm_verify_<?php echo esc_attr( $form->id ) ?>" class="frm_screen_reader"><?php esc_html_e( 'If you are human, leave this field blank.', 'formidable' ) ?></label>
30
  <input type="text" class="frm_hidden frm_verify" id="frm_verify_<?php echo esc_attr( $form->id ) ?>" name="frm_verify" value="<?php echo esc_attr( FrmAppHelper::get_param('frm_verify', '', 'get', 'wp_kses_post' ) ) ?>" <?php FrmFormsHelper::maybe_hide_inline() ?> />
31
  <?php if ( isset( $id ) ) { ?>
32
  <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
26
  <input type="hidden" name="form_key" value="<?php echo esc_attr($form->form_key) ?>" />
27
  <input type="hidden" name="item_meta[0]" value="" />
28
  <?php wp_nonce_field( 'frm_submit_entry_nonce', 'frm_submit_entry_' . $form->id ); ?>
29
+ <label for="frm_verify_<?php echo esc_attr( $form->id ) ?>" class="frm_screen_reader frm_hidden"><?php esc_html_e( 'If you are human, leave this field blank.', 'formidable' ) ?></label>
30
  <input type="text" class="frm_hidden frm_verify" id="frm_verify_<?php echo esc_attr( $form->id ) ?>" name="frm_verify" value="<?php echo esc_attr( FrmAppHelper::get_param('frm_verify', '', 'get', 'wp_kses_post' ) ) ?>" <?php FrmFormsHelper::maybe_hide_inline() ?> />
31
  <?php if ( isset( $id ) ) { ?>
32
  <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
classes/views/styles/_sample_form.php CHANGED
@@ -58,8 +58,8 @@
58
  <div class="frm_form_field form-field frm3 <?php echo esc_attr( $pos_class ) ?> frm_lite_style">
59
  <label class="frm_primary_label"><?php esc_html_e( 'Radio Buttons', 'formidable' ) ?></label>
60
  <div class="frm_opt_container">
61
- <div class="frm_radio"><input type="radio" /><label><?php esc_html_e( 'Option 1', 'formidable' ) ?></label></div>
62
- <div class="frm_radio"><input type="radio" /><label><?php esc_html_e( 'Option 2', 'formidable' ) ?></label></div>
63
  </div>
64
  </div>
65
 
58
  <div class="frm_form_field form-field frm3 <?php echo esc_attr( $pos_class ) ?> frm_lite_style">
59
  <label class="frm_primary_label"><?php esc_html_e( 'Radio Buttons', 'formidable' ) ?></label>
60
  <div class="frm_opt_container">
61
+ <div class="frm_radio"><label><input type="radio" /><?php esc_html_e( 'Option 1', 'formidable' ) ?></label></div>
62
+ <div class="frm_radio"><label><input type="radio" /><?php esc_html_e( 'Option 2', 'formidable' ) ?></label></div>
63
  </div>
64
  </div>
65
 
css/_single_theme.css.php CHANGED
@@ -203,6 +203,18 @@ if ( '' === $field_height || 'auto' === $field_height ) {
203
  }
204
  <?php } ?>
205
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  .<?php echo esc_html( $style_class ) ?> .frm_inline_container.frm_dynamic_select_container .frm_opt_container{
207
  display:inline<?php echo esc_html( $important ) ?>;
208
  }
@@ -540,21 +552,17 @@ if ( ! empty( $important ) ) {
540
 
541
  <?php if ( $check_align === 'block' ) { ?>
542
  .<?php echo esc_html( $style_class ) ?> .frm_checkbox label{
543
- display: inline-flex;
544
- }
545
-
546
- .<?php echo esc_html( $style_class ) ?> .frm_checkbox label img{
547
- align-self: center;
548
  }
549
  <?php } ?>
550
 
551
  <?php if ( $radio_align === 'block' ) { ?>
552
  .<?php echo esc_html( $style_class ) ?> .frm_radio label{
553
- display: inline-flex;
554
- }
555
-
556
- .<?php echo esc_html( $style_class ) ?> .frm_radio label img{
557
- align-self: center;
558
  }
559
  <?php } ?>
560
 
203
  }
204
  <?php } ?>
205
 
206
+ .<?php echo esc_html( $style_class ); ?> .frm_form_field.frm_left_container{
207
+ grid-template-columns: <?php echo esc_html( $width ) ?> auto;
208
+ }
209
+
210
+ .<?php echo esc_html( $style_class ); ?> .frm_form_field.frm_right_container{
211
+ grid-template-columns: auto <?php echo esc_html( $width ) ?>;
212
+ }
213
+
214
+ .frm_form_field.frm_right_container{
215
+ grid-template-columns: auto 25%;
216
+ }
217
+
218
  .<?php echo esc_html( $style_class ) ?> .frm_inline_container.frm_dynamic_select_container .frm_opt_container{
219
  display:inline<?php echo esc_html( $important ) ?>;
220
  }
552
 
553
  <?php if ( $check_align === 'block' ) { ?>
554
  .<?php echo esc_html( $style_class ) ?> .frm_checkbox label{
555
+ display: block;
556
+ padding-left: 20px;
557
+ text-indent: -20px;
 
 
558
  }
559
  <?php } ?>
560
 
561
  <?php if ( $radio_align === 'block' ) { ?>
562
  .<?php echo esc_html( $style_class ) ?> .frm_radio label{
563
+ display: block;
564
+ padding-left: 20px;
565
+ text-indent: -20px;
 
 
566
  }
567
  <?php } ?>
568
 
css/custom_theme.css.php CHANGED
@@ -316,12 +316,9 @@ a.frm_save_draft{
316
 
317
  .with_frm_style .vertical_radio .frm_checkbox label,
318
  .with_frm_style .vertical_radio .frm_radio label{
319
- display: inline-flex;
320
- }
321
-
322
- .with_frm_style .vertical_radio .frm_checkbox label img,
323
- .with_frm_style .vertical_radio .frm_radio label img{
324
- align-self: center;
325
  }
326
 
327
  .frm_file_container .frm_file_link,
@@ -530,7 +527,7 @@ select.frm_loading_lookup{
530
  color: transparent !important;
531
  }
532
 
533
- <?php include( dirname( __FILE__ ) . '/frm_grids.css' ); ?>
534
 
535
  /* Left and right label styling for non-Formidable styling */
536
 
@@ -538,16 +535,17 @@ select.frm_loading_lookup{
538
  .frm_form_field.frm_right_container,
539
  .frm_form_field.frm_left_container{
540
  display: grid;
541
- grid-template-columns: min-content auto;
542
  width:100%;
 
543
  }
544
 
545
  .frm_form_field.frm_right_container{
546
- grid-template-columns: auto min-content;
547
  }
548
 
549
  .frm_form_field.frm_inline_container{
550
- grid-template-columns: minmax(min-content, max-content) auto;
551
  }
552
 
553
  .frm_form_field.frm_inline_container label.frm_primary_label,
@@ -555,7 +553,7 @@ select.frm_loading_lookup{
555
  .frm_form_field.frm_left_container label.frm_primary_label{
556
  margin-right:10px;
557
  grid-row-end:span 2;
558
- align-self: center;
559
  }
560
 
561
  .frm_form_field.frm_left_container label.frm_primary_label{
@@ -792,6 +790,12 @@ select.frm_loading_lookup{
792
  margin-right:1%;
793
  }
794
 
 
 
 
 
 
 
795
  .with_frm_style .frm_inline_container.frm_grid_first label.frm_primary_label,
796
  .with_frm_style .frm_inline_container.frm_grid label.frm_primary_label,
797
  .with_frm_style .frm_inline_container.frm_grid_odd label.frm_primary_label,
@@ -982,7 +986,7 @@ select.frm_loading_lookup{
982
  font-style:normal;
983
  }
984
 
985
- <?php include( FrmAppHelper::plugin_path() . '/css/font_icons.css' ); ?>
986
  <?php do_action( 'frm_include_front_css', compact( 'defaults' ) ); ?>
987
 
988
  /* Responsive */
316
 
317
  .with_frm_style .vertical_radio .frm_checkbox label,
318
  .with_frm_style .vertical_radio .frm_radio label{
319
+ display: block;
320
+ padding-left: 20px;
321
+ text-indent: -20px;
 
 
 
322
  }
323
 
324
  .frm_file_container .frm_file_link,
527
  color: transparent !important;
528
  }
529
 
530
+ <?php readfile( dirname( __FILE__ ) . '/frm_grids.css' ); ?>
531
 
532
  /* Left and right label styling for non-Formidable styling */
533
 
535
  .frm_form_field.frm_right_container,
536
  .frm_form_field.frm_left_container{
537
  display: grid;
538
+ grid-template-columns: 25% auto;
539
  width:100%;
540
+ grid-auto-rows: min-content;
541
  }
542
 
543
  .frm_form_field.frm_right_container{
544
+ grid-template-columns: auto 25%;
545
  }
546
 
547
  .frm_form_field.frm_inline_container{
548
+ grid-template-columns: repeat(2, minmax(auto, max-content) );
549
  }
550
 
551
  .frm_form_field.frm_inline_container label.frm_primary_label,
553
  .frm_form_field.frm_left_container label.frm_primary_label{
554
  margin-right:10px;
555
  grid-row-end:span 2;
556
+ padding-top:4px;
557
  }
558
 
559
  .frm_form_field.frm_left_container label.frm_primary_label{
790
  margin-right:1%;
791
  }
792
 
793
+ .frm_form_field.frm_inline_container .frm_opt_container,
794
+ .frm_form_field.frm_right_container .frm_opt_container,
795
+ .frm_form_field.frm_left_container .frm_opt_container{
796
+ padding-top:4px;
797
+ }
798
+
799
  .with_frm_style .frm_inline_container.frm_grid_first label.frm_primary_label,
800
  .with_frm_style .frm_inline_container.frm_grid label.frm_primary_label,
801
  .with_frm_style .frm_inline_container.frm_grid_odd label.frm_primary_label,
986
  font-style:normal;
987
  }
988
 
989
+ <?php readfile( FrmAppHelper::plugin_path() . '/css/font_icons.css' ); ?>
990
  <?php do_action( 'frm_include_front_css', compact( 'defaults' ) ); ?>
991
 
992
  /* Responsive */
css/frm_admin.css CHANGED
@@ -980,7 +980,10 @@ a.frm-option-icon:hover::before{
980
  box-shadow:none;
981
  width:auto;
982
  }
983
- .frm_form_fields select{width:auto;}
 
 
 
984
  input[type="radio"],
985
  input[type="checkbox"]{
986
  width:16px;
@@ -1249,7 +1252,7 @@ table.frm_name_value textarea {
1249
  .frm_border_light{border:solid 1px #ddd;}
1250
 
1251
  .form-table .form-field input, .form-table .form-field .quicktags-toolbar input,
1252
- .form-field input, .form-field textarea, .form-field .quicktags-toolbar input{width:auto;}
1253
  .frm_pro_installed{margin-top:0.5em;}
1254
  .frm_aff_link{float:right;}
1255
  .frm_select_box{text-align:center;font-weight:bold;width:100%;}
980
  box-shadow:none;
981
  width:auto;
982
  }
983
+ .frm_form_fields select{
984
+ width:auto;
985
+ max-width:100%;
986
+ }
987
  input[type="radio"],
988
  input[type="checkbox"]{
989
  width:16px;
1252
  .frm_border_light{border:solid 1px #ddd;}
1253
 
1254
  .form-table .form-field input, .form-table .form-field .quicktags-toolbar input,
1255
+ .form-field input, .form-field .quicktags-toolbar input{width:auto;}
1256
  .frm_pro_installed{margin-top:0.5em;}
1257
  .frm_aff_link{float:right;}
1258
  .frm_select_box{text-align:center;font-weight:bold;width:100%;}
css/frm_grids.css CHANGED
@@ -11,6 +11,9 @@
11
  width: 1px;
12
  word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */
13
  }
 
 
 
14
 
15
  .frm_clear_none{
16
  clear:none;
@@ -33,9 +36,9 @@
33
  .frm_form_fields .frm_section_heading,
34
  .frm_form_fields .frm_fields_container{
35
  display:grid;
36
- grid-template-columns: repeat(12, 1fr);
37
  grid-auto-rows: max-content;
38
- grid-gap: 0 2.5%;
39
  }
40
 
41
  .frm_combo_inputs_container > *,
@@ -177,7 +180,7 @@
177
  .frm_form_field.frm_right_inline,
178
  .frm_form_field.frm_last_inline{
179
  width:auto;
180
- grid-column-end: auto;
181
  }
182
 
183
  .frm12,
@@ -259,7 +262,7 @@
259
  .frm_grid_container,
260
  .frm_form_fields .frm_section_heading,
261
  .frm_form_fields .frm_fields_container{
262
- grid-template-columns: repeat(6, 1fr);
263
  }
264
 
265
  .frm_combo_inputs_container > *,
11
  width: 1px;
12
  word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */
13
  }
14
+ .frm_screen_reader.frm_hidden{
15
+ display:initial;
16
+ }
17
 
18
  .frm_clear_none{
19
  clear:none;
36
  .frm_form_fields .frm_section_heading,
37
  .frm_form_fields .frm_fields_container{
38
  display:grid;
39
+ grid-template-columns: repeat(12, 6.5%);
40
  grid-auto-rows: max-content;
41
+ grid-gap: 0 2%;
42
  }
43
 
44
  .frm_combo_inputs_container > *,
180
  .frm_form_field.frm_right_inline,
181
  .frm_form_field.frm_last_inline{
182
  width:auto;
183
+ grid-column-end: span 2;
184
  }
185
 
186
  .frm12,
262
  .frm_grid_container,
263
  .frm_form_fields .frm_section_heading,
264
  .frm_form_fields .frm_fields_container{
265
+ grid-template-columns: repeat(6, 13%);
266
  }
267
 
268
  .frm_combo_inputs_container > *,
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: 3.0
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: 3.0.01
6
  Plugin URI: https://formidableforms.com/
7
  Author URI: https://formidableforms.com/
8
  Author: Strategy11
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: contact form, form builder, custom form, forms, form, form maker, form cre
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
  Requires PHP: 5.3
7
- Stable tag: 3.0
8
 
9
  The best WordPress form plugin for contact forms, surveys and more. Make forms a breeze with a drag and drop form builder and form style generator.
10
 
@@ -159,6 +159,18 @@ The field and form names and descriptions are all changed with in-place edit. Ju
159
  [See more FAQs](https://formidableforms.com/formidable-faqs/ "Formidable Form FAQs")
160
 
161
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
162
  = 3.0 =
163
  * Move features into the free form builder: redirect and show page after save, javascript validation, field format options with HTML5 pattern validation, and phone number, number, user ID, hidden field, and HTML fields
164
  * Possibly breaking change: Remove code that has been deprecated since before v2.02
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
  Requires PHP: 5.3
7
+ Stable tag: 3.0.01
8
 
9
  The best WordPress form plugin for contact forms, surveys and more. Make forms a breeze with a drag and drop form builder and form style generator.
10
 
159
  [See more FAQs](https://formidableforms.com/formidable-faqs/ "Formidable Form FAQs")
160
 
161
  == Changelog ==
162
+ = 3.0.01 =
163
+ * Fix: Trigger style update when a form is loaded instead of only when an admin page is visited
164
+ * Fix: A few various form styling and layout fixes
165
+ * Fix: Prevent screenreader text for accessibility from showing on sites with older cached css
166
+ * Fix: Prevent conflict with Divi when a form shortcode with a recaptcha is included in page editor
167
+ * Fix: Use 'readfile' instead of 'include' for css files for extra safety precautions
168
+ * Fix: Load the field options before frm_new_fields_vars hook for reverse compatibility
169
+ * **Pro Version Forms**
170
+ * New: Use toggle fields in calculations and conditional logic
171
+ * Fix: Some conditional logic based on empty radio fields wasn't functioning
172
+ * Fix: Require time fields at the correct times
173
+
174
  = 3.0 =
175
  * Move features into the free form builder: redirect and show page after save, javascript validation, field format options with HTML5 pattern validation, and phone number, number, user ID, hidden field, and HTML fields
176
  * Possibly breaking change: Remove code that has been deprecated since before v2.02