@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/index.esm.js +51 -39
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/725.js +1 -1
- package/dist/umd/descope-passcode-descope-passcode-internal-index-js.js +1 -1
- package/dist/umd/descope-passcode-index-js.js +1 -1
- package/package.json +1 -1
- package/src/components/descope-passcode/Passcode.js +1 -0
- package/src/components/descope-passcode/descope-passcode-internal/PasscodeInternal.js +9 -5
- package/src/mixins/createStyleMixin/index.js +7 -7
- package/src/mixins/inputMixin.js +11 -5
- package/src/mixins/proxyInputMixin.js +23 -22
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",(()
|
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
@@ -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
|
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);
|
package/src/mixins/inputMixin.js
CHANGED
@@ -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', () => {
|