@harvest-profit/npk
Version:
NPK UI Design System
32 lines • 1.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const ThemeContext_1 = __importDefault(require("../ThemeContext"));
const _1 = __importDefault(require("."));
const NumberInput = ({ onChange = (_v) => null, value, ...props }) => {
return ((0, jsx_runtime_1.jsx)(_1.default, { mask: "number", value: `${value || ''}`, onChange: (v) => {
const parsedValue = parseFloat(`${v}`.replaceAll(',', ''));
onChange(isNaN(parsedValue) ? null : parsedValue);
}, ...props }));
};
const NumberInputWrapper = (props) => {
const theme = (0, react_1.useContext)(ThemeContext_1.default);
let suggestedProps = {};
let suggestedFormatOptions = {};
if (props.type === 'currency') {
suggestedProps.leadingVisual = theme.currencySymbol || '$';
suggestedFormatOptions.minimumFractionDigits = 2;
suggestedFormatOptions.maximumFractionDigits = 4;
}
if (props.type === 'percentage') {
suggestedProps.trailingVisual = '%';
}
const formatOptions = { ...suggestedFormatOptions, ...(props.formatOptions || {}) };
return ((0, jsx_runtime_1.jsx)(NumberInput, { ...suggestedProps, ...props, formatOptions: formatOptions }));
};
exports.default = NumberInputWrapper;
//# sourceMappingURL=NumberInput.js.map