UNPKG

react-form-package

Version:

A declarative form component with inbuilt validation and state management

112 lines (96 loc) 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Select = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _Error = require("../Error"); var _Context = require("../Context"); var _helpers = require("../../helpers"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _extends() { _extends = Object.assign || 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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } 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; } var Select = function Select(props) { var id = props.id, _onFocus = props.onFocus, _onBlur = props.onBlur, bindTo = props.bindTo, bindToAlways = props.bindToAlways, bindToCallback = props.bindToCallback, preOnChange = props.preOnChange, _onChange = props.onChange, errorMessage = props.errorMessage, c = props.children, sameAs = props.sameAs, validate = props.validate, rest = _objectWithoutProperties(props, ["id", "onFocus", "onBlur", "bindTo", "bindToAlways", "bindToCallback", "preOnChange", "onChange", "errorMessage", "children", "sameAs", "validate"]); return _react["default"].createElement(_Context.Context.Consumer, null, function (state) { var data = state.data, SelectComponent = state.SelectComponent, ErrorLabelComponent = state.ErrorLabelComponent, handleOnFocus = state.handleOnFocus, handleOnChange = state.handleOnChange, handleOnBlur = state.handleOnBlur, validateOnClick = state.validateOnClick, buttonClicked = state.buttonClicked; if (!(0, _helpers.isDataValid)(data, props)) { return null; } return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(SelectComponent.type, _extends({}, SelectComponent.props, rest, { id: id, checked: data[id].checked, value: data[id].value, onFocus: function onFocus(e) { return handleOnFocus(e, _onFocus); }, onBlur: function onBlur(e) { return handleOnBlur(e, _onBlur); }, onChange: function onChange(e) { return handleOnChange(e, data[id].rules, { bindTo: bindTo, bindToAlways: bindToAlways, bindToCallback: bindToCallback, preOnChange: preOnChange }, _onChange); } }), c), _react["default"].createElement(_Error.Error, { data: data, id: id, errorMessage: errorMessage, ErrorLabelComponent: ErrorLabelComponent, validateOnClick: validateOnClick, buttonClicked: buttonClicked })); }); }; exports.Select = Select; Select.displayName = 'Select'; Select.defaultProps = { onFocus: undefined, onBlur: undefined, bindTo: undefined, bindToAlways: false, bindToCallback: undefined, preOnChange: undefined, onChange: undefined, sameAs: undefined, validate: undefined, errorMessage: '' }; Select.propTypes = { id: _propTypes["default"].string.isRequired, onFocus: _propTypes["default"].func, onBlur: _propTypes["default"].func, bindTo: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].arrayOf(_propTypes["default"].string)]), bindToAlways: _propTypes["default"].bool, bindToCallback: _propTypes["default"].func, preOnChange: _propTypes["default"].func, onChange: _propTypes["default"].func, errorMessage: _propTypes["default"].string, sameAs: _propTypes["default"].string, validate: _propTypes["default"].func, children: _propTypes["default"].any // eslint-disable-line };