headless-currency-input
Advanced tools
Comparing version
import * as react_jsx_runtime from 'react/jsx-runtime'; | ||
import { FormEvent, ForwardedRef } from 'react'; | ||
import { ForwardedRef } from 'react'; | ||
import { InputAttributes, NumberFormatBaseProps } from 'react-number-format'; | ||
@@ -10,3 +10,3 @@ | ||
customInput?: React.ComponentType<BaseType>; | ||
onInput?: (event: FormEvent<HTMLInputElement>) => void; | ||
onClick?: (event: React.MouseEvent<HTMLInputElement>) => void; | ||
}; | ||
@@ -13,0 +13,0 @@ declare function RenderCurrencyInput<BaseType = InputAttributes>(props: CurrencyInputProps<BaseType>, forwadedRef: ForwardedRef<HTMLInputElement>): react_jsx_runtime.JSX.Element; |
@@ -1,2 +0,2 @@ | ||
'use strict';var utils=require('@react-aria/utils'),intl=require('@sumup/intl'),react=require('react'),reactNumberFormat=require('react-number-format'),jsxRuntime=require('react/jsx-runtime');function f(e,m=0){return e.value=e.value,e!==null?e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(m,m),true):(e.focus(),false):false}function E(e,m){let u=react.useRef(null),{locale:s="en",currency:y="USD",withCurrencySymbol:I=true}=e,n=intl.resolveCurrencyFormat(s,y),d=(n==null?void 0:n.currencyPosition)==="prefix"?`${n.currencySymbol} `:"",o=(n==null?void 0:n.minimumFractionDigits)??0,g=(n==null?void 0:n.maximumFractionDigits)??0,l=10**o;function b(t){var a,c;let r=0;Number(t)?r=Number(t):(r=0,typeof document<"u"&&document.activeElement===u.current&&((a=u.current)==null||a.setSelectionRange(t.length+(o??0),t.length+(o??0)),t.length&&t.length<=3&&((c=u.current)==null||c.setSelectionRange(t.length+(o??0),t.length+(o??0)))));let i=new Intl.NumberFormat(n==null?void 0:n.locale,{style:"currency",currency:n==null?void 0:n.currency,currencyDisplay:"code",minimumFractionDigits:o,maximumFractionDigits:g}).format(o?r/l:r).replace(/[a-z]{3}/i,"").trim();return I?`${d}${i}`:`${i}`}function T(t,r){var c;let i=o?(Number.parseFloat(t.value)/l).toFixed(o):t.value,a=t.floatValue&&o?t.floatValue/l:t.floatValue;(c=e==null?void 0:e.onValueChange)==null||c.call(e,{value:i,floatValue:a,formattedValue:t.formattedValue},r);}function v(t){var r;if(u.current){let i=u.current.value,a=i.indexOf("."),c=a===-1?i.length:a+o+1;f(u.current,c);}(r=e==null?void 0:e.onFocus)==null||r.call(e,t);}function F(t){var r;if(u.current){let i=u.current.value,a=i.indexOf("."),c=a===-1?i.length:a+o+1;f(u.current,c);}(r=e==null?void 0:e.onInput)==null||r.call(e,t);}return jsxRuntime.jsx(reactNumberFormat.NumberFormatBase,{...e,format:b,onFocus:v,onInput:F,onValueChange:T,getInputRef:utils.mergeRefs(u,m),prefix:void 0,valueIsNumericString:false})}var M=react.forwardRef(E);exports.CurrencyInput=M;//# sourceMappingURL=index.js.map | ||
'use strict';var utils=require('@react-aria/utils'),intl=require('@sumup/intl'),react=require('react'),reactNumberFormat=require('react-number-format'),jsxRuntime=require('react/jsx-runtime');function s(e,c=0){return e===null?false:(e.select(),e.setSelectionRange(0,0),e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(c,c),true):(e.focus(),false))}function C(e){let c=e.selectionStart??0,r=e.selectionEnd??0;return Math.max(c,r)}function $(e,c){let r=react.useRef(null),{locale:m="en",currency:b="USD",withCurrencySymbol:T=true,...R}=e,o=intl.resolveCurrencyFormat(m,b),P=(o==null?void 0:o.currencyPosition)==="prefix"?`${o.currencySymbol} `:"",a=(o==null?void 0:o.minimumFractionDigits)??0,v=(o==null?void 0:o.maximumFractionDigits)??0,f=10**a;function B(t){let n=0;if(Number(t)?n=Number(t):n=0,!r.current)return t;let u=new Intl.NumberFormat(o==null?void 0:o.locale,{style:"currency",currency:o==null?void 0:o.currency,currencyDisplay:"code",minimumFractionDigits:a,maximumFractionDigits:v}).format(a?n/f:n).replace(/[a-z]{3}/i,"").trim(),i=T?`${P}${u}`:u;return (!t||t==="0")&&I(i.length),i}function S(t,n){var l;let u=a?(Number.parseFloat(t.value)/f).toFixed(a):t.value,i=t.floatValue&&a?t.floatValue/f:t.floatValue;(l=e==null?void 0:e.onValueChange)==null||l.call(e,{value:u,floatValue:i,formattedValue:t.formattedValue},n);}let E=()=>{var n;return ((n=new Intl.NumberFormat(m).formatToParts(1.1).find(u=>u.type==="decimal"))==null?void 0:n.value)??"."},d=()=>{var n;return ((n=new Intl.NumberFormat(m).formatToParts(1e3).find(u=>u.type==="group"))==null?void 0:n.value)??""},I=t=>{r.current&&s(r.current,t);},g=(t=false)=>{if(!r.current)return;let n=C(r.current),u=a?`\\${E()}`:"",i=d()?`\\${d()}`:"",l=[u,i].filter(Boolean).join("|"),N=new RegExp(`^(${l})$`),y=t?r.current.value[n-1]:r.current.value[n];if(y!=null&&y.match(N)){let D=n+(t?-1:1);I(D);}};function F(t){var u;let{key:n}=t;t.defaultPrevented||(n==="Backspace"?g(true):n==="Delete"&&g(false),(u=e==null?void 0:e.onKeyDown)==null||u.call(e,t));}function w(t){var n;r.current&&s(r.current,r.current.value.length),(n=e==null?void 0:e.onFocus)==null||n.call(e,t);}function x(t){var n;r.current&&s(r.current,r.current.value.length),(n=e==null?void 0:e.onClick)==null||n.call(e,t);}return jsxRuntime.jsx(reactNumberFormat.NumberFormatBase,{...R,format:B,onFocus:w,onClick:x,onKeyDown:F,onValueChange:S,getInputRef:utils.mergeRefs(r,c),prefix:void 0,valueIsNumericString:false})}var j=react.forwardRef($);exports.CurrencyInput=j;//# sourceMappingURL=index.js.map | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "headless-currency-input", | ||
"version": "1.4.0", | ||
"version": "1.5.0", | ||
"description": "Headless Currency Input is a component to format currency input in an elegant way.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
45567
19.08%35
12.9%