Version Description
- New Heading, Paragraph, Media and Separator fields and form importer in Tools Import screen.
Download this release
Release Info
Developer | happyforms |
Plugin | Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms |
Version | 1.21.0 |
Comparing to | |
See all releases |
Code changes from version 1.20.2 to 1.21.0
- bundles/css/frontend.css +1 -1
- core/assets/css/customize.css +49 -10
- core/assets/css/preview.css +10 -0
- core/assets/js/customize/media.js +149 -0
- core/assets/js/parts/part-divider.js +17 -0
- core/assets/js/parts/part-layout_title.js +71 -0
- core/assets/js/parts/part-media.js +42 -0
- core/assets/js/parts/part-placeholder.js +108 -0
- core/classes/class-form-part-library.php +33 -27
- core/classes/class-form-styles.php +17 -1
- core/classes/class-happyforms-core.php +1 -0
- core/classes/class-import-controller.php +138 -0
- core/classes/class-wp-customize-form-manager.php +3 -2
- core/classes/parts/class-part-divider.php +169 -0
- core/classes/parts/class-part-layout-drawer-group.php +13 -0
- core/classes/parts/class-part-layout-title.php +177 -0
- core/classes/parts/class-part-media.php +228 -0
- core/classes/parts/class-part-placeholder.php +210 -0
- core/helpers/helper-form-templates.php +17 -0
- core/helpers/helper-misc.php +18 -0
- core/templates/customize-header-actions.php +1 -1
- core/templates/parts/customize-divider.php +30 -0
- core/templates/parts/customize-layout_title.php +46 -0
- core/templates/parts/customize-media.php +123 -0
- core/templates/parts/customize-placeholder.php +56 -0
- core/templates/parts/frontend-divider.php +5 -0
- core/templates/parts/frontend-layout_title.php +5 -0
- core/templates/parts/frontend-media.php +45 -0
- core/templates/parts/frontend-placeholder.php +26 -0
- core/templates/single-form.php +1 -0
- happyforms.php +2 -2
- inc/assets/css/frontend/color.css +32 -1
- inc/assets/css/frontend/layout.css +39 -0
- inc/assets/js/customize.js +11 -7
- inc/classes/class-happyforms.php +12 -33
- inc/classes/class-importer-xml.php +243 -0
- inc/classes/parts/class-part-divider-dummy.php +0 -12
- inc/classes/parts/class-part-layout-title-dummy.php +0 -12
- inc/classes/parts/class-part-media-dummy.php +0 -12
- inc/classes/parts/class-part-placeholder-dummy.php +0 -12
- languages/happyforms.pot +310 -205
- readme.txt +11 -1
bundles/css/frontend.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
:root{--happyforms-color-primary:#000;--happyforms-color-success-notice:#ebf9f0;--happyforms-color-success-notice-text:#1eb452;--happyforms-color-error:#f23000;--happyforms-color-error-notice:#ffeeea;--happyforms-color-error-notice-text:#f23000;--happyforms-color-notice-text:#454545;--happyforms-color-part-title:#000;--happyforms-color-part-value:#000;--happyforms-color-part-placeholder:#888888;--happyforms-color-part-description:#454545;--happyforms-color-part-border:#dbdbdb;--happyforms-color-part-border-focus:#7aa4ff;--happyforms-color-part-background:#fff;--happyforms-color-part-background-focus:#fff;--happyforms-color-submit-background:#000000;--happyforms-color-submit-background-hover:#000000;--happyforms-color-submit-border:transparent;--happyforms-color-submit-text:#fff;--happyforms-color-submit-text-hover:#fff;--happyforms-color-table-row-odd:#fcfcfc;--happyforms-color-table-row-even:#efefef;--happyforms-color-table-row-odd-text:#000;--happyforms-color-table-row-even-text:#000;--happyforms-color-choice-checkmark-bg:#fff;--happyforms-color-choice-checkmark-bg-focus:#000;--happyforms-color-choice-checkmark-color:#fff;--happyforms-color-dropdown-bg-color:#fff;--happyforms-color-dropdown-item-bg:#fff;--happyforms-color-dropdown-item-text:#000;--happyforms-color-dropdown-item-bg-hover:#f4f4f5;--happyforms-color-dropdown-item-text-hover:#000;--happyforms-form-title-font-size:32px;--happyforms-form-font-weight:normal;--happyforms-part-title-font-size:16px;--happyforms-part-description-font-size:12px;--happyforms-part-value-font-size:16px;--happyforms-submit-button-font-size:16px;--happyforms-transition-duration:0.25s}.happyforms-form.happyforms-styles form{font-weight:400;font-weight:var(--happyforms-form-font-weight);transition:opacity .25s ease-in-out;transition:opacity var(--happyforms-transition-duration) ease-in-out}.happyforms-styles h3.happyforms-form__title{font-weight:400;font-size:32px;font-size:var(--happyforms-form-title-font-size);color:#000;color:var(--happyforms-color-primary)}.happyforms-styles .happyforms-part__label{line-height:1;font-weight:400;font-size:16px;font-size:var(--happyforms-part-title-font-size);background-color:transparent;overflow-wrap:anywhere}.happyforms-styles .happyforms-part__label .happyforms-optional,.happyforms-styles .happyforms-part__label .label{font-weight:400;font-style:normal;font-size:16px;font-size:var(--happyforms-part-title-font-size);color:#000;color:var(--happyforms-color-part-title);background-color:transparent}.happyforms-styles .happyforms-part__description{line-height:1.4;font-size:14px;font-size:var(--happyforms-part-description-font-size);color:#454545;color:var(--happyforms-color-part-description);overflow-wrap:anywhere}.happyforms-styles .happyforms-part input[type=email],.happyforms-styles .happyforms-part input[type=number],.happyforms-styles .happyforms-part input[type=password],.happyforms-styles .happyforms-part input[type=range],.happyforms-styles .happyforms-part input[type=tel],.happyforms-styles .happyforms-part input[type=text],.happyforms-styles .happyforms-part select.happyforms-select,.happyforms-styles .happyforms-part textarea{margin:0;padding:10px;border-width:1px;border-style:solid;border-color:#dbdbdb!important;border-color:var(--happyforms-color-part-border)!important;border-radius:6px;border-radius:6px!important;box-shadow:none;box-sizing:border-box;font-style:normal;font-size:16px;font-size:var(--happyforms-part-value-font-size);background-color:#fff!important;background-color:var(--happyforms-color-part-background)!important;color:#000;color:var(--happyforms-color-part-value);transition-property:none;transition-duration:.1s;transition-duration:var(--happyforms-transition-duration);transition-timing-function:ease-in}.happyforms-styles .happyforms-part input[type=email],.happyforms-styles .happyforms-part input[type=number],.happyforms-styles .happyforms-part input[type=password],.happyforms-styles .happyforms-part input[type=range],.happyforms-styles .happyforms-part input[type=tel],.happyforms-styles .happyforms-part input[type=text],.happyforms-styles .happyforms-part select.happyforms-select{height:auto!important}.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=range],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-border-off .happyforms-part select.happyforms-select,.happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea{border-color:transparent!important}.happyforms-styles .happyforms-part input[type=email]:focus,.happyforms-styles .happyforms-part input[type=number]:focus,.happyforms-styles .happyforms-part input[type=password]:focus,.happyforms-styles .happyforms-part input[type=tel]:focus,.happyforms-styles .happyforms-part input[type=text]:focus,.happyforms-styles .happyforms-part select.happyforms-select:focus,.happyforms-styles .happyforms-part textarea:focus{outline:0;border-color:#7aa4ff!important;border-color:var(--happyforms-color-part-border-focus)!important;color:#000;color:var(--happyforms-color-part-value);background-color:#fff!important;background-color:var(--happyforms-color-part-background-focus)!important;box-shadow:inset 0 0 0 1px #7aa4ff;box-shadow:inset 0 0 0 1px var(--happyforms-color-part-border-focus)}.happyforms-styles .happyforms-part select:focus{outline:0}.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=email]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=password]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=text]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part select.happyforms-select:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea:focus{border-color:transparent!important}.happyforms-styles .happyforms-part.happyforms-part--error input[type=email],.happyforms-styles .happyforms-part.happyforms-part--error input[type=number],.happyforms-styles .happyforms-part.happyforms-part--error input[type=password],.happyforms-styles .happyforms-part.happyforms-part--error input[type=range],.happyforms-styles .happyforms-part.happyforms-part--error input[type=tel],.happyforms-styles .happyforms-part.happyforms-part--error input[type=text],.happyforms-styles .happyforms-part.happyforms-part--error textarea{border-color:#f23000;border-color:var(--happyforms-color-error)}.happyforms-styles .happyforms-part.display-type--block .happyforms-part__el{width:100%}.happyforms-styles .happyforms-part ::-webkit-input-placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part ::-moz-placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part ::-ms-placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part ::placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part-el-wrap{position:relative}.happyforms-styles .happyforms-part-wrap{position:relative}.happyforms-styles .happyforms-part .option-label{border-radius:6px;line-height:1.3125;line-height:calc(var(--happyforms-part-value-font-size) * 1.3125);font-size:16px;font-size:var(--happyforms-part-value-font-size);overflow-wrap:anywhere}.happyforms-styles .happyforms-part .happyforms-part-option:last-of-type .option-label{margin-bottom:0}.happyforms-styles .option-label input[type=text]{position:relative;top:0;padding-top:1px;padding-bottom:1px;border:0;border-radius:0!important}.happyforms-styles .option-label input[type=text]:focus{border-top:0;border-right:0;border-left:0;box-shadow:none}.happyforms-styles .option-label input{top:3px}.happyforms-styles .happyforms-part--checkbox .happyforms-part-option,.happyforms-styles .happyforms-part--radio .happyforms-part-option{margin-bottom:10px}.happyforms-styles .happyforms-part--checkbox label.option-label,.happyforms-styles .happyforms-part--radio label.option-label{margin-bottom:0}.happyforms-part .option-label .happyforms-remaining-choice,.happyforms-styles .happyforms-part .option-label .label{font-weight:400;font-size:16px;font-size:var(--happyforms-part-value-font-size);color:#000;color:var(--happyforms-color-part-description)}.happyforms-styles .happyforms-part .option-label input:checked+.checkmark{background-color:#000;background-color:var(--happyforms-color-choice-checkmark-bg-focus)}.happyforms-styles .happyforms-part-option__description{font-size:var(--happyforms-part-description-font-size);color:#000;color:var(--happyforms-color-part-description)}.happyforms-styles .happyforms-part .happyforms-part-option label.heading-label{font-weight:400;font-style:normal;font-size:16px;font-size:var(--happyforms-part-value-font-size);color:#000;color:var(--happyforms-color-part-title)}.happyforms-styles .happyforms-part .checkmark{z-index:5;display:flex;align-items:center;justify-content:center;width:21px;min-width:21px;height:21px;margin:calc((var(--happyforms-part-value-font-size) * 1.3125 - 21px)/ 2) 0;border-radius:50%;border:1px solid;border-color:#dbdbdb;border-color:var(--happyforms-color-part-border);font-weight:700;font-size:14px;font-size:var(--happyforms-part-description-font-size);background-color:#fff;background-color:var(--happyforms-color-choice-checkmark-bg);color:#000;color:var(--happyforms-color-choice-checkmark-bg-focus)}.happyforms-styles .happyforms-part .checkmark svg{display:none;width:10px}.happyforms-styles .happyforms-part--checkbox .checkmark,.happyforms-styles .happyforms-part--legal .checkmark,.happyforms-styles .happyforms-part--table.happyforms-selection--multiple .checkmark{border-radius:6px}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--checkbox .checkmark,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--legal .checkmark,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--table.happyforms-selection--multiple .checkmark{border-radius:0}.happyforms-styles .happyforms-part .option-label input:checked+.checkmark{background-color:#000;background-color:var(--happyforms-color-choice-checkmark-bg-focus)}.happyforms-styles .happyforms-part .option-label input:focus+.checkmark{border-color:#7aa4ff;border-color:var(--happyforms-color-part-border-focus);box-shadow:inset 0 0 0 1px #7aa4ff;box-shadow:inset 0 0 0 1px var(--happyforms-color-part-border-focus)}.happyforms-styles .happyforms-part input:checked+.checkmark svg{display:block;color:#fff;color:var(--happyforms-color-choice-checkmark-color)}.happyforms-radio-circle{display:none;width:7px;height:7px;border-radius:50%;background-color:#fff;background-color:var(--happyforms-color-choice-checkmark-color)}.happyforms-styles .happyforms-part--poll input:checked+.checkmark .happyforms-radio-circle,.happyforms-styles .happyforms-part--radio input:checked+.checkmark .happyforms-radio-circle,.happyforms-styles .happyforms-part--table:not(.happyforms-selection--multiple) input:checked+.checkmark .happyforms-radio-circle{display:block}.happyforms-styles .happyforms-part input:checked+.checkmark svg{display:block;color:#fff;color:var(--happyforms-color-choice-checkmark-color)}.happyforms-styles .happyforms-part__select-bg{padding:1px 0 2px;border:1px solid;border-radius:6px;border-color:#dbdbdb;border-color:var(--happyforms-color-part-border);background-color:#fff;background-color:var(--happyforms-color-part-background)}.happyforms-styles .happyforms-part__select-wrap:after{border-top:6px solid #000;border-top-color:var(--happyforms-color-part-value)}.happyforms-styles .happyforms-part select.happyforms-select:invalid{color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part select.happyforms-select:focus{outline-width:1px;outline-color:#000;outline-color:var(--happyforms-color-part-value)}.happyforms-styles .happyforms-part-date__time-input .happyforms-spinner-arrow{border-top:6px solid #000;border-top:6px solid var(--happyforms-color-part-value);background-position:left top;background-size:cover}.happyforms-styles button[type=submit].happyforms-button--submit,.happyforms-styles button[type=submit][disabled].happyforms-button--submit{-webkit-appearance:none;height:auto;padding:15px 30px;border-radius:4px!important;border:1px solid transparent!important;border-color:var(--happyforms-color-submit-border)!important;font-weight:400;font-style:normal;font-size:16px;font-size:var(--happyforms-submit-button-font-size);color:#fff;color:var(--happyforms-color-submit-text);background-color:#000;background-color:var(--happyforms-color-submit-background);background:#000;background:var(--happyforms-color-submit-background);text-transform:none;transition-property:all;transition-duration:.25s;transition-duration:var(--happyforms-transition-duration);transition-timing-function:ease-in;white-space:normal;overflow-wrap:anywhere}.happyforms-styles button[type=submit]:not(:hover):not(:active):not(.has-background){background-color:#000;background-color:var(--happyforms-color-submit-background);background:#000;background:var(--happyforms-color-submit-background);color:#fff;color:var(--happyforms-color-submit-text)}.happyforms-styles button[type=submit].happyforms-button--submit:focus,.happyforms-styles button[type=submit].happyforms-button--submit:hover{cursor:pointer;border-radius:4px;border-color:transparent!important;border-color:var(--happyforms-color-submit-border)!important;background-color:#000;background-color:var(--happyforms-color-submit-background-hover);background:#000;background:var(--happyforms-color-submit-background-hover);text-transform:none;text-decoration:none;color:#fff;color:var(--happyforms-color-submit-text-hover)}.happyforms-styles button[type=submit][disabled].happyforms-button--submit:focus,.happyforms-styles button[type=submit][disabled].happyforms-button--submit:hover{cursor:default;background-color:#407fff;background-color:var(--happyforms-color-submit-background);background:#407fff;background:var(--happyforms-color-submit-background);color:#fff;color:var(--happyforms-color-submit-text)}.happyforms-styles .happyforms-visuallyhidden{position:absolute;border:0;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.happyforms-styles .happyforms-message-notices .happyforms-message-notice{padding:20px 15px;border-radius:6px;background-color:transparent;color:#454545}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-message-notices .happyforms-message-notice{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-message-notices .happyforms-message-notice{padding:20px 25px;border-radius:25px}.happyforms-styles .happyforms-message-notices .success{background-color:#ebf9f0;background-color:var(--happyforms-color-success-notice)}.happyforms-styles .happyforms-message-notices .success h2{color:#1eb452!important;color:var(--happyforms-color-success-notice-text)!important}.happyforms-styles .happyforms-message-notices .error{background-color:#ffeeea;background-color:var(--happyforms-color-error-notice)}.happyforms-styles .happyforms-message-notices .error h2{color:#f23000!important;color:var(--happyforms-color-error-notice-text)!important}.happyforms-styles .happyforms-message-notices h2{margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important;font-weight:400!important;font-size:16px!important}.happyforms-styles .happyforms-message-notices h2:before{display:none}.happyforms-styles .happyforms-message-notices h2 span{display:block;font-weight:400;font-size:14px}.happyforms-styles .happyforms-form__part .happyforms-message-notices h2{font-weight:400!important;font-size:16px!important;font-size:var(--happyforms-part-value-font-size)!important}.happyforms-styles .happyforms-form__part .happyforms-message-notice.error h2{color:#f23000;color:var(--happyforms-color-error)}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part .happyforms-part__select-bg,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=tel],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part textarea,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{border-radius:0!important}.happyforms-styles.happyforms-form--part-border-radius-square .option-label{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=tel],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part textarea,.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{border-radius:25px!important;padding-left:25px;padding-right:25px}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part textarea{padding:15px}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part .happyforms-part__select-bg{border-radius:25px;padding-left:15px}.happyforms-styles.happyforms-form--part-border-radius-pill .option-label{border-radius:25px}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::-webkit-input-placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::-moz-placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::-ms-placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::-webkit-input-placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::-moz-placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::-ms-placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part--label-inside label .label{font-weight:700;font-size:14px;color:#000;color:var(--happyforms-color-part-title)}.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part textarea,.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{border-top-color:transparent!important;border-left-color:transparent!important;border-right-color:transparent!important;box-shadow:none!important}.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part textarea{transition-duration:0s}.happyforms-styles .happyforms-part input[type=email],.happyforms-styles .happyforms-part input[type=number],.happyforms-styles .happyforms-part input[type=password],.happyforms-styles .happyforms-part input[type=text],.happyforms-styles .happyforms-part textarea{transition:border-color .4s;transition:border-color var(--happyforms-transition-duration)}.happyforms-styles .happyforms-part--label-as_placeholder label{color:#888;color:var(--happyforms-color-part-placeholder);transition-duration:.4s;transition-duration:var(--happyforms-transition-duration)}.happyforms-styles .happyforms-part--label-as_placeholder .happyforms-part__label .label{color:#888;color:var(--happyforms-color-part-placeholder)}.happyforms-styles .happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container label .label,.happyforms-styles .happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container label .label,.happyforms-styles .happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label .label,.happyforms-styles .happyforms-part--select.happyforms-part--filled.happyforms-part--label-as_placeholder .label{font-weight:700;font-size:14px;color:#000;color:var(--happyforms-color-part-value)}.happyforms-styles.happyforms-form--submit-button-border-hide button[type=submit].happyforms-button--submit{border-width:0!important}.happyforms-styles.happyforms-form--submit-button-border-radius-square button[type=submit].happyforms-button--submit,.happyforms-styles.happyforms-form--submit-button-border-radius-square button[type=submit].happyforms-button--submit:hover{border-radius:0!important}.happyforms-styles.happyforms-form--submit-button-border-radius-pill button[type=submit].happyforms-button--submit,.happyforms-styles.happyforms-form--submit-button-border-radius-pill button[type=submit].happyforms-button--submit:hover{border-radius:60px!important}.happyforms-styles.happyforms-form--submit-button-bold .happyforms-part--submit button[type=submit]{font-weight:700}.happyforms-styles.happyforms-form--submit-button-disable-transitions button[type=submit]{transition-duration:0s!important}.happyforms-styles.happyforms-form--submit-button-padding-narrow button[type=submit].happyforms-button--submit{padding:10px 20px}.happyforms-styles.happyforms-form--submit-button-padding-wide button[type=submit].happyforms-button--submit{padding:20px 50px}.happyforms-styles.happyforms-form--submit-button-fullwidth button[type=submit].happyforms-button--submit{padding-left:0;padding-right:0;margin-right:0}.happyforms-styles.happyforms-form--part-title-font-weight-bold .happyforms-part__label .label{font-weight:700}.happyforms-styles .happyforms-custom-select input[readonly=readonly]{cursor:pointer}.happyforms-styles .happyforms-custom-select-dropdown{background-color:#fff;background-color:var(--happyforms-color-dropdown-bg-color);border:1px solid #dbdbdb;border:1px solid var(--happyforms-color-part-border);border-radius:6px}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-custom-select-dropdown{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-custom-select-dropdown{border-radius:25px}.happyforms-styles .happyforms-custom-select-dropdown li{transition:background-color .2s ease-in;color:#000;color:var(--happyforms-color-dropdown-item-text);background-color:#fff;background-color:var(--happyforms-color-dropdown-item-bg);font-size:16px;font-size:var(--happyforms-part-value-font-size)}.happyforms-styles .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder{color:#888;color:var(--happyforms-color-part-placeholder)}.happyforms-styles .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item.active,.happyforms-styles .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item:hover{color:#000;color:var(--happyforms-color-dropdown-item-text-hover);background-color:#f4f4f5;background-color:var(--happyforms-color-dropdown-item-bg-hover)}.happyforms-styles .happyforms-part-preview .happyforms-part__label .label{font-weight:700;color:#000;color:var(--happyforms-color-table-row-odd-text)}.happyforms-styles .happyforms-part-preview .happyforms-part__el-preview{font-size:16px;font-size:var(--happyforms-part-value-font-size)}.happyforms-styles .happyforms-part-preview{background-color:#fcfcfc;background-color:var(--happyforms-color-table-row-odd)}.happyforms-styles .happyforms-part-preview:nth-child(2n){background-color:#efefef;background-color:var(--happyforms-color-table-row-even)}.happyforms-styles .happyforms-part-preview:nth-child(2n) .happyforms-part__label .label{color:#000;color:var(--happyforms-color-table-row-even-text)}.happyforms-styles .happyforms-form-preview>p{font-size:16px;font-size:var(--happyforms-part-value-font-size)}.happyforms-part-error-notice p{font-size:16px;font-size:var(--happyforms-part-value-font-size);color:#f23000;color:var(--happyforms-color-error)}.happyforms-part-error-notice p svg{color:#f23000;color:var(--happyforms-color-error)}.happyforms-styles .happyforms-input-group__suffix a.happyforms-plain-button,.happyforms-styles .happyforms-input-group__suffix button.happyforms-plain-button{font-size:16px;font-size:var(--happyforms-part-value-font-size);color:var(--happyforms-color-part-value)}.happyforms-styles .happyforms-input-group__prefix,.happyforms-styles .happyforms-input-group__suffix{font-size:16px;font-size:var(--happyforms-part-value-font-size);background:#e8e8e8}.happyforms-styles.happyforms-form .happyforms-part .happyforms-input{position:relative;flex:1;width:100%}.happyforms-styles.happyforms-styles.happyforms-form--part-border-radius-square button.happyforms-pair-group__button{border-radius:0}.happyforms-styles.happyforms-styles.happyforms-form--part-border-radius-pill button.happyforms-pair-group__button{border-radius:25px}.happyforms-styles button.happyforms-pair-group__button:hover{background-color:#000;background-color:var(--happyforms-color-submit-background-hover)}.happyforms-styles.happyforms-form .happyforms-part .happyforms-input-group.with-prefix .happyforms-input>input{padding-left:10px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}.happyforms-styles.happyforms-form .happyforms-part .happyforms-input-group.with-suffix .happyforms-input>input{padding-right:10px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-input-group__prefix{border-top-left-radius:0;border-bottom-left-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-input-group__prefix{border-top-left-radius:25px;border-bottom-left-radius:25px}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-input-group__suffix{border-top-right-radius:0;border-bottom-right-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-input-group__suffix{border-top-right-radius:25px;border-bottom-right-radius:25px}.happyforms-part__char-counter{font-size:14px;font-size:var(--happyforms-part-description-font-size);color:#454545;color:var(--happyforms-color-part-description)}.happyforms-styles .happyforms-part--rich_text div.mce-toolbar-grp{border-radius:6px;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#fff;border-color:#dbdbdb!important;border-color:var(--happyforms-color-part-border)!important}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--rich_text div.mce-toolbar-grp{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part--rich_text div.mce-toolbar-grp{border-radius:25px;border-bottom-left-radius:0;border-bottom-right-radius:0}.happyforms-styles div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link{border-color:#7aa4ff!important;border-color:var(--happyforms-color-part-border-focus)!important}.happyforms-styles .happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-down:before{border-top-color:#7aa4ff;border-top-color:var(--happyforms-color-part-border-focus)}.happyforms-styles div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-input input::placeholder{color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn,.happyforms-styles .happyforms-part--rich_text .qt-dfw,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary{padding:2px;background-color:#fff;border-color:#fff}.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active:hover,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:active,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-styles .happyforms-part--rich_text .qt-dfw.active,.happyforms-styles .happyforms-part--rich_text .qt-dfw.active:hover,.happyforms-styles .happyforms-part--rich_text .qt-dfw:focus,.happyforms-styles .happyforms-part--rich_text .qt-dfw:hover,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover{border-color:transparent;border-radius:6px;background-color:#efefef}.happyforms-styles .happyforms-editor-toolbar-link svg,.happyforms-styles .happyforms-part--rich_text .mce-btn svg{fill:#000}.happyforms-styles .happyforms-part--rich_text .happyforms-visual-editor{padding-bottom:1.5px;border:0}.happyforms-styles .happyforms-part--rich_text .mce-edit-area{border-bottom-width:1.5px;border:1px solid #dbdbdb!important;border-radius:6px;border-top-left-radius:0;border-top-right-radius:0;transition:border-color .25s;transition:border-color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--rich_text .mce-edit-area{border-radius:0}.happyforms-styles .happyforms-part--rich_text.focus .mce-edit-area{border-color:#7aa4ff!important;border-color:var(--happyforms-color-part-border-focus)!important;box-shadow:inset 0 0 0 1px #7aa4ff;box-shadow:inset 0 0 0 1px var(--happyforms-color-part-border-focus)}.happyforms-styles .happyforms-part--rich_text .mce-edit-area{background-color:#fff!important;background-color:var(--happyforms-color-part-background)!important}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-edit-area{border-bottom-left-radius:25px;border-bottom-right-radius:25px}.happyforms-styles .happyforms-part--rich_text.focus .mce-edit-area{background-color:#fff!important;background-color:var(--happyforms-color-part-background-focus)!important}.happyforms-styles .happyforms-part--rich_text .mce-statusbar{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.happyforms-styles .happyforms-part--rich_text .mce-statusbar .mce-path:first-child{display:none}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--rich_text .mce-statusbar{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-statusbar{border-bottom-left-radius:25px;border-bottom-right-radius:25px}.happyforms-styles.happyforms-form--part-border-off .happyforms-part--rich_text .happyforms-visual-editor{padding-bottom:1px}.happyforms-part--email_integration .option-label .label p,.happyforms-part--legal .option-label .label p,.happyforms-part--mailchimp .option-label .label p,.happyforms-part--signature .option-label .label p{margin-top:0}.happyforms-part--email_integration .option-label .label p:last-child,.happyforms-part--legal .option-label .label p:last-child,.happyforms-part--mailchimp .option-label .label p:last-child,.happyforms-part--signature .option-label .label p:last-child{margin-bottom:0}.happyforms-styles button.happyforms-text-button{-webkit-appearance:none;height:auto;font-weight:400;font-style:normal;font-size:16px;background-color:#000;background-color:var(--happyforms-color-submit-background);background:#000;background:var(--happyforms-color-submit-background);text-transform:none;transition-property:all;transition-duration:.25s;transition-duration:var(--happyforms-transition-duration);transition-timing-function:ease-in;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;text-shadow:none;text-decoration:none;letter-spacing:0;white-space:normal;overflow-wrap:anywhere;outline:0}.happyforms-styles button.happyforms-text-button{background-color:transparent!important;padding:0;font-size:var(--happyforms-part-value-font-size);color:#000!important;color:var(--happyforms-color-part-value)!important;border:0 solid transparent!important;width:auto!important;border-width:0!important;font-weight:400!important;text-decoration:underline;display:inline-block;cursor:pointer}:root{--happyforms-form-width:100%}.happyforms-flex{display:flex;flex-flow:row wrap;align-items:flex-start;max-width:100%}.happyforms-form--hide-title .happyforms-flex{padding-top:0}.happyforms-form{max-width:100%;max-width:var(--happyforms-form-width);margin:0 auto;border-style:solid;border-width:0}.happyforms-form form{margin:0;padding:0;background-color:transparent}.happyforms-form.happyforms-form--padding-narrow{padding:1%}.happyforms-form.happyforms-form--padding-wide{padding:3.5%}.happyforms-form form.happyforms-form--submitting{opacity:.5}.happyforms-form--direction-rtl{direction:rtl}.happyforms-flex>input[type=checkbox]{display:none!important}h3.happyforms-form__title{margin:0;padding:0}.happyforms-form--hide-title h3.happyforms-form__title{display:none}.happyforms-form--title-text-align-right h3.happyforms-form__title{text-align:right}.happyforms-form--title-text-align-center h3.happyforms-form__title{text-align:center}.happyforms-form__part{position:relative;display:block;box-sizing:border-box;width:100%;margin-bottom:15px;padding:5px 1%}.happyforms-form__part:last-child{margin-bottom:0}@media screen and (min-width:800px){.happyforms-part--width-half{width:50%}.happyforms-part--width-third{width:33.333%}.happyforms-part--width-quarter{width:25%}}.happyforms-part--width-half,.happyforms-part--width-third{align-self:flex-start}.happyforms-part--width-auto{align-self:flex-start;flex-grow:1;width:auto;max-width:75%}.happyforms-part--width-auto+.happyforms-part--recaptcha,.happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-part--width-auto+.happyforms-part--submit{align-self:center;width:auto!important;margin-bottom:0!important;padding-top:5px;padding-bottom:0}.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-part--width-auto+.happyforms-part--recaptcha{top:-13px}.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--submit{top:-10px}.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha{top:3px}.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--submit{top:-25px}.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha{top:-23px}.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit{top:-45px}.happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{width:100%;padding:17px 50px}.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--submit{left:-1.5%;padding-left:0;padding-right:0}.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--submit{left:-3.5%;padding-left:0}.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--submit{left:-1%;padding-left:0}.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{padding-top:8px;padding-bottom:9px;border-top-left-radius:0;border-bottom-left-radius:0}.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-wide .happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{padding-top:13px;padding-bottom:15px}.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-narrow .happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{padding-top:3px;padding-bottom:4px}.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-as_placeholder+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-as_placeholder+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-inside+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-inside+.happyforms-part--submit button[type=submit]{padding-top:16px;padding-bottom:18px}.happyforms-part__label{display:inline-block;margin-bottom:15px}.happyforms-part__label .happyforms-optional,.happyforms-part__label .happyforms-required,.happyforms-part__label .label{padding:0;white-space:normal}.happyforms-form__part[data-happyforms-required] .happyforms-part__label .happyforms-optional{display:none}.happyforms-form__part .happyforms-part__label .happyforms-required{display:none}.happyforms-form__part[data-happyforms-required] .happyforms-part__label .happyforms-required{display:inline-block}.happyforms-part__description{display:block;margin:-3px 0 10px}.happyforms-part--focus-reveal-description .happyforms-part__description{display:none}.happyforms-form__part.focus .happyforms-part__description,.happyforms-part--focus-reveal-description input:focus+.happyforms-part__description,.happyforms-part--focus-reveal-description textarea:focus+.happyforms-part__description{display:block}.happyforms-form--part-description-text-align-center .happyforms-part__description{text-align:center}.happyforms-form--part-description-text-align-right .happyforms-part__description{text-align:right}.happyforms-part input[type=email],.happyforms-part input[type=number],.happyforms-part input[type=password],.happyforms-part input[type=range],.happyforms-part input[type=tel],.happyforms-part input[type=text],.happyforms-part textarea,.happyforms-part.happyforms-part select.happyforms-select{width:100%;box-sizing:border-box;max-width:none}.happyforms-part.happyforms-part select.happyforms-select{appearance:none!important;-moz-appearance:none!important;-webkit-appearance:none!important;background-image:none!important}.happyforms-part textarea{height:auto}.happyforms-form--part-value-text-align-center .happyforms-part input[type=email],.happyforms-form--part-value-text-align-center .happyforms-part input[type=number],.happyforms-form--part-value-text-align-center .happyforms-part input[type=password],.happyforms-form--part-value-text-align-center .happyforms-part input[type=tel],.happyforms-form--part-value-text-align-center .happyforms-part input[type=text],.happyforms-form--part-value-text-align-center .happyforms-part textarea,.happyforms-form--part-value-text-align-center .happyforms-part--choice .option-label{text-align:center}.happyforms-form--part-value-text-align-center .happyforms-part--choice .happyforms-part__el{justify-content:center}.happyforms-form--part-value-text-align-right .happyforms-part input[type=email],.happyforms-form--part-value-text-align-right .happyforms-part input[type=number],.happyforms-form--part-value-text-align-right .happyforms-part input[type=password],.happyforms-form--part-value-text-align-right .happyforms-part input[type=tel],.happyforms-form--part-value-text-align-right .happyforms-part input[type=text],.happyforms-form--part-value-text-align-right .happyforms-part textarea,.happyforms-form--part-value-text-align-right .happyforms-part--choice .option-label{text-align:right}.happyforms-form--part-value-text-align-right .happyforms-part--choice .happyforms-part__el{justify-content:flex-end}.happyforms-part.happyforms-part--error input[type=email],.happyforms-part.happyforms-part--error input[type=number],.happyforms-part.happyforms-part--error input[type=password],.happyforms-part.happyforms-part--error input[type=range],.happyforms-part.happyforms-part--error input[type=tel],.happyforms-part.happyforms-part--error input[type=text],.happyforms-part.happyforms-part--error textarea{border-color:#ff7550}.happyforms-part.display-type--block .happyforms-part__el{width:100%}.happyforms-part-el-wrap{position:relative}.happyforms-part-wrap{position:relative}.happyforms-part--label-below .happyforms-part-wrap{display:flex;flex-flow:row wrap-reverse;align-content:flex-end}.happyforms-part--label-below .happyforms-part__label{order:2;margin-top:10px;margin-bottom:5px}.happyforms-part--label-below .happyforms-part__description{order:1;margin-top:0}.happyforms-part--label-below.happyforms-part--date .happyforms-part__el{width:100%;order:2}.happyforms-part--date .happyforms-part__description{width:100%}.happyforms-part--label-left .happyforms-part__description{width:100%}.happyforms-part--label-left .happyforms-part-wrap{display:flex;flex-flow:row;flex-wrap:wrap}@media screen and (min-width:800px){.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__label-container{float:none;width:25%;margin-bottom:0;align-self:flex-start}}.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__el{width:75%}.happyforms-part--label-left.happyforms-part--date .happyforms-custom-select{width:100%}@media screen and (max-width:800px){.happyforms-part--label-left .happyforms-part-wrap{flex-flow:column}.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__label{align-self:flex-start}.happyforms-part--label-left .happyforms-custom-select,.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__el{width:100%}}.happyforms-part--label-hidden .happyforms-part-wrap .happyforms-part__label{display:none!important}.happyforms-part .option-label{display:flex;align-items:center;position:relative;cursor:pointer;padding:0 5px 5px 0}.happyforms-part--choice .option-label{margin-right:20px}.happyforms-part--choice.happyforms-part-options-width--full .option-label{margin-right:0}.happyforms-styles .happyforms-part .happyforms-part-option .option-label{align-items:flex-start}.happyforms-styles .happyforms-part .happyforms-part-option.disabled-option .option-label,.happyforms-styles .happyforms-part .happyforms-table__cell.disabled-option .option-label{cursor:default}@media screen and (max-width:800px){.happyforms-part--choice .option-label{margin-right:0}}.happyforms-part--choice .option-label input:focus{outline:0}.happyforms-part .option-label .label-wrap{position:relative;display:inline-block;padding:0 10px;white-space:normal;color:inherit}.happyforms-form--direction-rtl .happyforms-part--choice .option-label .label{margin-right:0}.happyforms-part-option:last-of-type{margin-bottom:0!important}.happyforms-part-option__description{display:block;width:auto;max-width:400px;margin-top:0;margin-left:31px;flex-basis:100%;font-weight:400;font-weight:var(--happyforms-form-font-weight);line-height:1.4}.happyforms-part--choice.display-type--block .happyforms-part-option__description{max-width:none}.happyforms-part.display-type--block .option-label{display:flex;margin-right:0;flex-wrap:wrap}.happyforms-part .happyforms-part-option.option-heading{width:100%}.happyforms-part--choice .happyforms-part__el{display:flex;flex-flow:row wrap}@media screen and (max-width:800px){.happyforms-part--choice .happyforms-part__el{flex-flow:column wrap}}.happyforms-part--choice{margin-bottom:0}.happyforms-part--choice.display-type--block{margin-bottom:15px}.happyforms-part--choice.happyforms-part-options-width--full .happyforms-part__option{width:100%}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__el,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__el,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__el{margin:0 -1%}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option{padding:0 1%}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option label,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option label,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option label{margin-right:0}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option{width:50%}.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option{width:33.333%}.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option{width:25%}.happyforms-part--choice .happyforms-part__el .happyforms-part__description{flex:0 1 100%;width:100%;margin-top:-5px;margin-bottom:20px}.happyforms-part--choice.display-type--block .happyforms-part__el .happyforms-part__description{flex:0;width:auto;margin-top:5px;margin-bottom:0}@media screen and (max-width:800px){.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option{width:100%}}.happyforms-part--choice.display-type--block .happyforms-part__el{display:flex!important;flex-flow:column wrap}.happyforms-part .checkmark svg{display:none}.happyforms-part--legal .option-label p:last-child{margin-bottom:0}.happyforms-part--label-below .happyforms-custom-select,.happyforms-part--label-below .happyforms-part__el,.happyforms-part--label-below input,.happyforms-part--label-below textarea{order:3}.happyforms-part--label-below .happyforms-custom-select,.happyforms-part--label-below .happyforms-part__el{width:100%}.happyforms-form--part-title-text-align-center .happyforms-part__label{text-align:center}.happyforms-form--part-title-text-align-center .happyforms-part--label-above .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-as_placeholder .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-below .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-inside .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-show .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-above .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-as_placeholder .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-show .happyforms-part__label{width:100%}.happyforms-form--part-title-text-align-right .happyforms-part--label-as_placeholder .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-inside .happyforms-part__label{width:calc(100% - 20px)}.happyforms-form--part-title-text-align-right.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder .happyforms-part__label{width:calc(100% - 30px)}.happyforms-form--part-title-text-align-center .happyforms-part--label-left .happyforms-part__label{align-self:flex-start}.happyforms-form--part-title-text-align-right .happyforms-part__label{text-align:right}.happyforms-form--part-title-text-align-right .happyforms-part--label-left .happyforms-part__label{align-self:flex-start;margin-bottom:10px;padding-right:15px}.happyforms-part--label-hidden .happyforms-part-wrap>.happyforms-part__label{display:none!important}.happyforms-part__select-wrap{position:relative;flex:1;padding:0 0 0 2%}.happyforms-part__select-wrap{height:100%}.happyforms-part__select-bg{padding:1px 0 2px;border:1px solid;border-color:#dbdbdb}.happyforms-part__select-wrap:first-of-type{padding-left:0!important}.happyforms-part__select-wrap:after{content:'';position:absolute;top:44%;right:15px;z-index:1;display:block;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid}.happyforms-part select:focus{outline-width:1px;outline-color:#000}.happyforms-part__select-wrap:last-child{padding-right:0}.happyforms-part--submit{display:flex;flex-flow:row wrap;align-items:center;width:100%;margin-bottom:0;padding-top:10px}.happyforms-message-notices{padding:0 1%;margin:0 0 25px 0}form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice{width:100%;box-sizing:border-box}form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice a{border:0}.happyforms-flex>.happyforms-message-notices p:last-child{margin-bottom:0}.happyforms-form__part .happyforms-message-notice.error h2{color:#ff7550}.happyforms-form__title+.happyforms-message-notices{margin-top:25px}.happyforms-part--label-inside .happyforms-part__label-container{position:absolute;top:8px;left:10px;z-index:2;width:98%}.happyforms-part--label-as_placeholder input,.happyforms-part--label-as_placeholder textarea,.happyforms-part--label-inside input,.happyforms-part--label-inside textarea{padding-top:30px!important;padding-bottom:7px!important}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder input,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder textarea,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-inside input,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-inside textarea{padding-top:22px!important;padding-bottom:5px!important}.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder input,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder textarea,.happyforms-form--part-inner-padding-wide .happyforms-part--label-inside input,.happyforms-form--part-inner-padding-wide .happyforms-part--label-inside textarea{padding-top:30px!important;padding-bottom:10px!important}.happyforms-part input[type=email],.happyforms-part input[type=number],.happyforms-part input[type=password],.happyforms-part input[type=text],.happyforms-part textarea{margin-bottom:0;transition:border-color .4s;transition:border-color var(--happyforms-transition-duration)}.happyforms-part--label-below .happyforms-part__label-container{width:100%}.happyforms-part--label-as_placeholder label{transition-duration:.4s}.happyforms-part--label-as_placeholder ::-webkit-input-placeholder{opacity:0}.happyforms-part--label-as_placeholder ::-moz-placeholder{opacity:0}.happyforms-part--label-as_placeholder ::-ms-placeholder{opacity:0}.happyforms-part--label-as_placeholder ::placeholder{opacity:0}.happyforms-part--label-as_placeholder label{position:absolute;left:11px;top:23px;z-index:5;transition-property:top}.happyforms-form--direction-rtl .happyforms-part--label-as_placeholder label{left:auto;right:11px}.happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container>label,.happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container>label,.happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label,.happyforms-part--select.happyforms-part--label-as_placeholder.happyforms-part--filled label{top:8px}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder label{top:19px;left:5px}.happyforms-form--direction-rtl.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder label{right:5px;left:auto}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label{top:7px}.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder label{top:25px;left:15px}.happyforms-form--direction-rtl.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder label{right:15px;left:auto}.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label{top:12px}.happyforms-form--part-outer-padding-narrow .happyforms-form__part{margin-bottom:5px;padding:0 .5%}.happyforms-form--part-outer-padding-narrow .happyforms-message-notices{padding-left:.5%;padding-right:.5%}.happyforms-form--part-outer-padding-narrow .happyforms-part__select-wrap{padding:0}.happyforms-form--part-outer-padding-narrow .happyforms-part-option{margin-right:-5px}.happyforms-form--part-outer-padding-narrow .happyforms-part.display-type--block .happyforms-part-option{margin-right:0;margin-bottom:5px}.happyforms-form--part-outer-padding-narrow .happyforms-part--choice .option-label{margin-right:15px}.happyforms-form--part-outer-padding-wide .happyforms-form__part{padding:20px 3%}.happyforms-form--part-outer-padding-wide .happyforms-message-notices{padding-left:3%;padding-right:3%}.happyforms-form--part-outer-padding-wide .happyforms-part .happyforms-part-option{margin-right:15px}.happyforms-form--part-outer-padding-wide .happyforms-part.display-type--block .happyforms-part-option{margin-right:0;margin-bottom:35px}.happyforms-form--part-inner-padding-narrow .happyforms-part .option-label,.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=email],.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=number],.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=tel],.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=text],.happyforms-form--part-inner-padding-narrow .happyforms-part textarea,.happyforms-form--part-inner-padding-narrow .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{padding:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--placeholder .happyforms-part__el{padding:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--legal label{margin-left:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part__label{margin-bottom:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-below .happyforms-part__label{margin-top:5px}.happyforms-form--part-inner-padding-wide .happyforms-part .option-label,.happyforms-form--part-inner-padding-wide .happyforms-part input[type=email],.happyforms-form--part-inner-padding-wide .happyforms-part input[type=number],.happyforms-form--part-inner-padding-wide .happyforms-part input[type=tel],.happyforms-form--part-inner-padding-wide .happyforms-part input[type=text],.happyforms-form--part-inner-padding-wide .happyforms-part textarea,.happyforms-form--part-inner-padding-wide .happyforms-part--placeholder .happyforms-part__el,.happyforms-form--part-inner-padding-wide .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{padding:15px}.happyforms-form--part-inner-padding-wide .happyforms-part--legal .option-label{padding-left:0}.happyforms-form--part-inner-padding-wide .happyforms-part--legal .option-label .label{padding-left:20px}.happyforms-form--part-inner-padding-wide .happyforms-part .happyforms-part__select-wrap:after{top:45%}.happyforms-form--part-hide-labels .happyforms-part__label{display:none}.happyforms-form--submit-button-fullwidth button[type=submit].happyforms-button--submit{width:100%}button[type=submit][disabled].happyforms-button--submit{cursor:default}.happyforms-form--submit-button-align-center .happyforms-part--submit{text-align:center}.happyforms-form--submit-button-align-right .happyforms-part--submit{text-align:right}.happyforms-part--rating .happyforms-visuallyhidden,.ui-helper-hidden-accessible{position:absolute;border:0;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.widget button[type=submit].happyforms-button--submit,.widget button[type=submit][disabled].happyforms-button--submit,.widget button[type=submit][disabled].happyforms-button--submit:hover{width:100%}.happyforms-custom-select input[readonly=readonly]{cursor:pointer}.happyforms-custom-select-dropdown{display:none;position:absolute;top:calc(100% + 2px);left:0;z-index:10;list-style:none;margin:0!important;padding:5px 0!important;text-align:left;background-color:#fff;border:1px solid #dbdbdb;white-space:nowrap;width:100%;max-height:250px;overflow-y:scroll}.happyforms-custom-select .happyforms-part__select-wrap input[data-searchable=false]{cursor:pointer}.happyforms-part__select-wrap{cursor:pointer}.happyforms-custom-select-dropdown.active{display:block!important}.happyforms-custom-select-dropdown li{cursor:pointer;display:flex;align-items:center;margin:0;padding:5px 10px;min-height:35px;color:#000;background-color:#fff;white-space:normal;overflow-wrap:anywhere}.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder{color:#888}.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__not-found{display:none;cursor:default}.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item.active,.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item:hover{color:#000;background-color:#dbdbdb}.happyforms-part--with-autocomplete .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder,.happyforms-part-date--required .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder,.happyforms-part-select--required .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder{display:none}.happyforms-part-preview .happyforms-part__label{cursor:default;margin-bottom:10px}.happyforms-part-preview .happyforms-part__label .label{font-weight:700}.happyforms-form-preview .happyforms-part--submit{margin-top:30px}.happyforms-part--submit *{margin-right:20px}.happyforms-form--submit-button-align-center .happyforms-part--submit,.happyforms-form--submit-button-fullwidth .happyforms-part--submit{flex-flow:column wrap;align-items:center}.happyforms-form--submit-button-align-center .happyforms-part--submit a,.happyforms-form--submit-button-fullwidth .happyforms-part--submit a{order:2;margin-top:10px;margin-right:0}.happyforms-form--submit-button-align-right .happyforms-part--submit{justify-content:flex-end}.happyforms-form--submit-button-align-center .happyforms-part--submit input,.happyforms-form--submit-button-align-right .happyforms-part--submit input{margin-right:0}.happyforms-form--submit-button-align-right .happyforms-part--submit input+a{margin-left:20px;margin-right:0}@media screen and (max-width:800px){.happyforms-form-preview .happyforms-part--submit{flex-flow:column wrap}.happyforms-form-preview .happyforms-part--submit input{margin-right:0}}.happyforms-hide{display:none}.happyforms-part-preview{margin-bottom:0;padding:10px 1%;margin:0}.happyforms-part-preview{background-color:#fcfcfc}.happyforms-part-preview+.happyforms-part--recaptcha{margin-top:20px}.happyforms-part-preview:nth-child(2n){background-color:#efefef}.happyforms-part-preview:nth-child(2n) .happyforms-part__label .label{color:#000}.happyforms-form-preview>p{padding:45px 1% 10px}.happyforms-part__char-counter{display:none;margin-top:5px;pointer-events:none}.happyforms-part .happyforms-remaining-choice,.happyforms-part__char-counter .counter-label{text-transform:lowercase}.happyforms-part--checkbox .option-label .label-wrap,.happyforms-part--radio .option-label .label-wrap{padding-right:5px;flex:1}.happyforms-custom-select-dropdown .happyforms-remaining-choice{padding-left:5px}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#eee;clip:auto!important;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.happyforms-part-error-notice,.happyforms-part-error-notice p{margin:0;padding:0}.happyforms-part-error-notice{margin:10px 0 0}.happyforms-part-error-notice p{display:flex;flex-flow:row nowrap;align-items:center;-moz-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;line-height:1.2}.happyforms-part-error-notice p svg{content:'';display:inline-block;width:17px;height:17px;margin:0 8px 0 0}.happyforms-input-group{display:flex;align-items:stretch;flex-flow:row wrap}.happyforms-form .happyforms-part .happyforms-input{position:relative;flex:1;width:100%;display:flex;align-items:stretch}.happyforms-form .happyforms-part .happyforms-input-group.with-prefix .happyforms-input>input{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.happyforms-form .happyforms-part .happyforms-input-group.with-suffix .happyforms-input>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.happyforms-input-group__prefix,.happyforms-input-group__suffix{display:flex;align-items:center;max-height:100%;padding:10px 15px;font-weight:400;border:1px solid #dbdbdb;border:1px solid var(--happyforms-color-part-border)!important;background:#e8e8e8;text-shadow:none}.happyforms-input-group__prefix{border-right:0!important;border-top-left-radius:6px;border-bottom-left-radius:6px}.happyforms-input-group__suffix{border-left:0!important;border-top-right-radius:6px;border-bottom-right-radius:6px}.happyforms-input-group__prefix span,.happyforms-input-group__suffix span{word-break:break-word}.happyforms-input-group__suffix.happyforms-input-group__suffix--button{position:relative;padding:0!important}.happyforms-input-group__suffix a.happyforms-plain-button,.happyforms-input-group__suffix button.happyforms-plain-button{outline:0;margin:0;padding:10px 15px;line-height:1;font-weight:400;box-shadow:none;border:0;background-color:transparent;text-transform:none}.happyforms-input-group input{width:100%}.happyforms-part--choice .happyforms-part-option--other input[type=text]{display:none;margin-top:10px!important}.happyforms-part--choice .happyforms-part-option--other input[type=text].hf-show{display:block}.happyforms-part--select .happyforms-part-option--other input[type=text]{display:none;margin-top:10px}.happyforms-part--select .happyforms-part-option--other input[type=text].hf-show{display:block}.happyforms-part--rich_text div.mce-toolbar-grp{position:relative;left:-1px;width:calc(100% - 2px);border:1px solid #dbdbdb!important;border-bottom:0!important}.happyforms-part--rich_text div.mce-panel{background:0 0!important}.happyforms-part--rich_text.focus div.mce-toolbar-grp{left:0}.happyforms-part--rich_text div.mce-toolbar-grp>div{padding:0 2px}.happyforms-part--rich_text.focus div.mce-toolbar-grp>div{padding:0 1px}.happyforms-part--rich_text .mce-top-part::before{box-shadow:none}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link{background-color:#fff;border-width:1px;box-shadow:none;border-radius:6px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up:before{top:-11px;left:50%;border-width:0 11px 11px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-10px;border-width:9px 9px 0}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;left:50%;border-top-color:#fff}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-left:before{left:18px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-left.mce-arrow-down:after{left:19px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up.mce-arrow-right:before{left:auto;right:18px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up:after{left:calc(50% + 0px);top:-10px;border-bottom-color:#fff;border-width:0 10px 10px 10px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up.mce-arrow-left:after{left:19px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-right:after{left:auto;right:19px}.happyforms-editor-toolbar-link .mce-toolbar .mce-btn-group .mce-btn button,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn button{cursor:pointer!important;padding:0!important;background-color:transparent}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-input input{margin:0;padding:5px;border:0;background-color:#fff}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-preview{margin:7px 6px}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-input input::placeholder{color:#888}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn,div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn.mce-primary{border-color:transparent}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn:active,div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn:hover{border-color:transparent!important;border-radius:6px;background-color:#efefef!important}.happyforms-part--rich_text .mce-panel{z-index:1!important}.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn,.happyforms-part--rich_text .qt-dfw,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary{padding:2px;background-color:transparent}.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active:hover,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:active,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-part--rich_text .qt-dfw.active,.happyforms-part--rich_text .qt-dfw.active:hover,.happyforms-part--rich_text .qt-dfw:focus,.happyforms-part--rich_text .qt-dfw:hover,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover{background:0 0;box-shadow:none;color:inherit}.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:focus,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover{box-shadow:none}.happyforms-part--rich_text .mce-btn svg{fill:currentColor}.happyforms-editor-toolbar-link svg{fill:#000}.happyforms-part--rich_text .mce-edit-area,.happyforms-part--rich_text .mce-statusbar .mce-container-body,.happyforms-part--rich_text div.mce-statusbar{border-width:0!important}.happyforms-part--rich_text div.mce-toolbar-grp{background-color:#fff!important}.happyforms-part--rich_text .mce-tinymce.mce-container{border:0;border-width:0!important;box-shadow:none}.happyforms-part--rich_text.focus .mce-tinymce.mce-container{overflow:hidden}.happyforms-part--rich_text .mce-statusbar{position:absolute;left:2px;bottom:2px;width:calc(100% - 4px);background-color:transparent!important}.happyforms-part--rich_text .happyforms-visual-editor{position:relative;overflow:hidden;padding:1px 1px 0;border:1px solid}.happyforms-part--rich_text.focus .happyforms-visual-editor{outline:0}.happyforms-form--part-border-off .happyforms-part--rich_text .happyforms-visual-editor{border-color:transparent}.happyforms-form--part-borders-bottom-only .happyforms-part--rich_text.focus .happyforms-visual-editor{border-bottom-width:1px}.happyforms-form--part-border-off .happyforms-part--rich_text .mce-statusbar .mce-container-body,.happyforms-form--part-border-off .happyforms-part--rich_text div.mce-toolbar-grp{border:0}.happyforms-form--part-borders-bottom-only .happyforms-part--rich_text .happyforms-visual-editor{box-shadow:none;border-top-color:transparent;border-left-color:transparent;border-right-color:transparent}.happyforms-form--part-borders-bottom-only .happyforms-part--rich_text .mce-statusbar .mce-container-body{border-left:0;border-right:0}.happyforms-form--part-border-radius-square .happyforms-part--rich_text .happyforms-visual-editor,.happyforms-form--part-border-radius-square .happyforms-part--rich_text .mce-tinymce.mce-container{border-radius:0!important}.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .happyforms-visual-editor,.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-tinymce.mce-container{border-radius:25px!important}.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-toolbar .mce-btn-group.mce-first{margin-left:10px}.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-container-body .mce-resizehandle{right:10px;bottom:3px}.happyforms-form--part-inner-padding-narrow .happyforms-part--rich_text .mce-content-body{margin-top:0;margin-bottom:0}.happyforms-part--rich_text .mce-edit-area{position:relative;left:-1px;padding:0;overflow:hidden}.happyforms-part--rich_text.focus .mce-edit-area{left:0}.happyforms-form--part-inner-padding-wide .happyforms-part--rich_text.focus .mce-edit-area{width:calc(100% - 10px)}.happyforms-part--rich_text.focus .mce-edit-area iframe{margin-left:-1px}.happyforms-part--rich_text .mce-edit-area iframe{position:relative;top:-5px}.happyforms-form--part-inner-padding-wide .happyforms-part--rich_text .mce-edit-area{padding:0 5px 5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--rich_text .mce-edit-area iframe{top:-10px;left:-5px}.happyforms-part--rich_text .mce-container-body .mce-resizehandle{right:-1px;bottom:-1px;overflow-y:hidden;resize:horizontal}.happyforms-part--rich_text .mce-container-body .mce-resizehandle .mce-i-resize:before{resize:horizontal;overflow-y:scroll;color:transparent}
|
1 |
+
:root{--happyforms-color-primary:#000;--happyforms-color-success-notice:#ebf9f0;--happyforms-color-success-notice-text:#1eb452;--happyforms-color-error:#f23000;--happyforms-color-error-notice:#ffeeea;--happyforms-color-error-notice-text:#f23000;--happyforms-color-notice-text:#454545;--happyforms-color-part-title:#000;--happyforms-color-part-value:#000;--happyforms-color-part-placeholder:#888888;--happyforms-color-part-description:#454545;--happyforms-color-part-border:#dbdbdb;--happyforms-color-part-border-focus:#7aa4ff;--happyforms-color-part-background:#fff;--happyforms-color-part-background-focus:#fff;--happyforms-color-submit-background:#000000;--happyforms-color-submit-background-hover:#000000;--happyforms-color-submit-border:transparent;--happyforms-color-submit-text:#fff;--happyforms-color-submit-text-hover:#fff;--happyforms-color-table-row-odd:#fcfcfc;--happyforms-color-table-row-even:#efefef;--happyforms-color-table-row-odd-text:#000;--happyforms-color-table-row-even-text:#000;--happyforms-color-choice-checkmark-bg:#fff;--happyforms-color-choice-checkmark-bg-focus:#000;--happyforms-color-choice-checkmark-color:#fff;--happyforms-color-dropdown-bg-color:#fff;--happyforms-color-dropdown-item-bg:#fff;--happyforms-color-dropdown-item-text:#000;--happyforms-color-dropdown-item-bg-hover:#f4f4f5;--happyforms-color-dropdown-item-text-hover:#000;--happyforms-color-divider-hr:#ccc;--happyforms-form-title-font-size:32px;--happyforms-form-font-weight:normal;--happyforms-part-title-font-size:16px;--happyforms-part-description-font-size:12px;--happyforms-part-value-font-size:16px;--happyforms-submit-button-font-size:16px;--happyforms-transition-duration:0.25s}.happyforms-form.happyforms-styles form{font-weight:400;font-weight:var(--happyforms-form-font-weight);transition:opacity .25s ease-in-out;transition:opacity var(--happyforms-transition-duration) ease-in-out}.happyforms-styles h3.happyforms-form__title{font-weight:400;font-size:32px;font-size:var(--happyforms-form-title-font-size);color:#000;color:var(--happyforms-color-primary)}.happyforms-styles .happyforms-part__label{line-height:1;font-weight:400;font-size:16px;font-size:var(--happyforms-part-title-font-size);background-color:transparent;overflow-wrap:anywhere}.happyforms-styles .happyforms-part__label .happyforms-optional,.happyforms-styles .happyforms-part__label .label{font-weight:400;font-style:normal;font-size:16px;font-size:var(--happyforms-part-title-font-size);color:#000;color:var(--happyforms-color-part-title);background-color:transparent}.happyforms-styles .happyforms-part__description{line-height:1.4;font-size:14px;font-size:var(--happyforms-part-description-font-size);color:#454545;color:var(--happyforms-color-part-description);overflow-wrap:anywhere}.happyforms-styles .happyforms-part input[type=email],.happyforms-styles .happyforms-part input[type=number],.happyforms-styles .happyforms-part input[type=password],.happyforms-styles .happyforms-part input[type=range],.happyforms-styles .happyforms-part input[type=tel],.happyforms-styles .happyforms-part input[type=text],.happyforms-styles .happyforms-part select.happyforms-select,.happyforms-styles .happyforms-part textarea{margin:0;padding:10px;border-width:1px;border-style:solid;border-color:#dbdbdb!important;border-color:var(--happyforms-color-part-border)!important;border-radius:6px;border-radius:6px!important;box-shadow:none;box-sizing:border-box;font-style:normal;font-size:16px;font-size:var(--happyforms-part-value-font-size);background-color:#fff!important;background-color:var(--happyforms-color-part-background)!important;color:#000;color:var(--happyforms-color-part-value);transition-property:none;transition-duration:.1s;transition-duration:var(--happyforms-transition-duration);transition-timing-function:ease-in}.happyforms-styles .happyforms-part input[type=email],.happyforms-styles .happyforms-part input[type=number],.happyforms-styles .happyforms-part input[type=password],.happyforms-styles .happyforms-part input[type=range],.happyforms-styles .happyforms-part input[type=tel],.happyforms-styles .happyforms-part input[type=text],.happyforms-styles .happyforms-part select.happyforms-select{height:auto!important}.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=range],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel],.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-border-off .happyforms-part select.happyforms-select,.happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea{border-color:transparent!important}.happyforms-styles .happyforms-part input[type=email]:focus,.happyforms-styles .happyforms-part input[type=number]:focus,.happyforms-styles .happyforms-part input[type=password]:focus,.happyforms-styles .happyforms-part input[type=tel]:focus,.happyforms-styles .happyforms-part input[type=text]:focus,.happyforms-styles .happyforms-part select.happyforms-select:focus,.happyforms-styles .happyforms-part textarea:focus{outline:0;border-color:#7aa4ff!important;border-color:var(--happyforms-color-part-border-focus)!important;color:#000;color:var(--happyforms-color-part-value);background-color:#fff!important;background-color:var(--happyforms-color-part-background-focus)!important;box-shadow:inset 0 0 0 1px #7aa4ff;box-shadow:inset 0 0 0 1px var(--happyforms-color-part-border-focus)}.happyforms-styles .happyforms-part select:focus{outline:0}.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=email]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=number]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=password]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=tel]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part input[type=text]:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part select.happyforms-select:focus,.happyforms-styles.happyforms-form--part-border-off .happyforms-part textarea:focus{border-color:transparent!important}.happyforms-styles .happyforms-part.happyforms-part--error input[type=email],.happyforms-styles .happyforms-part.happyforms-part--error input[type=number],.happyforms-styles .happyforms-part.happyforms-part--error input[type=password],.happyforms-styles .happyforms-part.happyforms-part--error input[type=range],.happyforms-styles .happyforms-part.happyforms-part--error input[type=tel],.happyforms-styles .happyforms-part.happyforms-part--error input[type=text],.happyforms-styles .happyforms-part.happyforms-part--error textarea{border-color:#f23000;border-color:var(--happyforms-color-error)}.happyforms-styles .happyforms-part.display-type--block .happyforms-part__el{width:100%}.happyforms-styles .happyforms-part ::-webkit-input-placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part ::-moz-placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part ::-ms-placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part ::placeholder{font-weight:400;font-style:normal;color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part-el-wrap{position:relative}.happyforms-styles .happyforms-part-wrap{position:relative}.happyforms-styles .happyforms-part .option-label{border-radius:6px;line-height:1.3125;line-height:calc(var(--happyforms-part-value-font-size) * 1.3125);font-size:16px;font-size:var(--happyforms-part-value-font-size);overflow-wrap:anywhere}.happyforms-styles .happyforms-part .happyforms-part-option:last-of-type .option-label{margin-bottom:0}.happyforms-styles .option-label input[type=text]{position:relative;top:0;padding-top:1px;padding-bottom:1px;border:0;border-radius:0!important}.happyforms-styles .option-label input[type=text]:focus{border-top:0;border-right:0;border-left:0;box-shadow:none}.happyforms-styles .option-label input{top:3px}.happyforms-styles .happyforms-part--checkbox .happyforms-part-option,.happyforms-styles .happyforms-part--radio .happyforms-part-option{margin-bottom:10px}.happyforms-styles .happyforms-part--checkbox label.option-label,.happyforms-styles .happyforms-part--radio label.option-label{margin-bottom:0}.happyforms-part .option-label .happyforms-remaining-choice,.happyforms-styles .happyforms-part .option-label .label{font-weight:400;font-size:16px;font-size:var(--happyforms-part-value-font-size);color:#000;color:var(--happyforms-color-part-description)}.happyforms-styles .happyforms-part .option-label input:checked+.checkmark{background-color:#000;background-color:var(--happyforms-color-choice-checkmark-bg-focus)}.happyforms-styles .happyforms-part-option__description{font-size:var(--happyforms-part-description-font-size);color:#000;color:var(--happyforms-color-part-description)}.happyforms-styles .happyforms-part .happyforms-part-option label.heading-label{font-weight:400;font-style:normal;font-size:16px;font-size:var(--happyforms-part-value-font-size);color:#000;color:var(--happyforms-color-part-title)}.happyforms-styles .happyforms-part .checkmark{z-index:5;display:flex;align-items:center;justify-content:center;width:21px;min-width:21px;height:21px;margin:calc((var(--happyforms-part-value-font-size) * 1.3125 - 21px)/ 2) 0;border-radius:50%;border:1px solid;border-color:#dbdbdb;border-color:var(--happyforms-color-part-border);font-weight:700;font-size:14px;font-size:var(--happyforms-part-description-font-size);background-color:#fff;background-color:var(--happyforms-color-choice-checkmark-bg);color:#000;color:var(--happyforms-color-choice-checkmark-bg-focus)}.happyforms-styles .happyforms-part .checkmark svg{display:none;width:10px}.happyforms-styles .happyforms-part--checkbox .checkmark,.happyforms-styles .happyforms-part--legal .checkmark,.happyforms-styles .happyforms-part--table.happyforms-selection--multiple .checkmark{border-radius:6px}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--checkbox .checkmark,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--legal .checkmark,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--table.happyforms-selection--multiple .checkmark{border-radius:0}.happyforms-styles .happyforms-part .option-label input:checked+.checkmark{background-color:#000;background-color:var(--happyforms-color-choice-checkmark-bg-focus)}.happyforms-styles .happyforms-part .option-label input:focus+.checkmark{border-color:#7aa4ff;border-color:var(--happyforms-color-part-border-focus);box-shadow:inset 0 0 0 1px #7aa4ff;box-shadow:inset 0 0 0 1px var(--happyforms-color-part-border-focus)}.happyforms-styles .happyforms-part input:checked+.checkmark svg{display:block;color:#fff;color:var(--happyforms-color-choice-checkmark-color)}.happyforms-radio-circle{display:none;width:7px;height:7px;border-radius:50%;background-color:#fff;background-color:var(--happyforms-color-choice-checkmark-color)}.happyforms-styles .happyforms-part--poll input:checked+.checkmark .happyforms-radio-circle,.happyforms-styles .happyforms-part--radio input:checked+.checkmark .happyforms-radio-circle,.happyforms-styles .happyforms-part--table:not(.happyforms-selection--multiple) input:checked+.checkmark .happyforms-radio-circle{display:block}.happyforms-styles .happyforms-part input:checked+.checkmark svg{display:block;color:#fff;color:var(--happyforms-color-choice-checkmark-color)}.happyforms-styles .happyforms-part__select-bg{padding:1px 0 2px;border:1px solid;border-radius:6px;border-color:#dbdbdb;border-color:var(--happyforms-color-part-border);background-color:#fff;background-color:var(--happyforms-color-part-background)}.happyforms-styles .happyforms-part__select-wrap:after{border-top:6px solid #000;border-top-color:var(--happyforms-color-part-value)}.happyforms-styles .happyforms-part select.happyforms-select:invalid{color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part select.happyforms-select:focus{outline-width:1px;outline-color:#000;outline-color:var(--happyforms-color-part-value)}.happyforms-styles .happyforms-part-date__time-input .happyforms-spinner-arrow{border-top:6px solid #000;border-top:6px solid var(--happyforms-color-part-value);background-position:left top;background-size:cover}.happyforms-styles button[type=submit].happyforms-button--submit,.happyforms-styles button[type=submit][disabled].happyforms-button--submit{-webkit-appearance:none;height:auto;padding:15px 30px;border-radius:4px!important;border:1px solid transparent!important;border-color:var(--happyforms-color-submit-border)!important;font-weight:400;font-style:normal;font-size:16px;font-size:var(--happyforms-submit-button-font-size);color:#fff;color:var(--happyforms-color-submit-text);background-color:#000;background-color:var(--happyforms-color-submit-background);background:#000;background:var(--happyforms-color-submit-background);text-transform:none;transition-property:all;transition-duration:.25s;transition-duration:var(--happyforms-transition-duration);transition-timing-function:ease-in;white-space:normal;overflow-wrap:anywhere}.happyforms-styles button[type=submit]:not(:hover):not(:active):not(.has-background){background-color:#000;background-color:var(--happyforms-color-submit-background);background:#000;background:var(--happyforms-color-submit-background);color:#fff;color:var(--happyforms-color-submit-text)}.happyforms-styles button[type=submit].happyforms-button--submit:focus,.happyforms-styles button[type=submit].happyforms-button--submit:hover{cursor:pointer;border-radius:4px;border-color:transparent!important;border-color:var(--happyforms-color-submit-border)!important;background-color:#000;background-color:var(--happyforms-color-submit-background-hover);background:#000;background:var(--happyforms-color-submit-background-hover);text-transform:none;text-decoration:none;color:#fff;color:var(--happyforms-color-submit-text-hover)}.happyforms-styles button[type=submit][disabled].happyforms-button--submit:focus,.happyforms-styles button[type=submit][disabled].happyforms-button--submit:hover{cursor:default;background-color:#407fff;background-color:var(--happyforms-color-submit-background);background:#407fff;background:var(--happyforms-color-submit-background);color:#fff;color:var(--happyforms-color-submit-text)}.happyforms-styles .happyforms-visuallyhidden{position:absolute;border:0;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.happyforms-styles .happyforms-message-notices .happyforms-message-notice{padding:20px 15px;border-radius:6px;background-color:transparent;color:#454545}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-message-notices .happyforms-message-notice{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-message-notices .happyforms-message-notice{padding:20px 25px;border-radius:25px}.happyforms-styles .happyforms-message-notices .success{background-color:#ebf9f0;background-color:var(--happyforms-color-success-notice)}.happyforms-styles .happyforms-message-notices .success h2{color:#1eb452!important;color:var(--happyforms-color-success-notice-text)!important}.happyforms-styles .happyforms-message-notices .error{background-color:#ffeeea;background-color:var(--happyforms-color-error-notice)}.happyforms-styles .happyforms-message-notices .error h2{color:#f23000!important;color:var(--happyforms-color-error-notice-text)!important}.happyforms-styles .happyforms-message-notices h2{margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important;font-weight:400!important;font-size:16px!important}.happyforms-styles .happyforms-message-notices h2:before{display:none}.happyforms-styles .happyforms-message-notices h2 span{display:block;font-weight:400;font-size:14px}.happyforms-styles .happyforms-form__part .happyforms-message-notices h2{font-weight:400!important;font-size:16px!important;font-size:var(--happyforms-part-value-font-size)!important}.happyforms-styles .happyforms-form__part .happyforms-message-notice.error h2{color:#f23000;color:var(--happyforms-color-error)}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part .happyforms-part__select-bg,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=tel],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part textarea,.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{border-radius:0!important}.happyforms-styles.happyforms-form--part-border-radius-square .option-label{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=tel],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part textarea,.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{border-radius:25px!important;padding-left:25px;padding-right:25px}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part textarea{padding:15px}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part .happyforms-part__select-bg{border-radius:25px;padding-left:15px}.happyforms-styles.happyforms-form--part-border-radius-pill .option-label{border-radius:25px}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::-webkit-input-placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::-moz-placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::-ms-placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part ::placeholder{color:transparent!important;transition:color .25s;transition:color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::-webkit-input-placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::-moz-placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::-ms-placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles.happyforms-form--part-placeholder-toggle .happyforms-part input:focus::placeholder{color:#888!important;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part--label-inside label .label{font-weight:700;font-size:14px;color:#000;color:var(--happyforms-color-part-title)}.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part textarea,.happyforms-styles.happyforms-form--part-borders-bottom-only .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{border-top-color:transparent!important;border-left-color:transparent!important;border-right-color:transparent!important;box-shadow:none!important}.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=email],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=number],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=password],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part input[type=text],.happyforms-styles.happyforms-form--part-disable-transitions .happyforms-part textarea{transition-duration:0s}.happyforms-styles .happyforms-part input[type=email],.happyforms-styles .happyforms-part input[type=number],.happyforms-styles .happyforms-part input[type=password],.happyforms-styles .happyforms-part input[type=text],.happyforms-styles .happyforms-part textarea{transition:border-color .4s;transition:border-color var(--happyforms-transition-duration)}.happyforms-styles .happyforms-part--label-as_placeholder label{color:#888;color:var(--happyforms-color-part-placeholder);transition-duration:.4s;transition-duration:var(--happyforms-transition-duration)}.happyforms-styles .happyforms-part--label-as_placeholder .happyforms-part__label .label{color:#888;color:var(--happyforms-color-part-placeholder)}.happyforms-styles .happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container label .label,.happyforms-styles .happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container label .label,.happyforms-styles .happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label .label,.happyforms-styles .happyforms-part--select.happyforms-part--filled.happyforms-part--label-as_placeholder .label{font-weight:700;font-size:14px;color:#000;color:var(--happyforms-color-part-value)}.happyforms-styles.happyforms-form--submit-button-border-hide button[type=submit].happyforms-button--submit{border-width:0!important}.happyforms-styles.happyforms-form--submit-button-border-radius-square button[type=submit].happyforms-button--submit,.happyforms-styles.happyforms-form--submit-button-border-radius-square button[type=submit].happyforms-button--submit:hover{border-radius:0!important}.happyforms-styles.happyforms-form--submit-button-border-radius-pill button[type=submit].happyforms-button--submit,.happyforms-styles.happyforms-form--submit-button-border-radius-pill button[type=submit].happyforms-button--submit:hover{border-radius:60px!important}.happyforms-styles.happyforms-form--submit-button-bold .happyforms-part--submit button[type=submit]{font-weight:700}.happyforms-styles.happyforms-form--submit-button-disable-transitions button[type=submit]{transition-duration:0s!important}.happyforms-styles.happyforms-form--submit-button-padding-narrow button[type=submit].happyforms-button--submit{padding:10px 20px}.happyforms-styles.happyforms-form--submit-button-padding-wide button[type=submit].happyforms-button--submit{padding:20px 50px}.happyforms-styles.happyforms-form--submit-button-fullwidth button[type=submit].happyforms-button--submit{padding-left:0;padding-right:0;margin-right:0}.happyforms-styles.happyforms-form--part-title-font-weight-bold .happyforms-part__label .label{font-weight:700}.happyforms-styles .happyforms-custom-select input[readonly=readonly]{cursor:pointer}.happyforms-styles .happyforms-custom-select-dropdown{background-color:#fff;background-color:var(--happyforms-color-dropdown-bg-color);border:1px solid #dbdbdb;border:1px solid var(--happyforms-color-part-border);border-radius:6px}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-custom-select-dropdown{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-custom-select-dropdown{border-radius:25px}.happyforms-styles .happyforms-custom-select-dropdown li{transition:background-color .2s ease-in;color:#000;color:var(--happyforms-color-dropdown-item-text);background-color:#fff;background-color:var(--happyforms-color-dropdown-item-bg);font-size:16px;font-size:var(--happyforms-part-value-font-size)}.happyforms-styles .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder{color:#888;color:var(--happyforms-color-part-placeholder)}.happyforms-styles .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item.active,.happyforms-styles .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item:hover{color:#000;color:var(--happyforms-color-dropdown-item-text-hover);background-color:#f4f4f5;background-color:var(--happyforms-color-dropdown-item-bg-hover)}.happyforms-styles .happyforms-part-preview .happyforms-part__label .label{font-weight:700;color:#000;color:var(--happyforms-color-table-row-odd-text)}.happyforms-styles .happyforms-part-preview .happyforms-part__el-preview{font-size:16px;font-size:var(--happyforms-part-value-font-size)}.happyforms-styles .happyforms-part-preview{background-color:#fcfcfc;background-color:var(--happyforms-color-table-row-odd)}.happyforms-styles .happyforms-part-preview:nth-child(2n){background-color:#efefef;background-color:var(--happyforms-color-table-row-even)}.happyforms-styles .happyforms-part-preview:nth-child(2n) .happyforms-part__label .label{color:#000;color:var(--happyforms-color-table-row-even-text)}.happyforms-styles .happyforms-form-preview>p{font-size:16px;font-size:var(--happyforms-part-value-font-size)}.happyforms-part-error-notice p{font-size:16px;font-size:var(--happyforms-part-value-font-size);color:#f23000;color:var(--happyforms-color-error)}.happyforms-part-error-notice p svg{color:#f23000;color:var(--happyforms-color-error)}.happyforms-styles .happyforms-input-group__suffix a.happyforms-plain-button,.happyforms-styles .happyforms-input-group__suffix button.happyforms-plain-button{font-size:16px;font-size:var(--happyforms-part-value-font-size);color:var(--happyforms-color-part-value)}.happyforms-styles .happyforms-input-group__prefix,.happyforms-styles .happyforms-input-group__suffix{font-size:16px;font-size:var(--happyforms-part-value-font-size);background:#e8e8e8}.happyforms-styles.happyforms-form .happyforms-part .happyforms-input{position:relative;flex:1;width:100%}.happyforms-styles.happyforms-styles.happyforms-form--part-border-radius-square button.happyforms-pair-group__button{border-radius:0}.happyforms-styles.happyforms-styles.happyforms-form--part-border-radius-pill button.happyforms-pair-group__button{border-radius:25px}.happyforms-styles button.happyforms-pair-group__button:hover{background-color:#000;background-color:var(--happyforms-color-submit-background-hover)}.happyforms-styles.happyforms-form .happyforms-part .happyforms-input-group.with-prefix .happyforms-input>input{padding-left:10px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}.happyforms-styles.happyforms-form .happyforms-part .happyforms-input-group.with-suffix .happyforms-input>input{padding-right:10px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-input-group__prefix{border-top-left-radius:0;border-bottom-left-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-input-group__prefix{border-top-left-radius:25px;border-bottom-left-radius:25px}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-input-group__suffix{border-top-right-radius:0;border-bottom-right-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-input-group__suffix{border-top-right-radius:25px;border-bottom-right-radius:25px}.happyforms-part__char-counter{font-size:14px;font-size:var(--happyforms-part-description-font-size);color:#454545;color:var(--happyforms-color-part-description)}.happyforms-styles .happyforms-part--rich_text div.mce-toolbar-grp{border-radius:6px;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#fff;border-color:#dbdbdb!important;border-color:var(--happyforms-color-part-border)!important}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--rich_text div.mce-toolbar-grp{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part--rich_text div.mce-toolbar-grp{border-radius:25px;border-bottom-left-radius:0;border-bottom-right-radius:0}.happyforms-styles div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link{border-color:#7aa4ff!important;border-color:var(--happyforms-color-part-border-focus)!important}.happyforms-styles .happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-down:before{border-top-color:#7aa4ff;border-top-color:var(--happyforms-color-part-border-focus)}.happyforms-styles div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-input input::placeholder{color:#888;color:var(--happyforms-color-part-placeholder)!important}.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn,.happyforms-styles .happyforms-part--rich_text .qt-dfw,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary{padding:2px;background-color:#fff;border-color:#fff}.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-styles .happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active:hover,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:active,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-styles .happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-styles .happyforms-part--rich_text .qt-dfw.active,.happyforms-styles .happyforms-part--rich_text .qt-dfw.active:hover,.happyforms-styles .happyforms-part--rich_text .qt-dfw:focus,.happyforms-styles .happyforms-part--rich_text .qt-dfw:hover,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.happyforms-styles .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover{border-color:transparent;border-radius:6px;background-color:#efefef}.happyforms-styles .happyforms-editor-toolbar-link svg,.happyforms-styles .happyforms-part--rich_text .mce-btn svg{fill:#000}.happyforms-styles .happyforms-part--rich_text .happyforms-visual-editor{padding-bottom:1.5px;border:0}.happyforms-styles .happyforms-part--rich_text .mce-edit-area{border-bottom-width:1.5px;border:1px solid #dbdbdb!important;border-radius:6px;border-top-left-radius:0;border-top-right-radius:0;transition:border-color .25s;transition:border-color var(--happyforms-transition-duration)}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--rich_text .mce-edit-area{border-radius:0}.happyforms-styles .happyforms-part--rich_text.focus .mce-edit-area{border-color:#7aa4ff!important;border-color:var(--happyforms-color-part-border-focus)!important;box-shadow:inset 0 0 0 1px #7aa4ff;box-shadow:inset 0 0 0 1px var(--happyforms-color-part-border-focus)}.happyforms-styles .happyforms-part--rich_text .mce-edit-area{background-color:#fff!important;background-color:var(--happyforms-color-part-background)!important}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-edit-area{border-bottom-left-radius:25px;border-bottom-right-radius:25px}.happyforms-styles .happyforms-part--rich_text.focus .mce-edit-area{background-color:#fff!important;background-color:var(--happyforms-color-part-background-focus)!important}.happyforms-styles .happyforms-part--rich_text .mce-statusbar{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.happyforms-styles .happyforms-part--rich_text .mce-statusbar .mce-path:first-child{display:none}.happyforms-styles.happyforms-form--part-border-radius-square .happyforms-part--rich_text .mce-statusbar{border-radius:0}.happyforms-styles.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-statusbar{border-bottom-left-radius:25px;border-bottom-right-radius:25px}.happyforms-styles.happyforms-form--part-border-off .happyforms-part--rich_text .happyforms-visual-editor{padding-bottom:1px}.happyforms-part--email_integration .option-label .label p,.happyforms-part--legal .option-label .label p,.happyforms-part--mailchimp .option-label .label p,.happyforms-part--signature .option-label .label p{margin-top:0}.happyforms-part--email_integration .option-label .label p:last-child,.happyforms-part--legal .option-label .label p:last-child,.happyforms-part--mailchimp .option-label .label p:last-child,.happyforms-part--signature .option-label .label p:last-child{margin-bottom:0}.happyforms-styles button.happyforms-text-button{-webkit-appearance:none;height:auto;font-weight:400;font-style:normal;font-size:16px;background-color:#000;background-color:var(--happyforms-color-submit-background);background:#000;background:var(--happyforms-color-submit-background);text-transform:none;transition-property:all;transition-duration:.25s;transition-duration:var(--happyforms-transition-duration);transition-timing-function:ease-in;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;text-shadow:none;text-decoration:none;letter-spacing:0;white-space:normal;overflow-wrap:anywhere;outline:0}.happyforms-styles button.happyforms-text-button{background-color:transparent!important;padding:0;font-size:var(--happyforms-part-value-font-size);color:#000!important;color:var(--happyforms-color-part-value)!important;border:0 solid transparent!important;width:auto!important;border-width:0!important;font-weight:400!important;text-decoration:underline;display:inline-block;cursor:pointer}.happyforms-styles .happyforms-part--placeholder p{font-size:16px;font-size:var(--happyforms-part-value-font-size);color:#000;overflow-wrap:anywhere}.happyforms-styles .happyforms-part--divider hr{border-style:solid;border-width:1px 0 0 0;border-color:#ccc;border-color:var(--happyforms-color-divider-hr)}.happyforms-part--divider hr{margin:0}.happyforms-styles .happyforms-layout-title{font-weight:400;color:#000;color:var(--happyforms-color-primary)}.happyforms-styles .happyforms-part--media img{margin:0;padding:0;border:0}:root{--happyforms-form-width:100%}.happyforms-flex{display:flex;flex-flow:row wrap;align-items:flex-start;max-width:100%}.happyforms-form--hide-title .happyforms-flex{padding-top:0}.happyforms-form{max-width:100%;max-width:var(--happyforms-form-width);margin:0 auto;border-style:solid;border-width:0}.happyforms-form form{margin:0;padding:0;background-color:transparent}.happyforms-form.happyforms-form--padding-narrow{padding:1%}.happyforms-form.happyforms-form--padding-wide{padding:3.5%}.happyforms-form form.happyforms-form--submitting{opacity:.5}.happyforms-form--direction-rtl{direction:rtl}.happyforms-flex>input[type=checkbox]{display:none!important}h3.happyforms-form__title{margin:0;padding:0}.happyforms-form--hide-title h3.happyforms-form__title{display:none}.happyforms-form--title-text-align-right h3.happyforms-form__title{text-align:right}.happyforms-form--title-text-align-center h3.happyforms-form__title{text-align:center}.happyforms-form__part{position:relative;display:block;box-sizing:border-box;width:100%;margin-bottom:15px;padding:5px 1%}.happyforms-form__part:last-child{margin-bottom:0}@media screen and (min-width:800px){.happyforms-part--width-half{width:50%}.happyforms-part--width-third{width:33.333%}.happyforms-part--width-quarter{width:25%}}.happyforms-part--width-half,.happyforms-part--width-third{align-self:flex-start}.happyforms-part--width-auto{align-self:flex-start;flex-grow:1;width:auto;max-width:75%}.happyforms-part--width-auto+.happyforms-part--recaptcha,.happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-part--width-auto+.happyforms-part--submit{align-self:center;width:auto!important;margin-bottom:0!important;padding-top:5px;padding-bottom:0}.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-part--width-auto+.happyforms-part--recaptcha{top:-13px}.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--submit{top:-10px}.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha{top:3px}.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--submit{top:-25px}.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha{top:-23px}.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit{top:-45px}.happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{width:100%;padding:17px 50px}.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--submit{left:-1.5%;padding-left:0;padding-right:0}.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-wide .happyforms-part--width-auto+.happyforms-part--submit{left:-3.5%;padding-left:0}.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit,.happyforms-form--submit-part-of-input.happyforms-form--part-outer-padding-narrow .happyforms-part--width-auto+.happyforms-part--submit{left:-1%;padding-left:0}.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{padding-top:8px;padding-bottom:9px;border-top-left-radius:0;border-bottom-left-radius:0}.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-wide .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-wide .happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{padding-top:13px;padding-bottom:15px}.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-narrow .happyforms-part--width-auto+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input.happyforms-form--part-inner-padding-narrow .happyforms-part--width-auto+.happyforms-part--submit button[type=submit]{padding-top:3px;padding-bottom:4px}.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-as_placeholder+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-as_placeholder+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-inside+.happyforms-part--recaptcha+.happyforms-part--submit button[type=submit],.happyforms-form--submit-part-of-input .happyforms-part--width-auto.happyforms-part--label-inside+.happyforms-part--submit button[type=submit]{padding-top:16px;padding-bottom:18px}.happyforms-part__label{display:inline-block;margin-bottom:15px}.happyforms-part__label .happyforms-optional,.happyforms-part__label .happyforms-required,.happyforms-part__label .label{padding:0;white-space:normal}.happyforms-form__part[data-happyforms-required] .happyforms-part__label .happyforms-optional{display:none}.happyforms-form__part .happyforms-part__label .happyforms-required{display:none}.happyforms-form__part[data-happyforms-required] .happyforms-part__label .happyforms-required{display:inline-block}.happyforms-part__description{display:block;margin:-3px 0 10px}.happyforms-part--focus-reveal-description .happyforms-part__description{display:none}.happyforms-form__part.focus .happyforms-part__description,.happyforms-part--focus-reveal-description input:focus+.happyforms-part__description,.happyforms-part--focus-reveal-description textarea:focus+.happyforms-part__description{display:block}.happyforms-form--part-description-text-align-center .happyforms-part__description{text-align:center}.happyforms-form--part-description-text-align-right .happyforms-part__description{text-align:right}.happyforms-part input[type=email],.happyforms-part input[type=number],.happyforms-part input[type=password],.happyforms-part input[type=range],.happyforms-part input[type=tel],.happyforms-part input[type=text],.happyforms-part textarea,.happyforms-part.happyforms-part select.happyforms-select{width:100%;box-sizing:border-box;max-width:none}.happyforms-part.happyforms-part select.happyforms-select{appearance:none!important;-moz-appearance:none!important;-webkit-appearance:none!important;background-image:none!important}.happyforms-part textarea{height:auto}.happyforms-form--part-value-text-align-center .happyforms-part input[type=email],.happyforms-form--part-value-text-align-center .happyforms-part input[type=number],.happyforms-form--part-value-text-align-center .happyforms-part input[type=password],.happyforms-form--part-value-text-align-center .happyforms-part input[type=tel],.happyforms-form--part-value-text-align-center .happyforms-part input[type=text],.happyforms-form--part-value-text-align-center .happyforms-part textarea,.happyforms-form--part-value-text-align-center .happyforms-part--choice .option-label{text-align:center}.happyforms-form--part-value-text-align-center .happyforms-part--choice .happyforms-part__el{justify-content:center}.happyforms-form--part-value-text-align-right .happyforms-part input[type=email],.happyforms-form--part-value-text-align-right .happyforms-part input[type=number],.happyforms-form--part-value-text-align-right .happyforms-part input[type=password],.happyforms-form--part-value-text-align-right .happyforms-part input[type=tel],.happyforms-form--part-value-text-align-right .happyforms-part input[type=text],.happyforms-form--part-value-text-align-right .happyforms-part textarea,.happyforms-form--part-value-text-align-right .happyforms-part--choice .option-label{text-align:right}.happyforms-form--part-value-text-align-right .happyforms-part--choice .happyforms-part__el{justify-content:flex-end}.happyforms-part.happyforms-part--error input[type=email],.happyforms-part.happyforms-part--error input[type=number],.happyforms-part.happyforms-part--error input[type=password],.happyforms-part.happyforms-part--error input[type=range],.happyforms-part.happyforms-part--error input[type=tel],.happyforms-part.happyforms-part--error input[type=text],.happyforms-part.happyforms-part--error textarea{border-color:#ff7550}.happyforms-part.display-type--block .happyforms-part__el{width:100%}.happyforms-part-el-wrap{position:relative}.happyforms-part-wrap{position:relative}.happyforms-part--label-below .happyforms-part-wrap{display:flex;flex-flow:row wrap-reverse;align-content:flex-end}.happyforms-part--label-below .happyforms-part__label{order:2;margin-top:10px;margin-bottom:5px}.happyforms-part--label-below .happyforms-part__description{order:1;margin-top:0}.happyforms-part--label-below.happyforms-part--date .happyforms-part__el{width:100%;order:2}.happyforms-part--date .happyforms-part__description{width:100%}.happyforms-part--label-left .happyforms-part__description{width:100%}.happyforms-part--label-left .happyforms-part-wrap{display:flex;flex-flow:row;flex-wrap:wrap}@media screen and (min-width:800px){.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__label-container{float:none;width:25%;margin-bottom:0;align-self:flex-start}}.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__el{width:75%}.happyforms-part--label-left.happyforms-part--date .happyforms-custom-select{width:100%}@media screen and (max-width:800px){.happyforms-part--label-left .happyforms-part-wrap{flex-flow:column}.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__label{align-self:flex-start}.happyforms-part--label-left .happyforms-custom-select,.happyforms-part--label-left .happyforms-part-wrap>.happyforms-part__el{width:100%}}.happyforms-part--label-hidden .happyforms-part-wrap .happyforms-part__label{display:none!important}.happyforms-part .option-label{display:flex;align-items:center;position:relative;cursor:pointer;padding:0 5px 5px 0}.happyforms-part--choice .option-label{margin-right:20px}.happyforms-part--choice.happyforms-part-options-width--full .option-label{margin-right:0}.happyforms-styles .happyforms-part .happyforms-part-option .option-label{align-items:flex-start}.happyforms-styles .happyforms-part .happyforms-part-option.disabled-option .option-label,.happyforms-styles .happyforms-part .happyforms-table__cell.disabled-option .option-label{cursor:default}@media screen and (max-width:800px){.happyforms-part--choice .option-label{margin-right:0}}.happyforms-part--choice .option-label input:focus{outline:0}.happyforms-part .option-label .label-wrap{position:relative;display:inline-block;padding:0 10px;white-space:normal;color:inherit}.happyforms-form--direction-rtl .happyforms-part--choice .option-label .label{margin-right:0}.happyforms-part-option:last-of-type{margin-bottom:0!important}.happyforms-part-option__description{display:block;width:auto;max-width:400px;margin-top:0;margin-left:31px;flex-basis:100%;font-weight:400;font-weight:var(--happyforms-form-font-weight);line-height:1.4}.happyforms-part--choice.display-type--block .happyforms-part-option__description{max-width:none}.happyforms-part.display-type--block .option-label{display:flex;margin-right:0;flex-wrap:wrap}.happyforms-part .happyforms-part-option.option-heading{width:100%}.happyforms-part--choice .happyforms-part__el{display:flex;flex-flow:row wrap}@media screen and (max-width:800px){.happyforms-part--choice .happyforms-part__el{flex-flow:column wrap}}.happyforms-part--choice{margin-bottom:0}.happyforms-part--choice.display-type--block{margin-bottom:15px}.happyforms-part--choice.happyforms-part-options-width--full .happyforms-part__option{width:100%}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__el,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__el,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__el{margin:0 -1%}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option{padding:0 1%}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option label,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option label,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option label{margin-right:0}.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option{width:50%}.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option{width:33.333%}.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option{width:25%}.happyforms-part--choice .happyforms-part__el .happyforms-part__description{flex:0 1 100%;width:100%;margin-top:-5px;margin-bottom:20px}.happyforms-part--choice.display-type--block .happyforms-part__el .happyforms-part__description{flex:0;width:auto;margin-top:5px;margin-bottom:0}@media screen and (max-width:800px){.happyforms-part--choice.happyforms-part-options-width--half .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--quarter .happyforms-part__option,.happyforms-part--choice.happyforms-part-options-width--third .happyforms-part__option{width:100%}}.happyforms-part--choice.display-type--block .happyforms-part__el{display:flex!important;flex-flow:column wrap}.happyforms-part .checkmark svg{display:none}.happyforms-part--legal .option-label p:last-child{margin-bottom:0}.happyforms-part--label-below .happyforms-custom-select,.happyforms-part--label-below .happyforms-part__el,.happyforms-part--label-below input,.happyforms-part--label-below textarea{order:3}.happyforms-part--label-below .happyforms-custom-select,.happyforms-part--label-below .happyforms-part__el{width:100%}.happyforms-form--part-title-text-align-center .happyforms-part__label{text-align:center}.happyforms-form--part-title-text-align-center .happyforms-part--label-above .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-as_placeholder .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-below .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-inside .happyforms-part__label,.happyforms-form--part-title-text-align-center .happyforms-part--label-show .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-above .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-as_placeholder .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-show .happyforms-part__label{width:100%}.happyforms-form--part-title-text-align-right .happyforms-part--label-as_placeholder .happyforms-part__label,.happyforms-form--part-title-text-align-right .happyforms-part--label-inside .happyforms-part__label{width:calc(100% - 20px)}.happyforms-form--part-title-text-align-right.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder .happyforms-part__label{width:calc(100% - 30px)}.happyforms-form--part-title-text-align-center .happyforms-part--label-left .happyforms-part__label{align-self:flex-start}.happyforms-form--part-title-text-align-right .happyforms-part__label{text-align:right}.happyforms-form--part-title-text-align-right .happyforms-part--label-left .happyforms-part__label{align-self:flex-start;margin-bottom:10px;padding-right:15px}.happyforms-part--label-hidden .happyforms-part-wrap>.happyforms-part__label{display:none!important}.happyforms-part__select-wrap{position:relative;flex:1;padding:0 0 0 2%}.happyforms-part__select-wrap{height:100%}.happyforms-part__select-bg{padding:1px 0 2px;border:1px solid;border-color:#dbdbdb}.happyforms-part__select-wrap:first-of-type{padding-left:0!important}.happyforms-part__select-wrap:after{content:'';position:absolute;top:44%;right:15px;z-index:1;display:block;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid}.happyforms-part select:focus{outline-width:1px;outline-color:#000}.happyforms-part__select-wrap:last-child{padding-right:0}.happyforms-part--submit{display:flex;flex-flow:row wrap;align-items:center;width:100%;margin-bottom:0;padding-top:10px}.happyforms-message-notices{padding:0 1%;margin:0 0 25px 0}form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice{width:100%;box-sizing:border-box}form .happyforms-flex>.happyforms-message-notices .happyforms-message-notice a{border:0}.happyforms-flex>.happyforms-message-notices p:last-child{margin-bottom:0}.happyforms-form__part .happyforms-message-notice.error h2{color:#ff7550}.happyforms-form__title+.happyforms-message-notices{margin-top:25px}.happyforms-part--label-inside .happyforms-part__label-container{position:absolute;top:8px;left:10px;z-index:2;width:98%}.happyforms-part--label-as_placeholder input,.happyforms-part--label-as_placeholder textarea,.happyforms-part--label-inside input,.happyforms-part--label-inside textarea{padding-top:30px!important;padding-bottom:7px!important}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder input,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder textarea,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-inside input,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-inside textarea{padding-top:22px!important;padding-bottom:5px!important}.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder input,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder textarea,.happyforms-form--part-inner-padding-wide .happyforms-part--label-inside input,.happyforms-form--part-inner-padding-wide .happyforms-part--label-inside textarea{padding-top:30px!important;padding-bottom:10px!important}.happyforms-part input[type=email],.happyforms-part input[type=number],.happyforms-part input[type=password],.happyforms-part input[type=text],.happyforms-part textarea{margin-bottom:0;transition:border-color .4s;transition:border-color var(--happyforms-transition-duration)}.happyforms-part--label-below .happyforms-part__label-container{width:100%}.happyforms-part--label-as_placeholder label{transition-duration:.4s}.happyforms-part--label-as_placeholder ::-webkit-input-placeholder{opacity:0}.happyforms-part--label-as_placeholder ::-moz-placeholder{opacity:0}.happyforms-part--label-as_placeholder ::-ms-placeholder{opacity:0}.happyforms-part--label-as_placeholder ::placeholder{opacity:0}.happyforms-part--label-as_placeholder label{position:absolute;left:11px;top:23px;z-index:5;transition-property:top}.happyforms-form--direction-rtl .happyforms-part--label-as_placeholder label{left:auto;right:11px}.happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container>label,.happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container>label,.happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label,.happyforms-part--select.happyforms-part--label-as_placeholder.happyforms-part--filled label{top:8px}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder label{top:19px;left:5px}.happyforms-form--direction-rtl.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder label{right:5px;left:auto}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label,.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label{top:7px}.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder label{top:25px;left:15px}.happyforms-form--direction-rtl.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder label{right:15px;left:auto}.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder input:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder textarea:focus~.happyforms-part__label-container>label,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder.happyforms-part--filled .happyforms-part__label-container label,.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label{top:12px}.happyforms-form--part-outer-padding-narrow .happyforms-form__part{margin-bottom:5px;padding:0 .5%}.happyforms-form--part-outer-padding-narrow .happyforms-message-notices{padding-left:.5%;padding-right:.5%}.happyforms-form--part-outer-padding-narrow .happyforms-part__select-wrap{padding:0}.happyforms-form--part-outer-padding-narrow .happyforms-part-option{margin-right:-5px}.happyforms-form--part-outer-padding-narrow .happyforms-part.display-type--block .happyforms-part-option{margin-right:0;margin-bottom:5px}.happyforms-form--part-outer-padding-narrow .happyforms-part--choice .option-label{margin-right:15px}.happyforms-form--part-outer-padding-wide .happyforms-form__part{padding:20px 3%}.happyforms-form--part-outer-padding-wide .happyforms-message-notices{padding-left:3%;padding-right:3%}.happyforms-form--part-outer-padding-wide .happyforms-part .happyforms-part-option{margin-right:15px}.happyforms-form--part-outer-padding-wide .happyforms-part.display-type--block .happyforms-part-option{margin-right:0;margin-bottom:35px}.happyforms-form--part-inner-padding-narrow .happyforms-part .option-label,.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=email],.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=number],.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=tel],.happyforms-form--part-inner-padding-narrow .happyforms-part input[type=text],.happyforms-form--part-inner-padding-narrow .happyforms-part textarea,.happyforms-form--part-inner-padding-narrow .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{padding:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--placeholder .happyforms-part__el{padding:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--legal label{margin-left:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part__label{margin-bottom:5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--label-below .happyforms-part__label{margin-top:5px}.happyforms-form--part-inner-padding-wide .happyforms-part .option-label,.happyforms-form--part-inner-padding-wide .happyforms-part input[type=email],.happyforms-form--part-inner-padding-wide .happyforms-part input[type=number],.happyforms-form--part-inner-padding-wide .happyforms-part input[type=tel],.happyforms-form--part-inner-padding-wide .happyforms-part input[type=text],.happyforms-form--part-inner-padding-wide .happyforms-part textarea,.happyforms-form--part-inner-padding-wide .happyforms-part--placeholder .happyforms-part__el,.happyforms-form--part-inner-padding-wide .happyforms-part:not(.happyforms-part--phone) select.happyforms-select{padding:15px}.happyforms-form--part-inner-padding-wide .happyforms-part--legal .option-label{padding-left:0}.happyforms-form--part-inner-padding-wide .happyforms-part--legal .option-label .label{padding-left:20px}.happyforms-form--part-inner-padding-wide .happyforms-part .happyforms-part__select-wrap:after{top:45%}.happyforms-form--part-hide-labels .happyforms-part__label{display:none}.happyforms-form--submit-button-fullwidth button[type=submit].happyforms-button--submit{width:100%}button[type=submit][disabled].happyforms-button--submit{cursor:default}.happyforms-form--submit-button-align-center .happyforms-part--submit{text-align:center}.happyforms-form--submit-button-align-right .happyforms-part--submit{text-align:right}.happyforms-part--rating .happyforms-visuallyhidden,.ui-helper-hidden-accessible{position:absolute;border:0;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.widget button[type=submit].happyforms-button--submit,.widget button[type=submit][disabled].happyforms-button--submit,.widget button[type=submit][disabled].happyforms-button--submit:hover{width:100%}.happyforms-custom-select input[readonly=readonly]{cursor:pointer}.happyforms-custom-select-dropdown{display:none;position:absolute;top:calc(100% + 2px);left:0;z-index:10;list-style:none;margin:0!important;padding:5px 0!important;text-align:left;background-color:#fff;border:1px solid #dbdbdb;white-space:nowrap;width:100%;max-height:250px;overflow-y:scroll}.happyforms-custom-select .happyforms-part__select-wrap input[data-searchable=false]{cursor:pointer}.happyforms-part__select-wrap{cursor:pointer}.happyforms-custom-select-dropdown.active{display:block!important}.happyforms-custom-select-dropdown li{cursor:pointer;display:flex;align-items:center;margin:0;padding:5px 10px;min-height:35px;color:#000;background-color:#fff;white-space:normal;overflow-wrap:anywhere}.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder{color:#888}.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__not-found{display:none;cursor:default}.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item.active,.happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__item:hover{color:#000;background-color:#dbdbdb}.happyforms-part--with-autocomplete .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder,.happyforms-part-date--required .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder,.happyforms-part-select--required .happyforms-custom-select-dropdown li.happyforms-custom-select-dropdown__placeholder{display:none}.happyforms-part-preview .happyforms-part__label{cursor:default;margin-bottom:10px}.happyforms-part-preview .happyforms-part__label .label{font-weight:700}.happyforms-form-preview .happyforms-part--submit{margin-top:30px}.happyforms-part--submit *{margin-right:20px}.happyforms-form--submit-button-align-center .happyforms-part--submit,.happyforms-form--submit-button-fullwidth .happyforms-part--submit{flex-flow:column wrap;align-items:center}.happyforms-form--submit-button-align-center .happyforms-part--submit a,.happyforms-form--submit-button-fullwidth .happyforms-part--submit a{order:2;margin-top:10px;margin-right:0}.happyforms-form--submit-button-align-right .happyforms-part--submit{justify-content:flex-end}.happyforms-form--submit-button-align-center .happyforms-part--submit input,.happyforms-form--submit-button-align-right .happyforms-part--submit input{margin-right:0}.happyforms-form--submit-button-align-right .happyforms-part--submit input+a{margin-left:20px;margin-right:0}@media screen and (max-width:800px){.happyforms-form-preview .happyforms-part--submit{flex-flow:column wrap}.happyforms-form-preview .happyforms-part--submit input{margin-right:0}}.happyforms-hide{display:none}.happyforms-part-preview{margin-bottom:0;padding:10px 1%;margin:0}.happyforms-part-preview{background-color:#fcfcfc}.happyforms-part-preview+.happyforms-part--recaptcha{margin-top:20px}.happyforms-part-preview:nth-child(2n){background-color:#efefef}.happyforms-part-preview:nth-child(2n) .happyforms-part__label .label{color:#000}.happyforms-form-preview>p{padding:45px 1% 10px}.happyforms-part__char-counter{display:none;margin-top:5px;pointer-events:none}.happyforms-part .happyforms-remaining-choice,.happyforms-part__char-counter .counter-label{text-transform:lowercase}.happyforms-part--checkbox .option-label .label-wrap,.happyforms-part--radio .option-label .label-wrap{padding-right:5px;flex:1}.happyforms-custom-select-dropdown .happyforms-remaining-choice{padding-left:5px}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#eee;clip:auto!important;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.happyforms-part-error-notice,.happyforms-part-error-notice p{margin:0;padding:0}.happyforms-part-error-notice{margin:10px 0 0}.happyforms-part-error-notice p{display:flex;flex-flow:row nowrap;align-items:center;-moz-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;line-height:1.2}.happyforms-part-error-notice p svg{content:'';display:inline-block;width:17px;height:17px;margin:0 8px 0 0}.happyforms-input-group{display:flex;align-items:stretch;flex-flow:row wrap}.happyforms-form .happyforms-part .happyforms-input{position:relative;flex:1;width:100%;display:flex;align-items:stretch}.happyforms-form .happyforms-part .happyforms-input-group.with-prefix .happyforms-input>input{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.happyforms-form .happyforms-part .happyforms-input-group.with-suffix .happyforms-input>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.happyforms-input-group__prefix,.happyforms-input-group__suffix{display:flex;align-items:center;max-height:100%;padding:10px 15px;font-weight:400;border:1px solid #dbdbdb;border:1px solid var(--happyforms-color-part-border)!important;background:#e8e8e8;text-shadow:none}.happyforms-input-group__prefix{border-right:0!important;border-top-left-radius:6px;border-bottom-left-radius:6px}.happyforms-input-group__suffix{border-left:0!important;border-top-right-radius:6px;border-bottom-right-radius:6px}.happyforms-input-group__prefix span,.happyforms-input-group__suffix span{word-break:break-word}.happyforms-input-group__suffix.happyforms-input-group__suffix--button{position:relative;padding:0!important}.happyforms-input-group__suffix a.happyforms-plain-button,.happyforms-input-group__suffix button.happyforms-plain-button{outline:0;margin:0;padding:10px 15px;line-height:1;font-weight:400;box-shadow:none;border:0;background-color:transparent;text-transform:none}.happyforms-input-group input{width:100%}.happyforms-part--choice .happyforms-part-option--other input[type=text]{display:none;margin-top:10px!important}.happyforms-part--choice .happyforms-part-option--other input[type=text].hf-show{display:block}.happyforms-part--select .happyforms-part-option--other input[type=text]{display:none;margin-top:10px}.happyforms-part--select .happyforms-part-option--other input[type=text].hf-show{display:block}.happyforms-part--rich_text div.mce-toolbar-grp{position:relative;left:-1px;width:calc(100% - 2px);border:1px solid #dbdbdb!important;border-bottom:0!important}.happyforms-part--rich_text div.mce-panel{background:0 0!important}.happyforms-part--rich_text.focus div.mce-toolbar-grp{left:0}.happyforms-part--rich_text div.mce-toolbar-grp>div{padding:0 2px}.happyforms-part--rich_text.focus div.mce-toolbar-grp>div{padding:0 1px}.happyforms-part--rich_text .mce-top-part::before{box-shadow:none}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link{background-color:#fff;border-width:1px;box-shadow:none;border-radius:6px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up:before{top:-11px;left:50%;border-width:0 11px 11px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-10px;border-width:9px 9px 0}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;left:50%;border-top-color:#fff}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-left:before{left:18px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-left.mce-arrow-down:after{left:19px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up.mce-arrow-right:before{left:auto;right:18px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up:after{left:calc(50% + 0px);top:-10px;border-bottom-color:#fff;border-width:0 10px 10px 10px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-up.mce-arrow-left:after{left:19px}.happyforms-editor-toolbar-link.mce-inline-toolbar-grp.mce-arrow-right:after{left:auto;right:19px}.happyforms-editor-toolbar-link .mce-toolbar .mce-btn-group .mce-btn button,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn button{cursor:pointer!important;padding:0!important;background-color:transparent}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-input input{margin:0;padding:5px;border:0;background-color:#fff}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-preview{margin:7px 6px}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link div.wp-link-input input::placeholder{color:#888}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn,div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn.mce-primary{border-color:transparent}div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn:active,div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn:hover{border-color:transparent!important;border-radius:6px;background-color:#efefef!important}.happyforms-part--rich_text .mce-panel{z-index:1!important}.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn,.happyforms-part--rich_text .qt-dfw,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary{padding:2px;background-color:transparent}.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-part--rich_text .mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn.mce-active:hover,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:active,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:focus,.happyforms-part--rich_text .mce-toolbar .mce-btn-group .mce-btn:hover,.happyforms-part--rich_text .qt-dfw.active,.happyforms-part--rich_text .qt-dfw.active:hover,.happyforms-part--rich_text .qt-dfw:focus,.happyforms-part--rich_text .qt-dfw:hover,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover{background:0 0;box-shadow:none;color:inherit}.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:focus,.mce-inline-toolbar-grp .mce-toolbar .mce-btn-group .mce-btn:hover{box-shadow:none}.happyforms-part--rich_text .mce-btn svg{fill:currentColor}.happyforms-editor-toolbar-link svg{fill:#000}.happyforms-part--rich_text .mce-edit-area,.happyforms-part--rich_text .mce-statusbar .mce-container-body,.happyforms-part--rich_text div.mce-statusbar{border-width:0!important}.happyforms-part--rich_text div.mce-toolbar-grp{background-color:#fff!important}.happyforms-part--rich_text .mce-tinymce.mce-container{border:0;border-width:0!important;box-shadow:none}.happyforms-part--rich_text.focus .mce-tinymce.mce-container{overflow:hidden}.happyforms-part--rich_text .mce-statusbar{position:absolute;left:2px;bottom:2px;width:calc(100% - 4px);background-color:transparent!important}.happyforms-part--rich_text .happyforms-visual-editor{position:relative;overflow:hidden;padding:1px 1px 0;border:1px solid}.happyforms-part--rich_text.focus .happyforms-visual-editor{outline:0}.happyforms-form--part-border-off .happyforms-part--rich_text .happyforms-visual-editor{border-color:transparent}.happyforms-form--part-borders-bottom-only .happyforms-part--rich_text.focus .happyforms-visual-editor{border-bottom-width:1px}.happyforms-form--part-border-off .happyforms-part--rich_text .mce-statusbar .mce-container-body,.happyforms-form--part-border-off .happyforms-part--rich_text div.mce-toolbar-grp{border:0}.happyforms-form--part-borders-bottom-only .happyforms-part--rich_text .happyforms-visual-editor{box-shadow:none;border-top-color:transparent;border-left-color:transparent;border-right-color:transparent}.happyforms-form--part-borders-bottom-only .happyforms-part--rich_text .mce-statusbar .mce-container-body{border-left:0;border-right:0}.happyforms-form--part-border-radius-square .happyforms-part--rich_text .happyforms-visual-editor,.happyforms-form--part-border-radius-square .happyforms-part--rich_text .mce-tinymce.mce-container{border-radius:0!important}.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .happyforms-visual-editor,.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-tinymce.mce-container{border-radius:25px!important}.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-toolbar .mce-btn-group.mce-first{margin-left:10px}.happyforms-form--part-border-radius-pill .happyforms-part--rich_text .mce-container-body .mce-resizehandle{right:10px;bottom:3px}.happyforms-form--part-inner-padding-narrow .happyforms-part--rich_text .mce-content-body{margin-top:0;margin-bottom:0}.happyforms-part--rich_text .mce-edit-area{position:relative;left:-1px;padding:0;overflow:hidden}.happyforms-part--rich_text.focus .mce-edit-area{left:0}.happyforms-form--part-inner-padding-wide .happyforms-part--rich_text.focus .mce-edit-area{width:calc(100% - 10px)}.happyforms-part--rich_text.focus .mce-edit-area iframe{margin-left:-1px}.happyforms-part--rich_text .mce-edit-area iframe{position:relative;top:-5px}.happyforms-form--part-inner-padding-wide .happyforms-part--rich_text .mce-edit-area{padding:0 5px 5px}.happyforms-form--part-inner-padding-narrow .happyforms-part--rich_text .mce-edit-area iframe{top:-10px;left:-5px}.happyforms-part--rich_text .mce-container-body .mce-resizehandle{right:-1px;bottom:-1px;overflow-y:hidden;resize:horizontal}.happyforms-part--rich_text .mce-container-body .mce-resizehandle .mce-i-resize:before{resize:horizontal;overflow-y:scroll;color:transparent}.happyforms-styles .happyforms-layout-title{overflow-wrap:break-word}.happyforms-part--media .happyforms-optional,.happyforms-part--placeholder .happyforms-optional{display:none!important}.happyforms-form--part-value-text-align-center .happyforms-part--placeholder p{text-align:center}.happyforms-form--part-value-text-align-right .happyforms-part--placeholder p{text-align:right}.happyforms-part--placeholder p:first-child{margin-top:0}.happyforms-part--placeholder p:last-of-type,.happyforms-part--toggletip .happyforms-toggletip-text p:last-of-type{margin-bottom:0;padding-bottom:0}.happyforms-part--divider hr{margin:0}.happyforms-part--media img{margin:0;max-width:100%}
|
core/assets/css/customize.css
CHANGED
@@ -1184,10 +1184,6 @@ ul.happyforms-parts-list li[data-part-type="narrative_dummy"] .happyforms-parts-
|
|
1184 |
background-image: url(../svg/icons/story.svg);
|
1185 |
}
|
1186 |
|
1187 |
-
ul.happyforms-parts-list li[data-part-type="placeholder_dummy"] .happyforms-parts-list-item-title:before {
|
1188 |
-
background-image: url(../svg/icons/paragraph.svg);
|
1189 |
-
}
|
1190 |
-
|
1191 |
ul.happyforms-parts-list li[data-part-type="optin_dummy"] .happyforms-parts-list-item-title:before {
|
1192 |
background-image: url(../svg/icons/opt-in-choice.svg);
|
1193 |
}
|
@@ -1200,16 +1196,20 @@ ul.happyforms-parts-list li[data-part-type="signature_dummy"] .happyforms-parts-
|
|
1200 |
background-image: url(../svg/icons/signature.svg);
|
1201 |
}
|
1202 |
|
1203 |
-
ul.happyforms-parts-list li[data-part-type="
|
1204 |
-
background-image: url(../svg/icons/
|
1205 |
}
|
1206 |
|
1207 |
-
ul.happyforms-parts-list li[data-part-type="
|
1208 |
-
background-image: url(../svg/icons/
|
1209 |
}
|
1210 |
|
1211 |
-
ul.happyforms-parts-list li[data-part-type="
|
1212 |
-
|
|
|
|
|
|
|
|
|
1213 |
}
|
1214 |
|
1215 |
ul.happyforms-parts-list li[data-part-type="scrollable_terms_dummy"] .happyforms-parts-list-item-title:before {
|
@@ -1874,3 +1874,42 @@ ul.happyforms-parts-list li[data-part-type="poll"] {
|
|
1874 |
#customize-control-no_results_label {
|
1875 |
display: none;
|
1876 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1184 |
background-image: url(../svg/icons/story.svg);
|
1185 |
}
|
1186 |
|
|
|
|
|
|
|
|
|
1187 |
ul.happyforms-parts-list li[data-part-type="optin_dummy"] .happyforms-parts-list-item-title:before {
|
1188 |
background-image: url(../svg/icons/opt-in-choice.svg);
|
1189 |
}
|
1196 |
background-image: url(../svg/icons/signature.svg);
|
1197 |
}
|
1198 |
|
1199 |
+
ul.happyforms-parts-list li[data-part-type="layout_title"] .happyforms-parts-list-item-title:before {
|
1200 |
+
background-image: url(../svg/icons/heading.svg);
|
1201 |
}
|
1202 |
|
1203 |
+
ul.happyforms-parts-list li[data-part-type="placeholder"] .happyforms-parts-list-item-title:before {
|
1204 |
+
background-image: url(../svg/icons/paragraph.svg);
|
1205 |
}
|
1206 |
|
1207 |
+
ul.happyforms-parts-list li[data-part-type="media"] .happyforms-parts-list-item-title:before {
|
1208 |
+
background-image: url(../svg/icons/media.svg);
|
1209 |
+
}
|
1210 |
+
|
1211 |
+
ul.happyforms-parts-list li[data-part-type="divider"] .happyforms-parts-list-item-title:before {
|
1212 |
+
background-image: url(../svg/icons/separator.svg);
|
1213 |
}
|
1214 |
|
1215 |
ul.happyforms-parts-list li[data-part-type="scrollable_terms_dummy"] .happyforms-parts-list-item-title:before {
|
1874 |
#customize-control-no_results_label {
|
1875 |
display: none;
|
1876 |
}
|
1877 |
+
|
1878 |
+
/**
|
1879 |
+
*
|
1880 |
+
* Uploader
|
1881 |
+
*
|
1882 |
+
*/
|
1883 |
+
img.happyforms-upload-preview {
|
1884 |
+
display: none;
|
1885 |
+
width: auto;
|
1886 |
+
height: auto;
|
1887 |
+
max-width: 100%;
|
1888 |
+
max-height: 120px;
|
1889 |
+
}
|
1890 |
+
|
1891 |
+
.happyforms-upload-preview {
|
1892 |
+
display: none;
|
1893 |
+
}
|
1894 |
+
|
1895 |
+
.happyforms-upload-preview.show {
|
1896 |
+
display: block;
|
1897 |
+
}
|
1898 |
+
|
1899 |
+
.wp-core-ui .happyforms-media-upload button.button-add-media,
|
1900 |
+
.wp-core-ui .happyforms-media-upload button.happyforms-change-button {
|
1901 |
+
display: none;
|
1902 |
+
}
|
1903 |
+
|
1904 |
+
.wp-core-ui .happyforms-media-upload button.button-add-media.show,
|
1905 |
+
.wp-core-ui .happyforms-media-upload button.happyforms-change-button.show {
|
1906 |
+
display: inline-block;
|
1907 |
+
}
|
1908 |
+
|
1909 |
+
.happyforms-widget[data-part-type="media"] .happyforms-upload-actions button {
|
1910 |
+
width: 100%;
|
1911 |
+
}
|
1912 |
+
|
1913 |
+
.happyforms-part-widget[data-part-type="placeholder"] .wp-switch-editor {
|
1914 |
+
display: none;
|
1915 |
+
}
|
core/assets/css/preview.css
CHANGED
@@ -109,3 +109,13 @@ h3.happyforms-form__title:empty:before {
|
|
109 |
content: "Add title";
|
110 |
opacity: .5;
|
111 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
content: "Add title";
|
110 |
opacity: .5;
|
111 |
}
|
112 |
+
|
113 |
+
.happyforms-part--layout_title h1.happyforms-layout-title:empty:before,
|
114 |
+
.happyforms-part--layout_title h2.happyforms-layout-title:empty:before,
|
115 |
+
.happyforms-part--layout_title h3.happyforms-layout-title:empty:before,
|
116 |
+
.happyforms-part--layout_title h4.happyforms-layout-title:empty:before,
|
117 |
+
.happyforms-part--layout_title h5.happyforms-layout-title:empty:before,
|
118 |
+
.happyforms-part--layout_title h6.happyforms-layout-title:empty:before {
|
119 |
+
content: "Heading";
|
120 |
+
opacity: .5;
|
121 |
+
}
|
core/assets/js/customize/media.js
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function( $, Backbone ) {
|
2 |
+
|
3 |
+
var HappyFormsMediaHandle = function( el, model, options ) {
|
4 |
+
this.el = el;
|
5 |
+
this.$el = $( this.el );
|
6 |
+
this.model = model;
|
7 |
+
this.mediaFileFrame = false;
|
8 |
+
this.mediaTypes = [ 'image' ];
|
9 |
+
|
10 |
+
if ( options && options.mediaTypes ) {
|
11 |
+
this.mediaTypes = options.mediaTypes;
|
12 |
+
}
|
13 |
+
|
14 |
+
this.$uploadButton = $( '.happyforms-upload-button', this.$el );
|
15 |
+
this.$changeButton = $( '.happyforms-change-button', this.$el );
|
16 |
+
this.$removeButton = $( '.happyforms-remove-button', this.$el );
|
17 |
+
this.$previewImage = $( 'img', this.$el );
|
18 |
+
this.$previewVideo = $( '.wp-video', this.$el );
|
19 |
+
this.$previewAudio = $( '.wp-audio', this.$el );
|
20 |
+
this.$hiddenField = $( 'input[type=hidden]', this.$el );
|
21 |
+
|
22 |
+
this.modelAttribute = this.$uploadButton.attr( 'data-upload-target' );
|
23 |
+
|
24 |
+
this.$uploadButton.on( 'click', this.onUploadButtonClick.bind( this ) );
|
25 |
+
this.$changeButton.on( 'click', this.onChangeButtonClick.bind( this ) );
|
26 |
+
this.$removeButton.on( 'click', this.onRemoveButtonClick.bind( this ) );
|
27 |
+
};
|
28 |
+
|
29 |
+
HappyFormsMediaHandle.prototype.onUploadButtonClick = function( e ) {
|
30 |
+
e.preventDefault();
|
31 |
+
|
32 |
+
this.openOverlay();
|
33 |
+
}
|
34 |
+
|
35 |
+
HappyFormsMediaHandle.prototype.onChangeButtonClick = function( e ) {
|
36 |
+
e.preventDefault();
|
37 |
+
|
38 |
+
this.openOverlay();
|
39 |
+
}
|
40 |
+
|
41 |
+
HappyFormsMediaHandle.prototype.onRemoveButtonClick = function( e ) {
|
42 |
+
e.preventDefault();
|
43 |
+
|
44 |
+
this.removeMedia();
|
45 |
+
}
|
46 |
+
|
47 |
+
HappyFormsMediaHandle.prototype.openOverlay = function() {
|
48 |
+
var self = this;
|
49 |
+
|
50 |
+
wp.media.model.settings.post_id = this.model.id;
|
51 |
+
|
52 |
+
if ( this.mediaFileFrame ) {
|
53 |
+
this.mediaFileFrame.open();
|
54 |
+
|
55 |
+
return;
|
56 |
+
}
|
57 |
+
|
58 |
+
this.mediaFileFrame = wp.media.frames.wp_upload_file_frame = wp.media( {
|
59 |
+
title: self.$el.attr( 'data-overlay-title' ),
|
60 |
+
button: {
|
61 |
+
text: self.$el.attr( 'data-overlay-button-text' )
|
62 |
+
},
|
63 |
+
multiple: false
|
64 |
+
} );
|
65 |
+
|
66 |
+
this.mediaFileFrame.on( 'select', function() {
|
67 |
+
var attachment = self.mediaFileFrame.state().get( 'selection' ).first().toJSON();
|
68 |
+
var previewURL = attachment.url;
|
69 |
+
|
70 |
+
if ( -1 === self.mediaTypes.indexOf( attachment.type ) ) {
|
71 |
+
return;
|
72 |
+
}
|
73 |
+
|
74 |
+
switch ( attachment.type ) {
|
75 |
+
case 'image':
|
76 |
+
$( '.happyforms-upload-preview', self.$el ).removeClass( 'show' );
|
77 |
+
self.$previewImage.attr( 'src', previewURL ).addClass( 'show' );
|
78 |
+
break;
|
79 |
+
|
80 |
+
case 'video':
|
81 |
+
$( '.happyforms-upload-preview', self.$el ).removeClass( 'show' );
|
82 |
+
|
83 |
+
var videoPlayer;
|
84 |
+
var $video = $( '<video />', {
|
85 |
+
src: attachment.url,
|
86 |
+
type: attachment.mime,
|
87 |
+
preload: 'metadata',
|
88 |
+
poster: ( attachment.image.src !== attachment.icon ) ? attachment.image.src : '',
|
89 |
+
} );
|
90 |
+
|
91 |
+
if ( attachment.width ) {
|
92 |
+
$video.attr( 'width', attachment.width );
|
93 |
+
}
|
94 |
+
|
95 |
+
if ( attachment.height ) {
|
96 |
+
$video.attr( 'height', attachment.height );
|
97 |
+
}
|
98 |
+
|
99 |
+
self.$previewVideo.html( $video );
|
100 |
+
self.$previewVideo.addClass( 'show' );
|
101 |
+
videoPlayer = new MediaElementPlayer( $video[0], window._wpmejsSettings );
|
102 |
+
break;
|
103 |
+
|
104 |
+
case 'audio':
|
105 |
+
$( '.happyforms-upload-preview', self.$el ).removeClass( 'show' );
|
106 |
+
|
107 |
+
var audioPlayer;
|
108 |
+
var $audio = $( '<audio />', {
|
109 |
+
src: attachment.url,
|
110 |
+
type: attachment.mime,
|
111 |
+
preload: 'none',
|
112 |
+
} );
|
113 |
+
|
114 |
+
$audio.attr( 'width', '100%' );
|
115 |
+
|
116 |
+
self.$previewAudio.html( $audio );
|
117 |
+
self.$previewAudio.addClass( 'show' );
|
118 |
+
audioPlayer = new MediaElementPlayer( $audio[0], window._wpmejsSettings );
|
119 |
+
break;
|
120 |
+
}
|
121 |
+
|
122 |
+
self.$hiddenField.val( attachment.id );
|
123 |
+
|
124 |
+
self.model.set( self.modelAttribute, attachment.id );
|
125 |
+
|
126 |
+
self.$uploadButton.removeClass( 'show' );
|
127 |
+
self.$removeButton.addClass( 'show' );
|
128 |
+
self.$changeButton.addClass( 'show' );
|
129 |
+
} );
|
130 |
+
|
131 |
+
this.mediaFileFrame.open();
|
132 |
+
}
|
133 |
+
|
134 |
+
HappyFormsMediaHandle.prototype.removeMedia = function() {
|
135 |
+
this.$removeButton.removeClass( 'show' );
|
136 |
+
this.$changeButton.removeClass( 'show' );
|
137 |
+
this.$uploadButton.addClass( 'show' );
|
138 |
+
this.$previewImage.removeClass( 'show' ).attr( 'src', '' );
|
139 |
+
|
140 |
+
this.model.set( this.modelAttribute, '' );
|
141 |
+
}
|
142 |
+
|
143 |
+
$.fn.happyFormsMediaHandle = function( model, options ) {
|
144 |
+
this.each(function() {
|
145 |
+
$.data( this, 'HappyFormsMediaHandle', new HappyFormsMediaHandle( this, model, options ) );
|
146 |
+
} );
|
147 |
+
}
|
148 |
+
|
149 |
+
} ( jQuery, Backbone ) );
|
core/assets/js/parts/part-divider.js
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function( $, _, Backbone, api, settings ) {
|
2 |
+
|
3 |
+
happyForms.classes.models.parts.divider = happyForms.classes.models.Part.extend( {
|
4 |
+
defaults: function() {
|
5 |
+
return _.extend(
|
6 |
+
{},
|
7 |
+
settings.formParts.divider.defaults,
|
8 |
+
_.result( happyForms.classes.models.Part.prototype, 'defaults' ),
|
9 |
+
);
|
10 |
+
},
|
11 |
+
} );
|
12 |
+
|
13 |
+
happyForms.classes.views.parts.divider = happyForms.classes.views.Part.extend( {
|
14 |
+
template: '#customize-happyforms-divider-template',
|
15 |
+
} );
|
16 |
+
|
17 |
+
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
core/assets/js/parts/part-layout_title.js
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function( $, _, Backbone, api, settings ) {
|
2 |
+
|
3 |
+
happyForms.classes.models.parts.layout_title = happyForms.classes.models.Part.extend( {
|
4 |
+
defaults: function() {
|
5 |
+
return _.extend(
|
6 |
+
{},
|
7 |
+
settings.formParts.layout_title.defaults,
|
8 |
+
_.result( happyForms.classes.models.Part.prototype, 'defaults' ),
|
9 |
+
);
|
10 |
+
},
|
11 |
+
} );
|
12 |
+
|
13 |
+
happyForms.classes.views.parts.layout_title = happyForms.classes.views.Part.extend( {
|
14 |
+
template: '#customize-happyforms-layout_title-template',
|
15 |
+
|
16 |
+
initialize: function() {
|
17 |
+
happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
|
18 |
+
|
19 |
+
this.listenTo( this.model, 'change:label', this.onLabelChange );
|
20 |
+
this.listenTo( this.model, 'change:level', this.onHeadingLevel );
|
21 |
+
},
|
22 |
+
|
23 |
+
onLabelChange: function( model, value ) {
|
24 |
+
var data = {
|
25 |
+
id: this.model.id,
|
26 |
+
callback: 'onLayoutTitlePartLabelChange',
|
27 |
+
};
|
28 |
+
|
29 |
+
happyForms.previewSend( 'happyforms-part-dom-update', data );
|
30 |
+
},
|
31 |
+
|
32 |
+
onHeadingLevel: function( model, value ) {
|
33 |
+
var data = {
|
34 |
+
id: this.model.id,
|
35 |
+
callback: 'onHeadingLevelChange',
|
36 |
+
};
|
37 |
+
|
38 |
+
happyForms.previewSend( 'happyforms-part-dom-update', data );
|
39 |
+
}
|
40 |
+
|
41 |
+
} );
|
42 |
+
|
43 |
+
var Previewer = happyForms.previewer;
|
44 |
+
|
45 |
+
happyForms.previewer = _.extend( {}, Previewer, {
|
46 |
+
onLayoutTitlePartLabelChange: function( id, html ) {
|
47 |
+
var part = happyForms.form.get( 'parts' ).get( id );
|
48 |
+
var $part = this.$( html );
|
49 |
+
var $label = this.$( '.happyforms-layout-title', $part );
|
50 |
+
|
51 |
+
$label.text( part.get( 'label' ) );
|
52 |
+
},
|
53 |
+
|
54 |
+
onHeadingLevelChange: function( id, html ) {
|
55 |
+
var part = happyForms.form.get( 'parts' ).get( id );
|
56 |
+
var $part = this.$( html );
|
57 |
+
var $headinglevel = part.get( 'level' );
|
58 |
+
var $label = this.$( '.happyforms-layout-title', $part );
|
59 |
+
|
60 |
+
$label.replaceWith( function() {
|
61 |
+
return $( '<' + $headinglevel + '/>', {
|
62 |
+
html: this.innerHTML,
|
63 |
+
class: $( this ).attr( 'class' )
|
64 |
+
} );
|
65 |
+
} );
|
66 |
+
|
67 |
+
},
|
68 |
+
|
69 |
+
} );
|
70 |
+
|
71 |
+
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
core/assets/js/parts/part-media.js
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function( $, _, Backbone, api, settings ) {
|
2 |
+
|
3 |
+
happyForms.classes.models.parts.media = happyForms.classes.models.Part.extend( {
|
4 |
+
defaults: function() {
|
5 |
+
return _.extend(
|
6 |
+
{},
|
7 |
+
settings.formParts.media.defaults,
|
8 |
+
_.result( happyForms.classes.models.Part.prototype, 'defaults' ),
|
9 |
+
);
|
10 |
+
},
|
11 |
+
} );
|
12 |
+
|
13 |
+
happyForms.classes.views.parts.media = happyForms.classes.views.Part.extend( {
|
14 |
+
template: '#happyforms-customize-media-template',
|
15 |
+
|
16 |
+
initialize: function() {
|
17 |
+
happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
|
18 |
+
|
19 |
+
this.listenTo( this.model, 'change:attachment', this.onAttachmentChange );
|
20 |
+
},
|
21 |
+
|
22 |
+
ready: function() {
|
23 |
+
happyForms.classes.views.Part.prototype.ready.apply( this, arguments );
|
24 |
+
|
25 |
+
$( '.happyforms-media-upload', this.$el ).happyFormsMediaHandle( this.model, {
|
26 |
+
'mediaTypes': [ 'image', 'audio', 'video' ]
|
27 |
+
} );
|
28 |
+
},
|
29 |
+
|
30 |
+
onAttachmentChange: function( model, value ) {
|
31 |
+
model.fetchHtml( function( response ) {
|
32 |
+
var data = {
|
33 |
+
id: model.get( 'id' ),
|
34 |
+
html: response,
|
35 |
+
};
|
36 |
+
|
37 |
+
happyForms.previewSend( 'happyforms-form-part-refresh', data );
|
38 |
+
} );
|
39 |
+
}
|
40 |
+
} );
|
41 |
+
|
42 |
+
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
core/assets/js/parts/part-placeholder.js
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function( $, _, Backbone, api, settings ) {
|
2 |
+
|
3 |
+
happyForms.classes.models.parts.placeholder = happyForms.classes.models.Part.extend( {
|
4 |
+
defaults: function() {
|
5 |
+
return _.extend(
|
6 |
+
{},
|
7 |
+
settings.formParts.placeholder.defaults,
|
8 |
+
_.result( happyForms.classes.models.Part.prototype, 'defaults' ),
|
9 |
+
);
|
10 |
+
},
|
11 |
+
} );
|
12 |
+
|
13 |
+
happyForms.classes.views.parts.placeholder = happyForms.classes.views.Part.extend( {
|
14 |
+
template: '#happyforms-customize-placeholder-template',
|
15 |
+
editorId: null,
|
16 |
+
|
17 |
+
events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
|
18 |
+
'sort-stop': 'onSortStop',
|
19 |
+
} ),
|
20 |
+
|
21 |
+
ready: function() {
|
22 |
+
happyForms.classes.views.Part.prototype.ready.apply( this, arguments );
|
23 |
+
|
24 |
+
this.listenTo( this, 'refresh', this.onRefresh );
|
25 |
+
|
26 |
+
this.initEditor();
|
27 |
+
},
|
28 |
+
|
29 |
+
initEditor: function() {
|
30 |
+
var $textarea = $( 'textarea.wp-editor-area', this.$el );
|
31 |
+
|
32 |
+
this.editorId = $textarea.attr( 'id' );
|
33 |
+
this.editorSettings = {
|
34 |
+
tinymce: {
|
35 |
+
toolbar1: 'bold,italic,strikethrough,link',
|
36 |
+
plugins : 'charmap compat3x paste directionality hr image lists wordpress wpautoresize wpemoji wplink wptextpattern wpview',
|
37 |
+
setup: this.onEditorInit.bind( this )
|
38 |
+
},
|
39 |
+
quicktags: {
|
40 |
+
buttons: {}
|
41 |
+
},
|
42 |
+
mediaButtons: false
|
43 |
+
};
|
44 |
+
|
45 |
+
wp.editor.initialize( this.editorId, this.editorSettings );
|
46 |
+
},
|
47 |
+
|
48 |
+
removeEditor: function() {
|
49 |
+
wp.editor.remove( this.editorId );
|
50 |
+
this.editorId = null;
|
51 |
+
},
|
52 |
+
|
53 |
+
onSortStop: function() {
|
54 |
+
this.removeEditor();
|
55 |
+
this.initEditor();
|
56 |
+
},
|
57 |
+
|
58 |
+
onRefresh: function() {
|
59 |
+
this.removeEditor();
|
60 |
+
this.initEditor();
|
61 |
+
},
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Triggere previewer event on each `keyup` and `change` event in the WP editor.
|
65 |
+
*
|
66 |
+
* @since 1.0.0.
|
67 |
+
*
|
68 |
+
* @param {object} editor TinyMCE editor JS object.
|
69 |
+
*
|
70 |
+
* @return void
|
71 |
+
*/
|
72 |
+
onEditorInit: function( editor ) {
|
73 |
+
editor.on( 'keyup change', function() {
|
74 |
+
this.model.set( 'placeholder_text', editor.getContent() );
|
75 |
+
|
76 |
+
var data = {
|
77 |
+
id: this.model.get('id'),
|
78 |
+
callback: 'onPlaceholderTextChangeCallBack',
|
79 |
+
};
|
80 |
+
|
81 |
+
happyForms.previewSend('happyforms-part-dom-update', data);
|
82 |
+
}.bind( this ) );
|
83 |
+
},
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Add a special treatment for removing WP editor when the part is removed.
|
87 |
+
*
|
88 |
+
* @since 1.0.0.
|
89 |
+
*
|
90 |
+
* @return void
|
91 |
+
*/
|
92 |
+
remove: function() {
|
93 |
+
wp.editor.remove( this.editorId );
|
94 |
+
|
95 |
+
happyForms.classes.views.Part.prototype.remove.apply( this, arguments );
|
96 |
+
}
|
97 |
+
} );
|
98 |
+
|
99 |
+
happyForms.previewer = _.extend( happyForms.previewer, {
|
100 |
+
onPlaceholderTextChangeCallBack: function( id, html, options ) {
|
101 |
+
var part = this.getPartModel( id );
|
102 |
+
var $part = this.getPartElement( html );
|
103 |
+
|
104 |
+
$( '.happyforms-part__el', $part ).html( part.get( 'placeholder_text' ) );
|
105 |
+
},
|
106 |
+
} );
|
107 |
+
|
108 |
+
} ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings );
|
core/classes/class-form-part-library.php
CHANGED
@@ -7,13 +7,18 @@ class HappyForms_Form_Part_Library {
|
|
7 |
private $parts = array();
|
8 |
|
9 |
private $standard_parts = array(
|
10 |
-
'HappyForms_Part_SingleLineText'
|
11 |
-
'HappyForms_Part_MultiLineText'
|
12 |
-
'HappyForms_Part_Email'
|
13 |
-
'HappyForms_Part_Radio'
|
14 |
-
'HappyForms_Part_Checkbox'
|
15 |
-
'HappyForms_Part_Select'
|
16 |
-
'HappyForms_Part_Number'
|
|
|
|
|
|
|
|
|
|
|
17 |
);
|
18 |
|
19 |
public static function instance() {
|
@@ -29,9 +34,12 @@ class HappyForms_Form_Part_Library {
|
|
29 |
public function __construct() {
|
30 |
require_once( happyforms_get_core_folder() . '/classes/class-form-part.php' );
|
31 |
|
32 |
-
foreach ( $this->standard_parts as $
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
35 |
}
|
36 |
}
|
37 |
|
@@ -58,26 +66,24 @@ class HappyForms_Form_Part_Library {
|
|
58 |
*
|
59 |
* @return void
|
60 |
*/
|
61 |
-
public function register_part( $
|
62 |
-
$
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
$
|
67 |
-
} else {
|
68 |
-
$this->parts = array_merge(
|
69 |
-
array_slice( $this->parts, 0, $index ),
|
70 |
-
array( $key => $value ),
|
71 |
-
array_slice( $this->parts, $index )
|
72 |
-
);
|
73 |
}
|
74 |
-
}
|
75 |
|
76 |
-
|
77 |
-
$key = $part instanceof HappyForms_Form_Part ? $this->hash_object( $part ) : $part;
|
78 |
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
}
|
83 |
|
7 |
private $parts = array();
|
8 |
|
9 |
private $standard_parts = array(
|
10 |
+
1 => array( 'HappyForms_Part_SingleLineText', 'class-part-single-line-text' ),
|
11 |
+
2 => array( 'HappyForms_Part_MultiLineText', 'class-part-multi-line-text' ),
|
12 |
+
3 => array( 'HappyForms_Part_Email', 'class-part-email' ),
|
13 |
+
5 => array( 'HappyForms_Part_Radio', 'class-part-radio' ),
|
14 |
+
6 => array( 'HappyForms_Part_Checkbox', 'class-part-checkbox' ),
|
15 |
+
8 => array( 'HappyForms_Part_Select', 'class-part-select' ),
|
16 |
+
9 => array( 'HappyForms_Part_Number', 'class-part-number' ),
|
17 |
+
100 => array( 'HappyForms_Part_LayoutDrawerGroup', 'class-part-layout-drawer-group' ),
|
18 |
+
101 => array( 'HappyForms_Part_LayoutTitle', 'class-part-layout-title' ),
|
19 |
+
102 => array( 'HappyForms_Part_Placeholder', 'class-part-placeholder' ),
|
20 |
+
103 => array( 'HappyForms_Part_Media', 'class-part-media' ),
|
21 |
+
105 => array( 'HappyForms_Part_Divider', 'class-part-divider' ),
|
22 |
);
|
23 |
|
24 |
public static function instance() {
|
34 |
public function __construct() {
|
35 |
require_once( happyforms_get_core_folder() . '/classes/class-form-part.php' );
|
36 |
|
37 |
+
foreach ( $this->standard_parts as $index => $part ) {
|
38 |
+
list( $class, $file ) = $part;
|
39 |
+
|
40 |
+
require_once( happyforms_get_core_folder() . "/classes/parts/{$file}.php" );
|
41 |
+
|
42 |
+
$this->register_part( $class, $index );
|
43 |
}
|
44 |
}
|
45 |
|
66 |
*
|
67 |
* @return void
|
68 |
*/
|
69 |
+
public function register_part( $part_class, $index = -1 ) {
|
70 |
+
$part = new $part_class();
|
71 |
+
|
72 |
+
if ( isset( $this->parts[$index] ) ) {
|
73 |
+
$existing_part_class = get_class( $this->parts[$index] );
|
74 |
+
throw new Exception( __( "{$existing_part_class} already registered at index {$index}", 'happyforms' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
|
|
76 |
|
77 |
+
$this->parts[$index] = $part;
|
|
|
78 |
|
79 |
+
ksort( $this->parts, SORT_NUMERIC );
|
80 |
+
}
|
81 |
+
|
82 |
+
public function deregister_part( $type ) {
|
83 |
+
foreach ( $this->parts as $index => $part ) {
|
84 |
+
if ( $type === $part->type ) {
|
85 |
+
unset( $this->parts[$index] );
|
86 |
+
}
|
87 |
}
|
88 |
}
|
89 |
|
core/classes/class-form-styles.php
CHANGED
@@ -487,7 +487,13 @@ class HappyForms_Form_Styles {
|
|
487 |
'mode' => 'css',
|
488 |
'target' => 'value',
|
489 |
'sanitize' => ''
|
490 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
491 |
);
|
492 |
|
493 |
$fields = apply_filters( 'happyforms_style_fields', $fields );
|
@@ -752,6 +758,16 @@ class HappyForms_Form_Styles {
|
|
752 |
'label' => __( 'Even row secondary', 'happyforms' ),
|
753 |
'field' => 'color_table_row_even_text',
|
754 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
755 |
5800 => array(
|
756 |
'type' => 'divider',
|
757 |
'label' => __( 'Submit button', 'happyforms' ),
|
487 |
'mode' => 'css',
|
488 |
'target' => 'value',
|
489 |
'sanitize' => ''
|
490 |
+
),
|
491 |
+
'color_divider_hr' => array(
|
492 |
+
'default' => '#cccccc',
|
493 |
+
'sanitize' => 'sanitize_text_field',
|
494 |
+
'target' => 'css_var',
|
495 |
+
'variable' => '--happyforms-color-divider-hr',
|
496 |
+
),
|
497 |
);
|
498 |
|
499 |
$fields = apply_filters( 'happyforms_style_fields', $fields );
|
758 |
'label' => __( 'Even row secondary', 'happyforms' ),
|
759 |
'field' => 'color_table_row_even_text',
|
760 |
),
|
761 |
+
5794 => array(
|
762 |
+
'type' => 'divider',
|
763 |
+
'label' => __( 'Separators', 'happyforms' ),
|
764 |
+
'id' => 'dividers',
|
765 |
+
),
|
766 |
+
5795 => array(
|
767 |
+
'type' => 'color',
|
768 |
+
'label' => __( 'Color', 'happyforms' ),
|
769 |
+
'field' => 'color_divider_hr',
|
770 |
+
),
|
771 |
5800 => array(
|
772 |
'type' => 'divider',
|
773 |
'label' => __( 'Submit button', 'happyforms' ),
|
core/classes/class-happyforms-core.php
CHANGED
@@ -60,6 +60,7 @@ class HappyForms_Core {
|
|
60 |
if ( is_admin() ) {
|
61 |
require_once( happyforms_get_core_folder() . '/classes/class-admin-notices.php' );
|
62 |
require_once( happyforms_get_core_folder() . '/classes/class-dashboard-modals.php' );
|
|
|
63 |
}
|
64 |
|
65 |
require_once( happyforms_get_core_folder() . '/classes/class-validation-messages.php' );
|
60 |
if ( is_admin() ) {
|
61 |
require_once( happyforms_get_core_folder() . '/classes/class-admin-notices.php' );
|
62 |
require_once( happyforms_get_core_folder() . '/classes/class-dashboard-modals.php' );
|
63 |
+
require_once( happyforms_get_core_folder() . '/classes/class-import-controller.php' );
|
64 |
}
|
65 |
|
66 |
require_once( happyforms_get_core_folder() . '/classes/class-validation-messages.php' );
|
core/classes/class-import-controller.php
ADDED
@@ -0,0 +1,138 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! class_exists( 'WP_Importer' ) ) {
|
4 |
+
$class_wp_importer = ABSPATH . 'wp-admin/includes/class-wp-importer.php';
|
5 |
+
if ( file_exists( $class_wp_importer ) ) {
|
6 |
+
require $class_wp_importer;
|
7 |
+
}
|
8 |
+
}
|
9 |
+
|
10 |
+
|
11 |
+
class HappyForms_Import_Controller extends WP_Importer {
|
12 |
+
|
13 |
+
var $file_id;
|
14 |
+
|
15 |
+
private static $instance;
|
16 |
+
|
17 |
+
public static function instance() {
|
18 |
+
if ( is_null( self::$instance ) ) {
|
19 |
+
self::$instance = new self();
|
20 |
+
}
|
21 |
+
|
22 |
+
self::$instance->hook();
|
23 |
+
|
24 |
+
return self::$instance;
|
25 |
+
}
|
26 |
+
|
27 |
+
public function hook() {
|
28 |
+
add_action( 'admin_init', array( $this, 'register_importer' ) );
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
public function register_importer() {
|
33 |
+
if ( ! defined( 'WP_LOAD_IMPORTERS' ) || ! current_user_can( 'manage_options' ) ) {
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
$importer_description = __( 'Import forms from a forms export file.', 'happyforms' );
|
38 |
+
$importer_description = apply_filters( 'happyforms_importer_description', $importer_description );
|
39 |
+
|
40 |
+
register_importer(
|
41 |
+
'happyforms',
|
42 |
+
__( 'Forms', 'happyforms' ),
|
43 |
+
$importer_description,
|
44 |
+
array( $this, 'dispatch' )
|
45 |
+
);
|
46 |
+
}
|
47 |
+
|
48 |
+
public function dispatch() {
|
49 |
+
$this->header();
|
50 |
+
|
51 |
+
if ( ! isset( $_FILES['import']['name'] ) ) {
|
52 |
+
$this->upload_form();
|
53 |
+
} else {
|
54 |
+
if ( $this->handle_upload() ) {
|
55 |
+
check_admin_referer( 'import-upload' );
|
56 |
+
require_once( happyforms_get_include_folder() . '/classes/class-importer-xml.php' );
|
57 |
+
|
58 |
+
$file = get_attached_file( $this->id );
|
59 |
+
$importer = new HappyForms_Importer_XML();
|
60 |
+
$result = $importer->import( $file );
|
61 |
+
|
62 |
+
$messages = [];
|
63 |
+
|
64 |
+
if ( is_wp_error( $result ) ) {
|
65 |
+
$messages = $result->get_error_messages();
|
66 |
+
} else {
|
67 |
+
$messages = $importer->get_success_messages();
|
68 |
+
}
|
69 |
+
|
70 |
+
if ( ! empty( $messages ) ) {
|
71 |
+
$this->print_messages( $messages );
|
72 |
+
}
|
73 |
+
|
74 |
+
wp_import_cleanup( $this->id );
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
$this->footer();
|
79 |
+
}
|
80 |
+
|
81 |
+
function header() {
|
82 |
+
echo '<div class="wrap">';
|
83 |
+
echo '<h2>' . __( 'Import Forms', 'happyforms' ) . '</h2>';
|
84 |
+
}
|
85 |
+
|
86 |
+
function footer() {
|
87 |
+
echo '</div>';
|
88 |
+
}
|
89 |
+
|
90 |
+
function upload_form() {
|
91 |
+
echo '<div class="narrow">';
|
92 |
+
echo '<p>' . __( 'Choose a forms export (.xml) file to upload, then click Upload file and import.', 'happyforms' ) . '</p>';
|
93 |
+
wp_import_upload_form( 'admin.php?import=happyforms' );
|
94 |
+
echo '</div>';
|
95 |
+
}
|
96 |
+
|
97 |
+
public function handle_upload() {
|
98 |
+
$file = wp_import_handle_upload();
|
99 |
+
|
100 |
+
if ( isset( $file['error'] ) ) {
|
101 |
+
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'happyforms' ) . '</strong><br />';
|
102 |
+
echo esc_html( $file['error'] ) . '</p>';
|
103 |
+
|
104 |
+
return false;
|
105 |
+
} else if ( ! file_exists( $file['file'] ) ) {
|
106 |
+
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '</strong><br />';
|
107 |
+
printf( __( 'The export file could not be found at <code>%s</code>. It is likely that this was caused by a permissions problem.', 'happyforms' ), esc_html( $file['file'] ) );
|
108 |
+
echo '</p>';
|
109 |
+
|
110 |
+
return false;
|
111 |
+
}
|
112 |
+
|
113 |
+
$this->id = (int) $file['id'];
|
114 |
+
|
115 |
+
return true;
|
116 |
+
}
|
117 |
+
|
118 |
+
private function print_messages( $messages ) {
|
119 |
+
$output = array_map( function( $message ) {
|
120 |
+
return "<p>$message</p>";
|
121 |
+
}, $messages );
|
122 |
+
|
123 |
+
$output = implode( '', $output );
|
124 |
+
|
125 |
+
echo $output;
|
126 |
+
}
|
127 |
+
|
128 |
+
}
|
129 |
+
|
130 |
+
if ( ! function_exists( 'happyforms_get_import_controller' ) ):
|
131 |
+
|
132 |
+
function happyforms_get_import_controller() {
|
133 |
+
return HappyForms_Import_Controller::instance();
|
134 |
+
}
|
135 |
+
|
136 |
+
endif;
|
137 |
+
|
138 |
+
happyforms_get_import_controller();
|
core/classes/class-wp-customize-form-manager.php
CHANGED
@@ -315,12 +315,13 @@ class HappyForms_WP_Customize_Form_Manager {
|
|
315 |
$customize_deps, happyforms_get_version(), true
|
316 |
);
|
317 |
|
318 |
-
$data = array(
|
319 |
'form' => $this->get_current_form(),
|
320 |
'formParts' => $this->library->get_parts(),
|
321 |
'baseUrl' => get_home_url( null, '/' ),
|
322 |
'unlabeledFieldLabel' => happyforms_get_part_label( array( 'label' => '' ) ),
|
323 |
-
|
|
|
324 |
|
325 |
wp_localize_script( 'happyforms-customize', '_happyFormsSettings', $data );
|
326 |
wp_enqueue_script( 'happyforms-customize' );
|
315 |
$customize_deps, happyforms_get_version(), true
|
316 |
);
|
317 |
|
318 |
+
$data = apply_filters( 'happyforms_customize_settings', array(
|
319 |
'form' => $this->get_current_form(),
|
320 |
'formParts' => $this->library->get_parts(),
|
321 |
'baseUrl' => get_home_url( null, '/' ),
|
322 |
'unlabeledFieldLabel' => happyforms_get_part_label( array( 'label' => '' ) ),
|
323 |
+
'abandonAlertMessage' => __( 'The changes you made will be lost if you navigate away from this page.', 'happyforms' ),
|
324 |
+
) );
|
325 |
|
326 |
wp_localize_script( 'happyforms-customize', '_happyFormsSettings', $data );
|
327 |
wp_enqueue_script( 'happyforms-customize' );
|
core/classes/parts/class-part-divider.php
ADDED
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class HappyForms_Part_Divider extends HappyForms_Form_Part {
|
4 |
+
|
5 |
+
public $type = 'divider';
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
$this->label = __( 'Separator', 'happyforms' );
|
9 |
+
$this->description = __( 'For adding a horizontal rule to visually separate fields.', 'happyforms' );
|
10 |
+
|
11 |
+
add_filter( 'happyforms_message_part_visible', array( $this, 'message_part_visible' ), 10, 2 );
|
12 |
+
add_filter( 'happyforms_email_part_visible', array( $this, 'email_part_visible' ), 10, 3 );
|
13 |
+
add_filter( 'happyforms_email_part_label', array( $this, 'email_part_label' ), 10, 4 );
|
14 |
+
add_filter( 'happyforms_email_part_value', array( $this, 'email_part_value' ), 10, 4 );
|
15 |
+
add_filter( 'happyforms_csv_part_visible', array( $this, 'csv_part_visible' ), 10, 2 );
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Get all part meta fields defaults.
|
20 |
+
*
|
21 |
+
* @since 1.0.0.
|
22 |
+
*
|
23 |
+
* @return array
|
24 |
+
*/
|
25 |
+
public function get_customize_fields() {
|
26 |
+
$fields = array(
|
27 |
+
'type' => array(
|
28 |
+
'default' => $this->type,
|
29 |
+
'sanitize' => 'sanitize_text_field',
|
30 |
+
),
|
31 |
+
'label' => array(
|
32 |
+
'default' => __( '', 'happyforms' ),
|
33 |
+
'sanitize' => 'sanitize_text_field',
|
34 |
+
),
|
35 |
+
'width' => array(
|
36 |
+
'default' => 'full',
|
37 |
+
'sanitize' => 'sanitize_key'
|
38 |
+
),
|
39 |
+
'css_class' => array(
|
40 |
+
'default' => '',
|
41 |
+
'sanitize' => 'sanitize_text_field'
|
42 |
+
),
|
43 |
+
'required' => array(
|
44 |
+
'default' => 0,
|
45 |
+
'sanitize' => 'happyforms_sanitize_checkbox',
|
46 |
+
),
|
47 |
+
);
|
48 |
+
|
49 |
+
return happyforms_get_part_customize_fields( $fields, $this->type );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Get template for part item in customize pane.
|
54 |
+
*
|
55 |
+
* @since 1.0.0.
|
56 |
+
*
|
57 |
+
* @return string
|
58 |
+
*/
|
59 |
+
public function customize_templates() {
|
60 |
+
$template_path = happyforms_get_core_folder() . '/templates/parts/customize-divider.php';
|
61 |
+
$template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
|
62 |
+
|
63 |
+
require_once( $template_path );
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Get front end part template with parsed data.
|
68 |
+
*
|
69 |
+
* @since 1.0.0.
|
70 |
+
*
|
71 |
+
* @param array $part_data Form part data.
|
72 |
+
* @param array $form_data Form (post) data.
|
73 |
+
*
|
74 |
+
* @return string Markup for the form part.
|
75 |
+
*/
|
76 |
+
public function frontend_template( $part_data = array(), $form_data = array() ) {
|
77 |
+
$part = wp_parse_args( $part_data, $this->get_customize_defaults() );
|
78 |
+
$form = $form_data;
|
79 |
+
|
80 |
+
include( happyforms_get_core_folder() . '/templates/parts/frontend-divider.php' );
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Sanitize submitted value before storing it.
|
85 |
+
*
|
86 |
+
* @since 1.0.0.
|
87 |
+
*
|
88 |
+
* @param array $part_data Form part data.
|
89 |
+
*
|
90 |
+
* @return string
|
91 |
+
*/
|
92 |
+
public function sanitize_value( $part_data = array(), $form_data = array(), $request = array() ) {
|
93 |
+
$sanitized_value = $this->get_default_value( $part_data );
|
94 |
+
|
95 |
+
return $sanitized_value;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Validate value before submitting it. If it fails validation, return WP_Error object, showing respective error message.
|
100 |
+
*
|
101 |
+
* @since 1.0.0.
|
102 |
+
*
|
103 |
+
* @param array $part Form part data.
|
104 |
+
* @param string $value Submitted value.
|
105 |
+
*
|
106 |
+
* @return string|object
|
107 |
+
*/
|
108 |
+
public function validate_value( $value, $part = array(), $form = array() ) {
|
109 |
+
return $value;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Enqueue scripts in customizer area.
|
114 |
+
*
|
115 |
+
* @since 1.0.0.
|
116 |
+
*
|
117 |
+
* @param array List of dependencies.
|
118 |
+
*
|
119 |
+
* @return void
|
120 |
+
*/
|
121 |
+
public function customize_enqueue_scripts( $deps = array() ) {
|
122 |
+
wp_enqueue_script(
|
123 |
+
'part-divider',
|
124 |
+
happyforms_get_plugin_url() . 'core/assets/js/parts/part-divider.js',
|
125 |
+
$deps, happyforms_get_version(), true
|
126 |
+
);
|
127 |
+
}
|
128 |
+
|
129 |
+
public function message_part_visible( $visible, $part ) {
|
130 |
+
if ( $this->type === $part['type'] ) {
|
131 |
+
$visible = false;
|
132 |
+
}
|
133 |
+
|
134 |
+
return $visible;
|
135 |
+
}
|
136 |
+
|
137 |
+
public function email_part_visible( $visible, $part, $form ) {
|
138 |
+
if ( $this->type === $part['type'] ) {
|
139 |
+
$visible = true;
|
140 |
+
}
|
141 |
+
|
142 |
+
return $visible;
|
143 |
+
}
|
144 |
+
|
145 |
+
public function email_part_value( $value, $message, $part, $form ) {
|
146 |
+
if ( $this->type === $part['type'] ) {
|
147 |
+
$value = '<hr>';
|
148 |
+
}
|
149 |
+
|
150 |
+
return $value;
|
151 |
+
}
|
152 |
+
|
153 |
+
public function email_part_label( $label, $message, $part, $form ) {
|
154 |
+
if ( $this->type === $part['type'] ) {
|
155 |
+
$label = '';
|
156 |
+
}
|
157 |
+
|
158 |
+
return $label;
|
159 |
+
}
|
160 |
+
|
161 |
+
public function csv_part_visible( $visible, $part ) {
|
162 |
+
if ( $this->type === $part['type'] ) {
|
163 |
+
$visible = false;
|
164 |
+
}
|
165 |
+
|
166 |
+
return $visible;
|
167 |
+
}
|
168 |
+
|
169 |
+
}
|
core/classes/parts/class-part-layout-drawer-group.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class HappyForms_Part_LayoutDrawerGroup extends HappyForms_Form_Part {
|
4 |
+
|
5 |
+
public $type = 'layout_drawer_group';
|
6 |
+
public $group = 'drawer_group';
|
7 |
+
|
8 |
+
public function __construct() {
|
9 |
+
$this->label = __( 'Design', 'happyforms' );
|
10 |
+
$this->description = '';
|
11 |
+
}
|
12 |
+
|
13 |
+
}
|
core/classes/parts/class-part-layout-title.php
ADDED
@@ -0,0 +1,177 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class HappyForms_Part_LayoutTitle extends HappyForms_Form_Part {
|
4 |
+
|
5 |
+
public $type = 'layout_title';
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
$this->label = __( 'Heading', 'happyforms' );
|
9 |
+
$this->description = __( 'For adding titles to visually separate fields.', 'happyforms' );
|
10 |
+
|
11 |
+
add_filter( 'happyforms_message_part_visible', array( $this, 'message_part_visible' ), 10, 2 );
|
12 |
+
add_filter( 'happyforms_csv_part_visible', array( $this, 'csv_part_visible' ), 10, 2 );
|
13 |
+
add_filter( 'happyforms_email_part_label', array( $this, 'email_part_label' ), 10, 4 );
|
14 |
+
add_filter( 'happyforms_email_part_value', array( $this, 'email_part_value' ), 10, 5 );
|
15 |
+
add_filter( 'happyforms_email_part_visible', array( $this, 'email_part_visible' ), 10, 3 );
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Get all part meta fields defaults.
|
20 |
+
*
|
21 |
+
* @since 1.0.0.
|
22 |
+
*
|
23 |
+
* @return array
|
24 |
+
*/
|
25 |
+
public function get_customize_fields() {
|
26 |
+
$fields = array(
|
27 |
+
'type' => array(
|
28 |
+
'default' => $this->type,
|
29 |
+
'sanitize' => 'sanitize_text_field',
|
30 |
+
),
|
31 |
+
'label' => array(
|
32 |
+
'default' => __( '', 'happyforms' ),
|
33 |
+
'sanitize' => 'sanitize_text_field',
|
34 |
+
),
|
35 |
+
'width' => array(
|
36 |
+
'default' => 'full',
|
37 |
+
'sanitize' => 'sanitize_key'
|
38 |
+
),
|
39 |
+
'level' => array(
|
40 |
+
'default' => 'h3',
|
41 |
+
'sanitize' => 'sanitize_text_field'
|
42 |
+
),
|
43 |
+
'css_class' => array(
|
44 |
+
'default' => '',
|
45 |
+
'sanitize' => 'sanitize_text_field'
|
46 |
+
),
|
47 |
+
'required' => array(
|
48 |
+
'default' => 0,
|
49 |
+
'sanitize' => 'happyforms_sanitize_checkbox',
|
50 |
+
),
|
51 |
+
);
|
52 |
+
|
53 |
+
return happyforms_get_part_customize_fields( $fields, $this->type );
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Get template for part item in customize pane.
|
58 |
+
*
|
59 |
+
* @since 1.0.0.
|
60 |
+
*
|
61 |
+
* @return string
|
62 |
+
*/
|
63 |
+
public function customize_templates() {
|
64 |
+
$template_path = happyforms_get_core_folder() . '/templates/parts/customize-layout_title.php';
|
65 |
+
$template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
|
66 |
+
|
67 |
+
require_once( $template_path );
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Get front end part template with parsed data.
|
72 |
+
*
|
73 |
+
* @since 1.0.0.
|
74 |
+
*
|
75 |
+
* @param array $part_data Form part data.
|
76 |
+
* @param array $form_data Form (post) data.
|
77 |
+
*
|
78 |
+
* @return string Markup for the form part.
|
79 |
+
*/
|
80 |
+
public function frontend_template( $part_data = array(), $form_data = array() ) {
|
81 |
+
$part = wp_parse_args( $part_data, $this->get_customize_defaults() );
|
82 |
+
$form = $form_data;
|
83 |
+
|
84 |
+
include( happyforms_get_core_folder() . '/templates/parts/frontend-layout_title.php' );
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Sanitize submitted value before storing it.
|
89 |
+
*
|
90 |
+
* @since 1.0.0.
|
91 |
+
*
|
92 |
+
* @param array $part_data Form part data.
|
93 |
+
*
|
94 |
+
* @return string
|
95 |
+
*/
|
96 |
+
public function sanitize_value( $part_data = array(), $form_data = array(), $request = array() ) {
|
97 |
+
$sanitized_value = $this->get_default_value( $part_data );
|
98 |
+
|
99 |
+
return $sanitized_value;
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Validate value before submitting it. If it fails validation, return WP_Error object, showing respective error message.
|
104 |
+
*
|
105 |
+
* @since 1.0.0.
|
106 |
+
*
|
107 |
+
* @param array $part Form part data.
|
108 |
+
* @param string $value Submitted value.
|
109 |
+
*
|
110 |
+
* @return string|object
|
111 |
+
*/
|
112 |
+
public function validate_value( $value, $part = array(), $form = array() ) {
|
113 |
+
return $value;
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Enqueue scripts in customizer area.
|
118 |
+
*
|
119 |
+
* @since 1.0.0.
|
120 |
+
*
|
121 |
+
* @param array List of dependencies.
|
122 |
+
*
|
123 |
+
* @return void
|
124 |
+
*/
|
125 |
+
public function customize_enqueue_scripts( $deps = array() ) {
|
126 |
+
wp_enqueue_script(
|
127 |
+
'part-layout_title',
|
128 |
+
happyforms_get_plugin_url() . 'core/assets/js/parts/part-layout_title.js',
|
129 |
+
$deps, happyforms_get_version(), true
|
130 |
+
);
|
131 |
+
}
|
132 |
+
|
133 |
+
public function message_part_visible( $visible, $part ) {
|
134 |
+
if ( $this->type === $part['type'] ) {
|
135 |
+
$visible = false;
|
136 |
+
}
|
137 |
+
|
138 |
+
return $visible;
|
139 |
+
}
|
140 |
+
|
141 |
+
public function csv_part_visible( $visible, $part ) {
|
142 |
+
if ( $this->type === $part['type'] ) {
|
143 |
+
$visible = false;
|
144 |
+
}
|
145 |
+
|
146 |
+
return $visible;
|
147 |
+
}
|
148 |
+
|
149 |
+
public function email_part_label( $label, $message, $part, $form ) {
|
150 |
+
if ( $this->type === $part['type'] ) {
|
151 |
+
if ( '' === $part['label'] ) {
|
152 |
+
$label = '';
|
153 |
+
}
|
154 |
+
}
|
155 |
+
|
156 |
+
return $label;
|
157 |
+
}
|
158 |
+
|
159 |
+
public function email_part_visible( $visible, $part, $form ) {
|
160 |
+
if ( $this->type === $part['type'] ) {
|
161 |
+
$visible = true;
|
162 |
+
}
|
163 |
+
|
164 |
+
return $visible;
|
165 |
+
}
|
166 |
+
|
167 |
+
public function email_part_value( $value, $message, $part, $form, $context ) {
|
168 |
+
if ( $this->type !== $part['type'] ) {
|
169 |
+
return $value;
|
170 |
+
}
|
171 |
+
|
172 |
+
$value = '';
|
173 |
+
|
174 |
+
return $value;
|
175 |
+
}
|
176 |
+
|
177 |
+
}
|
core/classes/parts/class-part-media.php
ADDED
@@ -0,0 +1,228 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class HappyForms_Part_Media extends HappyForms_Form_Part {
|
4 |
+
|
5 |
+
public $type = 'media';
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
$this->label = __( 'Media', 'happyforms' );
|
9 |
+
$this->description = __( 'For adding a single image, video, animated gif or audio clip.', 'happyforms' );
|
10 |
+
|
11 |
+
add_filter( 'happyforms_message_part_visible', array( $this, 'message_part_visible' ), 10, 2 );
|
12 |
+
add_filter( 'happyforms_email_part_visible', array( $this, 'email_part_visible' ), 10, 3 );
|
13 |
+
add_filter( 'happyforms_email_part_label', array( $this, 'email_part_label' ), 10, 4 );
|
14 |
+
add_filter( 'happyforms_email_part_value', array( $this, 'email_part_value' ), 10, 4 );
|
15 |
+
add_filter( 'happyforms_csv_part_visible', array( $this, 'csv_part_visible' ), 10, 2 );
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Get all part meta fields defaults.
|
20 |
+
*
|
21 |
+
* @since 1.0.0.
|
22 |
+
*
|
23 |
+
* @return array
|
24 |
+
*/
|
25 |
+
public function get_customize_fields() {
|
26 |
+
$fields = array(
|
27 |
+
'type' => array(
|
28 |
+
'default' => $this->type,
|
29 |
+
'sanitize' => 'sanitize_text_field',
|
30 |
+
),
|
31 |
+
'label' => array(
|
32 |
+
'default' => __( '', 'happyforms' ),
|
33 |
+
'sanitize' => 'sanitize_text_field',
|
34 |
+
),
|
35 |
+
'label_placement' => array(
|
36 |
+
'default' => 'show',
|
37 |
+
'sanitize' => 'sanitize_text_field'
|
38 |
+
),
|
39 |
+
'description' => array(
|
40 |
+
'default' => '',
|
41 |
+
'sanitize' => 'sanitize_text_field'
|
42 |
+
),
|
43 |
+
'width' => array(
|
44 |
+
'default' => 'full',
|
45 |
+
'sanitize' => 'sanitize_key'
|
46 |
+
),
|
47 |
+
'css_class' => array(
|
48 |
+
'default' => '',
|
49 |
+
'sanitize' => 'sanitize_text_field'
|
50 |
+
),
|
51 |
+
'attachment' => array(
|
52 |
+
'default' => 0,
|
53 |
+
'sanitize' => 'intval',
|
54 |
+
),
|
55 |
+
'required' => array(
|
56 |
+
'default' => 0,
|
57 |
+
'sanitize' => 'intval',
|
58 |
+
),
|
59 |
+
);
|
60 |
+
|
61 |
+
return happyforms_get_part_customize_fields( $fields, $this->type );
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Get template for part item in customize pane.
|
66 |
+
*
|
67 |
+
* @since 1.0.0.
|
68 |
+
*
|
69 |
+
* @return string
|
70 |
+
*/
|
71 |
+
public function customize_templates() {
|
72 |
+
$template_path = happyforms_get_core_folder() . '/templates/parts/customize-media.php';
|
73 |
+
$template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
|
74 |
+
|
75 |
+
require_once( $template_path );
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Get front end part template with parsed data.
|
80 |
+
*
|
81 |
+
* @since 1.0.0.
|
82 |
+
*
|
83 |
+
* @param array $part_data Form part data.
|
84 |
+
* @param array $form_data Form (post) data.
|
85 |
+
*
|
86 |
+
* @return string Markup for the form part.
|
87 |
+
*/
|
88 |
+
public function frontend_template( $part_data = array(), $form_data = array() ) {
|
89 |
+
$part = wp_parse_args( $part_data, $this->get_customize_defaults() );
|
90 |
+
$form = $form_data;
|
91 |
+
|
92 |
+
include( happyforms_get_core_folder() . '/templates/parts/frontend-media.php' );
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Get all possible messages definitions.
|
97 |
+
*
|
98 |
+
* @since 1.0.0.
|
99 |
+
*
|
100 |
+
* @return array Associative array, specifying message type and copy.
|
101 |
+
*/
|
102 |
+
public function get_message_definitions() {
|
103 |
+
return array();
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Sanitize submitted value before storing it.
|
108 |
+
*
|
109 |
+
* @since 1.0.0.
|
110 |
+
*
|
111 |
+
* @param array $part_data Form part data.
|
112 |
+
*
|
113 |
+
* @return string
|
114 |
+
*/
|
115 |
+
public function sanitize_value( $part_data = array(), $form_data = array(), $request = array() ) {
|
116 |
+
$sanitized_value = $this->get_default_value( $part_data );
|
117 |
+
$part_name = happyforms_get_part_name( $part_data, $form_data );
|
118 |
+
|
119 |
+
if ( isset( $request[$part_name] ) ) {
|
120 |
+
$sanitized_value = sanitize_text_field( $request[$part_name] );
|
121 |
+
}
|
122 |
+
|
123 |
+
return $sanitized_value;
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Validate value before submitting it.
|
128 |
+
*
|
129 |
+
* @since 1.0.0.
|
130 |
+
*
|
131 |
+
* @param array $part Form part data.
|
132 |
+
* @param string $value Submitted value.
|
133 |
+
*
|
134 |
+
* @return string
|
135 |
+
*/
|
136 |
+
public function validate_value( $value, $part = array(), $form = array() ) {
|
137 |
+
$validated_value = esc_attr( $value );
|
138 |
+
|
139 |
+
return $validated_value;
|
140 |
+
}
|
141 |
+
|
142 |
+
public function message_part_visible( $visible, $part ) {
|
143 |
+
if ( $this->type === $part['type'] ) {
|
144 |
+
$visible = false;
|
145 |
+
}
|
146 |
+
|
147 |
+
return $visible;
|
148 |
+
}
|
149 |
+
|
150 |
+
public function email_part_visible( $visible, $part, $form ) {
|
151 |
+
if ( $this->type === $part['type'] ) {
|
152 |
+
$visible = true;
|
153 |
+
}
|
154 |
+
|
155 |
+
return $visible;
|
156 |
+
}
|
157 |
+
|
158 |
+
public function csv_part_visible( $visible, $part ) {
|
159 |
+
if ( $this->type === $part['type'] ) {
|
160 |
+
$visible = false;
|
161 |
+
}
|
162 |
+
|
163 |
+
return $visible;
|
164 |
+
}
|
165 |
+
|
166 |
+
public function email_part_value( $value, $message, $part, $form ) {
|
167 |
+
if ( $this->type !== $part['type'] ) {
|
168 |
+
return $value;
|
169 |
+
}
|
170 |
+
|
171 |
+
if ( 0 === $part['attachment'] ) {
|
172 |
+
return $value;
|
173 |
+
}
|
174 |
+
|
175 |
+
$attachment = get_posts( array(
|
176 |
+
'post_type' => 'attachment',
|
177 |
+
'p' => $part['attachment'],
|
178 |
+
) );
|
179 |
+
|
180 |
+
if ( ! empty( $attachment ) ) {
|
181 |
+
$attachment = $attachment[0];
|
182 |
+
$src = wp_get_attachment_url( $attachment->ID );
|
183 |
+
$filename = basename( $src );
|
184 |
+
|
185 |
+
$value = "<a href={$src}>{$filename}</a>";
|
186 |
+
}
|
187 |
+
|
188 |
+
|
189 |
+
return $value;
|
190 |
+
}
|
191 |
+
|
192 |
+
public function email_part_label( $label, $message, $part, $form ) {
|
193 |
+
if ( $this->type === $part['type'] ) {
|
194 |
+
if ( '' === $part['label'] ) {
|
195 |
+
$label = '';
|
196 |
+
}
|
197 |
+
}
|
198 |
+
|
199 |
+
return $label;
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Enqueue scripts in customizer area.
|
204 |
+
*
|
205 |
+
* @since 1.0.0.
|
206 |
+
*
|
207 |
+
* @param array List of dependencies.
|
208 |
+
*
|
209 |
+
* @return void
|
210 |
+
*/
|
211 |
+
public function customize_enqueue_scripts( $deps = array() ) {
|
212 |
+
wp_enqueue_media();
|
213 |
+
|
214 |
+
wp_enqueue_script(
|
215 |
+
'happyforms-media-handle',
|
216 |
+
happyforms_get_plugin_url() . 'core/assets/js/customize/media.js',
|
217 |
+
array( 'happyforms-customize' ),
|
218 |
+
happyforms_get_version(),
|
219 |
+
true
|
220 |
+
);
|
221 |
+
|
222 |
+
wp_enqueue_script(
|
223 |
+
'part-media',
|
224 |
+
happyforms_get_plugin_url() . 'core/assets/js/parts/part-media.js',
|
225 |
+
$deps, happyforms_get_version(), true
|
226 |
+
);
|
227 |
+
}
|
228 |
+
}
|
core/classes/parts/class-part-placeholder.php
ADDED
@@ -0,0 +1,210 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class HappyForms_Part_Placeholder extends HappyForms_Form_Part {
|
4 |
+
|
5 |
+
public $type = 'placeholder';
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
$this->label = __( 'Paragraph', 'happyforms' );
|
9 |
+
$this->description = __( 'For adding helper text, notes and formatted messages.', 'happyforms' );
|
10 |
+
|
11 |
+
add_filter( 'happyforms_message_part_visible', array( $this, 'message_part_visible' ), 10, 2 );
|
12 |
+
add_filter( 'happyforms_email_part_visible', array( $this, 'email_part_visible' ), 10, 4 );
|
13 |
+
add_filter( 'happyforms_email_part_label', array( $this, 'email_part_label' ), 10, 4 );
|
14 |
+
add_filter( 'happyforms_email_part_value', array( $this, 'email_part_value' ), 10, 5 );
|
15 |
+
add_filter( 'happyforms_csv_part_visible', array( $this, 'csv_part_visible' ), 10, 2 );
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Get all part meta fields defaults.
|
20 |
+
*
|
21 |
+
* @since 1.0.0.
|
22 |
+
*
|
23 |
+
* @return array
|
24 |
+
*/
|
25 |
+
public function get_customize_fields() {
|
26 |
+
$fields = array(
|
27 |
+
'type' => array(
|
28 |
+
'default' => $this->type,
|
29 |
+
'sanitize' => 'sanitize_text_field',
|
30 |
+
),
|
31 |
+
'label' => array(
|
32 |
+
'default' => __( '', 'happyforms' ),
|
33 |
+
'sanitize' => 'sanitize_text_field',
|
34 |
+
),
|
35 |
+
'label_placement' => array(
|
36 |
+
'default' => 'show',
|
37 |
+
'sanitize' => 'sanitize_text_field'
|
38 |
+
),
|
39 |
+
'description' => array(
|
40 |
+
'default' => '',
|
41 |
+
'sanitize' => 'sanitize_text_field'
|
42 |
+
),
|
43 |
+
'description_mode' => array(
|
44 |
+
'default' => '',
|
45 |
+
'sanitize' => 'sanitize_text_field'
|
46 |
+
),
|
47 |
+
'width' => array(
|
48 |
+
'default' => 'full',
|
49 |
+
'sanitize' => 'sanitize_key'
|
50 |
+
),
|
51 |
+
'css_class' => array(
|
52 |
+
'default' => '',
|
53 |
+
'sanitize' => 'sanitize_text_field'
|
54 |
+
),
|
55 |
+
'placeholder_text' => array(
|
56 |
+
'default' => '',
|
57 |
+
'sanitize' => 'esc_html'
|
58 |
+
),
|
59 |
+
'required' => array(
|
60 |
+
'default' => 0,
|
61 |
+
'sanitize' => 'happyforms_sanitize_checkbox'
|
62 |
+
)
|
63 |
+
);
|
64 |
+
|
65 |
+
return happyforms_get_part_customize_fields( $fields, $this->type );
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Get template for part item in customize pane.
|
70 |
+
*
|
71 |
+
* @since 1.0.0.
|
72 |
+
*
|
73 |
+
* @return string
|
74 |
+
*/
|
75 |
+
public function customize_templates() {
|
76 |
+
$template_path = happyforms_get_core_folder() . '/templates/parts/customize-placeholder.php';
|
77 |
+
$template_path = happyforms_get_part_customize_template_path( $template_path, $this->type );
|
78 |
+
|
79 |
+
require_once( $template_path );
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Get front end part template with parsed data.
|
84 |
+
*
|
85 |
+
* @since 1.0.0.
|
86 |
+
*
|
87 |
+
* @param array $part_data Form part data.
|
88 |
+
* @param array $form_data Form (post) data.
|
89 |
+
*
|
90 |
+
* @return string Markup for the form part.
|
91 |
+
*/
|
92 |
+
public function frontend_template( $part_data = array(), $form_data = array() ) {
|
93 |
+
$part = wp_parse_args( $part_data, $this->get_customize_defaults() );
|
94 |
+
$form = $form_data;
|
95 |
+
|
96 |
+
include( happyforms_get_core_folder() . '/templates/parts/frontend-placeholder.php' );
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Get all possible messages definitions.
|
101 |
+
*
|
102 |
+
* @since 1.0.0.
|
103 |
+
*
|
104 |
+
* @return array Associative array, specifying message type and copy.
|
105 |
+
*/
|
106 |
+
public function get_message_definitions() {
|
107 |
+
return array();
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Sanitize submitted value before storing it.
|
112 |
+
*
|
113 |
+
* @since 1.0.0.
|
114 |
+
*
|
115 |
+
* @param array $part_data Form part data.
|
116 |
+
*
|
117 |
+
* @return string
|
118 |
+
*/
|
119 |
+
public function sanitize_value( $part_data = array(), $form_data = array(), $request = array() ) {
|
120 |
+
$sanitized_value = $this->get_default_value( $part_data );
|
121 |
+
$part_name = happyforms_get_part_name( $part_data, $form_data );
|
122 |
+
|
123 |
+
if ( isset( $request[$part_name] ) ) {
|
124 |
+
$sanitized_value = sanitize_text_field( $request[$part_name] );
|
125 |
+
}
|
126 |
+
|
127 |
+
return $sanitized_value;
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Validate value before submitting it.
|
132 |
+
*
|
133 |
+
* @since 1.0.0.
|
134 |
+
*
|
135 |
+
* @param array $part Form part data.
|
136 |
+
* @param string $value Submitted value.
|
137 |
+
*
|
138 |
+
* @return string
|
139 |
+
*/
|
140 |
+
public function validate_value( $value, $part = array(), $form = array() ) {
|
141 |
+
$validated_value = esc_attr( $value );
|
142 |
+
|
143 |
+
return $validated_value;
|
144 |
+
}
|
145 |
+
|
146 |
+
public function message_part_visible( $visible, $part ) {
|
147 |
+
if ( $this->type === $part['type'] ) {
|
148 |
+
$visible = false;
|
149 |
+
}
|
150 |
+
|
151 |
+
return $visible;
|
152 |
+
}
|
153 |
+
|
154 |
+
public function email_part_label( $label, $message, $part, $form ) {
|
155 |
+
if ( $this->type === $part['type'] ) {
|
156 |
+
if ( '' === $part['label'] ) {
|
157 |
+
$label = '';
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
return $label;
|
162 |
+
}
|
163 |
+
|
164 |
+
public function email_part_visible( $visible, $part, $form, $response ) {
|
165 |
+
if ( $this->type === $part['type'] ) {
|
166 |
+
$value = happyforms_get_email_part_value( $response, $part, $form );
|
167 |
+
|
168 |
+
if ( '' === $value ) {
|
169 |
+
$visible = false;
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
return $visible;
|
174 |
+
}
|
175 |
+
|
176 |
+
public function email_part_value( $value, $message, $part, $form, $context ) {
|
177 |
+
if ( $this->type !== $part['type'] ) {
|
178 |
+
return $value;
|
179 |
+
}
|
180 |
+
|
181 |
+
$value = wp_specialchars_decode( $part['placeholder_text'] );
|
182 |
+
|
183 |
+
return $value;
|
184 |
+
}
|
185 |
+
|
186 |
+
public function csv_part_visible( $visible, $part ) {
|
187 |
+
if ( $this->type === $part['type'] ) {
|
188 |
+
$visible = false;
|
189 |
+
}
|
190 |
+
|
191 |
+
return $visible;
|
192 |
+
}
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Enqueue scripts in customizer area.
|
196 |
+
*
|
197 |
+
* @since 1.0.0.
|
198 |
+
*
|
199 |
+
* @param array List of dependencies.
|
200 |
+
*
|
201 |
+
* @return void
|
202 |
+
*/
|
203 |
+
public function customize_enqueue_scripts( $deps = array() ) {
|
204 |
+
wp_enqueue_script(
|
205 |
+
'part-placeholder',
|
206 |
+
happyforms_get_plugin_url() . 'core/assets/js/parts/part-placeholder.js',
|
207 |
+
$deps, happyforms_get_version(), true
|
208 |
+
);
|
209 |
+
}
|
210 |
+
}
|
core/helpers/helper-form-templates.php
CHANGED
@@ -50,6 +50,23 @@ function happyforms_client_referer_field() {
|
|
50 |
|
51 |
endif;
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
if ( ! function_exists( 'happyforms_honeypot' ) ) :
|
54 |
|
55 |
function happyforms_honeypot( $form ) {
|
50 |
|
51 |
endif;
|
52 |
|
53 |
+
if ( ! function_exists( 'happyforms_referer_field' ) ):
|
54 |
+
/**
|
55 |
+
* Output a form's action attribute.
|
56 |
+
*
|
57 |
+
* @since 1.0
|
58 |
+
*
|
59 |
+
* @return void
|
60 |
+
*/
|
61 |
+
function happyforms_current_post_id() {
|
62 |
+
$post_id = is_singular() ? get_the_ID() : '';
|
63 |
+
?>
|
64 |
+
<input type="hidden" name="current_post_id" value="<?php echo $post_id; ?>">
|
65 |
+
<?php
|
66 |
+
}
|
67 |
+
|
68 |
+
endif;
|
69 |
+
|
70 |
if ( ! function_exists( 'happyforms_honeypot' ) ) :
|
71 |
|
72 |
function happyforms_honeypot( $form ) {
|
core/helpers/helper-misc.php
CHANGED
@@ -1174,3 +1174,21 @@ function happyforms_the_external_link_icon( $echo = true ) {
|
|
1174 |
}
|
1175 |
|
1176 |
endif;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1174 |
}
|
1175 |
|
1176 |
endif;
|
1177 |
+
|
1178 |
+
if ( ! function_exists( 'happyforms_is_form_edit_screen' ) ) :
|
1179 |
+
|
1180 |
+
function happyforms_is_form_edit_screen() {
|
1181 |
+
global $pagenow;
|
1182 |
+
|
1183 |
+
if ( 'customize.php' === $pagenow &&
|
1184 |
+
isset( $_REQUEST['happyforms'] ) &&
|
1185 |
+
! empty( $_REQUEST['happyforms'] ) &&
|
1186 |
+
isset( $_REQUEST['form_id'] ) ) {
|
1187 |
+
|
1188 |
+
return true;
|
1189 |
+
}
|
1190 |
+
|
1191 |
+
return false;
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
endif;
|
core/templates/customize-header-actions.php
CHANGED
@@ -18,7 +18,7 @@
|
|
18 |
%>
|
19 |
<button id="happyforms-save-button" class="button-primary button" aria-label="<%= saveLabel %>" aria-expanded="false" disabled="disabled" data-text-saved="<%= savedLabel %>" data-text-default="<%= saveLabel %>"><%= saveLabel %></button>
|
20 |
</div>
|
21 |
-
<a href="<?php echo esc_url( $wp_customize->get_return_url() ); ?>" id="happyforms-close-link"
|
22 |
<span class="screen-reader-text"><?php _e( 'Close', 'happyforms' ); ?></span>
|
23 |
</a>
|
24 |
|
18 |
%>
|
19 |
<button id="happyforms-save-button" class="button-primary button" aria-label="<%= saveLabel %>" aria-expanded="false" disabled="disabled" data-text-saved="<%= savedLabel %>" data-text-default="<%= saveLabel %>"><%= saveLabel %></button>
|
20 |
</div>
|
21 |
+
<a href="<?php echo esc_url( $wp_customize->get_return_url() ); ?>" id="happyforms-close-link">
|
22 |
<span class="screen-reader-text"><?php _e( 'Close', 'happyforms' ); ?></span>
|
23 |
</a>
|
24 |
|
core/templates/parts/customize-divider.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/template" id="customize-happyforms-divider-template">
|
2 |
+
<div class="happyforms-widget happyforms-part-widget" data-part-id="<%= instance.id %>">
|
3 |
+
<div class="happyforms-widget-top happyforms-part-widget-top">
|
4 |
+
<div class="happyforms-part-widget-title-action">
|
5 |
+
<button type="button" class="happyforms-widget-action">
|
6 |
+
<span class="toggle-indicator"></span>
|
7 |
+
</button>
|
8 |
+
</div>
|
9 |
+
<div class="happyforms-widget-title">
|
10 |
+
<h3><%= settings.label %><span class="in-widget-title"<% if (!instance.label) { %> style="display: none"<% } %>>: <span><%= (instance.label) ? instance.label : '' %></span></span></h3>
|
11 |
+
</div>
|
12 |
+
</div>
|
13 |
+
<div class="happyforms-widget-content">
|
14 |
+
<div class="happyforms-widget-form">
|
15 |
+
<?php happyforms_customize_part_width_control(); ?>
|
16 |
+
|
17 |
+
<p>
|
18 |
+
<label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
|
19 |
+
<input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%- instance.css_class %>" data-bind="css_class" />
|
20 |
+
</p>
|
21 |
+
</div>
|
22 |
+
|
23 |
+
<div class="happyforms-widget-actions">
|
24 |
+
<a href="#" class="happyforms-form-part-remove"><?php _e( 'Delete', 'happyforms' ); ?></a> |
|
25 |
+
<a href="#" class="happyforms-form-part-duplicate"><?php _e( 'Duplicate', 'happyforms' ); ?></a>
|
26 |
+
</div>
|
27 |
+
</div>
|
28 |
+
</div>
|
29 |
+
</div>
|
30 |
+
</script>
|
core/templates/parts/customize-layout_title.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/template" id="customize-happyforms-layout_title-template">
|
2 |
+
<div class="happyforms-widget happyforms-part-widget" data-part-id="<%= instance.id %>">
|
3 |
+
<div class="happyforms-widget-top happyforms-part-widget-top">
|
4 |
+
<div class="happyforms-part-widget-title-action">
|
5 |
+
<button type="button" class="happyforms-widget-action">
|
6 |
+
<span class="toggle-indicator"></span>
|
7 |
+
</button>
|
8 |
+
</div>
|
9 |
+
<div class="happyforms-widget-title">
|
10 |
+
<h3><%= settings.label %><span class="in-widget-title"<% if (!instance.label) { %> style="display: none"<% } %>>: <span><%= (instance.label) ? instance.label : '' %></span></span></h3>
|
11 |
+
</div>
|
12 |
+
</div>
|
13 |
+
<div class="happyforms-widget-content">
|
14 |
+
<div class="happyforms-widget-form">
|
15 |
+
<p>
|
16 |
+
<label for="<%= instance.id %>_title"><?php _e( 'Heading', 'happyforms' ); ?></label>
|
17 |
+
<input type="text" id="<%= instance.id %>_title" class="widefat title" value="<%- instance.label %>" data-bind="label" />
|
18 |
+
</p>
|
19 |
+
<p>
|
20 |
+
<label for="<%= instance.id %>_level"><?php _e( 'Heading level', 'happyforms' ); ?></label>
|
21 |
+
<span class="happyforms-buttongroup">
|
22 |
+
<?php for ( $i = 1; $i <= 6; $i++ ): ?>
|
23 |
+
<label for="<%= instance.id %>-level-h<?php echo $i; ?>">
|
24 |
+
<input type="radio" id="<%= instance.id %>-level-h<?php echo $i; ?>" value="h<?php echo $i; ?>" name="<%= instance.id %>-level" data-bind="level" <%= ( instance.level == 'h<?php echo $i; ?>' ) ? 'checked' : '' %> />
|
25 |
+
<span><?php _e( 'H' . $i, 'happyforms' ); ?></span>
|
26 |
+
</label>
|
27 |
+
<?php endfor; ?>
|
28 |
+
</span>
|
29 |
+
</p>
|
30 |
+
|
31 |
+
<?php happyforms_customize_part_width_control(); ?>
|
32 |
+
|
33 |
+
<p>
|
34 |
+
<label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
|
35 |
+
<input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%- instance.css_class %>" data-bind="css_class" />
|
36 |
+
</p>
|
37 |
+
</div>
|
38 |
+
|
39 |
+
<div class="happyforms-widget-actions">
|
40 |
+
<a href="#" class="happyforms-form-part-remove"><?php _e( 'Delete', 'happyforms' ); ?></a> |
|
41 |
+
<a href="#" class="happyforms-form-part-duplicate"><?php _e( 'Duplicate', 'happyforms' ); ?></a>
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
</div>
|
45 |
+
</div>
|
46 |
+
</script>
|
core/templates/parts/customize-media.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/template" id="happyforms-customize-media-template">
|
2 |
+
<?php include( happyforms_get_core_folder() . '/templates/customize-form-part-header.php' ); ?>
|
3 |
+
<% if ( instance.label ) { %>
|
4 |
+
<p class="label-field-group">
|
5 |
+
<label for="<%= instance.id %>_title"><?php _e( 'Label', 'happyforms' ); ?></label>
|
6 |
+
<div class="label-group">
|
7 |
+
<input type="text" id="<%= instance.id %>_title" class="widefat title" value="<%- instance.label %>" data-bind="label" />
|
8 |
+
<div class="happyforms-buttongroup">
|
9 |
+
<label for="<%= instance.id %>-label_placement-show">
|
10 |
+
<input type="radio" id="<%= instance.id %>-label_placement-show" value="show" name="<%= instance.id %>-label_placement" data-bind="label_placement" <%= ( instance.label_placement == 'show' ) ? 'checked' : '' %> />
|
11 |
+
<span><?php _e( 'Show', 'happyforms' ); ?></span>
|
12 |
+
</label>
|
13 |
+
<label for="<%= instance.id %>-label_placement-hidden">
|
14 |
+
<input type="radio" id="<%= instance.id %>-label_placement-hidden" value="hidden" name="<%= instance.id %>-label_placement" data-bind="label_placement" <%= ( instance.label_placement == 'hidden' ) ? 'checked' : '' %> />
|
15 |
+
<span><?php _e( 'Hide', 'happyforms' ); ?></span>
|
16 |
+
</label>
|
17 |
+
</div>
|
18 |
+
</div>
|
19 |
+
</p>
|
20 |
+
<% } %>
|
21 |
+
|
22 |
+
<?php do_action( 'happyforms_part_customize_placeholder_before_options' ); ?>
|
23 |
+
|
24 |
+
<div class="happyforms-media-upload" data-overlay-title="<?php _e( 'Select media', 'happyforms' ); ?>" data-overlay-button-text="<?php _e( 'Select Media', 'happyforms' ); ?>">
|
25 |
+
<p><% if ( instance.label ) { %><label><?php _e( 'Media', 'happyforms' ); ?></label><% } %></p>
|
26 |
+
<div class="attachment-media-view">
|
27 |
+
<%
|
28 |
+
let attachmentJSON = {};
|
29 |
+
|
30 |
+
wp.media.attachment( instance.attachment ).fetch().then( function( data ) {
|
31 |
+
attachmentJSON = wp.media.attachment( instance.attachment ).toJSON();
|
32 |
+
|
33 |
+
switch ( attachmentJSON.type ) {
|
34 |
+
case 'image':
|
35 |
+
var image = document.getElementById( instance.id + '-image-preview' );
|
36 |
+
image.src = attachmentJSON.url;
|
37 |
+
image.classList.add( 'show' );
|
38 |
+
break;
|
39 |
+
|
40 |
+
case 'video':
|
41 |
+
var videoPlayer;
|
42 |
+
var videoHolder = document.getElementById( instance.id + '-video-preview' );
|
43 |
+
var video = document.createElement( 'video' );
|
44 |
+
|
45 |
+
video.src = attachmentJSON.url;
|
46 |
+
video.type = attachmentJSON.mime;
|
47 |
+
video.preload = 'metadata';
|
48 |
+
|
49 |
+
if ( attachmentJSON.image.src !== attachmentJSON.icon ) {
|
50 |
+
video.poster = attachmentJSON.image.src;
|
51 |
+
}
|
52 |
+
|
53 |
+
video.width = attachmentJSON.width;
|
54 |
+
video.height = attachmentJSON.height;
|
55 |
+
|
56 |
+
videoHolder.appendChild( video );
|
57 |
+
videoHolder.classList.add( 'show' );
|
58 |
+
|
59 |
+
videoPlayer = new MediaElementPlayer( video, window._wpmejsSettings );
|
60 |
+
break;
|
61 |
+
|
62 |
+
case 'audio':
|
63 |
+
var audioPlayer;
|
64 |
+
var audioHolder = document.getElementById( instance.id + '-audio-preview' );
|
65 |
+
var audio = document.createElement( 'audio' );
|
66 |
+
|
67 |
+
audio.src = attachmentJSON.url;
|
68 |
+
audio.type = attachmentJSON.mime;
|
69 |
+
audio.preload = 'none';
|
70 |
+
audio.width = '100%';
|
71 |
+
audio.controls = 'true';
|
72 |
+
audio.classList.add( 'wp-audio-shortcode' );
|
73 |
+
|
74 |
+
audioHolder.appendChild( audio );
|
75 |
+
audioHolder.classList.add( 'show' );
|
76 |
+
|
77 |
+
audioPlayer = new MediaElementPlayer( audio, window._wpmejsSettings );
|
78 |
+
break;
|
79 |
+
|
80 |
+
default:
|
81 |
+
break;
|
82 |
+
}
|
83 |
+
} );
|
84 |
+
%>
|
85 |
+
|
86 |
+
<img id="<%= instance.id %>-image-preview" src="" data-preview-target="<%= instance.id %>" class="happyforms-upload-preview">
|
87 |
+
|
88 |
+
<div class="wp-media-wrapper wp-video happyforms-upload-preview" id="<%= instance.id %>-video-preview">
|
89 |
+
</div>
|
90 |
+
|
91 |
+
<div class="wp-media-wrapper wp-audio happyforms-upload-preview" id="<%= instance.id %>-audio-preview">
|
92 |
+
</div>
|
93 |
+
|
94 |
+
<button type="button" class="upload-button happyforms-upload-button button-add-media<%= ( ! instance.attachment ) ? ' show' : '' %>" data-upload-target="attachment"><?php _e( 'Select media', 'happyforms' ); ?></button>
|
95 |
+
<input type="hidden" data-bind="attachment" value="<%= instance.attachment %>">
|
96 |
+
|
97 |
+
<div class="actions happyforms-upload-actions">
|
98 |
+
<button type="button" class="button happyforms-change-button upload-button<%= ( 0 != instance.attachment ) ? ' show' : '' %>"><?php _e( 'Replace Media', 'happyforms' ); ?></button>
|
99 |
+
</div>
|
100 |
+
</div>
|
101 |
+
</div>
|
102 |
+
|
103 |
+
<?php do_action( 'happyforms_part_customize_placeholder_after_options' ); ?>
|
104 |
+
|
105 |
+
<?php do_action( 'happyforms_part_customize_placeholder_before_advanced_options' ); ?>
|
106 |
+
|
107 |
+
<?php happyforms_customize_part_width_control(); ?>
|
108 |
+
|
109 |
+
<?php do_action( 'happyforms_part_customize_placeholder_after_advanced_options' ); ?>
|
110 |
+
|
111 |
+
<p>
|
112 |
+
<label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
|
113 |
+
<input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%- instance.css_class %>" data-bind="css_class" />
|
114 |
+
</p>
|
115 |
+
|
116 |
+
<div class="happyforms-part-logic-wrap">
|
117 |
+
<div class="happyforms-logic-view">
|
118 |
+
<?php happyforms_customize_part_logic(); ?>
|
119 |
+
</div>
|
120 |
+
</div>
|
121 |
+
|
122 |
+
<?php happyforms_customize_part_footer(); ?>
|
123 |
+
</script>
|
core/templates/parts/customize-placeholder.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/template" id="happyforms-customize-placeholder-template">
|
2 |
+
<?php include( happyforms_get_core_folder() . '/templates/customize-form-part-header.php' ); ?>
|
3 |
+
|
4 |
+
<% if ( instance.label ) { %>
|
5 |
+
<p class="label-field-group">
|
6 |
+
<label for="<%= instance.id %>_title"><?php _e( 'Label', 'happyforms' ); ?></label>
|
7 |
+
<div class="label-group">
|
8 |
+
<input type="text" id="<%= instance.id %>_title" class="widefat title" value="<%- instance.label %>" data-bind="label" />
|
9 |
+
<div class="happyforms-buttongroup">
|
10 |
+
<label for="<%= instance.id %>-label_placement-show">
|
11 |
+
<input type="radio" id="<%= instance.id %>-label_placement-show" value="show" name="<%= instance.id %>-label_placement" data-bind="label_placement" <%= ( instance.label_placement == 'show' ) ? 'checked' : '' %> />
|
12 |
+
<span><?php _e( 'Show', 'happyforms' ); ?></span>
|
13 |
+
</label>
|
14 |
+
<label for="<%= instance.id %>-label_placement-hidden">
|
15 |
+
<input type="radio" id="<%= instance.id %>-label_placement-hidden" value="hidden" name="<%= instance.id %>-label_placement" data-bind="label_placement" <%= ( instance.label_placement == 'hidden' ) ? 'checked' : '' %> />
|
16 |
+
<span><?php _e( 'Hide', 'happyforms' ); ?></span>
|
17 |
+
</label>
|
18 |
+
</div>
|
19 |
+
</div>
|
20 |
+
</p>
|
21 |
+
<% } %>
|
22 |
+
|
23 |
+
<% if ( instance.description ) { %>
|
24 |
+
<p>
|
25 |
+
<label for="<%= instance.id %>_description"><?php _e( 'Hint', 'happyforms' ); ?></label>
|
26 |
+
<textarea id="<%= instance.id %>_description" data-bind="description"><%= instance.description %></textarea>
|
27 |
+
</p>
|
28 |
+
<% } %>
|
29 |
+
|
30 |
+
<?php do_action( 'happyforms_part_customize_placeholder_before_options' ); ?>
|
31 |
+
<p>
|
32 |
+
<label for="<%= instance.id %>_placeholder_text"><?php _e( 'Text', 'happyforms' ); ?></label>
|
33 |
+
<textarea id="<%= instance.id %>_placeholder_text" class="wp-editor-area" name="placeholder_text" data-bind="placeholder_text"><%= instance.placeholder_text %></textarea>
|
34 |
+
</p>
|
35 |
+
|
36 |
+
<?php do_action( 'happyforms_part_customize_placeholder_after_options' ); ?>
|
37 |
+
|
38 |
+
<?php do_action( 'happyforms_part_customize_placeholder_before_advanced_options' ); ?>
|
39 |
+
|
40 |
+
<?php happyforms_customize_part_width_control(); ?>
|
41 |
+
|
42 |
+
<?php do_action( 'happyforms_part_customize_placeholder_after_advanced_options' ); ?>
|
43 |
+
|
44 |
+
<p>
|
45 |
+
<label for="<%= instance.id %>_css_class"><?php _e( 'Additional CSS class(es)', 'happyforms' ); ?></label>
|
46 |
+
<input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%- instance.css_class %>" data-bind="css_class" />
|
47 |
+
</p>
|
48 |
+
|
49 |
+
<div class="happyforms-part-logic-wrap">
|
50 |
+
<div class="happyforms-logic-view">
|
51 |
+
<?php happyforms_customize_part_logic(); ?>
|
52 |
+
</div>
|
53 |
+
</div>
|
54 |
+
|
55 |
+
<?php happyforms_customize_part_footer(); ?>
|
56 |
+
</script>
|
core/templates/parts/frontend-divider.php
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
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 |
+
<hr />
|
4 |
+
</div>
|
5 |
+
</div>
|
core/templates/parts/frontend-layout_title.php
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
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 echo $part['level']; ?> class="happyforms-layout-title"><?php echo $part['label']; ?></<?php echo $part['level']; ?>>
|
4 |
+
</div>
|
5 |
+
</div>
|
core/templates/parts/frontend-media.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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'] ) ) {
|
5 |
+
happyforms_the_part_label( $part, $form );
|
6 |
+
}
|
7 |
+
?>
|
8 |
+
|
9 |
+
<?php happyforms_print_part_description( $part ); ?>
|
10 |
+
|
11 |
+
<div class="happyforms-part__el">
|
12 |
+
<?php
|
13 |
+
if ( 0 != $part['attachment'] ) {
|
14 |
+
$attachment = get_posts( array(
|
15 |
+
'post_type' => 'attachment',
|
16 |
+
'p' => $part['attachment'],
|
17 |
+
) );
|
18 |
+
|
19 |
+
if ( ! empty( $attachment ) ) {
|
20 |
+
$attachment = $attachment[0];
|
21 |
+
$src = wp_get_attachment_url( $attachment->ID );
|
22 |
+
$html = '';
|
23 |
+
|
24 |
+
if ( wp_attachment_is( 'video', $attachment ) || wp_attachment_is( 'audio', $attachment ) ) {
|
25 |
+
global $wp_embed;
|
26 |
+
|
27 |
+
$html = do_shortcode( $wp_embed->run_shortcode( "[embed]{$src}[/embed]" ) );
|
28 |
+
} else {
|
29 |
+
$html = sprintf(
|
30 |
+
'<img src="%s" alt="%s">',
|
31 |
+
$src,
|
32 |
+
$attachment->post_content
|
33 |
+
);
|
34 |
+
}
|
35 |
+
|
36 |
+
echo $html;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
?>
|
40 |
+
|
41 |
+
<?php do_action( 'happyforms_part_input_after', $part, $form ); ?>
|
42 |
+
|
43 |
+
</div>
|
44 |
+
</div>
|
45 |
+
</div>
|
core/templates/parts/frontend-placeholder.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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'] ) ) {
|
5 |
+
happyforms_the_part_label( $part, $form );
|
6 |
+
}
|
7 |
+
?>
|
8 |
+
|
9 |
+
<?php happyforms_print_part_description( $part ); ?>
|
10 |
+
|
11 |
+
<div class="happyforms-part__el">
|
12 |
+
<?php do_action( 'happyforms_part_input_before', $part, $form ); ?>
|
13 |
+
|
14 |
+
<?php
|
15 |
+
$placeholder_text = $part['placeholder_text'];
|
16 |
+
$placeholder_text = html_entity_decode( $placeholder_text );
|
17 |
+
$placeholder_text = wp_unslash( $placeholder_text );
|
18 |
+
$placeholder_text = do_shortcode( $placeholder_text );
|
19 |
+
|
20 |
+
echo $placeholder_text;
|
21 |
+
?>
|
22 |
+
|
23 |
+
<?php do_action( 'happyforms_part_input_after', $part, $form ); ?>
|
24 |
+
</div>
|
25 |
+
</div>
|
26 |
+
</div>
|
core/templates/single-form.php
CHANGED
@@ -7,6 +7,7 @@
|
|
7 |
|
8 |
<?php happyforms_action_field(); ?>
|
9 |
<?php happyforms_client_referer_field( $form['ID'] ); ?>
|
|
|
10 |
<?php happyforms_form_field( $form['ID'] ); ?>
|
11 |
<?php happyforms_step_field( $form ); ?>
|
12 |
|
7 |
|
8 |
<?php happyforms_action_field(); ?>
|
9 |
<?php happyforms_client_referer_field( $form['ID'] ); ?>
|
10 |
+
<?php happyforms_current_post_id(); ?>
|
11 |
<?php happyforms_form_field( $form['ID'] ); ?>
|
12 |
<?php happyforms_step_field( $form ); ?>
|
13 |
|
happyforms.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Plugin URI: https://happyforms.io
|
6 |
* Description: Form builder to get in touch with visitors, grow your email list and collect payments.
|
7 |
* Author: Happyforms
|
8 |
-
* Version: 1.
|
9 |
* Author URI: https://happyforms.io
|
10 |
* Upgrade URI: https://happyforms.io/upgrade
|
11 |
*/
|
@@ -22,7 +22,7 @@ if ( defined( 'HAPPYFORMS_UPGRADE_VERSION' ) ) {
|
|
22 |
/**
|
23 |
* The current version of the plugin.
|
24 |
*/
|
25 |
-
define( 'HAPPYFORMS_VERSION', '1.
|
26 |
|
27 |
if ( ! function_exists( 'happyforms_get_version' ) ):
|
28 |
|
5 |
* Plugin URI: https://happyforms.io
|
6 |
* Description: Form builder to get in touch with visitors, grow your email list and collect payments.
|
7 |
* Author: Happyforms
|
8 |
+
* Version: 1.21.0
|
9 |
* Author URI: https://happyforms.io
|
10 |
* Upgrade URI: https://happyforms.io/upgrade
|
11 |
*/
|
22 |
/**
|
23 |
* The current version of the plugin.
|
24 |
*/
|
25 |
+
define( 'HAPPYFORMS_VERSION', '1.21.0' );
|
26 |
|
27 |
if ( ! function_exists( 'happyforms_get_version' ) ):
|
28 |
|
inc/assets/css/frontend/color.css
CHANGED
@@ -32,6 +32,7 @@
|
|
32 |
--happyforms-color-dropdown-item-text: #000;
|
33 |
--happyforms-color-dropdown-item-bg-hover: #f4f4f5;
|
34 |
--happyforms-color-dropdown-item-text-hover: #000;
|
|
|
35 |
/* font */
|
36 |
--happyforms-form-title-font-size: 32px;
|
37 |
--happyforms-form-font-weight: normal;
|
@@ -1086,4 +1087,34 @@
|
|
1086 |
text-decoration: underline;
|
1087 |
display: inline-block;
|
1088 |
cursor: pointer;
|
1089 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
--happyforms-color-dropdown-item-text: #000;
|
33 |
--happyforms-color-dropdown-item-bg-hover: #f4f4f5;
|
34 |
--happyforms-color-dropdown-item-text-hover: #000;
|
35 |
+
--happyforms-color-divider-hr: #ccc;
|
36 |
/* font */
|
37 |
--happyforms-form-title-font-size: 32px;
|
38 |
--happyforms-form-font-weight: normal;
|
1087 |
text-decoration: underline;
|
1088 |
display: inline-block;
|
1089 |
cursor: pointer;
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
.happyforms-styles .happyforms-part--placeholder p {
|
1093 |
+
font-size: 16px;
|
1094 |
+
font-size: var(--happyforms-part-value-font-size);
|
1095 |
+
color: #000;
|
1096 |
+
overflow-wrap: anywhere;
|
1097 |
+
}
|
1098 |
+
|
1099 |
+
.happyforms-styles .happyforms-part--divider hr {
|
1100 |
+
border-style: solid;
|
1101 |
+
border-width: 1px 0 0 0;
|
1102 |
+
border-color: #ccc;
|
1103 |
+
border-color: var(--happyforms-color-divider-hr);
|
1104 |
+
}
|
1105 |
+
|
1106 |
+
.happyforms-part--divider hr {
|
1107 |
+
margin: 0;
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
.happyforms-styles .happyforms-layout-title {
|
1111 |
+
font-weight: normal;
|
1112 |
+
color: #000;
|
1113 |
+
color: var(--happyforms-color-primary);
|
1114 |
+
}
|
1115 |
+
|
1116 |
+
.happyforms-styles .happyforms-part--media img {
|
1117 |
+
margin: 0;
|
1118 |
+
padding: 0;
|
1119 |
+
border: 0;
|
1120 |
+
}
|
inc/assets/css/frontend/layout.css
CHANGED
@@ -1579,3 +1579,42 @@ div.mce-inline-toolbar-grp.happyforms-editor-toolbar-link .mce-btn:active {
|
|
1579 |
overflow-y: scroll;
|
1580 |
color: transparent;
|
1581 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1579 |
overflow-y: scroll;
|
1580 |
color: transparent;
|
1581 |
}
|
1582 |
+
|
1583 |
+
.happyforms-styles .happyforms-layout-title {
|
1584 |
+
overflow-wrap: break-word;
|
1585 |
+
}
|
1586 |
+
|
1587 |
+
/* parts - placeholder */
|
1588 |
+
.happyforms-part--placeholder .happyforms-optional,
|
1589 |
+
.happyforms-part--media .happyforms-optional {
|
1590 |
+
display: none !important;
|
1591 |
+
}
|
1592 |
+
|
1593 |
+
.happyforms-form--part-value-text-align-center .happyforms-part--placeholder p {
|
1594 |
+
text-align: center;
|
1595 |
+
}
|
1596 |
+
|
1597 |
+
.happyforms-form--part-value-text-align-right .happyforms-part--placeholder p {
|
1598 |
+
text-align: right;
|
1599 |
+
}
|
1600 |
+
|
1601 |
+
.happyforms-part--placeholder p:first-child {
|
1602 |
+
margin-top: 0;
|
1603 |
+
}
|
1604 |
+
|
1605 |
+
.happyforms-part--placeholder p:last-of-type,
|
1606 |
+
.happyforms-part--toggletip .happyforms-toggletip-text p:last-of-type {
|
1607 |
+
margin-bottom: 0;
|
1608 |
+
padding-bottom: 0;
|
1609 |
+
}
|
1610 |
+
|
1611 |
+
/* parts - divider */
|
1612 |
+
.happyforms-part--divider hr {
|
1613 |
+
margin: 0;
|
1614 |
+
}
|
1615 |
+
|
1616 |
+
/* parts - media */
|
1617 |
+
.happyforms-part--media img {
|
1618 |
+
margin: 0;
|
1619 |
+
max-width: 100%;
|
1620 |
+
}
|
inc/assets/js/customize.js
CHANGED
@@ -502,16 +502,14 @@
|
|
502 |
|
503 |
onCloseClick: function( e ) {
|
504 |
if ( this.isDirty() ) {
|
505 |
-
|
506 |
-
|
507 |
-
if ( ! confirm( message ) ) {
|
508 |
e.preventDefault();
|
509 |
e.stopPropagation();
|
510 |
|
511 |
return false;
|
512 |
-
} else {
|
513 |
-
$( window ).unbind( 'beforeunload' );
|
514 |
}
|
|
|
|
|
515 |
}
|
516 |
},
|
517 |
|
@@ -860,6 +858,8 @@
|
|
860 |
this.model.get( 'parts' ).reset( _.map( ids, function( id ) {
|
861 |
return this.model.get( 'parts' ).get( id );
|
862 |
}, this ) );
|
|
|
|
|
863 |
},
|
864 |
|
865 |
onPartViewsSorted: function( partViews ) {
|
@@ -963,7 +963,11 @@
|
|
963 |
|
964 |
var $li = $( e.currentTarget );
|
965 |
|
966 |
-
if ( $li.hasClass( 'happyforms-parts-list-item--
|
|
|
|
|
|
|
|
|
967 |
this.openUpgradeModal( e );
|
968 |
return;
|
969 |
}
|
@@ -997,7 +1001,7 @@
|
|
997 |
} );
|
998 |
|
999 |
var has_design_parts = false;
|
1000 |
-
var design_parts = [ '
|
1001 |
|
1002 |
results.forEach( function( part ) {
|
1003 |
var type = part.get( 'type' );
|
502 |
|
503 |
onCloseClick: function( e ) {
|
504 |
if ( this.isDirty() ) {
|
505 |
+
if ( ! confirm( settings.abandonAlertMessage ) ) {
|
|
|
|
|
506 |
e.preventDefault();
|
507 |
e.stopPropagation();
|
508 |
|
509 |
return false;
|
|
|
|
|
510 |
}
|
511 |
+
|
512 |
+
$( window ).unbind( 'beforeunload' );
|
513 |
}
|
514 |
},
|
515 |
|
858 |
this.model.get( 'parts' ).reset( _.map( ids, function( id ) {
|
859 |
return this.model.get( 'parts' ).get( id );
|
860 |
}, this ) );
|
861 |
+
|
862 |
+
ui.item.trigger( 'sort-stop' );
|
863 |
},
|
864 |
|
865 |
onPartViewsSorted: function( partViews ) {
|
963 |
|
964 |
var $li = $( e.currentTarget );
|
965 |
|
966 |
+
if ( $li.hasClass( 'happyforms-parts-list-item--group' ) ) {
|
967 |
+
return;
|
968 |
+
}
|
969 |
+
|
970 |
+
if ( $li.hasClass( 'happyforms-parts-list-item--dummy' ) ) {
|
971 |
this.openUpgradeModal( e );
|
972 |
return;
|
973 |
}
|
1001 |
} );
|
1002 |
|
1003 |
var has_design_parts = false;
|
1004 |
+
var design_parts = [ 'page_break_dummy' ];
|
1005 |
|
1006 |
results.forEach( function( part ) {
|
1007 |
var type = part.get( 'type' );
|
inc/classes/class-happyforms.php
CHANGED
@@ -38,55 +38,40 @@ class HappyForms extends HappyForms_Core {
|
|
38 |
$part_library = happyforms_get_part_library();
|
39 |
|
40 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-website-url-dummy.php' );
|
41 |
-
$part_library->register_part( 'HappyForms_Part_WebsiteUrl_Dummy',
|
42 |
|
43 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-attachment-dummy.php' );
|
44 |
-
$part_library->register_part( 'HappyForms_Part_Attachment_Dummy',
|
45 |
|
46 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-phone-dummy.php' );
|
47 |
-
$part_library->register_part( 'HappyForms_Part_Phone_Dummy',
|
48 |
|
49 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-date-dummy.php' );
|
50 |
-
$part_library->register_part( 'HappyForms_Part_Date_Dummy',
|
51 |
|
52 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-scale-dummy.php' );
|
53 |
-
$part_library->register_part( 'HappyForms_Part_Scale_Dummy',
|
54 |
|
55 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-signature-dummy.php' );
|
56 |
-
$part_library->register_part( 'HappyForms_Part_Signature_Dummy',
|
57 |
|
58 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-rating-dummy.php' );
|
59 |
-
$part_library->register_part( 'HappyForms_Part_Rating_Dummy',
|
60 |
|
61 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-optin-dummy.php' );
|
62 |
-
$part_library->register_part( 'HappyForms_Part_OptIn_Dummy',
|
63 |
|
64 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-scrollable-terms-dummy.php' );
|
65 |
-
$part_library->register_part( 'HappyForms_Part_ScrollableTerms_Dummy',
|
66 |
|
67 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-payments-dummy.php' );
|
68 |
-
$part_library->register_part( 'HappyForms_Part_Payments_Dummy',
|
69 |
-
|
70 |
-
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-layout-drawer-group.php' );
|
71 |
-
$part_library->register_part( 'HappyForms_Part_LayoutDrawerGroup', 25 );
|
72 |
-
|
73 |
-
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-layout-title-dummy.php' );
|
74 |
-
$part_library->register_part( 'HappyForms_Part_LayoutTitle_Dummy', 26 );
|
75 |
-
|
76 |
-
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-placeholder-dummy.php' );
|
77 |
-
$part_library->register_part( 'HappyForms_Part_Placeholder_Dummy', 27 );
|
78 |
-
|
79 |
-
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-media-dummy.php' );
|
80 |
-
$part_library->register_part( 'HappyForms_Part_Media_Dummy', 28 );
|
81 |
|
82 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-toggletip-dummy.php' );
|
83 |
-
$part_library->register_part( 'HappyForms_Part_Toggletip_Dummy',
|
84 |
-
|
85 |
-
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-divider-dummy.php' );
|
86 |
-
$part_library->register_part( 'HappyForms_Part_Divider_Dummy', 30 );
|
87 |
|
88 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-page-break-dummy.php' );
|
89 |
-
$part_library->register_part( 'HappyForms_Part_PageBreak_Dummy',
|
90 |
|
91 |
require_once( happyforms_get_include_folder() . '/classes/class-answer-limiter-dummy.php' );
|
92 |
}
|
@@ -189,12 +174,6 @@ class HappyForms extends HappyForms_Core {
|
|
189 |
'label' => __( 'Rating', 'happyforms' ),
|
190 |
),
|
191 |
|
192 |
-
5793 => array(
|
193 |
-
'type' => 'panel_dummy',
|
194 |
-
'dummy_id' => 'separators',
|
195 |
-
'label' => __( 'Separators', 'happyforms' ),
|
196 |
-
),
|
197 |
-
|
198 |
8560 => array(
|
199 |
'type' => 'panel_dummy',
|
200 |
'dummy_id' => 'multistep',
|
38 |
$part_library = happyforms_get_part_library();
|
39 |
|
40 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-website-url-dummy.php' );
|
41 |
+
$part_library->register_part( 'HappyForms_Part_WebsiteUrl_Dummy', 4 );
|
42 |
|
43 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-attachment-dummy.php' );
|
44 |
+
$part_library->register_part( 'HappyForms_Part_Attachment_Dummy', 7 );
|
45 |
|
46 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-phone-dummy.php' );
|
47 |
+
$part_library->register_part( 'HappyForms_Part_Phone_Dummy', 10 );
|
48 |
|
49 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-date-dummy.php' );
|
50 |
+
$part_library->register_part( 'HappyForms_Part_Date_Dummy', 11 );
|
51 |
|
52 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-scale-dummy.php' );
|
53 |
+
$part_library->register_part( 'HappyForms_Part_Scale_Dummy', 12 );
|
54 |
|
55 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-signature-dummy.php' );
|
56 |
+
$part_library->register_part( 'HappyForms_Part_Signature_Dummy', 13 );
|
57 |
|
58 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-rating-dummy.php' );
|
59 |
+
$part_library->register_part( 'HappyForms_Part_Rating_Dummy', 14 );
|
60 |
|
61 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-optin-dummy.php' );
|
62 |
+
$part_library->register_part( 'HappyForms_Part_OptIn_Dummy', 15 );
|
63 |
|
64 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-scrollable-terms-dummy.php' );
|
65 |
+
$part_library->register_part( 'HappyForms_Part_ScrollableTerms_Dummy', 16 );
|
66 |
|
67 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-payments-dummy.php' );
|
68 |
+
$part_library->register_part( 'HappyForms_Part_Payments_Dummy', 17 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-toggletip-dummy.php' );
|
71 |
+
$part_library->register_part( 'HappyForms_Part_Toggletip_Dummy', 104 );
|
|
|
|
|
|
|
72 |
|
73 |
require_once( happyforms_get_include_folder() . '/classes/parts/class-part-page-break-dummy.php' );
|
74 |
+
$part_library->register_part( 'HappyForms_Part_PageBreak_Dummy', 106 );
|
75 |
|
76 |
require_once( happyforms_get_include_folder() . '/classes/class-answer-limiter-dummy.php' );
|
77 |
}
|
174 |
'label' => __( 'Rating', 'happyforms' ),
|
175 |
),
|
176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
8560 => array(
|
178 |
'type' => 'panel_dummy',
|
179 |
'dummy_id' => 'multistep',
|
inc/classes/class-importer-xml.php
ADDED
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class HappyForms_Importer_XML {
|
4 |
+
|
5 |
+
private $entity_id = false;
|
6 |
+
private $form_id = false;
|
7 |
+
private $process_tags = false;
|
8 |
+
private $meta_key = false;
|
9 |
+
private $cdata = '';
|
10 |
+
private $error = false;
|
11 |
+
private $counters = array();
|
12 |
+
private $excluded_meta = [
|
13 |
+
'_happyforms_count_submissions_unread',
|
14 |
+
'_happyforms_count_submissions_read',
|
15 |
+
'_happyforms_count_submissions_spam',
|
16 |
+
'_happyforms_count_submissions_trash',
|
17 |
+
'_happyforms_count_submissions_total',
|
18 |
+
];
|
19 |
+
|
20 |
+
public function import( $path ) {
|
21 |
+
if ( ! is_file( $path ) ) {
|
22 |
+
return new WP_Error( 'Invalid file.' );
|
23 |
+
}
|
24 |
+
|
25 |
+
$stream = fopen( $path, 'r' );
|
26 |
+
$parser = xml_parser_create( 'UTF-8' );
|
27 |
+
|
28 |
+
xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
|
29 |
+
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
|
30 |
+
xml_set_object( $parser, $this );
|
31 |
+
xml_set_character_data_handler( $parser, 'cdata' );
|
32 |
+
xml_set_element_handler( $parser, 'tag_open', 'tag_close' );
|
33 |
+
|
34 |
+
while( ( $data = fread( $stream, 16384 ) ) ) {
|
35 |
+
if ( ! xml_parse( $parser, $data ) ) {
|
36 |
+
$this->error_parse( $parser );
|
37 |
+
}
|
38 |
+
|
39 |
+
if ( $this->error ) {
|
40 |
+
return $this->error;
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
xml_parse( $parser, '', true );
|
45 |
+
xml_parser_free( $parser );
|
46 |
+
fclose( $stream );
|
47 |
+
|
48 |
+
return true;
|
49 |
+
}
|
50 |
+
|
51 |
+
public function tag_open( $parse, $tag, $attr ) {
|
52 |
+
switch( $tag ) {
|
53 |
+
case 'hf:form':
|
54 |
+
$this->process_tags = true;
|
55 |
+
|
56 |
+
$this->create_post( 'happyform' );
|
57 |
+
$this->form_id = $this->entity_id;
|
58 |
+
break;
|
59 |
+
|
60 |
+
case 'hf:response':
|
61 |
+
case 'hf:poll':
|
62 |
+
$this->process_tags = false;
|
63 |
+
break;
|
64 |
+
|
65 |
+
case 'hf:meta':
|
66 |
+
$this->meta_key = (
|
67 |
+
isset( $attr['name'] ) ?
|
68 |
+
$attr['name'] : false
|
69 |
+
);
|
70 |
+
break;
|
71 |
+
default:
|
72 |
+
break;
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
function cdata( $parser, $cdata ) {
|
77 |
+
$this->cdata .= $cdata;
|
78 |
+
}
|
79 |
+
|
80 |
+
public function tag_close( $parse, $tag ) {
|
81 |
+
if ( $this->process_tags ) {
|
82 |
+
switch( $tag ) {
|
83 |
+
case 'hf:post_title':
|
84 |
+
$this->update_post_title();
|
85 |
+
break;
|
86 |
+
case 'hf:post_name':
|
87 |
+
$this->update_post_name();
|
88 |
+
break;
|
89 |
+
case 'hf:post_status':
|
90 |
+
$this->update_post_status();
|
91 |
+
break;
|
92 |
+
case 'hf:meta':
|
93 |
+
$this->update_post_meta();
|
94 |
+
break;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
$this->cdata = '';
|
99 |
+
}
|
100 |
+
|
101 |
+
public function create_post( $post_type ) {
|
102 |
+
$this->entity_id = wp_insert_post( array(
|
103 |
+
'post_type' => $post_type,
|
104 |
+
'post_status' => 'publish',
|
105 |
+
) );
|
106 |
+
|
107 |
+
if ( ! $this->entity_id ) {
|
108 |
+
$this->error_insert( $post_type );
|
109 |
+
}
|
110 |
+
|
111 |
+
$this->increment_counter( $post_type );
|
112 |
+
}
|
113 |
+
|
114 |
+
public function update_post_title() {
|
115 |
+
$this->entity_id = wp_update_post( array(
|
116 |
+
'ID' => $this->entity_id,
|
117 |
+
'post_title' => $this->cdata,
|
118 |
+
) );
|
119 |
+
}
|
120 |
+
|
121 |
+
public function update_post_name() {
|
122 |
+
$post_name = $this->cdata;
|
123 |
+
$post_name = explode( '-', $post_name );
|
124 |
+
$post_name[0] = $this->form_id;
|
125 |
+
$post_name = implode( '-', $post_name );
|
126 |
+
|
127 |
+
$this->entity_id = wp_update_post( array(
|
128 |
+
'ID' => $this->entity_id,
|
129 |
+
'post_name' => $post_name,
|
130 |
+
) );
|
131 |
+
}
|
132 |
+
|
133 |
+
public function update_post_status() {
|
134 |
+
$this->entity_id = wp_update_post( array(
|
135 |
+
'ID' => $this->entity_id,
|
136 |
+
'post_status' => $this->cdata,
|
137 |
+
) );
|
138 |
+
}
|
139 |
+
|
140 |
+
public function update_post_meta() {
|
141 |
+
if ( in_array( $this->meta_key, $this->excluded_meta ) ) {
|
142 |
+
return;
|
143 |
+
}
|
144 |
+
|
145 |
+
$meta_value = maybe_unserialize( $this->cdata );
|
146 |
+
|
147 |
+
if ( '_happyforms_form_id' === $this->meta_key ) {
|
148 |
+
$meta_value = $this->form_id;
|
149 |
+
}
|
150 |
+
|
151 |
+
update_post_meta( $this->entity_id, $this->meta_key, $meta_value );
|
152 |
+
}
|
153 |
+
|
154 |
+
public function get_entity_label( $post_type, $count ) {
|
155 |
+
$label = '';
|
156 |
+
|
157 |
+
switch ( $post_type ) {
|
158 |
+
case 'happyform':
|
159 |
+
$label = __( 'form', 'happyforms' );
|
160 |
+
|
161 |
+
if ( $count > 1 ) {
|
162 |
+
$label = __( 'forms', 'happyforms' );
|
163 |
+
}
|
164 |
+
|
165 |
+
break;
|
166 |
+
|
167 |
+
case 'happyforms-message':
|
168 |
+
$label = __( 'submission', 'happyforms' );
|
169 |
+
|
170 |
+
if ( $count > 1 ) {
|
171 |
+
$label = __( 'submissions', 'happyforms' );
|
172 |
+
}
|
173 |
+
|
174 |
+
break;
|
175 |
+
|
176 |
+
case 'happyforms-poll':
|
177 |
+
$label = __( 'poll', 'happyforms' );
|
178 |
+
|
179 |
+
if ( $count > 1 ) {
|
180 |
+
$label = __( 'polls', 'happyforms' );
|
181 |
+
}
|
182 |
+
|
183 |
+
break;
|
184 |
+
}
|
185 |
+
|
186 |
+
return $label;
|
187 |
+
}
|
188 |
+
|
189 |
+
public function increment_counter( $post_type ) {
|
190 |
+
$this->counters[$post_type] = (
|
191 |
+
isset( $this->counters[$post_type] ) ?
|
192 |
+
$this->counters[$post_type] + 1 : 1
|
193 |
+
);
|
194 |
+
}
|
195 |
+
|
196 |
+
public function get_success_messages() {
|
197 |
+
$messages = array();
|
198 |
+
|
199 |
+
foreach( $this->counters as $post_type => $count ) {
|
200 |
+
$label = $this->get_entity_label( $post_type, $count );
|
201 |
+
$message = sprintf(
|
202 |
+
__( '%s %s imported successfully.', 'happyforms' ),
|
203 |
+
$count, $label
|
204 |
+
);
|
205 |
+
$messages[] = $message;
|
206 |
+
}
|
207 |
+
|
208 |
+
$messages[] = __( 'All done!', 'happyforms' );
|
209 |
+
|
210 |
+
return $messages;
|
211 |
+
}
|
212 |
+
|
213 |
+
public function error_parse( $parser ) {
|
214 |
+
$current_line = xml_get_current_line_number( $parser );
|
215 |
+
$current_column = xml_get_current_column_number( $parser );
|
216 |
+
$error_code = xml_get_error_code( $parser );
|
217 |
+
$error_string = xml_error_string( $error_code );
|
218 |
+
$code = 'import-parse';
|
219 |
+
$message = __( 'An error occured while parsing import file.', 'happyforms' );
|
220 |
+
|
221 |
+
$this->add_error( $code, $message );
|
222 |
+
}
|
223 |
+
|
224 |
+
public function error_insert( $post_type ) {
|
225 |
+
$code = 'import-insert';
|
226 |
+
$label = $this->get_entity_label( $post_type );
|
227 |
+
$message = sprintf(
|
228 |
+
__( 'An error occured while importing %s.', 'happyforms' ),
|
229 |
+
$label
|
230 |
+
);
|
231 |
+
|
232 |
+
$this->add_error( $code, $message );
|
233 |
+
}
|
234 |
+
|
235 |
+
private function add_error( $code, $message, $data = array() ) {
|
236 |
+
if ( ! is_wp_error( $this->error ) ) {
|
237 |
+
$this->error = new WP_Error();
|
238 |
+
}
|
239 |
+
|
240 |
+
$this->error->add( $code, $message, $data );
|
241 |
+
}
|
242 |
+
|
243 |
+
}
|
inc/classes/parts/class-part-divider-dummy.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class HappyForms_Part_Divider_Dummy extends HappyForms_Form_Part {
|
4 |
-
|
5 |
-
public $type = 'divider_dummy';
|
6 |
-
|
7 |
-
public function __construct() {
|
8 |
-
$this->label = __( 'Separator', 'happyforms' );
|
9 |
-
$this->description = __( 'For adding a horizontal rule to visually separate fields.', 'happyforms' );
|
10 |
-
}
|
11 |
-
|
12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/classes/parts/class-part-layout-title-dummy.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class HappyForms_Part_LayoutTitle_Dummy extends HappyForms_Form_Part {
|
4 |
-
|
5 |
-
public $type = 'layout_title_dummy';
|
6 |
-
|
7 |
-
public function __construct() {
|
8 |
-
$this->label = __( 'Heading', 'happyforms' );
|
9 |
-
$this->description = __( 'For adding titles to visually separate fields.', 'happyforms' );
|
10 |
-
}
|
11 |
-
|
12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/classes/parts/class-part-media-dummy.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class HappyForms_Part_Media_Dummy extends HappyForms_Form_Part {
|
4 |
-
|
5 |
-
public $type = 'media_dummy';
|
6 |
-
|
7 |
-
public function __construct() {
|
8 |
-
$this->label = __( 'Media', 'happyforms' );
|
9 |
-
$this->description = __( 'For adding a single image, video, animated gif or audio clip.', 'happyforms' );
|
10 |
-
}
|
11 |
-
|
12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/classes/parts/class-part-placeholder-dummy.php
DELETED
@@ -1,12 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class HappyForms_Part_Placeholder_Dummy extends HappyForms_Form_Part {
|
4 |
-
|
5 |
-
public $type = 'placeholder_dummy';
|
6 |
-
|
7 |
-
public function __construct() {
|
8 |
-
$this->label = __( 'Paragraph', 'happyforms' );
|
9 |
-
$this->description = __( 'For adding helper text, notes and formatted messages.', 'happyforms' );
|
10 |
-
}
|
11 |
-
|
12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/happyforms.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Happyforms (free) plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Happyforms (free) 1.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
|
7 |
"Last-Translator: The Theme Foundry\n"
|
8 |
"Language-Team: The Theme Foundry\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-11-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: happyforms\n"
|
@@ -33,9 +33,10 @@ msgstr ""
|
|
33 |
|
34 |
#: core/classes/class-block.php:52
|
35 |
#: core/classes/class-form-controller.php:73
|
36 |
-
#: core/classes/class-happyforms-core.php:186
|
37 |
#: core/classes/class-happyforms-core.php:187
|
|
|
38 |
#: core/classes/class-happyforms-widget.php:13
|
|
|
39 |
#: core/helpers/helper-misc.php:1068
|
40 |
msgid "Forms"
|
41 |
msgstr ""
|
@@ -83,6 +84,8 @@ msgstr ""
|
|
83 |
|
84 |
#: core/classes/class-form-admin.php:454
|
85 |
#: core/templates/customize-form-item.php:27
|
|
|
|
|
86 |
#: inc/templates/customize-form-part-choice-footer.php:3
|
87 |
#: inc/templates/customize-form-part-footer.php:4
|
88 |
msgid "Duplicate"
|
@@ -106,8 +109,8 @@ msgid "Form"
|
|
106 |
msgstr ""
|
107 |
|
108 |
#: core/classes/class-form-controller.php:75
|
109 |
-
#: core/classes/class-happyforms-core.php:202
|
110 |
#: core/classes/class-happyforms-core.php:203
|
|
|
111 |
msgid "Add New"
|
112 |
msgstr ""
|
113 |
|
@@ -143,8 +146,8 @@ msgstr ""
|
|
143 |
|
144 |
#: core/classes/class-form-controller.php:84
|
145 |
#: core/classes/class-form-controller.php:85
|
146 |
-
#: core/classes/class-happyforms-core.php:194
|
147 |
#: core/classes/class-happyforms-core.php:195
|
|
|
148 |
msgid "All Forms"
|
149 |
msgstr ""
|
150 |
|
@@ -169,7 +172,7 @@ msgid "Email me a copy of each submission"
|
|
169 |
msgstr ""
|
170 |
|
171 |
#: core/classes/class-form-email.php:126
|
172 |
-
#: inc/classes/class-happyforms.php:
|
173 |
msgid "To email address"
|
174 |
msgstr ""
|
175 |
|
@@ -354,7 +357,7 @@ msgstr ""
|
|
354 |
msgid "Remaining submissions"
|
355 |
msgstr ""
|
356 |
|
357 |
-
#: core/classes/class-form-part-library.php:
|
358 |
msgid "Missing validation callback for field %s"
|
359 |
msgstr ""
|
360 |
|
@@ -437,8 +440,10 @@ msgstr ""
|
|
437 |
#: core/classes/class-form-styles.php:253
|
438 |
#: core/templates/parts/customize-checkbox.php:10
|
439 |
#: core/templates/parts/customize-email.php:10
|
|
|
440 |
#: core/templates/parts/customize-multi-line-text.php:10
|
441 |
#: core/templates/parts/customize-number.php:10
|
|
|
442 |
#: core/templates/parts/customize-radio.php:10
|
443 |
#: core/templates/parts/customize-select.php:10
|
444 |
#: core/templates/parts/customize-single-line-text.php:10
|
@@ -450,8 +455,10 @@ msgstr ""
|
|
450 |
#: core/classes/class-form-styles.php:254
|
451 |
#: core/templates/parts/customize-checkbox.php:14
|
452 |
#: core/templates/parts/customize-email.php:14
|
|
|
453 |
#: core/templates/parts/customize-multi-line-text.php:14
|
454 |
#: core/templates/parts/customize-number.php:14
|
|
|
455 |
#: core/templates/parts/customize-radio.php:14
|
456 |
#: core/templates/parts/customize-select.php:14
|
457 |
#: core/templates/parts/customize-single-line-text.php:14
|
@@ -532,162 +539,164 @@ msgstr ""
|
|
532 |
msgid "Full width"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: core/classes/class-form-styles.php:
|
536 |
msgid "General"
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: core/classes/class-form-styles.php:
|
540 |
-
#: core/classes/class-form-styles.php:
|
541 |
#: core/templates/partials/customize-field-width.php:2
|
542 |
msgid "Width"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: core/classes/class-form-styles.php:
|
546 |
-
#: core/classes/class-form-styles.php:
|
547 |
msgid "Padding"
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: core/classes/class-form-styles.php:
|
551 |
msgid "Direction"
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: core/classes/class-form-styles.php:
|
555 |
-
#: core/classes/class-form-styles.php:
|
556 |
-
#: core/classes/class-form-styles.php:
|
557 |
-
#: core/classes/class-form-styles.php:
|
558 |
msgid "Colors"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: core/classes/class-form-styles.php:
|
562 |
msgid "Primary"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: core/classes/class-form-styles.php:
|
566 |
msgid "Success message background"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: core/classes/class-form-styles.php:
|
570 |
msgid "Success message text"
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: core/classes/class-form-styles.php:
|
574 |
msgid "Validation message text"
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: core/classes/class-form-styles.php:
|
578 |
msgid "Error message background"
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: core/classes/class-form-styles.php:
|
582 |
msgid "Error message text"
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: core/classes/class-form-styles.php:
|
586 |
#: inc/classes/parts/class-part-title-dummy.php:8
|
587 |
msgid "Title"
|
588 |
msgstr ""
|
589 |
|
590 |
-
#: core/classes/class-form-styles.php:
|
591 |
msgid "Display"
|
592 |
msgstr ""
|
593 |
|
594 |
-
#: core/classes/class-form-styles.php:
|
595 |
-
#: core/classes/class-form-styles.php:
|
596 |
msgid "Alignment"
|
597 |
msgstr ""
|
598 |
|
599 |
-
#: core/classes/class-form-styles.php:
|
600 |
-
#: core/classes/class-form-styles.php:
|
601 |
msgid "Font size"
|
602 |
msgstr ""
|
603 |
|
604 |
-
#: core/classes/class-form-styles.php:
|
605 |
msgid "Field borders & spacing"
|
606 |
msgstr ""
|
607 |
|
608 |
-
#: core/classes/class-form-styles.php:
|
609 |
-
#: core/classes/class-form-styles.php:
|
610 |
-
#: core/classes/class-form-styles.php:
|
611 |
-
#: core/classes/class-form-styles.php:
|
612 |
msgid "Border"
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: core/classes/class-form-styles.php:
|
616 |
msgid "Border location"
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: core/classes/class-form-styles.php:
|
620 |
-
#: core/classes/class-form-styles.php:
|
621 |
msgid "Border radius"
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: core/classes/class-form-styles.php:
|
625 |
msgid "Outer spacing"
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: core/classes/class-form-styles.php:
|
629 |
msgid "Inner spacing"
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: core/classes/class-form-styles.php:
|
633 |
msgid "Border on focus"
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: core/classes/class-form-styles.php:
|
637 |
-
#: core/classes/class-form-styles.php:
|
638 |
-
#: core/classes/class-form-styles.php:
|
639 |
msgid "Background"
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: core/classes/class-form-styles.php:
|
643 |
-
#: core/classes/class-form-styles.php:
|
644 |
-
#: core/classes/class-form-styles.php:
|
645 |
msgid "Background on focus"
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: core/classes/class-form-styles.php:
|
649 |
msgid "Field labels & text"
|
650 |
msgstr ""
|
651 |
|
652 |
-
#: core/classes/class-form-styles.php:
|
653 |
msgid "Toggle placeholder on field focus"
|
654 |
msgstr ""
|
655 |
|
656 |
-
#: core/classes/class-form-styles.php:
|
657 |
msgid "Label alignment"
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: core/classes/class-form-styles.php:
|
661 |
msgid "Label font size"
|
662 |
msgstr ""
|
663 |
|
664 |
-
#: core/classes/class-form-styles.php:
|
665 |
msgid "Label font weight"
|
666 |
msgstr ""
|
667 |
|
668 |
-
#: core/classes/class-form-styles.php:
|
669 |
msgid "Hint alignment"
|
670 |
msgstr ""
|
671 |
|
672 |
-
#: core/classes/class-form-styles.php:
|
673 |
msgid "Hint font size"
|
674 |
msgstr ""
|
675 |
|
676 |
-
#: core/classes/class-form-styles.php:
|
677 |
msgid "Placeholder & value alignment"
|
678 |
msgstr ""
|
679 |
|
680 |
-
#: core/classes/class-form-styles.php:
|
681 |
msgid "Value font size"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: core/classes/class-form-styles.php:
|
685 |
#: core/templates/parts/customize-checkbox.php:4
|
686 |
#: core/templates/parts/customize-checkbox.php:139
|
687 |
#: core/templates/parts/customize-checkbox.php:187
|
688 |
#: core/templates/parts/customize-email.php:4
|
|
|
689 |
#: core/templates/parts/customize-multi-line-text.php:4
|
690 |
#: core/templates/parts/customize-number.php:4
|
|
|
691 |
#: core/templates/parts/customize-radio.php:4
|
692 |
#: core/templates/parts/customize-radio.php:125
|
693 |
#: core/templates/parts/customize-radio.php:174
|
@@ -698,11 +707,11 @@ msgstr ""
|
|
698 |
msgid "Label"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: core/classes/class-form-styles.php:
|
702 |
msgid "Value"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: core/classes/class-form-styles.php:
|
706 |
#: core/templates/parts/customize-email.php:20
|
707 |
#: core/templates/parts/customize-multi-line-text.php:20
|
708 |
#: core/templates/parts/customize-number.php:20
|
@@ -711,12 +720,13 @@ msgstr ""
|
|
711 |
msgid "Placeholder"
|
712 |
msgstr ""
|
713 |
|
714 |
-
#: core/classes/class-form-styles.php:
|
715 |
#: core/templates/parts/customize-checkbox.php:20
|
716 |
#: core/templates/parts/customize-checkbox.php:145
|
717 |
#: core/templates/parts/customize-email.php:28
|
718 |
#: core/templates/parts/customize-multi-line-text.php:28
|
719 |
#: core/templates/parts/customize-number.php:28
|
|
|
720 |
#: core/templates/parts/customize-radio.php:20
|
721 |
#: core/templates/parts/customize-radio.php:131
|
722 |
#: core/templates/parts/customize-select.php:24
|
@@ -724,102 +734,111 @@ msgstr ""
|
|
724 |
msgid "Hint"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: core/classes/class-form-styles.php:
|
728 |
msgid "Address dropdowns"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: core/classes/class-form-styles.php:
|
732 |
msgid "Items"
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: core/classes/class-form-styles.php:
|
736 |
-
#: core/classes/class-form-styles.php:
|
737 |
#: core/classes/parts/class-part-single-line-text.php:8
|
|
|
738 |
msgid "Text"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: core/classes/class-form-styles.php:
|
742 |
msgid "Text focused"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: core/classes/class-form-styles.php:
|
746 |
msgid "Tables"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: core/classes/class-form-styles.php:
|
750 |
msgid "Odd row primary"
|
751 |
msgstr ""
|
752 |
|
753 |
-
#: core/classes/class-form-styles.php:
|
754 |
msgid "Odd row secondary"
|
755 |
msgstr ""
|
756 |
|
757 |
-
#: core/classes/class-form-styles.php:
|
758 |
msgid "Even row primary"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: core/classes/class-form-styles.php:
|
762 |
msgid "Even row secondary"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: core/classes/class-form-styles.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
766 |
msgid "Submit button"
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: core/classes/class-form-styles.php:
|
770 |
msgid "Font weight"
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: core/classes/class-form-styles.php:
|
774 |
msgid "Make button a field of last input"
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: core/classes/class-form-styles.php:
|
778 |
msgid "Text on focus"
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: core/classes/class-form-styles.php:
|
782 |
msgid "Add your own CSS code here to customize the appearance of your form."
|
783 |
msgstr ""
|
784 |
|
785 |
-
#: core/classes/class-form-styles.php:
|
786 |
msgid "For each rule you add, we'll prepend your form's HTML ID. This makes sure all styles added will only apply to this form. For example %s becomes %s."
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: core/classes/class-form-styles.php:
|
790 |
msgid "The edit field automatically highlights code syntax. You can disable this in your <a href=\"%s\" class=\"%s\" target=\"_blank\">user profile</a> to work in plain text mode."
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: core/classes/class-form-styles.php:
|
794 |
-
#: core/classes/class-form-styles.php:
|
795 |
msgid "Additional CSS"
|
796 |
msgstr ""
|
797 |
|
798 |
-
#: core/classes/class-happyforms-core.php:210
|
799 |
#: core/classes/class-happyforms-core.php:211
|
|
|
800 |
#: inc/classes/class-message-controller.php:572
|
801 |
msgid "Submissions"
|
802 |
msgstr ""
|
803 |
|
804 |
-
#: core/classes/class-happyforms-core.php:219
|
805 |
#: core/classes/class-happyforms-core.php:220
|
|
|
806 |
#: integrations/templates/admin-coupons.php:2
|
807 |
msgid "Coupons"
|
808 |
msgstr ""
|
809 |
|
810 |
-
#: core/classes/class-happyforms-core.php:228
|
811 |
#: core/classes/class-happyforms-core.php:229
|
|
|
812 |
#: integrations/templates/admin-integrations.php:3
|
813 |
msgid "Integrations"
|
814 |
msgstr ""
|
815 |
|
816 |
-
#: core/classes/class-happyforms-core.php:237
|
817 |
#: core/classes/class-happyforms-core.php:238
|
|
|
818 |
#: core/assets/jsx/build/admin/block.js:173
|
819 |
msgid "Settings"
|
820 |
msgstr ""
|
821 |
|
822 |
-
#: core/classes/class-happyforms-core.php:
|
823 |
msgid "Add Form"
|
824 |
msgstr ""
|
825 |
|
@@ -831,6 +850,26 @@ msgstr ""
|
|
831 |
msgid "Form:"
|
832 |
msgstr ""
|
833 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
834 |
#: core/classes/class-validation-messages.php:72
|
835 |
msgid "Field is answered incorrectly"
|
836 |
msgstr ""
|
@@ -879,6 +918,10 @@ msgstr ""
|
|
879 |
msgid "Form updated."
|
880 |
msgstr ""
|
881 |
|
|
|
|
|
|
|
|
|
882 |
#: core/classes/parts/class-part-checkbox.php:10
|
883 |
msgid "Checkbox"
|
884 |
msgstr ""
|
@@ -893,6 +936,14 @@ msgstr ""
|
|
893 |
msgid "Other"
|
894 |
msgstr ""
|
895 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
896 |
#: core/classes/parts/class-part-email.php:8
|
897 |
msgid "Email"
|
898 |
msgstr ""
|
@@ -901,6 +952,32 @@ msgstr ""
|
|
901 |
msgid "For formatted email addresses. The '@' symbol is required."
|
902 |
msgstr ""
|
903 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
904 |
#: core/classes/parts/class-part-multi-line-text.php:8
|
905 |
msgid "Long Text"
|
906 |
msgstr ""
|
@@ -917,6 +994,14 @@ msgstr ""
|
|
917 |
msgid "For numeric fields."
|
918 |
msgstr ""
|
919 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
920 |
#: core/classes/parts/class-part-radio.php:12
|
921 |
msgid "Radio"
|
922 |
msgstr ""
|
@@ -971,60 +1056,60 @@ msgstr ""
|
|
971 |
msgid "I agree to allow this site to store and process the personal information submitted."
|
972 |
msgstr ""
|
973 |
|
974 |
-
#: core/helpers/helper-form-templates.php:
|
975 |
msgid "Leave this field blank"
|
976 |
msgstr ""
|
977 |
|
978 |
-
#: core/helpers/helper-form-templates.php:
|
979 |
#: core/helpers/helper-misc.php:18
|
980 |
msgid "(no title)"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: core/helpers/helper-form-templates.php:
|
984 |
msgid "January"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: core/helpers/helper-form-templates.php:
|
988 |
msgid "February"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: core/helpers/helper-form-templates.php:
|
992 |
msgid "March"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: core/helpers/helper-form-templates.php:
|
996 |
msgid "April"
|
997 |
msgstr ""
|
998 |
|
999 |
-
#: core/helpers/helper-form-templates.php:
|
1000 |
msgid "May"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: core/helpers/helper-form-templates.php:
|
1004 |
msgid "June"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
-
#: core/helpers/helper-form-templates.php:
|
1008 |
msgid "July"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
-
#: core/helpers/helper-form-templates.php:
|
1012 |
msgid "August"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: core/helpers/helper-form-templates.php:
|
1016 |
msgid "September"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: core/helpers/helper-form-templates.php:
|
1020 |
msgid "October"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: core/helpers/helper-form-templates.php:
|
1024 |
msgid "November"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: core/helpers/helper-form-templates.php:
|
1028 |
msgid "December"
|
1029 |
msgstr ""
|
1030 |
|
@@ -2613,6 +2698,8 @@ msgid "Style"
|
|
2613 |
msgstr ""
|
2614 |
|
2615 |
#: core/templates/customize-form-item.php:33
|
|
|
|
|
2616 |
#: inc/templates/customize-form-part-choice-footer.php:2
|
2617 |
#: inc/templates/customize-form-part-footer.php:3
|
2618 |
msgid "Delete"
|
@@ -2676,10 +2763,6 @@ msgstr ""
|
|
2676 |
msgid "Updated"
|
2677 |
msgstr ""
|
2678 |
|
2679 |
-
#: core/templates/customize-header-actions.php:21
|
2680 |
-
msgid "The changes you made will be lost if you navigate away from this page."
|
2681 |
-
msgstr ""
|
2682 |
-
|
2683 |
#: core/templates/customize-header-actions.php:22
|
2684 |
msgid "Close"
|
2685 |
msgstr ""
|
@@ -2817,9 +2900,13 @@ msgid "Require an answer"
|
|
2817 |
msgstr ""
|
2818 |
|
2819 |
#: core/templates/parts/customize-checkbox.php:111
|
|
|
2820 |
#: core/templates/parts/customize-email.php:57
|
|
|
|
|
2821 |
#: core/templates/parts/customize-multi-line-text.php:70
|
2822 |
#: core/templates/parts/customize-number.php:83
|
|
|
2823 |
#: core/templates/parts/customize-radio.php:95
|
2824 |
#: core/templates/parts/customize-select.php:86
|
2825 |
#: core/templates/parts/customize-single-line-text.php:56
|
@@ -2844,13 +2931,6 @@ msgstr ""
|
|
2844 |
msgid "Make this choice default"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
-
#: core/templates/parts/customize-checkbox.php:180
|
2848 |
-
#: core/templates/parts/customize-radio.php:167
|
2849 |
-
#: core/templates/parts/customize-select.php:151
|
2850 |
-
#: inc/classes/parts/class-part-layout-title-dummy.php:8
|
2851 |
-
msgid "Heading"
|
2852 |
-
msgstr ""
|
2853 |
-
|
2854 |
#: core/templates/parts/customize-email.php:24
|
2855 |
#: core/templates/parts/customize-multi-line-text.php:24
|
2856 |
#: core/templates/parts/customize-number.php:24
|
@@ -2870,6 +2950,27 @@ msgstr ""
|
|
2870 |
msgid "Suffix"
|
2871 |
msgstr ""
|
2872 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2873 |
#: core/templates/parts/customize-multi-line-text.php:40
|
2874 |
msgid "Limit words/characters"
|
2875 |
msgstr ""
|
@@ -2920,254 +3021,290 @@ msgstr ""
|
|
2920 |
msgid "Max times the same answer can be submitted"
|
2921 |
msgstr ""
|
2922 |
|
2923 |
-
#: inc/classes/class-happyforms.php:
|
2924 |
msgid "Upgrade"
|
2925 |
msgstr ""
|
2926 |
|
2927 |
-
#: inc/classes/class-happyforms.php:
|
2928 |
msgid "Redirect to this page address (URL) after submission"
|
2929 |
msgstr ""
|
2930 |
|
2931 |
-
#: inc/classes/class-happyforms.php:
|
2932 |
msgid "Search or type URL"
|
2933 |
msgstr ""
|
2934 |
|
2935 |
-
#: inc/classes/class-happyforms.php:
|
2936 |
msgid "Shuffle order of fields"
|
2937 |
msgstr ""
|
2938 |
|
2939 |
-
#: inc/classes/class-happyforms.php:
|
2940 |
msgid "Use reCAPTCHA"
|
2941 |
msgstr ""
|
2942 |
|
2943 |
-
#: inc/classes/class-happyforms.php:
|
2944 |
msgid "Let submitters save a draft for set number of days"
|
2945 |
msgstr ""
|
2946 |
|
2947 |
-
#: inc/classes/class-happyforms.php:
|
2948 |
msgid "Require submitters to review a submission"
|
2949 |
msgstr ""
|
2950 |
|
2951 |
-
#: inc/classes/class-happyforms.php:
|
2952 |
msgid "Max number of submissions"
|
2953 |
msgstr ""
|
2954 |
|
2955 |
-
#: inc/classes/class-happyforms.php:
|
2956 |
msgid "Erase submitter's personal data after set number of days"
|
2957 |
msgstr ""
|
2958 |
|
2959 |
-
#: inc/classes/class-happyforms.php:
|
2960 |
msgid "Show an error message if field contains words in Disallowed Comment Keys"
|
2961 |
msgstr ""
|
2962 |
|
2963 |
-
#: inc/classes/class-happyforms.php:
|
2964 |
msgid "Send abandonment email"
|
2965 |
msgstr ""
|
2966 |
|
2967 |
-
#: inc/classes/class-happyforms.php:
|
2968 |
msgid "Checkboxes & Radios"
|
2969 |
msgstr ""
|
2970 |
|
2971 |
-
#: inc/classes/class-happyforms.php:
|
2972 |
msgid "Rating"
|
2973 |
msgstr ""
|
2974 |
|
2975 |
-
#: inc/classes/class-happyforms.php:
|
2976 |
-
msgid "Separators"
|
2977 |
-
msgstr ""
|
2978 |
-
|
2979 |
-
#: inc/classes/class-happyforms.php:201
|
2980 |
msgid "Multi Step"
|
2981 |
msgstr ""
|
2982 |
|
2983 |
-
#: inc/classes/class-happyforms.php:
|
2984 |
msgid "Form redirected after submission"
|
2985 |
msgstr ""
|
2986 |
|
2987 |
-
#: inc/classes/class-happyforms.php:
|
2988 |
msgid "Form has reached its reply limit"
|
2989 |
msgstr ""
|
2990 |
|
2991 |
-
#: inc/classes/class-happyforms.php:
|
2992 |
msgid "Submitter has returned to a draft"
|
2993 |
msgstr ""
|
2994 |
|
2995 |
-
#: inc/classes/class-happyforms.php:
|
2996 |
msgid "Submitter is viewing review page"
|
2997 |
msgstr ""
|
2998 |
|
2999 |
-
#: inc/classes/class-happyforms.php:
|
3000 |
msgid "Payment completed"
|
3001 |
msgstr ""
|
3002 |
|
3003 |
-
#: inc/classes/class-happyforms.php:
|
3004 |
msgid "Payment failed"
|
3005 |
msgstr ""
|
3006 |
|
3007 |
-
#: inc/classes/class-happyforms.php:
|
3008 |
msgid "Payment cancelled"
|
3009 |
msgstr ""
|
3010 |
|
3011 |
-
#: inc/classes/class-happyforms.php:
|
3012 |
msgid "Previous page"
|
3013 |
msgstr ""
|
3014 |
|
3015 |
-
#: inc/classes/class-happyforms.php:
|
3016 |
msgid "Redirect to page"
|
3017 |
msgstr ""
|
3018 |
|
3019 |
-
#: inc/classes/class-happyforms.php:
|
3020 |
msgid "Print user submission"
|
3021 |
msgstr ""
|
3022 |
|
3023 |
-
#: inc/classes/class-happyforms.php:
|
3024 |
msgid "Edit reply"
|
3025 |
msgstr ""
|
3026 |
|
3027 |
-
#: inc/classes/class-happyforms.php:
|
3028 |
msgid "Clear saved draft reply"
|
3029 |
msgstr ""
|
3030 |
|
3031 |
-
#: inc/classes/class-happyforms.php:
|
3032 |
msgid "Save draft reply"
|
3033 |
msgstr ""
|
3034 |
|
3035 |
-
#: inc/classes/class-happyforms.php:
|
3036 |
msgid "Upload files"
|
3037 |
msgstr ""
|
3038 |
|
3039 |
-
#: inc/classes/class-happyforms.php:
|
3040 |
msgid "Remove uploaded file"
|
3041 |
msgstr ""
|
3042 |
|
3043 |
-
#: inc/classes/class-happyforms.php:
|
3044 |
msgid "Review reply"
|
3045 |
msgstr ""
|
3046 |
|
3047 |
-
#: inc/classes/class-happyforms.php:
|
3048 |
msgid "Start drawing signature"
|
3049 |
msgstr ""
|
3050 |
|
3051 |
-
#: inc/classes/class-happyforms.php:
|
3052 |
msgid "Start over drawing signature"
|
3053 |
msgstr ""
|
3054 |
|
3055 |
-
#: inc/classes/class-happyforms.php:
|
3056 |
msgid "Clear drawn signature"
|
3057 |
msgstr ""
|
3058 |
|
3059 |
-
#: inc/classes/class-happyforms.php:
|
3060 |
msgid "Done drawing signature"
|
3061 |
msgstr ""
|
3062 |
|
3063 |
-
#: inc/classes/class-happyforms.php:
|
3064 |
msgid "Field answer reached its limit"
|
3065 |
msgstr ""
|
3066 |
|
3067 |
-
#: inc/classes/class-happyforms.php:
|
3068 |
msgid "Coupon code invalid"
|
3069 |
msgstr ""
|
3070 |
|
3071 |
-
#: inc/classes/class-happyforms.php:
|
3072 |
msgid "Required file isn't uploaded"
|
3073 |
msgstr ""
|
3074 |
|
3075 |
-
#: inc/classes/class-happyforms.php:
|
3076 |
msgid "Required terms haven't been scrolled"
|
3077 |
msgstr ""
|
3078 |
|
3079 |
-
#: inc/classes/class-happyforms.php:
|
3080 |
msgid "Field contains disallowed word"
|
3081 |
msgstr ""
|
3082 |
|
3083 |
-
#: inc/classes/class-happyforms.php:
|
3084 |
msgid "Disallowed IP address or browser"
|
3085 |
msgstr ""
|
3086 |
|
3087 |
-
#: inc/classes/class-happyforms.php:
|
3088 |
msgid "This file's size is too big"
|
3089 |
msgstr ""
|
3090 |
|
3091 |
-
#: inc/classes/class-happyforms.php:
|
3092 |
msgid "This file's type not allowed"
|
3093 |
msgstr ""
|
3094 |
|
3095 |
-
#: inc/classes/class-happyforms.php:
|
3096 |
msgid "A file with this name has already been uploaded"
|
3097 |
msgstr ""
|
3098 |
|
3099 |
-
#: inc/classes/class-happyforms.php:
|
3100 |
msgid "User uploaded too few files"
|
3101 |
msgstr ""
|
3102 |
|
3103 |
-
#: inc/classes/class-happyforms.php:
|
3104 |
msgid "Price is too low"
|
3105 |
msgstr ""
|
3106 |
|
3107 |
-
#: inc/classes/class-happyforms.php:
|
3108 |
msgid "Phone field country code label"
|
3109 |
msgstr ""
|
3110 |
|
3111 |
-
#: inc/classes/class-happyforms.php:
|
3112 |
msgid "Phone field number label"
|
3113 |
msgstr ""
|
3114 |
|
3115 |
-
#: inc/classes/class-happyforms.php:
|
3116 |
msgid "Total files uploaded"
|
3117 |
msgstr ""
|
3118 |
|
3119 |
-
#: inc/classes/class-happyforms.php:
|
3120 |
msgid "Payment method"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
-
#: inc/classes/class-happyforms.php:
|
3124 |
msgid "Pay what you want"
|
3125 |
msgstr ""
|
3126 |
|
3127 |
-
#: inc/classes/class-happyforms.php:
|
3128 |
msgid "Submitter will be redirected to PayPal"
|
3129 |
msgstr ""
|
3130 |
|
3131 |
-
#: inc/classes/class-happyforms.php:
|
3132 |
msgid "PayPal payment"
|
3133 |
msgstr ""
|
3134 |
|
3135 |
-
#: inc/classes/class-happyforms.php:
|
3136 |
msgid "Stripe is processing payment"
|
3137 |
msgstr ""
|
3138 |
|
3139 |
-
#: inc/classes/class-happyforms.php:
|
3140 |
msgid "Stripe payment"
|
3141 |
msgstr ""
|
3142 |
|
3143 |
-
#: inc/classes/class-happyforms.php:
|
3144 |
msgid "Stripe card field"
|
3145 |
msgstr ""
|
3146 |
|
3147 |
-
#: inc/classes/class-happyforms.php:
|
3148 |
msgid "Card number"
|
3149 |
msgstr ""
|
3150 |
|
3151 |
-
#: inc/classes/class-happyforms.php:
|
3152 |
msgid "Card expiration"
|
3153 |
msgstr ""
|
3154 |
|
3155 |
-
#: inc/classes/class-happyforms.php:
|
3156 |
msgid "Card security code"
|
3157 |
msgstr ""
|
3158 |
|
3159 |
-
#: inc/classes/class-happyforms.php:
|
3160 |
msgid "Coupon field label"
|
3161 |
msgstr ""
|
3162 |
|
3163 |
-
#: inc/classes/class-happyforms.php:
|
3164 |
msgid "Apply coupon button label"
|
3165 |
msgstr ""
|
3166 |
|
3167 |
-
#: inc/classes/class-happyforms.php:
|
3168 |
msgid "Current page"
|
3169 |
msgstr ""
|
3170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3171 |
#: inc/classes/class-message-admin.php:59
|
3172 |
#: inc/classes/class-message-controller.php:573
|
3173 |
msgid "Submission"
|
@@ -3222,30 +3359,6 @@ msgstr ""
|
|
3222 |
msgid "For formatted day, month, year and or time fields."
|
3223 |
msgstr ""
|
3224 |
|
3225 |
-
#: inc/classes/parts/class-part-divider-dummy.php:8
|
3226 |
-
msgid "Separator"
|
3227 |
-
msgstr ""
|
3228 |
-
|
3229 |
-
#: inc/classes/parts/class-part-divider-dummy.php:9
|
3230 |
-
msgid "For adding a horizontal rule to visually separate fields."
|
3231 |
-
msgstr ""
|
3232 |
-
|
3233 |
-
#: inc/classes/parts/class-part-layout-drawer-group.php:9
|
3234 |
-
msgid "Design"
|
3235 |
-
msgstr ""
|
3236 |
-
|
3237 |
-
#: inc/classes/parts/class-part-layout-title-dummy.php:9
|
3238 |
-
msgid "For adding titles to visually separate fields."
|
3239 |
-
msgstr ""
|
3240 |
-
|
3241 |
-
#: inc/classes/parts/class-part-media-dummy.php:8
|
3242 |
-
msgid "Media"
|
3243 |
-
msgstr ""
|
3244 |
-
|
3245 |
-
#: inc/classes/parts/class-part-media-dummy.php:9
|
3246 |
-
msgid "For adding a single image, video, animated gif or audio clip."
|
3247 |
-
msgstr ""
|
3248 |
-
|
3249 |
#: inc/classes/parts/class-part-optin-dummy.php:8
|
3250 |
msgid "Opt-In Choice"
|
3251 |
msgstr ""
|
@@ -3278,14 +3391,6 @@ msgstr ""
|
|
3278 |
msgid "For collecting a local or international phone number."
|
3279 |
msgstr ""
|
3280 |
|
3281 |
-
#: inc/classes/parts/class-part-placeholder-dummy.php:8
|
3282 |
-
msgid "Paragraph"
|
3283 |
-
msgstr ""
|
3284 |
-
|
3285 |
-
#: inc/classes/parts/class-part-placeholder-dummy.php:9
|
3286 |
-
msgid "For adding helper text, notes and formatted messages."
|
3287 |
-
msgstr ""
|
3288 |
-
|
3289 |
#: inc/classes/parts/class-part-rating-dummy.php:8
|
3290 |
msgid "Rate"
|
3291 |
msgstr ""
|
2 |
# This file is distributed under the same license as the Happyforms (free) plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Happyforms (free) 1.21.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
|
7 |
"Last-Translator: The Theme Foundry\n"
|
8 |
"Language-Team: The Theme Foundry\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-11-30T10:37:54+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: happyforms\n"
|
33 |
|
34 |
#: core/classes/class-block.php:52
|
35 |
#: core/classes/class-form-controller.php:73
|
|
|
36 |
#: core/classes/class-happyforms-core.php:187
|
37 |
+
#: core/classes/class-happyforms-core.php:188
|
38 |
#: core/classes/class-happyforms-widget.php:13
|
39 |
+
#: core/classes/class-import-controller.php:42
|
40 |
#: core/helpers/helper-misc.php:1068
|
41 |
msgid "Forms"
|
42 |
msgstr ""
|
84 |
|
85 |
#: core/classes/class-form-admin.php:454
|
86 |
#: core/templates/customize-form-item.php:27
|
87 |
+
#: core/templates/parts/customize-divider.php:25
|
88 |
+
#: core/templates/parts/customize-layout_title.php:41
|
89 |
#: inc/templates/customize-form-part-choice-footer.php:3
|
90 |
#: inc/templates/customize-form-part-footer.php:4
|
91 |
msgid "Duplicate"
|
109 |
msgstr ""
|
110 |
|
111 |
#: core/classes/class-form-controller.php:75
|
|
|
112 |
#: core/classes/class-happyforms-core.php:203
|
113 |
+
#: core/classes/class-happyforms-core.php:204
|
114 |
msgid "Add New"
|
115 |
msgstr ""
|
116 |
|
146 |
|
147 |
#: core/classes/class-form-controller.php:84
|
148 |
#: core/classes/class-form-controller.php:85
|
|
|
149 |
#: core/classes/class-happyforms-core.php:195
|
150 |
+
#: core/classes/class-happyforms-core.php:196
|
151 |
msgid "All Forms"
|
152 |
msgstr ""
|
153 |
|
172 |
msgstr ""
|
173 |
|
174 |
#: core/classes/class-form-email.php:126
|
175 |
+
#: inc/classes/class-happyforms.php:148
|
176 |
msgid "To email address"
|
177 |
msgstr ""
|
178 |
|
357 |
msgid "Remaining submissions"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: core/classes/class-form-part-library.php:239
|
361 |
msgid "Missing validation callback for field %s"
|
362 |
msgstr ""
|
363 |
|
440 |
#: core/classes/class-form-styles.php:253
|
441 |
#: core/templates/parts/customize-checkbox.php:10
|
442 |
#: core/templates/parts/customize-email.php:10
|
443 |
+
#: core/templates/parts/customize-media.php:11
|
444 |
#: core/templates/parts/customize-multi-line-text.php:10
|
445 |
#: core/templates/parts/customize-number.php:10
|
446 |
+
#: core/templates/parts/customize-placeholder.php:12
|
447 |
#: core/templates/parts/customize-radio.php:10
|
448 |
#: core/templates/parts/customize-select.php:10
|
449 |
#: core/templates/parts/customize-single-line-text.php:10
|
455 |
#: core/classes/class-form-styles.php:254
|
456 |
#: core/templates/parts/customize-checkbox.php:14
|
457 |
#: core/templates/parts/customize-email.php:14
|
458 |
+
#: core/templates/parts/customize-media.php:15
|
459 |
#: core/templates/parts/customize-multi-line-text.php:14
|
460 |
#: core/templates/parts/customize-number.php:14
|
461 |
+
#: core/templates/parts/customize-placeholder.php:16
|
462 |
#: core/templates/parts/customize-radio.php:14
|
463 |
#: core/templates/parts/customize-select.php:14
|
464 |
#: core/templates/parts/customize-single-line-text.php:14
|
539 |
msgid "Full width"
|
540 |
msgstr ""
|
541 |
|
542 |
+
#: core/classes/class-form-styles.php:508
|
543 |
msgid "General"
|
544 |
msgstr ""
|
545 |
|
546 |
+
#: core/classes/class-form-styles.php:513
|
547 |
+
#: core/classes/class-form-styles.php:788
|
548 |
#: core/templates/partials/customize-field-width.php:2
|
549 |
msgid "Width"
|
550 |
msgstr ""
|
551 |
|
552 |
+
#: core/classes/class-form-styles.php:518
|
553 |
+
#: core/classes/class-form-styles.php:793
|
554 |
msgid "Padding"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: core/classes/class-form-styles.php:523
|
558 |
msgid "Direction"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: core/classes/class-form-styles.php:529
|
562 |
+
#: core/classes/class-form-styles.php:614
|
563 |
+
#: core/classes/class-form-styles.php:684
|
564 |
+
#: core/classes/class-form-styles.php:819
|
565 |
msgid "Colors"
|
566 |
msgstr ""
|
567 |
|
568 |
+
#: core/classes/class-form-styles.php:533
|
569 |
msgid "Primary"
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: core/classes/class-form-styles.php:538
|
573 |
msgid "Success message background"
|
574 |
msgstr ""
|
575 |
|
576 |
+
#: core/classes/class-form-styles.php:543
|
577 |
msgid "Success message text"
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: core/classes/class-form-styles.php:548
|
581 |
msgid "Validation message text"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: core/classes/class-form-styles.php:553
|
585 |
msgid "Error message background"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: core/classes/class-form-styles.php:558
|
589 |
msgid "Error message text"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: core/classes/class-form-styles.php:563
|
593 |
#: inc/classes/parts/class-part-title-dummy.php:8
|
594 |
msgid "Title"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: core/classes/class-form-styles.php:568
|
598 |
msgid "Display"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: core/classes/class-form-styles.php:573
|
602 |
+
#: core/classes/class-form-styles.php:808
|
603 |
msgid "Alignment"
|
604 |
msgstr ""
|
605 |
|
606 |
+
#: core/classes/class-form-styles.php:578
|
607 |
+
#: core/classes/class-form-styles.php:798
|
608 |
msgid "Font size"
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: core/classes/class-form-styles.php:583
|
612 |
msgid "Field borders & spacing"
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: core/classes/class-form-styles.php:588
|
616 |
+
#: core/classes/class-form-styles.php:618
|
617 |
+
#: core/classes/class-form-styles.php:778
|
618 |
+
#: core/classes/class-form-styles.php:833
|
619 |
msgid "Border"
|
620 |
msgstr ""
|
621 |
|
622 |
+
#: core/classes/class-form-styles.php:593
|
623 |
msgid "Border location"
|
624 |
msgstr ""
|
625 |
|
626 |
+
#: core/classes/class-form-styles.php:598
|
627 |
+
#: core/classes/class-form-styles.php:783
|
628 |
msgid "Border radius"
|
629 |
msgstr ""
|
630 |
|
631 |
+
#: core/classes/class-form-styles.php:603
|
632 |
msgid "Outer spacing"
|
633 |
msgstr ""
|
634 |
|
635 |
+
#: core/classes/class-form-styles.php:608
|
636 |
msgid "Inner spacing"
|
637 |
msgstr ""
|
638 |
|
639 |
+
#: core/classes/class-form-styles.php:623
|
640 |
msgid "Border on focus"
|
641 |
msgstr ""
|
642 |
|
643 |
+
#: core/classes/class-form-styles.php:628
|
644 |
+
#: core/classes/class-form-styles.php:718
|
645 |
+
#: core/classes/class-form-styles.php:823
|
646 |
msgid "Background"
|
647 |
msgstr ""
|
648 |
|
649 |
+
#: core/classes/class-form-styles.php:633
|
650 |
+
#: core/classes/class-form-styles.php:728
|
651 |
+
#: core/classes/class-form-styles.php:828
|
652 |
msgid "Background on focus"
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: core/classes/class-form-styles.php:638
|
656 |
msgid "Field labels & text"
|
657 |
msgstr ""
|
658 |
|
659 |
+
#: core/classes/class-form-styles.php:643
|
660 |
msgid "Toggle placeholder on field focus"
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: core/classes/class-form-styles.php:648
|
664 |
msgid "Label alignment"
|
665 |
msgstr ""
|
666 |
|
667 |
+
#: core/classes/class-form-styles.php:653
|
668 |
msgid "Label font size"
|
669 |
msgstr ""
|
670 |
|
671 |
+
#: core/classes/class-form-styles.php:658
|
672 |
msgid "Label font weight"
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: core/classes/class-form-styles.php:663
|
676 |
msgid "Hint alignment"
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: core/classes/class-form-styles.php:668
|
680 |
msgid "Hint font size"
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: core/classes/class-form-styles.php:673
|
684 |
msgid "Placeholder & value alignment"
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: core/classes/class-form-styles.php:678
|
688 |
msgid "Value font size"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: core/classes/class-form-styles.php:688
|
692 |
#: core/templates/parts/customize-checkbox.php:4
|
693 |
#: core/templates/parts/customize-checkbox.php:139
|
694 |
#: core/templates/parts/customize-checkbox.php:187
|
695 |
#: core/templates/parts/customize-email.php:4
|
696 |
+
#: core/templates/parts/customize-media.php:5
|
697 |
#: core/templates/parts/customize-multi-line-text.php:4
|
698 |
#: core/templates/parts/customize-number.php:4
|
699 |
+
#: core/templates/parts/customize-placeholder.php:6
|
700 |
#: core/templates/parts/customize-radio.php:4
|
701 |
#: core/templates/parts/customize-radio.php:125
|
702 |
#: core/templates/parts/customize-radio.php:174
|
707 |
msgid "Label"
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: core/classes/class-form-styles.php:693
|
711 |
msgid "Value"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: core/classes/class-form-styles.php:698
|
715 |
#: core/templates/parts/customize-email.php:20
|
716 |
#: core/templates/parts/customize-multi-line-text.php:20
|
717 |
#: core/templates/parts/customize-number.php:20
|
720 |
msgid "Placeholder"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: core/classes/class-form-styles.php:703
|
724 |
#: core/templates/parts/customize-checkbox.php:20
|
725 |
#: core/templates/parts/customize-checkbox.php:145
|
726 |
#: core/templates/parts/customize-email.php:28
|
727 |
#: core/templates/parts/customize-multi-line-text.php:28
|
728 |
#: core/templates/parts/customize-number.php:28
|
729 |
+
#: core/templates/parts/customize-placeholder.php:25
|
730 |
#: core/templates/parts/customize-radio.php:20
|
731 |
#: core/templates/parts/customize-radio.php:131
|
732 |
#: core/templates/parts/customize-select.php:24
|
734 |
msgid "Hint"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: core/classes/class-form-styles.php:708
|
738 |
msgid "Address dropdowns"
|
739 |
msgstr ""
|
740 |
|
741 |
+
#: core/classes/class-form-styles.php:714
|
742 |
msgid "Items"
|
743 |
msgstr ""
|
744 |
|
745 |
+
#: core/classes/class-form-styles.php:723
|
746 |
+
#: core/classes/class-form-styles.php:838
|
747 |
#: core/classes/parts/class-part-single-line-text.php:8
|
748 |
+
#: core/templates/parts/customize-placeholder.php:32
|
749 |
msgid "Text"
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: core/classes/class-form-styles.php:733
|
753 |
msgid "Text focused"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: core/classes/class-form-styles.php:738
|
757 |
msgid "Tables"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: core/classes/class-form-styles.php:743
|
761 |
msgid "Odd row primary"
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: core/classes/class-form-styles.php:748
|
765 |
msgid "Odd row secondary"
|
766 |
msgstr ""
|
767 |
|
768 |
+
#: core/classes/class-form-styles.php:753
|
769 |
msgid "Even row primary"
|
770 |
msgstr ""
|
771 |
|
772 |
+
#: core/classes/class-form-styles.php:758
|
773 |
msgid "Even row secondary"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: core/classes/class-form-styles.php:763
|
777 |
+
msgid "Separators"
|
778 |
+
msgstr ""
|
779 |
+
|
780 |
+
#: core/classes/class-form-styles.php:768
|
781 |
+
msgid "Color"
|
782 |
+
msgstr ""
|
783 |
+
|
784 |
+
#: core/classes/class-form-styles.php:773
|
785 |
msgid "Submit button"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: core/classes/class-form-styles.php:803
|
789 |
msgid "Font weight"
|
790 |
msgstr ""
|
791 |
|
792 |
+
#: core/classes/class-form-styles.php:813
|
793 |
msgid "Make button a field of last input"
|
794 |
msgstr ""
|
795 |
|
796 |
+
#: core/classes/class-form-styles.php:843
|
797 |
msgid "Text on focus"
|
798 |
msgstr ""
|
799 |
|
800 |
+
#: core/classes/class-form-styles.php:855
|
801 |
msgid "Add your own CSS code here to customize the appearance of your form."
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: core/classes/class-form-styles.php:857
|
805 |
msgid "For each rule you add, we'll prepend your form's HTML ID. This makes sure all styles added will only apply to this form. For example %s becomes %s."
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: core/classes/class-form-styles.php:865
|
809 |
msgid "The edit field automatically highlights code syntax. You can disable this in your <a href=\"%s\" class=\"%s\" target=\"_blank\">user profile</a> to work in plain text mode."
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: core/classes/class-form-styles.php:873
|
813 |
+
#: core/classes/class-form-styles.php:883
|
814 |
msgid "Additional CSS"
|
815 |
msgstr ""
|
816 |
|
|
|
817 |
#: core/classes/class-happyforms-core.php:211
|
818 |
+
#: core/classes/class-happyforms-core.php:212
|
819 |
#: inc/classes/class-message-controller.php:572
|
820 |
msgid "Submissions"
|
821 |
msgstr ""
|
822 |
|
|
|
823 |
#: core/classes/class-happyforms-core.php:220
|
824 |
+
#: core/classes/class-happyforms-core.php:221
|
825 |
#: integrations/templates/admin-coupons.php:2
|
826 |
msgid "Coupons"
|
827 |
msgstr ""
|
828 |
|
|
|
829 |
#: core/classes/class-happyforms-core.php:229
|
830 |
+
#: core/classes/class-happyforms-core.php:230
|
831 |
#: integrations/templates/admin-integrations.php:3
|
832 |
msgid "Integrations"
|
833 |
msgstr ""
|
834 |
|
|
|
835 |
#: core/classes/class-happyforms-core.php:238
|
836 |
+
#: core/classes/class-happyforms-core.php:239
|
837 |
#: core/assets/jsx/build/admin/block.js:173
|
838 |
msgid "Settings"
|
839 |
msgstr ""
|
840 |
|
841 |
+
#: core/classes/class-happyforms-core.php:480
|
842 |
msgid "Add Form"
|
843 |
msgstr ""
|
844 |
|
850 |
msgid "Form:"
|
851 |
msgstr ""
|
852 |
|
853 |
+
#: core/classes/class-import-controller.php:37
|
854 |
+
msgid "Import forms from a forms export file."
|
855 |
+
msgstr ""
|
856 |
+
|
857 |
+
#: core/classes/class-import-controller.php:83
|
858 |
+
msgid "Import Forms"
|
859 |
+
msgstr ""
|
860 |
+
|
861 |
+
#: core/classes/class-import-controller.php:92
|
862 |
+
msgid "Choose a forms export (.xml) file to upload, then click Upload file and import."
|
863 |
+
msgstr ""
|
864 |
+
|
865 |
+
#: core/classes/class-import-controller.php:101
|
866 |
+
msgid "Sorry, there has been an error."
|
867 |
+
msgstr ""
|
868 |
+
|
869 |
+
#: core/classes/class-import-controller.php:107
|
870 |
+
msgid "The export file could not be found at <code>%s</code>. It is likely that this was caused by a permissions problem."
|
871 |
+
msgstr ""
|
872 |
+
|
873 |
#: core/classes/class-validation-messages.php:72
|
874 |
msgid "Field is answered incorrectly"
|
875 |
msgstr ""
|
918 |
msgid "Form updated."
|
919 |
msgstr ""
|
920 |
|
921 |
+
#: core/classes/class-wp-customize-form-manager.php:323
|
922 |
+
msgid "The changes you made will be lost if you navigate away from this page."
|
923 |
+
msgstr ""
|
924 |
+
|
925 |
#: core/classes/parts/class-part-checkbox.php:10
|
926 |
msgid "Checkbox"
|
927 |
msgstr ""
|
936 |
msgid "Other"
|
937 |
msgstr ""
|
938 |
|
939 |
+
#: core/classes/parts/class-part-divider.php:8
|
940 |
+
msgid "Separator"
|
941 |
+
msgstr ""
|
942 |
+
|
943 |
+
#: core/classes/parts/class-part-divider.php:9
|
944 |
+
msgid "For adding a horizontal rule to visually separate fields."
|
945 |
+
msgstr ""
|
946 |
+
|
947 |
#: core/classes/parts/class-part-email.php:8
|
948 |
msgid "Email"
|
949 |
msgstr ""
|
952 |
msgid "For formatted email addresses. The '@' symbol is required."
|
953 |
msgstr ""
|
954 |
|
955 |
+
#: core/classes/parts/class-part-layout-drawer-group.php:9
|
956 |
+
#: inc/classes/parts/class-part-layout-drawer-group.php:9
|
957 |
+
msgid "Design"
|
958 |
+
msgstr ""
|
959 |
+
|
960 |
+
#: core/classes/parts/class-part-layout-title.php:8
|
961 |
+
#: core/templates/parts/customize-checkbox.php:180
|
962 |
+
#: core/templates/parts/customize-layout_title.php:16
|
963 |
+
#: core/templates/parts/customize-radio.php:167
|
964 |
+
#: core/templates/parts/customize-select.php:151
|
965 |
+
msgid "Heading"
|
966 |
+
msgstr ""
|
967 |
+
|
968 |
+
#: core/classes/parts/class-part-layout-title.php:9
|
969 |
+
msgid "For adding titles to visually separate fields."
|
970 |
+
msgstr ""
|
971 |
+
|
972 |
+
#: core/classes/parts/class-part-media.php:8
|
973 |
+
#: core/templates/parts/customize-media.php:25
|
974 |
+
msgid "Media"
|
975 |
+
msgstr ""
|
976 |
+
|
977 |
+
#: core/classes/parts/class-part-media.php:9
|
978 |
+
msgid "For adding a single image, video, animated gif or audio clip."
|
979 |
+
msgstr ""
|
980 |
+
|
981 |
#: core/classes/parts/class-part-multi-line-text.php:8
|
982 |
msgid "Long Text"
|
983 |
msgstr ""
|
994 |
msgid "For numeric fields."
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: core/classes/parts/class-part-placeholder.php:8
|
998 |
+
msgid "Paragraph"
|
999 |
+
msgstr ""
|
1000 |
+
|
1001 |
+
#: core/classes/parts/class-part-placeholder.php:9
|
1002 |
+
msgid "For adding helper text, notes and formatted messages."
|
1003 |
+
msgstr ""
|
1004 |
+
|
1005 |
#: core/classes/parts/class-part-radio.php:12
|
1006 |
msgid "Radio"
|
1007 |
msgstr ""
|
1056 |
msgid "I agree to allow this site to store and process the personal information submitted."
|
1057 |
msgstr ""
|
1058 |
|
1059 |
+
#: core/helpers/helper-form-templates.php:79
|
1060 |
msgid "Leave this field blank"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
+
#: core/helpers/helper-form-templates.php:488
|
1064 |
#: core/helpers/helper-misc.php:18
|
1065 |
msgid "(no title)"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: core/helpers/helper-form-templates.php:1015
|
1069 |
msgid "January"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: core/helpers/helper-form-templates.php:1016
|
1073 |
msgid "February"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
+
#: core/helpers/helper-form-templates.php:1017
|
1077 |
msgid "March"
|
1078 |
msgstr ""
|
1079 |
|
1080 |
+
#: core/helpers/helper-form-templates.php:1018
|
1081 |
msgid "April"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: core/helpers/helper-form-templates.php:1019
|
1085 |
msgid "May"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
+
#: core/helpers/helper-form-templates.php:1020
|
1089 |
msgid "June"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
+
#: core/helpers/helper-form-templates.php:1021
|
1093 |
msgid "July"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: core/helpers/helper-form-templates.php:1022
|
1097 |
msgid "August"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
+
#: core/helpers/helper-form-templates.php:1023
|
1101 |
msgid "September"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
+
#: core/helpers/helper-form-templates.php:1024
|
1105 |
msgid "October"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
+
#: core/helpers/helper-form-templates.php:1025
|
1109 |
msgid "November"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
+
#: core/helpers/helper-form-templates.php:1026
|
1113 |
msgid "December"
|
1114 |
msgstr ""
|
1115 |
|
2698 |
msgstr ""
|
2699 |
|
2700 |
#: core/templates/customize-form-item.php:33
|
2701 |
+
#: core/templates/parts/customize-divider.php:24
|
2702 |
+
#: core/templates/parts/customize-layout_title.php:40
|
2703 |
#: inc/templates/customize-form-part-choice-footer.php:2
|
2704 |
#: inc/templates/customize-form-part-footer.php:3
|
2705 |
msgid "Delete"
|
2763 |
msgid "Updated"
|
2764 |
msgstr ""
|
2765 |
|
|
|
|
|
|
|
|
|
2766 |
#: core/templates/customize-header-actions.php:22
|
2767 |
msgid "Close"
|
2768 |
msgstr ""
|
2900 |
msgstr ""
|
2901 |
|
2902 |
#: core/templates/parts/customize-checkbox.php:111
|
2903 |
+
#: core/templates/parts/customize-divider.php:18
|
2904 |
#: core/templates/parts/customize-email.php:57
|
2905 |
+
#: core/templates/parts/customize-layout_title.php:34
|
2906 |
+
#: core/templates/parts/customize-media.php:112
|
2907 |
#: core/templates/parts/customize-multi-line-text.php:70
|
2908 |
#: core/templates/parts/customize-number.php:83
|
2909 |
+
#: core/templates/parts/customize-placeholder.php:45
|
2910 |
#: core/templates/parts/customize-radio.php:95
|
2911 |
#: core/templates/parts/customize-select.php:86
|
2912 |
#: core/templates/parts/customize-single-line-text.php:56
|
2931 |
msgid "Make this choice default"
|
2932 |
msgstr ""
|
2933 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2934 |
#: core/templates/parts/customize-email.php:24
|
2935 |
#: core/templates/parts/customize-multi-line-text.php:24
|
2936 |
#: core/templates/parts/customize-number.php:24
|
2950 |
msgid "Suffix"
|
2951 |
msgstr ""
|
2952 |
|
2953 |
+
#: core/templates/parts/customize-layout_title.php:20
|
2954 |
+
msgid "Heading level"
|
2955 |
+
msgstr ""
|
2956 |
+
|
2957 |
+
#: core/templates/parts/customize-layout_title.php:25
|
2958 |
+
msgid "H"
|
2959 |
+
msgstr ""
|
2960 |
+
|
2961 |
+
#: core/templates/parts/customize-media.php:24
|
2962 |
+
#: core/templates/parts/customize-media.php:94
|
2963 |
+
msgid "Select media"
|
2964 |
+
msgstr ""
|
2965 |
+
|
2966 |
+
#: core/templates/parts/customize-media.php:24
|
2967 |
+
msgid "Select Media"
|
2968 |
+
msgstr ""
|
2969 |
+
|
2970 |
+
#: core/templates/parts/customize-media.php:98
|
2971 |
+
msgid "Replace Media"
|
2972 |
+
msgstr ""
|
2973 |
+
|
2974 |
#: core/templates/parts/customize-multi-line-text.php:40
|
2975 |
msgid "Limit words/characters"
|
2976 |
msgstr ""
|
3021 |
msgid "Max times the same answer can be submitted"
|
3022 |
msgstr ""
|
3023 |
|
3024 |
+
#: inc/classes/class-happyforms.php:83
|
3025 |
msgid "Upgrade"
|
3026 |
msgstr ""
|
3027 |
|
3028 |
+
#: inc/classes/class-happyforms.php:91
|
3029 |
msgid "Redirect to this page address (URL) after submission"
|
3030 |
msgstr ""
|
3031 |
|
3032 |
+
#: inc/classes/class-happyforms.php:92
|
3033 |
msgid "Search or type URL"
|
3034 |
msgstr ""
|
3035 |
|
3036 |
+
#: inc/classes/class-happyforms.php:98
|
3037 |
msgid "Shuffle order of fields"
|
3038 |
msgstr ""
|
3039 |
|
3040 |
+
#: inc/classes/class-happyforms.php:104
|
3041 |
msgid "Use reCAPTCHA"
|
3042 |
msgstr ""
|
3043 |
|
3044 |
+
#: inc/classes/class-happyforms.php:110
|
3045 |
msgid "Let submitters save a draft for set number of days"
|
3046 |
msgstr ""
|
3047 |
|
3048 |
+
#: inc/classes/class-happyforms.php:116
|
3049 |
msgid "Require submitters to review a submission"
|
3050 |
msgstr ""
|
3051 |
|
3052 |
+
#: inc/classes/class-happyforms.php:122
|
3053 |
msgid "Max number of submissions"
|
3054 |
msgstr ""
|
3055 |
|
3056 |
+
#: inc/classes/class-happyforms.php:128
|
3057 |
msgid "Erase submitter's personal data after set number of days"
|
3058 |
msgstr ""
|
3059 |
|
3060 |
+
#: inc/classes/class-happyforms.php:134
|
3061 |
msgid "Show an error message if field contains words in Disallowed Comment Keys"
|
3062 |
msgstr ""
|
3063 |
|
3064 |
+
#: inc/classes/class-happyforms.php:154
|
3065 |
msgid "Send abandonment email"
|
3066 |
msgstr ""
|
3067 |
|
3068 |
+
#: inc/classes/class-happyforms.php:168
|
3069 |
msgid "Checkboxes & Radios"
|
3070 |
msgstr ""
|
3071 |
|
3072 |
+
#: inc/classes/class-happyforms.php:174
|
3073 |
msgid "Rating"
|
3074 |
msgstr ""
|
3075 |
|
3076 |
+
#: inc/classes/class-happyforms.php:180
|
|
|
|
|
|
|
|
|
3077 |
msgid "Multi Step"
|
3078 |
msgstr ""
|
3079 |
|
3080 |
+
#: inc/classes/class-happyforms.php:194
|
3081 |
msgid "Form redirected after submission"
|
3082 |
msgstr ""
|
3083 |
|
3084 |
+
#: inc/classes/class-happyforms.php:199
|
3085 |
msgid "Form has reached its reply limit"
|
3086 |
msgstr ""
|
3087 |
|
3088 |
+
#: inc/classes/class-happyforms.php:204
|
3089 |
msgid "Submitter has returned to a draft"
|
3090 |
msgstr ""
|
3091 |
|
3092 |
+
#: inc/classes/class-happyforms.php:209
|
3093 |
msgid "Submitter is viewing review page"
|
3094 |
msgstr ""
|
3095 |
|
3096 |
+
#: inc/classes/class-happyforms.php:214
|
3097 |
msgid "Payment completed"
|
3098 |
msgstr ""
|
3099 |
|
3100 |
+
#: inc/classes/class-happyforms.php:219
|
3101 |
msgid "Payment failed"
|
3102 |
msgstr ""
|
3103 |
|
3104 |
+
#: inc/classes/class-happyforms.php:224
|
3105 |
msgid "Payment cancelled"
|
3106 |
msgstr ""
|
3107 |
|
3108 |
+
#: inc/classes/class-happyforms.php:229
|
3109 |
msgid "Previous page"
|
3110 |
msgstr ""
|
3111 |
|
3112 |
+
#: inc/classes/class-happyforms.php:234
|
3113 |
msgid "Redirect to page"
|
3114 |
msgstr ""
|
3115 |
|
3116 |
+
#: inc/classes/class-happyforms.php:239
|
3117 |
msgid "Print user submission"
|
3118 |
msgstr ""
|
3119 |
|
3120 |
+
#: inc/classes/class-happyforms.php:244
|
3121 |
msgid "Edit reply"
|
3122 |
msgstr ""
|
3123 |
|
3124 |
+
#: inc/classes/class-happyforms.php:249
|
3125 |
msgid "Clear saved draft reply"
|
3126 |
msgstr ""
|
3127 |
|
3128 |
+
#: inc/classes/class-happyforms.php:254
|
3129 |
msgid "Save draft reply"
|
3130 |
msgstr ""
|
3131 |
|
3132 |
+
#: inc/classes/class-happyforms.php:259
|
3133 |
msgid "Upload files"
|
3134 |
msgstr ""
|
3135 |
|
3136 |
+
#: inc/classes/class-happyforms.php:264
|
3137 |
msgid "Remove uploaded file"
|
3138 |
msgstr ""
|
3139 |
|
3140 |
+
#: inc/classes/class-happyforms.php:269
|
3141 |
msgid "Review reply"
|
3142 |
msgstr ""
|
3143 |
|
3144 |
+
#: inc/classes/class-happyforms.php:274
|
3145 |
msgid "Start drawing signature"
|
3146 |
msgstr ""
|
3147 |
|
3148 |
+
#: inc/classes/class-happyforms.php:279
|
3149 |
msgid "Start over drawing signature"
|
3150 |
msgstr ""
|
3151 |
|
3152 |
+
#: inc/classes/class-happyforms.php:284
|
3153 |
msgid "Clear drawn signature"
|
3154 |
msgstr ""
|
3155 |
|
3156 |
+
#: inc/classes/class-happyforms.php:289
|
3157 |
msgid "Done drawing signature"
|
3158 |
msgstr ""
|
3159 |
|
3160 |
+
#: inc/classes/class-happyforms.php:294
|
3161 |
msgid "Field answer reached its limit"
|
3162 |
msgstr ""
|
3163 |
|
3164 |
+
#: inc/classes/class-happyforms.php:299
|
3165 |
msgid "Coupon code invalid"
|
3166 |
msgstr ""
|
3167 |
|
3168 |
+
#: inc/classes/class-happyforms.php:304
|
3169 |
msgid "Required file isn't uploaded"
|
3170 |
msgstr ""
|
3171 |
|
3172 |
+
#: inc/classes/class-happyforms.php:309
|
3173 |
msgid "Required terms haven't been scrolled"
|
3174 |
msgstr ""
|
3175 |
|
3176 |
+
#: inc/classes/class-happyforms.php:314
|
3177 |
msgid "Field contains disallowed word"
|
3178 |
msgstr ""
|
3179 |
|
3180 |
+
#: inc/classes/class-happyforms.php:319
|
3181 |
msgid "Disallowed IP address or browser"
|
3182 |
msgstr ""
|
3183 |
|
3184 |
+
#: inc/classes/class-happyforms.php:324
|
3185 |
msgid "This file's size is too big"
|
3186 |
msgstr ""
|
3187 |
|
3188 |
+
#: inc/classes/class-happyforms.php:329
|
3189 |
msgid "This file's type not allowed"
|
3190 |
msgstr ""
|
3191 |
|
3192 |
+
#: inc/classes/class-happyforms.php:334
|
3193 |
msgid "A file with this name has already been uploaded"
|
3194 |
msgstr ""
|
3195 |
|
3196 |
+
#: inc/classes/class-happyforms.php:339
|
3197 |
msgid "User uploaded too few files"
|
3198 |
msgstr ""
|
3199 |
|
3200 |
+
#: inc/classes/class-happyforms.php:344
|
3201 |
msgid "Price is too low"
|
3202 |
msgstr ""
|
3203 |
|
3204 |
+
#: inc/classes/class-happyforms.php:349
|
3205 |
msgid "Phone field country code label"
|
3206 |
msgstr ""
|
3207 |
|
3208 |
+
#: inc/classes/class-happyforms.php:354
|
3209 |
msgid "Phone field number label"
|
3210 |
msgstr ""
|
3211 |
|
3212 |
+
#: inc/classes/class-happyforms.php:359
|
3213 |
msgid "Total files uploaded"
|
3214 |
msgstr ""
|
3215 |
|
3216 |
+
#: inc/classes/class-happyforms.php:364
|
3217 |
msgid "Payment method"
|
3218 |
msgstr ""
|
3219 |
|
3220 |
+
#: inc/classes/class-happyforms.php:369
|
3221 |
msgid "Pay what you want"
|
3222 |
msgstr ""
|
3223 |
|
3224 |
+
#: inc/classes/class-happyforms.php:374
|
3225 |
msgid "Submitter will be redirected to PayPal"
|
3226 |
msgstr ""
|
3227 |
|
3228 |
+
#: inc/classes/class-happyforms.php:379
|
3229 |
msgid "PayPal payment"
|
3230 |
msgstr ""
|
3231 |
|
3232 |
+
#: inc/classes/class-happyforms.php:384
|
3233 |
msgid "Stripe is processing payment"
|
3234 |
msgstr ""
|
3235 |
|
3236 |
+
#: inc/classes/class-happyforms.php:389
|
3237 |
msgid "Stripe payment"
|
3238 |
msgstr ""
|
3239 |
|
3240 |
+
#: inc/classes/class-happyforms.php:394
|
3241 |
msgid "Stripe card field"
|
3242 |
msgstr ""
|
3243 |
|
3244 |
+
#: inc/classes/class-happyforms.php:399
|
3245 |
msgid "Card number"
|
3246 |
msgstr ""
|
3247 |
|
3248 |
+
#: inc/classes/class-happyforms.php:404
|
3249 |
msgid "Card expiration"
|
3250 |
msgstr ""
|
3251 |
|
3252 |
+
#: inc/classes/class-happyforms.php:409
|
3253 |
msgid "Card security code"
|
3254 |
msgstr ""
|
3255 |
|
3256 |
+
#: inc/classes/class-happyforms.php:414
|
3257 |
msgid "Coupon field label"
|
3258 |
msgstr ""
|
3259 |
|
3260 |
+
#: inc/classes/class-happyforms.php:419
|
3261 |
msgid "Apply coupon button label"
|
3262 |
msgstr ""
|
3263 |
|
3264 |
+
#: inc/classes/class-happyforms.php:424
|
3265 |
msgid "Current page"
|
3266 |
msgstr ""
|
3267 |
|
3268 |
+
#: inc/classes/class-importer-xml.php:159
|
3269 |
+
msgid "form"
|
3270 |
+
msgstr ""
|
3271 |
+
|
3272 |
+
#: inc/classes/class-importer-xml.php:162
|
3273 |
+
msgid "forms"
|
3274 |
+
msgstr ""
|
3275 |
+
|
3276 |
+
#: inc/classes/class-importer-xml.php:168
|
3277 |
+
msgid "submission"
|
3278 |
+
msgstr ""
|
3279 |
+
|
3280 |
+
#: inc/classes/class-importer-xml.php:171
|
3281 |
+
msgid "submissions"
|
3282 |
+
msgstr ""
|
3283 |
+
|
3284 |
+
#: inc/classes/class-importer-xml.php:177
|
3285 |
+
msgid "poll"
|
3286 |
+
msgstr ""
|
3287 |
+
|
3288 |
+
#: inc/classes/class-importer-xml.php:180
|
3289 |
+
msgid "polls"
|
3290 |
+
msgstr ""
|
3291 |
+
|
3292 |
+
#: inc/classes/class-importer-xml.php:202
|
3293 |
+
msgid "%s %s imported successfully."
|
3294 |
+
msgstr ""
|
3295 |
+
|
3296 |
+
#: inc/classes/class-importer-xml.php:208
|
3297 |
+
msgid "All done!"
|
3298 |
+
msgstr ""
|
3299 |
+
|
3300 |
+
#: inc/classes/class-importer-xml.php:219
|
3301 |
+
msgid "An error occured while parsing import file."
|
3302 |
+
msgstr ""
|
3303 |
+
|
3304 |
+
#: inc/classes/class-importer-xml.php:228
|
3305 |
+
msgid "An error occured while importing %s."
|
3306 |
+
msgstr ""
|
3307 |
+
|
3308 |
#: inc/classes/class-message-admin.php:59
|
3309 |
#: inc/classes/class-message-controller.php:573
|
3310 |
msgid "Submission"
|
3359 |
msgid "For formatted day, month, year and or time fields."
|
3360 |
msgstr ""
|
3361 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3362 |
#: inc/classes/parts/class-part-optin-dummy.php:8
|
3363 |
msgid "Opt-In Choice"
|
3364 |
msgstr ""
|
3391 |
msgid "For collecting a local or international phone number."
|
3392 |
msgstr ""
|
3393 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3394 |
#: inc/classes/parts/class-part-rating-dummy.php:8
|
3395 |
msgid "Rate"
|
3396 |
msgstr ""
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: contact form, contact form plugin, forms, form builder, custom form, intak
|
|
5 |
Requires at least: 5.0
|
6 |
Tested up to: 6.1
|
7 |
Requires PHP: 7.0
|
8 |
-
Stable tag: 1.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -160,6 +160,13 @@ And so you know, we don't outsource support. You can expect plain-talkin' help f
|
|
160 |
|
161 |
== Changelog ==
|
162 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
= November 8, 2022 =
|
164 |
|
165 |
Version 1.20.2 changelog:
|
@@ -1479,6 +1486,9 @@ Version 1.0.0 changelog:
|
|
1479 |
|
1480 |
== Upgrade Notice ==
|
1481 |
|
|
|
|
|
|
|
1482 |
= 1.20.2 =
|
1483 |
* Fixed Messages tab's "Submit form" control realtime preview updates.
|
1484 |
|
5 |
Requires at least: 5.0
|
6 |
Tested up to: 6.1
|
7 |
Requires PHP: 7.0
|
8 |
+
Stable tag: 1.21.0
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
160 |
|
161 |
== Changelog ==
|
162 |
|
163 |
+
= November 30, 2022 =
|
164 |
+
|
165 |
+
Version 1.21.0 changelog:
|
166 |
+
|
167 |
+
* Added: New Heading, Paragraph, Media and Separator fields offer more powerful layout possibilities.
|
168 |
+
* Changed: Form importer has been moved to Tools → Import screen for better consistency with core tooling.
|
169 |
+
|
170 |
= November 8, 2022 =
|
171 |
|
172 |
Version 1.20.2 changelog:
|
1486 |
|
1487 |
== Upgrade Notice ==
|
1488 |
|
1489 |
+
= 1.21.0 =
|
1490 |
+
* New Heading, Paragraph, Media and Separator fields and form importer in Tools → Import screen.
|
1491 |
+
|
1492 |
= 1.20.2 =
|
1493 |
* Fixed Messages tab's "Submit form" control realtime preview updates.
|
1494 |
|