@descope/web-components-ui 1.37.0 → 1.39.0
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/cjs/index.cjs.js +11 -55
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +11 -55
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/8961.js +1 -1
- package/dist/umd/8961.js.map +1 -1
- package/dist/umd/9365.js +1 -1
- package/dist/umd/9365.js.map +1 -1
- package/dist/umd/DescopeDev.js +1 -1
- package/dist/umd/DescopeDev.js.map +1 -1
- package/dist/umd/descope-address-field.js +1 -1
- package/dist/umd/descope-address-field.js.map +1 -1
- package/dist/umd/descope-autocomplete-field.js +1 -1
- package/dist/umd/descope-autocomplete-field.js.map +1 -1
- package/package.json +9 -9
- package/src/mixins/draggableMixin.js +1 -23
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[8712,8822],{25278:(e,t,s)=>{s.r(t),s.d(t,{AddressFieldClass:()=>f,componentName:()=>v}),s(25003),s(93847);var r=s(72270),i=s(25964),o=s(88961),a=s(63200);class n extends((0,r.h)()){#e=null;#t=null;constructor(e){super(e),this.#t=this.#s()}getRequiredParams(){return["public-api-key"]}getOptionalParams(){return[{key:"includedPrimaryTypes",attribute:"address-types"},{key:"language",attribute:"address-language"},{key:"region",attribute:"address-region"}]}async#s(){const e=this.getAttribute("public-api-key");if(!this.#e&&e)try{(e=>{var t,s,r,i,o,a,n,l,u,c,d,m,p;window.google?.maps||(t={key:e},o="The Google Maps JavaScript API",a="google",n="importLibrary",l="__ib__",u=document,c=window,d=(c=c[a]||(c[a]={})).maps||(c.maps={}),m=new Set,p=new URLSearchParams,d[n]?console.warn(o+" only loads once. Ignoring:",t):d[n]=(e,...c)=>m.add(e)&&(s||(s=new Promise((async(e,n)=>{for(i in await(r=u.createElement("script")),p.set("libraries",[...m]+""),t)p.set(i.replace(/[A-Z]/g,(e=>"_"+e[0].toLowerCase())),t[i]);p.set("callback",a+".maps."+l),r.src=`https://maps.${a}apis.com/maps/api/js?`+p,d[l]=e,r.onerror=()=>s=n(Error(o+" could not load.")),r.nonce=u.querySelector("script[nonce]")?.nonce||"",u.head.append(r)})))).then((()=>d[n](e,...c))))})(e);const{AutocompleteSuggestion:t}=await google.maps.importLibrary("places");this.#e=t}catch(e){throw console.error("Failed to initialize Google Maps Autocomplete service:",e),e}}async _fetchResults(e){if(!e?.trim())return{results:[]};try{await this.#t;const t={input:e};this.getOptionalParams().forEach((({attribute:e,key:s,defaultValue:r})=>{const i=this.getAttribute(e)||r;i&&(t[s]="includedPrimaryTypes"===s?i.split(",").map((e=>e.trim())).filter(Boolean):i)}));const{suggestions:s}=await this.#e.fetchAutocompleteSuggestions(t);return this.#r(s)}catch(e){return console.error("Google Maps Places Autocomplete failed:",e),{results:[],error:r.OR.FETCH_RESULTS_ERROR}}}#r(e){return e?.length?{results:e.map((e=>{const t=e.placePrediction;return{id:t.placeId,label:t.text.text,value:t.text.text}}))}:{results:[]}}}class l extends((0,r.h)()){getRequiredParams(){return["public-api-key"]}getOptionalParams(){return[{key:"layers",attribute:"address-types"},{key:"limit",attribute:"address-limit"},{key:"lang",attribute:"address-language"},{key:"countryCode",attribute:"address-region"}]}async _fetchResults(e){if(!e?.trim())return{results:[]};const t=this.getAttribute("public-api-key"),s=new URLSearchParams({query:e.trim()});this.getOptionalParams().forEach((({attribute:e,key:t,defaultValue:r})=>{const i=this.getAttribute(e)||r;i&&("layers"===t||"countryCode"===t?s.append(t,i.split(",").map((e=>e.trim())).filter(Boolean).join(",")):s.append(t,i))}));try{const e=await fetch(`https://api.radar.io/v1/search/autocomplete?${s.toString()}`,{headers:{Authorization:t}});if(!e.ok)throw new Error(`Radar API returned ${e.status}`);const r=await e.json();return this.#r(r)}catch(e){return console.error("Radar Places Autocomplete failed:",e),{results:[],error:r.OR.FETCH_RESULTS_ERROR}}}#r(e){return e?.addresses?.length?{results:e.addresses.map((e=>({label:e.formattedAddress,value:e.formattedAddress})))}:{results:[]}}}const u=(0,i.xE)("address-field-internal"),c="google-maps-places",d="radar",m={[c]:n,[d]:l},p=(0,r.yc)({componentName:u,baseSelector:""}),h=["public-api-key"],g=[...h],b=(0,a.Zz)((0,o.Jm)({connectorClasses:m}))(class extends p{static get observedAttributes(){return[].concat(p.observedAttributes||[],g)}get errorMsgValueMissing(){return this.getAttribute("data-errormessage-value-missing")||this.defaultErrorMsgValueMissing}constructor(){super(),this.innerHTML="\n <div>\n <descope-autocomplete-field></descope-autocomplete-field>\n </div>\n ",this.autocompleteField=this.querySelector("descope-autocomplete-field")}get value(){return this.autocompleteField.value}set value(e){this.autocompleteField.value=e}focus(){this.autocompleteField.focus()}init(){this.addEventListener("focus",(e=>{e.isTrusted&&this.autocompleteField.focus()})),super.init?.(),this.initAutocomplete()}initAutocomplete(){(0,i.EA)(this,this.autocompleteField,{includeAttrs:["size","bordered","label","label-type","placeholder","disabled","readonly","required","full-width","helper-text","error-message","default-value","data-errormessage-value-missing","st-host-direction","allow-custom-value","min-search-length","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),(0,i.Gh)(this,this.autocompleteField,{includeAttrs:["invalid"]}),this.autocompleteField.fetchResults=this.fetchConnectorResults.bind(this)}attributeChangedCallback(e,t,s){super.attributeChangedCallback?.(e,t,s),t!==s&&h.includes(e)&&this.initializeConnector()}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:{valid:!0}}});customElements.define(u,b);const v=(0,i.xE)("address-field"),{host:y}={host:{selector:()=>":host"}},f=(0,a.Zz)((0,o.RF)({componentNameOverride:(0,i.xE)("input-wrapper")}),(0,o.RF)({mappings:{hostWidth:{...y,property:"width"},hostDirection:{...y,property:"direction"}}}),o.VO,(0,o.OZ)({proxyProps:["value","selectionStart"],inputEvent:"input",proxyParentValidation:!0}),o.tQ,(e=>class extends e{get defaultValue(){return this.getAttribute("default-value")}setDefaultValue(){this.defaultValue&&setTimeout((()=>{this.inputElement.value=this.defaultValue}))}set connectorClasses(e){this.inputElement.connectorClasses=e}get connectorClasses(){return this.inputElement.connectorClasses}init(){super.init?.();const e=document.createElement("template");e.innerHTML=`\n <${u}\n tabindex="-1"\n ></${u}>\n `,this.baseElement.appendChild(e.content.cloneNode(!0)),this.inputElement=this.shadowRoot.querySelector(u),(0,i.EA)(this,this.inputElement,{includeAttrs:["size","bordered","label","required","label-type","placeholder","full-width","allow-custom-value","min-search-length","no-results-message","error-fetching-results-message","data-errormessage-value-missing","invalid","error-message","readonly","disabled","st-host-direction","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding","connector-template","public-api-key","address-types","address-language","address-region","address-limit"]}),(0,i.Gh)(this,this.inputElement,{includeAttrs:["invalid"]}),this.setDefaultValue()}}))((0,o.tz)({slots:[],wrappedEleName:"vaadin-custom-field",style:()=>`\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n ${u} {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n ${u} ::slotted {\n padding: 0;\n }\n`,excludeAttrsSync:["tabindex","error-message","label"],componentName:v}));customElements.define(v,f)},93847:(e,t,s)=>{s.r(t),s.d(t,{AutocompleteFieldClass:()=>h,componentName:()=>m}),s(25003),s(27092);var r=s(72270),i=s(25964),o=s(63200);const a=(0,i.xE)("autocomplete-field-internal"),n=(0,r.yc)({componentName:a,baseSelector:""}),l=[],u="DESCOPE_INVALID_OPTION";customElements.define(a,class extends n{static get observedAttributes(){return[].concat(n.observedAttributes||[],l)}get allowCustomValue(){return"true"===this.getAttribute("allow-custom-value")}get minSearchLength(){return this.getAttribute("min-search-length")||3}get noResultsFoundMessage(){return this.getAttribute("no-results-message")||"No results found"}get errorFetchingResultsMessage(){return this.getAttribute("error-fetching-results-message")||"An error occurred fetching results"}constructor(){super(),this.innerHTML='\n <div class="autocomplete-field">\n <descope-combo-box clear-button-visible="true" auto-open-disabled="true" has-dynamic-data="true" item-label-path="data-name" item-value-path="data-id" hide-toggle-button="true"></descope-combo-box>\n </div>\n ',this.comboBox=this.querySelector("descope-combo-box")}get value(){return this.comboBox.value}set value(e){this.allowCustomValue?this.comboBox.value=e:(this.comboBox.data=[{label:e,value:e}],setTimeout((()=>{this.comboBox.value=e})))}get defaultValue(){return this.getAttribute("default-value")}async#i(e){const{results:t,error:s}=await this.fetchResults(e);return s?{error:s}:{results:t}}#o(e,t,s,r){return`<span data-name="${s}" data-id="${t}" ${r?'disabled="true"':""}>${e||s}</span>`}#a(){this.comboBox.renderer=(e,t,s)=>{"true"===s.item.getAttribute("disabled")?e.setAttribute("disabled","true"):e.removeAttribute("disabled"),e.innerHTML=s.item.outerHTML},this.comboBox.renderItem=({displayName:e,value:t,label:s,disabled:r})=>this.#o(e,t,s,r)}focus(){this.comboBox.focus()}init(){this.addEventListener("focus",(e=>{e.isTrusted&&this.comboBox.focus()})),super.init?.(),this.#n(),(0,i.Gh)(this,this.comboBox,{includeAttrs:["invalid"]})}#n(){this.debouncedSearch=(0,o.g5)((async e=>{try{const{results:t,error:s}=await this.#i(e);return{results:t,error:s,value:e}}catch(t){return{error:t,value:e}}}),250),(0,i.EA)(this,this.comboBox,{includeAttrs:["size","bordered","label","label-type","placeholder","disabled","readonly","required","full-width","helper-text","invalid","error-message","data-errormessage-value-missing","st-host-direction","allow-custom-value","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),this.comboBox.addEventListener("filter-changed",this.onSearch.bind(this)),this.#a()}#l(){return[{label:this.noResultsFoundMessage,value:u,disabled:!0}]}#u(){return[{label:this.errorFetchingResultsMessage,value:u,disabled:!0}]}async onSearch(e){const t=e.detail.value;if(!t||t.length<this.minSearchLength)return;this.comboBox.loading=!0,this.comboBox.setAttribute("opened","true");const s=await this.debouncedSearch(t);s&&s.value===t&&(this.comboBox.loading=!1,s.error?this.comboBox.data=this.#u():0===s.results?.length?this.comboBox.data=this.#l():this.comboBox.data=s.results||[])}fetchResults(e){return console.warn("fetchResults","needs to be implemented"),{results:[],error:void 0}}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:{valid:!0}}});var c=s(88961),d=s(86365);const m=(0,i.xE)("autocomplete-field"),{host:p}={host:{selector:()=>":host"}},h=(0,o.Zz)((0,c.RF)({componentNameOverride:(0,i.xE)("input-wrapper")}),(0,c.RF)({mappings:{hostWidth:{...p,property:"width"},hostDirection:{...p,property:"direction"},fontSize:{...p},checkmarkDisplay:{selector:d.C.componentName,property:d.C.cssVarList.overlayCheckmarkDisplay},itemPaddingInlineStart:{selector:d.C.componentName,property:d.C.cssVarList.overlayItemPaddingInlineStart},itemPaddingInlineEnd:{selector:d.C.componentName,property:d.C.cssVarList.overlayItemPaddingInlineEnd},selectedItemBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlaySelectedItemBackground},selectedItemHoverBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlaySelectedItemHoverBackground},selectedItemFocusBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlaySelectedItemFocusBackground},itemHoverBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlayItemHoverBackground}}}),c.VO,(0,c.OZ)({proxyProps:["value","selectionStart"],inputEvent:"input",proxyParentValidation:!0}),c.tQ,(e=>class extends e{get defaultValue(){return this.getAttribute("default-value")}setDefaultValue(){this.defaultValue&&setTimeout((()=>{this.inputElement.value=this.defaultValue}))}init(){super.init?.();const e=document.createElement("template");e.innerHTML=`\n <${a}\n tabindex="-1"\n ></${a}>\n `,this.baseElement.appendChild(e.content.cloneNode(!0)),this.inputElement=this.shadowRoot.querySelector(a),(0,i.EA)(this,this.inputElement,{includeAttrs:["size","bordered","label","required","label-type","placeholder","full-width","allow-custom-value","min-search-length","no-results-message","error-fetching-results-message","data-errormessage-value-missing","invalid","error-message","readonly","disabled","st-host-direction","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),(0,i.Gh)(this,this.inputElement,{includeAttrs:["invalid"]}),this.inputElement.fetchResults=this.fetchResults,this.setDefaultValue()}set fetchResults(e){this.inputElement.fetchResults=e}}))((0,c.tz)({slots:[],wrappedEleName:"vaadin-custom-field",style:()=>"\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n ",excludeAttrsSync:["tabindex","error-message","label"],componentName:m}));customElements.define(m,h)}}]);
|
1
|
+
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[8712,8822],{25278:(e,t,s)=>{s.r(t),s.d(t,{AddressFieldClass:()=>f,componentName:()=>v}),s(25003),s(93847);var r=s(72270),i=s(25964),o=s(88961),a=s(63200);class n extends((0,r.h)()){#e=null;#t=null;constructor(e){super(e),this.#t=this.#s()}getRequiredParams(){return["public-api-key"]}getOptionalParams(){return[{key:"includedPrimaryTypes",attribute:"address-types"},{key:"language",attribute:"address-language"},{key:"region",attribute:"address-region"}]}async#s(){const e=this.getAttribute("public-api-key");if(!this.#e&&e)try{(e=>{var t,s,r,i,o,a,n,l,u,c,d,m,p;window.google?.maps||(t={key:e},o="The Google Maps JavaScript API",a="google",n="importLibrary",l="__ib__",u=document,c=window,d=(c=c[a]||(c[a]={})).maps||(c.maps={}),m=new Set,p=new URLSearchParams,d[n]?console.warn(o+" only loads once. Ignoring:",t):d[n]=(e,...c)=>m.add(e)&&(s||(s=new Promise((async(e,n)=>{for(i in await(r=u.createElement("script")),p.set("libraries",[...m]+""),t)p.set(i.replace(/[A-Z]/g,(e=>"_"+e[0].toLowerCase())),t[i]);p.set("callback",a+".maps."+l),r.src=`https://maps.${a}apis.com/maps/api/js?`+p,d[l]=e,r.onerror=()=>s=n(Error(o+" could not load.")),r.nonce=u.querySelector("script[nonce]")?.nonce||"",u.head.append(r)})))).then((()=>d[n](e,...c))))})(e);const{AutocompleteSuggestion:t}=await google.maps.importLibrary("places");this.#e=t}catch(e){throw console.error("Failed to initialize Google Maps Autocomplete service:",e),e}}async _fetchResults(e){if(!e?.trim())return{results:[]};try{await this.#t;const t={input:e};this.getOptionalParams().forEach((({attribute:e,key:s,defaultValue:r})=>{const i=this.getAttribute(e)||r;i&&(t[s]="includedPrimaryTypes"===s?i.split(",").map((e=>e.trim())).filter(Boolean):i)}));const{suggestions:s}=await this.#e.fetchAutocompleteSuggestions(t);return this.#r(s)}catch(e){return console.error("Google Maps Places Autocomplete failed:",e),{results:[],error:r.OR.FETCH_RESULTS_ERROR}}}#r(e){return e?.length?{results:e.map((e=>{const t=e.placePrediction;return{id:t.placeId,label:t.text.text,value:t.text.text}}))}:{results:[]}}}class l extends((0,r.h)()){getRequiredParams(){return["public-api-key"]}getOptionalParams(){return[{key:"layers",attribute:"address-types"},{key:"limit",attribute:"address-limit"},{key:"lang",attribute:"address-language"},{key:"countryCode",attribute:"address-region"}]}async _fetchResults(e){if(!e?.trim())return{results:[]};const t=this.getAttribute("public-api-key"),s=new URLSearchParams({query:e.trim()});this.getOptionalParams().forEach((({attribute:e,key:t,defaultValue:r})=>{const i=this.getAttribute(e)||r;i&&("layers"===t||"countryCode"===t?s.append(t,i.split(",").map((e=>e.trim())).filter(Boolean).join(",")):s.append(t,i))}));try{const e=await fetch(`https://api.radar.io/v1/search/autocomplete?${s.toString()}`,{headers:{Authorization:t}});if(!e.ok)throw new Error(`Radar API returned ${e.status}`);const r=await e.json();return this.#r(r)}catch(e){return console.error("Radar Places Autocomplete failed:",e),{results:[],error:r.OR.FETCH_RESULTS_ERROR}}}#r(e){return e?.addresses?.length?{results:e.addresses.map((e=>({label:e.formattedAddress,value:e.formattedAddress})))}:{results:[]}}}const u=(0,i.xE)("address-field-internal"),c="google-maps-places",d="radar",m={[c]:n,[d]:l},p=(0,r.yc)({componentName:u,baseSelector:""}),h=["public-api-key"],g=[...h],b=(0,a.Zz)((0,o.Jm)({connectorClasses:m}))(class extends p{static get observedAttributes(){return[].concat(p.observedAttributes||[],g)}get errorMsgValueMissing(){return this.getAttribute("data-errormessage-value-missing")||this.defaultErrorMsgValueMissing}constructor(){super(),this.innerHTML="\n <div>\n <descope-autocomplete-field></descope-autocomplete-field>\n </div>\n ",this.autocompleteField=this.querySelector("descope-autocomplete-field")}get value(){return this.autocompleteField.value}set value(e){this.autocompleteField.value=e}focus(){this.autocompleteField.focus()}init(){this.addEventListener("focus",(e=>{e.isTrusted&&this.autocompleteField.focus()})),super.init?.(),this.initAutocomplete()}initAutocomplete(){(0,i.EA)(this,this.autocompleteField,{includeAttrs:["size","bordered","label","label-type","placeholder","disabled","readonly","required","full-width","helper-text","error-message","default-value","data-errormessage-value-missing","st-host-direction","allow-custom-value","min-search-length","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),(0,i.Gh)(this,this.autocompleteField,{includeAttrs:["invalid"]}),this.autocompleteField.fetchResults=this.fetchConnectorResults.bind(this)}attributeChangedCallback(e,t,s){super.attributeChangedCallback?.(e,t,s),t!==s&&h.includes(e)&&this.initializeConnector()}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:{valid:!0}}});customElements.define(u,b);const v=(0,i.xE)("address-field"),{host:y}={host:{selector:()=>":host"}},f=(0,a.Zz)((0,o.RF)({componentNameOverride:(0,i.xE)("input-wrapper")}),(0,o.RF)({mappings:{hostWidth:{...y,property:"width"},hostDirection:{...y,property:"direction"}}}),o.VO,(0,o.OZ)({proxyProps:["value","selectionStart"],inputEvent:"input",proxyParentValidation:!0}),o.tQ,(e=>class extends e{get defaultValue(){return this.getAttribute("default-value")}setDefaultValue(){this.defaultValue&&setTimeout((()=>{this.inputElement.value=this.defaultValue}))}set connectorClasses(e){this.inputElement.connectorClasses=e}get connectorClasses(){return this.inputElement.connectorClasses}init(){super.init?.();const e=document.createElement("template");e.innerHTML=`\n <${u}\n tabindex="-1"\n ></${u}>\n `,this.baseElement.appendChild(e.content.cloneNode(!0)),this.inputElement=this.shadowRoot.querySelector(u),(0,i.EA)(this,this.inputElement,{includeAttrs:["size","bordered","label","required","label-type","placeholder","full-width","allow-custom-value","min-search-length","no-results-message","error-fetching-results-message","data-errormessage-value-missing","invalid","error-message","readonly","disabled","st-host-direction","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding","connector-template","public-api-key","address-types","address-language","address-region","address-limit"]}),(0,i.Gh)(this,this.inputElement,{includeAttrs:["invalid"]}),this.setDefaultValue()}}))((0,o.tz)({slots:[],wrappedEleName:"vaadin-custom-field",style:()=>`\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n ${u} {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n ${u} ::slotted {\n padding: 0;\n }\n`,excludeAttrsSync:["tabindex","error-message","label"],componentName:v}));customElements.define(v,f)},93847:(e,t,s)=>{s.r(t),s.d(t,{AutocompleteFieldClass:()=>h,componentName:()=>m}),s(25003),s(27092);var r=s(72270),i=s(25964),o=s(63200);const a=(0,i.xE)("autocomplete-field-internal"),n=(0,r.yc)({componentName:a,baseSelector:""}),l=[],u="DESCOPE_INVALID_OPTION";customElements.define(a,class extends n{static get observedAttributes(){return[].concat(n.observedAttributes||[],l)}get allowCustomValue(){return"true"===this.getAttribute("allow-custom-value")}get minSearchLength(){return this.getAttribute("min-search-length")||3}get noResultsFoundMessage(){return this.getAttribute("no-results-message")||"No results found"}get errorFetchingResultsMessage(){return this.getAttribute("error-fetching-results-message")||"An error occurred fetching results"}constructor(){super(),this.innerHTML='\n <div class="autocomplete-field">\n <descope-combo-box clear-button-visible="true" auto-open-disabled="true" has-dynamic-data="true" item-label-path="data-name" item-value-path="data-id" hide-toggle-button="true"></descope-combo-box>\n </div>\n ',this.comboBox=this.querySelector("descope-combo-box")}get value(){return this.comboBox.value}set value(e){this.allowCustomValue?this.comboBox.value=e:(this.comboBox.data=[{label:e,value:e}],setTimeout((()=>{this.comboBox.value=e})))}get defaultValue(){return this.getAttribute("default-value")}async#i(e){const{results:t,error:s}=await this.fetchResults(e);return s?{error:s}:{results:t}}#o(e,t,s,r){return`<span data-name="${s}" data-id="${t}" ${r?'disabled="true"':""}>${e||s}</span>`}#a(){this.comboBox.renderer=(e,t,s)=>{"true"===s.item.getAttribute("disabled")?e.setAttribute("disabled","true"):e.removeAttribute("disabled"),e.innerHTML=s.item.outerHTML},this.comboBox.renderItem=({displayName:e,value:t,label:s,disabled:r})=>this.#o(e,t,s,r)}focus(){this.comboBox.focus()}init(){this.addEventListener("focus",(e=>{e.isTrusted&&this.comboBox.focus()})),super.init?.(),this.#n(),(0,i.Gh)(this,this.comboBox,{includeAttrs:["invalid"]})}#n(){this.debouncedSearch=(0,o.g5)((async e=>{try{const{results:t,error:s}=await this.#i(e);return{results:t,error:s,value:e}}catch(t){return{error:t,value:e}}}),250),(0,i.EA)(this,this.comboBox,{includeAttrs:["size","bordered","label","label-type","placeholder","disabled","readonly","required","full-width","helper-text","invalid","error-message","data-errormessage-value-missing","st-host-direction","allow-custom-value","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),this.comboBox.addEventListener("filter-changed",this.onSearch.bind(this)),this.#a()}#l(){return[{label:this.noResultsFoundMessage,value:u,disabled:!0}]}#u(){return[{label:this.errorFetchingResultsMessage,value:u,disabled:!0}]}async onSearch(e){const t=e.detail.value;if(!t||t.length<this.minSearchLength)return;this.comboBox.loading=!0,this.comboBox.setAttribute("opened","true");const s=await this.debouncedSearch(t);s&&s.value===t&&(this.comboBox.loading=!1,s.error?this.comboBox.data=this.#u():0===s.results?.length?this.comboBox.data=this.#l():this.comboBox.data=s.results||[])}fetchResults(e){return console.warn("fetchResults","needs to be implemented"),{results:[],error:void 0}}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:{valid:!0}}});var c=s(88961),d=s(86365);const m=(0,i.xE)("autocomplete-field"),{host:p}={host:{selector:()=>":host"}},h=(0,o.Zz)((0,c.RF)({componentNameOverride:(0,i.xE)("input-wrapper")}),(0,c.RF)({mappings:{hostWidth:{...p,property:"width"},hostDirection:{...p,property:"direction"},fontSize:{...p},checkmarkDisplay:{selector:d.C.componentName,property:d.C.cssVarList.overlayCheckmarkDisplay},itemPaddingInlineStart:{selector:d.C.componentName,property:d.C.cssVarList.overlayItemPaddingInlineStart},itemPaddingInlineEnd:{selector:d.C.componentName,property:d.C.cssVarList.overlayItemPaddingInlineEnd},selectedItemBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlaySelectedItemBackground},selectedItemHoverBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlaySelectedItemHoverBackground},selectedItemFocusBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlaySelectedItemFocusBackground},itemHoverBackground:{selector:d.C.componentName,property:d.C.cssVarList.overlayItemHoverBackground}}}),c.VO,(0,c.OZ)({proxyProps:["value","selectionStart"],inputEvent:"input",proxyParentValidation:!0}),c.tQ,(e=>class extends e{get defaultValue(){return this.getAttribute("default-value")}setDefaultValue(){this.defaultValue&&setTimeout((()=>{this.inputElement.value=this.defaultValue}))}init(){super.init?.();const e=document.createElement("template");e.innerHTML=`\n <${a}\n tabindex="-1"\n ></${a}>\n `,this.baseElement.appendChild(e.content.cloneNode(!0)),this.inputElement=this.shadowRoot.querySelector(a),(0,i.EA)(this,this.inputElement,{includeAttrs:["size","bordered","label","required","label-type","placeholder","full-width","allow-custom-value","min-search-length","no-results-message","error-fetching-results-message","data-errormessage-value-missing","invalid","error-message","readonly","disabled","st-host-direction","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),(0,i.Gh)(this,this.inputElement,{includeAttrs:["invalid"]}),this.inputElement.fetchResults=this.fetchResults,this.setDefaultValue()}set fetchResults(e){this.inputElement.fetchResults=e}}))((0,c.tz)({slots:[],wrappedEleName:"vaadin-custom-field",style:()=>"\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n ",excludeAttrsSync:["tabindex","error-message","label"],componentName:m}));customElements.define(m,h)}}]);
|
2
2
|
//# sourceMappingURL=descope-address-field.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"descope-address-field.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-address-field/src/connectors/google.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/connectors/googleScriptInit.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/connectors/radar.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/descope-address-field-internal/AddressFieldInternal.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/descope-address-field-internal/index.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/AddressFieldClass.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/AutocompleteFieldInternal.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/index.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/AutocompleteFieldClass.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/index.js"],"sourcesContent":["/* global google */\n\nimport {\n createBaseConnectorClass,\n CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\nimport { initGoogleMapsLoader } from './googleScriptInit';\n\nexport class GoogleMapsConnector extends createBaseConnectorClass() {\n #autocompleteService = null;\n\n #initializationPromise = null;\n\n constructor(getAttribute) {\n super(getAttribute);\n // Start initialization but don't block constructor\n this.#initializationPromise = this.#initializeAutocompleteService();\n }\n\n // eslint-disable-next-line class-methods-use-this\n getRequiredParams() {\n return ['public-api-key'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getOptionalParams() {\n return [\n {\n key: 'includedPrimaryTypes',\n attribute: 'address-types',\n },\n {\n key: 'language',\n attribute: 'address-language',\n },\n {\n key: 'region',\n attribute: 'address-region',\n },\n ];\n }\n\n async #initializeAutocompleteService() {\n const apiKey = this.getAttribute('public-api-key');\n if (this.#autocompleteService || !apiKey) {\n return;\n }\n\n try {\n initGoogleMapsLoader(apiKey);\n\n const { AutocompleteSuggestion } =\n await google.maps.importLibrary('places');\n this.#autocompleteService = AutocompleteSuggestion;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n 'Failed to initialize Google Maps Autocomplete service:',\n error,\n );\n throw error;\n }\n }\n\n async _fetchResults(query) {\n if (!query?.trim()) {\n return { results: [] };\n }\n\n try {\n await this.#initializationPromise;\n\n const request = {\n input: query,\n };\n\n // Add optional parameters\n this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n const value = this.getAttribute(attribute) || defaultValue;\n if (value) {\n if (key === 'includedPrimaryTypes') {\n request[key] = value\n .split(',')\n .map((type) => type.trim())\n .filter(Boolean);\n } else {\n request[key] = value;\n }\n }\n });\n\n const { suggestions } =\n await this.#autocompleteService.fetchAutocompleteSuggestions(request);\n return this.#parseResponse(suggestions);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Google Maps Places Autocomplete failed:', error);\n return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n #parseResponse(suggestions) {\n if (!suggestions?.length) {\n return { results: [] };\n }\n\n return {\n results: suggestions.map((suggestion) => {\n const prediction = suggestion.placePrediction;\n return {\n id: prediction.placeId,\n label: prediction.text.text,\n value: prediction.text.text,\n };\n }),\n };\n }\n}\n","export const initGoogleMapsLoader = (apiKey) => {\n if (window.google?.maps) {\n return;\n }\n\n /* eslint-disable */\n // prettier-ignore\n (g=>{var h,a,k,p=\"The Google Maps JavaScript API\",c=\"google\",l=\"importLibrary\",q=\"__ib__\",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement(\"script\"));e.set(\"libraries\",[...r]+\"\");for(k in g)e.set(k.replace(/[A-Z]/g,t=>\"_\"+t[0].toLowerCase()),g[k]);e.set(\"callback\",c+\".maps.\"+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+\" could not load.\"));a.nonce=m.querySelector(\"script[nonce]\")?.nonce||\"\";m.head.append(a)}));d[l]?console.warn(p+\" only loads once. Ignoring:\",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({\n key: apiKey,\n });\n /* eslint-enable */\n};\n","import {\n createBaseConnectorClass,\n CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\n\nconst RADAR_AUTOCOMPLETE_URL = 'https://api.radar.io/v1/search/autocomplete';\n\nexport class RadarConnector extends createBaseConnectorClass() {\n // eslint-disable-next-line class-methods-use-this\n getRequiredParams() {\n return ['public-api-key'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getOptionalParams() {\n return [\n {\n key: 'layers',\n attribute: 'address-types',\n },\n {\n key: 'limit',\n attribute: 'address-limit',\n },\n {\n key: 'lang',\n attribute: 'address-language',\n },\n {\n key: 'countryCode',\n attribute: 'address-region',\n },\n ];\n }\n\n async _fetchResults(query) {\n if (!query?.trim()) {\n return { results: [] };\n }\n\n const apiKey = this.getAttribute('public-api-key');\n const params = new URLSearchParams({\n query: query.trim(),\n });\n\n // Add optional parameters\n this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n const value = this.getAttribute(attribute) || defaultValue;\n if (value) {\n if (key === 'layers' || key === 'countryCode') {\n params.append(\n key,\n value\n .split(',')\n .map((type) => type.trim())\n .filter(Boolean)\n .join(','),\n );\n } else {\n params.append(key, value);\n }\n }\n });\n\n try {\n const response = await fetch(\n `${RADAR_AUTOCOMPLETE_URL}?${params.toString()}`,\n {\n headers: {\n Authorization: apiKey,\n },\n },\n );\n\n if (!response.ok) {\n throw new Error(`Radar API returned ${response.status}`);\n }\n\n const data = await response.json();\n return this.#parseResponse(data);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Radar Places Autocomplete failed:', error);\n return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n #parseResponse(data) {\n if (!data?.addresses?.length) {\n return { results: [] };\n }\n return {\n results: data.addresses.map((address) => ({\n label: address.formattedAddress,\n value: address.formattedAddress,\n })),\n };\n }\n}\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n getComponentName,\n forwardAttrs,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { connectorMixin } from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { GoogleMapsConnector, RadarConnector } from '../../connectors';\n\nexport const componentName = getComponentName('address-field-internal');\n\nconst GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';\nconst RADAR_CONNECTOR_TEMPLATE = 'radar';\n\nconst CONNECTOR_CLASSES = {\n [GOOGLE_MAPS_CONNECTOR_TEMPLATE]: GoogleMapsConnector,\n [RADAR_CONNECTOR_TEMPLATE]: RadarConnector,\n};\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst initConnectorAttrs = ['public-api-key'];\nconst observedAttrs = [...initConnectorAttrs];\n\nclass RawAddressFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get errorMsgValueMissing() {\n return (\n this.getAttribute('data-errormessage-value-missing') ||\n this.defaultErrorMsgValueMissing\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div>\n <descope-autocomplete-field></descope-autocomplete-field>\n </div>\n `;\n\n this.autocompleteField = this.querySelector('descope-autocomplete-field');\n }\n\n get value() {\n return this.autocompleteField.value;\n }\n\n set value(val) {\n this.autocompleteField.value = val;\n }\n\n focus() {\n this.autocompleteField.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.autocompleteField.focus();\n });\n\n super.init?.();\n this.initAutocomplete();\n }\n\n initAutocomplete() {\n forwardAttrs(this, this.autocompleteField, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'error-message',\n 'default-value',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'min-search-length',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n // This is required since when we remove the invalid attribute from the autocomplete field,\n // we want to reflect the change in the address field component\n syncAttrs(this, this.autocompleteField, { includeAttrs: ['invalid'] });\n\n // Bind the connector fetch results fn to the autocomplete field\n this.autocompleteField.fetchResults = this.fetchConnectorResults.bind(this);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (initConnectorAttrs.includes(attrName)) {\n this.initializeConnector();\n }\n }\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport const AddressFieldInternal = compose(\n connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),\n)(RawAddressFieldInternal);\n","import { AddressFieldInternal, componentName } from './AddressFieldInternal';\n\ncustomElements.define(componentName, AddressFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n getComponentName,\n forwardAttrs,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { componentName as descopeInternalComponentName } from './descope-address-field-internal/AddressFieldInternal';\n\nexport const componentName = getComponentName('address-field');\n\nconst customMixin = (superclass) =>\n class AddressFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n set connectorClasses(value) {\n this.inputElement.connectorClasses = value;\n }\n\n get connectorClasses() {\n return this.inputElement.connectorClasses;\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n 'connector-template',\n 'public-api-key',\n 'address-types',\n 'address-language',\n 'address-region',\n 'address-limit',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.setDefaultValue();\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AddressFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n ${descopeInternalComponentName} {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n ${descopeInternalComponentName} ::slotted {\n padding: 0;\n }\n`,\n excludeAttrsSync: ['tabindex', 'error-message', 'label'],\n componentName,\n }),\n);\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-autocomplete-field';\nimport './descope-address-field-internal';\n\nimport { componentName, AddressFieldClass } from './AddressFieldClass';\n\ncustomElements.define(componentName, AddressFieldClass);\n\nexport { AddressFieldClass, componentName };\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { asyncDebounce } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('autocomplete-field-internal');\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst observedAttrs = [];\n\nconst INVALID_OPTION_VALUE = 'DESCOPE_INVALID_OPTION';\nconst DEBOUNCE_SEARCH_DELAY = 250;\n\nclass AutocompleteFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get allowCustomValue() {\n return this.getAttribute('allow-custom-value') === 'true';\n }\n\n get minSearchLength() {\n return this.getAttribute('min-search-length') || 3;\n }\n\n get noResultsFoundMessage() {\n return this.getAttribute('no-results-message') || 'No results found';\n }\n\n get errorFetchingResultsMessage() {\n return (\n this.getAttribute('error-fetching-results-message') ||\n 'An error occurred fetching results'\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"autocomplete-field\">\n <descope-combo-box clear-button-visible=\"true\" auto-open-disabled=\"true\" has-dynamic-data=\"true\" item-label-path=\"data-name\" item-value-path=\"data-id\" hide-toggle-button=\"true\"></descope-combo-box>\n </div>\n `;\n\n this.comboBox = this.querySelector('descope-combo-box');\n }\n\n get value() {\n return this.comboBox.value;\n }\n\n set value(val) {\n if (!this.allowCustomValue) {\n this.comboBox.data = [{ label: val, value: val }];\n setTimeout(() => {\n this.comboBox.value = val;\n });\n } else {\n this.comboBox.value = val;\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n async #autoCompleteSearch(value) {\n const { results, error } = await this.fetchResults(value);\n if (error) {\n return { error };\n }\n return {\n results,\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n #itemRenderer(displayName, value, label, disabled) {\n return `<span data-name=\"${label}\" data-id=\"${value}\" ${disabled ? 'disabled=\"true\"' : ''}>${\n displayName || label\n }</span>`;\n }\n\n #overrideComboBoxRenderers() {\n this.comboBox.renderer = (root, _, model) => {\n if (model.item.getAttribute('disabled') === 'true') {\n root.setAttribute('disabled', 'true');\n } else {\n root.removeAttribute('disabled');\n }\n // eslint-disable-next-line no-param-reassign\n root.innerHTML = model.item.outerHTML;\n };\n\n this.comboBox.renderItem = ({ displayName, value, label, disabled }) =>\n this.#itemRenderer(displayName, value, label, disabled);\n }\n\n focus() {\n this.comboBox.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.comboBox.focus();\n });\n\n super.init?.();\n this.#initComboBox();\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.comboBox, { includeAttrs: ['invalid'] });\n }\n\n #initComboBox() {\n this.debouncedSearch = asyncDebounce(async (value) => {\n try {\n const { results, error } = await this.#autoCompleteSearch(value);\n return { results, error, value };\n } catch (error) {\n return { error, value };\n }\n }, DEBOUNCE_SEARCH_DELAY);\n\n forwardAttrs(this, this.comboBox, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'invalid',\n 'error-message',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n this.comboBox.addEventListener('filter-changed', this.onSearch.bind(this));\n this.#overrideComboBoxRenderers();\n }\n\n #getEmptyResultsData() {\n return [\n {\n label: this.noResultsFoundMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n #getErrorResultsData() {\n return [\n {\n label: this.errorFetchingResultsMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n async onSearch(e) {\n const searchValue = e.detail.value;\n if (!searchValue || searchValue.length < this.minSearchLength) {\n return;\n }\n this.comboBox.loading = true;\n this.comboBox.setAttribute('opened', 'true');\n const response = await this.debouncedSearch(searchValue);\n if (response && response.value === searchValue) {\n this.comboBox.loading = false;\n if (response.error) {\n this.comboBox.data = this.#getErrorResultsData();\n } else if (response.results?.length === 0) {\n this.comboBox.data = this.#getEmptyResultsData();\n } else {\n this.comboBox.data = response.results || [];\n }\n }\n }\n\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n fetchResults(value) {\n // eslint-disable-next-line no-console\n console.warn('fetchResults', 'needs to be implemented');\n return { results: [], error: undefined };\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport default AutocompleteFieldInternal;\n","import AutocompleteFieldInternal, {\n componentName,\n} from './AutocompleteFieldInternal';\n\ncustomElements.define(componentName, AutocompleteFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { componentName as descopeInternalComponentName } from './descope-autocomplete-field-internal/AutocompleteFieldInternal';\n\nexport const componentName = getComponentName('autocomplete-field');\n\nconst customMixin = (superclass) =>\n class AutocompleteFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.inputElement.fetchResults = this.fetchResults;\n this.setDefaultValue();\n }\n\n set fetchResults(fetchResults) {\n this.inputElement.fetchResults = fetchResults;\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AutocompleteFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: { ...host },\n checkmarkDisplay: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,\n },\n itemPaddingInlineStart: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineStart,\n },\n itemPaddingInlineEnd: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineEnd,\n },\n selectedItemBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemBackground,\n },\n selectedItemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemHoverBackground,\n },\n selectedItemFocusBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemFocusBackground,\n },\n itemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemHoverBackground,\n },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n `,\n excludeAttrsSync: ['tabindex', 'error-message', 'label'],\n componentName,\n }),\n);\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-autocomplete-field-internal';\n\nimport {\n componentName,\n AutocompleteFieldClass,\n} from './AutocompleteFieldClass';\n\ncustomElements.define(componentName, AutocompleteFieldClass);\n\nexport { AutocompleteFieldClass, componentName };\n"],"names":["GoogleMapsConnector","constructor","getAttribute","super","this","getRequiredParams","getOptionalParams","key","attribute","apiKey","g","h","a","k","p","c","l","q","m","b","d","r","e","window","google","maps","document","Set","URLSearchParams","console","warn","f","n","add","Promise","async","createElement","set","replace","t","toLowerCase","src","onerror","Error","nonce","querySelector","head","append","then","initGoogleMapsLoader","AutocompleteSuggestion","importLibrary","error","_fetchResults","query","trim","results","request","input","forEach","defaultValue","value","split","map","type","filter","Boolean","suggestions","fetchAutocompleteSuggestions","FETCH_RESULTS_ERROR","length","suggestion","prediction","placePrediction","id","placeId","label","text","RadarConnector","params","join","response","fetch","toString","headers","Authorization","ok","status","data","json","addresses","address","formattedAddress","componentName","GOOGLE_MAPS_CONNECTOR_TEMPLATE","RADAR_CONNECTOR_TEMPLATE","CONNECTOR_CLASSES","BaseInputClass","baseSelector","initConnectorAttrs","observedAttrs","AddressFieldInternal","connectorClasses","observedAttributes","concat","errorMsgValueMissing","defaultErrorMsgValueMissing","innerHTML","autocompleteField","val","focus","init","addEventListener","isTrusted","initAutocomplete","includeAttrs","fetchResults","fetchConnectorResults","bind","attributeChangedCallback","attrName","oldValue","newValue","includes","initializeConnector","getValidity","isRequired","valueMissing","valid","customElements","define","host","selector","AddressFieldClass","componentNameOverride","mappings","hostWidth","property","hostDirection","proxyProps","inputEvent","proxyParentValidation","superclass","setDefaultValue","setTimeout","inputElement","template","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync","INVALID_OPTION_VALUE","allowCustomValue","minSearchLength","noResultsFoundMessage","errorFetchingResultsMessage","comboBox","displayName","disabled","renderer","root","_","model","item","setAttribute","removeAttribute","outerHTML","renderItem","debouncedSearch","onSearch","searchValue","detail","loading","undefined","AutocompleteFieldClass","fontSize","checkmarkDisplay","ComboBoxClass","C","cssVarList","overlayCheckmarkDisplay","itemPaddingInlineStart","overlayItemPaddingInlineStart","itemPaddingInlineEnd","overlayItemPaddingInlineEnd","selectedItemBackground","overlaySelectedItemBackground","selectedItemHoverBackground","overlaySelectedItemHoverBackground","selectedItemFocusBackground","overlaySelectedItemFocusBackground","itemHoverBackground","overlayItemHoverBackground"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"descope-address-field.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-address-field/src/connectors/google.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/connectors/googleScriptInit.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/connectors/radar.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/descope-address-field-internal/AddressFieldInternal.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/descope-address-field-internal/index.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/AddressFieldClass.js","webpack://@descope/web-components-ui/../components/descope-address-field/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/AutocompleteFieldInternal.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/index.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/AutocompleteFieldClass.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/index.js"],"sourcesContent":["/* global google */\n\nimport {\n createBaseConnectorClass,\n CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\nimport { initGoogleMapsLoader } from './googleScriptInit';\n\nexport class GoogleMapsConnector extends createBaseConnectorClass() {\n #autocompleteService = null;\n\n #initializationPromise = null;\n\n constructor(getAttribute) {\n super(getAttribute);\n // Start initialization but don't block constructor\n this.#initializationPromise = this.#initializeAutocompleteService();\n }\n\n // eslint-disable-next-line class-methods-use-this\n getRequiredParams() {\n return ['public-api-key'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getOptionalParams() {\n return [\n {\n key: 'includedPrimaryTypes',\n attribute: 'address-types',\n },\n {\n key: 'language',\n attribute: 'address-language',\n },\n {\n key: 'region',\n attribute: 'address-region',\n },\n ];\n }\n\n async #initializeAutocompleteService() {\n const apiKey = this.getAttribute('public-api-key');\n if (this.#autocompleteService || !apiKey) {\n return;\n }\n\n try {\n initGoogleMapsLoader(apiKey);\n\n const { AutocompleteSuggestion } =\n await google.maps.importLibrary('places');\n this.#autocompleteService = AutocompleteSuggestion;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n 'Failed to initialize Google Maps Autocomplete service:',\n error,\n );\n throw error;\n }\n }\n\n async _fetchResults(query) {\n if (!query?.trim()) {\n return { results: [] };\n }\n\n try {\n await this.#initializationPromise;\n\n const request = {\n input: query,\n };\n\n // Add optional parameters\n this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n const value = this.getAttribute(attribute) || defaultValue;\n if (value) {\n if (key === 'includedPrimaryTypes') {\n request[key] = value\n .split(',')\n .map((type) => type.trim())\n .filter(Boolean);\n } else {\n request[key] = value;\n }\n }\n });\n\n const { suggestions } =\n await this.#autocompleteService.fetchAutocompleteSuggestions(request);\n return this.#parseResponse(suggestions);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Google Maps Places Autocomplete failed:', error);\n return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n #parseResponse(suggestions) {\n if (!suggestions?.length) {\n return { results: [] };\n }\n\n return {\n results: suggestions.map((suggestion) => {\n const prediction = suggestion.placePrediction;\n return {\n id: prediction.placeId,\n label: prediction.text.text,\n value: prediction.text.text,\n };\n }),\n };\n }\n}\n","export const initGoogleMapsLoader = (apiKey) => {\n if (window.google?.maps) {\n return;\n }\n\n /* eslint-disable */\n // prettier-ignore\n (g=>{var h,a,k,p=\"The Google Maps JavaScript API\",c=\"google\",l=\"importLibrary\",q=\"__ib__\",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement(\"script\"));e.set(\"libraries\",[...r]+\"\");for(k in g)e.set(k.replace(/[A-Z]/g,t=>\"_\"+t[0].toLowerCase()),g[k]);e.set(\"callback\",c+\".maps.\"+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+\" could not load.\"));a.nonce=m.querySelector(\"script[nonce]\")?.nonce||\"\";m.head.append(a)}));d[l]?console.warn(p+\" only loads once. Ignoring:\",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({\n key: apiKey,\n });\n /* eslint-enable */\n};\n","import {\n createBaseConnectorClass,\n CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\n\nconst RADAR_AUTOCOMPLETE_URL = 'https://api.radar.io/v1/search/autocomplete';\n\nexport class RadarConnector extends createBaseConnectorClass() {\n // eslint-disable-next-line class-methods-use-this\n getRequiredParams() {\n return ['public-api-key'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getOptionalParams() {\n return [\n {\n key: 'layers',\n attribute: 'address-types',\n },\n {\n key: 'limit',\n attribute: 'address-limit',\n },\n {\n key: 'lang',\n attribute: 'address-language',\n },\n {\n key: 'countryCode',\n attribute: 'address-region',\n },\n ];\n }\n\n async _fetchResults(query) {\n if (!query?.trim()) {\n return { results: [] };\n }\n\n const apiKey = this.getAttribute('public-api-key');\n const params = new URLSearchParams({\n query: query.trim(),\n });\n\n // Add optional parameters\n this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n const value = this.getAttribute(attribute) || defaultValue;\n if (value) {\n if (key === 'layers' || key === 'countryCode') {\n params.append(\n key,\n value\n .split(',')\n .map((type) => type.trim())\n .filter(Boolean)\n .join(','),\n );\n } else {\n params.append(key, value);\n }\n }\n });\n\n try {\n const response = await fetch(\n `${RADAR_AUTOCOMPLETE_URL}?${params.toString()}`,\n {\n headers: {\n Authorization: apiKey,\n },\n },\n );\n\n if (!response.ok) {\n throw new Error(`Radar API returned ${response.status}`);\n }\n\n const data = await response.json();\n return this.#parseResponse(data);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Radar Places Autocomplete failed:', error);\n return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n #parseResponse(data) {\n if (!data?.addresses?.length) {\n return { results: [] };\n }\n return {\n results: data.addresses.map((address) => ({\n label: address.formattedAddress,\n value: address.formattedAddress,\n })),\n };\n }\n}\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n getComponentName,\n forwardAttrs,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { connectorMixin } from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { GoogleMapsConnector, RadarConnector } from '../../connectors';\n\nexport const componentName = getComponentName('address-field-internal');\n\nconst GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';\nconst RADAR_CONNECTOR_TEMPLATE = 'radar';\n\nconst CONNECTOR_CLASSES = {\n [GOOGLE_MAPS_CONNECTOR_TEMPLATE]: GoogleMapsConnector,\n [RADAR_CONNECTOR_TEMPLATE]: RadarConnector,\n};\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst initConnectorAttrs = ['public-api-key'];\nconst observedAttrs = [...initConnectorAttrs];\n\nclass RawAddressFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get errorMsgValueMissing() {\n return (\n this.getAttribute('data-errormessage-value-missing') ||\n this.defaultErrorMsgValueMissing\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div>\n <descope-autocomplete-field></descope-autocomplete-field>\n </div>\n `;\n\n this.autocompleteField = this.querySelector('descope-autocomplete-field');\n }\n\n get value() {\n return this.autocompleteField.value;\n }\n\n set value(val) {\n this.autocompleteField.value = val;\n }\n\n focus() {\n this.autocompleteField.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.autocompleteField.focus();\n });\n\n super.init?.();\n this.initAutocomplete();\n }\n\n initAutocomplete() {\n forwardAttrs(this, this.autocompleteField, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'error-message',\n 'default-value',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'min-search-length',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n // This is required since when we remove the invalid attribute from the autocomplete field,\n // we want to reflect the change in the address field component\n syncAttrs(this, this.autocompleteField, { includeAttrs: ['invalid'] });\n\n // Bind the connector fetch results fn to the autocomplete field\n this.autocompleteField.fetchResults = this.fetchConnectorResults.bind(this);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (initConnectorAttrs.includes(attrName)) {\n this.initializeConnector();\n }\n }\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport const AddressFieldInternal = compose(\n connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),\n)(RawAddressFieldInternal);\n","import { AddressFieldInternal, componentName } from './AddressFieldInternal';\n\ncustomElements.define(componentName, AddressFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n getComponentName,\n forwardAttrs,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { componentName as descopeInternalComponentName } from './descope-address-field-internal/AddressFieldInternal';\n\nexport const componentName = getComponentName('address-field');\n\nconst customMixin = (superclass) =>\n class AddressFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n set connectorClasses(value) {\n this.inputElement.connectorClasses = value;\n }\n\n get connectorClasses() {\n return this.inputElement.connectorClasses;\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n 'connector-template',\n 'public-api-key',\n 'address-types',\n 'address-language',\n 'address-region',\n 'address-limit',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.setDefaultValue();\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AddressFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n ${descopeInternalComponentName} {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n ${descopeInternalComponentName} ::slotted {\n padding: 0;\n }\n`,\n excludeAttrsSync: ['tabindex', 'error-message', 'label'],\n componentName,\n }),\n);\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-autocomplete-field';\nimport './descope-address-field-internal';\n\nimport { componentName, AddressFieldClass } from './AddressFieldClass';\n\ncustomElements.define(componentName, AddressFieldClass);\n\nexport { AddressFieldClass, componentName };\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { asyncDebounce } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('autocomplete-field-internal');\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst observedAttrs = [];\n\nconst INVALID_OPTION_VALUE = 'DESCOPE_INVALID_OPTION';\nconst DEBOUNCE_SEARCH_DELAY = 250;\n\nclass AutocompleteFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get allowCustomValue() {\n return this.getAttribute('allow-custom-value') === 'true';\n }\n\n get minSearchLength() {\n return this.getAttribute('min-search-length') || 3;\n }\n\n get noResultsFoundMessage() {\n return this.getAttribute('no-results-message') || 'No results found';\n }\n\n get errorFetchingResultsMessage() {\n return (\n this.getAttribute('error-fetching-results-message') ||\n 'An error occurred fetching results'\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"autocomplete-field\">\n <descope-combo-box clear-button-visible=\"true\" auto-open-disabled=\"true\" has-dynamic-data=\"true\" item-label-path=\"data-name\" item-value-path=\"data-id\" hide-toggle-button=\"true\"></descope-combo-box>\n </div>\n `;\n\n this.comboBox = this.querySelector('descope-combo-box');\n }\n\n get value() {\n return this.comboBox.value;\n }\n\n set value(val) {\n if (!this.allowCustomValue) {\n this.comboBox.data = [{ label: val, value: val }];\n setTimeout(() => {\n this.comboBox.value = val;\n });\n } else {\n this.comboBox.value = val;\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n async #autoCompleteSearch(value) {\n const { results, error } = await this.fetchResults(value);\n if (error) {\n return { error };\n }\n return {\n results,\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n #itemRenderer(displayName, value, label, disabled) {\n return `<span data-name=\"${label}\" data-id=\"${value}\" ${disabled ? 'disabled=\"true\"' : ''}>${\n displayName || label\n }</span>`;\n }\n\n #overrideComboBoxRenderers() {\n this.comboBox.renderer = (root, _, model) => {\n if (model.item.getAttribute('disabled') === 'true') {\n root.setAttribute('disabled', 'true');\n } else {\n root.removeAttribute('disabled');\n }\n // eslint-disable-next-line no-param-reassign\n root.innerHTML = model.item.outerHTML;\n };\n\n this.comboBox.renderItem = ({ displayName, value, label, disabled }) =>\n this.#itemRenderer(displayName, value, label, disabled);\n }\n\n focus() {\n this.comboBox.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.comboBox.focus();\n });\n\n super.init?.();\n this.#initComboBox();\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.comboBox, { includeAttrs: ['invalid'] });\n }\n\n #initComboBox() {\n this.debouncedSearch = asyncDebounce(async (value) => {\n try {\n const { results, error } = await this.#autoCompleteSearch(value);\n return { results, error, value };\n } catch (error) {\n return { error, value };\n }\n }, DEBOUNCE_SEARCH_DELAY);\n\n forwardAttrs(this, this.comboBox, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'invalid',\n 'error-message',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n this.comboBox.addEventListener('filter-changed', this.onSearch.bind(this));\n this.#overrideComboBoxRenderers();\n }\n\n #getEmptyResultsData() {\n return [\n {\n label: this.noResultsFoundMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n #getErrorResultsData() {\n return [\n {\n label: this.errorFetchingResultsMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n async onSearch(e) {\n const searchValue = e.detail.value;\n if (!searchValue || searchValue.length < this.minSearchLength) {\n return;\n }\n this.comboBox.loading = true;\n this.comboBox.setAttribute('opened', 'true');\n const response = await this.debouncedSearch(searchValue);\n if (response && response.value === searchValue) {\n this.comboBox.loading = false;\n if (response.error) {\n this.comboBox.data = this.#getErrorResultsData();\n } else if (response.results?.length === 0) {\n this.comboBox.data = this.#getEmptyResultsData();\n } else {\n this.comboBox.data = response.results || [];\n }\n }\n }\n\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n fetchResults(value) {\n // eslint-disable-next-line no-console\n console.warn('fetchResults', 'needs to be implemented');\n return { results: [], error: undefined };\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport default AutocompleteFieldInternal;\n","import AutocompleteFieldInternal, {\n componentName,\n} from './AutocompleteFieldInternal';\n\ncustomElements.define(componentName, AutocompleteFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { componentName as descopeInternalComponentName } from './descope-autocomplete-field-internal/AutocompleteFieldInternal';\n\nexport const componentName = getComponentName('autocomplete-field');\n\nconst customMixin = (superclass) =>\n class AutocompleteFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.inputElement.fetchResults = this.fetchResults;\n this.setDefaultValue();\n }\n\n set fetchResults(fetchResults) {\n this.inputElement.fetchResults = fetchResults;\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AutocompleteFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: { ...host },\n checkmarkDisplay: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,\n },\n itemPaddingInlineStart: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineStart,\n },\n itemPaddingInlineEnd: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineEnd,\n },\n selectedItemBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemBackground,\n },\n selectedItemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemHoverBackground,\n },\n selectedItemFocusBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemFocusBackground,\n },\n itemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemHoverBackground,\n },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n `,\n excludeAttrsSync: ['tabindex', 'error-message', 'label'],\n componentName,\n }),\n);\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-autocomplete-field-internal';\n\nimport {\n componentName,\n AutocompleteFieldClass,\n} from './AutocompleteFieldClass';\n\ncustomElements.define(componentName, AutocompleteFieldClass);\n\nexport { AutocompleteFieldClass, componentName };\n"],"names":["GoogleMapsConnector","constructor","getAttribute","super","this","getRequiredParams","getOptionalParams","key","attribute","apiKey","g","h","a","k","p","c","l","q","m","b","d","r","e","window","google","maps","document","Set","URLSearchParams","console","warn","f","n","add","Promise","async","createElement","set","replace","t","toLowerCase","src","onerror","Error","nonce","querySelector","head","append","then","initGoogleMapsLoader","AutocompleteSuggestion","importLibrary","error","_fetchResults","query","trim","results","request","input","forEach","defaultValue","value","split","map","type","filter","Boolean","suggestions","fetchAutocompleteSuggestions","FETCH_RESULTS_ERROR","length","suggestion","prediction","placePrediction","id","placeId","label","text","RadarConnector","params","join","response","fetch","toString","headers","Authorization","ok","status","data","json","addresses","address","formattedAddress","componentName","GOOGLE_MAPS_CONNECTOR_TEMPLATE","RADAR_CONNECTOR_TEMPLATE","CONNECTOR_CLASSES","BaseInputClass","baseSelector","initConnectorAttrs","observedAttrs","AddressFieldInternal","connectorClasses","observedAttributes","concat","errorMsgValueMissing","defaultErrorMsgValueMissing","innerHTML","autocompleteField","val","focus","init","addEventListener","isTrusted","initAutocomplete","includeAttrs","fetchResults","fetchConnectorResults","bind","attributeChangedCallback","attrName","oldValue","newValue","includes","initializeConnector","getValidity","isRequired","valueMissing","valid","customElements","define","host","selector","AddressFieldClass","componentNameOverride","mappings","hostWidth","property","hostDirection","proxyProps","inputEvent","proxyParentValidation","superclass","setDefaultValue","setTimeout","inputElement","template","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync","INVALID_OPTION_VALUE","allowCustomValue","minSearchLength","noResultsFoundMessage","errorFetchingResultsMessage","comboBox","displayName","disabled","renderer","root","_","model","item","setAttribute","removeAttribute","outerHTML","renderItem","debouncedSearch","onSearch","searchValue","detail","loading","undefined","AutocompleteFieldClass","fontSize","checkmarkDisplay","ComboBoxClass","C","cssVarList","overlayCheckmarkDisplay","itemPaddingInlineStart","overlayItemPaddingInlineStart","itemPaddingInlineEnd","overlayItemPaddingInlineEnd","selectedItemBackground","overlaySelectedItemBackground","selectedItemHoverBackground","overlaySelectedItemHoverBackground","selectedItemFocusBackground","overlaySelectedItemFocusBackground","itemHoverBackground","overlayItemHoverBackground"],"sourceRoot":""}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[8712],{93847:(e,t,s)=>{s.r(t),s.d(t,{AutocompleteFieldClass:()=>p,componentName:()=>m}),s(25003),s(27092);var r=s(72270),o=s(25964),i=s(63200);const n=(0,o.xE)("autocomplete-field-internal"),a=(0,r.yc)({componentName:n,baseSelector:""}),l=[],u="DESCOPE_INVALID_OPTION";customElements.define(n,class extends a{static get observedAttributes(){return[].concat(a.observedAttributes||[],l)}get allowCustomValue(){return"true"===this.getAttribute("allow-custom-value")}get minSearchLength(){return this.getAttribute("min-search-length")||3}get noResultsFoundMessage(){return this.getAttribute("no-results-message")||"No results found"}get errorFetchingResultsMessage(){return this.getAttribute("error-fetching-results-message")||"An error occurred fetching results"}constructor(){super(),this.innerHTML='\n <div class="autocomplete-field">\n <descope-combo-box clear-button-visible="true" auto-open-disabled="true" has-dynamic-data="true" item-label-path="data-name" item-value-path="data-id" hide-toggle-button="true"></descope-combo-box>\n </div>\n ',this.comboBox=this.querySelector("descope-combo-box")}get value(){return this.comboBox.value}set value(e){this.allowCustomValue?this.comboBox.value=e:(this.comboBox.data=[{label:e,value:e}],setTimeout((()=>{this.comboBox.value=e})))}get defaultValue(){return this.getAttribute("default-value")}async#e(e){const{results:t,error:s}=await this.fetchResults(e);return s?{error:s}:{results:t}}#t(e,t,s,r){return`<span data-name="${s}" data-id="${t}" ${r?'disabled="true"':""}>${e||s}</span>`}#s(){this.comboBox.renderer=(e,t,s)=>{"true"===s.item.getAttribute("disabled")?e.setAttribute("disabled","true"):e.removeAttribute("disabled"),e.innerHTML=s.item.outerHTML},this.comboBox.renderItem=({displayName:e,value:t,label:s,disabled:r})=>this.#t(e,t,s,r)}focus(){this.comboBox.focus()}init(){this.addEventListener("focus",(e=>{e.isTrusted&&this.comboBox.focus()})),super.init?.(),this.#r(),(0,o.Gh)(this,this.comboBox,{includeAttrs:["invalid"]})}#r(){this.debouncedSearch=(0,i.g5)((async e=>{try{const{results:t,error:s}=await this.#e(e);return{results:t,error:s,value:e}}catch(t){return{error:t,value:e}}}),250),(0,o.EA)(this,this.comboBox,{includeAttrs:["size","bordered","label","label-type","placeholder","disabled","readonly","required","full-width","helper-text","invalid","error-message","data-errormessage-value-missing","st-host-direction","allow-custom-value","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),this.comboBox.addEventListener("filter-changed",this.onSearch.bind(this)),this.#s()}#o(){return[{label:this.noResultsFoundMessage,value:u,disabled:!0}]}#i(){return[{label:this.errorFetchingResultsMessage,value:u,disabled:!0}]}async onSearch(e){const t=e.detail.value;if(!t||t.length<this.minSearchLength)return;this.comboBox.loading=!0,this.comboBox.setAttribute("opened","true");const s=await this.debouncedSearch(t);s&&s.value===t&&(this.comboBox.loading=!1,s.error?this.comboBox.data=this.#i():0===s.results?.length?this.comboBox.data=this.#o():this.comboBox.data=s.results||[])}fetchResults(e){return console.warn("fetchResults","needs to be implemented"),{results:[],error:void 0}}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:{valid:!0}}});var
|
1
|
+
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[8712],{93847:(e,t,s)=>{s.r(t),s.d(t,{AutocompleteFieldClass:()=>p,componentName:()=>m}),s(25003),s(27092);var r=s(72270),o=s(25964),i=s(63200);const n=(0,o.xE)("autocomplete-field-internal"),a=(0,r.yc)({componentName:n,baseSelector:""}),l=[],u="DESCOPE_INVALID_OPTION";customElements.define(n,class extends a{static get observedAttributes(){return[].concat(a.observedAttributes||[],l)}get allowCustomValue(){return"true"===this.getAttribute("allow-custom-value")}get minSearchLength(){return this.getAttribute("min-search-length")||3}get noResultsFoundMessage(){return this.getAttribute("no-results-message")||"No results found"}get errorFetchingResultsMessage(){return this.getAttribute("error-fetching-results-message")||"An error occurred fetching results"}constructor(){super(),this.innerHTML='\n <div class="autocomplete-field">\n <descope-combo-box clear-button-visible="true" auto-open-disabled="true" has-dynamic-data="true" item-label-path="data-name" item-value-path="data-id" hide-toggle-button="true"></descope-combo-box>\n </div>\n ',this.comboBox=this.querySelector("descope-combo-box")}get value(){return this.comboBox.value}set value(e){this.allowCustomValue?this.comboBox.value=e:(this.comboBox.data=[{label:e,value:e}],setTimeout((()=>{this.comboBox.value=e})))}get defaultValue(){return this.getAttribute("default-value")}async#e(e){const{results:t,error:s}=await this.fetchResults(e);return s?{error:s}:{results:t}}#t(e,t,s,r){return`<span data-name="${s}" data-id="${t}" ${r?'disabled="true"':""}>${e||s}</span>`}#s(){this.comboBox.renderer=(e,t,s)=>{"true"===s.item.getAttribute("disabled")?e.setAttribute("disabled","true"):e.removeAttribute("disabled"),e.innerHTML=s.item.outerHTML},this.comboBox.renderItem=({displayName:e,value:t,label:s,disabled:r})=>this.#t(e,t,s,r)}focus(){this.comboBox.focus()}init(){this.addEventListener("focus",(e=>{e.isTrusted&&this.comboBox.focus()})),super.init?.(),this.#r(),(0,o.Gh)(this,this.comboBox,{includeAttrs:["invalid"]})}#r(){this.debouncedSearch=(0,i.g5)((async e=>{try{const{results:t,error:s}=await this.#e(e);return{results:t,error:s,value:e}}catch(t){return{error:t,value:e}}}),250),(0,o.EA)(this,this.comboBox,{includeAttrs:["size","bordered","label","label-type","placeholder","disabled","readonly","required","full-width","helper-text","invalid","error-message","data-errormessage-value-missing","st-host-direction","allow-custom-value","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),this.comboBox.addEventListener("filter-changed",this.onSearch.bind(this)),this.#s()}#o(){return[{label:this.noResultsFoundMessage,value:u,disabled:!0}]}#i(){return[{label:this.errorFetchingResultsMessage,value:u,disabled:!0}]}async onSearch(e){const t=e.detail.value;if(!t||t.length<this.minSearchLength)return;this.comboBox.loading=!0,this.comboBox.setAttribute("opened","true");const s=await this.debouncedSearch(t);s&&s.value===t&&(this.comboBox.loading=!1,s.error?this.comboBox.data=this.#i():0===s.results?.length?this.comboBox.data=this.#o():this.comboBox.data=s.results||[])}fetchResults(e){return console.warn("fetchResults","needs to be implemented"),{results:[],error:void 0}}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:{valid:!0}}});var d=s(88961),c=s(86365);const m=(0,o.xE)("autocomplete-field"),{host:h}={host:{selector:()=>":host"}},p=(0,i.Zz)((0,d.RF)({componentNameOverride:(0,o.xE)("input-wrapper")}),(0,d.RF)({mappings:{hostWidth:{...h,property:"width"},hostDirection:{...h,property:"direction"},fontSize:{...h},checkmarkDisplay:{selector:c.C.componentName,property:c.C.cssVarList.overlayCheckmarkDisplay},itemPaddingInlineStart:{selector:c.C.componentName,property:c.C.cssVarList.overlayItemPaddingInlineStart},itemPaddingInlineEnd:{selector:c.C.componentName,property:c.C.cssVarList.overlayItemPaddingInlineEnd},selectedItemBackground:{selector:c.C.componentName,property:c.C.cssVarList.overlaySelectedItemBackground},selectedItemHoverBackground:{selector:c.C.componentName,property:c.C.cssVarList.overlaySelectedItemHoverBackground},selectedItemFocusBackground:{selector:c.C.componentName,property:c.C.cssVarList.overlaySelectedItemFocusBackground},itemHoverBackground:{selector:c.C.componentName,property:c.C.cssVarList.overlayItemHoverBackground}}}),d.VO,(0,d.OZ)({proxyProps:["value","selectionStart"],inputEvent:"input",proxyParentValidation:!0}),d.tQ,(e=>class extends e{get defaultValue(){return this.getAttribute("default-value")}setDefaultValue(){this.defaultValue&&setTimeout((()=>{this.inputElement.value=this.defaultValue}))}init(){super.init?.();const e=document.createElement("template");e.innerHTML=`\n <${n}\n tabindex="-1"\n ></${n}>\n `,this.baseElement.appendChild(e.content.cloneNode(!0)),this.inputElement=this.shadowRoot.querySelector(n),(0,o.EA)(this,this.inputElement,{includeAttrs:["size","bordered","label","required","label-type","placeholder","full-width","allow-custom-value","min-search-length","no-results-message","error-fetching-results-message","data-errormessage-value-missing","invalid","error-message","readonly","disabled","st-host-direction","st-error-message-icon","st-error-message-icon-size","st-error-message-icon-padding"]}),(0,o.Gh)(this,this.inputElement,{includeAttrs:["invalid"]}),this.inputElement.fetchResults=this.fetchResults,this.setDefaultValue()}set fetchResults(e){this.inputElement.fetchResults=e}}))((0,d.tz)({slots:[],wrappedEleName:"vaadin-custom-field",style:()=>"\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n ",excludeAttrsSync:["tabindex","error-message","label"],componentName:m}));customElements.define(m,p)}}]);
|
2
2
|
//# sourceMappingURL=descope-autocomplete-field.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"descope-autocomplete-field.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/AutocompleteFieldInternal.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/index.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/AutocompleteFieldClass.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/index.js"],"sourcesContent":["import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { asyncDebounce } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('autocomplete-field-internal');\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst observedAttrs = [];\n\nconst INVALID_OPTION_VALUE = 'DESCOPE_INVALID_OPTION';\nconst DEBOUNCE_SEARCH_DELAY = 250;\n\nclass AutocompleteFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get allowCustomValue() {\n return this.getAttribute('allow-custom-value') === 'true';\n }\n\n get minSearchLength() {\n return this.getAttribute('min-search-length') || 3;\n }\n\n get noResultsFoundMessage() {\n return this.getAttribute('no-results-message') || 'No results found';\n }\n\n get errorFetchingResultsMessage() {\n return (\n this.getAttribute('error-fetching-results-message') ||\n 'An error occurred fetching results'\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"autocomplete-field\">\n <descope-combo-box clear-button-visible=\"true\" auto-open-disabled=\"true\" has-dynamic-data=\"true\" item-label-path=\"data-name\" item-value-path=\"data-id\" hide-toggle-button=\"true\"></descope-combo-box>\n </div>\n `;\n\n this.comboBox = this.querySelector('descope-combo-box');\n }\n\n get value() {\n return this.comboBox.value;\n }\n\n set value(val) {\n if (!this.allowCustomValue) {\n this.comboBox.data = [{ label: val, value: val }];\n setTimeout(() => {\n this.comboBox.value = val;\n });\n } else {\n this.comboBox.value = val;\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n async #autoCompleteSearch(value) {\n const { results, error } = await this.fetchResults(value);\n if (error) {\n return { error };\n }\n return {\n results,\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n #itemRenderer(displayName, value, label, disabled) {\n return `<span data-name=\"${label}\" data-id=\"${value}\" ${disabled ? 'disabled=\"true\"' : ''}>${\n displayName || label\n }</span>`;\n }\n\n #overrideComboBoxRenderers() {\n this.comboBox.renderer = (root, _, model) => {\n if (model.item.getAttribute('disabled') === 'true') {\n root.setAttribute('disabled', 'true');\n } else {\n root.removeAttribute('disabled');\n }\n // eslint-disable-next-line no-param-reassign\n root.innerHTML = model.item.outerHTML;\n };\n\n this.comboBox.renderItem = ({ displayName, value, label, disabled }) =>\n this.#itemRenderer(displayName, value, label, disabled);\n }\n\n focus() {\n this.comboBox.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.comboBox.focus();\n });\n\n super.init?.();\n this.#initComboBox();\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.comboBox, { includeAttrs: ['invalid'] });\n }\n\n #initComboBox() {\n this.debouncedSearch = asyncDebounce(async (value) => {\n try {\n const { results, error } = await this.#autoCompleteSearch(value);\n return { results, error, value };\n } catch (error) {\n return { error, value };\n }\n }, DEBOUNCE_SEARCH_DELAY);\n\n forwardAttrs(this, this.comboBox, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'invalid',\n 'error-message',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n this.comboBox.addEventListener('filter-changed', this.onSearch.bind(this));\n this.#overrideComboBoxRenderers();\n }\n\n #getEmptyResultsData() {\n return [\n {\n label: this.noResultsFoundMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n #getErrorResultsData() {\n return [\n {\n label: this.errorFetchingResultsMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n async onSearch(e) {\n const searchValue = e.detail.value;\n if (!searchValue || searchValue.length < this.minSearchLength) {\n return;\n }\n this.comboBox.loading = true;\n this.comboBox.setAttribute('opened', 'true');\n const response = await this.debouncedSearch(searchValue);\n if (response && response.value === searchValue) {\n this.comboBox.loading = false;\n if (response.error) {\n this.comboBox.data = this.#getErrorResultsData();\n } else if (response.results?.length === 0) {\n this.comboBox.data = this.#getEmptyResultsData();\n } else {\n this.comboBox.data = response.results || [];\n }\n }\n }\n\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n fetchResults(value) {\n // eslint-disable-next-line no-console\n console.warn('fetchResults', 'needs to be implemented');\n return { results: [], error: undefined };\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport default AutocompleteFieldInternal;\n","import AutocompleteFieldInternal, {\n componentName,\n} from './AutocompleteFieldInternal';\n\ncustomElements.define(componentName, AutocompleteFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { componentName as descopeInternalComponentName } from './descope-autocomplete-field-internal/AutocompleteFieldInternal';\n\nexport const componentName = getComponentName('autocomplete-field');\n\nconst customMixin = (superclass) =>\n class AutocompleteFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.inputElement.fetchResults = this.fetchResults;\n this.setDefaultValue();\n }\n\n set fetchResults(fetchResults) {\n this.inputElement.fetchResults = fetchResults;\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AutocompleteFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: { ...host },\n checkmarkDisplay: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,\n },\n itemPaddingInlineStart: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineStart,\n },\n itemPaddingInlineEnd: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineEnd,\n },\n selectedItemBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemBackground,\n },\n selectedItemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemHoverBackground,\n },\n selectedItemFocusBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemFocusBackground,\n },\n itemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemHoverBackground,\n },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n `,\n excludeAttrsSync: ['tabindex', 'error-message', 'label'],\n componentName,\n }),\n);\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-autocomplete-field-internal';\n\nimport {\n componentName,\n AutocompleteFieldClass,\n} from './AutocompleteFieldClass';\n\ncustomElements.define(componentName, AutocompleteFieldClass);\n\nexport { AutocompleteFieldClass, componentName };\n"],"names":["componentName","BaseInputClass","baseSelector","observedAttrs","INVALID_OPTION_VALUE","customElements","define","observedAttributes","concat","allowCustomValue","this","getAttribute","minSearchLength","noResultsFoundMessage","errorFetchingResultsMessage","constructor","super","innerHTML","comboBox","querySelector","value","val","data","label","setTimeout","defaultValue","results","error","fetchResults","displayName","disabled","renderer","root","_","model","item","setAttribute","removeAttribute","outerHTML","renderItem","focus","init","addEventListener","e","isTrusted","includeAttrs","debouncedSearch","async","onSearch","bind","searchValue","detail","length","loading","response","console","warn","undefined","getValidity","isRequired","valueMissing","valid","host","selector","AutocompleteFieldClass","componentNameOverride","mappings","hostWidth","property","hostDirection","fontSize","checkmarkDisplay","ComboBoxClass","C","cssVarList","overlayCheckmarkDisplay","itemPaddingInlineStart","overlayItemPaddingInlineStart","itemPaddingInlineEnd","overlayItemPaddingInlineEnd","selectedItemBackground","overlaySelectedItemBackground","selectedItemHoverBackground","overlaySelectedItemHoverBackground","selectedItemFocusBackground","overlaySelectedItemFocusBackground","itemHoverBackground","overlayItemHoverBackground","proxyProps","inputEvent","proxyParentValidation","superclass","setDefaultValue","inputElement","template","document","createElement","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"descope-autocomplete-field.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/AutocompleteFieldInternal.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/index.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/AutocompleteFieldClass.js","webpack://@descope/web-components-ui/../components/descope-autocomplete-field/src/component/index.js"],"sourcesContent":["import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { asyncDebounce } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('autocomplete-field-internal');\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst observedAttrs = [];\n\nconst INVALID_OPTION_VALUE = 'DESCOPE_INVALID_OPTION';\nconst DEBOUNCE_SEARCH_DELAY = 250;\n\nclass AutocompleteFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get allowCustomValue() {\n return this.getAttribute('allow-custom-value') === 'true';\n }\n\n get minSearchLength() {\n return this.getAttribute('min-search-length') || 3;\n }\n\n get noResultsFoundMessage() {\n return this.getAttribute('no-results-message') || 'No results found';\n }\n\n get errorFetchingResultsMessage() {\n return (\n this.getAttribute('error-fetching-results-message') ||\n 'An error occurred fetching results'\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"autocomplete-field\">\n <descope-combo-box clear-button-visible=\"true\" auto-open-disabled=\"true\" has-dynamic-data=\"true\" item-label-path=\"data-name\" item-value-path=\"data-id\" hide-toggle-button=\"true\"></descope-combo-box>\n </div>\n `;\n\n this.comboBox = this.querySelector('descope-combo-box');\n }\n\n get value() {\n return this.comboBox.value;\n }\n\n set value(val) {\n if (!this.allowCustomValue) {\n this.comboBox.data = [{ label: val, value: val }];\n setTimeout(() => {\n this.comboBox.value = val;\n });\n } else {\n this.comboBox.value = val;\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n async #autoCompleteSearch(value) {\n const { results, error } = await this.fetchResults(value);\n if (error) {\n return { error };\n }\n return {\n results,\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n #itemRenderer(displayName, value, label, disabled) {\n return `<span data-name=\"${label}\" data-id=\"${value}\" ${disabled ? 'disabled=\"true\"' : ''}>${\n displayName || label\n }</span>`;\n }\n\n #overrideComboBoxRenderers() {\n this.comboBox.renderer = (root, _, model) => {\n if (model.item.getAttribute('disabled') === 'true') {\n root.setAttribute('disabled', 'true');\n } else {\n root.removeAttribute('disabled');\n }\n // eslint-disable-next-line no-param-reassign\n root.innerHTML = model.item.outerHTML;\n };\n\n this.comboBox.renderItem = ({ displayName, value, label, disabled }) =>\n this.#itemRenderer(displayName, value, label, disabled);\n }\n\n focus() {\n this.comboBox.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.comboBox.focus();\n });\n\n super.init?.();\n this.#initComboBox();\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.comboBox, { includeAttrs: ['invalid'] });\n }\n\n #initComboBox() {\n this.debouncedSearch = asyncDebounce(async (value) => {\n try {\n const { results, error } = await this.#autoCompleteSearch(value);\n return { results, error, value };\n } catch (error) {\n return { error, value };\n }\n }, DEBOUNCE_SEARCH_DELAY);\n\n forwardAttrs(this, this.comboBox, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'invalid',\n 'error-message',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n this.comboBox.addEventListener('filter-changed', this.onSearch.bind(this));\n this.#overrideComboBoxRenderers();\n }\n\n #getEmptyResultsData() {\n return [\n {\n label: this.noResultsFoundMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n #getErrorResultsData() {\n return [\n {\n label: this.errorFetchingResultsMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n async onSearch(e) {\n const searchValue = e.detail.value;\n if (!searchValue || searchValue.length < this.minSearchLength) {\n return;\n }\n this.comboBox.loading = true;\n this.comboBox.setAttribute('opened', 'true');\n const response = await this.debouncedSearch(searchValue);\n if (response && response.value === searchValue) {\n this.comboBox.loading = false;\n if (response.error) {\n this.comboBox.data = this.#getErrorResultsData();\n } else if (response.results?.length === 0) {\n this.comboBox.data = this.#getEmptyResultsData();\n } else {\n this.comboBox.data = response.results || [];\n }\n }\n }\n\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n fetchResults(value) {\n // eslint-disable-next-line no-console\n console.warn('fetchResults', 'needs to be implemented');\n return { results: [], error: undefined };\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport default AutocompleteFieldInternal;\n","import AutocompleteFieldInternal, {\n componentName,\n} from './AutocompleteFieldInternal';\n\ncustomElements.define(componentName, AutocompleteFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { componentName as descopeInternalComponentName } from './descope-autocomplete-field-internal/AutocompleteFieldInternal';\n\nexport const componentName = getComponentName('autocomplete-field');\n\nconst customMixin = (superclass) =>\n class AutocompleteFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.inputElement.fetchResults = this.fetchResults;\n this.setDefaultValue();\n }\n\n set fetchResults(fetchResults) {\n this.inputElement.fetchResults = fetchResults;\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AutocompleteFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: { ...host },\n checkmarkDisplay: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,\n },\n itemPaddingInlineStart: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineStart,\n },\n itemPaddingInlineEnd: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineEnd,\n },\n selectedItemBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemBackground,\n },\n selectedItemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemHoverBackground,\n },\n selectedItemFocusBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemFocusBackground,\n },\n itemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemHoverBackground,\n },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n `,\n excludeAttrsSync: ['tabindex', 'error-message', 'label'],\n componentName,\n }),\n);\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-autocomplete-field-internal';\n\nimport {\n componentName,\n AutocompleteFieldClass,\n} from './AutocompleteFieldClass';\n\ncustomElements.define(componentName, AutocompleteFieldClass);\n\nexport { AutocompleteFieldClass, componentName };\n"],"names":["componentName","BaseInputClass","baseSelector","observedAttrs","INVALID_OPTION_VALUE","customElements","define","observedAttributes","concat","allowCustomValue","this","getAttribute","minSearchLength","noResultsFoundMessage","errorFetchingResultsMessage","constructor","super","innerHTML","comboBox","querySelector","value","val","data","label","setTimeout","defaultValue","results","error","fetchResults","displayName","disabled","renderer","root","_","model","item","setAttribute","removeAttribute","outerHTML","renderItem","focus","init","addEventListener","e","isTrusted","includeAttrs","debouncedSearch","async","onSearch","bind","searchValue","detail","length","loading","response","console","warn","undefined","getValidity","isRequired","valueMissing","valid","host","selector","AutocompleteFieldClass","componentNameOverride","mappings","hostWidth","property","hostDirection","fontSize","checkmarkDisplay","ComboBoxClass","C","cssVarList","overlayCheckmarkDisplay","itemPaddingInlineStart","overlayItemPaddingInlineStart","itemPaddingInlineEnd","overlayItemPaddingInlineEnd","selectedItemBackground","overlaySelectedItemBackground","selectedItemHoverBackground","overlaySelectedItemHoverBackground","selectedItemFocusBackground","overlaySelectedItemFocusBackground","itemHoverBackground","overlayItemHoverBackground","proxyProps","inputEvent","proxyParentValidation","superclass","setDefaultValue","inputElement","template","document","createElement","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync"],"sourceRoot":""}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@descope/web-components-ui",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.39.0",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/cjs/index.cjs.js",
|
6
6
|
"module": "dist/index.esm.js",
|
@@ -75,14 +75,14 @@
|
|
75
75
|
"lodash.debounce": "4.0.8",
|
76
76
|
"lodash.merge": "4.6.2",
|
77
77
|
"markdown-it": "14.1.0",
|
78
|
-
"@descope-ui/common": "0.0.
|
79
|
-
"@descope-ui/descope-button": "0.0.
|
80
|
-
"@descope-ui/descope-icon": "0.0.
|
81
|
-
"@descope-ui/descope-text": "0.0.
|
82
|
-
"@descope-ui/descope-avatar": "0.0.
|
83
|
-
"@descope-ui/descope-combo-box": "0.0.
|
84
|
-
"@descope-ui/descope-autocomplete-field": "0.0.
|
85
|
-
"@descope-ui/descope-address-field": "0.0.
|
78
|
+
"@descope-ui/common": "0.0.8",
|
79
|
+
"@descope-ui/descope-button": "0.0.2",
|
80
|
+
"@descope-ui/descope-icon": "0.0.2",
|
81
|
+
"@descope-ui/descope-text": "0.0.8",
|
82
|
+
"@descope-ui/descope-avatar": "0.0.8",
|
83
|
+
"@descope-ui/descope-combo-box": "0.0.8",
|
84
|
+
"@descope-ui/descope-autocomplete-field": "0.0.7",
|
85
|
+
"@descope-ui/descope-address-field": "0.0.6"
|
86
86
|
},
|
87
87
|
"overrides": {
|
88
88
|
"@vaadin/avatar": "24.3.4",
|
@@ -2,25 +2,10 @@ import { injectStyle } from '@descope-ui/common/components-helpers';
|
|
2
2
|
|
3
3
|
export const draggableMixin = (superclass) =>
|
4
4
|
class DraggableMixinClass extends superclass {
|
5
|
-
#styleEle = null;
|
6
|
-
|
7
|
-
static get observedAttributes() {
|
8
|
-
const superAttrs = superclass.observedAttributes || [];
|
9
|
-
return [...superAttrs, 'draggable'];
|
10
|
-
}
|
11
|
-
|
12
5
|
constructor() {
|
13
6
|
super();
|
14
7
|
|
15
|
-
injectStyle(
|
16
|
-
}
|
17
|
-
|
18
|
-
#handleDraggableStyle(isDraggable) {
|
19
|
-
if (isDraggable) {
|
20
|
-
this.shadowRoot.appendChild(this.#styleEle);
|
21
|
-
} else {
|
22
|
-
this.#styleEle.remove();
|
23
|
-
}
|
8
|
+
injectStyle(`:host([draggable="true"]) * { cursor: inherit!important }`, this);
|
24
9
|
}
|
25
10
|
|
26
11
|
get isDraggable() {
|
@@ -53,11 +38,4 @@ export const draggableMixin = (superclass) =>
|
|
53
38
|
|
54
39
|
super.init?.();
|
55
40
|
}
|
56
|
-
|
57
|
-
attributeChangedCallback(attrName, oldValue, newValue) {
|
58
|
-
super.attributeChangedCallback?.(attrName, oldValue, newValue);
|
59
|
-
if (attrName === 'draggable') {
|
60
|
-
this.#handleDraggableStyle(newValue === 'true');
|
61
|
-
}
|
62
|
-
}
|
63
41
|
};
|