@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
53 lines • 1.82 kB
JavaScript
import React from 'react';
import clsx from 'clsx';
import ValueBlock from "../../ValueBlock/index.js";
import useValueProps from "../../hooks/useValueProps.js";
import { omitSpacingProps } from "../../../../components/flex/utils.js";
import NumberFormatBase from "../../../../components/number-format/NumberFormatBase.js";
import { formatCurrency } from "../../../../components/number-format/utils/formatCurrency.js";
import { formatPercent } from "../../../../components/number-format/utils/formatPercent.js";
import { formatNumber } from "../../../../components/number-format/utils/formatNumber.js";
import withComponentMarkers from "../../../../shared/helpers/withComponentMarkers.js";
import { jsx as _jsx } from "react/jsx-runtime";
function NumberValue(props) {
const {
value: valueProp,
minimum = Number.MIN_SAFE_INTEGER,
maximum = Number.MAX_SAFE_INTEGER,
inline,
showEmpty,
className,
path,
itemPath,
inheritLabel,
...rest
} = useValueProps(props);
const {
percent,
...numberFormatRest
} = omitSpacingProps(rest);
let value = valueProp;
if (value < minimum) {
value = minimum;
}
if (value > maximum) {
value = maximum;
}
const formatter = percent ? formatPercent : numberFormatRest.currency === true || typeof numberFormatRest.currency === 'string' ? formatCurrency : formatNumber;
return _jsx(ValueBlock, {
className: clsx('dnb-forms-value-number', className),
inline: inline,
showEmpty: showEmpty,
...rest,
children: typeof value !== 'undefined' || showEmpty ? _jsx(NumberFormatBase, {
value: value,
...numberFormatRest,
__format: formatter
}) : null
});
}
withComponentMarkers(NumberValue, {
_supportsSpacingProps: true
});
export default NumberValue;
//# sourceMappingURL=Number.js.map