formik-material-ui
Version:
  [ • 3.17 kB
JavaScript
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