From 646c8191adfe7a60a78a5041ef4f2a928e97ca5e Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Wed, 24 Jun 2020 09:53:02 -0600
Subject: [PATCH 01/29] Use class instead of ID in form display
CC-162
---
includes/class-display.php | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index 80015ff7..f08a7b7d 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -502,7 +502,7 @@ public function build_form_fields( $form_data, $old_values, $req_errors ) {
*/
public function build_honeypot_field() {
return sprintf(
- '',
+ '',
esc_html__( 'Constant Contact Use.', 'constant-contact-forms' )
);
}
@@ -1025,7 +1025,7 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
$class_attr = 'class="' . implode( ' ', $classes ) . '"';
}
- $field = '';
+ $field = '';
$markup .= sprintf(
$field,
$req_text,
@@ -1204,7 +1204,7 @@ public function get_optin_markup( $label, $value, $show ) {
$checked = $show ? '' : 'checked';
$markup = $this->field_top( 'checkbox', 'ctct-opt-in', 'ctct-opt-in', $label, false, false );
- $markup .= '';
+ $markup .= '';
$markup .= $this->field_bottom( 'ctct-opt-in', ' ' . wp_kses_post( $label ), false );
return $markup;
@@ -1251,7 +1251,7 @@ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req =
esc_attr( $street ) . $req_label
);
$input_street1 = sprintf(
- '',
+ '',
$req,
esc_attr( $label_placement_class ),
esc_attr( $f_id ),
@@ -1276,7 +1276,7 @@ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req =
);
$input_street2 = sprintf(
- '',
+ '',
esc_attr( $label_placement_class ),
esc_attr( $f_id ),
esc_attr( $f_id ),
@@ -1302,7 +1302,7 @@ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req =
);
$input_city = sprintf(
- '',
+ '',
$req,
esc_attr( $label_placement_class ),
esc_attr( $f_id ),
@@ -1329,7 +1329,7 @@ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req =
);
$input_state = sprintf(
- '',
+ '',
$req,
esc_attr( $label_placement_class ),
esc_attr( $f_id ),
@@ -1356,7 +1356,7 @@ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req =
);
$input_zip = sprintf(
- '',
+ '',
$req,
esc_attr( $label_placement_class ),
esc_attr( $f_id ),
@@ -1376,10 +1376,10 @@ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req =
$return = '';
return sprintf(
From 9c06f43415d8372b533dee3fe2b40426e923e93f Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Wed, 24 Jun 2020 11:13:32 -0600
Subject: [PATCH 02/29] Update id to class in styles
CC-162
---
assets/css/style.css | 8 ++++----
assets/css/style.min.css | 4 ++--
assets/sass/_inputs.scss | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/assets/css/style.css b/assets/css/style.css
index 4a19e4c4..013ce641 100644
--- a/assets/css/style.css
+++ b/assets/css/style.css
@@ -89,7 +89,7 @@
top: -9999px !important;
}
-.ctct-form-wrapper #ctct_usage {
+.ctct-form-wrapper .ctct_usage {
border: 0 none;
clip: rect(0, 0, 0, 0);
height: 1px;
@@ -100,7 +100,7 @@
width: 1px;
}
-.ctct-form-wrapper .no-recaptcha #ctct-submitted:disabled {
+.ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled {
background-image: url("../images/oval.min.svg");
background-position: center;
background-repeat: no-repeat;
@@ -109,7 +109,7 @@
opacity: 0.3;
}
-.ctct-form-wrapper .has-recaptcha #ctct-submitted:disabled {
+.ctct-form-wrapper .has-recaptcha .ctct-submitted:disabled {
cursor: not-allowed;
}
@@ -179,4 +179,4 @@
}
}
-/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBbUNBO0VBQ0UsbURBQW1EO0VBQ25ELDRCQUE0QjtFQUM1Qiw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTs7RUFFRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0UscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0Usd0JBQXdCO0VBQ3hCLDZCQUE2QjtFQUM3Qix1QkFBdUI7QUFDekI7O0FBRUE7RUFDRSxjQUFjO0VBQ2Qsc0JBQXNCO0VBQ3RCLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixrQkFBa0I7RUFDbEIsVUFBVTtBQUNaOztBQUVBO0VBQ0UsK0NBQStDO0VBQy9DLDJCQUEyQjtFQUMzQiw0QkFBNEI7RUFDNUIsa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsV0FBVztFQUNYLGNBQWM7QUFDaEI7O0FBRUE7O0VBRUUsY0FBYztBQUNoQjs7QUFFQTs7RUFFRSxxQkFBcUI7QUFDdkI7O0FBRUE7RUFDRSxZQUFZO0VBQ1osY0FBYztFQUNkLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxjQUFjO0FBQ2hCOztBQUVBO0VBQ0UsZUFBZTtBQUNqQjs7QUFFQTtFQUNFLFdBQVc7QUFDYjs7QUE1SkE7RUFDRTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0VBSUE7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7QUFyQkYiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgI2N0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBbUNBO0VBQ0UsbURBQW1EO0VBQ25ELDRCQUE0QjtFQUM1Qiw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTs7RUFFRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0UscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0Usd0JBQXdCO0VBQ3hCLDZCQUE2QjtFQUM3Qix1QkFBdUI7QUFDekI7O0FBRUE7RUFDRSxjQUFjO0VBQ2Qsc0JBQXNCO0VBQ3RCLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixrQkFBa0I7RUFDbEIsVUFBVTtBQUNaOztBQUVBO0VBQ0UsK0NBQStDO0VBQy9DLDJCQUEyQjtFQUMzQiw0QkFBNEI7RUFDNUIsa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsV0FBVztFQUNYLGNBQWM7QUFDaEI7O0FBRUE7O0VBRUUsY0FBYztBQUNoQjs7QUFFQTs7RUFFRSxxQkFBcUI7QUFDdkI7O0FBRUE7RUFDRSxZQUFZO0VBQ1osY0FBYztFQUNkLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxjQUFjO0FBQ2hCOztBQUVBO0VBQ0UsZUFBZTtBQUNqQjs7QUFFQTtFQUNFLFdBQVc7QUFDYjs7QUE1SkE7RUFDRTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0VBSUE7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7QUFyQkYiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
diff --git a/assets/css/style.min.css b/assets/css/style.min.css
index 5c2fe75f..2081b516 100644
--- a/assets/css/style.min.css
+++ b/assets/css/style.min.css
@@ -1,2 +1,2 @@
-.ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper #ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha #ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha #ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-twentyfourteen .ctct-form-field input{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}
-/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHlDQUNFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsMENBQ0Usc0JBQXdCLENBQ3hCLDJCQUE2QixDQUM3QixxQkFDRixDQUVBLCtCQUNFLFFBQWMsQ0FDZCxrQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLFdBQVksQ0FDWixlQUFnQixDQUNoQixTQUFVLENBQ1YsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSwwREFDRSw0Q0FBK0MsQ0FDL0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSw0Q0FDRSxVQUNGLENBNUpBLHlCQUNFLG9DQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsaURBQ0UsY0FDRixDQUlBLHFDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0Esa0RBQ0UsY0FDRixDQUlBLHNDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsbURBQ0UsY0FDRixDQXJCRiIsImZpbGUiOiJzdHlsZS5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgI2N0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
+.ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper .ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha .ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-twentyfourteen .ctct-form-field input{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHlDQUNFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsMENBQ0Usc0JBQXdCLENBQ3hCLDJCQUE2QixDQUM3QixxQkFDRixDQUVBLCtCQUNFLFFBQWMsQ0FDZCxrQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLFdBQVksQ0FDWixlQUFnQixDQUNoQixTQUFVLENBQ1YsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSwwREFDRSw0Q0FBK0MsQ0FDL0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSw0Q0FDRSxVQUNGLENBNUpBLHlCQUNFLG9DQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsaURBQ0UsY0FDRixDQUlBLHFDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0Esa0RBQ0UsY0FDRixDQUlBLHNDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsbURBQ0UsY0FDRixDQXJCRiIsImZpbGUiOiJzdHlsZS5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
diff --git a/assets/sass/_inputs.scss b/assets/sass/_inputs.scss
index 3d71a7f8..7dbe7cf0 100644
--- a/assets/sass/_inputs.scss
+++ b/assets/sass/_inputs.scss
@@ -77,7 +77,7 @@
top: -9999px !important;
}
- #ctct_usage {
+ .ctct_usage {
border: 0 none;
clip: rect( 0, 0, 0, 0 );
height: 1px;
@@ -88,7 +88,7 @@
width: 1px;
}
- .no-recaptcha #ctct-submitted:disabled {
+ .no-recaptcha .ctct-submitted:disabled {
background-image: url('../images/oval.min.svg');
background-position: center;
background-repeat: no-repeat;
@@ -97,7 +97,7 @@
opacity: 0.3;
}
- .has-recaptcha #ctct-submitted:disabled {
+ .has-recaptcha .ctct-submitted:disabled {
cursor: not-allowed;
}
}
From 24dc206710bf46a0ff7645c5c856e155a664113d Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Wed, 24 Jun 2020 11:13:56 -0600
Subject: [PATCH 03/29] Update js references
CC-162
---
assets/js/ctct-plugin-frontend.js | 4 ++--
assets/js/ctct-plugin-frontend/util.js | 6 +++---
assets/js/ctct-plugin-frontend/validation.js | 6 +++---
assets/js/ctct-plugin-gutenberg.js | 2 +-
assets/js/ctct-plugin-recaptcha-v2.js | 4 ++--
5 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/assets/js/ctct-plugin-frontend.js b/assets/js/ctct-plugin-frontend.js
index e64fdd97..ec23ef63 100644
--- a/assets/js/ctct-plugin-frontend.js
+++ b/assets/js/ctct-plugin-frontend.js
@@ -105,7 +105,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti
/*! no static exports found */
/***/ (function(module, exports) {
-eval("/**\n * General-purpose utility stuff for CC plugin.\n */\n(function (global, $) {\n /**\n * Temporarily prevent the submit button from being clicked.\n */\n $(document).ready(function () {\n $('#ctct-submitted').on('click', function () {\n setTimeout(function () {\n disableSendButton();\n setTimeout(enableSendButton, 3000);\n }, 100);\n });\n });\n /**\n * Disable form submit button.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n function disableSendButton() {\n return $('#ctct-submitted').attr('disabled', 'disabled');\n }\n /**\n * Re-enable form submit buttons.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n\n function enableSendButton() {\n return $('#ctct-submitted').attr('disabled', null);\n }\n})(window, jQuery);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdXRpbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC91dGlsLmpzPzQ1NWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmFsLXB1cnBvc2UgdXRpbGl0eSBzdHVmZiBmb3IgQ0MgcGx1Z2luLlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsICQgKSB7XG5cblx0LyoqXG5cdCAqIFRlbXBvcmFyaWx5IHByZXZlbnQgdGhlIHN1Ym1pdCBidXR0b24gZnJvbSBiZWluZyBjbGlja2VkLlxuXHQgKi9cblx0JCggZG9jdW1lbnQgKS5yZWFkeSggKCkgPT4ge1xuXG5cdFx0JCggJyNjdGN0LXN1Ym1pdHRlZCcgKS5vbiggJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0c2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0XHRkaXNhYmxlU2VuZEJ1dHRvbigpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCBlbmFibGVTZW5kQnV0dG9uLCAzMDAwICk7XG5cdFx0XHR9LCAxMDAgKTtcblx0XHR9ICk7XG5cdH0gKTtcblxuXHQvKipcblx0ICogRGlzYWJsZSBmb3JtIHN1Ym1pdCBidXR0b24uXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHJldHVybiB7bWl4ZWR9IGpRdWVyeSBpZiBhdHRyaWJ1dGUgaXMgc2V0LCB1bmRlZmluZWQgaWYgbm90LlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlzYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcjY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlLWVuYWJsZSBmb3JtIHN1Ym1pdCBidXR0b25zLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEByZXR1cm4ge21peGVkfSBqUXVlcnkgaWYgYXR0cmlidXRlIGlzIHNldCwgdW5kZWZpbmVkIGlmIG5vdC5cblx0ICovXG5cdGZ1bmN0aW9uIGVuYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcjY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgbnVsbCApO1xuXHR9XG5cbn0gKCB3aW5kb3csIGpRdWVyeSApICk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7QUFHQTtBQUVBOzs7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/util.js\n");
+eval("/**\n * General-purpose utility stuff for CC plugin.\n */\n(function (global, $) {\n /**\n * Temporarily prevent the submit button from being clicked.\n */\n $(document).ready(function () {\n $('.ctct-submitted').on('click', function () {\n setTimeout(function () {\n disableSendButton();\n setTimeout(enableSendButton, 3000);\n }, 100);\n });\n });\n /**\n * Disable form submit button.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n function disableSendButton() {\n return $('.ctct-submitted').attr('disabled', 'disabled');\n }\n /**\n * Re-enable form submit buttons.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @return {mixed} jQuery if attribute is set, undefined if not.\n */\n\n\n function enableSendButton() {\n return $('.ctct-submitted').attr('disabled', null);\n }\n})(window, jQuery);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdXRpbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC91dGlsLmpzPzQ1NWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmFsLXB1cnBvc2UgdXRpbGl0eSBzdHVmZiBmb3IgQ0MgcGx1Z2luLlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsICQgKSB7XG5cblx0LyoqXG5cdCAqIFRlbXBvcmFyaWx5IHByZXZlbnQgdGhlIHN1Ym1pdCBidXR0b24gZnJvbSBiZWluZyBjbGlja2VkLlxuXHQgKi9cblx0JCggZG9jdW1lbnQgKS5yZWFkeSggKCkgPT4ge1xuXG5cdFx0JCggJy5jdGN0LXN1Ym1pdHRlZCcgKS5vbiggJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0c2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0XHRkaXNhYmxlU2VuZEJ1dHRvbigpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCBlbmFibGVTZW5kQnV0dG9uLCAzMDAwICk7XG5cdFx0XHR9LCAxMDAgKTtcblx0XHR9ICk7XG5cdH0gKTtcblxuXHQvKipcblx0ICogRGlzYWJsZSBmb3JtIHN1Ym1pdCBidXR0b24uXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHJldHVybiB7bWl4ZWR9IGpRdWVyeSBpZiBhdHRyaWJ1dGUgaXMgc2V0LCB1bmRlZmluZWQgaWYgbm90LlxuXHQgKi9cblx0ZnVuY3Rpb24gZGlzYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcuY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlLWVuYWJsZSBmb3JtIHN1Ym1pdCBidXR0b25zLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEByZXR1cm4ge21peGVkfSBqUXVlcnkgaWYgYXR0cmlidXRlIGlzIHNldCwgdW5kZWZpbmVkIGlmIG5vdC5cblx0ICovXG5cdGZ1bmN0aW9uIGVuYWJsZVNlbmRCdXR0b24oKSB7XG5cdFx0cmV0dXJuICQoICcuY3RjdC1zdWJtaXR0ZWQnICkuYXR0ciggJ2Rpc2FibGVkJywgbnVsbCApO1xuXHR9XG5cbn0gKCB3aW5kb3csIGpRdWVyeSApICk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7QUFHQTtBQUVBOzs7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/util.js\n");
/***/ }),
@@ -116,7 +116,7 @@ eval("/**\n * General-purpose utility stuff for CC plugin.\n */\n(function (glob
/*! no static exports found */
/***/ (function(module, exports) {
-eval("/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\nwindow.CTCTSupport = {};\n\n(function (window, $, app) {\n var _this = this;\n\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.cache();\n app.bindEvents();\n app.removePlaceholder();\n };\n /**\n * Remove placeholder text values.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.removePlaceholder = function () {\n $('.ctct-form-field input, textarea').focus(function () {\n $(_this).data('placeholder', $(_this).attr('placeholder')).attr('placeholder', '');\n }).blur(function () {\n $(_this).attr('placeholder', $(_this).data('placeholder'));\n });\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n $forms: []\n }; // Cache each form on the page.\n\n $('.ctct-form-wrapper').each(function (i, formWrapper) {\n app.$c.$forms.push($(formWrapper).find('form'));\n }); // For each form, cache its common elements.\n\n $.each(app.$c.$forms, function (i, form) {\n var $form = $(form);\n app.$c.$forms[i].$honeypot = $form.find('#ctct_usage_field');\n app.$c.$forms[i].$submitButton = $form.find('input[type=submit]');\n app.$c.$forms[i].$recaptcha = $form.find('.g-recaptcha');\n });\n app.timeout = null;\n };\n /**\n * Remove the ctct-invalid class from elements that have it.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.setAllInputsValid = function () {\n $(app.$c.$form + ' .ctct-invalid').removeClass('ctct-invalid');\n };\n /**\n * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} error AJAX response error object.\n */\n\n\n app.processError = function (error) {\n // If we have an id property set.\n if ('undefined' !== typeof error.id) {\n $('#' + error.id).addClass('ctct-invalid');\n }\n };\n /**\n * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} e The change or keyup event triggering this callback.\n * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n */\n\n\n app.checkHoneypot = function (e, $honeyPot, $submitButton) {\n // If there is text in the honeypot, disable the submit button\n if (0 < $honeyPot.val().length) {\n $submitButton.attr('disabled', 'disabled');\n } else {\n $submitButton.attr('disabled', false);\n }\n };\n /**\n * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} $form jQuery object for the form being validated.\n * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n */\n\n\n app.validateSubmission = function ($form) {\n if ('on' !== $form.attr('data-doajax')) {\n return false;\n } // Ensure all required fields in this form are valid.\n\n\n $.each($form.find('[required]'), function (i, field) {\n if (false === field.checkValidity()) {\n return false;\n }\n });\n return true;\n };\n /**\n * Prepends form with a message that fades out in 5 seconds.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} $form jQuery object for the form a message is being displayed for.\n * @param {string} message The message content.\n * @param {string} classes Optional. HTML classes to add to the message wrapper.\n */\n\n\n app.showMessage = function ($form, message) {\n var classes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var $p = $('', {\n 'class': 'ctct-message ' + classes,\n 'text': message\n });\n $p.insertBefore($form).fadeIn(200).delay(5000).slideUp(200, function () {\n $p.remove();\n });\n };\n /**\n * Submits the actual form via AJAX.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} $form jQuery object for the form being submitted.\n */\n\n\n app.submitForm = function ($form) {\n $form.find('#ctct-submitted').prop('disabled', true);\n var ajaxData = {\n 'action': 'ctct_process_form',\n 'data': $form.serialize()\n };\n $.post(window.ajaxurl, ajaxData, function (response) {\n $form.find('#ctct-submitted').prop('disabled', false);\n\n if ('undefined' === typeof response.status) {\n return false;\n } // Here we'll want to disable the submit button and add some error classes.\n\n\n if ('success' !== response.status) {\n if ('undefined' !== typeof response.errors) {\n app.setAllInputsValid();\n response.errors.forEach(app.processError);\n } else {\n app.showMessage($form, response.message, 'ctct-error');\n }\n\n return false;\n } // If we're here, the submission was a success; show message and reset form fields.\n\n\n app.showMessage($form, response.message, 'ctct-success');\n $form[0].reset();\n });\n };\n /**\n * Handle the form submission.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} e The submit event.\n * @param {object} $form jQuery object for the current form being handled.\n * @return {boolean} False if unable to validate the form.\n */\n\n\n app.handleSubmission = function (e, $form) {\n if (!app.validateSubmission($form)) {\n return false;\n }\n\n e.preventDefault();\n clearTimeout(app.timeout);\n app.timeout = setTimeout(app.submitForm, 500, $form);\n };\n /**\n * Set up event bindings and callbacks.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n // eslint-disable-next-line no-unused-vars\n $.each(app.$c.$forms, function (i, form) {\n // Attach submission handler to each form's Submit button.\n app.$c.$forms[i].on('click', 'input[type=submit]', function (e) {\n app.handleSubmission(e, app.$c.$forms[i]);\n }); // Ensure each form's honeypot is checked.\n\n app.$c.$forms[i].$honeypot.on('change keyup', function (e) {\n app.checkHoneypot(e, app.$c.$forms[i].$honeypot, app.$c.$forms[i].$submitButton);\n }); // Disable the submit button by default until the captcha is passed (if captcha exists).\n\n if (0 < app.$c.$forms[i].$recaptcha.length) {\n app.$c.$forms[i].$submitButton.attr('disabled', 'disabled');\n }\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTSupport);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdmFsaWRhdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC92YWxpZGF0aW9uLmpzPzMzOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGcm9udC1lbmQgZm9ybSB2YWxpZGF0aW9uLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5cbiB3aW5kb3cuQ1RDVFN1cHBvcnQgPSB7fTtcblxuKCBmdW5jdGlvbiggd2luZG93LCAkLCBhcHAgKSB7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuaW5pdCA9ICgpID0+IHtcblx0XHRhcHAuY2FjaGUoKTtcblx0XHRhcHAuYmluZEV2ZW50cygpO1xuXHRcdGFwcC5yZW1vdmVQbGFjZWhvbGRlcigpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5yZW1vdmVQbGFjZWhvbGRlciA9ICgpID0+IHtcblx0XHQkKCAnLmN0Y3QtZm9ybS1maWVsZCBpbnB1dCwgdGV4dGFyZWEnICkuZm9jdXMoICgpID0+IHtcblx0XHRcdCQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInLCAkKCB0aGlzICkuYXR0ciggJ3BsYWNlaG9sZGVyJyApICkuYXR0ciggJ3BsYWNlaG9sZGVyJywgJycgKTtcblx0XHR9ICkuYmx1ciggKCkgPT4ge1xuXHRcdFx0JCggdGhpcyApLmF0dHIoICdwbGFjZWhvbGRlcicsICQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInICkgKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmNhY2hlID0gKCkgPT4ge1xuXG5cdFx0YXBwLiRjID0ge1xuXHRcdFx0JGZvcm1zOiBbXVxuXHRcdH07XG5cblx0XHQvLyBDYWNoZSBlYWNoIGZvcm0gb24gdGhlIHBhZ2UuXG5cdFx0JCggJy5jdGN0LWZvcm0td3JhcHBlcicgKS5lYWNoKCBmdW5jdGlvbiggaSwgZm9ybVdyYXBwZXIgKSB7XG5cdFx0XHRhcHAuJGMuJGZvcm1zLnB1c2goICQoIGZvcm1XcmFwcGVyICkuZmluZCggJ2Zvcm0nICkgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBGb3IgZWFjaCBmb3JtLCBjYWNoZSBpdHMgY29tbW9uIGVsZW1lbnRzLlxuXHRcdCQuZWFjaCggYXBwLiRjLiRmb3JtcywgZnVuY3Rpb24oIGksIGZvcm0gKSB7XG5cblx0XHRcdHZhciAkZm9ybSA9ICQoIGZvcm0gKTtcblxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRob25leXBvdCAgICAgPSAkZm9ybS5maW5kKCAnI2N0Y3RfdXNhZ2VfZmllbGQnICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHN1Ym1pdEJ1dHRvbiA9ICRmb3JtLmZpbmQoICdpbnB1dFt0eXBlPXN1Ym1pdF0nICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHJlY2FwdGNoYSAgICA9ICRmb3JtLmZpbmQoICcuZy1yZWNhcHRjaGEnICk7XG5cdFx0fSApO1xuXG5cdFx0YXBwLnRpbWVvdXQgPSBudWxsO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdGhlIGN0Y3QtaW52YWxpZCBjbGFzcyBmcm9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBpdC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnNldEFsbElucHV0c1ZhbGlkID0gKCkgPT4ge1xuXHRcdCQoIGFwcC4kYy4kZm9ybSArICcgLmN0Y3QtaW52YWxpZCcgKS5yZW1vdmVDbGFzcyggJ2N0Y3QtaW52YWxpZCcgKTtcblx0fTtcblxuXHQvKipcblx0ICogQWRkcyAuY3RjdC1pbnZhbGlkIEhUTUwgY2xhc3MgdG8gaW5wdXRzIHdob3NlIHZhbHVlcyBhcmUgaW52YWxpZC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgQUpBWCByZXNwb25zZSBlcnJvciBvYmplY3QuXG5cdCAqL1xuXHRhcHAucHJvY2Vzc0Vycm9yID0gKCBlcnJvciApID0+IHtcblxuXHRcdC8vIElmIHdlIGhhdmUgYW4gaWQgcHJvcGVydHkgc2V0LlxuXHRcdGlmICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiggZXJyb3IuaWQgKSApIHtcblx0XHRcdCQoICcjJyArIGVycm9yLmlkICkuYWRkQ2xhc3MoICdjdGN0LWludmFsaWQnICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBDaGVjayB0aGUgdmFsdWUgb2YgdGhlIGhpZGRlbiBob25leXBvdCBmaWVsZDsgZGlzYWJsZSBmb3JtIHN1Ym1pc3Npb24gYnV0dG9uIGlmIGFueXRoaW5nIGluIGl0LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBjaGFuZ2Ugb3Iga2V5dXAgZXZlbnQgdHJpZ2dlcmluZyB0aGlzIGNhbGxiYWNrLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gJGhvbmV5UG90IFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgYWN0dWFsIGlucHV0IGZpZWxkIGJlaW5nIGNoZWNrZWQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkc3VibWl0QnV0dG9uIFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgc3VibWl0IGJ1dHRvbiBpbiB0aGUgc2FtZSBmb3JtIGFzIHRoZSBob25leXBvdCBmaWVsZC5cblx0ICovXG5cdGFwcC5jaGVja0hvbmV5cG90ID0gKCBlLCAkaG9uZXlQb3QsICRzdWJtaXRCdXR0b24gKSA9PiB7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyB0ZXh0IGluIHRoZSBob25leXBvdCwgZGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvblxuXHRcdGlmICggMCA8ICRob25leVBvdC52YWwoKS5sZW5ndGggKSB7XG5cdFx0XHQkc3VibWl0QnV0dG9uLmF0dHIoICdkaXNhYmxlZCcsICdkaXNhYmxlZCcgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHN1Ym1pdEJ1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0IHdlIHNob3VsZCB1c2UgQUpBWCB0byBwcm9jZXNzIHRoZSBzcGVjaWZpZWQgZm9ybSwgYW5kIHRoYXQgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGVtcHR5LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyB2YWxpZGF0ZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIEFKQVggcHJvY2Vzc2luZyBpcyBkaXNhYmxlZCBmb3IgdGhpcyBmb3JtIG9yIGlmIGEgcmVxdWlyZWQgZmllbGQgaXMgZW1wdHkuXG5cdCAqL1xuXHRhcHAudmFsaWRhdGVTdWJtaXNzaW9uID0gKCAkZm9ybSApID0+IHtcblxuXHRcdGlmICggJ29uJyAhPT0gJGZvcm0uYXR0ciggJ2RhdGEtZG9hamF4JyApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSBhbGwgcmVxdWlyZWQgZmllbGRzIGluIHRoaXMgZm9ybSBhcmUgdmFsaWQuXG5cdFx0JC5lYWNoKCAkZm9ybS5maW5kKCAnW3JlcXVpcmVkXScgKSwgZnVuY3Rpb24oIGksIGZpZWxkICkge1xuXG5cdFx0XHRpZiAoIGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fTtcblxuXHQvKipcblx0ICogUHJlcGVuZHMgZm9ybSB3aXRoIGEgbWVzc2FnZSB0aGF0IGZhZGVzIG91dCBpbiA1IHNlY29uZHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9ICRmb3JtIGpRdWVyeSBvYmplY3QgZm9yIHRoZSBmb3JtIGEgbWVzc2FnZSBpcyBiZWluZyBkaXNwbGF5ZWQgZm9yLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSBjb250ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NlcyBPcHRpb25hbC4gSFRNTCBjbGFzc2VzIHRvIGFkZCB0byB0aGUgbWVzc2FnZSB3cmFwcGVyLlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCAkZm9ybSwgbWVzc2FnZSwgY2xhc3NlcyA9ICcnICkgPT4ge1xuXG5cdFx0dmFyICRwID0gJCggJzxwIC8+Jywge1xuXHRcdFx0J2NsYXNzJzogJ2N0Y3QtbWVzc2FnZSAnICsgY2xhc3Nlcyxcblx0XHRcdCd0ZXh0JzogbWVzc2FnZVxuXHRcdH0gKTtcblxuXHRcdCRwLmluc2VydEJlZm9yZSggJGZvcm0gKS5mYWRlSW4oIDIwMCApLmRlbGF5KCA1MDAwICkuc2xpZGVVcCggMjAwLCAoKSA9PiB7XG5cdFx0XHQkcC5yZW1vdmUoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFN1Ym1pdHMgdGhlIGFjdHVhbCBmb3JtIHZpYSBBSkFYLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuc3VibWl0Rm9ybSA9ICggJGZvcm0gKSA9PiB7XG5cblx0XHQkZm9ybS5maW5kKCAnI2N0Y3Qtc3VibWl0dGVkJyApLnByb3AoICdkaXNhYmxlZCcsIHRydWUgKTtcblxuXHRcdHZhciBhamF4RGF0YSA9IHtcblx0XHRcdCdhY3Rpb24nOiAnY3RjdF9wcm9jZXNzX2Zvcm0nLFxuXHRcdFx0J2RhdGEnOiAkZm9ybS5zZXJpYWxpemUoKVxuXHRcdH07XG5cblx0XHQkLnBvc3QoIHdpbmRvdy5hamF4dXJsLCBhamF4RGF0YSwgKCByZXNwb25zZSApID0+IHtcblxuXHRcdFx0JGZvcm0uZmluZCggJyNjdGN0LXN1Ym1pdHRlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHRpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YoIHJlc3BvbnNlLnN0YXR1cyApICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhlcmUgd2UnbGwgd2FudCB0byBkaXNhYmxlIHRoZSBzdWJtaXQgYnV0dG9uIGFuZCBhZGQgc29tZSBlcnJvciBjbGFzc2VzLlxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHJlc3BvbnNlLmVycm9ycyApICkge1xuXHRcdFx0XHRcdGFwcC5zZXRBbGxJbnB1dHNWYWxpZCgpO1xuXHRcdFx0XHRcdHJlc3BvbnNlLmVycm9ycy5mb3JFYWNoKCBhcHAucHJvY2Vzc0Vycm9yICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YXBwLnNob3dNZXNzYWdlKCAkZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlJ3JlIGhlcmUsIHRoZSBzdWJtaXNzaW9uIHdhcyBhIHN1Y2Nlc3M7IHNob3cgbWVzc2FnZSBhbmQgcmVzZXQgZm9ybSBmaWVsZHMuXG5cdFx0XHRhcHAuc2hvd01lc3NhZ2UoICRmb3JtLCByZXNwb25zZS5tZXNzYWdlLCAnY3RjdC1zdWNjZXNzJyApO1xuXHRcdFx0JGZvcm1bMF0ucmVzZXQoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEhhbmRsZSB0aGUgZm9ybSBzdWJtaXNzaW9uLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBzdWJtaXQgZXZlbnQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgY3VycmVudCBmb3JtIGJlaW5nIGhhbmRsZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIHVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgZm9ybS5cblx0ICovXG5cdGFwcC5oYW5kbGVTdWJtaXNzaW9uID0gKCBlLCAkZm9ybSApID0+IHtcblxuXHRcdGlmICggISBhcHAudmFsaWRhdGVTdWJtaXNzaW9uKCAkZm9ybSApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblxuXHRcdGNsZWFyVGltZW91dCggYXBwLnRpbWVvdXQgKTtcblxuXHRcdGFwcC50aW1lb3V0ID0gc2V0VGltZW91dCggYXBwLnN1Ym1pdEZvcm0sIDUwMCwgJGZvcm0gKTtcblx0fTtcblxuXHQvKipcblx0ICogU2V0IHVwIGV2ZW50IGJpbmRpbmdzIGFuZCBjYWxsYmFja3MuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5iaW5kRXZlbnRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0JC5lYWNoKCBhcHAuJGMuJGZvcm1zLCBmdW5jdGlvbiggaSwgZm9ybSApIHtcblxuXHRcdFx0Ly8gQXR0YWNoIHN1Ym1pc3Npb24gaGFuZGxlciB0byBlYWNoIGZvcm0ncyBTdWJtaXQgYnV0dG9uLlxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLm9uKCAnY2xpY2snLCAnaW5wdXRbdHlwZT1zdWJtaXRdJywgKCBlICkgPT4ge1xuXHRcdFx0XHRhcHAuaGFuZGxlU3VibWlzc2lvbiggZSwgYXBwLiRjLiRmb3Jtc1sgaSBdICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdC8vIEVuc3VyZSBlYWNoIGZvcm0ncyBob25leXBvdCBpcyBjaGVja2VkLlxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRob25leXBvdC5vbiggJ2NoYW5nZSBrZXl1cCcsICggZSApID0+IHtcblxuXHRcdFx0XHRhcHAuY2hlY2tIb25leXBvdChcblx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS4kaG9uZXlwb3QsXG5cdFx0XHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRzdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0gKTtcblxuXHRcdFx0Ly8gRGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvbiBieSBkZWZhdWx0IHVudGlsIHRoZSBjYXB0Y2hhIGlzIHBhc3NlZCAoaWYgY2FwdGNoYSBleGlzdHMpLlxuXHRcdFx0aWYgKCAwIDwgYXBwLiRjLiRmb3Jtc1sgaSBdLiRyZWNhcHRjaGEubGVuZ3RoICkge1xuXHRcdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHN1Ym1pdEJ1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnICk7XG5cdFx0XHR9XG5cblx0XHR9ICk7XG5cdH07XG5cblx0JCggYXBwLmluaXQgKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVFN1cHBvcnQgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQU1BO0FBRUE7QUFDQTtBQURBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQVFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7O0FBU0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQVFBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n");
+eval("/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\nwindow.CTCTSupport = {};\n\n(function (window, $, app) {\n var _this = this;\n\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.cache();\n app.bindEvents();\n app.removePlaceholder();\n };\n /**\n * Remove placeholder text values.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.removePlaceholder = function () {\n $('.ctct-form-field input, textarea').focus(function () {\n $(_this).data('placeholder', $(_this).attr('placeholder')).attr('placeholder', '');\n }).blur(function () {\n $(_this).attr('placeholder', $(_this).data('placeholder'));\n });\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.cache = function () {\n app.$c = {\n $forms: []\n }; // Cache each form on the page.\n\n $('.ctct-form-wrapper').each(function (i, formWrapper) {\n app.$c.$forms.push($(formWrapper).find('form'));\n }); // For each form, cache its common elements.\n\n $.each(app.$c.$forms, function (i, form) {\n var $form = $(form);\n app.$c.$forms[i].$honeypot = $form.find('.ctct_usage_field');\n app.$c.$forms[i].$submitButton = $form.find('input[type=submit]');\n app.$c.$forms[i].$recaptcha = $form.find('.g-recaptcha');\n });\n app.timeout = null;\n };\n /**\n * Remove the ctct-invalid class from elements that have it.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.setAllInputsValid = function () {\n $(app.$c.$form + ' .ctct-invalid').removeClass('ctct-invalid');\n };\n /**\n * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} error AJAX response error object.\n */\n\n\n app.processError = function (error) {\n // If we have an id property set.\n if ('undefined' !== typeof error.id) {\n $('#' + error.id).addClass('ctct-invalid');\n }\n };\n /**\n * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} e The change or keyup event triggering this callback.\n * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n */\n\n\n app.checkHoneypot = function (e, $honeyPot, $submitButton) {\n // If there is text in the honeypot, disable the submit button\n if (0 < $honeyPot.val().length) {\n $submitButton.attr('disabled', 'disabled');\n } else {\n $submitButton.attr('disabled', false);\n }\n };\n /**\n * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} $form jQuery object for the form being validated.\n * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n */\n\n\n app.validateSubmission = function ($form) {\n if ('on' !== $form.attr('data-doajax')) {\n return false;\n } // Ensure all required fields in this form are valid.\n\n\n $.each($form.find('[required]'), function (i, field) {\n if (false === field.checkValidity()) {\n return false;\n }\n });\n return true;\n };\n /**\n * Prepends form with a message that fades out in 5 seconds.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} $form jQuery object for the form a message is being displayed for.\n * @param {string} message The message content.\n * @param {string} classes Optional. HTML classes to add to the message wrapper.\n */\n\n\n app.showMessage = function ($form, message) {\n var classes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var $p = $('', {\n 'class': 'ctct-message ' + classes,\n 'text': message\n });\n $p.insertBefore($form).fadeIn(200).delay(5000).slideUp(200, function () {\n $p.remove();\n });\n };\n /**\n * Submits the actual form via AJAX.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} $form jQuery object for the form being submitted.\n */\n\n\n app.submitForm = function ($form) {\n $form.find('.ctct-submitted').prop('disabled', true);\n var ajaxData = {\n 'action': 'ctct_process_form',\n 'data': $form.serialize()\n };\n $.post(window.ajaxurl, ajaxData, function (response) {\n $form.find('.ctct-submitted').prop('disabled', false);\n\n if ('undefined' === typeof response.status) {\n return false;\n } // Here we'll want to disable the submit button and add some error classes.\n\n\n if ('success' !== response.status) {\n if ('undefined' !== typeof response.errors) {\n app.setAllInputsValid();\n response.errors.forEach(app.processError);\n } else {\n app.showMessage($form, response.message, 'ctct-error');\n }\n\n return false;\n } // If we're here, the submission was a success; show message and reset form fields.\n\n\n app.showMessage($form, response.message, 'ctct-success');\n $form[0].reset();\n });\n };\n /**\n * Handle the form submission.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} e The submit event.\n * @param {object} $form jQuery object for the current form being handled.\n * @return {boolean} False if unable to validate the form.\n */\n\n\n app.handleSubmission = function (e, $form) {\n if (!app.validateSubmission($form)) {\n return false;\n }\n\n e.preventDefault();\n clearTimeout(app.timeout);\n app.timeout = setTimeout(app.submitForm, 500, $form);\n };\n /**\n * Set up event bindings and callbacks.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n\n\n app.bindEvents = function () {\n // eslint-disable-next-line no-unused-vars\n $.each(app.$c.$forms, function (i, form) {\n // Attach submission handler to each form's Submit button.\n app.$c.$forms[i].on('click', 'input[type=submit]', function (e) {\n app.handleSubmission(e, app.$c.$forms[i]);\n }); // Ensure each form's honeypot is checked.\n\n app.$c.$forms[i].$honeypot.on('change keyup', function (e) {\n app.checkHoneypot(e, app.$c.$forms[i].$honeypot, app.$c.$forms[i].$submitButton);\n }); // Disable the submit button by default until the captcha is passed (if captcha exists).\n\n if (0 < app.$c.$forms[i].$recaptcha.length) {\n app.$c.$forms[i].$submitButton.attr('disabled', 'disabled');\n }\n });\n };\n\n $(app.init);\n})(window, jQuery, window.CTCTSupport);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdmFsaWRhdGlvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC92YWxpZGF0aW9uLmpzPzMzOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGcm9udC1lbmQgZm9ybSB2YWxpZGF0aW9uLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5cbiB3aW5kb3cuQ1RDVFN1cHBvcnQgPSB7fTtcblxuKCBmdW5jdGlvbiggd2luZG93LCAkLCBhcHAgKSB7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuaW5pdCA9ICgpID0+IHtcblx0XHRhcHAuY2FjaGUoKTtcblx0XHRhcHAuYmluZEV2ZW50cygpO1xuXHRcdGFwcC5yZW1vdmVQbGFjZWhvbGRlcigpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5yZW1vdmVQbGFjZWhvbGRlciA9ICgpID0+IHtcblx0XHQkKCAnLmN0Y3QtZm9ybS1maWVsZCBpbnB1dCwgdGV4dGFyZWEnICkuZm9jdXMoICgpID0+IHtcblx0XHRcdCQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInLCAkKCB0aGlzICkuYXR0ciggJ3BsYWNlaG9sZGVyJyApICkuYXR0ciggJ3BsYWNlaG9sZGVyJywgJycgKTtcblx0XHR9ICkuYmx1ciggKCkgPT4ge1xuXHRcdFx0JCggdGhpcyApLmF0dHIoICdwbGFjZWhvbGRlcicsICQoIHRoaXMgKS5kYXRhKCAncGxhY2Vob2xkZXInICkgKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmNhY2hlID0gKCkgPT4ge1xuXG5cdFx0YXBwLiRjID0ge1xuXHRcdFx0JGZvcm1zOiBbXVxuXHRcdH07XG5cblx0XHQvLyBDYWNoZSBlYWNoIGZvcm0gb24gdGhlIHBhZ2UuXG5cdFx0JCggJy5jdGN0LWZvcm0td3JhcHBlcicgKS5lYWNoKCBmdW5jdGlvbiggaSwgZm9ybVdyYXBwZXIgKSB7XG5cdFx0XHRhcHAuJGMuJGZvcm1zLnB1c2goICQoIGZvcm1XcmFwcGVyICkuZmluZCggJ2Zvcm0nICkgKTtcblx0XHR9ICk7XG5cblx0XHQvLyBGb3IgZWFjaCBmb3JtLCBjYWNoZSBpdHMgY29tbW9uIGVsZW1lbnRzLlxuXHRcdCQuZWFjaCggYXBwLiRjLiRmb3JtcywgZnVuY3Rpb24oIGksIGZvcm0gKSB7XG5cblx0XHRcdHZhciAkZm9ybSA9ICQoIGZvcm0gKTtcblxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRob25leXBvdCAgICAgPSAkZm9ybS5maW5kKCAnLmN0Y3RfdXNhZ2VfZmllbGQnICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHN1Ym1pdEJ1dHRvbiA9ICRmb3JtLmZpbmQoICdpbnB1dFt0eXBlPXN1Ym1pdF0nICk7XG5cdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHJlY2FwdGNoYSAgICA9ICRmb3JtLmZpbmQoICcuZy1yZWNhcHRjaGEnICk7XG5cdFx0fSApO1xuXG5cdFx0YXBwLnRpbWVvdXQgPSBudWxsO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdGhlIGN0Y3QtaW52YWxpZCBjbGFzcyBmcm9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBpdC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnNldEFsbElucHV0c1ZhbGlkID0gKCkgPT4ge1xuXHRcdCQoIGFwcC4kYy4kZm9ybSArICcgLmN0Y3QtaW52YWxpZCcgKS5yZW1vdmVDbGFzcyggJ2N0Y3QtaW52YWxpZCcgKTtcblx0fTtcblxuXHQvKipcblx0ICogQWRkcyAuY3RjdC1pbnZhbGlkIEhUTUwgY2xhc3MgdG8gaW5wdXRzIHdob3NlIHZhbHVlcyBhcmUgaW52YWxpZC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZXJyb3IgQUpBWCByZXNwb25zZSBlcnJvciBvYmplY3QuXG5cdCAqL1xuXHRhcHAucHJvY2Vzc0Vycm9yID0gKCBlcnJvciApID0+IHtcblxuXHRcdC8vIElmIHdlIGhhdmUgYW4gaWQgcHJvcGVydHkgc2V0LlxuXHRcdGlmICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiggZXJyb3IuaWQgKSApIHtcblx0XHRcdCQoICcjJyArIGVycm9yLmlkICkuYWRkQ2xhc3MoICdjdGN0LWludmFsaWQnICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBDaGVjayB0aGUgdmFsdWUgb2YgdGhlIGhpZGRlbiBob25leXBvdCBmaWVsZDsgZGlzYWJsZSBmb3JtIHN1Ym1pc3Npb24gYnV0dG9uIGlmIGFueXRoaW5nIGluIGl0LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBjaGFuZ2Ugb3Iga2V5dXAgZXZlbnQgdHJpZ2dlcmluZyB0aGlzIGNhbGxiYWNrLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gJGhvbmV5UG90IFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgYWN0dWFsIGlucHV0IGZpZWxkIGJlaW5nIGNoZWNrZWQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkc3VibWl0QnV0dG9uIFRoZSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgc3VibWl0IGJ1dHRvbiBpbiB0aGUgc2FtZSBmb3JtIGFzIHRoZSBob25leXBvdCBmaWVsZC5cblx0ICovXG5cdGFwcC5jaGVja0hvbmV5cG90ID0gKCBlLCAkaG9uZXlQb3QsICRzdWJtaXRCdXR0b24gKSA9PiB7XG5cblx0XHQvLyBJZiB0aGVyZSBpcyB0ZXh0IGluIHRoZSBob25leXBvdCwgZGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvblxuXHRcdGlmICggMCA8ICRob25leVBvdC52YWwoKS5sZW5ndGggKSB7XG5cdFx0XHQkc3VibWl0QnV0dG9uLmF0dHIoICdkaXNhYmxlZCcsICdkaXNhYmxlZCcgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHN1Ym1pdEJ1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0IHdlIHNob3VsZCB1c2UgQUpBWCB0byBwcm9jZXNzIHRoZSBzcGVjaWZpZWQgZm9ybSwgYW5kIHRoYXQgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGVtcHR5LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyB2YWxpZGF0ZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIEFKQVggcHJvY2Vzc2luZyBpcyBkaXNhYmxlZCBmb3IgdGhpcyBmb3JtIG9yIGlmIGEgcmVxdWlyZWQgZmllbGQgaXMgZW1wdHkuXG5cdCAqL1xuXHRhcHAudmFsaWRhdGVTdWJtaXNzaW9uID0gKCAkZm9ybSApID0+IHtcblxuXHRcdGlmICggJ29uJyAhPT0gJGZvcm0uYXR0ciggJ2RhdGEtZG9hamF4JyApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSBhbGwgcmVxdWlyZWQgZmllbGRzIGluIHRoaXMgZm9ybSBhcmUgdmFsaWQuXG5cdFx0JC5lYWNoKCAkZm9ybS5maW5kKCAnW3JlcXVpcmVkXScgKSwgZnVuY3Rpb24oIGksIGZpZWxkICkge1xuXG5cdFx0XHRpZiAoIGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fTtcblxuXHQvKipcblx0ICogUHJlcGVuZHMgZm9ybSB3aXRoIGEgbWVzc2FnZSB0aGF0IGZhZGVzIG91dCBpbiA1IHNlY29uZHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9ICRmb3JtIGpRdWVyeSBvYmplY3QgZm9yIHRoZSBmb3JtIGEgbWVzc2FnZSBpcyBiZWluZyBkaXNwbGF5ZWQgZm9yLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSBjb250ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NlcyBPcHRpb25hbC4gSFRNTCBjbGFzc2VzIHRvIGFkZCB0byB0aGUgbWVzc2FnZSB3cmFwcGVyLlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCAkZm9ybSwgbWVzc2FnZSwgY2xhc3NlcyA9ICcnICkgPT4ge1xuXG5cdFx0dmFyICRwID0gJCggJzxwIC8+Jywge1xuXHRcdFx0J2NsYXNzJzogJ2N0Y3QtbWVzc2FnZSAnICsgY2xhc3Nlcyxcblx0XHRcdCd0ZXh0JzogbWVzc2FnZVxuXHRcdH0gKTtcblxuXHRcdCRwLmluc2VydEJlZm9yZSggJGZvcm0gKS5mYWRlSW4oIDIwMCApLmRlbGF5KCA1MDAwICkuc2xpZGVVcCggMjAwLCAoKSA9PiB7XG5cdFx0XHQkcC5yZW1vdmUoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFN1Ym1pdHMgdGhlIGFjdHVhbCBmb3JtIHZpYSBBSkFYLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuc3VibWl0Rm9ybSA9ICggJGZvcm0gKSA9PiB7XG5cblx0XHQkZm9ybS5maW5kKCAnLmN0Y3Qtc3VibWl0dGVkJyApLnByb3AoICdkaXNhYmxlZCcsIHRydWUgKTtcblxuXHRcdHZhciBhamF4RGF0YSA9IHtcblx0XHRcdCdhY3Rpb24nOiAnY3RjdF9wcm9jZXNzX2Zvcm0nLFxuXHRcdFx0J2RhdGEnOiAkZm9ybS5zZXJpYWxpemUoKVxuXHRcdH07XG5cblx0XHQkLnBvc3QoIHdpbmRvdy5hamF4dXJsLCBhamF4RGF0YSwgKCByZXNwb25zZSApID0+IHtcblxuXHRcdFx0JGZvcm0uZmluZCggJy5jdGN0LXN1Ym1pdHRlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHRpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YoIHJlc3BvbnNlLnN0YXR1cyApICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhlcmUgd2UnbGwgd2FudCB0byBkaXNhYmxlIHRoZSBzdWJtaXQgYnV0dG9uIGFuZCBhZGQgc29tZSBlcnJvciBjbGFzc2VzLlxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHJlc3BvbnNlLmVycm9ycyApICkge1xuXHRcdFx0XHRcdGFwcC5zZXRBbGxJbnB1dHNWYWxpZCgpO1xuXHRcdFx0XHRcdHJlc3BvbnNlLmVycm9ycy5mb3JFYWNoKCBhcHAucHJvY2Vzc0Vycm9yICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YXBwLnNob3dNZXNzYWdlKCAkZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlJ3JlIGhlcmUsIHRoZSBzdWJtaXNzaW9uIHdhcyBhIHN1Y2Nlc3M7IHNob3cgbWVzc2FnZSBhbmQgcmVzZXQgZm9ybSBmaWVsZHMuXG5cdFx0XHRhcHAuc2hvd01lc3NhZ2UoICRmb3JtLCByZXNwb25zZS5tZXNzYWdlLCAnY3RjdC1zdWNjZXNzJyApO1xuXHRcdFx0JGZvcm1bMF0ucmVzZXQoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIEhhbmRsZSB0aGUgZm9ybSBzdWJtaXNzaW9uLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlIFRoZSBzdWJtaXQgZXZlbnQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgY3VycmVudCBmb3JtIGJlaW5nIGhhbmRsZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIHVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgZm9ybS5cblx0ICovXG5cdGFwcC5oYW5kbGVTdWJtaXNzaW9uID0gKCBlLCAkZm9ybSApID0+IHtcblxuXHRcdGlmICggISBhcHAudmFsaWRhdGVTdWJtaXNzaW9uKCAkZm9ybSApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblxuXHRcdGNsZWFyVGltZW91dCggYXBwLnRpbWVvdXQgKTtcblxuXHRcdGFwcC50aW1lb3V0ID0gc2V0VGltZW91dCggYXBwLnN1Ym1pdEZvcm0sIDUwMCwgJGZvcm0gKTtcblx0fTtcblxuXHQvKipcblx0ICogU2V0IHVwIGV2ZW50IGJpbmRpbmdzIGFuZCBjYWxsYmFja3MuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5iaW5kRXZlbnRzID0gKCkgPT4ge1xuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0JC5lYWNoKCBhcHAuJGMuJGZvcm1zLCBmdW5jdGlvbiggaSwgZm9ybSApIHtcblxuXHRcdFx0Ly8gQXR0YWNoIHN1Ym1pc3Npb24gaGFuZGxlciB0byBlYWNoIGZvcm0ncyBTdWJtaXQgYnV0dG9uLlxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLm9uKCAnY2xpY2snLCAnaW5wdXRbdHlwZT1zdWJtaXRdJywgKCBlICkgPT4ge1xuXHRcdFx0XHRhcHAuaGFuZGxlU3VibWlzc2lvbiggZSwgYXBwLiRjLiRmb3Jtc1sgaSBdICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdC8vIEVuc3VyZSBlYWNoIGZvcm0ncyBob25leXBvdCBpcyBjaGVja2VkLlxuXHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRob25leXBvdC5vbiggJ2NoYW5nZSBrZXl1cCcsICggZSApID0+IHtcblxuXHRcdFx0XHRhcHAuY2hlY2tIb25leXBvdChcblx0XHRcdFx0XHRlLFxuXHRcdFx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS4kaG9uZXlwb3QsXG5cdFx0XHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRzdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0gKTtcblxuXHRcdFx0Ly8gRGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvbiBieSBkZWZhdWx0IHVudGlsIHRoZSBjYXB0Y2hhIGlzIHBhc3NlZCAoaWYgY2FwdGNoYSBleGlzdHMpLlxuXHRcdFx0aWYgKCAwIDwgYXBwLiRjLiRmb3Jtc1sgaSBdLiRyZWNhcHRjaGEubGVuZ3RoICkge1xuXHRcdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJHN1Ym1pdEJ1dHRvbi5hdHRyKCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnICk7XG5cdFx0XHR9XG5cblx0XHR9ICk7XG5cdH07XG5cblx0JCggYXBwLmluaXQgKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVFN1cHBvcnQgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQU1BO0FBRUE7QUFDQTtBQURBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQVFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7O0FBU0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQVFBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n");
/***/ }),
diff --git a/assets/js/ctct-plugin-frontend/util.js b/assets/js/ctct-plugin-frontend/util.js
index aa190573..755c9e08 100644
--- a/assets/js/ctct-plugin-frontend/util.js
+++ b/assets/js/ctct-plugin-frontend/util.js
@@ -8,7 +8,7 @@
*/
$( document ).ready( () => {
- $( '#ctct-submitted' ).on( 'click', () => {
+ $( '.ctct-submitted' ).on( 'click', () => {
setTimeout( () => {
disableSendButton();
setTimeout( enableSendButton, 3000 );
@@ -25,7 +25,7 @@
* @return {mixed} jQuery if attribute is set, undefined if not.
*/
function disableSendButton() {
- return $( '#ctct-submitted' ).attr( 'disabled', 'disabled' );
+ return $( '.ctct-submitted' ).attr( 'disabled', 'disabled' );
}
/**
@@ -37,7 +37,7 @@
* @return {mixed} jQuery if attribute is set, undefined if not.
*/
function enableSendButton() {
- return $( '#ctct-submitted' ).attr( 'disabled', null );
+ return $( '.ctct-submitted' ).attr( 'disabled', null );
}
} ( window, jQuery ) );
diff --git a/assets/js/ctct-plugin-frontend/validation.js b/assets/js/ctct-plugin-frontend/validation.js
index c8a248d2..c298e9aa 100644
--- a/assets/js/ctct-plugin-frontend/validation.js
+++ b/assets/js/ctct-plugin-frontend/validation.js
@@ -56,7 +56,7 @@
var $form = $( form );
- app.$c.$forms[ i ].$honeypot = $form.find( '#ctct_usage_field' );
+ app.$c.$forms[ i ].$honeypot = $form.find( '.ctct_usage_field' );
app.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );
app.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );
} );
@@ -168,7 +168,7 @@
*/
app.submitForm = ( $form ) => {
- $form.find( '#ctct-submitted' ).prop( 'disabled', true );
+ $form.find( '.ctct-submitted' ).prop( 'disabled', true );
var ajaxData = {
'action': 'ctct_process_form',
@@ -177,7 +177,7 @@
$.post( window.ajaxurl, ajaxData, ( response ) => {
- $form.find( '#ctct-submitted' ).prop( 'disabled', false );
+ $form.find( '.ctct-submitted' ).prop( 'disabled', false );
if ( 'undefined' === typeof( response.status ) ) {
return false;
diff --git a/assets/js/ctct-plugin-gutenberg.js b/assets/js/ctct-plugin-gutenberg.js
index 083d0a1d..1c5769c2 100644
--- a/assets/js/ctct-plugin-gutenberg.js
+++ b/assets/js/ctct-plugin-gutenberg.js
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _com
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar _wp = wp,\n SelectControl = _wp.components.SelectControl,\n apiFetch = _wp.apiFetch,\n Component = _wp.element.Component,\n __ = _wp.i18n.__;\n\nvar SingleFormSelect =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SingleFormSelect, _Component);\n\n /**\n * Constructor\n * @param props\n */\n function SingleFormSelect(props) {\n var _this;\n\n _classCallCheck(this, SingleFormSelect);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SingleFormSelect).call(this, props)); // Set the initial state of the component.\n\n _this.state = {\n forms: [{\n label: __('Select a form', 'constant-contact'),\n value: 0\n }]\n };\n return _this;\n }\n /**\n * After the component mounts, retrieve the forms and add them to the local component state.\n */\n\n\n _createClass(SingleFormSelect, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee() {\n var results, forms;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return apiFetch({\n path: '/?rest_route=/wp/v2/ctct_forms'\n });\n\n case 3:\n results = _context.sent;\n forms = results.map(function (result) {\n return {\n label: result.title.rendered,\n value: result.id\n };\n });\n this.setState({\n forms: [].concat(_toConsumableArray(this.state.forms), _toConsumableArray(forms))\n });\n _context.next = 11;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](0);\n console.error('ERROR: ', _context.t0.message);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 8]]);\n }));\n\n function componentDidMount() {\n return _componentDidMount.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n /**\n * Render the Gutenberg block in the admin area.\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n // Destructure the selectedFrom from props.\n var selectedForm = this.props.attributes.selectedForm;\n return (\n /*#__PURE__*/\n React.createElement(\"div\", {\n className: \"ctct-block-container\"\n },\n /*#__PURE__*/\n React.createElement(\"h4\", {\n className: \"ctct-block-title\"\n }, __('Constant Contact Forms', 'constant-contact')),\n /*#__PURE__*/\n React.createElement(\"small\", null, __('Choose the form to display with the dropdown below.', 'constant-contact')),\n /*#__PURE__*/\n React.createElement(SelectControl, {\n value: selectedForm,\n options: this.state.forms,\n onChange: function onChange(value) {\n return _this2.props.setAttributes({\n selectedForm: value\n });\n }\n }))\n );\n }\n }]);\n\n return SingleFormSelect;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SingleFormSelect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2NvbXBvbmVudHMvc2luZ2xlLWZvcm0tc2VsZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWd1dGVuYmVyZy9jb21wb25lbnRzL3NpbmdsZS1mb3JtLXNlbGVjdC5qcz9hNzkzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcblx0Y29tcG9uZW50czoge1xuXHRcdFNlbGVjdENvbnRyb2wsXG5cdH0sXG5cdGFwaUZldGNoLFxuXHRlbGVtZW50OiB7XG5cdFx0Q29tcG9uZW50LFxuXHR9LFxuXHRpMThuOiB7XG5cdFx0X18sXG5cdH0sXG59ID0gd3A7XG5cbmNsYXNzIFNpbmdsZUZvcm1TZWxlY3QgZXh0ZW5kcyBDb21wb25lbnQge1xuXHQvKipcblx0ICogQ29uc3RydWN0b3Jcblx0ICogQHBhcmFtIHByb3BzXG5cdCAqL1xuXHRjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG5cdFx0c3VwZXIoIHByb3BzICk7XG5cblx0XHQvLyBTZXQgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC5cblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0Zm9ybXM6IFtcblx0XHRcdFx0eyBsYWJlbDogX18oICdTZWxlY3QgYSBmb3JtJywgJ2NvbnN0YW50LWNvbnRhY3QnICksIHZhbHVlOiAwIH1cblx0XHRcdF1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWZ0ZXIgdGhlIGNvbXBvbmVudCBtb3VudHMsIHJldHJpZXZlIHRoZSBmb3JtcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGxvY2FsIGNvbXBvbmVudCBzdGF0ZS5cblx0ICovXG5cdGFzeW5jIGNvbXBvbmVudERpZE1vdW50KCkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBhcGlGZXRjaCggeyBwYXRoOiAnLz9yZXN0X3JvdXRlPS93cC92Mi9jdGN0X2Zvcm1zJyB9ICk7XG5cdFx0XHRjb25zdCBmb3JtcyA9IHJlc3VsdHMubWFwKCByZXN1bHQgPT4gKCB7IGxhYmVsOiByZXN1bHQudGl0bGUucmVuZGVyZWQsIHZhbHVlOiByZXN1bHQuaWQgfSApICk7XG5cdFx0XHR0aGlzLnNldFN0YXRlKCB7IGZvcm1zOiBbLi4udGhpcy5zdGF0ZS5mb3JtcywgLi4uZm9ybXMgXSB9ICk7XG5cdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKCdFUlJPUjogJywgZS5tZXNzYWdlICk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlciB0aGUgR3V0ZW5iZXJnIGJsb2NrIGluIHRoZSBhZG1pbiBhcmVhLlxuXHQgKi9cblx0cmVuZGVyKCkge1xuXHRcdC8vIERlc3RydWN0dXJlIHRoZSBzZWxlY3RlZEZyb20gZnJvbSBwcm9wcy5cblx0XHRsZXQgeyBzZWxlY3RlZEZvcm0gfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyXCI+XG5cdFx0XHRcdDxoNCBjbGFzc05hbWU9XCJjdGN0LWJsb2NrLXRpdGxlXCI+eyBfXyggJ0NvbnN0YW50IENvbnRhY3QgRm9ybXMnLCAnY29uc3RhbnQtY29udGFjdCcgKSB9PC9oND5cblx0XHRcdFx0PHNtYWxsPnsgX18oICdDaG9vc2UgdGhlIGZvcm0gdG8gZGlzcGxheSB3aXRoIHRoZSBkcm9wZG93biBiZWxvdy4nLCAnY29uc3RhbnQtY29udGFjdCcgKSB9PC9zbWFsbD5cblx0XHRcdFx0PFNlbGVjdENvbnRyb2xcblx0XHRcdFx0XHR2YWx1ZT17IHNlbGVjdGVkRm9ybSB9XG5cdFx0XHRcdFx0b3B0aW9ucz17IHRoaXMuc3RhdGUuZm9ybXMgfVxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsgdmFsdWUgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IHNlbGVjdGVkRm9ybTogdmFsdWUgfSApIH1cblx0XHRcdFx0Lz5cblx0XHRcdDwvZGl2PlxuXHRcdClcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW5nbGVGb3JtU2VsZWN0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0E7QUFUQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBR0E7Ozs7O0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQUpBO0FBU0E7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7QUFBQTtBQUFBO0FBQ0E7O0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7Ozs7O0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFEQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQURBO0FBRUE7QUFGQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFIQTtBQUpBO0FBV0E7Ozs7QUFoREE7QUFDQTtBQWtEQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-gutenberg/components/single-form-select.js\n");
+eval("__webpack_require__.r(__webpack_exports__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar _wp = wp,\n SelectControl = _wp.components.SelectControl,\n apiFetch = _wp.apiFetch,\n Component = _wp.element.Component,\n __ = _wp.i18n.__;\n\nvar SingleFormSelect = /*#__PURE__*/function (_Component) {\n _inherits(SingleFormSelect, _Component);\n\n var _super = _createSuper(SingleFormSelect);\n\n /**\n * Constructor\n * @param props\n */\n function SingleFormSelect(props) {\n var _this;\n\n _classCallCheck(this, SingleFormSelect);\n\n _this = _super.call(this, props); // Set the initial state of the component.\n\n _this.state = {\n forms: [{\n label: __('Select a form', 'constant-contact'),\n value: 0\n }]\n };\n return _this;\n }\n /**\n * After the component mounts, retrieve the forms and add them to the local component state.\n */\n\n\n _createClass(SingleFormSelect, [{\n key: \"componentDidMount\",\n value: function () {\n var _componentDidMount = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var results, forms;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return apiFetch({\n path: '/?rest_route=/wp/v2/ctct_forms'\n });\n\n case 3:\n results = _context.sent;\n forms = results.map(function (result) {\n return {\n label: result.title.rendered,\n value: result.id\n };\n });\n this.setState({\n forms: [].concat(_toConsumableArray(this.state.forms), _toConsumableArray(forms))\n });\n _context.next = 11;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context[\"catch\"](0);\n console.error('ERROR: ', _context.t0.message);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 8]]);\n }));\n\n function componentDidMount() {\n return _componentDidMount.apply(this, arguments);\n }\n\n return componentDidMount;\n }()\n /**\n * Render the Gutenberg block in the admin area.\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n // Destructure the selectedFrom from props.\n var selectedForm = this.props.attributes.selectedForm;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"ctct-block-container\"\n }, /*#__PURE__*/React.createElement(\"h4\", {\n className: \"ctct-block-title\"\n }, __('Constant Contact Forms', 'constant-contact')), /*#__PURE__*/React.createElement(\"small\", null, __('Choose the form to display with the dropdown below.', 'constant-contact')), /*#__PURE__*/React.createElement(SelectControl, {\n value: selectedForm,\n options: this.state.forms,\n onChange: function onChange(value) {\n return _this2.props.setAttributes({\n selectedForm: value\n });\n }\n }));\n }\n }]);\n\n return SingleFormSelect;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SingleFormSelect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZ3V0ZW5iZXJnL2NvbXBvbmVudHMvc2luZ2xlLWZvcm0tc2VsZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWd1dGVuYmVyZy9jb21wb25lbnRzL3NpbmdsZS1mb3JtLXNlbGVjdC5qcz9hNzkzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcblx0Y29tcG9uZW50czoge1xuXHRcdFNlbGVjdENvbnRyb2wsXG5cdH0sXG5cdGFwaUZldGNoLFxuXHRlbGVtZW50OiB7XG5cdFx0Q29tcG9uZW50LFxuXHR9LFxuXHRpMThuOiB7XG5cdFx0X18sXG5cdH0sXG59ID0gd3A7XG5cbmNsYXNzIFNpbmdsZUZvcm1TZWxlY3QgZXh0ZW5kcyBDb21wb25lbnQge1xuXHQvKipcblx0ICogQ29uc3RydWN0b3Jcblx0ICogQHBhcmFtIHByb3BzXG5cdCAqL1xuXHRjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG5cdFx0c3VwZXIoIHByb3BzICk7XG5cblx0XHQvLyBTZXQgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC5cblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0Zm9ybXM6IFtcblx0XHRcdFx0eyBsYWJlbDogX18oICdTZWxlY3QgYSBmb3JtJywgJ2NvbnN0YW50LWNvbnRhY3QnICksIHZhbHVlOiAwIH1cblx0XHRcdF1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWZ0ZXIgdGhlIGNvbXBvbmVudCBtb3VudHMsIHJldHJpZXZlIHRoZSBmb3JtcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGxvY2FsIGNvbXBvbmVudCBzdGF0ZS5cblx0ICovXG5cdGFzeW5jIGNvbXBvbmVudERpZE1vdW50KCkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBhcGlGZXRjaCggeyBwYXRoOiAnLz9yZXN0X3JvdXRlPS93cC92Mi9jdGN0X2Zvcm1zJyB9ICk7XG5cdFx0XHRjb25zdCBmb3JtcyA9IHJlc3VsdHMubWFwKCByZXN1bHQgPT4gKCB7IGxhYmVsOiByZXN1bHQudGl0bGUucmVuZGVyZWQsIHZhbHVlOiByZXN1bHQuaWQgfSApICk7XG5cdFx0XHR0aGlzLnNldFN0YXRlKCB7IGZvcm1zOiBbLi4udGhpcy5zdGF0ZS5mb3JtcywgLi4uZm9ybXMgXSB9ICk7XG5cdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKCdFUlJPUjogJywgZS5tZXNzYWdlICk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlciB0aGUgR3V0ZW5iZXJnIGJsb2NrIGluIHRoZSBhZG1pbiBhcmVhLlxuXHQgKi9cblx0cmVuZGVyKCkge1xuXHRcdC8vIERlc3RydWN0dXJlIHRoZSBzZWxlY3RlZEZyb20gZnJvbSBwcm9wcy5cblx0XHRsZXQgeyBzZWxlY3RlZEZvcm0gfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImN0Y3QtYmxvY2stY29udGFpbmVyXCI+XG5cdFx0XHRcdDxoNCBjbGFzc05hbWU9XCJjdGN0LWJsb2NrLXRpdGxlXCI+eyBfXyggJ0NvbnN0YW50IENvbnRhY3QgRm9ybXMnLCAnY29uc3RhbnQtY29udGFjdCcgKSB9PC9oND5cblx0XHRcdFx0PHNtYWxsPnsgX18oICdDaG9vc2UgdGhlIGZvcm0gdG8gZGlzcGxheSB3aXRoIHRoZSBkcm9wZG93biBiZWxvdy4nLCAnY29uc3RhbnQtY29udGFjdCcgKSB9PC9zbWFsbD5cblx0XHRcdFx0PFNlbGVjdENvbnRyb2xcblx0XHRcdFx0XHR2YWx1ZT17IHNlbGVjdGVkRm9ybSB9XG5cdFx0XHRcdFx0b3B0aW9ucz17IHRoaXMuc3RhdGUuZm9ybXMgfVxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsgdmFsdWUgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IHNlbGVjdGVkRm9ybTogdmFsdWUgfSApIH1cblx0XHRcdFx0Lz5cblx0XHRcdDwvZGl2PlxuXHRcdClcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW5nbGVGb3JtU2VsZWN0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQVRBO0FBRUE7QUFFQTtBQUdBO0FBQ0E7QUFHQTs7Ozs7QUFDQTs7OztBQUlBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBSkE7QUFTQTtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7QUFBQTtBQUFBO0FBQ0E7O0FBREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7Ozs7O0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFEQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUhBO0FBT0E7Ozs7QUFoREE7QUFDQTtBQWtEQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-gutenberg/components/single-form-select.js\n");
/***/ }),
diff --git a/assets/js/ctct-plugin-recaptcha-v2.js b/assets/js/ctct-plugin-recaptcha-v2.js
index 3b2560ac..71251197 100644
--- a/assets/js/ctct-plugin-recaptcha-v2.js
+++ b/assets/js/ctct-plugin-recaptcha-v2.js
@@ -81,7 +81,7 @@
/******/
/******/
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 5);
+/******/ return __webpack_require__(__webpack_require__.s = 4);
/******/ })
/************************************************************************/
/******/ ({
@@ -109,7 +109,7 @@ eval("var ctctEnableBtn = function ctctEnableBtn(index) {\n jQuery(jQuery(\".ct
/***/ }),
-/***/ 5:
+/***/ 4:
/*!***********************************************************!*\
!*** multi ./assets/js/ctct-plugin-recaptcha-v2/index.js ***!
\***********************************************************/
From 87972076349544dc158259b5a4c1eada1eb317e9 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Wed, 24 Jun 2020 11:20:48 -0600
Subject: [PATCH 04/29] Fix display of class on inputs
CC-162
---
includes/class-display.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index f08a7b7d..6756a42d 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -1019,19 +1019,19 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
$classes[] = 'ctct-invalid';
}
+ $classes[] = $f_id;
$class_attr = '';
if ( count( $classes ) ) {
$class_attr = 'class="' . implode( ' ', $classes ) . '"';
}
- $field = '';
+ $field = '';
$markup .= sprintf(
$field,
$req_text,
$type,
$f_id,
- $f_id,
$input_inline_styles,
$value,
$max_length,
From e190ded477c75416ae90bf1d7d4c114f1a6c0b08 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Wed, 24 Jun 2020 11:28:24 -0600
Subject: [PATCH 05/29] Properly target submit button on recaptcha update
CC-162
---
assets/js/ctct-plugin-recaptcha-v2.js | 2 +-
.../js/ctct-plugin-recaptcha-v2/recaptcha.js | 30 +++++++++++++++----
2 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/assets/js/ctct-plugin-recaptcha-v2.js b/assets/js/ctct-plugin-recaptcha-v2.js
index 71251197..a9254991 100644
--- a/assets/js/ctct-plugin-recaptcha-v2.js
+++ b/assets/js/ctct-plugin-recaptcha-v2.js
@@ -105,7 +105,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rec
/*! no static exports found */
/***/ (function(module, exports) {
-eval("var ctctEnableBtn = function ctctEnableBtn(index) {\n jQuery(jQuery(\".ctct-submit\")[index]).attr(\"disabled\", false);\n};\n\nwindow.ctctEnableBtn = ctctEnableBtn;\n\nvar ctctDisableBtn = function ctctDisableBtn(index) {\n jQuery(jQuery(\".ctct-submit\")[index]).attr(\"disabled\", \"disabled\");\n};\n\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function renderReCaptcha() {\n jQuery('.g-recaptcha').each(function (index, el) {\n grecaptcha.render(el, {\n 'sitekey': jQuery(el).attr('data-sitekey'),\n 'size': jQuery(el).attr('data-size'),\n 'tabindex': jQuery(el).attr('data-tabindex'),\n 'callback': function callback() {\n window.ctctEnableBtn(index);\n },\n 'expired-callback': function expiredCallback() {\n window.ctctDisableBtn(index);\n },\n 'isolated': true\n });\n });\n};\n\nwindow.renderReCaptcha = renderReCaptcha;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tcmVjYXB0Y2hhLXYyL3JlY2FwdGNoYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1yZWNhcHRjaGEtdjIvcmVjYXB0Y2hhLmpzPzlhNDQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGN0Y3RFbmFibGVCdG4gPSBmdW5jdGlvbiggaW5kZXggKSB7XG4gICAgalF1ZXJ5KCBqUXVlcnkoIFwiLmN0Y3Qtc3VibWl0XCIgKVsgaW5kZXggXSApLmF0dHIoIFwiZGlzYWJsZWRcIiwgZmFsc2UgKTtcbn1cbndpbmRvdy5jdGN0RW5hYmxlQnRuID0gY3RjdEVuYWJsZUJ0bjtcblxudmFyIGN0Y3REaXNhYmxlQnRuID0gZnVuY3Rpb24oIGluZGV4ICkge1xuICAgIGpRdWVyeSggalF1ZXJ5KCBcIi5jdGN0LXN1Ym1pdFwiIClbIGluZGV4IF0gKS5hdHRyKCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZWRcIiApO1xufVxud2luZG93LmN0Y3REaXNhYmxlQnRuID0gY3RjdERpc2FibGVCdG47XG5cbnZhciByZW5kZXJSZUNhcHRjaGEgPSBmdW5jdGlvbigpIHtcbiAgICBqUXVlcnkoICcuZy1yZWNhcHRjaGEnICkuZWFjaCggZnVuY3Rpb24oIGluZGV4LCBlbCApIHtcbiAgICAgICAgZ3JlY2FwdGNoYS5yZW5kZXIoIGVsLCB7XG4gICAgICAgICAgICAnc2l0ZWtleSc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS1zaXRla2V5JyApLFxuICAgICAgICAgICAgJ3NpemUnOiBqUXVlcnkoIGVsICkuYXR0ciggJ2RhdGEtc2l6ZScgKSxcbiAgICAgICAgICAgICd0YWJpbmRleCc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS10YWJpbmRleCcgKSxcbiAgICAgICAgICAgICdjYWxsYmFjayc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jdGN0RW5hYmxlQnRuKCBpbmRleCApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmN0Y3REaXNhYmxlQnRuKCBpbmRleCApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdpc29sYXRlZCc6IHRydWUsXG4gICAgICAgIH0gKTtcbiAgICB9ICk7XG59O1xud2luZG93LnJlbmRlclJlQ2FwdGNoYSA9IHJlbmRlclJlQ2FwdGNoYTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVlBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js\n");
+eval("/**\n * Enable submit button.\n *\n * @author Rebekah Van Epps \n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctEnableBtn = function ctctEnableBtn(submitBtn) {\n jQuery(submitBtn).attr(\"disabled\", false);\n};\n\nwindow.ctctEnableBtn = ctctEnableBtn;\n/**\n * Disable submit button.\n *\n * @author Rebekah Van Epps \n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\n\nvar ctctDisableBtn = function ctctDisableBtn(submitBtn) {\n jQuery(submitBtn).attr(\"disabled\", \"disabled\");\n};\n\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function renderReCaptcha() {\n jQuery('.g-recaptcha').each(function (index, el) {\n var submitBtn = jQuery(el).siblings('.ctct-form-field-submit').find('.ctct-submit');\n grecaptcha.render(el, {\n 'sitekey': jQuery(el).attr('data-sitekey'),\n 'size': jQuery(el).attr('data-size'),\n 'tabindex': jQuery(el).attr('data-tabindex'),\n 'callback': function callback() {\n window.ctctEnableBtn(submitBtn);\n },\n 'expired-callback': function expiredCallback() {\n window.ctctDisableBtn(submitBtn);\n },\n 'isolated': true\n });\n });\n};\n\nwindow.renderReCaptcha = renderReCaptcha;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tcmVjYXB0Y2hhLXYyL3JlY2FwdGNoYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1yZWNhcHRjaGEtdjIvcmVjYXB0Y2hhLmpzPzlhNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbmFibGUgc3VibWl0IGJ1dHRvbi5cbiAqXG4gKiBAYXV0aG9yIFJlYmVrYWggVmFuIEVwcHMgPHJlYmVrYWgudmFuZXBwc0B3ZWJkZXZzdHVkaW9zLmNvbT5cbiAqIEBzaW5jZSAgMS44LjNcbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9IHN1Ym1pdEJ0biBTdWJtaXQgRE9NIGVsZW1lbnQuXG4gKi9cbnZhciBjdGN0RW5hYmxlQnRuID0gZnVuY3Rpb24oIHN1Ym1pdEJ0biApIHtcbiAgICBqUXVlcnkoIHN1Ym1pdEJ0biApLmF0dHIoIFwiZGlzYWJsZWRcIiwgZmFsc2UgKTtcbn1cbndpbmRvdy5jdGN0RW5hYmxlQnRuID0gY3RjdEVuYWJsZUJ0bjtcblxuLyoqXG4gKiBEaXNhYmxlIHN1Ym1pdCBidXR0b24uXG4gKlxuICogQGF1dGhvciBSZWJla2FoIFZhbiBFcHBzIDxyZWJla2FoLnZhbmVwcHNAd2ViZGV2c3R1ZGlvcy5jb20+XG4gKiBAc2luY2UgIDEuOC4zXG4gKlxuICogQHBhcmFtICB7T2JqZWN0fSBzdWJtaXRCdG4gU3VibWl0IERPTSBlbGVtZW50LlxuICovXG52YXIgY3RjdERpc2FibGVCdG4gPSBmdW5jdGlvbiggc3VibWl0QnRuICkge1xuICAgIGpRdWVyeSggc3VibWl0QnRuICkuYXR0ciggXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIgKTtcbn1cbndpbmRvdy5jdGN0RGlzYWJsZUJ0biA9IGN0Y3REaXNhYmxlQnRuO1xuXG52YXIgcmVuZGVyUmVDYXB0Y2hhID0gZnVuY3Rpb24oKSB7XG4gICAgalF1ZXJ5KCAnLmctcmVjYXB0Y2hhJyApLmVhY2goIGZ1bmN0aW9uKCBpbmRleCwgZWwgKSB7XG4gICAgICAgIGNvbnN0IHN1Ym1pdEJ0biA9IGpRdWVyeSggZWwgKS5zaWJsaW5ncyggJy5jdGN0LWZvcm0tZmllbGQtc3VibWl0JyApLmZpbmQoICcuY3RjdC1zdWJtaXQnICk7XG5cbiAgICAgICAgZ3JlY2FwdGNoYS5yZW5kZXIoIGVsLCB7XG4gICAgICAgICAgICAnc2l0ZWtleSc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS1zaXRla2V5JyApLFxuICAgICAgICAgICAgJ3NpemUnOiBqUXVlcnkoIGVsICkuYXR0ciggJ2RhdGEtc2l6ZScgKSxcbiAgICAgICAgICAgICd0YWJpbmRleCc6IGpRdWVyeSggZWwgKS5hdHRyKCAnZGF0YS10YWJpbmRleCcgKSxcbiAgICAgICAgICAgICdjYWxsYmFjayc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jdGN0RW5hYmxlQnRuKCBzdWJtaXRCdG4gKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZXhwaXJlZC1jYWxsYmFjayc6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jdGN0RGlzYWJsZUJ0biggc3VibWl0QnRuICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2lzb2xhdGVkJzogdHJ1ZSxcbiAgICAgICAgfSApO1xuICAgIH0gKTtcbn07XG53aW5kb3cucmVuZGVyUmVDYXB0Y2hhID0gcmVuZGVyUmVDYXB0Y2hhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFWQTtBQVlBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js\n");
/***/ }),
diff --git a/assets/js/ctct-plugin-recaptcha-v2/recaptcha.js b/assets/js/ctct-plugin-recaptcha-v2/recaptcha.js
index cf6e67e9..fe882bd3 100644
--- a/assets/js/ctct-plugin-recaptcha-v2/recaptcha.js
+++ b/assets/js/ctct-plugin-recaptcha-v2/recaptcha.js
@@ -1,24 +1,42 @@
-var ctctEnableBtn = function( index ) {
- jQuery( jQuery( ".ctct-submit" )[ index ] ).attr( "disabled", false );
+/**
+ * Enable submit button.
+ *
+ * @author Rebekah Van Epps
+ * @since 1.8.3
+ *
+ * @param {Object} submitBtn Submit DOM element.
+ */
+var ctctEnableBtn = function( submitBtn ) {
+ jQuery( submitBtn ).attr( "disabled", false );
}
window.ctctEnableBtn = ctctEnableBtn;
-var ctctDisableBtn = function( index ) {
- jQuery( jQuery( ".ctct-submit" )[ index ] ).attr( "disabled", "disabled" );
+/**
+ * Disable submit button.
+ *
+ * @author Rebekah Van Epps
+ * @since 1.8.3
+ *
+ * @param {Object} submitBtn Submit DOM element.
+ */
+var ctctDisableBtn = function( submitBtn ) {
+ jQuery( submitBtn ).attr( "disabled", "disabled" );
}
window.ctctDisableBtn = ctctDisableBtn;
var renderReCaptcha = function() {
jQuery( '.g-recaptcha' ).each( function( index, el ) {
+ const submitBtn = jQuery( el ).siblings( '.ctct-form-field-submit' ).find( '.ctct-submit' );
+
grecaptcha.render( el, {
'sitekey': jQuery( el ).attr( 'data-sitekey' ),
'size': jQuery( el ).attr( 'data-size' ),
'tabindex': jQuery( el ).attr( 'data-tabindex' ),
'callback': function() {
- window.ctctEnableBtn( index );
+ window.ctctEnableBtn( submitBtn );
},
'expired-callback': function() {
- window.ctctDisableBtn( index );
+ window.ctctDisableBtn( submitBtn );
},
'isolated': true,
} );
From 8836c76afcb10df64cea43c4e63fc40cce7869c2 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Wed, 24 Jun 2020 12:10:13 -0600
Subject: [PATCH 06/29] Remove unused data key
CC-162
---
includes/class-api.php | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/includes/class-api.php b/includes/class-api.php
index 9d831003..670b0563 100644
--- a/includes/class-api.php
+++ b/includes/class-api.php
@@ -509,6 +509,11 @@ public function add_contact( $new_contact = [], $form_id = 0 ) {
try {
$response = $this->cc()->contactService->getContacts( $api_token, [ 'email' => $email ] );
+ // Remove ctct-instance if present to avoid errors.
+ if ( array_key_exists( 'ctct-instance', $new_contact ) ) {
+ unset( $new_contact['ctct-instance'] );
+ }
+
if ( isset( $response->results ) && ! empty( $response->results ) ) {
constant_contact_maybe_log_it( 'API', 'Contact set to be updated', [ 'form' => get_the_title( $form_id ) ] );
$return_contact = $this->update_contact( $response, $api_token, $list, $new_contact, $form_id );
From d48fff4ab0ca85327dcba0c042af566c3f266c27 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 09:33:58 -0600
Subject: [PATCH 07/29] Change display f_id to field_key for clarity
CC-162
---
includes/class-display.php | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index 6756a42d..00e387e0 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -951,7 +951,7 @@ public function get_label( $f_id, $field_label ) {
*/
public function input( $type = 'text', $name = '', $id = '', $value = '', $label = '', $req = false, $f_only = false, $field_error = false, $form_id = 0, $label_placement = '' ) {
$name = sanitize_text_field( $name );
- $f_id = sanitize_title( $id );
+ $field_key = sanitize_title( $id );
$input_inline_styles = '';
$label_placement_class = 'ctct-label-' . $label_placement;
$specific_form_styles = $this->specific_form_styles;
@@ -966,7 +966,7 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
$label = sanitize_text_field( $label );
$req_text = $req ? 'required' : '';
- $markup = $this->field_top( $type, $name, $f_id, $label, $req );
+ $markup = $this->field_top( $type, $name, $field_key, $label, $req );
$req_label = '';
@@ -979,7 +979,7 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
} else {
$markup .= '';
}
- $markup .= $this->get_label( $f_id, $name . ' ' . $req_label );
+ $markup .= $this->get_label( $field_key, $name . ' ' . $req_label );
$markup .= '';
}
@@ -994,13 +994,13 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
* Filter to add classes for the rendering input.
*
* @since 1.2.0
- * @param array $classes Array of classes to apply to the field.
- * @param string $type The field type being rendered.
- * @param int $form_id Form ID.
- * @param int $f_id Field ID.
+ * @param array $classes Array of classes to apply to the field.
+ * @param string $type The field type being rendered.
+ * @param int $form_id Form ID.
+ * @param int $field_key Field ID.
* @return array
*/
- $classes = apply_filters( 'constant_contact_input_classes', $classes, $type, $form_id, $f_id );
+ $classes = apply_filters( 'constant_contact_input_classes', $classes, $type, $form_id, $field_key );
/**
* Filters whether or not to remove characters from potential maxlength attribute value.
@@ -1019,19 +1019,20 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
$classes[] = 'ctct-invalid';
}
- $classes[] = $f_id;
+ $classes[] = $field_key;
$class_attr = '';
if ( count( $classes ) ) {
$class_attr = 'class="' . implode( ' ', $classes ) . '"';
}
- $field = '';
+ $field = '';
$markup .= sprintf(
$field,
$req_text,
$type,
- $f_id,
+ $field_key,
+ $field_key,
$input_inline_styles,
$value,
$max_length,
@@ -1044,7 +1045,7 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
if ( ( 'bottom' === $label_placement || 'right' === $label_placement ) && ( 'submit' !== $type ) && ( 'hidden' !== $type ) ) {
$markup .= '';
- $markup .= $this->get_label( $f_id, $name . ' ' . $req_label );
+ $markup .= $this->get_label( $field_key, $name . ' ' . $req_label );
$markup .= '';
}
From f1c31db843051e24aa6f3f80c92032bed1f14c55 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 09:45:38 -0600
Subject: [PATCH 08/29] Pass instance var through to input methods
CC-162
---
includes/class-display.php | 135 +++++++++++++++++++------------------
1 file changed, 71 insertions(+), 64 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index 00e387e0..3f218884 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -346,7 +346,7 @@ public function form( $form_data, $form_id = '', $show_title = false, $instance
$return .= $form_err_display;
- $return .= $this->build_form_fields( $form_data, $old_values, $req_errors );
+ $return .= $this->build_form_fields( $form_data, $old_values, $req_errors, $instance );
if ( ! $disable_recaptcha && ConstantContact_reCAPTCHA::has_recaptcha_keys() ) {
$recaptcha_version = ctct_get_settings_option( '_ctct_recaptcha_version', '' );
@@ -459,12 +459,13 @@ public function add_verify_fields( $form_data ) {
*
* @since 1.0.0
*
- * @param array $form_data Formulated cmb2 data for form.
- * @param array $old_values Original values.
- * @param array $req_errors Errors.
+ * @param array $form_data Formulated cmb2 data for form.
+ * @param array $old_values Original values.
+ * @param array $req_errors Errors.
+ * @param int $instance Current form instance.
* @return string
*/
- public function build_form_fields( $form_data, $old_values, $req_errors ) {
+ public function build_form_fields( $form_data, $old_values, $req_errors, $instance ) {
$return = '';
$form_id = absint( $form_data['options']['form_id'] );
@@ -482,7 +483,7 @@ public function build_form_fields( $form_data, $old_values, $req_errors ) {
if ( isset( $form_data['fields'] ) && is_array( $form_data['fields'] ) ) {
foreach ( $form_data['fields'] as $key => $value ) {
- $return .= $this->field( $value, $old_values, $req_errors, $form_id, $label_placement );
+ $return .= $this->field( $value, $old_values, $req_errors, $form_id, $label_placement, $instance );
}
}
@@ -607,14 +608,15 @@ public function must_opt_in( array $form_data ) {
* @since 1.0.0
* @since 1.4.0 Added label placement parameter.
*
- * @param array $field Field data.
- * @param array $old_values Original values.
- * @param array $req_errors Errors.
- * @param int $form_id Current form ID.
- * @param string $label_placement Label placement location.
- * @return string HTML markup
+ * @param array $field Field data.
+ * @param array $old_values Original values.
+ * @param array $req_errors Errors.
+ * @param int $form_id Current form ID.
+ * @param string $label_placement Label placement location.
+ * @param int $instance Current form instance.
+ * @return string HTML markup
*/
- public function field( $field, $old_values = [], $req_errors = [], $form_id = 0, $label_placement = 'top' ) {
+ public function field( $field, $old_values = [], $req_errors = [], $form_id = 0, $label_placement = 'top', $instance = 0 ) {
if ( ! isset( $field['name'] ) || ! isset( $field['map_to'] ) ) {
return '';
}
@@ -678,23 +680,23 @@ public function field( $field, $old_values = [], $req_errors = [], $form_id = 0,
case 'company':
case 'website':
case 'text_field':
- return $this->input( 'text', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement );
+ return $this->input( 'text', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement, $instance );
case 'custom_text_area':
- return $this->textarea( $name, $map, $value, $desc, $req, $field_error, 'maxlength="500"', $label_placement );
+ return $this->textarea( $name, $map, $value, $desc, $req, $field_error, 'maxlength="500"', $label_placement, $instance );
case 'email':
- return $this->input( 'email', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement );
+ return $this->input( 'email', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement, $instance );
case 'hidden':
return $this->input( 'hidden', $name, $map, $value, $desc, $req );
case 'checkbox':
- return $this->checkbox( $name, $map, $value, $desc );
+ return $this->checkbox( $name, $map, $value, $desc, $instance );
case 'submit':
return $this->input( 'submit', $name, $map, $value, $desc, $req, false, $field_error );
case 'address':
- return $this->address( $name, $map, $value, $desc, $req, $field_error, $label_placement );
+ return $this->address( $name, $map, $value, $desc, $req, $field_error, $label_placement, $instance );
case 'anniversery':
case 'birthday':
// Need this to be month / day / year.
- return $this->dates( $name, $map, $value, $desc, $req, $field_error );
+ return $this->dates( $name, $map, $value, $desc, $req, $field_error, $instance );
default:
return $this->input( 'text', $name, $map, $value, $desc, $req, false, $field_error );
}
@@ -937,19 +939,20 @@ public function get_label( $f_id, $field_label ) {
*
* @since 1.0.0
*
- * @param string $type Type of form field.
- * @param string $name ID of form field.
- * @param string $id ID attribute value.
- * @param string $value pre-filled value.
- * @param string $label label text for input.
- * @param boolean $req If field required.
- * @param boolean $f_only If we only return the field itself, with no label.
- * @param boolean $field_error Field error.
- * @param int $form_id Current form ID.
- * @param string $label_placement Where to place the label.
- * @return string HTML markup for field.
+ * @param string $type Type of form field.
+ * @param string $name ID of form field.
+ * @param string $id ID attribute value.
+ * @param string $value pre-filled value.
+ * @param string $label label text for input.
+ * @param boolean $req If field required.
+ * @param boolean $f_only If we only return the field itself, with no label.
+ * @param boolean $field_error Field error.
+ * @param int $form_id Current form ID.
+ * @param string $label_placement Where to place the label.
+ * @param int $instance Current form instance.
+ * @return string HTML markup for field.
*/
- public function input( $type = 'text', $name = '', $id = '', $value = '', $label = '', $req = false, $f_only = false, $field_error = false, $form_id = 0, $label_placement = '' ) {
+ public function input( $type = 'text', $name = '', $id = '', $value = '', $label = '', $req = false, $f_only = false, $field_error = false, $form_id = 0, $label_placement = '', $instance = 0 ) {
$name = sanitize_text_field( $name );
$field_key = sanitize_title( $id );
$input_inline_styles = '';
@@ -1067,13 +1070,14 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
*
* @since 1.0.0
*
- * @param string $name Name/it of field.
- * @param string $f_id Field ID.
- * @param string $value Value of field.
- * @param string $label Label / desc text.
- * @return string HTML markup for checkbox.
+ * @param string $name Name/it of field.
+ * @param string $f_id Field ID.
+ * @param string $value Value of field.
+ * @param string $label Label / desc text.
+ * @param int $instance Current form instance.
+ * @return string HTML markup for checkbox.
*/
- public function checkbox( $name = '', $f_id = '', $value = '', $label = '' ) {
+ public function checkbox( $name = '', $f_id = '', $value = '', $label = '', $instance = 0 ) {
$name = sanitize_text_field( $name );
$f_id = sanitize_title( $f_id );
$value = sanitize_text_field( $value );
@@ -1216,16 +1220,17 @@ public function get_optin_markup( $label, $value, $show ) {
*
* @since 1.0.0
*
- * @param string $name Name of fields.
- * @param string $f_id Form ID name.
- * @param array $value Values of each field.
- * @param string $desc Label of field.
- * @param boolean $req Whether or not required.
- * @param string $field_error Field error value.
- * @param string $label_placement Where to put the label.
- * @return string field HTML markup.
+ * @param string $name Name of fields.
+ * @param string $f_id Form ID name.
+ * @param array $value Values of each field.
+ * @param string $desc Label of field.
+ * @param boolean $req Whether or not required.
+ * @param string $field_error Field error value.
+ * @param string $label_placement Where to put the label.
+ * @param int $instance Current form instance.
+ * @return string HTML markup.
*/
- public function address( $name = '', $f_id = '', $value = [], $desc = '', $req = false, $field_error = '', $label_placement = 'top' ) {
+ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req = false, $field_error = '', $label_placement = 'top', $instance = 0 ) {
$street = esc_html__( 'Street Address', 'constant-contact-forms' );
$line_2 = esc_html__( 'Address Line 2', 'constant-contact-forms' );
$city = esc_html__( 'City', 'constant-contact-forms' );
@@ -1405,15 +1410,16 @@ public function address( $name = '', $f_id = '', $value = [], $desc = '', $req =
*
* @since 1.0.0
*
- * @param string $name Name of field.
- * @param string $f_id Field ID.
- * @param array $value Values to pre-fill.
- * @param string $desc Description of fields.
- * @param boolean $req If is required.
- * @param string $field_error Field error text.
- * @return string Fields HTML markup.
+ * @param string $name Name of field.
+ * @param string $f_id Field ID.
+ * @param array $value Values to pre-fill.
+ * @param string $desc Description of fields.
+ * @param boolean $req If is required.
+ * @param string $field_error Field error text.
+ * @param int $instance Current form instance.
+ * @return string Fields HTML markup.
*/
- public function dates( $name = '', $f_id = '', $value = [], $desc = '', $req = false, $field_error = '' ) {
+ public function dates( $name = '', $f_id = '', $value = [], $desc = '', $req = false, $field_error = '', $instance = 0 ) {
$month = esc_html__( 'Month', 'constant-contact-forms' );
$day = esc_html__( 'Day', 'constant-contact-forms' );
$year = esc_html__( 'Year', 'constant-contact-forms' );
@@ -1601,17 +1607,18 @@ public function get_days() {
*
* @since 1.0.0
*
- * @param string $name Name of field.
- * @param string $map ID of field.
- * @param string $value Previous value of field.
- * @param string $desc Description/label of field.
- * @param boolean $req If is required.
- * @param string $field_error Error from field.
- * @param string $extra_attrs Extra attributes to append.
- * @param string $label_placement Where to place the label.
- * @return string HTML markup.
+ * @param string $name Name of field.
+ * @param string $map ID of field.
+ * @param string $value Previous value of field.
+ * @param string $desc Description/label of field.
+ * @param boolean $req If is required.
+ * @param string $field_error Error from field.
+ * @param string $extra_attrs Extra attributes to append.
+ * @param string $label_placement Where to place the label.
+ * @param int $instance Current form instance.
+ * @return string HTML markup.
*/
- public function textarea( $name = '', $map = '', $value = '', $desc = '', $req = false, $field_error = '', $extra_attrs = '', $label_placement = 'top' ) {
+ public function textarea( $name = '', $map = '', $value = '', $desc = '', $req = false, $field_error = '', $extra_attrs = '', $label_placement = 'top', $instance = 0 ) {
$classes = [ 'ctct-form-field' ];
$textarea_classes = [ 'ctct-textarea' ];
From a910c8aec6616331f4f4c6cd53de3dad32cecd82 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 09:53:16 -0600
Subject: [PATCH 09/29] Create new field ID var and use for field ID and label
CC-162
---
includes/class-display.php | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index 3f218884..0634db4a 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -955,6 +955,7 @@ public function get_label( $f_id, $field_label ) {
public function input( $type = 'text', $name = '', $id = '', $value = '', $label = '', $req = false, $f_only = false, $field_error = false, $form_id = 0, $label_placement = '', $instance = 0 ) {
$name = sanitize_text_field( $name );
$field_key = sanitize_title( $id );
+ $field_id = "{$field_key}_$instance";
$input_inline_styles = '';
$label_placement_class = 'ctct-label-' . $label_placement;
$specific_form_styles = $this->specific_form_styles;
@@ -982,7 +983,7 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
} else {
$markup .= '';
}
- $markup .= $this->get_label( $field_key, $name . ' ' . $req_label );
+ $markup .= $this->get_label( $field_id, $name . ' ' . $req_label );
$markup .= '';
}
@@ -1035,7 +1036,7 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
$req_text,
$type,
$field_key,
- $field_key,
+ $field_id,
$input_inline_styles,
$value,
$max_length,
@@ -1048,12 +1049,12 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
if ( ( 'bottom' === $label_placement || 'right' === $label_placement ) && ( 'submit' !== $type ) && ( 'hidden' !== $type ) ) {
$markup .= '';
- $markup .= $this->get_label( $field_key, $name . ' ' . $req_label );
+ $markup .= $this->get_label( $field_id, $name . ' ' . $req_label );
$markup .= '';
}
if ( $field_error ) {
- $markup .= $this->field_bottom( $id, $field_error );
+ $markup .= $this->field_bottom( $field_id, $field_error );
} else {
$markup .= $this->field_bottom();
}
From 17ea5217d6df6be7ffc3de508b0d45cc208b5970 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 09:58:53 -0600
Subject: [PATCH 10/29] Implement field id w/ instance for textarea
CC-162
---
includes/class-display.php | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index 0634db4a..efcdad33 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -1623,8 +1623,8 @@ public function textarea( $name = '', $map = '', $value = '', $desc = '', $req =
$classes = [ 'ctct-form-field' ];
$textarea_classes = [ 'ctct-textarea' ];
-
- $req_text = $req ? 'required' : '';
+ $field_id = "{$map}_{$instance}";
+ $req_text = $req ? 'required' : '';
if ( $req ) {
$classes[] = 'ctct-form-field-required';
@@ -1640,8 +1640,8 @@ public function textarea( $name = '', $map = '', $value = '', $desc = '', $req =
}
$return = '';
- $label = '';
- $textarea = '';
+ $label = '';
+ $textarea = '';
if ( 'top' === $label_placement || 'left' === $label_placement || 'hidden' === $label_placement ) {
$return .= $label . $textarea;
@@ -1652,7 +1652,7 @@ public function textarea( $name = '', $map = '', $value = '', $desc = '', $req =
}
if ( $field_error ) {
- $return .= '';
+ $return .= '';
}
return $return . '
';
From 29c81de962ee6e493389eb5ea447fb27ff648354 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 09:59:53 -0600
Subject: [PATCH 11/29] Change display f_id to field_key for clarity
CC-162
---
includes/class-display.php | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index efcdad33..9e3cf85a 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -1079,13 +1079,12 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
* @return string HTML markup for checkbox.
*/
public function checkbox( $name = '', $f_id = '', $value = '', $label = '', $instance = 0 ) {
- $name = sanitize_text_field( $name );
- $f_id = sanitize_title( $f_id );
- $value = sanitize_text_field( $value );
- $label = esc_attr( $label );
- $type = 'checkbox';
-
- $classes = [ 'ctct-' . esc_attr( $type ) ];
+ $name = sanitize_text_field( $name );
+ $field_key = sanitize_title( $field_key );
+ $value = sanitize_text_field( $value );
+ $label = esc_attr( $label );
+ $type = 'checkbox';
+ $classes = [ 'ctct-' . esc_attr( $type ) ];
/**
* Filter to add classes for the rendering input.
@@ -1095,10 +1094,10 @@ public function checkbox( $name = '', $f_id = '', $value = '', $label = '', $ins
* @param string $type The field type being rendered.
* @return array
*/
- $classes = apply_filters( 'constant_contact_input_classes', $classes, $type ); // @todo if/when we start using the checkbox field type, pass in a $form_id and $f_id value.
+ $classes = apply_filters( 'constant_contact_input_classes', $classes, $type ); // @todo if/when we start using the checkbox field type, pass in a $form_id and $field_key value.
- $markup = $this->field_top( $type, $name, $f_id, $label, false, false );
- $markup .= '';
+ $markup = $this->field_top( $type, $name, $field_key, $label, false, false );
+ $markup .= '';
$markup .= $this->field_bottom( $name, ' ' . $label );
return $markup;
From fd8c4a1982ee0d22f6a0d1a0a978de924f8fafd4 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 10:00:38 -0600
Subject: [PATCH 12/29] Implement field id w/ instance for checkbox
CC-162
---
includes/class-display.php | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index 9e3cf85a..4206f4ef 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -1081,6 +1081,7 @@ public function input( $type = 'text', $name = '', $id = '', $value = '', $label
public function checkbox( $name = '', $f_id = '', $value = '', $label = '', $instance = 0 ) {
$name = sanitize_text_field( $name );
$field_key = sanitize_title( $field_key );
+ $field_id = "{$field_key}_{$instance}";
$value = sanitize_text_field( $value );
$label = esc_attr( $label );
$type = 'checkbox';
@@ -1096,8 +1097,8 @@ public function checkbox( $name = '', $f_id = '', $value = '', $label = '', $ins
*/
$classes = apply_filters( 'constant_contact_input_classes', $classes, $type ); // @todo if/when we start using the checkbox field type, pass in a $form_id and $field_key value.
- $markup = $this->field_top( $type, $name, $field_key, $label, false, false );
- $markup .= '';
+ $markup = $this->field_top( $type, $name, $field_id, $label, false, false );
+ $markup .= '';
$markup .= $this->field_bottom( $name, ' ' . $label );
return $markup;
From 30644a105c0d8ca6abf3d5ad6fd6b8c4e4ea37e6 Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 10:26:57 -0600
Subject: [PATCH 13/29] Pass instance to date helper method
CC-162
---
includes/class-display.php | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index 4206f4ef..b8d77c5a 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -1434,13 +1434,13 @@ public function dates( $name = '', $f_id = '', $value = [], $desc = '', $req = f
$return = '
';
@@ -1453,14 +1453,15 @@ public function dates( $name = '', $f_id = '', $value = [], $desc = '', $req = f
*
* @since 1.0.0
*
- * @param string $text Text for default option.
- * @param string $f_id Field ID.
- * @param string $type Type of dropdown (day, month, year).
- * @param string $selected_value Previous value.
- * @param boolean $req If is require.
- * @return string field markup.
+ * @param string $text Text for default option.
+ * @param string $f_id Field ID.
+ * @param string $type Type of dropdown (day, month, year).
+ * @param string $selected_value Previous value.
+ * @param boolean $req If is require.
+ * @param int $instance Current form instance.
+ * @return string Field markup.
*/
- public function get_date_dropdown( $text = '', $f_id = '', $type = '', $selected_value = '', $req = false ) {
+ public function get_date_dropdown( $text = '', $f_id = '', $type = '', $selected_value = '', $req = false, $instance = 0 ) {
$f_id = str_replace( 'birthday', 'birthday_' . $type, $f_id );
$f_id = str_replace( 'anniversary', 'anniversary_' . $type, $f_id );
From 95361901b534d45058a9e51460d865e3843f5f9f Mon Sep 17 00:00:00 2001
From: Rebekah Van Epps
Date: Mon, 29 Jun 2020 10:27:33 -0600
Subject: [PATCH 14/29] Change date input f_id to field_key for clarity
CC-162
---
includes/class-display.php | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/includes/class-display.php b/includes/class-display.php
index b8d77c5a..ce96ed0c 100644
--- a/includes/class-display.php
+++ b/includes/class-display.php
@@ -1454,18 +1454,18 @@ public function dates( $name = '', $f_id = '', $value = [], $desc = '', $req = f
* @since 1.0.0
*
* @param string $text Text for default option.
- * @param string $f_id Field ID.
+ * @param string $field_key Field ID.
* @param string $type Type of dropdown (day, month, year).
* @param string $selected_value Previous value.
* @param boolean $req If is require.
* @param int $instance Current form instance.
* @return string Field markup.
*/
- public function get_date_dropdown( $text = '', $f_id = '', $type = '', $selected_value = '', $req = false, $instance = 0 ) {
- $f_id = str_replace( 'birthday', 'birthday_' . $type, $f_id );
- $f_id = str_replace( 'anniversary', 'anniversary_' . $type, $f_id );
+ public function get_date_dropdown( $text = '', $field_key = '', $type = '', $selected_value = '', $req = false, $instance = 0 ) {
+ $field_key = str_replace( 'birthday', 'birthday_' . $type, $field_key );
+ $field_key = str_replace( 'anniversary', 'anniversary_' . $type, $field_key );
- $return = '