PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / trunk
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More vtrunk
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / stripe / js / frmstrp.min.js

frmstrp.min.js in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More trunk, at stripe/js/frmstrp.min.js

39 lines 19.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function(){let thisForm=false;let formID=0;let event=false;let frmstripe;let running=100;let elements;let isStripeLink=false;let linkAuthenticationElementIsComplete=false;let stripeLinkElementIsComplete=false;let priceChangedTimer=0;const triggerCustomEvent=function(el,eventName,data){frmFrontForm.triggerCustomEvent(el,eventName,data)};function validateForm(e){thisForm=this;formID=jQuery(thisForm).find('input[name="form_id"]').val();if(shouldProcessForm()){e.preventDefault();event=e;processForm();
2 return}frmFrontForm.submitFormManual(e,thisForm);return false}function shouldProcessForm(){if(formID!=frm_stripe_vars.form_id)return false;if(!currentActionTypeShouldBeProcessed())return false;const ccField=jQuery(thisForm).find(".frm-card-element");if(ccField.length&&!ccField.is(":hidden"))return true;return false}function currentActionTypeShouldBeProcessed(){const action=jQuery(thisForm).find('input[name="frm_action"]').val();if("object"!==typeof window.frmProForm||"function"!==typeof window.frmProForm.currentActionTypeShouldBeProcessed)return"create"===
3 action;return window.frmProForm.currentActionTypeShouldBeProcessed(action,{thisForm})}function processForm(){const $form=jQuery(thisForm);$form.addClass("frm_js_validate");if(!validateFormSubmit($form))return;frmFrontForm.showSubmitLoading($form);const meta=addName($form);addAddressMeta(meta);if(!isStripeLink)return;stripeLinkSubmit($form.get(0),meta)}function stripeLinkSubmit(object,meta){object.classList.add("frm_trigger_event_on_submit","frm_ajax_submit");object.addEventListener("frmSubmitEvent",
4 confirmPayment);running=0;submitForm();function confirmPayment(event){if(!checkEventDataForError(event))return;window.onpageshow=function(event){if(event.persisted||window.performance&&window.performance.getEntriesByType("navigation")[0].type==="back_forward")window.location.reload()};let params={elements,confirmParams:{return_url:getReturnUrl()}};params=addBillingDetailsToParams(params,meta);const confirmFunction=isRecurring()?"confirmSetup":"confirmPayment";frmstripe[confirmFunction](params).then(handleConfirmPromise)}
5 function getReturnUrl(){const url=new URL(frm_stripe_vars.ajax);url.searchParams.append("action","frmstrplinkreturn");return url.toString()}function handleConfirmPromise(result){if(result.error)handleConfirmPaymentError(result.error)}function handleConfirmPaymentError(error){running--;enableSubmit();const fieldset=jQuery(object).find(".frm_form_field");fieldset.removeClass("frm_doing_ajax");object.classList.remove("frm_loading_form");if("card_error"===error.type||"invalid_request_error"===error.type||
6 "form_submit_error"===error.type){const cardErrors=object.querySelector(".frm-card-errors");if(cardErrors)cardErrors.textContent=error.message}}function checkEventDataForError(event){if(!event.frmData||!event.frmData.content.length||!event.frmData.content.includes('<div class="frm_error_style'))return true;const element=document.createElement("div");element.innerHTML=event.frmData.content;const error=element.querySelector(".frm_error_style");if(error){handleConfirmPaymentError({type:"form_submit_error",
7 message:error.textContent});return false}return true}}function addAddressMeta(cardObject){let addressID="";each(getStripeSettings(),function(setting){if(setting.address)addressID=setting.address});if(""===addressID)return;let prefix="";let addressContainer=document.querySelector(`#frm_field_${addressID}_container, .frm_field_${addressID}_container`);if(!addressContainer){const line1Input=document.querySelector(`input[name="item_meta[${addressID}][line1]"]`);if(line1Input){prefix=`${addressID}][`;
8 addressContainer=line1Input.parentNode}}if(!addressContainer)return;addValToRequest(addressContainer,`${prefix}line1`,cardObject,"address_line1");addValToRequest(addressContainer,`${prefix}line2`,cardObject,"address_line2");addValToRequest(addressContainer,`${prefix}city`,cardObject,"address_city");addValToRequest(addressContainer,`${prefix}state`,cardObject,"address_state");addValToRequest(addressContainer,`${prefix}zip`,cardObject,"address_zip");const countryDropdown=addressContainer.querySelector(`select[name$="[${prefix}country]"]`);
9 if(!countryDropdown)return;const countryOption=countryDropdown.querySelector(`option[value="${countryDropdown.value}"]`);if(countryOption?.getAttribute("data-code"))cardObject.address_country=countryOption.getAttribute("data-code")}function addValToRequest(container,inputName,cardObject,objectName){const input=container.querySelector(`input[name$="[${inputName}]"], select[name$="[${inputName}]"]`);if(input?.value)cardObject[objectName]=input.value}function addBillingDetailsToParams(params,meta){params.confirmParams.payment_method_data=
10 {billing_details:convertToAddressObject(meta)};return params}function convertToAddressObject(meta){const newMeta={address:{}};Object.keys(meta).forEach(function(key){if("address_zip"===key)newMeta.address.postal_code=meta[key];else if(0===key.indexOf("address_"))newMeta.address[key.replace("address_","")]=meta[key];else newMeta[key]=meta[key]});return newMeta}function isRecurring(){let isRecurring=false;each(getStripeSettings(),function(setting){if("recurring"===setting.one){isRecurring=true;return false}});
11 return isRecurring}function validateFormSubmit($form){const errors=frmFrontForm.validateFormSubmit($form);const keys=Object.keys(errors);if(1===keys.length&&errors[keys[0]]==="")keys.pop();return 0===keys.length}function addName($form){let firstNameID="";let lastNameID="";const cardObject={};const {settings}=frm_stripe_vars;const getNameFieldValue=function(field,subFieldName){if("object"!==typeof field)field=document.getElementById(`frm_field_${field}_container`);if(!field||"object"!==typeof field||
12 "function"!==typeof field.querySelector)return"";const subFieldEl=field.querySelector(`.frm_combo_inputs_container .frm_form_subfield-${subFieldName} input`);if(!subFieldEl)return"";return subFieldEl.value};for(let i=0;i<settings.length;i++){firstNameID=settings[i].first_name;lastNameID=settings[i].last_name}function getNameFieldItem(fieldID,type,$form=null){const queryForNameFieldIsFound="object"===typeof window.frmProForm&&"function"===typeof window.frmProForm.queryForNameField;if(type==="container")return queryForNameFieldIsFound?
13 window.frmProForm.queryForNameField(fieldID,"container"):document.querySelector(`#frm_field_${fieldID}_container, .frm_field_${fieldID}_container`);return queryForNameFieldIsFound?window.frmProForm.queryForNameField(fieldID,"field",$form[0]):$form[0].querySelector(`#frm_field_${fieldID}_container input, input[name="item_meta[${fieldID}]"], .frm_field_${fieldID}_container input`)}if(firstNameID!==""){const firstFieldContainer=getNameFieldItem(firstNameID,"container");if(firstFieldContainer?.querySelector(".frm_combo_inputs_container"))cardObject.name=
14 getNameFieldValue(firstFieldContainer,"first");else{const firstField=getNameFieldItem(firstNameID,"field",$form);if(firstField?.value)cardObject.name=firstField.value}}if(lastNameID!==""){const lastFieldContainer=getNameFieldItem(lastNameID,"container");if(lastFieldContainer?.querySelector(".frm_combo_inputs_container"))cardObject.name=`${cardObject.name} ${getNameFieldValue(lastFieldContainer,"last")}`;else{const lastField=getNameFieldItem(lastNameID,"field",$form);if(lastField?.value)cardObject.name=
15 `${cardObject.name} ${lastField.value}`}}return cardObject}function submitForm(){if(running>0)return;frmFrontForm.submitFormManual(event,thisForm)}function enableSubmit(){if(running>0)return;thisForm.classList.add("frm_loading_form");frmFrontForm.removeSubmitLoading(jQuery(thisForm),"enable",0);triggerCustomEvent(document,"frmStripeLiteEnableSubmit",{form:thisForm})}function getPriceFields(){const priceFields=[];function checkStripeSettingForPriceFields(setting){if(-1!==setting.fields)each(setting.fields,
16 addFieldDataToPriceFieldsArray)}function addFieldDataToPriceFieldsArray(field){if(isNaN(field))priceFields.push(`field_${field}`);else priceFields.push(field)}each(getStripeSettings(),checkStripeSettingForPriceFields);return priceFields}function getStripeSettings(){const stripeSettings=[];each(frm_stripe_vars.settings,function(setting){if(setting.gateways.includes("stripe"))stripeSettings.push(setting)});return stripeSettings}function priceChanged(_,field,fieldId){const price=getPriceFields();let run=
17 price.includes(fieldId)||price.includes(field.id);if(!run)for(let i=0;i<price.length;i++)if(field.id.indexOf(price[i])===0)run=true;if(run){clearTimeout(priceChangedTimer);priceChangedTimer=setTimeout(updateIntentAmount(field),600)}}function updateIntentAmount(field){return function(){const form=jQuery(field).closest("form");const formId=form.find('[name="form_id"]').val();if(!form.find(`[name^="frmintent${formId}"]`).length)return;const data={action:"frm_strp_amount",form:JSON.stringify(form.serializeArray()),
18 nonce:frm_stripe_vars.nonce};postAjax(data,function(){})}}function postAjax(data,success){const xmlHttp=new XMLHttpRequest;const params=typeof data==="string"?data:Object.keys(data).map(function(k){return`${encodeURIComponent(k)}=${encodeURIComponent(data[k])}`}).join("&");xmlHttp.open("post",frm_stripe_vars.ajax,true);xmlHttp.onreadystatechange=function(){let response;if(xmlHttp.readyState>3&&xmlHttp.status==200){response=xmlHttp.responseText;if(response!=="")try{response=JSON.parse(response)}catch(error){response=
19 ""}success(response)}};xmlHttp.setRequestHeader("X-Requested-With","XMLHttpRequest");xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");xmlHttp.send(params);return xmlHttp}function loadElements(){if(document.getElementsByClassName("frm-card-element").length)maybeLoadStripeLink()}function maybeLoadStripeLink(){const stripeLinkForm=document.querySelector("form.frm_stripe_link_form");if(!stripeLinkForm)return false;const formId=parseInt(stripeLinkForm.querySelector('input[name="form_id"]').value);
20 const intentField=stripeLinkForm.querySelector(`input[name="frmintent${formId}[]"]`);if(!intentField)return false;disableSubmit(stripeLinkForm);loadStripeLinkElements(intentField.value);triggerCustomEvent(document,"frmStripeLiteLoad",{form:stripeLinkForm});return true}function disableSubmit(form){jQuery(form).find('input[type="submit"],input[type="button"],button[type="submit"]').not(".frm_prev_page").attr("disabled","disabled");triggerCustomEvent(document,"frmStripeLiteDisableSubmit",{form})}function loadStripeLinkElements(clientSecret){const cardElement=
21 document.querySelector(".frm-card-element");if(!cardElement)return;const appearance={theme:"stripe",variables:{fontSizeBase:frm_stripe_vars.baseFontSize,colorText:maybeAdjustColorForStripe(frm_stripe_vars.appearanceRules[".Input"].color),colorBackground:maybeAdjustColorForStripe(frm_stripe_vars.appearanceRules[".Input"].backgroundColor),fontSmooth:"auto"},rules:frm_stripe_vars.appearanceRules};elements=frmstripe.elements({clientSecret,appearance});isStripeLink=true;insertAuthenticationElement(cardElement);
22 insertPaymentElement(cardElement);triggerCustomEvent(document,"frmStripeLiteLoadElements",{cardElement})}function maybeAdjustColorForStripe(color){if(0!==color.indexOf("rgba"))return color;const rgba=color.replace(/^rgba?\(|\s+|\)$/g,"").split(",");return`#${((1<<24)+(parseInt(rgba[0],10)<<16)+(parseInt(rgba[1],10)<<8)+parseInt(rgba[2],10)).toString(16).slice(1)}`}function insertAuthenticationElement(cardElement){let emailInput;let addAboveCardElement=true;const emailField=checkForEmailField();const authenticationMountTarget=
23 createMountTarget("frm-link-authentication-element");if(false!==emailField)if("hidden"===emailField.getAttribute("type"))emailInput=emailField;else{addAboveCardElement=false;emailInput=emailField.querySelector("input");replaceEmailField(emailField,emailInput,authenticationMountTarget)}if(addAboveCardElement){const cardFieldContainer=cardElement.closest(".frm_form_field");cardFieldContainer.parentNode.insertBefore(authenticationMountTarget,cardFieldContainer);triggerCustomEvent(document,"frmStripeLiteAddAuthElementAboveCardElement",
24 {cardElement,cardFieldContainer,authenticationMountTarget})}const defaultEmailValue=false!==emailField?getSettingFieldValue(emailField):"";const authenticationElement=elements.create("linkAuthentication",{defaultValues:{email:defaultEmailValue}});authenticationElement.mount(".frm-link-authentication-element");authenticationElement.on("change",getAuthenticationChangeHandler(cardElement,emailInput));authenticationElement.on("ready",function(){authenticationMountTarget.style.position="relative";const requiredIndicator=
25 document.createElement("span");requiredIndicator.textContent="*";requiredIndicator.className="frm_required";requiredIndicator.style.position="absolute";requiredIndicator.style.fontSize="var(--font-size)";requiredIndicator.style.top="-4px";requiredIndicator.style.left=`${getEmailAsteriskOffset(cardElement)}px`;requiredIndicator.style.padding="var(--label-padding)";requiredIndicator.setAttribute("aria-hidden","true");authenticationMountTarget.append(requiredIndicator)})}function getEmailAsteriskOffset(cardElement){const label=
26 document.createElement("label");label.classList.add("frm_primary_label","form-label");label.textContent="Email";label.innerHTML+="&nbsp;";const tempContainer=document.createElement("div");tempContainer.classList.add("with_frm_style");tempContainer.style.position="absolute";tempContainer.style.visibility="hidden";tempContainer.style.height="0";tempContainer.style.overflow="hidden";const formContainer=cardElement.closest(".with_frm_style");if(formContainer)each(formContainer.classList,function(className){if(className.startsWith("frm_style_")){tempContainer.classList.add(className);
27 return false}});tempContainer.append(label);document.body.append(tempContainer);const labelWidth=label.getBoundingClientRect().width;tempContainer.remove();return labelWidth}function getAuthenticationChangeHandler(cardElement,emailInput){function syncEmailInput(emailValue){if("string"===typeof emailValue&&emailValue.length)emailInput.value=emailValue}return function(event){linkAuthenticationElementIsComplete=event.complete;if(linkAuthenticationElementIsComplete&&emailInput!==undefined)syncEmailInput(event.value.email);
28 const form=cardElement.closest("form");if("object"===typeof window.frmChatForm&&"function"===typeof frmChatForm.maybeHandleAuthenticationChange&&frmChatForm.maybeHandleAuthenticationChange(form,event.complete))return;if(readyToSubmitStripeLink(form)){thisForm=form;running=0;enableSubmit()}else disableSubmit(form)}}function replaceEmailField(emailField,emailInput,authenticationMountTarget){emailInput.before(authenticationMountTarget);emailInput.type="hidden";const emailLabel=emailField.querySelector(".frm_primary_label");
29 if(emailLabel)emailLabel.style.display="none"}function getLayout(){const settings=getStripeSettings()[0];return settings.hasOwnProperty("layout")&&settings.layout||"tabs"}function insertPaymentElement(cardElement){cardElement.parentNode.insertBefore(createMountTarget("frm-payment-element"),cardElement);const paymentElement=elements.create("payment",{layout:{type:getLayout()},defaultValues:{billingDetails:{name:getFullNameValueDefault(),phone:""}}});paymentElement.mount(".frm-payment-element");paymentElement.on("change",
30 handlePaymentElementChange);function handlePaymentElementChange(event){stripeLinkElementIsComplete=event.complete;toggleButtonsOnPaymentElementChange(cardElement);triggerCustomEvent(document,"frmStripeLitePaymentElementChange",{complete:event.complete})}}function toggleButtonsOnPaymentElementChange(cardElement){const form=cardElement.closest(".frm-show-form");if("object"===typeof window.frmChatForm&&"function"===typeof frmChatForm.maybeHandlePaymentChange&&frmChatForm.maybeHandlePaymentChange(form,
31 stripeLinkElementIsComplete))return;if(readyToSubmitStripeLink(form)){thisForm=form;running=0;enableSubmit()}else disableSubmit(form)}function readyToSubmitStripeLink(form){if(!linkAuthenticationElementIsComplete||!stripeLinkElementIsComplete)return false;if("object"!==typeof window.frmProForm||"function"!==typeof window.frmProForm.submitButtonIsConditionallyDisabled)return true;return!window.frmProForm.submitButtonIsConditionallyDisabled(form)}function getFullNameValueDefault(){const nameValues=
32 [];const firstNameField=checkForStripeSettingField("first_name");if(false!==firstNameField)nameValues.push(getSettingFieldValue(firstNameField));const lastNameField=checkForStripeSettingField("last_name");if(false!==lastNameField)nameValues.push(getSettingFieldValue(lastNameField));return nameValues.join(" ")}function getSettingFieldValue(field){return"hidden"===field.getAttribute("type")?field.value:field.querySelector("input").value}function checkForEmailField(){return checkForStripeSettingField("email")}
33 function checkForStripeSettingField(settingKey){let settingField=false;each(getStripeSettings(),checkStripeSettingForField);function checkStripeSettingForField(currentSetting){if("string"!==typeof currentSetting[settingKey]||!currentSetting[settingKey].length)return;const currentSettingValue=currentSetting[settingKey];const settingIsWrappedAsShortcode="["===currentSettingValue[0]&&"]"===currentSettingValue[currentSettingValue.length-1];let currentFieldId;let fieldMatchByKey;if(settingIsWrappedAsShortcode){currentFieldId=
34 currentSettingValue.substr(1,currentSettingValue.length-2);if(isNaN(currentFieldId))fieldMatchByKey=document.getElementById(`field_${currentFieldId}`)}else currentFieldId=currentSettingValue;const fieldContainer=fieldMatchByKey?fieldMatchByKey.closest(".frm_form_field"):document.getElementById(`frm_field_${currentFieldId}_container`);if(!fieldContainer){let hiddenInput=document.querySelector(`input[name="item_meta[${currentFieldId}]"]`);if(!hiddenInput)if("first_name"===settingKey)hiddenInput=document.querySelector(`input[name="item_meta[${currentFieldId}][first]"]`);
35 else if("last_name"===settingKey)hiddenInput=document.querySelector(`input[name="item_meta[${currentFieldId}][last]"]`);if(hiddenInput){settingField=hiddenInput;return false}return}settingField=fieldContainer;return false}return settingField}function onPageChange(){loadElements();runConditionalLogicOnPaymentFailure()}function runConditionalLogicOnPaymentFailure(){if(!document.querySelector(".frm_error_style"))return;if("undefined"===typeof __frmHideOrShowFields||"object"!==typeof window.frmProForm)return;
36 window.frmProForm.hideOrShowFields(__frmHideOrShowFields,"pageLoad")}function createMountTarget(className){const newElement=document.createElement("div");newElement.className=`${className} frm_form_field form-field`;return newElement}function each(items,callback){const {length}=items;for(let index=0;index<length;index++)if(false===callback(items[index],index))break}function checkPriceFieldsOnLoad(){each(getPriceFields(),function(fieldId){const fieldContainer=document.getElementById(`frm_field_${fieldId}_container`);
37 if(!fieldContainer)return;const input=fieldContainer.querySelector("input[name^=item_meta]");if(input&&""!==input.value)priceChanged(null,input,fieldId)})}jQuery(document).ready(function(){const stripeParams={locale:frm_stripe_vars.locale,stripeAccount:frm_stripe_vars.account_id};frmstripe=Stripe(frm_stripe_vars.publishable_key,stripeParams);loadElements();jQuery(document).on("frmPageChanged",onPageChange);jQuery(document).off("submit.formidable",".frm-show-form");jQuery(document).on("submit.frmstrp",
38 ".frm-show-form",validateForm);jQuery(document).on("frmFieldChanged",priceChanged);checkPriceFieldsOnLoad()});window.frmStripeLiteForm={readyToSubmitStripeLink,processForm(_,e,form){event=e;thisForm=form;processForm()}}})();
39