@descope/web-components-ui 1.0.64 → 1.0.65

Sign up to get free protection for your applications and to get access to all the features.
package/dist/umd/725.js CHANGED
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[725],{9989:(t,e,s)=>{s.d(e,{V:()=>n});class n extends HTMLElement{}},5279:(t,e,s)=>{s.d(e,{g:()=>n,k:()=>i});const n="descope",i=3},4567:(t,e,s)=>{s.d(e,{Db:()=>c,Tk:()=>h,iY:()=>l,oP:()=>d,tg:()=>o});var n=s(2061),i=s(5279);const r=(t,e,{excludeAttrs:s=[],includeAttrs:n=[]})=>{e(...Array.from(t.attributes).filter((t=>!s.includes(t.name)&&(!n.length||n.includes(t.name)))).map((t=>t.name))),new MutationObserver((t=>{for(const i of t)"attributes"!==i.type||s.includes(i.attributeName)||n.length&&!n.includes(i.attributeName)||e([i.attributeName])})).observe(t,{attributes:!0})},a=(t,e,s={})=>(...n)=>{n.forEach((n=>{const i=s[n]||n,r=t.getAttribute(n);null!==r?e.getAttribute(i)!==r&&e.setAttribute(i,r):e.removeAttribute(i)}))},o=(t,e,s)=>{r(t,a(t,e),s),r(e,a(e,t),s)},l=t=>(0,n.E3)(i.g,t),h=(...t)=>`--${(0,n.E3)(...t.filter((t=>!!t)))}`,d=(t,e,s={})=>{r(t,a(t,e,s.mapAttrs),s)},c=(t,e,s=[])=>{if(!s.length)return;const n=s.reduce(((t,s)=>Object.assign(t,{[s]:{get:()=>e[s],set(t){e[s]=t}}})),{});Object.defineProperties(t,n)}},2061:(t,e,s)=>{s.d(e,{E3:()=>i,GL:()=>n,qC:()=>r});const n=t=>t.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase(),i=(...t)=>n(t.join("-")),r=(...t)=>e=>t.reduceRight(((t,e)=>e(t)),e)},9725:(t,e,s)=>{s.d(e,{Ae:()=>C,DM:()=>m,yk:()=>h,e4:()=>d,_A:()=>u,y7:()=>y,dj:()=>v});var n=s(5279),i=s(2061),r=s(4567),a=s(5561);const o=(t,...e)=>`var(${t}${e.length?` , ${o(...e)}`:""})`;class l{constructor(){this.styleMap=new Map}add(t,e,s){this.styleMap.has(t)||this.styleMap.set(t,[]),this.styleMap.set(t,[...this.styleMap.get(t),{property:e,value:s}])}toString(){return Array.from(this.styleMap.entries()).reduce(((t,[e,s])=>t+`${e} { \n${s.map((({property:t,value:e})=>`${t}: ${e}`)).join(";\n")} \n}\n\n`),"")}}const h=({mappings:t={}})=>e=>{const s=Object.keys(t).map((t=>(0,i.E3)("st",t)));return class extends e{static get observedAttributes(){return[...e.observedAttributes||[],...s]}static get cssVarList(){return((t,e)=>Object.keys(e).reduce(((e,s)=>Object.assign(e,{[s]:(0,r.Tk)(t,s)})),{}))(e.componentName,{...t})}#t=null;#e=null;#s;constructor(){super(),this.classList.add(e.componentName),this.#n(),this.#i(),this.#r()}get componentTheme(){return a.componentsThemeManager.currentTheme?.[e.componentName]||""}onComponentThemeChange(){this.#e.innerHTML=this.componentTheme.theme}#i(){this.#e=document.createElement("style"),this.#e.id="style-mixin-component-theme",this.shadowRoot.prepend(this.#e),this.#s=a.componentsThemeManager.onCurrentThemeChange(this.onComponentThemeChange.bind(this)),this.onComponentThemeChange()}#r(){this.#t=document.createElement("style"),this.#t.id="style-mixin-overrides";const t=(s=e.componentName,i=n.k,Array(i).fill(`.${s}`).join(""));var s,i;this.#t.innerText=`:host(${t}) {}`,this.shadowRoot.append(this.#t)}#a(t,s){const n=this.#t.sheet?.cssRules[0].style,i=(0,r.Tk)(e.componentName,t.replace(/^st-/,""));s?n?.setProperty(i,s):n?.removeProperty(i)}#n(){const s=document.createElement("style");s.id="style-mixin-component",s.innerHTML=((t,e,s)=>{const n=new l;return Object.keys(s).forEach((a=>{const l=((t,e)=>{const s={selector:"",property:(0,i.GL)(t)};return e&&Object.keys(e).length?Array.isArray(e)?e.map((t=>Object.assign({},s,t))):[Object.assign({},s,e)]:[s]})(a,s[a]),h=(0,r.Tk)(t,a);l.forEach((({selector:t,property:s})=>{n.add(((t="",e="")=>"function"==typeof e?e(t):`${t}${/^[A-Za-z]/.test(e)?` ${e}`:e}`)(e,t),s,o(h))}))})),n.toString()})(e.componentName,this.baseSelector,t),this.shadowRoot.prepend(s)}attributeChangedCallback(t,e,n){super.attributeChangedCallback?.(t,e,n),s.includes(t)&&this.#a(t,n)}connectedCallback(){super.connectedCallback?.(),this.shadowRoot.isConnected&&Array.from(this.attributes).forEach((t=>{s.includes(t.nodeName)&&this.#a(t.nodeName,t.value)}))}disconnectedCallback(){this.#s?.()}}},d=t=>class extends t{#o=null;static get observedAttributes(){return[...t.observedAttributes||[],"draggable"]}constructor(){super(),this.#o=document.createElement("style"),this.#o.innerText=`${this.baseSelector} { cursor: inherit }`}#l(t){t?this.shadowRoot.appendChild(this.#o):this.#o.remove()}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),"draggable"===t&&this.#l("true"===s)}};var c=s(9989);const u=(t="")=>e=>class extends e{connectedCallback(){super.connectedCallback?.(),this.shadowRoot.querySelector(this.baseSelector+t).addEventListener("mouseover",(t=>{this.shadowRoot.host.setAttribute("hover","true"),t.target.addEventListener("mouseleave",(()=>this.shadowRoot.host.removeAttribute("hover")),{once:!0})}))}},m=({componentName:t,wrappedEleName:e,slots:s=[],style:n,excludeAttrsSync:a=[],includeAttrsSync:o=[],includeForwardProps:l=[]})=>{const h=`\n\t\t<style id="create-proxy"></style>\n\t\t<${e}>\n\t\t<slot></slot>\n\t\t${s.map((t=>`<slot name="${t}" slot="${t}"></slot>`)).join("")}\n\t\t</${e}>\n\t`;class d extends c.V{static get componentName(){return t}constructor(){super().attachShadow({mode:"open"}).innerHTML=h,this.hostElement=this.shadowRoot.host,this.baseSelector=e,this.shadowRoot.getElementById("create-proxy").innerHTML="function"==typeof n?n():n}connectedCallback(){this.shadowRoot.isConnected&&(this.proxyElement=this.shadowRoot.querySelector(e),(0,r.Db)(this.hostElement,this.proxyElement,l),this.setAttribute("tabindex","0"),this.addEventListener("focus",(()=>{this.proxyElement.focus()})),this.proxyElement.onkeydown=t=>{t.shiftKey&&9===t.keyCode&&(this.removeAttribute("tabindex"),setTimeout((()=>this.setAttribute("tabindex","0")),0))},this.addEventListener=(...t)=>this.proxyElement.addEventListener(...t),(0,r.tg)(this.proxyElement,this.hostElement,{excludeAttrs:a,includeAttrs:o}))}disconnectedCallback(){this.proxyElement.removeEventListener("mouseover",this.mouseoverCbRef)}attributeChangedCallback(){this.proxyElement}}return(0,i.qC)(u())(d)},p=["change","input","blur","focus","invalid","valid"],b=["required","pattern"],y=t=>class extends t{static get observedAttributes(){return[...t.observedAttributes||[],...b]}static get formAssociated(){return!0}#h;constructor(){super(),this.#h=this.attachInternals();for(const e of p)this[`dispatch${t=e,t.charAt(0).toUpperCase()+t.slice(1)}`]=function(){this.dispatchInputEvent(e)};var t}get defaultErrorMsgValueMissing(){return"Please fill out this field."}get defaultErrorMsgPatternMismatch(){return"Please match the requested format."}getErrorMessage(t){switch(!0){case t.valueMissing:return this.getAttribute("data-errormessage-value-missing")||this.defaultErrorMsgValueMissing;case t.patternMismatch||t.typeMismatch:return this.getAttribute("data-errormessage-pattern-mismatch")||this.defaultErrorMsgPatternMismatch;case t.customError:return this.validationMessage;default:return""}}setValidity(){const t=this.getValidity();this.#h.setValidity(t,this.getErrorMessage(t))}get validationMessage(){return this.#h.validationMessage}getValidity(){throw Error("getValidity","is not implemented")}checkValidity(){return this.#h.validity.valid}reportValidity(){return this.#h.reportValidity()}get validity(){return this.#h.validity}setCustomValidity(t){t?this.#h.setValidity({customError:!0},t):(this.#h.setValidity({}),this.setValidity())}get isRequired(){return this.hasAttribute("required")&&"false"!==this.getAttribute("required")}get pattern(){return this.getAttribute("pattern")}get value(){throw Error("get value","is not implemented")}set value(t){throw Error("set value","is not implemented")}handleFocus(){throw Error("handleFocus","is not implemented")}handleInput(){this.setValidity(),this.handleDispatchValidationEvents()}handleBlur(){throw Error("handleBlur","is not implemented")}handleChange(){throw Error("handleChange","is not implemented")}dispatchInputEvent(t){this[`on${t}`]?.(),this.dispatchEvent(new InputEvent(t))}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),b.includes(t)&&this.setValidity()}handleDispatchValidationEvents(){this.checkValidity()?this.dispatchValid():this.dispatchInvalid()}connectedCallback(){super.connectedCallback?.(),this.setValidity(),this.handleDispatchValidationEvents(),this.onfocus=this.handleFocus.bind(this),this.addEventListener("input",this.handleInput.bind(this)),this.addEventListener("blur",this.handleBlur.bind(this)),this.addEventListener("change",this.handleBlur.bind(this))}},g=["invalid","has-error-message"],E=t=>{if(!t)return;let e=t;for(let t=0;t<10;t++)if(e=e.assignedElements()[0],"slot"!==e.localName)return e},v=t=>class extends(y(t)){static get observedAttributes(){return[...t.observedAttributes||[],...g]}#d;constructor(){super(),this.#d=super.inputElement,this.addEventListener("focus",(t=>{t.relatedTarget?.form&&(this.checkValidity()||this.setAttribute("invalid","true"),this.hasAttribute("invalid")&&this.reportValidityOnInternalInput())})),this.addEventListener("invalid",(()=>{this.setInternalInputErrorMessage(),this.setAttribute("error-message",this.validationMessage)})),this.addEventListener("valid",(()=>{this.removeAttribute("invalid")}))}get inputElement(){const t=this.baseEle.shadowRoot.querySelector('slot[name="input"]'),e=this.baseEle.shadowRoot.querySelector('slot[name="textarea"]');if(this.#d??=E(t)||E(e),!this.#d)throw Error("no input was found");return this.#d}set inputElement(t){this.#d=t}getValidity(){return this.inputElement.validity}reportValidityOnInternalInput(){setTimeout((()=>{this.inputElement.reportValidity()}),0)}handleBlur(){}handleFocus(){this.inputElement.focus(),this.hasAttribute("invalid")&&this.reportValidityOnInternalInput()}reportValidity(){super.reportValidity()||(this.setAttribute("invalid","true"),this.inputElement.focus()),this.reportValidityOnInternalInput()}setInternalInputErrorMessage(){this.checkValidity()||this.inputElement.setCustomValidity(this.validationMessage)}connectedCallback(){var t,e;this.baseEle=this.shadowRoot.querySelector(this.baseSelector),super.connectedCallback?.(),this.inputElement.addEventListener("input",(()=>{this.inputElement.setCustomValidity(""),this.inputElement.checkValidity()||this.setInternalInputErrorMessage()})),this.inputElement.addEventListener("invalid",(()=>{this.setValidity(),this.setInternalInputErrorMessage(),this.setAttribute("error-message",this.validationMessage)})),this.hasAttribute("tabindex")||this.setAttribute("tabindex",0),t=this.inputElement,e="value",Object.defineProperty(this,e,{set:function(s){return t[e]=s},get:function(){return t[e]},configurable:!0}),this.setSelectionRange=this.inputElement.setSelectionRange?.bind(this.inputElement)}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),"invalid"===t&&""===s&&this.setAttribute("invalid","true")}},C=t=>class extends t{#c(){const e=this.shadowRoot.host.tagName.toLowerCase();if(!t.componentName)throw Error('component name is not defined on super class, make sure you have a static get for "componentName"');if(e!==t.componentName)throw Error(`component name mismatch, expected "${t.componentName}", current "${e}"`)}connectedCallback(){super.connectedCallback?.(),this.shadowRoot.isConnected&&this.#c()}}}}]);
1
+ "use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[725],{9989:(t,e,s)=>{s.d(e,{V:()=>i});class i extends HTMLElement{}},5279:(t,e,s)=>{s.d(e,{g:()=>i,k:()=>n});const i="descope",n=3},4567:(t,e,s)=>{s.d(e,{Db:()=>c,Tk:()=>h,iY:()=>l,oP:()=>d,tg:()=>o});var i=s(2061),n=s(5279);const r=(t,e,{excludeAttrs:s=[],includeAttrs:i=[]})=>{e(...Array.from(t.attributes).filter((t=>!s.includes(t.name)&&(!i.length||i.includes(t.name)))).map((t=>t.name))),new MutationObserver((t=>{for(const n of t)"attributes"!==n.type||s.includes(n.attributeName)||i.length&&!i.includes(n.attributeName)||e([n.attributeName])})).observe(t,{attributes:!0})},a=(t,e,s={})=>(...i)=>{i.forEach((i=>{const n=s[i]||i,r=t.getAttribute(i);null!==r?e.getAttribute(n)!==r&&e.setAttribute(n,r):e.removeAttribute(n)}))},o=(t,e,s)=>{r(t,a(t,e),s),r(e,a(e,t),s)},l=t=>(0,i.E3)(n.g,t),h=(...t)=>`--${(0,i.E3)(...t.filter((t=>!!t)))}`,d=(t,e,s={})=>{r(t,a(t,e,s.mapAttrs),s)},c=(t,e,s=[])=>{if(!s.length)return;const i=s.reduce(((t,s)=>Object.assign(t,{[s]:{get:()=>e[s],set(t){e[s]=t}}})),{});Object.defineProperties(t,i)}},2061:(t,e,s)=>{s.d(e,{E3:()=>n,GL:()=>i,qC:()=>r});const i=t=>t.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_.]+/g,"-").toLowerCase(),n=(...t)=>i(t.join("-")),r=(...t)=>e=>t.reduceRight(((t,e)=>e(t)),e)},9725:(t,e,s)=>{s.d(e,{Ae:()=>C,DM:()=>m,yk:()=>h,e4:()=>d,_A:()=>u,y7:()=>b,dj:()=>v});var i=s(5279),n=s(2061),r=s(4567),a=s(5561);const o=(t,...e)=>`var(${t}${e.length?` , ${o(...e)}`:""})`;class l{constructor(){this.styleMap=new Map}add(t,e,s){this.styleMap.has(t)||this.styleMap.set(t,[]),this.styleMap.set(t,[...this.styleMap.get(t),{property:e,value:s}])}toString(){return Array.from(this.styleMap.entries()).reduce(((t,[e,s])=>t+`${e} { \n${s.map((({property:t,value:e})=>`${t}: ${e}`)).join(";\n")} \n}\n\n`),"")}}const h=({mappings:t={}})=>e=>{const s=Object.keys(t).map((t=>(0,n.E3)("st",t)));return class extends e{static get observedAttributes(){return[...e.observedAttributes||[],...s]}static get cssVarList(){return((t,e)=>Object.keys(e).reduce(((e,s)=>Object.assign(e,{[s]:(0,r.Tk)(t,s)})),{}))(e.componentName,{...t})}#t=null;#e=null;#s;constructor(){super()}get componentTheme(){return a.componentsThemeManager.currentTheme?.[e.componentName]||""}onComponentThemeChange(){this.#e.innerHTML=this.componentTheme.theme}#i(){this.#e=document.createElement("style"),this.#e.id="style-mixin-component-theme",this.shadowRoot.prepend(this.#e),this.#s=a.componentsThemeManager.onCurrentThemeChange(this.onComponentThemeChange.bind(this)),this.onComponentThemeChange()}#n(){this.#t=document.createElement("style"),this.#t.id="style-mixin-overrides";const t=(s=e.componentName,n=i.k,Array(n).fill(`.${s}`).join(""));var s,n;this.#t.innerText=`:host(${t}) {}`,this.shadowRoot.append(this.#t)}#r(t,s){const i=this.#t?.sheet?.cssRules[0].style,n=(0,r.Tk)(e.componentName,t.replace(/^st-/,""));s?i?.setProperty(n,s):i?.removeProperty(n)}#a(){const s=document.createElement("style");s.id="style-mixin-component",s.innerHTML=((t,e,s)=>{const i=new l;return Object.keys(s).forEach((a=>{const l=((t,e)=>{const s={selector:"",property:(0,n.GL)(t)};return e&&Object.keys(e).length?Array.isArray(e)?e.map((t=>Object.assign({},s,t))):[Object.assign({},s,e)]:[s]})(a,s[a]),h=(0,r.Tk)(t,a);l.forEach((({selector:t,property:s})=>{i.add(((t="",e="")=>"function"==typeof e?e(t):`${t}${/^[A-Za-z]/.test(e)?` ${e}`:e}`)(e,t),s,o(h))}))})),i.toString()})(e.componentName,this.baseSelector,t),this.shadowRoot.prepend(s)}attributeChangedCallback(t,e,i){super.attributeChangedCallback?.(t,e,i),s.includes(t)&&this.#r(t,i)}connectedCallback(){super.connectedCallback?.(),this.shadowRoot.isConnected&&(this.classList.add(e.componentName),this.#a(),this.#i(),this.#n(),Array.from(this.attributes).forEach((t=>{s.includes(t.nodeName)&&this.#r(t.nodeName,t.value)})))}disconnectedCallback(){this.#s?.()}}},d=t=>class extends t{#o=null;static get observedAttributes(){return[...t.observedAttributes||[],"draggable"]}constructor(){super(),this.#o=document.createElement("style"),this.#o.innerText=`${this.baseSelector} { cursor: inherit }`}#l(t){t?this.shadowRoot.appendChild(this.#o):this.#o.remove()}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),"draggable"===t&&this.#l("true"===s)}};var c=s(9989);const u=(t="")=>e=>class extends e{connectedCallback(){super.connectedCallback?.(),this.shadowRoot.querySelector(this.baseSelector+t).addEventListener("mouseover",(t=>{this.shadowRoot.host.setAttribute("hover","true"),t.target.addEventListener("mouseleave",(()=>this.shadowRoot.host.removeAttribute("hover")),{once:!0})}))}},m=({componentName:t,wrappedEleName:e,slots:s=[],style:i,excludeAttrsSync:a=[],includeAttrsSync:o=[],includeForwardProps:l=[]})=>{const h=`\n\t\t<style id="create-proxy"></style>\n\t\t<${e}>\n\t\t<slot></slot>\n\t\t${s.map((t=>`<slot name="${t}" slot="${t}"></slot>`)).join("")}\n\t\t</${e}>\n\t`;class d extends c.V{static get componentName(){return t}constructor(){super().attachShadow({mode:"open"}).innerHTML=h,this.hostElement=this.shadowRoot.host,this.baseSelector=e,this.shadowRoot.getElementById("create-proxy").innerHTML="function"==typeof i?i():i}connectedCallback(){this.shadowRoot.isConnected&&(this.proxyElement=this.shadowRoot.querySelector(e),(0,r.Db)(this.hostElement,this.proxyElement,l),this.setAttribute("tabindex","0"),this.addEventListener("focus",(()=>{this.proxyElement.focus()})),this.proxyElement.onkeydown=t=>{t.shiftKey&&9===t.keyCode&&(this.removeAttribute("tabindex"),setTimeout((()=>this.setAttribute("tabindex","0")),0))},this.addEventListener=(...t)=>this.proxyElement.addEventListener(...t),(0,r.tg)(this.proxyElement,this.hostElement,{excludeAttrs:a,includeAttrs:o}))}disconnectedCallback(){this.proxyElement.removeEventListener("mouseover",this.mouseoverCbRef)}attributeChangedCallback(){this.proxyElement}}return(0,n.qC)(u())(d)},p=["change","input","blur","focus","invalid","valid"],y=["required","pattern"],b=t=>class extends t{static get observedAttributes(){return[...t.observedAttributes||[],...y]}static get formAssociated(){return!0}#h;constructor(){super(),this.#h=this.attachInternals();for(const e of p)this[`dispatch${t=e,t.charAt(0).toUpperCase()+t.slice(1)}`]=function(){this.dispatchInputEvent(e)};var t}get defaultErrorMsgValueMissing(){return"Please fill out this field."}get defaultErrorMsgPatternMismatch(){return"Please match the requested format."}getErrorMessage(t){switch(!0){case t.valueMissing:return this.getAttribute("data-errormessage-value-missing")||this.defaultErrorMsgValueMissing;case t.patternMismatch||t.typeMismatch:return this.getAttribute("data-errormessage-pattern-mismatch")||this.defaultErrorMsgPatternMismatch;case t.customError:return this.validationMessage;default:return""}}get isReadOnly(){return"false"!==this.getAttribute("readonly")}setValidity(){if(this.isReadOnly)return;const t=this.getValidity();this.#h.setValidity(t,this.getErrorMessage(t))}get validationMessage(){return this.#h.validationMessage}getValidity(){throw Error("getValidity","is not implemented")}checkValidity(){return this.#h.validity.valid}reportValidity(){return this.#h.reportValidity()}get validity(){return this.#h.validity}setCustomValidity(t){t?this.#h.setValidity({customError:!0},t):(this.#h.setValidity({}),this.setValidity())}get isRequired(){return this.hasAttribute("required")&&"false"!==this.getAttribute("required")}get pattern(){return this.getAttribute("pattern")}get value(){throw Error("get value","is not implemented")}set value(t){throw Error("set value","is not implemented")}handleFocus(){throw Error("handleFocus","is not implemented")}handleInput(){this.setValidity(),this.handleDispatchValidationEvents()}handleBlur(){throw Error("handleBlur","is not implemented")}handleChange(){throw Error("handleChange","is not implemented")}dispatchInputEvent(t){this[`on${t}`]?.(),this.dispatchEvent(new InputEvent(t))}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),y.includes(t)&&this.setValidity()}handleDispatchValidationEvents(){this.checkValidity()?this.dispatchValid():this.dispatchInvalid()}connectedCallback(){super.connectedCallback?.(),this.setValidity(),this.handleDispatchValidationEvents(),this.onfocus=this.handleFocus.bind(this),this.addEventListener("input",this.handleInput.bind(this)),this.addEventListener("blur",this.handleBlur.bind(this)),this.addEventListener("change",this.handleBlur.bind(this))}},g=["invalid","has-error-message"],E=t=>{if(!t)return;let e=t;for(let t=0;t<10;t++)if(e=e.assignedElements()[0],"slot"!==e.localName)return e},v=t=>class extends(b(t)){static get observedAttributes(){return[...t.observedAttributes||[],...g]}#d;constructor(){super(),this.#d=super.inputElement}get inputElement(){const t=this.baseEle.shadowRoot.querySelector('slot[name="input"]'),e=this.baseEle.shadowRoot.querySelector('slot[name="textarea"]');if(this.#d??=E(t)||E(e),!this.#d)throw Error("no input was found");return this.#d}set inputElement(t){this.#d=t}getValidity(){return this.inputElement.validity}reportValidityOnInternalInput(){setTimeout((()=>{this.inputElement.reportValidity()}),0)}handleBlur(){}handleFocus(){this.inputElement.focus(),this.hasAttribute("invalid")&&this.reportValidityOnInternalInput()}reportValidity(){super.reportValidity()||(this.setAttribute("invalid","true"),this.inputElement.focus()),this.reportValidityOnInternalInput()}setInternalInputErrorMessage(){this.checkValidity()||this.inputElement.setCustomValidity(this.validationMessage)}connectedCallback(){var t,e;this.baseEle=this.shadowRoot.querySelector(this.baseSelector),this.addEventListener("focus",(t=>{t.relatedTarget?.form&&(this.checkValidity()||this.setAttribute("invalid","true"),this.hasAttribute("invalid")&&this.reportValidityOnInternalInput())})),this.addEventListener("invalid",(()=>{this.setInternalInputErrorMessage(),this.setAttribute("error-message",this.validationMessage)})),this.addEventListener("valid",(()=>{this.removeAttribute("invalid")})),super.connectedCallback?.(),this.inputElement.addEventListener("input",(()=>{this.inputElement.setCustomValidity(""),this.inputElement.checkValidity()||this.setInternalInputErrorMessage()})),this.inputElement.addEventListener("invalid",(()=>{this.setValidity(),this.setInternalInputErrorMessage(),this.setAttribute("error-message",this.validationMessage)})),this.hasAttribute("tabindex")||this.setAttribute("tabindex",0),t=this.inputElement,e="value",Object.defineProperty(this,e,{set:function(s){return t[e]=s},get:function(){return t[e]},configurable:!0}),this.setSelectionRange=this.inputElement.setSelectionRange?.bind(this.inputElement)}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),"invalid"===t&&""===s&&this.setAttribute("invalid","true")}},C=t=>class extends t{#c(){const e=this.shadowRoot.host.tagName.toLowerCase();if(!t.componentName)throw Error('component name is not defined on super class, make sure you have a static get for "componentName"');if(e!==t.componentName)throw Error(`component name mismatch, expected "${t.componentName}", current "${e}"`)}connectedCallback(){super.connectedCallback?.(),this.shadowRoot.isConnected&&this.#c()}}}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[841],{1079:(t,e,s)=>{s.d(e,{f:()=>r,Z:()=>l});const i=(0,s(9725).y7)(HTMLElement);var n=s(4567);const a=t=>{t?.focus(),t?.setSelectionRange(1,1)},u=t=>{const e=t.replace(/\s/g,"");return e.match(/^\d+$/)?[...e]:[]},r=(0,n.iY)("passcode-internal");class d extends i{static get observedAttributes(){return[...i.observedAttributes,"disabled","bordered","size"]}static get componentName(){return r}constructor(){super();const t=document.createElement("template"),e=[...Array(this.digits).keys()].map((t=>`\n\t\t<descope-text-field\n\t\t\tst-width="35px"\n\t\t\tdata-id=${t}\n\t\t\ttype="tel"\n\t\t\tautocomplete="none"\n\t\t></descope-text-field>\n\t`));t.innerHTML=`\n\t\t<div>\n\t\t\t${e.join("")}\n\t\t</div>\n\t\t`,this.appendChild(t.content.cloneNode(!0)),this.baseSelector=":host > div",this.inputs=Array.from(this.querySelectorAll("descope-text-field"))}get digits(){return Number.parseInt(this.getAttribute("digits"))||6}get value(){return this.inputs.map((({value:t})=>t)).join("")}set value(t){if(t===this.value)return;const e=u(t);e.length&&this.fillDigits(e,this.inputs[0])}get pattern(){return`^$|^\\d{${this.digits},}$`}handleInputsInvalid(){setTimeout((()=>{this.hasAttribute("invalid")&&this.inputs.forEach((t=>t.setAttribute("invalid","true")))}))}handleInputsValid(){this.inputs.forEach((t=>t.removeAttribute("invalid")))}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:this.pattern&&!new RegExp(this.pattern).test(this.value)?{patternMismatch:!0}:{}}handleFocus(){this.inputs[0].focus()}async connectedCallback(){super.connectedCallback(),this.initInputs(),this.addEventListener("invalid",this.handleInputsInvalid),this.addEventListener("valid",this.handleInputsValid)}getInputIdx(t){return Number.parseInt(t.getAttribute("data-id"),10)}getNextInput(t){const e=this.getInputIdx(t),s=Math.min(e+1,this.inputs.length-1);return this.inputs[s]}getPrevInput(t){const e=this.getInputIdx(t),s=Math.max(e-1,0);return this.inputs[s]}fillDigits(t,e){for(let s=0;s<t.length;s+=1){e.value=t[s]??"";const i=this.getNextInput(e);if(i===e)break;e=i}!e.hasAttribute("focused")&&a(e)}handleBlur(){this.handleInputsInvalid()}initInputs(){this.inputs.forEach((t=>{t.addEventListener("blur",(()=>{const t=setTimeout((()=>{this.dispatchBlur()}));this.inputs.forEach((e=>e.addEventListener("focus",(()=>clearTimeout(t)),{once:!0})))})),t.oninput=()=>{const e=u(t.value);e.length?this.fillDigits(e,t):t.value="",this.dispatchInput()},t.onkeydown=({key:e})=>{if("Backspace"===e){t.value="";const e=this.getPrevInput(t);!e.hasAttribute("focused")&&setTimeout((()=>{a(e)})),this.dispatchInput()}else e.match(/^(\d)$/g)&&(t.value="")}}))}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s),e!==s&&d.observedAttributes.includes(t)&&!i.observedAttributes.includes(t)&&this.inputs.forEach((e=>e.setAttribute(t,s)))}}const l=d},4775:(t,e,s)=>{s.r(e);var i=s(1079);customElements.define(i.f,i.Z)}}]);
1
+ "use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[841],{1079:(t,e,s)=>{s.d(e,{f:()=>r,Z:()=>l});const i=(0,s(9725).y7)(HTMLElement);var n=s(4567);const a=t=>{t?.focus(),t?.setSelectionRange(1,1)},u=t=>{const e=t.replace(/\s/g,"");return e.match(/^\d+$/)?[...e]:[]},r=(0,n.iY)("passcode-internal");class d extends i{static get observedAttributes(){return[...i.observedAttributes,"disabled","bordered","size","readonly"]}static get componentName(){return r}constructor(){super();const t=document.createElement("template"),e=[...Array(this.digits).keys()].map((t=>`\n\t\t<descope-text-field\n\t\t\tst-width="35px"\n\t\t\tdata-id=${t}\n\t\t\ttype="tel"\n\t\t\tautocomplete="none"\n\t\t></descope-text-field>\n\t`));t.innerHTML=`\n\t\t<div>\n\t\t\t${e.join("")}\n\t\t</div>\n\t\t`,this.appendChild(t.content.cloneNode(!0)),this.baseSelector=":host > div",this.inputs=Array.from(this.querySelectorAll("descope-text-field"))}get digits(){return Number.parseInt(this.getAttribute("digits"))||6}get value(){return this.inputs.map((({value:t})=>t)).join("")}set value(t){if(t===this.value)return;const e=u(t);e.length&&this.fillDigits(e,this.inputs[0])}get pattern(){return`^$|^\\d{${this.digits},}$`}handleInputsInvalid(){setTimeout((()=>{this.hasAttribute("invalid")&&this.inputs.forEach((t=>t.setAttribute("invalid","true")))}))}handleInputsValid(){this.inputs.forEach((t=>t.removeAttribute("invalid")))}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:this.pattern&&!new RegExp(this.pattern).test(this.value)?{patternMismatch:!0}:{}}handleFocus(){this.inputs[0].focus()}async connectedCallback(){super.connectedCallback(),this.initInputs(),this.addEventListener("invalid",this.handleInputsInvalid),this.addEventListener("valid",this.handleInputsValid)}getInputIdx(t){return Number.parseInt(t.getAttribute("data-id"),10)}getNextInput(t){const e=this.getInputIdx(t),s=Math.min(e+1,this.inputs.length-1);return this.inputs[s]}getPrevInput(t){const e=this.getInputIdx(t),s=Math.max(e-1,0);return this.inputs[s]}fillDigits(t,e){for(let s=0;s<t.length;s+=1){e.value=t[s]??"";const i=this.getNextInput(e);if(i===e)break;e=i}!e.hasAttribute("focused")&&a(e)}handleBlur(){this.handleInputsInvalid()}initInputs(){this.inputs.forEach((t=>{t.addEventListener("blur",(t=>{t.stopPropagation();const e=setTimeout((()=>{this.dispatchBlur()}));this.inputs.forEach((t=>t.addEventListener("focus",(()=>clearTimeout(e)),{once:!0})))})),t.oninput=e=>{e.stopPropagation();const s=u(t.value);s.length?this.fillDigits(s,t):t.value="",this.dispatchInput()},t.onkeydown=({key:e})=>{if("Backspace"===e){t.value="";const e=this.getPrevInput(t);!e.hasAttribute("focused")&&setTimeout((()=>{a(e)})),this.dispatchInput()}else e.match(/^(\d)$/g)&&(t.value="")}}))}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s),e!==s&&d.observedAttributes.includes(t)&&!i.observedAttributes.includes(t)&&this.inputs.forEach((e=>e.setAttribute(t,s)))}}const l=d},4775:(t,e,s)=>{s.r(e);var i=s(1079);customElements.define(i.f,i.Z)}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[939],{7102:(t,e,n)=>{n.r(e);var i=n(9725),r=n(4447),d=n(1079),a=n(9063),o=n(2061),l=n(4567);const s=(0,l.iY)("passcode"),{borderStyle:p,borderWidth:c,...u}=r.Z,{digitField:f,label:m,requiredIndicator:b}={digitField:{selector:()=>a.Z.componentName},label:{selector:"> label"},requiredIndicator:{selector:"[required]::part(required-indicator)::after"}},h=a.Z.cssVarList,x=(0,o.qC)((0,i.yk)({mappings:{...u,borderColor:{...f,property:h.borderColor},color:[u.color,m,b]}}),i.e4,i.dj,i.Ae,(t=>class extends t{constructor(){super()}get digits(){return Number.parseInt(this.getAttribute("digits"))||6}connectedCallback(){super.connectedCallback?.();const t=document.createElement("template");t.innerHTML=`\n\t\t\t<${d.f} \n\t\t\t\tbordered="true" \n\t\t\t\tname="code" \n\t\t\t\ttabindex="-1"\n\t\t\t\tslot="input"\n\t\t\t></${d.f}>\n\t\t\t`,this.proxyElement.appendChild(t.content.cloneNode(!0)),this.proxyElement._setFocused=()=>{},this.inputElement=this.shadowRoot.querySelector(d.f),(0,l.oP)(this.shadowRoot.host,this.inputElement,{includeAttrs:["required","pattern"]}),this.inputElement.addEventListener("blur",(t=>{t.isTrusted||this.proxyElement.validate()}))}}))((0,i.DM)({slots:[],wrappedEleName:"vaadin-text-field",style:()=>'\n :host {\n --vaadin-field-default-width: auto;\n\t\t\tdisplay: inline-block;\n }\n descope-passcode-internal {\n -webkit-mask-image: none;\n display: flex;\n gap: 2px;\n align-items: center;\n padding: 0;\n }\n vaadin-text-field::part(input-field) {\n background-color: transparent;\n padding: 0;\n\t\t\toverflow: hidden;\n }\n\t\tvaadin-text-field {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\topacity: 1;\n\t\t}\n\t\tvaadin-text-field > label,\n\t\tvaadin-text-field::part(input-field) {\n\t\t\tcursor: pointer;\n\t\t}\n\t\tvaadin-text-field::part(input-field):focus {\n\t\t\tcursor: text;\n\t\t}\n\t\tvaadin-text-field[required]::part(required-indicator)::after {\n\t\t\tfont-size: "12px";\n\t\t\tcontent: "*";\n\t\t}\n\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\tborder: 0 solid;\n\t\t}\n ',excludeAttrsSync:["tabindex"],componentName:s}));n(9357),n(4775),customElements.define(s,x)}}]);
1
+ "use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[939],{7102:(t,e,n)=>{n.r(e);var i=n(9725),r=n(4447),d=n(1079),a=n(9063),o=n(2061),l=n(4567);const s=(0,l.iY)("passcode"),{borderStyle:p,borderWidth:c,...u}=r.Z,{digitField:f,label:m,requiredIndicator:b}={digitField:{selector:()=>a.Z.componentName},label:{selector:"> label"},requiredIndicator:{selector:"[required]::part(required-indicator)::after"}},h=a.Z.cssVarList,x=(0,o.qC)((0,i.yk)({mappings:{...u,borderColor:{...f,property:h.borderColor},color:[u.color,m,b]}}),i.e4,i.dj,i.Ae,(t=>class extends t{constructor(){super()}get digits(){return Number.parseInt(this.getAttribute("digits"))||6}connectedCallback(){super.connectedCallback?.();const t=document.createElement("template");t.innerHTML=`\n\t\t\t<${d.f} \n\t\t\t\tbordered="true" \n\t\t\t\tname="code" \n\t\t\t\ttabindex="-1"\n\t\t\t\tslot="input"\n\t\t\t></${d.f}>\n\t\t\t`,this.proxyElement.appendChild(t.content.cloneNode(!0)),this.proxyElement._setFocused=()=>{},this.inputElement=this.shadowRoot.querySelector(d.f),(0,l.oP)(this.shadowRoot.host,this.inputElement,{includeAttrs:["required","pattern"]}),this.inputElement.addEventListener("blur",(t=>{t.isTrusted||this.proxyElement.validate()}))}}))((0,i.DM)({slots:[],wrappedEleName:"vaadin-text-field",style:()=>'\n :host {\n --vaadin-field-default-width: auto;\n\t\t\tdisplay: inline-block;\n }\n\n descope-passcode-internal {\n -webkit-mask-image: none;\n display: flex;\n gap: 2px;\n align-items: center;\n padding: 0;\n }\n vaadin-text-field::part(input-field) {\n background-color: transparent;\n padding: 0;\n\t\t\toverflow: hidden;\n }\n\t\tvaadin-text-field {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\topacity: 1;\n\t\t}\n\t\tvaadin-text-field > label,\n\t\tvaadin-text-field::part(input-field) {\n\t\t\tcursor: pointer;\n\t\t}\n\t\tvaadin-text-field::part(input-field):focus {\n\t\t\tcursor: text;\n\t\t}\n\t\tvaadin-text-field[required]::part(required-indicator)::after {\n\t\t\tfont-size: "12px";\n\t\t\tcontent: "*";\n\t\t}\n\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\tborder: 0 solid;\n\t\t}\n ',excludeAttrsSync:["tabindex"],componentName:s}));n(9357),n(4775),customElements.define(s,x)}}]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/web-components-ui",
3
- "version": "1.0.64",
3
+ "version": "1.0.65",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -88,6 +88,7 @@ const Passcode = compose(
88
88
  --vaadin-field-default-width: auto;
89
89
  display: inline-block;
90
90
  }
91
+
91
92
  descope-passcode-internal {
92
93
  -webkit-mask-image: none;
93
94
  display: flex;
@@ -10,7 +10,8 @@ class PasscodeInternal extends BaseInputClass {
10
10
  ...BaseInputClass.observedAttributes,
11
11
  'disabled',
12
12
  'bordered',
13
- 'size'
13
+ 'size',
14
+ 'readonly'
14
15
  ];
15
16
  }
16
17
 
@@ -53,7 +54,7 @@ class PasscodeInternal extends BaseInputClass {
53
54
  }
54
55
 
55
56
  set value(val) {
56
- if(val === this.value) return;
57
+ if (val === this.value) return;
57
58
 
58
59
  const charArr = getSanitizedCharacters(val);
59
60
 
@@ -96,6 +97,7 @@ class PasscodeInternal extends BaseInputClass {
96
97
 
97
98
  async connectedCallback() {
98
99
  super.connectedCallback();
100
+
99
101
  this.initInputs()
100
102
 
101
103
  this.addEventListener('invalid', this.handleInputsInvalid)
@@ -140,7 +142,8 @@ class PasscodeInternal extends BaseInputClass {
140
142
  // in order to simulate blur on the input
141
143
  // we are checking if focus on one of the digits happened immediately after blur on another digit
142
144
  // if not, the component is no longer focused and we should simulate blur
143
- input.addEventListener('blur', () => {
145
+ input.addEventListener('blur', (e) => {
146
+ e.stopPropagation()
144
147
  const timerId = setTimeout(() => {
145
148
  this.dispatchBlur()
146
149
  });
@@ -150,7 +153,8 @@ class PasscodeInternal extends BaseInputClass {
150
153
  );
151
154
  })
152
155
 
153
- input.oninput = () => {
156
+ input.oninput = (e) => {
157
+ e.stopPropagation()
154
158
  const charArr = getSanitizedCharacters(input.value);
155
159
 
156
160
  if (!charArr.length) input.value = ''; // if we got an invalid value we want to clear the input
@@ -169,7 +173,7 @@ class PasscodeInternal extends BaseInputClass {
169
173
  !prevInput.hasAttribute('focused') && setTimeout(() => {
170
174
  focusElement(prevInput);
171
175
  });
172
-
176
+
173
177
  this.dispatchInput()
174
178
  } else if (key.match(/^(\d)$/g)) { // if input is a digit
175
179
  input.value = ''; // we are clearing the previous value so we can override it with the new value
@@ -28,12 +28,6 @@ export const createStyleMixin =
28
28
 
29
29
  constructor() {
30
30
  super();
31
-
32
- this.classList.add(superclass.componentName)
33
-
34
- this.#createComponentStyle();
35
- this.#createComponentTheme();
36
- this.#createAttrOverrideStyle();
37
31
  }
38
32
 
39
33
  get componentTheme() {
@@ -62,7 +56,7 @@ export const createStyleMixin =
62
56
  }
63
57
 
64
58
  #updateAttrOverrideStyle(attrName, value) {
65
- const style = this.#overrideStyleEle.sheet?.cssRules[0].style;
59
+ const style = this.#overrideStyleEle?.sheet?.cssRules[0].style;
66
60
  const varName = getCssVarName(
67
61
  superclass.componentName,
68
62
  attrName.replace(/^st-/, '')
@@ -94,6 +88,12 @@ export const createStyleMixin =
94
88
  connectedCallback() {
95
89
  super.connectedCallback?.();
96
90
  if (this.shadowRoot.isConnected) {
91
+ this.classList.add(superclass.componentName)
92
+
93
+ this.#createComponentStyle();
94
+ this.#createComponentTheme();
95
+ this.#createAttrOverrideStyle();
96
+
97
97
  Array.from(this.attributes).forEach((attr) => {
98
98
  if (styleAttributes.includes(attr.nodeName)) {
99
99
  this.#updateAttrOverrideStyle(attr.nodeName, attr.value);
@@ -68,7 +68,13 @@ export const inputMixin = (superclass) => class InputMixinClass extends supercla
68
68
  }
69
69
  }
70
70
 
71
+ get isReadOnly() {
72
+ return this.getAttribute('readonly') !== 'false'
73
+ }
74
+
71
75
  setValidity() {
76
+ if (this.isReadOnly) return;
77
+
72
78
  const validity = this.getValidity()
73
79
  this.#internals.setValidity(validity, this.getErrorMessage(validity))
74
80
  }
@@ -94,8 +100,8 @@ export const inputMixin = (superclass) => class InputMixinClass extends supercla
94
100
  }
95
101
 
96
102
  setCustomValidity(errorMessage) {
97
- if(errorMessage){
98
- this.#internals.setValidity({customError: true}, errorMessage)
103
+ if (errorMessage) {
104
+ this.#internals.setValidity({ customError: true }, errorMessage)
99
105
  } else {
100
106
  this.#internals.setValidity({})
101
107
  this.setValidity()
@@ -148,9 +154,9 @@ export const inputMixin = (superclass) => class InputMixinClass extends supercla
148
154
  }
149
155
  }
150
156
 
151
- handleDispatchValidationEvents(){
152
- if(this.checkValidity()) {
153
- this.dispatchValid()
157
+ handleDispatchValidationEvents() {
158
+ if (this.checkValidity()) {
159
+ this.dispatchValid()
154
160
  } else {
155
161
  this.dispatchInvalid()
156
162
  }
@@ -41,28 +41,6 @@ export const proxyInputMixin = (superclass) =>
41
41
 
42
42
  this.#inputElement = super.inputElement
43
43
 
44
- // this is our way to identify that the form was submitted
45
- // in this case, we want the input to be in error state if it's not valid
46
- this.addEventListener('focus', (e) => {
47
- if (e.relatedTarget?.form) {
48
- if (!this.checkValidity()) {
49
- this.setAttribute('invalid', 'true');
50
- }
51
-
52
- if (this.hasAttribute('invalid')) {
53
- this.reportValidityOnInternalInput()
54
- }
55
- }
56
- })
57
-
58
- this.addEventListener('invalid', () => {
59
- this.setInternalInputErrorMessage()
60
- this.setAttribute('error-message', this.validationMessage)
61
- })
62
-
63
- this.addEventListener('valid', () => {
64
- this.removeAttribute('invalid')
65
- })
66
44
  }
67
45
 
68
46
  get inputElement() {
@@ -118,6 +96,29 @@ export const proxyInputMixin = (superclass) =>
118
96
  connectedCallback() {
119
97
  this.baseEle = this.shadowRoot.querySelector(this.baseSelector);
120
98
 
99
+ // this is our way to identify that the form was submitted
100
+ // in this case, we want the input to be in error state if it's not valid
101
+ this.addEventListener('focus', (e) => {
102
+ if (e.relatedTarget?.form) {
103
+ if (!this.checkValidity()) {
104
+ this.setAttribute('invalid', 'true');
105
+ }
106
+
107
+ if (this.hasAttribute('invalid')) {
108
+ this.reportValidityOnInternalInput()
109
+ }
110
+ }
111
+ })
112
+
113
+ this.addEventListener('invalid', () => {
114
+ this.setInternalInputErrorMessage()
115
+ this.setAttribute('error-message', this.validationMessage)
116
+ })
117
+
118
+ this.addEventListener('valid', () => {
119
+ this.removeAttribute('invalid')
120
+ })
121
+
121
122
  super.connectedCallback?.();
122
123
 
123
124
  this.inputElement.addEventListener('input', () => {