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

Version Description

  • Messages tab usability improvements, limited choice bugfixes in Radio, Checkbox and Dropdown fields.
Download this release

Release Info

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

Code changes from version 1.19.1 to 1.20.0

bundles/js/frontend.js CHANGED
@@ -1 +1 @@
1
- !function(n){"use strict";function d(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(n,t,r,e,o,u){return d((u=d(d(t,n),d(e,u)))<<o|u>>>32-o,r)}function l(n,t,r,e,o,u,c){return f(t&r|~t&e,n,t,o,u,c)}function g(n,t,r,e,o,u,c){return f(t&e|r&~e,n,t,o,u,c)}function v(n,t,r,e,o,u,c){return f(t^r^e,n,t,o,u,c)}function m(n,t,r,e,o,u,c){return f(r^(t|~e),n,t,o,u,c)}function c(n,t){var r,e,o,u;n[t>>5]|=128<<t%32,n[14+(t+64>>>9<<4)]=t;for(var c=1732584193,f=-271733879,i=-1732584194,a=271733878,h=0;h<n.length;h+=16)c=l(r=c,e=f,o=i,u=a,n[h],7,-680876936),a=l(a,c,f,i,n[h+1],12,-389564586),i=l(i,a,c,f,n[h+2],17,606105819),f=l(f,i,a,c,n[h+3],22,-1044525330),c=l(c,f,i,a,n[h+4],7,-176418897),a=l(a,c,f,i,n[h+5],12,1200080426),i=l(i,a,c,f,n[h+6],17,-1473231341),f=l(f,i,a,c,n[h+7],22,-45705983),c=l(c,f,i,a,n[h+8],7,1770035416),a=l(a,c,f,i,n[h+9],12,-1958414417),i=l(i,a,c,f,n[h+10],17,-42063),f=l(f,i,a,c,n[h+11],22,-1990404162),c=l(c,f,i,a,n[h+12],7,1804603682),a=l(a,c,f,i,n[h+13],12,-40341101),i=l(i,a,c,f,n[h+14],17,-1502002290),c=g(c,f=l(f,i,a,c,n[h+15],22,1236535329),i,a,n[h+1],5,-165796510),a=g(a,c,f,i,n[h+6],9,-1069501632),i=g(i,a,c,f,n[h+11],14,643717713),f=g(f,i,a,c,n[h],20,-373897302),c=g(c,f,i,a,n[h+5],5,-701558691),a=g(a,c,f,i,n[h+10],9,38016083),i=g(i,a,c,f,n[h+15],14,-660478335),f=g(f,i,a,c,n[h+4],20,-405537848),c=g(c,f,i,a,n[h+9],5,568446438),a=g(a,c,f,i,n[h+14],9,-1019803690),i=g(i,a,c,f,n[h+3],14,-187363961),f=g(f,i,a,c,n[h+8],20,1163531501),c=g(c,f,i,a,n[h+13],5,-1444681467),a=g(a,c,f,i,n[h+2],9,-51403784),i=g(i,a,c,f,n[h+7],14,1735328473),c=v(c,f=g(f,i,a,c,n[h+12],20,-1926607734),i,a,n[h+5],4,-378558),a=v(a,c,f,i,n[h+8],11,-2022574463),i=v(i,a,c,f,n[h+11],16,1839030562),f=v(f,i,a,c,n[h+14],23,-35309556),c=v(c,f,i,a,n[h+1],4,-1530992060),a=v(a,c,f,i,n[h+4],11,1272893353),i=v(i,a,c,f,n[h+7],16,-155497632),f=v(f,i,a,c,n[h+10],23,-1094730640),c=v(c,f,i,a,n[h+13],4,681279174),a=v(a,c,f,i,n[h],11,-358537222),i=v(i,a,c,f,n[h+3],16,-722521979),f=v(f,i,a,c,n[h+6],23,76029189),c=v(c,f,i,a,n[h+9],4,-640364487),a=v(a,c,f,i,n[h+12],11,-421815835),i=v(i,a,c,f,n[h+15],16,530742520),c=m(c,f=v(f,i,a,c,n[h+2],23,-995338651),i,a,n[h],6,-198630844),a=m(a,c,f,i,n[h+7],10,1126891415),i=m(i,a,c,f,n[h+14],15,-1416354905),f=m(f,i,a,c,n[h+5],21,-57434055),c=m(c,f,i,a,n[h+12],6,1700485571),a=m(a,c,f,i,n[h+3],10,-1894986606),i=m(i,a,c,f,n[h+10],15,-1051523),f=m(f,i,a,c,n[h+1],21,-2054922799),c=m(c,f,i,a,n[h+8],6,1873313359),a=m(a,c,f,i,n[h+15],10,-30611744),i=m(i,a,c,f,n[h+6],15,-1560198380),f=m(f,i,a,c,n[h+13],21,1309151649),c=m(c,f,i,a,n[h+4],6,-145523070),a=m(a,c,f,i,n[h+11],10,-1120210379),i=m(i,a,c,f,n[h+2],15,718787259),f=m(f,i,a,c,n[h+9],21,-343485551),c=d(c,r),f=d(f,e),i=d(i,o),a=d(a,u);return[c,f,i,a]}function i(n){for(var t="",r=32*n.length,e=0;e<r;e+=8)t+=String.fromCharCode(n[e>>5]>>>e%32&255);return t}function a(n){var t=[];for(t[(n.length>>2)-1]=void 0,e=0;e<t.length;e+=1)t[e]=0;for(var r=8*n.length,e=0;e<r;e+=8)t[e>>5]|=(255&n.charCodeAt(e/8))<<e%32;return t}function e(n){for(var t,r="0123456789abcdef",e="",o=0;o<n.length;o+=1)t=n.charCodeAt(o),e+=r.charAt(t>>>4&15)+r.charAt(15&t);return e}function r(n){return unescape(encodeURIComponent(n))}function o(n){return i(c(a(n=r(n)),8*n.length))}function u(n,t){return function(n,t){var r,e=a(n),o=[],u=[];for(o[15]=u[15]=void 0,16<e.length&&(e=c(e,8*n.length)),r=0;r<16;r+=1)o[r]=909522486^e[r],u[r]=1549556828^e[r];return t=c(o.concat(a(t)),512+8*t.length),i(c(u.concat(t),640))}(r(n),r(t))}function t(n,t,r){return t?r?u(t,n):e(u(t,n)):r?o(n):e(o(n))}"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:n.md5=t}(this),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Cleave=t():e.Cleave=t()}(this,function(){return e=[function(e,t,r){!function(t){"use strict";function i(e,t){var r=this,n=!1;if("string"==typeof e?(r.element=document.querySelector(e),n=1<document.querySelectorAll(e).length):void 0!==e.length&&0<e.length?(r.element=e[0],n=1<e.length):r.element=e,!r.element)throw new Error("[cleave.js] Please check the element");if(n)try{console.warn("[cleave.js] Multiple input fields matched, cleave.js will only take the first one.")}catch(a){}t.initValue=r.element.value,r.properties=i.DefaultProperties.assign({},t),r.init()}i.prototype={init:function(){var e=this,t=e.properties;return t.numeral||t.phone||t.creditCard||t.time||t.date||0!==t.blocksLength||t.prefix?(t.maxLength=i.Util.getMaxLength(t.blocks),e.isAndroid=i.Util.isAndroid(),e.lastInputValue="",e.isBackward="",e.onChangeListener=e.onChange.bind(e),e.onKeyDownListener=e.onKeyDown.bind(e),e.onFocusListener=e.onFocus.bind(e),e.onCutListener=e.onCut.bind(e),e.onCopyListener=e.onCopy.bind(e),e.initSwapHiddenInput(),e.element.addEventListener("input",e.onChangeListener),e.element.addEventListener("keydown",e.onKeyDownListener),e.element.addEventListener("focus",e.onFocusListener),e.element.addEventListener("cut",e.onCutListener),e.element.addEventListener("copy",e.onCopyListener),e.initPhoneFormatter(),e.initDateFormatter(),e.initTimeFormatter(),e.initNumeralFormatter(),void((t.initValue||t.prefix&&!t.noImmediatePrefix)&&e.onInput(t.initValue))):void e.onInput(t.initValue)},initSwapHiddenInput:function(){var r,e=this;e.properties.swapHiddenInput&&(r=e.element.cloneNode(!0),e.element.parentNode.insertBefore(r,e.element),e.elementSwapHidden=e.element,e.elementSwapHidden.type="hidden",e.element=r,e.element.id="")},initNumeralFormatter:function(){var t=this.properties;t.numeral&&(t.numeralFormatter=new i.NumeralFormatter(t.numeralDecimalMark,t.numeralIntegerScale,t.numeralDecimalScale,t.numeralThousandsGroupStyle,t.numeralPositiveOnly,t.stripLeadingZeroes,t.prefix,t.signBeforePrefix,t.tailPrefix,t.delimiter))},initTimeFormatter:function(){var t=this.properties;t.time&&(t.timeFormatter=new i.TimeFormatter(t.timePattern,t.timeFormat),t.blocks=t.timeFormatter.getBlocks(),t.blocksLength=t.blocks.length,t.maxLength=i.Util.getMaxLength(t.blocks))},initDateFormatter:function(){var t=this.properties;t.date&&(t.dateFormatter=new i.DateFormatter(t.datePattern,t.dateMin,t.dateMax),t.blocks=t.dateFormatter.getBlocks(),t.blocksLength=t.blocks.length,t.maxLength=i.Util.getMaxLength(t.blocks))},initPhoneFormatter:function(){var t=this.properties;if(t.phone)try{t.phoneFormatter=new i.PhoneFormatter(new t.root.Cleave.AsYouTypeFormatter(t.phoneRegionCode),t.delimiter)}catch(r){throw new Error("[cleave.js] Please include phone-type-formatter.{country}.js lib")}},onKeyDown:function(e){var t=this,e=e.which||e.keyCode;t.lastInputValue=t.element.value,t.isBackward=8===e},onChange:function(e){var t=this,r=t.properties,n=i.Util,e=(t.isBackward=t.isBackward||"deleteContentBackward"===e.inputType,n.getPostDelimiter(t.lastInputValue,r.delimiter,r.delimiters));t.isBackward&&e?r.postDelimiterBackspace=e:r.postDelimiterBackspace=!1,this.onInput(this.element.value)},onFocus:function(){var e=this,t=e.properties;e.lastInputValue=e.element.value,t.prefix&&t.noImmediatePrefix&&!e.element.value&&this.onInput(t.prefix),i.Util.fixPrefixCursor(e.element,t.prefix,t.delimiter,t.delimiters)},onCut:function(e){i.Util.checkFullSelection(this.element.value)&&(this.copyClipboardData(e),this.onInput(""))},onCopy:function(e){i.Util.checkFullSelection(this.element.value)&&this.copyClipboardData(e)},copyClipboardData:function(e){var r=this.properties,n=i.Util,a=this.element.value,n=r.copyDelimiter?a:n.stripDelimiters(a,r.delimiter,r.delimiters);try{(e.clipboardData?e:window).clipboardData.setData("Text",n),e.preventDefault()}catch(l){}},onInput:function(e){var t=this,r=t.properties,n=i.Util,a=n.getPostDelimiter(e,r.delimiter,r.delimiters);r.numeral||!r.postDelimiterBackspace||a||(e=n.headStr(e,e.length-r.postDelimiterBackspace.length)),r.phone?!r.prefix||r.noImmediatePrefix&&!e.length?r.result=r.phoneFormatter.format(e):r.result=r.prefix+r.phoneFormatter.format(e).slice(r.prefix.length):r.numeral?r.prefix&&r.noImmediatePrefix&&0===e.length?r.result="":r.result=r.numeralFormatter.format(e):(r.date&&(e=r.dateFormatter.getValidatedDate(e)),r.time&&(e=r.timeFormatter.getValidatedTime(e)),e=n.stripDelimiters(e,r.delimiter,r.delimiters),e=n.getPrefixStrippedValue(e,r.prefix,r.prefixLength,r.result,r.delimiter,r.delimiters,r.noImmediatePrefix,r.tailPrefix,r.signBeforePrefix),e=r.numericOnly?n.strip(e,/[^\d]/g):e,e=r.uppercase?e.toUpperCase():e,e=r.lowercase?e.toLowerCase():e,r.prefix&&(r.tailPrefix?e+=r.prefix:e=r.prefix+e,0===r.blocksLength)?r.result=e:(r.creditCard&&t.updateCreditCardPropsByValue(e),e=n.headStr(e,r.maxLength),r.result=n.getFormattedValue(e,r.blocks,r.blocksLength,r.delimiter,r.delimiters,r.delimiterLazyShow))),t.updateValueState()},updateCreditCardPropsByValue:function(e){var n=this.properties,a=i.Util;a.headStr(n.result,4)!==a.headStr(e,4)&&(e=i.CreditCardDetector.getInfo(e,n.creditCardStrictMode),n.blocks=e.blocks,n.blocksLength=n.blocks.length,n.maxLength=a.getMaxLength(n.blocks),n.creditCardType!==e.type&&(n.creditCardType=e.type,n.onCreditCardTypeChanged.call(this,n.creditCardType)))},updateValueState:function(){var n,a,o,e=this,t=i.Util,r=e.properties;e.element&&(n=e.element.selectionEnd,a=e.element.value,o=r.result,n=t.getNextCursorPosition(n,a,o,r.delimiter,r.delimiters),e.isAndroid?window.setTimeout(function(){e.element.value=o,t.setSelection(e.element,n,r.document,!1),e.callOnValueChanged()},1):(e.element.value=o,r.swapHiddenInput&&(e.elementSwapHidden.value=e.getRawValue()),t.setSelection(e.element,n,r.document,!1),e.callOnValueChanged()))},callOnValueChanged:function(){var e=this,t=e.properties;t.onValueChanged.call(e,{target:{name:e.element.name,value:t.result,rawValue:e.getRawValue()}})},setPhoneRegionCode:function(e){var t=this;t.properties.phoneRegionCode=e,t.initPhoneFormatter(),t.onChange()},setRawValue:function(e){var t=this,r=t.properties;e=null!=e?e.toString():"",r.numeral&&(e=e.replace(".",r.numeralDecimalMark)),r.postDelimiterBackspace=!1,t.element.value=e,t.onInput(e)},getRawValue:function(){var t=this.properties,r=i.Util,n=this.element.value;return t.rawValueTrimPrefix&&(n=r.getPrefixStrippedValue(n,t.prefix,t.prefixLength,t.result,t.delimiter,t.delimiters,t.noImmediatePrefix,t.tailPrefix,t.signBeforePrefix)),t.numeral?t.numeralFormatter.getRawValue(n):r.stripDelimiters(n,t.delimiter,t.delimiters)},getISOFormatDate:function(){var t=this.properties;return t.date?t.dateFormatter.getISOFormatDate():""},getISOFormatTime:function(){var t=this.properties;return t.time?t.timeFormatter.getISOFormatTime():""},getFormattedValue:function(){return this.element.value},destroy:function(){var e=this;e.element.removeEventListener("input",e.onChangeListener),e.element.removeEventListener("keydown",e.onKeyDownListener),e.element.removeEventListener("focus",e.onFocusListener),e.element.removeEventListener("cut",e.onCutListener),e.element.removeEventListener("copy",e.onCopyListener)},toString:function(){return"[Cleave Object]"}},i.NumeralFormatter=r(1),i.DateFormatter=r(2),i.TimeFormatter=r(3),i.PhoneFormatter=r(4),i.CreditCardDetector=r(5),i.Util=r(6),i.DefaultProperties=r(7),("object"==typeof t&&t?t:window).Cleave=i,e.exports=i}.call(t,function(){return this}())},function(e,t){"use strict";function r(e,t,i,n,a,o,l,s,c,u){var d=this;d.numeralDecimalMark=e||".",d.numeralIntegerScale=0<t?t:0,d.numeralDecimalScale=0<=i?i:2,d.numeralThousandsGroupStyle=n||r.groupStyle.thousand,d.numeralPositiveOnly=!!a,d.stripLeadingZeroes=!1!==o,d.prefix=l||""===l?l:"",d.signBeforePrefix=!!s,d.tailPrefix=!!c,d.delimiter=u||""===u?u:",",d.delimiterRE=u?new RegExp("\\"+u,"g"):""}r.groupStyle={thousand:"thousand",lakh:"lakh",wan:"wan",none:"none"},r.prototype={getRawValue:function(e){return e.replace(this.delimiterRE,"").replace(this.numeralDecimalMark,".")},format:function(e){var i,n,a,o=this,l="";switch(e=e.replace(/[A-Za-z]/g,"").replace(o.numeralDecimalMark,"M").replace(/[^\dM-]/g,"").replace(/^\-/,"N").replace(/\-/g,"").replace("N",o.numeralPositiveOnly?"":"-").replace("M",o.numeralDecimalMark),i="-"===(e=o.stripLeadingZeroes?e.replace(/^(-)?0+(?=\d)/,"$1"):e).slice(0,1)?"-":"",n=void 0!==o.prefix?o.signBeforePrefix?i+o.prefix:o.prefix+i:i,0<=(a=e).indexOf(o.numeralDecimalMark)&&(a=(e=e.split(o.numeralDecimalMark))[0],l=o.numeralDecimalMark+e[1].slice(0,o.numeralDecimalScale)),"-"==i&&(a=a.slice(1)),0<o.numeralIntegerScale&&(a=a.slice(0,o.numeralIntegerScale)),o.numeralThousandsGroupStyle){case r.groupStyle.lakh:a=a.replace(/(\d)(?=(\d\d)+\d$)/g,"$1"+o.delimiter);break;case r.groupStyle.wan:a=a.replace(/(\d)(?=(\d{4})+$)/g,"$1"+o.delimiter);break;case r.groupStyle.thousand:a=a.replace(/(\d)(?=(\d{3})+$)/g,"$1"+o.delimiter)}return o.tailPrefix?i+a.toString()+(0<o.numeralDecimalScale?l.toString():"")+o.prefix:n+a.toString()+(0<o.numeralDecimalScale?l.toString():"")}},e.exports=r},function(e,t){"use strict";function r(e,t,r){var i=this;i.date=[],i.blocks=[],i.datePattern=e,i.dateMin=t.split("-").reverse().map(function(e){return parseInt(e,10)}),2===i.dateMin.length&&i.dateMin.unshift(0),i.dateMax=r.split("-").reverse().map(function(e){return parseInt(e,10)}),2===i.dateMax.length&&i.dateMax.unshift(0),i.initBlocks()}r.prototype={initBlocks:function(){var e=this;e.datePattern.forEach(function(t){"Y"===t?e.blocks.push(4):e.blocks.push(2)})},getISOFormatDate:function(){var e=this,t=e.date;return t[2]?t[2]+"-"+e.addLeadingZero(t[1])+"-"+e.addLeadingZero(t[0]):""},getBlocks:function(){return this.blocks},getValidatedDate:function(e){var t=this,r="";return e=e.replace(/[^\d]/g,""),t.blocks.forEach(function(i,n){if(0<e.length){var a=e.slice(0,i),o=a.slice(0,1),i=e.slice(i);switch(t.datePattern[n]){case"d":"00"===a?a="01":3<parseInt(o,10)?a="0"+o:31<parseInt(a,10)&&(a="31");break;case"m":"00"===a?a="01":1<parseInt(o,10)?a="0"+o:12<parseInt(a,10)&&(a="12")}r+=a,e=i}}),this.getFixedDateString(r)},getFixedDateString:function(e){var t,r,i,n=this,a=n.datePattern,o=[],l=0,s=0,c=0,u=0,d=0,m=0,p=!1;return 4===e.length&&"y"!==a[0].toLowerCase()&&"y"!==a[1].toLowerCase()&&(d=2-(u="d"===a[0]?0:2),t=parseInt(e.slice(u,u+2),10),r=parseInt(e.slice(d,d+2),10),o=this.getFixedDate(t,r,0)),8===e.length&&(a.forEach(function(e,t){switch(e){case"d":l=t;break;case"m":s=t;break;default:c=t}}),m=2*c,u=l<=c?2*l:2*l+2,d=s<=c?2*s:2*s+2,t=parseInt(e.slice(u,u+2),10),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+4),10),p=4===e.slice(m,m+4).length,o=this.getFixedDate(t,r,i)),4!==e.length||"y"!==a[0]&&"y"!==a[1]||(m=2-(d="m"===a[0]?0:2),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+2),10),p=2===e.slice(m,m+2).length,o=[0,r,i]),6!==e.length||"Y"!==a[0]&&"Y"!==a[1]||(m=2-.5*(d="m"===a[0]?0:4),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+4),10),p=4===e.slice(m,m+4).length,o=[0,r,i]),o=n.getRangeFixedDate(o),0===(n.date=o).length?e:a.reduce(function(e,t){switch(t){case"d":return e+(0===o[0]?"":n.addLeadingZero(o[0]));case"m":return e+(0===o[1]?"":n.addLeadingZero(o[1]));case"y":return e+(p?n.addLeadingZeroForYear(o[2],!1):"");case"Y":return e+(p?n.addLeadingZeroForYear(o[2],!0):"")}},"")},getRangeFixedDate:function(e){var t=this,r=t.datePattern,i=t.dateMin||[],t=t.dateMax||[];return!e.length||i.length<3&&t.length<3||r.find(function(e){return"y"===e.toLowerCase()})&&0===e[2]?e:t.length&&(t[2]<e[2]||t[2]===e[2]&&(t[1]<e[1]||t[1]===e[1]&&t[0]<e[0]))?t:i.length&&(i[2]>e[2]||i[2]===e[2]&&(i[1]>e[1]||i[1]===e[1]&&i[0]>e[0]))?i:e},getFixedDate:function(e,t,r){return e=Math.min(e,31),t=Math.min(t,12),r=parseInt(r||0,10),[e=t<7&&t%2==0||8<t&&t%2==1?Math.min(e,2===t?this.isLeapYear(r)?29:28:30):e,t,r]},isLeapYear:function(e){return e%4==0&&e%100!=0||e%400==0},addLeadingZero:function(e){return(e<10?"0":"")+e},addLeadingZeroForYear:function(e,t){return t?(e<10?"000":e<100?"00":e<1e3?"0":"")+e:(e<10?"0":"")+e}},e.exports=r},function(e,t){"use strict";function r(e,t){var r=this;r.time=[],r.blocks=[],r.timePattern=e,r.timeFormat=t,r.initBlocks()}r.prototype={initBlocks:function(){var e=this;e.timePattern.forEach(function(){e.blocks.push(2)})},getISOFormatTime:function(){var e=this,t=e.time;return t[2]?e.addLeadingZero(t[0])+":"+e.addLeadingZero(t[1])+":"+e.addLeadingZero(t[2]):""},getBlocks:function(){return this.blocks},getTimeFormatOptions:function(){return"12"===String(this.timeFormat)?{maxHourFirstDigit:1,maxHours:12,maxMinutesFirstDigit:5,maxMinutes:60}:{maxHourFirstDigit:2,maxHours:23,maxMinutesFirstDigit:5,maxMinutes:60}},getValidatedTime:function(e){var t=this,r="",i=(e=e.replace(/[^\d]/g,""),t.getTimeFormatOptions());return t.blocks.forEach(function(n,a){if(0<e.length){var o=e.slice(0,n),l=o.slice(0,1),n=e.slice(n);switch(t.timePattern[a]){case"h":parseInt(l,10)>i.maxHourFirstDigit?o="0"+l:parseInt(o,10)>i.maxHours&&(o=i.maxHours+"");break;case"m":case"s":parseInt(l,10)>i.maxMinutesFirstDigit?o="0"+l:parseInt(o,10)>i.maxMinutes&&(o=i.maxMinutes+"")}r+=o,e=n}}),this.getFixedTimeString(r)},getFixedTimeString:function(e){var r,i,u,n=this,a=n.timePattern,o=[],l=0,s=0,c=0,d=0,m=0;return 6===e.length&&(a.forEach(function(e,t){switch(e){case"s":l=2*t;break;case"m":s=2*t;break;case"h":c=2*t}}),m=c,d=s,u=l,u=parseInt(e.slice(u,u+2),10),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+2),10),o=this.getFixedTime(i,r,u)),4===e.length&&n.timePattern.indexOf("s")<0&&(a.forEach(function(e,t){switch(e){case"m":s=2*t;break;case"h":c=2*t}}),m=c,d=s,u=0,r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+2),10),o=this.getFixedTime(i,r,u)),0===(n.time=o).length?e:a.reduce(function(e,t){switch(t){case"s":return e+n.addLeadingZero(o[2]);case"m":return e+n.addLeadingZero(o[1]);case"h":return e+n.addLeadingZero(o[0])}},"")},getFixedTime:function(e,t,r){return r=Math.min(parseInt(r||0,10),60),t=Math.min(t,60),[e=Math.min(e,60),t,r]},addLeadingZero:function(e){return(e<10?"0":"")+e}},e.exports=r},function(e,t){"use strict";function r(e,t){var r=this;r.delimiter=t||""===t?t:" ",r.delimiterRE=t?new RegExp("\\"+t,"g"):"",r.formatter=e}r.prototype={setFormatter:function(e){this.formatter=e},format:function(e){var t=this;t.formatter.clear();for(var r,i="",n=!1,a=0,o=(e=(e=(e=e.replace(/[^\d+]/g,"")).replace(/^\+/,"B").replace(/\+/g,"").replace("B","+")).replace(t.delimiterRE,"")).length;a<o;a++)r=t.formatter.inputDigit(e.charAt(a)),/[\s()-]/g.test(r)?(i=r,n=!0):n||(i=r);return(i=i.replace(/[()]/g,"")).replace(/[\s-]/g,t.delimiter)}},e.exports=r},function(e,t){"use strict";var r={blocks:{uatp:[4,5,6],amex:[4,6,5],diners:[4,6,4],discover:[4,4,4,4],mastercard:[4,4,4,4],dankort:[4,4,4,4],instapayment:[4,4,4,4],jcb15:[4,6,5],jcb:[4,4,4,4],maestro:[4,4,4,4],visa:[4,4,4,4],mir:[4,4,4,4],unionPay:[4,4,4,4],general:[4,4,4,4]},re:{uatp:/^(?!1800)1\d{0,14}/,amex:/^3[47]\d{0,13}/,discover:/^(?:6011|65\d{0,2}|64[4-9]\d?)\d{0,12}/,diners:/^3(?:0([0-5]|9)|[689]\d?)\d{0,11}/,mastercard:/^(5[1-5]\d{0,2}|22[2-9]\d{0,1}|2[3-7]\d{0,2})\d{0,12}/,dankort:/^(5019|4175|4571)\d{0,12}/,instapayment:/^63[7-9]\d{0,13}/,jcb15:/^(?:2131|1800)\d{0,11}/,jcb:/^(?:35\d{0,2})\d{0,12}/,maestro:/^(?:5[0678]\d{0,2}|6304|67\d{0,2})\d{0,12}/,mir:/^220[0-4]\d{0,12}/,visa:/^4\d{0,15}/,unionPay:/^(62|81)\d{0,14}/},getStrictBlocks:function(e){var t=e.reduce(function(e,t){return e+t},0);return e.concat(19-t)},getInfo:function(e,t){var a,o,i=r.blocks,n=r.re;for(a in t=!!t,n)if(n[a].test(e))return o=i[a],{type:a,blocks:t?this.getStrictBlocks(o):o};return{type:"unknown",blocks:t?this.getStrictBlocks(i.general):i.general}}};e.exports=r},function(e,t){"use strict";e.exports={noop:function(){},strip:function(e,t){return e.replace(t,"")},getPostDelimiter:function(e,t,r){if(0===r.length)return e.slice(-t.length)===t?t:"";var i="";return r.forEach(function(t){e.slice(-t.length)===t&&(i=t)}),i},getDelimiterREByDelimiter:function(e){return new RegExp(e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),"g")},getNextCursorPosition:function(e,t,r,i,n){return t.length===e?r.length:e+this.getPositionOffset(e,t,r,i,n)},getPositionOffset:function(e,t,r,i,n){t=this.stripDelimiters(t.slice(0,e),i,n),r=this.stripDelimiters(r.slice(0,e),i,n),e=t.length-r.length;return 0!=e?e/Math.abs(e):0},stripDelimiters:function(e,t,r){var i=this;return 0===r.length?(t=t?i.getDelimiterREByDelimiter(t):"",e.replace(t,"")):(r.forEach(function(t){t.split("").forEach(function(t){e=e.replace(i.getDelimiterREByDelimiter(t),"")})}),e)},headStr:function(e,t){return e.slice(0,t)},getMaxLength:function(e){return e.reduce(function(e,t){return e+t},0)},getPrefixStrippedValue:function(e,t,r,i,n,a,o,l,s){if(0===r)return e;if(e===t&&""!==e)return"";if(s&&"-"==e.slice(0,1))return c="-"==i.slice(0,1)?i.slice(1):i,"-"+this.getPrefixStrippedValue(e.slice(1),t,r,c,n,a,o,l,s);if(i.slice(0,r)!==t&&!l)return o&&!i&&e?e:"";if(i.slice(-r)!==t&&l)return o&&!i&&e?e:"";var c=this.stripDelimiters(i,n,a);return e.slice(0,r)===t||l?e.slice(-r)!==t&&l?c.slice(0,-r-1):l?e.slice(0,-r):e.slice(r):c.slice(r)},getFirstDiffIndex:function(e,t){for(var r=0;e.charAt(r)===t.charAt(r);)if(""===e.charAt(r++))return-1;return r},getFormattedValue:function(e,t,r,i,n,a){var o="",l=0<n.length,s="";return 0===r?e:(t.forEach(function(t,c){var u,d;0<e.length&&(u=e.slice(0,t),d=e.slice(t),s=l?n[a?c-1:c]||s:i,a?(0<c&&(o+=s),o+=u):(o+=u,u.length===t&&c<r-1&&(o+=s)),e=d)}),o)},fixPrefixCursor:function(e,t,r,i){var n,o;e&&(n=e.value,r=r||i[0]||" ",!e.setSelectionRange||!t||t.length+r.length<=n.length||(o=2*n.length,setTimeout(function(){e.setSelectionRange(o,o)},1)))},checkFullSelection:function(e){try{return(window.getSelection()||document.getSelection()||{}).toString().length===e.length}catch(r){}return!1},setSelection:function(e,t,r){if(e===this.getActiveElement(r)&&!(e&&e.value.length<=t))if(e.createTextRange){r=e.createTextRange();r.move("character",t),r.select()}else try{e.setSelectionRange(t,t)}catch(n){console.warn("The input element type does not support selection")}},getActiveElement:function(e){e=e.activeElement;return e&&e.shadowRoot?this.getActiveElement(e.shadowRoot):e},isAndroid:function(){return navigator&&/android/i.test(navigator.userAgent)},isAndroidBackspaceKeydown:function(e,t){return!!(this.isAndroid()&&e&&t)&&t===e.slice(0,-1)}}},function(e,t){!function(t){"use strict";e.exports={assign:function(e,r){return(e=e||{}).creditCard=!!(r=r||{}).creditCard,e.creditCardStrictMode=!!r.creditCardStrictMode,e.creditCardType="",e.onCreditCardTypeChanged=r.onCreditCardTypeChanged||function(){},e.phone=!!r.phone,e.phoneRegionCode=r.phoneRegionCode||"AU",e.phoneFormatter={},e.time=!!r.time,e.timePattern=r.timePattern||["h","m","s"],e.timeFormat=r.timeFormat||"24",e.timeFormatter={},e.date=!!r.date,e.datePattern=r.datePattern||["d","m","Y"],e.dateMin=r.dateMin||"",e.dateMax=r.dateMax||"",e.dateFormatter={},e.numeral=!!r.numeral,e.numeralIntegerScale=0<r.numeralIntegerScale?r.numeralIntegerScale:0,e.numeralDecimalScale=0<=r.numeralDecimalScale?r.numeralDecimalScale:2,e.numeralDecimalMark=r.numeralDecimalMark||".",e.numeralThousandsGroupStyle=r.numeralThousandsGroupStyle||"thousand",e.numeralPositiveOnly=!!r.numeralPositiveOnly,e.stripLeadingZeroes=!1!==r.stripLeadingZeroes,e.signBeforePrefix=!!r.signBeforePrefix,e.tailPrefix=!!r.tailPrefix,e.swapHiddenInput=!!r.swapHiddenInput,e.numericOnly=e.creditCard||e.date||!!r.numericOnly,e.uppercase=!!r.uppercase,e.lowercase=!!r.lowercase,e.prefix=!e.creditCard&&!e.date&&r.prefix||"",e.noImmediatePrefix=!!r.noImmediatePrefix,e.prefixLength=e.prefix.length,e.rawValueTrimPrefix=!!r.rawValueTrimPrefix,e.copyDelimiter=!!r.copyDelimiter,e.initValue=void 0!==r.initValue&&null!==r.initValue?r.initValue.toString():"",e.delimiter=r.delimiter||""===r.delimiter?r.delimiter:r.date?"/":r.time?":":r.numeral?",":(r.phone," "),e.delimiterLength=e.delimiter.length,e.delimiterLazyShow=!!r.delimiterLazyShow,e.delimiters=r.delimiters||[],e.blocks=r.blocks||[],e.blocksLength=e.blocks.length,e.root="object"==typeof t&&t?t:window,e.document=r.document||e.root.document,e.maxLength=0,e.backspace=!1,e.result="",e.onValueChanged=r.onValueChanged||function(){},e}}}.call(t,function(){return this}())}],r={},t.m=e,t.c=r,t.p="",t(0);function t(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return e[i].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var e,r}),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.multi_line_text={init:function(options){this.$form=options.form,this.type=this.$el.data("happyforms-type"),this.$input=$("textarea",this.$el),this.$counter=$(".happyforms-part__char-counter span.counter",this.$el),this.$input.on("blur",this.onBlur.bind(this)),this.$input.on("keyup",this.triggerChange.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$el.on("keyup",this.refreshCounter.bind(this)),this.refreshCounter(),$(".happyforms-part__char-counter").show()},getValueLength:function(){var mode=this.$input.attr("data-length-mode"),value=this.$input.val(),length=value.length;return length="word"===mode?(mode=value.match(/\w+/g))?mode.length:0:length},refreshCounter:function(){var length;parseInt(this.$input.attr("data-length"),10)<1||(length=this.getValueLength(),this.$counter.text(length))},onFocus:function(){this.$el.addClass("focus")},onBlur:function(){this.$el.removeClass("focus")},isFilled:function(){return""!==this.$input.val()},serialize:function(){return HappyForms.parts.base.serialize.apply(this,arguments)}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.email={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input",this.$el),this.$visualInput=$("input[type=email]",this.$el),this.$input.on("keyup",this.triggerChange.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("focus",this.onInputFocus.bind(this)),this.$visualInput.on("blur",this.onBlur.bind(this))}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.radio={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input",this.$el),this.$visualInput=$("input[type=email]",this.$el),this.$input.on("keyup",this.triggerChange.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("change",this.onRadioChange.bind(this)),this.$input.on("focus",this.onFocus.bind(this))},onRadioChange:function(e){var $otherRadio=$(".happyforms-part-option--other input[type=radio]",this.$el),$otherInput=$otherRadio.parent().nextAll("input"),$generalInput=$("input[type=text]",this.$el);$generalInput.prop("required",!1),$otherRadio.length&&$otherRadio.is(":checked")?($(e.target)[0]===$otherRadio[0]&&$otherInput.addClass("hf-show").trigger("focus"),""===this.$el.data("happyforms-required")&&$otherInput.prop("required",!0)):$generalInput.removeClass("hf-show")},onFocus:function(e){e=$(e.target);"text"===e.attr("type")&&e.prevAll("input[type=radio]").prop("checked",!0)},serialize:function(){var self=this;return this.$input.map(function(i,input){var input=$(input),$customInput=0;if("text"!==input.attr("type")){"text"===$(self.$input[i+1]).attr("type")&&($customInput=$(self.$input[i+1]));i={name:input.attr("name"),value:input.val()};if($customInput.length&&($customInput=$customInput.val(),i.value=[input.val(),$customInput],i.value=JSON.stringify(i.value)),input.is(":checked"))return i}}).toArray()}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.checkbox={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input",this.$el),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("change",this.onCheckboxChange.bind(this)),this.$input.on("focus",this.onFocus.bind(this))},onCheckboxChange:function(e){var $otherCheckbox=$(".happyforms-part-option--other input[type=checkbox]",this.$el),$otherInput=$otherCheckbox.parent().nextAll("input"),$generalInput=$("input[type=text]",this.$el);$generalInput.prop("required",!1),$otherCheckbox.length&&$otherCheckbox.is(":checked")?($(e.target)[0]===$otherCheckbox[0]&&$otherInput.addClass("hf-show").trigger("focus"),""===this.$el.data("happyforms-required")&&$otherInput.prop("required",!0)):$generalInput.removeClass("hf-show")},serialize:function(){var self=this;return this.$input.map(function(i,input){var input=$(input),$customInput=0;if("text"!==input.attr("type")){"text"===$(self.$input[i+1]).attr("type")&&($customInput=$(self.$input[i+1]));i={name:input.attr("name"),value:input.val()};if($customInput.length&&($customInput=$customInput.val(),i.value=[input.val(),$customInput],i.value=JSON.stringify(i.value)),input.is(":checked"))return i}}).toArray()},onFocus:function(e){e=$(e.target);"text"===e.attr("type")&&e.prevAll("input[type=checkbox]").prop("checked",!0)}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.select={init:function(options){this.type=this.$el.data("happyforms-type"),this.$input=$("[data-serialize]",this.$el),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("blur",this.onBlur.bind(this))},onBlur:function(){var $otherinput=$(".happyforms-part-option--other input[type=text]",this.$el);"999"===this.$input.val()?($otherinput.addClass("hf-show"),$otherinput.focus()):$otherinput.removeClass("hf-show")},serialize:function(){var self=this;return this.$input.map(function(i,select){var select=$(select,self.$el),$customInput=0,value=(999==select.val()&&($customInput=$(" .happyforms-part-option--other input[type=text]",self.$el)),select.val()),value=(null==value&&(value=""),{name:select.attr("name"),value:value});return $customInput.length&&($customInput=$customInput.val(),value.value=[select.val(),$customInput],value.value=JSON.stringify(value.value)),value}).toArray()}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.number={init:function(){this.type=this.$el.data("happyforms-type"),this.allowedKeys=["0","1","2","3","4","5","6","7","8","9","Meta","Delete","ArrowLeft","ArrowRight"];var self,decimalMark,delimiterMark,masked=this.$el.attr("data-mask");this.$input=$("input",this.$el),this.cleaveInstances=[],this.$input.on("keyup",this.onKeyUp.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("focus",this.onInputFocus.bind(this)),this.$input.on("blur",this.onBlur.bind(this)),this.numeralDecimalMark=this.$el.attr("data-decimal-mark")||"",this.delimiter=this.$el.attr("data-thousands-delimiter")||"",masked&&(decimalMark=(self=this).numeralDecimalMark,delimiterMark=this.delimiter,this.$input.each(function(){var $input=$(this),$input=new Cleave($input,{numeral:!0,numeralDecimalMark:decimalMark,delimiter:delimiterMark});self.cleaveInstances.push($input)})),this.onBlur()},onKeyUp:function(e){var value=$(e.target).val(),regex=new RegExp("[^0-9"+this.numeralDecimalMark+this.delimiter+"-]","g"),value=value.replace(regex,"");$(e.target).val(value),this.triggerChange()},reinit:function(){$.each(this.cleaveInstances,function(i,instance){var input=instance.element,rawValue=instance.getRawValue();instance.destroy(),input.value=rawValue}),this.init()}}}(jQuery),HappyForms.Antispam={getHash:function(data){var hash=[];return data.forEach(function(entry){hash.push(entry.value)}),hash=hash.join("").replace(/[^\w\d]/gm,""),hash=md5(hash)},getPlatformInfo:function(){var key,value,info={user_agent:navigator.userAgent,app_version:navigator.appVersion,language:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage,languages_length:navigator.languages.length,webdriver:navigator.webdriver?1:0,concurrency:navigator.hardwareConcurrency,outer_width:window.outerWidth,outer_height:window.outerHeight,connectionRtt:navigator.connection?navigator.connection.rtt:-1},platformInfo={};for([key,value]of Object.entries(info))platformInfo[`platform_info[${key}]`]=value;return platformInfo}},function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.base={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input, textarea, select",this.$el),this.$input.on("keyup change",this.triggerChange.bind(this)),this.$input.on("blur",this.onBlur.bind(this)),this.$input.on("focus",this.onInputFocus.bind(this)),this.onBlur()},getType:function(){return this.type},onInputFocus:function(){this.$el.addClass("focus")},onBlur:function(){this.$el.is(".happyforms-part--label-as_placeholder")&&(this.isFilled()?this.$el.addClass("happyforms-part--filled"):this.$el.removeClass("happyforms-part--filled")),this.$el.removeClass("focus")},triggerChange:function(data){this.$el.trigger("happyforms-change",data)},isRequired:function(){return this.$el.is(":visible")&&this.$el.is("[data-happyforms-required]")},isFilled:function(){return 0<this.$input.filter(function(){var $input=$(this);return $input.is("[type=checkbox]")||$input.is("[type=radio]")?$input.is(":checked"):""!==$input.val()}).length},confirmationMatches:function(){var matches=!1,$input=this.$input,$input=($input=this.$visualInput?this.$visualInput:$input).map(function(){return $(this).val()}).toArray();return matches=2===$input.length?$input[0]===$input[1]:matches},requiresConfirmation:function(){return this.$el.is("[data-happyforms-require-confirmation]")},serialize:function(){return this.$input.map(function(i,input){var input=$(input),keyValue={name:input.attr("name"),value:input.val()};if(!input.is("[type=checkbox]")&&!input.is("[type=radio]")||input.is(":checked"))return keyValue}).toArray()},isValid:function(){var valid=!0;this.$el.data("happyforms-type");return this.$input?(this.isRequired()&&(valid=valid&&this.isFilled()),this.isRequired()&&this.requiresConfirmation()?valid&&this.confirmationMatches():valid):valid},destroy:function(){this.$el.data("HappyFormPart",!1)}},HappyForms.wrapPart=function($part,$form){var type=$part.data("happyforms-type"),partMethods=HappyForms.parts.base;HappyForms.parts[type]&&(partMethods=$.extend({},HappyForms.parts.base,HappyForms.parts[type])),$part.happyFormPart(partMethods,{form:$form})},HappyForms.Form=function(el){this.el=el,this.$el=$(this.el),this.$form=$("form",this.$el),this.$parts=$("[data-happyforms-type]",this.$form),this.$submits=$('[type="submit"], a.submit',this.$form),this.$submit=$('[type="submit"]',this.$form),this.$submitLinks=$("a.submit",this.$form),this.$step=$('[name="happyforms_step"]',this.$form),this.init()},HappyForms.Form.prototype={init:function(){var $form=this.$form;$("[data-happyforms-type]",this.$form).each(function(){var $part=$(this);$part.data("happyforms-type");HappyForms.wrapPart($part,$form)}),this.$el.trigger("happyforms-change"),this.$el.trigger("happyforms-init"),this.$form.off("submit"),this.$submit.off("click"),this.$submitLinks.off("click"),this.$form.on("submit",this.submit.bind(this)),this.$submit.on("click",this.buttonSubmit.bind(this)),this.$submitLinks.on("click",this.linkSubmit.bind(this)),this.$el.on("happyforms-scrolltop",this.onScrollTop.bind(this))},detach:function(){this.$el.off("happyforms-change"),this.$el.off("happyforms-scrolltop"),$("[data-happyforms-type]",this.$form).remove()},serialize:function(submitEl){for(var action=$("[name=action]",this.$form).val(),form_id=$("[name=happyforms_form_id]",this.$form).val(),formData=($("[name=_wp_http_referer]",this.$form).val(),[{name:"action",value:action},{name:"happyforms_form_id",value:form_id},{name:"happyforms_step",value:this.$step.val()},{name:"happyforms_random_seed",value:$("[name=happyforms_random_seed]",this.$form).val()}]),honeypotNames=["single_line_text","multi_line_text","number"],h=0;h<honeypotNames.length;h++){var inputName=form_id+"-"+honeypotNames[h],$input=$("[name="+inputName+"]");if($input.length){formData.push({name:inputName,value:$input.val()});break}}var key,value,action=$("[data-happyforms-type]",this.$form).map(function(i,part){return $(part).happyFormPart("serialize")}).toArray().filter(function(entry){return null!==entry.name&&void 0!==entry.name}),action=formData.concat(action),params=new URLSearchParams,action=(action.forEach(function(entry){params.append(entry.name,entry.value)}),HappyForms.Antispam.getHash(action)),action=(params.append("hash",action),HappyForms.Antispam.getPlatformInfo());for([key,value]of Object.entries(action))params.append(key,value);return params=params.toString()},buttonSubmit:function(e){e.target.hasAttribute("data-step")&&this.$step.val(e.target.getAttribute("data-step"))},linkSubmit:function(e){e.preventDefault(),e.stopImmediatePropagation(),e.target.hasAttribute("data-step")&&this.$step.val(e.target.getAttribute("data-step")),this.$form.trigger("submit")},submit:function(e){e.preventDefault(),this.$form.addClass("happyforms-form--submitting"),this.$submits.attr("disabled","disabled"),$.ajax({type:"post",data:this.serialize(e.target)}).done(this.onSubmitComplete.bind(this))},onSubmitComplete:function(response){if(this.$form.trigger("happyforms.submitted",response),!response.data)return!1;var elTopOffset,$notices;response.data.html&&(response=$(response.data.html),$("[data-happyforms-type]",this.$form).each(function(){$(this).trigger("happyforms.detach")}),this.detach(),this.$el.replaceWith(response),this.$el=response,this.$el.happyForm(),(response=$("form",this.$el)).attr("data-happyforms-scroll-disabled")||(this.$el.get(0).getBoundingClientRect().top<0&&(elTopOffset=this.$el.offset().top,$notices=$(".happyforms-message-notices",this.$el),response.is(".happyforms-form--notices-below")&&$notices.length&&(elTopOffset=$notices.offset().top),($notices=response.attr("data-happyforms-scroll-offset"))&&(elTopOffset+=$notices=parseInt($notices,10)),this.$el.trigger("happyforms-scrolltop",elTopOffset)),!$(".happyforms-message-notice.error",response).length&&this.$el.hasClass("happyforms-form--hide-on-submit")&&$(".happyforms-part",response).hide()))},onScrollTop:function(e,offset){e.isDefaultPrevented()||$("html, body").animate({scrollTop:offset+"px"},500)}},HappyForms.Part=function(el){this.el=el,this.$el=$(this.el)},$.fn.happyFormPart=function(method){if("object"==typeof method){var part=new HappyForms.Part(this);$.extend(part,method),$(this).data("HappyFormPart",part),part.init.apply(part,Array.prototype.slice.call(arguments,1))}else{part=$(this).data("HappyFormPart");if(part&&part[method])return part[method].apply(part,Array.prototype.slice.call(arguments,1))}},$.fn.happyForm=function(method){this.each(function(){if(method){var instance=$.data(this,"HappyForm");if(instance&&instance[method])return instance[method].apply(instance,Array.prototype.slice.call(arguments,1))}else $.data(this,"HappyForm",new HappyForms.Form(this,arguments))})},$(function(){$(".happyforms-form").happyForm()})}(jQuery);
1
+ !function(n){"use strict";function d(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(n,t,r,e,o,u){return d((u=d(d(t,n),d(e,u)))<<o|u>>>32-o,r)}function l(n,t,r,e,o,u,c){return f(t&r|~t&e,n,t,o,u,c)}function g(n,t,r,e,o,u,c){return f(t&e|r&~e,n,t,o,u,c)}function v(n,t,r,e,o,u,c){return f(t^r^e,n,t,o,u,c)}function m(n,t,r,e,o,u,c){return f(r^(t|~e),n,t,o,u,c)}function c(n,t){var r,e,o,u;n[t>>5]|=128<<t%32,n[14+(t+64>>>9<<4)]=t;for(var c=1732584193,f=-271733879,i=-1732584194,a=271733878,h=0;h<n.length;h+=16)c=l(r=c,e=f,o=i,u=a,n[h],7,-680876936),a=l(a,c,f,i,n[h+1],12,-389564586),i=l(i,a,c,f,n[h+2],17,606105819),f=l(f,i,a,c,n[h+3],22,-1044525330),c=l(c,f,i,a,n[h+4],7,-176418897),a=l(a,c,f,i,n[h+5],12,1200080426),i=l(i,a,c,f,n[h+6],17,-1473231341),f=l(f,i,a,c,n[h+7],22,-45705983),c=l(c,f,i,a,n[h+8],7,1770035416),a=l(a,c,f,i,n[h+9],12,-1958414417),i=l(i,a,c,f,n[h+10],17,-42063),f=l(f,i,a,c,n[h+11],22,-1990404162),c=l(c,f,i,a,n[h+12],7,1804603682),a=l(a,c,f,i,n[h+13],12,-40341101),i=l(i,a,c,f,n[h+14],17,-1502002290),c=g(c,f=l(f,i,a,c,n[h+15],22,1236535329),i,a,n[h+1],5,-165796510),a=g(a,c,f,i,n[h+6],9,-1069501632),i=g(i,a,c,f,n[h+11],14,643717713),f=g(f,i,a,c,n[h],20,-373897302),c=g(c,f,i,a,n[h+5],5,-701558691),a=g(a,c,f,i,n[h+10],9,38016083),i=g(i,a,c,f,n[h+15],14,-660478335),f=g(f,i,a,c,n[h+4],20,-405537848),c=g(c,f,i,a,n[h+9],5,568446438),a=g(a,c,f,i,n[h+14],9,-1019803690),i=g(i,a,c,f,n[h+3],14,-187363961),f=g(f,i,a,c,n[h+8],20,1163531501),c=g(c,f,i,a,n[h+13],5,-1444681467),a=g(a,c,f,i,n[h+2],9,-51403784),i=g(i,a,c,f,n[h+7],14,1735328473),c=v(c,f=g(f,i,a,c,n[h+12],20,-1926607734),i,a,n[h+5],4,-378558),a=v(a,c,f,i,n[h+8],11,-2022574463),i=v(i,a,c,f,n[h+11],16,1839030562),f=v(f,i,a,c,n[h+14],23,-35309556),c=v(c,f,i,a,n[h+1],4,-1530992060),a=v(a,c,f,i,n[h+4],11,1272893353),i=v(i,a,c,f,n[h+7],16,-155497632),f=v(f,i,a,c,n[h+10],23,-1094730640),c=v(c,f,i,a,n[h+13],4,681279174),a=v(a,c,f,i,n[h],11,-358537222),i=v(i,a,c,f,n[h+3],16,-722521979),f=v(f,i,a,c,n[h+6],23,76029189),c=v(c,f,i,a,n[h+9],4,-640364487),a=v(a,c,f,i,n[h+12],11,-421815835),i=v(i,a,c,f,n[h+15],16,530742520),c=m(c,f=v(f,i,a,c,n[h+2],23,-995338651),i,a,n[h],6,-198630844),a=m(a,c,f,i,n[h+7],10,1126891415),i=m(i,a,c,f,n[h+14],15,-1416354905),f=m(f,i,a,c,n[h+5],21,-57434055),c=m(c,f,i,a,n[h+12],6,1700485571),a=m(a,c,f,i,n[h+3],10,-1894986606),i=m(i,a,c,f,n[h+10],15,-1051523),f=m(f,i,a,c,n[h+1],21,-2054922799),c=m(c,f,i,a,n[h+8],6,1873313359),a=m(a,c,f,i,n[h+15],10,-30611744),i=m(i,a,c,f,n[h+6],15,-1560198380),f=m(f,i,a,c,n[h+13],21,1309151649),c=m(c,f,i,a,n[h+4],6,-145523070),a=m(a,c,f,i,n[h+11],10,-1120210379),i=m(i,a,c,f,n[h+2],15,718787259),f=m(f,i,a,c,n[h+9],21,-343485551),c=d(c,r),f=d(f,e),i=d(i,o),a=d(a,u);return[c,f,i,a]}function i(n){for(var t="",r=32*n.length,e=0;e<r;e+=8)t+=String.fromCharCode(n[e>>5]>>>e%32&255);return t}function a(n){var t=[];for(t[(n.length>>2)-1]=void 0,e=0;e<t.length;e+=1)t[e]=0;for(var r=8*n.length,e=0;e<r;e+=8)t[e>>5]|=(255&n.charCodeAt(e/8))<<e%32;return t}function e(n){for(var t,r="0123456789abcdef",e="",o=0;o<n.length;o+=1)t=n.charCodeAt(o),e+=r.charAt(t>>>4&15)+r.charAt(15&t);return e}function r(n){return unescape(encodeURIComponent(n))}function o(n){return i(c(a(n=r(n)),8*n.length))}function u(n,t){return function(n,t){var r,e=a(n),o=[],u=[];for(o[15]=u[15]=void 0,16<e.length&&(e=c(e,8*n.length)),r=0;r<16;r+=1)o[r]=909522486^e[r],u[r]=1549556828^e[r];return t=c(o.concat(a(t)),512+8*t.length),i(c(u.concat(t),640))}(r(n),r(t))}function t(n,t,r){return t?r?u(t,n):e(u(t,n)):r?o(n):e(o(n))}"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:n.md5=t}(this),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Cleave=t():e.Cleave=t()}(this,function(){return e=[function(e,t,r){!function(t){"use strict";function i(e,t){var r=this,n=!1;if("string"==typeof e?(r.element=document.querySelector(e),n=1<document.querySelectorAll(e).length):void 0!==e.length&&0<e.length?(r.element=e[0],n=1<e.length):r.element=e,!r.element)throw new Error("[cleave.js] Please check the element");if(n)try{console.warn("[cleave.js] Multiple input fields matched, cleave.js will only take the first one.")}catch(a){}t.initValue=r.element.value,r.properties=i.DefaultProperties.assign({},t),r.init()}i.prototype={init:function(){var e=this,t=e.properties;return t.numeral||t.phone||t.creditCard||t.time||t.date||0!==t.blocksLength||t.prefix?(t.maxLength=i.Util.getMaxLength(t.blocks),e.isAndroid=i.Util.isAndroid(),e.lastInputValue="",e.isBackward="",e.onChangeListener=e.onChange.bind(e),e.onKeyDownListener=e.onKeyDown.bind(e),e.onFocusListener=e.onFocus.bind(e),e.onCutListener=e.onCut.bind(e),e.onCopyListener=e.onCopy.bind(e),e.initSwapHiddenInput(),e.element.addEventListener("input",e.onChangeListener),e.element.addEventListener("keydown",e.onKeyDownListener),e.element.addEventListener("focus",e.onFocusListener),e.element.addEventListener("cut",e.onCutListener),e.element.addEventListener("copy",e.onCopyListener),e.initPhoneFormatter(),e.initDateFormatter(),e.initTimeFormatter(),e.initNumeralFormatter(),void((t.initValue||t.prefix&&!t.noImmediatePrefix)&&e.onInput(t.initValue))):void e.onInput(t.initValue)},initSwapHiddenInput:function(){var r,e=this;e.properties.swapHiddenInput&&(r=e.element.cloneNode(!0),e.element.parentNode.insertBefore(r,e.element),e.elementSwapHidden=e.element,e.elementSwapHidden.type="hidden",e.element=r,e.element.id="")},initNumeralFormatter:function(){var t=this.properties;t.numeral&&(t.numeralFormatter=new i.NumeralFormatter(t.numeralDecimalMark,t.numeralIntegerScale,t.numeralDecimalScale,t.numeralThousandsGroupStyle,t.numeralPositiveOnly,t.stripLeadingZeroes,t.prefix,t.signBeforePrefix,t.tailPrefix,t.delimiter))},initTimeFormatter:function(){var t=this.properties;t.time&&(t.timeFormatter=new i.TimeFormatter(t.timePattern,t.timeFormat),t.blocks=t.timeFormatter.getBlocks(),t.blocksLength=t.blocks.length,t.maxLength=i.Util.getMaxLength(t.blocks))},initDateFormatter:function(){var t=this.properties;t.date&&(t.dateFormatter=new i.DateFormatter(t.datePattern,t.dateMin,t.dateMax),t.blocks=t.dateFormatter.getBlocks(),t.blocksLength=t.blocks.length,t.maxLength=i.Util.getMaxLength(t.blocks))},initPhoneFormatter:function(){var t=this.properties;if(t.phone)try{t.phoneFormatter=new i.PhoneFormatter(new t.root.Cleave.AsYouTypeFormatter(t.phoneRegionCode),t.delimiter)}catch(r){throw new Error("[cleave.js] Please include phone-type-formatter.{country}.js lib")}},onKeyDown:function(e){var t=this,e=e.which||e.keyCode;t.lastInputValue=t.element.value,t.isBackward=8===e},onChange:function(e){var t=this,r=t.properties,n=i.Util,e=(t.isBackward=t.isBackward||"deleteContentBackward"===e.inputType,n.getPostDelimiter(t.lastInputValue,r.delimiter,r.delimiters));t.isBackward&&e?r.postDelimiterBackspace=e:r.postDelimiterBackspace=!1,this.onInput(this.element.value)},onFocus:function(){var e=this,t=e.properties;e.lastInputValue=e.element.value,t.prefix&&t.noImmediatePrefix&&!e.element.value&&this.onInput(t.prefix),i.Util.fixPrefixCursor(e.element,t.prefix,t.delimiter,t.delimiters)},onCut:function(e){i.Util.checkFullSelection(this.element.value)&&(this.copyClipboardData(e),this.onInput(""))},onCopy:function(e){i.Util.checkFullSelection(this.element.value)&&this.copyClipboardData(e)},copyClipboardData:function(e){var r=this.properties,n=i.Util,a=this.element.value,n=r.copyDelimiter?a:n.stripDelimiters(a,r.delimiter,r.delimiters);try{(e.clipboardData?e:window).clipboardData.setData("Text",n),e.preventDefault()}catch(l){}},onInput:function(e){var t=this,r=t.properties,n=i.Util,a=n.getPostDelimiter(e,r.delimiter,r.delimiters);r.numeral||!r.postDelimiterBackspace||a||(e=n.headStr(e,e.length-r.postDelimiterBackspace.length)),r.phone?!r.prefix||r.noImmediatePrefix&&!e.length?r.result=r.phoneFormatter.format(e):r.result=r.prefix+r.phoneFormatter.format(e).slice(r.prefix.length):r.numeral?r.prefix&&r.noImmediatePrefix&&0===e.length?r.result="":r.result=r.numeralFormatter.format(e):(r.date&&(e=r.dateFormatter.getValidatedDate(e)),r.time&&(e=r.timeFormatter.getValidatedTime(e)),e=n.stripDelimiters(e,r.delimiter,r.delimiters),e=n.getPrefixStrippedValue(e,r.prefix,r.prefixLength,r.result,r.delimiter,r.delimiters,r.noImmediatePrefix,r.tailPrefix,r.signBeforePrefix),e=r.numericOnly?n.strip(e,/[^\d]/g):e,e=r.uppercase?e.toUpperCase():e,e=r.lowercase?e.toLowerCase():e,r.prefix&&(r.tailPrefix?e+=r.prefix:e=r.prefix+e,0===r.blocksLength)?r.result=e:(r.creditCard&&t.updateCreditCardPropsByValue(e),e=n.headStr(e,r.maxLength),r.result=n.getFormattedValue(e,r.blocks,r.blocksLength,r.delimiter,r.delimiters,r.delimiterLazyShow))),t.updateValueState()},updateCreditCardPropsByValue:function(e){var n=this.properties,a=i.Util;a.headStr(n.result,4)!==a.headStr(e,4)&&(e=i.CreditCardDetector.getInfo(e,n.creditCardStrictMode),n.blocks=e.blocks,n.blocksLength=n.blocks.length,n.maxLength=a.getMaxLength(n.blocks),n.creditCardType!==e.type&&(n.creditCardType=e.type,n.onCreditCardTypeChanged.call(this,n.creditCardType)))},updateValueState:function(){var n,a,o,e=this,t=i.Util,r=e.properties;e.element&&(n=e.element.selectionEnd,a=e.element.value,o=r.result,n=t.getNextCursorPosition(n,a,o,r.delimiter,r.delimiters),e.isAndroid?window.setTimeout(function(){e.element.value=o,t.setSelection(e.element,n,r.document,!1),e.callOnValueChanged()},1):(e.element.value=o,r.swapHiddenInput&&(e.elementSwapHidden.value=e.getRawValue()),t.setSelection(e.element,n,r.document,!1),e.callOnValueChanged()))},callOnValueChanged:function(){var e=this,t=e.properties;t.onValueChanged.call(e,{target:{name:e.element.name,value:t.result,rawValue:e.getRawValue()}})},setPhoneRegionCode:function(e){var t=this;t.properties.phoneRegionCode=e,t.initPhoneFormatter(),t.onChange()},setRawValue:function(e){var t=this,r=t.properties;e=null!=e?e.toString():"",r.numeral&&(e=e.replace(".",r.numeralDecimalMark)),r.postDelimiterBackspace=!1,t.element.value=e,t.onInput(e)},getRawValue:function(){var t=this.properties,r=i.Util,n=this.element.value;return t.rawValueTrimPrefix&&(n=r.getPrefixStrippedValue(n,t.prefix,t.prefixLength,t.result,t.delimiter,t.delimiters,t.noImmediatePrefix,t.tailPrefix,t.signBeforePrefix)),t.numeral?t.numeralFormatter.getRawValue(n):r.stripDelimiters(n,t.delimiter,t.delimiters)},getISOFormatDate:function(){var t=this.properties;return t.date?t.dateFormatter.getISOFormatDate():""},getISOFormatTime:function(){var t=this.properties;return t.time?t.timeFormatter.getISOFormatTime():""},getFormattedValue:function(){return this.element.value},destroy:function(){var e=this;e.element.removeEventListener("input",e.onChangeListener),e.element.removeEventListener("keydown",e.onKeyDownListener),e.element.removeEventListener("focus",e.onFocusListener),e.element.removeEventListener("cut",e.onCutListener),e.element.removeEventListener("copy",e.onCopyListener)},toString:function(){return"[Cleave Object]"}},i.NumeralFormatter=r(1),i.DateFormatter=r(2),i.TimeFormatter=r(3),i.PhoneFormatter=r(4),i.CreditCardDetector=r(5),i.Util=r(6),i.DefaultProperties=r(7),("object"==typeof t&&t?t:window).Cleave=i,e.exports=i}.call(t,function(){return this}())},function(e,t){"use strict";function r(e,t,i,n,a,o,l,s,c,u){var d=this;d.numeralDecimalMark=e||".",d.numeralIntegerScale=0<t?t:0,d.numeralDecimalScale=0<=i?i:2,d.numeralThousandsGroupStyle=n||r.groupStyle.thousand,d.numeralPositiveOnly=!!a,d.stripLeadingZeroes=!1!==o,d.prefix=l||""===l?l:"",d.signBeforePrefix=!!s,d.tailPrefix=!!c,d.delimiter=u||""===u?u:",",d.delimiterRE=u?new RegExp("\\"+u,"g"):""}r.groupStyle={thousand:"thousand",lakh:"lakh",wan:"wan",none:"none"},r.prototype={getRawValue:function(e){return e.replace(this.delimiterRE,"").replace(this.numeralDecimalMark,".")},format:function(e){var i,n,a,o=this,l="";switch(e=e.replace(/[A-Za-z]/g,"").replace(o.numeralDecimalMark,"M").replace(/[^\dM-]/g,"").replace(/^\-/,"N").replace(/\-/g,"").replace("N",o.numeralPositiveOnly?"":"-").replace("M",o.numeralDecimalMark),i="-"===(e=o.stripLeadingZeroes?e.replace(/^(-)?0+(?=\d)/,"$1"):e).slice(0,1)?"-":"",n=void 0!==o.prefix?o.signBeforePrefix?i+o.prefix:o.prefix+i:i,0<=(a=e).indexOf(o.numeralDecimalMark)&&(a=(e=e.split(o.numeralDecimalMark))[0],l=o.numeralDecimalMark+e[1].slice(0,o.numeralDecimalScale)),"-"==i&&(a=a.slice(1)),0<o.numeralIntegerScale&&(a=a.slice(0,o.numeralIntegerScale)),o.numeralThousandsGroupStyle){case r.groupStyle.lakh:a=a.replace(/(\d)(?=(\d\d)+\d$)/g,"$1"+o.delimiter);break;case r.groupStyle.wan:a=a.replace(/(\d)(?=(\d{4})+$)/g,"$1"+o.delimiter);break;case r.groupStyle.thousand:a=a.replace(/(\d)(?=(\d{3})+$)/g,"$1"+o.delimiter)}return o.tailPrefix?i+a.toString()+(0<o.numeralDecimalScale?l.toString():"")+o.prefix:n+a.toString()+(0<o.numeralDecimalScale?l.toString():"")}},e.exports=r},function(e,t){"use strict";function r(e,t,r){var i=this;i.date=[],i.blocks=[],i.datePattern=e,i.dateMin=t.split("-").reverse().map(function(e){return parseInt(e,10)}),2===i.dateMin.length&&i.dateMin.unshift(0),i.dateMax=r.split("-").reverse().map(function(e){return parseInt(e,10)}),2===i.dateMax.length&&i.dateMax.unshift(0),i.initBlocks()}r.prototype={initBlocks:function(){var e=this;e.datePattern.forEach(function(t){"Y"===t?e.blocks.push(4):e.blocks.push(2)})},getISOFormatDate:function(){var e=this,t=e.date;return t[2]?t[2]+"-"+e.addLeadingZero(t[1])+"-"+e.addLeadingZero(t[0]):""},getBlocks:function(){return this.blocks},getValidatedDate:function(e){var t=this,r="";return e=e.replace(/[^\d]/g,""),t.blocks.forEach(function(i,n){if(0<e.length){var a=e.slice(0,i),o=a.slice(0,1),i=e.slice(i);switch(t.datePattern[n]){case"d":"00"===a?a="01":3<parseInt(o,10)?a="0"+o:31<parseInt(a,10)&&(a="31");break;case"m":"00"===a?a="01":1<parseInt(o,10)?a="0"+o:12<parseInt(a,10)&&(a="12")}r+=a,e=i}}),this.getFixedDateString(r)},getFixedDateString:function(e){var t,r,i,n=this,a=n.datePattern,o=[],l=0,s=0,c=0,u=0,d=0,m=0,p=!1;return 4===e.length&&"y"!==a[0].toLowerCase()&&"y"!==a[1].toLowerCase()&&(d=2-(u="d"===a[0]?0:2),t=parseInt(e.slice(u,u+2),10),r=parseInt(e.slice(d,d+2),10),o=this.getFixedDate(t,r,0)),8===e.length&&(a.forEach(function(e,t){switch(e){case"d":l=t;break;case"m":s=t;break;default:c=t}}),m=2*c,u=l<=c?2*l:2*l+2,d=s<=c?2*s:2*s+2,t=parseInt(e.slice(u,u+2),10),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+4),10),p=4===e.slice(m,m+4).length,o=this.getFixedDate(t,r,i)),4!==e.length||"y"!==a[0]&&"y"!==a[1]||(m=2-(d="m"===a[0]?0:2),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+2),10),p=2===e.slice(m,m+2).length,o=[0,r,i]),6!==e.length||"Y"!==a[0]&&"Y"!==a[1]||(m=2-.5*(d="m"===a[0]?0:4),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+4),10),p=4===e.slice(m,m+4).length,o=[0,r,i]),o=n.getRangeFixedDate(o),0===(n.date=o).length?e:a.reduce(function(e,t){switch(t){case"d":return e+(0===o[0]?"":n.addLeadingZero(o[0]));case"m":return e+(0===o[1]?"":n.addLeadingZero(o[1]));case"y":return e+(p?n.addLeadingZeroForYear(o[2],!1):"");case"Y":return e+(p?n.addLeadingZeroForYear(o[2],!0):"")}},"")},getRangeFixedDate:function(e){var t=this,r=t.datePattern,i=t.dateMin||[],t=t.dateMax||[];return!e.length||i.length<3&&t.length<3||r.find(function(e){return"y"===e.toLowerCase()})&&0===e[2]?e:t.length&&(t[2]<e[2]||t[2]===e[2]&&(t[1]<e[1]||t[1]===e[1]&&t[0]<e[0]))?t:i.length&&(i[2]>e[2]||i[2]===e[2]&&(i[1]>e[1]||i[1]===e[1]&&i[0]>e[0]))?i:e},getFixedDate:function(e,t,r){return e=Math.min(e,31),t=Math.min(t,12),r=parseInt(r||0,10),[e=t<7&&t%2==0||8<t&&t%2==1?Math.min(e,2===t?this.isLeapYear(r)?29:28:30):e,t,r]},isLeapYear:function(e){return e%4==0&&e%100!=0||e%400==0},addLeadingZero:function(e){return(e<10?"0":"")+e},addLeadingZeroForYear:function(e,t){return t?(e<10?"000":e<100?"00":e<1e3?"0":"")+e:(e<10?"0":"")+e}},e.exports=r},function(e,t){"use strict";function r(e,t){var r=this;r.time=[],r.blocks=[],r.timePattern=e,r.timeFormat=t,r.initBlocks()}r.prototype={initBlocks:function(){var e=this;e.timePattern.forEach(function(){e.blocks.push(2)})},getISOFormatTime:function(){var e=this,t=e.time;return t[2]?e.addLeadingZero(t[0])+":"+e.addLeadingZero(t[1])+":"+e.addLeadingZero(t[2]):""},getBlocks:function(){return this.blocks},getTimeFormatOptions:function(){return"12"===String(this.timeFormat)?{maxHourFirstDigit:1,maxHours:12,maxMinutesFirstDigit:5,maxMinutes:60}:{maxHourFirstDigit:2,maxHours:23,maxMinutesFirstDigit:5,maxMinutes:60}},getValidatedTime:function(e){var t=this,r="",i=(e=e.replace(/[^\d]/g,""),t.getTimeFormatOptions());return t.blocks.forEach(function(n,a){if(0<e.length){var o=e.slice(0,n),l=o.slice(0,1),n=e.slice(n);switch(t.timePattern[a]){case"h":parseInt(l,10)>i.maxHourFirstDigit?o="0"+l:parseInt(o,10)>i.maxHours&&(o=i.maxHours+"");break;case"m":case"s":parseInt(l,10)>i.maxMinutesFirstDigit?o="0"+l:parseInt(o,10)>i.maxMinutes&&(o=i.maxMinutes+"")}r+=o,e=n}}),this.getFixedTimeString(r)},getFixedTimeString:function(e){var r,i,u,n=this,a=n.timePattern,o=[],l=0,s=0,c=0,d=0,m=0;return 6===e.length&&(a.forEach(function(e,t){switch(e){case"s":l=2*t;break;case"m":s=2*t;break;case"h":c=2*t}}),m=c,d=s,u=l,u=parseInt(e.slice(u,u+2),10),r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+2),10),o=this.getFixedTime(i,r,u)),4===e.length&&n.timePattern.indexOf("s")<0&&(a.forEach(function(e,t){switch(e){case"m":s=2*t;break;case"h":c=2*t}}),m=c,d=s,u=0,r=parseInt(e.slice(d,d+2),10),i=parseInt(e.slice(m,m+2),10),o=this.getFixedTime(i,r,u)),0===(n.time=o).length?e:a.reduce(function(e,t){switch(t){case"s":return e+n.addLeadingZero(o[2]);case"m":return e+n.addLeadingZero(o[1]);case"h":return e+n.addLeadingZero(o[0])}},"")},getFixedTime:function(e,t,r){return r=Math.min(parseInt(r||0,10),60),t=Math.min(t,60),[e=Math.min(e,60),t,r]},addLeadingZero:function(e){return(e<10?"0":"")+e}},e.exports=r},function(e,t){"use strict";function r(e,t){var r=this;r.delimiter=t||""===t?t:" ",r.delimiterRE=t?new RegExp("\\"+t,"g"):"",r.formatter=e}r.prototype={setFormatter:function(e){this.formatter=e},format:function(e){var t=this;t.formatter.clear();for(var r,i="",n=!1,a=0,o=(e=(e=(e=e.replace(/[^\d+]/g,"")).replace(/^\+/,"B").replace(/\+/g,"").replace("B","+")).replace(t.delimiterRE,"")).length;a<o;a++)r=t.formatter.inputDigit(e.charAt(a)),/[\s()-]/g.test(r)?(i=r,n=!0):n||(i=r);return(i=i.replace(/[()]/g,"")).replace(/[\s-]/g,t.delimiter)}},e.exports=r},function(e,t){"use strict";var r={blocks:{uatp:[4,5,6],amex:[4,6,5],diners:[4,6,4],discover:[4,4,4,4],mastercard:[4,4,4,4],dankort:[4,4,4,4],instapayment:[4,4,4,4],jcb15:[4,6,5],jcb:[4,4,4,4],maestro:[4,4,4,4],visa:[4,4,4,4],mir:[4,4,4,4],unionPay:[4,4,4,4],general:[4,4,4,4]},re:{uatp:/^(?!1800)1\d{0,14}/,amex:/^3[47]\d{0,13}/,discover:/^(?:6011|65\d{0,2}|64[4-9]\d?)\d{0,12}/,diners:/^3(?:0([0-5]|9)|[689]\d?)\d{0,11}/,mastercard:/^(5[1-5]\d{0,2}|22[2-9]\d{0,1}|2[3-7]\d{0,2})\d{0,12}/,dankort:/^(5019|4175|4571)\d{0,12}/,instapayment:/^63[7-9]\d{0,13}/,jcb15:/^(?:2131|1800)\d{0,11}/,jcb:/^(?:35\d{0,2})\d{0,12}/,maestro:/^(?:5[0678]\d{0,2}|6304|67\d{0,2})\d{0,12}/,mir:/^220[0-4]\d{0,12}/,visa:/^4\d{0,15}/,unionPay:/^(62|81)\d{0,14}/},getStrictBlocks:function(e){var t=e.reduce(function(e,t){return e+t},0);return e.concat(19-t)},getInfo:function(e,t){var a,o,i=r.blocks,n=r.re;for(a in t=!!t,n)if(n[a].test(e))return o=i[a],{type:a,blocks:t?this.getStrictBlocks(o):o};return{type:"unknown",blocks:t?this.getStrictBlocks(i.general):i.general}}};e.exports=r},function(e,t){"use strict";e.exports={noop:function(){},strip:function(e,t){return e.replace(t,"")},getPostDelimiter:function(e,t,r){if(0===r.length)return e.slice(-t.length)===t?t:"";var i="";return r.forEach(function(t){e.slice(-t.length)===t&&(i=t)}),i},getDelimiterREByDelimiter:function(e){return new RegExp(e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),"g")},getNextCursorPosition:function(e,t,r,i,n){return t.length===e?r.length:e+this.getPositionOffset(e,t,r,i,n)},getPositionOffset:function(e,t,r,i,n){t=this.stripDelimiters(t.slice(0,e),i,n),r=this.stripDelimiters(r.slice(0,e),i,n),e=t.length-r.length;return 0!=e?e/Math.abs(e):0},stripDelimiters:function(e,t,r){var i=this;return 0===r.length?(t=t?i.getDelimiterREByDelimiter(t):"",e.replace(t,"")):(r.forEach(function(t){t.split("").forEach(function(t){e=e.replace(i.getDelimiterREByDelimiter(t),"")})}),e)},headStr:function(e,t){return e.slice(0,t)},getMaxLength:function(e){return e.reduce(function(e,t){return e+t},0)},getPrefixStrippedValue:function(e,t,r,i,n,a,o,l,s){if(0===r)return e;if(e===t&&""!==e)return"";if(s&&"-"==e.slice(0,1))return c="-"==i.slice(0,1)?i.slice(1):i,"-"+this.getPrefixStrippedValue(e.slice(1),t,r,c,n,a,o,l,s);if(i.slice(0,r)!==t&&!l)return o&&!i&&e?e:"";if(i.slice(-r)!==t&&l)return o&&!i&&e?e:"";var c=this.stripDelimiters(i,n,a);return e.slice(0,r)===t||l?e.slice(-r)!==t&&l?c.slice(0,-r-1):l?e.slice(0,-r):e.slice(r):c.slice(r)},getFirstDiffIndex:function(e,t){for(var r=0;e.charAt(r)===t.charAt(r);)if(""===e.charAt(r++))return-1;return r},getFormattedValue:function(e,t,r,i,n,a){var o="",l=0<n.length,s="";return 0===r?e:(t.forEach(function(t,c){var u,d;0<e.length&&(u=e.slice(0,t),d=e.slice(t),s=l?n[a?c-1:c]||s:i,a?(0<c&&(o+=s),o+=u):(o+=u,u.length===t&&c<r-1&&(o+=s)),e=d)}),o)},fixPrefixCursor:function(e,t,r,i){var n,o;e&&(n=e.value,r=r||i[0]||" ",!e.setSelectionRange||!t||t.length+r.length<=n.length||(o=2*n.length,setTimeout(function(){e.setSelectionRange(o,o)},1)))},checkFullSelection:function(e){try{return(window.getSelection()||document.getSelection()||{}).toString().length===e.length}catch(r){}return!1},setSelection:function(e,t,r){if(e===this.getActiveElement(r)&&!(e&&e.value.length<=t))if(e.createTextRange){r=e.createTextRange();r.move("character",t),r.select()}else try{e.setSelectionRange(t,t)}catch(n){console.warn("The input element type does not support selection")}},getActiveElement:function(e){e=e.activeElement;return e&&e.shadowRoot?this.getActiveElement(e.shadowRoot):e},isAndroid:function(){return navigator&&/android/i.test(navigator.userAgent)},isAndroidBackspaceKeydown:function(e,t){return!!(this.isAndroid()&&e&&t)&&t===e.slice(0,-1)}}},function(e,t){!function(t){"use strict";e.exports={assign:function(e,r){return(e=e||{}).creditCard=!!(r=r||{}).creditCard,e.creditCardStrictMode=!!r.creditCardStrictMode,e.creditCardType="",e.onCreditCardTypeChanged=r.onCreditCardTypeChanged||function(){},e.phone=!!r.phone,e.phoneRegionCode=r.phoneRegionCode||"AU",e.phoneFormatter={},e.time=!!r.time,e.timePattern=r.timePattern||["h","m","s"],e.timeFormat=r.timeFormat||"24",e.timeFormatter={},e.date=!!r.date,e.datePattern=r.datePattern||["d","m","Y"],e.dateMin=r.dateMin||"",e.dateMax=r.dateMax||"",e.dateFormatter={},e.numeral=!!r.numeral,e.numeralIntegerScale=0<r.numeralIntegerScale?r.numeralIntegerScale:0,e.numeralDecimalScale=0<=r.numeralDecimalScale?r.numeralDecimalScale:2,e.numeralDecimalMark=r.numeralDecimalMark||".",e.numeralThousandsGroupStyle=r.numeralThousandsGroupStyle||"thousand",e.numeralPositiveOnly=!!r.numeralPositiveOnly,e.stripLeadingZeroes=!1!==r.stripLeadingZeroes,e.signBeforePrefix=!!r.signBeforePrefix,e.tailPrefix=!!r.tailPrefix,e.swapHiddenInput=!!r.swapHiddenInput,e.numericOnly=e.creditCard||e.date||!!r.numericOnly,e.uppercase=!!r.uppercase,e.lowercase=!!r.lowercase,e.prefix=!e.creditCard&&!e.date&&r.prefix||"",e.noImmediatePrefix=!!r.noImmediatePrefix,e.prefixLength=e.prefix.length,e.rawValueTrimPrefix=!!r.rawValueTrimPrefix,e.copyDelimiter=!!r.copyDelimiter,e.initValue=void 0!==r.initValue&&null!==r.initValue?r.initValue.toString():"",e.delimiter=r.delimiter||""===r.delimiter?r.delimiter:r.date?"/":r.time?":":r.numeral?",":(r.phone," "),e.delimiterLength=e.delimiter.length,e.delimiterLazyShow=!!r.delimiterLazyShow,e.delimiters=r.delimiters||[],e.blocks=r.blocks||[],e.blocksLength=e.blocks.length,e.root="object"==typeof t&&t?t:window,e.document=r.document||e.root.document,e.maxLength=0,e.backspace=!1,e.result="",e.onValueChanged=r.onValueChanged||function(){},e}}}.call(t,function(){return this}())}],r={},t.m=e,t.c=r,t.p="",t(0);function t(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return e[i].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var e,r}),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.multi_line_text={init:function(options){this.$form=options.form,this.type=this.$el.data("happyforms-type"),this.$input=$("textarea",this.$el),this.$counter=$(".happyforms-part__char-counter span.counter",this.$el),this.$input.on("blur",this.onBlur.bind(this)),this.$input.on("keyup",this.triggerChange.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$el.on("keyup",this.refreshCounter.bind(this)),this.refreshCounter(),$(".happyforms-part__char-counter").show()},getValueLength:function(){var mode=this.$input.attr("data-length-mode"),value=this.$input.val(),length=value.length;return length="word"===mode?(mode=value.match(/\w+/g))?mode.length:0:length},refreshCounter:function(){var length;parseInt(this.$input.attr("data-length"),10)<1||(length=this.getValueLength(),this.$counter.text(length))},onFocus:function(){this.$el.addClass("focus")},onBlur:function(){this.$el.removeClass("focus")},isFilled:function(){return""!==this.$input.val()},serialize:function(){return HappyForms.parts.base.serialize.apply(this,arguments)}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.email={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input",this.$el),this.$visualInput=$("input[type=email]",this.$el),this.$input.on("keyup",this.triggerChange.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("focus",this.onInputFocus.bind(this)),this.$visualInput.on("blur",this.onBlur.bind(this))}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.radio={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input",this.$el),this.$visualInput=$("input[type=email]",this.$el),this.$input.on("keyup",this.triggerChange.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("change",this.onRadioChange.bind(this)),this.$input.on("focus",this.onFocus.bind(this))},onRadioChange:function(e){var $otherRadio=$(".happyforms-part-option--other input[type=radio]",this.$el),$otherInput=$otherRadio.parent().nextAll("input"),$generalInput=$("input[type=text]",this.$el);$generalInput.prop("required",!1),$otherRadio.length&&$otherRadio.is(":checked")?($(e.target)[0]===$otherRadio[0]&&$otherInput.addClass("hf-show").trigger("focus"),""===this.$el.data("happyforms-required")&&$otherInput.prop("required",!0)):$generalInput.removeClass("hf-show")},onFocus:function(e){e=$(e.target);"text"===e.attr("type")&&e.prevAll("input[type=radio]").prop("checked",!0)},serialize:function(){var self=this;return this.$input.map(function(i,input){var input=$(input),$customInput=0;if("text"!==input.attr("type")){"text"===$(self.$input[i+1]).attr("type")&&($customInput=$(self.$input[i+1]));i={name:input.attr("name"),value:input.val()};if($customInput.length&&($customInput=$customInput.val(),i.value=[input.val(),$customInput],i.value=JSON.stringify(i.value)),input.is(":checked"))return i}}).toArray()}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.checkbox={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input",this.$el),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("change",this.onCheckboxChange.bind(this)),this.$input.on("focus",this.onFocus.bind(this))},onCheckboxChange:function(e){var $otherCheckbox=$(".happyforms-part-option--other input[type=checkbox]",this.$el),$otherInput=$otherCheckbox.parent().nextAll("input"),$generalInput=$("input[type=text]",this.$el);$generalInput.prop("required",!1),$otherCheckbox.length&&$otherCheckbox.is(":checked")?($(e.target)[0]===$otherCheckbox[0]&&$otherInput.addClass("hf-show").trigger("focus"),""===this.$el.data("happyforms-required")&&$otherInput.prop("required",!0)):$generalInput.removeClass("hf-show")},serialize:function(){var self=this;return this.$input.map(function(i,input){var input=$(input),$customInput=0;if("text"!==input.attr("type")){"text"===$(self.$input[i+1]).attr("type")&&($customInput=$(self.$input[i+1]));i={name:input.attr("name"),value:input.val()};if($customInput.length&&($customInput=$customInput.val(),i.value=[input.val(),$customInput],i.value=JSON.stringify(i.value)),input.is(":checked"))return i}}).toArray()},onFocus:function(e){e=$(e.target);"text"===e.attr("type")&&e.prevAll("input[type=checkbox]").prop("checked",!0)}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.select={init:function(options){this.type=this.$el.data("happyforms-type"),this.$input=$("[data-serialize]",this.$el),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("blur",this.onBlur.bind(this))},onBlur:function(){var $otherinput=$(".happyforms-part-option--other input[type=text]",this.$el);"999"===this.$input.val()?($otherinput.addClass("hf-show"),$otherinput.focus()):$otherinput.removeClass("hf-show")},serialize:function(){var self=this;return this.$input.map(function(i,select){var select=$(select,self.$el),$customInput=0,value=(999==select.val()&&($customInput=$(" .happyforms-part-option--other input[type=text]",self.$el)),select.val()),value=(null==value&&(value=""),{name:select.attr("name"),value:value});return $customInput.length&&($customInput=$customInput.val(),value.value=[select.val(),$customInput],value.value=JSON.stringify(value.value)),value}).toArray()}}}(jQuery),function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.number={init:function(){this.type=this.$el.data("happyforms-type"),this.allowedKeys=["0","1","2","3","4","5","6","7","8","9","Meta","Delete","ArrowLeft","ArrowRight"];var self,decimalMark,delimiterMark,masked=this.$el.attr("data-mask");this.$input=$("input",this.$el),this.cleaveInstances=[],this.$input.on("keyup",this.onKeyUp.bind(this)),this.$input.on("change",this.triggerChange.bind(this)),this.$input.on("focus",this.onInputFocus.bind(this)),this.$input.on("blur",this.onBlur.bind(this)),this.numeralDecimalMark=this.$el.attr("data-decimal-mark")||"",this.delimiter=this.$el.attr("data-thousands-delimiter")||"",masked&&(decimalMark=(self=this).numeralDecimalMark,delimiterMark=this.delimiter,this.$input.each(function(){var $input=$(this),$input=new Cleave($input,{numeral:!0,numeralDecimalMark:decimalMark,delimiter:delimiterMark});self.cleaveInstances.push($input)})),this.onBlur()},onKeyUp:function(e){var value=$(e.target).val(),regex=new RegExp("[^0-9"+this.numeralDecimalMark+this.delimiter+"-]","g"),value=value.replace(regex,"");$(e.target).val(value),this.triggerChange()},reinit:function(){$.each(this.cleaveInstances,function(i,instance){var input=instance.element,rawValue=instance.getRawValue();instance.destroy(),input.value=rawValue}),this.init()}}}(jQuery),HappyForms.Antispam={getHash:function(data){var hash=[];return data.forEach(function(entry){hash.push(entry.value)}),hash=hash.join("").replace(/[^\w\d]/gm,""),hash=md5(hash)},getPlatformInfo:function(){var key,value,info={user_agent:navigator.userAgent,app_version:navigator.appVersion,language:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage,languages_length:navigator.languages.length,webdriver:navigator.webdriver?1:0,concurrency:navigator.hardwareConcurrency,outer_width:window.outerWidth,outer_height:window.outerHeight,connectionRtt:navigator.connection?navigator.connection.rtt:-1},platformInfo={};for([key,value]of Object.entries(info))platformInfo[`platform_info[${key}]`]=value;return platformInfo}},function($){HappyForms.parts=HappyForms.parts||{},HappyForms.parts.base={init:function(){this.type=this.$el.data("happyforms-type"),this.$input=$("input, textarea, select",this.$el),this.$input.on("keyup change",this.triggerChange.bind(this)),this.$input.on("blur",this.onBlur.bind(this)),this.$input.on("focus",this.onInputFocus.bind(this)),this.onBlur()},getType:function(){return this.type},onInputFocus:function(){this.$el.addClass("focus")},onBlur:function(){this.$el.is(".happyforms-part--label-as_placeholder")&&(this.isFilled()?this.$el.addClass("happyforms-part--filled"):this.$el.removeClass("happyforms-part--filled")),this.$el.removeClass("focus")},triggerChange:function(data){this.$el.trigger("happyforms-change",data)},isRequired:function(){return this.$el.is(":visible")&&this.$el.is("[data-happyforms-required]")},isFilled:function(){return 0<this.$input.filter(function(){var $input=$(this);return $input.is("[type=checkbox]")||$input.is("[type=radio]")?$input.is(":checked"):""!==$input.val()}).length},confirmationMatches:function(){var matches=!1,$input=this.$input,$input=($input=this.$visualInput?this.$visualInput:$input).map(function(){return $(this).val()}).toArray();return matches=2===$input.length?$input[0]===$input[1]:matches},requiresConfirmation:function(){return this.$el.is("[data-happyforms-require-confirmation]")},serialize:function(){return this.$input.map(function(i,input){var input=$(input),keyValue={name:input.attr("name"),value:input.val()};if(!input.is("[type=checkbox]")&&!input.is("[type=radio]")||input.is(":checked"))return keyValue}).toArray()},isValid:function(){var valid=!0;this.$el.data("happyforms-type");return this.$input?(this.isRequired()&&(valid=valid&&this.isFilled()),this.isRequired()&&this.requiresConfirmation()?valid&&this.confirmationMatches():valid):valid},destroy:function(){this.$el.data("HappyFormPart",!1)}},HappyForms.wrapPart=function($part,$form){var type=$part.data("happyforms-type"),partMethods=HappyForms.parts.base;HappyForms.parts[type]&&(partMethods=$.extend({},HappyForms.parts.base,HappyForms.parts[type])),$part.happyFormPart(partMethods,{form:$form})},HappyForms.Form=function(el){this.el=el,this.$el=$(this.el),this.$form=$("form",this.$el),this.$parts=$("[data-happyforms-type]",this.$form),this.$submits=$('[type="submit"], a.submit',this.$form),this.$submit=$('[type="submit"]',this.$form),this.$submitLinks=$("a.submit",this.$form),this.$step=$('[name="happyforms_step"]',this.$form),this.init()},HappyForms.Form.prototype={init:function(){var $form=this.$form;$("[data-happyforms-type]",this.$form).each(function(){var $part=$(this);$part.data("happyforms-type");HappyForms.wrapPart($part,$form)}),$('[name="client_referer"]',this.$form).val(window.location.href),this.$el.trigger("happyforms-change"),this.$el.trigger("happyforms-init"),this.$form.off("submit"),this.$submit.off("click"),this.$submitLinks.off("click"),this.$form.on("submit",this.submit.bind(this)),this.$submit.on("click",this.buttonSubmit.bind(this)),this.$submitLinks.on("click",this.linkSubmit.bind(this)),this.$el.on("happyforms-scrolltop",this.onScrollTop.bind(this))},detach:function(){this.$el.off("happyforms-change"),this.$el.off("happyforms-scrolltop"),$("[data-happyforms-type]",this.$form).remove()},serialize:function(submitEl){for(var action=$("[name=action]",this.$form).val(),clientReferer=$('[name="client_referer"]',this.$form).val(),form_id=$("[name=happyforms_form_id]",this.$form).val(),formData=($("[name=_wp_http_referer]",this.$form).val(),[{name:"action",value:action},{name:"happyforms_client_referer",value:clientReferer},{name:"happyforms_form_id",value:form_id},{name:"happyforms_step",value:this.$step.val()},{name:"happyforms_random_seed",value:$("[name=happyforms_random_seed]",this.$form).val()}]),honeypotNames=["single_line_text","multi_line_text","number"],h=0;h<honeypotNames.length;h++){var inputName=form_id+"-"+honeypotNames[h],$input=$("[name="+inputName+"]");if($input.length){formData.push({name:inputName,value:$input.val()});break}}var key,value,action=$("[data-happyforms-type]",this.$form).map(function(i,part){return $(part).happyFormPart("serialize")}).toArray().filter(function(entry){return null!==entry.name&&void 0!==entry.name}),clientReferer=formData.concat(action),params=new URLSearchParams,action=(clientReferer.forEach(function(entry){params.append(entry.name,entry.value)}),HappyForms.Antispam.getHash(clientReferer)),clientReferer=(params.append("hash",action),HappyForms.Antispam.getPlatformInfo());for([key,value]of Object.entries(clientReferer))params.append(key,value);return params=params.toString()},buttonSubmit:function(e){e.target.hasAttribute("data-step")&&this.$step.val(e.target.getAttribute("data-step"))},linkSubmit:function(e){e.preventDefault(),e.stopImmediatePropagation(),e.target.hasAttribute("data-step")&&this.$step.val(e.target.getAttribute("data-step")),this.$form.trigger("submit")},submit:function(e){e.preventDefault(),this.$form.addClass("happyforms-form--submitting"),this.$submits.attr("disabled","disabled"),$.ajax({type:"post",data:this.serialize(e.target)}).done(this.onSubmitComplete.bind(this))},onSubmitComplete:function(response){if(this.$form.trigger("happyforms.submitted",response),!response.data)return!1;var elTopOffset,$notices;response.data.html&&(response=$(response.data.html),$("[data-happyforms-type]",this.$form).each(function(){$(this).trigger("happyforms.detach")}),this.detach(),this.$el.replaceWith(response),this.$el=response,this.$el.happyForm(),(response=$("form",this.$el)).attr("data-happyforms-scroll-disabled")||(this.$el.get(0).getBoundingClientRect().top<0&&(elTopOffset=this.$el.offset().top,$notices=$(".happyforms-message-notices",this.$el),response.is(".happyforms-form--notices-below")&&$notices.length&&(elTopOffset=$notices.offset().top),($notices=response.attr("data-happyforms-scroll-offset"))&&(elTopOffset+=$notices=parseInt($notices,10)),this.$el.trigger("happyforms-scrolltop",elTopOffset)),!$(".happyforms-message-notice.error",response).length&&this.$el.hasClass("happyforms-form--hide-on-submit")&&$(".happyforms-part",response).hide()))},onScrollTop:function(e,offset){e.isDefaultPrevented()||$("html, body").animate({scrollTop:offset+"px"},500)}},HappyForms.Part=function(el){this.el=el,this.$el=$(this.el)},$.fn.happyFormPart=function(method){if("object"==typeof method){var part=new HappyForms.Part(this);$.extend(part,method),$(this).data("HappyFormPart",part),part.init.apply(part,Array.prototype.slice.call(arguments,1))}else{part=$(this).data("HappyFormPart");if(part&&part[method])return part[method].apply(part,Array.prototype.slice.call(arguments,1))}},$.fn.happyForm=function(method){this.each(function(){if(method){var instance=$.data(this,"HappyForm");if(instance&&instance[method])return instance[method].apply(instance,Array.prototype.slice.call(arguments,1))}else $.data(this,"HappyForm",new HappyForms.Form(this,arguments))})},$(function(){$(".happyforms-form").happyForm()})}(jQuery);
core/assets/css/customize.css CHANGED
@@ -584,7 +584,8 @@ a.happyforms-form-part-remove:hover {
584
  }
585
 
586
  .happyforms-setup-view .customize-control .customize-inside-control-row,
587
- .happyforms-email-view .customize-control .customize-inside-control-row {
 
588
  margin-left: 0;
589
  padding: 0;
590
  }
@@ -622,44 +623,12 @@ a.happyforms-form-part-remove:hover {
622
  * Form message
623
  *
624
  */
625
- .happyforms-messages-view .customize-control,
626
- .happyforms-messages-view #messages-view-errors,
627
- .happyforms-messages-view #messages-view-hints {
628
- display: none;
629
- }
630
-
631
- #customize-control-error_message,
632
- .has-required-selection-fields #messages-view-errors,
633
- .has-min-limit-choices #messages-view-errors,
634
- .has-field #messages-view-errors,
635
- .has-optional-field #messages-view-hints,
636
- .has-required-field #messages-view-hints,
637
- .has-select #messages-view-hints,
638
- .has-min-chars-label #messages-view-hints,
639
- .has-max-chars-label #messages-view-hints,
640
- .has-min-words-label #messages-view-hints,
641
- .has-max-words-label #messages-view-hints {
642
- display: block;
643
- }
644
 
645
  #customize-control-submit_button_label,
646
  .has-field #customize-control-field_invalid,
647
  .has-required-text-fields #customize-control-field_empty,
648
  .has-required-selection-fields #customize-control-no_selection,
649
- .has-optional-field #customize-control-optional_part_label,
650
- .has-required-field #customize-control-required_field_label,
651
- .has-min-limit-choices #customize-control-select_more_choices,
652
- .has-max-limit-choices #customize-control-select_less_choices,
653
  #customize-control-confirmation_message,
654
- .has-min-words-label #customize-control-words_label_min,
655
- .has-max-words-label #customize-control-words_label_max,
656
- .has-min-chars-label #customize-control-characters_label_min,
657
- .has-max-chars-label #customize-control-characters_label_max,
658
- .show-msg-short-label #customize-control-message_too_short,
659
- .has-max-chars-label #customize-control-message_too_long,
660
- .has-max-words-label #customize-control-message_too_long,
661
- .has-number #customize-control-number_min_invalid,
662
- .has-number #customize-control-number_max_invalid,
663
  .has-show-submissions-left #customize-control-submissions_left_label {
664
  display: block;
665
  }
@@ -1900,3 +1869,8 @@ ul.happyforms-parts-list li[data-part-type="poll"] {
1900
  margin: 0;
1901
  padding: 10px 10px 11px 14px;
1902
  }
 
 
 
 
 
584
  }
585
 
586
  .happyforms-setup-view .customize-control .customize-inside-control-row,
587
+ .happyforms-email-view .customize-control .customize-inside-control-row,
588
+ .happyforms-messages-view .customize-control .customize-inside-control-row {
589
  margin-left: 0;
590
  padding: 0;
591
  }
623
  * Form message
624
  *
625
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
626
 
627
  #customize-control-submit_button_label,
628
  .has-field #customize-control-field_invalid,
629
  .has-required-text-fields #customize-control-field_empty,
630
  .has-required-selection-fields #customize-control-no_selection,
 
 
 
 
631
  #customize-control-confirmation_message,
 
 
 
 
 
 
 
 
 
632
  .has-show-submissions-left #customize-control-submissions_left_label {
633
  display: block;
634
  }
1869
  margin: 0;
1870
  padding: 10px 10px 11px 14px;
1871
  }
1872
+
1873
+ /* deprecated message fields */
1874
+ #customize-control-no_results_label {
1875
+ display: none;
1876
+ }
core/classes/class-form-email.php CHANGED
@@ -48,6 +48,18 @@ class HappyForms_Form_Email {
48
  'default' => __( 'New submission to your form', 'happyforms' ),
49
  'sanitize' => 'sanitize_text_field',
50
  ),
 
 
 
 
 
 
 
 
 
 
 
 
51
  'alert_email_reply_to' => array(
52
  'default' => '',
53
  'sanitize' => 'sanitize_text_field',
@@ -80,6 +92,18 @@ class HappyForms_Form_Email {
80
  'default' => 0,
81
  'sanitize' => 'happyforms_sanitize_checkbox'
82
  ),
 
 
 
 
 
 
 
 
 
 
 
 
83
  );
84
 
85
  return $fields;
@@ -87,12 +111,12 @@ class HappyForms_Form_Email {
87
 
88
  public function get_controls() {
89
  $controls = array(
90
- 251 => array(
91
  'type' => 'checkbox',
92
  'label' => __( 'Email me a copy of each submission', 'happyforms' ),
93
  'field' => 'receive_email_alerts',
94
  ),
95
- 252 => array(
96
  'type' => 'group_start',
97
  'trigger' => 'receive_email_alerts'
98
  ),
@@ -127,6 +151,21 @@ class HappyForms_Form_Email {
127
  'label' => __( 'Email subject', 'happyforms' ),
128
  'field' => 'alert_email_subject',
129
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  540 => array(
131
  'type' => 'group_end'
132
  ),
@@ -169,6 +208,21 @@ class HappyForms_Form_Email {
169
  'label' => __( "Include submitted values", 'happyforms' ),
170
  'field' => 'confirmation_email_include_values'
171
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  870 => array(
173
  'type' => 'group_end'
174
  )
48
  'default' => __( 'New submission to your form', 'happyforms' ),
49
  'sanitize' => 'sanitize_text_field',
50
  ),
51
+ 'include_submitters_ip' => array(
52
+ 'default' => 0,
53
+ 'sanitize' => 'happyforms_sanitize_checkbox'
54
+ ),
55
+ 'include_referral_link' => array(
56
+ 'default' => 0,
57
+ 'sanitize' => 'happyforms_sanitize_checkbox'
58
+ ),
59
+ 'include_submission_date_time' => array(
60
+ 'default' => 0,
61
+ 'sanitize' => 'happyforms_sanitize_checkbox'
62
+ ),
63
  'alert_email_reply_to' => array(
64
  'default' => '',
65
  'sanitize' => 'sanitize_text_field',
92
  'default' => 0,
93
  'sanitize' => 'happyforms_sanitize_checkbox'
94
  ),
95
+ 'confirmation_email_include_submitters_ip' => array(
96
+ 'default' => 0,
97
+ 'sanitize' => 'happyforms_sanitize_checkbox'
98
+ ),
99
+ 'confirmation_email_include_referral_link' => array(
100
+ 'default' => 0,
101
+ 'sanitize' => 'happyforms_sanitize_checkbox'
102
+ ),
103
+ 'confirmation_email_include_submission_date_time' => array(
104
+ 'default' => 0,
105
+ 'sanitize' => 'happyforms_sanitize_checkbox'
106
+ ),
107
  );
108
 
109
  return $fields;
111
 
112
  public function get_controls() {
113
  $controls = array(
114
+ 340 => array(
115
  'type' => 'checkbox',
116
  'label' => __( 'Email me a copy of each submission', 'happyforms' ),
117
  'field' => 'receive_email_alerts',
118
  ),
119
+ 341 => array(
120
  'type' => 'group_start',
121
  'trigger' => 'receive_email_alerts'
122
  ),
151
  'label' => __( 'Email subject', 'happyforms' ),
152
  'field' => 'alert_email_subject',
153
  ),
154
+ 451 => array(
155
+ 'type' => 'checkbox',
156
+ 'label' => __( 'Include submitter\'s IP address', 'happyforms' ),
157
+ 'field' => 'include_submitters_ip',
158
+ ),
159
+ 452 => array(
160
+ 'type' => 'checkbox',
161
+ 'label' => __( 'Include referral link', 'happyforms' ),
162
+ 'field' => 'include_referral_link',
163
+ ),
164
+ 453 => array(
165
+ 'type' => 'checkbox',
166
+ 'label' => __( 'Include submission date and time', 'happyforms' ),
167
+ 'field' => 'include_submission_date_time',
168
+ ),
169
  540 => array(
170
  'type' => 'group_end'
171
  ),
208
  'label' => __( "Include submitted values", 'happyforms' ),
209
  'field' => 'confirmation_email_include_values'
210
  ),
211
+ 861 => array(
212
+ 'type' => 'checkbox',
213
+ 'label' => __( "Include submitter's IP address", 'happyforms' ),
214
+ 'field' => 'confirmation_email_include_submitters_ip'
215
+ ),
216
+ 862 => array(
217
+ 'type' => 'checkbox',
218
+ 'label' => __( "Include referral link", 'happyforms' ),
219
+ 'field' => 'confirmation_email_include_referral_link'
220
+ ),
221
+ 863 => array(
222
+ 'type' => 'checkbox',
223
+ 'label' => __( "Include submission date and time", 'happyforms' ),
224
+ 'field' => 'confirmation_email_include_submission_date_time'
225
+ ),
226
  870 => array(
227
  'type' => 'group_end'
228
  )
core/classes/parts/class-part-checkbox.php CHANGED
@@ -391,14 +391,14 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
391
  foreach( $part['options'] as $o => $option ) {
392
  $option = wp_parse_args( $option, happyforms_upgrade_get_option_limiter()->get_option_fields() );
393
 
394
- if ( '' == $option['limit_submissions_amount'] || $o !== intval( $value ) || $value !== $o ) {
395
  continue;
396
  }
397
 
398
  $limit = intval( $option['limit_submissions_amount'] );
399
  $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
400
 
401
- if ( $count === $limit ) {
402
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
403
  }
404
  }
391
  foreach( $part['options'] as $o => $option ) {
392
  $option = wp_parse_args( $option, happyforms_upgrade_get_option_limiter()->get_option_fields() );
393
 
394
+ if ( '' == $option['limit_submissions_amount'] || $o !== intval( $value ) ) {
395
  continue;
396
  }
397
 
398
  $limit = intval( $option['limit_submissions_amount'] );
399
  $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
400
 
401
+ if ( $count >= $limit ) {
402
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
403
  }
404
  }
core/classes/parts/class-part-radio.php CHANGED
@@ -250,14 +250,14 @@ class HappyForms_Part_Radio extends HappyForms_Form_Part {
250
  foreach( $part['options'] as $o => $option ) {
251
  $option = wp_parse_args( $option, happyforms_upgrade_get_option_limiter()->get_option_fields() );
252
 
253
- if ( '' == $option['limit_submissions_amount'] || $o !== intval( $value ) || $value !== $o ) {
254
  continue;
255
  }
256
 
257
  $limit = intval( $option['limit_submissions_amount'] );
258
  $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
259
 
260
- if ( $count === $limit ) {
261
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
262
  }
263
  }
250
  foreach( $part['options'] as $o => $option ) {
251
  $option = wp_parse_args( $option, happyforms_upgrade_get_option_limiter()->get_option_fields() );
252
 
253
+ if ( '' == $option['limit_submissions_amount'] || $o !== intval( $value ) ) {
254
  continue;
255
  }
256
 
257
  $limit = intval( $option['limit_submissions_amount'] );
258
  $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
259
 
260
+ if ( $count >= $limit ) {
261
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
262
  }
263
  }
core/classes/parts/class-part-select.php CHANGED
@@ -263,14 +263,14 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
263
  foreach( $part['options'] as $o => $option ) {
264
  $option = wp_parse_args( $option, happyforms_upgrade_get_option_limiter()->get_option_fields() );
265
 
266
- if ( '' == $option['limit_submissions_amount'] || $o !== intval( $value ) || $value !== $o ) {
267
  continue;
268
  }
269
 
270
  $limit = intval( $option['limit_submissions_amount'] );
271
  $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
272
 
273
- if ( $count === $limit ) {
274
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
275
  }
276
  }
263
  foreach( $part['options'] as $o => $option ) {
264
  $option = wp_parse_args( $option, happyforms_upgrade_get_option_limiter()->get_option_fields() );
265
 
266
+ if ( '' == $option['limit_submissions_amount'] || $o !== intval( $value ) ) {
267
  continue;
268
  }
269
 
270
  $limit = intval( $option['limit_submissions_amount'] );
271
  $count = happyforms_upgrade_get_option_limiter()->count_by_option( $form['ID'], $part['id'], $option['id'] );
272
 
273
+ if ( $count >= $limit ) {
274
  return new WP_Error( 'error', happyforms_get_validation_message( 'field_invalid' ) );
275
  }
276
  }
core/helpers/helper-form-templates.php CHANGED
@@ -1395,3 +1395,19 @@ function happyforms_parts_autocorrect_attribute( $part ) {
1395
  }
1396
 
1397
  endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1395
  }
1396
 
1397
  endif;
1398
+
1399
+ if ( ! function_exists( 'happyforms_get_client_ip' ) ) :
1400
+
1401
+ function happyforms_get_client_ip() {
1402
+ $keys = array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR' );
1403
+
1404
+ foreach( $keys as $key ) {
1405
+ if ( isset( $_SERVER[$key] ) && ! empty( $_SERVER[$key] ) ) {
1406
+ return $_SERVER[$key];
1407
+ }
1408
+ }
1409
+
1410
+ return '';
1411
+ }
1412
+
1413
+ endif;
core/helpers/helper-misc.php CHANGED
@@ -1161,16 +1161,6 @@ function happyforms_shuffle_array( $array, $seed = '' ) {
1161
 
1162
  endif;
1163
 
1164
- if ( ! function_exists( 'happyforms_capture_client_ip' ) ) :
1165
-
1166
- function happyforms_capture_client_ip() {
1167
- $capture_user_ip = apply_filters( 'happyforms_capture_client_ip', '__return_true' );
1168
-
1169
- return $capture_user_ip;
1170
- }
1171
-
1172
- endif;
1173
-
1174
  if ( ! function_exists( 'happyforms_the_external_link_icon' ) ) :
1175
 
1176
  function happyforms_the_external_link_icon( $echo = true ) {
1161
 
1162
  endif;
1163
 
 
 
 
 
 
 
 
 
 
 
1164
  if ( ! function_exists( 'happyforms_the_external_link_icon' ) ) :
1165
 
1166
  function happyforms_the_external_link_icon( $echo = true ) {
core/templates/parts/frontend-checkbox.php CHANGED
@@ -33,8 +33,8 @@
33
 
34
  if ( '' != $option['limit_submissions_amount'] && 0 == $option['submissions_left'] ) {
35
  $option_classes .= ' disabled-option';
 
36
  }
37
-
38
  ?>
39
  <div class="<?php echo $option_classes; ?>" id="<?php echo esc_attr( $option['id'] ); ?>">
40
  <label class="option-label">
33
 
34
  if ( '' != $option['limit_submissions_amount'] && 0 == $option['submissions_left'] ) {
35
  $option_classes .= ' disabled-option';
36
+ $checked = '';
37
  }
 
38
  ?>
39
  <div class="<?php echo $option_classes; ?>" id="<?php echo esc_attr( $option['id'] ); ?>">
40
  <label class="option-label">
core/templates/parts/frontend-radio.php CHANGED
@@ -27,13 +27,13 @@
27
  }
28
  $checked = ( $o === $value ) ? 'checked="checked"' : '';
29
 
30
-
31
  if ( is_string( $value ) ) {
32
  $checked = checked( $value, $o, false );
33
  }
34
 
35
  if ( '' != $option['limit_submissions_amount'] && 0 == $option['submissions_left'] ) {
36
  $option_classes .= ' disabled-option';
 
37
  }
38
 
39
  ?>
27
  }
28
  $checked = ( $o === $value ) ? 'checked="checked"' : '';
29
 
 
30
  if ( is_string( $value ) ) {
31
  $checked = checked( $value, $o, false );
32
  }
33
 
34
  if ( '' != $option['limit_submissions_amount'] && 0 == $option['submissions_left'] ) {
35
  $option_classes .= ' disabled-option';
36
+ $checked = '';
37
  }
38
 
39
  ?>
core/templates/parts/frontend-select.php CHANGED
@@ -48,7 +48,12 @@
48
  $option_value = isset( $option['value'] ) ? $option['value'] : $index;
49
  $submissions_left_label = isset( $option['submissions_left_label'] ) ? ' ' . $option['submissions_left_label'] : '';
50
  $selected = ( $value !== '' && $value == $option_value ) ? ' selected' : '';
51
- $disabled = ( '' != $option['limit_submissions_amount'] && $option['submissions_left'] == 0 ) ? ' disabled' : '';
 
 
 
 
 
52
  ?>
53
  <option value="<?php echo $option_value; ?>" <?php echo $selected; ?> <?php echo $disabled; ?> id="<?php echo esc_attr( $option['id'] ); ?>"><?php echo esc_attr( $option['label'] ); ?><?php echo $submissions_left_label; ?></option>
54
  <?php endforeach; ?>
48
  $option_value = isset( $option['value'] ) ? $option['value'] : $index;
49
  $submissions_left_label = isset( $option['submissions_left_label'] ) ? ' ' . $option['submissions_left_label'] : '';
50
  $selected = ( $value !== '' && $value == $option_value ) ? ' selected' : '';
51
+ $disabled = false;
52
+
53
+ if ( '' != $option['limit_submissions_amount'] && $option['submissions_left'] == 0 ) {
54
+ $disabled = ' disabled';
55
+ $selected = '';
56
+ }
57
  ?>
58
  <option value="<?php echo $option_value; ?>" <?php echo $selected; ?> <?php echo $disabled; ?> id="<?php echo esc_attr( $option['id'] ); ?>"><?php echo esc_attr( $option['label'] ); ?><?php echo $submissions_left_label; ?></option>
59
  <?php endforeach; ?>
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.io
6
  * Description: Form builder to get in touch with visitors, grow your email list and collect payments.
7
  * Author: Happyforms
8
- * Version: 1.19.1
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
@@ -22,7 +22,7 @@ if ( defined( 'HAPPYFORMS_UPGRADE_VERSION' ) ) {
22
  /**
23
  * The current version of the plugin.
24
  */
25
- define( 'HAPPYFORMS_VERSION', '1.19.1' );
26
 
27
  if ( ! function_exists( 'happyforms_get_version' ) ):
28
 
5
  * Plugin URI: https://happyforms.io
6
  * Description: Form builder to get in touch with visitors, grow your email list and collect payments.
7
  * Author: Happyforms
8
+ * Version: 1.20.0
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
22
  /**
23
  * The current version of the plugin.
24
  */
25
+ define( 'HAPPYFORMS_VERSION', '1.20.0' );
26
 
27
  if ( ! function_exists( 'happyforms_get_version' ) ):
28
 
inc/assets/js/customize.js CHANGED
@@ -1720,6 +1720,7 @@
1720
  'change [data-attribute="no_results_label"]': 'onNoResultsLabelChange',
1721
  'click [data-reset]': 'resetDefaultMessage',
1722
  'keyup input[data-attribute]': 'onMessageValueChange',
 
1723
  } ),
1724
 
1725
  editors: {
1720
  'change [data-attribute="no_results_label"]': 'onNoResultsLabelChange',
1721
  'click [data-reset]': 'resetDefaultMessage',
1722
  'keyup input[data-attribute]': 'onMessageValueChange',
1723
+ 'click .customize-control-text_dummy_reset': 'openUpgradeModal',
1724
  } ),
1725
 
1726
  editors: {
inc/assets/js/frontend.js CHANGED
@@ -171,6 +171,8 @@
171
  HappyForms.wrapPart( $part, $form );
172
  } );
173
 
 
 
174
  this.$el.trigger( 'happyforms-change' );
175
  this.$el.trigger( 'happyforms-init' );
176
 
@@ -194,6 +196,7 @@
194
 
195
  serialize: function( submitEl ) {
196
  var action = $( '[name=action]', this.$form ).val();
 
197
  var form_id = $( '[name=happyforms_form_id]', this.$form ).val();
198
  var referer = $( '[name=_wp_http_referer]', this.$form ).val();
199
  var step = this.$step.val();
@@ -201,6 +204,7 @@
201
 
202
  var formData = [
203
  { name: 'action', value: action },
 
204
  { name: 'happyforms_form_id', value: form_id },
205
  { name: 'happyforms_step', value: step },
206
  { name: 'happyforms_random_seed', value: randomSeed },
171
  HappyForms.wrapPart( $part, $form );
172
  } );
173
 
174
+ $( '[name="client_referer"]', this.$form ).val( window.location.href );
175
+
176
  this.$el.trigger( 'happyforms-change' );
177
  this.$el.trigger( 'happyforms-init' );
178
 
196
 
197
  serialize: function( submitEl ) {
198
  var action = $( '[name=action]', this.$form ).val();
199
+ var clientReferer = $( '[name="client_referer"]', this.$form ).val();
200
  var form_id = $( '[name=happyforms_form_id]', this.$form ).val();
201
  var referer = $( '[name=_wp_http_referer]', this.$form ).val();
202
  var step = this.$step.val();
204
 
205
  var formData = [
206
  { name: 'action', value: action },
207
+ { name: 'happyforms_client_referer', value: clientReferer },
208
  { name: 'happyforms_form_id', value: form_id },
209
  { name: 'happyforms_step', value: step },
210
  { name: 'happyforms_random_seed', value: randomSeed },
inc/classes/class-happyforms.php CHANGED
@@ -15,9 +15,11 @@ class HappyForms extends HappyForms_Core {
15
  add_action( 'happyforms_do_setup_control', array( $this, 'do_control' ), 10, 3 );
16
  add_action( 'happyforms_do_email_control', array( $this, 'do_control' ), 10, 3 );
17
  add_action( 'happyforms_do_style_control', array( $this, 'do_control' ), 10, 3 );
 
18
  add_filter( 'happyforms_setup_controls', array( $this, 'add_dummy_setup_controls' ) );
19
  add_filter( 'happyforms_email_controls', array( $this, 'add_dummy_email_controls' ) );
20
  add_filter( 'happyforms_style_controls', array( $this, 'add_dummy_style_controls' ) );
 
21
  add_action( 'parse_request', array( $this, 'parse_archive_request' ) );
22
  add_action( 'admin_init', [ $this, 'register_modals' ] );
23
  add_action( 'load-plugins.php', array( $this, 'redirect_to_forms_page' ) );
@@ -193,6 +195,279 @@ class HappyForms extends HappyForms_Core {
193
  return $controls;
194
  }
195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  public function do_control( $control, $field, $index ) {
197
  $type = $control['type'];
198
 
@@ -215,6 +490,10 @@ class HappyForms extends HappyForms_Core {
215
  if ( 'text_dummy' === $type ) {
216
  require( happyforms_get_include_folder() . '/templates/customize-controls/text_dummy.php' );
217
  }
 
 
 
 
218
  }
219
 
220
  public function admin_enqueue_scripts() {
15
  add_action( 'happyforms_do_setup_control', array( $this, 'do_control' ), 10, 3 );
16
  add_action( 'happyforms_do_email_control', array( $this, 'do_control' ), 10, 3 );
17
  add_action( 'happyforms_do_style_control', array( $this, 'do_control' ), 10, 3 );
18
+ add_action( 'happyforms_do_messages_control', array( $this, 'do_control' ), 10, 3 );
19
  add_filter( 'happyforms_setup_controls', array( $this, 'add_dummy_setup_controls' ) );
20
  add_filter( 'happyforms_email_controls', array( $this, 'add_dummy_email_controls' ) );
21
  add_filter( 'happyforms_style_controls', array( $this, 'add_dummy_style_controls' ) );
22
+ add_filter( 'happyforms_messages_controls', array( $this, 'add_dummy_messages_controls' ) );
23
  add_action( 'parse_request', array( $this, 'parse_archive_request' ) );
24
  add_action( 'admin_init', [ $this, 'register_modals' ] );
25
  add_action( 'load-plugins.php', array( $this, 'redirect_to_forms_page' ) );
195
  return $controls;
196
  }
197
 
198
+ public function add_dummy_messages_controls( $controls ) {
199
+ $controls[42] = array(
200
+ 'type' => 'text_dummy_reset',
201
+ 'dummy_id' => 'form_redirect_submission',
202
+ 'label' => __( 'Form redirected after submission', 'happyforms' ),
203
+ );
204
+
205
+ $controls[43] = array(
206
+ 'type' => 'text_dummy_reset',
207
+ 'dummy_id' => 'form_reached_reply_limit',
208
+ 'label' => __( 'Form has reached its reply limit', 'happyforms' ),
209
+ );
210
+
211
+ $controls[44] = array(
212
+ 'type' => 'text_dummy_reset',
213
+ 'dummy_id' => 'submitter_returned_draft',
214
+ 'label' => __( 'Submitter has returned to a draft', 'happyforms' ),
215
+ );
216
+
217
+ $controls[45] = array(
218
+ 'type' => 'text_dummy_reset',
219
+ 'dummy_id' => 'submitter_review_page',
220
+ 'label' => __( 'Submitter is viewing review page', 'happyforms' ),
221
+ );
222
+
223
+ $controls[46] = array(
224
+ 'type' => 'text_dummy_reset',
225
+ 'dummy_id' => 'payment_completed',
226
+ 'label' => __( 'Payment completed', 'happyforms' ),
227
+ );
228
+
229
+ $controls[47] = array(
230
+ 'type' => 'text_dummy_reset',
231
+ 'dummy_id' => 'payment_failed',
232
+ 'label' => __( 'Payment failed', 'happyforms' ),
233
+ );
234
+
235
+ $controls[48] = array(
236
+ 'type' => 'text_dummy_reset',
237
+ 'dummy_id' => 'payment_cancelled',
238
+ 'label' => __( 'Payment cancelled', 'happyforms' ),
239
+ );
240
+
241
+ $controls[2020] = array(
242
+ 'type' => 'text_dummy_reset',
243
+ 'dummy_id' => 'previous_page',
244
+ 'label' => __( 'Previous page', 'happyforms' ),
245
+ );
246
+
247
+ $controls[2030] = array(
248
+ 'type' => 'text_dummy_reset',
249
+ 'dummy_id' => 'redirect_page',
250
+ 'label' => __( 'Redirect to page', 'happyforms' ),
251
+ );
252
+
253
+ $controls[2031] = array(
254
+ 'type' => 'text_dummy_reset',
255
+ 'dummy_id' => 'print_submission',
256
+ 'label' => __( 'Print user submission', 'happyforms' ),
257
+ );
258
+
259
+ $controls[2041] = array(
260
+ 'type' => 'text_dummy_reset',
261
+ 'dummy_id' => 'edit_reply',
262
+ 'label' => __( 'Edit reply', 'happyforms' ),
263
+ );
264
+
265
+ $controls[2061] = array(
266
+ 'type' => 'text_dummy_reset',
267
+ 'dummy_id' => 'clear_saved_reply',
268
+ 'label' => __( 'Clear saved draft reply', 'happyforms' ),
269
+ );
270
+
271
+ $controls[2081] = array(
272
+ 'type' => 'text_dummy_reset',
273
+ 'dummy_id' => 'save_draft_reply',
274
+ 'label' => __( 'Save draft reply', 'happyforms' ),
275
+ );
276
+
277
+ $controls[2141] = array(
278
+ 'type' => 'text_dummy_reset',
279
+ 'dummy_id' => 'upload_files',
280
+ 'label' => __( 'Upload files', 'happyforms' ),
281
+ );
282
+
283
+ $controls[2161] = array(
284
+ 'type' => 'text_dummy_reset',
285
+ 'dummy_id' => 'remove_uploaded_file',
286
+ 'label' => __( 'Remove uploaded file', 'happyforms' ),
287
+ );
288
+
289
+ $controls[2201] = array(
290
+ 'type' => 'text_dummy_reset',
291
+ 'dummy_id' => 'review_reply',
292
+ 'label' => __( 'Review reply', 'happyforms' ),
293
+ );
294
+
295
+ $controls[2260] = array(
296
+ 'type' => 'text_dummy_reset',
297
+ 'dummy_id' => 'start_drawing_signature',
298
+ 'label' => __( 'Start drawing signature', 'happyforms' ),
299
+ );
300
+
301
+ $controls[2261] = array(
302
+ 'type' => 'text_dummy_reset',
303
+ 'dummy_id' => 'start_over_signature',
304
+ 'label' => __( 'Start over drawing signature', 'happyforms' ),
305
+ );
306
+
307
+ $controls[2263] = array(
308
+ 'type' => 'text_dummy_reset',
309
+ 'dummy_id' => 'clear_drawn_signature',
310
+ 'label' => __( 'Clear drawn signature', 'happyforms' ),
311
+ );
312
+
313
+ $controls[2264] = array(
314
+ 'type' => 'text_dummy_reset',
315
+ 'dummy_id' => 'done_drawing_signature',
316
+ 'label' => __( 'Done drawing signature', 'happyforms' ),
317
+ );
318
+
319
+ $controls[4052] = array(
320
+ 'type' => 'text_dummy_reset',
321
+ 'dummy_id' => 'field_answer_limit',
322
+ 'label' => __( 'Field answer reached its limit', 'happyforms' ),
323
+ );
324
+
325
+ $controls[4053] = array(
326
+ 'type' => 'text_dummy_reset',
327
+ 'dummy_id' => 'coupon_invalid',
328
+ 'label' => __( 'Coupon code invalid', 'happyforms' ),
329
+ );
330
+
331
+ $controls[4061] = array(
332
+ 'type' => 'text_dummy_reset',
333
+ 'dummy_id' => 'required_file_not_uploaded',
334
+ 'label' => __( 'Required file isn\'t uploaded', 'happyforms' ),
335
+ );
336
+
337
+ $controls[4106] = array(
338
+ 'type' => 'text_dummy_reset',
339
+ 'dummy_id' => 'required_not_scrolled',
340
+ 'label' => __( 'Required terms haven\'t been scrolled', 'happyforms' ),
341
+ );
342
+
343
+ $controls[4121] = array(
344
+ 'type' => 'text_dummy_reset',
345
+ 'dummy_id' => 'field_disallowed_word',
346
+ 'label' => __( 'Field contains disallowed word', 'happyforms' ),
347
+ );
348
+
349
+ $controls[4122] = array(
350
+ 'type' => 'text_dummy_reset',
351
+ 'dummy_id' => 'disallowed_ip',
352
+ 'label' => __( 'Disallowed IP address or browser', 'happyforms' ),
353
+ );
354
+
355
+ $controls[4123] = array(
356
+ 'type' => 'text_dummy_reset',
357
+ 'dummy_id' => 'file_too_big',
358
+ 'label' => __( 'This file\'s size is too big', 'happyforms' ),
359
+ );
360
+
361
+ $controls[4124] = array(
362
+ 'type' => 'text_dummy_reset',
363
+ 'dummy_id' => 'file_not_allowed',
364
+ 'label' => __( 'This file\'s type not allowed', 'happyforms' ),
365
+ );
366
+
367
+ $controls[4125] = array(
368
+ 'type' => 'text_dummy_reset',
369
+ 'dummy_id' => 'file_name_exists',
370
+ 'label' => __( 'A file with this name has already been uploaded', 'happyforms' ),
371
+ );
372
+
373
+ $controls[4126] = array(
374
+ 'type' => 'text_dummy_reset',
375
+ 'dummy_id' => 'uploaded_few_files',
376
+ 'label' => __( 'User uploaded too few files', 'happyforms' ),
377
+ );
378
+ $controls[4341] = array(
379
+ 'type' => 'text_dummy_reset',
380
+ 'dummy_id' => 'price_too_low',
381
+ 'label' => __( 'Price is too low', 'happyforms' ),
382
+ );
383
+
384
+ $controls[6121] = array(
385
+ 'type' => 'text_dummy_reset',
386
+ 'dummy_id' => 'total_files_uploaded',
387
+ 'label' => __( 'Total files uploaded', 'happyforms' ),
388
+ );
389
+
390
+ $controls[6136] = array(
391
+ 'type' => 'text_dummy_reset',
392
+ 'dummy_id' => 'payment_method',
393
+ 'label' => __( 'Payment method', 'happyforms' ),
394
+ );
395
+
396
+ $controls[6137] = array(
397
+ 'type' => 'text_dummy_reset',
398
+ 'dummy_id' => 'pay_what_you_want',
399
+ 'label' => __( 'Pay what you want', 'happyforms' ),
400
+ );
401
+
402
+ $controls[6141] = array(
403
+ 'type' => 'text_dummy_reset',
404
+ 'dummy_id' => 'submitter_redirected_paypal',
405
+ 'label' => __( 'Submitter will be redirected to PayPal', 'happyforms' ),
406
+ );
407
+
408
+ $controls[6171] = array(
409
+ 'type' => 'text_dummy_reset',
410
+ 'dummy_id' => 'stripe_processing_payment',
411
+ 'label' => __( 'Stripe is processing payment', 'happyforms' ),
412
+ );
413
+
414
+ $controls[6172] = array(
415
+ 'type' => 'text_dummy_reset',
416
+ 'dummy_id' => 'stripe_payment',
417
+ 'label' => __( 'Stripe payment', 'happyforms' ),
418
+ );
419
+
420
+ $controls[6173] = array(
421
+ 'type' => 'text_dummy_reset',
422
+ 'dummy_id' => 'card_number',
423
+ 'label' => __( 'Card number', 'happyforms' ),
424
+ );
425
+
426
+ $controls[6174] = array(
427
+ 'type' => 'text_dummy_reset',
428
+ 'dummy_id' => 'card_expiration',
429
+ 'label' => __( 'Card expiration', 'happyforms' ),
430
+ );
431
+
432
+ $controls[6175] = array(
433
+ 'type' => 'text_dummy_reset',
434
+ 'dummy_id' => 'card_expiration_hint',
435
+ 'label' => __( 'Card expiration hint', 'happyforms' ),
436
+ );
437
+
438
+ $controls[6176] = array(
439
+ 'type' => 'text_dummy_reset',
440
+ 'dummy_id' => 'card_security_code',
441
+ 'label' => __( 'Card security code', 'happyforms' ),
442
+ );
443
+
444
+ $controls[6177] = array(
445
+ 'type' => 'text_dummy_reset',
446
+ 'dummy_id' => 'card_security_code_hint',
447
+ 'label' => __( 'Card security code hint', 'happyforms' ),
448
+ );
449
+
450
+ $controls[6178] = array(
451
+ 'type' => 'text_dummy_reset',
452
+ 'dummy_id' => 'coupon_field_label',
453
+ 'label' => __( 'Coupon field label', 'happyforms' ),
454
+ );
455
+
456
+ $controls[6179] = array(
457
+ 'type' => 'text_dummy_reset',
458
+ 'dummy_id' => 'apply_coupon_label',
459
+ 'label' => __( 'Apply coupon button label', 'happyforms' ),
460
+ );
461
+
462
+ $controls[6241] = array(
463
+ 'type' => 'text_dummy_reset',
464
+ 'dummy_id' => 'current_page',
465
+ 'label' => __( 'Current page', 'happyforms' ),
466
+ );
467
+
468
+ return $controls;
469
+ }
470
+
471
  public function do_control( $control, $field, $index ) {
472
  $type = $control['type'];
473
 
490
  if ( 'text_dummy' === $type ) {
491
  require( happyforms_get_include_folder() . '/templates/customize-controls/text_dummy.php' );
492
  }
493
+
494
+ if ( 'text_dummy_reset' === $type ) {
495
+ require( happyforms_get_include_folder() . '/templates/customize-controls/text_dummy_reset.php' );
496
+ }
497
  }
498
 
499
  public function admin_enqueue_scripts() {
inc/classes/class-message-controller.php CHANGED
@@ -434,6 +434,12 @@ class HappyForms_Message_Controller {
434
  $email_message->set_reply_to( $reply_to );
435
  }
436
 
 
 
 
 
 
 
437
  ob_start();
438
  $response = $message;
439
  require_once( happyforms_owner_email_template_path() );
@@ -479,6 +485,11 @@ class HappyForms_Message_Controller {
479
  $part_id = $email_part['id'];
480
  $to = happyforms_get_message_part_value( $message[$part_id], $email_part );
481
  $email_message->set_to( $to );
 
 
 
 
 
482
 
483
  ob_start();
484
  $response = $message;
434
  $email_message->set_reply_to( $reply_to );
435
  }
436
 
437
+ $ip_address = happyforms_get_client_ip();
438
+ $client_referer = (
439
+ isset( $_REQUEST['happyforms_client_referer'] ) ?
440
+ $_REQUEST['happyforms_client_referer'] : ''
441
+ );
442
+
443
  ob_start();
444
  $response = $message;
445
  require_once( happyforms_owner_email_template_path() );
485
  $part_id = $email_part['id'];
486
  $to = happyforms_get_message_part_value( $message[$part_id], $email_part );
487
  $email_message->set_to( $to );
488
+ $ip_address = happyforms_get_client_ip();
489
+ $client_referer = (
490
+ isset( $_REQUEST['happyforms_client_referer'] ) ?
491
+ $_REQUEST['happyforms_client_referer'] : ''
492
+ );
493
 
494
  ob_start();
495
  $response = $message;
inc/templates/customize-controls/text_dummy_reset.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <div class="customize-control customize-control-number customize-control-text_dummy_reset input_dummy" id="customize-control-<?php echo $control['dummy_id']; ?>">
2
+ <label for="max_entries" class="customize-control-title">
3
+ <?php echo $control['label']; ?> <span class="members-only"><?php _e( 'Members Only', 'happyforms') ?></span>
4
+ </label>
5
+ <div class="customize-control-reset-wrap" data-pointer-target>
6
+ <input id="error_message" type="text" placeholder="<?php echo ( isset( $control['placeholder'] ) ) ? $control['placeholder'] : ''; ?>"/>
7
+ <button type="button" class="reset-default button button-secondary" data-default="" disabled>Reset</button>
8
+ </div>
9
+ </div>
inc/templates/email-owner.php CHANGED
@@ -19,4 +19,40 @@
19
 
20
  <?php endforeach; ?>
21
 
22
- <?php do_action( 'happyforms_email_owner_after' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  <?php endforeach; ?>
21
 
22
+ <?php
23
+
24
+ /**
25
+ *
26
+ * User data
27
+ *
28
+ */
29
+
30
+ if ( happyforms_get_form_property( $form, 'include_submitters_ip' ) ) : ?>
31
+
32
+ <b><?php _e( 'IPv4/IPv6', 'happyforms' ); ?></b><br>
33
+ <?php echo $ip_address; ?>
34
+ <br><br>
35
+
36
+ <?php endif; ?>
37
+
38
+ <?php if ( happyforms_get_form_property( $form, 'include_referral_link' ) ): ?>
39
+ <b><?php _e( 'Referral', 'happyforms' ); ?></b><br><a href="<?php echo $client_referer; ?>"><?php echo $client_referer; ?></a>
40
+ <br><br>
41
+ <?php endif; ?>
42
+
43
+ <?php if ( happyforms_get_form_property( $form, 'include_submission_date_time' ) ) : ?>
44
+
45
+ <?php
46
+ $submitted = sprintf(
47
+ __( '%1$s UTC%2$s', 'happyforms' ),
48
+ date_i18n( __( 'M j, Y g:i a' ) ),
49
+ date_i18n( __( 'P' ) )
50
+ );
51
+ ?>
52
+
53
+ <b><?php _e( 'Date and time', 'happyforms' ); ?></b><br><?php echo $submitted; ?><br>
54
+ <br><br>
55
+
56
+ <?php endif; ?>
57
+
58
+ <?php do_action( 'happyforms_email_owner_after' ); ?>
inc/templates/email-user.php CHANGED
@@ -27,4 +27,40 @@
27
 
28
  <?php endif; ?>
29
 
30
- <?php do_action( 'happyforms_email_user_after' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  <?php endif; ?>
29
 
30
+ <?php
31
+
32
+ /**
33
+ *
34
+ * User data
35
+ *
36
+ */
37
+
38
+ if ( happyforms_get_form_property( $form, 'confirmation_email_include_submitters_ip' ) ) : ?>
39
+
40
+ <b><?php _e( 'IPv4/IPv6', 'happyforms' ); ?></b><br>
41
+ <?php echo $ip_address; ?>
42
+ <br><br>
43
+
44
+ <?php endif; ?>
45
+
46
+ <?php if ( happyforms_get_form_property( $form, 'confirmation_email_include_referral_link' ) ): ?>
47
+ <b><?php _e( 'Referral', 'happyforms' ); ?></b><br><a href="<?php echo $client_referer; ?>"><?php echo $client_referer; ?></a>
48
+ <br><br>
49
+ <?php endif; ?>
50
+
51
+ <?php if ( happyforms_get_form_property( $form, 'confirmation_email_include_submission_date_time' ) ) : ?>
52
+
53
+ <?php
54
+ $submitted = sprintf(
55
+ __( '%1$s UTC%2$s', 'happyforms' ),
56
+ date_i18n( __( 'M j, Y g:i a' ) ),
57
+ date_i18n( __( 'P' ) )
58
+ );
59
+ ?>
60
+
61
+ <b><?php _e( 'Date and time', 'happyforms' ); ?></b><br><?php echo $submitted; ?><br>
62
+ <br><br>
63
+ <?php endif; ?>
64
+
65
+
66
+ <?php do_action( 'happyforms_email_user_after' ); ?>
integrations/assets/css/admin.css CHANGED
@@ -111,37 +111,53 @@
111
  display: block;
112
  }
113
 
114
- .happyforms-stripe-webhook-endpoint-url {
115
  margin: 0 0 1em;
116
  }
117
 
118
- .happyforms-stripe-webhook-endpoint-url-input-wrapper {
119
  display: flex;
120
  flex-wrap: wrap;
121
  }
122
 
123
- .happyforms-stripe-webhook-endpoint-url input[type="text"] {
124
  flex: 1 0 auto;
125
- margin-right: 8px;
 
126
  }
127
 
128
- @media only screen and (max-width: 800px) {
129
- .happyforms-stripe-webhook-endpoint-url input[type="text"] {
130
- margin: 0 0 8px;
 
131
  }
132
  }
133
 
134
- @media only screen and (min-width: 800px) and (max-width: 1499px) {
135
- .happyforms-stripe-webhook-endpoint-url input[type="text"] {
136
  width: 100%;
137
- margin: 0 0 8px;
138
  }
139
  }
140
 
141
- @media only screen and (max-width: 799px) {
142
- .happyforms-stripe-webhook-endpoint-url input[type="text"] {
 
 
 
 
 
 
 
143
  width: 100%;
144
- margin: 0 0 8px;
 
 
 
 
 
 
 
145
  }
146
  }
147
 
111
  display: block;
112
  }
113
 
114
+ .happyforms-clipboard-field {
115
  margin: 0 0 1em;
116
  }
117
 
118
+ .happyforms-clipboard-field-input-wrapper {
119
  display: flex;
120
  flex-wrap: wrap;
121
  }
122
 
123
+ .happyforms-clipboard-field-input-wrapper input[type="text"] {
124
  flex: 1 0 auto;
125
+ width: 100%;
126
+ margin: 0 0 8px 0;
127
  }
128
 
129
+ @media only screen and (min-width: 782px) {
130
+ .happyforms-clipboard-field-input-wrapper input[type="text"] {
131
+ width: auto;
132
+ margin: 0 8px 0 0;
133
  }
134
  }
135
 
136
+ @media only screen and (min-width: 800px) {
137
+ .happyforms-clipboard-field-input-wrapper input[type="text"] {
138
  width: 100%;
139
+ margin: 0 0 8px 0;
140
  }
141
  }
142
 
143
+ @media only screen and (min-width: 1100px) {
144
+ .happyforms-clipboard-field-input-wrapper input[type="text"] {
145
+ width: auto;
146
+ margin: 0 8px 0 0;
147
+ }
148
+ }
149
+
150
+ @media only screen and (min-width: 1800px) {
151
+ .happyforms-clipboard-field-input-wrapper input[type="text"] {
152
  width: 100%;
153
+ margin: 0 0 8px 0;
154
+ }
155
+ }
156
+
157
+ @media only screen and (min-width: 1920px) {
158
+ .happyforms-clipboard-field-input-wrapper input[type="text"] {
159
+ width: auto;
160
+ margin: 0 8px 0 0;
161
  }
162
  }
163
 
integrations/classes/class-integrations-page-controller.php CHANGED
@@ -35,6 +35,7 @@ class HappyForms_Integrations_Page_Controller {
35
  [ 'id' => 'sendfox', 'label' => __( 'SendFox', 'happyforms' ), 'context' => 'normal' ],
36
  [ 'id' => 'sendgrid', 'label' => __( 'SendGrid', 'happyforms' ), 'context' => 'normal' ],
37
  [ 'id' => 'sendinblue', 'label' => __( 'Sendinblue', 'happyforms' ), 'context' => 'normal' ],
 
38
  [ 'id' => 'recaptcha', 'label' => __( 'reCAPTCHA', 'happyforms' ), 'context' => 'side' ],
39
  [ 'id' => 'stripe', 'label' => __( 'Stripe', 'happyforms' ), 'context' => 'side' ],
40
  [ 'id' => 'paypal', 'label' => __( 'PayPal', 'happyforms' ), 'context' => 'side' ],
35
  [ 'id' => 'sendfox', 'label' => __( 'SendFox', 'happyforms' ), 'context' => 'normal' ],
36
  [ 'id' => 'sendgrid', 'label' => __( 'SendGrid', 'happyforms' ), 'context' => 'normal' ],
37
  [ 'id' => 'sendinblue', 'label' => __( 'Sendinblue', 'happyforms' ), 'context' => 'normal' ],
38
+ [ 'id' => 'emailoctopus', 'label' => __( 'EmailOctopus', 'happyforms' ), 'context' => 'normal' ],
39
  [ 'id' => 'recaptcha', 'label' => __( 'reCAPTCHA', 'happyforms' ), 'context' => 'side' ],
40
  [ 'id' => 'stripe', 'label' => __( 'Stripe', 'happyforms' ), 'context' => 'side' ],
41
  [ 'id' => 'paypal', 'label' => __( 'PayPal', 'happyforms' ), 'context' => 'side' ],
integrations/templates/widget-constant-contact-dummy.php CHANGED
@@ -2,6 +2,16 @@
2
  <div class="widget-content">
3
  <div id="happyforms-service-active-campaign" class="happyforms-service-integration">
4
  <div class="widget-content">
 
 
 
 
 
 
 
 
 
 
5
  <label for=""><?php _e( 'API URL', 'happyforms' ); ?></label>
6
  <div class="hf-pwd">
7
  <input type="password" class="widefat happyforms-credentials-input connected" id="" name="" value="" />
2
  <div class="widget-content">
3
  <div id="happyforms-service-active-campaign" class="happyforms-service-integration">
4
  <div class="widget-content">
5
+ <div class="happyforms-clipboard-field">
6
+ <label for="constant-contact-redirect-uri"><?php _e( 'Redirect URI', 'happyforms' ); ?></label>
7
+ <div class="happyforms-clipboard-field-input-wrapper">
8
+ <input type="text" name="constant-contact-redirect-uri" readonly value="" />
9
+ <div class="happyforms-clipboard">
10
+ <button type="button" class="button happyforms-clipboard__button" data-value=""><?php _e( 'Copy to clipboard', 'happyforms' ); ?></button>
11
+ <span aria-hidden="true" class="hidden"><?php _e( 'Copied!', 'happyforms' ); ?></span>
12
+ </div>
13
+ </div>
14
+ </div>
15
  <label for=""><?php _e( 'API URL', 'happyforms' ); ?></label>
16
  <div class="hf-pwd">
17
  <input type="password" class="widefat happyforms-credentials-input connected" id="" name="" value="" />
integrations/templates/widget-emailoctopus-dummy.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <form class="happyforms-service hf-ajax-submit">
2
+ <div class="widget-content">
3
+ <div id="happyforms-service-google-places" class="happyforms-service-integration">
4
+ <div class="widget-content">
5
+ <label for=""><?php _e( 'API key', 'happyforms' ); ?></label>
6
+ <div class="hf-pwd">
7
+ <input type="password" class="widefat happyforms-credentials-input connected" id="" name="" value="" />
8
+ <button type="button" class="button button-secondary hf-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-show="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-hide="<?php _e( 'Hide credentials', 'happyforms' ); ?>">
9
+ <span class="dashicons dashicons-visibility" aria-hidden="true"></span>
10
+ </button>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ <div class="widget-control-actions">
15
+ <div class="alignleft">
16
+ <input type="button" class="connected button button-primary widget-control-save right" value="<?php _e( 'Save Changes', 'happyforms' ); ?>">
17
+ </div>
18
+ <br class="clear" />
19
+ </div>
20
+ </div>
21
+ </form>
integrations/templates/widget-sendgrid-dummy.php CHANGED
@@ -2,7 +2,7 @@
2
  <div class="widget-content">
3
  <div id="happyforms-service-google-places" class="happyforms-service-integration">
4
  <div class="widget-content">
5
- <label for=""><?php _e( 'Personal access token', 'happyforms' ); ?></label>
6
  <div class="hf-pwd">
7
  <input type="password" class="widefat happyforms-credentials-input connected" id="" name="" value="" />
8
  <button type="button" class="button button-secondary hf-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-show="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-hide="<?php _e( 'Hide credentials', 'happyforms' ); ?>">
2
  <div class="widget-content">
3
  <div id="happyforms-service-google-places" class="happyforms-service-integration">
4
  <div class="widget-content">
5
+ <label for=""><?php _e( 'API key', 'happyforms' ); ?></label>
6
  <div class="hf-pwd">
7
  <input type="password" class="widefat happyforms-credentials-input connected" id="" name="" value="" />
8
  <button type="button" class="button button-secondary hf-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-show="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-hide="<?php _e( 'Hide credentials', 'happyforms' ); ?>">
integrations/templates/widget-sendinblue-dummy.php CHANGED
@@ -2,7 +2,7 @@
2
  <div class="widget-content">
3
  <div id="happyforms-service-google-places" class="happyforms-service-integration">
4
  <div class="widget-content">
5
- <label for=""><?php _e( 'Personal access token', 'happyforms' ); ?></label>
6
  <div class="hf-pwd">
7
  <input type="password" class="widefat happyforms-credentials-input connected" id="" name="" value="" />
8
  <button type="button" class="button button-secondary hf-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-show="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-hide="<?php _e( 'Hide credentials', 'happyforms' ); ?>">
2
  <div class="widget-content">
3
  <div id="happyforms-service-google-places" class="happyforms-service-integration">
4
  <div class="widget-content">
5
+ <label for=""><?php _e( 'API v3 key', 'happyforms' ); ?></label>
6
  <div class="hf-pwd">
7
  <input type="password" class="widefat happyforms-credentials-input connected" id="" name="" value="" />
8
  <button type="button" class="button button-secondary hf-hide-pw hide-if-no-js" data-toggle="0" aria-label="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-show="<?php _e( 'Show credentials', 'happyforms' ); ?>" data-label-hide="<?php _e( 'Hide credentials', 'happyforms' ); ?>">
integrations/templates/widget-stripe-dummy.php CHANGED
@@ -30,10 +30,10 @@
30
  <span class="dashicons dashicons-visibility" aria-hidden="true"></span>
31
  </button>
32
  </div>
33
- <div class="happyforms-stripe-webhook-endpoint-url">
34
  <label for="credentials[stripe][webhook_endpoint_url]"><?php _e( 'Webhook endpoint URL', 'happyforms' ); ?></label>
35
- <div class="happyforms-stripe-webhook-endpoint-url-input-wrapper">
36
- <input type="text" readonly value="" class="happyforms-stripe-webhook" />
37
  <div class="happyforms-clipboard">
38
  <button type="button" class="button happyforms-clipboard__button" data-value=""><?php _e( 'Copy to clipboard', 'happyforms' ); ?></button>
39
  <span aria-hidden="true" class="hidden"><?php _e( 'Copied!', 'happyforms' ); ?></span>
30
  <span class="dashicons dashicons-visibility" aria-hidden="true"></span>
31
  </button>
32
  </div>
33
+ <div class="happyforms-clipboard-field">
34
  <label for="credentials[stripe][webhook_endpoint_url]"><?php _e( 'Webhook endpoint URL', 'happyforms' ); ?></label>
35
+ <div class="happyforms-clipboard-field-input-wrapper">
36
+ <input type="text" readonly value="" />
37
  <div class="happyforms-clipboard">
38
  <button type="button" class="button happyforms-clipboard__button" data-value=""><?php _e( 'Copy to clipboard', 'happyforms' ); ?></button>
39
  <span aria-hidden="true" class="hidden"><?php _e( 'Copied!', 'happyforms' ); ?></span>
languages/happyforms.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Happyforms (free) 1.19.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-10-14T07:49:18+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: happyforms\n"
@@ -62,11 +62,13 @@ msgid "Date"
62
  msgstr ""
63
 
64
  #: core/classes/class-form-admin.php:335
 
65
  #: integrations/templates/widget-stripe-dummy.php:38
66
  msgid "Copy to clipboard"
67
  msgstr ""
68
 
69
  #: core/classes/class-form-admin.php:335
 
70
  #: integrations/templates/widget-stripe-dummy.php:39
71
  msgid "Copied!"
72
  msgstr ""
@@ -154,56 +156,71 @@ msgstr ""
154
  msgid "New submission to your form"
155
  msgstr ""
156
 
157
- #: core/classes/class-form-email.php:72
158
  msgid "We received your message"
159
  msgstr ""
160
 
161
- #: core/classes/class-form-email.php:76
162
  msgid "Your message has been successfully sent. We appreciate you contacting us and we’ll be in touch soon."
163
  msgstr ""
164
 
165
- #: core/classes/class-form-email.php:92
166
  msgid "Email me a copy of each submission"
167
  msgstr ""
168
 
169
- #: core/classes/class-form-email.php:102
170
- #: inc/classes/class-happyforms.php:156
171
  msgid "To email address"
172
  msgstr ""
173
 
174
- #: core/classes/class-form-email.php:107
175
  msgid "To Bcc email address"
176
  msgstr ""
177
 
178
- #: core/classes/class-form-email.php:112
179
- #: core/classes/class-form-email.php:144
180
  msgid "From email address"
181
  msgstr ""
182
 
183
- #: core/classes/class-form-email.php:117
184
- #: core/classes/class-form-email.php:149
185
  msgid "Reply email address"
186
  msgstr ""
187
 
188
- #: core/classes/class-form-email.php:122
189
- #: core/classes/class-form-email.php:154
190
  msgid "Email display name"
191
  msgstr ""
192
 
193
- #: core/classes/class-form-email.php:127
194
- #: core/classes/class-form-email.php:159
195
  msgid "Email subject"
196
  msgstr ""
197
 
198
- #: core/classes/class-form-email.php:135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  msgid "Email submitter a copy of their reply"
200
  msgstr ""
201
 
202
- #: core/classes/class-form-email.php:164
203
  msgid "Email content"
204
  msgstr ""
205
 
206
- #: core/classes/class-form-email.php:169
207
  msgid "Include submitted values"
208
  msgstr ""
209
 
@@ -780,7 +797,7 @@ msgstr ""
780
 
781
  #: core/classes/class-happyforms-core.php:210
782
  #: core/classes/class-happyforms-core.php:211
783
- #: inc/classes/class-message-controller.php:561
784
  msgid "Submissions"
785
  msgstr ""
786
 
@@ -2554,6 +2571,7 @@ msgstr ""
2554
  #: inc/templates/customize-controls/number_dummy.php:4
2555
  #: inc/templates/customize-controls/panel_dummy.php:3
2556
  #: inc/templates/customize-controls/text_dummy.php:4
 
2557
  #: inc/templates/customize-form-part-choice-footer.php:4
2558
  #: inc/templates/customize-form-part-footer.php:5
2559
  msgid "Members Only"
@@ -2902,68 +2920,248 @@ msgstr ""
2902
  msgid "Max times the same answer can be submitted"
2903
  msgstr ""
2904
 
2905
- #: inc/classes/class-happyforms.php:95
2906
  msgid "Upgrade"
2907
  msgstr ""
2908
 
2909
- #: inc/classes/class-happyforms.php:103
2910
  msgid "Redirect to this page address (URL) after submission"
2911
  msgstr ""
2912
 
2913
- #: inc/classes/class-happyforms.php:104
2914
  msgid "Search or type URL"
2915
  msgstr ""
2916
 
2917
- #: inc/classes/class-happyforms.php:110
2918
  msgid "Shuffle order of fields"
2919
  msgstr ""
2920
 
2921
- #: inc/classes/class-happyforms.php:116
2922
  msgid "Use reCAPTCHA"
2923
  msgstr ""
2924
 
2925
- #: inc/classes/class-happyforms.php:122
2926
  msgid "Let submitters save a draft for set number of days"
2927
  msgstr ""
2928
 
2929
- #: inc/classes/class-happyforms.php:128
2930
  msgid "Require submitters to review a submission"
2931
  msgstr ""
2932
 
2933
- #: inc/classes/class-happyforms.php:134
2934
  msgid "Max number of submissions"
2935
  msgstr ""
2936
 
2937
- #: inc/classes/class-happyforms.php:140
2938
  msgid "Erase submitter's personal data after set number of days"
2939
  msgstr ""
2940
 
2941
- #: inc/classes/class-happyforms.php:146
2942
  msgid "Show an error message if field contains words in Disallowed Comment Keys"
2943
  msgstr ""
2944
 
2945
- #: inc/classes/class-happyforms.php:162
2946
  msgid "Send abandonment email"
2947
  msgstr ""
2948
 
2949
- #: inc/classes/class-happyforms.php:172
2950
  msgid "Checkboxes & Radios"
2951
  msgstr ""
2952
 
2953
- #: inc/classes/class-happyforms.php:178
2954
  msgid "Rating"
2955
  msgstr ""
2956
 
2957
- #: inc/classes/class-happyforms.php:184
2958
  msgid "Separators"
2959
  msgstr ""
2960
 
2961
- #: inc/classes/class-happyforms.php:190
2962
  msgid "Multi Step"
2963
  msgstr ""
2964
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2965
  #: inc/classes/class-message-admin.php:59
2966
- #: inc/classes/class-message-controller.php:562
2967
  msgid "Submission"
2968
  msgstr ""
2969
 
@@ -2991,12 +3189,12 @@ msgstr ""
2991
  msgid "Spam"
2992
  msgstr ""
2993
 
2994
- #: inc/classes/class-message-controller.php:563
2995
- #: inc/classes/class-message-controller.php:564
2996
  msgid "All Submissions"
2997
  msgstr ""
2998
 
2999
- #: inc/classes/class-message-controller.php:565
3000
  msgid "No submissions found."
3001
  msgstr ""
3002
 
@@ -3132,6 +3330,26 @@ msgstr ""
3132
  msgid "For collecting formatted site or page addresses (URL)."
3133
  msgstr ""
3134
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3135
  #: integrations/classes/class-integrations-page-controller.php:29
3136
  msgid "ActiveCampaign"
3137
  msgstr ""
@@ -3169,30 +3387,34 @@ msgid "Sendinblue"
3169
  msgstr ""
3170
 
3171
  #: integrations/classes/class-integrations-page-controller.php:38
3172
- msgid "reCAPTCHA"
3173
  msgstr ""
3174
 
3175
  #: integrations/classes/class-integrations-page-controller.php:39
3176
- msgid "Stripe"
3177
  msgstr ""
3178
 
3179
  #: integrations/classes/class-integrations-page-controller.php:40
3180
- msgid "PayPal"
3181
  msgstr ""
3182
 
3183
  #: integrations/classes/class-integrations-page-controller.php:41
3184
- msgid "Zapier"
3185
  msgstr ""
3186
 
3187
  #: integrations/classes/class-integrations-page-controller.php:42
3188
- msgid "Integromat"
3189
  msgstr ""
3190
 
3191
  #: integrations/classes/class-integrations-page-controller.php:43
3192
- msgid "Integrately"
3193
  msgstr ""
3194
 
3195
  #: integrations/classes/class-integrations-page-controller.php:44
 
 
 
 
3196
  msgid "Google Analytics"
3197
  msgstr ""
3198
 
@@ -3251,16 +3473,17 @@ msgid "No coupons found."
3251
  msgstr ""
3252
 
3253
  #: integrations/templates/widget-active-campaign-dummy.php:5
3254
- #: integrations/templates/widget-constant-contact-dummy.php:5
3255
  msgid "API URL"
3256
  msgstr ""
3257
 
3258
  #: integrations/templates/widget-active-campaign-dummy.php:8
3259
  #: integrations/templates/widget-active-campaign-dummy.php:15
3260
  #: integrations/templates/widget-aweber-dummy.php:12
3261
- #: integrations/templates/widget-constant-contact-dummy.php:8
3262
- #: integrations/templates/widget-constant-contact-dummy.php:15
3263
  #: integrations/templates/widget-convertkit-dummy.php:8
 
3264
  #: integrations/templates/widget-google-analytics-dummy.php:8
3265
  #: integrations/templates/widget-google-geocoding-dummy.php:8
3266
  #: integrations/templates/widget-google-places-dummy.php:8
@@ -3285,9 +3508,10 @@ msgstr ""
3285
  #: integrations/templates/widget-active-campaign-dummy.php:8
3286
  #: integrations/templates/widget-active-campaign-dummy.php:15
3287
  #: integrations/templates/widget-aweber-dummy.php:12
3288
- #: integrations/templates/widget-constant-contact-dummy.php:8
3289
- #: integrations/templates/widget-constant-contact-dummy.php:15
3290
  #: integrations/templates/widget-convertkit-dummy.php:8
 
3291
  #: integrations/templates/widget-google-analytics-dummy.php:8
3292
  #: integrations/templates/widget-google-geocoding-dummy.php:8
3293
  #: integrations/templates/widget-google-places-dummy.php:8
@@ -3310,22 +3534,25 @@ msgid "Hide credentials"
3310
  msgstr ""
3311
 
3312
  #: integrations/templates/widget-active-campaign-dummy.php:12
3313
- #: integrations/templates/widget-constant-contact-dummy.php:12
3314
  #: integrations/templates/widget-convertkit-dummy.php:5
 
3315
  #: integrations/templates/widget-google-geocoding-dummy.php:5
3316
  #: integrations/templates/widget-google-places-dummy.php:5
3317
  #: integrations/templates/widget-integrately-dummy.php:5
3318
  #: integrations/templates/widget-integromat-dummy.php:5
3319
  #: integrations/templates/widget-mailchimp-dummy.php:5
3320
  #: integrations/templates/widget-mailerlite-dummy.php:5
 
3321
  #: integrations/templates/widget-zapier-dummy.php:5
3322
  msgid "API key"
3323
  msgstr ""
3324
 
3325
  #: integrations/templates/widget-active-campaign-dummy.php:23
3326
  #: integrations/templates/widget-aweber-dummy.php:21
3327
- #: integrations/templates/widget-constant-contact-dummy.php:23
3328
  #: integrations/templates/widget-convertkit-dummy.php:16
 
3329
  #: integrations/templates/widget-google-analytics-dummy.php:16
3330
  #: integrations/templates/widget-google-geocoding-dummy.php:16
3331
  #: integrations/templates/widget-google-places-dummy.php:16
@@ -3351,6 +3578,10 @@ msgstr ""
3351
  msgid "Verification code"
3352
  msgstr ""
3353
 
 
 
 
 
3354
  #: integrations/templates/widget-google-analytics-dummy.php:5
3355
  msgid "Tracking ID"
3356
  msgstr ""
@@ -3396,11 +3627,13 @@ msgid "Secret key"
3396
  msgstr ""
3397
 
3398
  #: integrations/templates/widget-sendfox-dummy.php:5
3399
- #: integrations/templates/widget-sendgrid-dummy.php:5
3400
- #: integrations/templates/widget-sendinblue-dummy.php:5
3401
  msgid "Personal access token"
3402
  msgstr ""
3403
 
 
 
 
 
3404
  #: integrations/templates/widget-stripe-dummy.php:12
3405
  msgid "Test"
3406
  msgstr ""
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Happyforms (free) 1.20.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-11-03T08:23:29+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: happyforms\n"
62
  msgstr ""
63
 
64
  #: core/classes/class-form-admin.php:335
65
+ #: integrations/templates/widget-constant-contact-dummy.php:10
66
  #: integrations/templates/widget-stripe-dummy.php:38
67
  msgid "Copy to clipboard"
68
  msgstr ""
69
 
70
  #: core/classes/class-form-admin.php:335
71
+ #: integrations/templates/widget-constant-contact-dummy.php:11
72
  #: integrations/templates/widget-stripe-dummy.php:39
73
  msgid "Copied!"
74
  msgstr ""
156
  msgid "New submission to your form"
157
  msgstr ""
158
 
159
+ #: core/classes/class-form-email.php:84
160
  msgid "We received your message"
161
  msgstr ""
162
 
163
+ #: core/classes/class-form-email.php:88
164
  msgid "Your message has been successfully sent. We appreciate you contacting us and we’ll be in touch soon."
165
  msgstr ""
166
 
167
+ #: core/classes/class-form-email.php:116
168
  msgid "Email me a copy of each submission"
169
  msgstr ""
170
 
171
+ #: core/classes/class-form-email.php:126
172
+ #: inc/classes/class-happyforms.php:158
173
  msgid "To email address"
174
  msgstr ""
175
 
176
+ #: core/classes/class-form-email.php:131
177
  msgid "To Bcc email address"
178
  msgstr ""
179
 
180
+ #: core/classes/class-form-email.php:136
181
+ #: core/classes/class-form-email.php:183
182
  msgid "From email address"
183
  msgstr ""
184
 
185
+ #: core/classes/class-form-email.php:141
186
+ #: core/classes/class-form-email.php:188
187
  msgid "Reply email address"
188
  msgstr ""
189
 
190
+ #: core/classes/class-form-email.php:146
191
+ #: core/classes/class-form-email.php:193
192
  msgid "Email display name"
193
  msgstr ""
194
 
195
+ #: core/classes/class-form-email.php:151
196
+ #: core/classes/class-form-email.php:198
197
  msgid "Email subject"
198
  msgstr ""
199
 
200
+ #: core/classes/class-form-email.php:156
201
+ #: core/classes/class-form-email.php:213
202
+ msgid "Include submitter's IP address"
203
+ msgstr ""
204
+
205
+ #: core/classes/class-form-email.php:161
206
+ #: core/classes/class-form-email.php:218
207
+ msgid "Include referral link"
208
+ msgstr ""
209
+
210
+ #: core/classes/class-form-email.php:166
211
+ #: core/classes/class-form-email.php:223
212
+ msgid "Include submission date and time"
213
+ msgstr ""
214
+
215
+ #: core/classes/class-form-email.php:174
216
  msgid "Email submitter a copy of their reply"
217
  msgstr ""
218
 
219
+ #: core/classes/class-form-email.php:203
220
  msgid "Email content"
221
  msgstr ""
222
 
223
+ #: core/classes/class-form-email.php:208
224
  msgid "Include submitted values"
225
  msgstr ""
226
 
797
 
798
  #: core/classes/class-happyforms-core.php:210
799
  #: core/classes/class-happyforms-core.php:211
800
+ #: inc/classes/class-message-controller.php:572
801
  msgid "Submissions"
802
  msgstr ""
803
 
2571
  #: inc/templates/customize-controls/number_dummy.php:4
2572
  #: inc/templates/customize-controls/panel_dummy.php:3
2573
  #: inc/templates/customize-controls/text_dummy.php:4
2574
+ #: inc/templates/customize-controls/text_dummy_reset.php:3
2575
  #: inc/templates/customize-form-part-choice-footer.php:4
2576
  #: inc/templates/customize-form-part-footer.php:5
2577
  msgid "Members Only"
2920
  msgid "Max times the same answer can be submitted"
2921
  msgstr ""
2922
 
2923
+ #: inc/classes/class-happyforms.php:97
2924
  msgid "Upgrade"
2925
  msgstr ""
2926
 
2927
+ #: inc/classes/class-happyforms.php:105
2928
  msgid "Redirect to this page address (URL) after submission"
2929
  msgstr ""
2930
 
2931
+ #: inc/classes/class-happyforms.php:106
2932
  msgid "Search or type URL"
2933
  msgstr ""
2934
 
2935
+ #: inc/classes/class-happyforms.php:112
2936
  msgid "Shuffle order of fields"
2937
  msgstr ""
2938
 
2939
+ #: inc/classes/class-happyforms.php:118
2940
  msgid "Use reCAPTCHA"
2941
  msgstr ""
2942
 
2943
+ #: inc/classes/class-happyforms.php:124
2944
  msgid "Let submitters save a draft for set number of days"
2945
  msgstr ""
2946
 
2947
+ #: inc/classes/class-happyforms.php:130
2948
  msgid "Require submitters to review a submission"
2949
  msgstr ""
2950
 
2951
+ #: inc/classes/class-happyforms.php:136
2952
  msgid "Max number of submissions"
2953
  msgstr ""
2954
 
2955
+ #: inc/classes/class-happyforms.php:142
2956
  msgid "Erase submitter's personal data after set number of days"
2957
  msgstr ""
2958
 
2959
+ #: inc/classes/class-happyforms.php:148
2960
  msgid "Show an error message if field contains words in Disallowed Comment Keys"
2961
  msgstr ""
2962
 
2963
+ #: inc/classes/class-happyforms.php:164
2964
  msgid "Send abandonment email"
2965
  msgstr ""
2966
 
2967
+ #: inc/classes/class-happyforms.php:174
2968
  msgid "Checkboxes & Radios"
2969
  msgstr ""
2970
 
2971
+ #: inc/classes/class-happyforms.php:180
2972
  msgid "Rating"
2973
  msgstr ""
2974
 
2975
+ #: inc/classes/class-happyforms.php:186
2976
  msgid "Separators"
2977
  msgstr ""
2978
 
2979
+ #: inc/classes/class-happyforms.php:192
2980
  msgid "Multi Step"
2981
  msgstr ""
2982
 
2983
+ #: inc/classes/class-happyforms.php:202
2984
+ msgid "Form redirected after submission"
2985
+ msgstr ""
2986
+
2987
+ #: inc/classes/class-happyforms.php:208
2988
+ msgid "Form has reached its reply limit"
2989
+ msgstr ""
2990
+
2991
+ #: inc/classes/class-happyforms.php:214
2992
+ msgid "Submitter has returned to a draft"
2993
+ msgstr ""
2994
+
2995
+ #: inc/classes/class-happyforms.php:220
2996
+ msgid "Submitter is viewing review page"
2997
+ msgstr ""
2998
+
2999
+ #: inc/classes/class-happyforms.php:226
3000
+ msgid "Payment completed"
3001
+ msgstr ""
3002
+
3003
+ #: inc/classes/class-happyforms.php:232
3004
+ msgid "Payment failed"
3005
+ msgstr ""
3006
+
3007
+ #: inc/classes/class-happyforms.php:238
3008
+ msgid "Payment cancelled"
3009
+ msgstr ""
3010
+
3011
+ #: inc/classes/class-happyforms.php:244
3012
+ msgid "Previous page"
3013
+ msgstr ""
3014
+
3015
+ #: inc/classes/class-happyforms.php:250
3016
+ msgid "Redirect to page"
3017
+ msgstr ""
3018
+
3019
+ #: inc/classes/class-happyforms.php:256
3020
+ msgid "Print user submission"
3021
+ msgstr ""
3022
+
3023
+ #: inc/classes/class-happyforms.php:262
3024
+ msgid "Edit reply"
3025
+ msgstr ""
3026
+
3027
+ #: inc/classes/class-happyforms.php:268
3028
+ msgid "Clear saved draft reply"
3029
+ msgstr ""
3030
+
3031
+ #: inc/classes/class-happyforms.php:274
3032
+ msgid "Save draft reply"
3033
+ msgstr ""
3034
+
3035
+ #: inc/classes/class-happyforms.php:280
3036
+ msgid "Upload files"
3037
+ msgstr ""
3038
+
3039
+ #: inc/classes/class-happyforms.php:286
3040
+ msgid "Remove uploaded file"
3041
+ msgstr ""
3042
+
3043
+ #: inc/classes/class-happyforms.php:292
3044
+ msgid "Review reply"
3045
+ msgstr ""
3046
+
3047
+ #: inc/classes/class-happyforms.php:298
3048
+ msgid "Start drawing signature"
3049
+ msgstr ""
3050
+
3051
+ #: inc/classes/class-happyforms.php:304
3052
+ msgid "Start over drawing signature"
3053
+ msgstr ""
3054
+
3055
+ #: inc/classes/class-happyforms.php:310
3056
+ msgid "Clear drawn signature"
3057
+ msgstr ""
3058
+
3059
+ #: inc/classes/class-happyforms.php:316
3060
+ msgid "Done drawing signature"
3061
+ msgstr ""
3062
+
3063
+ #: inc/classes/class-happyforms.php:322
3064
+ msgid "Field answer reached its limit"
3065
+ msgstr ""
3066
+
3067
+ #: inc/classes/class-happyforms.php:328
3068
+ msgid "Coupon code invalid"
3069
+ msgstr ""
3070
+
3071
+ #: inc/classes/class-happyforms.php:334
3072
+ msgid "Required file isn't uploaded"
3073
+ msgstr ""
3074
+
3075
+ #: inc/classes/class-happyforms.php:340
3076
+ msgid "Required terms haven't been scrolled"
3077
+ msgstr ""
3078
+
3079
+ #: inc/classes/class-happyforms.php:346
3080
+ msgid "Field contains disallowed word"
3081
+ msgstr ""
3082
+
3083
+ #: inc/classes/class-happyforms.php:352
3084
+ msgid "Disallowed IP address or browser"
3085
+ msgstr ""
3086
+
3087
+ #: inc/classes/class-happyforms.php:358
3088
+ msgid "This file's size is too big"
3089
+ msgstr ""
3090
+
3091
+ #: inc/classes/class-happyforms.php:364
3092
+ msgid "This file's type not allowed"
3093
+ msgstr ""
3094
+
3095
+ #: inc/classes/class-happyforms.php:370
3096
+ msgid "A file with this name has already been uploaded"
3097
+ msgstr ""
3098
+
3099
+ #: inc/classes/class-happyforms.php:376
3100
+ msgid "User uploaded too few files"
3101
+ msgstr ""
3102
+
3103
+ #: inc/classes/class-happyforms.php:381
3104
+ msgid "Price is too low"
3105
+ msgstr ""
3106
+
3107
+ #: inc/classes/class-happyforms.php:387
3108
+ msgid "Total files uploaded"
3109
+ msgstr ""
3110
+
3111
+ #: inc/classes/class-happyforms.php:393
3112
+ msgid "Payment method"
3113
+ msgstr ""
3114
+
3115
+ #: inc/classes/class-happyforms.php:399
3116
+ msgid "Pay what you want"
3117
+ msgstr ""
3118
+
3119
+ #: inc/classes/class-happyforms.php:405
3120
+ msgid "Submitter will be redirected to PayPal"
3121
+ msgstr ""
3122
+
3123
+ #: inc/classes/class-happyforms.php:411
3124
+ msgid "Stripe is processing payment"
3125
+ msgstr ""
3126
+
3127
+ #: inc/classes/class-happyforms.php:417
3128
+ msgid "Stripe payment"
3129
+ msgstr ""
3130
+
3131
+ #: inc/classes/class-happyforms.php:423
3132
+ msgid "Card number"
3133
+ msgstr ""
3134
+
3135
+ #: inc/classes/class-happyforms.php:429
3136
+ msgid "Card expiration"
3137
+ msgstr ""
3138
+
3139
+ #: inc/classes/class-happyforms.php:435
3140
+ msgid "Card expiration hint"
3141
+ msgstr ""
3142
+
3143
+ #: inc/classes/class-happyforms.php:441
3144
+ msgid "Card security code"
3145
+ msgstr ""
3146
+
3147
+ #: inc/classes/class-happyforms.php:447
3148
+ msgid "Card security code hint"
3149
+ msgstr ""
3150
+
3151
+ #: inc/classes/class-happyforms.php:453
3152
+ msgid "Coupon field label"
3153
+ msgstr ""
3154
+
3155
+ #: inc/classes/class-happyforms.php:459
3156
+ msgid "Apply coupon button label"
3157
+ msgstr ""
3158
+
3159
+ #: inc/classes/class-happyforms.php:465
3160
+ msgid "Current page"
3161
+ msgstr ""
3162
+
3163
  #: inc/classes/class-message-admin.php:59
3164
+ #: inc/classes/class-message-controller.php:573
3165
  msgid "Submission"
3166
  msgstr ""
3167
 
3189
  msgid "Spam"
3190
  msgstr ""
3191
 
3192
+ #: inc/classes/class-message-controller.php:574
3193
+ #: inc/classes/class-message-controller.php:575
3194
  msgid "All Submissions"
3195
  msgstr ""
3196
 
3197
+ #: inc/classes/class-message-controller.php:576
3198
  msgid "No submissions found."
3199
  msgstr ""
3200
 
3330
  msgid "For collecting formatted site or page addresses (URL)."
3331
  msgstr ""
3332
 
3333
+ #: inc/templates/email-owner.php:32
3334
+ #: inc/templates/email-user.php:40
3335
+ msgid "IPv4/IPv6"
3336
+ msgstr ""
3337
+
3338
+ #: inc/templates/email-owner.php:39
3339
+ #: inc/templates/email-user.php:47
3340
+ msgid "Referral"
3341
+ msgstr ""
3342
+
3343
+ #: inc/templates/email-owner.php:47
3344
+ #: inc/templates/email-user.php:55
3345
+ msgid "%1$s UTC%2$s"
3346
+ msgstr ""
3347
+
3348
+ #: inc/templates/email-owner.php:53
3349
+ #: inc/templates/email-user.php:61
3350
+ msgid "Date and time"
3351
+ msgstr ""
3352
+
3353
  #: integrations/classes/class-integrations-page-controller.php:29
3354
  msgid "ActiveCampaign"
3355
  msgstr ""
3387
  msgstr ""
3388
 
3389
  #: integrations/classes/class-integrations-page-controller.php:38
3390
+ msgid "EmailOctopus"
3391
  msgstr ""
3392
 
3393
  #: integrations/classes/class-integrations-page-controller.php:39
3394
+ msgid "reCAPTCHA"
3395
  msgstr ""
3396
 
3397
  #: integrations/classes/class-integrations-page-controller.php:40
3398
+ msgid "Stripe"
3399
  msgstr ""
3400
 
3401
  #: integrations/classes/class-integrations-page-controller.php:41
3402
+ msgid "PayPal"
3403
  msgstr ""
3404
 
3405
  #: integrations/classes/class-integrations-page-controller.php:42
3406
+ msgid "Zapier"
3407
  msgstr ""
3408
 
3409
  #: integrations/classes/class-integrations-page-controller.php:43
3410
+ msgid "Integromat"
3411
  msgstr ""
3412
 
3413
  #: integrations/classes/class-integrations-page-controller.php:44
3414
+ msgid "Integrately"
3415
+ msgstr ""
3416
+
3417
+ #: integrations/classes/class-integrations-page-controller.php:45
3418
  msgid "Google Analytics"
3419
  msgstr ""
3420
 
3473
  msgstr ""
3474
 
3475
  #: integrations/templates/widget-active-campaign-dummy.php:5
3476
+ #: integrations/templates/widget-constant-contact-dummy.php:15
3477
  msgid "API URL"
3478
  msgstr ""
3479
 
3480
  #: integrations/templates/widget-active-campaign-dummy.php:8
3481
  #: integrations/templates/widget-active-campaign-dummy.php:15
3482
  #: integrations/templates/widget-aweber-dummy.php:12
3483
+ #: integrations/templates/widget-constant-contact-dummy.php:18
3484
+ #: integrations/templates/widget-constant-contact-dummy.php:25
3485
  #: integrations/templates/widget-convertkit-dummy.php:8
3486
+ #: integrations/templates/widget-emailoctopus-dummy.php:8
3487
  #: integrations/templates/widget-google-analytics-dummy.php:8
3488
  #: integrations/templates/widget-google-geocoding-dummy.php:8
3489
  #: integrations/templates/widget-google-places-dummy.php:8
3508
  #: integrations/templates/widget-active-campaign-dummy.php:8
3509
  #: integrations/templates/widget-active-campaign-dummy.php:15
3510
  #: integrations/templates/widget-aweber-dummy.php:12
3511
+ #: integrations/templates/widget-constant-contact-dummy.php:18
3512
+ #: integrations/templates/widget-constant-contact-dummy.php:25
3513
  #: integrations/templates/widget-convertkit-dummy.php:8
3514
+ #: integrations/templates/widget-emailoctopus-dummy.php:8
3515
  #: integrations/templates/widget-google-analytics-dummy.php:8
3516
  #: integrations/templates/widget-google-geocoding-dummy.php:8
3517
  #: integrations/templates/widget-google-places-dummy.php:8
3534
  msgstr ""
3535
 
3536
  #: integrations/templates/widget-active-campaign-dummy.php:12
3537
+ #: integrations/templates/widget-constant-contact-dummy.php:22
3538
  #: integrations/templates/widget-convertkit-dummy.php:5
3539
+ #: integrations/templates/widget-emailoctopus-dummy.php:5
3540
  #: integrations/templates/widget-google-geocoding-dummy.php:5
3541
  #: integrations/templates/widget-google-places-dummy.php:5
3542
  #: integrations/templates/widget-integrately-dummy.php:5
3543
  #: integrations/templates/widget-integromat-dummy.php:5
3544
  #: integrations/templates/widget-mailchimp-dummy.php:5
3545
  #: integrations/templates/widget-mailerlite-dummy.php:5
3546
+ #: integrations/templates/widget-sendgrid-dummy.php:5
3547
  #: integrations/templates/widget-zapier-dummy.php:5
3548
  msgid "API key"
3549
  msgstr ""
3550
 
3551
  #: integrations/templates/widget-active-campaign-dummy.php:23
3552
  #: integrations/templates/widget-aweber-dummy.php:21
3553
+ #: integrations/templates/widget-constant-contact-dummy.php:33
3554
  #: integrations/templates/widget-convertkit-dummy.php:16
3555
+ #: integrations/templates/widget-emailoctopus-dummy.php:16
3556
  #: integrations/templates/widget-google-analytics-dummy.php:16
3557
  #: integrations/templates/widget-google-geocoding-dummy.php:16
3558
  #: integrations/templates/widget-google-places-dummy.php:16
3578
  msgid "Verification code"
3579
  msgstr ""
3580
 
3581
+ #: integrations/templates/widget-constant-contact-dummy.php:6
3582
+ msgid "Redirect URI"
3583
+ msgstr ""
3584
+
3585
  #: integrations/templates/widget-google-analytics-dummy.php:5
3586
  msgid "Tracking ID"
3587
  msgstr ""
3627
  msgstr ""
3628
 
3629
  #: integrations/templates/widget-sendfox-dummy.php:5
 
 
3630
  msgid "Personal access token"
3631
  msgstr ""
3632
 
3633
+ #: integrations/templates/widget-sendinblue-dummy.php:5
3634
+ msgid "API v3 key"
3635
+ msgstr ""
3636
+
3637
  #: integrations/templates/widget-stripe-dummy.php:12
3638
  msgid "Test"
3639
  msgstr ""
readme.txt CHANGED
@@ -3,9 +3,9 @@
3
  Contributors: happyforms
4
  Tags: contact form, contact form plugin, forms, form builder, custom form, intake form, registration form, survey form, quiz form, payment form, newsletter form, giveaway form, fundraising form, donation form, nomination form, order form, questionnaire form, onboarding form, contract form, estimate form, research form, qualitative form, quantitative form, membership form, mobile form, feedback form, release form, inquiry form, request form, evaluation form, RSVP form, reservation form, sales lead form, popup form, quote form, event form, booking form, application form, agreement form, safety form, compliance form, assessment form, sponsorship form, report form, file upload form, satisfaction form
5
  Requires at least: 5.0
6
- Tested up to: 6.0
7
  Requires PHP: 7.0
8
- Stable tag: 1.19.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -160,6 +160,13 @@ And so you know, we don't outsource support. You can expect plain-talkin' help f
160
 
161
  == Changelog ==
162
 
 
 
 
 
 
 
 
163
  = October 14, 2022 =
164
 
165
  Version 1.19.1 changelog:
@@ -1460,8 +1467,11 @@ Version 1.0.0 changelog:
1460
 
1461
  == Upgrade Notice ==
1462
 
 
 
 
1463
  = 1.19.1 =
1464
- Plugin directory page improvements, miscellaneous improvements and fixes.
1465
 
1466
  = 1.19.0 =
1467
  * Better display of unlabeled fields, email improvements, miscellaneous bugfixes.
3
  Contributors: happyforms
4
  Tags: contact form, contact form plugin, forms, form builder, custom form, intake form, registration form, survey form, quiz form, payment form, newsletter form, giveaway form, fundraising form, donation form, nomination form, order form, questionnaire form, onboarding form, contract form, estimate form, research form, qualitative form, quantitative form, membership form, mobile form, feedback form, release form, inquiry form, request form, evaluation form, RSVP form, reservation form, sales lead form, popup form, quote form, event form, booking form, application form, agreement form, safety form, compliance form, assessment form, sponsorship form, report form, file upload form, satisfaction form
5
  Requires at least: 5.0
6
+ Tested up to: 6.1
7
  Requires PHP: 7.0
8
+ Stable tag: 1.20.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
160
 
161
  == Changelog ==
162
 
163
+ = November 3, 2022 =
164
+
165
+ Version 1.20.0 changelog:
166
+
167
+ * Changed: Controls in Messages tab are now all visible all the time for better usability and easier form configuration.
168
+ * Fixed: Concurrent submissions of limited choices in Radio, Checkbox and Dropdown fields were leading to wrong results.
169
+
170
  = October 14, 2022 =
171
 
172
  Version 1.19.1 changelog:
1467
 
1468
  == Upgrade Notice ==
1469
 
1470
+ = 1.20.0 =
1471
+ * Messages tab usability improvements, limited choice bugfixes in Radio, Checkbox and Dropdown fields.
1472
+
1473
  = 1.19.1 =
1474
+ * Plugin directory page improvements, miscellaneous improvements and fixes.
1475
 
1476
  = 1.19.0 =
1477
  * Better display of unlabeled fields, email improvements, miscellaneous bugfixes.