mui-rff
Version:
Set of modern wrapper components to facilitate using Material UI with React Final Form
1,170 lines (1,150 loc) • 46.4 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var MuiAutocomplete = require('@mui/material/Autocomplete');
var reactFinalForm = require('react-final-form');
var React = require('react');
var material = require('@mui/material');
var TextField$1 = require('@mui/material/TextField');
var xDatePickers = require('@mui/x-date-pickers');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var MuiAutocomplete__default = /*#__PURE__*/_interopDefaultLegacy(MuiAutocomplete);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var TextField__default = /*#__PURE__*/_interopDefaultLegacy(TextField$1);
function _regeneratorRuntime() {
_regeneratorRuntime = function () {
return exports;
};
var exports = {},
Op = Object.prototype,
hasOwn = Op.hasOwnProperty,
defineProperty = Object.defineProperty || function (obj, key, desc) {
obj[key] = desc.value;
},
$Symbol = "function" == typeof Symbol ? Symbol : {},
iteratorSymbol = $Symbol.iterator || "@@iterator",
asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
function define(obj, key, value) {
return Object.defineProperty(obj, key, {
value: value,
enumerable: !0,
configurable: !0,
writable: !0
}), obj[key];
}
try {
define({}, "");
} catch (err) {
define = function (obj, key, value) {
return obj[key] = value;
};
}
function wrap(innerFn, outerFn, self, tryLocsList) {
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
generator = Object.create(protoGenerator.prototype),
context = new Context(tryLocsList || []);
return defineProperty(generator, "_invoke", {
value: makeInvokeMethod(innerFn, self, context)
}), generator;
}
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
exports.wrap = wrap;
var ContinueSentinel = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var IteratorPrototype = {};
define(IteratorPrototype, iteratorSymbol, function () {
return this;
});
var getProto = Object.getPrototypeOf,
NativeIteratorPrototype = getProto && getProto(getProto(values([])));
NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
define(prototype, method, function (arg) {
return this._invoke(method, arg);
});
});
}
function AsyncIterator(generator, PromiseImpl) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if ("throw" !== record.type) {
var result = record.arg,
value = result.value;
return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
}) : PromiseImpl.resolve(value).then(function (unwrapped) {
result.value = unwrapped, resolve(result);
}, function (error) {
return invoke("throw", error, resolve, reject);
});
}
reject(record.arg);
}
var previousPromise;
defineProperty(this, "_invoke", {
value: function (method, arg) {
function callInvokeWithMethodAndArg() {
return new PromiseImpl(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(innerFn, self, context) {
var state = "suspendedStart";
return function (method, arg) {
if ("executing" === state) throw new Error("Generator is already running");
if ("completed" === state) {
if ("throw" === method) throw arg;
return doneResult();
}
for (context.method = method, context.arg = arg;;) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
if ("suspendedStart" === state) throw state = "completed", context.arg;
context.dispatchException(context.arg);
} else "return" === context.method && context.abrupt("return", context.arg);
state = "executing";
var record = tryCatch(innerFn, self, context);
if ("normal" === record.type) {
if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
return {
value: record.arg,
done: context.done
};
}
"throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
}
};
}
function maybeInvokeDelegate(delegate, context) {
var methodName = context.method,
method = delegate.iterator[methodName];
if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
var record = tryCatch(method, delegate.iterator, context.arg);
if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
var info = record.arg;
return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
}
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal", delete record.arg, entry.completion = record;
}
function Context(tryLocsList) {
this.tryEntries = [{
tryLoc: "root"
}], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
}
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) return iteratorMethod.call(iterable);
if ("function" == typeof iterable.next) return iterable;
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
return next.value = undefined, next.done = !0, next;
};
return next.next = next;
}
}
return {
next: doneResult
};
}
function doneResult() {
return {
value: undefined,
done: !0
};
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
value: GeneratorFunctionPrototype,
configurable: !0
}), defineProperty(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: !0
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
var ctor = "function" == typeof genFun && genFun.constructor;
return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
}, exports.mark = function (genFun) {
return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
}, exports.awrap = function (arg) {
return {
__await: arg
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
return this;
}), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
void 0 === PromiseImpl && (PromiseImpl = Promise);
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
}, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
return this;
}), define(Gp, "toString", function () {
return "[object Generator]";
}), exports.keys = function (val) {
var object = Object(val),
keys = [];
for (var key in object) keys.push(key);
return keys.reverse(), function next() {
for (; keys.length;) {
var key = keys.pop();
if (key in object) return next.value = key, next.done = !1, next;
}
return next.done = !0, next;
};
}, exports.values = values, Context.prototype = {
constructor: Context,
reset: function (skipTempReset) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
},
stop: function () {
this.done = !0;
var rootRecord = this.tryEntries[0].completion;
if ("throw" === rootRecord.type) throw rootRecord.arg;
return this.rval;
},
dispatchException: function (exception) {
if (this.done) throw exception;
var context = this;
function handle(loc, caught) {
return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i],
record = entry.completion;
if ("root" === entry.tryLoc) return handle("end");
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc"),
hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
} else if (hasCatch) {
if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
} else {
if (!hasFinally) throw new Error("try statement without catch or finally");
if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
}
}
}
},
abrupt: function (type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
var record = finallyEntry ? finallyEntry.completion : {};
return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
},
complete: function (record, afterLoc) {
if ("throw" === record.type) throw record.arg;
return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
},
finish: function (finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
}
},
catch: function (tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if ("throw" === record.type) {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
}
throw new Error("illegal catch attempt");
},
delegateYield: function (iterable, resultName, nextLoc) {
return this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
}, "next" === this.method && (this.arg = undefined), ContinueSentinel;
}
}, exports;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function ErrorMessage(_ref) {
var showError = _ref.showError,
meta = _ref.meta,
formHelperTextProps = _ref.formHelperTextProps,
helperText = _ref.helperText;
if (showError) {
return React__default["default"].createElement(material.FormHelperText, _extends({}, formHelperTextProps), meta.error || meta.submitError);
} else if (helperText) {
return React__default["default"].createElement(material.FormHelperText, _extends({}, formHelperTextProps), helperText);
} else {
return React__default["default"].createElement(React__default["default"].Fragment, null);
}
}
var config = {
subscription: {
error: true,
submitError: true,
dirtySinceLastSubmit: true,
touched: true,
modified: true
}
};
var useFieldForErrors = function useFieldForErrors(name) {
return reactFinalForm.useField(name, config);
};
var showErrorOnChange = function showErrorOnChange(_ref2) {
var _ref2$meta = _ref2.meta,
submitError = _ref2$meta.submitError,
dirtySinceLastSubmit = _ref2$meta.dirtySinceLastSubmit,
error = _ref2$meta.error,
touched = _ref2$meta.touched,
modified = _ref2$meta.modified;
return !!((submitError && !dirtySinceLastSubmit || error) && (touched || modified));
};
var showErrorOnBlur = function showErrorOnBlur(_ref3) {
var _ref3$meta = _ref3.meta,
submitError = _ref3$meta.submitError,
dirtySinceLastSubmit = _ref3$meta.dirtySinceLastSubmit,
error = _ref3$meta.error,
touched = _ref3$meta.touched;
return !!((submitError && !dirtySinceLastSubmit || error) && touched);
};
var _excluded$8 = ["name", "fieldProps"],
_excluded2$8 = ["input", "meta", "options", "label", "required", "multiple", "textFieldProps", "getOptionValue", "showError", "placeholder", "onChange"],
_excluded3$4 = ["helperText"],
_excluded4$3 = ["variant", "onFocus", "onBlur"];
function Autocomplete(props) {
var name = props.name,
fieldProps = props.fieldProps,
rest = _objectWithoutPropertiesLoose(props, _excluded$8);
return React__default["default"].createElement(reactFinalForm.Field, _extends({
name: name,
render: function render(fieldRenderProps) {
return React__default["default"].createElement(AutocompleteWrapper, _extends({}, fieldRenderProps, rest));
}
}, fieldProps));
}
function AutocompleteWrapper(props) {
var _props$input = props.input,
name = _props$input.name,
value = _props$input.value,
onChange = _props$input.onChange,
_onFocus = _props$input.onFocus,
_onBlur = _props$input.onBlur,
meta = props.meta,
options = props.options,
label = props.label,
required = props.required,
multiple = props.multiple,
textFieldProps = props.textFieldProps,
getOptionValue = props.getOptionValue,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
placeholder = props.placeholder,
onChangeCallback = props.onChange,
rest = _objectWithoutPropertiesLoose(props, _excluded2$8);
function getValue(values) {
if (!getOptionValue) {
return values;
}
// ternary hell...
return multiple ? values ? values.map(getOptionValue) : null : values ? getOptionValue(values) : null;
}
var helperText = rest.helperText,
lessrest = _objectWithoutPropertiesLoose(rest, _excluded3$4);
var _ref = textFieldProps || {},
variant = _ref.variant,
textFieldPropsFocus = _ref.onFocus,
textFieldPropsBlur = _ref.onBlur,
restTextFieldProps = _objectWithoutPropertiesLoose(_ref, _excluded4$3);
var defaultValue;
if (!getOptionValue) {
defaultValue = value;
} else if (value) {
options.forEach(function (option) {
var optionValue = getOptionValue(option);
if (multiple) {
if (!defaultValue) {
defaultValue = [];
}
value.forEach(function (v) {
if (v === optionValue) {
defaultValue.push(option);
}
});
} else {
if (value === optionValue) {
defaultValue = option;
}
}
});
}
var onChangeFunc = function onChangeFunc(
// eslint-disable-next-line @typescript-eslint/ban-types
event, value, reason, details) {
var gotValue = getValue(value);
onChange(gotValue);
if (onChangeCallback) {
onChangeCallback(event, value, reason, details);
}
};
var error = meta.error,
submitError = meta.submitError;
var isError = showError({
meta: meta
});
return React__default["default"].createElement(MuiAutocomplete__default["default"], _extends({
multiple: multiple,
onChange: onChangeFunc,
options: options,
value: defaultValue || (multiple ? [] : null),
renderInput: function renderInput(params) {
var _restTextFieldProps$I, _params$InputProps, _restTextFieldProps$I2, _params$InputProps2, _restTextFieldProps$I3;
return React__default["default"].createElement(TextField__default["default"], _extends({
label: label,
required: required,
helperText: isError ? error || submitError : helperText,
error: isError,
name: name,
placeholder: placeholder,
variant: variant,
onFocus: function onFocus(e) {
textFieldPropsFocus == null ? void 0 : textFieldPropsFocus(e);
_onFocus(e);
},
onBlur: function onBlur(e) {
textFieldPropsBlur == null ? void 0 : textFieldPropsBlur(e);
_onBlur(e);
}
}, params, restTextFieldProps, {
InputProps: _extends({}, params.InputProps, restTextFieldProps.InputProps, ((_restTextFieldProps$I = restTextFieldProps.InputProps) == null ? void 0 : _restTextFieldProps$I.startAdornment) && {
startAdornment: React__default["default"].createElement(React__default["default"].Fragment, null, restTextFieldProps.InputProps.startAdornment, (_params$InputProps = params.InputProps) == null ? void 0 : _params$InputProps.startAdornment)
}, ((_restTextFieldProps$I2 = restTextFieldProps.InputProps) == null ? void 0 : _restTextFieldProps$I2.endAdornment) && {
endAdornment: React__default["default"].createElement(React__default["default"].Fragment, null, (_params$InputProps2 = params.InputProps) == null ? void 0 : _params$InputProps2.endAdornment, (_restTextFieldProps$I3 = restTextFieldProps.InputProps) == null ? void 0 : _restTextFieldProps$I3.endAdornment)
}),
fullWidth: true
}));
}
}, lessrest));
}
var _excluded$7 = ["required", "label", "data", "name", "helperText", "fieldProps", "formControlProps", "formGroupProps", "formLabelProps", "formControlLabelProps", "formHelperTextProps", "showError"],
_excluded2$7 = ["name", "value", "onChange", "checked"];
function Checkboxes(props) {
var required = props.required,
label = props.label,
data = props.data,
name = props.name,
helperText = props.helperText,
fieldProps = props.fieldProps,
formControlProps = props.formControlProps,
formGroupProps = props.formGroupProps,
formLabelProps = props.formLabelProps,
formControlLabelProps = props.formControlLabelProps,
formHelperTextProps = props.formHelperTextProps,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
restCheckboxes = _objectWithoutPropertiesLoose(props, _excluded$7);
var itemsData = Array.isArray(data) ? data : [data];
var single = !Array.isArray(data);
var field = useFieldForErrors(name);
var isError = showError(field);
return React__default["default"].createElement(material.FormControl, _extends({
required: required,
error: isError
}, formControlProps), label ? React__default["default"].createElement(material.FormLabel, _extends({}, formLabelProps), label) : React__default["default"].createElement(React__default["default"].Fragment, null), React__default["default"].createElement(material.FormGroup, _extends({}, formGroupProps), itemsData.map(function (item, idx) {
return React__default["default"].createElement(material.FormControlLabel, _extends({
key: idx,
name: name,
label: item.label,
value: single ? undefined : item.value,
disabled: item.disabled,
control: React__default["default"].createElement(reactFinalForm.Field, _extends({
type: "checkbox",
name: name,
render: function render(_ref) {
var _ref$input = _ref.input,
name = _ref$input.name,
value = _ref$input.value,
onChange = _ref$input.onChange,
checked = _ref$input.checked,
restInput = _objectWithoutPropertiesLoose(_ref$input, _excluded2$7);
return React__default["default"].createElement(material.Checkbox, _extends({
name: name,
value: value,
onChange: onChange,
checked: checked,
disabled: item.disabled,
inputProps: _extends({
required: required
}, restInput),
indeterminate: item.indeterminate
}, restCheckboxes));
}
}, fieldProps))
}, formControlLabelProps));
})), React__default["default"].createElement(ErrorMessage, {
showError: isError,
meta: field.meta,
formHelperTextProps: formHelperTextProps,
helperText: helperText
}));
}
var _excluded$6 = ["name", "data", "label", "required", "helperText", "fieldProps", "formControlProps", "formGroupProps", "formLabelProps", "formControlLabelProps", "formHelperTextProps", "showError"],
_excluded2$6 = ["name", "value", "onChange", "checked"];
function Switches(props) {
var name = props.name,
data = props.data,
label = props.label,
required = props.required,
helperText = props.helperText,
fieldProps = props.fieldProps,
formControlProps = props.formControlProps,
formGroupProps = props.formGroupProps,
formLabelProps = props.formLabelProps,
formControlLabelProps = props.formControlLabelProps,
formHelperTextProps = props.formHelperTextProps,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
restSwitches = _objectWithoutPropertiesLoose(props, _excluded$6);
var itemsData = Array.isArray(data) ? data : [data];
var single = !Array.isArray(data);
var field = useFieldForErrors(name);
var isError = showError(field);
return React__default["default"].createElement(material.FormControl, _extends({
required: required,
error: isError
}, formControlProps), label ? React__default["default"].createElement(material.FormLabel, _extends({}, formLabelProps), label) : React__default["default"].createElement(React__default["default"].Fragment, null), React__default["default"].createElement(material.FormGroup, _extends({}, formGroupProps), itemsData.map(function (item, idx) {
return React__default["default"].createElement(material.FormControlLabel, _extends({
key: idx,
name: name,
label: item.label,
value: single ? undefined : item.value,
disabled: item.disabled,
control: React__default["default"].createElement(reactFinalForm.Field, _extends({
type: "checkbox",
name: name,
render: function render(_ref) {
var _ref$input = _ref.input,
name = _ref$input.name,
value = _ref$input.value,
onChange = _ref$input.onChange,
checked = _ref$input.checked,
restInput = _objectWithoutPropertiesLoose(_ref$input, _excluded2$6);
return React__default["default"].createElement(material.Switch, _extends({
name: name,
value: value,
onChange: onChange,
checked: checked,
disabled: item.disabled,
required: required,
inputProps: _extends({
required: required
}, restInput)
}, restSwitches));
}
}, fieldProps))
}, formControlLabelProps));
})), React__default["default"].createElement(ErrorMessage, {
showError: isError,
meta: field.meta,
formHelperTextProps: formHelperTextProps,
helperText: helperText
}));
}
var _excluded$5 = ["name", "data", "label", "required", "helperText", "formLabelProps", "formControlLabelProps", "fieldProps", "formControlProps", "radioGroupProps", "formHelperTextProps", "showError"],
_excluded2$5 = ["name", "value", "onChange", "checked"];
function Radios(props) {
var name = props.name,
data = props.data,
label = props.label,
required = props.required,
helperText = props.helperText,
formLabelProps = props.formLabelProps,
formControlLabelProps = props.formControlLabelProps,
fieldProps = props.fieldProps,
formControlProps = props.formControlProps,
radioGroupProps = props.radioGroupProps,
formHelperTextProps = props.formHelperTextProps,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
restRadios = _objectWithoutPropertiesLoose(props, _excluded$5);
var field = useFieldForErrors(name);
var isError = showError(field);
return React__default["default"].createElement(material.FormControl, _extends({
required: required,
error: isError
}, formControlProps), !!label && React__default["default"].createElement(material.FormLabel, _extends({}, formLabelProps), label), React__default["default"].createElement(material.RadioGroup, _extends({}, radioGroupProps), data.map(function (item, idx) {
return React__default["default"].createElement(material.FormControlLabel, _extends({
key: idx,
name: name,
label: item.label,
value: item.value,
disabled: item.disabled,
control: React__default["default"].createElement(reactFinalForm.Field, _extends({
name: name,
type: "radio",
render: function render(_ref) {
var _ref$input = _ref.input,
name = _ref$input.name,
value = _ref$input.value,
onChange = _ref$input.onChange,
checked = _ref$input.checked,
restInput = _objectWithoutPropertiesLoose(_ref$input, _excluded2$5);
return React__default["default"].createElement(material.Radio, _extends({
name: name,
value: value,
onChange: onChange,
checked: checked,
disabled: item.disabled,
required: required,
inputProps: _extends({
required: required
}, restInput)
}, restRadios));
}
}, fieldProps))
}, formControlLabelProps));
})), React__default["default"].createElement(ErrorMessage, {
showError: isError,
meta: field.meta,
formHelperTextProps: formHelperTextProps,
helperText: helperText
}));
}
var _excluded$4 = ["name", "label", "data", "children", "required", "multiple", "helperText", "fieldProps", "inputLabelProps", "formControlProps", "formHelperTextProps", "menuItemProps", "showError"],
_excluded2$4 = ["name", "value", "onChange"];
function Select(props) {
var name = props.name,
label = props.label,
data = props.data,
children = props.children,
required = props.required,
multiple = props.multiple,
helperText = props.helperText,
fieldProps = props.fieldProps,
inputLabelProps = props.inputLabelProps,
formControlProps = props.formControlProps,
formHelperTextProps = props.formHelperTextProps,
menuItemProps = props.menuItemProps,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
restSelectProps = _objectWithoutPropertiesLoose(props, _excluded$4);
if (!data && !children) {
throw new Error('Please specify either children or data as an attribute.');
}
var variant = restSelectProps.variant;
var field = useFieldForErrors(name);
var isError = showError(field);
return React__default["default"].createElement(reactFinalForm.Field, _extends({
name: name,
render: function render(_ref) {
var _ref$input = _ref.input,
name = _ref$input.name,
value = _ref$input.value,
onChange = _ref$input.onChange,
restInput = _objectWithoutPropertiesLoose(_ref$input, _excluded2$4);
// prevents an error that happens if you don't have initialValues defined in advance
var finalValue = multiple && !value ? [] : value;
var labelId = "select-input-" + name;
return React__default["default"].createElement(material.FormControl, _extends({
required: required,
error: isError,
fullWidth: true,
variant: variant
}, formControlProps), !!label && React__default["default"].createElement(material.InputLabel, _extends({
id: labelId
}, inputLabelProps), label), React__default["default"].createElement(material.Select, _extends({
name: name,
value: finalValue,
onChange: onChange,
multiple: multiple,
label: label,
labelId: labelId,
inputProps: _extends({
required: required
}, restInput)
}, restSelectProps), data ? data.map(function (item) {
return React__default["default"].createElement(material.MenuItem, _extends({
value: item.value,
key: item.value,
disabled: item.disabled
}, menuItemProps), item.label);
}) : children), React__default["default"].createElement(ErrorMessage, {
showError: isError,
meta: field.meta,
formHelperTextProps: formHelperTextProps,
helperText: helperText
}));
}
}, fieldProps));
}
var _excluded$3 = ["name", "fieldProps"],
_excluded2$3 = ["name", "onChange", "value"],
_excluded3$3 = ["input", "meta", "showError"],
_excluded4$2 = ["helperText", "textFieldProps", "required"];
function DatePicker(props) {
var name = props.name,
fieldProps = props.fieldProps,
rest = _objectWithoutPropertiesLoose(props, _excluded$3);
return React__default["default"].createElement(reactFinalForm.Field, _extends({
name: name,
render: function render(fieldRenderProps) {
return React__default["default"].createElement(DatePickerWrapper, _extends({}, fieldRenderProps, rest));
}
}, fieldProps));
}
function DatePickerWrapper(props) {
var _props$input = props.input,
name = _props$input.name,
onChange = _props$input.onChange,
value = _props$input.value,
restInput = _objectWithoutPropertiesLoose(_props$input, _excluded2$3),
meta = props.meta,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
rest = _objectWithoutPropertiesLoose(props, _excluded3$3);
var error = meta.error,
submitError = meta.submitError;
var isError = showError({
meta: meta
});
var helperText = rest.helperText,
textFieldProps = rest.textFieldProps,
required = rest.required,
lessRest = _objectWithoutPropertiesLoose(rest, _excluded4$2);
return React__default["default"].createElement(xDatePickers.DatePicker, _extends({
onChange: onChange,
value: value === '' ? null : value
}, lessRest, {
slotProps: {
textField: _extends({}, textFieldProps, {
helperText: isError ? error || submitError : helperText,
inputProps: {
onBlur: function onBlur(event) {
restInput.onBlur(event);
},
onFocus: function onFocus(event) {
restInput.onFocus(event);
}
},
error: isError,
fullWidth: true,
name: name,
onChange: onChange,
value: value,
required: required
})
}
}));
}
var _excluded$2 = ["name", "fieldProps"],
_excluded2$2 = ["name", "onChange", "value"],
_excluded3$2 = ["input", "meta", "showError"],
_excluded4$1 = ["helperText", "textFieldProps", "required"];
function DateTimePicker(props) {
var name = props.name,
fieldProps = props.fieldProps,
rest = _objectWithoutPropertiesLoose(props, _excluded$2);
return React__default["default"].createElement(reactFinalForm.Field, _extends({
name: name,
render: function render(fieldRenderProps) {
return React__default["default"].createElement(DateTimePickerWrapper, _extends({}, fieldRenderProps, rest));
}
}, fieldProps));
}
function DateTimePickerWrapper(props) {
var _props$input = props.input,
name = _props$input.name,
onChange = _props$input.onChange,
value = _props$input.value,
restInput = _objectWithoutPropertiesLoose(_props$input, _excluded2$2),
meta = props.meta,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
rest = _objectWithoutPropertiesLoose(props, _excluded3$2);
var error = meta.error,
submitError = meta.submitError;
var isError = showError({
meta: meta
});
var helperText = rest.helperText,
textFieldProps = rest.textFieldProps,
required = rest.required,
lessRest = _objectWithoutPropertiesLoose(rest, _excluded4$1);
return React__default["default"].createElement(xDatePickers.DateTimePicker, _extends({
onChange: onChange,
value: value === '' ? null : value
}, lessRest, {
slotProps: {
textField: _extends({}, textFieldProps, {
helperText: isError ? error || submitError : helperText,
inputProps: {
onBlur: function onBlur(event) {
restInput.onBlur(event);
},
onFocus: function onFocus(event) {
restInput.onFocus(event);
}
},
error: isError,
fullWidth: true,
name: name,
onChange: onChange,
value: value,
required: required
})
}
}));
}
var _excluded$1 = ["name", "fieldProps"],
_excluded2$1 = ["name", "onChange", "value"],
_excluded3$1 = ["input", "meta", "showError"],
_excluded4 = ["helperText", "textFieldProps", "required"];
function TimePicker(props) {
var name = props.name,
fieldProps = props.fieldProps,
rest = _objectWithoutPropertiesLoose(props, _excluded$1);
return React__default["default"].createElement(reactFinalForm.Field, _extends({
name: name,
render: function render(fieldRenderProps) {
return React__default["default"].createElement(TimePickerWrapper, _extends({}, fieldRenderProps, rest));
}
}, fieldProps));
}
function TimePickerWrapper(props) {
var _props$input = props.input,
name = _props$input.name,
onChange = _props$input.onChange,
value = _props$input.value,
restInput = _objectWithoutPropertiesLoose(_props$input, _excluded2$1),
meta = props.meta,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
rest = _objectWithoutPropertiesLoose(props, _excluded3$1);
var error = meta.error,
submitError = meta.submitError;
var isError = showError({
meta: meta
});
var helperText = rest.helperText,
textFieldProps = rest.textFieldProps,
required = rest.required,
lessRest = _objectWithoutPropertiesLoose(rest, _excluded4);
return React__default["default"].createElement(xDatePickers.TimePicker, _extends({
onChange: onChange,
value: value === '' ? null : value
}, lessRest, {
slotProps: {
textField: _extends({}, textFieldProps, {
helperText: isError ? error || submitError : helperText,
inputProps: {
onBlur: function onBlur(event) {
restInput.onBlur(event);
},
onFocus: function onFocus(event) {
restInput.onFocus(event);
}
},
error: isError,
fullWidth: true,
name: name,
onChange: onChange,
value: value,
required: required
})
}
}));
}
var _excluded = ["name", "type", "fieldProps"],
_excluded2 = ["name", "value", "type", "onChange", "onBlur", "onFocus"],
_excluded3 = ["input", "meta", "required", "fullWidth", "helperText", "showError"];
function TextField(props) {
var name = props.name,
type = props.type,
fieldProps = props.fieldProps,
rest = _objectWithoutPropertiesLoose(props, _excluded);
return React__default["default"].createElement(reactFinalForm.Field, _extends({
name: name,
type: type,
render: function render(_ref) {
var input = _ref.input,
meta = _ref.meta;
return React__default["default"].createElement(TextFieldWrapper, _extends({
input: input,
meta: meta,
name: name,
type: type
}, rest));
}
}, fieldProps));
}
function TextFieldWrapper(props) {
var _props$input = props.input,
name = _props$input.name,
value = _props$input.value,
type = _props$input.type,
onChange = _props$input.onChange,
onBlur = _props$input.onBlur,
onFocus = _props$input.onFocus,
restInput = _objectWithoutPropertiesLoose(_props$input, _excluded2),
meta = props.meta,
required = props.required,
_props$fullWidth = props.fullWidth,
fullWidth = _props$fullWidth === void 0 ? true : _props$fullWidth,
helperText = props.helperText,
_props$showError = props.showError,
showError = _props$showError === void 0 ? showErrorOnChange : _props$showError,
rest = _objectWithoutPropertiesLoose(props, _excluded3);
var error = meta.error,
submitError = meta.submitError;
var isError = showError({
meta: meta
});
return React__default["default"].createElement(material.TextField, _extends({
fullWidth: fullWidth,
helperText: isError ? error || submitError : helperText,
error: isError,
onChange: onChange,
onBlur: onBlur,
onFocus: onFocus,
name: name,
value: value,
type: type,
required: required,
inputProps: _extends({
required: required
}, restInput)
}, rest));
}
// https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_get
function get(obj, path, defaultValue) {
var result = String.prototype.split.call(path, /[,[\].]+?/).filter(Boolean).reduce(function (res, key) {
return res !== null && res !== undefined ? res[key] : res;
}, obj);
return result === undefined || result === obj ? defaultValue : result;
}
// https://stackoverflow.com/questions/54733539/javascript-implementation-of-lodash-set-method
function set(obj, path, value) {
if (Object(obj) !== obj) return obj; // When obj is not an object
// If not yet an array, get the keys from the string-path
if (!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [];
path.slice(0, -1).reduce(function (a, c, i) {
return Object(a[c]) === a[c] // Does the key exist and is its value an object?
?
// Yes: then follow that path
a[c] :
// No: create the key. Is the next key a potential array-index?
a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] // Yes: assign a new array object
: {};
},
// No: assign a new plain object
obj)[path[path.length - 1]] = value; // Finally assign the value to the last key
return obj; // Return the top-level object to allow chaining
}
function normalizeValidationError(err, translator) {
return err.inner.reduce(function (errors, innerError) {
var path = innerError.path,
message = innerError.message;
var el = translator ? translator(innerError) : message;
// eslint-disable-next-line no-prototype-builtins
if (path && errors.hasOwnProperty(path)) {
var prev = get(errors, path);
prev.push(el);
set(errors, path, prev);
} else {
set(errors, path, [el]);
}
return errors;
}, {});
}
/**
* Wraps the execution of a Yup schema to return an Promise<ValidationError>
* where the key is the form field and the value is the error string.
*/
function makeValidate(validator, translator) {
return /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(values) {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
_context.next = 3;
return validator.validate(values, {
abortEarly: false
});
case 3:
return _context.abrupt("return", {});
case 6:
_context.prev = 6;
_context.t0 = _context["catch"](0);
return _context.abrupt("return", normalizeValidationError(_context.t0, translator));
case 9:
case "end":
return _context.stop();
}
}, _callee, null, [[0, 6]]);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}();
}
/**
* Wraps the sync execution of a Yup schema to return an ValidationError
* where the key is the form field and the value is the error string.
*/
function makeValidateSync(validator, translator) {
return function (values) {
try {
validator.validateSync(values, {
abortEarly: false
});
return {};
} catch (err) {
return normalizeValidationError(err, translator);
}
};
}
/**
* Uses the spec field in the schema to get whether or not
* the field is marked as required or not.
*/
function makeRequired(schema) {
var fields = schema.fields;
return Object.keys(fields).reduce(function (accu, field) {
if (fields[field].fields) {
accu[field] = makeRequired(fields[field]);
} else {
accu[field] = !fields[field].spec.optional;
}
return accu;
}, {});
}
function Debug() {
return React__default["default"].createElement(reactFinalForm.FormSpy, {
subscription: {
values: true
}
}, function (_ref) {
var values = _ref.values;
return React__default["default"].createElement("pre", null, JSON.stringify(values, undefined, 2));
});
}
exports.Autocomplete = Autocomplete;
exports.Checkboxes = Checkboxes;
exports.DatePicker = DatePicker;
exports.DateTimePicker = DateTimePicker;
exports.Debug = Debug;
exports.ErrorMessage = ErrorMessage;
exports.Radios = Radios;
exports.Select = Select;
exports.Switches = Switches;
exports.TextField = TextField;
exports.TimePicker = TimePicker;
exports.makeRequired = makeRequired;
exports.makeValidate = makeValidate;
exports.makeValidateSync = makeValidateSync;
exports.showErrorOnBlur = showErrorOnBlur;
exports.showErrorOnChange = showErrorOnChange;
exports.useFieldForErrors = useFieldForErrors;
//# sourceMappingURL=mui-rff.cjs.development.js.map