@descope/web-components-ui 1.0.64 → 1.0.65

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/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', () => {