koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 4.81 kB
Source Map (JSON)
{"version":3,"file":"NumberCurrency.cjs","sources":["../../../../src/lib/Number/NumberCurrency.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react';\nimport classNames from 'classnames';\n\nimport type {DataAttributes, LibraryProps} from '@/internal/LibraryAPI';\nimport {useBrowserLocale} from '@/internal/locale';\nimport classes from '@/lib/Number/Number.module.css';\n\nimport type {NumberProps} from './types.ts';\nimport {Styles} from './types.ts';\nimport {LocaleMatchers, CurrencyDisplayTypes, SignDisplayModes} from './types.ts';\n\nexport type Props = DataAttributes &\n LibraryProps &\n Omit<NumberProps, 'notation' | 'compactDisplay' | 'unitDisplay' | 'unit'>;\n\nexport const NumberCurrency = forwardRef<HTMLSpanElement, Props>(\n (\n {\n value,\n className,\n locale: localeProp,\n localeMatcher = LocaleMatchers['best fit'],\n digitsConfig = {\n integer: {\n minimum: 1,\n },\n significant: {\n minimum: 1,\n maximum: 21,\n },\n fraction: {\n maximum: 2,\n },\n },\n grouping,\n signDisplay = SignDisplayModes.auto,\n currency,\n currencyDisplay = CurrencyDisplayTypes.symbol,\n currencySign,\n ...nativeProps\n },\n ref\n ) => {\n const userLocale = useBrowserLocale();\n const locale = localeProp ? localeProp : userLocale;\n const formattedValue = useMemo(\n () =>\n value\n ? new Intl.NumberFormat(locale, {\n localeMatcher,\n style: Styles.currency,\n minimumIntegerDigits: digitsConfig.integer?.minimum,\n minimumFractionDigits: digitsConfig.fraction?.minimum,\n minimumSignificantDigits: digitsConfig.significant?.minimum,\n maximumSignificantDigits: digitsConfig.significant?.maximum,\n maximumFractionDigits: digitsConfig.fraction?.maximum,\n useGrouping: grouping,\n signDisplay,\n currency,\n currencyDisplay,\n currencySign,\n }).format(value)\n : '',\n [\n currency,\n currencyDisplay,\n currencySign,\n digitsConfig.fraction?.maximum,\n digitsConfig.fraction?.minimum,\n digitsConfig.integer?.minimum,\n digitsConfig.significant?.maximum,\n digitsConfig.significant?.minimum,\n grouping,\n locale,\n localeMatcher,\n signDisplay,\n value,\n ]\n );\n return (\n value && (\n <span\n {...nativeProps}\n title={formattedValue}\n className={classNames(classes.number, className)}\n ref={ref}>\n {formattedValue}\n </span>\n )\n );\n }\n);\n\nNumberCurrency.displayName = 'NumberCurrency';\n"],"names":["NumberCurrency","forwardRef","value","className","localeProp","localeMatcher","LocaleMatchers","digitsConfig","grouping","signDisplay","SignDisplayModes","currency","currencyDisplay","CurrencyDisplayTypes","currencySign","nativeProps","ref","userLocale","useBrowserLocale","locale","formattedValue","useMemo","Styles","jsx","classNames","classes"],"mappings":"mSAeaA,EAAiBC,EAAAA,WAC1B,CACI,CACI,MAAAC,EACA,UAAAC,EACA,OAAQC,EACR,cAAAC,EAAgBC,EAAAA,eAAe,UAAU,EACzC,aAAAC,EAAe,CACX,QAAS,CACL,QAAS,CAAA,EAEb,YAAa,CACT,QAAS,EACT,QAAS,EAAA,EAEb,SAAU,CACN,QAAS,CAAA,CACb,EAEJ,SAAAC,EACA,YAAAC,EAAcC,EAAAA,iBAAiB,KAC/B,SAAAC,EACA,gBAAAC,EAAkBC,EAAAA,qBAAqB,OACvC,aAAAC,EACA,GAAGC,CAAA,EAEPC,IACC,CACD,MAAMC,EAAaC,EAAAA,iBAAA,EACbC,EAASf,GAA0Ba,EACnCG,EAAiBC,EAAAA,QACnB,IACInB,EACM,IAAI,KAAK,aAAaiB,EAAQ,CAC1B,cAAAd,EACA,MAAOiB,EAAAA,OAAO,SACd,qBAAsBf,EAAa,SAAS,QAC5C,sBAAuBA,EAAa,UAAU,QAC9C,yBAA0BA,EAAa,aAAa,QACpD,yBAA0BA,EAAa,aAAa,QACpD,sBAAuBA,EAAa,UAAU,QAC9C,YAAaC,EACb,YAAAC,EACA,SAAAE,EACA,gBAAAC,EACA,aAAAE,CAAA,CACH,EAAE,OAAOZ,CAAK,EACf,GACV,CACIS,EACAC,EACAE,EACAP,EAAa,UAAU,QACvBA,EAAa,UAAU,QACvBA,EAAa,SAAS,QACtBA,EAAa,aAAa,QAC1BA,EAAa,aAAa,QAC1BC,EACAW,EACAd,EACAI,EACAP,CAAA,CACJ,EAEJ,OACIA,GACIqB,EAAAA,IAAC,OAAA,CACI,GAAGR,EACJ,MAAOK,EACP,UAAWI,EAAWC,UAAQ,OAAQtB,CAAS,EAC/C,IAAAa,EACC,SAAAI,CAAA,CAAA,CAIjB,CACJ,EAEApB,EAAe,YAAc"}