UNPKG

formik-material-ui

Version:

![](https://github.com/stackworx/formik-material-ui/workflows/Build%20formik-material-ui/badge.svg) ![](https://github.com/stackworx/formik-material-ui/workflows/Build%20formik-material-ui-lab/badge.svg) [![license](https://badgen.now.sh/badge/license/MIT

48 lines (45 loc) 3.17 kB
import { __rest, __assign, __awaiter, __generator } from './_virtual/_tslib.js'; import FormControl from '@mui/material/FormControl'; import FormHelperText from '@mui/material/FormHelperText'; import InputLabel from '@mui/material/InputLabel'; import MuiSelect from '@mui/material/Select'; import { getIn } from 'formik'; import * as React from 'react'; function fieldToSelect(_a) { var _this = this; var disabled = _a.disabled, _b = _a.field; _b.onBlur; var fieldOnChange = _b.onChange, field = __rest(_b, ["onBlur", "onChange"]), _c = _a.form, isSubmitting = _c.isSubmitting, touched = _c.touched, errors = _c.errors, setFieldTouched = _c.setFieldTouched, setFieldValue = _c.setFieldValue, onClose = _a.onClose, props = __rest(_a, ["disabled", "field", "form", "onClose"]); var fieldError = getIn(errors, field.name); var showError = getIn(touched, field.name) && !!fieldError; return __assign(__assign({ disabled: disabled !== null && disabled !== void 0 ? disabled : isSubmitting, error: showError, formError: showError ? fieldError : undefined, onBlur: function () { }, onChange: fieldOnChange !== null && fieldOnChange !== void 0 ? fieldOnChange : (function () { }), onClose: onClose !== null && onClose !== void 0 ? onClose : (function (e) { return __awaiter(_this, void 0, void 0, function () { var dataset; return __generator(this, function (_a) { switch (_a.label) { case 0: dataset = e.target.dataset; if (!(dataset && dataset.value)) return [3, 2]; return [4, setFieldValue(field.name, dataset.value, false)]; case 1: _a.sent(); _a.label = 2; case 2: setFieldTouched(field.name, true, true); return [2]; } }); }); }) }, field), props); } function Select(_a) { var formControl = _a.formControl, inputLabel = _a.inputLabel, formHelperText = _a.formHelperText, selectProps = __rest(_a, ["formControl", "inputLabel", "formHelperText"]); var _b = fieldToSelect(selectProps), error = _b.error, formError = _b.formError, disabled = _b.disabled, selectFieldProps = __rest(_b, ["error", "formError", "disabled"]); var _c = formHelperText || {}, formHelperTextChildren = _c.children, formHelperTextProps = __rest(_c, ["children"]); var shouldDisplayFormHelperText = error || formHelperTextChildren; return (React.createElement(FormControl, __assign({ disabled: disabled, error: error }, formControl), React.createElement(InputLabel, __assign({ id: selectFieldProps.labelId }, inputLabel), selectFieldProps.label), React.createElement(MuiSelect, __assign({}, selectFieldProps)), shouldDisplayFormHelperText && (React.createElement(FormHelperText, __assign({}, formHelperTextProps), error ? formError : formHelperTextChildren)))); } Select.displayName = 'FormikMaterialUISelect'; export { Select, fieldToSelect }; //# sourceMappingURL=Select.js.map