Constant Contact Forms - Version 1.8.7

Version Description

  • Improved: Implemented recommendations for improved accessibility.
  • Improved: Avoid duplicate ID attributes when more than one form is present on a page.
  • Fixed: Submit button targeting for recaptcha v2.
Download this release

Release Info

Developer constantcontact
Plugin Icon 128x128 Constant Contact Forms
Version 1.8.7
Comparing to
See all releases

Code changes from version 1.8.6 to 1.8.7

assets/css/style.css CHANGED
@@ -19,6 +19,14 @@
19
  color: #1b7926;
20
  }
21
 
 
 
 
 
 
 
 
 
22
  .ctct-form-wrapper .ctct-form-field {
23
  margin: 0 0 1rem;
24
  }
@@ -89,7 +97,7 @@
89
  top: -9999px !important;
90
  }
91
 
92
- .ctct-form-wrapper #ctct_usage {
93
  border: 0 none;
94
  clip: rect(0, 0, 0, 0);
95
  height: 1px;
@@ -100,7 +108,7 @@
100
  width: 1px;
101
  }
102
 
103
- .ctct-form-wrapper .no-recaptcha #ctct-submitted:disabled {
104
  background-image: url("../images/oval.min.svg");
105
  background-position: center;
106
  background-repeat: no-repeat;
@@ -109,7 +117,7 @@
109
  opacity: 0.3;
110
  }
111
 
112
- .ctct-form-wrapper .has-recaptcha #ctct-submitted:disabled {
113
  cursor: not-allowed;
114
  }
115
 
@@ -179,4 +187,4 @@
179
  }
180
  }
181
 
182
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBbUNBO0VBQ0UsbURBQW1EO0VBQ25ELDRCQUE0QjtFQUM1Qiw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTs7RUFFRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0UscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0Usd0JBQXdCO0VBQ3hCLDZCQUE2QjtFQUM3Qix1QkFBdUI7QUFDekI7O0FBRUE7RUFDRSxjQUFjO0VBQ2Qsc0JBQXNCO0VBQ3RCLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixrQkFBa0I7RUFDbEIsVUFBVTtBQUNaOztBQUVBO0VBQ0UsK0NBQStDO0VBQy9DLDJCQUEyQjtFQUMzQiw0QkFBNEI7RUFDNUIsa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsV0FBVztFQUNYLGNBQWM7QUFDaEI7O0FBRUE7O0VBRUUsY0FBYztBQUNoQjs7QUFFQTs7RUFFRSxxQkFBcUI7QUFDdkI7O0FBRUE7RUFDRSxZQUFZO0VBQ1osY0FBYztFQUNkLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxjQUFjO0FBQ2hCOztBQUVBO0VBQ0UsZUFBZTtBQUNqQjs7QUFFQTtFQUNFLFdBQVc7QUFDYjs7QUE1SkE7RUFDRTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0VBSUE7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7QUFyQkYiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgI2N0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
19
  color: #1b7926;
20
  }
21
 
22
+ .ctct-form-wrapper .ctct-message .ctct-dismiss-ajax-notice {
23
+ border-radius: 50%;
24
+ float: right;
25
+ line-height: 1;
26
+ padding: 0.85rem 1rem;
27
+ text-decoration: none;
28
+ }
29
+
30
  .ctct-form-wrapper .ctct-form-field {
31
  margin: 0 0 1rem;
32
  }
97
  top: -9999px !important;
98
  }
99
 
100
+ .ctct-form-wrapper .ctct_usage {
101
  border: 0 none;
102
  clip: rect(0, 0, 0, 0);
103
  height: 1px;
108
  width: 1px;
109
  }
110
 
111
+ .ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled {
112
  background-image: url("../images/oval.min.svg");
113
  background-position: center;
114
  background-repeat: no-repeat;
117
  opacity: 0.3;
118
  }
119
 
120
+ .ctct-form-wrapper .has-recaptcha .ctct-submitted:disabled {
121
  cursor: not-allowed;
122
  }
123
 
187
  }
188
  }
189
 
190
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGNBQWM7RUFDZCxxQkFBcUI7RUFDckIscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0UscUJBQXFCO0FBQ3ZCOztBQW1DQTtFQUNFLG1EQUFtRDtFQUNuRCw0QkFBNEI7RUFDNUIsNEJBQTRCO0VBQzVCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UscURBQXFEO0VBQ3JELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UscURBQXFEO0VBQ3JELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLFVBQVU7QUFDWjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBOztFQUVFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBO0VBQ0UscUJBQXFCO0VBQ3JCLFVBQVU7QUFDWjs7QUFFQTtFQUNFLHdCQUF3QjtFQUN4Qiw2QkFBNkI7RUFDN0IsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0UsY0FBYztFQUNkLHNCQUFzQjtFQUN0QixXQUFXO0VBQ1gsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixVQUFVO0VBQ1Ysa0JBQWtCO0VBQ2xCLFVBQVU7QUFDWjs7QUFFQTtFQUNFLCtDQUErQztFQUMvQywyQkFBMkI7RUFDM0IsNEJBQTRCO0VBQzVCLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osWUFBWTtBQUNkOztBQUVBO0VBQ0UsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCxjQUFjO0FBQ2hCOztBQUVBOztFQUVFLGNBQWM7QUFDaEI7O0FBRUE7O0VBRUUscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsWUFBWTtFQUNaLGNBQWM7RUFDZCxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsY0FBYztBQUNoQjs7QUFFQTtFQUNFLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxXQUFXO0FBQ2I7O0FBNUpBO0VBQ0U7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7RUFJQTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0FBckJGIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1idXR0b24ge1xuICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2Uge1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgcGFkZGluZzogMWVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZS5jdGN0LWVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgY29sb3I6ICNjZjBiMDA7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3Qtc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDYsIDIwNCwgNjQsIDAuMDIpO1xuICBib3JkZXItY29sb3I6ICMyZWNjNDA7XG4gIGNvbG9yOiAjMWI3OTI2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSAuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmbG9hdDogcmlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGYge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDQ4JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZjpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAzMiU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAyNCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkOnZhbGlkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ10uY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLWxlZnQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLXJpZ2h0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtaGlkZGVuIHtcbiAgbGVmdDogLTk5OTlweCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgdG9wOiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdF91c2FnZSB7XG4gIGJvcmRlcjogMCBub25lO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAubm8tcmVjYXB0Y2hhIC5jdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9vdmFsLm1pbi5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHdhaXQ7XG4gIG9wYWNpdHk6IDAuMztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5oYXMtcmVjYXB0Y2hhIC5jdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtOjphZnRlciB7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogdGFibGU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXRvcCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWJvdHRvbSBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1sZWZ0IGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtcmlnaHQgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIGFiYnIge1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAjZmY0MTM2O1xuICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGNvbG9yOiAjYWFhO1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWVycm9yIHtcbiAgY29sb3I6ICNmZjQxMzY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1zdWJtaXQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jdGN0LXR3ZW50eWZvdXJ0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbn1cbiJdfQ== */
assets/css/style.min.css CHANGED
@@ -1,2 +1,2 @@
1
- .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}}
2
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHlDQUNFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsMENBQ0Usc0JBQXdCLENBQ3hCLDJCQUE2QixDQUM3QixxQkFDRixDQUVBLCtCQUNFLFFBQWMsQ0FDZCxrQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLFdBQVksQ0FDWixlQUFnQixDQUNoQixTQUFVLENBQ1YsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSwwREFDRSw0Q0FBK0MsQ0FDL0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSw0Q0FDRSxVQUNGLENBNUpBLHlCQUNFLG9DQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsaURBQ0UsY0FDRixDQUlBLHFDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0Esa0RBQ0UsY0FDRixDQUlBLHNDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsbURBQ0UsY0FDRixDQXJCRiIsImZpbGUiOiJzdHlsZS5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgI2N0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
1
+ .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-message .ctct-dismiss-ajax-notice{border-radius:50%;float:right;line-height:1;padding:.85rem 1rem;text-decoration:none}.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}}
2
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSwyREFDRSxpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLGFBQWMsQ0FDZCxtQkFBcUIsQ0FDckIsb0JBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHlDQUNFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsMENBQ0Usc0JBQXdCLENBQ3hCLDJCQUE2QixDQUM3QixxQkFDRixDQUVBLCtCQUNFLFFBQWMsQ0FDZCxrQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLFdBQVksQ0FDWixlQUFnQixDQUNoQixTQUFVLENBQ1YsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSwwREFDRSw0Q0FBK0MsQ0FDL0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSw0Q0FDRSxVQUNGLENBNUpBLHlCQUNFLG9DQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsaURBQ0UsY0FDRixDQUlBLHFDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0Esa0RBQ0UsY0FDRixDQUlBLHNDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsbURBQ0UsY0FDRixDQXJCRiIsImZpbGUiOiJzdHlsZS5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIC5jdGN0LWRpc21pc3MtYWpheC1ub3RpY2Uge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZsb2F0OiByaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDAuODVyZW0gMXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZCB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogNDglO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDMyJTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQ6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGgge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDI0JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQ6dmFsaWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvY2hlY2tfY2lyY2xlLnN2Z1wiKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiAxOHB4O1xuICBib3JkZXItY29sb3I6ICMyZWNjNDA7XG4gIHBhZGRpbmctbGVmdDogMzJweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZWwnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXS5jdGN0LWludmFsaWQge1xuICBiYWNrZ3JvdW5kOiAjZmZmIHVybChcIi4uL2ltYWdlcy9lcnJvci5zdmdcIikgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWVycm9yIHtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWludmFsaWQge1xuICBiYWNrZ3JvdW5kOiAjZmZmIHVybChcIi4uL2ltYWdlcy9lcnJvci5zdmdcIikgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtbGVmdCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1oaWRkZW4ge1xuICBsZWZ0OiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB0b3A6IC05OTk5cHggIWltcG9ydGFudDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0X3VzYWdlIHtcbiAgYm9yZGVyOiAwIG5vbmU7XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5uby1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL292YWwubWluLnN2Z1wiKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogd2FpdDtcbiAgb3BhY2l0eTogMC4zO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmhhcy1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm06OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtdG9wIGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtYm90dG9tIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWxlZnQgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1yaWdodCBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNmZjQxMzY7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgY29sb3I6ICNhYWE7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBjb2xvcjogI2ZmNDEzNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LXN1Ym1pdCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuIl19 */
assets/images/check_circle.svg CHANGED
File without changes
assets/images/error.svg CHANGED
File without changes
assets/js/ctct-plugin-frontend.js CHANGED
@@ -105,7 +105,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
- 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");
109
 
110
  /***/ }),
111
 
@@ -116,7 +116,7 @@ eval("/**\n * General-purpose utility stuff for CC plugin.\n */\n(function (glob
116
  /*! no static exports found */
117
  /***/ (function(module, exports) {
118
 
119
- 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 = $('<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");
120
 
121
  /***/ }),
122
 
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
+ 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");
109
 
110
  /***/ }),
111
 
116
  /*! no static exports found */
117
  /***/ (function(module, exports) {
118
 
119
+ 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 role = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'log';\n var $wrapper = $form.parents('.ctct-form-wrapper');\n $wrapper.find('p.ctct-message').remove();\n var $p = $('<p />', {\n 'class': 'ctct-message ' + classes,\n 'text': message,\n 'role': role\n }).prepend($('<button />', {\n 'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n 'html': '&#10005;',\n 'aria-label': 'Dismiss Notification'\n }));\n $p.insertBefore($form).fadeIn(200);\n $wrapper.find('.ctct-dismiss-ajax-notice').on('click', function () {\n $(this).parents('.ctct-message').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', 'alert');\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', 'status');\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+IHtcblxuXHRcdGlmICggJ29uJyAhPT0gJGZvcm0uYXR0ciggJ2RhdGEtZG9hamF4JyApICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSBhbGwgcmVxdWlyZWQgZmllbGRzIGluIHRoaXMgZm9ybSBhcmUgdmFsaWQuXG5cdFx0JC5lYWNoKCAkZm9ybS5maW5kKCAnW3JlcXVpcmVkXScgKSwgZnVuY3Rpb24oIGksIGZpZWxkICkge1xuXG5cdFx0XHRpZiAoIGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fTtcblxuXHQvKipcblx0ICogUHJlcGVuZHMgZm9ybSB3aXRoIGEgbWVzc2FnZSB0aGF0IGZhZGVzIG91dCBpbiA1IHNlY29uZHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9ICRmb3JtIGpRdWVyeSBvYmplY3QgZm9yIHRoZSBmb3JtIGEgbWVzc2FnZSBpcyBiZWluZyBkaXNwbGF5ZWQgZm9yLlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgbWVzc2FnZSBjb250ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NlcyBPcHRpb25hbC4gSFRNTCBjbGFzc2VzIHRvIGFkZCB0byB0aGUgbWVzc2FnZSB3cmFwcGVyLlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCAkZm9ybSwgbWVzc2FnZSwgY2xhc3NlcyA9ICcnLCByb2xlID0gJ2xvZycgKSA9PiB7XG5cblx0XHRjb25zdCAkd3JhcHBlciA9ICRmb3JtLnBhcmVudHMoICcuY3RjdC1mb3JtLXdyYXBwZXInICk7XG5cblx0XHQkd3JhcHBlci5maW5kKCAncC5jdGN0LW1lc3NhZ2UnICkucmVtb3ZlKCk7XG5cblx0XHR2YXIgJHAgPSAkKCAnPHAgLz4nLCB7XG5cdFx0XHQnY2xhc3MnOiAnY3RjdC1tZXNzYWdlICcgKyBjbGFzc2VzLFxuXHRcdFx0J3RleHQnOiBtZXNzYWdlLFxuXHRcdFx0J3JvbGUnOiByb2xlXG5cdFx0fSApLnByZXBlbmQoICQoICc8YnV0dG9uIC8+Jywge1xuXHRcdFx0J2NsYXNzJzogJ2J1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGN0Y3QtZGlzbWlzcyBjdGN0LWRpc21pc3MtYWpheC1ub3RpY2UnLFxuXHRcdFx0J2h0bWwnOiAnJiMxMDAwNTsnLFxuXHRcdFx0J2FyaWEtbGFiZWwnOiAnRGlzbWlzcyBOb3RpZmljYXRpb24nXG5cdFx0fSApICk7XG5cblx0XHQkcC5pbnNlcnRCZWZvcmUoICRmb3JtICkuZmFkZUluKCAyMDAgKTtcblxuXHRcdCR3cmFwcGVyLmZpbmQoICcuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlJyApLm9uKCAnY2xpY2snLCBmdW5jdGlvbigpIHtcblx0XHRcdCQoIHRoaXMgKS5wYXJlbnRzKCAnLmN0Y3QtbWVzc2FnZScgKS5yZW1vdmUoKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFN1Ym1pdHMgdGhlIGFjdHVhbCBmb3JtIHZpYSBBSkFYLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSAkZm9ybSBqUXVlcnkgb2JqZWN0IGZvciB0aGUgZm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuc3VibWl0Rm9ybSA9ICggJGZvcm0gKSA9PiB7XG5cblx0XHQkZm9ybS5maW5kKCAnLmN0Y3Qtc3VibWl0dGVkJyApLnByb3AoICdkaXNhYmxlZCcsIHRydWUgKTtcblxuXHRcdHZhciBhamF4RGF0YSA9IHtcblx0XHRcdCdhY3Rpb24nOiAnY3RjdF9wcm9jZXNzX2Zvcm0nLFxuXHRcdFx0J2RhdGEnOiAkZm9ybS5zZXJpYWxpemUoKVxuXHRcdH07XG5cblx0XHQkLnBvc3QoIHdpbmRvdy5hamF4dXJsLCBhamF4RGF0YSwgKCByZXNwb25zZSApID0+IHtcblxuXHRcdFx0JGZvcm0uZmluZCggJy5jdGN0LXN1Ym1pdHRlZCcgKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApO1xuXG5cdFx0XHRpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YoIHJlc3BvbnNlLnN0YXR1cyApICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhlcmUgd2UnbGwgd2FudCB0byBkaXNhYmxlIHRoZSBzdWJtaXQgYnV0dG9uIGFuZCBhZGQgc29tZSBlcnJvciBjbGFzc2VzLlxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHJlc3BvbnNlLmVycm9ycyApICkge1xuXHRcdFx0XHRcdGFwcC5zZXRBbGxJbnB1dHNWYWxpZCgpO1xuXHRcdFx0XHRcdHJlc3BvbnNlLmVycm9ycy5mb3JFYWNoKCBhcHAucHJvY2Vzc0Vycm9yICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YXBwLnNob3dNZXNzYWdlKCAkZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InLCAnYWxlcnQnICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlJ3JlIGhlcmUsIHRoZSBzdWJtaXNzaW9uIHdhcyBhIHN1Y2Nlc3M7IHNob3cgbWVzc2FnZSBhbmQgcmVzZXQgZm9ybSBmaWVsZHMuXG5cdFx0XHRhcHAuc2hvd01lc3NhZ2UoICRmb3JtLCByZXNwb25zZS5tZXNzYWdlLCAnY3RjdC1zdWNjZXNzJywgJ3N0YXR1cycgKTtcblx0XHRcdCRmb3JtWzBdLnJlc2V0KCk7XG5cdFx0fSApO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBIYW5kbGUgdGhlIGZvcm0gc3VibWlzc2lvbi5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZSBUaGUgc3VibWl0IGV2ZW50LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gJGZvcm0galF1ZXJ5IG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgZm9ybSBiZWluZyBoYW5kbGVkLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBGYWxzZSBpZiB1bmFibGUgdG8gdmFsaWRhdGUgdGhlIGZvcm0uXG5cdCAqL1xuXHRhcHAuaGFuZGxlU3VibWlzc2lvbiA9ICggZSwgJGZvcm0gKSA9PiB7XG5cblx0XHRpZiAoICEgYXBwLnZhbGlkYXRlU3VibWlzc2lvbiggJGZvcm0gKSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRjbGVhclRpbWVvdXQoIGFwcC50aW1lb3V0ICk7XG5cblx0XHRhcHAudGltZW91dCA9IHNldFRpbWVvdXQoIGFwcC5zdWJtaXRGb3JtLCA1MDAsICRmb3JtICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFNldCB1cCBldmVudCBiaW5kaW5ncyBhbmQgY2FsbGJhY2tzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuYmluZEV2ZW50cyA9ICgpID0+IHtcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXHRcdCQuZWFjaCggYXBwLiRjLiRmb3JtcywgZnVuY3Rpb24oIGksIGZvcm0gKSB7XG5cblx0XHRcdC8vIEF0dGFjaCBzdWJtaXNzaW9uIGhhbmRsZXIgdG8gZWFjaCBmb3JtJ3MgU3VibWl0IGJ1dHRvbi5cblx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS5vbiggJ2NsaWNrJywgJ2lucHV0W3R5cGU9c3VibWl0XScsICggZSApID0+IHtcblx0XHRcdFx0YXBwLmhhbmRsZVN1Ym1pc3Npb24oIGUsIGFwcC4kYy4kZm9ybXNbIGkgXSApO1xuXHRcdFx0fSApO1xuXG5cdFx0XHQvLyBFbnN1cmUgZWFjaCBmb3JtJ3MgaG9uZXlwb3QgaXMgY2hlY2tlZC5cblx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS4kaG9uZXlwb3Qub24oICdjaGFuZ2Uga2V5dXAnLCAoIGUgKSA9PiB7XG5cblx0XHRcdFx0YXBwLmNoZWNrSG9uZXlwb3QoXG5cdFx0XHRcdFx0ZSxcblx0XHRcdFx0XHRhcHAuJGMuJGZvcm1zWyBpIF0uJGhvbmV5cG90LFxuXHRcdFx0XHRcdGFwcC4kYy4kZm9ybXNbIGkgXS4kc3VibWl0QnV0dG9uXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdC8vIERpc2FibGUgdGhlIHN1Ym1pdCBidXR0b24gYnkgZGVmYXVsdCB1bnRpbCB0aGUgY2FwdGNoYSBpcyBwYXNzZWQgKGlmIGNhcHRjaGEgZXhpc3RzKS5cblx0XHRcdGlmICggMCA8IGFwcC4kYy4kZm9ybXNbIGkgXS4kcmVjYXB0Y2hhLmxlbmd0aCApIHtcblx0XHRcdFx0YXBwLiRjLiRmb3Jtc1sgaSBdLiRzdWJtaXRCdXR0b24uYXR0ciggJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyApO1xuXHRcdFx0fVxuXG5cdFx0fSApO1xuXHR9O1xuXG5cdCQoIGFwcC5pbml0ICk7XG5cbn0gKCB3aW5kb3csIGpRdWVyeSwgd2luZG93LkNUQ1RTdXBwb3J0ICkgKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFEQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7OztBQVNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7OztBQVVBO0FBQUE7QUFBQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7QUFRQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n");
120
 
121
  /***/ }),
122
 
assets/js/ctct-plugin-frontend.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=9)}([,,,,,,,,,function(t,e,n){t.exports=n(10)},function(t,e,n){"use strict";n.r(e);n(11),n(12)},function(t,e){!function(t,e){function n(){return e("#ctct-submitted").attr("disabled",null)}e(document).ready((function(){e("#ctct-submitted").on("click",(function(){setTimeout((function(){e("#ctct-submitted").attr("disabled","disabled"),setTimeout(n,3e3)}),100)}))}))}(window,jQuery)},function(t,e){window.CTCTSupport={},function(t,e,n){var o=this;n.init=function(){n.cache(),n.bindEvents(),n.removePlaceholder()},n.removePlaceholder=function(){e(".ctct-form-field input, textarea").focus((function(){e(o).data("placeholder",e(o).attr("placeholder")).attr("placeholder","")})).blur((function(){e(o).attr("placeholder",e(o).data("placeholder"))}))},n.cache=function(){n.$c={$forms:[]},e(".ctct-form-wrapper").each((function(t,o){n.$c.$forms.push(e(o).find("form"))})),e.each(n.$c.$forms,(function(t,o){var r=e(o);n.$c.$forms[t].$honeypot=r.find("#ctct_usage_field"),n.$c.$forms[t].$submitButton=r.find("input[type=submit]"),n.$c.$forms[t].$recaptcha=r.find(".g-recaptcha")})),n.timeout=null},n.setAllInputsValid=function(){e(n.$c.$form+" .ctct-invalid").removeClass("ctct-invalid")},n.processError=function(t){void 0!==t.id&&e("#"+t.id).addClass("ctct-invalid")},n.checkHoneypot=function(t,e,n){0<e.val().length?n.attr("disabled","disabled"):n.attr("disabled",!1)},n.validateSubmission=function(t){return"on"===t.attr("data-doajax")&&(e.each(t.find("[required]"),(function(t,e){if(!1===e.checkValidity())return!1})),!0)},n.showMessage=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=e("<p />",{class:"ctct-message "+o,text:n});r.insertBefore(t).fadeIn(200).delay(5e3).slideUp(200,(function(){r.remove()}))},n.submitForm=function(o){o.find("#ctct-submitted").prop("disabled",!0);var r={action:"ctct_process_form",data:o.serialize()};e.post(t.ajaxurl,r,(function(t){return o.find("#ctct-submitted").prop("disabled",!1),void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(n.setAllInputsValid(),t.errors.forEach(n.processError)):n.showMessage(o,t.message,"ctct-error"),!1):(n.showMessage(o,t.message,"ctct-success"),void o[0].reset()))}))},n.handleSubmission=function(t,e){if(!n.validateSubmission(e))return!1;t.preventDefault(),clearTimeout(n.timeout),n.timeout=setTimeout(n.submitForm,500,e)},n.bindEvents=function(){e.each(n.$c.$forms,(function(t,e){n.$c.$forms[t].on("click","input[type=submit]",(function(e){n.handleSubmission(e,n.$c.$forms[t])})),n.$c.$forms[t].$honeypot.on("change keyup",(function(e){n.checkHoneypot(e,n.$c.$forms[t].$honeypot,n.$c.$forms[t].$submitButton)})),0<n.$c.$forms[t].$recaptcha.length&&n.$c.$forms[t].$submitButton.attr("disabled","disabled")}))},e(n.init)}(window,jQuery,window.CTCTSupport)}]);
2
  //# sourceMappingURL=ctct-plugin-frontend.min.js.map
1
+ !function(t){var e={};function n(o){if(e[o])return e[o].exports;var c=e[o]={i:o,l:!1,exports:{}};return t[o].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var c in t)n.d(o,c,function(e){return t[e]}.bind(null,c));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=9)}([,,,,,,,,,function(t,e,n){t.exports=n(10)},function(t,e,n){"use strict";n.r(e);n(11),n(12)},function(t,e){!function(t,e){function n(){return e(".ctct-submitted").attr("disabled",null)}e(document).ready((function(){e(".ctct-submitted").on("click",(function(){setTimeout((function(){e(".ctct-submitted").attr("disabled","disabled"),setTimeout(n,3e3)}),100)}))}))}(window,jQuery)},function(t,e){window.CTCTSupport={},function(t,e,n){var o=this;n.init=function(){n.cache(),n.bindEvents(),n.removePlaceholder()},n.removePlaceholder=function(){e(".ctct-form-field input, textarea").focus((function(){e(o).data("placeholder",e(o).attr("placeholder")).attr("placeholder","")})).blur((function(){e(o).attr("placeholder",e(o).data("placeholder"))}))},n.cache=function(){n.$c={$forms:[]},e(".ctct-form-wrapper").each((function(t,o){n.$c.$forms.push(e(o).find("form"))})),e.each(n.$c.$forms,(function(t,o){var c=e(o);n.$c.$forms[t].$honeypot=c.find(".ctct_usage_field"),n.$c.$forms[t].$submitButton=c.find("input[type=submit]"),n.$c.$forms[t].$recaptcha=c.find(".g-recaptcha")})),n.timeout=null},n.setAllInputsValid=function(){e(n.$c.$form+" .ctct-invalid").removeClass("ctct-invalid")},n.processError=function(t){void 0!==t.id&&e("#"+t.id).addClass("ctct-invalid")},n.checkHoneypot=function(t,e,n){0<e.val().length?n.attr("disabled","disabled"):n.attr("disabled",!1)},n.validateSubmission=function(t){return"on"===t.attr("data-doajax")&&(e.each(t.find("[required]"),(function(t,e){if(!1===e.checkValidity())return!1})),!0)},n.showMessage=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"log",i=t.parents(".ctct-form-wrapper");i.find("p.ctct-message").remove();var r=e("<p />",{class:"ctct-message "+o,text:n,role:c}).prepend(e("<button />",{class:"button button-secondary ctct-dismiss ctct-dismiss-ajax-notice",html:"&#10005;","aria-label":"Dismiss Notification"}));r.insertBefore(t).fadeIn(200),i.find(".ctct-dismiss-ajax-notice").on("click",(function(){e(this).parents(".ctct-message").remove()}))},n.submitForm=function(o){o.find(".ctct-submitted").prop("disabled",!0);var c={action:"ctct_process_form",data:o.serialize()};e.post(t.ajaxurl,c,(function(t){return o.find(".ctct-submitted").prop("disabled",!1),void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(n.setAllInputsValid(),t.errors.forEach(n.processError)):n.showMessage(o,t.message,"ctct-error","alert"),!1):(n.showMessage(o,t.message,"ctct-success","status"),void o[0].reset()))}))},n.handleSubmission=function(t,e){if(!n.validateSubmission(e))return!1;t.preventDefault(),clearTimeout(n.timeout),n.timeout=setTimeout(n.submitForm,500,e)},n.bindEvents=function(){e.each(n.$c.$forms,(function(t,e){n.$c.$forms[t].on("click","input[type=submit]",(function(e){n.handleSubmission(e,n.$c.$forms[t])})),n.$c.$forms[t].$honeypot.on("change keyup",(function(e){n.checkHoneypot(e,n.$c.$forms[t].$honeypot,n.$c.$forms[t].$submitButton)})),0<n.$c.$forms[t].$recaptcha.length&&n.$c.$forms[t].$submitButton.attr("disabled","disabled")}))},e(n.init)}(window,jQuery,window.CTCTSupport)}]);
2
  //# sourceMappingURL=ctct-plugin-frontend.min.js.map
assets/js/ctct-plugin-frontend.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-frontend/index.js","webpack:///./assets/js/ctct-plugin-frontend/util.js","webpack:///./assets/js/ctct-plugin-frontend/validation.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","$","enableSendButton","attr","document","ready","on","setTimeout","window","jQuery","CTCTSupport","app","init","cache","bindEvents","removePlaceholder","focus","data","blur","$c","$forms","each","formWrapper","push","find","form","$form","$honeypot","$submitButton","$recaptcha","timeout","setAllInputsValid","removeClass","processError","error","id","addClass","checkHoneypot","e","$honeyPot","val","length","validateSubmission","field","checkValidity","showMessage","message","classes","$p","insertBefore","fadeIn","delay","slideUp","remove","submitForm","prop","ajaxData","serialize","post","ajaxurl","response","status","errors","forEach","reset","handleSubmission","preventDefault","clearTimeout"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,G,yEClFrD,oB,eCGE,SAAUC,EAAQC,GAmCnB,SAASC,IACR,OAAOD,EAAG,mBAAoBE,KAAM,WAAY,MA/BjDF,EAAGG,UAAWC,OAAO,WAEpBJ,EAAG,mBAAoBK,GAAI,SAAS,WACnCC,YAAY,WAgBNN,EAAG,mBAAoBE,KAAM,WAAY,YAd9CI,WAAYL,EAAkB,OAC5B,WAXJ,CAuCEM,OAAQC,S,cCpCXD,OAAOE,YAAc,GAEpB,SAAUF,EAAQP,EAAGU,GAAM,WAQ5BA,EAAIC,KAAO,WACVD,EAAIE,QACJF,EAAIG,aACJH,EAAII,qBASLJ,EAAII,kBAAoB,WACvBd,EAAG,oCAAqCe,OAAO,WAC9Cf,EAAG,GAAOgB,KAAM,cAAehB,EAAG,GAAOE,KAAM,gBAAkBA,KAAM,cAAe,OACnFe,MAAM,WACTjB,EAAG,GAAOE,KAAM,cAAeF,EAAG,GAAOgB,KAAM,oBAUjDN,EAAIE,MAAQ,WAEXF,EAAIQ,GAAK,CACRC,OAAQ,IAITnB,EAAG,sBAAuBoB,MAAM,SAAUrD,EAAGsD,GAC5CX,EAAIQ,GAAGC,OAAOG,KAAMtB,EAAGqB,GAAcE,KAAM,YAI5CvB,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAEnC,IAAIC,EAAQzB,EAAGwB,GAEfd,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAgBD,EAAMF,KAAM,qBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAgBF,EAAMF,KAAM,sBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAgBH,EAAMF,KAAM,mBAGhDb,EAAImB,QAAU,MASfnB,EAAIoB,kBAAoB,WACvB9B,EAAGU,EAAIQ,GAAGO,MAAQ,kBAAmBM,YAAa,iBAWnDrB,EAAIsB,aAAe,SAAEC,QAGf,IAAwBA,EAAMC,IAClClC,EAAG,IAAMiC,EAAMC,IAAKC,SAAU,iBAchCzB,EAAI0B,cAAgB,SAAEC,EAAGC,EAAWX,GAG9B,EAAIW,EAAUC,MAAMC,OACxBb,EAAczB,KAAM,WAAY,YAEhCyB,EAAczB,KAAM,YAAY,IAalCQ,EAAI+B,mBAAqB,SAAEhB,GAE1B,MAAK,OAASA,EAAMvB,KAAM,iBAK1BF,EAAEoB,KAAMK,EAAMF,KAAM,eAAgB,SAAUxD,EAAG2E,GAEhD,IAAK,IAAUA,EAAMC,gBACpB,OAAO,MAIF,IAaRjC,EAAIkC,YAAc,SAAEnB,EAAOoB,GAA2B,IAAlBC,EAAkB,uDAAR,GAEzCC,EAAK/C,EAAG,QAAS,CACpB,MAAS,gBAAkB8C,EAC3B,KAAQD,IAGTE,EAAGC,aAAcvB,GAAQwB,OAAQ,KAAMC,MAAO,KAAOC,QAAS,KAAK,WAClEJ,EAAGK,aAYL1C,EAAI2C,WAAa,SAAE5B,GAElBA,EAAMF,KAAM,mBAAoB+B,KAAM,YAAY,GAElD,IAAIC,EAAW,CACd,OAAU,oBACV,KAAQ9B,EAAM+B,aAGfxD,EAAEyD,KAAMlD,EAAOmD,QAASH,GAAU,SAAEI,GAInC,OAFAlC,EAAMF,KAAM,mBAAoB+B,KAAM,YAAY,QAE7C,IAAwBK,EAASC,SAKjC,YAAcD,EAASC,aAEtB,IAAwBD,EAASE,QACrCnD,EAAIoB,oBACJ6B,EAASE,OAAOC,QAASpD,EAAIsB,eAE7BtB,EAAIkC,YAAanB,EAAOkC,EAASd,QAAS,eAGpC,IAIRnC,EAAIkC,YAAanB,EAAOkC,EAASd,QAAS,qBAC1CpB,EAAM,GAAGsC,cAcXrD,EAAIsD,iBAAmB,SAAE3B,EAAGZ,GAE3B,IAAOf,EAAI+B,mBAAoBhB,GAC9B,OAAO,EAGRY,EAAE4B,iBAEFC,aAAcxD,EAAImB,SAElBnB,EAAImB,QAAUvB,WAAYI,EAAI2C,WAAY,IAAK5B,IAShDf,EAAIG,WAAa,WAGhBb,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAGnCd,EAAIQ,GAAGC,OAAQpD,GAAIsC,GAAI,QAAS,sBAAsB,SAAEgC,GACvD3B,EAAIsD,iBAAkB3B,EAAG3B,EAAIQ,GAAGC,OAAQpD,OAIzC2C,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAUrB,GAAI,gBAAgB,SAAEgC,GAElD3B,EAAI0B,cACHC,EACA3B,EAAIQ,GAAGC,OAAQpD,GAAI2D,UACnBhB,EAAIQ,GAAGC,OAAQpD,GAAI4D,kBAKhB,EAAIjB,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAWY,QACtC9B,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAczB,KAAM,WAAY,gBAMtDF,EAAGU,EAAIC,MA7PN,CA+PEJ,OAAQC,OAAQD,OAAOE","file":"ctct-plugin-frontend.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","import './util';\nimport './validation';\n","/**\n * General-purpose utility stuff for CC plugin.\n */\n( function( global, $ ) {\n\n\t/**\n\t * Temporarily prevent the submit button from being clicked.\n\t */\n\t$( document ).ready( () => {\n\n\t\t$( '#ctct-submitted' ).on( 'click', () => {\n\t\t\tsetTimeout( () => {\n\t\t\t\tdisableSendButton();\n\t\t\t\tsetTimeout( enableSendButton, 3000 );\n\t\t\t}, 100 );\n\t\t} );\n\t} );\n\n\t/**\n\t * Disable form submit button.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction disableSendButton() {\n\t\treturn $( '#ctct-submitted' ).attr( 'disabled', 'disabled' );\n\t}\n\n\t/**\n\t * Re-enable form submit buttons.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction enableSendButton() {\n\t\treturn $( '#ctct-submitted' ).attr( 'disabled', null );\n\t}\n\n} ( window, jQuery ) );\n","/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\n window.CTCTSupport = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t\tapp.removePlaceholder();\n\t};\n\n\t/**\n\t * Remove placeholder text values.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.removePlaceholder = () => {\n\t\t$( '.ctct-form-field input, textarea' ).focus( () => {\n\t\t\t$( this ).data( 'placeholder', $( this ).attr( 'placeholder' ) ).attr( 'placeholder', '' );\n\t\t} ).blur( () => {\n\t\t\t$( this ).attr( 'placeholder', $( this ).data( 'placeholder' ) );\n\t\t} );\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\n\t\tapp.$c = {\n\t\t\t$forms: []\n\t\t};\n\n\t\t// Cache each form on the page.\n\t\t$( '.ctct-form-wrapper' ).each( function( i, formWrapper ) {\n\t\t\tapp.$c.$forms.push( $( formWrapper ).find( 'form' ) );\n\t\t} );\n\n\t\t// For each form, cache its common elements.\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\tvar $form = $( form );\n\n\t\t\tapp.$c.$forms[ i ].$honeypot = $form.find( '#ctct_usage_field' );\n\t\t\tapp.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );\n\t\t\tapp.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );\n\t\t} );\n\n\t\tapp.timeout = null;\n\t};\n\n\t/**\n\t * Remove the ctct-invalid class from elements that have it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.setAllInputsValid = () => {\n\t\t$( app.$c.$form + ' .ctct-invalid' ).removeClass( 'ctct-invalid' );\n\t};\n\n\t/**\n\t * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} error AJAX response error object.\n\t */\n\tapp.processError = ( error ) => {\n\n\t\t// If we have an id property set.\n\t\tif ( 'undefined' !== typeof( error.id ) ) {\n\t\t\t$( '#' + error.id ).addClass( 'ctct-invalid' );\n\t\t}\n\t};\n\n\t/**\n\t * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The change or keyup event triggering this callback.\n\t * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n\t * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n\t */\n\tapp.checkHoneypot = ( e, $honeyPot, $submitButton ) => {\n\n\t\t// If there is text in the honeypot, disable the submit button\n\t\tif ( 0 < $honeyPot.val().length ) {\n\t\t\t$submitButton.attr( 'disabled', 'disabled' );\n\t\t} else {\n\t\t\t$submitButton.attr( 'disabled', false );\n\t\t}\n\t};\n\n\t/**\n\t * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being validated.\n\t * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n\t */\n\tapp.validateSubmission = ( $form ) => {\n\n\t\tif ( 'on' !== $form.attr( 'data-doajax' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Ensure all required fields in this form are valid.\n\t\t$.each( $form.find( '[required]' ), function( i, field ) {\n\n\t\t\tif ( false === field.checkValidity() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Prepends form with a message that fades out in 5 seconds.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form a message is being displayed for.\n\t * @param {string} message The message content.\n\t * @param {string} classes Optional. HTML classes to add to the message wrapper.\n\t */\n\tapp.showMessage = ( $form, message, classes = '' ) => {\n\n\t\tvar $p = $( '<p />', {\n\t\t\t'class': 'ctct-message ' + classes,\n\t\t\t'text': message\n\t\t} );\n\n\t\t$p.insertBefore( $form ).fadeIn( 200 ).delay( 5000 ).slideUp( 200, () => {\n\t\t\t$p.remove();\n\t\t} );\n\t};\n\n\t/**\n\t * Submits the actual form via AJAX.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being submitted.\n\t */\n\tapp.submitForm = ( $form ) => {\n\n\t\t$form.find( '#ctct-submitted' ).prop( 'disabled', true );\n\n\t\tvar ajaxData = {\n\t\t\t'action': 'ctct_process_form',\n\t\t\t'data': $form.serialize()\n\t\t};\n\n\t\t$.post( window.ajaxurl, ajaxData, ( response ) => {\n\n\t\t\t$form.find( '#ctct-submitted' ).prop( 'disabled', false );\n\n\t\t\tif ( 'undefined' === typeof( response.status ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Here we'll want to disable the submit button and add some error classes.\n\t\t\tif ( 'success' !== response.status ) {\n\n\t\t\t\tif ( 'undefined' !== typeof( response.errors ) ) {\n\t\t\t\t\tapp.setAllInputsValid();\n\t\t\t\t\tresponse.errors.forEach( app.processError );\n\t\t\t\t} else {\n\t\t\t\t\tapp.showMessage( $form, response.message, 'ctct-error' );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// If we're here, the submission was a success; show message and reset form fields.\n\t\t\tapp.showMessage( $form, response.message, 'ctct-success' );\n\t\t\t$form[0].reset();\n\t\t} );\n\t};\n\n\t/**\n\t * Handle the form submission.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The submit event.\n\t * @param {object} $form jQuery object for the current form being handled.\n\t * @return {boolean} False if unable to validate the form.\n\t */\n\tapp.handleSubmission = ( e, $form ) => {\n\n\t\tif ( ! app.validateSubmission( $form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tclearTimeout( app.timeout );\n\n\t\tapp.timeout = setTimeout( app.submitForm, 500, $form );\n\t};\n\n\t/**\n\t * Set up event bindings and callbacks.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\t// Attach submission handler to each form's Submit button.\n\t\t\tapp.$c.$forms[ i ].on( 'click', 'input[type=submit]', ( e ) => {\n\t\t\t\tapp.handleSubmission( e, app.$c.$forms[ i ] );\n\t\t\t} );\n\n\t\t\t// Ensure each form's honeypot is checked.\n\t\t\tapp.$c.$forms[ i ].$honeypot.on( 'change keyup', ( e ) => {\n\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\te,\n\t\t\t\t\tapp.$c.$forms[ i ].$honeypot,\n\t\t\t\t\tapp.$c.$forms[ i ].$submitButton\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// Disable the submit button by default until the captcha is passed (if captcha exists).\n\t\t\tif ( 0 < app.$c.$forms[ i ].$recaptcha.length ) {\n\t\t\t\tapp.$c.$forms[ i ].$submitButton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTSupport ) );\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-frontend/index.js","webpack:///./assets/js/ctct-plugin-frontend/util.js","webpack:///./assets/js/ctct-plugin-frontend/validation.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","$","enableSendButton","attr","document","ready","on","setTimeout","window","jQuery","CTCTSupport","app","init","cache","bindEvents","removePlaceholder","focus","data","blur","$c","$forms","each","formWrapper","push","find","form","$form","$honeypot","$submitButton","$recaptcha","timeout","setAllInputsValid","removeClass","processError","error","id","addClass","checkHoneypot","e","$honeyPot","val","length","validateSubmission","field","checkValidity","showMessage","message","classes","role","$wrapper","parents","remove","$p","prepend","insertBefore","fadeIn","this","submitForm","prop","ajaxData","serialize","post","ajaxurl","response","status","errors","forEach","reset","handleSubmission","preventDefault","clearTimeout"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,G,yEClFrD,oB,eCGE,SAAUC,EAAQC,GAmCnB,SAASC,IACR,OAAOD,EAAG,mBAAoBE,KAAM,WAAY,MA/BjDF,EAAGG,UAAWC,OAAO,WAEpBJ,EAAG,mBAAoBK,GAAI,SAAS,WACnCC,YAAY,WAgBNN,EAAG,mBAAoBE,KAAM,WAAY,YAd9CI,WAAYL,EAAkB,OAC5B,WAXJ,CAuCEM,OAAQC,S,cCpCXD,OAAOE,YAAc,GAEpB,SAAUF,EAAQP,EAAGU,GAAM,WAQ5BA,EAAIC,KAAO,WACVD,EAAIE,QACJF,EAAIG,aACJH,EAAII,qBASLJ,EAAII,kBAAoB,WACvBd,EAAG,oCAAqCe,OAAO,WAC9Cf,EAAG,GAAOgB,KAAM,cAAehB,EAAG,GAAOE,KAAM,gBAAkBA,KAAM,cAAe,OACnFe,MAAM,WACTjB,EAAG,GAAOE,KAAM,cAAeF,EAAG,GAAOgB,KAAM,oBAUjDN,EAAIE,MAAQ,WAEXF,EAAIQ,GAAK,CACRC,OAAQ,IAITnB,EAAG,sBAAuBoB,MAAM,SAAUrD,EAAGsD,GAC5CX,EAAIQ,GAAGC,OAAOG,KAAMtB,EAAGqB,GAAcE,KAAM,YAI5CvB,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAEnC,IAAIC,EAAQzB,EAAGwB,GAEfd,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAgBD,EAAMF,KAAM,qBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAgBF,EAAMF,KAAM,sBAC/Cb,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAgBH,EAAMF,KAAM,mBAGhDb,EAAImB,QAAU,MASfnB,EAAIoB,kBAAoB,WACvB9B,EAAGU,EAAIQ,GAAGO,MAAQ,kBAAmBM,YAAa,iBAWnDrB,EAAIsB,aAAe,SAAEC,QAGf,IAAwBA,EAAMC,IAClClC,EAAG,IAAMiC,EAAMC,IAAKC,SAAU,iBAchCzB,EAAI0B,cAAgB,SAAEC,EAAGC,EAAWX,GAG9B,EAAIW,EAAUC,MAAMC,OACxBb,EAAczB,KAAM,WAAY,YAEhCyB,EAAczB,KAAM,YAAY,IAalCQ,EAAI+B,mBAAqB,SAAEhB,GAE1B,MAAK,OAASA,EAAMvB,KAAM,iBAK1BF,EAAEoB,KAAMK,EAAMF,KAAM,eAAgB,SAAUxD,EAAG2E,GAEhD,IAAK,IAAUA,EAAMC,gBACpB,OAAO,MAIF,IAaRjC,EAAIkC,YAAc,SAAEnB,EAAOoB,GAAyC,IAAhCC,EAAgC,uDAAtB,GAAIC,EAAkB,uDAAX,MAElDC,EAAWvB,EAAMwB,QAAS,sBAEhCD,EAASzB,KAAM,kBAAmB2B,SAElC,IAAIC,EAAKnD,EAAG,QAAS,CACpB,MAAS,gBAAkB8C,EAC3B,KAAQD,EACR,KAAQE,IACLK,QAASpD,EAAG,aAAc,CAC7B,MAAS,gEACT,KAAQ,WACR,aAAc,0BAGfmD,EAAGE,aAAc5B,GAAQ6B,OAAQ,KAEjCN,EAASzB,KAAM,6BAA8BlB,GAAI,SAAS,WACzDL,EAAGuD,MAAON,QAAS,iBAAkBC,aAYvCxC,EAAI8C,WAAa,SAAE/B,GAElBA,EAAMF,KAAM,mBAAoBkC,KAAM,YAAY,GAElD,IAAIC,EAAW,CACd,OAAU,oBACV,KAAQjC,EAAMkC,aAGf3D,EAAE4D,KAAMrD,EAAOsD,QAASH,GAAU,SAAEI,GAInC,OAFArC,EAAMF,KAAM,mBAAoBkC,KAAM,YAAY,QAE7C,IAAwBK,EAASC,SAKjC,YAAcD,EAASC,aAEtB,IAAwBD,EAASE,QACrCtD,EAAIoB,oBACJgC,EAASE,OAAOC,QAASvD,EAAIsB,eAE7BtB,EAAIkC,YAAanB,EAAOqC,EAASjB,QAAS,aAAc,UAGlD,IAIRnC,EAAIkC,YAAanB,EAAOqC,EAASjB,QAAS,eAAgB,eAC1DpB,EAAM,GAAGyC,cAcXxD,EAAIyD,iBAAmB,SAAE9B,EAAGZ,GAE3B,IAAOf,EAAI+B,mBAAoBhB,GAC9B,OAAO,EAGRY,EAAE+B,iBAEFC,aAAc3D,EAAImB,SAElBnB,EAAImB,QAAUvB,WAAYI,EAAI8C,WAAY,IAAK/B,IAShDf,EAAIG,WAAa,WAGhBb,EAAEoB,KAAMV,EAAIQ,GAAGC,QAAQ,SAAUpD,EAAGyD,GAGnCd,EAAIQ,GAAGC,OAAQpD,GAAIsC,GAAI,QAAS,sBAAsB,SAAEgC,GACvD3B,EAAIyD,iBAAkB9B,EAAG3B,EAAIQ,GAAGC,OAAQpD,OAIzC2C,EAAIQ,GAAGC,OAAQpD,GAAI2D,UAAUrB,GAAI,gBAAgB,SAAEgC,GAElD3B,EAAI0B,cACHC,EACA3B,EAAIQ,GAAGC,OAAQpD,GAAI2D,UACnBhB,EAAIQ,GAAGC,OAAQpD,GAAI4D,kBAKhB,EAAIjB,EAAIQ,GAAGC,OAAQpD,GAAI6D,WAAWY,QACtC9B,EAAIQ,GAAGC,OAAQpD,GAAI4D,cAAczB,KAAM,WAAY,gBAMtDF,EAAGU,EAAIC,MAxQN,CA0QEJ,OAAQC,OAAQD,OAAOE","file":"ctct-plugin-frontend.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","import './util';\nimport './validation';\n","/**\n * General-purpose utility stuff for CC plugin.\n */\n( function( global, $ ) {\n\n\t/**\n\t * Temporarily prevent the submit button from being clicked.\n\t */\n\t$( document ).ready( () => {\n\n\t\t$( '.ctct-submitted' ).on( 'click', () => {\n\t\t\tsetTimeout( () => {\n\t\t\t\tdisableSendButton();\n\t\t\t\tsetTimeout( enableSendButton, 3000 );\n\t\t\t}, 100 );\n\t\t} );\n\t} );\n\n\t/**\n\t * Disable form submit button.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction disableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', 'disabled' );\n\t}\n\n\t/**\n\t * Re-enable form submit buttons.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction enableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', null );\n\t}\n\n} ( window, jQuery ) );\n","/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\n window.CTCTSupport = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t\tapp.removePlaceholder();\n\t};\n\n\t/**\n\t * Remove placeholder text values.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.removePlaceholder = () => {\n\t\t$( '.ctct-form-field input, textarea' ).focus( () => {\n\t\t\t$( this ).data( 'placeholder', $( this ).attr( 'placeholder' ) ).attr( 'placeholder', '' );\n\t\t} ).blur( () => {\n\t\t\t$( this ).attr( 'placeholder', $( this ).data( 'placeholder' ) );\n\t\t} );\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\n\t\tapp.$c = {\n\t\t\t$forms: []\n\t\t};\n\n\t\t// Cache each form on the page.\n\t\t$( '.ctct-form-wrapper' ).each( function( i, formWrapper ) {\n\t\t\tapp.$c.$forms.push( $( formWrapper ).find( 'form' ) );\n\t\t} );\n\n\t\t// For each form, cache its common elements.\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\tvar $form = $( form );\n\n\t\t\tapp.$c.$forms[ i ].$honeypot = $form.find( '.ctct_usage_field' );\n\t\t\tapp.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );\n\t\t\tapp.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );\n\t\t} );\n\n\t\tapp.timeout = null;\n\t};\n\n\t/**\n\t * Remove the ctct-invalid class from elements that have it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.setAllInputsValid = () => {\n\t\t$( app.$c.$form + ' .ctct-invalid' ).removeClass( 'ctct-invalid' );\n\t};\n\n\t/**\n\t * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} error AJAX response error object.\n\t */\n\tapp.processError = ( error ) => {\n\n\t\t// If we have an id property set.\n\t\tif ( 'undefined' !== typeof( error.id ) ) {\n\t\t\t$( '#' + error.id ).addClass( 'ctct-invalid' );\n\t\t}\n\t};\n\n\t/**\n\t * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The change or keyup event triggering this callback.\n\t * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n\t * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n\t */\n\tapp.checkHoneypot = ( e, $honeyPot, $submitButton ) => {\n\n\t\t// If there is text in the honeypot, disable the submit button\n\t\tif ( 0 < $honeyPot.val().length ) {\n\t\t\t$submitButton.attr( 'disabled', 'disabled' );\n\t\t} else {\n\t\t\t$submitButton.attr( 'disabled', false );\n\t\t}\n\t};\n\n\t/**\n\t * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being validated.\n\t * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n\t */\n\tapp.validateSubmission = ( $form ) => {\n\n\t\tif ( 'on' !== $form.attr( 'data-doajax' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Ensure all required fields in this form are valid.\n\t\t$.each( $form.find( '[required]' ), function( i, field ) {\n\n\t\t\tif ( false === field.checkValidity() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Prepends form with a message that fades out in 5 seconds.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form a message is being displayed for.\n\t * @param {string} message The message content.\n\t * @param {string} classes Optional. HTML classes to add to the message wrapper.\n\t */\n\tapp.showMessage = ( $form, message, classes = '', role = 'log' ) => {\n\n\t\tconst $wrapper = $form.parents( '.ctct-form-wrapper' );\n\n\t\t$wrapper.find( 'p.ctct-message' ).remove();\n\n\t\tvar $p = $( '<p />', {\n\t\t\t'class': 'ctct-message ' + classes,\n\t\t\t'text': message,\n\t\t\t'role': role\n\t\t} ).prepend( $( '<button />', {\n\t\t\t'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n\t\t\t'html': '&#10005;',\n\t\t\t'aria-label': 'Dismiss Notification'\n\t\t} ) );\n\n\t\t$p.insertBefore( $form ).fadeIn( 200 );\n\n\t\t$wrapper.find( '.ctct-dismiss-ajax-notice' ).on( 'click', function() {\n\t\t\t$( this ).parents( '.ctct-message' ).remove();\n\t\t} );\n\t};\n\n\t/**\n\t * Submits the actual form via AJAX.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being submitted.\n\t */\n\tapp.submitForm = ( $form ) => {\n\n\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', true );\n\n\t\tvar ajaxData = {\n\t\t\t'action': 'ctct_process_form',\n\t\t\t'data': $form.serialize()\n\t\t};\n\n\t\t$.post( window.ajaxurl, ajaxData, ( response ) => {\n\n\t\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', false );\n\n\t\t\tif ( 'undefined' === typeof( response.status ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Here we'll want to disable the submit button and add some error classes.\n\t\t\tif ( 'success' !== response.status ) {\n\n\t\t\t\tif ( 'undefined' !== typeof( response.errors ) ) {\n\t\t\t\t\tapp.setAllInputsValid();\n\t\t\t\t\tresponse.errors.forEach( app.processError );\n\t\t\t\t} else {\n\t\t\t\t\tapp.showMessage( $form, response.message, 'ctct-error', 'alert' );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// If we're here, the submission was a success; show message and reset form fields.\n\t\t\tapp.showMessage( $form, response.message, 'ctct-success', 'status' );\n\t\t\t$form[0].reset();\n\t\t} );\n\t};\n\n\t/**\n\t * Handle the form submission.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The submit event.\n\t * @param {object} $form jQuery object for the current form being handled.\n\t * @return {boolean} False if unable to validate the form.\n\t */\n\tapp.handleSubmission = ( e, $form ) => {\n\n\t\tif ( ! app.validateSubmission( $form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tclearTimeout( app.timeout );\n\n\t\tapp.timeout = setTimeout( app.submitForm, 500, $form );\n\t};\n\n\t/**\n\t * Set up event bindings and callbacks.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\t// Attach submission handler to each form's Submit button.\n\t\t\tapp.$c.$forms[ i ].on( 'click', 'input[type=submit]', ( e ) => {\n\t\t\t\tapp.handleSubmission( e, app.$c.$forms[ i ] );\n\t\t\t} );\n\n\t\t\t// Ensure each form's honeypot is checked.\n\t\t\tapp.$c.$forms[ i ].$honeypot.on( 'change keyup', ( e ) => {\n\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\te,\n\t\t\t\t\tapp.$c.$forms[ i ].$honeypot,\n\t\t\t\t\tapp.$c.$forms[ i ].$submitButton\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// Disable the submit button by default until the captcha is passed (if captcha exists).\n\t\t\tif ( 0 < app.$c.$forms[ i ].$recaptcha.length ) {\n\t\t\t\tapp.$c.$forms[ i ].$submitButton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTSupport ) );\n"],"sourceRoot":""}
assets/js/ctct-plugin-frontend/util.js CHANGED
@@ -8,7 +8,7 @@
8
  */
9
  $( document ).ready( () => {
10
 
11
- $( '#ctct-submitted' ).on( 'click', () => {
12
  setTimeout( () => {
13
  disableSendButton();
14
  setTimeout( enableSendButton, 3000 );
@@ -25,7 +25,7 @@
25
  * @return {mixed} jQuery if attribute is set, undefined if not.
26
  */
27
  function disableSendButton() {
28
- return $( '#ctct-submitted' ).attr( 'disabled', 'disabled' );
29
  }
30
 
31
  /**
@@ -37,7 +37,7 @@
37
  * @return {mixed} jQuery if attribute is set, undefined if not.
38
  */
39
  function enableSendButton() {
40
- return $( '#ctct-submitted' ).attr( 'disabled', null );
41
  }
42
 
43
  } ( window, jQuery ) );
8
  */
9
  $( document ).ready( () => {
10
 
11
+ $( '.ctct-submitted' ).on( 'click', () => {
12
  setTimeout( () => {
13
  disableSendButton();
14
  setTimeout( enableSendButton, 3000 );
25
  * @return {mixed} jQuery if attribute is set, undefined if not.
26
  */
27
  function disableSendButton() {
28
+ return $( '.ctct-submitted' ).attr( 'disabled', 'disabled' );
29
  }
30
 
31
  /**
37
  * @return {mixed} jQuery if attribute is set, undefined if not.
38
  */
39
  function enableSendButton() {
40
+ return $( '.ctct-submitted' ).attr( 'disabled', null );
41
  }
42
 
43
  } ( window, jQuery ) );
assets/js/ctct-plugin-frontend/validation.js CHANGED
@@ -56,7 +56,7 @@
56
 
57
  var $form = $( form );
58
 
59
- app.$c.$forms[ i ].$honeypot = $form.find( '#ctct_usage_field' );
60
  app.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );
61
  app.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );
62
  } );
@@ -146,15 +146,26 @@
146
  * @param {string} message The message content.
147
  * @param {string} classes Optional. HTML classes to add to the message wrapper.
148
  */
149
- app.showMessage = ( $form, message, classes = '' ) => {
 
 
 
 
150
 
151
  var $p = $( '<p />', {
152
  'class': 'ctct-message ' + classes,
153
- 'text': message
154
- } );
155
-
156
- $p.insertBefore( $form ).fadeIn( 200 ).delay( 5000 ).slideUp( 200, () => {
157
- $p.remove();
 
 
 
 
 
 
 
158
  } );
159
  };
160
 
@@ -168,7 +179,7 @@
168
  */
169
  app.submitForm = ( $form ) => {
170
 
171
- $form.find( '#ctct-submitted' ).prop( 'disabled', true );
172
 
173
  var ajaxData = {
174
  'action': 'ctct_process_form',
@@ -177,7 +188,7 @@
177
 
178
  $.post( window.ajaxurl, ajaxData, ( response ) => {
179
 
180
- $form.find( '#ctct-submitted' ).prop( 'disabled', false );
181
 
182
  if ( 'undefined' === typeof( response.status ) ) {
183
  return false;
@@ -190,14 +201,14 @@
190
  app.setAllInputsValid();
191
  response.errors.forEach( app.processError );
192
  } else {
193
- app.showMessage( $form, response.message, 'ctct-error' );
194
  }
195
 
196
  return false;
197
  }
198
 
199
  // If we're here, the submission was a success; show message and reset form fields.
200
- app.showMessage( $form, response.message, 'ctct-success' );
201
  $form[0].reset();
202
  } );
203
  };
56
 
57
  var $form = $( form );
58
 
59
+ app.$c.$forms[ i ].$honeypot = $form.find( '.ctct_usage_field' );
60
  app.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );
61
  app.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );
62
  } );
146
  * @param {string} message The message content.
147
  * @param {string} classes Optional. HTML classes to add to the message wrapper.
148
  */
149
+ app.showMessage = ( $form, message, classes = '', role = 'log' ) => {
150
+
151
+ const $wrapper = $form.parents( '.ctct-form-wrapper' );
152
+
153
+ $wrapper.find( 'p.ctct-message' ).remove();
154
 
155
  var $p = $( '<p />', {
156
  'class': 'ctct-message ' + classes,
157
+ 'text': message,
158
+ 'role': role
159
+ } ).prepend( $( '<button />', {
160
+ 'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',
161
+ 'html': '&#10005;',
162
+ 'aria-label': 'Dismiss Notification'
163
+ } ) );
164
+
165
+ $p.insertBefore( $form ).fadeIn( 200 );
166
+
167
+ $wrapper.find( '.ctct-dismiss-ajax-notice' ).on( 'click', function() {
168
+ $( this ).parents( '.ctct-message' ).remove();
169
  } );
170
  };
171
 
179
  */
180
  app.submitForm = ( $form ) => {
181
 
182
+ $form.find( '.ctct-submitted' ).prop( 'disabled', true );
183
 
184
  var ajaxData = {
185
  'action': 'ctct_process_form',
188
 
189
  $.post( window.ajaxurl, ajaxData, ( response ) => {
190
 
191
+ $form.find( '.ctct-submitted' ).prop( 'disabled', false );
192
 
193
  if ( 'undefined' === typeof( response.status ) ) {
194
  return false;
201
  app.setAllInputsValid();
202
  response.errors.forEach( app.processError );
203
  } else {
204
+ app.showMessage( $form, response.message, 'ctct-error', 'alert' );
205
  }
206
 
207
  return false;
208
  }
209
 
210
  // If we're here, the submission was a success; show message and reset form fields.
211
+ app.showMessage( $form, response.message, 'ctct-success', 'status' );
212
  $form[0].reset();
213
  } );
214
  };
assets/js/ctct-plugin-recaptcha-v2.js CHANGED
@@ -81,7 +81,7 @@
81
  /******/
82
  /******/
83
  /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = 5);
85
  /******/ })
86
  /************************************************************************/
87
  /******/ ({
@@ -105,11 +105,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rec
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
- 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");
109
 
110
  /***/ }),
111
 
112
- /***/ 5:
113
  /*!***********************************************************!*\
114
  !*** multi ./assets/js/ctct-plugin-recaptcha-v2/index.js ***!
115
  \***********************************************************/
81
  /******/
82
  /******/
83
  /******/ // Load entry module and return exports
84
+ /******/ return __webpack_require__(__webpack_require__.s = 4);
85
  /******/ })
86
  /************************************************************************/
87
  /******/ ({
105
  /*! no static exports found */
106
  /***/ (function(module, exports) {
107
 
108
+ eval("/**\n * Enable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\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 <rebekah.vanepps@webdevstudios.com>\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");
109
 
110
  /***/ }),
111
 
112
+ /***/ 4:
113
  /*!***********************************************************!*\
114
  !*** multi ./assets/js/ctct-plugin-recaptcha-v2/index.js ***!
115
  \***********************************************************/
assets/js/ctct-plugin-recaptcha-v2.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=16)}({16:function(t,e,n){t.exports=n(17)},17:function(t,e,n){"use strict";n.r(e);n(18)},18:function(t,e){window.ctctEnableBtn=function(t){jQuery(jQuery(".ctct-submit")[t]).attr("disabled",!1)};window.ctctDisableBtn=function(t){jQuery(jQuery(".ctct-submit")[t]).attr("disabled","disabled")};window.renderReCaptcha=function(){jQuery(".g-recaptcha").each((function(t,e){grecaptcha.render(e,{sitekey:jQuery(e).attr("data-sitekey"),size:jQuery(e).attr("data-size"),tabindex:jQuery(e).attr("data-tabindex"),callback:function(){window.ctctEnableBtn(t)},"expired-callback":function(){window.ctctDisableBtn(t)},isolated:!0})}))}}});
2
  //# sourceMappingURL=ctct-plugin-recaptcha-v2.min.js.map
1
+ !function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=16)}({16:function(t,e,n){t.exports=n(17)},17:function(t,e,n){"use strict";n.r(e);n(18)},18:function(t,e){window.ctctEnableBtn=function(t){jQuery(t).attr("disabled",!1)};window.ctctDisableBtn=function(t){jQuery(t).attr("disabled","disabled")};window.renderReCaptcha=function(){jQuery(".g-recaptcha").each((function(t,e){var n=jQuery(e).siblings(".ctct-form-field-submit").find(".ctct-submit");grecaptcha.render(e,{sitekey:jQuery(e).attr("data-sitekey"),size:jQuery(e).attr("data-size"),tabindex:jQuery(e).attr("data-tabindex"),callback:function(){window.ctctEnableBtn(n)},"expired-callback":function(){window.ctctDisableBtn(n)},isolated:!0})}))}}});
2
  //# sourceMappingURL=ctct-plugin-recaptcha-v2.min.js.map
assets/js/ctct-plugin-recaptcha-v2.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-recaptcha-v2/index.js","webpack:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","ctctEnableBtn","index","jQuery","attr","ctctDisableBtn","renderReCaptcha","each","el","grecaptcha","render"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,sEClFrD,c,iBCGAC,OAAOC,cAHa,SAAUC,GAC1BC,OAAQA,OAAQ,gBAAkBD,IAAUE,KAAM,YAAY,IAOlEJ,OAAOK,eAHc,SAAUH,GAC3BC,OAAQA,OAAQ,gBAAkBD,IAAUE,KAAM,WAAY,aAoBlEJ,OAAOM,gBAhBe,WAClBH,OAAQ,gBAAiBI,MAAM,SAAUL,EAAOM,GAC5CC,WAAWC,OAAQF,EAAI,CACnB,QAAWL,OAAQK,GAAKJ,KAAM,gBAC9B,KAAQD,OAAQK,GAAKJ,KAAM,aAC3B,SAAYD,OAAQK,GAAKJ,KAAM,iBAC/B,SAAY,WACRJ,OAAOC,cAAeC,IAE1B,mBAAoB,WAChBF,OAAOK,eAAgBH,IAE3B,UAAY","file":"ctct-plugin-recaptcha-v2.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n","// This is the entry point for reCAPTCHA v2 JS. Add JavaScript imports here.\nimport './recaptcha';\n","var ctctEnableBtn = function( index ) {\n jQuery( jQuery( \".ctct-submit\" )[ index ] ).attr( \"disabled\", false );\n}\nwindow.ctctEnableBtn = ctctEnableBtn;\n\nvar ctctDisableBtn = function( index ) {\n jQuery( jQuery( \".ctct-submit\" )[ index ] ).attr( \"disabled\", \"disabled\" );\n}\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function() {\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() {\n window.ctctEnableBtn( index );\n },\n 'expired-callback': function() {\n window.ctctDisableBtn( index );\n },\n 'isolated': true,\n } );\n } );\n};\nwindow.renderReCaptcha = renderReCaptcha;\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-recaptcha-v2/index.js","webpack:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","ctctEnableBtn","submitBtn","jQuery","attr","ctctDisableBtn","renderReCaptcha","each","index","el","siblings","find","grecaptcha","render"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,sEClFrD,c,iBCWAC,OAAOC,cAHa,SAAUC,GAC1BC,OAAQD,GAAYE,KAAM,YAAY,IAe1CJ,OAAOK,eAHc,SAAUH,GAC3BC,OAAQD,GAAYE,KAAM,WAAY,aAsB1CJ,OAAOM,gBAlBe,WAClBH,OAAQ,gBAAiBI,MAAM,SAAUC,EAAOC,GAC5C,IAAMP,EAAYC,OAAQM,GAAKC,SAAU,2BAA4BC,KAAM,gBAE3EC,WAAWC,OAAQJ,EAAI,CACnB,QAAWN,OAAQM,GAAKL,KAAM,gBAC9B,KAAQD,OAAQM,GAAKL,KAAM,aAC3B,SAAYD,OAAQM,GAAKL,KAAM,iBAC/B,SAAY,WACRJ,OAAOC,cAAeC,IAE1B,mBAAoB,WAChBF,OAAOK,eAAgBH,IAE3B,UAAY","file":"ctct-plugin-recaptcha-v2.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n","// This is the entry point for reCAPTCHA v2 JS. Add JavaScript imports here.\nimport './recaptcha';\n","/**\n * Enable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctEnableBtn = function( submitBtn ) {\n jQuery( submitBtn ).attr( \"disabled\", false );\n}\nwindow.ctctEnableBtn = ctctEnableBtn;\n\n/**\n * Disable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctDisableBtn = function( submitBtn ) {\n jQuery( submitBtn ).attr( \"disabled\", \"disabled\" );\n}\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function() {\n jQuery( '.g-recaptcha' ).each( function( index, el ) {\n const submitBtn = jQuery( el ).siblings( '.ctct-form-field-submit' ).find( '.ctct-submit' );\n\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() {\n window.ctctEnableBtn( submitBtn );\n },\n 'expired-callback': function() {\n window.ctctDisableBtn( submitBtn );\n },\n 'isolated': true,\n } );\n } );\n};\nwindow.renderReCaptcha = renderReCaptcha;\n"],"sourceRoot":""}
assets/js/ctct-plugin-recaptcha-v2/recaptcha.js CHANGED
@@ -1,24 +1,42 @@
1
- var ctctEnableBtn = function( index ) {
2
- jQuery( jQuery( ".ctct-submit" )[ index ] ).attr( "disabled", false );
 
 
 
 
 
 
 
 
3
  }
4
  window.ctctEnableBtn = ctctEnableBtn;
5
 
6
- var ctctDisableBtn = function( index ) {
7
- jQuery( jQuery( ".ctct-submit" )[ index ] ).attr( "disabled", "disabled" );
 
 
 
 
 
 
 
 
8
  }
9
  window.ctctDisableBtn = ctctDisableBtn;
10
 
11
  var renderReCaptcha = function() {
12
  jQuery( '.g-recaptcha' ).each( function( index, el ) {
 
 
13
  grecaptcha.render( el, {
14
  'sitekey': jQuery( el ).attr( 'data-sitekey' ),
15
  'size': jQuery( el ).attr( 'data-size' ),
16
  'tabindex': jQuery( el ).attr( 'data-tabindex' ),
17
  'callback': function() {
18
- window.ctctEnableBtn( index );
19
  },
20
  'expired-callback': function() {
21
- window.ctctDisableBtn( index );
22
  },
23
  'isolated': true,
24
  } );
1
+ /**
2
+ * Enable submit button.
3
+ *
4
+ * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
5
+ * @since 1.8.3
6
+ *
7
+ * @param {Object} submitBtn Submit DOM element.
8
+ */
9
+ var ctctEnableBtn = function( submitBtn ) {
10
+ jQuery( submitBtn ).attr( "disabled", false );
11
  }
12
  window.ctctEnableBtn = ctctEnableBtn;
13
 
14
+ /**
15
+ * Disable submit button.
16
+ *
17
+ * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
18
+ * @since 1.8.3
19
+ *
20
+ * @param {Object} submitBtn Submit DOM element.
21
+ */
22
+ var ctctDisableBtn = function( submitBtn ) {
23
+ jQuery( submitBtn ).attr( "disabled", "disabled" );
24
  }
25
  window.ctctDisableBtn = ctctDisableBtn;
26
 
27
  var renderReCaptcha = function() {
28
  jQuery( '.g-recaptcha' ).each( function( index, el ) {
29
+ const submitBtn = jQuery( el ).siblings( '.ctct-form-field-submit' ).find( '.ctct-submit' );
30
+
31
  grecaptcha.render( el, {
32
  'sitekey': jQuery( el ).attr( 'data-sitekey' ),
33
  'size': jQuery( el ).attr( 'data-size' ),
34
  'tabindex': jQuery( el ).attr( 'data-tabindex' ),
35
  'callback': function() {
36
+ window.ctctEnableBtn( submitBtn );
37
  },
38
  'expired-callback': function() {
39
+ window.ctctDisableBtn( submitBtn );
40
  },
41
  'isolated': true,
42
  } );
assets/sass/_global.scss CHANGED
@@ -23,5 +23,13 @@
23
  border-color: $color-green;
24
  color: darken( $color-success, 20% );
25
  }
 
 
 
 
 
 
 
 
26
  }
27
  }
23
  border-color: $color-green;
24
  color: darken( $color-success, 20% );
25
  }
26
+
27
+ .ctct-dismiss-ajax-notice {
28
+ border-radius: 50%;
29
+ float: right;
30
+ line-height: 1;
31
+ padding: 0.85rem 1rem;
32
+ text-decoration: none;
33
+ }
34
  }
35
  }
assets/sass/_inputs.scss CHANGED
@@ -77,7 +77,7 @@
77
  top: -9999px !important;
78
  }
79
 
80
- #ctct_usage {
81
  border: 0 none;
82
  clip: rect( 0, 0, 0, 0 );
83
  height: 1px;
@@ -88,7 +88,7 @@
88
  width: 1px;
89
  }
90
 
91
- .no-recaptcha #ctct-submitted:disabled {
92
  background-image: url('../images/oval.min.svg');
93
  background-position: center;
94
  background-repeat: no-repeat;
@@ -97,7 +97,7 @@
97
  opacity: 0.3;
98
  }
99
 
100
- .has-recaptcha #ctct-submitted:disabled {
101
  cursor: not-allowed;
102
  }
103
  }
77
  top: -9999px !important;
78
  }
79
 
80
+ .ctct_usage {
81
  border: 0 none;
82
  clip: rect( 0, 0, 0, 0 );
83
  height: 1px;
88
  width: 1px;
89
  }
90
 
91
+ .no-recaptcha .ctct-submitted:disabled {
92
  background-image: url('../images/oval.min.svg');
93
  background-position: center;
94
  background-repeat: no-repeat;
97
  opacity: 0.3;
98
  }
99
 
100
+ .has-recaptcha .ctct-submitted:disabled {
101
  cursor: not-allowed;
102
  }
103
  }
constant-contact-forms.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
- * Version: 1.8.6
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
@@ -72,7 +72,7 @@ class Constant_Contact {
72
  * @since 1.0.0
73
  * @var string
74
  */
75
- const VERSION = '1.8.6';
76
 
77
  /**
78
  * URL of plugin directory.
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
+ * Version: 1.8.7
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
72
  * @since 1.0.0
73
  * @var string
74
  */
75
+ const VERSION = '1.8.7';
76
 
77
  /**
78
  * URL of plugin directory.
includes/class-api.php CHANGED
@@ -509,6 +509,11 @@ class ConstantContact_API {
509
  try {
510
  $response = $this->cc()->contactService->getContacts( $api_token, [ 'email' => $email ] );
511
 
 
 
 
 
 
512
  if ( isset( $response->results ) && ! empty( $response->results ) ) {
513
  constant_contact_maybe_log_it( 'API', 'Contact set to be updated', [ 'form' => get_the_title( $form_id ) ] );
514
  $return_contact = $this->update_contact( $response, $api_token, $list, $new_contact, $form_id );
509
  try {
510
  $response = $this->cc()->contactService->getContacts( $api_token, [ 'email' => $email ] );
511
 
512
+ // Remove ctct-instance if present to avoid errors.
513
+ if ( array_key_exists( 'ctct-instance', $new_contact ) ) {
514
+ unset( $new_contact['ctct-instance'] );
515
+ }
516
+
517
  if ( isset( $response->results ) && ! empty( $response->results ) ) {
518
  constant_contact_maybe_log_it( 'API', 'Contact set to be updated', [ 'form' => get_the_title( $form_id ) ] );
519
  $return_contact = $this->update_contact( $response, $api_token, $list, $new_contact, $form_id );
includes/class-display.php CHANGED
@@ -281,7 +281,7 @@ class ConstantContact_Display {
281
  if ( $response && isset( $response['message'] ) && isset( $response['status'] ) ) {
282
 
283
  if ( 'success' === $response['status'] ) {
284
- return $this->message( 'success', $response['message'] );
285
  } else {
286
 
287
  // If we didn't get a success message, then we want to error.
@@ -294,7 +294,7 @@ class ConstantContact_Display {
294
 
295
  if ( 'error' === $status || $error_message ) {
296
  if ( ! empty( $error_message ) ) {
297
- $form_err_display = $this->message( 'error', $error_message );
298
  }
299
  }
300
 
@@ -346,7 +346,7 @@ class ConstantContact_Display {
346
 
347
  $return .= $form_err_display;
348
 
349
- $return .= $this->build_form_fields( $form_data, $old_values, $req_errors );
350
 
351
  if ( ! $disable_recaptcha && ConstantContact_reCAPTCHA::has_recaptcha_keys() ) {
352
  $recaptcha_version = ctct_get_settings_option( '_ctct_recaptcha_version', '' );
@@ -459,12 +459,13 @@ class ConstantContact_Display {
459
  *
460
  * @since 1.0.0
461
  *
462
- * @param array $form_data Formulated cmb2 data for form.
463
- * @param array $old_values Original values.
464
- * @param array $req_errors Errors.
 
465
  * @return string
466
  */
467
- public function build_form_fields( $form_data, $old_values, $req_errors ) {
468
  $return = '';
469
  $form_id = absint( $form_data['options']['form_id'] );
470
 
@@ -482,12 +483,12 @@ class ConstantContact_Display {
482
 
483
  if ( isset( $form_data['fields'] ) && is_array( $form_data['fields'] ) ) {
484
  foreach ( $form_data['fields'] as $key => $value ) {
485
- $return .= $this->field( $value, $old_values, $req_errors, $form_id, $label_placement );
486
  }
487
  }
488
 
489
  if ( isset( $form_data['options'] ) ) {
490
- $return .= $this->opt_in( $form_data['options'] );
491
  }
492
 
493
  return $return;
@@ -502,7 +503,7 @@ class ConstantContact_Display {
502
  */
503
  public function build_honeypot_field() {
504
  return sprintf(
505
- '<div id="ctct_usage"><label for="ctct_usage_field">%s</label><input type="text" value="" name="ctct_usage_field" id="ctct_usage_field" /></div>',
506
  esc_html__( 'Constant Contact Use.', 'constant-contact-forms' )
507
  );
508
  }
@@ -607,14 +608,15 @@ class ConstantContact_Display {
607
  * @since 1.0.0
608
  * @since 1.4.0 Added label placement parameter.
609
  *
610
- * @param array $field Field data.
611
- * @param array $old_values Original values.
612
- * @param array $req_errors Errors.
613
- * @param int $form_id Current form ID.
614
- * @param string $label_placement Label placement location.
615
- * @return string HTML markup
 
616
  */
617
- public function field( $field, $old_values = [], $req_errors = [], $form_id = 0, $label_placement = 'top' ) {
618
  if ( ! isset( $field['name'] ) || ! isset( $field['map_to'] ) ) {
619
  return '';
620
  }
@@ -670,31 +672,33 @@ class ConstantContact_Display {
670
  $value = $this->get_submitted_value( $value, $map, $field, $old_values );
671
 
672
  switch ( $type ) {
 
 
 
 
673
  case 'custom':
674
  case 'first_name':
675
  case 'last_name':
676
- case 'phone_number':
677
  case 'job_title':
678
  case 'company':
679
- case 'website':
680
  case 'text_field':
681
- return $this->input( 'text', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement );
682
  case 'custom_text_area':
683
- return $this->textarea( $name, $map, $value, $desc, $req, $field_error, 'maxlength="500"', $label_placement );
684
  case 'email':
685
- return $this->input( 'email', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement );
686
  case 'hidden':
687
  return $this->input( 'hidden', $name, $map, $value, $desc, $req );
688
  case 'checkbox':
689
- return $this->checkbox( $name, $map, $value, $desc );
690
  case 'submit':
691
  return $this->input( 'submit', $name, $map, $value, $desc, $req, false, $field_error );
692
  case 'address':
693
- return $this->address( $name, $map, $value, $desc, $req, $field_error, $label_placement );
694
  case 'anniversery':
695
  case 'birthday':
696
  // Need this to be month / day / year.
697
- return $this->dates( $name, $map, $value, $desc, $req, $field_error );
698
  default:
699
  return $this->input( 'text', $name, $map, $value, $desc, $req, false, $field_error );
700
  }
@@ -761,17 +765,17 @@ class ConstantContact_Display {
761
  *
762
  * @since 1.0.0
763
  *
764
- * @param string $type Success/error/etc for class.
765
- * @param string $message Message to display to user.
766
- * @return string HTML markup.
 
767
  */
768
- public function message( $type, $message ) {
769
- $role = ( 'error' === $type ) ? ' role="alert"' : '';
770
-
771
  return sprintf(
772
- '<p class="ctct-message %s"%s>%s</p>',
773
  esc_attr( $type ),
774
- $role,
 
775
  esc_html( $message )
776
  );
777
  }
@@ -937,21 +941,23 @@ class ConstantContact_Display {
937
  *
938
  * @since 1.0.0
939
  *
940
- * @param string $type Type of form field.
941
- * @param string $name ID of form field.
942
- * @param string $id ID attribute value.
943
- * @param string $value pre-filled value.
944
- * @param string $label label text for input.
945
- * @param boolean $req If field required.
946
- * @param boolean $f_only If we only return the field itself, with no label.
947
- * @param boolean $field_error Field error.
948
- * @param int $form_id Current form ID.
949
- * @param string $label_placement Where to place the label.
950
- * @return string HTML markup for field.
 
951
  */
952
- public function input( $type = 'text', $name = '', $id = '', $value = '', $label = '', $req = false, $f_only = false, $field_error = false, $form_id = 0, $label_placement = '' ) {
953
  $name = sanitize_text_field( $name );
954
- $f_id = sanitize_title( $id );
 
955
  $input_inline_styles = '';
956
  $label_placement_class = 'ctct-label-' . $label_placement;
957
  $specific_form_styles = $this->specific_form_styles;
@@ -966,7 +972,7 @@ class ConstantContact_Display {
966
  $label = sanitize_text_field( $label );
967
  $req_text = $req ? 'required' : '';
968
 
969
- $markup = $this->field_top( $type, $name, $f_id, $label, $req );
970
 
971
  $req_label = '';
972
 
@@ -979,7 +985,7 @@ class ConstantContact_Display {
979
  } else {
980
  $markup .= '<span class="' . $label_placement_class . '">';
981
  }
982
- $markup .= $this->get_label( $f_id, $name . ' ' . $req_label );
983
  $markup .= '</span>';
984
  }
985
 
@@ -994,13 +1000,13 @@ class ConstantContact_Display {
994
  * Filter to add classes for the rendering input.
995
  *
996
  * @since 1.2.0
997
- * @param array $classes Array of classes to apply to the field.
998
- * @param string $type The field type being rendered.
999
- * @param int $form_id Form ID.
1000
- * @param int $f_id Field ID.
1001
  * @return array
1002
  */
1003
- $classes = apply_filters( 'constant_contact_input_classes', $classes, $type, $form_id, $f_id );
1004
 
1005
  /**
1006
  * Filters whether or not to remove characters from potential maxlength attribute value.
@@ -1019,24 +1025,27 @@ class ConstantContact_Display {
1019
  $classes[] = 'ctct-invalid';
1020
  }
1021
 
 
1022
  $class_attr = '';
1023
 
1024
  if ( count( $classes ) ) {
1025
  $class_attr = 'class="' . implode( ' ', $classes ) . '"';
1026
  }
1027
 
1028
- $field = '<input %s type="%s" name="%s" id="%s" %s value="%s" %s placeholder="%s" %s />';
 
1029
  $markup .= sprintf(
1030
  $field,
1031
  $req_text,
1032
  $type,
1033
- $f_id,
1034
- $f_id,
1035
  $input_inline_styles,
1036
  $value,
1037
  $max_length,
1038
- $label,
1039
- $class_attr
 
 
1040
  );
1041
 
1042
  // Reassign because if we want "field only", like for hidden inputs, we need to still pass a value that went through sprintf().
@@ -1044,12 +1053,12 @@ class ConstantContact_Display {
1044
 
1045
  if ( ( 'bottom' === $label_placement || 'right' === $label_placement ) && ( 'submit' !== $type ) && ( 'hidden' !== $type ) ) {
1046
  $markup .= '<span class="' . $label_placement_class . '">';
1047
- $markup .= $this->get_label( $f_id, $name . ' ' . $req_label );
1048
  $markup .= '</span>';
1049
  }
1050
 
1051
  if ( $field_error ) {
1052
- $markup .= $this->field_bottom( $id, $field_error );
1053
  } else {
1054
  $markup .= $this->field_bottom();
1055
  }
@@ -1066,20 +1075,21 @@ class ConstantContact_Display {
1066
  *
1067
  * @since 1.0.0
1068
  *
1069
- * @param string $name Name/it of field.
1070
- * @param string $f_id Field ID.
1071
- * @param string $value Value of field.
1072
- * @param string $label Label / desc text.
1073
- * @return string HTML markup for checkbox.
 
1074
  */
1075
- public function checkbox( $name = '', $f_id = '', $value = '', $label = '' ) {
1076
- $name = sanitize_text_field( $name );
1077
- $f_id = sanitize_title( $f_id );
1078
- $value = sanitize_text_field( $value );
1079
- $label = esc_attr( $label );
1080
- $type = 'checkbox';
1081
-
1082
- $classes = [ 'ctct-' . esc_attr( $type ) ];
1083
 
1084
  /**
1085
  * Filter to add classes for the rendering input.
@@ -1089,10 +1099,10 @@ class ConstantContact_Display {
1089
  * @param string $type The field type being rendered.
1090
  * @return array
1091
  */
1092
- $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.
1093
 
1094
- $markup = $this->field_top( $type, $name, $f_id, $label, false, false );
1095
- $markup .= '<input type="' . $type . '" name="' . $f_id . '" id="' . $f_id . '" value="' . $value . '" class="' . implode( ' ', $classes ) . '" />';
1096
  $markup .= $this->field_bottom( $name, ' ' . $label );
1097
 
1098
  return $markup;
@@ -1135,10 +1145,11 @@ class ConstantContact_Display {
1135
  *
1136
  * @since 1.0.0
1137
  *
1138
- * @param array $form_data Form data structure.
1139
- * @return string Markup of optin form.
 
1140
  */
1141
- public function opt_in( $form_data ) {
1142
 
1143
  if ( ! isset( $form_data['optin'] ) ) {
1144
  return '';
@@ -1151,7 +1162,7 @@ class ConstantContact_Display {
1151
  ] );
1152
 
1153
  if ( isset( $optin['list'] ) && $optin['list'] ) {
1154
- return $this->optin_display( $optin );
1155
  }
1156
 
1157
  return '';
@@ -1162,10 +1173,11 @@ class ConstantContact_Display {
1162
  *
1163
  * @since 1.0.0
1164
  *
1165
- * @param array $optin Optin data.
1166
- * @return string HTML markup.
 
1167
  */
1168
- public function optin_display( $optin ) {
1169
 
1170
  $label = sanitize_text_field( isset( $optin['instructions'] ) ? $optin['instructions'] : '' );
1171
  $value = sanitize_text_field( isset( $optin['list'] ) ? $optin['list'] : '' );
@@ -1181,7 +1193,7 @@ class ConstantContact_Display {
1181
  $markup = '<div class="ctct-optin-hide" style="display:none;">';
1182
  }
1183
 
1184
- $markup .= $this->get_optin_markup( $label, $value, $show );
1185
 
1186
  if ( ! $show ) {
1187
  $markup .= '</div><!--.ctct-optin-hide -->';
@@ -1195,17 +1207,20 @@ class ConstantContact_Display {
1195
  *
1196
  * @since 1.0.0
1197
  *
1198
- * @param string $label Label for field.
1199
- * @param string $value Value of opt in field.
1200
- * @param string $show Whether or not we are showing the field.
1201
- * @return string HTML markup
 
1202
  */
1203
- public function get_optin_markup( $label, $value, $show ) {
1204
- $checked = $show ? '' : 'checked';
 
 
1205
 
1206
- $markup = $this->field_top( 'checkbox', 'ctct-opt-in', 'ctct-opt-in', $label, false, false );
1207
- $markup .= '<input type="checkbox" ' . $checked . ' name="ctct-opt-in" id="ctct-opt-in" class="ctct-checkbox ctct-opt-in" value="' . $value . '" />';
1208
- $markup .= $this->field_bottom( 'ctct-opt-in', ' ' . wp_kses_post( $label ), false );
1209
 
1210
  return $markup;
1211
  }
@@ -1215,21 +1230,23 @@ class ConstantContact_Display {
1215
  *
1216
  * @since 1.0.0
1217
  *
1218
- * @param string $name Name of fields.
1219
- * @param string $f_id Form ID name.
1220
- * @param array $value Values of each field.
1221
- * @param string $desc Label of field.
1222
- * @param boolean $req Whether or not required.
1223
- * @param string $field_error Field error value.
1224
- * @param string $label_placement Where to put the label.
1225
- * @return string field HTML markup.
 
1226
  */
1227
- public function address( $name = '', $f_id = '', $value = [], $desc = '', $req = false, $field_error = '', $label_placement = 'top' ) {
1228
- $street = esc_html__( 'Street Address', 'constant-contact-forms' );
1229
- $line_2 = esc_html__( 'Address Line 2', 'constant-contact-forms' );
1230
- $city = esc_html__( 'City', 'constant-contact-forms' );
1231
- $state = esc_html__( 'State', 'constant-contact-forms' );
1232
- $zip = esc_html__( 'ZIP Code', 'constant-contact-forms' );
 
1233
 
1234
  $v_street = isset( $value['street_address'] ) ? $value['street_address'] : '';
1235
  $v_line_2 = isset( $value['line_2_address'] ) ? $value['line_2_address'] : '';
@@ -1246,17 +1263,18 @@ class ConstantContact_Display {
1246
  $label_street1 = sprintf(
1247
  '<span class="%1$s"><label for="street_%2$s" style="%3$s">%4$s</label></span>',
1248
  esc_attr( $label_placement_class ),
1249
- esc_attr( $f_id ),
1250
  esc_attr( $inline_font_styles ),
1251
  esc_attr( $street ) . $req_label
1252
  );
1253
  $input_street1 = sprintf(
1254
- '<input %1$stype="text" class="ctct-text ctct-address-street %2$s" name="street_%3$s" id="street_%4$s" value="%5$s">',
1255
  $req,
1256
  esc_attr( $label_placement_class ),
1257
- esc_attr( $f_id ),
1258
- esc_attr( $f_id ),
1259
- esc_attr( $v_street )
 
1260
  );
1261
 
1262
  $input_street1_whole = '';
@@ -1270,17 +1288,18 @@ class ConstantContact_Display {
1270
  $label_street2 = sprintf(
1271
  '<span class="%1$s"><label for="line_2_%2$s" style="%3$s">%4$s</label></span>',
1272
  $label_placement_class,
1273
- esc_attr( $f_id ),
1274
  esc_attr( $inline_font_styles ),
1275
  esc_attr( $line_2 )
1276
  );
1277
 
1278
  $input_street2 = sprintf(
1279
- '<input type="text" class="ctct-text ctct-address-line-2 %1$s" name="line_2_%2$s" id="line_2_%3$s" value="%4$s">',
1280
  esc_attr( $label_placement_class ),
1281
- esc_attr( $f_id ),
1282
- esc_attr( $f_id ),
1283
- esc_attr( $v_line_2 )
 
1284
  );
1285
 
1286
  $input_street2_whole = '';
@@ -1296,18 +1315,19 @@ class ConstantContact_Display {
1296
  $label_city = sprintf(
1297
  '<span class="%1$s"><label for="city_%2$s" style="%3$s">%4$s</label></span>',
1298
  $label_placement_class,
1299
- esc_attr( $f_id ),
1300
  esc_attr( $inline_font_styles ),
1301
  esc_attr( $city ) . $req_label
1302
  );
1303
 
1304
  $input_city = sprintf(
1305
- '<input %1$stype="text" class="ctct-text ctct-address-city %2$s" name="city_%3$s" id="city_%4$s" value="%5$s">',
1306
  $req,
1307
  esc_attr( $label_placement_class ),
1308
- esc_attr( $f_id ),
1309
- esc_attr( $f_id ),
1310
- esc_attr( $v_city )
 
1311
  );
1312
 
1313
  $input_city_whole = '';
@@ -1323,18 +1343,19 @@ class ConstantContact_Display {
1323
  $label_state = sprintf(
1324
  '<span class="%1$s"><label for="state_%2$s" style="%3$s">%4$s</label></span>',
1325
  $label_placement_class,
1326
- esc_attr( $f_id ),
1327
  esc_attr( $inline_font_styles ),
1328
  esc_attr( $state ) . $req_label
1329
  );
1330
 
1331
  $input_state = sprintf(
1332
- '<input %1$stype="text" class="ctct-text ctct-address-state %2$s" name="state_%3$s" id="state_%4$s" value="%5$s">',
1333
  $req,
1334
  esc_attr( $label_placement_class ),
1335
- esc_attr( $f_id ),
1336
- esc_attr( $f_id ),
1337
- esc_attr( $v_state )
 
1338
  );
1339
 
1340
  $input_state_whole = '';
@@ -1350,18 +1371,19 @@ class ConstantContact_Display {
1350
  $label_zip = sprintf(
1351
  '<span class="%1$s"><label for="zip_%2$s" style="%3$s">%4$s</label></span>',
1352
  $label_placement_class,
1353
- esc_attr( $f_id ),
1354
  esc_attr( $inline_font_styles ),
1355
  esc_attr( $zip ) . $req_label
1356
  );
1357
 
1358
  $input_zip = sprintf(
1359
- '<input %1$stype="text" class="ctct-text ctct-address-zip %2$s" name="zip_%3$s" id="zip_%4$s" value="%5$s">',
1360
  $req,
1361
  esc_attr( $label_placement_class ),
1362
- esc_attr( $f_id ),
1363
- esc_attr( $f_id ),
1364
- esc_attr( $v_zip )
 
1365
  );
1366
 
1367
  $input_zip_whole = '';
@@ -1376,10 +1398,10 @@ class ConstantContact_Display {
1376
 
1377
  $return = '<fieldset class="ctct-address"><legend style="%s">%s</legend>';
1378
  $return .= '<div class="ctct-form-field ctct-field-full address-line-1%s">%s</div>';
1379
- $return .= '<div class="ctct-form-field ctct-field-full address-line-2%s" id="input_2_1_2_container">%s</div>';
1380
- $return .= '<div class="ctct-form-field ctct-field-third address-city%s" id="input_2_1_3_container">%s</div>';
1381
- $return .= '<div class="ctct-form-field ctct-field-third address-state%s" id="input_2_1_4_container">%s</div>';
1382
- $return .= '<div class="ctct-form-field ctct-field-third address-zip%s" id="input_2_1_5_container">%s</div>';
1383
  $return .= '</fieldset>';
1384
 
1385
  return sprintf(
@@ -1404,15 +1426,16 @@ class ConstantContact_Display {
1404
  *
1405
  * @since 1.0.0
1406
  *
1407
- * @param string $name Name of field.
1408
- * @param string $f_id Field ID.
1409
- * @param array $value Values to pre-fill.
1410
- * @param string $desc Description of fields.
1411
- * @param boolean $req If is required.
1412
- * @param string $field_error Field error text.
1413
- * @return string Fields HTML markup.
 
1414
  */
1415
- public function dates( $name = '', $f_id = '', $value = [], $desc = '', $req = false, $field_error = '' ) {
1416
  $month = esc_html__( 'Month', 'constant-contact-forms' );
1417
  $day = esc_html__( 'Day', 'constant-contact-forms' );
1418
  $year = esc_html__( 'Year', 'constant-contact-forms' );
@@ -1426,13 +1449,13 @@ class ConstantContact_Display {
1426
  $return = '<p class="ctct-date"><fieldset>';
1427
  $return .= ' <legend>' . esc_attr( $name ) . '</legend>';
1428
  $return .= ' <div class="ctct-form-field ctct-field-inline month' . $req_class . '">';
1429
- $return .= $this->get_date_dropdown( $month, $f_id, 'month', $v_month, $req );
1430
  $return .= ' </div>';
1431
  $return .= ' <div class="ctct-form-field ctct-field-inline day' . $req_class . '">';
1432
- $return .= $this->get_date_dropdown( $day, $f_id, 'day', $v_day, $req );
1433
  $return .= ' </div>';
1434
  $return .= ' <div class="ctct-form-field ctct-field-inline year' . $req_class . '">';
1435
- $return .= $this->get_date_dropdown( $year, $f_id, 'year', $v_year, $req );
1436
  $return .= ' </div>';
1437
 
1438
  $return .= '</fieldset></p>';
@@ -1445,18 +1468,20 @@ class ConstantContact_Display {
1445
  *
1446
  * @since 1.0.0
1447
  *
1448
- * @param string $text Text for default option.
1449
- * @param string $f_id Field ID.
1450
- * @param string $type Type of dropdown (day, month, year).
1451
- * @param string $selected_value Previous value.
1452
- * @param boolean $req If is require.
1453
- * @return string field markup.
 
1454
  */
1455
- public function get_date_dropdown( $text = '', $f_id = '', $type = '', $selected_value = '', $req = false ) {
1456
- $f_id = str_replace( 'birthday', 'birthday_' . $type, $f_id );
1457
- $f_id = str_replace( 'anniversary', 'anniversary_' . $type, $f_id );
 
1458
 
1459
- $return = '<select name="' . esc_attr( $f_id ) . '" class="ctct-date-select ctct-date-select-' . esc_attr( $type ) . '">';
1460
 
1461
  if ( $req ) {
1462
  $return = str_replace( '">', '" required>', $return );
@@ -1600,22 +1625,23 @@ class ConstantContact_Display {
1600
  *
1601
  * @since 1.0.0
1602
  *
1603
- * @param string $name Name of field.
1604
- * @param string $map ID of field.
1605
- * @param string $value Previous value of field.
1606
- * @param string $desc Description/label of field.
1607
- * @param boolean $req If is required.
1608
- * @param string $field_error Error from field.
1609
- * @param string $extra_attrs Extra attributes to append.
1610
- * @param string $label_placement Where to place the label.
1611
- * @return string HTML markup.
 
1612
  */
1613
- public function textarea( $name = '', $map = '', $value = '', $desc = '', $req = false, $field_error = '', $extra_attrs = '', $label_placement = 'top' ) {
1614
 
1615
  $classes = [ 'ctct-form-field' ];
1616
  $textarea_classes = [ 'ctct-textarea' ];
1617
-
1618
- $req_text = $req ? 'required' : '';
1619
 
1620
  if ( $req ) {
1621
  $classes[] = 'ctct-form-field-required';
@@ -1631,8 +1657,8 @@ class ConstantContact_Display {
1631
  }
1632
 
1633
  $return = '<p class="' . implode( ' ', $classes ) . '">';
1634
- $label = '<span class="' . $label_placement_class . '"><label for="' . esc_attr( $map ) . '">' . esc_attr( $name ) . ' ' . $req_label . '</label></span>';
1635
- $textarea = '<textarea class="' . esc_attr( implode( ' ', $textarea_classes ) ) . '" ' . $req_text . ' name="' . esc_attr( $map ) . '" placeholder="' . esc_attr( $desc ) . '" ' . $extra_attrs . '>' . esc_html( $value ) . '</textarea>';
1636
 
1637
  if ( 'top' === $label_placement || 'left' === $label_placement || 'hidden' === $label_placement ) {
1638
  $return .= $label . $textarea;
@@ -1643,7 +1669,7 @@ class ConstantContact_Display {
1643
  }
1644
 
1645
  if ( $field_error ) {
1646
- $return .= '<span class="ctct-field-error"><label for="' . esc_attr( $map ) . '">' . esc_attr( __( 'Error: Please correct your entry.', 'constant-contact-forms' ) ) . '</label></span>';
1647
  }
1648
 
1649
  return $return . '</p>';
281
  if ( $response && isset( $response['message'] ) && isset( $response['status'] ) ) {
282
 
283
  if ( 'success' === $response['status'] ) {
284
+ return $this->message( 'success', $response['message'], 'status' );
285
  } else {
286
 
287
  // If we didn't get a success message, then we want to error.
294
 
295
  if ( 'error' === $status || $error_message ) {
296
  if ( ! empty( $error_message ) ) {
297
+ $form_err_display = $this->message( 'error', $error_message, 'alert' );
298
  }
299
  }
300
 
346
 
347
  $return .= $form_err_display;
348
 
349
+ $return .= $this->build_form_fields( $form_data, $old_values, $req_errors, $instance );
350
 
351
  if ( ! $disable_recaptcha && ConstantContact_reCAPTCHA::has_recaptcha_keys() ) {
352
  $recaptcha_version = ctct_get_settings_option( '_ctct_recaptcha_version', '' );
459
  *
460
  * @since 1.0.0
461
  *
462
+ * @param array $form_data Formulated cmb2 data for form.
463
+ * @param array $old_values Original values.
464
+ * @param array $req_errors Errors.
465
+ * @param int $instance Current form instance.
466
  * @return string
467
  */
468
+ public function build_form_fields( $form_data, $old_values, $req_errors, $instance ) {
469
  $return = '';
470
  $form_id = absint( $form_data['options']['form_id'] );
471
 
483
 
484
  if ( isset( $form_data['fields'] ) && is_array( $form_data['fields'] ) ) {
485
  foreach ( $form_data['fields'] as $key => $value ) {
486
+ $return .= $this->field( $value, $old_values, $req_errors, $form_id, $label_placement, $instance );
487
  }
488
  }
489
 
490
  if ( isset( $form_data['options'] ) ) {
491
+ $return .= $this->opt_in( $form_data['options'], $instance );
492
  }
493
 
494
  return $return;
503
  */
504
  public function build_honeypot_field() {
505
  return sprintf(
506
+ '<div class="ctct_usage"><label for="ctct_usage_field">%s</label><input type="text" value="" name="ctct_usage_field" class="ctct_usage_field" tabindex="-1" /></div>',
507
  esc_html__( 'Constant Contact Use.', 'constant-contact-forms' )
508
  );
509
  }
608
  * @since 1.0.0
609
  * @since 1.4.0 Added label placement parameter.
610
  *
611
+ * @param array $field Field data.
612
+ * @param array $old_values Original values.
613
+ * @param array $req_errors Errors.
614
+ * @param int $form_id Current form ID.
615
+ * @param string $label_placement Label placement location.
616
+ * @param int $instance Current form instance.
617
+ * @return string HTML markup
618
  */
619
+ public function field( $field, $old_values = [], $req_errors = [], $form_id = 0, $label_placement = 'top', $instance = 0 ) {
620
  if ( ! isset( $field['name'] ) || ! isset( $field['map_to'] ) ) {
621
  return '';
622
  }
672
  $value = $this->get_submitted_value( $value, $map, $field, $old_values );
673
 
674
  switch ( $type ) {
675
+ case 'phone_number':
676
+ return $this->input( 'tel', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement, $instance );
677
+ case 'website':
678
+ return $this->input( 'url', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement, $instance );
679
  case 'custom':
680
  case 'first_name':
681
  case 'last_name':
 
682
  case 'job_title':
683
  case 'company':
 
684
  case 'text_field':
685
+ return $this->input( 'text', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement, $instance );
686
  case 'custom_text_area':
687
+ return $this->textarea( $name, $map, $value, $desc, $req, $field_error, 'maxlength="500"', $label_placement, $instance );
688
  case 'email':
689
+ return $this->input( 'email', $name, $map, $value, $desc, $req, false, $field_error, $form_id, $label_placement, $instance );
690
  case 'hidden':
691
  return $this->input( 'hidden', $name, $map, $value, $desc, $req );
692
  case 'checkbox':
693
+ return $this->checkbox( $name, $map, $value, $desc, $instance );
694
  case 'submit':
695
  return $this->input( 'submit', $name, $map, $value, $desc, $req, false, $field_error );
696
  case 'address':
697
+ return $this->address( $name, $map, $value, $desc, $req, $field_error, $label_placement, $instance );
698
  case 'anniversery':
699
  case 'birthday':
700
  // Need this to be month / day / year.
701
+ return $this->dates( $name, $map, $value, $desc, $req, $field_error, $instance );
702
  default:
703
  return $this->input( 'text', $name, $map, $value, $desc, $req, false, $field_error );
704
  }
765
  *
766
  * @since 1.0.0
767
  *
768
+ * @param string $type Success/error/etc for class.
769
+ * @param string $message Message to display to user.
770
+ * @param string $role Message role.
771
+ * @return string HTML markup.
772
  */
773
+ public function message( $type, $message, $role = 'log' ) {
 
 
774
  return sprintf(
775
+ '<p class="ctct-message %s ctct-%s" role="%s">%s</p>',
776
  esc_attr( $type ),
777
+ esc_attr( $type ),
778
+ esc_attr( $role ),
779
  esc_html( $message )
780
  );
781
  }
941
  *
942
  * @since 1.0.0
943
  *
944
+ * @param string $type Type of form field.
945
+ * @param string $name ID of form field.
946
+ * @param string $id ID attribute value.
947
+ * @param string $value pre-filled value.
948
+ * @param string $label label text for input.
949
+ * @param boolean $req If field required.
950
+ * @param boolean $f_only If we only return the field itself, with no label.
951
+ * @param boolean $field_error Field error.
952
+ * @param int $form_id Current form ID.
953
+ * @param string $label_placement Where to place the label.
954
+ * @param int $instance Current form instance.
955
+ * @return string HTML markup for field.
956
  */
957
+ public function input( $type = 'text', $name = '', $id = '', $value = '', $label = '', $req = false, $f_only = false, $field_error = false, $form_id = 0, $label_placement = '', $instance = 0 ) {
958
  $name = sanitize_text_field( $name );
959
+ $field_key = sanitize_title( $id );
960
+ $field_id = "{$field_key}_$instance";
961
  $input_inline_styles = '';
962
  $label_placement_class = 'ctct-label-' . $label_placement;
963
  $specific_form_styles = $this->specific_form_styles;
972
  $label = sanitize_text_field( $label );
973
  $req_text = $req ? 'required' : '';
974
 
975
+ $markup = $this->field_top( $type, $name, $field_key, $label, $req );
976
 
977
  $req_label = '';
978
 
985
  } else {
986
  $markup .= '<span class="' . $label_placement_class . '">';
987
  }
988
+ $markup .= $this->get_label( $field_id, $name . ' ' . $req_label );
989
  $markup .= '</span>';
990
  }
991
 
1000
  * Filter to add classes for the rendering input.
1001
  *
1002
  * @since 1.2.0
1003
+ * @param array $classes Array of classes to apply to the field.
1004
+ * @param string $type The field type being rendered.
1005
+ * @param int $form_id Form ID.
1006
+ * @param int $field_key Field ID.
1007
  * @return array
1008
  */
1009
+ $classes = apply_filters( 'constant_contact_input_classes', $classes, $type, $form_id, $field_key );
1010
 
1011
  /**
1012
  * Filters whether or not to remove characters from potential maxlength attribute value.
1025
  $classes[] = 'ctct-invalid';
1026
  }
1027
 
1028
+ $classes[] = $field_key;
1029
  $class_attr = '';
1030
 
1031
  if ( count( $classes ) ) {
1032
  $class_attr = 'class="' . implode( ' ', $classes ) . '"';
1033
  }
1034
 
1035
+ /* translators: 1: Required text, 2: Field type, 3: Field name, 4: Inline styles, 5: Field value, 6: Max length, 7: Placeholder (non-hidden fields only), 8: Field class(es), 9: Field ID (non-hidden fields only), 10: Tabindex (hidden fields only). */
1036
+ $field = '<input %1$s type="%2$s" name="%3$s" %4$s value="%5$s" %6$s %7$s %8$s %9$s %10$s />';
1037
  $markup .= sprintf(
1038
  $field,
1039
  $req_text,
1040
  $type,
1041
+ $field_key,
 
1042
  $input_inline_styles,
1043
  $value,
1044
  $max_length,
1045
+ 'hidden' !== $type ? "placeholder=\"{$label}\"" : '',
1046
+ $class_attr,
1047
+ 'hidden' !== $type ? "id=\"{$field_id}\"" : '',
1048
+ 'hidden' === $type ? 'tabindex="-1"' : ''
1049
  );
1050
 
1051
  // Reassign because if we want "field only", like for hidden inputs, we need to still pass a value that went through sprintf().
1053
 
1054
  if ( ( 'bottom' === $label_placement || 'right' === $label_placement ) && ( 'submit' !== $type ) && ( 'hidden' !== $type ) ) {
1055
  $markup .= '<span class="' . $label_placement_class . '">';
1056
+ $markup .= $this->get_label( $field_id, $name . ' ' . $req_label );
1057
  $markup .= '</span>';
1058
  }
1059
 
1060
  if ( $field_error ) {
1061
+ $markup .= $this->field_bottom( $field_id, $field_error );
1062
  } else {
1063
  $markup .= $this->field_bottom();
1064
  }
1075
  *
1076
  * @since 1.0.0
1077
  *
1078
+ * @param string $name Name/it of field.
1079
+ * @param string $f_id Field ID.
1080
+ * @param string $value Value of field.
1081
+ * @param string $label Label / desc text.
1082
+ * @param int $instance Current form instance.
1083
+ * @return string HTML markup for checkbox.
1084
  */
1085
+ public function checkbox( $name = '', $f_id = '', $value = '', $label = '', $instance = 0 ) {
1086
+ $name = sanitize_text_field( $name );
1087
+ $field_key = sanitize_title( $field_key );
1088
+ $field_id = "{$field_key}_{$instance}";
1089
+ $value = sanitize_text_field( $value );
1090
+ $label = esc_attr( $label );
1091
+ $type = 'checkbox';
1092
+ $classes = [ 'ctct-' . esc_attr( $type ) ];
1093
 
1094
  /**
1095
  * Filter to add classes for the rendering input.
1099
  * @param string $type The field type being rendered.
1100
  * @return array
1101
  */
1102
+ $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.
1103
 
1104
+ $markup = $this->field_top( $type, $name, $field_id, $label, false, false );
1105
+ $markup .= '<input type="' . $type . '" name="' . $field_key . '" id="' . $field_id . '" value="' . $value . '" class="' . implode( ' ', $classes ) . '" />';
1106
  $markup .= $this->field_bottom( $name, ' ' . $label );
1107
 
1108
  return $markup;
1145
  *
1146
  * @since 1.0.0
1147
  *
1148
+ * @param array $form_data Form data structure.
1149
+ * @param int $instance Current form instance.
1150
+ * @return string Markup of optin form.
1151
  */
1152
+ public function opt_in( $form_data, $instance = 0 ) {
1153
 
1154
  if ( ! isset( $form_data['optin'] ) ) {
1155
  return '';
1162
  ] );
1163
 
1164
  if ( isset( $optin['list'] ) && $optin['list'] ) {
1165
+ return $this->optin_display( $optin, $instance );
1166
  }
1167
 
1168
  return '';
1173
  *
1174
  * @since 1.0.0
1175
  *
1176
+ * @param array $optin Optin data.
1177
+ * @param int $instance Current form instance.
1178
+ * @return string HTML markup.
1179
  */
1180
+ public function optin_display( $optin, $instance = 0 ) {
1181
 
1182
  $label = sanitize_text_field( isset( $optin['instructions'] ) ? $optin['instructions'] : '' );
1183
  $value = sanitize_text_field( isset( $optin['list'] ) ? $optin['list'] : '' );
1193
  $markup = '<div class="ctct-optin-hide" style="display:none;">';
1194
  }
1195
 
1196
+ $markup .= $this->get_optin_markup( $label, $value, $show, $instance );
1197
 
1198
  if ( ! $show ) {
1199
  $markup .= '</div><!--.ctct-optin-hide -->';
1207
  *
1208
  * @since 1.0.0
1209
  *
1210
+ * @param string $label Label for field.
1211
+ * @param string $value Value of opt in field.
1212
+ * @param string $show Whether or not we are showing the field.
1213
+ * @param int $instance Current form instance.
1214
+ * @return string HTML markup
1215
  */
1216
+ public function get_optin_markup( $label, $value, $show, $instance = 0 ) {
1217
+ $checked = $show ? '' : 'checked';
1218
+ $field_key = 'ctct-opt-in';
1219
+ $field_id = "{$field_key}_{$instance}";
1220
 
1221
+ $markup = $this->field_top( 'checkbox', $field_key, $field_key, $label, false, false );
1222
+ $markup .= '<input type="checkbox" ' . $checked . ' name="' . esc_attr( $field_key ) . '" class="ctct-checkbox ' . esc_attr( $field_key ) . '" value="' . esc_attr( $value ) . '" id="' . esc_attr( $field_id ) . '" />';
1223
+ $markup .= $this->field_bottom( $field_id, ' ' . wp_kses_post( $label ), false );
1224
 
1225
  return $markup;
1226
  }
1230
  *
1231
  * @since 1.0.0
1232
  *
1233
+ * @param string $name Name of fields.
1234
+ * @param string $field_key Form ID name.
1235
+ * @param array $value Values of each field.
1236
+ * @param string $desc Label of field.
1237
+ * @param boolean $req Whether or not required.
1238
+ * @param string $field_error Field error value.
1239
+ * @param string $label_placement Where to put the label.
1240
+ * @param int $instance Current form instance.
1241
+ * @return string HTML markup.
1242
  */
1243
+ public function address( $name = '', $field_key = '', $value = [], $desc = '', $req = false, $field_error = '', $label_placement = 'top', $instance = 0 ) {
1244
+ $field_id = "{$field_key}_{$instance}";
1245
+ $street = esc_html__( 'Street Address', 'constant-contact-forms' );
1246
+ $line_2 = esc_html__( 'Address Line 2', 'constant-contact-forms' );
1247
+ $city = esc_html__( 'City', 'constant-contact-forms' );
1248
+ $state = esc_html__( 'State', 'constant-contact-forms' );
1249
+ $zip = esc_html__( 'ZIP Code', 'constant-contact-forms' );
1250
 
1251
  $v_street = isset( $value['street_address'] ) ? $value['street_address'] : '';
1252
  $v_line_2 = isset( $value['line_2_address'] ) ? $value['line_2_address'] : '';
1263
  $label_street1 = sprintf(
1264
  '<span class="%1$s"><label for="street_%2$s" style="%3$s">%4$s</label></span>',
1265
  esc_attr( $label_placement_class ),
1266
+ esc_attr( $field_id ),
1267
  esc_attr( $inline_font_styles ),
1268
  esc_attr( $street ) . $req_label
1269
  );
1270
  $input_street1 = sprintf(
1271
+ '<input %1$stype="text" class="ctct-text ctct-address-street %2$s street_%3$s" name="street_%4$s" value="%5$s" id="street_%6$s">',
1272
  $req,
1273
  esc_attr( $label_placement_class ),
1274
+ esc_attr( $field_key ),
1275
+ esc_attr( $field_key ),
1276
+ esc_attr( $v_street ),
1277
+ esc_attr( $field_id )
1278
  );
1279
 
1280
  $input_street1_whole = '';
1288
  $label_street2 = sprintf(
1289
  '<span class="%1$s"><label for="line_2_%2$s" style="%3$s">%4$s</label></span>',
1290
  $label_placement_class,
1291
+ esc_attr( $field_id ),
1292
  esc_attr( $inline_font_styles ),
1293
  esc_attr( $line_2 )
1294
  );
1295
 
1296
  $input_street2 = sprintf(
1297
+ '<input type="text" class="ctct-text ctct-address-line-2 %1$s line_2_%2$s" name="line_2_%3$s" value="%4$s" id="line_2_%5$s">',
1298
  esc_attr( $label_placement_class ),
1299
+ esc_attr( $field_key ),
1300
+ esc_attr( $field_key ),
1301
+ esc_attr( $v_line_2 ),
1302
+ esc_attr( $field_id )
1303
  );
1304
 
1305
  $input_street2_whole = '';
1315
  $label_city = sprintf(
1316
  '<span class="%1$s"><label for="city_%2$s" style="%3$s">%4$s</label></span>',
1317
  $label_placement_class,
1318
+ esc_attr( $field_id ),
1319
  esc_attr( $inline_font_styles ),
1320
  esc_attr( $city ) . $req_label
1321
  );
1322
 
1323
  $input_city = sprintf(
1324
+ '<input %1$stype="text" class="ctct-text ctct-address-city %2$s city_%3$s" name="city_%4$s" value="%5$s" id="city_%6$s">',
1325
  $req,
1326
  esc_attr( $label_placement_class ),
1327
+ esc_attr( $field_key ),
1328
+ esc_attr( $field_key ),
1329
+ esc_attr( $v_city ),
1330
+ esc_attr( $field_id )
1331
  );
1332
 
1333
  $input_city_whole = '';
1343
  $label_state = sprintf(
1344
  '<span class="%1$s"><label for="state_%2$s" style="%3$s">%4$s</label></span>',
1345
  $label_placement_class,
1346
+ esc_attr( $field_id ),
1347
  esc_attr( $inline_font_styles ),
1348
  esc_attr( $state ) . $req_label
1349
  );
1350
 
1351
  $input_state = sprintf(
1352
+ '<input %1$stype="text" class="ctct-text ctct-address-state %2$s state_%3$s" name="state_%4$s" value="%5$s" id="state_%6$s">',
1353
  $req,
1354
  esc_attr( $label_placement_class ),
1355
+ esc_attr( $field_key ),
1356
+ esc_attr( $field_key ),
1357
+ esc_attr( $v_state ),
1358
+ esc_attr( $field_id )
1359
  );
1360
 
1361
  $input_state_whole = '';
1371
  $label_zip = sprintf(
1372
  '<span class="%1$s"><label for="zip_%2$s" style="%3$s">%4$s</label></span>',
1373
  $label_placement_class,
1374
+ esc_attr( $field_id ),
1375
  esc_attr( $inline_font_styles ),
1376
  esc_attr( $zip ) . $req_label
1377
  );
1378
 
1379
  $input_zip = sprintf(
1380
+ '<input %1$stype="text" class="ctct-text ctct-address-zip %2$s zip_%3$s" name="zip_%4$s" value="%5$s" id="zip_%6$s">',
1381
  $req,
1382
  esc_attr( $label_placement_class ),
1383
+ esc_attr( $field_key ),
1384
+ esc_attr( $field_key ),
1385
+ esc_attr( $v_zip ),
1386
+ esc_attr( $field_id )
1387
  );
1388
 
1389
  $input_zip_whole = '';
1398
 
1399
  $return = '<fieldset class="ctct-address"><legend style="%s">%s</legend>';
1400
  $return .= '<div class="ctct-form-field ctct-field-full address-line-1%s">%s</div>';
1401
+ $return .= '<div class="ctct-form-field ctct-field-full address-line-2%s input_2_1_2_container">%s</div>';
1402
+ $return .= '<div class="ctct-form-field ctct-field-third address-city%s input_2_1_3_container">%s</div>';
1403
+ $return .= '<div class="ctct-form-field ctct-field-third address-state%s input_2_1_4_container">%s</div>';
1404
+ $return .= '<div class="ctct-form-field ctct-field-third address-zip%s input_2_1_5_container">%s</div>';
1405
  $return .= '</fieldset>';
1406
 
1407
  return sprintf(
1426
  *
1427
  * @since 1.0.0
1428
  *
1429
+ * @param string $name Name of field.
1430
+ * @param string $f_id Field ID.
1431
+ * @param array $value Values to pre-fill.
1432
+ * @param string $desc Description of fields.
1433
+ * @param boolean $req If is required.
1434
+ * @param string $field_error Field error text.
1435
+ * @param int $instance Current form instance.
1436
+ * @return string Fields HTML markup.
1437
  */
1438
+ public function dates( $name = '', $f_id = '', $value = [], $desc = '', $req = false, $field_error = '', $instance = 0 ) {
1439
  $month = esc_html__( 'Month', 'constant-contact-forms' );
1440
  $day = esc_html__( 'Day', 'constant-contact-forms' );
1441
  $year = esc_html__( 'Year', 'constant-contact-forms' );
1449
  $return = '<p class="ctct-date"><fieldset>';
1450
  $return .= ' <legend>' . esc_attr( $name ) . '</legend>';
1451
  $return .= ' <div class="ctct-form-field ctct-field-inline month' . $req_class . '">';
1452
+ $return .= $this->get_date_dropdown( $month, $f_id, 'month', $v_month, $req, $instance );
1453
  $return .= ' </div>';
1454
  $return .= ' <div class="ctct-form-field ctct-field-inline day' . $req_class . '">';
1455
+ $return .= $this->get_date_dropdown( $day, $f_id, 'day', $v_day, $req, $instance );
1456
  $return .= ' </div>';
1457
  $return .= ' <div class="ctct-form-field ctct-field-inline year' . $req_class . '">';
1458
+ $return .= $this->get_date_dropdown( $year, $f_id, 'year', $v_year, $req, $instance );
1459
  $return .= ' </div>';
1460
 
1461
  $return .= '</fieldset></p>';
1468
  *
1469
  * @since 1.0.0
1470
  *
1471
+ * @param string $text Text for default option.
1472
+ * @param string $field_key Field ID.
1473
+ * @param string $type Type of dropdown (day, month, year).
1474
+ * @param string $selected_value Previous value.
1475
+ * @param boolean $req If is require.
1476
+ * @param int $instance Current form instance.
1477
+ * @return string Field markup.
1478
  */
1479
+ public function get_date_dropdown( $text = '', $field_key = '', $type = '', $selected_value = '', $req = false, $instance = 0 ) {
1480
+ $field_key = str_replace( 'birthday', 'birthday_' . $type, $field_key );
1481
+ $field_key = str_replace( 'anniversary', 'anniversary_' . $type, $field_key );
1482
+ $field_id = "{$field_key}_{$instance}";
1483
 
1484
+ $return = '<select name="' . esc_attr( $field_key ) . '" class="ctct-date-select ctct-date-select-' . esc_attr( $type ) . '" id="' . $field_id . '">';
1485
 
1486
  if ( $req ) {
1487
  $return = str_replace( '">', '" required>', $return );
1625
  *
1626
  * @since 1.0.0
1627
  *
1628
+ * @param string $name Name of field.
1629
+ * @param string $map ID of field.
1630
+ * @param string $value Previous value of field.
1631
+ * @param string $desc Description/label of field.
1632
+ * @param boolean $req If is required.
1633
+ * @param string $field_error Error from field.
1634
+ * @param string $extra_attrs Extra attributes to append.
1635
+ * @param string $label_placement Where to place the label.
1636
+ * @param int $instance Current form instance.
1637
+ * @return string HTML markup.
1638
  */
1639
+ public function textarea( $name = '', $map = '', $value = '', $desc = '', $req = false, $field_error = '', $extra_attrs = '', $label_placement = 'top', $instance = 0 ) {
1640
 
1641
  $classes = [ 'ctct-form-field' ];
1642
  $textarea_classes = [ 'ctct-textarea' ];
1643
+ $field_id = "{$map}_{$instance}";
1644
+ $req_text = $req ? 'required' : '';
1645
 
1646
  if ( $req ) {
1647
  $classes[] = 'ctct-form-field-required';
1657
  }
1658
 
1659
  $return = '<p class="' . implode( ' ', $classes ) . '">';
1660
+ $label = '<span class="' . $label_placement_class . '"><label for="' . esc_attr( $field_id ) . '">' . esc_attr( $name ) . ' ' . $req_label . '</label></span>';
1661
+ $textarea = '<textarea class="' . esc_attr( implode( ' ', $textarea_classes ) ) . '" ' . $req_text . ' name="' . esc_attr( $map ) . '" id="' . esc_attr( $field_id ) . '" placeholder="' . esc_attr( $desc ) . '" ' . $extra_attrs . '>' . esc_html( $value ) . '</textarea>';
1662
 
1663
  if ( 'top' === $label_placement || 'left' === $label_placement || 'hidden' === $label_placement ) {
1664
  $return .= $label . $textarea;
1669
  }
1670
 
1671
  if ( $field_error ) {
1672
+ $return .= '<span class="ctct-field-error"><label for="' . esc_attr( $field_id ) . '">' . esc_attr( __( 'Error: Please correct your entry.', 'constant-contact-forms' ) ) . '</label></span>';
1673
  }
1674
 
1675
  return $return . '</p>';
languages/constant-contact-forms.pot CHANGED
@@ -262,11 +262,11 @@ msgstr ""
262
  msgid "move down"
263
  msgstr ""
264
 
265
- #: includes/class-api.php:706
266
  msgid "Not a valid contact to set properties to."
267
  msgstr ""
268
 
269
- #: includes/class-api.php:881
270
  msgid "Your API access token is invalid. Reconnect to Constant Contact to receive a new token."
271
  msgstr ""
272
 
@@ -849,7 +849,7 @@ msgstr ""
849
  msgid "New Form"
850
  msgstr ""
851
 
852
- #: includes/class-cpts.php:72, includes/class-display.php:826
853
  msgid "Edit Form"
854
  msgstr ""
855
 
@@ -1060,100 +1060,100 @@ msgstr ""
1060
  msgid "%1$s (last modified %2$s ago)"
1061
  msgstr ""
1062
 
1063
- #: includes/class-display.php:506
1064
  msgid "Constant Contact Use."
1065
  msgstr ""
1066
 
1067
- #: includes/class-display.php:659, includes/class-display.php:1646
1068
  msgid "Error: Please correct your entry."
1069
  msgstr ""
1070
 
1071
- #: includes/class-display.php:1228
1072
  msgid "Street Address"
1073
  msgstr ""
1074
 
1075
- #: includes/class-display.php:1229
1076
  msgid "Address Line 2"
1077
  msgstr ""
1078
 
1079
- #: includes/class-display.php:1230
1080
  msgid "City"
1081
  msgstr ""
1082
 
1083
- #: includes/class-display.php:1231
1084
  msgid "State"
1085
  msgstr ""
1086
 
1087
- #: includes/class-display.php:1232
1088
  msgid "ZIP Code"
1089
  msgstr ""
1090
 
1091
- #: includes/class-display.php:1416
1092
  msgid "Month"
1093
  msgstr ""
1094
 
1095
- #: includes/class-display.php:1417
1096
  msgid "Day"
1097
  msgstr ""
1098
 
1099
- #: includes/class-display.php:1418
1100
  msgid "Year"
1101
  msgstr ""
1102
 
1103
- #: includes/class-display.php:1532
1104
  msgid "January"
1105
  msgstr ""
1106
 
1107
- #: includes/class-display.php:1533
1108
  msgid "February"
1109
  msgstr ""
1110
 
1111
- #: includes/class-display.php:1534
1112
  msgid "March"
1113
  msgstr ""
1114
 
1115
- #: includes/class-display.php:1535
1116
  msgid "April"
1117
  msgstr ""
1118
 
1119
- #: includes/class-display.php:1536
1120
  msgid "May"
1121
  msgstr ""
1122
 
1123
- #: includes/class-display.php:1537
1124
  msgid "June"
1125
  msgstr ""
1126
 
1127
- #: includes/class-display.php:1538
1128
  msgid "July "
1129
  msgstr ""
1130
 
1131
- #: includes/class-display.php:1539
1132
  msgid "August"
1133
  msgstr ""
1134
 
1135
- #: includes/class-display.php:1540
1136
  msgid "September"
1137
  msgstr ""
1138
 
1139
- #: includes/class-display.php:1541
1140
  msgid "October"
1141
  msgstr ""
1142
 
1143
- #: includes/class-display.php:1542
1144
  msgid "November"
1145
  msgstr ""
1146
 
1147
- #: includes/class-display.php:1543
1148
  msgid "December"
1149
  msgstr ""
1150
 
1151
  #. translators: placeholder will hold company info for site owner.
1152
- #: includes/class-display.php:1717
1153
  msgid "By submitting this form, you are consenting to receive marketing emails from: %1$s. You can revoke your consent to receive emails at any time by using the SafeUnsubscribe&reg; link, found at the bottom of every email. %2$s"
1154
  msgstr ""
1155
 
1156
- #: includes/class-display.php:1724
1157
  msgid "Emails are serviced by Constant Contact"
1158
  msgstr ""
1159
 
@@ -1324,15 +1324,15 @@ msgstr ""
1324
  msgid "Disagree"
1325
  msgstr ""
1326
 
1327
- #: includes/class-process-form.php:104, includes/class-process-form.php:637
1328
  msgid "There was an error sending your form."
1329
  msgstr ""
1330
 
1331
- #: includes/class-process-form.php:115, includes/class-process-form.php:655
1332
  msgid "Your information has been submitted."
1333
  msgstr ""
1334
 
1335
- #: includes/class-process-form.php:130, includes/class-process-form.php:669
1336
  msgid "We had trouble processing your submission. Please review your entries and try again."
1337
  msgstr ""
1338
 
@@ -1360,7 +1360,7 @@ msgstr ""
1360
  msgid "We had trouble processing your submission. Make sure you haven't changed the required Form ID and try again."
1361
  msgstr ""
1362
 
1363
- #: includes/class-process-form.php:734
1364
  msgid "We do no think you are human"
1365
  msgstr ""
1366
 
262
  msgid "move down"
263
  msgstr ""
264
 
265
+ #: includes/class-api.php:711
266
  msgid "Not a valid contact to set properties to."
267
  msgstr ""
268
 
269
+ #: includes/class-api.php:891
270
  msgid "Your API access token is invalid. Reconnect to Constant Contact to receive a new token."
271
  msgstr ""
272
 
849
  msgid "New Form"
850
  msgstr ""
851
 
852
+ #: includes/class-cpts.php:72, includes/class-display.php:830
853
  msgid "Edit Form"
854
  msgstr ""
855
 
1060
  msgid "%1$s (last modified %2$s ago)"
1061
  msgstr ""
1062
 
1063
+ #: includes/class-display.php:507
1064
  msgid "Constant Contact Use."
1065
  msgstr ""
1066
 
1067
+ #: includes/class-display.php:661, includes/class-display.php:1672
1068
  msgid "Error: Please correct your entry."
1069
  msgstr ""
1070
 
1071
+ #: includes/class-display.php:1245
1072
  msgid "Street Address"
1073
  msgstr ""
1074
 
1075
+ #: includes/class-display.php:1246
1076
  msgid "Address Line 2"
1077
  msgstr ""
1078
 
1079
+ #: includes/class-display.php:1247
1080
  msgid "City"
1081
  msgstr ""
1082
 
1083
+ #: includes/class-display.php:1248
1084
  msgid "State"
1085
  msgstr ""
1086
 
1087
+ #: includes/class-display.php:1249
1088
  msgid "ZIP Code"
1089
  msgstr ""
1090
 
1091
+ #: includes/class-display.php:1439
1092
  msgid "Month"
1093
  msgstr ""
1094
 
1095
+ #: includes/class-display.php:1440
1096
  msgid "Day"
1097
  msgstr ""
1098
 
1099
+ #: includes/class-display.php:1441
1100
  msgid "Year"
1101
  msgstr ""
1102
 
1103
+ #: includes/class-display.php:1557
1104
  msgid "January"
1105
  msgstr ""
1106
 
1107
+ #: includes/class-display.php:1558
1108
  msgid "February"
1109
  msgstr ""
1110
 
1111
+ #: includes/class-display.php:1559
1112
  msgid "March"
1113
  msgstr ""
1114
 
1115
+ #: includes/class-display.php:1560
1116
  msgid "April"
1117
  msgstr ""
1118
 
1119
+ #: includes/class-display.php:1561
1120
  msgid "May"
1121
  msgstr ""
1122
 
1123
+ #: includes/class-display.php:1562
1124
  msgid "June"
1125
  msgstr ""
1126
 
1127
+ #: includes/class-display.php:1563
1128
  msgid "July "
1129
  msgstr ""
1130
 
1131
+ #: includes/class-display.php:1564
1132
  msgid "August"
1133
  msgstr ""
1134
 
1135
+ #: includes/class-display.php:1565
1136
  msgid "September"
1137
  msgstr ""
1138
 
1139
+ #: includes/class-display.php:1566
1140
  msgid "October"
1141
  msgstr ""
1142
 
1143
+ #: includes/class-display.php:1567
1144
  msgid "November"
1145
  msgstr ""
1146
 
1147
+ #: includes/class-display.php:1568
1148
  msgid "December"
1149
  msgstr ""
1150
 
1151
  #. translators: placeholder will hold company info for site owner.
1152
+ #: includes/class-display.php:1743
1153
  msgid "By submitting this form, you are consenting to receive marketing emails from: %1$s. You can revoke your consent to receive emails at any time by using the SafeUnsubscribe&reg; link, found at the bottom of every email. %2$s"
1154
  msgstr ""
1155
 
1156
+ #: includes/class-display.php:1750
1157
  msgid "Emails are serviced by Constant Contact"
1158
  msgstr ""
1159
 
1324
  msgid "Disagree"
1325
  msgstr ""
1326
 
1327
+ #: includes/class-process-form.php:104, includes/class-process-form.php:638
1328
  msgid "There was an error sending your form."
1329
  msgstr ""
1330
 
1331
+ #: includes/class-process-form.php:115, includes/class-process-form.php:656
1332
  msgid "Your information has been submitted."
1333
  msgstr ""
1334
 
1335
+ #: includes/class-process-form.php:130, includes/class-process-form.php:670
1336
  msgid "We had trouble processing your submission. Please review your entries and try again."
1337
  msgstr ""
1338
 
1360
  msgid "We had trouble processing your submission. Make sure you haven't changed the required Form ID and try again."
1361
  msgstr ""
1362
 
1363
+ #: includes/class-process-form.php:735
1364
  msgid "We do no think you are human"
1365
  msgstr ""
1366
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: constantcontact, webdevstudios, tw2113, znowebdev, ggwicz, ra
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
  Tested up to: 5.4.1
6
- Stable tag: 1.8.6
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
@@ -35,6 +35,11 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
35
 
36
  == Changelog ==
37
 
 
 
 
 
 
38
  = 1.8.6 =
39
  * Fixed: Removed invalid property being sent to the API, causing rejected requests.
40
  * Fixed: Failure to log API errors for support purposes.
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
  Tested up to: 5.4.1
6
+ Stable tag: 1.8.7
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
35
 
36
  == Changelog ==
37
 
38
+ = 1.8.7 =
39
+ * Improved: Implemented recommendations for improved accessibility.
40
+ * Improved: Avoid duplicate ID attributes when more than one form is present on a page.
41
+ * Fixed: Submit button targeting for recaptcha v2.
42
+
43
  = 1.8.6 =
44
  * Fixed: Removed invalid property being sent to the API, causing rejected requests.
45
  * Fixed: Failure to log API errors for support purposes.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit9be5d623c7332ab70e31d2aad7bcd258::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::getInitializer($loader));
31
  } else {
32
  $classMap = require __DIR__ . '/autoload_classmap.php';
33
  if ($classMap) {
@@ -39,19 +39,19 @@ class ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0
39
  $loader->register(true);
40
 
41
  if ($useStaticLoader) {
42
- $includeFiles = Composer\Autoload\ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$files;
43
  } else {
44
  $includeFiles = require __DIR__ . '/autoload_files.php';
45
  }
46
  foreach ($includeFiles as $fileIdentifier => $file) {
47
- composerRequireb6eb9765b6ca2bd55b4483dd58709ee0($fileIdentifier, $file);
48
  }
49
 
50
  return $loader;
51
  }
52
  }
53
 
54
- function composerRequireb6eb9765b6ca2bd55b4483dd58709ee0($fileIdentifier, $file)
55
  {
56
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
57
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit9be5d623c7332ab70e31d2aad7bcd258
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit9be5d623c7332ab70e31d2aad7bcd258', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit9be5d623c7332ab70e31d2aad7bcd258', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit9be5d623c7332ab70e31d2aad7bcd258::getInitializer($loader));
31
  } else {
32
  $classMap = require __DIR__ . '/autoload_classmap.php';
33
  if ($classMap) {
39
  $loader->register(true);
40
 
41
  if ($useStaticLoader) {
42
+ $includeFiles = Composer\Autoload\ComposerStaticInit9be5d623c7332ab70e31d2aad7bcd258::$files;
43
  } else {
44
  $includeFiles = require __DIR__ . '/autoload_files.php';
45
  }
46
  foreach ($includeFiles as $fileIdentifier => $file) {
47
+ composerRequire9be5d623c7332ab70e31d2aad7bcd258($fileIdentifier, $file);
48
  }
49
 
50
  return $loader;
51
  }
52
  }
53
 
54
+ function composerRequire9be5d623c7332ab70e31d2aad7bcd258($fileIdentifier, $file)
55
  {
56
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
57
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@@ -390,10 +390,10 @@ class ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0
390
  public static function getInitializer(ClassLoader $loader)
391
  {
392
  return \Closure::bind(function () use ($loader) {
393
- $loader->prefixLengthsPsr4 = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$prefixLengthsPsr4;
394
- $loader->prefixDirsPsr4 = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$prefixDirsPsr4;
395
- $loader->prefixesPsr0 = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$prefixesPsr0;
396
- $loader->classMap = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$classMap;
397
 
398
  }, null, ClassLoader::class);
399
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit9be5d623c7332ab70e31d2aad7bcd258
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
390
  public static function getInitializer(ClassLoader $loader)
391
  {
392
  return \Closure::bind(function () use ($loader) {
393
+ $loader->prefixLengthsPsr4 = ComposerStaticInit9be5d623c7332ab70e31d2aad7bcd258::$prefixLengthsPsr4;
394
+ $loader->prefixDirsPsr4 = ComposerStaticInit9be5d623c7332ab70e31d2aad7bcd258::$prefixDirsPsr4;
395
+ $loader->prefixesPsr0 = ComposerStaticInit9be5d623c7332ab70e31d2aad7bcd258::$prefixesPsr0;
396
+ $loader->classMap = ComposerStaticInit9be5d623c7332ab70e31d2aad7bcd258::$classMap;
397
 
398
  }, null, ClassLoader::class);
399
  }
vendor/constantcontact/constantcontact/.gitignore ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Created by .gitignore support plugin (hsz.mobi)
2
+
3
+ ## Directory-based project format
4
+ .idea/
5
+ /*.iml
6
+
7
+ ## File-based project format
8
+ *.ipr
9
+ *.iws
10
+
11
+ ## Additional for IntelliJ
12
+ out/
13
+
14
+ # generated by mpeltonen/sbt-idea plugin
15
+ .idea_modules/
16
+
17
+ # generated by JIRA plugin
18
+ atlassian-ide-plugin.xml
19
+
20
+ ### Composer template
21
+ composer.lock
22
+ composer.phar
23
+ vendor/
24
+
25
+ devFile.php
vendor/defuse/php-encryption/.gitignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ *~
2
+ /test/unit/File/big-generated-file
3
+ /composer.lock
4
+ /vendor
5
+ defuse-crypto.phar
6
+ defuse-crypto.phar.sig
7
+ composer.phar
8
+ box.phar
9
+ phpunit.phar
10
+ phpunit.phar.asc
11
+ test/unit/File/tmp
vendor/google/recaptcha/.gitignore ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /.php_cs.cache
2
+ /.phpunit.result.cache
3
+ /build
4
+ /composer.lock
5
+ /examples/config.php
6
+ /nbproject/private/
7
+ /vendor/
vendor/guzzlehttp/ringphp/.gitignore ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ vendor
2
+ build/artifacts/
3
+ composer.lock
4
+ docs/_build/
vendor/guzzlehttp/streams/.gitignore ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ .idea
2
+ .DS_STORE
3
+ coverage
4
+ phpunit.xml
5
+ composer.lock
6
+ vendor/
vendor/psr/log/.gitignore ADDED
@@ -0,0 +1 @@
 
1
+ vendor
vendor/react/promise/.gitignore ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ composer.lock
2
+ composer.phar
3
+ phpunit.xml
4
+ build/
5
+ vendor/