koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
85 lines (84 loc) • 2.28 kB
JavaScript
"use client";
import { jsx as h } from "react/jsx-runtime";
import { forwardRef as j, useMemo as B } from "react";
import G from "classnames";
import { useBrowserLocale as R } from "../../internal/locale/useBrowserLocale.js";
import T from "./Number.module.css.js";
import { CurrencyDisplayTypes as V, SignDisplayModes as k, Styles as q, LocaleMatchers as z } from "./types.js";
const A = j(
({
value: i,
className: L,
locale: r,
localeMatcher: t = z["best fit"],
digitsConfig: m = {
integer: {
minimum: 1
},
significant: {
minimum: 1,
maximum: 21
},
fraction: {
maximum: 2
}
},
grouping: e,
signDisplay: n = k.auto,
currency: a,
currencyDisplay: u = V.symbol,
currencySign: s,
...S
}, I) => {
var f, l, x, p, b;
const M = R(), o = r || M, c = B(
() => {
var y, N, D, w, F;
return i ? new Intl.NumberFormat(o, {
localeMatcher: t,
style: q.currency,
minimumIntegerDigits: (y = m.integer) == null ? void 0 : y.minimum,
minimumFractionDigits: (N = m.fraction) == null ? void 0 : N.minimum,
minimumSignificantDigits: (D = m.significant) == null ? void 0 : D.minimum,
maximumSignificantDigits: (w = m.significant) == null ? void 0 : w.maximum,
maximumFractionDigits: (F = m.fraction) == null ? void 0 : F.maximum,
useGrouping: e,
signDisplay: n,
currency: a,
currencyDisplay: u,
currencySign: s
}).format(i) : "";
},
[
a,
u,
s,
(f = m.fraction) == null ? void 0 : f.maximum,
(l = m.fraction) == null ? void 0 : l.minimum,
(x = m.integer) == null ? void 0 : x.minimum,
(p = m.significant) == null ? void 0 : p.maximum,
(b = m.significant) == null ? void 0 : b.minimum,
e,
o,
t,
n,
i
]
);
return i && /* @__PURE__ */ h(
"span",
{
...S,
title: c,
className: G(T.number, L),
ref: I,
children: c
}
);
}
);
A.displayName = "NumberCurrency";
export {
A as NumberCurrency
};
//# sourceMappingURL=NumberCurrency.js.map