informed
Version:
A lightweight framework and utility for building powerful forms in React applications
41 lines (38 loc) • 1.42 kB
JavaScript
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
import React from 'react';
import { useField } from '../../hooks/useField.js';
var _excluded = ["id", "label"];
var Checkbox = function Checkbox(props) {
var _useField = useField(props),
render = _useField.render,
userProps = _useField.userProps,
fieldState = _useField.fieldState,
fieldApi = _useField.fieldApi;
var setValue = fieldApi.setValue,
setTouched = fieldApi.setTouched;
var value = fieldState.value,
error = fieldState.error,
showError = fieldState.showError;
var id = userProps.id,
label = userProps.label,
rest = _objectWithoutProperties(userProps, _excluded);
return render( /*#__PURE__*/React.createElement(React.Fragment, null, label ? /*#__PURE__*/React.createElement("label", {
htmlFor: id
}, label) : null, /*#__PURE__*/React.createElement("input", _extends({}, rest, {
id: id,
checked: !!value,
"aria-invalid": !!showError,
"aria-describedby": "".concat(id, "-error"),
onChange: function onChange(e) {
setValue(e.target.checked, e);
},
onBlur: function onBlur(e) {
setTouched(true, e);
},
type: "checkbox"
})), showError ? /*#__PURE__*/React.createElement("small", {
role: "alert",
id: "".concat(id, "-error")
}, error) : null));
};
export { Checkbox };