@novin-dev/formalite
Version:
Generate MUI form with few line of code
40 lines (37 loc) • 2.94 kB
JavaScript
import { __rest, __assign } from 'tslib';
import React, { useState, useRef } from 'react';
import { Grid, Tooltip } from '@mui/material';
import InputAdornment from '@mui/material/InputAdornment';
import IconButton from '@mui/material/IconButton';
import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
import VisibilityOffOutlinedIcon from '@mui/icons-material/VisibilityOffOutlined';
import { TextFieldBase } from '../Bases/TextFieldBase.js';
import { baseMemo } from '../Bases/functions/memo.js';
import { useI18nContext } from '../../../base/I18nProvider.js';
var TextView = function (props) {
var allData = props.allData, name = props.name, formik = props.formik, loading = props.loading, validationSchema = props.validationSchema;
var _a = useState(!(allData.inputProps.type === "password")), showPassword = _a[0], setShowPassword = _a[1];
var mainRef = useRef();
var t = useI18nContext().t;
var _b = allData.inputProps, autoComplete = _b.autoComplete, type = _b.type, InputProps = _b.InputProps, inputProps = __rest(_b, ["autoComplete", "type", "InputProps"]);
return (React.createElement(Grid, __assign({ item: true }, allData.layoutProps),
React.createElement(TextFieldBase, __assign({ formik: formik, loading: loading, validationSchema: validationSchema, translator: props.translator, name: String(name), mustRegex: [allData.mustRegex, props.formMustRegex], inputRef: mainRef, type: type === "password" ? "".concat(showPassword ? "text" : "password") : type, autoComplete: type === "password" ? "on" : autoComplete, InputProps: allData.inputProps.type === "password"
? __assign(__assign({}, InputProps), { endAdornment: (React.createElement(InputAdornment, { position: "end" },
React.createElement(Tooltip, { title: t("textview_toggle_password_visibility") },
React.createElement(IconButton, { "aria-label": t("fg-toggle-password-visibility"), onClick: function () {
setShowPassword(!showPassword);
if (mainRef.current) {
mainRef.current.blur();
}
}, onMouseDown: function (e) {
e.preventDefault();
if (mainRef.current) {
mainRef.current.focus();
}
} }, showPassword ? (React.createElement(VisibilityOutlinedIcon, null)) : (React.createElement(VisibilityOffOutlinedIcon, null)))))) }) : __assign({}, InputProps) }, inputProps))));
};
var TextView$1 = React.memo(TextView, function (prevProps, nextProps) {
return baseMemo(prevProps, nextProps);
});
export { TextView$1 as default };
//# sourceMappingURL=TextView.js.map