Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms - Version 1.14.2

Version Description

  • New feature: "Step Interval" control allows for fine tuning the incrementing interval of Number field.
  • Improvement: "Make this choice default" control now supports multiple choices in Checkbox field.
  • Bugfix: Dropdown field was ignoring some style settings.
Download this release

Release Info

Developer happyforms
Plugin Icon 128x128 Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms
Version 1.14.2
Comparing to
See all releases

Code changes from version 1.14.1 to 1.14.2

core/assets/css/color.css CHANGED
@@ -125,7 +125,8 @@
125
  .happyforms-styles .happyforms-part input[type=email],
126
  .happyforms-styles .happyforms-part input[type=tel],
127
  .happyforms-styles .happyforms-part input[type=number],
128
- .happyforms-styles .happyforms-part input[type=range] {
 
129
  height: auto !important;
130
  }
131
 
@@ -135,7 +136,8 @@
135
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel],
136
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number],
137
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=range],
138
- .happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea {
 
139
  border-color: transparent !important;
140
  }
141
 
@@ -166,7 +168,8 @@
166
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=email]:focus,
167
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel]:focus,
168
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number]:focus,
169
- .happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea:focus {
 
170
  border-color: transparent !important;
171
  }
172
 
@@ -382,7 +385,7 @@
382
 
383
  .happyforms-styles .happyforms-part__select-wrap:after {
384
  border-top: 6px solid #000;
385
- border-top-color: var(--happyforms-color-dropdown-item-text);
386
  }
387
 
388
  .happyforms-styles .happyforms-part select.happyforms-select:invalid {
@@ -552,7 +555,8 @@
552
  .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=tel],
553
  .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=number],
554
  .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part textarea,
555
- .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part .happyforms-part__select-bg {
 
556
  border-radius: 0px !important;
557
  }
558
 
@@ -565,7 +569,8 @@
565
  .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=email],
566
  .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=tel],
567
  .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=number],
568
- .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part textarea {
 
569
  border-radius: 25px !important;
570
  padding-left: 25px;
571
  padding-right: 25px;
@@ -641,7 +646,8 @@
641
  .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=password],
642
  .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=email],
643
  .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=number],
644
- .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part textarea {
 
645
  border-top-color: transparent !important;
646
  border-left-color: transparent !important;
647
  border-right-color: transparent !important;
125
  .happyforms-styles .happyforms-part input[type=email],
126
  .happyforms-styles .happyforms-part input[type=tel],
127
  .happyforms-styles .happyforms-part input[type=number],
128
+ .happyforms-styles .happyforms-part input[type=range],
129
+ .happyforms-select .happyforms-part select.happyforms-select {
130
  height: auto !important;
131
  }
132
 
136
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel],
137
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number],
138
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=range],
139
+ .happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea,
140
+ .happyforms-styles.happyforms-form--part-border-off .happyforms-part select.happyforms-select {
141
  border-color: transparent !important;
142
  }
143
 
168
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=email]:focus,
169
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel]:focus,
170
  .happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number]:focus,
171
+ .happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea:focus,
172
+ .happyforms-styles.happyforms-form--part-border-off .happyforms-part select.happyforms-select:focus {
173
  border-color: transparent !important;
174
  }
175
 
385
 
386
  .happyforms-styles .happyforms-part__select-wrap:after {
387
  border-top: 6px solid #000;
388
+ border-top-color: var(--happyforms-color-part-value);
389
  }
390
 
391
  .happyforms-styles .happyforms-part select.happyforms-select:invalid {
555
  .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=tel],
556
  .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=number],
557
  .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part textarea,
558
+ .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part .happyforms-part__select-bg,
559
+ .happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part:not(.happyforms-part--phone) select.happyforms-select {
560
  border-radius: 0px !important;
561
  }
562
 
569
  .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=email],
570
  .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=tel],
571
  .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=number],
572
+ .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part textarea,
573
+ .happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part:not(.happyforms-part--phone) select.happyforms-select {
574
  border-radius: 25px !important;
575
  padding-left: 25px;
576
  padding-right: 25px;
646
  .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=password],
647
  .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=email],
648
  .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=number],
649
+ .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part textarea,
650
+ .happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part:not(.happyforms-part--phone) select.happyforms-select {
651
  border-top-color: transparent !important;
652
  border-left-color: transparent !important;
653
  border-right-color: transparent !important;
core/assets/css/customize.css CHANGED
@@ -1466,11 +1466,7 @@ li.customize-control.happyforms-range-control select.happyforms-unit-switch {
1466
  }
1467
 
1468
  .happyforms-style-view.has-placeholder #customize-control-part_toggle_placeholders,
1469
- .happyforms-style-view.has-select #customize-control-dropdowns,
1470
- .happyforms-style-view.has-date #customize-control-dropdowns,
1471
- .happyforms-style-view.has-email #customize-control-dropdowns,
1472
  .happyforms-style-view.has-address #customize-control-dropdowns,
1473
- .happyforms-style-view.has-title #customize-control-dropdowns,
1474
  .happyforms-style-view.has-checkbox #customize-control-checkboxes-radios,
1475
  .happyforms-style-view.has-radio #customize-control-checkboxes-radios,
1476
  .happyforms-style-view.has-table #customize-control-checkboxes-radios,
1466
  }
1467
 
1468
  .happyforms-style-view.has-placeholder #customize-control-part_toggle_placeholders,
 
 
 
1469
  .happyforms-style-view.has-address #customize-control-dropdowns,
 
1470
  .happyforms-style-view.has-checkbox #customize-control-checkboxes-radios,
1471
  .happyforms-style-view.has-radio #customize-control-checkboxes-radios,
1472
  .happyforms-style-view.has-table #customize-control-checkboxes-radios,
core/assets/css/layout.css CHANGED
@@ -859,7 +859,8 @@ form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice a {
859
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=tel],
860
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=number],
861
  .happyforms-form--part-inner-padding-narrow .happyforms-part textarea,
862
- .happyforms-form--part-inner-padding-narrow .happyforms-part .option-label {
 
863
  padding: 5px;
864
  }
865
 
@@ -885,7 +886,8 @@ form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice a {
885
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=number],
886
  .happyforms-form--part-inner-padding-wide .happyforms-part textarea,
887
  .happyforms-form--part-inner-padding-wide .happyforms-part .option-label,
888
- .happyforms-form--part-inner-padding-wide .happyforms-part--placeholder .happyforms-part__el {
 
889
  padding: 15px;
890
  }
891
 
859
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=tel],
860
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=number],
861
  .happyforms-form--part-inner-padding-narrow .happyforms-part textarea,
862
+ .happyforms-form--part-inner-padding-narrow .happyforms-part .option-label,
863
+ .happyforms-form--part-inner-padding-narrow .happyforms-part:not(.happyforms-part--phone) select.happyforms-select {
864
  padding: 5px;
865
  }
866
 
886
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=number],
887
  .happyforms-form--part-inner-padding-wide .happyforms-part textarea,
888
  .happyforms-form--part-inner-padding-wide .happyforms-part .option-label,
889
+ .happyforms-form--part-inner-padding-wide .happyforms-part--placeholder .happyforms-part__el,
890
+ .happyforms-form--part-inner-padding-wide .happyforms-part:not(.happyforms-part--phone) select.happyforms-select {
891
  padding: 15px;
892
  }
893
 
core/assets/js/frontend/select.js CHANGED
@@ -5,14 +5,15 @@
5
  HappyForms.parts.select = {
6
  init: function( options ) {
7
  this.type = this.$el.data( 'happyforms-type' );
8
- this.$select = $( '[data-serialize]', this.$el );
9
 
10
- this.$select.on( 'blur', this.onBlur.bind(this) );
 
11
  },
12
 
13
  onBlur: function() {
14
  var $otherinput = $( '.happyforms-part-option--other input[type=text]', this.$el );
15
- if ( '999' === this.$select.val() ) {
16
  $otherinput.addClass( 'hf-show' );
17
  $otherinput.focus();
18
  } else {
@@ -23,7 +24,7 @@
23
  serialize: function() {
24
  var self = this;
25
 
26
- var serialized = this.$select.map( function( i, select ) {
27
  var $select = $( select, self.$el );
28
  var $customInput = 0;
29
 
5
  HappyForms.parts.select = {
6
  init: function( options ) {
7
  this.type = this.$el.data( 'happyforms-type' );
8
+ this.$input = $( '[data-serialize]', this.$el );
9
 
10
+ this.$input.on( 'change', this.triggerChange.bind( this ) );
11
+ this.$input.on( 'blur', this.onBlur.bind( this ) );
12
  },
13
 
14
  onBlur: function() {
15
  var $otherinput = $( '.happyforms-part-option--other input[type=text]', this.$el );
16
+ if ( '999' === this.$input.val() ) {
17
  $otherinput.addClass( 'hf-show' );
18
  $otherinput.focus();
19
  } else {
24
  serialize: function() {
25
  var self = this;
26
 
27
+ var serialized = this.$input.map( function( i, select ) {
28
  var $select = $( select, self.$el );
29
  var $customInput = 0;
30
 
core/assets/js/parts/part-checkbox.js CHANGED
@@ -204,17 +204,14 @@
204
  },
205
 
206
  onItemDefaultChange: function( e ) {
207
- var isChecked = $( e.target ).is( ':checked' );
208
-
209
- this.model.collection.forEach( function( item ) {
210
- item.set( 'is_default', 0 );
211
- } );
212
 
213
- $( '[name=option_is_default]', this.$el.siblings() ).prop( 'checked', false );
214
-
215
- if ( isChecked ) {
216
  this.model.set( 'is_default', 1 );
217
- $( e.target ).prop( 'checked', true );
 
 
 
218
  }
219
 
220
  var data = {
204
  },
205
 
206
  onItemDefaultChange: function( e ) {
207
+ var $target = $( e.target );
 
 
 
 
208
 
209
+ if ( $target.is( ':checked' ) ) {
 
 
210
  this.model.set( 'is_default', 1 );
211
+ $target.prop( 'checked', true );
212
+ } else {
213
+ this.model.set( 'is_default', 0 );
214
+ $target.prop( 'checked', false );
215
  }
216
 
217
  var data = {
core/assets/js/parts/part-number.js CHANGED
@@ -15,6 +15,7 @@
15
 
16
  events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
17
  'change [name=masked]': 'onMaskedChange',
 
18
  } ),
19
 
20
  initialize: function () {
@@ -65,6 +66,20 @@
65
  } );
66
  },
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  onThousandsDelimiterChange: function() {
69
  var data = {
70
  id: this.model.get( 'id' ),
@@ -183,7 +198,15 @@
183
  var $suffix = this.$( '.happyforms-input-group__suffix span', $part );
184
 
185
  $suffix.text( part.get( 'mask_numeric_suffix' ) );
186
- }
 
 
 
 
 
 
 
 
187
  } );
188
 
189
  } ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
15
 
16
  events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
17
  'change [name=masked]': 'onMaskedChange',
18
+ 'change [data-bind=step]': 'onNumberStepIntervalChange',
19
  } ),
20
 
21
  initialize: function () {
66
  } );
67
  },
68
 
69
+ onNumberStepIntervalChange: function( e ) {
70
+ if ( $( e.target ).val() <= 0 ) {
71
+ $('[data-bind=step]', this.$el).val( 1 );
72
+ this.model.set( 'step', 1 );
73
+ }
74
+
75
+ var data = {
76
+ id: this.model.get( 'id' ),
77
+ callback: 'onNumberStepIntervalChangeCallback',
78
+ };
79
+
80
+ happyForms.previewSend( 'happyforms-part-dom-update', data );
81
+ },
82
+
83
  onThousandsDelimiterChange: function() {
84
  var data = {
85
  id: this.model.get( 'id' ),
198
  var $suffix = this.$( '.happyforms-input-group__suffix span', $part );
199
 
200
  $suffix.text( part.get( 'mask_numeric_suffix' ) );
201
+ },
202
+
203
+ onNumberStepIntervalChangeCallback: function( id, html, options ) {
204
+ var part = this.getPartModel( id );
205
+ var $part = this.getPartElement( html );
206
+ var $input = this.$( 'input', $part );
207
+
208
+ $input.attr( 'step', part.get( 'step' ) );
209
+ },
210
  } );
211
 
212
  } ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
core/classes/class-form-setup.php CHANGED
@@ -269,7 +269,7 @@ class HappyForms_Form_Setup {
269
  case 'use_html_id-group_end':
270
  $form = happyforms_customize_get_current_form();
271
 
272
- if ( 0 == $form['use_html_id'] ) {
273
  break;
274
  }
275
 
@@ -283,7 +283,7 @@ class HappyForms_Form_Setup {
283
  case 'add_submit_button_class-group_end':
284
  $form = happyforms_customize_get_current_form();
285
 
286
- if ( 0 == $form['add_submit_button_class'] ) {
287
  break;
288
  }
289
 
@@ -344,7 +344,7 @@ class HappyForms_Form_Setup {
344
  $has_html_id_checkbox = ( metadata_exists( 'post', $form['ID'], '_happyforms_use_html_id' ) );
345
 
346
  if ( ! empty( $form['html_id'] ) ) {
347
- if ( ! $has_html_id_checkbox || $has_html_id_checkbox && 1 == $form['use_html_id'] ) {
348
  $id = $form['html_id'];
349
  }
350
  }
269
  case 'use_html_id-group_end':
270
  $form = happyforms_customize_get_current_form();
271
 
272
+ if ( happyforms_is_falsy( $form['use_html_id'] ) ) {
273
  break;
274
  }
275
 
283
  case 'add_submit_button_class-group_end':
284
  $form = happyforms_customize_get_current_form();
285
 
286
+ if ( happyforms_is_falsy( $form['add_submit_button_class'] ) ) {
287
  break;
288
  }
289
 
344
  $has_html_id_checkbox = ( metadata_exists( 'post', $form['ID'], '_happyforms_use_html_id' ) );
345
 
346
  if ( ! empty( $form['html_id'] ) ) {
347
+ if ( ! $has_html_id_checkbox || $has_html_id_checkbox && happyforms_is_truthy( $form['use_html_id'] ) ) {
348
  $id = $form['html_id'];
349
  }
350
  }
core/classes/class-form-styles.php CHANGED
@@ -733,7 +733,7 @@ class HappyForms_Form_Styles {
733
  ),
734
  3800 => array(
735
  'type' => 'divider',
736
- 'label' => __( 'Dropdowns', 'happyforms' ),
737
  'id' => 'dropdowns',
738
  ),
739
  3900 => array(
@@ -961,10 +961,11 @@ class HappyForms_Form_Styles {
961
 
962
  return $form;
963
  }
 
964
  public function filter_obsolete_form_width( $styles, $form ) {
965
  $form_width = $form['form_width'];
966
 
967
- if ( 0 == $form_width || '' == $form_width || 100 == $form_width ) {
968
  unset( $styles['form_width'] );
969
  }
970
 
@@ -1002,9 +1003,10 @@ class HappyForms_Form_Styles {
1002
  case 'form-width-range':
1003
  $form_width = $form['form_width'];
1004
 
1005
- if( '' == $form_width || 100 == $form_width ) {
1006
  break;
1007
  }
 
1008
  require( "{$path}/range.php" );
1009
  break;
1010
  case 'additional_css-divider':
733
  ),
734
  3800 => array(
735
  'type' => 'divider',
736
+ 'label' => __( 'Address dropdowns', 'happyforms' ),
737
  'id' => 'dropdowns',
738
  ),
739
  3900 => array(
961
 
962
  return $form;
963
  }
964
+
965
  public function filter_obsolete_form_width( $styles, $form ) {
966
  $form_width = $form['form_width'];
967
 
968
+ if ( happyforms_is_falsy( $form_width ) || 100 === intval( $form_width ) ) {
969
  unset( $styles['form_width'] );
970
  }
971
 
1003
  case 'form-width-range':
1004
  $form_width = $form['form_width'];
1005
 
1006
+ if ( happyforms_is_falsy( $form_width ) || 100 === intval( $form_width ) ) {
1007
  break;
1008
  }
1009
+
1010
  require( "{$path}/range.php" );
1011
  break;
1012
  case 'additional_css-divider':
core/classes/parts/class-part-number.php CHANGED
@@ -67,6 +67,10 @@ class HappyForms_Part_Number extends HappyForms_Form_Part {
67
  'default' => 10,
68
  'sanitize' => 'intval'
69
  ),
 
 
 
 
70
  'masked' => array(
71
  'default' => 0,
72
  'sanitize' => 'intval'
67
  'default' => 10,
68
  'sanitize' => 'intval'
69
  ),
70
+ 'step' => array(
71
+ 'default' => 1,
72
+ 'sanitize' => 'floatval',
73
+ ),
74
  'masked' => array(
75
  'default' => 0,
76
  'sanitize' => 'intval'
core/templates/parts/customize-number.php CHANGED
@@ -41,6 +41,10 @@
41
  <input type="number" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
42
  </p>
43
  </div>
 
 
 
 
44
  <p>
45
  <label>
46
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'Require an answer', 'happyforms' ); ?>
41
  <input type="number" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
42
  </p>
43
  </div>
44
+ <p>
45
+ <label for="<%= instance.id %>_step"><?php _e( 'Step Interval', 'happyforms' ); ?></label>
46
+ <input type="number" id="<%= instance.id %>_step" class="widefat title" value="<%= instance.step %>" data-bind="step" />
47
+ </p>
48
  <p>
49
  <label>
50
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'Require an answer', 'happyforms' ); ?>
core/templates/parts/frontend-checkbox.php CHANGED
@@ -20,10 +20,6 @@
20
  $checked = in_array( $o, $value ) ? 'checked="checked"' : '';
21
  $option_classes = 'happyforms-part__option happyforms-part-option';
22
 
23
- if ( empty( $checked ) ) {
24
- $checked = checked( 1, $option['is_default'], false );
25
- }
26
-
27
  if ( 1 == $option['limit_submissions'] && 0 == $option['submissions_left'] ) {
28
  $option_classes .= ' disabled-option';
29
  }
20
  $checked = in_array( $o, $value ) ? 'checked="checked"' : '';
21
  $option_classes = 'happyforms-part__option happyforms-part-option';
22
 
 
 
 
 
23
  if ( 1 == $option['limit_submissions'] && 0 == $option['submissions_left'] ) {
24
  $option_classes .= ' disabled-option';
25
  }
core/templates/parts/frontend-number.php CHANGED
@@ -43,7 +43,7 @@
43
  <?php if ( ! $early_label && 'as_placeholder' !== $part['label_placement'] ) : ?>
44
  <?php happyforms_the_part_label( $part, $form ); ?>
45
  <?php endif; ?>
46
- <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="<?php echo $input_type; ?>" value="<?php happyforms_the_part_value( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" min="<?php echo esc_attr( $part['min_value'] ) ?>" max="<?php echo esc_attr( $part['max_value'] ); ?>" <?php happyforms_the_part_attributes( $part, $form, 0 ); ?> />
47
  <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
48
  <?php happyforms_the_part_label( $part, $form ); ?>
49
  <?php endif; ?>
43
  <?php if ( ! $early_label && 'as_placeholder' !== $part['label_placement'] ) : ?>
44
  <?php happyforms_the_part_label( $part, $form ); ?>
45
  <?php endif; ?>
46
+ <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="<?php echo $input_type; ?>" value="<?php happyforms_the_part_value( $part, $form ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" min="<?php echo esc_attr( $part['min_value'] ) ?>" max="<?php echo esc_attr( $part['max_value'] ); ?>" step="<?php echo esc_attr( $part['step'] ); ?>" <?php happyforms_the_part_attributes( $part, $form, 0 ); ?> />
47
  <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
48
  <?php happyforms_the_part_label( $part, $form ); ?>
49
  <?php endif; ?>
core/templates/parts/frontend-radio.php CHANGED
@@ -14,17 +14,13 @@
14
 
15
  foreach( $options as $o => $option ) : ?>
16
  <?php
17
- $checked = false;
18
  $option_classes = 'happyforms-part__option happyforms-part-option';
19
 
20
  if ( is_string( $value ) ) {
21
  $checked = checked( $value, $o, false );
22
  }
23
 
24
- if ( false === $checked ) {
25
- $checked = checked( 1, $option['is_default'], false );
26
- }
27
-
28
  if ( 1 == $option['limit_submissions'] && 0 == $option['submissions_left'] ) {
29
  $option_classes .= ' disabled-option';
30
  }
14
 
15
  foreach( $options as $o => $option ) : ?>
16
  <?php
17
+ $checked = ( $o === $value ) ? 'checked="checked"' : '';
18
  $option_classes = 'happyforms-part__option happyforms-part-option';
19
 
20
  if ( is_string( $value ) ) {
21
  $checked = checked( $value, $o, false );
22
  }
23
 
 
 
 
 
24
  if ( 1 == $option['limit_submissions'] && 0 == $option['submissions_left'] ) {
25
  $option_classes .= ' disabled-option';
26
  }
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.io
6
  * Description: We're changin' WordPress forms.
7
  * Author: Happyforms
8
- * Version: 1.14.1
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
@@ -22,7 +22,7 @@ if ( defined( 'HAPPYFORMS_UPGRADE_VERSION' ) ) {
22
  /**
23
  * The current version of the plugin.
24
  */
25
- define( 'HAPPYFORMS_VERSION', '1.14.1' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
5
  * Plugin URI: https://happyforms.io
6
  * Description: We're changin' WordPress forms.
7
  * Author: Happyforms
8
+ * Version: 1.14.2
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
22
  /**
23
  * The current version of the plugin.
24
  */
25
+ define( 'HAPPYFORMS_VERSION', '1.14.2' );
26
 
27
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
28
  /**
integrations/assets/css/admin.css CHANGED
@@ -120,6 +120,30 @@
120
  margin-top: 11px;
121
  }
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  @media only screen and (max-width: 1000px) {
124
  .media-toolbar-primary.search-form {
125
  float: right;
120
  margin-top: 11px;
121
  }
122
 
123
+ #happyforms-service-aweber .components-external-link__icon {
124
+ margin-bottom: -2px;
125
+ }
126
+
127
+ #happyforms-service-aweber a {
128
+ color: #2271b1;
129
+ }
130
+
131
+ #happyforms-service-aweber svg {
132
+ color: #2271b1;
133
+ fill: #2271b1;
134
+ }
135
+
136
+ #happyforms-service-aweber a:hover,
137
+ #happyforms-service-aweber a:active {
138
+ color: #135e96;
139
+ }
140
+
141
+ #happyforms-service-aweber svg:hover,
142
+ #happyforms-service-aweber svg:active {
143
+ color: #135e96;
144
+ fill: #135e96;
145
+ }
146
+
147
  @media only screen and (max-width: 1000px) {
148
  .media-toolbar-primary.search-form {
149
  float: right;
integrations/templates/widget-aweber-dummy.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- $label_link = ' (<a href="#" target="_blank">' . __( 'get your code', 'happyforms' ) . '</a>)';
3
  ?>
4
  <form class="happyforms-service">
5
  <div class="widget-content">
1
  <?php
2
+ $label_link = ' (<a href="#" target="_blank">' . __( 'get your code', 'happyforms' ) . '<svg xmlns="http://www.w3.org/2000/svg" viewBox="11 -4 1 24" width="20" height="18" class="components-external-link__icon css-bqq7t3 etxm6pv0" role="img" aria-hidden="true" focusable="false"><path d="M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z"></path></svg></a>)';
3
  ?>
4
  <form class="happyforms-service">
5
  <div class="widget-content">
languages/happyforms.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Happyforms (free) 1.14.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\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: 2022-02-15T12:42:08+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: happyforms\n"
@@ -728,7 +728,7 @@ msgid "Hint"
728
  msgstr ""
729
 
730
  #: core/classes/class-form-styles.php:736
731
- msgid "Dropdowns"
732
  msgstr ""
733
 
734
  #: core/classes/class-form-styles.php:742
@@ -3171,7 +3171,7 @@ msgstr ""
3171
  #: core/templates/parts/customize-checkbox.php:49
3172
  #: core/templates/parts/customize-email.php:36
3173
  #: core/templates/parts/customize-multi-line-text.php:36
3174
- #: core/templates/parts/customize-number.php:46
3175
  #: core/templates/parts/customize-radio.php:49
3176
  #: core/templates/parts/customize-select.php:53
3177
  #: core/templates/parts/customize-single-line-text.php:36
@@ -3232,7 +3232,7 @@ msgstr ""
3232
  #: core/templates/parts/customize-checkbox.php:113
3233
  #: core/templates/parts/customize-email.php:58
3234
  #: core/templates/parts/customize-multi-line-text.php:71
3235
- #: core/templates/parts/customize-number.php:81
3236
  #: core/templates/parts/customize-radio.php:96
3237
  #: core/templates/parts/customize-select.php:89
3238
  #: core/templates/parts/customize-single-line-text.php:57
@@ -3278,13 +3278,13 @@ msgid "Prefill"
3278
  msgstr ""
3279
 
3280
  #: core/templates/parts/customize-email.php:45
3281
- #: core/templates/parts/customize-number.php:70
3282
  #: core/templates/parts/customize-single-line-text.php:44
3283
  msgid "Prefix"
3284
  msgstr ""
3285
 
3286
  #: core/templates/parts/customize-email.php:49
3287
- #: core/templates/parts/customize-number.php:74
3288
  #: core/templates/parts/customize-single-line-text.php:48
3289
  msgid "Suffix"
3290
  msgstr ""
@@ -3309,15 +3309,19 @@ msgstr ""
3309
  msgid "Max number"
3310
  msgstr ""
3311
 
3312
- #: core/templates/parts/customize-number.php:56
 
 
 
 
3313
  msgid "Use number separators"
3314
  msgstr ""
3315
 
3316
- #: core/templates/parts/customize-number.php:61
3317
  msgid "Grouping"
3318
  msgstr ""
3319
 
3320
- #: core/templates/parts/customize-number.php:65
3321
  msgid "Decimal"
3322
  msgstr ""
3323
 
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Happyforms (free) 1.14.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\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: 2022-02-28T14:27:07+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: happyforms\n"
728
  msgstr ""
729
 
730
  #: core/classes/class-form-styles.php:736
731
+ msgid "Address dropdowns"
732
  msgstr ""
733
 
734
  #: core/classes/class-form-styles.php:742
3171
  #: core/templates/parts/customize-checkbox.php:49
3172
  #: core/templates/parts/customize-email.php:36
3173
  #: core/templates/parts/customize-multi-line-text.php:36
3174
+ #: core/templates/parts/customize-number.php:50
3175
  #: core/templates/parts/customize-radio.php:49
3176
  #: core/templates/parts/customize-select.php:53
3177
  #: core/templates/parts/customize-single-line-text.php:36
3232
  #: core/templates/parts/customize-checkbox.php:113
3233
  #: core/templates/parts/customize-email.php:58
3234
  #: core/templates/parts/customize-multi-line-text.php:71
3235
+ #: core/templates/parts/customize-number.php:85
3236
  #: core/templates/parts/customize-radio.php:96
3237
  #: core/templates/parts/customize-select.php:89
3238
  #: core/templates/parts/customize-single-line-text.php:57
3278
  msgstr ""
3279
 
3280
  #: core/templates/parts/customize-email.php:45
3281
+ #: core/templates/parts/customize-number.php:74
3282
  #: core/templates/parts/customize-single-line-text.php:44
3283
  msgid "Prefix"
3284
  msgstr ""
3285
 
3286
  #: core/templates/parts/customize-email.php:49
3287
+ #: core/templates/parts/customize-number.php:78
3288
  #: core/templates/parts/customize-single-line-text.php:48
3289
  msgid "Suffix"
3290
  msgstr ""
3309
  msgid "Max number"
3310
  msgstr ""
3311
 
3312
+ #: core/templates/parts/customize-number.php:45
3313
+ msgid "Step Interval"
3314
+ msgstr ""
3315
+
3316
+ #: core/templates/parts/customize-number.php:60
3317
  msgid "Use number separators"
3318
  msgstr ""
3319
 
3320
+ #: core/templates/parts/customize-number.php:65
3321
  msgid "Grouping"
3322
  msgstr ""
3323
 
3324
+ #: core/templates/parts/customize-number.php:69
3325
  msgid "Decimal"
3326
  msgstr ""
3327
 
readme.txt CHANGED
@@ -3,9 +3,9 @@
3
  Contributors: happyforms
4
  Tags: contact form, contact form plugin, forms, form builder, custom form, intake form, registration form, survey form, quiz form, payment form, newsletter form, giveaway form, fundraising form, donation form, nomination form, order form, questionnaire form, onboarding form, contract form, estimate form, research form, qualitative form, quantitative form, membership form, mobile form, feedback form, release form, inquiry form, request form, evaluation form, RSVP form, reservation form, sales lead form, popup form, quote form, event form, booking form, application form, agreement form, safety form, compliance form, assessment form, sponsorship form, report form, file upload form, satisfaction form
5
  Requires at least: 5.0
6
- Tested up to: 5.9
7
  Requires PHP: 7.0
8
- Stable tag: 1.14.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -151,6 +151,11 @@ Aw, honestly, the thought that you're writing about our contact form builder is
151
 
152
  == Changelog ==
153
 
 
 
 
 
 
154
  = 1.14.1 =
155
  * New feature: "Hint" control for adding descriptive text to Radio and Checkbox field choices.
156
  * Improvement: Nicer vertical alignment of choices spanning multiple lines in Radio and Checkbox fields.
@@ -908,6 +913,9 @@ Aw, honestly, the thought that you're writing about our contact form builder is
908
 
909
  == Upgrade Notice ==
910
 
 
 
 
911
  = 1.14.1 =
912
  * Radio and Checkbox fields choice hints, true submit buttons, layout and usability improvements.
913
 
3
  Contributors: happyforms
4
  Tags: contact form, contact form plugin, forms, form builder, custom form, intake form, registration form, survey form, quiz form, payment form, newsletter form, giveaway form, fundraising form, donation form, nomination form, order form, questionnaire form, onboarding form, contract form, estimate form, research form, qualitative form, quantitative form, membership form, mobile form, feedback form, release form, inquiry form, request form, evaluation form, RSVP form, reservation form, sales lead form, popup form, quote form, event form, booking form, application form, agreement form, safety form, compliance form, assessment form, sponsorship form, report form, file upload form, satisfaction form
5
  Requires at least: 5.0
6
+ Tested up to: 5.9.1
7
  Requires PHP: 7.0
8
+ Stable tag: 1.14.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
151
 
152
  == Changelog ==
153
 
154
+ = 1.14.2 =
155
+ * New feature: "Step Interval" control allows for fine tuning the incrementing interval of Number field.
156
+ * Improvement: "Make this choice default" control now supports multiple choices in Checkbox field.
157
+ * Bugfix: Dropdown field was ignoring some style settings.
158
+
159
  = 1.14.1 =
160
  * New feature: "Hint" control for adding descriptive text to Radio and Checkbox field choices.
161
  * Improvement: Nicer vertical alignment of choices spanning multiple lines in Radio and Checkbox fields.
913
 
914
  == Upgrade Notice ==
915
 
916
+ = 1.14.2 =
917
+ * New "Step Interval" control for Number field, miscellaneous improvements and bugfixes.
918
+
919
  = 1.14.1 =
920
  * Radio and Checkbox fields choice hints, true submit buttons, layout and usability improvements.
921