@nanoporetech-digital/components 8.13.0 → 8.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-input-otp.cjs.entry.js +18 -5
- package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/collection/components/input-otp/input-otp.js +49 -5
- package/dist/components/nano-input-otp.js +20 -6
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-input-otp.entry.js +18 -5
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-input-otp.entry.js +1 -1
- package/dist/types/components/input-otp/input-otp.d.ts +8 -0
- package/dist/types/components.d.ts +9 -0
- package/docs-json.json +38 -2
- package/hydrate/index.js +20 -6
- package/hydrate/index.mjs +20 -6
- package/package.json +2 -2
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/generate-vue-component.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/index.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/output-vue.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/plugin.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/types.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/utils.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
- /package/dist/types/builds/{YtJk83se → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Custom elements for Nanopore-Digital Web applications
|
|
3
3
|
*/
|
|
4
|
-
import{r as t,c as i,g as n,h as o,F as s,a}from"./index-BM3Om9WE.js";import{H as e}from"./slot-BeXeAw-u.js";import"./dom-dlicJTEJ.js";const r=class{constructor(n){t(this,n),this.nanoInput=i(this,"nanoInput",7),this.nanoChange=i(this,"nanoChange",7),this.nanoComplete=i(this,"nanoComplete",7),this.nanoBlur=i(this,"nanoBlur",7),this.nanoFocus=i(this,"nanoFocus",7)}inputRefs=[];inputId="nano-input-otp-"+p++;slotCtrl=new e(this,"[default]");focusedValue;isKeyboardNavigation=!1;get el(){return n(this)}inputValues=[];hasFocus=!1;previousInputValues=[];invalid=!1;valid=!1;disabled=!1;inputmode;length=6;pattern;readonly=!1;type="number";value="";allowInvalid=!1;showValidity=!1;nanoInput;nanoChange;nanoComplete;nanoBlur;nanoFocus;async setFocus(t){if("number"==typeof t){const i=Math.max(0,Math.min(t,this.length-1));this.inputRefs[i]?.focus()}else{const t=this.getTabbableIndex();this.inputRefs[t]?.focus()}}valueChanged(){this.initializeValues(),this.updateTabIndexes(),this.computeValidity()}componentWillLoad(){this.initializeValues(),this.computeValidity(),this.valid&&this.nanoComplete.emit({valid:this.valid,value:this.value?.toString()})}componentDidLoad(){this.updateTabIndexes()}get validKeyPattern(){return new RegExp(`^${this.getPattern()}$`,"u")}get specialCharsPattern(){return new RegExp("^[\\p{S}\\p{P}]$","u")}getPattern(){const{pattern:t,type:i}=this;return t||("number"===i?"[\\p{N}]":"[\\p{L}\\p{N}]")}getInputmode(){const{inputmode:t}=this;return t||("number"==this.type?"numeric":"text")}initializeValues(){this.inputValues=Array(this.length).fill(""),null!=this.value&&0!==String(this.value).length&&(String(this.value).split("").slice(0,this.length).forEach(((t,i)=>{(this.allowInvalid&&!this.specialCharsPattern.test(t)||this.validKeyPattern.test(t))&&(this.inputValues[i]=t)})),this.value=this.inputValues.join(""),this.previousInputValues=[...this.inputValues])}isRTL=t=>t&&""!==t.dir?"rtl"===t.dir.toLowerCase():"rtl"===document?.dir.toLowerCase();updateValue(t){const{inputValues:i,length:n}=this,o=this.getValidChars(i.join("")).join("");this.value=o,this.computeValidity(),this.emitNanoInput(t),o.length===n&&this.nanoComplete.emit({value:o,valid:this.valid})}emitNanoChange(t){const{value:i}=this,n=null==i?i:i.toString();this.computeValidity(),this.nanoChange.emit({value:n?.toString(),event:t,valid:this.valid})}emitNanoInput(t){const{value:i}=this,n=null==i?i:i.toString();this.computeValidity(),this.nanoInput.emit({value:n?.toString(),event:t,valid:this.valid})}onFocus=t=>i=>{const{inputRefs:n}=this;this.hasFocus||(this.nanoFocus.emit(i),this.focusedValue=this.value),this.hasFocus=!0;let o=t;if(!this.isKeyboardNavigation){const i=this.inputValues[t]?t:this.getFirstEmptyIndex();o=-1===i?this.length-1:i,this.inputRefs[o]?.focus()}n.forEach(((t,i)=>{t.tabIndex=i===o?0:-1})),this.isKeyboardNavigation=!1};onBlur=t=>{const{inputRefs:i}=this,n=t.relatedTarget;null!=n&&i.includes(n)||(this.hasFocus=!1,this.updateTabIndexes(),this.nanoBlur.emit(t),this.focusedValue!==this.value&&this.emitNanoChange(t))};focusNext(t){const{inputRefs:i,length:n}=this;t<n-1&&i[t+1]?.focus()}focusPrevious(t){const{inputRefs:i}=this;t>0&&i[t-1]?.focus()}getFirstEmptyIndex(){const{inputValues:t,length:i}=this;return Array.from({length:i},((i,n)=>t[n]||"")).findIndex((t=>!t||""===t))??-1}getTabbableIndex(){const{length:t}=this,i=this.getFirstEmptyIndex();return-1===i?t-1:i}updateTabIndexes(){const{inputRefs:t,inputValues:i,length:n}=this;let o=-1;for(let t=0;t<n;t++)if(!i[t]||""===i[t]){o=t;break}t.forEach(((t,s)=>{const a=-1===o?s===n-1:o===s;t.tabIndex=a?0:-1,t.setAttribute("aria-hidden",i[s]&&""!==i[s]||a?"false":"true")}))}onKeyDown=t=>i=>{const{length:n}=this,o=this.isRTL(this.el),s=i.target;if(!(s.selectionStart!==s.selectionEnd||(i.metaKey||i.ctrlKey)&&["a","c","v","x","r","z","y"].includes(i.key.toLowerCase())))if("Backspace"===i.key)if(this.inputValues[t]){for(let i=t;i<n-1;i++)this.inputValues[i]=this.inputValues[i+1];this.inputValues[n-1]="";for(let t=0;t<n;t++)this.inputRefs[t].value=this.inputValues[t]||"";this.updateValue(i),i.preventDefault()}else!this.inputValues[t]&&t>0&&this.focusPrevious(t);else if("ArrowLeft"===i.key||"ArrowRight"===i.key){this.isKeyboardNavigation=!0,i.preventDefault();const s="ArrowLeft"===i.key;s&&o||!s&&!o?this.inputValues[t]&&t<n-1&&this.focusNext(t):this.focusPrevious(t)}else if("Tab"===i.key)return void(this.isKeyboardNavigation=!0)};onInput=t=>i=>{const{length:n,validKeyPattern:o,allowInvalid:s}=this,a=i.target,e=a.value,r=this.previousInputValues[t]||"";if(e.length-r.length>1){const t=this.getValidChars(e);0===t.length&&requestAnimationFrame((()=>{this.inputRefs.forEach((t=>{t.value=""}))}));for(let i=0;i<n;i++)this.inputValues[i]=t[i]||"",this.inputRefs[i].value=t[i]||"";return this.updateValue(i),setTimeout((()=>{const i=t.length<n?t.length:n-1;this.inputRefs[i]?.focus()}),20),void(this.previousInputValues=[...this.inputValues])}if(!s&&e.length>0&&!o.test(e[e.length-1])||s&&this.specialCharsPattern.test(e[e.length-1]))return a.value=this.inputValues[t]||"",void(this.previousInputValues=[...this.inputValues]);if(0===a.selectionStart&&a.selectionEnd===e.length||!this.inputValues[t])return this.inputValues[t]=e,a.value=e,this.updateValue(i),this.focusNext(t),void(this.previousInputValues=[...this.inputValues]);if(this.inputValues[t]&&""===this.inputValues[this.inputValues.length-1]&&2===e.length){let n=i.data;if(n||(n=e.split("").find(((t,i)=>t!==r[i]))||e[e.length-1]),!s&&!o.test(n))return a.value=this.inputValues[t]||"",void(this.previousInputValues=[...this.inputValues]);for(let i=this.inputValues.length-1;i>t;i--)this.inputValues[i]=this.inputValues[i-1],this.inputRefs[i].value=this.inputValues[i]||"";return this.inputValues[t]=n,this.inputRefs[t].value=n,this.updateValue(i),void(this.previousInputValues=[...this.inputValues])}const p=e[(a.selectionStart??e.length)-1]??e[0];if(!s&&!o.test(p))return a.value=this.inputValues[t]||"",void(this.previousInputValues=[...this.inputValues]);this.inputValues[t]=p,a.value=p,this.updateValue(i),this.previousInputValues=[...this.inputValues]};onPaste=t=>{const{inputRefs:i,length:n}=this;t.preventDefault();const o=t.clipboardData?.getData("text");if(!o)return void this.emitNanoInput(t);const s=this.getValidChars(o);s.forEach(((t,i)=>{i<n&&(this.inputRefs[i].value=t,this.inputValues[i]=t)})),this.value=s.join(""),this.updateValue(t);const a=s.length<n?s.length:n-1;i[a]?.focus()};showSeparator(t){const{length:i}=this;return!(i<3||i%2!=0)&&t===i/2-1}getValidChars(t){const{allowInvalid:i,validKeyPattern:n,length:o}=this;return t.split("").filter(i?t=>""!==t.trim()&&!this.specialCharsPattern.test(t):t=>""!==t.trim()&&n.test(t)).slice(0,o)}computeValidity(){const{inputValues:t}=this;this.invalid=this.allowInvalid&&this.inputValues.some((t=>""!==t&&!this.validKeyPattern.test(t))),this.valid=this.inputValues.length===this.length&&this.inputValues.every((t=>""!==t&&this.validKeyPattern.test(t))),t.some((t=>""!==t&&!this.validKeyPattern.test(t)))}render(){const{disabled:t,hasFocus:i,inputId:n,inputRefs:e,inputValues:r,length:p,readonly:h,invalid:l,valid:c}=this,u=this.getInputmode(),d=this.getTabbableIndex(),v=this.getPattern();return o(a,{key:"9b64211ca6a227c5f905a76a50ca3a44eff0a96b",class:{"has-focus":i,"input-otp-disabled":t,"input-otp-readonly":h,"nano-invalid":l,"nano-valid":c}},o("div",{key:"cc7fb4411962398f143d2dd17c40448111956e80",class:"input-otp-container"},o("div",{key:"4408d19628b34a25cb3bc39a0df1dd859700399f",class:"input-otp-group",role:"group","aria-label":"One-time password input"},Array.from({length:p}).map(((i,a)=>o(s,null,o("div",{class:"native-wrapper"},o("input",{class:"native-input",id:`${n}-${a}`,"aria-label":`Input ${a+1} of ${p}`,type:"text",inputmode:u,pattern:v,disabled:t,readOnly:h,tabIndex:a===d?0:-1,value:r[a]||"",autocomplete:"one-time-code",ref:t=>e[a]=t,onInput:this.onInput(a),onBlur:this.onBlur,onFocus:this.onFocus(a),onKeyDown:this.onKeyDown(a),onPaste:this.onPaste})),this.showSeparator(a)&&o("div",{class:"input-otp-separator"}))))),this.showValidity&&o("div",{key:"cc45bac1e7f7675b467bae6153d9ffa586ec6655",class:{"input-otp-icon":!0,"input-otp-icon--valid":c,"input-otp-icon--invalid":l},part:"validity-icon"},o("slot",{key:"84bd77959eaa572898cd48525512d93b6406b6b6",name:"validity-icon"},o("nano-icon",{key:"c903d61964571e006aca28afea7a911f47527d43",hidden:!c,name:"light/circle-check",class:"input-otp-valid-icon","aria-label":"Valid input"})))),this.slotCtrl.has("[default]")&&o("div",{key:"ddbf6145b86b48ad942227ec15ab419612e5ef41",class:"input-otp-description"},o("slot",{key:"56862b93b96aee7ecad1b36472666f94f2021a5f"})))}static get watchers(){return{value:["valueChanged"]}}};let p=0;r.style=".sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{box-sizing:border-box}[hidden].sc-nano-input-otp{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{box-sizing:border-box}[hidden].sc-nano-input-otp{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-input-otp-h{--color:initial;--min-width:40px;--width:40px;--height:50px;--gap:8px;--icon-size:var(--nano-pictogram-size-small);--inline-padding:calc(var(--icon-size) + var(--gap));--spacing:var(--nano-spacing-xl);--separator-width:7px;--separator-height:1px;--separator-border-radius:0;--separator-color:var(--nano-color-primary-1000);--highlight-color-valid:var(--nano-color-success-1100);--highlight-color-invalid:var(--nano-color-warning-1100);--border-radius:8px;--border-color:var(--nano-color-neutral-700);--border-width:1px;display:block;position:relative;margin-inline:var(--inline-padding)}.input-otp-container.sc-nano-input-otp{position:relative;inline-size:fit-content;block-size:fit-content;margin:0 auto}.input-otp-group.sc-nano-input-otp{display:flex;align-items:center;justify-content:center;gap:var(--gap)}.native-wrapper.sc-nano-input-otp{display:flex;align-items:center;justify-content:center;min-inline-size:var(--min-width)}.native-input.sc-nano-input-otp{border-radius:var(--border-radius);inline-size:var(--width);min-inline-size:inherit;block-size:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;appearance:none}.input-otp-description.sc-nano-input-otp{color:currentcolor;font-size:var(--nano-font-size-xs);line-height:var(--nano-line-height-normal);text-align:center;position:relative;margin-block-start:var(--spacing)}.input-otp-description-hidden.sc-nano-input-otp{display:none}.input-otp-separator.sc-nano-input-otp{border-radius:var(--separator-border-radius);flex-shrink:0;inline-size:var(--separator-width);block-size:var(--separator-height);background:var(--separator-color)}.input-otp-disabled.sc-nano-input-otp-h .input-otp-description.sc-nano-input-otp,.input-otp-disabled.sc-nano-input-otp-h .input-otp-group.sc-nano-input-otp{--color:var(--nano-color-neutral-700);opacity:0.5}.input-otp-disabled.sc-nano-input-otp-h,.input-otp-disabled.sc-nano-input-otp-h .native-input.sc-nano-input-otp:disabled{cursor:not-allowed}.has-focus.sc-nano-input-otp-h .native-input.sc-nano-input-otp:focus{outline:var(--nano-focus-ring)}.nano-invalid.sc-nano-input-otp-h .native-input.sc-nano-input-otp{border-color:var(--highlight-color-invalid)}.nano-valid.sc-nano-input-otp-h .native-input.sc-nano-input-otp{border-color:var(--highlight-color-valid)}.input-otp-icon.sc-nano-input-otp{position:absolute;inset-block-start:50%;transform:translateY(-43%);inset-inline-end:calc((var(--gap) + var(--icon-size)) * -1);inline-size:var(--icon-size);block-size:var(--icon-size);display:flex;align-items:center}.input-otp-icon--valid.sc-nano-input-otp{color:var(--nano-color-success-1100)}.input-otp-icon--invalid.sc-nano-input-otp{color:var(--nano-color-warning-1100)}";export{r as nano_input_otp}
|
|
4
|
+
import{r as t,c as i,g as n,h as o,F as s,a}from"./index-BM3Om9WE.js";import{H as e}from"./slot-BeXeAw-u.js";import"./dom-dlicJTEJ.js";const r=class{constructor(n){t(this,n),this.nanoInput=i(this,"nanoInput",7),this.nanoChange=i(this,"nanoChange",7),this.nanoComplete=i(this,"nanoComplete",7),this.nanoBlur=i(this,"nanoBlur",7),this.nanoClear=i(this,"nanoClear",7),this.nanoFocus=i(this,"nanoFocus",7)}inputRefs=[];inputId="nano-input-otp-"+p++;slotCtrl=new e(this,"[default]");focusedValue;isKeyboardNavigation=!1;get el(){return n(this)}inputValues=[];hasFocus=!1;previousInputValues=[];invalid=!1;valid=!1;disabled=!1;inputmode;length=6;pattern;readonly=!1;type="number";value="";allowInvalid=!1;showValidity=!1;nanoInput;nanoChange;nanoComplete;nanoBlur;nanoClear;nanoFocus;async setFocus(t){if("number"==typeof t){const i=Math.max(0,Math.min(t,this.length-1));this.inputRefs[i]?.focus()}else{const t=this.getTabbableIndex();this.inputRefs[t]?.focus()}}async clear(){this.value="",this.inputRefs.forEach(((t,i)=>{t.value=this.inputValues[i]||""})),this.nanoClear.emit()}valueChanged(){this.initializeValues(),this.updateTabIndexes(),this.computeValidity()}componentWillLoad(){this.initializeValues(),this.computeValidity(),this.valid&&this.nanoComplete.emit({valid:this.valid,value:this.value?.toString()})}componentDidLoad(){this.updateTabIndexes()}get validKeyPattern(){return new RegExp(`^${this.getPattern()}$`,"u")}get specialCharsPattern(){return new RegExp("^[\\p{S}\\p{P}]$","u")}getPattern(){const{pattern:t,type:i}=this;return t||("number"===i?"[\\p{N}]":"[\\p{L}\\p{N}]")}getInputmode(){const{inputmode:t}=this;return t||("number"==this.type?"numeric":"text")}initializeValues(){this.inputValues=Array(this.length).fill(""),null!=this.value&&0!==String(this.value).length&&(String(this.value).split("").slice(0,this.length).forEach(((t,i)=>{(this.allowInvalid&&!this.specialCharsPattern.test(t)||this.validKeyPattern.test(t))&&(this.inputValues[i]=t)})),this.value=this.inputValues.join(""),this.previousInputValues=[...this.inputValues])}isRTL=t=>t&&""!==t.dir?"rtl"===t.dir.toLowerCase():"rtl"===document?.dir.toLowerCase();updateValue(t){const{inputValues:i,length:n}=this,o=this.getValidChars(i.join("")).join("");this.value=o,this.computeValidity(),this.emitNanoInput(t),o.length===n&&this.nanoComplete.emit({value:o,valid:this.valid})}emitNanoChange(t){const{value:i}=this,n=null==i?i:i.toString();this.computeValidity(),this.nanoChange.emit({value:n?.toString(),event:t,valid:this.valid})}emitNanoInput(t){const{value:i}=this,n=null==i?i:i.toString();this.computeValidity(),this.nanoInput.emit({value:n?.toString(),event:t,valid:this.valid})}onFocus=t=>i=>{const{inputRefs:n}=this;this.hasFocus||(this.nanoFocus.emit(i),this.focusedValue=this.value),this.hasFocus=!0;let o=t;if(!this.isKeyboardNavigation){const i=this.inputValues[t]?t:this.getFirstEmptyIndex();o=-1===i?this.length-1:i,this.inputRefs[o]?.focus()}n.forEach(((t,i)=>{t.tabIndex=i===o?0:-1})),this.isKeyboardNavigation=!1};onBlur=t=>{const{inputRefs:i}=this,n=t.relatedTarget;null!=n&&i.includes(n)||(this.hasFocus=!1,this.updateTabIndexes(),this.nanoBlur.emit(t),this.focusedValue!==this.value&&this.emitNanoChange(t))};focusNext(t){const{inputRefs:i,length:n}=this;t<n-1&&i[t+1]?.focus()}focusPrevious(t){const{inputRefs:i}=this;t>0&&i[t-1]?.focus()}getFirstEmptyIndex(){const{inputValues:t,length:i}=this;return Array.from({length:i},((i,n)=>t[n]||"")).findIndex((t=>!t||""===t))??-1}getTabbableIndex(){const{length:t}=this,i=this.getFirstEmptyIndex();return-1===i?t-1:i}updateTabIndexes(){const{inputRefs:t,inputValues:i,length:n}=this;let o=-1;for(let t=0;t<n;t++)if(!i[t]||""===i[t]){o=t;break}t.forEach(((t,s)=>{const a=-1===o?s===n-1:o===s;t.tabIndex=a?0:-1,t.setAttribute("aria-hidden",i[s]&&""!==i[s]||a?"false":"true")}))}onKeyDown=t=>i=>{const{length:n}=this,o=this.isRTL(this.el),s=i.target;if(!(s.selectionStart!==s.selectionEnd||(i.metaKey||i.ctrlKey)&&["a","c","v","x","r","z","y"].includes(i.key.toLowerCase())))if("Backspace"===i.key)if(this.inputValues[t]){for(let i=t;i<n-1;i++)this.inputValues[i]=this.inputValues[i+1];this.inputValues[n-1]="";for(let t=0;t<n;t++)this.inputRefs[t].value=this.inputValues[t]||"";this.updateValue(i),i.preventDefault()}else!this.inputValues[t]&&t>0&&this.focusPrevious(t);else if("ArrowLeft"===i.key||"ArrowRight"===i.key){this.isKeyboardNavigation=!0,i.preventDefault();const s="ArrowLeft"===i.key;s&&o||!s&&!o?this.inputValues[t]&&t<n-1&&this.focusNext(t):this.focusPrevious(t)}else if("Tab"===i.key)return void(this.isKeyboardNavigation=!0)};onInput=t=>i=>{const{length:n,validKeyPattern:o,allowInvalid:s}=this,a=i.target,e=a.value,r=this.previousInputValues[t]||"";if(e.length-r.length>1){const t=this.getValidChars(e);0===t.length&&requestAnimationFrame((()=>{this.inputRefs.forEach((t=>{t.value=""}))}));for(let i=0;i<n;i++)this.inputValues[i]=t[i]||"",this.inputRefs[i].value=t[i]||"";return this.updateValue(i),setTimeout((()=>{const i=t.length<n?t.length:n-1;this.inputRefs[i]?.focus()}),20),void(this.previousInputValues=[...this.inputValues])}if(!s&&e.length>0&&!o.test(e[e.length-1])||s&&this.specialCharsPattern.test(e[e.length-1]))return a.value=this.inputValues[t]||"",void(this.previousInputValues=[...this.inputValues]);if(0===a.selectionStart&&a.selectionEnd===e.length||!this.inputValues[t])return this.inputValues[t]=e,a.value=e,this.updateValue(i),this.focusNext(t),void(this.previousInputValues=[...this.inputValues]);if(this.inputValues[t]&&""===this.inputValues[this.inputValues.length-1]&&2===e.length){let n=i.data;if(n||(n=e.split("").find(((t,i)=>t!==r[i]))||e[e.length-1]),!s&&!o.test(n))return a.value=this.inputValues[t]||"",void(this.previousInputValues=[...this.inputValues]);for(let i=this.inputValues.length-1;i>t;i--)this.inputValues[i]=this.inputValues[i-1],this.inputRefs[i].value=this.inputValues[i]||"";return this.inputValues[t]=n,this.inputRefs[t].value=n,this.updateValue(i),void(this.previousInputValues=[...this.inputValues])}const p=e[(a.selectionStart??e.length)-1]??e[0];if(!s&&!o.test(p))return a.value=this.inputValues[t]||"",void(this.previousInputValues=[...this.inputValues]);this.inputValues[t]=p,a.value=p,this.updateValue(i),this.previousInputValues=[...this.inputValues]};onPaste=t=>{const{inputRefs:i,length:n}=this;t.preventDefault();const o=t.clipboardData?.getData("text");if(!o)return void this.emitNanoInput(t);const s=this.getValidChars(o);s.forEach(((t,i)=>{i<n&&(this.inputRefs[i].value=t,this.inputValues[i]=t)})),this.value=s.join(""),this.updateValue(t);const a=s.length<n?s.length:n-1;i[a]?.focus()};showSeparator(t){const{length:i}=this;return!(i<3||i%2!=0)&&t===i/2-1}getValidChars(t){const{allowInvalid:i,validKeyPattern:n,length:o}=this;return t.split("").filter(i?t=>""!==t.trim()&&!this.specialCharsPattern.test(t):t=>""!==t.trim()&&n.test(t)).slice(0,o)}computeValidity(){this.invalid=this.allowInvalid&&this.inputValues.some((t=>""!==t&&!this.validKeyPattern.test(t))),this.valid=this.inputValues.length===this.length&&this.inputValues.every((t=>""!==t&&this.validKeyPattern.test(t)))}render(){const{disabled:t,hasFocus:i,inputId:n,inputRefs:e,inputValues:r,length:p,readonly:h,invalid:l,valid:c}=this,u=this.getInputmode(),d=this.getTabbableIndex(),v=this.getPattern();return o(a,{key:"69c1b3c4a4cae21665bb7e3646a27a89f8d0a73b",class:{"has-focus":i,"input-otp-disabled":t,"input-otp-readonly":h,"nano-invalid":l,"nano-valid":c}},o("div",{key:"9fcd9882d552cde88adfa7578e556155651bbb4d",class:"input-otp-container"},o("div",{key:"3e2c1a83282c08c1ccef81c4f13a895f1efeec13",class:"input-otp-group",role:"group","aria-label":"One-time password input"},Array.from({length:p}).map(((i,a)=>o(s,null,o("div",{class:"native-wrapper"},o("input",{class:"native-input",id:`${n}-${a}`,"aria-label":`Input ${a+1} of ${p}`,type:"text",inputmode:u,pattern:v,disabled:t,readOnly:h,tabIndex:a===d?0:-1,value:r[a]||"",autocomplete:"one-time-code",ref:t=>e[a]=t,onInput:this.onInput(a),onBlur:this.onBlur,onFocus:this.onFocus(a),onKeyDown:this.onKeyDown(a),onPaste:this.onPaste})),this.showSeparator(a)&&o("div",{class:"input-otp-separator"}))))),this.showValidity&&o("div",{key:"b5d9d9f3023cca6fcf9d8a394287de2333eeff54",class:{"input-otp-icon":!0,"input-otp-icon--valid":c,"input-otp-icon--invalid":l},part:"validity-icon"},o("slot",{key:"d4a3123b713487f579a503ea1158e73b97a35198",name:"validity-icon"},o("nano-icon",{key:"2d7886aadaaa786f3594ace3d4fa3d2ebbdc30c3",hidden:!c,name:"light/circle-check",class:"input-otp-valid-icon","aria-label":"Valid input"})))),this.slotCtrl.has("[default]")&&o("div",{key:"32b6883425e8f62bda344ad6f92ff63a5fef98f4",class:"input-otp-description"},o("slot",{key:"81b5c65f7c8bab2f8bf371c03bc5a2ae455b6c3f"})))}static get watchers(){return{value:["valueChanged"]}}};let p=0;r.style=".sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{box-sizing:border-box}[hidden].sc-nano-input-otp{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{box-sizing:border-box}[hidden].sc-nano-input-otp{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-input-otp-h,*.sc-nano-input-otp,*.sc-nano-input-otp::before,*.sc-nano-input-otp::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-input-otp-h{--color:initial;--min-width:40px;--width:40px;--height:50px;--gap:8px;--icon-size:var(--nano-pictogram-size-small);--inline-padding:calc(var(--icon-size) + var(--gap));--spacing:var(--nano-spacing-xl);--separator-width:7px;--separator-height:1px;--separator-border-radius:0;--separator-color:var(--nano-color-primary-1000);--highlight-color-valid:var(--nano-color-success-1100);--highlight-color-invalid:var(--nano-color-warning-1100);--border-radius:8px;--border-color:var(--nano-color-neutral-700);--border-width:1px;display:block;position:relative;margin-inline:var(--inline-padding)}.input-otp-container.sc-nano-input-otp{position:relative;inline-size:fit-content;block-size:fit-content;margin:0 auto}.input-otp-group.sc-nano-input-otp{display:flex;align-items:center;justify-content:center;gap:var(--gap)}.native-wrapper.sc-nano-input-otp{display:flex;align-items:center;justify-content:center;min-inline-size:var(--min-width)}.native-input.sc-nano-input-otp{border-radius:var(--border-radius);inline-size:var(--width);min-inline-size:inherit;block-size:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;appearance:none}.input-otp-description.sc-nano-input-otp{color:currentcolor;font-size:var(--nano-font-size-xs);line-height:var(--nano-line-height-normal);text-align:center;position:relative;margin-block-start:var(--spacing)}.input-otp-description-hidden.sc-nano-input-otp{display:none}.input-otp-separator.sc-nano-input-otp{border-radius:var(--separator-border-radius);flex-shrink:0;inline-size:var(--separator-width);block-size:var(--separator-height);background:var(--separator-color)}.input-otp-disabled.sc-nano-input-otp-h .input-otp-description.sc-nano-input-otp,.input-otp-disabled.sc-nano-input-otp-h .input-otp-group.sc-nano-input-otp{--color:var(--nano-color-neutral-700);opacity:0.5}.input-otp-disabled.sc-nano-input-otp-h,.input-otp-disabled.sc-nano-input-otp-h .native-input.sc-nano-input-otp:disabled{cursor:not-allowed}.has-focus.sc-nano-input-otp-h .native-input.sc-nano-input-otp:focus{outline:var(--nano-focus-ring)}.nano-invalid.sc-nano-input-otp-h .native-input.sc-nano-input-otp{border-color:var(--highlight-color-invalid)}.nano-valid.sc-nano-input-otp-h .native-input.sc-nano-input-otp{border-color:var(--highlight-color-valid)}.input-otp-icon.sc-nano-input-otp{position:absolute;inset-block-start:50%;transform:translateY(-43%);inset-inline-end:calc((var(--gap) + var(--icon-size)) * -1);inline-size:var(--icon-size);block-size:var(--icon-size);display:flex;align-items:center}.input-otp-icon--valid.sc-nano-input-otp{color:var(--nano-color-success-1100)}.input-otp-icon--invalid.sc-nano-input-otp{color:var(--nano-color-warning-1100)}";export{r as nano_input_otp}
|
|
@@ -113,6 +113,10 @@ export declare class InputOTP implements ComponentInterface {
|
|
|
113
113
|
* Emitted when the input group loses focus.
|
|
114
114
|
*/
|
|
115
115
|
nanoBlur: EventEmitter<FocusEvent>;
|
|
116
|
+
/**
|
|
117
|
+
* Emitted when the input group is cleared.
|
|
118
|
+
*/
|
|
119
|
+
nanoClear: EventEmitter<void>;
|
|
116
120
|
/**
|
|
117
121
|
* Emitted when the input group has focus.
|
|
118
122
|
*/
|
|
@@ -124,6 +128,10 @@ export declare class InputOTP implements ComponentInterface {
|
|
|
124
128
|
* Otherwise, the first empty input box or the last input if all are filled will be focused.
|
|
125
129
|
*/
|
|
126
130
|
setFocus(index?: number): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Resets the input boxes to empty values.
|
|
133
|
+
*/
|
|
134
|
+
clear(): Promise<void>;
|
|
127
135
|
valueChanged(): void;
|
|
128
136
|
componentWillLoad(): void;
|
|
129
137
|
componentDidLoad(): void;
|
|
@@ -2196,6 +2196,10 @@ export namespace Components {
|
|
|
2196
2196
|
* @default false
|
|
2197
2197
|
*/
|
|
2198
2198
|
"allowInvalid": boolean;
|
|
2199
|
+
/**
|
|
2200
|
+
* Resets the input boxes to empty values.
|
|
2201
|
+
*/
|
|
2202
|
+
"clear": () => Promise<void>;
|
|
2199
2203
|
/**
|
|
2200
2204
|
* If `true`, the user cannot interact with the input.
|
|
2201
2205
|
* @default false
|
|
@@ -4485,6 +4489,7 @@ declare global {
|
|
|
4485
4489
|
"nanoChange": InputOtpChangeEventDetail;
|
|
4486
4490
|
"nanoComplete": InputOtpCompleteEventDetail;
|
|
4487
4491
|
"nanoBlur": FocusEvent;
|
|
4492
|
+
"nanoClear": void;
|
|
4488
4493
|
"nanoFocus": FocusEvent;
|
|
4489
4494
|
}
|
|
4490
4495
|
/**
|
|
@@ -7410,6 +7415,10 @@ declare namespace LocalJSX {
|
|
|
7410
7415
|
* The `nanoChange` event is fired when the user modifies the input's value. Unlike the `nanoInput` event, the `nanoChange` event is only fired when changes are committed, not as the user types. The `nanoChange` event fires when the `<nano-input-otp>` component loses focus after its value has changed. This event will not emit when programmatically setting the `value` property.
|
|
7411
7416
|
*/
|
|
7412
7417
|
"onNanoChange"?: (event: NanoInputOtpCustomEvent<InputOtpChangeEventDetail>) => void;
|
|
7418
|
+
/**
|
|
7419
|
+
* Emitted when the input group is cleared.
|
|
7420
|
+
*/
|
|
7421
|
+
"onNanoClear"?: (event: NanoInputOtpCustomEvent<void>) => void;
|
|
7413
7422
|
/**
|
|
7414
7423
|
* Emitted when all input boxes have been filled with valid values.
|
|
7415
7424
|
*/
|
package/docs-json.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2025-10-
|
|
2
|
+
"timestamp": "2025-10-29T17:36:06",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.36.1",
|
|
@@ -3369,7 +3369,7 @@
|
|
|
3369
3369
|
"references": {
|
|
3370
3370
|
"Breadcrumb": {
|
|
3371
3371
|
"location": "local",
|
|
3372
|
-
"path": "/builds/
|
|
3372
|
+
"path": "/builds/RG1Ezkr-/0/Digital/nano-components/packages/components/src/components/breadcrumb/breadcrumb.tsx",
|
|
3373
3373
|
"id": "src/components/breadcrumb/breadcrumb.tsx::Breadcrumb"
|
|
3374
3374
|
}
|
|
3375
3375
|
}
|
|
@@ -18213,6 +18213,28 @@
|
|
|
18213
18213
|
}
|
|
18214
18214
|
],
|
|
18215
18215
|
"methods": [
|
|
18216
|
+
{
|
|
18217
|
+
"name": "clear",
|
|
18218
|
+
"returns": {
|
|
18219
|
+
"type": "Promise<void>",
|
|
18220
|
+
"docs": ""
|
|
18221
|
+
},
|
|
18222
|
+
"complexType": {
|
|
18223
|
+
"signature": "() => Promise<void>",
|
|
18224
|
+
"parameters": [],
|
|
18225
|
+
"references": {
|
|
18226
|
+
"Promise": {
|
|
18227
|
+
"location": "global",
|
|
18228
|
+
"id": "global::Promise"
|
|
18229
|
+
}
|
|
18230
|
+
},
|
|
18231
|
+
"return": "Promise<void>"
|
|
18232
|
+
},
|
|
18233
|
+
"signature": "clear() => Promise<void>",
|
|
18234
|
+
"parameters": [],
|
|
18235
|
+
"docs": "Resets the input boxes to empty values.",
|
|
18236
|
+
"docsTags": []
|
|
18237
|
+
},
|
|
18216
18238
|
{
|
|
18217
18239
|
"name": "setFocus",
|
|
18218
18240
|
"returns": {
|
|
@@ -18293,6 +18315,20 @@
|
|
|
18293
18315
|
"docs": "The `nanoChange` event is fired when the user modifies the input's value.\nUnlike the `nanoInput` event, the `nanoChange` event is only fired when changes\nare committed, not as the user types.\n\nThe `nanoChange` event fires when the `<nano-input-otp>` component loses\nfocus after its value has changed.\n\nThis event will not emit when programmatically setting the `value` property.",
|
|
18294
18316
|
"docsTags": []
|
|
18295
18317
|
},
|
|
18318
|
+
{
|
|
18319
|
+
"event": "nanoClear",
|
|
18320
|
+
"detail": "void",
|
|
18321
|
+
"bubbles": true,
|
|
18322
|
+
"complexType": {
|
|
18323
|
+
"original": "void",
|
|
18324
|
+
"resolved": "void",
|
|
18325
|
+
"references": {}
|
|
18326
|
+
},
|
|
18327
|
+
"cancelable": true,
|
|
18328
|
+
"composed": true,
|
|
18329
|
+
"docs": "Emitted when the input group is cleared.",
|
|
18330
|
+
"docsTags": []
|
|
18331
|
+
},
|
|
18296
18332
|
{
|
|
18297
18333
|
"event": "nanoComplete",
|
|
18298
18334
|
"detail": "InputOtpCompleteEventDetail",
|
package/hydrate/index.js
CHANGED
|
@@ -17769,6 +17769,7 @@ class InputOTP {
|
|
|
17769
17769
|
this.nanoChange = createEvent(this, "nanoChange", 7);
|
|
17770
17770
|
this.nanoComplete = createEvent(this, "nanoComplete", 7);
|
|
17771
17771
|
this.nanoBlur = createEvent(this, "nanoBlur", 7);
|
|
17772
|
+
this.nanoClear = createEvent(this, "nanoClear", 7);
|
|
17772
17773
|
this.nanoFocus = createEvent(this, "nanoFocus", 7);
|
|
17773
17774
|
}
|
|
17774
17775
|
inputRefs = [];
|
|
@@ -17872,6 +17873,10 @@ class InputOTP {
|
|
|
17872
17873
|
* Emitted when the input group loses focus.
|
|
17873
17874
|
*/
|
|
17874
17875
|
nanoBlur;
|
|
17876
|
+
/**
|
|
17877
|
+
* Emitted when the input group is cleared.
|
|
17878
|
+
*/
|
|
17879
|
+
nanoClear;
|
|
17875
17880
|
/**
|
|
17876
17881
|
* Emitted when the input group has focus.
|
|
17877
17882
|
*/
|
|
@@ -17892,6 +17897,16 @@ class InputOTP {
|
|
|
17892
17897
|
this.inputRefs[tabbableIndex]?.focus();
|
|
17893
17898
|
}
|
|
17894
17899
|
}
|
|
17900
|
+
/**
|
|
17901
|
+
* Resets the input boxes to empty values.
|
|
17902
|
+
*/
|
|
17903
|
+
async clear() {
|
|
17904
|
+
this.value = '';
|
|
17905
|
+
this.inputRefs.forEach((input, index) => {
|
|
17906
|
+
input.value = this.inputValues[index] || '';
|
|
17907
|
+
});
|
|
17908
|
+
this.nanoClear.emit();
|
|
17909
|
+
}
|
|
17895
17910
|
valueChanged() {
|
|
17896
17911
|
this.initializeValues();
|
|
17897
17912
|
this.updateTabIndexes();
|
|
@@ -18432,31 +18447,29 @@ class InputOTP {
|
|
|
18432
18447
|
* - `valid` is true if all input boxes are filled with valid values.
|
|
18433
18448
|
*/
|
|
18434
18449
|
computeValidity() {
|
|
18435
|
-
const { inputValues } = this;
|
|
18436
18450
|
this.invalid =
|
|
18437
18451
|
this.allowInvalid &&
|
|
18438
18452
|
this.inputValues.some((val) => val !== '' && !this.validKeyPattern.test(val));
|
|
18439
18453
|
this.valid =
|
|
18440
18454
|
this.inputValues.length === this.length &&
|
|
18441
18455
|
this.inputValues.every((val) => val !== '' && this.validKeyPattern.test(val));
|
|
18442
|
-
inputValues.some((v) => v !== '' && !this.validKeyPattern.test(v));
|
|
18443
18456
|
}
|
|
18444
18457
|
render() {
|
|
18445
18458
|
const { disabled, hasFocus, inputId, inputRefs, inputValues, length, readonly, invalid, valid, } = this;
|
|
18446
18459
|
const inputmode = this.getInputmode();
|
|
18447
18460
|
const tabbableIndex = this.getTabbableIndex();
|
|
18448
18461
|
const pattern = this.getPattern();
|
|
18449
|
-
return (hAsync(Host, { key: '
|
|
18462
|
+
return (hAsync(Host, { key: '69c1b3c4a4cae21665bb7e3646a27a89f8d0a73b', class: {
|
|
18450
18463
|
'has-focus': hasFocus,
|
|
18451
18464
|
'input-otp-disabled': disabled,
|
|
18452
18465
|
'input-otp-readonly': readonly,
|
|
18453
18466
|
'nano-invalid': invalid,
|
|
18454
18467
|
'nano-valid': valid,
|
|
18455
|
-
} }, hAsync("div", { key: '
|
|
18468
|
+
} }, hAsync("div", { key: '9fcd9882d552cde88adfa7578e556155651bbb4d', class: "input-otp-container" }, hAsync("div", { key: '3e2c1a83282c08c1ccef81c4f13a895f1efeec13', class: "input-otp-group", role: "group", "aria-label": "One-time password input" }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && (hAsync("div", { class: "input-otp-separator" })))))), this.showValidity && (hAsync("div", { key: 'b5d9d9f3023cca6fcf9d8a394287de2333eeff54', class: {
|
|
18456
18469
|
'input-otp-icon': true,
|
|
18457
18470
|
'input-otp-icon--valid': valid,
|
|
18458
18471
|
'input-otp-icon--invalid': invalid,
|
|
18459
|
-
}, part: "validity-icon" }, hAsync("slot", { key: '
|
|
18472
|
+
}, part: "validity-icon" }, hAsync("slot", { key: 'd4a3123b713487f579a503ea1158e73b97a35198', name: "validity-icon" }, hAsync("nano-icon", { key: '2d7886aadaaa786f3594ace3d4fa3d2ebbdc30c3', hidden: !valid, name: "light/circle-check", class: "input-otp-valid-icon", "aria-label": "Valid input" }))))), this.slotCtrl.has('[default]') && (hAsync("div", { key: '32b6883425e8f62bda344ad6f92ff63a5fef98f4', class: "input-otp-description" }, hAsync("slot", { key: '81b5c65f7c8bab2f8bf371c03bc5a2ae455b6c3f' })))));
|
|
18460
18473
|
}
|
|
18461
18474
|
static get watchers() { return {
|
|
18462
18475
|
"value": ["valueChanged"]
|
|
@@ -18480,7 +18493,8 @@ class InputOTP {
|
|
|
18480
18493
|
"previousInputValues": [32],
|
|
18481
18494
|
"invalid": [32],
|
|
18482
18495
|
"valid": [32],
|
|
18483
|
-
"setFocus": [64]
|
|
18496
|
+
"setFocus": [64],
|
|
18497
|
+
"clear": [64]
|
|
18484
18498
|
},
|
|
18485
18499
|
"$listeners$": undefined,
|
|
18486
18500
|
"$lazyBundleId$": "-",
|
package/hydrate/index.mjs
CHANGED
|
@@ -17767,6 +17767,7 @@ class InputOTP {
|
|
|
17767
17767
|
this.nanoChange = createEvent(this, "nanoChange", 7);
|
|
17768
17768
|
this.nanoComplete = createEvent(this, "nanoComplete", 7);
|
|
17769
17769
|
this.nanoBlur = createEvent(this, "nanoBlur", 7);
|
|
17770
|
+
this.nanoClear = createEvent(this, "nanoClear", 7);
|
|
17770
17771
|
this.nanoFocus = createEvent(this, "nanoFocus", 7);
|
|
17771
17772
|
}
|
|
17772
17773
|
inputRefs = [];
|
|
@@ -17870,6 +17871,10 @@ class InputOTP {
|
|
|
17870
17871
|
* Emitted when the input group loses focus.
|
|
17871
17872
|
*/
|
|
17872
17873
|
nanoBlur;
|
|
17874
|
+
/**
|
|
17875
|
+
* Emitted when the input group is cleared.
|
|
17876
|
+
*/
|
|
17877
|
+
nanoClear;
|
|
17873
17878
|
/**
|
|
17874
17879
|
* Emitted when the input group has focus.
|
|
17875
17880
|
*/
|
|
@@ -17890,6 +17895,16 @@ class InputOTP {
|
|
|
17890
17895
|
this.inputRefs[tabbableIndex]?.focus();
|
|
17891
17896
|
}
|
|
17892
17897
|
}
|
|
17898
|
+
/**
|
|
17899
|
+
* Resets the input boxes to empty values.
|
|
17900
|
+
*/
|
|
17901
|
+
async clear() {
|
|
17902
|
+
this.value = '';
|
|
17903
|
+
this.inputRefs.forEach((input, index) => {
|
|
17904
|
+
input.value = this.inputValues[index] || '';
|
|
17905
|
+
});
|
|
17906
|
+
this.nanoClear.emit();
|
|
17907
|
+
}
|
|
17893
17908
|
valueChanged() {
|
|
17894
17909
|
this.initializeValues();
|
|
17895
17910
|
this.updateTabIndexes();
|
|
@@ -18430,31 +18445,29 @@ class InputOTP {
|
|
|
18430
18445
|
* - `valid` is true if all input boxes are filled with valid values.
|
|
18431
18446
|
*/
|
|
18432
18447
|
computeValidity() {
|
|
18433
|
-
const { inputValues } = this;
|
|
18434
18448
|
this.invalid =
|
|
18435
18449
|
this.allowInvalid &&
|
|
18436
18450
|
this.inputValues.some((val) => val !== '' && !this.validKeyPattern.test(val));
|
|
18437
18451
|
this.valid =
|
|
18438
18452
|
this.inputValues.length === this.length &&
|
|
18439
18453
|
this.inputValues.every((val) => val !== '' && this.validKeyPattern.test(val));
|
|
18440
|
-
inputValues.some((v) => v !== '' && !this.validKeyPattern.test(v));
|
|
18441
18454
|
}
|
|
18442
18455
|
render() {
|
|
18443
18456
|
const { disabled, hasFocus, inputId, inputRefs, inputValues, length, readonly, invalid, valid, } = this;
|
|
18444
18457
|
const inputmode = this.getInputmode();
|
|
18445
18458
|
const tabbableIndex = this.getTabbableIndex();
|
|
18446
18459
|
const pattern = this.getPattern();
|
|
18447
|
-
return (hAsync(Host, { key: '
|
|
18460
|
+
return (hAsync(Host, { key: '69c1b3c4a4cae21665bb7e3646a27a89f8d0a73b', class: {
|
|
18448
18461
|
'has-focus': hasFocus,
|
|
18449
18462
|
'input-otp-disabled': disabled,
|
|
18450
18463
|
'input-otp-readonly': readonly,
|
|
18451
18464
|
'nano-invalid': invalid,
|
|
18452
18465
|
'nano-valid': valid,
|
|
18453
|
-
} }, hAsync("div", { key: '
|
|
18466
|
+
} }, hAsync("div", { key: '9fcd9882d552cde88adfa7578e556155651bbb4d', class: "input-otp-container" }, hAsync("div", { key: '3e2c1a83282c08c1ccef81c4f13a895f1efeec13', class: "input-otp-group", role: "group", "aria-label": "One-time password input" }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && (hAsync("div", { class: "input-otp-separator" })))))), this.showValidity && (hAsync("div", { key: 'b5d9d9f3023cca6fcf9d8a394287de2333eeff54', class: {
|
|
18454
18467
|
'input-otp-icon': true,
|
|
18455
18468
|
'input-otp-icon--valid': valid,
|
|
18456
18469
|
'input-otp-icon--invalid': invalid,
|
|
18457
|
-
}, part: "validity-icon" }, hAsync("slot", { key: '
|
|
18470
|
+
}, part: "validity-icon" }, hAsync("slot", { key: 'd4a3123b713487f579a503ea1158e73b97a35198', name: "validity-icon" }, hAsync("nano-icon", { key: '2d7886aadaaa786f3594ace3d4fa3d2ebbdc30c3', hidden: !valid, name: "light/circle-check", class: "input-otp-valid-icon", "aria-label": "Valid input" }))))), this.slotCtrl.has('[default]') && (hAsync("div", { key: '32b6883425e8f62bda344ad6f92ff63a5fef98f4', class: "input-otp-description" }, hAsync("slot", { key: '81b5c65f7c8bab2f8bf371c03bc5a2ae455b6c3f' })))));
|
|
18458
18471
|
}
|
|
18459
18472
|
static get watchers() { return {
|
|
18460
18473
|
"value": ["valueChanged"]
|
|
@@ -18478,7 +18491,8 @@ class InputOTP {
|
|
|
18478
18491
|
"previousInputValues": [32],
|
|
18479
18492
|
"invalid": [32],
|
|
18480
18493
|
"valid": [32],
|
|
18481
|
-
"setFocus": [64]
|
|
18494
|
+
"setFocus": [64],
|
|
18495
|
+
"clear": [64]
|
|
18482
18496
|
},
|
|
18483
18497
|
"$listeners$": undefined,
|
|
18484
18498
|
"$lazyBundleId$": "-",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nanoporetech-digital/components",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.14.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"smart-array-filter": "^4.0.2",
|
|
61
61
|
"stencil-wormhole": "3.2.1",
|
|
62
62
|
"tyqs": "^0.1.3",
|
|
63
|
-
"@nanoporetech-digital/style": "8.
|
|
63
|
+
"@nanoporetech-digital/style": "8.14.0"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@algolia/client-search": "^4.22.1",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|