UNPKG

jb-number-input

Version:
2 lines 12 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("jb-input"),require("jb-core"),require("jb-core/i18n")):"function"==typeof define&&define.amd?define(["exports","jb-input","jb-core","jb-core/i18n"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).JBNumberInput={},e.JBInput,e.JBCore,e["jb-coreI18N"])}(this,(function(e,t,n,r){var i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,u=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,n)=>(n=null!=e?i(u(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var i,u=s(t),l=0,b=u.length;l<b;l++)i=u[l],c.call(e,i)||i===n||a(e,i,{get:(e=>t[e]).bind(null,i),enumerable:!(r=o(t,i))||r.enumerable});return e})(!t&&e&&e.__esModule?n:a(n,"default",{value:e,enumerable:!0}),e));function b(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function h(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n}t=l(t),n=l(n),r=l(r);function m(e){if(null==e||null==e||0==e.trim().length)return!1;{let t=!isNaN(Number(e));if(!t){const r=(0,n.faToEnDigits)(e);t=!isNaN(Number(r))}return t}}const p={validator:({value:e})=>0==e.trim().length||m(e),message:new r.JBDictionary({fa:{numberValidation:"مقدار وارد شده میبایست عدد باشد"},en:{numberValidation:"Your entered value must be number"}}).get(r.i18n,"numberValidation")};var d,f,v,g,w,N,j,k,y,V,x,P,E,T,B,S,M,C,I,W=class e extends t.JBInputWebComponent{get minValue(){return b(this,f,"f").minValue}set minValue(e){if(null==e)return void(b(this,f,"f").minValue=null);const t=Number(e);Number.isNaN(t)?console.error("min value is not a valid number"):b(this,f,"f").minValue=t}get maxValue(){return b(this,f,"f").maxValue}set maxValue(e){if(null==e)return void(b(this,f,"f").maxValue=null);const t=Number(e);Number.isNaN(t)?console.error("max value is not a valid number"):b(this,f,"f").maxValue=t}get decimalPrecision(){return b(this,f,"f").decimalPrecision}set decimalPrecision(e){if(null==e)return void(b(this,f,"f").decimalPrecision=null);const t=Number(e);Number.isNaN(t)?console.error("decimalPrecision value is not a valid number"):b(this,f,"f").decimalPrecision=t}get acceptNegative(){return b(this,f,"f").acceptNegative}set acceptNegative(e){b(this,f,"f").acceptNegative=Boolean(e)}get step(){return b(this,v,"f")}set step(e){null!=e?Number.isNaN(Number(e))?console.error("step must be a number"):h(this,v,e,"f"):h(this,v,null,"f")}get showThousandSeparator(){return b(this,g,"f")}set showThousandSeparator(e){const t=Boolean(e);t!==b(this,g,"f")&&(h(this,g,t,"f"),this.value=`${this.value}`)}get thousandSeparator(){return b(this,w,"f")}set thousandSeparator(e){b(this,w,"f")!==e&&(h(this,w,String(e),"f"),this.value=`${this.value}`)}get showPersianNumber(){return b(this,N,"f")}set showPersianNumber(e){h(this,N,Boolean(e),"f"),this.value=`${this.value}`}get invalidNumberReplacement(){return b(this,j,"f")}set invalidNumberReplacement(e){h(this,j,String(e),"f")}get showControlButton(){return b(this,k,"f")}set showControlButton(e){e!=b(this,k,"f")&&(h(this,k,e,"f"),!0===e?b(this,d,"m",S).call(this):!1===e&&b(this,d,"m",M).call(this))}constructor(){super(),d.add(this),f.set(this,{maxValue:null,minValue:null,decimalPrecision:null,acceptNegative:!0}),v.set(this,1),g.set(this,!1),w.set(this,","),N.set(this,!1),j.set(this,""),k.set(this,!1),b(this,d,"m",V).call(this)}static get numberInputObservedAttributes(){return["thousand-separator","step","show-persian-number","min","max","decimal-precision","accept-negative","show-control-button"]}static get observedAttributes(){return[...t.JBInputWebComponent.observedAttributes,...e.numberInputObservedAttributes]}attributeChangedCallback(t,n,r){[...e.numberInputObservedAttributes,"type"].includes(t)?b(this,d,"m",P).call(this,t,r):this.onAttributeChange(t,r)}increaseNumber(e=!1){const t=Number(this.value);if(isNaN(t))return;const n=b(this,v,"f"),r=b(this,d,"m",B).call(this,t,n);this.value=`${r}`,this.validation.checkValidity({showError:!0}),e&&b(this,d,"m",T).call(this)}decreaseNumber(e=!1){const t=parseFloat(this.value);if(isNaN(t))return;const n=b(this,f,"f")?b(this,v,"f"):1;let r=b(this,d,"m",B).call(this,t,-1*n);!(r<0)||b(this,f,"f")&&b(this,f,"f").acceptNegative||(r=0),this.value=`${r}`,this.validation.checkValidity({showError:!0}),e&&b(this,d,"m",T).call(this)}};f=new WeakMap,v=new WeakMap,g=new WeakMap,w=new WeakMap,N=new WeakMap,j=new WeakMap,k=new WeakMap,d=new WeakSet,y=function(){this.elements.input.addEventListener("beforeinput",b(this,d,"m",I).bind(this)),this.addEventListener("keydown",b(this,d,"m",C).bind(this))},V=function(){const e=document.createElement("template");e.innerHTML="<style>.jb-input-web-component{--jb-input-input-direction:var(--jb-number-input-input-direction,ltr)}.jb-input-web-component .number-control-wrapper .number-control-buttons{cursor:pointer;height:100%;display:flex}.jb-input-web-component .number-control-wrapper .number-control-buttons .number-control-button{width:var(--jb-number-input-button-width,36px);text-align:center;height:100%}.jb-input-web-component .number-control-wrapper .number-control-buttons .increase-number-button{background:var(--jb-number-input-increase-button-bg,transparent);border:var(--jb-number-input-increase-button-border,none);border-radius:var(--jb-number-input-increase-button-border-radius,0);box-sizing:border-box}.jb-input-web-component .number-control-wrapper .number-control-buttons .increase-number-button .increase-icon{stroke:var(--increase-button-color);stroke-width:14px;width:100%;height:100%;display:block}.jb-input-web-component .number-control-wrapper .number-control-buttons .increase-number-button:hover .increase-icon{stroke:var(--increase-button-color-hover)}.jb-input-web-component .number-control-wrapper .number-control-buttons .decrease-number-button{border:var(--jb-number-input-decrease-button-border,none);border-radius:var(--jb-number-input-decrease-button-border-radius,0);background:var(--jb-number-input-decrease-button-bg,transparent);box-sizing:border-box}.jb-input-web-component .number-control-wrapper .number-control-buttons .decrease-number-button .decrease-icon{stroke:var(--decrease-button-color);stroke-width:14px;width:100%;height:100%;display:block}.jb-input-web-component .number-control-wrapper .number-control-buttons .decrease-number-button:hover .decrease-icon{stroke:var(--decrease-button-color-hover)} :host{--increase-button-color:var(--jb-number-input-increase-button-color,var(--jb-neutral-7));--increase-button-color-hover:var(--jb-number-input-increase-button-color-hover,oklch(from var(--jb-green)calc(l + .07)calc(c + .07)h));--decrease-button-color:var(--jb-number-input-decrease-button-color,var(--jb-neutral-7));--decrease-button-color-hover:var(--jb-number-input-decrease-button-color-hover,oklch(from var(--jb-red)calc(l + .07)calc(c + .07)h))}</style>",this.shadowRoot.appendChild(e.content.cloneNode(!0)),this.validation.addValidationListGetter(b(this,d,"m",E).bind(this)),this.elements.input.inputMode="numeric",this.numberInputElements={controlButtons:null},b(this,d,"m",y).call(this),this.addStandardValueCallback(b(this,d,"m",x).bind(this))},x=function(e,t,r,i){return function(e,t,r,i){if("-"==e&&1==t.acceptNegative)return{displayValue:e,value:"-0"};let a=e;r.useThousandSeparator&&(a=a.replace(new RegExp(`${r.thousandSeparator}`,"g"),""));const o="-"==a[0];a=(0,n.faToEnDigits)(a).replace(/[^0-9.]/g,""),o&&t.acceptNegative&&(a="-"+a);let s=Number(a);isNaN(s)&&(a=a.replace(/\u06F0/g,"0").replace(/\u06F1/g,"1").replace(/\u06F2/g,"2").replace(/\u06F3/g,"3").replace(/\u06F4/g,"4").replace(/\u06F5/g,"5").replace(/\u06F6/g,"6").replace(/\u06F7/g,"7").replace(/\u06F8/g,"8").replace(/\u06F9/g,"9"),s=parseFloat(a),isNaN(s)&&(a=r.invalidNumberReplacement)),"INPUT"!==i&&0!==a.length&&(t.maxValue&&s>t.maxValue&&(s=t.maxValue,a=`${t.maxValue}`),t.minValue&&s<t.minValue&&(s=t.minValue,a=`${t.minValue}`)),"INPUT"!==i&&a.endsWith(".")&&(a=a.substring(0,a.length-1));const[u,c]=a.split("."),l=c?c.length:0;if(t&&null!==t.decimalPrecision&&null!=t.decimalPrecision&&l&&l>t.decimalPrecision){const e=new RegExp(`^-?\\d+(?:\\.\\d{0,${t.decimalPrecision}})?`),n=a.match(e);n&&n[0]&&(a=n[0])}u.startsWith("0")&&u.length>1&&(a=a.substring(1)),u.startsWith("-")&&"0"==u.charAt(1)&&u.length>2&&(a="-"+a.substring(2)),"INPUT"!==i&&c&&c.endsWith("0")&&(a=a.replace(/(\.\d*?[1-9])0+|\.0+$/,"$1"));const b={displayValue:a,value:a};return r.useThousandSeparator&&(b.displayValue=a.replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g,r.thousandSeparator)),r.showPersianNumber&&(b.displayValue=(0,n.enToFaDigits)(b.displayValue)),b}(e,b(this,f,"f"),{invalidNumberReplacement:b(this,j,"f"),thousandSeparator:b(this,w,"f"),useThousandSeparator:this.showThousandSeparator,showPersianNumber:b(this,N,"f")},i)},P=function(e,t){switch(e){case"thousand-separator":""==t||"true"==t||"false"==t?this.showThousandSeparator=""==t||"true"===t:(h(this,g,!0,"f"),h(this,w,t,"f"));break;case"step":this.step=Number(t);break;case"show-persian-number":this.showPersianNumber=""==t||"true"===t;break;case"min":this.minValue=t;break;case"max":this.maxValue=t;break;case"decimal-precision":this.decimalPrecision=t;break;case"accept-negative":""!=t&&"true"!=t&&"false"!=t||(this.acceptNegative=""==t||"true"===t);break;case"show-control-button":""!=t&&"true"!=t&&"false"!=t||(this.showControlButton=""==t||"true"===t)}},E=function(){return[p]},T=function(){const e=new Event("change",{cancelable:!1});this.dispatchEvent(e)},B=function(e,t){const n=`${e}`.split(".")[1],r=`${t}`.split(".")[1],i=n?Math.pow(10,n.length+1):1,a=r?Math.pow(10,r.length+1):1,o=Math.max(i,a);return(e*o+t*o)/o},S=function(){const e=document.createElement("div");e.classList.add("number-control-wrapper"),e.innerHTML='\n <div class="number-control-buttons">\n <div class="increase-number-button number-control-button">\n <svg class="increase-icon" viewBox="0 0 120 120">\n <path stroke-linecap="round" d="M60,40 L60,80"></path>\n <path stroke-linecap="round" d="M40,60 L80,60"></path>\n </svg>\n </div>\n <div class="decrease-number-button number-control-button">\n <svg class="decrease-icon" viewBox="0 0 120 120">\n <path stroke-linecap="round" d="M40,60 L80,60"></path>\n </svg>\n </div>\n </div>\n ',e.querySelector(".increase-number-button").addEventListener("click",this.increaseNumber.bind(this,!0)),e.querySelector(".decrease-number-button").addEventListener("click",this.decreaseNumber.bind(this,!0)),this.elements.slots.endSection.appendChild(e),this.numberInputElements.controlButtons=e},M=function(){this.numberInputElements.controlButtons&&this.numberInputElements.controlButtons.remove()},C=function(e){const t=e.key;"ArrowUp"==t&&(this.increaseNumber(!1),e.preventDefault()),"ArrowDown"==t&&(this.decreaseNumber(!1),e.preventDefault())},I=function(e){const t=e.target.selectionEnd||0,n=e.target.selectionStart||0;let r=!1;"deleteContentBackward"===e.inputType||m(e.data)||(r=!0,"."!=e.data||0===b(this,f,"f").decimalPrecision||-1!=this.value.indexOf(".")||0==t||0==n||null!==b(this,f,"f").decimalPrecision&&this.value.substring(t).length>b(this,f,"f").decimalPrecision||(r=!1),b(this,f,"f").acceptNegative&&"-"==e.data[0]&&0==n&&(r=!1)),r&&e.preventDefault()};!customElements.get("jb-number-input")&&window.customElements.define("jb-number-input",W),e.JBNumberInputWebComponent=W})); //# sourceMappingURL=jb-number-input.umd.js.map