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