informed
Version:
A lightweight framework and utility for building powerful forms in React applications
55 lines (48 loc) • 2.02 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
var React = require('react');
var useField = require('../../hooks/useField.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var _excluded = ["label", "id"];
var Input = /*#__PURE__*/React__default["default"].memo(function (props) {
var _useField = useField.useField(props),
render = _useField.render,
userProps = _useField.userProps,
ref = _useField.ref,
fieldState = _useField.fieldState,
fieldApi = _useField.fieldApi;
var setValue = fieldApi.setValue,
setTouched = fieldApi.setTouched,
setFocused = fieldApi.setFocused;
var maskedValue = fieldState.maskedValue,
showError = fieldState.showError,
error = fieldState.error;
var label = userProps.label,
id = userProps.id,
rest = _rollupPluginBabelHelpers.objectWithoutProperties(userProps, _excluded);
return render( /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, label ? /*#__PURE__*/React__default["default"].createElement("label", {
htmlFor: id
}, label) : null, /*#__PURE__*/React__default["default"].createElement("input", _rollupPluginBabelHelpers["extends"]({
ref: ref,
id: id
}, rest, {
value: !maskedValue && maskedValue !== 0 ? '' : maskedValue,
onChange: function onChange(e) {
setValue(e.target.value, e);
},
onBlur: function onBlur(e) {
setTouched(true, e);
},
onFocus: function onFocus(e) {
setFocused(true, e);
},
"aria-invalid": !!showError,
"aria-describedby": "".concat(id, "-error")
})), showError ? /*#__PURE__*/React__default["default"].createElement("small", {
role: "alert",
id: "".concat(id, "-error")
}, error) : null));
});
exports.Input = Input;