diff --git a/modules/blocks-v2/phone-field/assets/build/editor/index.asset.php b/modules/blocks-v2/phone-field/assets/build/editor/index.asset.php index b097eacab..3f254e2fb 100644 --- a/modules/blocks-v2/phone-field/assets/build/editor/index.asset.php +++ b/modules/blocks-v2/phone-field/assets/build/editor/index.asset.php @@ -1 +1 @@ - array('react', 'wp-block-editor', 'wp-components', 'wp-hooks', 'wp-i18n'), 'version' => '0491df37b6a1e537a25f'); + array('react', 'wp-block-editor', 'wp-components', 'wp-hooks', 'wp-i18n'), 'version' => 'fdda3cb08621f4cb8256'); diff --git a/modules/blocks-v2/phone-field/assets/build/editor/index.js b/modules/blocks-v2/phone-field/assets/build/editor/index.js index f79096029..0366dd04a 100644 --- a/modules/blocks-v2/phone-field/assets/build/editor/index.js +++ b/modules/blocks-v2/phone-field/assets/build/editor/index.js @@ -1 +1 @@ -(()=>{"use strict";var e={d:(t,l)=>{for(var r in l)e.o(l,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:l[r]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var t;e.g.importScripts&&(t=e.g.location+"");var l=e.g.document;if(!t&&l&&(l.currentScript&&"SCRIPT"===l.currentScript.tagName.toUpperCase()&&(t=l.currentScript.src),!t)){var r=l.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&(!t||!/^http(s?):/.test(t));)t=r[a--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t+"../"})();var t={};e.r(t),e.d(t,{metadata:()=>b,name:()=>g,settings:()=>C});const l=window.React,r=window.wp.i18n,a=window.wp.components,n=window.wp.blockEditor,o=e.p+"images/globe@2x.webp";function i({separateDialCode:e=!0,separateDialCodeClass:t="separate-dial-code",dialCode:a="+1",placeholder:n="201-231-2312",value:o="",globeIcon:i}){return(0,l.createElement)("div",null,(0,l.createElement)("div",{className:`jet-form-builder__field-wrap phone-field-wrap phone-field-preview ${e?t:""}`},(0,l.createElement)("div",{className:"iti iti--allow-dropdown iti--show-flags iti--inline-dropdown"},(0,l.createElement)("div",{className:"iti__country-container","aria-hidden":"true"},(0,l.createElement)("div",{className:"iti__selected-country"},(0,l.createElement)("div",{className:"iti__selected-country-primary"},(0,l.createElement)("div",{className:"iti__flag iti__globe",style:{backgroundImage:i?`url(${i})`:"none"}}),(0,l.createElement)("div",{className:"iti__arrow"})),e&&(0,l.createElement)("div",{className:"iti__selected-dial-code"},a))),(0,l.createElement)("input",{type:"tel",className:"jet-form-builder__field phone-field-intl iti__tel-input",disabled:!0,readOnly:!0,value:o,placeholder:n.length>0?n:"201-231-2312",onChange:()=>{},"aria-label":(0,r.__)("Phone number","jet-form-builder")}))))}const{ToolBarFields:d,BlockName:s,BlockLabel:u,BlockDescription:c,AdvancedFields:m,FieldWrapper:p,BlockAdvancedValue:f}=JetFBComponents,{useUniqueNameOnDuplicate:_}=JetFBHooks,b=JSON.parse('{"$schema":"https://raw.githubusercontent.com/WordPress/gutenberg/trunk/schemas/json/block.json","apiVersion":3,"name":"jet-forms/phone-field","category":"jet-form-builder-fields","keywords":["jetformbuilder","field","phone","international","telephone"],"textdomain":"jet-form-builder","supports":{"customClassName":false,"html":false,"jetFBSanitizeValue":true},"title":"Phone Field","icon":"","attributes":{"label":{"type":"string","default":"","jfb":{"rich":true}},"name":{"type":"string","default":"field_name"},"desc":{"type":"string","default":"","jfb":{"rich":true}},"default":{"type":"string","default":"","jfb":{"rich-no-preset":true}},"value":{"type":"object","default":{"groups":[]}},"required":{"type":"boolean","default":false},"visibility":{"type":"string","default":""},"class_name":{"type":"string","default":""},"className":{"type":"string","default":""},"default_country":{"type":"string","default":"auto"},"preferred_countries":{"type":"string","default":""},"only_countries":{"type":"string","default":""},"exclude_countries":{"type":"string","default":""},"separate_dial_code":{"type":"boolean","default":false},"save_format":{"type":"string","default":"e164","enum":["e164","national","international"]},"ipinfo_token":{"type":"string","default":""},"use_global":{"type":"boolean","default":false},"isPreview":{"type":"boolean","default":false},"validation_message_required":{"type":"string","default":"Required field is empty"},"validation_message_invalid":{"type":"string","default":"Please enter a valid phone number"}},"usesContext":["jet-forms/repeater-field--name","jet-forms/repeater-row--default","jet-forms/repeater-row--current-index"],"viewScript":"jet-fb-blocks-v2-phone-field","viewStyle":"jet-fb-blocks-v2-phone-field"}'),{name:g,icon:h=""}=b,C={icon:(0,l.createElement)("span",{dangerouslySetInnerHTML:{__html:h}}),description:"Add an international phone number input field with country flags, dial codes, and validation.",edit:function(e){const{attributes:t,setAttributes:b,isSelected:g,editProps:{uniqKey:h,attrHelp:C}}=e,y=(0,n.useBlockProps)();return _(),[(0,l.createElement)(d,{key:h("ToolBarFields"),...e}),g&&(0,l.createElement)(n.InspectorControls,{key:h("InspectorControls")},(0,l.createElement)(a.PanelBody,{title:(0,r.__)("General","jet-form-builder")},(0,l.createElement)(u,null),(0,l.createElement)(s,null),(0,l.createElement)(c,null)),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Value","jet-form-builder")},(0,l.createElement)(f,null)),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Field","jet-form-builder"),initialOpen:!1},(0,l.createElement)(a.TextControl,{label:(0,r.__)("Default Country","jet-form-builder"),value:t.default_country,onChange:e=>b({default_country:e}),help:(0,r.__)('ISO country code (e.g., "US", "UA") or "auto" for IP detection.',"jet-form-builder")}),(0,l.createElement)(a.BaseControl,{label:(0,r.__)("Preferred Countries","jet-form-builder"),help:(0,r.__)('Comma-separated country codes (e.g., "US, GB, UA").',"jet-form-builder")},(0,l.createElement)(a.TextControl,{value:t.preferred_countries,onChange:e=>{b({preferred_countries:e})},placeholder:"US, GB, UA"})),(0,l.createElement)(a.BaseControl,{label:(0,r.__)("Only Countries","jet-form-builder"),help:(0,r.__)('Show only these countries (e.g., "US, CA, MX").',"jet-form-builder")},(0,l.createElement)(a.TextControl,{value:t.only_countries,onChange:e=>{b({only_countries:e})},placeholder:"US, CA, MX"})),t.only_countries.length<=0&&(0,l.createElement)(a.BaseControl,{label:(0,r.__)("Exclude Countries","jet-form-builder"),help:(0,r.__)('Exclude these countries (e.g., "US, BY")',"jet-form-builder")},(0,l.createElement)(a.TextControl,{value:t.exclude_countries,onChange:e=>{b({exclude_countries:e})},placeholder:"US, BY"})),(0,l.createElement)(a.ToggleControl,{label:(0,r.__)("Separate Dial Code","jet-form-builder"),checked:t.separate_dial_code,onChange:()=>b({separate_dial_code:!t.separate_dial_code}),help:(0,r.__)("Display the selected country's international dial code next to the input, so it looks like it's part of the typed number.","jet-form-builder")}),(0,l.createElement)(a.SelectControl,{label:(0,r.__)("Save Format","jet-form-builder"),value:t.save_format,options:[{label:(0,r.__)("E.164","jet-form-builder"),value:"e164"},{label:(0,r.__)("International","jet-form-builder"),value:"international"}],onChange:e=>b({save_format:e}),help:(0,r.__)("Save format: E.164 (+12015553333) or International (+1 201-555-3333).","jet-form-builder")})),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Additional Settings","jet-form-builder"),initialOpen:!1},(0,l.createElement)(a.ToggleControl,{label:(0,r.__)("Use Global ipinfo.io Token","jet-form-builder"),checked:t.use_global,onChange:()=>b({use_global:!t.use_global}),help:(0,l.createElement)(l.Fragment,null,(0,r.__)("Use","jet-form-builder")+" ",(0,l.createElement)("a",{href:window.JetFormEditorData?.global_settings_url+"#phone-field-tab",target:"_blank",rel:"noopener noreferrer"},(0,r.__)("Global Settings","jet-form-builder")))}),!t.use_global&&(0,l.createElement)(a.TextControl,{label:(0,r.__)("ipinfo.io API Token","jet-form-builder"),value:t.ipinfo_token,onChange:e=>b({ipinfo_token:e}),help:(0,r.__)("Optional: API token for IP-based country detection (50k free requests/month)","jet-form-builder")})),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Validation Messages","jet-form-builder"),initialOpen:!1},(0,l.createElement)(a.TextControl,{label:(0,r.__)("Required Field Message","jet-form-builder"),value:t.validation_message_required,onChange:e=>b({validation_message_required:e}),placeholder:(0,r.__)("Required field is empty","jet-form-builder")}),(0,l.createElement)(a.TextControl,{label:(0,r.__)("Invalid Phone Message","jet-form-builder"),value:t.validation_message_invalid,onChange:e=>b({validation_message_invalid:e}),placeholder:(0,r.__)("Please enter a valid phone number","jet-form-builder")})),(0,l.createElement)(m,{...e})),(0,l.createElement)("div",{...y,key:h("viewBlock")},(0,l.createElement)(p,{key:h("FieldWrapper"),...e},(0,l.createElement)(i,{separateDialCode:t.separate_dial_code,globeIcon:o,placeholder:t.default})))]},jfbResolveBlock(){const e={clientId:this.clientId,name:this.name};return this.attributes.name?{...e,fields:[{value:this.attributes.name,name:this.attributes.name,label:this.attributes.label||this.attributes.name}]}:e},useEditProps:["uniqKey","attrHelp"],example:{attributes:{isPreview:!0}}};(0,window.wp.hooks.addFilter)("jet.fb.register.fields","jet-form-builder/phone-field",function(e){return e.push(t),e})})(); \ No newline at end of file +(()=>{"use strict";var e={d:(t,l)=>{for(var r in l)e.o(l,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:l[r]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var t;e.g.importScripts&&(t=e.g.location+"");var l=e.g.document;if(!t&&l&&(l.currentScript&&"SCRIPT"===l.currentScript.tagName.toUpperCase()&&(t=l.currentScript.src),!t)){var r=l.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&(!t||!/^http(s?):/.test(t));)t=r[a--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t+"../"})();var t={};e.r(t),e.d(t,{metadata:()=>b,name:()=>g,settings:()=>h});const l=window.React,r=window.wp.i18n,a=window.wp.components,n=window.wp.blockEditor,o=e.p+"images/globe@2x.webp";function i({separateDialCode:e=!0,separateDialCodeClass:t="separate-dial-code",dialCode:a="+1",placeholder:n="201-231-2312",value:o="",globeIcon:i}){return(0,l.createElement)("div",null,(0,l.createElement)("div",{className:`jet-form-builder__field-wrap phone-field-wrap phone-field-preview ${e?t:""}`},(0,l.createElement)("div",{className:"iti iti--allow-dropdown iti--show-flags iti--inline-dropdown"},(0,l.createElement)("div",{className:"iti__country-container","aria-hidden":"true"},(0,l.createElement)("div",{className:"iti__selected-country"},(0,l.createElement)("div",{className:"iti__selected-country-primary"},(0,l.createElement)("div",{className:"iti__flag iti__globe",style:{backgroundImage:i?`url(${i})`:"none"}}),(0,l.createElement)("div",{className:"iti__arrow"})),e&&(0,l.createElement)("div",{className:"iti__selected-dial-code"},a))),(0,l.createElement)("input",{type:"tel",className:"jet-form-builder__field phone-field-intl iti__tel-input",disabled:!0,readOnly:!0,value:o,placeholder:n.length>0?n:"201-231-2312",onChange:()=>{},"aria-label":(0,r.__)("Phone number","jet-form-builder")}))))}const{ToolBarFields:d,BlockName:s,BlockLabel:u,BlockDescription:c,AdvancedFields:p,FieldWrapper:m,BlockAdvancedValue:f}=JetFBComponents,{useUniqueNameOnDuplicate:_}=JetFBHooks,b=JSON.parse('{"$schema":"https://raw.githubusercontent.com/WordPress/gutenberg/trunk/schemas/json/block.json","apiVersion":3,"name":"jet-forms/phone-field","category":"jet-form-builder-fields","keywords":["jetformbuilder","field","phone","international","telephone"],"textdomain":"jet-form-builder","supports":{"customClassName":false,"html":false,"jetFBSanitizeValue":true},"title":"Phone Field","icon":"","attributes":{"label":{"type":"string","default":"","jfb":{"rich":true}},"name":{"type":"string","default":"field_name"},"desc":{"type":"string","default":"","jfb":{"rich":true}},"default":{"type":"string","default":"","jfb":{"rich-no-preset":true}},"value":{"type":"object","default":{"groups":[]}},"required":{"type":"boolean","default":false},"visibility":{"type":"string","default":""},"class_name":{"type":"string","default":""},"className":{"type":"string","default":""},"default_country":{"type":"string","default":"auto"},"preferred_countries":{"type":"string","default":""},"only_countries":{"type":"string","default":""},"exclude_countries":{"type":"string","default":""},"separate_dial_code":{"type":"boolean","default":false},"save_format":{"type":"string","default":"e164","enum":["e164","national","international"]},"ipinfo_token":{"type":"string","default":""},"use_global":{"type":"boolean","default":false},"isPreview":{"type":"boolean","default":false},"validation_message_required":{"type":"string","default":"Required field is empty"},"validation_message_invalid":{"type":"string","default":"Please enter a valid phone number"}},"usesContext":["jet-forms/repeater-field--name","jet-forms/repeater-row--default","jet-forms/repeater-row--current-index"],"viewScript":"jet-fb-blocks-v2-phone-field","viewStyle":"jet-fb-blocks-v2-phone-field"}'),{name:g,icon:C=""}=b,h={icon:(0,l.createElement)("span",{dangerouslySetInnerHTML:{__html:C}}),description:"Add an international phone number input field with country flags, dial codes, and validation.",edit:function(e){const{attributes:t,setAttributes:b,isSelected:g,editProps:{uniqKey:C,attrHelp:h}}=e,y=(0,n.useBlockProps)();return _(),[(0,l.createElement)(d,{key:C("ToolBarFields"),...e}),g&&(0,l.createElement)(n.InspectorControls,{key:C("InspectorControls")},(0,l.createElement)(a.PanelBody,{title:(0,r.__)("General","jet-form-builder")},(0,l.createElement)(u,null),(0,l.createElement)(s,null),(0,l.createElement)(c,null)),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Value","jet-form-builder")},(0,l.createElement)(f,null)),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Field","jet-form-builder"),initialOpen:!1},(0,l.createElement)(a.TextControl,{label:(0,r.__)("Default Country","jet-form-builder"),value:t.default_country,onChange:e=>b({default_country:e}),help:(0,r.__)('ISO country code (e.g., "US", "UA") or "auto" for IP detection.',"jet-form-builder")}),(0,l.createElement)(a.BaseControl,{id:C("preferredCountries"),label:(0,r.__)("Preferred Countries","jet-form-builder"),help:(0,r.__)('Comma-separated country codes (e.g., "US, GB, UA").',"jet-form-builder")},(0,l.createElement)(a.TextControl,{value:t.preferred_countries,onChange:e=>{b({preferred_countries:e})},placeholder:"US, GB, UA"})),(0,l.createElement)(a.BaseControl,{id:C("onlyCountries"),label:(0,r.__)("Only Countries","jet-form-builder"),help:(0,r.__)('Show only these countries (e.g., "US, CA, MX").',"jet-form-builder")},(0,l.createElement)(a.TextControl,{value:t.only_countries,onChange:e=>{b({only_countries:e})},placeholder:"US, CA, MX"})),t.only_countries.length<=0&&(0,l.createElement)(a.BaseControl,{id:C("excludeCountries"),label:(0,r.__)("Exclude Countries","jet-form-builder"),help:(0,r.__)('Exclude these countries (e.g., "US, BY")',"jet-form-builder")},(0,l.createElement)(a.TextControl,{value:t.exclude_countries,onChange:e=>{b({exclude_countries:e})},placeholder:"US, BY"})),(0,l.createElement)(a.ToggleControl,{label:(0,r.__)("Separate Dial Code","jet-form-builder"),checked:t.separate_dial_code,onChange:()=>b({separate_dial_code:!t.separate_dial_code}),help:(0,r.__)("Display the selected country's international dial code next to the input, so it looks like it's part of the typed number.","jet-form-builder")}),(0,l.createElement)(a.SelectControl,{label:(0,r.__)("Save Format","jet-form-builder"),value:t.save_format,options:[{label:(0,r.__)("E.164","jet-form-builder"),value:"e164"},{label:(0,r.__)("International","jet-form-builder"),value:"international"}],onChange:e=>b({save_format:e}),help:(0,r.__)("Save format: E.164 (+12015553333) or International (+1 201-555-3333).","jet-form-builder")})),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Additional Settings","jet-form-builder"),initialOpen:!1},(0,l.createElement)(a.ToggleControl,{label:(0,r.__)("Use Global ipinfo.io Token","jet-form-builder"),checked:t.use_global,onChange:()=>b({use_global:!t.use_global}),help:(0,l.createElement)(l.Fragment,null,(0,r.__)("Use","jet-form-builder")+" ",(0,l.createElement)("a",{href:window.JetFormEditorData?.global_settings_url+"#phone-field-tab",target:"_blank",rel:"noopener noreferrer"},(0,r.__)("Global Settings","jet-form-builder")))}),!t.use_global&&(0,l.createElement)(a.TextControl,{label:(0,r.__)("ipinfo.io API Token","jet-form-builder"),value:t.ipinfo_token,onChange:e=>b({ipinfo_token:e}),help:(0,r.__)("Optional: API token for IP-based country detection (50k free requests/month)","jet-form-builder")})),(0,l.createElement)(a.PanelBody,{title:(0,r.__)("Validation Messages","jet-form-builder"),initialOpen:!1},(0,l.createElement)(a.TextControl,{label:(0,r.__)("Required Field Message","jet-form-builder"),value:t.validation_message_required,onChange:e=>b({validation_message_required:e}),placeholder:(0,r.__)("Required field is empty","jet-form-builder")}),(0,l.createElement)(a.TextControl,{label:(0,r.__)("Invalid Phone Message","jet-form-builder"),value:t.validation_message_invalid,onChange:e=>b({validation_message_invalid:e}),placeholder:(0,r.__)("Please enter a valid phone number","jet-form-builder")})),(0,l.createElement)(p,{...e})),(0,l.createElement)("div",{...y,key:C("viewBlock")},(0,l.createElement)(m,{key:C("FieldWrapper"),...e},(0,l.createElement)(i,{separateDialCode:t.separate_dial_code,globeIcon:o,placeholder:t.default})))]},jfbResolveBlock(){const e={clientId:this.clientId,name:this.name};return this.attributes.name?{...e,fields:[{value:this.attributes.name,name:this.attributes.name,label:this.attributes.label||this.attributes.name}]}:e},useEditProps:["uniqKey","attrHelp"],example:{attributes:{isPreview:!0}}};(0,window.wp.hooks.addFilter)("jet.fb.register.fields","jet-form-builder/phone-field",function(e){return e.push(t),e})})(); \ No newline at end of file diff --git a/modules/blocks-v2/phone-field/assets/build/frontend/field.asset.php b/modules/blocks-v2/phone-field/assets/build/frontend/field.asset.php index 9764617bd..6f2fcd29c 100644 --- a/modules/blocks-v2/phone-field/assets/build/frontend/field.asset.php +++ b/modules/blocks-v2/phone-field/assets/build/frontend/field.asset.php @@ -1 +1 @@ - array(), 'version' => '92ba0e044099359e44a2'); + array(), 'version' => 'a72ffadd3ce1e0830d2a'); diff --git a/modules/blocks-v2/phone-field/assets/build/frontend/field.js b/modules/blocks-v2/phone-field/assets/build/frontend/field.js index 4a056ebf8..985823b21 100644 --- a/modules/blocks-v2/phone-field/assets/build/frontend/field.js +++ b/modules/blocks-v2/phone-field/assets/build/frontend/field.js @@ -1 +1 @@ -(()=>{"use strict";var e,t={},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var o=n[e]={exports:{}};return t[e](o,o.exports,i),o.exports}i.m=t,i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce((t,n)=>(i.f[n](e,t),t),[])),i.u=e=>87===e?"frontend/i18n/phone-i18n-uk.js":612===e?"frontend/i18n/phone-i18n-ru.js":874===e?"frontend/i18n/phone-i18n-de.js":847===e?"frontend/i18n/phone-i18n-fr.js":487===e?"frontend/i18n/phone-i18n-es.js":932===e?"frontend/i18n/phone-i18n-it.js":519===e?"frontend/i18n/phone-i18n-pl.js":791===e?"frontend/i18n/phone-i18n-pt.js":809===e?"frontend/i18n/phone-i18n-nl.js":680===e?"frontend/i18n/phone-i18n-ja.js":217===e?"frontend/i18n/phone-i18n-zh.js":489===e?"frontend/i18n/phone-i18n-ko.js":410===e?"frontend/i18n/phone-i18n-ar.js":949===e?"frontend/i18n/phone-i18n-tr.js":416===e?"frontend/i18n/phone-i18n-sv.js":886===e?"frontend/i18n/phone-i18n-da.js":372===e?"frontend/i18n/phone-i18n-fi.js":618===e?"frontend/i18n/phone-i18n-no.js":557===e?"frontend/i18n/phone-i18n-cs.js":974===e?"frontend/i18n/phone-i18n-hu.js":278===e?"frontend/i18n/phone-i18n-ro.js":590===e?"frontend/i18n/phone-i18n-bg.js":569===e?"frontend/i18n/phone-i18n-hr.js":653===e?"frontend/i18n/phone-i18n-sk.js":736===e?"frontend/i18n/phone-i18n-el.js":615===e?"frontend/i18n/phone-i18n-th.js":580===e?"frontend/i18n/phone-i18n-vi.js":788===e?"frontend/i18n/phone-i18n-id.js":354===e?"frontend/i18n/phone-i18n-hi.js":231===e?"frontend/i18n/phone-i18n-bn.js":302===e?"frontend/i18n/phone-i18n-ur.js":628===e?"frontend/i18n/phone-i18n-fa.js":982===e?"frontend/i18n/phone-i18n-mr.js":378===e?"frontend/i18n/phone-i18n-te.js":434===e?"frontend/i18n/phone-i18n-bs.js":319===e?"frontend/i18n/phone-i18n-ca.js":void 0,i.miniCssF=e=>{},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},i.l=(t,n,r,o)=>{if(e[t])e[t].push(n);else{var s,a;if(void 0!==r)for(var d=document.getElementsByTagName("script"),l=0;l{s.onerror=s.onload=null,clearTimeout(c);var r=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),r&&r.forEach(e=>e(i)),n)return n(i)},c=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),a&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e+"../"})(),(()=>{var e={750:0};i.f.j=(t,n)=>{var r=i.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise((n,i)=>r=e[t]=[n,i]);n.push(r[2]=o);var s=i.p+i.u(t),a=new Error;i.l(s,n=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;a.message="Loading chunk "+t+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,r[1](a)}},"chunk-"+t,t)}};var t=(t,n)=>{var r,o,[s,a,d]=n,l=0;if(s.some(t=>0!==e[t])){for(r in a)i.o(a,r)&&(i.m[r]=a[r]);d&&d(i)}for(t&&t(n);li.e(87).then(i.bind(i,171)),ru:()=>i.e(612).then(i.bind(i,628)),de:()=>i.e(874).then(i.bind(i,74)),fr:()=>i.e(847).then(i.bind(i,7)),es:()=>i.e(487).then(i.bind(i,763)),it:()=>i.e(932).then(i.bind(i,760)),pl:()=>i.e(519).then(i.bind(i,471)),pt:()=>i.e(791).then(i.bind(i,823)),nl:()=>i.e(809).then(i.bind(i,697)),ja:()=>i.e(680).then(i.bind(i,608)),zh:()=>i.e(217).then(i.bind(i,721)),ko:()=>i.e(489).then(i.bind(i,397)),ar:()=>i.e(410).then(i.bind(i,830)),tr:()=>i.e(949).then(i.bind(i,853)),sv:()=>i.e(416).then(i.bind(i,620)),da:()=>i.e(886).then(i.bind(i,862)),fi:()=>i.e(372).then(i.bind(i,844)),no:()=>i.e(618).then(i.bind(i,146)),cs:()=>i.e(557).then(i.bind(i,705)),hu:()=>i.e(974).then(i.bind(i,958)),ro:()=>i.e(278).then(i.bind(i,350)),bg:()=>i.e(590).then(i.bind(i,574)),hr:()=>i.e(569).then(i.bind(i,289)),sk:()=>i.e(653).then(i.bind(i,169)),el:()=>i.e(736).then(i.bind(i,644)),th:()=>i.e(615).then(i.bind(i,423)),vi:()=>i.e(580).then(i.bind(i,388)),id:()=>i.e(788).then(i.bind(i,80)),hi:()=>i.e(354).then(i.bind(i,602)),bn:()=>i.e(231).then(i.bind(i,655)),ur:()=>i.e(302).then(i.bind(i,730)),fa:()=>i.e(628).then(i.bind(i,428)),mr:()=>i.e(982).then(i.bind(i,922)),te:()=>i.e(378).then(i.bind(i,722)),bs:()=>i.e(434).then(i.bind(i,322)),ca:()=>i.e(319).then(i.bind(i,227))},s={};async function a(){const e=function(){let e="";const t=document.documentElement.lang;return t&&(e=t.includes("-")?t.replace("-","_"):t),!e&&void 0!==window.wp&&window.wp.i18n&&(e=window.wp.i18n.getLocaleData?.()?.locale||""),e||(e="en"),e}();return await async function(e){const t=r[e]||"en";if("en"===t)return{};if(s[t])return s[t];const n=o[t];if(!n)return{};try{const e=(await n()).default||{};return s[t]=e,e}catch(e){return console.error(`[PhoneField] Failed to load locale "${t}":`,e),{}}}(e)}const{InputData:d}=window.JetFormBuilderAbstract;function l(){d.call(this),this.itiInstance=null,this.isInitialized=!1,this.isSupported=function(e){return e.classList.contains("phone-field")},this.setNode=function(e){d.prototype.setNode.call(this,e),this.initIntlTelInput()},this.initIntlTelInput=async function(){const e=this.nodes[0];if(!e)return;if(this.isInitialized)return;const t=this.getWrapperNode().querySelector("input.phone-field-intl"),n=e.dataset.defaultCountry||"auto",i=this.parseCountryList(e.dataset.preferredCountries),r=this.parseCountryList(e.dataset.onlyCountries),o=this.parseCountryList(e.dataset.excludeCountries),s=e.dataset.separateDialCode||!1,a=e.dataset.ipinfoToken||"";let d=n;"auto"===d&&(d=this.detectCountryByIP(a)||this.detectCountryByLanguage()||"us");const l=await this.getLocalizedCountryNames(),u={initialCountry:d,separateDialCode:1==s,strictMode:!0,nationalMode:!0,formatAsYouType:!0,formatOnDisplay:!0,autoPlaceholder:"aggressive"};i.length&&(u.countryOrder=i),r.length&&(u.onlyCountries=r),o.length&&(u.excludeCountries=o),Object.keys(l).length&&(u.i18n=l),this.itiInstance=window.intlTelInput(t,u),this.itiInstance.setNumber(e.value),this.isInitialized=!0},this.normalizeIfInternational=function(e){const t=e.value.trim();t&&"+"===t[0]&&(this.itiInstance.setNumber(t),this.setValue())},this.parseCountryList=function(e){return e?e.split(",").map(e=>e.trim().toLowerCase()).filter(e=>e):[]},this.detectCountryByIP=function(e){const t=sessionStorage.getItem("jfb_detected_country");return t||(fetch(e?`https://api.ipinfo.io/lite/me?token=${e}`:"https://ipinfo.io/json").then(e=>e.json()).then(e=>{if(e.country){const t=e.country.toLowerCase();sessionStorage.setItem("jfb_detected_country",t),this.itiInstance&&this.itiInstance.setCountry(t)}}).catch(e=>{}),null)},this.detectCountryByLanguage=function(){const e=navigator.language||navigator.userLanguage;if(!e)return null;const t=e.split("-");return t.length>1?t[1].toLowerCase():{en:"us",ru:"ru",uk:"ua",de:"de",fr:"fr",es:"es",it:"it",pl:"pl",pt:"br",ja:"jp",ko:"kr",zh:"cn",ar:"sa",he:"il",hi:"in"}[t[0].toLowerCase()]||null},this.getLocalizedCountryNames=async function(){const e=void 0!==window.jfbPhoneFieldI18n?window.jfbPhoneFieldI18n:{};let t={};try{t=await a()}catch(e){}return{...t,...e}},this.addListeners=function(){d.prototype.addListeners.call(this);const e=this.nodes[0];if(!e)return;const t=this.getWrapperNode().querySelector("input.phone-field-intl");if(!t)return;const n=e.closest("form");n&&n.addEventListener("submit",()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e),this.validateAndShowError()},!0),t.addEventListener("countrychange",()=>{this.syncFromIntlInput(t,e),this.validateAndShowError()}),t.addEventListener("input",()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e),t.value.trim()&&this.clearError()}),t.addEventListener("change",()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e)}),t.addEventListener("blur",()=>{setTimeout(()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e),this.validateAndShowError()},0)})},this.syncFromIntlInput=function(e,t){if(!this.itiInstance)return;let n;n="international"===(t.dataset.saveFormat||"e164")?this.itiInstance.getNumber(window.intlTelInput.utils.numberFormat.INTERNATIONAL):this.itiInstance.getNumber(),t.value=n||"",this.calcValue=n||"",this.value.current=n||""},this.showError=function(e){const t=this.getWrapperNode();if(!t)return;this.clearError(),t.classList.add("field-has-error");const n=document.createElement("div");n.className="error-message jet-form-builder__error",n.textContent=e;const i=t.querySelector(".jet-form-builder-col__end");i?i.appendChild(n):t.appendChild(n);const r=t.querySelector("input.phone-field-intl");r&&(r.classList.add("invalid"),r.setAttribute("aria-invalid","true"))},this.clearError=function(){const e=this.getWrapperNode();if(!e)return;e.classList.remove("field-has-error");const t=e.querySelector(".error-message");t&&t.remove();const n=e.querySelector("input.phone-field-intl");n&&(n.classList.remove("invalid"),n.removeAttribute("aria-invalid"))},this.getValidationMessage=function(e){const t=this.nodes[0];return"required"===e&&t.dataset.validationMessageRequired?t.dataset.validationMessageRequired:"invalid"===e&&t.dataset.validationMessageInvalid?t.dataset.validationMessageInvalid:"required"===e?"This field is required":"Please enter a valid phone number"},this.validateAndShowError=function(){const e=this.getWrapperNode(),t=e?.querySelector("input.phone-field-intl"),n=this.nodes[0];if(!t)return!0;const i=t.value.trim();return n.hasAttribute("required")&&!i?(this.showError(this.getValidationMessage("required")),!1):i&&this.itiInstance&&!this.itiInstance.isValidNumber()?(this.showError(this.getValidationMessage("invalid")),!1):(this.clearError(),!0)},this.getReportingNode=function(){const e=this.getWrapperNode(),t=e?.querySelector("input.phone-field-intl");return t||this.nodes[0]},this.getWrapperNode=function(){const e=this.nodes[0];return e?e.closest(".jet-form-builder-row"):null},l.prototype.setValue=function(){const e=this.nodes[0];if(!e)return"";if(!this.itiInstance)return this.calcValue=e.value,this.value.current=e.value,e.value;let t;return t="international"===(e.dataset.saveFormat||"e164")?this.itiInstance.getNumber(window.intlTelInputUtils.numberFormat.INTERNATIONAL):this.itiInstance.getNumber(),e.value=t||"",this.calcValue=t||"",this.value.current=t||"",t}}l.prototype=Object.create(d.prototype),l.prototype.constructor=l;const u=l;let{AdvancedRestriction:h,Restriction:c}=window.JetFormBuilderAbstract||{};function p(){h.call(this),this.type="phone_validation"}h=h||c,p.prototype=Object.create(h.prototype),p.prototype.isSupported=function(e){return e.classList.contains("phone-field")},p.prototype.validate=function(){const e=this.reporting.input,t=e.getWrapperNode(),n=t?.querySelector("input.phone-field-intl");return!e.itiInstance||(!n||!n.value.trim()||e.itiInstance.isValidNumber())},p.prototype.getRawMessage=function(){const e=this.getMessageBySlug?.("phone_invalid");return e||"Please enter a valid phone number"};const f=p,{addFilter:b}=JetPlugins.hooks;b("jet.fb.inputs","jet-form-builder/phone-field",function(e){return e.push(u),e},10);const m=e=>(e.push(f),e);b("jet.fb.restrictions.default","jet-form-builder/phone-field",m),b("jet.fb.restrictions","jet-form-builder/phone-field",m)})(); \ No newline at end of file +(()=>{"use strict";var e,t={},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var o=n[e]={exports:{}};return t[e](o,o.exports,i),o.exports}i.m=t,i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce((t,n)=>(i.f[n](e,t),t),[])),i.u=e=>87===e?"frontend/i18n/phone-i18n-uk.js":612===e?"frontend/i18n/phone-i18n-ru.js":874===e?"frontend/i18n/phone-i18n-de.js":847===e?"frontend/i18n/phone-i18n-fr.js":487===e?"frontend/i18n/phone-i18n-es.js":932===e?"frontend/i18n/phone-i18n-it.js":519===e?"frontend/i18n/phone-i18n-pl.js":791===e?"frontend/i18n/phone-i18n-pt.js":809===e?"frontend/i18n/phone-i18n-nl.js":680===e?"frontend/i18n/phone-i18n-ja.js":217===e?"frontend/i18n/phone-i18n-zh.js":489===e?"frontend/i18n/phone-i18n-ko.js":410===e?"frontend/i18n/phone-i18n-ar.js":949===e?"frontend/i18n/phone-i18n-tr.js":416===e?"frontend/i18n/phone-i18n-sv.js":886===e?"frontend/i18n/phone-i18n-da.js":372===e?"frontend/i18n/phone-i18n-fi.js":618===e?"frontend/i18n/phone-i18n-no.js":557===e?"frontend/i18n/phone-i18n-cs.js":974===e?"frontend/i18n/phone-i18n-hu.js":278===e?"frontend/i18n/phone-i18n-ro.js":590===e?"frontend/i18n/phone-i18n-bg.js":569===e?"frontend/i18n/phone-i18n-hr.js":653===e?"frontend/i18n/phone-i18n-sk.js":736===e?"frontend/i18n/phone-i18n-el.js":615===e?"frontend/i18n/phone-i18n-th.js":580===e?"frontend/i18n/phone-i18n-vi.js":788===e?"frontend/i18n/phone-i18n-id.js":354===e?"frontend/i18n/phone-i18n-hi.js":231===e?"frontend/i18n/phone-i18n-bn.js":302===e?"frontend/i18n/phone-i18n-ur.js":628===e?"frontend/i18n/phone-i18n-fa.js":982===e?"frontend/i18n/phone-i18n-mr.js":378===e?"frontend/i18n/phone-i18n-te.js":434===e?"frontend/i18n/phone-i18n-bs.js":319===e?"frontend/i18n/phone-i18n-ca.js":void 0,i.miniCssF=e=>{},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},i.l=(t,n,r,o)=>{if(e[t])e[t].push(n);else{var s,a;if(void 0!==r)for(var d=document.getElementsByTagName("script"),u=0;u{s.onerror=s.onload=null,clearTimeout(c);var r=e[t];if(delete e[t],s.parentNode&&s.parentNode.removeChild(s),r&&r.forEach(e=>e(i)),n)return n(i)},c=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),a&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e+"../"})(),(()=>{var e={750:0};i.f.j=(t,n)=>{var r=i.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise((n,i)=>r=e[t]=[n,i]);n.push(r[2]=o);var s=i.p+i.u(t),a=new Error;i.l(s,n=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;a.message="Loading chunk "+t+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,r[1](a)}},"chunk-"+t,t)}};var t=(t,n)=>{var r,o,[s,a,d]=n,u=0;if(s.some(t=>0!==e[t])){for(r in a)i.o(a,r)&&(i.m[r]=a[r]);d&&d(i)}for(t&&t(n);ui.e(87).then(i.bind(i,171)),ru:()=>i.e(612).then(i.bind(i,628)),de:()=>i.e(874).then(i.bind(i,74)),fr:()=>i.e(847).then(i.bind(i,7)),es:()=>i.e(487).then(i.bind(i,763)),it:()=>i.e(932).then(i.bind(i,760)),pl:()=>i.e(519).then(i.bind(i,471)),pt:()=>i.e(791).then(i.bind(i,823)),nl:()=>i.e(809).then(i.bind(i,697)),ja:()=>i.e(680).then(i.bind(i,608)),zh:()=>i.e(217).then(i.bind(i,721)),ko:()=>i.e(489).then(i.bind(i,397)),ar:()=>i.e(410).then(i.bind(i,830)),tr:()=>i.e(949).then(i.bind(i,853)),sv:()=>i.e(416).then(i.bind(i,620)),da:()=>i.e(886).then(i.bind(i,862)),fi:()=>i.e(372).then(i.bind(i,844)),no:()=>i.e(618).then(i.bind(i,146)),cs:()=>i.e(557).then(i.bind(i,705)),hu:()=>i.e(974).then(i.bind(i,958)),ro:()=>i.e(278).then(i.bind(i,350)),bg:()=>i.e(590).then(i.bind(i,574)),hr:()=>i.e(569).then(i.bind(i,289)),sk:()=>i.e(653).then(i.bind(i,169)),el:()=>i.e(736).then(i.bind(i,644)),th:()=>i.e(615).then(i.bind(i,423)),vi:()=>i.e(580).then(i.bind(i,388)),id:()=>i.e(788).then(i.bind(i,80)),hi:()=>i.e(354).then(i.bind(i,602)),bn:()=>i.e(231).then(i.bind(i,655)),ur:()=>i.e(302).then(i.bind(i,730)),fa:()=>i.e(628).then(i.bind(i,428)),mr:()=>i.e(982).then(i.bind(i,922)),te:()=>i.e(378).then(i.bind(i,722)),bs:()=>i.e(434).then(i.bind(i,322)),ca:()=>i.e(319).then(i.bind(i,227))},s={};function a(e){if(!e||"string"!=typeof e)return"";const t=e.trim().replace(/-/g,"_");if(!t)return"";const[n="",i=""]=t.split("_");return n?i?`${n.toLowerCase()}_${i.toUpperCase()}`:n.toLowerCase():""}async function d(e){const t=function(e){const t=a(e);if(!t)return"en";const[n]=t.split("_");return r[t]||r[n]||"en"}(e);if("en"===t)return{};if(s[t])return s[t];const n=o[t];if(!n)return{};try{const e=(await n()).default||{};return s[t]=e,e}catch{return{}}}function u(){const e="object"==typeof window.jfbPhoneFieldLocaleContext&&null!==window.jfbPhoneFieldLocaleContext?window.jfbPhoneFieldLocaleContext:{};return((e=[])=>{for(const t of e){const e=a(t);if(e)return e}return""})([e.pageLocale,e.pageLang,document.documentElement?.lang,e.siteLocale,e.siteLang])}async function l(){const e=u()||"en";return await d(e)}const{InputData:h}=window.JetFormBuilderAbstract;function c(){h.call(this),this.itiInstance=null,this.isInitialized=!1,this.isSupported=function(e){return e.classList.contains("phone-field")},this.setNode=function(e){h.prototype.setNode.call(this,e),this.initIntlTelInput()},this.initIntlTelInput=async function(){const e=this.nodes[0];if(!e)return;if(this.isInitialized)return;const t=this.getWrapperNode().querySelector("input.phone-field-intl"),n=e.dataset.defaultCountry||"auto",i=this.parseCountryList(e.dataset.preferredCountries),r=this.parseCountryList(e.dataset.onlyCountries),o=this.parseCountryList(e.dataset.excludeCountries),s=e.dataset.separateDialCode||!1,a=e.dataset.ipinfoToken||"";let d=n;"auto"===d&&(d=this.detectCountryByIP(a)||this.detectCountryByLanguage()||"us");const u=await this.getLocalizedCountryNames(),l={initialCountry:d,separateDialCode:"1"===s,strictMode:!0,nationalMode:!0,formatAsYouType:!0,formatOnDisplay:!0,autoPlaceholder:"aggressive"};i.length&&(l.countryOrder=i),r.length&&(l.onlyCountries=r),o.length&&(l.excludeCountries=o),Object.keys(u).length&&(l.i18n=u),this.itiInstance=window.intlTelInput(t,l),this.itiInstance.setNumber(e.value),this.isInitialized=!0},this.normalizeIfInternational=function(e){const t=e.value.trim();t&&"+"===t[0]&&(this.itiInstance.setNumber(t),this.setValue())},this.parseCountryList=function(e){return e?e.split(",").map(e=>e.trim().toLowerCase()).filter(e=>e):[]},this.detectCountryByIP=function(e){const t=sessionStorage.getItem("jfb_detected_country");return t||(fetch(e?`https://api.ipinfo.io/lite/me?token=${e}`:"https://ipinfo.io/json").then(e=>e.json()).then(e=>{if(e.country){const t=e.country.toLowerCase();sessionStorage.setItem("jfb_detected_country",t),this.itiInstance&&this.itiInstance.setCountry(t)}}).catch(()=>{}),null)},this.detectCountryByLanguage=function(){const e=navigator.language||navigator.userLanguage;if(!e)return null;const t=e.split("-");return t.length>1?t[1].toLowerCase():{en:"us",ru:"ru",uk:"ua",de:"de",fr:"fr",es:"es",it:"it",pl:"pl",pt:"br",ja:"jp",ko:"kr",zh:"cn",ar:"sa",he:"il",hi:"in"}[t[0].toLowerCase()]||null},this.getLocalizedCountryNames=async function(){const e=void 0!==window.jfbPhoneFieldI18n?window.jfbPhoneFieldI18n:{};let t={};try{t=await l()}catch{}return{...t,...e}},this.addListeners=function(){h.prototype.addListeners.call(this);const e=this.nodes[0];if(!e)return;const t=this.getWrapperNode().querySelector("input.phone-field-intl");if(!t)return;const n=e.closest("form");n&&n.addEventListener("submit",()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e),this.validateAndShowError()},!0),t.addEventListener("countrychange",()=>{this.syncFromIntlInput(t,e),this.validateAndShowError()}),t.addEventListener("input",()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e),t.value.trim()&&this.clearError()}),t.addEventListener("change",()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e)}),t.addEventListener("blur",()=>{setTimeout(()=>{this.normalizeIfInternational(t),this.syncFromIntlInput(t,e),this.validateAndShowError()},0)})},this.syncFromIntlInput=function(e,t){if(!this.itiInstance)return;let n;n="international"===(t.dataset.saveFormat||"e164")?this.itiInstance.getNumber(window.intlTelInput.utils.numberFormat.INTERNATIONAL):this.itiInstance.getNumber(),t.value=n||"",this.calcValue=n||"",this.value.current=n||""},this.showError=function(e){const t=this.getWrapperNode();if(!t)return;this.clearError(),t.classList.add("field-has-error");const n=document.createElement("div");n.className="error-message jet-form-builder__error",n.textContent=e;const i=t.querySelector(".jet-form-builder-col__end");i?i.appendChild(n):t.appendChild(n);const r=t.querySelector("input.phone-field-intl");r&&(r.classList.add("invalid"),r.setAttribute("aria-invalid","true"))},this.clearError=function(){const e=this.getWrapperNode();if(!e)return;e.classList.remove("field-has-error");const t=e.querySelector(".error-message");t&&t.remove();const n=e.querySelector("input.phone-field-intl");n&&(n.classList.remove("invalid"),n.removeAttribute("aria-invalid"))},this.getValidationMessage=function(e){const t=this.nodes[0];return"required"===e&&t.dataset.validationMessageRequired?t.dataset.validationMessageRequired:"invalid"===e&&t.dataset.validationMessageInvalid?t.dataset.validationMessageInvalid:"required"===e?"This field is required":"Please enter a valid phone number"},this.validateAndShowError=function(){const e=this.getWrapperNode(),t=e?.querySelector("input.phone-field-intl"),n=this.nodes[0];if(!t)return!0;const i=t.value.trim();return n.hasAttribute("required")&&!i?(this.showError(this.getValidationMessage("required")),!1):i&&this.itiInstance&&!this.itiInstance.isValidNumber()?(this.showError(this.getValidationMessage("invalid")),!1):(this.clearError(),!0)},this.getReportingNode=function(){const e=this.getWrapperNode(),t=e?.querySelector("input.phone-field-intl");return t||this.nodes[0]},this.getWrapperNode=function(){const e=this.nodes[0];return e?e.closest(".jet-form-builder-row"):null},c.prototype.setValue=function(){const e=this.nodes[0];if(!e)return"";if(!this.itiInstance)return this.calcValue=e.value,this.value.current=e.value,e.value;let t;return t="international"===(e.dataset.saveFormat||"e164")?this.itiInstance.getNumber(window.intlTelInputUtils.numberFormat.INTERNATIONAL):this.itiInstance.getNumber(),e.value=t||"",this.calcValue=t||"",this.value.current=t||"",t}}c.prototype=Object.create(h.prototype),c.prototype.constructor=c;const p=c;let{AdvancedRestriction:f,Restriction:b}=window.JetFormBuilderAbstract||{};function m(){f.call(this),this.type="phone_validation"}f=f||b,m.prototype=Object.create(f.prototype),m.prototype.isSupported=function(e){return e.classList.contains("phone-field")},m.prototype.validate=function(){const e=this.reporting.input,t=e.getWrapperNode(),n=t?.querySelector("input.phone-field-intl");return!e.itiInstance||(!n||!n.value.trim()||e.itiInstance.isValidNumber())},m.prototype.getRawMessage=function(){const e=this.getMessageBySlug?.("phone_invalid");return e||"Please enter a valid phone number"};const g=m,{addFilter:v}=JetPlugins.hooks;v("jet.fb.inputs","jet-form-builder/phone-field",function(e){return e.push(p),e},10);const y=e=>(e.push(g),e);v("jet.fb.restrictions.default","jet-form-builder/phone-field",y),v("jet.fb.restrictions","jet-form-builder/phone-field",y)})(); \ No newline at end of file diff --git a/modules/blocks-v2/phone-field/assets/src/editor/block/edit.js b/modules/blocks-v2/phone-field/assets/src/editor/block/edit.js index e37424ec4..3efb6a9a5 100644 --- a/modules/blocks-v2/phone-field/assets/src/editor/block/edit.js +++ b/modules/blocks-v2/phone-field/assets/src/editor/block/edit.js @@ -64,6 +64,7 @@ export default function IntlPhoneEdit( props ) { /> @@ -77,6 +78,7 @@ export default function IntlPhoneEdit( props ) { @@ -91,6 +93,7 @@ export default function IntlPhoneEdit( props ) { { attributes.only_countries.length <= 0 && ( @@ -128,6 +131,7 @@ export default function IntlPhoneEdit( props ) { 'jet-form-builder' ) } /> + { + .catch( () => { } ); return null; @@ -214,7 +218,7 @@ function PhoneFieldData() { let libraryTranslations = {}; try { libraryTranslations = await loadCurrentLocaleTranslations(); - } catch ( error ) { + } catch { } // Merge translations: WordPress overrides library translations @@ -252,7 +256,7 @@ function PhoneFieldData() { this.syncFromIntlInput( input, node ); // Validate and show error before submit - const isValid = this.validateAndShowError(); + this.validateAndShowError(); }, true); // Use capture phase to run before JetFormBuilder } @@ -289,6 +293,8 @@ function PhoneFieldData() { /** * Sync value from intl-tel-input field to main field + * @param intlInput + * @param mainField */ // eslint-disable-next-line no-unused-vars this.syncFromIntlInput = function ( intlInput, mainField ) { @@ -322,6 +328,7 @@ function PhoneFieldData() { /** * Show error message under the phone field + * @param message */ this.showError = function ( message ) { const wrapper = this.getWrapperNode(); @@ -388,6 +395,7 @@ function PhoneFieldData() { /** * Get validation message from data-attributes or fallback + * @param type */ this.getValidationMessage = function ( type ) { const mainField = this.nodes[ 0 ]; diff --git a/modules/blocks-v2/phone-field/assets/src/frontend/field/i18n-loader.js b/modules/blocks-v2/phone-field/assets/src/frontend/field/i18n-loader.js index 263dd6272..d9aea0d80 100644 --- a/modules/blocks-v2/phone-field/assets/src/frontend/field/i18n-loader.js +++ b/modules/blocks-v2/phone-field/assets/src/frontend/field/i18n-loader.js @@ -6,49 +6,46 @@ */ /** - * Map WordPress locale codes to intl-tel-input i18n folder names + * Map normalized locale codes to intl-tel-input i18n folder names. */ const localeMap = { - // WordPress locale => intl-tel-input i18n folder - 'uk': 'uk', // Ukrainian - 'ru_RU': 'ru', // Russian - 'de_DE': 'de', // German - 'fr_FR': 'fr', // French - 'es_ES': 'es', // Spanish - 'it_IT': 'it', // Italian - 'pl_PL': 'pl', // Polish - 'pt_PT': 'pt', // Portuguese - 'pt_BR': 'pt', // Portuguese (Brazil) - 'nl_NL': 'nl', // Dutch - 'ja': 'ja', // Japanese - 'zh_CN': 'zh', // Chinese - 'ko_KR': 'ko', // Korean - 'ar': 'ar', // Arabic - 'tr_TR': 'tr', // Turkish - 'sv_SE': 'sv', // Swedish - 'da_DK': 'da', // Danish - 'fi': 'fi', // Finnish - 'no': 'no', // Norwegian - 'cs_CZ': 'cs', // Czech - 'hu_HU': 'hu', // Hungarian - 'ro_RO': 'ro', // Romanian - 'bg_BG': 'bg', // Bulgarian - 'hr': 'hr', // Croatian - 'sk_SK': 'sk', // Slovak - 'el': 'el', // Greek - 'th': 'th', // Thai - 'vi': 'vi', // Vietnamese - 'id_ID': 'id', // Indonesian - 'hi_IN': 'hi', // Hindi - 'bn_BD': 'bn', // Bengali - 'ur': 'ur', // Urdu - 'fa_IR': 'fa', // Persian - 'mr': 'mr', // Marathi - 'te': 'te', // Telugu - 'bs_BA': 'bs', // Bosnian - 'ca': 'ca', // Catalan - 'en_US': 'en', // English (US) - 'en': 'en', // English (generic) + ar: 'ar', + bg: 'bg', + bn: 'bn', + bs: 'bs', + ca: 'ca', + cs: 'cs', + da: 'da', + de: 'de', + el: 'el', + en: 'en', + es: 'es', + fa: 'fa', + fi: 'fi', + fr: 'fr', + hi: 'hi', + hr: 'hr', + hu: 'hu', + id: 'id', + it: 'it', + ja: 'ja', + ko: 'ko', + mr: 'mr', + nl: 'nl', + no: 'no', + pl: 'pl', + pt: 'pt', + ro: 'ro', + ru: 'ru', + sk: 'sk', + sv: 'sv', + te: 'te', + th: 'th', + tr: 'tr', + uk: 'uk', + ur: 'ur', + vi: 'vi', + zh: 'zh', }; /** @@ -100,6 +97,59 @@ const loaders = { */ const translationCache = {}; +const getWindowLocaleContext = () => { + return typeof window.jfbPhoneFieldLocaleContext === 'object' && + window.jfbPhoneFieldLocaleContext !== null + ? window.jfbPhoneFieldLocaleContext + : {}; +}; + +const getFirstNormalizedLocale = ( candidates = [] ) => { + for ( const locale of candidates ) { + const normalizedLocale = normalizeLocale( locale ); + + if ( normalizedLocale ) { + return normalizedLocale; + } + } + + return ''; +}; + +export function normalizeLocale( locale ) { + if ( ! locale || 'string' !== typeof locale ) { + return ''; + } + + const sanitized = locale.trim().replace( /-/g, '_' ); + + if ( ! sanitized ) { + return ''; + } + + const [ language = '', region = '' ] = sanitized.split( '_' ); + + if ( ! language ) { + return ''; + } + + return region + ? `${ language.toLowerCase() }_${ region.toUpperCase() }` + : language.toLowerCase(); +} + +export function resolveIntlLocale( locale ) { + const normalizedLocale = normalizeLocale( locale ); + + if ( ! normalizedLocale ) { + return 'en'; + } + + const [ language ] = normalizedLocale.split( '_' ); + + return localeMap[ normalizedLocale ] || localeMap[ language ] || 'en'; +} + /** * Load translations for intl-tel-input (ESM import approach) * @@ -107,8 +157,7 @@ const translationCache = {}; * @return {Promise} - Promise that resolves to translations object */ export async function loadIntlTelInputLocale( wpLocale ) { - // Get intl-tel-input locale code - const locale = localeMap[ wpLocale ] || 'en'; + const locale = resolveIntlLocale( wpLocale ); // English is built-in to intl-tel-input, no need to load if ( locale === 'en' ) { @@ -140,8 +189,7 @@ export async function loadIntlTelInputLocale( wpLocale ) { translationCache[ locale ] = translations; return translations; - } catch ( error ) { - console.error( `[PhoneField] Failed to load locale "${ locale }":`, error ); + } catch { return {}; } } @@ -151,34 +199,29 @@ export async function loadIntlTelInputLocale( wpLocale ) { * * @return {string} WordPress locale code */ -export function getWordPressLocale() { - let locale = ''; - - // Try to get from HTML lang attribute - const htmlLang = document.documentElement.lang; - - if ( htmlLang ) { - // Convert 'uk-UA' to 'uk', 'en-US' to 'en_US' - // But keep simple codes like 'uk' as is - if ( htmlLang.includes( '-' ) ) { - locale = htmlLang.replace( '-', '_' ); - } else { - locale = htmlLang; - } - } +export function getPageLocale() { + const localeContext = getWindowLocaleContext(); + + return getFirstNormalizedLocale( [ + localeContext.pageLocale, + localeContext.pageLang, + document.documentElement?.lang, + localeContext.siteLocale, + localeContext.siteLang, + ] ); +} - // Try to get from WordPress global variables - if ( ! locale && typeof window.wp !== 'undefined' && window.wp.i18n ) { - // WordPress 5.0+ has locale info - locale = window.wp.i18n.getLocaleData?.()?.locale || ''; - } +export function getSiteLocale() { + const localeContext = getWindowLocaleContext(); - // Fallback to English - if ( ! locale ) { - locale = 'en'; - } + return getFirstNormalizedLocale( [ + localeContext.siteLocale, + localeContext.siteLang, + ] ); +} - return locale; +export function resolveCurrentLocale() { + return getPageLocale() || 'en'; } /** @@ -187,7 +230,7 @@ export function getWordPressLocale() { * @return {Promise} Country translations */ export async function loadCurrentLocaleTranslations() { - const locale = getWordPressLocale(); + const locale = resolveCurrentLocale(); return await loadIntlTelInputLocale( locale ); } @@ -195,6 +238,10 @@ export async function loadCurrentLocaleTranslations() { export default { loadIntlTelInputLocale, loadCurrentLocaleTranslations, - getWordPressLocale, + getPageLocale, + getSiteLocale, + resolveCurrentLocale, + resolveIntlLocale, + normalizeLocale, localeMap, }; diff --git a/modules/blocks-v2/phone-field/block-asset.php b/modules/blocks-v2/phone-field/block-asset.php index be5d3b459..32c0fef51 100644 --- a/modules/blocks-v2/phone-field/block-asset.php +++ b/modules/blocks-v2/phone-field/block-asset.php @@ -85,6 +85,17 @@ public function register_frontend_assets() { $this->get_localized_country_names() ); + wp_localize_script( + $handle, + 'jfbPhoneFieldLocaleContext', + array( + 'pageLocale' => determine_locale(), + 'pageLang' => get_bloginfo( 'language' ), + 'siteLocale' => get_locale(), + 'siteLang' => str_replace( '_', '-', get_locale() ), + ) + ); + wp_register_style( $blocks_v2->get_handle( 'phone-field' ), $blocks_v2->get_url( 'phone-field/assets/build/frontend/field.css' ),