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

Version Description

  • New feature: Added support for placeholder value in Dropdown part along with new option to set title as a placeholder.
  • New feature: New looks of Multiple Choice part allowing to add description for each option.
  • New feature: Added three new modes to Date & Time part: Month & Year, Month only, Year only.
  • New feature: Part title can now be hidden per each individual part.
  • Improvement: Number part now allows for minimum and maximum value setting even when the part input is formatted with prefix and thousands separators.
  • Improvement: Added labels for optional parts, removed asterisks for required parts.
  • Improvement: Various UX improvements to form builder.
  • Improvement: Form configuration steps are now directly reachable from the form list table.
  • Bugfix: Phone part displayed wrong country flag in the case where two countries share same phone prefix.
  • Bugfix: Date & Time part layout didn't adapt well when set to Half and Third width setting.
  • Bugfix: Saved form width value was reverting to default in Style step.
Download this release

Release Info

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

Code changes from version 1.6.6 to 1.6.7

Files changed (59) hide show
  1. assets/css/customize.css +90 -47
  2. assets/css/frontend.css +86 -80
  3. assets/css/preview.css +4 -0
  4. assets/js/customize.js +47 -49
  5. assets/js/frontend/number.js +1 -1
  6. assets/js/frontend/phone.js +4 -2
  7. assets/js/lib/happyforms-select.js +21 -6
  8. assets/js/parts/part-checkbox.js +228 -66
  9. assets/js/parts/part-date.js +12 -5
  10. assets/js/parts/part-number.js +0 -6
  11. assets/js/parts/part-radio.js +197 -80
  12. assets/js/parts/part-select.js +231 -87
  13. assets/js/parts/part-table.js +364 -126
  14. assets/js/parts/part-title.js +18 -1
  15. assets/png/draggable-handle-pattern.png +0 -0
  16. happyforms.php +2 -2
  17. inc/classes/class-form-admin.php +13 -5
  18. inc/classes/class-form-part-library.php +1 -1
  19. inc/classes/class-form-styles.php +0 -72
  20. inc/classes/parts/class-part-checkbox.php +8 -6
  21. inc/classes/parts/class-part-date.php +63 -24
  22. inc/classes/parts/class-part-number.php +24 -17
  23. inc/classes/parts/class-part-phone.php +7 -3
  24. inc/classes/parts/class-part-placeholder.php +0 -4
  25. inc/classes/parts/class-part-radio.php +2 -0
  26. inc/classes/parts/class-part-select.php +19 -0
  27. inc/classes/parts/class-part-title.php +21 -0
  28. inc/helpers/helper-form-templates.php +8 -6
  29. inc/helpers/helper-misc.php +3 -2
  30. inc/templates/customize-form-build.php +2 -2
  31. inc/templates/customize-form-steps.php +1 -1
  32. inc/templates/customize-header-actions.php +1 -1
  33. inc/templates/parts/customize-address.php +1 -0
  34. inc/templates/parts/customize-checkbox.php +29 -18
  35. inc/templates/parts/customize-date.php +4 -0
  36. inc/templates/parts/customize-email.php +1 -0
  37. inc/templates/parts/customize-multi-line-text.php +1 -0
  38. inc/templates/parts/customize-narrative.php +1 -0
  39. inc/templates/parts/customize-number.php +10 -7
  40. inc/templates/parts/customize-phone.php +2 -1
  41. inc/templates/parts/customize-placeholder.php +1 -0
  42. inc/templates/parts/customize-radio.php +29 -22
  43. inc/templates/parts/customize-rating.php +6 -5
  44. inc/templates/parts/customize-scale.php +1 -0
  45. inc/templates/parts/customize-select.php +29 -17
  46. inc/templates/parts/customize-single-line-text.php +1 -0
  47. inc/templates/parts/customize-table.php +38 -28
  48. inc/templates/parts/customize-title.php +6 -0
  49. inc/templates/parts/customize-website-url.php +1 -0
  50. inc/templates/parts/frontend-checkbox.php +8 -3
  51. inc/templates/parts/frontend-date-day.php +4 -4
  52. inc/templates/parts/frontend-date-month.php +4 -4
  53. inc/templates/parts/frontend-date.php +19 -13
  54. inc/templates/parts/frontend-phone.php +20 -5
  55. inc/templates/parts/frontend-placeholder.php +5 -1
  56. inc/templates/parts/frontend-select.php +5 -11
  57. inc/templates/parts/frontend-title.php +5 -15
  58. languages/happyforms.pot +760 -732
  59. readme.txt +17 -1
assets/css/customize.css CHANGED
@@ -266,7 +266,9 @@ a.happyforms-form-part-advanced-settings {
266
  float: right;
267
  }
268
 
269
- a.happyforms-form-part-advanced-settings:before {
 
 
270
  position: relative;
271
  top: 2px;
272
  display: inline-block;
@@ -274,7 +276,9 @@ a.happyforms-form-part-advanced-settings:before {
274
  font-family: dashicons;
275
  }
276
 
277
- a.happyforms-form-part-advanced-settings.opened:before {
 
 
278
  content: "\f342";
279
  }
280
 
@@ -310,7 +314,7 @@ a.happyforms-form-part-remove:hover {
310
  #happyforms-confirmation-email-settings,
311
  #happyforms-review-button-label-settings,
312
  #happyforms-unique-id-settings {
313
- display: none;
314
  }
315
 
316
  /**
@@ -355,8 +359,9 @@ a.happyforms-form-part-remove:hover {
355
  margin-bottom: 0;
356
  }
357
 
358
- ul.happyforms-form-widgets {
359
  margin-top: 0;
 
360
  }
361
 
362
  body.adding-happyforms-parts button.happyforms-open-parts-drawer:before {
@@ -421,10 +426,16 @@ body.adding-happyforms-parts #customize-preview iframe {
421
  box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
422
  }
423
 
424
- .happyforms-part-widget .links {
425
  text-align: right;
426
  }
427
 
 
 
 
 
 
 
428
  .happyforms-part-widget .show-all-options {
429
  float: left;
430
  }
@@ -463,7 +474,60 @@ body.adding-happyforms-parts #customize-preview iframe {
463
 
464
  .happyforms-part-widget .options {
465
  border: 1px solid #eee;
466
- padding: 5px 10px 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
467
  }
468
 
469
  .happyforms-part-widget .options h3 {
@@ -475,11 +539,6 @@ body.adding-happyforms-parts #customize-preview iframe {
475
  display: none;
476
  }
477
 
478
- .happyforms-part-widget .options li {
479
- padding: 10px 0 15px;
480
- border-bottom: 1px solid #eee;
481
- }
482
-
483
  .happyforms-part-widget .options ul:empty {
484
  display: none;
485
  }
@@ -489,46 +548,30 @@ body.adding-happyforms-parts #customize-preview iframe {
489
  display: block;
490
  }
491
 
492
- .happyforms-part-widget .options li:last-child {
493
- border-bottom: 0;
494
- }
495
-
496
- .happyforms-part-widget .options .option-actions {
497
- margin: 0;
498
  text-align: right;
499
  }
500
 
501
- .happyforms-part-widget .options .delete-option {
502
- position: relative;
503
- top: 5px;
504
  color: #a00;
505
  }
506
 
507
- .happyforms-part-widget .options .delete-option:hover {
 
 
508
  color: #dc3232;
509
  }
510
 
511
- .happyforms-part-widget .options .delete-option::after {
512
- content: '';
513
- display: table;
514
- clear: both;
515
- }
516
-
517
- .happyforms-part-widget--sub label {
518
- font-size: 13px;
519
- }
520
-
521
- .customize-control .happyforms-part-widget--sub input {
522
- margin: 2px 0 5px;
523
- }
524
-
525
  /**
526
  *
527
  * Form parts drawer
528
  *
529
  */
530
  body.adding-happyforms-parts .wp-full-overlay-main {
531
- left: 300px;
532
  }
533
 
534
  #happyforms-parts-drawer {
@@ -585,9 +628,9 @@ input#part-search::placeholder {
585
  }
586
 
587
  ul.happyforms-parts-list {
588
- margin: 0;
589
- padding: 0;
590
- list-style-type: none;
591
  }
592
 
593
  ul.happyforms-parts-list li.happyforms-parts-list-item {
@@ -627,19 +670,19 @@ ul.happyforms-parts-list li .happyforms-parts-list-item-title:before {
627
  }
628
 
629
  ul.happyforms-parts-list li[data-part-type="single_line_text"] .happyforms-parts-list-item-title:before {
630
- background-image: url(../svg/icons/short-text.svg);
631
  }
632
 
633
  ul.happyforms-parts-list li[data-part-type="multi_line_text"] .happyforms-parts-list-item-title:before {
634
- background-image: url(../svg/icons/long-text.svg);
635
  }
636
 
637
  ul.happyforms-parts-list li[data-part-type="email"] .happyforms-parts-list-item-title:before {
638
- background-image: url(../svg/icons/email.svg);
639
  }
640
 
641
  ul.happyforms-parts-list li[data-part-type="website_url"] .happyforms-parts-list-item-title:before {
642
- background-image: url(../svg/icons/website-link.svg);
643
  }
644
 
645
  ul.happyforms-parts-list li[data-part-type="number"] .happyforms-parts-list-item-title:before {
@@ -840,7 +883,7 @@ ul.happyforms-style-controls .customize-control.happyforms-divider-control h3 {
840
  }
841
 
842
  .control-section h3.accordion-section-title:hover {
843
- border-left-color: #0073aa;
844
  }
845
 
846
  .control-section h3.accordion-section-title:hover:after {
@@ -890,9 +933,9 @@ li.customize-control.happyforms-range-control input[type=number] {
890
 
891
  @media screen and (max-width: 782px) {
892
  li.customize-control.happyforms-range-control input[type=number] {
893
- height: auto;
894
- line-height: 1;
895
- font-size: 12px;
896
  }
897
  }
898
 
266
  float: right;
267
  }
268
 
269
+ a.happyforms-form-part-advanced-settings:before,
270
+ a.advanced-option:before,
271
+ a.advanced-column:before {
272
  position: relative;
273
  top: 2px;
274
  display: inline-block;
276
  font-family: dashicons;
277
  }
278
 
279
+ a.happyforms-form-part-advanced-settings.opened:before,
280
+ a.advanced-option.opened:before,
281
+ a.advanced-column.opened:before {
282
  content: "\f342";
283
  }
284
 
314
  #happyforms-confirmation-email-settings,
315
  #happyforms-review-button-label-settings,
316
  #happyforms-unique-id-settings {
317
+ display: none;
318
  }
319
 
320
  /**
359
  margin-bottom: 0;
360
  }
361
 
362
+ .happyforms-form-widgets {
363
  margin-top: 0;
364
+ overflow-x: hidden;
365
  }
366
 
367
  body.adding-happyforms-parts button.happyforms-open-parts-drawer:before {
426
  box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
427
  }
428
 
429
+ .happyforms-part-widget .links {
430
  text-align: right;
431
  }
432
 
433
+ .happyforms-part-widget .links .button {
434
+ text-align: center;
435
+ text-transform: capitalize;
436
+ display: block;
437
+ }
438
+
439
  .happyforms-part-widget .show-all-options {
440
  float: left;
441
  }
474
 
475
  .happyforms-part-widget .options {
476
  border: 1px solid #eee;
477
+ padding: 10px;
478
+ }
479
+
480
+ .happyforms-part-widget .option-list,
481
+ .happyforms-part-widget .column-list,
482
+ .happyforms-part-widget .row-list {
483
+ margin: 0;
484
+ }
485
+
486
+ .happyforms-part-widget .option-list li,
487
+ .happyforms-part-widget .column-list li,
488
+ .happyforms-part-widget .row-list li {
489
+ margin: 0;
490
+ padding: 14px 0;
491
+ background-color: white;
492
+ border-bottom: 1px solid #eee;
493
+ }
494
+
495
+ .happyforms-part-widget .option-list li:last-child,
496
+ .happyforms-part-widget .column-list li:last-child,
497
+ .happyforms-part-widget .row-list li:last-child {
498
+ border-bottom: none;
499
+ }
500
+
501
+ .customize-control .option-list li label,
502
+ .customize-control .column-list li label,
503
+ .customize-control .row-list li label {
504
+ font-size: 13px;
505
+ }
506
+
507
+ .customize-control .option-list li input,
508
+ .customize-control .column-list li input,
509
+ .customize-control .row-list li input {
510
+ margin: 2px 0 5px;
511
+ }
512
+
513
+ .happyforms-part-widget .happyforms-part-item-body {
514
+ position: relative;
515
+ padding: 0px 5px 0 20px;
516
+ background-color: white;
517
+ }
518
+
519
+ .happyforms-part-widget .happyforms-part-item-handle {
520
+ position: absolute;
521
+ left: 0;
522
+ width: 12px;
523
+ height: 100%;
524
+ cursor: move;
525
+ background-image: url(../png/draggable-handle-pattern.png);
526
+ background-repeat: round;
527
+ }
528
+
529
+ .happyforms-part-widget .happyforms-part-item-advanced {
530
+ display: none;
531
  }
532
 
533
  .happyforms-part-widget .options h3 {
539
  display: none;
540
  }
541
 
 
 
 
 
 
542
  .happyforms-part-widget .options ul:empty {
543
  display: none;
544
  }
548
  display: block;
549
  }
550
 
551
+ .happyforms-part-widget .option-actions {
552
+ margin-top: 5px;
 
 
 
 
553
  text-align: right;
554
  }
555
 
556
+ .happyforms-part-widget .options .delete-option,
557
+ .happyforms-part-widget .columns .delete-column,
558
+ .happyforms-part-widget .rows .delete-row {
559
  color: #a00;
560
  }
561
 
562
+ .happyforms-part-widget .options .delete-option:hover,
563
+ .happyforms-part-widget .columns .delete-column:hover,
564
+ .happyforms-part-widget .rows .delete-row:hover {
565
  color: #dc3232;
566
  }
567
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
568
  /**
569
  *
570
  * Form parts drawer
571
  *
572
  */
573
  body.adding-happyforms-parts .wp-full-overlay-main {
574
+ left: 300px;
575
  }
576
 
577
  #happyforms-parts-drawer {
628
  }
629
 
630
  ul.happyforms-parts-list {
631
+ margin: 0;
632
+ padding: 0;
633
+ list-style-type: none;
634
  }
635
 
636
  ul.happyforms-parts-list li.happyforms-parts-list-item {
670
  }
671
 
672
  ul.happyforms-parts-list li[data-part-type="single_line_text"] .happyforms-parts-list-item-title:before {
673
+ background-image: url(../svg/icons/short-text.svg);
674
  }
675
 
676
  ul.happyforms-parts-list li[data-part-type="multi_line_text"] .happyforms-parts-list-item-title:before {
677
+ background-image: url(../svg/icons/long-text.svg);
678
  }
679
 
680
  ul.happyforms-parts-list li[data-part-type="email"] .happyforms-parts-list-item-title:before {
681
+ background-image: url(../svg/icons/email.svg);
682
  }
683
 
684
  ul.happyforms-parts-list li[data-part-type="website_url"] .happyforms-parts-list-item-title:before {
685
+ background-image: url(../svg/icons/website-link.svg);
686
  }
687
 
688
  ul.happyforms-parts-list li[data-part-type="number"] .happyforms-parts-list-item-title:before {
883
  }
884
 
885
  .control-section h3.accordion-section-title:hover {
886
+ border-left-color: #0073aa;
887
  }
888
 
889
  .control-section h3.accordion-section-title:hover:after {
933
 
934
  @media screen and (max-width: 782px) {
935
  li.customize-control.happyforms-range-control input[type=number] {
936
+ height: auto;
937
+ line-height: 1;
938
+ font-size: 12px;
939
  }
940
  }
941
 
assets/css/frontend.css CHANGED
@@ -309,13 +309,11 @@ h3.happyforms-form__title {
309
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=tel],
310
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=number],
311
  .happyforms-form--part-value-text-align-center .happyforms-part textarea,
312
- .happyforms-form--part-value-text-align-center .happyforms-part--checkbox .option-label,
313
- .happyforms-form--part-value-text-align-center .happyforms-part--checkbox .happyforms-part__el,
314
- .happyforms-form--part-value-text-align-center .happyforms-part--radio .option-label {
315
  text-align: center;
316
  }
317
 
318
- .happyforms-form--part-value-text-align-center .happyforms-part--radio .happyforms-part__el {
319
  justify-content: center;
320
  }
321
 
@@ -324,13 +322,11 @@ h3.happyforms-form__title {
324
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=tel],
325
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=number],
326
  .happyforms-form--part-value-text-align-right .happyforms-part textarea,
327
- .happyforms-form--part-value-text-align-right .happyforms-part--checkbox .option-label,
328
- .happyforms-form--part-value-text-align-right .happyforms-part--checkbox .happyforms-part__el,
329
- .happyforms-form--part-value-text-align-right .happyforms-part--radio .option-label {
330
  text-align: right;
331
  }
332
 
333
- .happyforms-form--part-value-text-align-right .happyforms-part--radio .happyforms-part__el {
334
  justify-content: flex-end;
335
  }
336
 
@@ -519,13 +515,19 @@ h3.happyforms-form__title {
519
  font-size: var(--happyforms-part-value-font-size);
520
  }
521
 
522
- .happyforms-part--radio .option-label {
523
  margin-right: 20px;
524
  padding: 10px;
525
  background-color: #fff;
526
  }
527
 
528
- .happyforms-part--radio .option-label .border {
 
 
 
 
 
 
529
  position: absolute;
530
  top: 0;
531
  left: 0;
@@ -541,7 +543,7 @@ h3.happyforms-form__title {
541
  transition: border-color var(--happyforms-transition-duration);
542
  }
543
 
544
- .happyforms-form--part-borders-bottom-only .happyforms-part--radio .option-label .border {
545
  border-top-color: transparent;
546
  border-left-color: transparent;
547
  border-right-color: transparent;
@@ -551,13 +553,12 @@ h3.happyforms-form__title {
551
  border-color: transparent;
552
  }
553
 
554
- .happyforms-part--radio .option-label input,
555
- .happyforms-part--checkbox .option-label input {
556
  top: 3px;
557
  }
558
 
559
- .happyforms-part--radio input:checked~.border,
560
- .happyforms-part--radio .option-label:hover .border {
561
  border-width: 2px;
562
  border-color: #407fff;
563
  border-color: var(--happyforms-color-part-border-focus);
@@ -565,14 +566,14 @@ h3.happyforms-form__title {
565
  background-color: var(--happyforms-color-part-background-focus);
566
  }
567
 
568
- .happyforms-form--part-borders-bottom-only .happyforms-part--radio input:checked~.border,
569
- .happyforms-form--part-borders-bottom-only .happyforms-part--radio .option-label:hover .border {
570
  border-top-color: transparent;
571
  border-left-color: transparent;
572
  border-right-color: transparent;
573
  }
574
 
575
- .happyforms-part--radio .option-label input:focus {
576
  outline: 0;
577
  }
578
 
@@ -587,8 +588,7 @@ h3.happyforms-form__title {
587
  color: var(--happyforms-color-part-value);
588
  }
589
 
590
- .happyforms-form--direction-rtl .happyforms-part--radio .option-label .label,
591
- .happyforms-form--direction-rtl .happyforms-part--checkbox .option-label .label {
592
  margin-right: 0;
593
  }
594
 
@@ -607,7 +607,7 @@ h3.happyforms-form__title {
607
  color: var(--happyforms-color-primary);
608
  }
609
 
610
- .happyforms-part--radio.display-type--block .happyforms-part-option__description {
611
  max-width: none;
612
  }
613
 
@@ -617,10 +617,6 @@ h3.happyforms-form__title {
617
  align-items: center;
618
  }
619
 
620
- .happyforms-part--checkbox.display-type--block .option-label {
621
- margin-bottom: 10px;
622
- }
623
-
624
  /* tooltips */
625
 
626
  .happyforms-tooltip {
@@ -663,8 +659,7 @@ h3.happyforms-form__title {
663
  margin-top: 35px;
664
  }
665
 
666
- .happyforms-part--checkbox .happyforms-tooltip,
667
- .happyforms-part--radio .happyforms-tooltip,
668
  .happyforms-part--select .happyforms-tooltip,
669
  .happyforms-part--table .happyforms-tooltip,
670
  .happyforms-part--address-has-geolocation .happyforms-tooltip,
@@ -681,9 +676,9 @@ h3.happyforms-form__title {
681
  .happyforms-part--select.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__label,
682
  .happyforms-part--select.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__select-wrap,
683
  .happyforms-part--select.happyforms-part--has-tooltip.happyforms-part--label-below .happyforms-part__select-wrap,
684
- .happyforms-part--radio.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__el,
685
- .happyforms-part--radio.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__label,
686
- .happyforms-part--radio.happyforms-part--has-tooltip.happyforms-part--label-below .happyforms-part__el {
687
  margin-top: 35px;
688
  }
689
 
@@ -732,7 +727,7 @@ h3.happyforms-form__title {
732
  opacity: 0;
733
  width: auto;
734
  visibility: hidden;
735
- padding: 10px 15px;
736
  border: 1px solid #dbdbdb;
737
  border-radius: 6px;
738
  font-weight: normal;
@@ -748,8 +743,7 @@ h3.happyforms-form__title {
748
  top: 5px;
749
  }
750
 
751
- .happyforms-part--checkbox .happyforms-tooltip .happyforms-part__description,
752
- .happyforms-part--radio .happyforms-tooltip .happyforms-part__description,
753
  .happyforms-part--select .happyforms-tooltip .happyforms-part__description,
754
  .happyforms-part--address-has-geolocation .happyforms-tooltip .happyforms-part__description,
755
  .happyforms-part--table .happyforms-tooltip .happyforms-part__description,
@@ -806,19 +800,29 @@ h3.happyforms-form__title {
806
 
807
  /* parts - radio, checkbox */
808
 
809
- .happyforms-part--radio .happyforms-part__el,
810
- .happyforms-part--checkbox .happyforms-part__el {
811
  display: flex;
 
812
  }
813
 
814
- .happyforms-part--radio {
 
 
 
 
 
 
815
  margin-bottom: 0;
816
  }
817
 
818
- .happyforms-part--radio.display-type--block {
819
  margin-bottom: 20px;
820
  }
821
 
 
 
 
 
822
  .happyforms-part .checkmark {
823
  position: relative;
824
  top: 0;
@@ -1092,6 +1096,10 @@ h3.happyforms-form__title {
1092
  width: 100%;
1093
  }
1094
 
 
 
 
 
1095
  /* parts - placeholder */
1096
 
1097
  .happyforms-part--placeholder .happyforms-part__el {
@@ -1123,12 +1131,25 @@ h3.happyforms-form__title {
1123
  .happyforms-part-date--datetime.happyforms-part--width-half .happyforms-part__el,
1124
  .happyforms-part-date--datetime.happyforms-part--width-third .happyforms-part__el {
1125
  flex-wrap: wrap;
 
1126
  }
1127
 
1128
  .happyforms-part-date--datetime.happyforms-part--width-half .happyforms-part--date__input-wrap,
1129
  .happyforms-part-date--datetime.happyforms-part--width-third .happyforms-part--date__input-wrap {
1130
- min-width: 33.333%;
 
1131
  margin-bottom: 15px;
 
 
 
 
 
 
 
 
 
 
 
1132
  }
1133
 
1134
  .happyforms-part__select-wrap,
@@ -1172,20 +1193,17 @@ h3.happyforms-form__title {
1172
  text-align: center;
1173
  }
1174
 
1175
- .happyforms-part--date__time-separator span {
1176
- position: relative;
1177
- top: 7px;
1178
- }
1179
-
1180
  @media screen and (max-width: 800px) {
1181
- .happyforms-part-date__date-input {
1182
- flex: auto;
1183
- width: 33%;
1184
  }
1185
 
 
1186
  .happyforms-part-date--datetime .happyforms-part-date__time-input {
1187
  flex: auto;
1188
- width: 33%;
 
 
1189
  }
1190
 
1191
  .happyforms-part-date__time-input {
@@ -1196,8 +1214,8 @@ h3.happyforms-form__title {
1196
  padding-left: 0;
1197
  }
1198
 
1199
- .happyforms-part--date__time-separator span {
1200
- top: 28px;
1201
  }
1202
  }
1203
 
@@ -1824,7 +1842,7 @@ form > .happyforms-message-notices .error {
1824
  border-radius: 0px !important;
1825
  }
1826
 
1827
- .happyforms-form--part-border-radius-square .happyforms-part--radio .option-label .border {
1828
  border-radius: 0px;
1829
  }
1830
 
@@ -1848,7 +1866,7 @@ form > .happyforms-message-notices .error {
1848
  border-radius: 25px;
1849
  }
1850
 
1851
- .happyforms-form--part-border-radius-pill .happyforms-part--radio .option-label .border {
1852
  border-radius: 25px;
1853
  }
1854
 
@@ -2011,6 +2029,7 @@ form > .happyforms-message-notices .error {
2011
  position: absolute;
2012
  left: 11px;
2013
  top: 23px;
 
2014
  transition-property: top;
2015
  }
2016
 
@@ -2027,14 +2046,16 @@ form > .happyforms-message-notices .error {
2027
  .happyforms-part--label-as_placeholder input:focus~label,
2028
  .happyforms-part--label-as_placeholder textarea:focus~label,
2029
  .happyforms-part--label-as_placeholder.happyforms-part--filled input~label,
2030
- .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label {
 
2031
  top: 8px;
2032
  }
2033
 
2034
  .happyforms-part--label-as_placeholder input:focus~label .label,
2035
  .happyforms-part--label-as_placeholder textarea:focus~label .label,
2036
  .happyforms-part--label-as_placeholder.happyforms-part--filled input~label .label,
2037
- .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label .label {
 
2038
  font-weight: bold;
2039
  font-size: 14px;
2040
  color: #000;
@@ -2095,14 +2116,10 @@ form > .happyforms-message-notices .error {
2095
  margin-bottom: 5px;
2096
  }
2097
 
2098
- .happyforms-form--part-outer-padding-narrow .happyforms-part--radio .option-label {
2099
  margin-right: 15px;
2100
  }
2101
 
2102
- .happyforms-form--part-outer-padding-narrow .happyforms-part--checkbox.display-type--block .option-label {
2103
- margin-bottom: 0;
2104
- }
2105
-
2106
  .happyforms-form--part-outer-padding-wide .happyforms-form__part {
2107
  padding: 20px 3%;
2108
  }
@@ -2141,17 +2158,6 @@ form > .happyforms-message-notices .error {
2141
  margin-top: 5px;
2142
  }
2143
 
2144
- .happyforms-form--part-inner-padding-narrow .happyforms-part--checkbox .option-label {
2145
- margin-right: 0;
2146
- margin-bottom: 0;
2147
- padding-left: 0;
2148
- padding-right: 0;
2149
- }
2150
-
2151
- .happyforms-form--part-inner-padding-narrow .happyforms-part--checkbox .option-label .label {
2152
- padding-left: 5px;
2153
- }
2154
-
2155
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=text],
2156
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=email],
2157
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=tel],
@@ -2170,16 +2176,6 @@ form > .happyforms-message-notices .error {
2170
  top: 45%;
2171
  }
2172
 
2173
- .happyforms-form--part-inner-padding-wide .happyforms-part--checkbox .option-label {
2174
- padding-left: 0;
2175
- padding-right: 0;
2176
- margin-right: 30px;
2177
- }
2178
-
2179
- .happyforms-form--part-inner-padding-wide .happyforms-part--checkbox .option-label .label {
2180
- padding-left: 15px;
2181
- }
2182
-
2183
  .happyforms-form--part-hide-labels .happyforms-part__label {
2184
  display: none;
2185
  }
@@ -2568,18 +2564,28 @@ form > .happyforms-message-notices .error {
2568
  display: flex;
2569
  align-items: center;
2570
  padding: 5px 10px;
 
2571
  transition: background-color 0.2s ease-in;
2572
  color: #000;
2573
  color: var(--happyforms-color-dropdown-item-text);
2574
  background-color: #fff;
2575
  background-color: var(--happyforms-color-dropdown-item-bg);
2576
  }
2577
- .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item:hover {
 
 
 
 
 
2578
  color: #000;
2579
  color: var(--happyforms-color-dropdown-item-text-hover);
2580
  background-color: #dbdbdb;
2581
  background-color: var(--happyforms-color-dropdown-item-bg-hover);
2582
  }
 
 
 
 
2583
  .happyforms-custom-select-dropdown .happyforms-flag {
2584
  font-size: 30px;
2585
  }
309
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=tel],
310
  .happyforms-form--part-value-text-align-center .happyforms-part input[type=number],
311
  .happyforms-form--part-value-text-align-center .happyforms-part textarea,
312
+ .happyforms-form--part-value-text-align-center .happyforms-part--choice .option-label {
 
 
313
  text-align: center;
314
  }
315
 
316
+ .happyforms-form--part-value-text-align-center .happyforms-part--choice .happyforms-part__el {
317
  justify-content: center;
318
  }
319
 
322
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=tel],
323
  .happyforms-form--part-value-text-align-right .happyforms-part input[type=number],
324
  .happyforms-form--part-value-text-align-right .happyforms-part textarea,
325
+ .happyforms-form--part-value-text-align-right .happyforms-part--choice .option-label {
 
 
326
  text-align: right;
327
  }
328
 
329
+ .happyforms-form--part-value-text-align-right .happyforms-part--choice .happyforms-part__el {
330
  justify-content: flex-end;
331
  }
332
 
515
  font-size: var(--happyforms-part-value-font-size);
516
  }
517
 
518
+ .happyforms-part--choice .option-label {
519
  margin-right: 20px;
520
  padding: 10px;
521
  background-color: #fff;
522
  }
523
 
524
+ @media screen and (max-width: 800px) {
525
+ .happyforms-part--choice .option-label {
526
+ margin-right: 0;
527
+ }
528
+ }
529
+
530
+ .happyforms-part--choice .option-label .border {
531
  position: absolute;
532
  top: 0;
533
  left: 0;
543
  transition: border-color var(--happyforms-transition-duration);
544
  }
545
 
546
+ .happyforms-form--part-borders-bottom-only .happyforms-part--choice .option-label .border {
547
  border-top-color: transparent;
548
  border-left-color: transparent;
549
  border-right-color: transparent;
553
  border-color: transparent;
554
  }
555
 
556
+ .happyforms-part--choice .option-label input {
 
557
  top: 3px;
558
  }
559
 
560
+ .happyforms-part--choice input:checked~.border,
561
+ .happyforms-part--choice .option-label:hover .border {
562
  border-width: 2px;
563
  border-color: #407fff;
564
  border-color: var(--happyforms-color-part-border-focus);
566
  background-color: var(--happyforms-color-part-background-focus);
567
  }
568
 
569
+ .happyforms-form--part-borders-bottom-only .happyforms-part--choice input:checked~.border,
570
+ .happyforms-form--part-borders-bottom-only .happyforms-part--choice .option-label:hover .border {
571
  border-top-color: transparent;
572
  border-left-color: transparent;
573
  border-right-color: transparent;
574
  }
575
 
576
+ .happyforms-part--choice .option-label input:focus {
577
  outline: 0;
578
  }
579
 
588
  color: var(--happyforms-color-part-value);
589
  }
590
 
591
+ .happyforms-form--direction-rtl .happyforms-part--choice .option-label .label {
 
592
  margin-right: 0;
593
  }
594
 
607
  color: var(--happyforms-color-primary);
608
  }
609
 
610
+ .happyforms-part--choice.display-type--block .happyforms-part-option__description {
611
  max-width: none;
612
  }
613
 
617
  align-items: center;
618
  }
619
 
 
 
 
 
620
  /* tooltips */
621
 
622
  .happyforms-tooltip {
659
  margin-top: 35px;
660
  }
661
 
662
+ .happyforms-part--choice .happyforms-tooltip,
 
663
  .happyforms-part--select .happyforms-tooltip,
664
  .happyforms-part--table .happyforms-tooltip,
665
  .happyforms-part--address-has-geolocation .happyforms-tooltip,
676
  .happyforms-part--select.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__label,
677
  .happyforms-part--select.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__select-wrap,
678
  .happyforms-part--select.happyforms-part--has-tooltip.happyforms-part--label-below .happyforms-part__select-wrap,
679
+ .happyforms-part--choice.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__el,
680
+ .happyforms-part--choice.happyforms-part--has-tooltip.happyforms-part--label-left .happyforms-part__label,
681
+ .happyforms-part--choice.happyforms-part--has-tooltip.happyforms-part--label-below .happyforms-part__el {
682
  margin-top: 35px;
683
  }
684
 
727
  opacity: 0;
728
  width: auto;
729
  visibility: hidden;
730
+ padding: 11px 15px;
731
  border: 1px solid #dbdbdb;
732
  border-radius: 6px;
733
  font-weight: normal;
743
  top: 5px;
744
  }
745
 
746
+ .happyforms-part--choice .happyforms-tooltip .happyforms-part__description,
 
747
  .happyforms-part--select .happyforms-tooltip .happyforms-part__description,
748
  .happyforms-part--address-has-geolocation .happyforms-tooltip .happyforms-part__description,
749
  .happyforms-part--table .happyforms-tooltip .happyforms-part__description,
800
 
801
  /* parts - radio, checkbox */
802
 
803
+ .happyforms-part--choice .happyforms-part__el {
 
804
  display: flex;
805
+ flex-flow: row wrap;
806
  }
807
 
808
+ @media screen and (max-width: 800px) {
809
+ .happyforms-part--choice .happyforms-part__el {
810
+ flex-flow: column wrap;
811
+ }
812
+ }
813
+
814
+ .happyforms-part--choice {
815
  margin-bottom: 0;
816
  }
817
 
818
+ .happyforms-part--choice.display-type--block {
819
  margin-bottom: 20px;
820
  }
821
 
822
+ .happyforms-part--choice.display-type--block .happyforms-part__el {
823
+ flex-flow: column wrap;
824
+ }
825
+
826
  .happyforms-part .checkmark {
827
  position: relative;
828
  top: 0;
1096
  width: 100%;
1097
  }
1098
 
1099
+ .happyforms-part--label-hidden .happyforms-part__label {
1100
+ display: none;
1101
+ }
1102
+
1103
  /* parts - placeholder */
1104
 
1105
  .happyforms-part--placeholder .happyforms-part__el {
1131
  .happyforms-part-date--datetime.happyforms-part--width-half .happyforms-part__el,
1132
  .happyforms-part-date--datetime.happyforms-part--width-third .happyforms-part__el {
1133
  flex-wrap: wrap;
1134
+ justify-content: space-between;
1135
  }
1136
 
1137
  .happyforms-part-date--datetime.happyforms-part--width-half .happyforms-part--date__input-wrap,
1138
  .happyforms-part-date--datetime.happyforms-part--width-third .happyforms-part--date__input-wrap {
1139
+ min-width: 31.5%;
1140
+ max-width: 31.5%;
1141
  margin-bottom: 15px;
1142
+ padding: 0;
1143
+ }
1144
+
1145
+ .happyforms-part-date--datetime.happyforms-part--width-half .happyforms-part-date__time-input--period {
1146
+ min-width: 0;
1147
+ flex: 1;
1148
+ }
1149
+
1150
+ .happyforms-part-date--datetime.happyforms-part--width-half .happyforms-part--date__time-separator,
1151
+ .happyforms-part-date--datetime.happyforms-part--width-third .happyforms-part--date__time-separator {
1152
+ display: none;
1153
  }
1154
 
1155
  .happyforms-part__select-wrap,
1193
  text-align: center;
1194
  }
1195
 
 
 
 
 
 
1196
  @media screen and (max-width: 800px) {
1197
+ .happyforms-part--date .happyforms-part__el {
1198
+ justify-content: space-between;
 
1199
  }
1200
 
1201
+ .happyforms-part-date__date-input,
1202
  .happyforms-part-date--datetime .happyforms-part-date__time-input {
1203
  flex: auto;
1204
+ min-width: 31.5%;
1205
+ max-width: 31.5%;
1206
+ padding: 0;
1207
  }
1208
 
1209
  .happyforms-part-date__time-input {
1214
  padding-left: 0;
1215
  }
1216
 
1217
+ .happyforms-part--date__time-separator {
1218
+ display: none;
1219
  }
1220
  }
1221
 
1842
  border-radius: 0px !important;
1843
  }
1844
 
1845
+ .happyforms-form--part-border-radius-square .happyforms-part--choice .option-label .border {
1846
  border-radius: 0px;
1847
  }
1848
 
1866
  border-radius: 25px;
1867
  }
1868
 
1869
+ .happyforms-form--part-border-radius-pill .happyforms-part--choice .option-label .border {
1870
  border-radius: 25px;
1871
  }
1872
 
2029
  position: absolute;
2030
  left: 11px;
2031
  top: 23px;
2032
+ z-index: 5;
2033
  transition-property: top;
2034
  }
2035
 
2046
  .happyforms-part--label-as_placeholder input:focus~label,
2047
  .happyforms-part--label-as_placeholder textarea:focus~label,
2048
  .happyforms-part--label-as_placeholder.happyforms-part--filled input~label,
2049
+ .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label.address-city,
2050
+ .happyforms-part--select.happyforms-part--label-as_placeholder.happyforms-part--filled label {
2051
  top: 8px;
2052
  }
2053
 
2054
  .happyforms-part--label-as_placeholder input:focus~label .label,
2055
  .happyforms-part--label-as_placeholder textarea:focus~label .label,
2056
  .happyforms-part--label-as_placeholder.happyforms-part--filled input~label .label,
2057
+ .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label .label,
2058
+ .happyforms-part--select.happyforms-part--filled.happyforms-part--label-as_placeholder .label {
2059
  font-weight: bold;
2060
  font-size: 14px;
2061
  color: #000;
2116
  margin-bottom: 5px;
2117
  }
2118
 
2119
+ .happyforms-form--part-outer-padding-narrow .happyforms-part--choice .option-label {
2120
  margin-right: 15px;
2121
  }
2122
 
 
 
 
 
2123
  .happyforms-form--part-outer-padding-wide .happyforms-form__part {
2124
  padding: 20px 3%;
2125
  }
2158
  margin-top: 5px;
2159
  }
2160
 
 
 
 
 
 
 
 
 
 
 
 
2161
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=text],
2162
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=email],
2163
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=tel],
2176
  top: 45%;
2177
  }
2178
 
 
 
 
 
 
 
 
 
 
 
2179
  .happyforms-form--part-hide-labels .happyforms-part__label {
2180
  display: none;
2181
  }
2564
  display: flex;
2565
  align-items: center;
2566
  padding: 5px 10px;
2567
+ min-height: 35px;
2568
  transition: background-color 0.2s ease-in;
2569
  color: #000;
2570
  color: var(--happyforms-color-dropdown-item-text);
2571
  background-color: #fff;
2572
  background-color: var(--happyforms-color-dropdown-item-bg);
2573
  }
2574
+ .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder {
2575
+ color: #888888;
2576
+ color: var(--happyforms-color-part-placeholder);
2577
+ }
2578
+ .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item:hover,
2579
+ .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder:hover {
2580
  color: #000;
2581
  color: var(--happyforms-color-dropdown-item-text-hover);
2582
  background-color: #dbdbdb;
2583
  background-color: var(--happyforms-color-dropdown-item-bg-hover);
2584
  }
2585
+ .happyforms-part-select--required .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder,
2586
+ .happyforms-part-date--required .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder {
2587
+ display: none;
2588
+ }
2589
  .happyforms-custom-select-dropdown .happyforms-flag {
2590
  font-size: 30px;
2591
  }
assets/css/preview.css CHANGED
@@ -76,4 +76,8 @@ a.happyforms-ask-link.customize-unpreviewable {
76
  .happyforms-part--focus-reveal-description input:focus + .happyforms-part__tooltip + .happyforms-part__description,
77
  .happyforms-part--focus-reveal-description textarea:focus + .happyforms-part__tooltip + .happyforms-part__description {
78
  display: block;
 
 
 
 
79
  }
76
  .happyforms-part--focus-reveal-description input:focus + .happyforms-part__tooltip + .happyforms-part__description,
77
  .happyforms-part--focus-reveal-description textarea:focus + .happyforms-part__tooltip + .happyforms-part__description {
78
  display: block;
79
+ }
80
+
81
+ .preview-hidden {
82
+ display: none !important;
83
  }
assets/js/customize.js CHANGED
@@ -301,7 +301,9 @@
301
  },
302
 
303
  enableSave: function() {
304
- $( '#happyforms-save-button', this.$el ).removeAttr( 'disabled' );
 
 
305
  },
306
 
307
  disableSave: function() {
@@ -344,11 +346,13 @@
344
 
345
  this.disableSave();
346
 
347
- this.model.save( {
348
  success: function() {
349
- window.location.href = $( '#happyforms-close-link' ).attr( 'href' );
 
 
350
  }
351
- } );
352
  },
353
  } );
354
 
@@ -884,12 +888,16 @@
884
  * @return void
885
  */
886
  onRequiredCheckboxChange: function() {
887
- var data = {
888
- id: this.model.id,
889
- callback: 'onRequiredCheckboxChangeCallback',
890
- };
891
 
892
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
 
 
 
 
 
893
  },
894
 
895
  /**
@@ -1155,19 +1163,10 @@
1155
  api.previewer.send('happyforms-part-dom-update', data);
1156
  },
1157
 
1158
- onAdvancedSettingsClick: function(e) {
1159
- var $link = $(e.target);
1160
- var $advancedSettingsWrap = this.$el.find('.happyforms-part-advanced-settings-wrap');
1161
-
1162
- if ( $advancedSettingsWrap.is(':hidden') ) {
1163
- $advancedSettingsWrap.slideDown(300, function() {
1164
- $link.addClass('opened');
1165
- });
1166
- } else {
1167
- $advancedSettingsWrap.slideUp(300, function() {
1168
- $link.removeClass('opened');
1169
- });
1170
- }
1171
  }
1172
  } );
1173
 
@@ -1582,20 +1581,19 @@
1582
  initFormWidthSlider: function(reInit) {
1583
  var self = this;
1584
 
1585
- var $container = this.$el.find('.happyforms-range-control.form-width-control');
1586
- var $slider = $('.happyforms-range-slider', $container);
1587
- var $sliderInput = $('input', $container);
1588
- var $unitSwitch = $('.happyforms-unit-switch', $container);
1589
 
1590
- var value = ($sliderInput.val()) ? parseFloat($sliderInput.val()) : 100;
1591
- var currentWidth = this.model.get('form_width').toString();
1592
- var variable = $container.data('variable');
1593
  var unit = $unitSwitch.val();
1594
 
1595
- if ( typeof reInit === 'undefined' || !reInit ) {
1596
- if ( currentWidth.indexOf('%') !== -1 ) {
1597
  unit = '%';
1598
- } else if ( currentWidth.indexOf('px') !== -1 ) {
1599
  unit = 'px';
1600
  } else {
1601
  unit = '%';
@@ -1604,40 +1602,40 @@
1604
  $unitSwitch.val(unit);
1605
  }
1606
 
1607
- var min = (unit === 'px') ? 360 : 0;
1608
- var max = (unit === 'px') ? 1440 : 100;
1609
- var step = (unit === 'px') ? 10 : 5;
1610
 
1611
- $sliderInput.attr('min', min);
1612
- $sliderInput.attr('max', max);
1613
- $sliderInput.attr('step', step);
1614
 
1615
  $unitSwitch.on('change', function () {
1616
  self.initFormWidthSlider(true);
1617
  });
1618
 
1619
- if (typeof reInit !== 'undefined' && reInit) {
1620
- value = (unit === '%') ? 100 : 900;
1621
 
1622
- self.updateFormWidth(value, unit, $slider);
1623
  }
1624
 
1625
- $sliderInput.val(value);
1626
 
1627
- $sliderInput.on('keyup, change', function () {
1628
  var $this = $(this);
1629
 
1630
  self.updateFormWidth($this.val(), unit, $slider);
1631
  });
1632
 
1633
  $slider.slider({
1634
- value: value,
1635
  min: min,
1636
  max: max,
1637
  step: step,
1638
 
1639
  stop: function (e, ui) {
1640
- $sliderInput.val(ui.value);
1641
 
1642
  self.updateFormWidth(ui.value, unit, $slider);
1643
  }
@@ -1755,12 +1753,12 @@
1755
  var part = happyForms.form.get( 'parts' ).get( id );
1756
  var $part = this.$( html );
1757
  var required = part.get( 'required' );
1758
- var $required = this.$( '.happyforms-required', $part );
1759
 
1760
- if ( parseInt(required, 10 ) === 1) {
1761
- $required.show();
1762
  } else {
1763
- $required.hide();
1764
  }
1765
  },
1766
 
301
  },
302
 
303
  enableSave: function() {
304
+ var $saveButton = $( '#happyforms-save-button', this.$el );
305
+
306
+ $saveButton.removeAttr( 'disabled' ).text( $saveButton.data( 'text-default' ) );
307
  },
308
 
309
  disableSave: function() {
346
 
347
  this.disableSave();
348
 
349
+ this.model.save({
350
  success: function() {
351
+ var $saveButton = $( '#happyforms-save-button', this.$el );
352
+
353
+ $saveButton.text( $saveButton.data('text-saved') );
354
  }
355
+ });
356
  },
357
  } );
358
 
888
  * @return void
889
  */
890
  onRequiredCheckboxChange: function() {
891
+ var model = this.model;
 
 
 
892
 
893
+ model.fetchHtml( function( response ) {
894
+ var data = {
895
+ id: model.get( 'id' ),
896
+ html: response,
897
+ };
898
+
899
+ happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
900
+ } );
901
  },
902
 
903
  /**
1163
  api.previewer.send('happyforms-part-dom-update', data);
1164
  },
1165
 
1166
+ onAdvancedSettingsClick: function( e ) {
1167
+ $( '.happyforms-part-advanced-settings-wrap', this.$el ).slideToggle( 300, function() {
1168
+ $( e.target ).toggleClass( 'opened' );
1169
+ } );
 
 
 
 
 
 
 
 
 
1170
  }
1171
  } );
1172
 
1581
  initFormWidthSlider: function(reInit) {
1582
  var self = this;
1583
 
1584
+ var $container = this.$el.find( '.happyforms-range-control.form-width-control' );
1585
+ var $slider = $( '.happyforms-range-slider', $container );
1586
+ var $input = $( 'input', $container );
1587
+ var $unitSwitch = $( '.happyforms-unit-switch', $container );
1588
 
1589
+ var stringValue = this.model.get('form_width').toString();
1590
+ var numericValue = (stringValue) ? parseFloat(stringValue.replace(/px|%/gi, '')) : 100;
 
1591
  var unit = $unitSwitch.val();
1592
 
1593
+ if ( ! reInit ) {
1594
+ if ( -1 !== stringValue.indexOf('%') ) {
1595
  unit = '%';
1596
+ } else if ( -1 !== stringValue.indexOf('px') ) {
1597
  unit = 'px';
1598
  } else {
1599
  unit = '%';
1602
  $unitSwitch.val(unit);
1603
  }
1604
 
1605
+ var min = ('px' === unit) ? 360 : 0;
1606
+ var max = ('px' === unit) ? 1440 : 100;
1607
+ var step = ('px' === unit) ? 10 : 5;
1608
 
1609
+ $input.attr('min', min);
1610
+ $input.attr('max', max);
1611
+ $input.attr('step', step);
1612
 
1613
  $unitSwitch.on('change', function () {
1614
  self.initFormWidthSlider(true);
1615
  });
1616
 
1617
+ if ( reInit ) {
1618
+ numericValue = ('%' === unit) ? 100 : 900;
1619
 
1620
+ self.updateFormWidth(numericValue, unit, $slider);
1621
  }
1622
 
1623
+ $input.val(numericValue);
1624
 
1625
+ $input.on('keyup, change', function () {
1626
  var $this = $(this);
1627
 
1628
  self.updateFormWidth($this.val(), unit, $slider);
1629
  });
1630
 
1631
  $slider.slider({
1632
+ value: numericValue,
1633
  min: min,
1634
  max: max,
1635
  step: step,
1636
 
1637
  stop: function (e, ui) {
1638
+ $input.val(ui.value);
1639
 
1640
  self.updateFormWidth(ui.value, unit, $slider);
1641
  }
1753
  var part = happyForms.form.get( 'parts' ).get( id );
1754
  var $part = this.$( html );
1755
  var required = part.get( 'required' );
1756
+ var $optional = this.$( '.happyforms-optional', $part );
1757
 
1758
+ if ( 0 === parseInt(required, 10 ) ) {
1759
+ $optional.removeClass('preview-hidden');
1760
  } else {
1761
+ $optional.addClass('preview-hidden');
1762
  }
1763
  },
1764
 
assets/js/frontend/number.js CHANGED
@@ -28,7 +28,7 @@
28
  numeral: true,
29
  numeralDecimalMark: numeralDecimalMark,
30
  delimiter: delimiter,
31
- prefix: prefix,
32
  } );
33
 
34
  self.cleaveInstances.push( cleave );
28
  numeral: true,
29
  numeralDecimalMark: numeralDecimalMark,
30
  delimiter: delimiter,
31
+ prefix: prefix
32
  } );
33
 
34
  self.cleaveInstances.push( cleave );
assets/js/frontend/phone.js CHANGED
@@ -7,7 +7,8 @@
7
  this.type = this.$el.data( 'happyforms-type' );
8
  this.$input = $( '.happyforms-part-phone-wrap > input', this.$el );
9
  this.masked = this.$el.attr( 'data-mask' );
10
- this.$countryCode = $( 'input[type=hidden]', this.$el );
 
11
  this.prefix = '';
12
 
13
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
@@ -41,7 +42,7 @@
41
  if ( this.masked ) {
42
  this.cleaveInstances = this.$input.not(':hidden').map(function (i, input) {
43
  var $input = $(input);
44
- var code = $( 'input[type=hidden]', this.$el ).val();
45
  var rawValue = $input.val();
46
 
47
  this.prefix = code;
@@ -209,6 +210,7 @@
209
  this.$currentFlag.html($flag); // replace flag
210
 
211
  this.inputObject.$countryCode.val($li.attr('data-code'));
 
212
 
213
  // re-init cleave
214
  this.inputObject.destroyCleave();
7
  this.type = this.$el.data( 'happyforms-type' );
8
  this.$input = $( '.happyforms-part-phone-wrap > input', this.$el );
9
  this.masked = this.$el.attr( 'data-mask' );
10
+ this.$countryCode = $( 'input.happyforms-phone-code', this.$el );
11
+ this.$country = $( 'input.happyforms-phone-country', this.$el );
12
  this.prefix = '';
13
 
14
  this.$input.on( 'keyup', this.triggerChange.bind( this ) );
42
  if ( this.masked ) {
43
  this.cleaveInstances = this.$input.not(':hidden').map(function (i, input) {
44
  var $input = $(input);
45
+ var code = self.$countryCode.val();
46
  var rawValue = $input.val();
47
 
48
  this.prefix = code;
210
  this.$currentFlag.html($flag); // replace flag
211
 
212
  this.inputObject.$countryCode.val($li.attr('data-code'));
213
+ this.inputObject.$country.val($li.attr('data-country'));
214
 
215
  // re-init cleave
216
  this.inputObject.destroyCleave();
assets/js/lib/happyforms-select.js CHANGED
@@ -14,6 +14,11 @@
14
  this.$dropdown = $('.happyforms-custom-select-dropdown', this.$el);
15
 
16
  this.defaultValue = '';
 
 
 
 
 
17
  }
18
 
19
  var happyformsSelectMethods = {
@@ -37,6 +42,11 @@
37
  this.defaultLabel = $defaultItem.data('label');
38
  }
39
 
 
 
 
 
 
40
  this.bindEvents();
41
  this.verifyValue();
42
  },
@@ -64,7 +74,7 @@
64
  this.verifyValue();
65
  this.$dropdown.hide();
66
 
67
- $( 'li', this.$dropdown ).show();
68
  },
69
 
70
  onWrapperClick: function ( e ) {
@@ -125,7 +135,7 @@
125
  }
126
  },
127
 
128
- verifyValue: function( e ) {
129
  var value = this.$input.val();
130
  var self = this;
131
 
@@ -144,23 +154,28 @@
144
  self.$input.val(liValue);
145
  }
146
 
 
 
 
147
  return false;
148
  } else {
149
- self.$input.val(self.defaultValue);
150
  }
151
  });
152
  } else {
153
- self.$input.val(this.defaultLabel);
154
- self.$select.val(this.defaultValue);
155
  }
156
 
 
 
157
  this.$el.trigger( 'happyforms-change' );
158
  },
159
 
160
  cleanUp: function() {
161
  $( 'input', this.$el ).off( 'change.happyformsSelect keyup.happyformsSelect focus.happyformsSelect click.happyformsSelect' );
162
  $( '.happyforms-part-select__dropdown li', this.$el ).off( 'click.happyformsSelect keyup.happyformsSelect' );
163
- },
164
  }
165
 
166
  $.fn.happyformsSelect = function( options ) {
14
  this.$dropdown = $('.happyforms-custom-select-dropdown', this.$el);
15
 
16
  this.defaultValue = '';
17
+ this.defaultLabel = '';
18
+
19
+ this.$placeholder = $( 'li.happyforms-custom-select-dropdown__placeholder', this.$dropdown );
20
+ this.placeholderValue = '';
21
+ this.placeholderLabel = '';
22
  }
23
 
24
  var happyformsSelectMethods = {
42
  this.defaultLabel = $defaultItem.data('label');
43
  }
44
 
45
+ if ( '' === this.defaultLabel && '' === this.defaultValue && this.$placeholder.length ) {
46
+ this.defaultValue = this.placeholderValue;
47
+ this.defaultLabel = this.placeholderLabel;
48
+ }
49
+
50
  this.bindEvents();
51
  this.verifyValue();
52
  },
74
  this.verifyValue();
75
  this.$dropdown.hide();
76
 
77
+ $( 'li.happyforms-custom-select-dropdown__item', this.$dropdown ).show();
78
  },
79
 
80
  onWrapperClick: function ( e ) {
135
  }
136
  },
137
 
138
+ verifyValue: function() {
139
  var value = this.$input.val();
140
  var self = this;
141
 
154
  self.$input.val(liValue);
155
  }
156
 
157
+ self.defaultLabel = liLabel;
158
+ self.defaultValue = liValue;
159
+
160
  return false;
161
  } else {
162
+ self.$input.val(self.defaultLabel);
163
  }
164
  });
165
  } else {
166
+ self.$input.val(self.placeholderLabel);
167
+ self.$select.val(self.placeholderValue);
168
  }
169
 
170
+ self.$input.trigger('blur');
171
+
172
  this.$el.trigger( 'happyforms-change' );
173
  },
174
 
175
  cleanUp: function() {
176
  $( 'input', this.$el ).off( 'change.happyformsSelect keyup.happyformsSelect focus.happyformsSelect click.happyformsSelect' );
177
  $( '.happyforms-part-select__dropdown li', this.$el ).off( 'click.happyformsSelect keyup.happyformsSelect' );
178
+ }
179
  }
180
 
181
  $.fn.happyformsSelect = function( options ) {
assets/js/parts/part-checkbox.js CHANGED
@@ -34,111 +34,173 @@
34
  model: OptionModel,
35
  } );
36
 
37
- var CheckboxView = happyForms.classes.views.Part.extend( {
38
- template: '#customize-happyforms-checkbox-template',
39
- itemCustomizeTemplate: '#customize-happyforms-checkbox-item-template',
 
 
 
 
 
 
 
40
 
41
- initialize: function() {
42
- happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
 
43
 
44
- this.listenTo( this.model.get( 'options' ), 'add change remove', this.onOptionsChange );
45
  this.listenTo( this, 'ready', this.onReady );
46
  },
47
 
48
- events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
49
- 'click .add-option': 'onAddOptionClick',
50
- 'change [name=display_type]': 'onDisplayTypeChange',
51
- 'keyup li [name=label]': 'onCheckboxItemLabelChange',
52
- 'change li [name=is_default]': 'onCheckboxItemDefaultChange',
53
- 'click li .delete-option': 'onDeleteOptionClick',
54
- } ),
55
 
56
- onReady: function() {
57
- this.model.get( 'options' ).each( function( itemModel ) {
58
- this.appendOptionPartial( itemModel );
59
- }, this );
60
  },
61
 
62
- onOptionsChange: function() {
63
- this.model.trigger( 'change' );
64
  },
65
 
66
- appendOptionPartial: function( itemModel ) {
67
- var customizeTemplate = _.template( $( this.itemCustomizeTemplate ).html() );
68
- var customizeHTML = customizeTemplate( { item: itemModel.toJSON() } );
69
- var $optionEl = $(customizeHTML);
70
 
71
- $( '.options ul', this.$el ).append( $optionEl );
72
- $( 'input[type=text]', $optionEl ).focus();
 
73
  },
74
 
75
- onAddOptionClick: function( e ) {
76
  e.preventDefault();
77
 
78
- var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
79
- var itemModel = new OptionModel( { id: itemID } );
80
- this.model.get( 'options' ).add( itemModel );
81
-
82
- this.appendOptionPartial( itemModel );
83
 
84
- var model = this.model;
 
 
85
 
86
- this.model.fetchHtml( function( response ) {
87
- var data = {
88
- id: model.get( 'id' ),
89
- html: response,
90
- };
 
 
91
 
92
- happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
93
- } );
94
  },
95
 
96
- onCheckboxItemLabelChange: function( e ) {
97
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
98
- var itemModel = this.model.get( 'options' ).get( itemID );
99
-
100
- itemModel.set( 'label', $( e.target ).val() );
101
 
102
  var data = {
103
- id: this.model.get( 'id' ),
104
- callback: 'onCheckboxItemLabelChangeCallback',
105
  options: {
106
- itemID: itemID,
107
  }
108
  };
109
 
110
  api.previewer.send( 'happyforms-part-dom-update', data );
111
  },
112
 
113
- onCheckboxItemDefaultChange: function( e ) {
114
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
115
- var itemModel = this.model.get( 'options' ).get( itemID );
116
 
117
- if ( $( e.target ).is( ':checked' ) ) {
118
- itemModel.set( 'is_default', 1 );
119
- } else {
120
- itemModel.set( 'is_default', 0 );
 
 
 
 
 
121
  }
122
 
123
  var data = {
124
- id: this.model.get( 'id' ),
125
  callback: 'onCheckboxItemDefaultChangeCallback',
126
  options: {
127
- itemID: itemID,
128
  }
129
  };
130
 
131
  api.previewer.send( 'happyforms-part-dom-update', data );
132
  },
 
133
 
134
- onDeleteOptionClick: function( e ) {
135
- e.preventDefault();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
 
137
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
138
- var itemModel = this.model.get( 'options' ).get( itemID );
 
139
 
140
- this.model.get( 'options' ).remove( itemModel );
141
- $( '[data-item-id="' + itemModel.get( 'id' ) + '"]', this.$el ).remove();
 
 
 
 
 
 
 
 
 
 
142
 
143
  if ( this.model.get( 'options' ).length == 0 ) {
144
  $( '.options ul', this.$el ).html( '' );
@@ -148,21 +210,112 @@
148
  id: this.model.get( 'id' ),
149
  callback: 'onCheckboxItemDeleteCallback',
150
  options: {
151
- itemID: itemID,
152
  }
153
  };
154
 
155
  api.previewer.send( 'happyforms-part-dom-update', data );
156
  },
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  onDisplayTypeChange: function(e) {
 
 
 
 
 
159
  var data = {
160
  id: this.model.get( 'id' ),
161
  callback: 'onCheckboxDisplayTypeChangeCallback',
162
  };
163
 
164
  api.previewer.send( 'happyforms-part-dom-update', data );
165
- }
 
 
 
 
 
 
 
 
 
166
  } );
167
 
168
  happyForms.previewer = _.extend( happyForms.previewer, {
@@ -183,7 +336,7 @@
183
  var option = part.get( 'options' ).get( options.itemID );
184
  var $option = $( '#' + options.itemID, $part );
185
 
186
- $( 'span.label', $option ).text( option.get( 'label' ) );
187
  },
188
 
189
  onCheckboxItemDefaultChangeCallback: function( id, html, options ) {
@@ -192,7 +345,16 @@
192
  var option = part.get( 'options' ).get( options.itemID );
193
  var $option = $( '#' + options.itemID, $part );
194
 
195
- $( 'input', $option ).prop( 'checked', option.get( 'is_default' ) );
 
 
 
 
 
 
 
 
 
196
  },
197
 
198
  onCheckboxItemDeleteCallback: function( id, html, options ) {
34
  model: OptionModel,
35
  } );
36
 
37
+ var OptionView = Backbone.View.extend( {
38
+ template: '#customize-happyforms-checkbox-item-template',
39
+
40
+ events: {
41
+ 'click .advanced-option': 'onAdvancedOptionClick',
42
+ 'click .delete-option': 'onDeleteOptionClick',
43
+ 'keyup [name=label]': 'onItemLabelChange',
44
+ 'keyup [name=description]': 'onItemDescriptionChange',
45
+ 'change [name=is_default]': 'onItemDefaultChange',
46
+ },
47
 
48
+ initialize: function( options ) {
49
+ this.template = _.template( $( this.template ).text() );
50
+ this.part = options.part;
51
 
 
52
  this.listenTo( this, 'ready', this.onReady );
53
  },
54
 
55
+ render: function() {
56
+ this.setElement( this.template( this.model.toJSON() ) );
 
 
 
 
 
57
 
58
+ return this;
 
 
 
59
  },
60
 
61
+ onReady: function() {
62
+ $( '[name=label]', this.$el ).focus();
63
  },
64
 
65
+ onAdvancedOptionClick: function( e ) {
66
+ e.preventDefault();
 
 
67
 
68
+ $( '.happyforms-part-item-advanced', this.$el ).slideToggle( 300, function() {
69
+ $( e.target ).toggleClass( 'opened' );
70
+ } );
71
  },
72
 
73
+ onDeleteOptionClick: function( e ) {
74
  e.preventDefault();
75
 
76
+ this.model.collection.remove( this.model );
77
+ },
 
 
 
78
 
79
+ onItemLabelChange: function( e ) {
80
+ this.model.set( 'label', $( e.target ).val() );
81
+ this.part.trigger( 'change' );
82
 
83
+ var data = {
84
+ id: this.part.get( 'id' ),
85
+ callback: 'onCheckboxItemLabelChangeCallback',
86
+ options: {
87
+ itemID: this.model.get( 'id' ),
88
+ }
89
+ };
90
 
91
+ api.previewer.send( 'happyforms-part-dom-update', data );
 
92
  },
93
 
94
+ onItemDescriptionChange: function( e ) {
95
+ this.model.set( 'description', $( e.target ).val() );
96
+ this.part.trigger( 'change' );
 
 
97
 
98
  var data = {
99
+ id: this.part.get( 'id' ),
100
+ callback: 'onCheckboxItemDescriptionChangeCallback',
101
  options: {
102
+ itemID: this.model.get( 'id' ),
103
  }
104
  };
105
 
106
  api.previewer.send( 'happyforms-part-dom-update', data );
107
  },
108
 
109
+ onItemDefaultChange: function( e ) {
110
+ var isChecked = $( e.target ).is( ':checked' );
 
111
 
112
+ this.model.collection.forEach( function( item ) {
113
+ item.set( 'is_default', 0 );
114
+ } );
115
+
116
+ $( '[name=option_is_default]', this.$el.siblings() ).attr( 'checked', false );
117
+
118
+ if ( isChecked ) {
119
+ this.model.set( 'is_default', 1 );
120
+ $( e.target ).attr( 'checked', true );
121
  }
122
 
123
  var data = {
124
+ id: this.part.get( 'id' ),
125
  callback: 'onCheckboxItemDefaultChangeCallback',
126
  options: {
127
+ itemID: this.model.get( 'id' ),
128
  }
129
  };
130
 
131
  api.previewer.send( 'happyforms-part-dom-update', data );
132
  },
133
+ } );
134
 
135
+ var CheckboxView = happyForms.classes.views.Part.extend( {
136
+ template: '#customize-happyforms-checkbox-template',
137
+
138
+ events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
139
+ 'click .add-option': 'onAddOptionClick',
140
+ 'change [name=display_type]': 'onDisplayTypeChange',
141
+ 'keyup [name=label]': 'onEnterKey',
142
+ 'keyup [name=description]': 'onEnterKey',
143
+ } ),
144
+
145
+ initialize: function() {
146
+ happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
147
+
148
+ this.optionViews = new Backbone.Collection();
149
+
150
+ this.listenTo( this.model.get( 'options' ), 'add', this.onOptionModelAdd );
151
+ this.listenTo( this.model.get( 'options' ), 'change', this.onOptionModelChange );
152
+ this.listenTo( this.model.get( 'options' ), 'remove', this.onOptionModelRemove );
153
+ this.listenTo( this.model.get( 'options' ), 'reset', this.onOptionModelsSorted );
154
+ this.listenTo( this.optionViews, 'add', this.onOptionViewAdd );
155
+ this.listenTo( this.optionViews, 'remove', this.onOptionViewRemove );
156
+ this.listenTo( this.optionViews, 'reset', this.onOptionViewsSorted );
157
+ this.listenTo( this, 'sort-stop', this.onOptionSortStop );
158
+ this.listenTo( this, 'ready', this.onReady );
159
+ },
160
+
161
+ onReady: function() {
162
+ this.model.get( 'options' ).each( function( optionModel ) {
163
+ this.addOptionView( optionModel );
164
+ }, this );
165
+
166
+ $( '.option-list', this.$el ).sortable( {
167
+ handle: '.happyforms-part-item-handle',
168
+ helper: 'clone',
169
+
170
+ stop: function ( e, ui ) {
171
+ this.trigger( 'sort-stop', e, ui );
172
+ }.bind( this ),
173
+ } );
174
+ },
175
+
176
+ onOptionModelAdd: function( optionModel, optionsCollection, options ) {
177
+ this.model.trigger( 'change' );
178
+ this.addOptionView( optionModel, options );
179
+
180
+ var model = this.model;
181
+
182
+ this.model.fetchHtml( function( response ) {
183
+ var data = {
184
+ id: model.get( 'id' ),
185
+ html: response,
186
+ };
187
 
188
+ happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
189
+ } );
190
+ },
191
 
192
+ onOptionModelChange: function( optionModel ) {
193
+ this.model.trigger( 'change' );
194
+ },
195
+
196
+ onOptionModelRemove: function( optionModel ) {
197
+ this.model.trigger( 'change' );
198
+
199
+ var optionViewModel = this.optionViews.find( function( viewModel ) {
200
+ return viewModel.get( 'view' ).model.id === optionModel.id;
201
+ }, this );
202
+
203
+ this.optionViews.remove( optionViewModel );
204
 
205
  if ( this.model.get( 'options' ).length == 0 ) {
206
  $( '.options ul', this.$el ).html( '' );
210
  id: this.model.get( 'id' ),
211
  callback: 'onCheckboxItemDeleteCallback',
212
  options: {
213
+ itemID: optionModel.id,
214
  }
215
  };
216
 
217
  api.previewer.send( 'happyforms-part-dom-update', data );
218
  },
219
 
220
+ onOptionModelsSorted: function() {
221
+ this.optionViews.reset( _.map( this.model.get( 'options' ).pluck( 'id' ), function( id ) {
222
+ return this.optionViews.get( id );
223
+ }, this ) );
224
+
225
+ this.model.trigger( 'change' );
226
+
227
+ var model = this.model;
228
+
229
+ this.model.fetchHtml( function( response ) {
230
+ var data = {
231
+ id: model.get( 'id' ),
232
+ html: response,
233
+ };
234
+
235
+ happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
236
+ } );
237
+ },
238
+
239
+ onOptionsChange: function() {
240
+ this.model.trigger( 'change' );
241
+ },
242
+
243
+ addOptionView: function( optionModel, options ) {
244
+ var optionView = new OptionView( _.extend( {
245
+ model: optionModel,
246
+ part: this.model,
247
+ }, options ) );
248
+
249
+ var optionViewModel = new Backbone.Model( {
250
+ id: optionModel.id,
251
+ view: optionView,
252
+ } );
253
+
254
+ this.optionViews.add( optionViewModel, options );
255
+ },
256
+
257
+ onOptionViewAdd: function( viewModel, collection, options ) {
258
+ var optionView = viewModel.get( 'view' );
259
+ $( '.options ul', this.$el ).append( optionView.render().$el );
260
+ optionView.trigger( 'ready' );
261
+ },
262
+
263
+ onOptionViewRemove: function( viewModel ) {
264
+ var optionView = viewModel.get( 'view' );
265
+ optionView.remove();
266
+ },
267
+
268
+ onOptionSortStop: function( e, ui ) {
269
+ var $sortable = $( '.option-list', this.$el );
270
+ var ids = $sortable.sortable( 'toArray', { attribute: 'data-option-id' } );
271
+
272
+ this.model.get( 'options' ).reset( _.map( ids, function( id ) {
273
+ return this.model.get( 'options' ).get( id );
274
+ }, this ) );
275
+ },
276
+
277
+ onOptionViewsSorted: function( optionViews ) {
278
+ var $stage = $( '.option-list', this.$el );
279
+
280
+ optionViews.forEach( function( optionViewModel ) {
281
+ var optionView = optionViewModel.get( 'view' );
282
+ var $optionViewEl = optionView.$el;
283
+ $optionViewEl.detach();
284
+ $stage.append( $optionViewEl );
285
+ optionView.trigger( 'refresh' );
286
+ }, this );
287
+ },
288
+
289
+ onAddOptionClick: function( e ) {
290
+ e.preventDefault();
291
+
292
+ var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
293
+ var itemModel = new OptionModel( { id: itemID } );
294
+ this.model.get( 'options' ).add( itemModel );
295
+ },
296
+
297
  onDisplayTypeChange: function(e) {
298
+ var $input = $( e.target );
299
+ var attribute = $input.data( 'bind' );
300
+
301
+ this.model.set( attribute, $input.val() );
302
+
303
  var data = {
304
  id: this.model.get( 'id' ),
305
  callback: 'onCheckboxDisplayTypeChangeCallback',
306
  };
307
 
308
  api.previewer.send( 'happyforms-part-dom-update', data );
309
+ },
310
+
311
+ onEnterKey: function( e ) {
312
+ e.preventDefault();
313
+
314
+ if ( 'Enter' === e.key ) {
315
+ $( '.add-option', this.$el ).click();
316
+ return;
317
+ }
318
+ },
319
  } );
320
 
321
  happyForms.previewer = _.extend( happyForms.previewer, {
336
  var option = part.get( 'options' ).get( options.itemID );
337
  var $option = $( '#' + options.itemID, $part );
338
 
339
+ this.$( 'span.label', $option ).text( option.get( 'label' ) );
340
  },
341
 
342
  onCheckboxItemDefaultChangeCallback: function( id, html, options ) {
345
  var option = part.get( 'options' ).get( options.itemID );
346
  var $option = $( '#' + options.itemID, $part );
347
 
348
+ this.$( 'input', $option ).prop( 'checked', option.get( 'is_default' ) );
349
+ },
350
+
351
+ onCheckboxItemDescriptionChangeCallback: function( id, html, options ) {
352
+ var part = this.getPartModel( id );
353
+ var $part = this.getPartElement( html );
354
+ var option = part.get( 'options' ).get( options.itemID );
355
+ var $option = $( '#' + options.itemID, $part );
356
+
357
+ this.$( '.happyforms-part-option__description', $option ).text( option.get( 'description' ) );
358
  },
359
 
360
  onCheckboxItemDeleteCallback: function( id, html, options ) {
assets/js/parts/part-date.js CHANGED
@@ -25,6 +25,7 @@
25
  this.listenTo( this.model, 'change:default_datetime', this.refreshDatePart );
26
  this.listenTo( this.model, 'change:years_option', this.onYearsOptionChange );
27
  this.listenTo( this.model, 'change:years_order', this.refreshDatePart );
 
28
  },
29
 
30
  onDateTypeChange: function() {
@@ -32,11 +33,6 @@
32
  var $dateOptions = $( '.date-options', this.$el );
33
 
34
  switch ( this.model.get( 'date_type' ) ) {
35
- case 'date':
36
- $timeOptions.hide();
37
- $dateOptions.show();
38
- break;
39
-
40
  case 'datetime':
41
  $timeOptions.show();
42
  $dateOptions.show();
@@ -46,6 +42,17 @@
46
  $timeOptions.show();
47
  $dateOptions.hide();
48
  break;
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
 
51
  this.refreshDatePart();
25
  this.listenTo( this.model, 'change:default_datetime', this.refreshDatePart );
26
  this.listenTo( this.model, 'change:years_option', this.onYearsOptionChange );
27
  this.listenTo( this.model, 'change:years_order', this.refreshDatePart );
28
+ this.listenTo( this.model, 'change:required', this.refreshDatePart );
29
  },
30
 
31
  onDateTypeChange: function() {
33
  var $dateOptions = $( '.date-options', this.$el );
34
 
35
  switch ( this.model.get( 'date_type' ) ) {
 
 
 
 
 
36
  case 'datetime':
37
  $timeOptions.show();
38
  $dateOptions.show();
42
  $timeOptions.show();
43
  $dateOptions.hide();
44
  break;
45
+
46
+ case 'month':
47
+ $timeOptions.hide();
48
+ $dateOptions.hide();
49
+ break;
50
+
51
+ default:
52
+ $dateOptions.show();
53
+ $timeOptions.hide();
54
+ break;
55
+
56
  }
57
 
58
  this.refreshDatePart();
assets/js/parts/part-number.js CHANGED
@@ -65,17 +65,11 @@
65
  if ( $input.is( ':checked' ) ) {
66
  this.model.set( attribute, 1 );
67
 
68
- // hide inputs for min / max value setting
69
- this.$el.find( '.min-max-wrapper' ).hide();
70
-
71
  // show actual mask input
72
  $maskWrapper.show();
73
  } else {
74
  this.model.set( attribute, 0 );
75
 
76
- // show inputs for min / max value setting
77
- this.$el.find( '.min-max-wrapper' ).show();
78
-
79
  // empty mask input and hide
80
  $maskWrapper.hide();
81
  }
65
  if ( $input.is( ':checked' ) ) {
66
  this.model.set( attribute, 1 );
67
 
 
 
 
68
  // show actual mask input
69
  $maskWrapper.show();
70
  } else {
71
  this.model.set( attribute, 0 );
72
 
 
 
 
73
  // empty mask input and hide
74
  $maskWrapper.hide();
75
  }
assets/js/parts/part-radio.js CHANGED
@@ -35,53 +35,146 @@
35
  model: OptionModel,
36
  } );
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  var RadioView = happyForms.classes.views.Part.extend( {
39
  template: '#customize-happyforms-radio-template',
40
- itemCustomizeTemplate: '#customize-happyforms-radio-item-template',
41
 
42
  initialize: function() {
43
  happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
44
 
45
- this.listenTo( this.model.get( 'options' ), 'add change remove', this.onOptionsChange );
 
 
 
 
 
 
 
 
 
46
  this.listenTo( this, 'ready', this.onReady );
47
  },
48
 
49
  events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
50
  'click .add-option': 'onAddOptionClick',
51
- 'click .delete-option': 'onDeleteOptionClick',
52
- 'keyup li [name=option_label]': 'onItemLabelChange',
53
- 'keyup li [name=option_description]': 'onItemDescriptionChange',
54
- 'change li [name=option_is_default]': 'onItemDefaultChange',
55
- 'change [name=display_type]': 'onDisplayTypeChange'
56
  } ),
57
 
58
  onReady: function() {
59
- this.model.get( 'options' ).each( function( itemModel ) {
60
- this.appendOptionPartial( itemModel );
61
  }, this );
62
- },
63
 
64
- onOptionsChange: function() {
65
- this.model.trigger( 'change' );
66
- },
67
-
68
- appendOptionPartial: function( itemModel ) {
69
- var customizeTemplate = _.template( $( this.itemCustomizeTemplate ).html() );
70
- var customizeHTML = customizeTemplate( { item: itemModel.toJSON() } );
71
- var $optionEl = $(customizeHTML);
72
 
73
- $( '.options ul', this.$el ).append( $optionEl );
74
- $( 'input[name=option_label]', $optionEl ).focus();
 
 
75
  },
76
 
77
- onAddOptionClick: function( e ) {
78
- e.preventDefault();
79
-
80
- var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
81
- var itemModel = new OptionModel( { id: itemID } );
82
- this.model.get( 'options' ).add( itemModel );
83
-
84
- this.appendOptionPartial( itemModel );
85
 
86
  var model = this.model;
87
 
@@ -95,14 +188,18 @@
95
  } );
96
  },
97
 
98
- onDeleteOptionClick: function( e ) {
99
- e.preventDefault();
 
100
 
101
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
102
- var itemModel = this.model.get( 'options' ).get( itemID );
 
 
 
 
103
 
104
- this.model.get( 'options' ).remove( itemModel );
105
- $( '[data-item-id="' + itemID + '"]', this.$el ).remove();
106
 
107
  if ( this.model.get( 'options' ).length == 0 ) {
108
  $( '.options ul', this.$el ).html( '' );
@@ -112,72 +209,83 @@
112
  id: this.model.get( 'id' ),
113
  callback: 'onRadioItemDeleteCallback',
114
  options: {
115
- itemID: itemID,
116
  }
117
  };
118
 
119
  api.previewer.send( 'happyforms-part-dom-update', data );
120
  },
121
 
122
- onItemLabelChange: function( e ) {
123
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
124
- var itemModel = this.model.get( 'options' ).get( itemID );
 
 
125
 
126
- itemModel.set( 'label', $( e.target ).val() );
127
 
128
- var data = {
129
- id: this.model.get( 'id' ),
130
- callback: 'onRadioItemLabelChangeCallback',
131
- options: {
132
- itemID: itemID,
133
- }
134
- };
135
 
136
- api.previewer.send( 'happyforms-part-dom-update', data );
 
137
  },
138
 
139
- onItemDescriptionChange: function( e ) {
140
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
141
- var itemModel = this.model.get( 'options' ).get( itemID );
 
 
142
 
143
- itemModel.set( 'description', $( e.target ).val() );
 
 
 
144
 
145
- var data = {
146
- id: this.model.get( 'id' ),
147
- callback: 'onRadioItemDescriptionChangeCallback',
148
- options: {
149
- itemID: itemID,
150
- }
151
- };
152
 
153
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
 
154
  },
155
 
156
- onItemDefaultChange: function( e ) {
157
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
158
- var itemModel = this.model.get( 'options' ).get( itemID );
159
- var isChecked = $( e.target ).is( ':checked' );
160
 
161
- this.model.get( 'options' ).forEach( function( item ) {
162
- item.set( 'is_default', 0 );
163
- } );
164
 
165
- $( 'li [name=option_is_default]', this.$el ).attr( 'checked', false );
 
 
 
166
 
167
- if ( isChecked ) {
168
- itemModel.set( 'is_default', 1 );
169
- $( e.target ).attr( 'checked', true );
170
- }
171
 
172
- var data = {
173
- id: this.model.get( 'id' ),
174
- callback: 'onRadioItemDefaultChangeCallback',
175
- options: {
176
- itemID: itemID,
177
- }
178
- };
 
179
 
180
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
 
 
 
181
  },
182
 
183
  onDisplayTypeChange: function(e) {
@@ -192,7 +300,16 @@
192
  };
193
 
194
  api.previewer.send( 'happyforms-part-dom-update', data );
195
- }
 
 
 
 
 
 
 
 
 
196
  } );
197
 
198
  happyForms.previewer = _.extend( happyForms.previewer, {
35
  model: OptionModel,
36
  } );
37
 
38
+ var OptionView = Backbone.View.extend( {
39
+ template: '#customize-happyforms-radio-item-template',
40
+
41
+ events: {
42
+ 'click .advanced-option': 'onAdvancedOptionClick',
43
+ 'click .delete-option': 'onDeleteOptionClick',
44
+ 'keyup [name=label]': 'onItemLabelChange',
45
+ 'keyup [name=description]': 'onItemDescriptionChange',
46
+ 'change [name=is_default]': 'onItemDefaultChange',
47
+ },
48
+
49
+ initialize: function( options ) {
50
+ this.template = _.template( $( this.template ).text() );
51
+ this.part = options.part;
52
+
53
+ this.listenTo( this, 'ready', this.onReady );
54
+ },
55
+
56
+ render: function() {
57
+ this.setElement( this.template( this.model.toJSON() ) );
58
+ return this;
59
+ },
60
+
61
+ onReady: function() {
62
+ $( '[name=label]', this.$el ).focus();
63
+ },
64
+
65
+ onAdvancedOptionClick: function( e ) {
66
+ e.preventDefault();
67
+
68
+ $( '.happyforms-part-item-advanced', this.$el ).slideToggle( 300, function() {
69
+ $( e.target ).toggleClass( 'opened' );
70
+ } );
71
+ },
72
+
73
+ onDeleteOptionClick: function( e ) {
74
+ e.preventDefault();
75
+ this.model.collection.remove( this.model );
76
+ },
77
+
78
+ onItemLabelChange: function( e ) {
79
+ this.model.set( 'label', $( e.target ).val() );
80
+ this.part.trigger( 'change' );
81
+
82
+ var data = {
83
+ id: this.part.get( 'id' ),
84
+ callback: 'onRadioItemLabelChangeCallback',
85
+ options: {
86
+ itemID: this.model.get( 'id' ),
87
+ }
88
+ };
89
+
90
+ api.previewer.send( 'happyforms-part-dom-update', data );
91
+ },
92
+
93
+ onItemDescriptionChange: function( e ) {
94
+ this.model.set( 'description', $( e.target ).val() );
95
+ this.part.trigger( 'change' );
96
+
97
+ var data = {
98
+ id: this.part.get( 'id' ),
99
+ callback: 'onRadioItemDescriptionChangeCallback',
100
+ options: {
101
+ itemID: this.model.get( 'id' ),
102
+ }
103
+ };
104
+
105
+ api.previewer.send( 'happyforms-part-dom-update', data );
106
+ },
107
+
108
+ onItemDefaultChange: function( e ) {
109
+ var isChecked = $( e.target ).is( ':checked' );
110
+
111
+ this.model.collection.forEach( function( item ) {
112
+ item.set( 'is_default', 0 );
113
+ } );
114
+
115
+ $( '[name=is_default]', this.$el.siblings() ).attr( 'checked', false );
116
+
117
+ if ( isChecked ) {
118
+ this.model.set( 'is_default', 1 );
119
+ $( e.target ).attr( 'checked', true );
120
+ }
121
+
122
+ var data = {
123
+ id: this.part.get( 'id' ),
124
+ callback: 'onRadioItemDefaultChangeCallback',
125
+ options: {
126
+ itemID: this.model.get( 'id' ),
127
+ }
128
+ };
129
+
130
+ api.previewer.send( 'happyforms-part-dom-update', data );
131
+ },
132
+ } );
133
+
134
  var RadioView = happyForms.classes.views.Part.extend( {
135
  template: '#customize-happyforms-radio-template',
 
136
 
137
  initialize: function() {
138
  happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
139
 
140
+ this.optionViews = new Backbone.Collection();
141
+
142
+ this.listenTo( this.model.get( 'options' ), 'add', this.onOptionModelAdd );
143
+ this.listenTo( this.model.get( 'options' ), 'change', this.onOptionModelChange );
144
+ this.listenTo( this.model.get( 'options' ), 'remove', this.onOptionModelRemove );
145
+ this.listenTo( this.model.get( 'options' ), 'reset', this.onOptionModelsSorted );
146
+ this.listenTo( this.optionViews, 'add', this.onOptionViewAdd );
147
+ this.listenTo( this.optionViews, 'remove', this.onOptionViewRemove );
148
+ this.listenTo( this.optionViews, 'reset', this.onOptionViewsSorted );
149
+ this.listenTo( this, 'sort-stop', this.onOptionSortStop );
150
  this.listenTo( this, 'ready', this.onReady );
151
  },
152
 
153
  events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
154
  'click .add-option': 'onAddOptionClick',
155
+ 'change [name=display_type]': 'onDisplayTypeChange',
156
+ 'keyup [name=label]': 'onEnterKey',
157
+ 'keyup [name=description]': 'onEnterKey',
 
 
158
  } ),
159
 
160
  onReady: function() {
161
+ this.model.get( 'options' ).each( function( optionModel ) {
162
+ this.addOptionView( optionModel );
163
  }, this );
 
164
 
165
+ $( '.option-list', this.$el ).sortable( {
166
+ handle: '.happyforms-part-item-handle',
167
+ helper: 'clone',
 
 
 
 
 
168
 
169
+ stop: function ( e, ui ) {
170
+ this.trigger( 'sort-stop', e, ui );
171
+ }.bind( this ),
172
+ } );
173
  },
174
 
175
+ onOptionModelAdd: function( optionModel, optionsCollection, options ) {
176
+ this.model.trigger( 'change' );
177
+ this.addOptionView( optionModel, options );
 
 
 
 
 
178
 
179
  var model = this.model;
180
 
188
  } );
189
  },
190
 
191
+ onOptionModelChange: function( optionModel ) {
192
+ this.model.trigger( 'change' );
193
+ },
194
 
195
+ onOptionModelRemove: function( optionModel ) {
196
+ this.model.trigger( 'change' );
197
+
198
+ var optionViewModel = this.optionViews.find( function( viewModel ) {
199
+ return viewModel.get( 'view' ).model.id === optionModel.id;
200
+ }, this );
201
 
202
+ this.optionViews.remove( optionViewModel );
 
203
 
204
  if ( this.model.get( 'options' ).length == 0 ) {
205
  $( '.options ul', this.$el ).html( '' );
209
  id: this.model.get( 'id' ),
210
  callback: 'onRadioItemDeleteCallback',
211
  options: {
212
+ itemID: optionModel.id,
213
  }
214
  };
215
 
216
  api.previewer.send( 'happyforms-part-dom-update', data );
217
  },
218
 
219
+ onOptionModelsSorted: function() {
220
+ this.optionViews.reset( _.map( this.model.get( 'options' ).pluck( 'id' ), function( id ) {
221
+ return this.optionViews.get( id );
222
+ }, this ) );
223
+ this.model.trigger( 'change' );
224
 
225
+ var model = this.model;
226
 
227
+ this.model.fetchHtml( function( response ) {
228
+ var data = {
229
+ id: model.get( 'id' ),
230
+ html: response,
231
+ };
 
 
232
 
233
+ happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
234
+ } );
235
  },
236
 
237
+ addOptionView: function( optionModel, options ) {
238
+ var optionView = new OptionView( _.extend( {
239
+ model: optionModel,
240
+ part: this.model,
241
+ }, options ) );
242
 
243
+ var optionViewModel = new Backbone.Model( {
244
+ id: optionModel.id,
245
+ view: optionView,
246
+ } );
247
 
248
+ this.optionViews.add( optionViewModel, options );
249
+ },
 
 
 
 
 
250
 
251
+ onOptionViewAdd: function( viewModel, collection, options ) {
252
+ var optionView = viewModel.get( 'view' );
253
+ $( '.option-list', this.$el ).append( optionView.render().$el );
254
+ optionView.trigger( 'ready' );
255
  },
256
 
257
+ onOptionViewRemove: function( viewModel ) {
258
+ var optionView = viewModel.get( 'view' );
259
+ optionView.remove();
260
+ },
261
 
262
+ onOptionSortStop: function( e, ui ) {
263
+ var $sortable = $( '.option-list', this.$el );
264
+ var ids = $sortable.sortable( 'toArray', { attribute: 'data-option-id' } );
265
 
266
+ this.model.get( 'options' ).reset( _.map( ids, function( id ) {
267
+ return this.model.get( 'options' ).get( id );
268
+ }, this ) );
269
+ },
270
 
271
+ onOptionViewsSorted: function( optionViews ) {
272
+ var $stage = $( '.option-list', this.$el );
 
 
273
 
274
+ optionViews.forEach( function( optionViewModel ) {
275
+ var optionView = optionViewModel.get( 'view' );
276
+ var $optionViewEl = optionView.$el;
277
+ $optionViewEl.detach();
278
+ $stage.append( $optionViewEl );
279
+ optionView.trigger( 'refresh' );
280
+ }, this );
281
+ },
282
 
283
+ onAddOptionClick: function( e ) {
284
+ e.preventDefault();
285
+
286
+ var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
287
+ var itemModel = new OptionModel( { id: itemID } );
288
+ this.model.get( 'options' ).add( itemModel );
289
  },
290
 
291
  onDisplayTypeChange: function(e) {
300
  };
301
 
302
  api.previewer.send( 'happyforms-part-dom-update', data );
303
+ },
304
+
305
+ onEnterKey: function( e ) {
306
+ e.preventDefault();
307
+
308
+ if ( 'Enter' === e.key ) {
309
+ $( '.add-option', this.$el ).click();
310
+ return;
311
+ }
312
+ },
313
  } );
314
 
315
  happyForms.previewer = _.extend( happyForms.previewer, {
assets/js/parts/part-select.js CHANGED
@@ -34,68 +34,138 @@
34
  model: OptionModel,
35
  } );
36
 
37
- var SelectView = happyForms.classes.views.Part.extend( {
38
- template: '#customize-happyforms-select-template',
39
- itemCustomizeTemplate: '#customize-happyforms-select-item-template',
 
 
 
 
 
 
40
 
41
- initialize: function() {
42
- happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
 
43
 
44
- this.listenTo( this.model.get( 'options' ), 'add change remove', this.onOptionsChange );
45
  this.listenTo( this, 'ready', this.onReady );
46
- this.listenTo( this.model, 'change:allow_search', this.onAllowSearchChange );
47
  },
48
 
49
- events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
50
- 'click .add-option': 'onAddOptionClick',
51
- 'click .show-all-options': 'onShowAllOptionsClick',
52
- 'keyup li [name=label]': 'onSelectItemLabelChange',
53
- 'change li [name=is_default]': 'onSelectItemDefaultChange',
54
- 'click li .delete-option': 'onDeleteOptionClick',
55
- } ),
56
 
57
  onReady: function() {
58
- this.model.get( 'options' ).each( function( itemModel, index ) {
59
- this.appendOptionPartial( itemModel, index, this.model.get('options').length );
60
- }, this );
61
  },
62
 
63
- onOptionsChange: function() {
64
- this.model.trigger( 'change' );
 
 
 
 
65
  },
66
 
67
- appendOptionPartial: function( itemModel, index, totalItems ) {
68
- if ( 'undefined' === typeof index ) {
69
- index = false;
70
- }
71
 
72
- if ( 'undefined' === typeof totalItems ) {
73
- totalItems = false;
 
 
74
  }
75
 
76
- var customizeTemplate = _.template( $( this.itemCustomizeTemplate ).html() );
77
- var customizeHTML = customizeTemplate( { item: itemModel.toJSON() } );
78
- var $optionEl = $(customizeHTML);
 
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
- $( '.options ul', this.$el ).append( $optionEl );
81
- $( 'input[type=text]', $optionEl ).focus();
 
82
 
83
- if (index && index > 4 && index < totalItems) {
84
- this.$el.find('[data-item-id='+ itemModel.id +']').hide();
85
 
86
- this.$el.find('.show-all-options span').text(totalItems);
87
- this.$el.find('.show-all-options').show();
 
88
  }
 
 
 
 
 
 
 
 
 
 
89
  },
 
90
 
91
- onAddOptionClick: function( e ) {
92
- e.preventDefault();
93
 
94
- var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
95
- var itemModel = new OptionModel( { id: itemID } );
96
- this.model.get( 'options' ).add( itemModel );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
 
98
- this.appendOptionPartial( itemModel );
 
 
 
 
 
 
 
 
99
 
100
  var model = this.model;
101
 
@@ -109,95 +179,162 @@
109
  } );
110
  },
111
 
112
- onShowAllOptionsClick: function(e) {
113
- var $link = $(e.target);
 
114
 
115
- this.$el.find('.happyforms-part-widget--sub').show();
 
116
 
117
- $link.hide();
118
- },
 
119
 
120
- onSelectItemLabelChange: function( e ) {
121
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
122
- var itemModel = this.model.get( 'options' ).get( itemID );
123
 
124
- itemModel.set( 'label', $( e.target ).val() );
 
 
125
 
126
  var data = {
127
  id: this.model.get( 'id' ),
128
- callback: 'onSelectItemLabelChangeCallback',
129
  options: {
130
- itemID: itemID,
131
  }
132
  };
133
 
134
  api.previewer.send( 'happyforms-part-dom-update', data );
135
  },
136
 
137
- onSelectItemDefaultChange: function( e ) {
138
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
139
- var itemModel = this.model.get( 'options' ).get( itemID );
140
- var checked = $( e.target ).is( ':checked' );
 
 
 
 
141
 
142
- $( '[name=is_default]', this.$el ).attr( 'checked', false );
 
 
 
 
143
 
144
- this.model.get( 'options' ).each( function( itemModel ) {
145
- itemModel.set( 'is_default', 0 );
146
  } );
 
147
 
148
- if ( checked ) {
149
- $( e.target ).attr( 'checked', true );
150
- itemModel.set( 'is_default', 1 );
151
- } else {
152
- itemModel.set( 'is_default', 0 );
153
- }
154
 
155
- var data = {
156
- id: this.model.get( 'id' ),
157
- callback: 'onSelectItemDefaultChangeCallback',
158
- options: {
159
- itemID: itemID,
160
- }
161
- };
162
 
163
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
 
 
 
164
  },
165
 
166
- onDeleteOptionClick: function( e ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
167
  e.preventDefault();
168
 
169
- var itemID = $( e.target ).parents( '[data-item-id]' ).data( 'item-id' );
170
- var itemModel = this.model.get( 'options' ).get( itemID );
 
 
171
 
172
- this.model.get( 'options' ).remove( itemModel );
173
- $( '[data-item-id="' + itemModel.get( 'id' ) + '"]', this.$el ).remove();
174
 
175
- if ( this.model.get( 'options' ).length == 0 ) {
176
- $( '.options ul', this.$el ).html( '' );
177
- }
178
 
 
 
 
 
179
  var data = {
180
- id: this.model.get( 'id' ),
181
- callback: 'onSelectItemDeleteCallback',
182
  options: {
183
- itemID: itemID,
184
  }
185
  };
186
 
187
  api.previewer.send( 'happyforms-part-dom-update', data );
188
  },
189
 
190
- onAllowSearchChange: function( model, value ) {
191
  var data = {
192
  id: model.get( 'id' ),
193
- callback: 'onSearchableCallback',
194
  options: {
195
- value: value
196
  }
197
  };
198
 
199
  api.previewer.send( 'happyforms-part-dom-update', data );
200
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  } );
202
 
203
  happyForms.previewer = _.extend( happyForms.previewer, {
@@ -249,6 +386,13 @@
249
  }
250
 
251
  $.fn.happyformsSelect.call($part, pluginOptions );
 
 
 
 
 
 
 
252
  }
253
  } );
254
 
34
  model: OptionModel,
35
  } );
36
 
37
+ var OptionView = Backbone.View.extend( {
38
+ template: '#customize-happyforms-select-item-template',
39
+
40
+ events: {
41
+ 'click .advanced-option': 'onAdvancedOptionClick',
42
+ 'click .delete-option': 'onDeleteOptionClick',
43
+ 'keyup [name=label]': 'onItemLabelChange',
44
+ 'change [name=is_default]': 'onItemDefaultChange',
45
+ },
46
 
47
+ initialize: function( options ) {
48
+ this.template = _.template( $( this.template ).text() );
49
+ this.part = options.part;
50
 
 
51
  this.listenTo( this, 'ready', this.onReady );
 
52
  },
53
 
54
+ render: function() {
55
+ this.setElement( this.template( this.model.toJSON() ) );
56
+ return this;
57
+ },
 
 
 
58
 
59
  onReady: function() {
60
+ $( '[name=label]', this.$el ).focus();
 
 
61
  },
62
 
63
+ onAdvancedOptionClick: function( e ) {
64
+ e.preventDefault();
65
+
66
+ $( '.happyforms-part-item-advanced', this.$el ).slideToggle( 300, function() {
67
+ $( e.target ).toggleClass( 'opened' );
68
+ } );
69
  },
70
 
71
+ onDeleteOptionClick: function( e ) {
72
+ e.preventDefault();
73
+ this.model.collection.remove( this.model );
74
+ },
75
 
76
+ onItemLabelChange: function( e ) {
77
+ if ( 'Enter' === e.key ) {
78
+ $( '.add-option', this.$el ).click();
79
+ return;
80
  }
81
 
82
+ this.model.set( 'label', $( e.target ).val() );
83
+ this.part.trigger( 'change' );
84
+
85
+ var data = {
86
+ id: this.part.get( 'id' ),
87
+ callback: 'onSelectItemLabelChangeCallback',
88
+ options: {
89
+ itemID: this.model.get( 'id' ),
90
+ }
91
+ };
92
+
93
+ api.previewer.send( 'happyforms-part-dom-update', data );
94
+ },
95
+
96
+ onItemDefaultChange: function( e ) {
97
+ var isChecked = $( e.target ).is( ':checked' );
98
 
99
+ this.model.collection.forEach( function( item ) {
100
+ item.set( 'is_default', 0 );
101
+ } );
102
 
103
+ $( '[name=is_default]', this.$el.siblings() ).attr( 'checked', false );
 
104
 
105
+ if ( isChecked ) {
106
+ this.model.set( 'is_default', 1 );
107
+ $( e.target ).attr( 'checked', true );
108
  }
109
+
110
+ var data = {
111
+ id: this.part.get( 'id' ),
112
+ callback: 'onSelectItemDefaultChangeCallback',
113
+ options: {
114
+ itemID: this.model.get( 'id' ),
115
+ }
116
+ };
117
+
118
+ api.previewer.send( 'happyforms-part-dom-update', data );
119
  },
120
+ } );
121
 
122
+ var SelectView = happyForms.classes.views.Part.extend( {
123
+ template: '#customize-happyforms-select-template',
124
 
125
+ events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
126
+ 'click .add-option': 'onAddOptionClick',
127
+ 'click .show-all-options': 'onShowAllOptionsClick',
128
+ 'keyup [name=label]': 'onEnterKey',
129
+ 'keyup [name=description]': 'onEnterKey',
130
+ } ),
131
+
132
+ initialize: function() {
133
+ happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
134
+
135
+ this.optionViews = new Backbone.Collection();
136
+
137
+ this.listenTo( this.model, 'change:allow_search', this.onAllowSearchChange );
138
+ this.listenTo( this.model, 'change:placeholder', this.onPlaceholderChange );
139
+ this.listenTo( this.model, 'change:required', this.onRequiredChange );
140
+ this.listenTo( this.model.get( 'options' ), 'add', this.onOptionModelAdd );
141
+ this.listenTo( this.model.get( 'options' ), 'change', this.onOptionModelChange );
142
+ this.listenTo( this.model.get( 'options' ), 'remove', this.onOptionModelRemove );
143
+ this.listenTo( this.model.get( 'options' ), 'reset', this.onOptionModelsSorted );
144
+ this.listenTo( this.optionViews, 'add', this.onOptionViewAdd );
145
+ this.listenTo( this.optionViews, 'remove', this.onOptionViewRemove );
146
+ this.listenTo( this.optionViews, 'reset', this.onOptionViewsSorted );
147
+ this.listenTo( this, 'sort-stop', this.onOptionSortStop );
148
+ this.listenTo( this, 'ready', this.onReady );
149
+ },
150
+
151
+ onReady: function() {
152
+ this.model.get( 'options' ).each( function( optionModel ) {
153
+ this.addOptionView( optionModel );
154
+ }, this );
155
+
156
+ $( '.option-list', this.$el ).sortable( {
157
+ handle: '.happyforms-part-item-handle',
158
+ helper: 'clone',
159
 
160
+ stop: function ( e, ui ) {
161
+ this.trigger( 'sort-stop', e, ui );
162
+ }.bind( this ),
163
+ } );
164
+ },
165
+
166
+ onOptionModelAdd: function( optionModel, optionsCollection, options ) {
167
+ this.model.trigger( 'change' );
168
+ this.addOptionView( optionModel, options );
169
 
170
  var model = this.model;
171
 
179
  } );
180
  },
181
 
182
+ onOptionModelChange: function( optionModel ) {
183
+ this.model.trigger( 'change' );
184
+ },
185
 
186
+ onOptionModelRemove: function( optionModel ) {
187
+ this.model.trigger( 'change' );
188
 
189
+ var optionViewModel = this.optionViews.find( function( viewModel ) {
190
+ return viewModel.get( 'view' ).model.id === optionModel.id;
191
+ }, this );
192
 
193
+ this.optionViews.remove( optionViewModel );
 
 
194
 
195
+ if ( this.model.get( 'options' ).length == 0 ) {
196
+ $( '.options ul', this.$el ).html( '' );
197
+ }
198
 
199
  var data = {
200
  id: this.model.get( 'id' ),
201
+ callback: 'onCheckboxItemDeleteCallback',
202
  options: {
203
+ itemID: optionModel.id,
204
  }
205
  };
206
 
207
  api.previewer.send( 'happyforms-part-dom-update', data );
208
  },
209
 
210
+ onOptionModelsSorted: function() {
211
+ this.optionViews.reset( _.map( this.model.get( 'options' ).pluck( 'id' ), function( id ) {
212
+ return this.optionViews.get( id );
213
+ }, this ) );
214
+
215
+ this.model.trigger( 'change' );
216
+
217
+ var model = this.model;
218
 
219
+ this.model.fetchHtml( function( response ) {
220
+ var data = {
221
+ id: model.get( 'id' ),
222
+ html: response,
223
+ };
224
 
225
+ happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
 
226
  } );
227
+ },
228
 
229
+ onOptionsChange: function() {
230
+ this.model.trigger( 'change' );
231
+ },
 
 
 
232
 
233
+ addOptionView: function( optionModel, options ) {
234
+ var optionView = new OptionView( _.extend( {
235
+ model: optionModel,
236
+ part: this.model,
237
+ }, options ) );
 
 
238
 
239
+ var optionViewModel = new Backbone.Model( {
240
+ id: optionModel.id,
241
+ view: optionView,
242
+ } );
243
+
244
+ this.optionViews.add( optionViewModel, options );
245
  },
246
 
247
+ onOptionViewAdd: function( viewModel, collection, options ) {
248
+ var optionView = viewModel.get( 'view' );
249
+ $( '.options ul', this.$el ).append( optionView.render().$el );
250
+ optionView.trigger( 'ready' );
251
+ },
252
+
253
+ onOptionViewRemove: function( viewModel ) {
254
+ var optionView = viewModel.get( 'view' );
255
+ optionView.remove();
256
+ },
257
+
258
+ onOptionSortStop: function( e, ui ) {
259
+ var $sortable = $( '.option-list', this.$el );
260
+ var ids = $sortable.sortable( 'toArray', { attribute: 'data-option-id' } );
261
+
262
+ this.model.get( 'options' ).reset( _.map( ids, function( id ) {
263
+ return this.model.get( 'options' ).get( id );
264
+ }, this ) );
265
+ },
266
+
267
+ onOptionViewsSorted: function( optionViews ) {
268
+ var $stage = $( '.option-list', this.$el );
269
+
270
+ optionViews.forEach( function( optionViewModel ) {
271
+ var optionView = optionViewModel.get( 'view' );
272
+ var $optionViewEl = optionView.$el;
273
+ $optionViewEl.detach();
274
+ $stage.append( $optionViewEl );
275
+ optionView.trigger( 'refresh' );
276
+ }, this );
277
+ },
278
+
279
+ onAddOptionClick: function( e ) {
280
  e.preventDefault();
281
 
282
+ var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
283
+ var itemModel = new OptionModel( { id: itemID } );
284
+ this.model.get( 'options' ).add( itemModel );
285
+ },
286
 
287
+ onShowAllOptionsClick: function(e) {
288
+ var $link = $(e.target);
289
 
290
+ this.$el.find('.happyforms-part-widget--sub').show();
 
 
291
 
292
+ $link.hide();
293
+ },
294
+
295
+ onAllowSearchChange: function( model, value ) {
296
  var data = {
297
+ id: model.get( 'id' ),
298
+ callback: 'onSearchableCallback',
299
  options: {
300
+ value: value
301
  }
302
  };
303
 
304
  api.previewer.send( 'happyforms-part-dom-update', data );
305
  },
306
 
307
+ onPlaceholderChange: function( model, value ) {
308
  var data = {
309
  id: model.get( 'id' ),
310
+ callback: 'onSelectPlaceholderChangeCallback',
311
  options: {
312
+ label: value
313
  }
314
  };
315
 
316
  api.previewer.send( 'happyforms-part-dom-update', data );
317
+ },
318
+
319
+ onRequiredChange: function( model, value ) {
320
+ model.fetchHtml( function (response) {
321
+ var data = {
322
+ id: model.get('id'),
323
+ html: response,
324
+ };
325
+
326
+ happyForms.previewSendBuffered('happyforms-form-part-refresh', data);
327
+ } );
328
+ },
329
+
330
+ onEnterKey: function( e ) {
331
+ e.preventDefault();
332
+
333
+ if ( 'Enter' === e.key ) {
334
+ $( '.add-option', this.$el ).click();
335
+ return;
336
+ }
337
+ },
338
  } );
339
 
340
  happyForms.previewer = _.extend( happyForms.previewer, {
386
  }
387
 
388
  $.fn.happyformsSelect.call($part, pluginOptions );
389
+ },
390
+
391
+ onSelectPlaceholderChangeCallback: function( id, html, options, $ ) {
392
+ var $part = this.getPartElement( html );
393
+
394
+ $( 'input', $part ).attr( 'placeholder', options.label );
395
+ $( '.happyforms-custom-select-dropdown__placeholder', $part ).removeClass('preview-hidden').text( options.label );
396
  }
397
  } );
398
 
assets/js/parts/part-table.js CHANGED
@@ -41,42 +41,205 @@
41
  model: RowModel,
42
  } );
43
 
44
- var TableView = happyForms.classes.views.Part.extend( {
45
- template: '#customize-happyforms-table-template',
46
- columnCustomizeTemplate: '#customize-happyforms-table-column-template',
47
- rowCustomizeTemplate: '#customize-happyforms-table-row-template',
 
 
 
 
 
48
 
49
- initialize: function() {
50
- happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
 
51
 
52
- this.listenTo( this.model, 'change:allow_multiple_selection', this.onMultipleSelectionChange );
53
- this.listenTo( this.model.get( 'columns' ), 'add change remove', this.onColumnsChange );
54
- this.listenTo( this.model.get( 'rows' ), 'add change remove', this.onRowsChange );
55
  this.listenTo( this, 'ready', this.onReady );
56
  },
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
59
  'click [data-happyforms-tab]': 'onTabClick',
60
  'click .add-column': 'onAddColumnClick',
61
- 'click .delete-column': 'onDeleteColumnClick',
62
- 'keyup li [name=column_label]': 'onColumnLabelChange',
63
- 'change li [name=column_is_default]': 'onColumnDefaultChange',
64
  'click .add-row': 'onAddRowClick',
65
- 'click .delete-row': 'onDeleteRowClick',
66
- 'keyup li [name=row_label]': 'onRowLabelChange',
67
  } ),
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  onReady: function() {
70
  this.model.get( 'columns' ).each( function( columnModel ) {
71
- this.appendColumnPartial( columnModel );
72
  }, this );
73
 
74
  this.model.get( 'rows' ).each( function( rowModel ) {
75
- this.appendRowPartial( rowModel );
76
  }, this );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  },
78
 
79
- onMultipleSelectionChange: function() {
 
 
 
80
  var model = this.model;
81
 
82
  this.model.fetchHtml( function( response ) {
@@ -89,54 +252,112 @@
89
  } );
90
  },
91
 
92
- onColumnsChange: function() {
93
  this.model.trigger( 'change' );
94
  },
95
 
96
- onRowsChange: function() {
97
  this.model.trigger( 'change' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  },
99
 
100
- onTabClick: function( e ) {
101
- var $link = $( e.target );
102
- var $links = $link.siblings();
103
- var tabClass = $link.attr( 'data-happyforms-tab' );
104
- var $tabs = $( '.tab-content > div', this.$el );
105
- var $tab = $( '.tab-content > .' + tabClass, this.$el );
106
 
107
- $links.removeClass( 'active' );
108
- $link.addClass( 'active' );
109
- $tabs.removeClass( 'active' );
110
- $tab.addClass( 'active' );
 
 
 
 
 
 
111
  },
112
 
113
- appendColumnPartial: function( columnModel ) {
114
- var customizeTemplate = _.template( $( this.columnCustomizeTemplate ).html() );
115
- var customizeHTML = customizeTemplate( { column: columnModel.toJSON() } );
116
- var $columnEl = $(customizeHTML);
 
 
 
 
 
 
117
 
118
- $( '.options.columns ul', this.$el ).append( $columnEl );
119
- $( 'input[type=text]', $columnEl ).focus();
120
  },
121
 
122
- appendRowPartial: function( rowModel ) {
123
- var customizeTemplate = _.template( $( this.rowCustomizeTemplate ).html() );
124
- var customizeHTML = customizeTemplate( { row: rowModel.toJSON() } );
125
- var $rowEl = $(customizeHTML);
 
126
 
127
- $( '.options.rows ul', this.$el ).append( $rowEl );
128
- $( 'input[type=text]', $rowEl ).focus();
 
129
  },
130
 
131
- onAddColumnClick: function( e ) {
132
- e.preventDefault();
 
133
 
134
- var columnID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_column_', this.model.get( 'columns' ) );
135
- var columnModel = new ColumnModel( { id: columnID } );
136
- var model = this.model;
 
137
 
138
- this.model.get( 'columns' ).add( columnModel );
139
- this.appendColumnPartial( columnModel );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
 
141
  this.model.fetchHtml( function( response ) {
142
  var data = {
@@ -148,82 +369,91 @@
148
  } );
149
  },
150
 
151
- onDeleteColumnClick: function( e ) {
152
- e.preventDefault();
 
153
 
154
- var columnID = $( e.target ).parents( '[data-column-id]' ).data( 'column-id' );
155
- var columnModel = this.model.get( 'columns' ).get( columnID );
156
 
157
- this.model.get( 'columns' ).remove( columnModel );
 
 
158
 
159
- if ( this.model.get( 'columns' ).length == 0 ) {
160
- $( '.options.columns ul', this.$el ).html( '' );
 
 
161
  }
162
 
163
  var data = {
164
  id: this.model.get( 'id' ),
165
- callback: 'onTableColumnDeleteCallback',
166
  options: {
167
- columnID: columnID,
168
  }
169
  };
170
 
171
  api.previewer.send( 'happyforms-part-dom-update', data );
172
  },
173
 
174
- onColumnLabelChange: function( e ) {
175
- var columnID = $( e.target ).parents( '[data-column-id]' ).data( 'column-id' );
176
- var columnModel = this.model.get( 'columns' ).get( columnID );
 
 
177
 
178
- columnModel.set( 'label', $( e.target ).val() );
179
 
180
- var data = {
181
- id: this.model.get( 'id' ),
182
- callback: 'onTableColumnLabelChangeCallback',
183
- options: {
184
- columnID: columnID,
185
- }
186
- };
187
 
188
- api.previewer.send( 'happyforms-part-dom-update', data );
 
189
  },
190
 
191
- onColumnDefaultChange: function( e ) {
192
- var columnID = $( e.target ).parents( '[data-column-id]' ).data( 'column-id' );
193
- var columnModel = this.model.get( 'columns' ).get( columnID );
194
- var isChecked = $( e.target ).is( ':checked' );
195
-
196
- if ( ! this.model.get( 'allow_multiple_selection' ) ) {
197
- this.model.get( 'columns' ).forEach( function( column ) {
198
- column.set( 'is_default', 0 );
199
- } );
200
 
201
- $( 'li [name=column_is_default]', this.$el ).attr( 'checked', false );
202
- }
 
 
203
 
204
- columnModel.set( 'is_default', isChecked ? 1 : 0 );
205
- $( e.target ).attr( 'checked', isChecked );
206
 
207
- var data = {
208
- id: this.model.get( 'id' ),
209
- callback: 'onTableColumnDefaultChangeCallback',
210
- options: {
211
- columnID: columnID,
212
- }
213
- };
214
 
215
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
216
  },
217
 
218
- onAddRowClick: function( e ) {
219
- e.preventDefault();
220
 
221
- var rowID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_row_', this.model.get( 'rows' ) );
222
- var rowModel = new ColumnModel( { id: rowID } );
223
- var model = this.model;
 
 
 
 
 
224
 
225
- this.model.get( 'rows' ).add( rowModel );
226
- this.appendRowPartial( rowModel );
227
 
228
  this.model.fetchHtml( function( response ) {
229
  var data = {
@@ -235,45 +465,53 @@
235
  } );
236
  },
237
 
238
- onDeleteRowClick: function( e ) {
239
- e.preventDefault();
 
240
 
241
- var rowID = $( e.target ).parents( '[data-row-id]' ).data( 'row-id' );
242
- var rowModel = this.model.get( 'rows' ).get( rowID );
243
 
244
- this.model.get( 'rows' ).remove( rowModel );
245
- $( '[data-row-id="' + rowID + '"]', this.$el ).remove();
 
 
246
 
247
- if ( this.model.get( 'rows' ).length == 0 ) {
248
- $( '.options.rows ul', this.$el ).html( '' );
249
- }
 
 
250
 
251
- var data = {
252
- id: this.model.get( 'id' ),
253
- callback: 'onTableRowDeleteCallback',
254
- options: {
255
- rowID: rowID,
256
- }
257
- };
258
 
259
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
 
260
  },
261
 
262
- onRowLabelChange: function( e ) {
263
- var rowID = $( e.target ).parents( '[data-row-id]' ).data( 'row-id' );
264
- var rowModel = this.model.get( 'rows' ).get( rowID );
265
 
266
- rowModel.set( 'label', $( e.target ).val() );
 
 
 
 
267
 
268
- var data = {
269
- id: this.model.get( 'id' ),
270
- callback: 'onTableRowLabelChangeCallback',
271
- options: {
272
- rowID: rowID,
273
- }
274
- };
275
 
276
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
 
277
  },
278
  } );
279
 
41
  model: RowModel,
42
  } );
43
 
44
+ var ColumnView = Backbone.View.extend( {
45
+ template: '#customize-happyforms-table-column-template',
46
+
47
+ events: {
48
+ 'click .delete-column': 'onDeleteClick',
49
+ 'keyup [name=label]': 'onLabelChange',
50
+ 'change [name=is_default]': 'onDefaultChange',
51
+ 'click .advanced-column': 'onAdvancedColumnClick',
52
+ },
53
 
54
+ initialize: function( options ) {
55
+ this.template = _.template( $( this.template ).text() );
56
+ this.part = options.part;
57
 
 
 
 
58
  this.listenTo( this, 'ready', this.onReady );
59
  },
60
 
61
+ render: function() {
62
+ this.setElement( this.template( this.model.toJSON() ) );
63
+ return this;
64
+ },
65
+
66
+ onReady: function() {
67
+ $( '[name=label]', this.$el ).focus();
68
+ },
69
+
70
+ onAdvancedColumnClick: function( e ) {
71
+ e.preventDefault();
72
+
73
+ $( '.happyforms-part-item-advanced', this.$el ).slideToggle( 300, function() {
74
+ $( e.target ).toggleClass( 'opened' );
75
+ } );
76
+ },
77
+
78
+ onDeleteClick: function( e ) {
79
+ e.preventDefault();
80
+
81
+ this.model.collection.remove( this.model );
82
+ },
83
+
84
+ onLabelChange: function( e ) {
85
+ this.model.set( 'label', $( e.target ).val() );
86
+ this.part.trigger( 'change' );
87
+
88
+ var data = {
89
+ id: this.part.get( 'id' ),
90
+ callback: 'onTableColumnLabelChangeCallback',
91
+ options: {
92
+ columnID: this.model.get( 'id' ),
93
+ }
94
+ };
95
+
96
+ api.previewer.send( 'happyforms-part-dom-update', data );
97
+ },
98
+
99
+ onDefaultChange: function( e ) {
100
+ var isChecked = $( e.target ).is( ':checked' );
101
+
102
+ if ( ! this.part.get( 'allow_multiple_selection' ) ) {
103
+ this.part.get( 'columns' ).forEach( function( column ) {
104
+ column.set( 'is_default', 0 );
105
+ } );
106
+
107
+ $( '[name=is_default]', this.$el.siblings() ).attr( 'checked', false );
108
+ }
109
+
110
+ this.model.set( 'is_default', isChecked ? 1 : 0 );
111
+ $( e.target ).attr( 'checked', isChecked );
112
+
113
+ var data = {
114
+ id: this.part.get( 'id' ),
115
+ callback: 'onTableColumnDefaultChangeCallback',
116
+ options: {
117
+ columnID: this.model.get( 'id' ),
118
+ }
119
+ };
120
+
121
+ api.previewer.send( 'happyforms-part-dom-update', data );
122
+ },
123
+ } );
124
+
125
+ var RowView = Backbone.View.extend( {
126
+ template: '#customize-happyforms-table-row-template',
127
+
128
+ events: {
129
+ 'click .delete-row': 'onDeleteClick',
130
+ 'keyup [name=label]': 'onLabelChange',
131
+ },
132
+
133
+ initialize: function( options ) {
134
+ this.template = _.template( $( this.template ).text() );
135
+ this.part = options.part;
136
+
137
+ this.listenTo( this, 'ready', this.onReady );
138
+ },
139
+
140
+ render: function() {
141
+ this.setElement( this.template( this.model.toJSON() ) );
142
+ return this;
143
+ },
144
+
145
+ onReady: function() {
146
+ $( '[name=label]', this.$el ).focus();
147
+ },
148
+
149
+ onDeleteClick: function( e ) {
150
+ e.preventDefault();
151
+
152
+ this.model.collection.remove( this.model );
153
+ },
154
+
155
+ onLabelChange: function( e ) {
156
+ this.model.set( 'label', $( e.target ).val() );
157
+ this.part.trigger( 'change' );
158
+
159
+ var data = {
160
+ id: this.part.get( 'id' ),
161
+ callback: 'onTableRowLabelChangeCallback',
162
+ options: {
163
+ rowID: this.model.get( 'id' ),
164
+ }
165
+ };
166
+
167
+ api.previewer.send( 'happyforms-part-dom-update', data );
168
+ },
169
+ } );
170
+
171
+ var TableView = happyForms.classes.views.Part.extend( {
172
+ template: '#customize-happyforms-table-template',
173
+
174
  events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
175
  'click [data-happyforms-tab]': 'onTabClick',
176
  'click .add-column': 'onAddColumnClick',
 
 
 
177
  'click .add-row': 'onAddRowClick',
178
+ 'keyup .column-list [name=label]': 'onColumnEnterKey',
179
+ 'keyup .row-list [name=label]': 'onRowEnterKey',
180
  } ),
181
 
182
+ initialize: function() {
183
+ happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
184
+
185
+ this.columnViews = new Backbone.Collection();
186
+ this.rowViews = new Backbone.Collection();
187
+
188
+ this.listenTo( this.model.get( 'columns' ), 'add', this.onColumnModelAdd );
189
+ this.listenTo( this.model.get( 'columns' ), 'change', this.onColumnModelChange );
190
+ this.listenTo( this.model.get( 'columns' ), 'remove', this.onColumnModelRemove );
191
+ this.listenTo( this.model.get( 'columns' ), 'reset', this.onColumnModelsSorted );
192
+ this.listenTo( this.columnViews, 'add', this.onColumnViewAdd );
193
+ this.listenTo( this.columnViews, 'remove', this.onColumnViewRemove );
194
+ this.listenTo( this.columnViews, 'reset', this.onColumnViewsSorted );
195
+
196
+ this.listenTo( this.model.get( 'rows' ), 'add', this.onRowModelAdd );
197
+ this.listenTo( this.model.get( 'rows' ), 'change', this.onRowModelChange );
198
+ this.listenTo( this.model.get( 'rows' ), 'remove', this.onRowModelRemove );
199
+ this.listenTo( this.model.get( 'rows' ), 'reset', this.onRowModelsSorted );
200
+ this.listenTo( this.rowViews, 'add', this.onRowViewAdd );
201
+ this.listenTo( this.rowViews, 'remove', this.onRowViewRemove );
202
+ this.listenTo( this.rowViews, 'reset', this.onRowViewsSorted );
203
+
204
+ this.listenTo( this, 'sort-stop-column', this.onColumnSortStop );
205
+ this.listenTo( this, 'sort-stop-row', this.onRowSortStop );
206
+
207
+ this.listenTo( this.model, 'change:allow_multiple_selection', this.onMultipleSelectionChange );
208
+ this.listenTo( this, 'ready', this.onReady );
209
+ },
210
+
211
  onReady: function() {
212
  this.model.get( 'columns' ).each( function( columnModel ) {
213
+ this.addColumnView( columnModel );
214
  }, this );
215
 
216
  this.model.get( 'rows' ).each( function( rowModel ) {
217
+ this.addRowView( rowModel );
218
  }, this );
219
+
220
+ $( '.column-list', this.$el ).sortable( {
221
+ handle: '.happyforms-part-item-handle',
222
+ helper: 'clone',
223
+
224
+ stop: function ( e, ui ) {
225
+ this.trigger( 'sort-stop-column', e, ui );
226
+ }.bind( this ),
227
+ } );
228
+
229
+ $( '.row-list', this.$el ).sortable( {
230
+ handle: '.happyforms-part-item-handle',
231
+ helper: 'clone',
232
+
233
+ stop: function ( e, ui ) {
234
+ this.trigger( 'sort-stop-row', e, ui );
235
+ }.bind( this ),
236
+ } );
237
  },
238
 
239
+ onColumnModelAdd: function( rowModel, rowsCollection, options ) {
240
+ this.model.trigger( 'change' );
241
+ this.addColumnView( rowModel, options );
242
+
243
  var model = this.model;
244
 
245
  this.model.fetchHtml( function( response ) {
252
  } );
253
  },
254
 
255
+ onColumnModelChange: function( rowModel ) {
256
  this.model.trigger( 'change' );
257
  },
258
 
259
+ onColumnModelRemove: function( columnModel ) {
260
  this.model.trigger( 'change' );
261
+
262
+ var columnViewModel = this.columnViews.find( function( viewModel ) {
263
+ return viewModel.get( 'view' ).model.id === columnModel.id;
264
+ }, this );
265
+
266
+ this.columnViews.remove( columnViewModel );
267
+
268
+ if ( this.model.get( 'columns' ).length == 0 ) {
269
+ $( '.column-list', this.$el ).html( '' );
270
+ }
271
+
272
+ var data = {
273
+ id: this.model.get( 'id' ),
274
+ callback: 'onTableColumnDeleteCallback',
275
+ options: {
276
+ itemID: columnModel.id,
277
+ }
278
+ };
279
+
280
+ api.previewer.send( 'happyforms-part-dom-update', data );
281
  },
282
 
283
+ onColumnModelsSorted: function() {
284
+ this.columnViews.reset( _.map( this.model.get( 'columns' ).pluck( 'id' ), function( id ) {
285
+ return this.columnViews.get( id );
286
+ }, this ) );
287
+ this.model.trigger( 'change' );
 
288
 
289
+ var model = this.model;
290
+
291
+ this.model.fetchHtml( function( response ) {
292
+ var data = {
293
+ id: model.get( 'id' ),
294
+ html: response,
295
+ };
296
+
297
+ happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
298
+ } );
299
  },
300
 
301
+ addColumnView: function( columnModel, options ) {
302
+ var columnView = new ColumnView( _.extend( {
303
+ model: columnModel,
304
+ part: this.model,
305
+ }, options ) );
306
+
307
+ var columnViewModel = new Backbone.Model( {
308
+ id: columnModel.id,
309
+ view: columnView,
310
+ } );
311
 
312
+ this.columnViews.add( columnViewModel, options );
 
313
  },
314
 
315
+ onColumnViewAdd: function( viewModel, collection, options ) {
316
+ var columnView = viewModel.get( 'view' );
317
+ $( '.column-list', this.$el ).append( columnView.render().$el );
318
+ columnView.trigger( 'ready' );
319
+ },
320
 
321
+ onColumnViewRemove: function( viewModel ) {
322
+ var columnView = viewModel.get( 'view' );
323
+ columnView.remove();
324
  },
325
 
326
+ onColumnSortStop: function( e, ui ) {
327
+ var $sortable = $( '.column-list', this.$el );
328
+ var ids = $sortable.sortable( 'toArray', { attribute: 'data-column-id' } );
329
 
330
+ this.model.get( 'columns' ).reset( _.map( ids, function( id ) {
331
+ return this.model.get( 'columns' ).get( id );
332
+ }, this ) );
333
+ },
334
 
335
+ onRowSortStop: function( e, ui ) {
336
+ var $sortable = $( '.row-list', this.$el );
337
+ var ids = $sortable.sortable( 'toArray', { attribute: 'data-row-id' } );
338
+
339
+ this.model.get( 'rows' ).reset( _.map( ids, function( id ) {
340
+ return this.model.get( 'rows' ).get( id );
341
+ }, this ) );
342
+ },
343
+
344
+ onColumnViewsSorted: function( columnViews ) {
345
+ var $stage = $( '.column-list', this.$el );
346
+
347
+ columnViews.forEach( function( columnViewModel ) {
348
+ var columnView = columnViewModel.get( 'view' );
349
+ var $columnViewEl = columnView.$el;
350
+ $columnViewEl.detach();
351
+ $stage.append( $columnViewEl );
352
+ columnView.trigger( 'refresh' );
353
+ }, this );
354
+ },
355
+
356
+ onRowModelAdd: function( rowModel, rowsCollection, options ) {
357
+ this.model.trigger( 'change' );
358
+ this.addRowView( rowModel, options );
359
+
360
+ var model = this.model;
361
 
362
  this.model.fetchHtml( function( response ) {
363
  var data = {
369
  } );
370
  },
371
 
372
+ onRowModelChange: function( rowModel ) {
373
+ this.model.trigger( 'change' );
374
+ },
375
 
376
+ onRowModelRemove: function( rowModel ) {
377
+ this.model.trigger( 'change' );
378
 
379
+ var rowViewModel = this.rowViews.find( function( viewModel ) {
380
+ return viewModel.get( 'view' ).model.id === rowModel.id;
381
+ }, this );
382
 
383
+ this.rowViews.remove( rowViewModel );
384
+
385
+ if ( this.model.get( 'rows' ).length == 0 ) {
386
+ $( '.row-list', this.$el ).html( '' );
387
  }
388
 
389
  var data = {
390
  id: this.model.get( 'id' ),
391
+ callback: 'onTableRowDeleteCallback',
392
  options: {
393
+ itemID: rowModel.id,
394
  }
395
  };
396
 
397
  api.previewer.send( 'happyforms-part-dom-update', data );
398
  },
399
 
400
+ onRowModelsSorted: function() {
401
+ this.rowViews.reset( _.map( this.model.get( 'rows' ).pluck( 'id' ), function( id ) {
402
+ return this.rowViews.get( id );
403
+ }, this ) );
404
+ this.model.trigger( 'change' );
405
 
406
+ var model = this.model;
407
 
408
+ this.model.fetchHtml( function( response ) {
409
+ var data = {
410
+ id: model.get( 'id' ),
411
+ html: response,
412
+ };
 
 
413
 
414
+ happyForms.previewSendBuffered( 'happyforms-form-part-refresh', data );
415
+ } );
416
  },
417
 
418
+ addRowView: function( rowModel, options ) {
419
+ var rowView = new RowView( _.extend( {
420
+ model: rowModel,
421
+ part: this.model,
422
+ }, options ) );
 
 
 
 
423
 
424
+ var rowViewModel = new Backbone.Model( {
425
+ id: rowModel.id,
426
+ view: rowView,
427
+ } );
428
 
429
+ this.rowViews.add( rowViewModel, options );
430
+ },
431
 
432
+ onRowViewAdd: function( viewModel, collection, options ) {
433
+ var rowView = viewModel.get( 'view' );
434
+ $( '.row-list', this.$el ).append( rowView.render().$el );
435
+ rowView.trigger( 'ready' );
436
+ },
 
 
437
 
438
+ onRowViewRemove: function( viewModel ) {
439
+ var rowView = viewModel.get( 'view' );
440
+ rowView.remove();
441
  },
442
 
443
+ onRowViewsSorted: function( rowViews ) {
444
+ var $stage = $( '.row-list', this.$el );
445
 
446
+ rowViews.forEach( function( rowViewModel ) {
447
+ var rowView = rowViewModel.get( 'view' );
448
+ var $rowViewEl = rowView.$el;
449
+ $rowViewEl.detach();
450
+ $stage.append( $rowViewEl );
451
+ rowView.trigger( 'refresh' );
452
+ }, this );
453
+ },
454
 
455
+ onMultipleSelectionChange: function() {
456
+ var model = this.model;
457
 
458
  this.model.fetchHtml( function( response ) {
459
  var data = {
465
  } );
466
  },
467
 
468
+ onRowsChange: function() {
469
+ this.model.trigger( 'change' );
470
+ },
471
 
472
+ onAddColumnClick: function( e ) {
473
+ e.preventDefault();
474
 
475
+ var columnID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_column_', this.model.get( 'columns' ) );
476
+ var columnModel = new ColumnModel( { id: columnID } );
477
+ this.model.get( 'columns' ).add( columnModel );
478
+ },
479
 
480
+ onAddRowClick: function( e ) {
481
+ var rowID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_row_', this.model.get( 'rows' ) );
482
+ var rowModel = new RowModel( { id: rowID } );
483
+ this.model.get( 'rows' ).add( rowModel );
484
+ },
485
 
486
+ onTabClick: function( e ) {
487
+ var $link = $( e.target );
488
+ var $links = $link.siblings();
489
+ var tabClass = $link.attr( 'data-happyforms-tab' );
490
+ var $tabs = $( '.tab-content > div', this.$el );
491
+ var $tab = $( '.tab-content > .' + tabClass, this.$el );
 
492
 
493
+ $links.removeClass( 'active' );
494
+ $link.addClass( 'active' );
495
+ $tabs.removeClass( 'active' );
496
+ $tab.addClass( 'active' );
497
  },
498
 
499
+ onColumnEnterKey: function( e ) {
500
+ e.preventDefault();
 
501
 
502
+ if ( 'Enter' === e.key ) {
503
+ $( '.add-column', this.$el ).click();
504
+ return;
505
+ }
506
+ },
507
 
508
+ onRowEnterKey: function( e ) {
509
+ e.preventDefault();
 
 
 
 
 
510
 
511
+ if ( 'Enter' === e.key ) {
512
+ $( '.add-row', this.$el ).click();
513
+ return;
514
+ }
515
  },
516
  } );
517
 
assets/js/parts/part-title.js CHANGED
@@ -11,7 +11,24 @@
11
  });
12
 
13
  var TitleView = happyForms.classes.views.Part.extend({
14
- template: '#happyforms-customize-title-template'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  });
16
 
17
  happyForms.factory.model = _.wrap(happyForms.factory.model, function (func, attrs, options, BaseClass) {
11
  });
12
 
13
  var TitleView = happyForms.classes.views.Part.extend({
14
+ template: '#happyforms-customize-title-template',
15
+
16
+ initialize: function () {
17
+ happyForms.classes.views.Part.prototype.initialize.apply(this, arguments);
18
+
19
+ this.listenTo(this.model, 'change:required', this.onRequiredChange);
20
+ },
21
+
22
+ onRequiredChange: function( model, value ) {
23
+ model.fetchHtml(function (response) {
24
+ var data = {
25
+ id: model.get('id'),
26
+ html: response,
27
+ };
28
+
29
+ happyForms.previewSendBuffered('happyforms-form-part-refresh', data);
30
+ });
31
+ }
32
  });
33
 
34
  happyForms.factory.model = _.wrap(happyForms.factory.model, function (func, attrs, options, BaseClass) {
assets/png/draggable-handle-pattern.png ADDED
Binary file
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.me
6
  * Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
7
  * Author: The Theme Foundry
8
- * Version: 1.6.6
9
  * Author URI: https://thethemefoundry.com
10
  * Upgrade URI: https://thethemefoundry.com
11
  */
@@ -13,7 +13,7 @@
13
  /**
14
  * The current version of the plugin.
15
  */
16
- define( 'HAPPYFORMS_VERSION', '1.6.6' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
5
  * Plugin URI: https://happyforms.me
6
  * Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
7
  * Author: The Theme Foundry
8
+ * Version: 1.6.7
9
  * Author URI: https://thethemefoundry.com
10
  * Upgrade URI: https://thethemefoundry.com
11
  */
13
  /**
14
  * The current version of the plugin.
15
  */
16
+ define( 'HAPPYFORMS_VERSION', '1.6.7' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
inc/classes/class-form-admin.php CHANGED
@@ -130,8 +130,8 @@ class HappyForms_Form_Admin {
130
  *
131
  * @return string
132
  */
133
- public function get_edit_post_link( $link, $post_id, $context = '' ) {
134
- return happyforms_get_form_edit_link( $post_id );
135
  }
136
 
137
  /**
@@ -354,9 +354,17 @@ class HappyForms_Form_Admin {
354
  );
355
 
356
  $links = array(
357
- 'edit' => array(
358
- __( 'Edit', 'happyforms' ),
359
- get_edit_post_link()
 
 
 
 
 
 
 
 
360
  ),
361
  'duplicate' => array(
362
  __( 'Duplicate', 'happyforms' ),
130
  *
131
  * @return string
132
  */
133
+ public function get_edit_post_link( $link, $post_id, $step = '' ) {
134
+ return happyforms_get_form_edit_link( $post_id, '', $step );
135
  }
136
 
137
  /**
354
  );
355
 
356
  $links = array(
357
+ 'build' => array(
358
+ __( 'Build', 'happyforms' ),
359
+ get_edit_post_link( $post->ID, 'build' )
360
+ ),
361
+ 'setup' => array(
362
+ __( 'Setup', 'happyforms' ),
363
+ get_edit_post_link( $post->ID, 'setup' )
364
+ ),
365
+ 'style' => array(
366
+ __( 'Style', 'happyforms' ),
367
+ get_edit_post_link( $post->ID, 'style' )
368
  ),
369
  'duplicate' => array(
370
  __( 'Duplicate', 'happyforms' ),
inc/classes/class-form-part-library.php CHANGED
@@ -252,7 +252,7 @@ class HappyForms_Form_Part_Library {
252
  public function html_part_data_attributes( $attributes, $part_data, $form_data ) {
253
  $attributes['happyforms-type'] = $part_data['type'];
254
 
255
- if ( $part_data['required'] ) {
256
  $attributes['happyforms-required'] = '';
257
  }
258
 
252
  public function html_part_data_attributes( $attributes, $part_data, $form_data ) {
253
  $attributes['happyforms-type'] = $part_data['type'];
254
 
255
+ if ( isset( $part_data['required'] ) && 1 === intval( $part_data['required'] ) ) {
256
  $attributes['happyforms-required'] = '';
257
  }
258
 
inc/classes/class-form-styles.php CHANGED
@@ -51,11 +51,6 @@ class HappyForms_Form_Styles {
51
  'target' => 'form_class',
52
  'sanitize' => 'sanitize_text_field'
53
  ),
54
- 'hf_style_required_text' => array(
55
- 'default' => '*',
56
- 'sanitize' => 'sanitize_text_field',
57
- 'target' => '',
58
- ),
59
  'disable_submit_until_valid' => array(
60
  'default' => '',
61
  'sanitize' => 'sanitize_text_field',
@@ -75,16 +70,6 @@ class HappyForms_Form_Styles {
75
  'extra_class' => 'form-width-control',
76
  'sanitize' => 'sanitize_text_field'
77
  ),
78
- 'form_font_weight' => array(
79
- 'default' => 'normal',
80
- 'options' => array(
81
- 'normal' => __( 'Normal', 'happyforms' ),
82
- 'bold' => __( 'Bold', 'happyforms' )
83
- ),
84
- 'target' => 'css_var',
85
- 'variable' => '--happyforms-form-font-weight',
86
- 'sanitize' => 'sanitize_text_field'
87
- ),
88
  'form_title' => array(
89
  'default' => '',
90
  'options' => array(
@@ -162,15 +147,6 @@ class HappyForms_Form_Styles {
162
  'target' => 'form_class',
163
  'sanitize' => 'sanitize_text_field'
164
  ),
165
- 'part_hide_titles' => array(
166
- 'default' => '',
167
- 'options' => array(
168
- '' => __( 'Show', 'happyforms' ),
169
- 'happyforms-form--part-hide-labels' => __( 'Hide', 'happyforms' )
170
- ),
171
- 'sanitize' => 'sanitize_text_field',
172
- 'target' => 'form_class',
173
- ),
174
  'part_toggle_placeholders' => array(
175
  'default' => '',
176
  'value' => 'happyforms-form--part-placeholder-toggle',
@@ -345,12 +321,6 @@ class HappyForms_Form_Styles {
345
  'target' => 'css_var',
346
  'variable' => '--happyforms-color-part-placeholder',
347
  ),
348
- 'color_part_required' => array(
349
- 'default' => '#ff7550',
350
- 'sanitize' => 'sanitize_text_field',
351
- 'target' => 'css_var',
352
- 'variable' => '--happyforms-color-part-required-text',
353
- ),
354
  'color_part_border' => array(
355
  'default' => '#dbdbdb',
356
  'sanitize' => 'sanitize_text_field',
@@ -375,12 +345,6 @@ class HappyForms_Form_Styles {
375
  'target' => 'css_var',
376
  'variable' => '--happyforms-color-part-background-focus',
377
  ),
378
- 'color_disable_part_transitions' => array(
379
- 'default' => '',
380
- 'sanitize' => 'sanitize_text_field',
381
- 'target' => 'form_class',
382
- 'value' => 'happyforms-form--part-disable-transitions'
383
- ),
384
  'color_submit_background' => array(
385
  'default' => '#407fff',
386
  'sanitize' => 'sanitize_text_field',
@@ -411,12 +375,6 @@ class HappyForms_Form_Styles {
411
  'target' => 'css_var',
412
  'variable' => '--happyforms-color-submit-text-hover',
413
  ),
414
- 'color_disable_submit_button_transitions' => array(
415
- 'default' => '',
416
- 'sanitize' => 'sanitize_text_field',
417
- 'target' => 'form_class',
418
- 'value' => 'happyforms-form--submit-button-disable-transitions'
419
- ),
420
  'color_rating_star' => array(
421
  'default' => '#cccccc',
422
  'sanitize' => 'sanitize_text_field',
@@ -534,21 +492,11 @@ class HappyForms_Form_Styles {
534
  'label' => __( 'Direction', 'happyforms' ),
535
  'field' => 'form_direction'
536
  ),
537
- array(
538
- 'type' => 'text',
539
- 'label' => __( 'Required text', 'happyforms' ),
540
- 'field' => 'hf_style_required_text',
541
- ),
542
  array(
543
  'type' => 'checkbox',
544
  'label' => __( 'Disable submit button until form is valid', 'happyforms' ),
545
  'field' => 'disable_submit_until_valid',
546
  ),
547
- array(
548
- 'type' => 'buttonset',
549
- 'label' => __( 'Font weight', 'happyforms' ),
550
- 'field' => 'form_font_weight',
551
- ),
552
  array(
553
  'type' => 'heading',
554
  'label' => __( 'Colors', 'happyforms' )
@@ -640,20 +588,10 @@ class HappyForms_Form_Styles {
640
  'label' => __( 'Background on focus', 'happyforms' ),
641
  'field' => 'color_part_background_focus',
642
  ),
643
- array(
644
- 'type' => 'checkbox',
645
- 'label' => __( 'Disable transitions on part colors', 'happyforms' ),
646
- 'field' => 'color_disable_part_transitions'
647
- ),
648
  array(
649
  'type' => 'divider',
650
  'label' => __( 'Part labels & text', 'happyforms' )
651
  ),
652
- array(
653
- 'type' => 'buttonset',
654
- 'label' => __( 'Part titles', 'happyforms' ),
655
- 'field' => 'part_hide_titles',
656
- ),
657
  array(
658
  'type' => 'checkbox',
659
  'label' => __( 'Toggle placeholder on part focus', 'happyforms' ),
@@ -713,11 +651,6 @@ class HappyForms_Form_Styles {
713
  'label' => __( 'Placeholder', 'happyforms' ),
714
  'field' => 'color_part_placeholder',
715
  ),
716
- array(
717
- 'type' => 'color',
718
- 'label' => __( 'Required text', 'happyforms' ),
719
- 'field' => 'color_part_required',
720
- ),
721
  array(
722
  'type' => 'divider',
723
  'label' => __( 'Dropdowns', 'happyforms' ),
@@ -891,11 +824,6 @@ class HappyForms_Form_Styles {
891
  'label' => __( 'Text focused', 'happyforms' ),
892
  'field' => 'color_submit_text_hover',
893
  ),
894
- array(
895
- 'type' => 'checkbox',
896
- 'label' => __( 'Disable transitions on submit button', 'happyforms' ),
897
- 'field' => 'color_disable_submit_button_transitions'
898
- ),
899
  );
900
 
901
  return $controls;
51
  'target' => 'form_class',
52
  'sanitize' => 'sanitize_text_field'
53
  ),
 
 
 
 
 
54
  'disable_submit_until_valid' => array(
55
  'default' => '',
56
  'sanitize' => 'sanitize_text_field',
70
  'extra_class' => 'form-width-control',
71
  'sanitize' => 'sanitize_text_field'
72
  ),
 
 
 
 
 
 
 
 
 
 
73
  'form_title' => array(
74
  'default' => '',
75
  'options' => array(
147
  'target' => 'form_class',
148
  'sanitize' => 'sanitize_text_field'
149
  ),
 
 
 
 
 
 
 
 
 
150
  'part_toggle_placeholders' => array(
151
  'default' => '',
152
  'value' => 'happyforms-form--part-placeholder-toggle',
321
  'target' => 'css_var',
322
  'variable' => '--happyforms-color-part-placeholder',
323
  ),
 
 
 
 
 
 
324
  'color_part_border' => array(
325
  'default' => '#dbdbdb',
326
  'sanitize' => 'sanitize_text_field',
345
  'target' => 'css_var',
346
  'variable' => '--happyforms-color-part-background-focus',
347
  ),
 
 
 
 
 
 
348
  'color_submit_background' => array(
349
  'default' => '#407fff',
350
  'sanitize' => 'sanitize_text_field',
375
  'target' => 'css_var',
376
  'variable' => '--happyforms-color-submit-text-hover',
377
  ),
 
 
 
 
 
 
378
  'color_rating_star' => array(
379
  'default' => '#cccccc',
380
  'sanitize' => 'sanitize_text_field',
492
  'label' => __( 'Direction', 'happyforms' ),
493
  'field' => 'form_direction'
494
  ),
 
 
 
 
 
495
  array(
496
  'type' => 'checkbox',
497
  'label' => __( 'Disable submit button until form is valid', 'happyforms' ),
498
  'field' => 'disable_submit_until_valid',
499
  ),
 
 
 
 
 
500
  array(
501
  'type' => 'heading',
502
  'label' => __( 'Colors', 'happyforms' )
588
  'label' => __( 'Background on focus', 'happyforms' ),
589
  'field' => 'color_part_background_focus',
590
  ),
 
 
 
 
 
591
  array(
592
  'type' => 'divider',
593
  'label' => __( 'Part labels & text', 'happyforms' )
594
  ),
 
 
 
 
 
595
  array(
596
  'type' => 'checkbox',
597
  'label' => __( 'Toggle placeholder on part focus', 'happyforms' ),
651
  'label' => __( 'Placeholder', 'happyforms' ),
652
  'field' => 'color_part_placeholder',
653
  ),
 
 
 
 
 
654
  array(
655
  'type' => 'divider',
656
  'label' => __( 'Dropdowns', 'happyforms' ),
824
  'label' => __( 'Text focused', 'happyforms' ),
825
  'field' => 'color_submit_text_hover',
826
  ),
 
 
 
 
 
827
  );
828
 
829
  return $controls;
inc/classes/parts/class-part-checkbox.php CHANGED
@@ -68,7 +68,8 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
68
  private function get_option_defaults() {
69
  return array(
70
  'is_default' => 0,
71
- 'label' => ''
 
72
  );
73
  }
74
 
@@ -205,11 +206,12 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
205
  }
206
 
207
  public function html_part_class( $class, $part, $form ) {
208
- if ( $this->type === $part['type']
209
- && isset( $part['display_type'] )
210
- && 'block' === $part['display_type'] ) {
211
-
212
- $class[] = 'display-type--block';
 
213
  }
214
 
215
  return $class;
68
  private function get_option_defaults() {
69
  return array(
70
  'is_default' => 0,
71
+ 'label' => '',
72
+ 'description' => ''
73
  );
74
  }
75
 
206
  }
207
 
208
  public function html_part_class( $class, $part, $form ) {
209
+ if ( $this->type === $part['type'] ) {
210
+ $class[] = 'happyforms-part--choice';
211
+
212
+ if ( 'block' === $part['display_type'] ) {
213
+ $class[] = 'display-type--block';
214
+ }
215
  }
216
 
217
  return $class;
inc/classes/parts/class-part-date.php CHANGED
@@ -185,6 +185,15 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
185
  array( 'hour', 'minute', 'period' ) :
186
  array( 'hour', 'minute' );
187
  break;
 
 
 
 
 
 
 
 
 
188
  }
189
 
190
  $validated_components = array_intersect_key( $validated_value, array_flip( $components ) );
@@ -208,8 +217,7 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
208
  }
209
 
210
  // Year, month, day
211
- if ( ! empty( $validated_value['year'] )
212
- && ( 'date' === $part['date_type'] || 'datetime' === $part['date_type'] ) ) {
213
  // Year not in range
214
  $year = intval( $validated_value['year'] );
215
  $min_year = intval( $part['min_year'] );
@@ -245,28 +253,46 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
245
  $hour = sprintf( '%02d', intval( $validated_value['hour'] ) );
246
  $minute = sprintf( '%02d', intval( $validated_value['minute'] ) );
247
  $period = $validated_value['period'];
248
- $string_value = '';
249
- $format = '';
250
-
251
- if ( $part['date_type'] === 'date' ) {
252
- $string_value = sprintf( '%s-%s-%s', $year, $month, $day );
253
- $format = 'Y-m-d';
254
- } elseif ( $part['date_type'] === 'datetime' ) {
255
- if ( '12' == $part['time_format'] ) {
256
- $string_value = sprintf( '%s-%s-%s %s:%s %s', $year, $month, $day, $hour, $minute, $period );
257
- $format = 'Y-m-d h:i A';
258
- } else {
259
- $string_value = sprintf( '%s-%s-%s %s:%s', $year, $month, $day, $hour, $minute );
260
- $format = 'Y-m-d H:i';
261
- }
262
- } else {
263
- if ( '12' == $part['time_format'] ) {
264
- $string_value = sprintf( '%s:%s %s', $hour, $minute, $period );
265
- $format = 'h:i A';
266
- } else {
267
- $string_value = sprintf( '%s:%s', $hour, $minute );
268
- $format = 'H:i';
269
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  }
271
 
272
  if ( ! date_create_from_format( $format, $string_value ) ) {
@@ -309,6 +335,15 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
309
  $value .= " {$period}";
310
  }
311
  break;
 
 
 
 
 
 
 
 
 
312
  default:
313
  $value = '';
314
  break;
@@ -323,6 +358,10 @@ class HappyForms_Part_Date extends HappyForms_Form_Part {
323
 
324
  public function html_part_class( $class, $part, $form ) {
325
  if ( $this->type === $part['type'] ) {
 
 
 
 
326
  if ( isset( $part['date_type'] ) ) {
327
  $class[] = 'happyforms-part-date--' . $part['date_type'];
328
  }
185
  array( 'hour', 'minute', 'period' ) :
186
  array( 'hour', 'minute' );
187
  break;
188
+ case 'month_year':
189
+ $components = array( 'month', 'year' );
190
+ break;
191
+ case 'month':
192
+ $components = array( 'month' );
193
+ break;
194
+ case 'year':
195
+ $components = array( 'year' );
196
+ break;
197
  }
198
 
199
  $validated_components = array_intersect_key( $validated_value, array_flip( $components ) );
217
  }
218
 
219
  // Year, month, day
220
+ if ( ! empty( $validated_value['year'] ) && 'time' !== $part['date_type'] ) {
 
221
  // Year not in range
222
  $year = intval( $validated_value['year'] );
223
  $min_year = intval( $part['min_year'] );
253
  $hour = sprintf( '%02d', intval( $validated_value['hour'] ) );
254
  $minute = sprintf( '%02d', intval( $validated_value['minute'] ) );
255
  $period = $validated_value['period'];
256
+
257
+ switch( $part['date_type'] ) {
258
+ case 'date':
259
+ $string_value = sprintf( '%s-%s-%s', $year, $month, $day );
260
+ $format = 'Y-m-d';
261
+ break;
262
+ case 'datetime':
263
+ if ( '12' == $part['time_format'] ) {
264
+ $string_value = sprintf( '%s-%s-%s %s:%s %s', $year, $month, $day, $hour, $minute, $period );
265
+ $format = 'Y-m-d h:i A';
266
+ } else {
267
+ $string_value = sprintf( '%s-%s-%s %s:%s', $year, $month, $day, $hour, $minute );
268
+ $format = 'Y-m-d H:i';
269
+ }
270
+ break;
271
+ case 'time':
272
+ if ( '12' == $part['time_format'] ) {
273
+ $string_value = sprintf( '%s:%s %s', $hour, $minute, $period );
274
+ $format = 'h:i A';
275
+ } else {
276
+ $string_value = sprintf( '%s:%s', $hour, $minute );
277
+ $format = 'H:i';
278
+ }
279
+ break;
280
+ case 'month_year':
281
+ $string_value = sprintf( '%s-%s', $year, $month );
282
+ $format = 'Y-m';
283
+ break;
284
+ case 'month':
285
+ $string_value = sprintf( '%s', $month );
286
+ $format = 'm';
287
+ break;
288
+ case 'year':
289
+ $string_value = sprintf( '%s', $year );
290
+ $format = 'Y';
291
+ break;
292
+ default:
293
+ $string_value = '';
294
+ $format = '';
295
+ break;
296
  }
297
 
298
  if ( ! date_create_from_format( $format, $string_value ) ) {
335
  $value .= " {$period}";
336
  }
337
  break;
338
+ case 'month_year':
339
+ $value = "{$month} {$year}";
340
+ break;
341
+ case 'month':
342
+ $value = "{$month}";
343
+ break;
344
+ case 'year':
345
+ $value = "{$year}";
346
+ break;
347
  default:
348
  $value = '';
349
  break;
358
 
359
  public function html_part_class( $class, $part, $form ) {
360
  if ( $this->type === $part['type'] ) {
361
+ if ( 1 === intval( $part['required'] ) ) {
362
+ $class[] = 'happyforms-part-date--required';
363
+ }
364
+
365
  if ( isset( $part['date_type'] ) ) {
366
  $class[] = 'happyforms-part-date--' . $part['date_type'];
367
  }
inc/classes/parts/class-part-number.php CHANGED
@@ -54,14 +54,14 @@ class HappyForms_Part_Number extends HappyForms_Form_Part {
54
  'default' => '',
55
  'sanitize' => 'sanitize_text_field'
56
  ),
57
- 'min_value' => array(
58
- 'default' => 0,
59
- 'sanitize' => 'intval'
60
- ),
61
- 'max_value' => array(
62
- 'default' => 10,
63
- 'sanitize' => 'intval'
64
- ),
65
  'masked' => array(
66
  'default' => 0,
67
  'sanitize' => 'intval'
@@ -169,16 +169,23 @@ class HappyForms_Part_Number extends HappyForms_Form_Part {
169
  return new WP_Error( 'error', __( 'This field is required.', 'happyforms' ) );
170
  }
171
 
172
- // Non-masked, bounds check
173
- if ( ! $part['masked'] ) {
174
- if ( ! empty( $validated_values ) && '' !== $validated_values[0] ) {
175
- $current_value = intval( $validated_values[0] );
176
- $min_value = intval( $part['min_value'] );
177
- $max_value = intval( $part['max_value'] );
 
 
 
 
 
 
 
 
178
 
179
- if ( $current_value < $min_value || $current_value > $max_value ) {
180
- return new WP_Error( 'error', __( 'This field does not match minimum and maximum allowed value.', 'happyforms' ) );
181
- }
182
  }
183
  }
184
 
54
  'default' => '',
55
  'sanitize' => 'sanitize_text_field'
56
  ),
57
+ 'min_value' => array(
58
+ 'default' => 0,
59
+ 'sanitize' => 'intval'
60
+ ),
61
+ 'max_value' => array(
62
+ 'default' => 10,
63
+ 'sanitize' => 'intval'
64
+ ),
65
  'masked' => array(
66
  'default' => 0,
67
  'sanitize' => 'intval'
169
  return new WP_Error( 'error', __( 'This field is required.', 'happyforms' ) );
170
  }
171
 
172
+ $validation_number = $validated_values[0];
173
+
174
+ if ( $part['masked'] && '' !== $validation_number ) {
175
+ $validation_number = str_replace( $part['mask_numeric_prefix'], '', $validation_number );
176
+ $validation_number = trim( $validation_number );
177
+ $validation_number = str_replace( $part['mask_numeric_thousands_delimiter'], '', $validation_number );
178
+ $validation_number = str_replace( $part['mask_numeric_decimal_mark'], '.', $validation_number );
179
+ }
180
+
181
+ // Bounds check
182
+ if ( ! empty( $validated_values ) && '' !== $validation_number ) {
183
+ $validation_number = floatval( $validation_number );
184
+ $min_value = intval( $part['min_value'] );
185
+ $max_value = intval( $part['max_value'] );
186
 
187
+ if ( $validation_number < $min_value || $validation_number > $max_value ) {
188
+ return new WP_Error( 'error', __( 'This field does not match minimum and maximum allowed value.', 'happyforms' ) );
 
189
  }
190
  }
191
 
inc/classes/parts/class-part-phone.php CHANGED
@@ -59,8 +59,8 @@ class HappyForms_Part_Phone extends HappyForms_Form_Part {
59
  'sanitize' => 'intval'
60
  ),
61
  'mask_phone_country' => array(
62
- 'default' => 1,
63
- 'sanitize' => 'intval'
64
  ),
65
  'mask_allow_all_countries' => array(
66
  'default' => 0,
@@ -364,7 +364,11 @@ class HappyForms_Part_Phone extends HappyForms_Form_Part {
364
 
365
  if ( '' !== implode( '', array_values( $sanitized_value ) ) ) {
366
  foreach( $sanitized_value as $component => $value ) {
367
- $sanitized_value[$component] = preg_replace( '/[^0-9]/', '', $value );
 
 
 
 
368
  }
369
  }
370
  }
59
  'sanitize' => 'intval'
60
  ),
61
  'mask_phone_country' => array(
62
+ 'default' => 'US',
63
+ 'sanitize' => 'sanitize_text_field'
64
  ),
65
  'mask_allow_all_countries' => array(
66
  'default' => 0,
364
 
365
  if ( '' !== implode( '', array_values( $sanitized_value ) ) ) {
366
  foreach( $sanitized_value as $component => $value ) {
367
+ if ( 'country' !== $component ) {
368
+ $sanitized_value[$component] = preg_replace( '/[^0-9]/', '', $value );
369
+ } else {
370
+ $sanitized_value[$component] = sanitize_text_field( $value );
371
+ }
372
  }
373
  }
374
  }
inc/classes/parts/class-part-placeholder.php CHANGED
@@ -40,10 +40,6 @@ class HappyForms_Part_Placeholder extends HappyForms_Form_Part {
40
  'default' => '',
41
  'sanitize' => 'sanitize_text_field'
42
  ),
43
- 'required' => array(
44
- 'default' => '',
45
- 'sanitize' => 'happyforms_sanitize_checkbox',
46
- ),
47
  'placeholder_text' => array(
48
  'default' => '',
49
  'sanitize' => 'esc_html'
40
  'default' => '',
41
  'sanitize' => 'sanitize_text_field'
42
  ),
 
 
 
 
43
  'placeholder_text' => array(
44
  'default' => '',
45
  'sanitize' => 'esc_html'
inc/classes/parts/class-part-radio.php CHANGED
@@ -207,6 +207,8 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
207
 
208
  public function html_part_class( $class, $part, $form ) {
209
  if ( $this->type === $part['type'] ) {
 
 
210
  if ( isset( $part['display_type'] ) && 'block' === $part['display_type'] ) {
211
  $class[] = 'display-type--block';
212
  }
207
 
208
  public function html_part_class( $class, $part, $form ) {
209
  if ( $this->type === $part['type'] ) {
210
+ $class[] = 'happyforms-part--choice';
211
+
212
  if ( isset( $part['display_type'] ) && 'block' === $part['display_type'] ) {
213
  $class[] = 'display-type--block';
214
  }
inc/classes/parts/class-part-select.php CHANGED
@@ -10,6 +10,7 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
10
 
11
  add_filter( 'happyforms_stringify_part_value', array( $this, 'stringify_value' ), 10, 3 );
12
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
 
13
  }
14
 
15
  /**
@@ -41,6 +42,10 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
41
  'default' => '',
42
  'sanitize' => 'sanitize_text_field'
43
  ),
 
 
 
 
44
  'width' => array(
45
  'default' => 'full',
46
  'sanitize' => 'sanitize_key'
@@ -190,6 +195,20 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
190
  return $value;
191
  }
192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  public function script_dependencies( $deps, $forms ) {
194
  $contains_select = false;
195
  $form_controller = happyforms_get_form_controller();
10
 
11
  add_filter( 'happyforms_stringify_part_value', array( $this, 'stringify_value' ), 10, 3 );
12
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
13
+ add_filter( 'happyforms_part_class', array( $this, 'html_part_class' ), 10, 3 );
14
  }
15
 
16
  /**
42
  'default' => '',
43
  'sanitize' => 'sanitize_text_field'
44
  ),
45
+ 'placeholder' => array(
46
+ 'default' => '',
47
+ 'sanitize' => 'sanitize_text_field',
48
+ ),
49
  'width' => array(
50
  'default' => 'full',
51
  'sanitize' => 'sanitize_key'
195
  return $value;
196
  }
197
 
198
+ public function html_part_class( $class, $part, $form ) {
199
+ if ( $this->type === $part['type'] ) {
200
+ if ( happyforms_get_part_value( $part, $form ) ) {
201
+ $class[] = 'happyforms-part--filled';
202
+ }
203
+
204
+ if ( 1 === intval( $part['required'] ) ) {
205
+ $class[] = 'happyforms-part-select--required';
206
+ }
207
+ }
208
+
209
+ return $class;
210
+ }
211
+
212
  public function script_dependencies( $deps, $forms ) {
213
  $contains_select = false;
214
  $form_controller = happyforms_get_form_controller();
inc/classes/parts/class-part-title.php CHANGED
@@ -9,6 +9,7 @@ class HappyForms_Part_Title extends HappyForms_Form_Part {
9
  $this->description = __( 'For displaying personal honorifics.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
 
12
  }
13
 
14
  /**
@@ -40,6 +41,10 @@ class HappyForms_Part_Title extends HappyForms_Form_Part {
40
  'default' => '',
41
  'sanitize' => 'sanitize_text_field'
42
  ),
 
 
 
 
43
  'width' => array(
44
  'default' => 'full',
45
  'sanitize' => 'sanitize_key'
@@ -168,6 +173,22 @@ class HappyForms_Part_Title extends HappyForms_Form_Part {
168
  return $validated_value;
169
  }
170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  public function script_dependencies( $deps, $forms ) {
172
  $contains_title = false;
173
  $form_controller = happyforms_get_form_controller();
9
  $this->description = __( 'For displaying personal honorifics.', 'happyforms' );
10
 
11
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
12
+ add_filter( 'happyforms_part_class', array( $this, 'html_part_class' ), 10, 3 );
13
  }
14
 
15
  /**
41
  'default' => '',
42
  'sanitize' => 'sanitize_text_field'
43
  ),
44
+ 'placeholder' => array(
45
+ 'default' => '',
46
+ 'sanitize' => 'sanitize_text_field',
47
+ ),
48
  'width' => array(
49
  'default' => 'full',
50
  'sanitize' => 'sanitize_key'
173
  return $validated_value;
174
  }
175
 
176
+ public function html_part_class( $class, $part, $form ) {
177
+ if ( $this->type === $part['type'] ) {
178
+ $class[] = 'happyforms-part--select';
179
+
180
+ if ( happyforms_get_part_value( $part, $form ) ) {
181
+ $class[] = 'happyforms-part--filled';
182
+ }
183
+
184
+ if ( 1 === intval( $part['required'] ) ) {
185
+ $class[] = 'happyforms-part-select--required';
186
+ }
187
+ }
188
+
189
+ return $class;
190
+ }
191
+
192
  public function script_dependencies( $deps, $forms ) {
193
  $contains_title = false;
194
  $form_controller = happyforms_get_form_controller();
inc/helpers/helper-form-templates.php CHANGED
@@ -754,8 +754,8 @@ function happyforms_the_part_label( $part, $form ) {
754
  ?>
755
  <label for="<?php happyforms_the_part_id( $part, $form ); ?>" class="happyforms-part__label">
756
  <span class="label"><?php echo esc_html( $part['label'] ); ?></span>
757
- <?php if ( isset( $part['required'] ) && 1 === intval( $part['required'] ) ) : ?>
758
- <span class="happyforms-required"><?php echo happyforms_get_form_property( $form, 'hf_style_required_text' ); ?></span>
759
  <?php endif; ?>
760
  </label>
761
  <?php
@@ -867,7 +867,7 @@ endif;
867
 
868
  if ( ! function_exists( 'happyforms_the_countries_dropdown' ) ) :
869
 
870
- function happyforms_the_countries_dropdown( $part_object, $part, $country_code ) { ?>
871
  <?php if ( $part_object->is_masked( $part ) ) : ?>
872
  <div class="happyforms-part--phone__country-select happyforms-country-select<?php if ( $part['mask_allow_all_countries'] ) { ?> happyforms-country-select--multiple<?php } ?>">
873
  <div class="happyforms-country-select__selected-country">
@@ -876,13 +876,15 @@ function happyforms_the_countries_dropdown( $part_object, $part, $country_code )
876
  $countries = $part_object->get_phone_countries_array();
877
  $current_country = 0;
878
 
879
- foreach( $countries as $country ) {
880
- if ( intval( $country['code'] ) === intval( $country_code ) ) {
 
 
881
  $current_country = $country;
882
  }
883
  }
884
  ?>
885
- <div class="happyforms-flag us"><?php echo $current_country['flag']; ?></div>
886
  </div>
887
  <?php if ( $part['mask_allow_all_countries'] ) { ?>
888
  <ul class="happyforms-custom-select-dropdown phone">
754
  ?>
755
  <label for="<?php happyforms_the_part_id( $part, $form ); ?>" class="happyforms-part__label">
756
  <span class="label"><?php echo esc_html( $part['label'] ); ?></span>
757
+ <?php if ( isset( $part['required'] ) && 0 === intval( $part['required'] ) ) : ?>
758
+ <span class="happyforms-optional"><?php _e( '(optional)', 'happyforms' ); ?></span>
759
  <?php endif; ?>
760
  </label>
761
  <?php
867
 
868
  if ( ! function_exists( 'happyforms_the_countries_dropdown' ) ) :
869
 
870
+ function happyforms_the_countries_dropdown( $part_object, $part, $phone_code, $country_code ) { ?>
871
  <?php if ( $part_object->is_masked( $part ) ) : ?>
872
  <div class="happyforms-part--phone__country-select happyforms-country-select<?php if ( $part['mask_allow_all_countries'] ) { ?> happyforms-country-select--multiple<?php } ?>">
873
  <div class="happyforms-country-select__selected-country">
876
  $countries = $part_object->get_phone_countries_array();
877
  $current_country = 0;
878
 
879
+ foreach( $countries as $code => $country ) {
880
+ if ( intval( $country_code ) && $country['code'] == $country_code ) {
881
+ $current_country = $country;
882
+ } else if ( strtolower( $code ) === strtolower( $country_code ) ) {
883
  $current_country = $country;
884
  }
885
  }
886
  ?>
887
+ <div class="happyforms-flag"><?php echo $current_country['flag']; ?></div>
888
  </div>
889
  <?php if ( $part['mask_allow_all_countries'] ) { ?>
890
  <ul class="happyforms-custom-select-dropdown phone">
inc/helpers/helper-misc.php CHANGED
@@ -150,12 +150,13 @@ if ( ! function_exists( 'happyforms_get_form_edit_link' ) ):
150
  *
151
  * @return string
152
  */
153
- function happyforms_get_form_edit_link( $id, $return_url = '' ) {
154
  $return_url = empty( $return_url ) ? happyforms_get_all_form_link() : $return_url;
155
  $base_url = add_query_arg( array(
156
  'form_id' => $id,
157
  ), happyforms_customizer_url( $return_url ) );
158
- $url = "{$base_url}#build";
 
159
 
160
  return $url;
161
  }
150
  *
151
  * @return string
152
  */
153
+ function happyforms_get_form_edit_link( $id, $return_url = '', $step = '' ) {
154
  $return_url = empty( $return_url ) ? happyforms_get_all_form_link() : $return_url;
155
  $base_url = add_query_arg( array(
156
  'form_id' => $id,
157
  ), happyforms_customizer_url( $return_url ) );
158
+ $step = '' === $step ? 'build' : $step;
159
+ $url = "{$base_url}#{$step}";
160
 
161
  return $url;
162
  }
inc/templates/customize-form-build.php CHANGED
@@ -7,7 +7,7 @@
7
 
8
  <div class="customize-control">
9
  <label class="customize-control-title">
10
- <?php _e( 'Form Builder', 'happyforms' ); ?>
11
  <span class="happyforms-parts-expand-collapse-wrap">
12
  <a href="#" class="expand-collapse-all <%= ( parts.length > 0 ) ? 'collapse' : 'expand' %>" data-collapse-text="<?php _e( 'Collapse all', 'happyforms' ); ?>" data-expand-text="<?php _e( 'Expand all', 'happyforms' ); ?>"><%= ( parts.length > 0 ) ? '<?php _e( 'Expand all', 'happyforms' ); ?>' : '<?php _e( 'Collapse all', 'happyforms' ); ?>' %></a>
13
  </span>
@@ -19,7 +19,7 @@
19
  <div class="happyforms-parts-placeholder__placeholder"></div>
20
  <div class="happyforms-parts-placeholder__placeholder"></div>
21
  </div>
22
- <ul class="happyforms-form-widgets"></ul>
23
  </div>
24
  </div>
25
  </script>
7
 
8
  <div class="customize-control">
9
  <label class="customize-control-title">
10
+ <?php _e( 'Form Builder', 'happyforms' ); ?>
11
  <span class="happyforms-parts-expand-collapse-wrap">
12
  <a href="#" class="expand-collapse-all <%= ( parts.length > 0 ) ? 'collapse' : 'expand' %>" data-collapse-text="<?php _e( 'Collapse all', 'happyforms' ); ?>" data-expand-text="<?php _e( 'Expand all', 'happyforms' ); ?>"><%= ( parts.length > 0 ) ? '<?php _e( 'Expand all', 'happyforms' ); ?>' : '<?php _e( 'Collapse all', 'happyforms' ); ?>' %></a>
13
  </span>
19
  <div class="happyforms-parts-placeholder__placeholder"></div>
20
  <div class="happyforms-parts-placeholder__placeholder"></div>
21
  </div>
22
+ <div class="happyforms-form-widgets"></div>
23
  </div>
24
  </div>
25
  </script>
inc/templates/customize-form-steps.php CHANGED
@@ -20,7 +20,7 @@
20
  %>
21
  <button class="button button-primary button-hero button-forwards happyforms-step-next"><%= nextStepTitle %> <i class="fa fa-lg fa-arrow-circle-o-right" aria-hidden="true"></i></button>
22
  <% } else { %>
23
- <button class="button button-primary button-hero button-forwards happyforms-step-save"><?php _e( 'Save Form', 'happyforms' ); ?></button>
24
  <% } %>
25
  </div>
26
 
20
  %>
21
  <button class="button button-primary button-hero button-forwards happyforms-step-next"><%= nextStepTitle %> <i class="fa fa-lg fa-arrow-circle-o-right" aria-hidden="true"></i></button>
22
  <% } else { %>
23
+ <button class="button button-primary button-hero button-forwards happyforms-step-save"><?php _e( 'Save & Close', 'happyforms' ); ?></button>
24
  <% } %>
25
  </div>
26
 
inc/templates/customize-header-actions.php CHANGED
@@ -1,6 +1,6 @@
1
  <script type="text/template" id="happyforms-customize-header-actions">
2
  <div id="happyforms-save-button-wrapper" class="customize-save-button-wrapper">
3
- <button id="happyforms-save-button" class="button-primary button" aria-label="<?php _e( 'Save Form', 'happyforms' ); ?>" aria-expanded="false" disabled="disabled"><?php _e( 'Save Form', 'happyforms' ); ?></button>
4
  </div>
5
  <a href="<?php echo esc_url( $wp_customize->get_return_url() ); ?>" id="happyforms-close-link" data-message="<?php _e( 'The changes you made will be lost if you navigate away from this page.', 'happyforms' ); ?>">
6
  <span class="screen-reader-text"><?php _e( 'Close', 'happyforms' ); ?></span>
1
  <script type="text/template" id="happyforms-customize-header-actions">
2
  <div id="happyforms-save-button-wrapper" class="customize-save-button-wrapper">
3
+ <button id="happyforms-save-button" class="button-primary button" aria-label="<?php _e( 'Save Form', 'happyforms' ); ?>" aria-expanded="false" disabled="disabled" data-text-saved="<?php _e( 'Saved', 'happyforms' ); ?>" data-text-default="<?php _e( 'Save Form', 'happyforms' ); ?>"><?php _e( 'Save Form', 'happyforms' ); ?></button>
4
  </div>
5
  <a href="<?php echo esc_url( $wp_customize->get_return_url() ); ?>" id="happyforms-close-link" data-message="<?php _e( 'The changes you made will be lost if you navigate away from this page.', 'happyforms' ); ?>">
6
  <span class="screen-reader-text"><?php _e( 'Close', 'happyforms' ); ?></span>
inc/templates/parts/customize-address.php CHANGED
@@ -12,6 +12,7 @@
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
 
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
15
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
16
  </select>
17
  </p>
18
  <p class="label_placement-options" style="display: none">
inc/templates/parts/customize-checkbox.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
@@ -28,18 +29,18 @@
28
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
29
  </select>
30
  </p>
31
- <p>
32
- <label>
33
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
34
- </label>
35
- </p>
36
  <div class="options">
37
- <ul></ul>
38
  <h3><?php _e( 'Options', 'happyforms' ); ?></h3>
39
- <p class="no-options"><?php _e( 'No options added yet. Add one by clicking the <i>Add option</i> link below.', 'happyforms' ); ?></p>
40
  </div>
41
  <p class="links">
42
- <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
 
 
 
 
 
43
  </p>
44
  <div class="happyforms-part-advanced-settings-wrap">
45
  <p>
@@ -71,16 +72,26 @@
71
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
72
  </script>
73
  <script type="text/template" id="customize-happyforms-checkbox-item-template">
74
- <li class="happyforms-part-widget happyforms-part-widget--sub" data-item-id="<%= item.id %>">
75
- <label>
76
- <?php _e( 'Label', 'happyforms' ); ?>
77
- <input type="text" class="widefat" name="label" value="<%= item.label %>">
78
- </label>
79
- <label>
80
- <input type="checkbox" name="is_default" value="1" <% if (item.is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Checked by default', 'happyforms' ); ?>
81
- </label>
82
- <div class="option-actions">
83
- <a href="#" class="delete-option"><?php _e( 'Delete', 'happyforms' ); ?></a>
 
 
 
 
 
 
 
 
 
 
84
  </div>
85
  </li>
86
  </script>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
29
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
30
  </select>
31
  </p>
 
 
 
 
 
32
  <div class="options">
33
+ <ul class="option-list"></ul>
34
  <h3><?php _e( 'Options', 'happyforms' ); ?></h3>
35
+ <p class="no-options"><?php _e( 'No options added yet. Add one by clicking <i>Add Option</i> below.', 'happyforms' ); ?></p>
36
  </div>
37
  <p class="links">
38
+ <a href="#" class="button add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
39
+ </p>
40
+ <p>
41
+ <label>
42
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
43
+ </label>
44
  </p>
45
  <div class="happyforms-part-advanced-settings-wrap">
46
  <p>
72
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
73
  </script>
74
  <script type="text/template" id="customize-happyforms-checkbox-item-template">
75
+ <li data-option-id="<%= id %>">
76
+ <div class="happyforms-part-item-body">
77
+ <div class="happyforms-part-item-handle"></div>
78
+ <label>
79
+ <?php _e( 'Label', 'happyforms' ); ?>
80
+ <input type="text" class="widefat" name="label" value="<%= label %>">
81
+ </label>
82
+ <div class="happyforms-part-item-advanced">
83
+ <label class="happyforms-part-item-description">
84
+ <?php _e( 'Description', 'happyforms' ); ?>
85
+ <input type="text" class="widefat" name="description" value="<%= (typeof description !== 'undefined') ? description : '' %>" data-option-attribute="description">
86
+ </label>
87
+ <label>
88
+ <input type="checkbox" name="is_default" value="1" <% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Checked by default', 'happyforms' ); ?>
89
+ </label>
90
+ </div>
91
+ <div class="option-actions">
92
+ <a href="#" class="delete-option"><?php _e( 'Delete', 'happyforms' ); ?></a> |
93
+ <a href="#" class="advanced-option"><?php _e( 'Advanced', 'happyforms' ); ?></a>
94
+ </div>
95
  </div>
96
  </li>
97
  </script>
inc/templates/parts/customize-date.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
@@ -34,6 +35,9 @@
34
  <option value="date"<%= (instance.date_type == 'date') ? ' selected' : '' %>><?php _e( 'Date', 'happyforms' ); ?></option>
35
  <option value="datetime"<%= (instance.date_type == 'datetime') ? ' selected' : '' %>><?php _e( 'Date &amp; Time', 'happyforms' ); ?></option>
36
  <option value="time"<%= (instance.date_type == 'time') ? ' selected' : '' %>><?php _e( 'Time', 'happyforms' ); ?></option>
 
 
 
37
  </select>
38
  </p>
39
  <p>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
35
  <option value="date"<%= (instance.date_type == 'date') ? ' selected' : '' %>><?php _e( 'Date', 'happyforms' ); ?></option>
36
  <option value="datetime"<%= (instance.date_type == 'datetime') ? ' selected' : '' %>><?php _e( 'Date &amp; Time', 'happyforms' ); ?></option>
37
  <option value="time"<%= (instance.date_type == 'time') ? ' selected' : '' %>><?php _e( 'Time', 'happyforms' ); ?></option>
38
+ <option value="month_year"<%= (instance.date_type == 'month_year') ? ' selected' : '' %>><?php _e( 'Month &amp; Year', 'happyforms' ); ?></option>
39
+ <option value="month"<%= (instance.date_type == 'month') ? ' selected' : '' %>><?php _e( 'Month only', 'happyforms' ); ?></option>
40
+ <option value="year"<%= (instance.date_type == 'year') ? ' selected' : '' %>><?php _e( 'Year only', 'happyforms' ); ?></option>
41
  </select>
42
  </p>
43
  <p>
inc/templates/parts/customize-email.php CHANGED
@@ -12,6 +12,7 @@
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
 
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
15
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
16
  </select>
17
  </p>
18
  <p class="label_placement-options" style="display: none">
inc/templates/parts/customize-multi-line-text.php CHANGED
@@ -12,6 +12,7 @@
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
 
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
15
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
16
  </select>
17
  </p>
18
  <p class="label_placement-options" style="display: none">
inc/templates/parts/customize-narrative.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
inc/templates/parts/customize-number.php CHANGED
@@ -12,6 +12,7 @@
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
 
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
@@ -35,13 +36,13 @@
35
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
36
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
37
  </p>
38
- <div class="min-max-wrapper happyforms-customize-controls-wrap--side-by-side" style="display: <%= (instance.masked == 0) ? 'flex' : 'none' %>">
39
  <p>
40
- <label for="<%= instance.id %>_min_value"><?php _e( 'Minimum value', 'happyforms' ); ?></label>
41
  <input type="text" id="<%= instance.id %>_min_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
42
  </p>
43
  <p>
44
- <label for="<%= instance.id %>_max_value"><?php _e( 'Maximum value', 'happyforms' ); ?></label>
45
  <input type="text" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
46
  </p>
47
  </div>
@@ -53,18 +54,20 @@
53
  <div class="happyforms-part-advanced-settings-wrap">
54
  <p>
55
  <label>
56
- <input type="checkbox" name="masked" class="checkbox" value="1" <% if ( instance.masked ) { %>checked="checked"<% } %> data-bind="masked" /> <?php _e( 'Mask this input', 'happyforms' ); ?>
57
  </label>
58
  </p>
59
- <div class="mask-wrapper number-options number-options--numeric" style="display: <%= (instance.masked == 1) ? 'block' : 'none' %>">
60
  <p>
61
- <label for="<%= instance.id %>_mask_numeric_thousands_delimiter"><?php _e( 'Thousands delimiter', 'happyforms' ); ?></label>
62
  <input type="text" id="<%= instance.id %>_mask_numeric_thousands_delimiter" class="widefat title" value="<%= instance.mask_numeric_thousands_delimiter %>" data-bind="mask_numeric_thousands_delimiter" />
63
  </p>
64
  <p>
65
- <label for="<%= instance.id %>_mask_numeric_decimal_mark"><?php _e( 'Decimal mark', 'happyforms' ); ?></label>
66
  <input type="text" id="<%= instance.id %>_mask_numeric_decimal_mark" class="widefat title" value="<%= instance.mask_numeric_decimal_mark %>" data-bind="mask_numeric_decimal_mark" />
67
  </p>
 
 
68
  <p>
69
  <label for="<%= instance.id %>_mask_numeric_prefix"><?php _e( 'Prefix', 'happyforms' ); ?></label>
70
  <input type="text" id="<%= instance.id %>_mask_numeric_prefix" class="widefat title" value="<%= instance.mask_numeric_prefix %>" data-bind="mask_numeric_prefix" />
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
15
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
16
  </select>
17
  </p>
18
  <p class="label_placement-options" style="display: none">
36
  <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
37
  <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
38
  </p>
39
+ <div class="min-max-wrapper happyforms-customize-controls-wrap--side-by-side">
40
  <p>
41
+ <label for="<%= instance.id %>_min_value"><?php _e( 'Min value', 'happyforms' ); ?></label>
42
  <input type="text" id="<%= instance.id %>_min_value" class="widefat title" value="<%= instance.min_value %>" data-bind="min_value" />
43
  </p>
44
  <p>
45
+ <label for="<%= instance.id %>_max_value"><?php _e( 'Max value', 'happyforms' ); ?></label>
46
  <input type="text" id="<%= instance.id %>_max_value" class="widefat title" value="<%= instance.max_value %>" data-bind="max_value" />
47
  </p>
48
  </div>
54
  <div class="happyforms-part-advanced-settings-wrap">
55
  <p>
56
  <label>
57
+ <input type="checkbox" name="masked" class="checkbox" value="1" <% if ( instance.masked ) { %>checked="checked"<% } %> data-bind="masked" /> <?php _e( 'Format', 'happyforms' ); ?>
58
  </label>
59
  </p>
60
+ <div class="mask-wrapper number-options number-options--numeric happyforms-customize-controls-wrap--side-by-side" style="display: <%= (instance.masked == 1) ? 'flex' : 'none' %>">
61
  <p>
62
+ <label for="<%= instance.id %>_mask_numeric_thousands_delimiter"><?php _e( 'Thousands separator', 'happyforms' ); ?></label>
63
  <input type="text" id="<%= instance.id %>_mask_numeric_thousands_delimiter" class="widefat title" value="<%= instance.mask_numeric_thousands_delimiter %>" data-bind="mask_numeric_thousands_delimiter" />
64
  </p>
65
  <p>
66
+ <label for="<%= instance.id %>_mask_numeric_decimal_mark"><?php _e( 'Decimal<br>separator', 'happyforms' ); ?></label>
67
  <input type="text" id="<%= instance.id %>_mask_numeric_decimal_mark" class="widefat title" value="<%= instance.mask_numeric_decimal_mark %>" data-bind="mask_numeric_decimal_mark" />
68
  </p>
69
+ </div>
70
+ <div class="mask-wrapper number-options number-options--numeric" style="display: <%= (instance.masked == 1) ? 'block' : 'none' %>">
71
  <p>
72
  <label for="<%= instance.id %>_mask_numeric_prefix"><?php _e( 'Prefix', 'happyforms' ); ?></label>
73
  <input type="text" id="<%= instance.id %>_mask_numeric_prefix" class="widefat title" value="<%= instance.mask_numeric_prefix %>" data-bind="mask_numeric_prefix" />
inc/templates/parts/customize-phone.php CHANGED
@@ -12,6 +12,7 @@
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
 
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
@@ -54,7 +55,7 @@
54
  $phone_countries = $this->get_phone_countries_array();
55
 
56
  foreach ( $phone_countries as $country_code => $country ) : ?>
57
- <option value="<?php echo esc_attr( $country['code'] ); ?>"<% if (instance.mask_phone_country == <?php echo $country['code']; ?>) { %> selected<% } %>><?php echo ucwords( strtolower( $country['name'] ) ); ?></option>
58
  <?php endforeach; ?>
59
  </select>
60
  </p>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
15
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
16
  </select>
17
  </p>
18
  <p class="label_placement-options" style="display: none">
55
  $phone_countries = $this->get_phone_countries_array();
56
 
57
  foreach ( $phone_countries as $country_code => $country ) : ?>
58
+ <option value="<?php echo esc_attr( $country_code ); ?>"<% if (instance.mask_phone_country == <?php echo $country['code']; ?> || instance.mask_phone_country == '<?php echo $country_code; ?>') { %> selected<% } %>><?php echo ucwords( strtolower( $country['name'] ) ); ?></option>
59
  <?php endforeach; ?>
60
  </select>
61
  </p>
inc/templates/parts/customize-placeholder.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
inc/templates/parts/customize-radio.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
@@ -28,18 +29,18 @@
28
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
29
  </select>
30
  </p>
31
- <p>
32
- <label>
33
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
34
- </label>
35
- </p>
36
  <div class="options">
37
- <ul></ul>
38
  <h3><?php _e( 'Options', 'happyforms' ); ?></h3>
39
- <p class="no-options"><?php _e( 'No options added yet. Add one by clicking the <i>Add option</i> link below.', 'happyforms' ); ?></p>
40
  </div>
41
  <p class="links">
42
- <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
 
 
 
 
 
43
  </p>
44
  <div class="happyforms-part-advanced-settings-wrap">
45
  <p>
@@ -71,20 +72,26 @@
71
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
72
  </script>
73
  <script type="text/template" id="customize-happyforms-radio-item-template">
74
- <li class="happyforms-part-widget happyforms-part-widget--sub" data-item-id="<%= item.id %>">
75
- <label>
76
- <?php _e( 'Label', 'happyforms' ); ?>
77
- <input type="text" class="widefat" name="option_label" value="<%= item.label %>" data-option-attribute="label">
78
- </label>
79
- <label class="happyforms-part-item-description">
80
- <?php _e( 'Description', 'happyforms' ); ?>
81
- <input type="text" class="widefat" name="option_description" value="<%= (typeof item.description !== 'undefined') ? item.description : '' %>" data-option-attribute="description">
82
- </label>
83
- <label>
84
- <input type="checkbox" name="option_is_default" value="1" class="default-option-switch"<% if (item.is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this option default', 'happyforms' ); ?>
85
- </label>
86
- <div class="option-actions">
87
- <a href="#" class="delete-option"><?php _e( 'Delete', 'happyforms' ); ?></a>
 
 
 
 
 
 
88
  </div>
89
  </li>
90
  </script>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
29
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
30
  </select>
31
  </p>
 
 
 
 
 
32
  <div class="options">
33
+ <ul class="option-list"></ul>
34
  <h3><?php _e( 'Options', 'happyforms' ); ?></h3>
35
+ <p class="no-options"><?php _e( 'No options added yet. Add one by clicking <i>Add Option</i> below.', 'happyforms' ); ?></p>
36
  </div>
37
  <p class="links">
38
+ <a href="#" class="button add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
39
+ </p>
40
+ <p>
41
+ <label>
42
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
43
+ </label>
44
  </p>
45
  <div class="happyforms-part-advanced-settings-wrap">
46
  <p>
72
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
73
  </script>
74
  <script type="text/template" id="customize-happyforms-radio-item-template">
75
+ <li data-option-id="<%= id %>">
76
+ <div class="happyforms-part-item-body">
77
+ <div class="happyforms-part-item-handle"></div>
78
+ <label>
79
+ <?php _e( 'Label', 'happyforms' ); ?>
80
+ <input type="text" class="widefat" name="label" value="<%= label %>" data-option-attribute="label">
81
+ </label>
82
+ <div class="happyforms-part-item-advanced">
83
+ <label class="happyforms-part-item-description">
84
+ <?php _e( 'Description', 'happyforms' ); ?>
85
+ <input type="text" class="widefat" name="description" value="<%= (typeof description !== 'undefined') ? description : '' %>" data-option-attribute="description">
86
+ </label>
87
+ <label>
88
+ <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this option default', 'happyforms' ); ?>
89
+ </label>
90
+ </div>
91
+ <div class="option-actions">
92
+ <a href="#" class="delete-option"><?php _e( 'Delete', 'happyforms' ); ?></a> |
93
+ <a href="#" class="advanced-option"><?php _e( 'Advanced', 'happyforms' ); ?></a>
94
+ </div>
95
  </div>
96
  </li>
97
  </script>
inc/templates/parts/customize-rating.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
@@ -28,11 +29,6 @@
28
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
29
  </select>
30
  </p>
31
- <p>
32
- <label>
33
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
34
- </label>
35
- </p>
36
  <p>
37
  <label for="<%= instance.id %>_rating_type"><?php _e( 'Rating type', 'happyforms' ); ?></label>
38
  <select id="<%= instance.id %>_rating_type" data-bind="rating_type">
@@ -48,6 +44,11 @@
48
  <option value="thumbs" data-allowed-for="yesno" <%= (instance.rating_visuals == 'thumbs') ? ' selected' : '' %><%= (instance.rating_type == 'scale' ) ? ' disabled' : '' %>><?php _e( 'Thumbs', 'happyforms' ); ?></option>
49
  </select>
50
  </p>
 
 
 
 
 
51
  <div class="happyforms-part-advanced-settings-wrap">
52
  <p class="happyforms-rating-labels-scale" style="display: <%= ( instance.rating_type == 'scale' && instance.rating_visuals == 'smileys' ) ? 'block' : 'none' %>">
53
  <label>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
29
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
30
  </select>
31
  </p>
 
 
 
 
 
32
  <p>
33
  <label for="<%= instance.id %>_rating_type"><?php _e( 'Rating type', 'happyforms' ); ?></label>
34
  <select id="<%= instance.id %>_rating_type" data-bind="rating_type">
44
  <option value="thumbs" data-allowed-for="yesno" <%= (instance.rating_visuals == 'thumbs') ? ' selected' : '' %><%= (instance.rating_type == 'scale' ) ? ' disabled' : '' %>><?php _e( 'Thumbs', 'happyforms' ); ?></option>
45
  </select>
46
  </p>
47
+ <p>
48
+ <label>
49
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
50
+ </label>
51
+ </p>
52
  <div class="happyforms-part-advanced-settings-wrap">
53
  <p class="happyforms-rating-labels-scale" style="display: <%= ( instance.rating_type == 'scale' && instance.rating_visuals == 'smileys' ) ? 'block' : 'none' %>">
54
  <label>
inc/templates/parts/customize-scale.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
inc/templates/parts/customize-select.php CHANGED
@@ -10,6 +10,8 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
@@ -28,19 +30,23 @@
28
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
29
  </select>
30
  </p>
31
- <p>
32
- <label>
33
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
34
- </label>
35
  </p>
36
  <div class="options">
37
- <ul></ul>
38
  <h3><?php _e( 'Options', 'happyforms' ); ?></h3>
39
- <p class="no-options"><?php _e( 'No options added yet. Add one by clicking the <i>Add option</i> link below.', 'happyforms' ); ?></p>
40
  </div>
41
  <p class="links">
42
  <a href="#" class="show-all-options" style="display: none"><?php _e( 'Show all', 'happyforms' ); ?> <span></span> <?php _e( 'options', 'happyforms' ); ?></a>
43
- <a href="#" class="add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
 
 
 
 
 
44
  </p>
45
  <div class="happyforms-part-advanced-settings-wrap">
46
  <p>
@@ -70,16 +76,22 @@
70
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
71
  </script>
72
  <script type="text/template" id="customize-happyforms-select-item-template">
73
- <li class="happyforms-part-widget happyforms-part-widget--sub" data-item-id="<%= item.id %>">
74
- <label>
75
- <?php _e( 'Label', 'happyforms' ); ?>
76
- <input type="text" class="widefat" name="label" value="<%= item.label %>" data-option-attribute="label">
77
- </label>
78
- <label>
79
- <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (item.is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this option default', 'happyforms' ); ?>
80
- </label>
81
- <div class="option-actions">
82
- <a href="#" class="delete-option"><?php _e( 'Delete', 'happyforms' ); ?></a>
 
 
 
 
 
 
83
  </div>
84
  </li>
85
  </script>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
14
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
30
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
31
  </select>
32
  </p>
33
+ <p class="happyforms-placeholder-option" style="display: <%= ( 'as_placeholder' !== instance.label_placement ) ? 'block' : 'none' %>">
34
+ <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
35
+ <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
 
36
  </p>
37
  <div class="options">
38
+ <ul class="option-list"></ul>
39
  <h3><?php _e( 'Options', 'happyforms' ); ?></h3>
40
+ <p class="no-options"><?php _e( 'No options added yet. Add one by clicking <i>Add Option</i> below.', 'happyforms' ); ?></p>
41
  </div>
42
  <p class="links">
43
  <a href="#" class="show-all-options" style="display: none"><?php _e( 'Show all', 'happyforms' ); ?> <span></span> <?php _e( 'options', 'happyforms' ); ?></a>
44
+ <a href="#" class="button add-option"><?php _e( 'Add option', 'happyforms' ); ?></a>
45
+ </p>
46
+ <p>
47
+ <label>
48
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
49
+ </label>
50
  </p>
51
  <div class="happyforms-part-advanced-settings-wrap">
52
  <p>
76
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
77
  </script>
78
  <script type="text/template" id="customize-happyforms-select-item-template">
79
+ <li data-option-id="<%= id %>">
80
+ <div class="happyforms-part-item-body">
81
+ <div class="happyforms-part-item-handle"></div>
82
+ <label>
83
+ <?php _e( 'Label', 'happyforms' ); ?>
84
+ <input type="text" class="widefat" name="label" value="<%= label %>" data-option-attribute="label">
85
+ </label>
86
+ <div class="happyforms-part-item-advanced">
87
+ <label>
88
+ <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Make this option default', 'happyforms' ); ?>
89
+ </label>
90
+ </div>
91
+ <div class="option-actions">
92
+ <a href="#" class="delete-option"><?php _e( 'Delete', 'happyforms' ); ?></a> |
93
+ <a href="#" class="advanced-option"><?php _e( 'Advanced', 'happyforms' ); ?></a>
94
+ </div>
95
  </div>
96
  </li>
97
  </script>
inc/templates/parts/customize-single-line-text.php CHANGED
@@ -12,6 +12,7 @@
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
 
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
15
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
16
  </select>
17
  </p>
18
  <p class="label_placement-options" style="display: none">
inc/templates/parts/customize-table.php CHANGED
@@ -10,6 +10,7 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
@@ -28,11 +29,6 @@
28
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
29
  </select>
30
  </p>
31
- <p>
32
- <label>
33
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'Each row is required', 'happyforms' ); ?>
34
- </label>
35
- </p>
36
  <p>
37
  <label>
38
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.allow_multiple_selection ) { %>checked="checked"<% } %> data-bind="allow_multiple_selection" /> <?php _e( 'Allow multiple selections', 'happyforms' ); ?>
@@ -45,25 +41,30 @@
45
  <div class="tab-content">
46
  <div class="tab-content-columns active">
47
  <div class="options columns">
48
- <ul></ul>
49
  <h3><?php _e( 'Columns', 'happyforms' ); ?></h3>
50
- <p class="no-options"><?php _e( 'No columns added yet. Add one by clicking the <i>Add column</i> link below.', 'happyforms' ); ?></p>
51
  </div>
52
  <p class="links">
53
- <a href="#" class="add-column"><?php _e( 'Add column', 'happyforms' ); ?></a>
54
  </p>
55
  </div>
56
  <div class="tab-content-rows">
57
  <div class="options rows">
58
- <ul></ul>
59
  <h3><?php _e( 'Rows', 'happyforms' ); ?></h3>
60
- <p class="no-options"><?php _e( 'No rows added yet. Add one by clicking the <i>Add row</i> link below.', 'happyforms' ); ?></p>
61
  </div>
62
  <p class="links">
63
- <a href="#" class="add-row"><?php _e( 'Add row', 'happyforms' ); ?></a>
64
  </p>
65
  </div>
66
  </div>
 
 
 
 
 
67
  <div class="happyforms-part-advanced-settings-wrap">
68
  <p>
69
  <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
@@ -87,27 +88,36 @@
87
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
88
  </script>
89
  <script type="text/template" id="customize-happyforms-table-column-template">
90
- <li class="happyforms-part-widget happyforms-part-widget--sub" data-column-id="<%= column.id %>">
91
- <label>
92
- <?php _e( 'Label', 'happyforms' ); ?>
93
- <input type="text" class="widefat" name="column_label" value="<%= column.label %>" data-option-attribute="label">
94
- </label>
95
- <label>
96
- <input type="checkbox" name="column_is_default" value="1" class="default-option-switch"<% if (column.is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Checked by default', 'happyforms' ); ?>
97
- </label>
98
- <div class="option-actions">
99
- <a href="#" class="delete-column"><?php _e( 'Delete', 'happyforms' ); ?></a>
 
 
 
 
 
 
100
  </div>
101
  </li>
102
  </script>
103
  <script type="text/template" id="customize-happyforms-table-row-template">
104
- <li class="happyforms-part-widget happyforms-part-widget--sub" data-row-id="<%= row.id %>">
105
- <label>
106
- <?php _e( 'Label', 'happyforms' ); ?>
107
- <input type="text" class="widefat" name="row_label" value="<%= row.label %>" data-option-attribute="label">
108
- </label>
109
- <div class="option-actions">
110
- <a href="#" class="delete-row"><?php _e( 'Delete', 'happyforms' ); ?></a>
 
 
 
111
  </div>
112
  </li>
113
  </script>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
14
  </select>
15
  </p>
16
  <p class="label_placement-options" style="display: none">
29
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
30
  </select>
31
  </p>
 
 
 
 
 
32
  <p>
33
  <label>
34
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.allow_multiple_selection ) { %>checked="checked"<% } %> data-bind="allow_multiple_selection" /> <?php _e( 'Allow multiple selections', 'happyforms' ); ?>
41
  <div class="tab-content">
42
  <div class="tab-content-columns active">
43
  <div class="options columns">
44
+ <ul class="column-list"></ul>
45
  <h3><?php _e( 'Columns', 'happyforms' ); ?></h3>
46
+ <p class="no-options"><?php _e( 'No columns added yet. Add one by clicking <i>Add Column</i> below.', 'happyforms' ); ?></p>
47
  </div>
48
  <p class="links">
49
+ <a href="#" class="button add-column"><?php _e( 'Add column', 'happyforms' ); ?></a>
50
  </p>
51
  </div>
52
  <div class="tab-content-rows">
53
  <div class="options rows">
54
+ <ul class="row-list"></ul>
55
  <h3><?php _e( 'Rows', 'happyforms' ); ?></h3>
56
+ <p class="no-options"><?php _e( 'No rows added yet. Add one by clicking <i>Add Row</i> below.', 'happyforms' ); ?></p>
57
  </div>
58
  <p class="links">
59
+ <a href="#" class="button add-row"><?php _e( 'Add row', 'happyforms' ); ?></a>
60
  </p>
61
  </div>
62
  </div>
63
+ <p>
64
+ <label>
65
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'Each row is required', 'happyforms' ); ?>
66
+ </label>
67
+ </p>
68
  <div class="happyforms-part-advanced-settings-wrap">
69
  <p>
70
  <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
88
  <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
89
  </script>
90
  <script type="text/template" id="customize-happyforms-table-column-template">
91
+ <li data-column-id="<%= id %>">
92
+ <div class="happyforms-part-item-body">
93
+ <div class="happyforms-part-item-handle"></div>
94
+ <label>
95
+ <?php _e( 'Label', 'happyforms' ); ?>
96
+ <input type="text" class="widefat" name="label" value="<%= label %>" data-option-attribute="label">
97
+ </label>
98
+ <div class="happyforms-part-item-advanced">
99
+ <label>
100
+ <input type="checkbox" name="is_default" value="1" class="default-option-switch"<% if (is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Checked by default', 'happyforms' ); ?>
101
+ </label>
102
+ </div>
103
+ <div class="option-actions">
104
+ <a href="#" class="delete-column"><?php _e( 'Delete', 'happyforms' ); ?></a> |
105
+ <a href="#" class="advanced-column"><?php _e( 'Advanced', 'happyforms' ); ?></a>
106
+ </div>
107
  </div>
108
  </li>
109
  </script>
110
  <script type="text/template" id="customize-happyforms-table-row-template">
111
+ <li data-row-id="<%= id %>">
112
+ <div class="happyforms-part-item-body">
113
+ <div class="happyforms-part-item-handle"></div>
114
+ <label>
115
+ <?php _e( 'Label', 'happyforms' ); ?>
116
+ <input type="text" class="widefat" name="label" value="<%= label %>" data-option-attribute="label">
117
+ </label>
118
+ <div class="option-actions">
119
+ <a href="#" class="delete-row"><?php _e( 'Delete', 'happyforms' ); ?></a>
120
+ </div>
121
  </div>
122
  </li>
123
  </script>
inc/templates/parts/customize-title.php CHANGED
@@ -10,6 +10,8 @@
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
 
 
13
  </select>
14
  </p>
15
  <p class="label_placement-options" style="display: none">
@@ -28,6 +30,10 @@
28
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
29
  </select>
30
  </p>
 
 
 
 
31
  <p>
32
  <label>
33
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
10
  <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
  <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
14
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
30
  <option value="tooltip"<%= (instance.description_mode == 'tooltip' || instance.tooltip_description ) ? ' selected' : '' %>><?php _e( 'Tooltip', 'happyforms' ); ?></option>
31
  </select>
32
  </p>
33
+ <p class="happyforms-placeholder-option" style="display: <%= ( 'as_placeholder' !== instance.label_placement ) ? 'block' : 'none' %>">
34
+ <label for="<%= instance.id %>_placeholder"><?php _e( 'Placeholder', 'happyforms' ); ?></label>
35
+ <input type="text" id="<%= instance.id %>_placeholder" class="widefat title" value="<%= instance.placeholder %>" data-bind="placeholder" />
36
+ </p>
37
  <p>
38
  <label>
39
  <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
inc/templates/parts/customize-website-url.php CHANGED
@@ -12,6 +12,7 @@
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
 
15
  </select>
16
  </p>
17
  <p class="label_placement-options" style="display: none">
12
  <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
  <option value="inside"<%= (instance.label_placement == 'inside') ? ' selected' : '' %>><?php _e( 'Inside input', 'happyforms' ); ?></option>
14
  <option value="as_placeholder"<%= (instance.label_placement == 'as_placeholder') ? ' selected' : '' %>><?php _e( 'Display as placeholder', 'happyforms' ); ?></option>
15
+ <option value="hidden"<%= (instance.label_placement == 'hidden') ? ' selected' : '' %>><?php _e( 'Hidden', 'happyforms' ); ?></option>
16
  </select>
17
  </p>
18
  <p class="label_placement-options" style="display: none">
inc/templates/parts/frontend-checkbox.php CHANGED
@@ -10,18 +10,23 @@
10
  $value = happyforms_get_part_value( $part, $form );
11
 
12
  foreach( $options as $o => $option ) : ?>
 
13
  <?php $checked = in_array( $o, $value ) ? 'checked="checked"' : ''; ?>
14
- <label class="option-label" id="<?php echo esc_attr( $option['id'] ); ?>">
15
  <input type="checkbox" class="happyforms-visuallyhidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[]" value="<?php echo $o; ?>" <?php echo $checked; ?> <?php happyforms_the_part_attributes( $part, $form ); ?>>
16
  <span class="checkmark"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"><path fill="currentColor" d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z"/></svg></span>
 
17
  <span class="label"><?php echo esc_attr( $option['label'] ); ?></span>
18
  </label>
 
 
19
  <?php endforeach; ?>
20
 
21
- <?php do_action( 'happyforms_part_input_after', $part, $form ); ?>
22
-
23
  <?php happyforms_print_part_description( $part ); ?>
 
24
  <?php happyforms_message_notices( happyforms_get_part_name( $part, $form ) ); ?>
25
  </div>
 
 
26
  </div>
27
  </div>
10
  $value = happyforms_get_part_value( $part, $form );
11
 
12
  foreach( $options as $o => $option ) : ?>
13
+ <div class="happyforms-part__option happyforms-part-option" id="<?php echo esc_attr( $option['id'] ); ?>">
14
  <?php $checked = in_array( $o, $value ) ? 'checked="checked"' : ''; ?>
15
+ <label class="option-label">
16
  <input type="checkbox" class="happyforms-visuallyhidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[]" value="<?php echo $o; ?>" <?php echo $checked; ?> <?php happyforms_the_part_attributes( $part, $form ); ?>>
17
  <span class="checkmark"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"><path fill="currentColor" d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z"/></svg></span>
18
+ <span class="border"></span>
19
  <span class="label"><?php echo esc_attr( $option['label'] ); ?></span>
20
  </label>
21
+ <span class="happyforms-part-option__description"><?php echo esc_attr( $option['description'] ); ?></span>
22
+ </div>
23
  <?php endforeach; ?>
24
 
 
 
25
  <?php happyforms_print_part_description( $part ); ?>
26
+
27
  <?php happyforms_message_notices( happyforms_get_part_name( $part, $form ) ); ?>
28
  </div>
29
+
30
+ <?php do_action( 'happyforms_part_input_after', $part, $form ); ?>
31
  </div>
32
  </div>
inc/templates/parts/frontend-date-day.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  $current_timestamp = current_time( 'timestamp', false );
3
  $day_value = ( 'current' === $part['default_datetime'] ) ? date( 'j', $current_timestamp ) : intval( happyforms_get_part_value( $part, $form, 'day' ) ); ?>
4
- <div class="happyforms-part-date__date-input">
5
  <div class="happyforms-custom-select" data-searchable="true">
6
  <div class="happyforms-part__select-wrap">
7
  <?php
@@ -20,16 +20,16 @@ $day_value = ( 'current' === $part['default_datetime'] ) ? date( 'j', $current_t
20
  <input type="text" value="<?php echo ( ! empty( $default_value ) && $default_value !== 0 ) ? $default_value : ''; ?>" placeholder="<?php echo $placeholder_value; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
21
 
22
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
23
- <li data-value=""><?php _e( 'Day', 'happyforms' ); ?></li>
24
  <?php
25
  for ( $i = 1; $i <= 31; $i++ ) :
26
- $selected = ( $day_value === $i ) ? true : false;
27
 
28
  $li_classes = array();
29
  $li_classes[] = 'happyforms-custom-select-dropdown__item';
30
 
31
  if ( $selected ) {
32
- $li_classes[] = 'current';
33
  }
34
  ?>
35
  <li data-value="<?php echo $i; ?>" data-label="<?php echo $i; ?>" class="<?php echo join( ' ', $li_classes ); ?>" tabindex="0"><?php echo $i; ?></li>
1
  <?php
2
  $current_timestamp = current_time( 'timestamp', false );
3
  $day_value = ( 'current' === $part['default_datetime'] ) ? date( 'j', $current_timestamp ) : intval( happyforms_get_part_value( $part, $form, 'day' ) ); ?>
4
+ <div class="happyforms-part-date__date-input happyforms-part--date__input-wrap">
5
  <div class="happyforms-custom-select" data-searchable="true">
6
  <div class="happyforms-part__select-wrap">
7
  <?php
20
  <input type="text" value="<?php echo ( ! empty( $default_value ) && $default_value !== 0 ) ? $default_value : ''; ?>" placeholder="<?php echo $placeholder_value; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
21
 
22
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
23
+ <li class="happyforms-custom-select-dropdown__placeholder" data-value="" data-label="<?php _e( 'Day', 'happyforms' ); ?>"><?php _e( 'Day', 'happyforms' ); ?></li>
24
  <?php
25
  for ( $i = 1; $i <= 31; $i++ ) :
26
+ $selected = ( intval( $day_value ) === $i ) ? true : false;
27
 
28
  $li_classes = array();
29
  $li_classes[] = 'happyforms-custom-select-dropdown__item';
30
 
31
  if ( $selected ) {
32
+ $li_classes[] = 'default';
33
  }
34
  ?>
35
  <li data-value="<?php echo $i; ?>" data-label="<?php echo $i; ?>" class="<?php echo join( ' ', $li_classes ); ?>" tabindex="0"><?php echo $i; ?></li>
inc/templates/parts/frontend-date-month.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  $current_timestamp = current_time( 'timestamp', false );
3
  $month_value = ( 'current' === $part['default_datetime'] ) ? date( 'n', $current_timestamp ) : intval( happyforms_get_part_value( $part, $form, 'month' ) ); ?>
4
- <div class="happyforms-part-date__date-input">
5
  <div class="happyforms-custom-select" data-searchable="true">
6
  <div class="happyforms-part__select-wrap">
7
  <?php
@@ -22,16 +22,16 @@ $month_value = ( 'current' === $part['default_datetime'] ) ? date( 'n', $current
22
  <input type="text" value="<?php echo ( ! empty( $default_value ) && $default_value !== 0 ) ? $default_value : ''; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
23
 
24
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
25
- <li data-value=""><?php _e( 'Month', 'happyforms' ); ?></li>
26
  <?php
27
  for ( $i = 1; $i <= 12; $i++ ) :
28
- $selected = ( $month_value === $i ) ? true : false;
29
 
30
  $li_classes = array();
31
  $li_classes[] = 'happyforms-custom-select-dropdown__item';
32
 
33
  if ( $selected ) {
34
- $li_classes[] = 'current';
35
  }
36
  ?>
37
  <li data-value="<?php echo $i; ?>" data-label="<?php echo $months[$i]; ?>" class="<?php echo join( ' ', $li_classes ); ?>" tabindex="0"><?php echo $months[$i]; ?></li>
1
  <?php
2
  $current_timestamp = current_time( 'timestamp', false );
3
  $month_value = ( 'current' === $part['default_datetime'] ) ? date( 'n', $current_timestamp ) : intval( happyforms_get_part_value( $part, $form, 'month' ) ); ?>
4
+ <div class="happyforms-part-date__date-input happyforms-part--date__input-wrap">
5
  <div class="happyforms-custom-select" data-searchable="true">
6
  <div class="happyforms-part__select-wrap">
7
  <?php
22
  <input type="text" value="<?php echo ( ! empty( $default_value ) && $default_value !== 0 ) ? $default_value : ''; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
23
 
24
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
25
+ <li class="happyforms-custom-select-dropdown__placeholder" data-value="" data-label="<?php _e( 'Month', 'happyforms' ); ?>"><?php _e( 'Month', 'happyforms' ); ?></li>
26
  <?php
27
  for ( $i = 1; $i <= 12; $i++ ) :
28
+ $selected = ( intval( $month_value ) === $i ) ? true : false;
29
 
30
  $li_classes = array();
31
  $li_classes[] = 'happyforms-custom-select-dropdown__item';
32
 
33
  if ( $selected ) {
34
+ $li_classes[] = 'default';
35
  }
36
  ?>
37
  <li data-value="<?php echo $i; ?>" data-label="<?php echo $months[$i]; ?>" class="<?php echo join( ' ', $li_classes ); ?>" tabindex="0"><?php echo $months[$i]; ?></li>
inc/templates/parts/frontend-date.php CHANGED
@@ -7,9 +7,8 @@
7
 
8
  <div class="happyforms-part__el">
9
  <?php do_action( 'happyforms_part_input_before', $part, $form ); ?>
10
-
11
- <?php if ( $part['date_type'] === 'datetime' || $part['date_type'] === 'date' ) : ?>
12
- <?php
13
  if ( 'month_first' === happyforms_get_site_date_format() ) {
14
  require( 'frontend-date-month.php' );
15
  require( 'frontend-date-day.php' );
@@ -17,9 +16,16 @@
17
  require( 'frontend-date-day.php' );
18
  require( 'frontend-date-month.php' );
19
  }
20
- ?>
21
- <?php $year_value = ( 'current' === $part['default_datetime'] ) ? date( 'Y', $current_timestamp ) : intval( happyforms_get_part_value( $part, $form, 'year' ) ); ?>
22
- <div class="happyforms-part-date__date-input">
 
 
 
 
 
 
 
23
  <div class="happyforms-custom-select" data-searchable="true">
24
  <div class="happyforms-part__select-wrap">
25
  <?php
@@ -38,7 +44,7 @@
38
  <input type="text" value="<?php echo ( ! empty( $default_value ) && $default_value !== 0 ) ? $default_value : ''; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
39
 
40
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
41
- <li data-value=""><?php _e( 'Year', 'happyforms' ); ?></li>
42
  <?php
43
  $order = ( isset( $part['years_order'] ) ) ? $part['years_order'] : 'desc';
44
  $min_year = $part['min_year'];
@@ -48,11 +54,11 @@
48
 
49
  if ( 'desc' === $order ) {
50
  for ( $i = $max_year; $i >= $min_year; $i-- ) {
51
- printf( $li_template, $i, $i, ( $year_value === $i ) ? ' current' : '', $i );
52
  }
53
  } else {
54
  for ( $i = $min_year; $i <= $max_year; $i++ ) {
55
- printf( $li_template, $i, $i, ( $year_value === $i ) ? ' current' : '', $i );
56
  }
57
  }
58
  ?>
@@ -65,11 +71,11 @@
65
 
66
  if ( 'desc' === $order ) {
67
  for ( $i = $max_year; $i >= $min_year; $i-- ) {
68
- printf( $option_template, $i, selected( $year_value, $i ), $i );
69
  }
70
  } else {
71
  for ( $i = $min_year; $i <= $max_year; $i++ ) {
72
- printf( $option_template, $i, selected( $year_value, $i ), $i );
73
  }
74
  }
75
  ?>
@@ -77,8 +83,8 @@
77
  </div>
78
  </div>
79
  </div>
80
- <?php endif; ?>
81
- <?php if ( $part['date_type'] === 'datetime' || $part['date_type'] === 'time' ) : ?>
82
  <?php
83
  if ( 12 === $part['time_format'] ) {
84
  $hour_pattern = '(0[0-9]|1[0-2])';
7
 
8
  <div class="happyforms-part__el">
9
  <?php do_action( 'happyforms_part_input_before', $part, $form ); ?>
10
+ <?php
11
+ if ( 'datetime' === $part['date_type'] || 'date' === $part['date_type'] ) {
 
12
  if ( 'month_first' === happyforms_get_site_date_format() ) {
13
  require( 'frontend-date-month.php' );
14
  require( 'frontend-date-day.php' );
16
  require( 'frontend-date-day.php' );
17
  require( 'frontend-date-month.php' );
18
  }
19
+ }
20
+
21
+ if ( 'month_year' === $part['date_type'] || 'month' === $part['date_type'] ) {
22
+ require( 'frontend-date-month.php' );
23
+ }
24
+
25
+ if ( 'time' !== $part['date_type'] && 'month' !== $part['date_type'] ) {
26
+ $year_value = ( 'current' === $part['default_datetime'] ) ? date( 'Y', $current_timestamp ) : intval( happyforms_get_part_value( $part, $form, 'year' ) );
27
+ ?>
28
+ <div class="happyforms-part-date__date-input happyforms-part--date__input-wrap">
29
  <div class="happyforms-custom-select" data-searchable="true">
30
  <div class="happyforms-part__select-wrap">
31
  <?php
44
  <input type="text" value="<?php echo ( ! empty( $default_value ) && $default_value !== 0 ) ? $default_value : ''; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
45
 
46
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
47
+ <li class="happyforms-custom-select-dropdown__placeholder" data-value="" data-label="<?php _e( 'Year', 'happyforms' ); ?>"><?php _e( 'Year', 'happyforms' ); ?></li>
48
  <?php
49
  $order = ( isset( $part['years_order'] ) ) ? $part['years_order'] : 'desc';
50
  $min_year = $part['min_year'];
54
 
55
  if ( 'desc' === $order ) {
56
  for ( $i = $max_year; $i >= $min_year; $i-- ) {
57
+ printf( $li_template, $i, $i, ( intval( $year_value ) === $i ) ? ' default' : '', $i );
58
  }
59
  } else {
60
  for ( $i = $min_year; $i <= $max_year; $i++ ) {
61
+ printf( $li_template, $i, $i, ( intval( $year_value ) === $i ) ? ' default' : '', $i );
62
  }
63
  }
64
  ?>
71
 
72
  if ( 'desc' === $order ) {
73
  for ( $i = $max_year; $i >= $min_year; $i-- ) {
74
+ printf( $option_template, $i, selected( intval( $year_value ), $i ), $i );
75
  }
76
  } else {
77
  for ( $i = $min_year; $i <= $max_year; $i++ ) {
78
+ printf( $option_template, $i, selected( intval( $year_value ), $i ), $i );
79
  }
80
  }
81
  ?>
83
  </div>
84
  </div>
85
  </div>
86
+ <?php } ?>
87
+ <?php if ( 'datetime' === $part['date_type'] || 'time' === $part['date_type'] ) : ?>
88
  <?php
89
  if ( 12 === $part['time_format'] ) {
90
  $hour_pattern = '(0[0-9]|1[0-2])';
inc/templates/parts/frontend-phone.php CHANGED
@@ -6,18 +6,33 @@
6
 
7
  <div class="happyforms-part__el">
8
  <div class="happyforms-part-phone-wrap">
9
- <?php
 
10
  $code_value = happyforms_get_part_value( $part, $form, 'code' );
11
- $code_value = ( ! empty( $code_value ) ) ? $code_value : $part['mask_phone_country'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  ?>
13
 
14
  <?php do_action( 'happyforms_part_input_before', $part, $form ); ?>
15
 
16
- <?php $code_value = ( ! empty( happyforms_get_part_value( $part, $form, 'code' ) ) ) ? happyforms_get_part_value( $part, $form, 'code' ) : $part['mask_phone_country']; ?>
17
  <?php if ( 1 === intval( $part['masked'] ) ) : ?>
18
- <input type="hidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[code]" value="<?php echo $code_value; ?>" <?php happyforms_the_part_attributes( $part, $form, 'code' ); ?> />
 
19
  <?php endif; ?>
20
- <?php happyforms_the_countries_dropdown( $this, $part, $code_value ); ?>
21
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="text" value="<?php happyforms_the_part_value( $part, $form, 'number' ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[number]" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form, 'number' ); ?> />
22
  <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
23
  <?php happyforms_the_part_label( $part, $form ); ?>
6
 
7
  <div class="happyforms-part__el">
8
  <div class="happyforms-part-phone-wrap">
9
+ <?php
10
+ $countries = $this->get_phone_countries_array();
11
  $code_value = happyforms_get_part_value( $part, $form, 'code' );
12
+ $country_value = happyforms_get_part_value( $part, $form, 'country' );
13
+
14
+ $default_country_code = $part['mask_phone_country'];
15
+
16
+ if ( empty( $code_value ) ) {
17
+ if ( intval( $default_country_code ) ) {
18
+ $code_value = $default_country_code;
19
+ } else {
20
+ $code_value = $countries[$default_country_code]['code'];
21
+ }
22
+ }
23
+
24
+ if ( empty( $country_value ) ) {
25
+ $country_value = $default_country_code;
26
+ }
27
  ?>
28
 
29
  <?php do_action( 'happyforms_part_input_before', $part, $form ); ?>
30
 
 
31
  <?php if ( 1 === intval( $part['masked'] ) ) : ?>
32
+ <input type="hidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[code]" class="happyforms-phone-code" value="<?php echo $code_value; ?>" <?php happyforms_the_part_attributes( $part, $form, 'code' ); ?> />
33
+ <input type="hidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[country]" class="happyforms-phone-country" value="<?php echo $country_value; ?>" <?php happyforms_the_part_attributes( $part, $form, 'country' ); ?> />
34
  <?php endif; ?>
35
+ <?php happyforms_the_countries_dropdown( $this, $part, $code_value, $country_value ); ?>
36
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="text" value="<?php happyforms_the_part_value( $part, $form, 'number' ); ?>" name="<?php happyforms_the_part_name( $part, $form ); ?>[number]" placeholder="<?php echo esc_attr( $part['placeholder'] ); ?>" <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form, 'number' ); ?> />
37
  <?php if ( 'as_placeholder' === $part['label_placement'] ) : ?>
38
  <?php happyforms_the_part_label( $part, $form ); ?>
inc/templates/parts/frontend-placeholder.php CHANGED
@@ -1,6 +1,10 @@
1
  <div class="<?php happyforms_the_part_class( $part, $form ); ?>" id="<?php happyforms_the_part_id( $part, $form ); ?>-part" <?php happyforms_the_part_data_attributes( $part, $form ); ?>>
2
  <div class="happyforms-part-wrap">
3
- <?php happyforms_the_part_label( $part, $form ); ?>
 
 
 
 
4
 
5
  <div class="happyforms-part__el">
6
  <?php do_action( 'happyforms_part_input_before', $part, $form ); ?>
1
  <div class="<?php happyforms_the_part_class( $part, $form ); ?>" id="<?php happyforms_the_part_id( $part, $form ); ?>-part" <?php happyforms_the_part_data_attributes( $part, $form ); ?>>
2
  <div class="happyforms-part-wrap">
3
+ <?php
4
+ if ( ! empty( $part['label'] ) || happyforms_is_preview() ) {
5
+ happyforms_the_part_label( $part, $form );
6
+ }
7
+ ?>
8
 
9
  <div class="happyforms-part__el">
10
  <?php do_action( 'happyforms_part_input_before', $part, $form ); ?>
inc/templates/parts/frontend-select.php CHANGED
@@ -9,28 +9,22 @@
9
  <?php
10
  $options = happyforms_get_part_options( $part['options'], $part, $form );
11
  $default_value = happyforms_get_part_value( $part, $form );
12
- $placeholder_value = '';
13
- $has_value = false;
14
 
15
  foreach( $options as $option ) {
16
- if ( 'true' === $option['is_default'] ) {
17
  $default_value = $option['label'];
18
- $has_value = true;
19
  }
20
  }
21
-
22
- if ( ! $has_value ) {
23
- $placeholder_value = __( '- Select -', 'happyforms' );
24
- }
25
  ?>
26
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="text" value="<?php echo $default_value; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
27
 
28
  <ul class="happyforms-custom-select-dropdown">
29
- <li data-value=""><?php _e( '- Select -', 'happyforms' ); ?></li>
30
  <?php
31
  $options = happyforms_get_part_options( $part['options'], $part, $form );
32
  foreach( $options as $index => $option ) :
33
- $is_default = ( 1 == $option['is_default'] ) ? true : false;
34
  $selected = $is_default ? true : false;
35
  $selected = $selected ? $selected : happyforms_get_part_value( $part, $form ) === $option['label'];
36
 
@@ -53,7 +47,7 @@
53
  <option value="">- <?php _e( 'Select', 'happyforms' ); ?> -</option>
54
  <?php
55
  foreach( $options as $index => $option ) :
56
- $selected = selected( $option['is_default'], 1, false );
57
  $selected = $selected ? $selected : selected( happyforms_get_part_value( $part, $form ), $index, false );
58
  ?>
59
  <option id="<?php echo esc_attr( $option['id'] ); ?>" value="<?php echo $index; ?>" <?php echo $selected; ?>><?php echo esc_attr( $option['label'] ); ?></option>
9
  <?php
10
  $options = happyforms_get_part_options( $part['options'], $part, $form );
11
  $default_value = happyforms_get_part_value( $part, $form );
12
+ $placeholder_value = $part['placeholder'];
 
13
 
14
  foreach( $options as $option ) {
15
+ if ( 1 == $option['is_default'] ) {
16
  $default_value = $option['label'];
 
17
  }
18
  }
 
 
 
 
19
  ?>
20
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="text" value="<?php echo $default_value; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
21
 
22
  <ul class="happyforms-custom-select-dropdown">
23
+ <li class="happyforms-custom-select-dropdown__placeholder" data-value=""><?php echo $placeholder_value; ?></li>
24
  <?php
25
  $options = happyforms_get_part_options( $part['options'], $part, $form );
26
  foreach( $options as $index => $option ) :
27
+ $is_default = ( $default_value === $option['label'] ) ? true : false;
28
  $selected = $is_default ? true : false;
29
  $selected = $selected ? $selected : happyforms_get_part_value( $part, $form ) === $option['label'];
30
 
47
  <option value="">- <?php _e( 'Select', 'happyforms' ); ?> -</option>
48
  <?php
49
  foreach( $options as $index => $option ) :
50
+ $selected = selected( $option['label'] === $default_value, 1, false );
51
  $selected = $selected ? $selected : selected( happyforms_get_part_value( $part, $form ), $index, false );
52
  ?>
53
  <option id="<?php echo esc_attr( $option['id'] ); ?>" value="<?php echo $index; ?>" <?php echo $selected; ?>><?php echo esc_attr( $option['label'] ); ?></option>
inc/templates/parts/frontend-title.php CHANGED
@@ -8,28 +8,18 @@
8
  <div class="happyforms-part__select-wrap">
9
  <?php
10
  $options = happyforms_get_part_options( $part['options'], $part, $form );
11
-
12
  $default_value = happyforms_get_part_value( $part, $form );
13
- $placeholder_value = '';
14
- $has_value = false;
15
-
16
- if ( ! empty( $default_value ) ) {
17
- $has_value = true;
18
- }
19
-
20
- if ( ! $has_value ) {
21
- $placeholder_value = __( '- Select -', 'happyforms' );
22
- }
23
  ?>
24
- <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="text" value="<?php echo $default_value; ?>" placeholder="<?php echo $placeholder_value; ?>" <?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
25
 
26
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
27
- <li data-value=""><?php _e( '- Select -', 'happyforms' ); ?></li>
28
  <?php
29
  $options = happyforms_get_part_options( $part['options'], $part, $form );
30
 
31
  foreach( $options as $option ) :
32
- $selected = ( happyforms_get_part_value( $part, $form ) === $option['label'] ) ? true : false;
33
 
34
  $li_classes = array();
35
  $li_classes[] = 'happyforms-custom-select-dropdown__item';
@@ -46,7 +36,7 @@
46
  <option value="">- <?php _e( 'Select', 'happyforms' ); ?> -</option>
47
  <?php
48
  foreach( $options as $option ) : ?>
49
- <option value="<?php echo $option['label']; ?>" <?php selected( happyforms_get_part_value( $part, $form ), $option['label'] ); ?>><?php echo $option['label']; ?></option>
50
  <?php endforeach; ?>
51
  </select>
52
  </div>
8
  <div class="happyforms-part__select-wrap">
9
  <?php
10
  $options = happyforms_get_part_options( $part['options'], $part, $form );
 
11
  $default_value = happyforms_get_part_value( $part, $form );
12
+ $placeholder_value = $part['placeholder'];
 
 
 
 
 
 
 
 
 
13
  ?>
14
+ <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="text" value="<?php echo $default_value; ?>" placeholder="<?php echo $placeholder_value; ?>"<?php if ( 1 === $part['required'] ) : ?> required aria-required="true"<?php endif; ?> <?php happyforms_the_part_attributes( $part, $form ); ?> />
15
 
16
  <ul class="happyforms-part-select__dropdown happyforms-custom-select-dropdown">
17
+ <li class="happyforms-custom-select-dropdown__placeholder" data-value=""><?php echo $placeholder_value; ?></li>
18
  <?php
19
  $options = happyforms_get_part_options( $part['options'], $part, $form );
20
 
21
  foreach( $options as $option ) :
22
+ $selected = ( $default_value === $option['label'] ) ? true : false;
23
 
24
  $li_classes = array();
25
  $li_classes[] = 'happyforms-custom-select-dropdown__item';
36
  <option value="">- <?php _e( 'Select', 'happyforms' ); ?> -</option>
37
  <?php
38
  foreach( $options as $option ) : ?>
39
+ <option value="<?php echo $option['label']; ?>" <?php selected( $default_value === $option['label'], $option['label'] ); ?>><?php echo $option['label']; ?></option>
40
  <?php endforeach; ?>
41
  </select>
42
  </div>
languages/happyforms.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the HappyForms package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: HappyForms 1.6.6\n"
6
  "Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
7
- "POT-Creation-Date: 2018-09-26 13:59:59+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -102,26 +102,39 @@ msgid "Copy to clipboard"
102
  msgstr ""
103
 
104
  #: inc/classes/class-form-admin.php:358
105
- #: inc/templates/partials/form-confirm-preview.php:3
106
- msgid "Edit"
107
  msgstr ""
108
 
109
  #: inc/classes/class-form-admin.php:362
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  #: inc/templates/customize-form-item.php:27
111
  #: inc/templates/customize-form-part-footer.php:4
112
  msgid "Duplicate"
113
  msgstr ""
114
 
115
- #: inc/classes/class-form-admin.php:366 inc/classes/class-message-admin.php:611
116
  #: inc/classes/class-message-admin.php:864
117
  msgid "Trash"
118
  msgstr ""
119
 
120
- #: inc/classes/class-form-admin.php:411
121
  msgid "Form duplicated succesfully."
122
  msgstr ""
123
 
124
- #: inc/classes/class-form-admin.php:435
125
  msgid " Copy"
126
  msgstr ""
127
 
@@ -221,31 +234,21 @@ msgstr ""
221
  msgid "Right-to-left"
222
  msgstr ""
223
 
224
- #: inc/classes/class-form-styles.php:81 inc/classes/class-form-styles.php:203
225
- #: inc/classes/class-form-styles.php:290
226
- msgid "Normal"
227
- msgstr ""
228
-
229
- #: inc/classes/class-form-styles.php:82 inc/classes/class-form-styles.php:204
230
- #: inc/classes/class-form-styles.php:291
231
- msgid "Bold"
232
- msgstr ""
233
-
234
- #: inc/classes/class-form-styles.php:91 inc/classes/class-form-styles.php:120
235
- #: inc/classes/class-form-styles.php:168 inc/classes/class-form-styles.php:252
236
- #: inc/templates/parts/customize-date.php:32
237
- #: inc/templates/parts/customize-date.php:53
238
  msgid "Show"
239
  msgstr ""
240
 
241
- #: inc/classes/class-form-styles.php:92 inc/classes/class-form-styles.php:121
242
- #: inc/classes/class-form-styles.php:169 inc/classes/class-form-styles.php:253
243
  msgid "Hide"
244
  msgstr ""
245
 
246
- #: inc/classes/class-form-styles.php:100 inc/classes/class-form-styles.php:183
247
- #: inc/classes/class-form-styles.php:212 inc/classes/class-form-styles.php:232
248
- #: inc/classes/class-form-styles.php:299
249
  #: inc/templates/parts/customize-address.php:11
250
  #: inc/templates/parts/customize-checkbox.php:11
251
  #: inc/templates/parts/customize-date.php:11
@@ -266,193 +269,185 @@ msgstr ""
266
  msgid "Left"
267
  msgstr ""
268
 
269
- #: inc/classes/class-form-styles.php:101 inc/classes/class-form-styles.php:184
270
- #: inc/classes/class-form-styles.php:213 inc/classes/class-form-styles.php:233
271
- #: inc/classes/class-form-styles.php:300
272
  msgid "Center"
273
  msgstr ""
274
 
275
- #: inc/classes/class-form-styles.php:102 inc/classes/class-form-styles.php:185
276
- #: inc/classes/class-form-styles.php:214 inc/classes/class-form-styles.php:234
277
- #: inc/classes/class-form-styles.php:301
278
  msgid "Right"
279
  msgstr ""
280
 
281
- #: inc/classes/class-form-styles.php:129
282
  msgid "All sides"
283
  msgstr ""
284
 
285
- #: inc/classes/class-form-styles.php:130
286
  msgid "Bottom only"
287
  msgstr ""
288
 
289
- #: inc/classes/class-form-styles.php:138 inc/classes/class-form-styles.php:261
290
  msgid "Square"
291
  msgstr ""
292
 
293
- #: inc/classes/class-form-styles.php:139 inc/classes/class-form-styles.php:262
294
  msgid "Round"
295
  msgstr ""
296
 
297
- #: inc/classes/class-form-styles.php:140 inc/classes/class-form-styles.php:263
298
  msgid "Pill"
299
  msgstr ""
300
 
301
- #: inc/classes/class-form-styles.php:148 inc/classes/class-form-styles.php:158
302
  msgid "Narrow"
303
  msgstr ""
304
 
305
- #: inc/classes/class-form-styles.php:149 inc/classes/class-form-styles.php:159
306
- #: inc/classes/class-form-styles.php:271
307
  msgid "Default"
308
  msgstr ""
309
 
310
- #: inc/classes/class-form-styles.php:150 inc/classes/class-form-styles.php:160
311
  msgid "Wide"
312
  msgstr ""
313
 
314
- #: inc/classes/class-form-styles.php:272
 
 
 
 
 
 
 
 
315
  msgid "Full width"
316
  msgstr ""
317
 
318
- #: inc/classes/class-form-styles.php:525
319
  msgid "General"
320
  msgstr ""
321
 
322
- #: inc/classes/class-form-styles.php:529
323
  msgid "Form width"
324
  msgstr ""
325
 
326
- #: inc/classes/class-form-styles.php:534
327
  msgid "Direction"
328
  msgstr ""
329
 
330
- #: inc/classes/class-form-styles.php:539 inc/classes/class-form-styles.php:718
331
- msgid "Required text"
332
- msgstr ""
333
-
334
- #: inc/classes/class-form-styles.php:544
335
  msgid "Disable submit button until form is valid"
336
  msgstr ""
337
 
338
- #: inc/classes/class-form-styles.php:549
339
- msgid "Font weight"
340
- msgstr ""
341
-
342
- #: inc/classes/class-form-styles.php:554 inc/classes/class-form-styles.php:621
343
- #: inc/classes/class-form-styles.php:699 inc/classes/class-form-styles.php:867
344
  msgid "Colors"
345
  msgstr ""
346
 
347
- #: inc/classes/class-form-styles.php:558
348
  msgid "Primary"
349
  msgstr ""
350
 
351
- #: inc/classes/class-form-styles.php:563
352
  msgid "Success"
353
  msgstr ""
354
 
355
- #: inc/classes/class-form-styles.php:568
356
  msgid "Error"
357
  msgstr ""
358
 
359
- #: inc/classes/class-form-styles.php:573 inc/classes/class-form-styles.php:577
360
  msgid "Form title"
361
  msgstr ""
362
 
363
- #: inc/classes/class-form-styles.php:582 inc/classes/class-form-styles.php:856
364
  msgid "Alignment"
365
  msgstr ""
366
 
367
- #: inc/classes/class-form-styles.php:587
368
  msgid "Font size"
369
  msgstr ""
370
 
371
- #: inc/classes/class-form-styles.php:592
372
  msgid "Part borders & spacing"
373
  msgstr ""
374
 
375
- #: inc/classes/class-form-styles.php:596 inc/classes/class-form-styles.php:625
376
- #: inc/classes/class-form-styles.php:831 inc/classes/class-form-styles.php:881
377
  msgid "Border"
378
  msgstr ""
379
 
380
- #: inc/classes/class-form-styles.php:601
381
  msgid "Border location"
382
  msgstr ""
383
 
384
- #: inc/classes/class-form-styles.php:606 inc/classes/class-form-styles.php:836
385
  msgid "Border radius"
386
  msgstr ""
387
 
388
- #: inc/classes/class-form-styles.php:611
389
  msgid "Outer padding"
390
  msgstr ""
391
 
392
- #: inc/classes/class-form-styles.php:616
393
  msgid "Inner padding"
394
  msgstr ""
395
 
396
- #: inc/classes/class-form-styles.php:630
397
  msgid "Border on focus"
398
  msgstr ""
399
 
400
- #: inc/classes/class-form-styles.php:635 inc/classes/class-form-styles.php:728
401
- #: inc/classes/class-form-styles.php:737 inc/classes/class-form-styles.php:871
402
  msgid "Background"
403
  msgstr ""
404
 
405
- #: inc/classes/class-form-styles.php:640
406
  msgid "Background on focus"
407
  msgstr ""
408
 
409
- #: inc/classes/class-form-styles.php:645
410
- msgid "Disable transitions on part colors"
411
- msgstr ""
412
-
413
- #: inc/classes/class-form-styles.php:650
414
  msgid "Part labels & text"
415
  msgstr ""
416
 
417
- #: inc/classes/class-form-styles.php:654
418
- msgid "Part titles"
419
- msgstr ""
420
-
421
- #: inc/classes/class-form-styles.php:659
422
  msgid "Toggle placeholder on part focus"
423
  msgstr ""
424
 
425
- #: inc/classes/class-form-styles.php:664
426
  msgid "Title alignment"
427
  msgstr ""
428
 
429
- #: inc/classes/class-form-styles.php:669
430
  msgid "Title font size"
431
  msgstr ""
432
 
433
- #: inc/classes/class-form-styles.php:674
434
  msgid "Title font weight"
435
  msgstr ""
436
 
437
- #: inc/classes/class-form-styles.php:679
438
  msgid "Description alignment"
439
  msgstr ""
440
 
441
- #: inc/classes/class-form-styles.php:684
442
  msgid "Description font size"
443
  msgstr ""
444
 
445
- #: inc/classes/class-form-styles.php:689
446
  msgid "Placeholder &amp; Value alignment"
447
  msgstr ""
448
 
449
- #: inc/classes/class-form-styles.php:694
450
  msgid "Value font size"
451
  msgstr ""
452
 
453
- #: inc/classes/class-form-styles.php:703
454
  #: inc/classes/parts/class-part-title.php:8
455
- #: inc/classes/parts/class-part-title.php:28
456
  #: inc/templates/parts/customize-address.php:4
457
  #: inc/templates/parts/customize-checkbox.php:4
458
  #: inc/templates/parts/customize-date.php:4
@@ -473,145 +468,143 @@ msgstr ""
473
  msgid "Title"
474
  msgstr ""
475
 
476
- #: inc/classes/class-form-styles.php:708
477
  msgid "Value"
478
  msgstr ""
479
 
480
- #: inc/classes/class-form-styles.php:713
481
  #: inc/classes/parts/class-part-placeholder.php:8
482
- #: inc/templates/parts/customize-address.php:35
483
- #: inc/templates/parts/customize-email.php:35
484
- #: inc/templates/parts/customize-multi-line-text.php:35
485
- #: inc/templates/parts/customize-number.php:35
486
- #: inc/templates/parts/customize-phone.php:35
487
- #: inc/templates/parts/customize-single-line-text.php:35
488
- #: inc/templates/parts/customize-website-url.php:35
 
 
489
  msgid "Placeholder"
490
  msgstr ""
491
 
492
- #: inc/classes/class-form-styles.php:723
493
  msgid "Dropdowns"
494
  msgstr ""
495
 
496
- #: inc/classes/class-form-styles.php:733
497
  msgid "Items"
498
  msgstr ""
499
 
500
- #: inc/classes/class-form-styles.php:742 inc/classes/class-form-styles.php:886
501
  #: inc/classes/parts/class-part-multi-line-text.php:29
502
  #: inc/classes/parts/class-part-single-line-text.php:29
503
- #: inc/templates/parts/customize-placeholder.php:21
504
  msgid "Text"
505
  msgstr ""
506
 
507
- #: inc/classes/class-form-styles.php:747 inc/classes/class-form-styles.php:876
508
  msgid "Background focused"
509
  msgstr ""
510
 
511
- #: inc/classes/class-form-styles.php:752 inc/classes/class-form-styles.php:891
512
  msgid "Text focused"
513
  msgstr ""
514
 
515
- #: inc/classes/class-form-styles.php:757
516
  msgid "Checkboxes & Radios"
517
  msgstr ""
518
 
519
- #: inc/classes/class-form-styles.php:762
520
  msgid "Checkbox & Radio background"
521
  msgstr ""
522
 
523
- #: inc/classes/class-form-styles.php:767
524
  msgid "Checkbox & Radio background focused"
525
  msgstr ""
526
 
527
- #: inc/classes/class-form-styles.php:772
528
  msgid "Checkbox & Radio checkmark"
529
  msgstr ""
530
 
531
- #: inc/classes/class-form-styles.php:777
532
  #: inc/classes/parts/class-part-rating.php:9
533
  #: inc/classes/parts/class-part-rating.php:31
534
  msgid "Rating"
535
  msgstr ""
536
 
537
- #: inc/classes/class-form-styles.php:782
538
  msgid "Rating star color"
539
  msgstr ""
540
 
541
- #: inc/classes/class-form-styles.php:787
542
  msgid "Rating star color on hover"
543
  msgstr ""
544
 
545
- #: inc/classes/class-form-styles.php:792
546
  msgid "Item background"
547
  msgstr ""
548
 
549
- #: inc/classes/class-form-styles.php:797
550
  msgid "Item background on hover"
551
  msgstr ""
552
 
553
- #: inc/classes/class-form-styles.php:802
554
  msgid "Tables"
555
  msgstr ""
556
 
557
- #: inc/classes/class-form-styles.php:807
558
  msgid "Odd row primary"
559
  msgstr ""
560
 
561
- #: inc/classes/class-form-styles.php:812
562
  msgid "Odd row secondary"
563
  msgstr ""
564
 
565
- #: inc/classes/class-form-styles.php:817
566
  msgid "Even row primary"
567
  msgstr ""
568
 
569
- #: inc/classes/class-form-styles.php:822
570
  msgid "Even row secondary"
571
  msgstr ""
572
 
573
- #: inc/classes/class-form-styles.php:827
574
  msgid "Submit button"
575
  msgstr ""
576
 
577
- #: inc/classes/class-form-styles.php:841
578
- #: inc/templates/parts/customize-address.php:77
579
- #: inc/templates/parts/customize-checkbox.php:53
580
- #: inc/templates/parts/customize-date.php:99
581
- #: inc/templates/parts/customize-email.php:45
582
  #: inc/templates/parts/customize-legal.php:4
583
- #: inc/templates/parts/customize-multi-line-text.php:45
584
- #: inc/templates/parts/customize-narrative.php:31
585
- #: inc/templates/parts/customize-number.php:74
586
- #: inc/templates/parts/customize-phone.php:68
587
- #: inc/templates/parts/customize-placeholder.php:26
588
- #: inc/templates/parts/customize-radio.php:53
589
- #: inc/templates/parts/customize-rating.php:73
590
- #: inc/templates/parts/customize-scale.php:85
591
- #: inc/templates/parts/customize-select.php:52
592
- #: inc/templates/parts/customize-single-line-text.php:50
593
- #: inc/templates/parts/customize-table.php:69
594
- #: inc/templates/parts/customize-title.php:38
595
- #: inc/templates/parts/customize-website-url.php:45
596
  msgid "Width"
597
  msgstr ""
598
 
599
- #: inc/classes/class-form-styles.php:846
600
  msgid "Font Size"
601
  msgstr ""
602
 
603
- #: inc/classes/class-form-styles.php:851
604
  msgid "Font Weight"
605
  msgstr ""
606
 
607
- #: inc/classes/class-form-styles.php:862
608
  msgid "Make button a part of last input"
609
  msgstr ""
610
 
611
- #: inc/classes/class-form-styles.php:896
612
- msgid "Disable transitions on submit button"
613
- msgstr ""
614
-
615
  #: inc/classes/class-happyforms-plugin.php:145
616
  msgid "HappyForms Index"
617
  msgstr ""
@@ -941,8 +934,8 @@ msgid "For geographical locations. Includes Google Maps intergration."
941
  msgstr ""
942
 
943
  #: inc/classes/parts/class-part-address.php:191
944
- #: inc/classes/parts/class-part-checkbox.php:166
945
- #: inc/classes/parts/class-part-date.php:197
946
  #: inc/classes/parts/class-part-email.php:141
947
  #: inc/classes/parts/class-part-email.php:145
948
  #: inc/classes/parts/class-part-legal.php:115
@@ -950,16 +943,16 @@ msgstr ""
950
  #: inc/classes/parts/class-part-narrative.php:125
951
  #: inc/classes/parts/class-part-narrative.php:130
952
  #: inc/classes/parts/class-part-number.php:169
953
- #: inc/classes/parts/class-part-phone.php:390
954
  #: inc/classes/parts/class-part-phone.php:394
 
955
  #: inc/classes/parts/class-part-radio.php:167
956
  #: inc/classes/parts/class-part-rating.php:152
957
  #: inc/classes/parts/class-part-scale.php:163
958
- #: inc/classes/parts/class-part-select.php:164
959
  #: inc/classes/parts/class-part-single-line-text.php:129
960
  #: inc/classes/parts/class-part-table.php:213
961
  #: inc/classes/parts/class-part-table.php:220
962
- #: inc/classes/parts/class-part-title.php:156
963
  #: inc/classes/parts/class-part-website-url.php:124
964
  msgid "This field is required."
965
  msgstr ""
@@ -975,13 +968,13 @@ msgstr ""
975
  #: inc/classes/parts/class-part-checkbox.php:30
976
  #: inc/classes/parts/class-part-radio.php:31
977
  #: inc/classes/parts/class-part-table.php:32
978
- #: inc/templates/parts/customize-checkbox.php:38
979
- #: inc/templates/parts/customize-radio.php:38
980
- #: inc/templates/parts/customize-select.php:38
981
  msgid "Options"
982
  msgstr ""
983
 
984
- #: inc/classes/parts/class-part-checkbox.php:174
985
  #: inc/classes/parts/class-part-table.php:233
986
  msgid "Checkbox values are not valid."
987
  msgstr ""
@@ -995,19 +988,19 @@ msgid "For formatted day, month, year and or time fields."
995
  msgstr ""
996
 
997
  #: inc/classes/parts/class-part-date.php:30
998
- #: inc/templates/parts/customize-date.php:34
999
  msgid "Date"
1000
  msgstr ""
1001
 
1002
- #: inc/classes/parts/class-part-date.php:221
1003
  msgid "Year input does not match minimum and maximum value allowed."
1004
  msgstr ""
1005
 
1006
- #: inc/classes/parts/class-part-date.php:236
1007
  msgid "Hour input does not match minimum and maximum value allowed."
1008
  msgstr ""
1009
 
1010
- #: inc/classes/parts/class-part-date.php:273
1011
  msgid "Not a valid date."
1012
  msgstr ""
1013
 
@@ -1079,12 +1072,12 @@ msgstr ""
1079
  msgid "Confirm Number"
1080
  msgstr ""
1081
 
1082
- #: inc/classes/parts/class-part-number.php:180
1083
  msgid "This field does not match minimum and maximum allowed value."
1084
  msgstr ""
1085
 
1086
- #: inc/classes/parts/class-part-number.php:189
1087
- #: inc/classes/parts/class-part-phone.php:398
1088
  msgid "Number and confirmation number are not matching."
1089
  msgstr ""
1090
 
@@ -1168,7 +1161,7 @@ msgid "For collecting opinions using a horizontal slider."
1168
  msgstr ""
1169
 
1170
  #: inc/classes/parts/class-part-select.php:8
1171
- #: inc/classes/parts/class-part-select.php:29
1172
  msgid "Dropdown"
1173
  msgstr ""
1174
 
@@ -1176,8 +1169,8 @@ msgstr ""
1176
  msgid "For selecting one option from a long list. Default value adjustable."
1177
  msgstr ""
1178
 
1179
- #: inc/classes/parts/class-part-select.php:169
1180
- #: inc/classes/parts/class-part-select.php:175
1181
  msgid "Selected value is not valid."
1182
  msgstr ""
1183
 
@@ -1205,31 +1198,31 @@ msgstr ""
1205
  msgid "For displaying personal honorifics."
1206
  msgstr ""
1207
 
1208
- #: inc/classes/parts/class-part-title.php:96
1209
  msgid "Mr."
1210
  msgstr ""
1211
 
1212
- #: inc/classes/parts/class-part-title.php:97
1213
  msgid "Mrs."
1214
  msgstr ""
1215
 
1216
- #: inc/classes/parts/class-part-title.php:98
1217
  msgid "Ms."
1218
  msgstr ""
1219
 
1220
- #: inc/classes/parts/class-part-title.php:99
1221
  msgid "Miss"
1222
  msgstr ""
1223
 
1224
- #: inc/classes/parts/class-part-title.php:100
1225
  msgid "Prof."
1226
  msgstr ""
1227
 
1228
- #: inc/classes/parts/class-part-title.php:101
1229
  msgid "Dr."
1230
  msgstr ""
1231
 
1232
- #: inc/classes/parts/class-part-title.php:164
1233
  msgid "Values are not valid."
1234
  msgstr ""
1235
 
@@ -1294,6 +1287,10 @@ msgstr ""
1294
  msgid "How can I access my premium upgrade credentials?"
1295
  msgstr ""
1296
 
 
 
 
 
1297
  #: inc/helpers/helper-form-templates.php:819
1298
  msgid "Get my location"
1299
  msgstr ""
@@ -1350,971 +1347,971 @@ msgstr ""
1350
  msgid "December"
1351
  msgstr ""
1352
 
1353
- #: inc/helpers/helper-misc.php:189
1354
  msgid "How are we doing? Please rate"
1355
  msgstr ""
1356
 
1357
- #: inc/helpers/helper-misc.php:189
1358
  msgid "on"
1359
  msgstr ""
1360
 
1361
- #: inc/helpers/helper-misc.php:189
1362
  msgid "to help us spread the word."
1363
  msgstr ""
1364
 
1365
- #: inc/helpers/helper-misc.php:243
1366
  msgid "Afghanistan"
1367
  msgstr ""
1368
 
1369
- #: inc/helpers/helper-misc.php:244
1370
  msgid "Albania"
1371
  msgstr ""
1372
 
1373
- #: inc/helpers/helper-misc.php:245
1374
  msgid "Algeria"
1375
  msgstr ""
1376
 
1377
- #: inc/helpers/helper-misc.php:246
1378
  msgid "American Samoa"
1379
  msgstr ""
1380
 
1381
- #: inc/helpers/helper-misc.php:247
1382
  msgid "Andorra"
1383
  msgstr ""
1384
 
1385
- #: inc/helpers/helper-misc.php:248
1386
  msgid "Angola"
1387
  msgstr ""
1388
 
1389
- #: inc/helpers/helper-misc.php:249
1390
  msgid "Anguilla"
1391
  msgstr ""
1392
 
1393
- #: inc/helpers/helper-misc.php:250
1394
  msgid "Antarctica"
1395
  msgstr ""
1396
 
1397
- #: inc/helpers/helper-misc.php:251
1398
  msgid "Antigua and Barbuda"
1399
  msgstr ""
1400
 
1401
- #: inc/helpers/helper-misc.php:252
1402
  msgid "Argentina"
1403
  msgstr ""
1404
 
1405
- #: inc/helpers/helper-misc.php:253
1406
  msgid "Armenia"
1407
  msgstr ""
1408
 
1409
- #: inc/helpers/helper-misc.php:254
1410
  msgid "Aruba"
1411
  msgstr ""
1412
 
1413
- #: inc/helpers/helper-misc.php:255
1414
  msgid "Australia"
1415
  msgstr ""
1416
 
1417
- #: inc/helpers/helper-misc.php:256
1418
  msgid "Austria"
1419
  msgstr ""
1420
 
1421
- #: inc/helpers/helper-misc.php:257
1422
  msgid "Azerbaijan"
1423
  msgstr ""
1424
 
1425
- #: inc/helpers/helper-misc.php:258
1426
  msgid "Bahamas"
1427
  msgstr ""
1428
 
1429
- #: inc/helpers/helper-misc.php:259
1430
  msgid "Bahrain"
1431
  msgstr ""
1432
 
1433
- #: inc/helpers/helper-misc.php:260
1434
  msgid "Bangladesh"
1435
  msgstr ""
1436
 
1437
- #: inc/helpers/helper-misc.php:261
1438
  msgid "Barbados"
1439
  msgstr ""
1440
 
1441
- #: inc/helpers/helper-misc.php:262
1442
  msgid "Belarus"
1443
  msgstr ""
1444
 
1445
- #: inc/helpers/helper-misc.php:263
1446
  msgid "Belgium"
1447
  msgstr ""
1448
 
1449
- #: inc/helpers/helper-misc.php:264
1450
  msgid "Belize"
1451
  msgstr ""
1452
 
1453
- #: inc/helpers/helper-misc.php:265
1454
  msgid "Benin"
1455
  msgstr ""
1456
 
1457
- #: inc/helpers/helper-misc.php:266
1458
  msgid "Bermuda"
1459
  msgstr ""
1460
 
1461
- #: inc/helpers/helper-misc.php:267
1462
  msgid "Bhutan"
1463
  msgstr ""
1464
 
1465
- #: inc/helpers/helper-misc.php:268
1466
  msgid "Bolivia"
1467
  msgstr ""
1468
 
1469
- #: inc/helpers/helper-misc.php:269
1470
  msgid "Bosnia and Herzegowina"
1471
  msgstr ""
1472
 
1473
- #: inc/helpers/helper-misc.php:270
1474
  msgid "Botswana"
1475
  msgstr ""
1476
 
1477
- #: inc/helpers/helper-misc.php:271
1478
  msgid "Bouvet Island"
1479
  msgstr ""
1480
 
1481
- #: inc/helpers/helper-misc.php:272
1482
  msgid "Brazil"
1483
  msgstr ""
1484
 
1485
- #: inc/helpers/helper-misc.php:273
1486
  msgid "British Indian Ocean Territory"
1487
  msgstr ""
1488
 
1489
- #: inc/helpers/helper-misc.php:274
1490
  msgid "Brunei Darussalam"
1491
  msgstr ""
1492
 
1493
- #: inc/helpers/helper-misc.php:275
1494
  msgid "Bulgaria"
1495
  msgstr ""
1496
 
1497
- #: inc/helpers/helper-misc.php:276
1498
  msgid "Burkina Faso"
1499
  msgstr ""
1500
 
1501
- #: inc/helpers/helper-misc.php:277
1502
  msgid "Burundi"
1503
  msgstr ""
1504
 
1505
- #: inc/helpers/helper-misc.php:278
1506
  msgid "Cambodia"
1507
  msgstr ""
1508
 
1509
- #: inc/helpers/helper-misc.php:279
1510
  msgid "Cameroon"
1511
  msgstr ""
1512
 
1513
- #: inc/helpers/helper-misc.php:280
1514
  msgid "Canada"
1515
  msgstr ""
1516
 
1517
- #: inc/helpers/helper-misc.php:281
1518
  msgid "Cape Verde"
1519
  msgstr ""
1520
 
1521
- #: inc/helpers/helper-misc.php:282
1522
  msgid "Cayman Islands"
1523
  msgstr ""
1524
 
1525
- #: inc/helpers/helper-misc.php:283
1526
  msgid "Central African Republic"
1527
  msgstr ""
1528
 
1529
- #: inc/helpers/helper-misc.php:284
1530
  msgid "Chad"
1531
  msgstr ""
1532
 
1533
- #: inc/helpers/helper-misc.php:285
1534
  msgid "Chile"
1535
  msgstr ""
1536
 
1537
- #: inc/helpers/helper-misc.php:286
1538
  msgid "China"
1539
  msgstr ""
1540
 
1541
- #: inc/helpers/helper-misc.php:287
1542
  msgid "Christmas Island"
1543
  msgstr ""
1544
 
1545
- #: inc/helpers/helper-misc.php:288
1546
  msgid "Cocos (Keeling) Islands"
1547
  msgstr ""
1548
 
1549
- #: inc/helpers/helper-misc.php:289
1550
  msgid "Colombia"
1551
  msgstr ""
1552
 
1553
- #: inc/helpers/helper-misc.php:290
1554
  msgid "Comoros"
1555
  msgstr ""
1556
 
1557
- #: inc/helpers/helper-misc.php:291
1558
  msgid "Congo"
1559
  msgstr ""
1560
 
1561
- #: inc/helpers/helper-misc.php:292
1562
  msgid "Congo, the Democratic Republic of the"
1563
  msgstr ""
1564
 
1565
- #: inc/helpers/helper-misc.php:293
1566
  msgid "Cook Islands"
1567
  msgstr ""
1568
 
1569
- #: inc/helpers/helper-misc.php:294
1570
  msgid "Costa Rica"
1571
  msgstr ""
1572
 
1573
- #: inc/helpers/helper-misc.php:295
1574
  msgid "Ivory Coast"
1575
  msgstr ""
1576
 
1577
- #: inc/helpers/helper-misc.php:296
1578
  msgid "Croatia (Hrvatska)"
1579
  msgstr ""
1580
 
1581
- #: inc/helpers/helper-misc.php:297
1582
  msgid "Cuba"
1583
  msgstr ""
1584
 
1585
- #: inc/helpers/helper-misc.php:298
1586
  msgid "Cyprus"
1587
  msgstr ""
1588
 
1589
- #: inc/helpers/helper-misc.php:299
1590
  msgid "Czech Republic"
1591
  msgstr ""
1592
 
1593
- #: inc/helpers/helper-misc.php:300
1594
  msgid "Denmark"
1595
  msgstr ""
1596
 
1597
- #: inc/helpers/helper-misc.php:301
1598
  msgid "Djibouti"
1599
  msgstr ""
1600
 
1601
- #: inc/helpers/helper-misc.php:302
1602
  msgid "Dominica"
1603
  msgstr ""
1604
 
1605
- #: inc/helpers/helper-misc.php:303
1606
  msgid "Dominican Republic"
1607
  msgstr ""
1608
 
1609
- #: inc/helpers/helper-misc.php:304
1610
  msgid "East Timor"
1611
  msgstr ""
1612
 
1613
- #: inc/helpers/helper-misc.php:305
1614
  msgid "Ecuador"
1615
  msgstr ""
1616
 
1617
- #: inc/helpers/helper-misc.php:306
1618
  msgid "Egypt"
1619
  msgstr ""
1620
 
1621
- #: inc/helpers/helper-misc.php:307
1622
  msgid "El Salvador"
1623
  msgstr ""
1624
 
1625
- #: inc/helpers/helper-misc.php:308
1626
  msgid "Equatorial Guinea"
1627
  msgstr ""
1628
 
1629
- #: inc/helpers/helper-misc.php:309
1630
  msgid "Eritrea"
1631
  msgstr ""
1632
 
1633
- #: inc/helpers/helper-misc.php:310
1634
  msgid "Estonia"
1635
  msgstr ""
1636
 
1637
- #: inc/helpers/helper-misc.php:311
1638
  msgid "Ethiopia"
1639
  msgstr ""
1640
 
1641
- #: inc/helpers/helper-misc.php:312
1642
  msgid "Falkland Islands (Malvinas)"
1643
  msgstr ""
1644
 
1645
- #: inc/helpers/helper-misc.php:313
1646
  msgid "Faroe Islands"
1647
  msgstr ""
1648
 
1649
- #: inc/helpers/helper-misc.php:314
1650
  msgid "Fiji"
1651
  msgstr ""
1652
 
1653
- #: inc/helpers/helper-misc.php:315
1654
  msgid "Finland"
1655
  msgstr ""
1656
 
1657
- #: inc/helpers/helper-misc.php:316
1658
  msgid "France"
1659
  msgstr ""
1660
 
1661
- #: inc/helpers/helper-misc.php:317
1662
  msgid "France Metropolitan"
1663
  msgstr ""
1664
 
1665
- #: inc/helpers/helper-misc.php:318
1666
  msgid "French Guiana"
1667
  msgstr ""
1668
 
1669
- #: inc/helpers/helper-misc.php:319
1670
  msgid "French Polynesia"
1671
  msgstr ""
1672
 
1673
- #: inc/helpers/helper-misc.php:320
1674
  msgid "French Southern Territories"
1675
  msgstr ""
1676
 
1677
- #: inc/helpers/helper-misc.php:321
1678
  msgid "Gabon"
1679
  msgstr ""
1680
 
1681
- #: inc/helpers/helper-misc.php:322
1682
  msgid "Gambia"
1683
  msgstr ""
1684
 
1685
- #: inc/helpers/helper-misc.php:323
1686
  msgid "Georgia"
1687
  msgstr ""
1688
 
1689
- #: inc/helpers/helper-misc.php:324
1690
  msgid "Germany"
1691
  msgstr ""
1692
 
1693
- #: inc/helpers/helper-misc.php:325
1694
  msgid "Ghana"
1695
  msgstr ""
1696
 
1697
- #: inc/helpers/helper-misc.php:326
1698
  msgid "Gibraltar"
1699
  msgstr ""
1700
 
1701
- #: inc/helpers/helper-misc.php:327
1702
  msgid "Greece"
1703
  msgstr ""
1704
 
1705
- #: inc/helpers/helper-misc.php:328
1706
  msgid "Greenland"
1707
  msgstr ""
1708
 
1709
- #: inc/helpers/helper-misc.php:329
1710
  msgid "Grenada"
1711
  msgstr ""
1712
 
1713
- #: inc/helpers/helper-misc.php:330
1714
  msgid "Guadeloupe"
1715
  msgstr ""
1716
 
1717
- #: inc/helpers/helper-misc.php:331
1718
  msgid "Guam"
1719
  msgstr ""
1720
 
1721
- #: inc/helpers/helper-misc.php:332
1722
  msgid "Guatemala"
1723
  msgstr ""
1724
 
1725
- #: inc/helpers/helper-misc.php:333
1726
  msgid "Guinea"
1727
  msgstr ""
1728
 
1729
- #: inc/helpers/helper-misc.php:334
1730
  msgid "Guinea-Bissau"
1731
  msgstr ""
1732
 
1733
- #: inc/helpers/helper-misc.php:335
1734
  msgid "Guyana"
1735
  msgstr ""
1736
 
1737
- #: inc/helpers/helper-misc.php:336
1738
  msgid "Haiti"
1739
  msgstr ""
1740
 
1741
- #: inc/helpers/helper-misc.php:337
1742
  msgid "Heard and Mc Donald Islands"
1743
  msgstr ""
1744
 
1745
- #: inc/helpers/helper-misc.php:338
1746
  msgid "Holy See (Vatican City State)"
1747
  msgstr ""
1748
 
1749
- #: inc/helpers/helper-misc.php:339
1750
  msgid "Honduras"
1751
  msgstr ""
1752
 
1753
- #: inc/helpers/helper-misc.php:340
1754
  msgid "Hong Kong"
1755
  msgstr ""
1756
 
1757
- #: inc/helpers/helper-misc.php:341
1758
  msgid "Hungary"
1759
  msgstr ""
1760
 
1761
- #: inc/helpers/helper-misc.php:342
1762
  msgid "Iceland"
1763
  msgstr ""
1764
 
1765
- #: inc/helpers/helper-misc.php:343
1766
  msgid "India"
1767
  msgstr ""
1768
 
1769
- #: inc/helpers/helper-misc.php:344
1770
  msgid "Indonesia"
1771
  msgstr ""
1772
 
1773
- #: inc/helpers/helper-misc.php:345
1774
  msgid "Iran (Islamic Republic of)"
1775
  msgstr ""
1776
 
1777
- #: inc/helpers/helper-misc.php:346
1778
  msgid "Iraq"
1779
  msgstr ""
1780
 
1781
- #: inc/helpers/helper-misc.php:347
1782
  msgid "Ireland"
1783
  msgstr ""
1784
 
1785
- #: inc/helpers/helper-misc.php:348
1786
  msgid "Israel"
1787
  msgstr ""
1788
 
1789
- #: inc/helpers/helper-misc.php:349
1790
  msgid "Italy"
1791
  msgstr ""
1792
 
1793
- #: inc/helpers/helper-misc.php:350
1794
  msgid "Jamaica"
1795
  msgstr ""
1796
 
1797
- #: inc/helpers/helper-misc.php:351
1798
  msgid "Japan"
1799
  msgstr ""
1800
 
1801
- #: inc/helpers/helper-misc.php:352
1802
  msgid "Jordan"
1803
  msgstr ""
1804
 
1805
- #: inc/helpers/helper-misc.php:353
1806
  msgid "Kazakhstan"
1807
  msgstr ""
1808
 
1809
- #: inc/helpers/helper-misc.php:354
1810
  msgid "Kenya"
1811
  msgstr ""
1812
 
1813
- #: inc/helpers/helper-misc.php:355
1814
  msgid "Kiribati"
1815
  msgstr ""
1816
 
1817
- #: inc/helpers/helper-misc.php:356
1818
  msgid "Korea, Democratic People's Republic of"
1819
  msgstr ""
1820
 
1821
- #: inc/helpers/helper-misc.php:357
1822
  msgid "Korea, Republic of"
1823
  msgstr ""
1824
 
1825
- #: inc/helpers/helper-misc.php:358
1826
  msgid "Kuwait"
1827
  msgstr ""
1828
 
1829
- #: inc/helpers/helper-misc.php:359
1830
  msgid "Kyrgyzstan"
1831
  msgstr ""
1832
 
1833
- #: inc/helpers/helper-misc.php:360
1834
  msgid "Lao, People's Democratic Republic"
1835
  msgstr ""
1836
 
1837
- #: inc/helpers/helper-misc.php:361
1838
  msgid "Latvia"
1839
  msgstr ""
1840
 
1841
- #: inc/helpers/helper-misc.php:362
1842
  msgid "Lebanon"
1843
  msgstr ""
1844
 
1845
- #: inc/helpers/helper-misc.php:363
1846
  msgid "Lesotho"
1847
  msgstr ""
1848
 
1849
- #: inc/helpers/helper-misc.php:364
1850
  msgid "Liberia"
1851
  msgstr ""
1852
 
1853
- #: inc/helpers/helper-misc.php:365
1854
  msgid "Libyan Arab Jamahiriya"
1855
  msgstr ""
1856
 
1857
- #: inc/helpers/helper-misc.php:366
1858
  msgid "Liechtenstein"
1859
  msgstr ""
1860
 
1861
- #: inc/helpers/helper-misc.php:367
1862
  msgid "Lithuania"
1863
  msgstr ""
1864
 
1865
- #: inc/helpers/helper-misc.php:368
1866
  msgid "Luxembourg"
1867
  msgstr ""
1868
 
1869
- #: inc/helpers/helper-misc.php:369
1870
  msgid "Macau"
1871
  msgstr ""
1872
 
1873
- #: inc/helpers/helper-misc.php:370
1874
  msgid "Macedonia, The Former Yugoslav Republic of"
1875
  msgstr ""
1876
 
1877
- #: inc/helpers/helper-misc.php:371
1878
  msgid "Madagascar"
1879
  msgstr ""
1880
 
1881
- #: inc/helpers/helper-misc.php:372
1882
  msgid "Malawi"
1883
  msgstr ""
1884
 
1885
- #: inc/helpers/helper-misc.php:373
1886
  msgid "Malaysia"
1887
  msgstr ""
1888
 
1889
- #: inc/helpers/helper-misc.php:374
1890
  msgid "Maldives"
1891
  msgstr ""
1892
 
1893
- #: inc/helpers/helper-misc.php:375
1894
  msgid "Mali"
1895
  msgstr ""
1896
 
1897
- #: inc/helpers/helper-misc.php:376
1898
  msgid "Malta"
1899
  msgstr ""
1900
 
1901
- #: inc/helpers/helper-misc.php:377
1902
  msgid "Marshall Islands"
1903
  msgstr ""
1904
 
1905
- #: inc/helpers/helper-misc.php:378
1906
  msgid "Martinique"
1907
  msgstr ""
1908
 
1909
- #: inc/helpers/helper-misc.php:379
1910
  msgid "Mauritania"
1911
  msgstr ""
1912
 
1913
- #: inc/helpers/helper-misc.php:380
1914
  msgid "Mauritius"
1915
  msgstr ""
1916
 
1917
- #: inc/helpers/helper-misc.php:381
1918
  msgid "Mayotte"
1919
  msgstr ""
1920
 
1921
- #: inc/helpers/helper-misc.php:382
1922
  msgid "Mexico"
1923
  msgstr ""
1924
 
1925
- #: inc/helpers/helper-misc.php:383
1926
  msgid "Micronesia, Federated States of"
1927
  msgstr ""
1928
 
1929
- #: inc/helpers/helper-misc.php:384
1930
  msgid "Moldova, Republic of"
1931
  msgstr ""
1932
 
1933
- #: inc/helpers/helper-misc.php:385
1934
  msgid "Monaco"
1935
  msgstr ""
1936
 
1937
- #: inc/helpers/helper-misc.php:386
1938
  msgid "Mongolia"
1939
  msgstr ""
1940
 
1941
- #: inc/helpers/helper-misc.php:387
1942
  msgid "Montserrat"
1943
  msgstr ""
1944
 
1945
- #: inc/helpers/helper-misc.php:388
1946
  msgid "Morocco"
1947
  msgstr ""
1948
 
1949
- #: inc/helpers/helper-misc.php:389
1950
  msgid "Mozambique"
1951
  msgstr ""
1952
 
1953
- #: inc/helpers/helper-misc.php:390
1954
  msgid "Myanmar"
1955
  msgstr ""
1956
 
1957
- #: inc/helpers/helper-misc.php:391
1958
  msgid "Namibia"
1959
  msgstr ""
1960
 
1961
- #: inc/helpers/helper-misc.php:392
1962
  msgid "Nauru"
1963
  msgstr ""
1964
 
1965
- #: inc/helpers/helper-misc.php:393
1966
  msgid "Nepal"
1967
  msgstr ""
1968
 
1969
- #: inc/helpers/helper-misc.php:394
1970
  msgid "Netherlands"
1971
  msgstr ""
1972
 
1973
- #: inc/helpers/helper-misc.php:395
1974
  msgid "Netherlands Antilles"
1975
  msgstr ""
1976
 
1977
- #: inc/helpers/helper-misc.php:396
1978
  msgid "New Caledonia"
1979
  msgstr ""
1980
 
1981
- #: inc/helpers/helper-misc.php:397
1982
  msgid "New Zealand"
1983
  msgstr ""
1984
 
1985
- #: inc/helpers/helper-misc.php:398
1986
  msgid "Nicaragua"
1987
  msgstr ""
1988
 
1989
- #: inc/helpers/helper-misc.php:399
1990
  msgid "Niger"
1991
  msgstr ""
1992
 
1993
- #: inc/helpers/helper-misc.php:400
1994
  msgid "Nigeria"
1995
  msgstr ""
1996
 
1997
- #: inc/helpers/helper-misc.php:401
1998
  msgid "Niue"
1999
  msgstr ""
2000
 
2001
- #: inc/helpers/helper-misc.php:402
2002
  msgid "Norfolk Island"
2003
  msgstr ""
2004
 
2005
- #: inc/helpers/helper-misc.php:403
2006
  msgid "Northern Mariana Islands"
2007
  msgstr ""
2008
 
2009
- #: inc/helpers/helper-misc.php:404
2010
  msgid "Norway"
2011
  msgstr ""
2012
 
2013
- #: inc/helpers/helper-misc.php:405
2014
  msgid "Oman"
2015
  msgstr ""
2016
 
2017
- #: inc/helpers/helper-misc.php:406
2018
  msgid "Pakistan"
2019
  msgstr ""
2020
 
2021
- #: inc/helpers/helper-misc.php:407
2022
  msgid "Palau"
2023
  msgstr ""
2024
 
2025
- #: inc/helpers/helper-misc.php:408
2026
  msgid "Panama"
2027
  msgstr ""
2028
 
2029
- #: inc/helpers/helper-misc.php:409
2030
  msgid "Papua New Guinea"
2031
  msgstr ""
2032
 
2033
- #: inc/helpers/helper-misc.php:410
2034
  msgid "Paraguay"
2035
  msgstr ""
2036
 
2037
- #: inc/helpers/helper-misc.php:411
2038
  msgid "Peru"
2039
  msgstr ""
2040
 
2041
- #: inc/helpers/helper-misc.php:412
2042
  msgid "Philippines"
2043
  msgstr ""
2044
 
2045
- #: inc/helpers/helper-misc.php:413
2046
  msgid "Pitcairn"
2047
  msgstr ""
2048
 
2049
- #: inc/helpers/helper-misc.php:414
2050
  msgid "Poland"
2051
  msgstr ""
2052
 
2053
- #: inc/helpers/helper-misc.php:415
2054
  msgid "Portugal"
2055
  msgstr ""
2056
 
2057
- #: inc/helpers/helper-misc.php:416
2058
  msgid "Puerto Rico"
2059
  msgstr ""
2060
 
2061
- #: inc/helpers/helper-misc.php:417
2062
  msgid "Qatar"
2063
  msgstr ""
2064
 
2065
- #: inc/helpers/helper-misc.php:418
2066
  msgid "Reunion"
2067
  msgstr ""
2068
 
2069
- #: inc/helpers/helper-misc.php:419
2070
  msgid "Romania"
2071
  msgstr ""
2072
 
2073
- #: inc/helpers/helper-misc.php:420
2074
  msgid "Russian Federation"
2075
  msgstr ""
2076
 
2077
- #: inc/helpers/helper-misc.php:421
2078
  msgid "Rwanda"
2079
  msgstr ""
2080
 
2081
- #: inc/helpers/helper-misc.php:422
2082
  msgid "Saint Kitts and Nevis"
2083
  msgstr ""
2084
 
2085
- #: inc/helpers/helper-misc.php:423
2086
  msgid "Saint Lucia"
2087
  msgstr ""
2088
 
2089
- #: inc/helpers/helper-misc.php:424
2090
  msgid "Saint Vincent and the Grenadines"
2091
  msgstr ""
2092
 
2093
- #: inc/helpers/helper-misc.php:425
2094
  msgid "Samoa"
2095
  msgstr ""
2096
 
2097
- #: inc/helpers/helper-misc.php:426
2098
  msgid "San Marino"
2099
  msgstr ""
2100
 
2101
- #: inc/helpers/helper-misc.php:427
2102
  msgid "Sao Tome and Principe"
2103
  msgstr ""
2104
 
2105
- #: inc/helpers/helper-misc.php:428
2106
  msgid "Saudi Arabia"
2107
  msgstr ""
2108
 
2109
- #: inc/helpers/helper-misc.php:429
2110
  msgid "Senegal"
2111
  msgstr ""
2112
 
2113
- #: inc/helpers/helper-misc.php:430
2114
  msgid "Seychelles"
2115
  msgstr ""
2116
 
2117
- #: inc/helpers/helper-misc.php:431
2118
  msgid "Sierra Leone"
2119
  msgstr ""
2120
 
2121
- #: inc/helpers/helper-misc.php:432
2122
  msgid "Singapore"
2123
  msgstr ""
2124
 
2125
- #: inc/helpers/helper-misc.php:433
2126
  msgid "Slovakia (Slovak Republic)"
2127
  msgstr ""
2128
 
2129
- #: inc/helpers/helper-misc.php:434
2130
  msgid "Slovenia"
2131
  msgstr ""
2132
 
2133
- #: inc/helpers/helper-misc.php:435
2134
  msgid "Solomon Islands"
2135
  msgstr ""
2136
 
2137
- #: inc/helpers/helper-misc.php:436
2138
  msgid "Somalia"
2139
  msgstr ""
2140
 
2141
- #: inc/helpers/helper-misc.php:437
2142
  msgid "South Africa"
2143
  msgstr ""
2144
 
2145
- #: inc/helpers/helper-misc.php:438
2146
  msgid "South Georgia and the South Sandwich Islands"
2147
  msgstr ""
2148
 
2149
- #: inc/helpers/helper-misc.php:439
2150
  msgid "Spain"
2151
  msgstr ""
2152
 
2153
- #: inc/helpers/helper-misc.php:440
2154
  msgid "Sri Lanka"
2155
  msgstr ""
2156
 
2157
- #: inc/helpers/helper-misc.php:441
2158
  msgid "St. Helena"
2159
  msgstr ""
2160
 
2161
- #: inc/helpers/helper-misc.php:442
2162
  msgid "St. Pierre and Miquelon"
2163
  msgstr ""
2164
 
2165
- #: inc/helpers/helper-misc.php:443
2166
  msgid "Sudan"
2167
  msgstr ""
2168
 
2169
- #: inc/helpers/helper-misc.php:444
2170
  msgid "Suriname"
2171
  msgstr ""
2172
 
2173
- #: inc/helpers/helper-misc.php:445
2174
  msgid "Svalbard and Jan Mayen Islands"
2175
  msgstr ""
2176
 
2177
- #: inc/helpers/helper-misc.php:446
2178
  msgid "Swaziland"
2179
  msgstr ""
2180
 
2181
- #: inc/helpers/helper-misc.php:447
2182
  msgid "Sweden"
2183
  msgstr ""
2184
 
2185
- #: inc/helpers/helper-misc.php:448
2186
  msgid "Switzerland"
2187
  msgstr ""
2188
 
2189
- #: inc/helpers/helper-misc.php:449
2190
  msgid "Syrian Arab Republic"
2191
  msgstr ""
2192
 
2193
- #: inc/helpers/helper-misc.php:450
2194
  msgid "Taiwan, Province of China"
2195
  msgstr ""
2196
 
2197
- #: inc/helpers/helper-misc.php:451
2198
  msgid "Tajikistan"
2199
  msgstr ""
2200
 
2201
- #: inc/helpers/helper-misc.php:452
2202
  msgid "Tanzania, United Republic of"
2203
  msgstr ""
2204
 
2205
- #: inc/helpers/helper-misc.php:453
2206
  msgid "Thailand"
2207
  msgstr ""
2208
 
2209
- #: inc/helpers/helper-misc.php:454
2210
  msgid "Togo"
2211
  msgstr ""
2212
 
2213
- #: inc/helpers/helper-misc.php:455
2214
  msgid "Tokelau"
2215
  msgstr ""
2216
 
2217
- #: inc/helpers/helper-misc.php:456
2218
  msgid "Tonga"
2219
  msgstr ""
2220
 
2221
- #: inc/helpers/helper-misc.php:457
2222
  msgid "Trinidad and Tobago"
2223
  msgstr ""
2224
 
2225
- #: inc/helpers/helper-misc.php:458
2226
  msgid "Tunisia"
2227
  msgstr ""
2228
 
2229
- #: inc/helpers/helper-misc.php:459
2230
  msgid "Turkey"
2231
  msgstr ""
2232
 
2233
- #: inc/helpers/helper-misc.php:460
2234
  msgid "Turkmenistan"
2235
  msgstr ""
2236
 
2237
- #: inc/helpers/helper-misc.php:461
2238
  msgid "Turks and Caicos Islands"
2239
  msgstr ""
2240
 
2241
- #: inc/helpers/helper-misc.php:462
2242
  msgid "Tuvalu"
2243
  msgstr ""
2244
 
2245
- #: inc/helpers/helper-misc.php:463
2246
  msgid "Uganda"
2247
  msgstr ""
2248
 
2249
- #: inc/helpers/helper-misc.php:464
2250
  msgid "Ukraine"
2251
  msgstr ""
2252
 
2253
- #: inc/helpers/helper-misc.php:465
2254
  msgid "United Arab Emirates"
2255
  msgstr ""
2256
 
2257
- #: inc/helpers/helper-misc.php:466
2258
  msgid "United Kingdom"
2259
  msgstr ""
2260
 
2261
- #: inc/helpers/helper-misc.php:467
2262
  msgid "United States"
2263
  msgstr ""
2264
 
2265
- #: inc/helpers/helper-misc.php:468
2266
  msgid "United States Minor Outlying Islands"
2267
  msgstr ""
2268
 
2269
- #: inc/helpers/helper-misc.php:469
2270
  msgid "Uruguay"
2271
  msgstr ""
2272
 
2273
- #: inc/helpers/helper-misc.php:470
2274
  msgid "Uzbekistan"
2275
  msgstr ""
2276
 
2277
- #: inc/helpers/helper-misc.php:471
2278
  msgid "Vanuatu"
2279
  msgstr ""
2280
 
2281
- #: inc/helpers/helper-misc.php:472
2282
  msgid "Venezuela"
2283
  msgstr ""
2284
 
2285
- #: inc/helpers/helper-misc.php:473
2286
  msgid "Vietnam"
2287
  msgstr ""
2288
 
2289
- #: inc/helpers/helper-misc.php:474
2290
  msgid "Virgin Islands (British)"
2291
  msgstr ""
2292
 
2293
- #: inc/helpers/helper-misc.php:475
2294
  msgid "Virgin Islands (U.S.)"
2295
  msgstr ""
2296
 
2297
- #: inc/helpers/helper-misc.php:476
2298
  msgid "Wallis and Futuna Islands"
2299
  msgstr ""
2300
 
2301
- #: inc/helpers/helper-misc.php:477
2302
  msgid "Western Sahara"
2303
  msgstr ""
2304
 
2305
- #: inc/helpers/helper-misc.php:478
2306
  msgid "Yemen"
2307
  msgstr ""
2308
 
2309
- #: inc/helpers/helper-misc.php:479
2310
  msgid "Yugoslavia"
2311
  msgstr ""
2312
 
2313
- #: inc/helpers/helper-misc.php:480
2314
  msgid "Zambia"
2315
  msgstr ""
2316
 
2317
- #: inc/helpers/helper-misc.php:481
2318
  msgid "Zimbabwe"
2319
  msgstr ""
2320
 
@@ -2399,24 +2396,13 @@ msgstr ""
2399
  msgid "Add Part"
2400
  msgstr ""
2401
 
2402
- #: inc/templates/customize-form-item.php:21
2403
- #: inc/templates/customize-form-steps.php:8
2404
- #: inc/templates/customize-form-steps.php:15
2405
- msgid "Setup"
2406
- msgstr ""
2407
-
2408
- #: inc/templates/customize-form-item.php:24
2409
- #: inc/templates/customize-form-steps.php:18
2410
- msgid "Style"
2411
- msgstr ""
2412
-
2413
  #: inc/templates/customize-form-item.php:33
2414
  #: inc/templates/customize-form-part-footer.php:3
2415
- #: inc/templates/parts/customize-checkbox.php:83
2416
- #: inc/templates/parts/customize-radio.php:87
2417
- #: inc/templates/parts/customize-select.php:82
2418
- #: inc/templates/parts/customize-table.php:99
2419
- #: inc/templates/parts/customize-table.php:110
2420
  msgid "Delete"
2421
  msgstr ""
2422
 
@@ -2429,6 +2415,10 @@ msgid "Done"
2429
  msgstr ""
2430
 
2431
  #: inc/templates/customize-form-part-footer.php:6
 
 
 
 
2432
  msgid "Advanced"
2433
  msgstr ""
2434
 
@@ -2502,7 +2492,7 @@ msgid "Start counter from"
2502
  msgstr ""
2503
 
2504
  #: inc/templates/customize-form-setup.php:96
2505
- #: inc/templates/parts/customize-number.php:69
2506
  msgid "Prefix"
2507
  msgstr ""
2508
 
@@ -2585,17 +2575,12 @@ msgstr ""
2585
  msgid "Your next submission will be tagged with this identifier."
2586
  msgstr ""
2587
 
2588
- #: inc/templates/customize-form-steps.php:5
2589
- msgid "Build"
2590
- msgstr ""
2591
-
2592
  #: inc/templates/customize-form-steps.php:23
2593
- #: inc/templates/customize-header-actions.php:3
2594
- msgid "Save Form"
2595
  msgstr ""
2596
 
2597
  #: inc/templates/customize-form-steps.php:30
2598
- #: inc/templates/parts/customize-scale.php:77
2599
  msgid "Step"
2600
  msgstr ""
2601
 
@@ -2611,6 +2596,14 @@ msgstr ""
2611
  msgid "You are customizing"
2612
  msgstr ""
2613
 
 
 
 
 
 
 
 
 
2614
  #: inc/templates/customize-header-actions.php:5
2615
  msgid "The changes you made will be lost if you navigate away from this page."
2616
  msgstr ""
@@ -2619,6 +2612,10 @@ msgstr ""
2619
  msgid "Close"
2620
  msgstr ""
2621
 
 
 
 
 
2622
  #: inc/templates/parts/customize-address.php:8
2623
  #: inc/templates/parts/customize-checkbox.php:8
2624
  #: inc/templates/parts/customize-date.php:8
@@ -2689,398 +2686,433 @@ msgstr ""
2689
  #: inc/templates/parts/customize-multi-line-text.php:14
2690
  #: inc/templates/parts/customize-number.php:14
2691
  #: inc/templates/parts/customize-phone.php:14
 
2692
  #: inc/templates/parts/customize-single-line-text.php:14
 
2693
  #: inc/templates/parts/customize-website-url.php:14
2694
  msgid "Display as placeholder"
2695
  msgstr ""
2696
 
2697
- #: inc/templates/parts/customize-address.php:19
2698
- #: inc/templates/parts/customize-checkbox.php:17
2699
- #: inc/templates/parts/customize-checkbox.php:63
2700
- #: inc/templates/parts/customize-date.php:17
2701
- #: inc/templates/parts/customize-date.php:109
2702
- #: inc/templates/parts/customize-email.php:19
2703
- #: inc/templates/parts/customize-email.php:55
2704
- #: inc/templates/parts/customize-multi-line-text.php:19
2705
- #: inc/templates/parts/customize-multi-line-text.php:55
2706
- #: inc/templates/parts/customize-narrative.php:17
2707
- #: inc/templates/parts/customize-narrative.php:41
2708
- #: inc/templates/parts/customize-number.php:19
2709
- #: inc/templates/parts/customize-number.php:84
2710
- #: inc/templates/parts/customize-phone.php:19
2711
- #: inc/templates/parts/customize-phone.php:78
2712
- #: inc/templates/parts/customize-placeholder.php:17
2713
- #: inc/templates/parts/customize-placeholder.php:36
2714
- #: inc/templates/parts/customize-radio.php:17
2715
- #: inc/templates/parts/customize-radio.php:63
2716
- #: inc/templates/parts/customize-rating.php:17
2717
- #: inc/templates/parts/customize-rating.php:83
2718
- #: inc/templates/parts/customize-scale.php:17
2719
- #: inc/templates/parts/customize-scale.php:95
2720
- #: inc/templates/parts/customize-select.php:17
2721
- #: inc/templates/parts/customize-select.php:62
2722
- #: inc/templates/parts/customize-single-line-text.php:19
2723
- #: inc/templates/parts/customize-single-line-text.php:60
2724
- #: inc/templates/parts/customize-table.php:17
2725
- #: inc/templates/parts/customize-table.php:79
2726
- #: inc/templates/parts/customize-title.php:17
2727
- #: inc/templates/parts/customize-title.php:48
2728
- #: inc/templates/parts/customize-website-url.php:19
2729
- #: inc/templates/parts/customize-website-url.php:55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2730
  msgid "Apply to all parts"
2731
  msgstr ""
2732
 
2733
- #: inc/templates/parts/customize-address.php:23
2734
- #: inc/templates/parts/customize-checkbox.php:21
2735
- #: inc/templates/parts/customize-date.php:21
2736
- #: inc/templates/parts/customize-email.php:23
2737
- #: inc/templates/parts/customize-multi-line-text.php:23
2738
- #: inc/templates/parts/customize-number.php:23
2739
- #: inc/templates/parts/customize-phone.php:23
2740
- #: inc/templates/parts/customize-radio.php:21
2741
- #: inc/templates/parts/customize-radio.php:80
2742
- #: inc/templates/parts/customize-rating.php:21
2743
- #: inc/templates/parts/customize-scale.php:21
2744
- #: inc/templates/parts/customize-select.php:21
2745
- #: inc/templates/parts/customize-single-line-text.php:23
2746
- #: inc/templates/parts/customize-table.php:21
2747
- #: inc/templates/parts/customize-title.php:21
2748
- #: inc/templates/parts/customize-website-url.php:23
 
2749
  msgid "Description"
2750
  msgstr ""
2751
 
2752
- #: inc/templates/parts/customize-address.php:27
2753
- #: inc/templates/parts/customize-checkbox.php:25
2754
- #: inc/templates/parts/customize-date.php:25
2755
- #: inc/templates/parts/customize-email.php:27
2756
- #: inc/templates/parts/customize-multi-line-text.php:27
2757
- #: inc/templates/parts/customize-number.php:27
2758
- #: inc/templates/parts/customize-phone.php:27
2759
- #: inc/templates/parts/customize-radio.php:25
2760
- #: inc/templates/parts/customize-rating.php:25
2761
- #: inc/templates/parts/customize-scale.php:25
2762
- #: inc/templates/parts/customize-select.php:25
2763
- #: inc/templates/parts/customize-single-line-text.php:27
2764
- #: inc/templates/parts/customize-table.php:25
2765
- #: inc/templates/parts/customize-title.php:25
2766
- #: inc/templates/parts/customize-website-url.php:27
2767
- msgid "Description appearance"
2768
- msgstr ""
2769
-
2770
- #: inc/templates/parts/customize-address.php:29
2771
- #: inc/templates/parts/customize-checkbox.php:27
2772
- #: inc/templates/parts/customize-date.php:27
2773
- #: inc/templates/parts/customize-email.php:29
2774
- #: inc/templates/parts/customize-multi-line-text.php:29
2775
- #: inc/templates/parts/customize-number.php:29
2776
- #: inc/templates/parts/customize-phone.php:29
2777
- #: inc/templates/parts/customize-radio.php:27
2778
- #: inc/templates/parts/customize-rating.php:27
2779
- #: inc/templates/parts/customize-scale.php:27
2780
  #: inc/templates/parts/customize-select.php:27
2781
- #: inc/templates/parts/customize-single-line-text.php:29
2782
- #: inc/templates/parts/customize-table.php:27
2783
  #: inc/templates/parts/customize-title.php:27
2784
- #: inc/templates/parts/customize-website-url.php:29
2785
- msgid "Standard"
2786
  msgstr ""
2787
 
2788
  #: inc/templates/parts/customize-address.php:30
 
 
2789
  #: inc/templates/parts/customize-email.php:30
2790
  #: inc/templates/parts/customize-multi-line-text.php:30
2791
  #: inc/templates/parts/customize-number.php:30
2792
  #: inc/templates/parts/customize-phone.php:30
 
 
 
 
2793
  #: inc/templates/parts/customize-single-line-text.php:30
 
 
2794
  #: inc/templates/parts/customize-website-url.php:30
2795
- msgid "Reveal on focus"
2796
  msgstr ""
2797
 
2798
  #: inc/templates/parts/customize-address.php:31
2799
- #: inc/templates/parts/customize-checkbox.php:28
2800
- #: inc/templates/parts/customize-date.php:28
2801
  #: inc/templates/parts/customize-email.php:31
2802
  #: inc/templates/parts/customize-multi-line-text.php:31
2803
  #: inc/templates/parts/customize-number.php:31
2804
  #: inc/templates/parts/customize-phone.php:31
2805
- #: inc/templates/parts/customize-radio.php:28
2806
- #: inc/templates/parts/customize-rating.php:28
2807
- #: inc/templates/parts/customize-scale.php:28
2808
- #: inc/templates/parts/customize-select.php:28
2809
- #: inc/templates/parts/customize-table.php:28
2810
- #: inc/templates/parts/customize-title.php:28
2811
  #: inc/templates/parts/customize-website-url.php:31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2812
  msgid "Tooltip"
2813
  msgstr ""
2814
 
2815
- #: inc/templates/parts/customize-address.php:39
2816
  msgid "Mode"
2817
  msgstr ""
2818
 
2819
- #: inc/templates/parts/customize-address.php:41
2820
- #: inc/templates/parts/customize-address.php:79
2821
- #: inc/templates/parts/customize-checkbox.php:55
2822
- #: inc/templates/parts/customize-date.php:101
2823
- #: inc/templates/parts/customize-email.php:47
2824
  #: inc/templates/parts/customize-legal.php:6
2825
- #: inc/templates/parts/customize-multi-line-text.php:47
2826
- #: inc/templates/parts/customize-narrative.php:33
2827
- #: inc/templates/parts/customize-number.php:76
2828
- #: inc/templates/parts/customize-phone.php:70
2829
- #: inc/templates/parts/customize-placeholder.php:28
2830
- #: inc/templates/parts/customize-radio.php:55
2831
- #: inc/templates/parts/customize-rating.php:75
2832
- #: inc/templates/parts/customize-scale.php:87
2833
- #: inc/templates/parts/customize-select.php:54
2834
- #: inc/templates/parts/customize-single-line-text.php:52
2835
- #: inc/templates/parts/customize-table.php:71
2836
- #: inc/templates/parts/customize-title.php:40
2837
- #: inc/templates/parts/customize-website-url.php:47
2838
  msgid "Full"
2839
  msgstr ""
2840
 
2841
- #: inc/templates/parts/customize-address.php:42
2842
  msgid "Full with autocomplete"
2843
  msgstr ""
2844
 
2845
- #: inc/templates/parts/customize-address.php:43
2846
  msgid "Country and city"
2847
  msgstr ""
2848
 
2849
- #: inc/templates/parts/customize-address.php:44
2850
  msgid "Country only"
2851
  msgstr ""
2852
 
2853
- #: inc/templates/parts/customize-address.php:49
2854
  msgid "Allow geolocation"
2855
  msgstr ""
2856
 
2857
- #: inc/templates/parts/customize-address.php:54
2858
  msgid "Google API Key"
2859
  msgstr ""
2860
 
2861
- #: inc/templates/parts/customize-address.php:60
2862
  msgid "Address autocompletion requires a"
2863
  msgstr ""
2864
 
2865
- #: inc/templates/parts/customize-address.php:61
2866
  msgid "Google Places API key"
2867
  msgstr ""
2868
 
2869
- #: inc/templates/parts/customize-address.php:65
2870
  msgid "Geolocation requires a"
2871
  msgstr ""
2872
 
2873
- #: inc/templates/parts/customize-address.php:66
2874
  msgid "Google Geocoding API key"
2875
  msgstr ""
2876
 
2877
- #: inc/templates/parts/customize-address.php:72
2878
- #: inc/templates/parts/customize-checkbox.php:33
2879
- #: inc/templates/parts/customize-date.php:48
2880
- #: inc/templates/parts/customize-email.php:40
2881
- #: inc/templates/parts/customize-multi-line-text.php:40
2882
- #: inc/templates/parts/customize-number.php:50
2883
- #: inc/templates/parts/customize-phone.php:40
2884
- #: inc/templates/parts/customize-radio.php:33
2885
- #: inc/templates/parts/customize-rating.php:33
2886
- #: inc/templates/parts/customize-scale.php:43
2887
- #: inc/templates/parts/customize-select.php:33
2888
- #: inc/templates/parts/customize-single-line-text.php:40
2889
- #: inc/templates/parts/customize-title.php:33
2890
- #: inc/templates/parts/customize-website-url.php:40
2891
  msgid "This is required"
2892
  msgstr ""
2893
 
2894
- #: inc/templates/parts/customize-address.php:80
2895
- #: inc/templates/parts/customize-checkbox.php:56
2896
- #: inc/templates/parts/customize-date.php:102
2897
- #: inc/templates/parts/customize-email.php:48
2898
- #: inc/templates/parts/customize-legal.php:7
2899
- #: inc/templates/parts/customize-multi-line-text.php:48
2900
- #: inc/templates/parts/customize-narrative.php:34
2901
- #: inc/templates/parts/customize-number.php:77
2902
- #: inc/templates/parts/customize-phone.php:71
2903
- #: inc/templates/parts/customize-placeholder.php:29
2904
- #: inc/templates/parts/customize-radio.php:56
2905
- #: inc/templates/parts/customize-rating.php:76
2906
- #: inc/templates/parts/customize-scale.php:88
2907
- #: inc/templates/parts/customize-select.php:55
2908
- #: inc/templates/parts/customize-single-line-text.php:53
2909
- #: inc/templates/parts/customize-table.php:72
2910
- #: inc/templates/parts/customize-title.php:41
2911
- #: inc/templates/parts/customize-website-url.php:48
2912
- msgid "Half"
2913
- msgstr ""
2914
-
2915
  #: inc/templates/parts/customize-address.php:81
2916
  #: inc/templates/parts/customize-checkbox.php:57
2917
- #: inc/templates/parts/customize-date.php:103
2918
  #: inc/templates/parts/customize-email.php:49
2919
- #: inc/templates/parts/customize-legal.php:8
2920
  #: inc/templates/parts/customize-multi-line-text.php:49
2921
  #: inc/templates/parts/customize-narrative.php:35
2922
- #: inc/templates/parts/customize-number.php:78
2923
  #: inc/templates/parts/customize-phone.php:72
2924
  #: inc/templates/parts/customize-placeholder.php:30
2925
  #: inc/templates/parts/customize-radio.php:57
2926
  #: inc/templates/parts/customize-rating.php:77
2927
  #: inc/templates/parts/customize-scale.php:89
2928
- #: inc/templates/parts/customize-select.php:56
2929
  #: inc/templates/parts/customize-single-line-text.php:54
2930
  #: inc/templates/parts/customize-table.php:73
2931
- #: inc/templates/parts/customize-title.php:42
2932
  #: inc/templates/parts/customize-website-url.php:49
2933
- msgid "Third"
2934
  msgstr ""
2935
 
2936
  #: inc/templates/parts/customize-address.php:82
2937
  #: inc/templates/parts/customize-checkbox.php:58
2938
- #: inc/templates/parts/customize-date.php:104
2939
  #: inc/templates/parts/customize-email.php:50
2940
- #: inc/templates/parts/customize-legal.php:9
2941
  #: inc/templates/parts/customize-multi-line-text.php:50
2942
  #: inc/templates/parts/customize-narrative.php:36
2943
- #: inc/templates/parts/customize-number.php:79
2944
  #: inc/templates/parts/customize-phone.php:73
2945
  #: inc/templates/parts/customize-placeholder.php:31
2946
  #: inc/templates/parts/customize-radio.php:58
2947
  #: inc/templates/parts/customize-rating.php:78
2948
  #: inc/templates/parts/customize-scale.php:90
2949
- #: inc/templates/parts/customize-select.php:57
2950
  #: inc/templates/parts/customize-single-line-text.php:55
2951
  #: inc/templates/parts/customize-table.php:74
2952
- #: inc/templates/parts/customize-title.php:43
2953
  #: inc/templates/parts/customize-website-url.php:50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2954
  msgid "Auto"
2955
  msgstr ""
2956
 
2957
- #: inc/templates/parts/customize-address.php:86
2958
- #: inc/templates/parts/customize-checkbox.php:67
2959
- #: inc/templates/parts/customize-date.php:113
2960
- #: inc/templates/parts/customize-email.php:59
2961
  #: inc/templates/parts/customize-legal.php:18
2962
- #: inc/templates/parts/customize-multi-line-text.php:59
2963
- #: inc/templates/parts/customize-narrative.php:45
2964
- #: inc/templates/parts/customize-number.php:88
2965
- #: inc/templates/parts/customize-phone.php:82
2966
- #: inc/templates/parts/customize-placeholder.php:40
2967
- #: inc/templates/parts/customize-radio.php:67
2968
- #: inc/templates/parts/customize-rating.php:87
2969
- #: inc/templates/parts/customize-scale.php:99
2970
- #: inc/templates/parts/customize-select.php:66
2971
- #: inc/templates/parts/customize-single-line-text.php:64
2972
- #: inc/templates/parts/customize-table.php:83
2973
- #: inc/templates/parts/customize-title.php:52
2974
- #: inc/templates/parts/customize-website-url.php:59
2975
  msgid "Custom CSS class"
2976
  msgstr ""
2977
 
2978
- #: inc/templates/parts/customize-checkbox.php:39
2979
- #: inc/templates/parts/customize-radio.php:39
2980
- #: inc/templates/parts/customize-select.php:39
2981
- msgid "No options added yet. Add one by clicking the <i>Add option</i> link below."
2982
  msgstr ""
2983
 
2984
- #: inc/templates/parts/customize-checkbox.php:42
2985
- #: inc/templates/parts/customize-radio.php:42
2986
- #: inc/templates/parts/customize-select.php:43
2987
  msgid "Add option"
2988
  msgstr ""
2989
 
2990
- #: inc/templates/parts/customize-checkbox.php:46
2991
- #: inc/templates/parts/customize-radio.php:46
2992
  msgid "Display options"
2993
  msgstr ""
2994
 
2995
- #: inc/templates/parts/customize-checkbox.php:48
2996
- #: inc/templates/parts/customize-radio.php:48
2997
  msgid "Horizontal"
2998
  msgstr ""
2999
 
3000
- #: inc/templates/parts/customize-checkbox.php:49
3001
- #: inc/templates/parts/customize-radio.php:49
3002
  msgid "Vertical"
3003
  msgstr ""
3004
 
3005
- #: inc/templates/parts/customize-checkbox.php:76
3006
- #: inc/templates/parts/customize-radio.php:76
3007
- #: inc/templates/parts/customize-select.php:75
3008
- #: inc/templates/parts/customize-table.php:92
3009
- #: inc/templates/parts/customize-table.php:106
3010
  msgid "Label"
3011
  msgstr ""
3012
 
3013
- #: inc/templates/parts/customize-checkbox.php:80
3014
- #: inc/templates/parts/customize-table.php:96
3015
  msgid "Checked by default"
3016
  msgstr ""
3017
 
3018
- #: inc/templates/parts/customize-date.php:35
3019
  msgid "Date &amp; Time"
3020
  msgstr ""
3021
 
3022
- #: inc/templates/parts/customize-date.php:36
3023
  msgid "Time"
3024
  msgstr ""
3025
 
 
 
 
 
 
 
 
 
3026
  #: inc/templates/parts/customize-date.php:40
3027
- #: inc/templates/parts/customize-scale.php:63
 
 
 
 
3028
  msgid "Default value"
3029
  msgstr ""
3030
 
3031
- #: inc/templates/parts/customize-date.php:42
3032
  msgid "Blank"
3033
  msgstr ""
3034
 
3035
- #: inc/templates/parts/customize-date.php:43
3036
  msgid "Current date and time"
3037
  msgstr ""
3038
 
3039
- #: inc/templates/parts/customize-date.php:55
3040
  msgid "All years"
3041
  msgstr ""
3042
 
3043
- #: inc/templates/parts/customize-date.php:56
3044
  msgid "Past years only"
3045
  msgstr ""
3046
 
3047
- #: inc/templates/parts/customize-date.php:57
3048
  msgid "Future years only"
3049
  msgstr ""
3050
 
3051
- #: inc/templates/parts/customize-date.php:62
3052
  msgid "Start from"
3053
  msgstr ""
3054
 
3055
- #: inc/templates/parts/customize-date.php:66
3056
  msgid "End at"
3057
  msgstr ""
3058
 
3059
- #: inc/templates/parts/customize-date.php:71
3060
  msgid "Years order"
3061
  msgstr ""
3062
 
3063
- #: inc/templates/parts/customize-date.php:79
3064
  msgid "Min hour"
3065
  msgstr ""
3066
 
3067
- #: inc/templates/parts/customize-date.php:83
3068
  msgid "Max hour"
3069
  msgstr ""
3070
 
3071
- #: inc/templates/parts/customize-date.php:88
3072
  msgid "Minute step"
3073
  msgstr ""
3074
 
3075
- #: inc/templates/parts/customize-date.php:92
3076
  msgid "Time format"
3077
  msgstr ""
3078
 
3079
- #: inc/templates/parts/customize-date.php:94
3080
  msgid "12h"
3081
  msgstr ""
3082
 
3083
- #: inc/templates/parts/customize-date.php:95
3084
  msgid "24h"
3085
  msgstr ""
3086
 
@@ -3092,15 +3124,15 @@ msgstr ""
3092
  msgid "Inside input"
3093
  msgstr ""
3094
 
3095
- #: inc/templates/parts/customize-email.php:64
3096
- #: inc/templates/parts/customize-number.php:93
3097
- #: inc/templates/parts/customize-phone.php:87
3098
  msgid "Require confirmation of the value"
3099
  msgstr ""
3100
 
3101
- #: inc/templates/parts/customize-email.php:68
3102
- #: inc/templates/parts/customize-number.php:97
3103
- #: inc/templates/parts/customize-phone.php:91
3104
  msgid "Confirmation field title"
3105
  msgstr ""
3106
 
@@ -3108,161 +3140,164 @@ msgstr ""
3108
  msgid "Legal text"
3109
  msgstr ""
3110
 
3111
- #: inc/templates/parts/customize-narrative.php:21
 
3112
  msgid "Format"
3113
  msgstr ""
3114
 
3115
- #: inc/templates/parts/customize-narrative.php:26
3116
  msgid "Each input is required"
3117
  msgstr ""
3118
 
3119
- #: inc/templates/parts/customize-number.php:40
3120
- #: inc/templates/parts/customize-scale.php:33
3121
- msgid "Minimum value"
3122
- msgstr ""
3123
-
3124
- #: inc/templates/parts/customize-number.php:44
3125
- #: inc/templates/parts/customize-scale.php:37
3126
- msgid "Maximum value"
3127
  msgstr ""
3128
 
3129
- #: inc/templates/parts/customize-number.php:56
3130
- msgid "Mask this input"
3131
  msgstr ""
3132
 
3133
- #: inc/templates/parts/customize-number.php:61
3134
- msgid "Thousands delimiter"
3135
  msgstr ""
3136
 
3137
- #: inc/templates/parts/customize-number.php:65
3138
- msgid "Decimal mark"
3139
  msgstr ""
3140
 
3141
- #: inc/templates/parts/customize-phone.php:46
3142
  msgid "International format"
3143
  msgstr ""
3144
 
3145
- #: inc/templates/parts/customize-phone.php:51
3146
  msgid "Default phone number region"
3147
  msgstr ""
3148
 
3149
- #: inc/templates/parts/customize-phone.php:63
3150
  msgid "Allow other regions to be selected"
3151
  msgstr ""
3152
 
3153
- #: inc/templates/parts/customize-radio.php:84
3154
- #: inc/templates/parts/customize-select.php:79
3155
  msgid "Make this option default"
3156
  msgstr ""
3157
 
3158
- #: inc/templates/parts/customize-rating.php:37
3159
  msgid "Rating type"
3160
  msgstr ""
3161
 
3162
- #: inc/templates/parts/customize-rating.php:39
3163
  msgid "No / Yes"
3164
  msgstr ""
3165
 
3166
- #: inc/templates/parts/customize-rating.php:40
3167
  msgid "Scale of 1 to 5"
3168
  msgstr ""
3169
 
3170
- #: inc/templates/parts/customize-rating.php:44
3171
  msgid "Rating visuals"
3172
  msgstr ""
3173
 
3174
- #: inc/templates/parts/customize-rating.php:46
3175
  #: inc/templates/parts/frontend-rating-scale.php:12
3176
  msgid "Stars"
3177
  msgstr ""
3178
 
3179
- #: inc/templates/parts/customize-rating.php:47
3180
  msgid "Smileys"
3181
  msgstr ""
3182
 
3183
- #: inc/templates/parts/customize-rating.php:48
3184
  msgid "Thumbs"
3185
  msgstr ""
3186
 
3187
- #: inc/templates/parts/customize-rating.php:54
3188
- #: inc/templates/parts/customize-rating.php:64
3189
  msgid "Rating Labels"
3190
  msgstr ""
3191
 
3192
- #: inc/templates/parts/customize-scale.php:49
 
 
 
 
 
 
 
 
3193
  msgid "Allow range select"
3194
  msgstr ""
3195
 
3196
- #: inc/templates/parts/customize-scale.php:54
3197
  msgid "Default range from"
3198
  msgstr ""
3199
 
3200
- #: inc/templates/parts/customize-scale.php:58
3201
  msgid "Default range to"
3202
  msgstr ""
3203
 
3204
- #: inc/templates/parts/customize-scale.php:68
3205
  msgid "Min value label"
3206
  msgstr ""
3207
 
3208
- #: inc/templates/parts/customize-scale.php:72
3209
  msgid "Max value label"
3210
  msgstr ""
3211
 
3212
- #: inc/templates/parts/customize-select.php:42
3213
  msgid "Show all"
3214
  msgstr ""
3215
 
3216
- #: inc/templates/parts/customize-select.php:42
3217
  msgid "options"
3218
  msgstr ""
3219
 
3220
- #: inc/templates/parts/customize-select.php:48
3221
  msgid "Make searchable"
3222
  msgstr ""
3223
 
3224
- #: inc/templates/parts/customize-single-line-text.php:31
3225
  msgid "Show in a tooltip"
3226
  msgstr ""
3227
 
3228
- #: inc/templates/parts/customize-single-line-text.php:46
3229
  msgid "Use value as email subject"
3230
  msgstr ""
3231
 
3232
- #: inc/templates/parts/customize-table.php:33
3233
- msgid "Each row is required"
3234
- msgstr ""
3235
-
3236
- #: inc/templates/parts/customize-table.php:38
3237
  msgid "Allow multiple selections"
3238
  msgstr ""
3239
 
3240
- #: inc/templates/parts/customize-table.php:42
3241
- #: inc/templates/parts/customize-table.php:49
3242
  msgid "Columns"
3243
  msgstr ""
3244
 
3245
- #: inc/templates/parts/customize-table.php:43
3246
- #: inc/templates/parts/customize-table.php:59
3247
  msgid "Rows"
3248
  msgstr ""
3249
 
3250
- #: inc/templates/parts/customize-table.php:50
3251
- msgid "No columns added yet. Add one by clicking the <i>Add column</i> link below."
3252
  msgstr ""
3253
 
3254
- #: inc/templates/parts/customize-table.php:53
3255
  msgid "Add column"
3256
  msgstr ""
3257
 
3258
- #: inc/templates/parts/customize-table.php:60
3259
- msgid "No rows added yet. Add one by clicking the <i>Add row</i> link below."
3260
  msgstr ""
3261
 
3262
- #: inc/templates/parts/customize-table.php:63
3263
  msgid "Add row"
3264
  msgstr ""
3265
 
 
 
 
 
3266
  #: inc/templates/parts/frontend-address.php:34
3267
  #: inc/templates/parts/frontend-address.php:46
3268
  msgid "Country"
@@ -3284,21 +3319,21 @@ msgstr ""
3284
  msgid "Month"
3285
  msgstr ""
3286
 
3287
- #: inc/templates/parts/frontend-date.php:35
3288
  #: inc/templates/parts/frontend-date.php:41
3289
- #: inc/templates/parts/frontend-date.php:62
 
3290
  msgid "Year"
3291
  msgstr ""
3292
 
3293
- #: inc/templates/parts/frontend-date.php:129
3294
  msgid "Period"
3295
  msgstr ""
3296
 
3297
- #: inc/templates/parts/frontend-date.php:141
3298
  msgid "AM"
3299
  msgstr ""
3300
 
3301
- #: inc/templates/parts/frontend-date.php:142
3302
  msgid "PM"
3303
  msgstr ""
3304
 
@@ -3306,15 +3341,8 @@ msgstr ""
3306
  msgid "%d out of %d"
3307
  msgstr ""
3308
 
3309
- #: inc/templates/parts/frontend-select.php:23
3310
- #: inc/templates/parts/frontend-select.php:29
3311
- #: inc/templates/parts/frontend-title.php:21
3312
- #: inc/templates/parts/frontend-title.php:27
3313
- msgid "- Select -"
3314
- msgstr ""
3315
-
3316
- #: inc/templates/parts/frontend-select.php:53
3317
- #: inc/templates/parts/frontend-title.php:46
3318
  msgid "Select"
3319
  msgstr ""
3320
 
2
  # This file is distributed under the same license as the HappyForms package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: HappyForms 1.6.7\n"
6
  "Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
7
+ "POT-Creation-Date: 2018-10-12 14:27:02+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
102
  msgstr ""
103
 
104
  #: inc/classes/class-form-admin.php:358
105
+ #: inc/templates/customize-form-steps.php:5
106
+ msgid "Build"
107
  msgstr ""
108
 
109
  #: inc/classes/class-form-admin.php:362
110
+ #: inc/templates/customize-form-item.php:21
111
+ #: inc/templates/customize-form-steps.php:8
112
+ #: inc/templates/customize-form-steps.php:15
113
+ msgid "Setup"
114
+ msgstr ""
115
+
116
+ #: inc/classes/class-form-admin.php:366
117
+ #: inc/templates/customize-form-item.php:24
118
+ #: inc/templates/customize-form-steps.php:18
119
+ msgid "Style"
120
+ msgstr ""
121
+
122
+ #: inc/classes/class-form-admin.php:370
123
  #: inc/templates/customize-form-item.php:27
124
  #: inc/templates/customize-form-part-footer.php:4
125
  msgid "Duplicate"
126
  msgstr ""
127
 
128
+ #: inc/classes/class-form-admin.php:374 inc/classes/class-message-admin.php:611
129
  #: inc/classes/class-message-admin.php:864
130
  msgid "Trash"
131
  msgstr ""
132
 
133
+ #: inc/classes/class-form-admin.php:419
134
  msgid "Form duplicated succesfully."
135
  msgstr ""
136
 
137
+ #: inc/classes/class-form-admin.php:443
138
  msgid " Copy"
139
  msgstr ""
140
 
234
  msgid "Right-to-left"
235
  msgstr ""
236
 
237
+ #: inc/classes/class-form-styles.php:76 inc/classes/class-form-styles.php:105
238
+ #: inc/classes/class-form-styles.php:228
239
+ #: inc/templates/parts/customize-date.php:33
240
+ #: inc/templates/parts/customize-date.php:57
 
 
 
 
 
 
 
 
 
 
241
  msgid "Show"
242
  msgstr ""
243
 
244
+ #: inc/classes/class-form-styles.php:77 inc/classes/class-form-styles.php:106
245
+ #: inc/classes/class-form-styles.php:229
246
  msgid "Hide"
247
  msgstr ""
248
 
249
+ #: inc/classes/class-form-styles.php:85 inc/classes/class-form-styles.php:159
250
+ #: inc/classes/class-form-styles.php:188 inc/classes/class-form-styles.php:208
251
+ #: inc/classes/class-form-styles.php:275
252
  #: inc/templates/parts/customize-address.php:11
253
  #: inc/templates/parts/customize-checkbox.php:11
254
  #: inc/templates/parts/customize-date.php:11
269
  msgid "Left"
270
  msgstr ""
271
 
272
+ #: inc/classes/class-form-styles.php:86 inc/classes/class-form-styles.php:160
273
+ #: inc/classes/class-form-styles.php:189 inc/classes/class-form-styles.php:209
274
+ #: inc/classes/class-form-styles.php:276
275
  msgid "Center"
276
  msgstr ""
277
 
278
+ #: inc/classes/class-form-styles.php:87 inc/classes/class-form-styles.php:161
279
+ #: inc/classes/class-form-styles.php:190 inc/classes/class-form-styles.php:210
280
+ #: inc/classes/class-form-styles.php:277
281
  msgid "Right"
282
  msgstr ""
283
 
284
+ #: inc/classes/class-form-styles.php:114
285
  msgid "All sides"
286
  msgstr ""
287
 
288
+ #: inc/classes/class-form-styles.php:115
289
  msgid "Bottom only"
290
  msgstr ""
291
 
292
+ #: inc/classes/class-form-styles.php:123 inc/classes/class-form-styles.php:237
293
  msgid "Square"
294
  msgstr ""
295
 
296
+ #: inc/classes/class-form-styles.php:124 inc/classes/class-form-styles.php:238
297
  msgid "Round"
298
  msgstr ""
299
 
300
+ #: inc/classes/class-form-styles.php:125 inc/classes/class-form-styles.php:239
301
  msgid "Pill"
302
  msgstr ""
303
 
304
+ #: inc/classes/class-form-styles.php:133 inc/classes/class-form-styles.php:143
305
  msgid "Narrow"
306
  msgstr ""
307
 
308
+ #: inc/classes/class-form-styles.php:134 inc/classes/class-form-styles.php:144
309
+ #: inc/classes/class-form-styles.php:247
310
  msgid "Default"
311
  msgstr ""
312
 
313
+ #: inc/classes/class-form-styles.php:135 inc/classes/class-form-styles.php:145
314
  msgid "Wide"
315
  msgstr ""
316
 
317
+ #: inc/classes/class-form-styles.php:179 inc/classes/class-form-styles.php:266
318
+ msgid "Normal"
319
+ msgstr ""
320
+
321
+ #: inc/classes/class-form-styles.php:180 inc/classes/class-form-styles.php:267
322
+ msgid "Bold"
323
+ msgstr ""
324
+
325
+ #: inc/classes/class-form-styles.php:248
326
  msgid "Full width"
327
  msgstr ""
328
 
329
+ #: inc/classes/class-form-styles.php:483
330
  msgid "General"
331
  msgstr ""
332
 
333
+ #: inc/classes/class-form-styles.php:487
334
  msgid "Form width"
335
  msgstr ""
336
 
337
+ #: inc/classes/class-form-styles.php:492
338
  msgid "Direction"
339
  msgstr ""
340
 
341
+ #: inc/classes/class-form-styles.php:497
 
 
 
 
342
  msgid "Disable submit button until form is valid"
343
  msgstr ""
344
 
345
+ #: inc/classes/class-form-styles.php:502 inc/classes/class-form-styles.php:569
346
+ #: inc/classes/class-form-styles.php:637 inc/classes/class-form-styles.php:800
 
 
 
 
347
  msgid "Colors"
348
  msgstr ""
349
 
350
+ #: inc/classes/class-form-styles.php:506
351
  msgid "Primary"
352
  msgstr ""
353
 
354
+ #: inc/classes/class-form-styles.php:511
355
  msgid "Success"
356
  msgstr ""
357
 
358
+ #: inc/classes/class-form-styles.php:516
359
  msgid "Error"
360
  msgstr ""
361
 
362
+ #: inc/classes/class-form-styles.php:521 inc/classes/class-form-styles.php:525
363
  msgid "Form title"
364
  msgstr ""
365
 
366
+ #: inc/classes/class-form-styles.php:530 inc/classes/class-form-styles.php:789
367
  msgid "Alignment"
368
  msgstr ""
369
 
370
+ #: inc/classes/class-form-styles.php:535
371
  msgid "Font size"
372
  msgstr ""
373
 
374
+ #: inc/classes/class-form-styles.php:540
375
  msgid "Part borders & spacing"
376
  msgstr ""
377
 
378
+ #: inc/classes/class-form-styles.php:544 inc/classes/class-form-styles.php:573
379
+ #: inc/classes/class-form-styles.php:764 inc/classes/class-form-styles.php:814
380
  msgid "Border"
381
  msgstr ""
382
 
383
+ #: inc/classes/class-form-styles.php:549
384
  msgid "Border location"
385
  msgstr ""
386
 
387
+ #: inc/classes/class-form-styles.php:554 inc/classes/class-form-styles.php:769
388
  msgid "Border radius"
389
  msgstr ""
390
 
391
+ #: inc/classes/class-form-styles.php:559
392
  msgid "Outer padding"
393
  msgstr ""
394
 
395
+ #: inc/classes/class-form-styles.php:564
396
  msgid "Inner padding"
397
  msgstr ""
398
 
399
+ #: inc/classes/class-form-styles.php:578
400
  msgid "Border on focus"
401
  msgstr ""
402
 
403
+ #: inc/classes/class-form-styles.php:583 inc/classes/class-form-styles.php:661
404
+ #: inc/classes/class-form-styles.php:670 inc/classes/class-form-styles.php:804
405
  msgid "Background"
406
  msgstr ""
407
 
408
+ #: inc/classes/class-form-styles.php:588
409
  msgid "Background on focus"
410
  msgstr ""
411
 
412
+ #: inc/classes/class-form-styles.php:593
 
 
 
 
413
  msgid "Part labels & text"
414
  msgstr ""
415
 
416
+ #: inc/classes/class-form-styles.php:597
 
 
 
 
417
  msgid "Toggle placeholder on part focus"
418
  msgstr ""
419
 
420
+ #: inc/classes/class-form-styles.php:602
421
  msgid "Title alignment"
422
  msgstr ""
423
 
424
+ #: inc/classes/class-form-styles.php:607
425
  msgid "Title font size"
426
  msgstr ""
427
 
428
+ #: inc/classes/class-form-styles.php:612
429
  msgid "Title font weight"
430
  msgstr ""
431
 
432
+ #: inc/classes/class-form-styles.php:617
433
  msgid "Description alignment"
434
  msgstr ""
435
 
436
+ #: inc/classes/class-form-styles.php:622
437
  msgid "Description font size"
438
  msgstr ""
439
 
440
+ #: inc/classes/class-form-styles.php:627
441
  msgid "Placeholder &amp; Value alignment"
442
  msgstr ""
443
 
444
+ #: inc/classes/class-form-styles.php:632
445
  msgid "Value font size"
446
  msgstr ""
447
 
448
+ #: inc/classes/class-form-styles.php:641
449
  #: inc/classes/parts/class-part-title.php:8
450
+ #: inc/classes/parts/class-part-title.php:29
451
  #: inc/templates/parts/customize-address.php:4
452
  #: inc/templates/parts/customize-checkbox.php:4
453
  #: inc/templates/parts/customize-date.php:4
468
  msgid "Title"
469
  msgstr ""
470
 
471
+ #: inc/classes/class-form-styles.php:646
472
  msgid "Value"
473
  msgstr ""
474
 
475
+ #: inc/classes/class-form-styles.php:651
476
  #: inc/classes/parts/class-part-placeholder.php:8
477
+ #: inc/templates/parts/customize-address.php:36
478
+ #: inc/templates/parts/customize-email.php:36
479
+ #: inc/templates/parts/customize-multi-line-text.php:36
480
+ #: inc/templates/parts/customize-number.php:36
481
+ #: inc/templates/parts/customize-phone.php:36
482
+ #: inc/templates/parts/customize-select.php:34
483
+ #: inc/templates/parts/customize-single-line-text.php:36
484
+ #: inc/templates/parts/customize-title.php:34
485
+ #: inc/templates/parts/customize-website-url.php:36
486
  msgid "Placeholder"
487
  msgstr ""
488
 
489
+ #: inc/classes/class-form-styles.php:656
490
  msgid "Dropdowns"
491
  msgstr ""
492
 
493
+ #: inc/classes/class-form-styles.php:666
494
  msgid "Items"
495
  msgstr ""
496
 
497
+ #: inc/classes/class-form-styles.php:675 inc/classes/class-form-styles.php:819
498
  #: inc/classes/parts/class-part-multi-line-text.php:29
499
  #: inc/classes/parts/class-part-single-line-text.php:29
500
+ #: inc/templates/parts/customize-placeholder.php:22
501
  msgid "Text"
502
  msgstr ""
503
 
504
+ #: inc/classes/class-form-styles.php:680 inc/classes/class-form-styles.php:809
505
  msgid "Background focused"
506
  msgstr ""
507
 
508
+ #: inc/classes/class-form-styles.php:685 inc/classes/class-form-styles.php:824
509
  msgid "Text focused"
510
  msgstr ""
511
 
512
+ #: inc/classes/class-form-styles.php:690
513
  msgid "Checkboxes & Radios"
514
  msgstr ""
515
 
516
+ #: inc/classes/class-form-styles.php:695
517
  msgid "Checkbox & Radio background"
518
  msgstr ""
519
 
520
+ #: inc/classes/class-form-styles.php:700
521
  msgid "Checkbox & Radio background focused"
522
  msgstr ""
523
 
524
+ #: inc/classes/class-form-styles.php:705
525
  msgid "Checkbox & Radio checkmark"
526
  msgstr ""
527
 
528
+ #: inc/classes/class-form-styles.php:710
529
  #: inc/classes/parts/class-part-rating.php:9
530
  #: inc/classes/parts/class-part-rating.php:31
531
  msgid "Rating"
532
  msgstr ""
533
 
534
+ #: inc/classes/class-form-styles.php:715
535
  msgid "Rating star color"
536
  msgstr ""
537
 
538
+ #: inc/classes/class-form-styles.php:720
539
  msgid "Rating star color on hover"
540
  msgstr ""
541
 
542
+ #: inc/classes/class-form-styles.php:725
543
  msgid "Item background"
544
  msgstr ""
545
 
546
+ #: inc/classes/class-form-styles.php:730
547
  msgid "Item background on hover"
548
  msgstr ""
549
 
550
+ #: inc/classes/class-form-styles.php:735
551
  msgid "Tables"
552
  msgstr ""
553
 
554
+ #: inc/classes/class-form-styles.php:740
555
  msgid "Odd row primary"
556
  msgstr ""
557
 
558
+ #: inc/classes/class-form-styles.php:745
559
  msgid "Odd row secondary"
560
  msgstr ""
561
 
562
+ #: inc/classes/class-form-styles.php:750
563
  msgid "Even row primary"
564
  msgstr ""
565
 
566
+ #: inc/classes/class-form-styles.php:755
567
  msgid "Even row secondary"
568
  msgstr ""
569
 
570
+ #: inc/classes/class-form-styles.php:760
571
  msgid "Submit button"
572
  msgstr ""
573
 
574
+ #: inc/classes/class-form-styles.php:774
575
+ #: inc/templates/parts/customize-address.php:78
576
+ #: inc/templates/parts/customize-checkbox.php:54
577
+ #: inc/templates/parts/customize-date.php:103
578
+ #: inc/templates/parts/customize-email.php:46
579
  #: inc/templates/parts/customize-legal.php:4
580
+ #: inc/templates/parts/customize-multi-line-text.php:46
581
+ #: inc/templates/parts/customize-narrative.php:32
582
+ #: inc/templates/parts/customize-number.php:77
583
+ #: inc/templates/parts/customize-phone.php:69
584
+ #: inc/templates/parts/customize-placeholder.php:27
585
+ #: inc/templates/parts/customize-radio.php:54
586
+ #: inc/templates/parts/customize-rating.php:74
587
+ #: inc/templates/parts/customize-scale.php:86
588
+ #: inc/templates/parts/customize-select.php:58
589
+ #: inc/templates/parts/customize-single-line-text.php:51
590
+ #: inc/templates/parts/customize-table.php:70
591
+ #: inc/templates/parts/customize-title.php:44
592
+ #: inc/templates/parts/customize-website-url.php:46
593
  msgid "Width"
594
  msgstr ""
595
 
596
+ #: inc/classes/class-form-styles.php:779
597
  msgid "Font Size"
598
  msgstr ""
599
 
600
+ #: inc/classes/class-form-styles.php:784
601
  msgid "Font Weight"
602
  msgstr ""
603
 
604
+ #: inc/classes/class-form-styles.php:795
605
  msgid "Make button a part of last input"
606
  msgstr ""
607
 
 
 
 
 
608
  #: inc/classes/class-happyforms-plugin.php:145
609
  msgid "HappyForms Index"
610
  msgstr ""
934
  msgstr ""
935
 
936
  #: inc/classes/parts/class-part-address.php:191
937
+ #: inc/classes/parts/class-part-checkbox.php:167
938
+ #: inc/classes/parts/class-part-date.php:206
939
  #: inc/classes/parts/class-part-email.php:141
940
  #: inc/classes/parts/class-part-email.php:145
941
  #: inc/classes/parts/class-part-legal.php:115
943
  #: inc/classes/parts/class-part-narrative.php:125
944
  #: inc/classes/parts/class-part-narrative.php:130
945
  #: inc/classes/parts/class-part-number.php:169
 
946
  #: inc/classes/parts/class-part-phone.php:394
947
+ #: inc/classes/parts/class-part-phone.php:398
948
  #: inc/classes/parts/class-part-radio.php:167
949
  #: inc/classes/parts/class-part-rating.php:152
950
  #: inc/classes/parts/class-part-scale.php:163
951
+ #: inc/classes/parts/class-part-select.php:169
952
  #: inc/classes/parts/class-part-single-line-text.php:129
953
  #: inc/classes/parts/class-part-table.php:213
954
  #: inc/classes/parts/class-part-table.php:220
955
+ #: inc/classes/parts/class-part-title.php:161
956
  #: inc/classes/parts/class-part-website-url.php:124
957
  msgid "This field is required."
958
  msgstr ""
968
  #: inc/classes/parts/class-part-checkbox.php:30
969
  #: inc/classes/parts/class-part-radio.php:31
970
  #: inc/classes/parts/class-part-table.php:32
971
+ #: inc/templates/parts/customize-checkbox.php:34
972
+ #: inc/templates/parts/customize-radio.php:34
973
+ #: inc/templates/parts/customize-select.php:39
974
  msgid "Options"
975
  msgstr ""
976
 
977
+ #: inc/classes/parts/class-part-checkbox.php:175
978
  #: inc/classes/parts/class-part-table.php:233
979
  msgid "Checkbox values are not valid."
980
  msgstr ""
988
  msgstr ""
989
 
990
  #: inc/classes/parts/class-part-date.php:30
991
+ #: inc/templates/parts/customize-date.php:35
992
  msgid "Date"
993
  msgstr ""
994
 
995
+ #: inc/classes/parts/class-part-date.php:229
996
  msgid "Year input does not match minimum and maximum value allowed."
997
  msgstr ""
998
 
999
+ #: inc/classes/parts/class-part-date.php:244
1000
  msgid "Hour input does not match minimum and maximum value allowed."
1001
  msgstr ""
1002
 
1003
+ #: inc/classes/parts/class-part-date.php:299
1004
  msgid "Not a valid date."
1005
  msgstr ""
1006
 
1072
  msgid "Confirm Number"
1073
  msgstr ""
1074
 
1075
+ #: inc/classes/parts/class-part-number.php:188
1076
  msgid "This field does not match minimum and maximum allowed value."
1077
  msgstr ""
1078
 
1079
+ #: inc/classes/parts/class-part-number.php:196
1080
+ #: inc/classes/parts/class-part-phone.php:402
1081
  msgid "Number and confirmation number are not matching."
1082
  msgstr ""
1083
 
1161
  msgstr ""
1162
 
1163
  #: inc/classes/parts/class-part-select.php:8
1164
+ #: inc/classes/parts/class-part-select.php:30
1165
  msgid "Dropdown"
1166
  msgstr ""
1167
 
1169
  msgid "For selecting one option from a long list. Default value adjustable."
1170
  msgstr ""
1171
 
1172
+ #: inc/classes/parts/class-part-select.php:174
1173
+ #: inc/classes/parts/class-part-select.php:180
1174
  msgid "Selected value is not valid."
1175
  msgstr ""
1176
 
1198
  msgid "For displaying personal honorifics."
1199
  msgstr ""
1200
 
1201
+ #: inc/classes/parts/class-part-title.php:101
1202
  msgid "Mr."
1203
  msgstr ""
1204
 
1205
+ #: inc/classes/parts/class-part-title.php:102
1206
  msgid "Mrs."
1207
  msgstr ""
1208
 
1209
+ #: inc/classes/parts/class-part-title.php:103
1210
  msgid "Ms."
1211
  msgstr ""
1212
 
1213
+ #: inc/classes/parts/class-part-title.php:104
1214
  msgid "Miss"
1215
  msgstr ""
1216
 
1217
+ #: inc/classes/parts/class-part-title.php:105
1218
  msgid "Prof."
1219
  msgstr ""
1220
 
1221
+ #: inc/classes/parts/class-part-title.php:106
1222
  msgid "Dr."
1223
  msgstr ""
1224
 
1225
+ #: inc/classes/parts/class-part-title.php:169
1226
  msgid "Values are not valid."
1227
  msgstr ""
1228
 
1287
  msgid "How can I access my premium upgrade credentials?"
1288
  msgstr ""
1289
 
1290
+ #: inc/helpers/helper-form-templates.php:758
1291
+ msgid "(optional)"
1292
+ msgstr ""
1293
+
1294
  #: inc/helpers/helper-form-templates.php:819
1295
  msgid "Get my location"
1296
  msgstr ""
1347
  msgid "December"
1348
  msgstr ""
1349
 
1350
+ #: inc/helpers/helper-misc.php:190
1351
  msgid "How are we doing? Please rate"
1352
  msgstr ""
1353
 
1354
+ #: inc/helpers/helper-misc.php:190
1355
  msgid "on"
1356
  msgstr ""
1357
 
1358
+ #: inc/helpers/helper-misc.php:190
1359
  msgid "to help us spread the word."
1360
  msgstr ""
1361
 
1362
+ #: inc/helpers/helper-misc.php:244
1363
  msgid "Afghanistan"
1364
  msgstr ""
1365
 
1366
+ #: inc/helpers/helper-misc.php:245
1367
  msgid "Albania"
1368
  msgstr ""
1369
 
1370
+ #: inc/helpers/helper-misc.php:246
1371
  msgid "Algeria"
1372
  msgstr ""
1373
 
1374
+ #: inc/helpers/helper-misc.php:247
1375
  msgid "American Samoa"
1376
  msgstr ""
1377
 
1378
+ #: inc/helpers/helper-misc.php:248
1379
  msgid "Andorra"
1380
  msgstr ""
1381
 
1382
+ #: inc/helpers/helper-misc.php:249
1383
  msgid "Angola"
1384
  msgstr ""
1385
 
1386
+ #: inc/helpers/helper-misc.php:250
1387
  msgid "Anguilla"
1388
  msgstr ""
1389
 
1390
+ #: inc/helpers/helper-misc.php:251
1391
  msgid "Antarctica"
1392
  msgstr ""
1393
 
1394
+ #: inc/helpers/helper-misc.php:252
1395
  msgid "Antigua and Barbuda"
1396
  msgstr ""
1397
 
1398
+ #: inc/helpers/helper-misc.php:253
1399
  msgid "Argentina"
1400
  msgstr ""
1401
 
1402
+ #: inc/helpers/helper-misc.php:254
1403
  msgid "Armenia"
1404
  msgstr ""
1405
 
1406
+ #: inc/helpers/helper-misc.php:255
1407
  msgid "Aruba"
1408
  msgstr ""
1409
 
1410
+ #: inc/helpers/helper-misc.php:256
1411
  msgid "Australia"
1412
  msgstr ""
1413
 
1414
+ #: inc/helpers/helper-misc.php:257
1415
  msgid "Austria"
1416
  msgstr ""
1417
 
1418
+ #: inc/helpers/helper-misc.php:258
1419
  msgid "Azerbaijan"
1420
  msgstr ""
1421
 
1422
+ #: inc/helpers/helper-misc.php:259
1423
  msgid "Bahamas"
1424
  msgstr ""
1425
 
1426
+ #: inc/helpers/helper-misc.php:260
1427
  msgid "Bahrain"
1428
  msgstr ""
1429
 
1430
+ #: inc/helpers/helper-misc.php:261
1431
  msgid "Bangladesh"
1432
  msgstr ""
1433
 
1434
+ #: inc/helpers/helper-misc.php:262
1435
  msgid "Barbados"
1436
  msgstr ""
1437
 
1438
+ #: inc/helpers/helper-misc.php:263
1439
  msgid "Belarus"
1440
  msgstr ""
1441
 
1442
+ #: inc/helpers/helper-misc.php:264
1443
  msgid "Belgium"
1444
  msgstr ""
1445
 
1446
+ #: inc/helpers/helper-misc.php:265
1447
  msgid "Belize"
1448
  msgstr ""
1449
 
1450
+ #: inc/helpers/helper-misc.php:266
1451
  msgid "Benin"
1452
  msgstr ""
1453
 
1454
+ #: inc/helpers/helper-misc.php:267
1455
  msgid "Bermuda"
1456
  msgstr ""
1457
 
1458
+ #: inc/helpers/helper-misc.php:268
1459
  msgid "Bhutan"
1460
  msgstr ""
1461
 
1462
+ #: inc/helpers/helper-misc.php:269
1463
  msgid "Bolivia"
1464
  msgstr ""
1465
 
1466
+ #: inc/helpers/helper-misc.php:270
1467
  msgid "Bosnia and Herzegowina"
1468
  msgstr ""
1469
 
1470
+ #: inc/helpers/helper-misc.php:271
1471
  msgid "Botswana"
1472
  msgstr ""
1473
 
1474
+ #: inc/helpers/helper-misc.php:272
1475
  msgid "Bouvet Island"
1476
  msgstr ""
1477
 
1478
+ #: inc/helpers/helper-misc.php:273
1479
  msgid "Brazil"
1480
  msgstr ""
1481
 
1482
+ #: inc/helpers/helper-misc.php:274
1483
  msgid "British Indian Ocean Territory"
1484
  msgstr ""
1485
 
1486
+ #: inc/helpers/helper-misc.php:275
1487
  msgid "Brunei Darussalam"
1488
  msgstr ""
1489
 
1490
+ #: inc/helpers/helper-misc.php:276
1491
  msgid "Bulgaria"
1492
  msgstr ""
1493
 
1494
+ #: inc/helpers/helper-misc.php:277
1495
  msgid "Burkina Faso"
1496
  msgstr ""
1497
 
1498
+ #: inc/helpers/helper-misc.php:278
1499
  msgid "Burundi"
1500
  msgstr ""
1501
 
1502
+ #: inc/helpers/helper-misc.php:279
1503
  msgid "Cambodia"
1504
  msgstr ""
1505
 
1506
+ #: inc/helpers/helper-misc.php:280
1507
  msgid "Cameroon"
1508
  msgstr ""
1509
 
1510
+ #: inc/helpers/helper-misc.php:281
1511
  msgid "Canada"
1512
  msgstr ""
1513
 
1514
+ #: inc/helpers/helper-misc.php:282
1515
  msgid "Cape Verde"
1516
  msgstr ""
1517
 
1518
+ #: inc/helpers/helper-misc.php:283
1519
  msgid "Cayman Islands"
1520
  msgstr ""
1521
 
1522
+ #: inc/helpers/helper-misc.php:284
1523
  msgid "Central African Republic"
1524
  msgstr ""
1525
 
1526
+ #: inc/helpers/helper-misc.php:285
1527
  msgid "Chad"
1528
  msgstr ""
1529
 
1530
+ #: inc/helpers/helper-misc.php:286
1531
  msgid "Chile"
1532
  msgstr ""
1533
 
1534
+ #: inc/helpers/helper-misc.php:287
1535
  msgid "China"
1536
  msgstr ""
1537
 
1538
+ #: inc/helpers/helper-misc.php:288
1539
  msgid "Christmas Island"
1540
  msgstr ""
1541
 
1542
+ #: inc/helpers/helper-misc.php:289
1543
  msgid "Cocos (Keeling) Islands"
1544
  msgstr ""
1545
 
1546
+ #: inc/helpers/helper-misc.php:290
1547
  msgid "Colombia"
1548
  msgstr ""
1549
 
1550
+ #: inc/helpers/helper-misc.php:291
1551
  msgid "Comoros"
1552
  msgstr ""
1553
 
1554
+ #: inc/helpers/helper-misc.php:292
1555
  msgid "Congo"
1556
  msgstr ""
1557
 
1558
+ #: inc/helpers/helper-misc.php:293
1559
  msgid "Congo, the Democratic Republic of the"
1560
  msgstr ""
1561
 
1562
+ #: inc/helpers/helper-misc.php:294
1563
  msgid "Cook Islands"
1564
  msgstr ""
1565
 
1566
+ #: inc/helpers/helper-misc.php:295
1567
  msgid "Costa Rica"
1568
  msgstr ""
1569
 
1570
+ #: inc/helpers/helper-misc.php:296
1571
  msgid "Ivory Coast"
1572
  msgstr ""
1573
 
1574
+ #: inc/helpers/helper-misc.php:297
1575
  msgid "Croatia (Hrvatska)"
1576
  msgstr ""
1577
 
1578
+ #: inc/helpers/helper-misc.php:298
1579
  msgid "Cuba"
1580
  msgstr ""
1581
 
1582
+ #: inc/helpers/helper-misc.php:299
1583
  msgid "Cyprus"
1584
  msgstr ""
1585
 
1586
+ #: inc/helpers/helper-misc.php:300
1587
  msgid "Czech Republic"
1588
  msgstr ""
1589
 
1590
+ #: inc/helpers/helper-misc.php:301
1591
  msgid "Denmark"
1592
  msgstr ""
1593
 
1594
+ #: inc/helpers/helper-misc.php:302
1595
  msgid "Djibouti"
1596
  msgstr ""
1597
 
1598
+ #: inc/helpers/helper-misc.php:303
1599
  msgid "Dominica"
1600
  msgstr ""
1601
 
1602
+ #: inc/helpers/helper-misc.php:304
1603
  msgid "Dominican Republic"
1604
  msgstr ""
1605
 
1606
+ #: inc/helpers/helper-misc.php:305
1607
  msgid "East Timor"
1608
  msgstr ""
1609
 
1610
+ #: inc/helpers/helper-misc.php:306
1611
  msgid "Ecuador"
1612
  msgstr ""
1613
 
1614
+ #: inc/helpers/helper-misc.php:307
1615
  msgid "Egypt"
1616
  msgstr ""
1617
 
1618
+ #: inc/helpers/helper-misc.php:308
1619
  msgid "El Salvador"
1620
  msgstr ""
1621
 
1622
+ #: inc/helpers/helper-misc.php:309
1623
  msgid "Equatorial Guinea"
1624
  msgstr ""
1625
 
1626
+ #: inc/helpers/helper-misc.php:310
1627
  msgid "Eritrea"
1628
  msgstr ""
1629
 
1630
+ #: inc/helpers/helper-misc.php:311
1631
  msgid "Estonia"
1632
  msgstr ""
1633
 
1634
+ #: inc/helpers/helper-misc.php:312
1635
  msgid "Ethiopia"
1636
  msgstr ""
1637
 
1638
+ #: inc/helpers/helper-misc.php:313
1639
  msgid "Falkland Islands (Malvinas)"
1640
  msgstr ""
1641
 
1642
+ #: inc/helpers/helper-misc.php:314
1643
  msgid "Faroe Islands"
1644
  msgstr ""
1645
 
1646
+ #: inc/helpers/helper-misc.php:315
1647
  msgid "Fiji"
1648
  msgstr ""
1649
 
1650
+ #: inc/helpers/helper-misc.php:316
1651
  msgid "Finland"
1652
  msgstr ""
1653
 
1654
+ #: inc/helpers/helper-misc.php:317
1655
  msgid "France"
1656
  msgstr ""
1657
 
1658
+ #: inc/helpers/helper-misc.php:318
1659
  msgid "France Metropolitan"
1660
  msgstr ""
1661
 
1662
+ #: inc/helpers/helper-misc.php:319
1663
  msgid "French Guiana"
1664
  msgstr ""
1665
 
1666
+ #: inc/helpers/helper-misc.php:320
1667
  msgid "French Polynesia"
1668
  msgstr ""
1669
 
1670
+ #: inc/helpers/helper-misc.php:321
1671
  msgid "French Southern Territories"
1672
  msgstr ""
1673
 
1674
+ #: inc/helpers/helper-misc.php:322
1675
  msgid "Gabon"
1676
  msgstr ""
1677
 
1678
+ #: inc/helpers/helper-misc.php:323
1679
  msgid "Gambia"
1680
  msgstr ""
1681
 
1682
+ #: inc/helpers/helper-misc.php:324
1683
  msgid "Georgia"
1684
  msgstr ""
1685
 
1686
+ #: inc/helpers/helper-misc.php:325
1687
  msgid "Germany"
1688
  msgstr ""
1689
 
1690
+ #: inc/helpers/helper-misc.php:326
1691
  msgid "Ghana"
1692
  msgstr ""
1693
 
1694
+ #: inc/helpers/helper-misc.php:327
1695
  msgid "Gibraltar"
1696
  msgstr ""
1697
 
1698
+ #: inc/helpers/helper-misc.php:328
1699
  msgid "Greece"
1700
  msgstr ""
1701
 
1702
+ #: inc/helpers/helper-misc.php:329
1703
  msgid "Greenland"
1704
  msgstr ""
1705
 
1706
+ #: inc/helpers/helper-misc.php:330
1707
  msgid "Grenada"
1708
  msgstr ""
1709
 
1710
+ #: inc/helpers/helper-misc.php:331
1711
  msgid "Guadeloupe"
1712
  msgstr ""
1713
 
1714
+ #: inc/helpers/helper-misc.php:332
1715
  msgid "Guam"
1716
  msgstr ""
1717
 
1718
+ #: inc/helpers/helper-misc.php:333
1719
  msgid "Guatemala"
1720
  msgstr ""
1721
 
1722
+ #: inc/helpers/helper-misc.php:334
1723
  msgid "Guinea"
1724
  msgstr ""
1725
 
1726
+ #: inc/helpers/helper-misc.php:335
1727
  msgid "Guinea-Bissau"
1728
  msgstr ""
1729
 
1730
+ #: inc/helpers/helper-misc.php:336
1731
  msgid "Guyana"
1732
  msgstr ""
1733
 
1734
+ #: inc/helpers/helper-misc.php:337
1735
  msgid "Haiti"
1736
  msgstr ""
1737
 
1738
+ #: inc/helpers/helper-misc.php:338
1739
  msgid "Heard and Mc Donald Islands"
1740
  msgstr ""
1741
 
1742
+ #: inc/helpers/helper-misc.php:339
1743
  msgid "Holy See (Vatican City State)"
1744
  msgstr ""
1745
 
1746
+ #: inc/helpers/helper-misc.php:340
1747
  msgid "Honduras"
1748
  msgstr ""
1749
 
1750
+ #: inc/helpers/helper-misc.php:341
1751
  msgid "Hong Kong"
1752
  msgstr ""
1753
 
1754
+ #: inc/helpers/helper-misc.php:342
1755
  msgid "Hungary"
1756
  msgstr ""
1757
 
1758
+ #: inc/helpers/helper-misc.php:343
1759
  msgid "Iceland"
1760
  msgstr ""
1761
 
1762
+ #: inc/helpers/helper-misc.php:344
1763
  msgid "India"
1764
  msgstr ""
1765
 
1766
+ #: inc/helpers/helper-misc.php:345
1767
  msgid "Indonesia"
1768
  msgstr ""
1769
 
1770
+ #: inc/helpers/helper-misc.php:346
1771
  msgid "Iran (Islamic Republic of)"
1772
  msgstr ""
1773
 
1774
+ #: inc/helpers/helper-misc.php:347
1775
  msgid "Iraq"
1776
  msgstr ""
1777
 
1778
+ #: inc/helpers/helper-misc.php:348
1779
  msgid "Ireland"
1780
  msgstr ""
1781
 
1782
+ #: inc/helpers/helper-misc.php:349
1783
  msgid "Israel"
1784
  msgstr ""
1785
 
1786
+ #: inc/helpers/helper-misc.php:350
1787
  msgid "Italy"
1788
  msgstr ""
1789
 
1790
+ #: inc/helpers/helper-misc.php:351
1791
  msgid "Jamaica"
1792
  msgstr ""
1793
 
1794
+ #: inc/helpers/helper-misc.php:352
1795
  msgid "Japan"
1796
  msgstr ""
1797
 
1798
+ #: inc/helpers/helper-misc.php:353
1799
  msgid "Jordan"
1800
  msgstr ""
1801
 
1802
+ #: inc/helpers/helper-misc.php:354
1803
  msgid "Kazakhstan"
1804
  msgstr ""
1805
 
1806
+ #: inc/helpers/helper-misc.php:355
1807
  msgid "Kenya"
1808
  msgstr ""
1809
 
1810
+ #: inc/helpers/helper-misc.php:356
1811
  msgid "Kiribati"
1812
  msgstr ""
1813
 
1814
+ #: inc/helpers/helper-misc.php:357
1815
  msgid "Korea, Democratic People's Republic of"
1816
  msgstr ""
1817
 
1818
+ #: inc/helpers/helper-misc.php:358
1819
  msgid "Korea, Republic of"
1820
  msgstr ""
1821
 
1822
+ #: inc/helpers/helper-misc.php:359
1823
  msgid "Kuwait"
1824
  msgstr ""
1825
 
1826
+ #: inc/helpers/helper-misc.php:360
1827
  msgid "Kyrgyzstan"
1828
  msgstr ""
1829
 
1830
+ #: inc/helpers/helper-misc.php:361
1831
  msgid "Lao, People's Democratic Republic"
1832
  msgstr ""
1833
 
1834
+ #: inc/helpers/helper-misc.php:362
1835
  msgid "Latvia"
1836
  msgstr ""
1837
 
1838
+ #: inc/helpers/helper-misc.php:363
1839
  msgid "Lebanon"
1840
  msgstr ""
1841
 
1842
+ #: inc/helpers/helper-misc.php:364
1843
  msgid "Lesotho"
1844
  msgstr ""
1845
 
1846
+ #: inc/helpers/helper-misc.php:365
1847
  msgid "Liberia"
1848
  msgstr ""
1849
 
1850
+ #: inc/helpers/helper-misc.php:366
1851
  msgid "Libyan Arab Jamahiriya"
1852
  msgstr ""
1853
 
1854
+ #: inc/helpers/helper-misc.php:367
1855
  msgid "Liechtenstein"
1856
  msgstr ""
1857
 
1858
+ #: inc/helpers/helper-misc.php:368
1859
  msgid "Lithuania"
1860
  msgstr ""
1861
 
1862
+ #: inc/helpers/helper-misc.php:369
1863
  msgid "Luxembourg"
1864
  msgstr ""
1865
 
1866
+ #: inc/helpers/helper-misc.php:370
1867
  msgid "Macau"
1868
  msgstr ""
1869
 
1870
+ #: inc/helpers/helper-misc.php:371
1871
  msgid "Macedonia, The Former Yugoslav Republic of"
1872
  msgstr ""
1873
 
1874
+ #: inc/helpers/helper-misc.php:372
1875
  msgid "Madagascar"
1876
  msgstr ""
1877
 
1878
+ #: inc/helpers/helper-misc.php:373
1879
  msgid "Malawi"
1880
  msgstr ""
1881
 
1882
+ #: inc/helpers/helper-misc.php:374
1883
  msgid "Malaysia"
1884
  msgstr ""
1885
 
1886
+ #: inc/helpers/helper-misc.php:375
1887
  msgid "Maldives"
1888
  msgstr ""
1889
 
1890
+ #: inc/helpers/helper-misc.php:376
1891
  msgid "Mali"
1892
  msgstr ""
1893
 
1894
+ #: inc/helpers/helper-misc.php:377
1895
  msgid "Malta"
1896
  msgstr ""
1897
 
1898
+ #: inc/helpers/helper-misc.php:378
1899
  msgid "Marshall Islands"
1900
  msgstr ""
1901
 
1902
+ #: inc/helpers/helper-misc.php:379
1903
  msgid "Martinique"
1904
  msgstr ""
1905
 
1906
+ #: inc/helpers/helper-misc.php:380
1907
  msgid "Mauritania"
1908
  msgstr ""
1909
 
1910
+ #: inc/helpers/helper-misc.php:381
1911
  msgid "Mauritius"
1912
  msgstr ""
1913
 
1914
+ #: inc/helpers/helper-misc.php:382
1915
  msgid "Mayotte"
1916
  msgstr ""
1917
 
1918
+ #: inc/helpers/helper-misc.php:383
1919
  msgid "Mexico"
1920
  msgstr ""
1921
 
1922
+ #: inc/helpers/helper-misc.php:384
1923
  msgid "Micronesia, Federated States of"
1924
  msgstr ""
1925
 
1926
+ #: inc/helpers/helper-misc.php:385
1927
  msgid "Moldova, Republic of"
1928
  msgstr ""
1929
 
1930
+ #: inc/helpers/helper-misc.php:386
1931
  msgid "Monaco"
1932
  msgstr ""
1933
 
1934
+ #: inc/helpers/helper-misc.php:387
1935
  msgid "Mongolia"
1936
  msgstr ""
1937
 
1938
+ #: inc/helpers/helper-misc.php:388
1939
  msgid "Montserrat"
1940
  msgstr ""
1941
 
1942
+ #: inc/helpers/helper-misc.php:389
1943
  msgid "Morocco"
1944
  msgstr ""
1945
 
1946
+ #: inc/helpers/helper-misc.php:390
1947
  msgid "Mozambique"
1948
  msgstr ""
1949
 
1950
+ #: inc/helpers/helper-misc.php:391
1951
  msgid "Myanmar"
1952
  msgstr ""
1953
 
1954
+ #: inc/helpers/helper-misc.php:392
1955
  msgid "Namibia"
1956
  msgstr ""
1957
 
1958
+ #: inc/helpers/helper-misc.php:393
1959
  msgid "Nauru"
1960
  msgstr ""
1961
 
1962
+ #: inc/helpers/helper-misc.php:394
1963
  msgid "Nepal"
1964
  msgstr ""
1965
 
1966
+ #: inc/helpers/helper-misc.php:395
1967
  msgid "Netherlands"
1968
  msgstr ""
1969
 
1970
+ #: inc/helpers/helper-misc.php:396
1971
  msgid "Netherlands Antilles"
1972
  msgstr ""
1973
 
1974
+ #: inc/helpers/helper-misc.php:397
1975
  msgid "New Caledonia"
1976
  msgstr ""
1977
 
1978
+ #: inc/helpers/helper-misc.php:398
1979
  msgid "New Zealand"
1980
  msgstr ""
1981
 
1982
+ #: inc/helpers/helper-misc.php:399
1983
  msgid "Nicaragua"
1984
  msgstr ""
1985
 
1986
+ #: inc/helpers/helper-misc.php:400
1987
  msgid "Niger"
1988
  msgstr ""
1989
 
1990
+ #: inc/helpers/helper-misc.php:401
1991
  msgid "Nigeria"
1992
  msgstr ""
1993
 
1994
+ #: inc/helpers/helper-misc.php:402
1995
  msgid "Niue"
1996
  msgstr ""
1997
 
1998
+ #: inc/helpers/helper-misc.php:403
1999
  msgid "Norfolk Island"
2000
  msgstr ""
2001
 
2002
+ #: inc/helpers/helper-misc.php:404
2003
  msgid "Northern Mariana Islands"
2004
  msgstr ""
2005
 
2006
+ #: inc/helpers/helper-misc.php:405
2007
  msgid "Norway"
2008
  msgstr ""
2009
 
2010
+ #: inc/helpers/helper-misc.php:406
2011
  msgid "Oman"
2012
  msgstr ""
2013
 
2014
+ #: inc/helpers/helper-misc.php:407
2015
  msgid "Pakistan"
2016
  msgstr ""
2017
 
2018
+ #: inc/helpers/helper-misc.php:408
2019
  msgid "Palau"
2020
  msgstr ""
2021
 
2022
+ #: inc/helpers/helper-misc.php:409
2023
  msgid "Panama"
2024
  msgstr ""
2025
 
2026
+ #: inc/helpers/helper-misc.php:410
2027
  msgid "Papua New Guinea"
2028
  msgstr ""
2029
 
2030
+ #: inc/helpers/helper-misc.php:411
2031
  msgid "Paraguay"
2032
  msgstr ""
2033
 
2034
+ #: inc/helpers/helper-misc.php:412
2035
  msgid "Peru"
2036
  msgstr ""
2037
 
2038
+ #: inc/helpers/helper-misc.php:413
2039
  msgid "Philippines"
2040
  msgstr ""
2041
 
2042
+ #: inc/helpers/helper-misc.php:414
2043
  msgid "Pitcairn"
2044
  msgstr ""
2045
 
2046
+ #: inc/helpers/helper-misc.php:415
2047
  msgid "Poland"
2048
  msgstr ""
2049
 
2050
+ #: inc/helpers/helper-misc.php:416
2051
  msgid "Portugal"
2052
  msgstr ""
2053
 
2054
+ #: inc/helpers/helper-misc.php:417
2055
  msgid "Puerto Rico"
2056
  msgstr ""
2057
 
2058
+ #: inc/helpers/helper-misc.php:418
2059
  msgid "Qatar"
2060
  msgstr ""
2061
 
2062
+ #: inc/helpers/helper-misc.php:419
2063
  msgid "Reunion"
2064
  msgstr ""
2065
 
2066
+ #: inc/helpers/helper-misc.php:420
2067
  msgid "Romania"
2068
  msgstr ""
2069
 
2070
+ #: inc/helpers/helper-misc.php:421
2071
  msgid "Russian Federation"
2072
  msgstr ""
2073
 
2074
+ #: inc/helpers/helper-misc.php:422
2075
  msgid "Rwanda"
2076
  msgstr ""
2077
 
2078
+ #: inc/helpers/helper-misc.php:423
2079
  msgid "Saint Kitts and Nevis"
2080
  msgstr ""
2081
 
2082
+ #: inc/helpers/helper-misc.php:424
2083
  msgid "Saint Lucia"
2084
  msgstr ""
2085
 
2086
+ #: inc/helpers/helper-misc.php:425
2087
  msgid "Saint Vincent and the Grenadines"
2088
  msgstr ""
2089
 
2090
+ #: inc/helpers/helper-misc.php:426
2091
  msgid "Samoa"
2092
  msgstr ""
2093
 
2094
+ #: inc/helpers/helper-misc.php:427
2095
  msgid "San Marino"
2096
  msgstr ""
2097
 
2098
+ #: inc/helpers/helper-misc.php:428
2099
  msgid "Sao Tome and Principe"
2100
  msgstr ""
2101
 
2102
+ #: inc/helpers/helper-misc.php:429
2103
  msgid "Saudi Arabia"
2104
  msgstr ""
2105
 
2106
+ #: inc/helpers/helper-misc.php:430
2107
  msgid "Senegal"
2108
  msgstr ""
2109
 
2110
+ #: inc/helpers/helper-misc.php:431
2111
  msgid "Seychelles"
2112
  msgstr ""
2113
 
2114
+ #: inc/helpers/helper-misc.php:432
2115
  msgid "Sierra Leone"
2116
  msgstr ""
2117
 
2118
+ #: inc/helpers/helper-misc.php:433
2119
  msgid "Singapore"
2120
  msgstr ""
2121
 
2122
+ #: inc/helpers/helper-misc.php:434
2123
  msgid "Slovakia (Slovak Republic)"
2124
  msgstr ""
2125
 
2126
+ #: inc/helpers/helper-misc.php:435
2127
  msgid "Slovenia"
2128
  msgstr ""
2129
 
2130
+ #: inc/helpers/helper-misc.php:436
2131
  msgid "Solomon Islands"
2132
  msgstr ""
2133
 
2134
+ #: inc/helpers/helper-misc.php:437
2135
  msgid "Somalia"
2136
  msgstr ""
2137
 
2138
+ #: inc/helpers/helper-misc.php:438
2139
  msgid "South Africa"
2140
  msgstr ""
2141
 
2142
+ #: inc/helpers/helper-misc.php:439
2143
  msgid "South Georgia and the South Sandwich Islands"
2144
  msgstr ""
2145
 
2146
+ #: inc/helpers/helper-misc.php:440
2147
  msgid "Spain"
2148
  msgstr ""
2149
 
2150
+ #: inc/helpers/helper-misc.php:441
2151
  msgid "Sri Lanka"
2152
  msgstr ""
2153
 
2154
+ #: inc/helpers/helper-misc.php:442
2155
  msgid "St. Helena"
2156
  msgstr ""
2157
 
2158
+ #: inc/helpers/helper-misc.php:443
2159
  msgid "St. Pierre and Miquelon"
2160
  msgstr ""
2161
 
2162
+ #: inc/helpers/helper-misc.php:444
2163
  msgid "Sudan"
2164
  msgstr ""
2165
 
2166
+ #: inc/helpers/helper-misc.php:445
2167
  msgid "Suriname"
2168
  msgstr ""
2169
 
2170
+ #: inc/helpers/helper-misc.php:446
2171
  msgid "Svalbard and Jan Mayen Islands"
2172
  msgstr ""
2173
 
2174
+ #: inc/helpers/helper-misc.php:447
2175
  msgid "Swaziland"
2176
  msgstr ""
2177
 
2178
+ #: inc/helpers/helper-misc.php:448
2179
  msgid "Sweden"
2180
  msgstr ""
2181
 
2182
+ #: inc/helpers/helper-misc.php:449
2183
  msgid "Switzerland"
2184
  msgstr ""
2185
 
2186
+ #: inc/helpers/helper-misc.php:450
2187
  msgid "Syrian Arab Republic"
2188
  msgstr ""
2189
 
2190
+ #: inc/helpers/helper-misc.php:451
2191
  msgid "Taiwan, Province of China"
2192
  msgstr ""
2193
 
2194
+ #: inc/helpers/helper-misc.php:452
2195
  msgid "Tajikistan"
2196
  msgstr ""
2197
 
2198
+ #: inc/helpers/helper-misc.php:453
2199
  msgid "Tanzania, United Republic of"
2200
  msgstr ""
2201
 
2202
+ #: inc/helpers/helper-misc.php:454
2203
  msgid "Thailand"
2204
  msgstr ""
2205
 
2206
+ #: inc/helpers/helper-misc.php:455
2207
  msgid "Togo"
2208
  msgstr ""
2209
 
2210
+ #: inc/helpers/helper-misc.php:456
2211
  msgid "Tokelau"
2212
  msgstr ""
2213
 
2214
+ #: inc/helpers/helper-misc.php:457
2215
  msgid "Tonga"
2216
  msgstr ""
2217
 
2218
+ #: inc/helpers/helper-misc.php:458
2219
  msgid "Trinidad and Tobago"
2220
  msgstr ""
2221
 
2222
+ #: inc/helpers/helper-misc.php:459
2223
  msgid "Tunisia"
2224
  msgstr ""
2225
 
2226
+ #: inc/helpers/helper-misc.php:460
2227
  msgid "Turkey"
2228
  msgstr ""
2229
 
2230
+ #: inc/helpers/helper-misc.php:461
2231
  msgid "Turkmenistan"
2232
  msgstr ""
2233
 
2234
+ #: inc/helpers/helper-misc.php:462
2235
  msgid "Turks and Caicos Islands"
2236
  msgstr ""
2237
 
2238
+ #: inc/helpers/helper-misc.php:463
2239
  msgid "Tuvalu"
2240
  msgstr ""
2241
 
2242
+ #: inc/helpers/helper-misc.php:464
2243
  msgid "Uganda"
2244
  msgstr ""
2245
 
2246
+ #: inc/helpers/helper-misc.php:465
2247
  msgid "Ukraine"
2248
  msgstr ""
2249
 
2250
+ #: inc/helpers/helper-misc.php:466
2251
  msgid "United Arab Emirates"
2252
  msgstr ""
2253
 
2254
+ #: inc/helpers/helper-misc.php:467
2255
  msgid "United Kingdom"
2256
  msgstr ""
2257
 
2258
+ #: inc/helpers/helper-misc.php:468
2259
  msgid "United States"
2260
  msgstr ""
2261
 
2262
+ #: inc/helpers/helper-misc.php:469
2263
  msgid "United States Minor Outlying Islands"
2264
  msgstr ""
2265
 
2266
+ #: inc/helpers/helper-misc.php:470
2267
  msgid "Uruguay"
2268
  msgstr ""
2269
 
2270
+ #: inc/helpers/helper-misc.php:471
2271
  msgid "Uzbekistan"
2272
  msgstr ""
2273
 
2274
+ #: inc/helpers/helper-misc.php:472
2275
  msgid "Vanuatu"
2276
  msgstr ""
2277
 
2278
+ #: inc/helpers/helper-misc.php:473
2279
  msgid "Venezuela"
2280
  msgstr ""
2281
 
2282
+ #: inc/helpers/helper-misc.php:474
2283
  msgid "Vietnam"
2284
  msgstr ""
2285
 
2286
+ #: inc/helpers/helper-misc.php:475
2287
  msgid "Virgin Islands (British)"
2288
  msgstr ""
2289
 
2290
+ #: inc/helpers/helper-misc.php:476
2291
  msgid "Virgin Islands (U.S.)"
2292
  msgstr ""
2293
 
2294
+ #: inc/helpers/helper-misc.php:477
2295
  msgid "Wallis and Futuna Islands"
2296
  msgstr ""
2297
 
2298
+ #: inc/helpers/helper-misc.php:478
2299
  msgid "Western Sahara"
2300
  msgstr ""
2301
 
2302
+ #: inc/helpers/helper-misc.php:479
2303
  msgid "Yemen"
2304
  msgstr ""
2305
 
2306
+ #: inc/helpers/helper-misc.php:480
2307
  msgid "Yugoslavia"
2308
  msgstr ""
2309
 
2310
+ #: inc/helpers/helper-misc.php:481
2311
  msgid "Zambia"
2312
  msgstr ""
2313
 
2314
+ #: inc/helpers/helper-misc.php:482
2315
  msgid "Zimbabwe"
2316
  msgstr ""
2317
 
2396
  msgid "Add Part"
2397
  msgstr ""
2398
 
 
 
 
 
 
 
 
 
 
 
 
2399
  #: inc/templates/customize-form-item.php:33
2400
  #: inc/templates/customize-form-part-footer.php:3
2401
+ #: inc/templates/parts/customize-checkbox.php:92
2402
+ #: inc/templates/parts/customize-radio.php:92
2403
+ #: inc/templates/parts/customize-select.php:92
2404
+ #: inc/templates/parts/customize-table.php:104
2405
+ #: inc/templates/parts/customize-table.php:119
2406
  msgid "Delete"
2407
  msgstr ""
2408
 
2415
  msgstr ""
2416
 
2417
  #: inc/templates/customize-form-part-footer.php:6
2418
+ #: inc/templates/parts/customize-checkbox.php:93
2419
+ #: inc/templates/parts/customize-radio.php:93
2420
+ #: inc/templates/parts/customize-select.php:93
2421
+ #: inc/templates/parts/customize-table.php:105
2422
  msgid "Advanced"
2423
  msgstr ""
2424
 
2492
  msgstr ""
2493
 
2494
  #: inc/templates/customize-form-setup.php:96
2495
+ #: inc/templates/parts/customize-number.php:72
2496
  msgid "Prefix"
2497
  msgstr ""
2498
 
2575
  msgid "Your next submission will be tagged with this identifier."
2576
  msgstr ""
2577
 
 
 
 
 
2578
  #: inc/templates/customize-form-steps.php:23
2579
+ msgid "Save & Close"
 
2580
  msgstr ""
2581
 
2582
  #: inc/templates/customize-form-steps.php:30
2583
+ #: inc/templates/parts/customize-scale.php:78
2584
  msgid "Step"
2585
  msgstr ""
2586
 
2596
  msgid "You are customizing"
2597
  msgstr ""
2598
 
2599
+ #: inc/templates/customize-header-actions.php:3
2600
+ msgid "Save Form"
2601
+ msgstr ""
2602
+
2603
+ #: inc/templates/customize-header-actions.php:3
2604
+ msgid "Saved"
2605
+ msgstr ""
2606
+
2607
  #: inc/templates/customize-header-actions.php:5
2608
  msgid "The changes you made will be lost if you navigate away from this page."
2609
  msgstr ""
2612
  msgid "Close"
2613
  msgstr ""
2614
 
2615
+ #: inc/templates/partials/form-confirm-preview.php:3
2616
+ msgid "Edit"
2617
+ msgstr ""
2618
+
2619
  #: inc/templates/parts/customize-address.php:8
2620
  #: inc/templates/parts/customize-checkbox.php:8
2621
  #: inc/templates/parts/customize-date.php:8
2686
  #: inc/templates/parts/customize-multi-line-text.php:14
2687
  #: inc/templates/parts/customize-number.php:14
2688
  #: inc/templates/parts/customize-phone.php:14
2689
+ #: inc/templates/parts/customize-select.php:13
2690
  #: inc/templates/parts/customize-single-line-text.php:14
2691
+ #: inc/templates/parts/customize-title.php:13
2692
  #: inc/templates/parts/customize-website-url.php:14
2693
  msgid "Display as placeholder"
2694
  msgstr ""
2695
 
2696
+ #: inc/templates/parts/customize-address.php:15
2697
+ #: inc/templates/parts/customize-checkbox.php:13
2698
+ #: inc/templates/parts/customize-date.php:13
2699
+ #: inc/templates/parts/customize-email.php:15
2700
+ #: inc/templates/parts/customize-multi-line-text.php:15
2701
+ #: inc/templates/parts/customize-narrative.php:13
2702
+ #: inc/templates/parts/customize-number.php:15
2703
+ #: inc/templates/parts/customize-phone.php:15
2704
+ #: inc/templates/parts/customize-placeholder.php:13
2705
+ #: inc/templates/parts/customize-radio.php:13
2706
+ #: inc/templates/parts/customize-rating.php:13
2707
+ #: inc/templates/parts/customize-scale.php:13
2708
+ #: inc/templates/parts/customize-select.php:14
2709
+ #: inc/templates/parts/customize-single-line-text.php:15
2710
+ #: inc/templates/parts/customize-table.php:13
2711
+ #: inc/templates/parts/customize-title.php:14
2712
+ #: inc/templates/parts/customize-website-url.php:15
2713
+ msgid "Hidden"
2714
+ msgstr ""
2715
+
2716
+ #: inc/templates/parts/customize-address.php:20
2717
+ #: inc/templates/parts/customize-checkbox.php:18
2718
+ #: inc/templates/parts/customize-checkbox.php:64
2719
+ #: inc/templates/parts/customize-date.php:18
2720
+ #: inc/templates/parts/customize-date.php:113
2721
+ #: inc/templates/parts/customize-email.php:20
2722
+ #: inc/templates/parts/customize-email.php:56
2723
+ #: inc/templates/parts/customize-multi-line-text.php:20
2724
+ #: inc/templates/parts/customize-multi-line-text.php:56
2725
+ #: inc/templates/parts/customize-narrative.php:18
2726
+ #: inc/templates/parts/customize-narrative.php:42
2727
+ #: inc/templates/parts/customize-number.php:20
2728
+ #: inc/templates/parts/customize-number.php:87
2729
+ #: inc/templates/parts/customize-phone.php:20
2730
+ #: inc/templates/parts/customize-phone.php:79
2731
+ #: inc/templates/parts/customize-placeholder.php:18
2732
+ #: inc/templates/parts/customize-placeholder.php:37
2733
+ #: inc/templates/parts/customize-radio.php:18
2734
+ #: inc/templates/parts/customize-radio.php:64
2735
+ #: inc/templates/parts/customize-rating.php:18
2736
+ #: inc/templates/parts/customize-rating.php:84
2737
+ #: inc/templates/parts/customize-scale.php:18
2738
+ #: inc/templates/parts/customize-scale.php:96
2739
+ #: inc/templates/parts/customize-select.php:19
2740
+ #: inc/templates/parts/customize-select.php:68
2741
+ #: inc/templates/parts/customize-single-line-text.php:20
2742
+ #: inc/templates/parts/customize-single-line-text.php:61
2743
+ #: inc/templates/parts/customize-table.php:18
2744
+ #: inc/templates/parts/customize-table.php:80
2745
+ #: inc/templates/parts/customize-title.php:19
2746
+ #: inc/templates/parts/customize-title.php:54
2747
+ #: inc/templates/parts/customize-website-url.php:20
2748
+ #: inc/templates/parts/customize-website-url.php:56
2749
  msgid "Apply to all parts"
2750
  msgstr ""
2751
 
2752
+ #: inc/templates/parts/customize-address.php:24
2753
+ #: inc/templates/parts/customize-checkbox.php:22
2754
+ #: inc/templates/parts/customize-checkbox.php:84
2755
+ #: inc/templates/parts/customize-date.php:22
2756
+ #: inc/templates/parts/customize-email.php:24
2757
+ #: inc/templates/parts/customize-multi-line-text.php:24
2758
+ #: inc/templates/parts/customize-number.php:24
2759
+ #: inc/templates/parts/customize-phone.php:24
2760
+ #: inc/templates/parts/customize-radio.php:22
2761
+ #: inc/templates/parts/customize-radio.php:84
2762
+ #: inc/templates/parts/customize-rating.php:22
2763
+ #: inc/templates/parts/customize-scale.php:22
2764
+ #: inc/templates/parts/customize-select.php:23
2765
+ #: inc/templates/parts/customize-single-line-text.php:24
2766
+ #: inc/templates/parts/customize-table.php:22
2767
+ #: inc/templates/parts/customize-title.php:23
2768
+ #: inc/templates/parts/customize-website-url.php:24
2769
  msgid "Description"
2770
  msgstr ""
2771
 
2772
+ #: inc/templates/parts/customize-address.php:28
2773
+ #: inc/templates/parts/customize-checkbox.php:26
2774
+ #: inc/templates/parts/customize-date.php:26
2775
+ #: inc/templates/parts/customize-email.php:28
2776
+ #: inc/templates/parts/customize-multi-line-text.php:28
2777
+ #: inc/templates/parts/customize-number.php:28
2778
+ #: inc/templates/parts/customize-phone.php:28
2779
+ #: inc/templates/parts/customize-radio.php:26
2780
+ #: inc/templates/parts/customize-rating.php:26
2781
+ #: inc/templates/parts/customize-scale.php:26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2782
  #: inc/templates/parts/customize-select.php:27
2783
+ #: inc/templates/parts/customize-single-line-text.php:28
2784
+ #: inc/templates/parts/customize-table.php:26
2785
  #: inc/templates/parts/customize-title.php:27
2786
+ #: inc/templates/parts/customize-website-url.php:28
2787
+ msgid "Description appearance"
2788
  msgstr ""
2789
 
2790
  #: inc/templates/parts/customize-address.php:30
2791
+ #: inc/templates/parts/customize-checkbox.php:28
2792
+ #: inc/templates/parts/customize-date.php:28
2793
  #: inc/templates/parts/customize-email.php:30
2794
  #: inc/templates/parts/customize-multi-line-text.php:30
2795
  #: inc/templates/parts/customize-number.php:30
2796
  #: inc/templates/parts/customize-phone.php:30
2797
+ #: inc/templates/parts/customize-radio.php:28
2798
+ #: inc/templates/parts/customize-rating.php:28
2799
+ #: inc/templates/parts/customize-scale.php:28
2800
+ #: inc/templates/parts/customize-select.php:29
2801
  #: inc/templates/parts/customize-single-line-text.php:30
2802
+ #: inc/templates/parts/customize-table.php:28
2803
+ #: inc/templates/parts/customize-title.php:29
2804
  #: inc/templates/parts/customize-website-url.php:30
2805
+ msgid "Standard"
2806
  msgstr ""
2807
 
2808
  #: inc/templates/parts/customize-address.php:31
 
 
2809
  #: inc/templates/parts/customize-email.php:31
2810
  #: inc/templates/parts/customize-multi-line-text.php:31
2811
  #: inc/templates/parts/customize-number.php:31
2812
  #: inc/templates/parts/customize-phone.php:31
2813
+ #: inc/templates/parts/customize-single-line-text.php:31
 
 
 
 
 
2814
  #: inc/templates/parts/customize-website-url.php:31
2815
+ msgid "Reveal on focus"
2816
+ msgstr ""
2817
+
2818
+ #: inc/templates/parts/customize-address.php:32
2819
+ #: inc/templates/parts/customize-checkbox.php:29
2820
+ #: inc/templates/parts/customize-date.php:29
2821
+ #: inc/templates/parts/customize-email.php:32
2822
+ #: inc/templates/parts/customize-multi-line-text.php:32
2823
+ #: inc/templates/parts/customize-number.php:32
2824
+ #: inc/templates/parts/customize-phone.php:32
2825
+ #: inc/templates/parts/customize-radio.php:29
2826
+ #: inc/templates/parts/customize-rating.php:29
2827
+ #: inc/templates/parts/customize-scale.php:29
2828
+ #: inc/templates/parts/customize-select.php:30
2829
+ #: inc/templates/parts/customize-table.php:29
2830
+ #: inc/templates/parts/customize-title.php:30
2831
+ #: inc/templates/parts/customize-website-url.php:32
2832
  msgid "Tooltip"
2833
  msgstr ""
2834
 
2835
+ #: inc/templates/parts/customize-address.php:40
2836
  msgid "Mode"
2837
  msgstr ""
2838
 
2839
+ #: inc/templates/parts/customize-address.php:42
2840
+ #: inc/templates/parts/customize-address.php:80
2841
+ #: inc/templates/parts/customize-checkbox.php:56
2842
+ #: inc/templates/parts/customize-date.php:105
2843
+ #: inc/templates/parts/customize-email.php:48
2844
  #: inc/templates/parts/customize-legal.php:6
2845
+ #: inc/templates/parts/customize-multi-line-text.php:48
2846
+ #: inc/templates/parts/customize-narrative.php:34
2847
+ #: inc/templates/parts/customize-number.php:79
2848
+ #: inc/templates/parts/customize-phone.php:71
2849
+ #: inc/templates/parts/customize-placeholder.php:29
2850
+ #: inc/templates/parts/customize-radio.php:56
2851
+ #: inc/templates/parts/customize-rating.php:76
2852
+ #: inc/templates/parts/customize-scale.php:88
2853
+ #: inc/templates/parts/customize-select.php:60
2854
+ #: inc/templates/parts/customize-single-line-text.php:53
2855
+ #: inc/templates/parts/customize-table.php:72
2856
+ #: inc/templates/parts/customize-title.php:46
2857
+ #: inc/templates/parts/customize-website-url.php:48
2858
  msgid "Full"
2859
  msgstr ""
2860
 
2861
+ #: inc/templates/parts/customize-address.php:43
2862
  msgid "Full with autocomplete"
2863
  msgstr ""
2864
 
2865
+ #: inc/templates/parts/customize-address.php:44
2866
  msgid "Country and city"
2867
  msgstr ""
2868
 
2869
+ #: inc/templates/parts/customize-address.php:45
2870
  msgid "Country only"
2871
  msgstr ""
2872
 
2873
+ #: inc/templates/parts/customize-address.php:50
2874
  msgid "Allow geolocation"
2875
  msgstr ""
2876
 
2877
+ #: inc/templates/parts/customize-address.php:55
2878
  msgid "Google API Key"
2879
  msgstr ""
2880
 
2881
+ #: inc/templates/parts/customize-address.php:61
2882
  msgid "Address autocompletion requires a"
2883
  msgstr ""
2884
 
2885
+ #: inc/templates/parts/customize-address.php:62
2886
  msgid "Google Places API key"
2887
  msgstr ""
2888
 
2889
+ #: inc/templates/parts/customize-address.php:66
2890
  msgid "Geolocation requires a"
2891
  msgstr ""
2892
 
2893
+ #: inc/templates/parts/customize-address.php:67
2894
  msgid "Google Geocoding API key"
2895
  msgstr ""
2896
 
2897
+ #: inc/templates/parts/customize-address.php:73
2898
+ #: inc/templates/parts/customize-checkbox.php:42
2899
+ #: inc/templates/parts/customize-date.php:52
2900
+ #: inc/templates/parts/customize-email.php:41
2901
+ #: inc/templates/parts/customize-multi-line-text.php:41
2902
+ #: inc/templates/parts/customize-number.php:51
2903
+ #: inc/templates/parts/customize-phone.php:41
2904
+ #: inc/templates/parts/customize-radio.php:42
2905
+ #: inc/templates/parts/customize-rating.php:49
2906
+ #: inc/templates/parts/customize-scale.php:44
2907
+ #: inc/templates/parts/customize-select.php:48
2908
+ #: inc/templates/parts/customize-single-line-text.php:41
2909
+ #: inc/templates/parts/customize-title.php:39
2910
+ #: inc/templates/parts/customize-website-url.php:41
2911
  msgid "This is required"
2912
  msgstr ""
2913
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2914
  #: inc/templates/parts/customize-address.php:81
2915
  #: inc/templates/parts/customize-checkbox.php:57
2916
+ #: inc/templates/parts/customize-date.php:106
2917
  #: inc/templates/parts/customize-email.php:49
2918
+ #: inc/templates/parts/customize-legal.php:7
2919
  #: inc/templates/parts/customize-multi-line-text.php:49
2920
  #: inc/templates/parts/customize-narrative.php:35
2921
+ #: inc/templates/parts/customize-number.php:80
2922
  #: inc/templates/parts/customize-phone.php:72
2923
  #: inc/templates/parts/customize-placeholder.php:30
2924
  #: inc/templates/parts/customize-radio.php:57
2925
  #: inc/templates/parts/customize-rating.php:77
2926
  #: inc/templates/parts/customize-scale.php:89
2927
+ #: inc/templates/parts/customize-select.php:61
2928
  #: inc/templates/parts/customize-single-line-text.php:54
2929
  #: inc/templates/parts/customize-table.php:73
2930
+ #: inc/templates/parts/customize-title.php:47
2931
  #: inc/templates/parts/customize-website-url.php:49
2932
+ msgid "Half"
2933
  msgstr ""
2934
 
2935
  #: inc/templates/parts/customize-address.php:82
2936
  #: inc/templates/parts/customize-checkbox.php:58
2937
+ #: inc/templates/parts/customize-date.php:107
2938
  #: inc/templates/parts/customize-email.php:50
2939
+ #: inc/templates/parts/customize-legal.php:8
2940
  #: inc/templates/parts/customize-multi-line-text.php:50
2941
  #: inc/templates/parts/customize-narrative.php:36
2942
+ #: inc/templates/parts/customize-number.php:81
2943
  #: inc/templates/parts/customize-phone.php:73
2944
  #: inc/templates/parts/customize-placeholder.php:31
2945
  #: inc/templates/parts/customize-radio.php:58
2946
  #: inc/templates/parts/customize-rating.php:78
2947
  #: inc/templates/parts/customize-scale.php:90
2948
+ #: inc/templates/parts/customize-select.php:62
2949
  #: inc/templates/parts/customize-single-line-text.php:55
2950
  #: inc/templates/parts/customize-table.php:74
2951
+ #: inc/templates/parts/customize-title.php:48
2952
  #: inc/templates/parts/customize-website-url.php:50
2953
+ msgid "Third"
2954
+ msgstr ""
2955
+
2956
+ #: inc/templates/parts/customize-address.php:83
2957
+ #: inc/templates/parts/customize-checkbox.php:59
2958
+ #: inc/templates/parts/customize-date.php:108
2959
+ #: inc/templates/parts/customize-email.php:51
2960
+ #: inc/templates/parts/customize-legal.php:9
2961
+ #: inc/templates/parts/customize-multi-line-text.php:51
2962
+ #: inc/templates/parts/customize-narrative.php:37
2963
+ #: inc/templates/parts/customize-number.php:82
2964
+ #: inc/templates/parts/customize-phone.php:74
2965
+ #: inc/templates/parts/customize-placeholder.php:32
2966
+ #: inc/templates/parts/customize-radio.php:59
2967
+ #: inc/templates/parts/customize-rating.php:79
2968
+ #: inc/templates/parts/customize-scale.php:91
2969
+ #: inc/templates/parts/customize-select.php:63
2970
+ #: inc/templates/parts/customize-single-line-text.php:56
2971
+ #: inc/templates/parts/customize-table.php:75
2972
+ #: inc/templates/parts/customize-title.php:49
2973
+ #: inc/templates/parts/customize-website-url.php:51
2974
  msgid "Auto"
2975
  msgstr ""
2976
 
2977
+ #: inc/templates/parts/customize-address.php:87
2978
+ #: inc/templates/parts/customize-checkbox.php:68
2979
+ #: inc/templates/parts/customize-date.php:117
2980
+ #: inc/templates/parts/customize-email.php:60
2981
  #: inc/templates/parts/customize-legal.php:18
2982
+ #: inc/templates/parts/customize-multi-line-text.php:60
2983
+ #: inc/templates/parts/customize-narrative.php:46
2984
+ #: inc/templates/parts/customize-number.php:91
2985
+ #: inc/templates/parts/customize-phone.php:83
2986
+ #: inc/templates/parts/customize-placeholder.php:41
2987
+ #: inc/templates/parts/customize-radio.php:68
2988
+ #: inc/templates/parts/customize-rating.php:88
2989
+ #: inc/templates/parts/customize-scale.php:100
2990
+ #: inc/templates/parts/customize-select.php:72
2991
+ #: inc/templates/parts/customize-single-line-text.php:65
2992
+ #: inc/templates/parts/customize-table.php:84
2993
+ #: inc/templates/parts/customize-title.php:58
2994
+ #: inc/templates/parts/customize-website-url.php:60
2995
  msgid "Custom CSS class"
2996
  msgstr ""
2997
 
2998
+ #: inc/templates/parts/customize-checkbox.php:35
2999
+ #: inc/templates/parts/customize-radio.php:35
3000
+ #: inc/templates/parts/customize-select.php:40
3001
+ msgid "No options added yet. Add one by clicking <i>Add Option</i> below."
3002
  msgstr ""
3003
 
3004
+ #: inc/templates/parts/customize-checkbox.php:38
3005
+ #: inc/templates/parts/customize-radio.php:38
3006
+ #: inc/templates/parts/customize-select.php:44
3007
  msgid "Add option"
3008
  msgstr ""
3009
 
3010
+ #: inc/templates/parts/customize-checkbox.php:47
3011
+ #: inc/templates/parts/customize-radio.php:47
3012
  msgid "Display options"
3013
  msgstr ""
3014
 
3015
+ #: inc/templates/parts/customize-checkbox.php:49
3016
+ #: inc/templates/parts/customize-radio.php:49
3017
  msgid "Horizontal"
3018
  msgstr ""
3019
 
3020
+ #: inc/templates/parts/customize-checkbox.php:50
3021
+ #: inc/templates/parts/customize-radio.php:50
3022
  msgid "Vertical"
3023
  msgstr ""
3024
 
3025
+ #: inc/templates/parts/customize-checkbox.php:79
3026
+ #: inc/templates/parts/customize-radio.php:79
3027
+ #: inc/templates/parts/customize-select.php:83
3028
+ #: inc/templates/parts/customize-table.php:95
3029
+ #: inc/templates/parts/customize-table.php:115
3030
  msgid "Label"
3031
  msgstr ""
3032
 
3033
+ #: inc/templates/parts/customize-checkbox.php:88
3034
+ #: inc/templates/parts/customize-table.php:100
3035
  msgid "Checked by default"
3036
  msgstr ""
3037
 
3038
+ #: inc/templates/parts/customize-date.php:36
3039
  msgid "Date &amp; Time"
3040
  msgstr ""
3041
 
3042
+ #: inc/templates/parts/customize-date.php:37
3043
  msgid "Time"
3044
  msgstr ""
3045
 
3046
+ #: inc/templates/parts/customize-date.php:38
3047
+ msgid "Month &amp; Year"
3048
+ msgstr ""
3049
+
3050
+ #: inc/templates/parts/customize-date.php:39
3051
+ msgid "Month only"
3052
+ msgstr ""
3053
+
3054
  #: inc/templates/parts/customize-date.php:40
3055
+ msgid "Year only"
3056
+ msgstr ""
3057
+
3058
+ #: inc/templates/parts/customize-date.php:44
3059
+ #: inc/templates/parts/customize-scale.php:64
3060
  msgid "Default value"
3061
  msgstr ""
3062
 
3063
+ #: inc/templates/parts/customize-date.php:46
3064
  msgid "Blank"
3065
  msgstr ""
3066
 
3067
+ #: inc/templates/parts/customize-date.php:47
3068
  msgid "Current date and time"
3069
  msgstr ""
3070
 
3071
+ #: inc/templates/parts/customize-date.php:59
3072
  msgid "All years"
3073
  msgstr ""
3074
 
3075
+ #: inc/templates/parts/customize-date.php:60
3076
  msgid "Past years only"
3077
  msgstr ""
3078
 
3079
+ #: inc/templates/parts/customize-date.php:61
3080
  msgid "Future years only"
3081
  msgstr ""
3082
 
3083
+ #: inc/templates/parts/customize-date.php:66
3084
  msgid "Start from"
3085
  msgstr ""
3086
 
3087
+ #: inc/templates/parts/customize-date.php:70
3088
  msgid "End at"
3089
  msgstr ""
3090
 
3091
+ #: inc/templates/parts/customize-date.php:75
3092
  msgid "Years order"
3093
  msgstr ""
3094
 
3095
+ #: inc/templates/parts/customize-date.php:83
3096
  msgid "Min hour"
3097
  msgstr ""
3098
 
3099
+ #: inc/templates/parts/customize-date.php:87
3100
  msgid "Max hour"
3101
  msgstr ""
3102
 
3103
+ #: inc/templates/parts/customize-date.php:92
3104
  msgid "Minute step"
3105
  msgstr ""
3106
 
3107
+ #: inc/templates/parts/customize-date.php:96
3108
  msgid "Time format"
3109
  msgstr ""
3110
 
3111
+ #: inc/templates/parts/customize-date.php:98
3112
  msgid "12h"
3113
  msgstr ""
3114
 
3115
+ #: inc/templates/parts/customize-date.php:99
3116
  msgid "24h"
3117
  msgstr ""
3118
 
3124
  msgid "Inside input"
3125
  msgstr ""
3126
 
3127
+ #: inc/templates/parts/customize-email.php:65
3128
+ #: inc/templates/parts/customize-number.php:96
3129
+ #: inc/templates/parts/customize-phone.php:88
3130
  msgid "Require confirmation of the value"
3131
  msgstr ""
3132
 
3133
+ #: inc/templates/parts/customize-email.php:69
3134
+ #: inc/templates/parts/customize-number.php:100
3135
+ #: inc/templates/parts/customize-phone.php:92
3136
  msgid "Confirmation field title"
3137
  msgstr ""
3138
 
3140
  msgid "Legal text"
3141
  msgstr ""
3142
 
3143
+ #: inc/templates/parts/customize-narrative.php:22
3144
+ #: inc/templates/parts/customize-number.php:57
3145
  msgid "Format"
3146
  msgstr ""
3147
 
3148
+ #: inc/templates/parts/customize-narrative.php:27
3149
  msgid "Each input is required"
3150
  msgstr ""
3151
 
3152
+ #: inc/templates/parts/customize-number.php:41
3153
+ msgid "Min value"
 
 
 
 
 
 
3154
  msgstr ""
3155
 
3156
+ #: inc/templates/parts/customize-number.php:45
3157
+ msgid "Max value"
3158
  msgstr ""
3159
 
3160
+ #: inc/templates/parts/customize-number.php:62
3161
+ msgid "Thousands separator"
3162
  msgstr ""
3163
 
3164
+ #: inc/templates/parts/customize-number.php:66
3165
+ msgid "Decimal<br>separator"
3166
  msgstr ""
3167
 
3168
+ #: inc/templates/parts/customize-phone.php:47
3169
  msgid "International format"
3170
  msgstr ""
3171
 
3172
+ #: inc/templates/parts/customize-phone.php:52
3173
  msgid "Default phone number region"
3174
  msgstr ""
3175
 
3176
+ #: inc/templates/parts/customize-phone.php:64
3177
  msgid "Allow other regions to be selected"
3178
  msgstr ""
3179
 
3180
+ #: inc/templates/parts/customize-radio.php:88
3181
+ #: inc/templates/parts/customize-select.php:88
3182
  msgid "Make this option default"
3183
  msgstr ""
3184
 
3185
+ #: inc/templates/parts/customize-rating.php:33
3186
  msgid "Rating type"
3187
  msgstr ""
3188
 
3189
+ #: inc/templates/parts/customize-rating.php:35
3190
  msgid "No / Yes"
3191
  msgstr ""
3192
 
3193
+ #: inc/templates/parts/customize-rating.php:36
3194
  msgid "Scale of 1 to 5"
3195
  msgstr ""
3196
 
3197
+ #: inc/templates/parts/customize-rating.php:40
3198
  msgid "Rating visuals"
3199
  msgstr ""
3200
 
3201
+ #: inc/templates/parts/customize-rating.php:42
3202
  #: inc/templates/parts/frontend-rating-scale.php:12
3203
  msgid "Stars"
3204
  msgstr ""
3205
 
3206
+ #: inc/templates/parts/customize-rating.php:43
3207
  msgid "Smileys"
3208
  msgstr ""
3209
 
3210
+ #: inc/templates/parts/customize-rating.php:44
3211
  msgid "Thumbs"
3212
  msgstr ""
3213
 
3214
+ #: inc/templates/parts/customize-rating.php:55
3215
+ #: inc/templates/parts/customize-rating.php:65
3216
  msgid "Rating Labels"
3217
  msgstr ""
3218
 
3219
+ #: inc/templates/parts/customize-scale.php:34
3220
+ msgid "Minimum value"
3221
+ msgstr ""
3222
+
3223
+ #: inc/templates/parts/customize-scale.php:38
3224
+ msgid "Maximum value"
3225
+ msgstr ""
3226
+
3227
+ #: inc/templates/parts/customize-scale.php:50
3228
  msgid "Allow range select"
3229
  msgstr ""
3230
 
3231
+ #: inc/templates/parts/customize-scale.php:55
3232
  msgid "Default range from"
3233
  msgstr ""
3234
 
3235
+ #: inc/templates/parts/customize-scale.php:59
3236
  msgid "Default range to"
3237
  msgstr ""
3238
 
3239
+ #: inc/templates/parts/customize-scale.php:69
3240
  msgid "Min value label"
3241
  msgstr ""
3242
 
3243
+ #: inc/templates/parts/customize-scale.php:73
3244
  msgid "Max value label"
3245
  msgstr ""
3246
 
3247
+ #: inc/templates/parts/customize-select.php:43
3248
  msgid "Show all"
3249
  msgstr ""
3250
 
3251
+ #: inc/templates/parts/customize-select.php:43
3252
  msgid "options"
3253
  msgstr ""
3254
 
3255
+ #: inc/templates/parts/customize-select.php:54
3256
  msgid "Make searchable"
3257
  msgstr ""
3258
 
3259
+ #: inc/templates/parts/customize-single-line-text.php:32
3260
  msgid "Show in a tooltip"
3261
  msgstr ""
3262
 
3263
+ #: inc/templates/parts/customize-single-line-text.php:47
3264
  msgid "Use value as email subject"
3265
  msgstr ""
3266
 
3267
+ #: inc/templates/parts/customize-table.php:34
 
 
 
 
3268
  msgid "Allow multiple selections"
3269
  msgstr ""
3270
 
3271
+ #: inc/templates/parts/customize-table.php:38
3272
+ #: inc/templates/parts/customize-table.php:45
3273
  msgid "Columns"
3274
  msgstr ""
3275
 
3276
+ #: inc/templates/parts/customize-table.php:39
3277
+ #: inc/templates/parts/customize-table.php:55
3278
  msgid "Rows"
3279
  msgstr ""
3280
 
3281
+ #: inc/templates/parts/customize-table.php:46
3282
+ msgid "No columns added yet. Add one by clicking <i>Add Column</i> below."
3283
  msgstr ""
3284
 
3285
+ #: inc/templates/parts/customize-table.php:49
3286
  msgid "Add column"
3287
  msgstr ""
3288
 
3289
+ #: inc/templates/parts/customize-table.php:56
3290
+ msgid "No rows added yet. Add one by clicking <i>Add Row</i> below."
3291
  msgstr ""
3292
 
3293
+ #: inc/templates/parts/customize-table.php:59
3294
  msgid "Add row"
3295
  msgstr ""
3296
 
3297
+ #: inc/templates/parts/customize-table.php:65
3298
+ msgid "Each row is required"
3299
+ msgstr ""
3300
+
3301
  #: inc/templates/parts/frontend-address.php:34
3302
  #: inc/templates/parts/frontend-address.php:46
3303
  msgid "Country"
3319
  msgid "Month"
3320
  msgstr ""
3321
 
 
3322
  #: inc/templates/parts/frontend-date.php:41
3323
+ #: inc/templates/parts/frontend-date.php:47
3324
+ #: inc/templates/parts/frontend-date.php:68
3325
  msgid "Year"
3326
  msgstr ""
3327
 
3328
+ #: inc/templates/parts/frontend-date.php:135
3329
  msgid "Period"
3330
  msgstr ""
3331
 
3332
+ #: inc/templates/parts/frontend-date.php:147
3333
  msgid "AM"
3334
  msgstr ""
3335
 
3336
+ #: inc/templates/parts/frontend-date.php:148
3337
  msgid "PM"
3338
  msgstr ""
3339
 
3341
  msgid "%d out of %d"
3342
  msgstr ""
3343
 
3344
+ #: inc/templates/parts/frontend-select.php:47
3345
+ #: inc/templates/parts/frontend-title.php:36
 
 
 
 
 
 
 
3346
  msgid "Select"
3347
  msgstr ""
3348
 
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: contact, contact form, email, feedback form, form, form builder, custom fo
5
  Requires at least: 4.8
6
  Tested up to: 4.9.7
7
  Requires PHP: 5.2.4
8
- Stable tag: 1.6.6
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -79,6 +79,19 @@ Absolutely! HappyForms gets out of the way and is designed to work with any them
79
 
80
  == Changelog ==
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  = 1.6.6 =
83
  * Bugfix: Fix the issue with Number and Address part calling an undefined JS method.
84
  * Bugfix: Fix appearance of international Phone field in various title placement configurations.
@@ -282,6 +295,9 @@ Absolutely! HappyForms gets out of the way and is designed to work with any them
282
 
283
  == Upgrade Notice ==
284
 
 
 
 
285
  = 1.6.6 =
286
  * Bugfixes.
287
 
5
  Requires at least: 4.8
6
  Tested up to: 4.9.7
7
  Requires PHP: 5.2.4
8
+ Stable tag: 1.6.7
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
79
 
80
  == Changelog ==
81
 
82
+ = 1.6.7 =
83
+ * New feature: Added support for placeholder value in Dropdown part along with new option to set title as a placeholder.
84
+ * New feature: New looks of Multiple Choice part allowing to add description for each option.
85
+ * New feature: Added three new modes to Date & Time part: Month & Year, Month only, Year only.
86
+ * New feature: Part title can now be hidden per each individual part.
87
+ * Improvement: Number part now allows for minimum and maximum value setting even when the part input is formatted with prefix and thousands separators.
88
+ * Improvement: Added labels for optional parts, removed asterisks for required parts.
89
+ * Improvement: Various UX improvements to form builder.
90
+ * Improvement: Form configuration steps are now directly reachable from the form list table.
91
+ * Bugfix: Phone part displayed wrong country flag in the case where two countries share same phone prefix.
92
+ * Bugfix: Date & Time part layout didn't adapt well when set to Half and Third width setting.
93
+ * Bugfix: Saved form width value was reverting to default in Style step.
94
+
95
  = 1.6.6 =
96
  * Bugfix: Fix the issue with Number and Address part calling an undefined JS method.
97
  * Bugfix: Fix appearance of international Phone field in various title placement configurations.
295
 
296
  == Upgrade Notice ==
297
 
298
+ = 1.6.7 =
299
+ * Tons of improvements to individual parts and form customize screen, bugfixes.
300
+
301
  = 1.6.6 =
302
  * Bugfixes.
303