@novin-dev/formalite
Version:
Generate MUI form with few line of code
49 lines (46 loc) • 2.64 kB
JavaScript
import { __rest, __assign } from 'tslib';
import React, { useMemo } from 'react';
import NumberFormat from 'react-number-format';
import { Grid } from '@mui/material';
import { baseMemo } from '../Bases/functions/memo.js';
import { TextFieldBase } from '../Bases/TextFieldBase.js';
var PriceView = function (props) {
var allData = props.allData, name = props.name, formik = props.formik, loading = props.loading, validationSchema = props.validationSchema, translator = props.translator, formMustRegex = props.formMustRegex;
var _a = allData.inputProps, onChange = _a.onChange, inputProps = __rest(_a, ["onChange"]);
var NumberFormatCustom = useMemo(function () {
return React.forwardRef(function (numberFormatProps, ref) {
var numberOnChange = numberFormatProps.onChange, other = __rest(numberFormatProps, ["onChange"]);
return (React.createElement(NumberFormat, __assign({}, other, { isAllowed: function (values) {
if (allData.mustRegex instanceof RegExp) {
return allData.mustRegex.test(values.value);
}
return true;
}, getInputRef: ref, onValueChange: function (values) {
numberOnChange({
target: {
name: numberFormatProps.name,
value: values.value,
},
});
}, thousandSeparator: true, isNumericString: true }, (allData.numberFormatProps ? allData.numberFormatProps : {}))));
});
},
/* eslint-disable react-hooks/exhaustive-deps */
[
JSON.stringify(allData.mustRegex),
JSON.stringify(allData.numberFormatProps),
]
/* eslint-enable react-hooks/exhaustive-deps */
);
return (React.createElement(Grid, __assign({ item: true }, allData.layoutProps),
React.createElement(TextFieldBase, __assign({ formik: formik, loading: loading, validationSchema: validationSchema, translator: translator, name: String(name), mustRegex: [allData.mustRegex, formMustRegex] }, inputProps, { onChange: function (value) {
if (typeof onChange === "function") {
onChange(parseFloat(value));
}
}, InputProps: __assign({ inputComponent: NumberFormatCustom }, (inputProps.InputProps || {})) }))));
};
var PriceView$1 = React.memo(PriceView, function (prevProps, nextProps) {
return baseMemo(prevProps, nextProps);
});
export { PriceView$1 as default };
//# sourceMappingURL=PriceView.js.map