@rtstic.dev/pulse 0.0.39 → 0.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/form/book-a-demo.js +2 -2
- package/dist/form/styles.css +1 -1
- package/package.json +1 -1
package/dist/form/book-a-demo.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(()=>{var
|
|
2
|
-
e.g. <script src="https://cdn.jsdelivr.net/npm/intl-tel-input@25/build/js/intlTelInput.min.js"><\/script>`);return}document.querySelectorAll('[pulse-form-block="phone"] input[type="tel"]').forEach(r=>{try{let n=e(r,{initialCountry:"us",separateDialCode:!0,strictMode:!1,loadUtils:()=>import("https://cdn.jsdelivr.net/npm/intl-tel-input@25/build/js/utils.js")});_.set(r,n),H(n),r.addEventListener("countrychange",()=>{H(n)}),console.log(`[PulseForm] intl-tel-input initialized for "${r.closest("[pulse-form-block]")?.getAttribute("pulse-field-name")||"unknown"}"`)}catch(n){console.warn("[PulseForm] Failed to init intl-tel-input:",n)}})}var G={0:l.INVALID_PHONE,1:l.PHONE_INVALID_COUNTRY,2:l.PHONE_TOO_SHORT,3:l.PHONE_TOO_LONG,4:l.INVALID_PHONE};function j(e){return e?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?null:{code:l.INVALID_EMAIL,message:d[l.INVALID_EMAIL]}:null}function z(e){let t=e.value.trim();if(!t)return null;let r=_.get(e);if(r)try{if(r.isValidNumber())return null;let o=r.getValidationError?.()??0,s=G[o]||l.INVALID_PHONE;return{code:s,message:d[s]}}catch{return{code:l.INVALID_PHONE,message:d[l.INVALID_PHONE]}}let n=t.replace(/\D/g,"");return n.length<7?{code:l.PHONE_TOO_SHORT,message:d[l.PHONE_TOO_SHORT]}:n.length>15?{code:l.PHONE_TOO_LONG,message:d[l.PHONE_TOO_LONG]}:null}function X(e){let t=e.querySelector("input, textarea");return t?t.value.trim():null}function W(e){let t=e.querySelector('input[type="email"]');return t?t.value.trim():null}function J(e){let t=e.querySelector('input[type="tel"]');return t?t.value.trim():null}function K(e){let t=e.querySelectorAll('input[type="checkbox"]'),r=[];return t.forEach(n=>{if(n.checked){let o=n.getAttribute("data-name")?.trim();r.push(o||n.value||"on")}}),r}function Z(e){let t=e.querySelectorAll('input[type="radio"]');for(let r of t)if(r.checked)return r.closest("label")?.textContent?.trim()||r.value||"on";return null}function ee(e){let t=e.querySelector("select");if(!t)return null;let r=t.value.trim();return!r||t.selectedIndex===0?null:r}function te(e){let t=e.querySelector('input[type="checkbox"]');return t?t.checked:!1}function M(e,t){switch(e){case"text":return X(t);case"email":return W(t);case"phone":return J(t);case"checkbox":return K(t);case"radio":return Z(t);case"select":return ee(t);case"legal":return te(t);default:return null}}function S(e){let t=e.getAttribute("required-selection")?.trim().toLowerCase();return!t||!$.includes(t)?null:t}function ne(e){return e.getAttribute("mirror-value")?.trim().toLowerCase()==="true"}function v(e,t,r,n){if(t)switch(t){case"true":{if(e==="legal"&&r!==!0)return{code:l.REQUIRED_LEGAL,message:d[l.REQUIRED_LEGAL]};if(e==="select"&&!r)return{code:l.REQUIRED_SELECT,message:d[l.REQUIRED_SELECT]};if((e==="text"||e==="email"||e==="phone")&&(!r||typeof r=="string"&&r===""))return{code:l.REQUIRED_INPUT,message:d[l.REQUIRED_INPUT]};break}case"atleast-one":{if(Array.isArray(r)?r.length===0:!r)return{code:l.ATLEAST_ONE,message:d[l.ATLEAST_ONE]};break}case"only-one":{if(Array.isArray(r)){if(r.length===0)return{code:l.ONLY_ONE_NONE,message:d[l.ONLY_ONE_NONE]};if(r.length>1)return{code:l.ONLY_ONE_EXCEEDED,message:d[l.ONLY_ONE_EXCEEDED]}}else if(!r)return{code:l.ONLY_ONE_NONE,message:d[l.ONLY_ONE_NONE]};break}}if(e==="email"&&typeof r=="string"&&r){let o=j(r);if(o)return o}if(e==="phone"&&typeof r=="string"&&r){let o=n.querySelector('input[type="tel"]');if(o){let s=z(o);if(s)return s}}return null}function I(e){let t=document.querySelectorAll("[pulse-form-block]"),r=[];return t.forEach(n=>{let o=n.getAttribute("pulse-form-block")?.trim().toLowerCase();if(!o||!P.includes(o))return;let s=o,u=n.getAttribute("pulse-field-name")?.trim();if(!u)return;let a=S(n),c=ne(n),f=M(s,n),m=e?v(s,a,f,n):null;r.push({"form-block":s,"field-name":u,value:f,required:a,"mirror-value":c,error:m})}),r}function k(){document.querySelectorAll(`.${g}`).forEach(e=>e.remove()),document.querySelectorAll("[pulse-form-block]").forEach(e=>e.classList.remove("has-error"))}function re(e){let t=e.querySelector(`.${g}`);t&&t.remove(),e.classList.remove("has-error")}function w(e,t){let r=e.querySelector(`.${g}`);r&&r.remove();let n=document.createElement("span");n.className=g,n.textContent=t.message,n.setAttribute("data-error-code",t.code),n.setAttribute("data-field-name",e.getAttribute("pulse-field-name")?.trim()||""),e.classList.add("has-error"),e.appendChild(n)}function oe(e){k(),document.querySelectorAll("[pulse-form-block]").forEach(r=>{let n=r.getAttribute("pulse-field-name")?.trim();if(!n)return;let o=e.find(s=>s["field-name"]===n);!o||!o.error||w(r,o.error)})}function le(){let e=document.querySelector("[pulse-form-block].has-error");if(!e)return;e.scrollIntoView({behavior:"smooth",block:"center"});let t=e.querySelector("input, textarea, select");t&&setTimeout(()=>t.focus(),400)}function p(){let e=i.filter(r=>r["mirror-value"]===!0);if(e.length===0)return;let t=document.querySelectorAll("[pulse-form-block-mirror]");e.forEach(r=>{let n=r["field-name"],o=!1;t.forEach(s=>{if(s.getAttribute("pulse-form-block-mirror")?.trim()!==n)return;o=!0;let a=s.querySelector("input, textarea, select");if(!a){console.warn(`[PulseForm] Mirror target for "${n}" found, but no input element inside it.`);return}let c=r.value;typeof c=="string"?a.value=c:typeof c=="boolean"?a instanceof HTMLInputElement&&a.type==="checkbox"?a.checked=c:a.value=String(c):Array.isArray(c)?a.value=c.join(", "):a.value=""}),o||console.warn(`[PulseForm] No mirror target found for field "${n}". Add an element with attribute pulse-form-block-mirror="${n}" to mirror this value.`)})}function ie(){let e=document.querySelector("[hs-calender-block]");if(!e){console.warn("[PulseForm] No element with attribute 'hs-calender-block' found.");return}let r=i.find(u=>u["field-name"]==="flow-type")?.value,n;if(r==="Pulse demo")n=N.find(u=>u.type==="pulse");else if(r==="White Glove services"){let a=i.find(c=>c["field-name"]==="industry")?.value;typeof a=="string"&&a&&(n=N.find(c=>c.type==="industry"&&c.name.toLowerCase()===a.toLowerCase()))}if(n||(n=N.find(u=>u.type==="industry"&&u.name==="Other")),!n){console.warn("[PulseForm] No matching calendar entry found.");return}e.innerHTML="";let o=document.createElement("div");o.className="meetings-iframe-container",o.setAttribute("data-src",n["embed-url"]),e.appendChild(o);let s=document.createElement("script");s.type="text/javascript",s.src="https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js",e.appendChild(s),console.log(`[PulseForm] Loaded calendar: ${n["calender-name"]} (${n.name})`)}function h(){let e=i.find(n=>n["field-name"]==="flow-type");if(!e)return;let t=e.value;document.querySelectorAll("[form-flow]").forEach(n=>{n.getAttribute("form-flow")?.trim()===t?n.setAttribute("form-flow-active","true"):n.setAttribute("form-flow-active","false")})}function y(){let e=i.find(o=>o["field-name"]==="flow-type");if(!e)return;let t=e.value,r=i.findIndex(o=>o["field-name"]==="industry"),n=i.findIndex(o=>o["field-name"]==="what-are-you-looking-for");r!==-1&&(i[r]={...i[r],required:null}),n!==-1&&(i[n]={...i[n],required:null}),t==="White Glove services"&&r!==-1?i[r]={...i[r],required:"true"}:t==="Pulse demo"&&n!==-1&&(i[n]={...i[n],required:"atleast-one"}),window.PulseFormData=i}var i=[];function O(e,t,r){let n=i.findIndex(o=>o["field-name"]===e);n!==-1&&(i[n]={...i[n],value:t,error:r},window.PulseFormData=i,y(),p(),h())}function se(e){let t=e.getAttribute("pulse-form-block")?.trim().toLowerCase(),r=e.getAttribute("pulse-field-name")?.trim();if(!r)return;let n=S(e),o=M(t,e);if(e.classList.contains("has-error")){let u=v(t,n,o,e);u?(w(e,u),O(r,o,u)):(re(e),O(r,o,null))}else O(r,o,null)}function ue(){document.querySelectorAll("[pulse-form-block]").forEach(t=>{let r=t.getAttribute("pulse-form-block")?.trim().toLowerCase();if(!r||!P.includes(r))return;let n=()=>se(t);switch(r){case"text":case"email":{let o=t.querySelector("input, textarea");o&&(o.addEventListener("input",n),o.addEventListener("change",n));break}case"phone":{let o=t.querySelector('input[type="tel"]');o&&(o.addEventListener("input",n),o.addEventListener("change",n),o.addEventListener("keyup",n),o.addEventListener("countrychange",n));break}case"checkbox":case"legal":{t.querySelectorAll('input[type="checkbox"]').forEach(o=>o.addEventListener("change",n));break}case"radio":{t.querySelectorAll('input[type="radio"]').forEach(o=>o.addEventListener("change",n));break}case"select":{let o=t.querySelector("select");o&&o.addEventListener("change",n);break}}})}var F={get fields(){return i},refresh(){return i=I(!1),window.PulseFormData=i,y(),p(),h(),i},validate(){i=I(!0),window.PulseFormData=i,y();let t=document.querySelectorAll("[pulse-form-block]");i.forEach((n,o)=>{let s=Array.from(t).find(a=>a.getAttribute("pulse-field-name")?.trim()===n["field-name"]);if(!s)return;let u=v(n["form-block"],n.required,n.value,s);i[o]={...i[o],error:u}}),window.PulseFormData=i;let r=i.every(n=>n.error===null);return p(),h(),oe(i),r||le(),{fields:i,isValid:r}},clearErrors(){k(),i=i.map(e=>({...e,error:null})),window.PulseFormData=i,y(),p(),h()},ERROR_CODES:l,ERROR_MESSAGES:d};document.addEventListener("DOMContentLoaded",()=>{let e=document.querySelectorAll("[pulse-form-block]").length;console.log(`[PulseForm] Initialized \u2014 found ${e} form blocks.`),Q(),i=I(!1),window.PulseFormData=i,y(),p(),h(),ue();let t=document.getElementById("trigger-webflow-form-submit");t&&t.addEventListener("click",r=>{r.preventDefault();let{isValid:n}=F.validate();if(!n)return;let o=t.textContent;t.textContent="Submitting...",ie();let s=document.getElementById("webflow-form-submit");s?s.click():console.warn('[PulseForm] Button with id "webflow-form-submit" not found.');let u=document.getElementById("hubspot-form-submit");u?u.click():console.warn('[PulseForm] Button with id "hubspot-form-submit" not found.'),setTimeout(()=>{document.getElementById("form-anchor")?.scrollIntoView({behavior:"smooth",block:"start"})},700)}),window.PulseForm=F});function ae(){let e=["Jordan","Morgan","Riley","Avery","Quinn","Casey","Blake","Harper","Sage","Rowan"],t=["Nakamura","Lindqvist","Okafor","Brennan","Castellano","Pham","Eriksen","Moreira","Ashworth","Dubois"],r=["inbox.co","mailbox.org","zipmail.net","postly.io","demobox.dev"],n=m=>m[Math.floor(Math.random()*m.length)],o=()=>Math.random().toString(36).substring(2,8),s=n(e),u=n(t),a=`${s.toLowerCase()}.${o()}@${n(r)}`,c=`${2e9+Math.floor(Math.random()*8e9)}`,f={"first-name":s,"last-name":u,email:a,phone:c,"anything-else":"Ignore this is a test form submission"};Object.entries(f).forEach(([m,T])=>{let L=document.querySelector(`[pulse-field-name="${m}"]`);if(!L)return;if(m==="phone"){let E=L.querySelector('input[type="tel"]');if(!E)return;let A=_.get(E);A?A.setNumber(`+1${T}`):E.value=T,E.dispatchEvent(new Event("input",{bubbles:!0})),E.dispatchEvent(new Event("change",{bubbles:!0})),E.dispatchEvent(new Event("keyup",{bubbles:!0}));return}let b=m==="anything-else"?L.querySelector("textarea"):L.querySelector("input");b&&(b.value=T,b.dispatchEvent(new Event("input",{bubbles:!0})),b.dispatchEvent(new Event("change",{bubbles:!0})))}),console.log("[PulseForm][DEV] Auto-filled:",f)}setTimeout(ae,500);})();
|
|
1
|
+
"use strict";(()=>{var P=Object.create;var T=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var D=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var C=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of S(t))!w.call(e,o)&&o!==r&&T(e,o,{get:()=>t[o],enumerable:!(n=M(t,o))||n.enumerable});return e};var x=(e,t,r)=>(r=e!=null?P(k(e)):{},C(t||!e||!e.__esModule?T(r,"default",{value:e,enumerable:!0}):r,e));console.log("Book a demo form script loaded");var _=["text","email","phone","checkbox","radio","select","legal"],h=[{type:"pulse",name:"pulse","calender-name":"david","embed-url":"https://meetings.hubspot.com/valeria-angelini/pulse-valeria-and-alessandra?embed=true"},{type:"industry",name:"Financial Services","calender-name":"david","embed-url":"https://meetings.hubspot.com/david-zarate2?embed=true"},{type:"industry",name:"Sports","calender-name":"steven","embed-url":"https://meetings.hubspot.com/steven-campos?embed=true"},{type:"industry",name:"Beauty","calender-name":"albany","embed-url":"https://meetings.hubspot.com/david-zarate2?embed=true"},{type:"industry",name:"Music","calender-name":"steven","embed-url":"https://meetings.hubspot.com/steven-campos?embed=true"},{type:"industry",name:"Customer Packaged Goods","calender-name":"david","embed-url":"https://meetings.hubspot.com/david-zarate2?embed=true"},{type:"industry",name:"Other","calender-name":"david","embed-url":"https://meetings.hubspot.com/david-zarate2?embed=true"}],q=["true","atleast-one","only-one"],l={REQUIRED_INPUT:"ERR_REQUIRED",REQUIRED_LEGAL:"ERR_LEGAL_REQUIRED",REQUIRED_SELECT:"ERR_SELECT_REQUIRED",ATLEAST_ONE:"ERR_ATLEAST_ONE",ONLY_ONE_NONE:"ERR_ONLY_ONE_NONE",ONLY_ONE_EXCEEDED:"ERR_ONLY_ONE_EXCEEDED",INVALID_EMAIL:"ERR_INVALID_EMAIL",INVALID_PHONE:"ERR_INVALID_PHONE",PHONE_TOO_SHORT:"ERR_PHONE_TOO_SHORT",PHONE_TOO_LONG:"ERR_PHONE_TOO_LONG",PHONE_INVALID_COUNTRY:"ERR_PHONE_INVALID_COUNTRY"},d={[l.REQUIRED_INPUT]:"This field is required.",[l.REQUIRED_LEGAL]:"You must accept this to continue.",[l.REQUIRED_SELECT]:"Please select an option.",[l.ATLEAST_ONE]:"Please select at least one option.",[l.ONLY_ONE_NONE]:"Please select one option.",[l.ONLY_ONE_EXCEEDED]:"Only one option can be selected.",[l.INVALID_EMAIL]:"Please enter a valid email address.",[l.INVALID_PHONE]:"Please enter a valid phone number.",[l.PHONE_TOO_SHORT]:"Phone number is too short.",[l.PHONE_TOO_LONG]:"Phone number is too long.",[l.PHONE_INVALID_COUNTRY]:"Invalid country code."},p="pulse-form-error",I=new Map;function N(e){try{let t=e.getSelectedCountryData?.();if(!t?.dialCode)return;document.querySelectorAll('input[pulse-form-field="country-code"]').forEach(n=>{n.value=`+${t.dialCode}`})}catch(t){console.warn("[PulseForm] Error filling country code:",t)}}function V(){let e=window.intlTelInput;if(!e){console.warn(`[PulseForm] intlTelInput not found on window. Make sure you include the intl-tel-input script before this script.
|
|
2
|
+
e.g. <script src="https://cdn.jsdelivr.net/npm/intl-tel-input@25/build/js/intlTelInput.min.js"><\/script>`);return}document.querySelectorAll('[pulse-form-block="phone"] input[type="tel"]').forEach(r=>{try{let n=e(r,{initialCountry:"us",separateDialCode:!0,strictMode:!1,loadUtils:()=>import("https://cdn.jsdelivr.net/npm/intl-tel-input@25/build/js/utils.js")});I.set(r,n),N(n),r.addEventListener("countrychange",()=>{N(n)}),console.log(`[PulseForm] intl-tel-input initialized for "${r.closest("[pulse-form-block]")?.getAttribute("pulse-field-name")||"unknown"}"`)}catch(n){console.warn("[PulseForm] Failed to init intl-tel-input:",n)}})}var U={0:l.INVALID_PHONE,1:l.PHONE_INVALID_COUNTRY,2:l.PHONE_TOO_SHORT,3:l.PHONE_TOO_LONG,4:l.INVALID_PHONE};function B(e){return e?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?null:{code:l.INVALID_EMAIL,message:d[l.INVALID_EMAIL]}:null}function Y(e){let t=e.value.trim();if(!t)return null;let r=I.get(e);if(r)try{if(r.isValidNumber())return null;let o=r.getValidationError?.()??0,s=U[o]||l.INVALID_PHONE;return{code:s,message:d[s]}}catch{return{code:l.INVALID_PHONE,message:d[l.INVALID_PHONE]}}let n=t.replace(/\D/g,"");return n.length<7?{code:l.PHONE_TOO_SHORT,message:d[l.PHONE_TOO_SHORT]}:n.length>15?{code:l.PHONE_TOO_LONG,message:d[l.PHONE_TOO_LONG]}:null}function $(e){let t=e.querySelector("input, textarea");return t?t.value.trim():null}function Q(e){let t=e.querySelector('input[type="email"]');return t?t.value.trim():null}function G(e){let t=e.querySelector('input[type="tel"]');return t?t.value.trim():null}function j(e){let t=e.querySelectorAll('input[type="checkbox"]'),r=[];return t.forEach(n=>{if(n.checked){let o=n.getAttribute("data-name")?.trim();r.push(o||n.value||"on")}}),r}function z(e){let t=e.querySelectorAll('input[type="radio"]');for(let r of t)if(r.checked)return r.closest("label")?.textContent?.trim()||r.value||"on";return null}function X(e){let t=e.querySelector("select");if(!t)return null;let r=t.value.trim();return!r||t.selectedIndex===0?null:r}function W(e){let t=e.querySelector('input[type="checkbox"]');return t?t.checked:!1}function v(e,t){switch(e){case"text":return $(t);case"email":return Q(t);case"phone":return G(t);case"checkbox":return j(t);case"radio":return z(t);case"select":return X(t);case"legal":return W(t);default:return null}}function A(e){let t=e.getAttribute("required-selection")?.trim().toLowerCase();return!t||!q.includes(t)?null:t}function J(e){return e.getAttribute("mirror-value")?.trim().toLowerCase()==="true"}function b(e,t,r,n){if(t)switch(t){case"true":{if(e==="legal"&&r!==!0)return{code:l.REQUIRED_LEGAL,message:d[l.REQUIRED_LEGAL]};if(e==="select"&&!r)return{code:l.REQUIRED_SELECT,message:d[l.REQUIRED_SELECT]};if((e==="text"||e==="email"||e==="phone")&&(!r||typeof r=="string"&&r===""))return{code:l.REQUIRED_INPUT,message:d[l.REQUIRED_INPUT]};break}case"atleast-one":{if(Array.isArray(r)?r.length===0:!r)return{code:l.ATLEAST_ONE,message:d[l.ATLEAST_ONE]};break}case"only-one":{if(Array.isArray(r)){if(r.length===0)return{code:l.ONLY_ONE_NONE,message:d[l.ONLY_ONE_NONE]};if(r.length>1)return{code:l.ONLY_ONE_EXCEEDED,message:d[l.ONLY_ONE_EXCEEDED]}}else if(!r)return{code:l.ONLY_ONE_NONE,message:d[l.ONLY_ONE_NONE]};break}}if(e==="email"&&typeof r=="string"&&r){let o=B(r);if(o)return o}if(e==="phone"&&typeof r=="string"&&r){let o=n.querySelector('input[type="tel"]');if(o){let s=Y(o);if(s)return s}}return null}function y(e){let t=document.querySelectorAll("[pulse-form-block]"),r=[];return t.forEach(n=>{let o=n.getAttribute("pulse-form-block")?.trim().toLowerCase();if(!o||!_.includes(o))return;let s=o,u=n.getAttribute("pulse-field-name")?.trim();if(!u)return;let a=A(n),c=J(n),g=v(s,n),F=e?b(s,a,g,n):null;r.push({"form-block":s,"field-name":u,value:g,required:a,"mirror-value":c,error:F})}),r}function R(){document.querySelectorAll(`.${p}`).forEach(e=>e.remove()),document.querySelectorAll("[pulse-form-block]").forEach(e=>e.classList.remove("has-error"))}function K(e){let t=e.querySelector(`.${p}`);t&&t.remove(),e.classList.remove("has-error")}function H(e,t){let r=e.querySelector(`.${p}`);r&&r.remove();let n=document.createElement("span");n.className=p,n.textContent=t.message,n.setAttribute("data-error-code",t.code),n.setAttribute("data-field-name",e.getAttribute("pulse-field-name")?.trim()||""),e.classList.add("has-error"),e.appendChild(n)}function Z(e){R(),document.querySelectorAll("[pulse-form-block]").forEach(r=>{let n=r.getAttribute("pulse-field-name")?.trim();if(!n)return;let o=e.find(s=>s["field-name"]===n);!o||!o.error||H(r,o.error)})}function ee(){let e=document.querySelector("[pulse-form-block].has-error");if(!e)return;e.scrollIntoView({behavior:"smooth",block:"center"});let t=e.querySelector("input, textarea, select");t&&setTimeout(()=>t.focus(),400)}function m(){let e=i.filter(r=>r["mirror-value"]===!0);if(e.length===0)return;let t=document.querySelectorAll("[pulse-form-block-mirror]");e.forEach(r=>{let n=r["field-name"],o=!1;t.forEach(s=>{if(s.getAttribute("pulse-form-block-mirror")?.trim()!==n)return;o=!0;let a=s.querySelector("input, textarea, select");if(!a){console.warn(`[PulseForm] Mirror target for "${n}" found, but no input element inside it.`);return}let c=r.value;typeof c=="string"?a.value=c:typeof c=="boolean"?a instanceof HTMLInputElement&&a.type==="checkbox"?a.checked=c:a.value=String(c):Array.isArray(c)?a.value=c.join(", "):a.value=""}),o||console.warn(`[PulseForm] No mirror target found for field "${n}". Add an element with attribute pulse-form-block-mirror="${n}" to mirror this value.`)})}function te(){let e=document.querySelector("[hs-calender-block]");if(!e){console.warn("[PulseForm] No element with attribute 'hs-calender-block' found.");return}let r=i.find(u=>u["field-name"]==="flow-type")?.value,n;if(r==="Pulse demo")n=h.find(u=>u.type==="pulse");else if(r==="White Glove services"){let a=i.find(c=>c["field-name"]==="industry")?.value;typeof a=="string"&&a&&(n=h.find(c=>c.type==="industry"&&c.name.toLowerCase()===a.toLowerCase()))}if(n||(n=h.find(u=>u.type==="industry"&&u.name==="Other")),!n){console.warn("[PulseForm] No matching calendar entry found.");return}e.innerHTML="";let o=document.createElement("div");o.className="meetings-iframe-container",o.setAttribute("data-src",n["embed-url"]),e.appendChild(o);let s=document.createElement("script");s.type="text/javascript",s.src="https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js",e.appendChild(s),console.log(`[PulseForm] Loaded calendar: ${n["calender-name"]} (${n.name})`)}function E(){let e=i.find(n=>n["field-name"]==="flow-type");if(!e)return;let t=e.value;document.querySelectorAll("[form-flow]").forEach(n=>{n.getAttribute("form-flow")?.trim()===t?n.setAttribute("form-flow-active","true"):n.setAttribute("form-flow-active","false")})}function f(){let e=i.find(o=>o["field-name"]==="flow-type");if(!e)return;let t=e.value,r=i.findIndex(o=>o["field-name"]==="industry"),n=i.findIndex(o=>o["field-name"]==="what-are-you-looking-for");r!==-1&&(i[r]={...i[r],required:null}),n!==-1&&(i[n]={...i[n],required:null}),t==="White Glove services"&&r!==-1?i[r]={...i[r],required:"true"}:t==="Pulse demo"&&n!==-1&&(i[n]={...i[n],required:"atleast-one"}),window.PulseFormData=i}var i=[];function L(e,t,r){let n=i.findIndex(o=>o["field-name"]===e);n!==-1&&(i[n]={...i[n],value:t,error:r},window.PulseFormData=i,f(),m(),E())}function ne(e){let t=e.getAttribute("pulse-form-block")?.trim().toLowerCase(),r=e.getAttribute("pulse-field-name")?.trim();if(!r)return;let n=A(e),o=v(t,e);if(e.classList.contains("has-error")){let u=b(t,n,o,e);u?(H(e,u),L(r,o,u)):(K(e),L(r,o,null))}else L(r,o,null)}function re(){document.querySelectorAll("[pulse-form-block]").forEach(t=>{let r=t.getAttribute("pulse-form-block")?.trim().toLowerCase();if(!r||!_.includes(r))return;let n=()=>ne(t);switch(r){case"text":case"email":{let o=t.querySelector("input, textarea");o&&(o.addEventListener("input",n),o.addEventListener("change",n));break}case"phone":{let o=t.querySelector('input[type="tel"]');o&&(o.addEventListener("input",n),o.addEventListener("change",n),o.addEventListener("keyup",n),o.addEventListener("countrychange",n));break}case"checkbox":case"legal":{t.querySelectorAll('input[type="checkbox"]').forEach(o=>o.addEventListener("change",n));break}case"radio":{t.querySelectorAll('input[type="radio"]').forEach(o=>o.addEventListener("change",n));break}case"select":{let o=t.querySelector("select");o&&o.addEventListener("change",n);break}}})}var O={get fields(){return i},refresh(){return i=y(!1),window.PulseFormData=i,f(),m(),E(),i},validate(){i=y(!0),window.PulseFormData=i,f();let t=document.querySelectorAll("[pulse-form-block]");i.forEach((n,o)=>{let s=Array.from(t).find(a=>a.getAttribute("pulse-field-name")?.trim()===n["field-name"]);if(!s)return;let u=b(n["form-block"],n.required,n.value,s);i[o]={...i[o],error:u}}),window.PulseFormData=i;let r=i.every(n=>n.error===null);return m(),E(),Z(i),r||ee(),{fields:i,isValid:r}},clearErrors(){R(),i=i.map(e=>({...e,error:null})),window.PulseFormData=i,f(),m(),E()},ERROR_CODES:l,ERROR_MESSAGES:d};document.addEventListener("DOMContentLoaded",()=>{let e=document.querySelectorAll("[pulse-form-block]").length;console.log(`[PulseForm] Initialized \u2014 found ${e} form blocks.`),V(),i=y(!1),window.PulseFormData=i,f(),m(),E(),re();let t=document.getElementById("trigger-webflow-form-submit");t&&t.addEventListener("click",r=>{r.preventDefault();let{isValid:n}=O.validate();if(!n)return;let o=t.textContent;t.textContent="Submitting...",te();let s=document.getElementById("webflow-form-submit");s?s.click():console.warn('[PulseForm] Button with id "webflow-form-submit" not found.');let u=document.getElementById("hubspot-form-submit");u?u.click():console.warn('[PulseForm] Button with id "hubspot-form-submit" not found.'),setTimeout(()=>{window.scrollTo({top:0,behavior:"smooth"})},700)}),window.PulseForm=O});})();
|
package/dist/form/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.w-form-formradioinput--inputType-custom.w--redirected-focus{box-shadow:none}.radio-checked{display:none}.w-form-formradioinput.w--redirected-checked~.radio-checked{display:flex}.w-checkbox-input--inputType-custom.w--redirected-focus{box-shadow:none}.w-input:focus,.w-select:focus{border-color:transparent;outline:0}.radio-inner-label{color:var(--text-colors--subtext)}input[type=radio]:checked+.radio-inner-label{color:var(--text-colors--title)}.checkbox-label{color:var(--text-colors--subtext)}.w-checkbox-input--inputType-custom.w--redirected-checked{background-color:#f66025;border-color:#f66025}input[type=checkbox]:checked+.checkbox-label{color:var(--text-colors--title)}.checkbox-field:has(input[type=checkbox]:checked){border-color:#f66025}.radio-inner-label,.checkbox-label{transition:color .3s ease}.checkbox-field{transition:border-color .3s ease}.w-checkbox-input--inputType-custom{transition:background-color .3s ease,border-color .3s ease}span.pulse-form-error{color:#e55757;font-size:var(--_text-size---body--s);line-height:var(--_line-height---line-height-body--s);font-weight:var(--_font-weight---font-weight-body--s);letter-spacing:var(--_letter-spacing---letter-spacing-body--s)}[data-error-code=ERR_LEGAL_REQUIRED]{padding-left:18px}[form-flow-active=false]{display:none}[form-flow-active=true]{display:flex}[fullwidth]{width:100%}[hs-calender-active=true]{display:block;width:100%}[hs-calender-active=false]{display:none}div#iti-0__dropdown-content{background-color:#121212;border-color:#242424}#iti-0__search-input{background:#242424}.iti__search-input-wrapper{border-color:#242424}iframe{border:1px solid transparent!important}
|
|
1
|
+
.w-form-formradioinput--inputType-custom.w--redirected-focus{box-shadow:none}.radio-checked{display:none}.w-form-formradioinput.w--redirected-checked~.radio-checked{display:flex}.w-checkbox-input--inputType-custom.w--redirected-focus{box-shadow:none}.w-input:focus,.w-select:focus{border-color:transparent;outline:0}.radio-inner-label{color:var(--text-colors--subtext)}input[type=radio]:checked+.radio-inner-label{color:var(--text-colors--title)}.checkbox-label{color:var(--text-colors--subtext)}.w-checkbox-input--inputType-custom.w--redirected-checked{background-color:#f66025;border-color:#f66025}input[type=checkbox]:checked+.checkbox-label{color:var(--text-colors--title)}.checkbox-field:has(input[type=checkbox]:checked){border-color:#f66025}.radio-inner-label,.checkbox-label{transition:color .3s ease}.checkbox-field{transition:border-color .3s ease}.w-checkbox-input--inputType-custom{transition:background-color .3s ease,border-color .3s ease}span.pulse-form-error{color:#e55757;font-size:var(--_text-size---body--s);line-height:var(--_line-height---line-height-body--s);font-weight:var(--_font-weight---font-weight-body--s);letter-spacing:var(--_letter-spacing---letter-spacing-body--s)}[data-error-code=ERR_LEGAL_REQUIRED]{padding-left:18px}[form-flow-active=false]{display:none}[form-flow-active=true]{display:flex}[fullwidth]{width:100%}[hs-calender-active=true]{display:block;width:100%}[hs-calender-active=false]{display:none}div#iti-0__dropdown-content{background-color:#121212;border-color:#242424}#iti-0__search-input{background:#242424}.iti__search-input-wrapper{border-color:#242424}iframe{border:1px solid transparent!important}.w-form-done{border:1px solid red}
|