From e0953d63635215b2f6a13c8ba02ccb5e341a4db9 Mon Sep 17 00:00:00 2001 From: An Ly Date: Tue, 9 Apr 2024 16:23:47 +1000 Subject: [PATCH] Cast value to string --- README.md | 2 +- dist/number.esm.js | 2 +- dist/number.min.js | 2 +- index.html | 4 ++-- package.json | 2 +- src/index.js | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 1f6e83c..5314f2c 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,7 @@ The prefix, thousands separator, decimal character, precision and suffix can be Alpine JS along with the magics can be utilized to transform inputs to numbers before submitting a form. ```js -
+
{let u=(l??"").split("|"),r=u?.[0]??"",o=u?.[3]??n??"",d=u?.[1]??",",c=u?.[2]??".",g=parseInt(s.find(e=>!isNaN(parseInt(e)))??-1),p=s.find(e=>e==="unsigned")!==void 0,L={prefix:r,suffix:o,separator:d,decimalChar:c,precision:g,unsigned:p};m({target:t});let w=()=>{let e=t.value,f=t.selectionStart;fe.length-o.length&&t.setSelectionRange(e.length-o.length,e.length-o.length)};t.addEventListener("click",w);let y=e=>{if(e.key!=="-")return;let f=t.value,a=t.selectionStart,b=t.selectionEnd;if(f=f.substring(0,a)+f.substring(b),f!==""){if(t.value.startsWith(r+"-")){t.value=t.value.replace("-",""),t.setSelectionRange(a-1,a-1),e.preventDefault();return}t.value=t.value.replace(r,r+"-"),t.setSelectionRange(a+1,a+1),e.preventDefault()}};p||t.addEventListener("keydown",y);let S=e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="ArrowUp"&&e.key!=="ArrowDown")return;let f=t.value,a=t.selectionStart;e.key==="ArrowLeft"&&a--,e.key==="ArrowRight"&&a++,e.key==="ArrowUp"&&(a=0),e.key==="ArrowDown"&&(a=f.length),af.length-o.length&&(t.setSelectionRange(f.length-o.length,f.length-o.length),e.preventDefault())};t.addEventListener("keydown",S),t.addEventListener("input",m);function m(e){let{value:f,cursorPosition:a}=k(e.target.value,e.target.selectionStart,e?.data===c,L);e.target.value=f,e.target.setSelectionRange(a,a)}i(()=>{t.removeEventListener("input",m),t.removeEventListener("click",w),t.removeEventListener("keydown",S),p||t.removeEventListener("keydown",y)})}),h.magic("toNumber",()=>(t,n=".",s=-1)=>Number(v(t,0,!1,{decimalChar:n,precision:s,unsigned:!1}).value.replace(n,"."))),h.magic("toFormatted",()=>(t,n="",s=",",l=".",i="",u=-1,r=!1)=>k(t,0,!1,{prefix:n,suffix:i,separator:s,decimalChar:l,precision:u,unsigned:r}).value);function v(t,n,s,{decimalChar:l,precision:i,unsigned:u}){let r=R(t,!u),o=s?n-1:t.indexOf(l);if((i>0||i===-1)&&o!==-1&&(r=r.filter(c=>o!==c)),i>0&&o!==-1){let c=0;for(let g=o+1;gi&&r.push(g))}t=E(t,r);let d=r.reduce((c,g)=>c+(g!s.has(u)).join("")}}var D=N;export{D as default}; +function N(h){h.directive("number",(t,{value:n,modifiers:s,expression:l},{cleanup:i})=>{let u=(l??"").split("|"),r=u?.[0]??"",o=u?.[3]??n??"",d=u?.[1]??",",c=u?.[2]??".",g=parseInt(s.find(e=>!isNaN(parseInt(e)))??-1),p=s.find(e=>e==="unsigned")!==void 0,L={prefix:r,suffix:o,separator:d,decimalChar:c,precision:g,unsigned:p};m({target:t});let w=()=>{let e=t.value,f=t.selectionStart;fe.length-o.length&&t.setSelectionRange(e.length-o.length,e.length-o.length)};t.addEventListener("click",w);let y=e=>{if(e.key!=="-")return;let f=t.value,a=t.selectionStart,b=t.selectionEnd;if(f=f.substring(0,a)+f.substring(b),f!==""){if(t.value.startsWith(r+"-")){t.value=t.value.replace("-",""),t.setSelectionRange(a-1,a-1),e.preventDefault();return}t.value=t.value.replace(r,r+"-"),t.setSelectionRange(a+1,a+1),e.preventDefault()}};p||t.addEventListener("keydown",y);let S=e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="ArrowUp"&&e.key!=="ArrowDown")return;let f=t.value,a=t.selectionStart;e.key==="ArrowLeft"&&a--,e.key==="ArrowRight"&&a++,e.key==="ArrowUp"&&(a=0),e.key==="ArrowDown"&&(a=f.length),af.length-o.length&&(t.setSelectionRange(f.length-o.length,f.length-o.length),e.preventDefault())};t.addEventListener("keydown",S),t.addEventListener("input",m);function m(e){let{value:f,cursorPosition:a}=k(e.target.value,e.target.selectionStart,e?.data===c,L);e.target.value=f,e.target.setSelectionRange(a,a)}i(()=>{t.removeEventListener("input",m),t.removeEventListener("click",w),t.removeEventListener("keydown",S),p||t.removeEventListener("keydown",y)})}),h.magic("toNumber",()=>(t,n=".",s=-1)=>Number(v(String(t),0,!1,{decimalChar:n,precision:s,unsigned:!1}).value.replace(n,"."))),h.magic("toFormatted",()=>(t,n="",s=",",l=".",i="",u=-1,r=!1)=>k(t,0,!1,{prefix:n,suffix:i,separator:s,decimalChar:l,precision:u,unsigned:r}).value);function v(t,n,s,{decimalChar:l,precision:i,unsigned:u}){let r=R(t,!u),o=s?n-1:t.indexOf(l);if((i>0||i===-1)&&o!==-1&&(r=r.filter(c=>o!==c)),i>0&&o!==-1){let c=0;for(let g=o+1;gi&&r.push(g))}t=E(t,r);let d=r.reduce((c,g)=>c+(g!s.has(u)).join("")}}var D=N;export{D as default}; diff --git a/dist/number.min.js b/dist/number.min.js index a07ce66..ebf358b 100644 --- a/dist/number.min.js +++ b/dist/number.min.js @@ -1 +1 @@ -(()=>{function E(h){h.directive("number",(t,{value:n,modifiers:s,expression:l},{cleanup:i})=>{let u=(l??"").split("|"),r=u?.[0]??"",o=u?.[3]??n??"",d=u?.[1]??",",c=u?.[2]??".",g=parseInt(s.find(e=>!isNaN(parseInt(e)))??-1),p=s.find(e=>e==="unsigned")!==void 0,R={prefix:r,suffix:o,separator:d,decimalChar:c,precision:g,unsigned:p};m({target:t});let k=()=>{let e=t.value,f=t.selectionStart;fe.length-o.length&&t.setSelectionRange(e.length-o.length,e.length-o.length)};t.addEventListener("click",k);let y=e=>{if(e.key!=="-")return;let f=t.value,a=t.selectionStart,b=t.selectionEnd;if(f=f.substring(0,a)+f.substring(b),f!==""){if(t.value.startsWith(r+"-")){t.value=t.value.replace("-",""),t.setSelectionRange(a-1,a-1),e.preventDefault();return}t.value=t.value.replace(r,r+"-"),t.setSelectionRange(a+1,a+1),e.preventDefault()}};p||t.addEventListener("keydown",y);let S=e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="ArrowUp"&&e.key!=="ArrowDown")return;let f=t.value,a=t.selectionStart;e.key==="ArrowLeft"&&a--,e.key==="ArrowRight"&&a++,e.key==="ArrowUp"&&(a=0),e.key==="ArrowDown"&&(a=f.length),af.length-o.length&&(t.setSelectionRange(f.length-o.length,f.length-o.length),e.preventDefault())};t.addEventListener("keydown",S),t.addEventListener("input",m);function m(e){let{value:f,cursorPosition:a}=w(e.target.value,e.target.selectionStart,e?.data===c,R);e.target.value=f,e.target.setSelectionRange(a,a)}i(()=>{t.removeEventListener("input",m),t.removeEventListener("click",k),t.removeEventListener("keydown",S),p||t.removeEventListener("keydown",y)})}),h.magic("toNumber",()=>(t,n=".",s=-1)=>Number(v(t,0,!1,{decimalChar:n,precision:s,unsigned:!1}).value.replace(n,"."))),h.magic("toFormatted",()=>(t,n="",s=",",l=".",i="",u=-1,r=!1)=>w(t,0,!1,{prefix:n,suffix:i,separator:s,decimalChar:l,precision:u,unsigned:r}).value);function v(t,n,s,{decimalChar:l,precision:i,unsigned:u}){let r=L(t,!u),o=s?n-1:t.indexOf(l);if((i>0||i===-1)&&o!==-1&&(r=r.filter(c=>o!==c)),i>0&&o!==-1){let c=0;for(let g=o+1;gi&&r.push(g))}t=N(t,r);let d=r.reduce((c,g)=>c+(g!s.has(u)).join("")}}document.addEventListener("alpine:init",()=>window.Alpine.plugin(E));})(); +(()=>{function E(h){h.directive("number",(t,{value:n,modifiers:s,expression:l},{cleanup:i})=>{let u=(l??"").split("|"),r=u?.[0]??"",o=u?.[3]??n??"",d=u?.[1]??",",c=u?.[2]??".",g=parseInt(s.find(e=>!isNaN(parseInt(e)))??-1),p=s.find(e=>e==="unsigned")!==void 0,R={prefix:r,suffix:o,separator:d,decimalChar:c,precision:g,unsigned:p};m({target:t});let k=()=>{let e=t.value,f=t.selectionStart;fe.length-o.length&&t.setSelectionRange(e.length-o.length,e.length-o.length)};t.addEventListener("click",k);let y=e=>{if(e.key!=="-")return;let f=t.value,a=t.selectionStart,b=t.selectionEnd;if(f=f.substring(0,a)+f.substring(b),f!==""){if(t.value.startsWith(r+"-")){t.value=t.value.replace("-",""),t.setSelectionRange(a-1,a-1),e.preventDefault();return}t.value=t.value.replace(r,r+"-"),t.setSelectionRange(a+1,a+1),e.preventDefault()}};p||t.addEventListener("keydown",y);let S=e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="ArrowUp"&&e.key!=="ArrowDown")return;let f=t.value,a=t.selectionStart;e.key==="ArrowLeft"&&a--,e.key==="ArrowRight"&&a++,e.key==="ArrowUp"&&(a=0),e.key==="ArrowDown"&&(a=f.length),af.length-o.length&&(t.setSelectionRange(f.length-o.length,f.length-o.length),e.preventDefault())};t.addEventListener("keydown",S),t.addEventListener("input",m);function m(e){let{value:f,cursorPosition:a}=w(e.target.value,e.target.selectionStart,e?.data===c,R);e.target.value=f,e.target.setSelectionRange(a,a)}i(()=>{t.removeEventListener("input",m),t.removeEventListener("click",k),t.removeEventListener("keydown",S),p||t.removeEventListener("keydown",y)})}),h.magic("toNumber",()=>(t,n=".",s=-1)=>Number(v(String(t),0,!1,{decimalChar:n,precision:s,unsigned:!1}).value.replace(n,"."))),h.magic("toFormatted",()=>(t,n="",s=",",l=".",i="",u=-1,r=!1)=>w(t,0,!1,{prefix:n,suffix:i,separator:s,decimalChar:l,precision:u,unsigned:r}).value);function v(t,n,s,{decimalChar:l,precision:i,unsigned:u}){let r=L(t,!u),o=s?n-1:t.indexOf(l);if((i>0||i===-1)&&o!==-1&&(r=r.filter(c=>o!==c)),i>0&&o!==-1){let c=0;for(let g=o+1;gi&&r.push(g))}t=N(t,r);let d=r.reduce((c,g)=>c+(g!s.has(u)).join("")}}document.addEventListener("alpine:init",()=>window.Alpine.plugin(E));})(); diff --git a/index.html b/index.html index 91d8f1a..6e458cd 100644 --- a/index.html +++ b/index.html @@ -229,7 +229,7 @@

Form Example

-<div x-data="{ amount: '10000', formData: {} }" class="space-y-4">
+<div x-data="{ amount: 10000, formData: {} }" class="space-y-4">
 
   <form @submit.prevent="formData = { amount: $toNumber(amount) }">
     <label for="form-example" class="mr-2">Amount:</label>
@@ -251,7 +251,7 @@ 

Form Example

</div>
-
+
(value, decimalChar = ".", precision = -1) => { return Number( - toNumber(value, 0, false, { + toNumber(String(value), 0, false, { decimalChar, precision, unsigned: false,