"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _utils = require("./utils"); var _CustomFileInput = _interopRequireDefault(require("./CustomFileInput")); var propTypes = { className: _propTypes.default.string, id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired, type: _propTypes.default.string.isRequired, label: _propTypes.default.node, inline: _propTypes.default.bool, valid: _propTypes.default.bool, invalid: _propTypes.default.bool, bsSize: _propTypes.default.string, htmlFor: _propTypes.default.string, cssModule: _propTypes.default.object, children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.array, _propTypes.default.func]), innerRef: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string, _propTypes.default.func]) }; function CustomInput(props) { var className = props.className, label = props.label, inline = props.inline, valid = props.valid, invalid = props.invalid, cssModule = props.cssModule, children = props.children, bsSize = props.bsSize, innerRef = props.innerRef, htmlFor = props.htmlFor, attributes = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "label", "inline", "valid", "invalid", "cssModule", "children", "bsSize", "innerRef", "htmlFor"]); var type = attributes.type; var customClass = (0, _utils.mapToCssModules)((0, _classnames.default)(className, "custom-" + type, bsSize ? "custom-" + type + "-" + bsSize : false), cssModule); var validationClassNames = (0, _utils.mapToCssModules)((0, _classnames.default)(invalid && "is-invalid", valid && "is-valid"), cssModule); var labelHtmlFor = htmlFor || attributes.id; if (type === "select") { var _type = attributes.type, _rest = (0, _objectWithoutPropertiesLoose2.default)(attributes, ["type"]); return /*#__PURE__*/_react.default.createElement("select", (0, _extends2.default)({}, _rest, { ref: innerRef, className: (0, _classnames.default)(validationClassNames, customClass), "aria-invalid": invalid }), children); } if (type === "file") { return /*#__PURE__*/_react.default.createElement(_CustomFileInput.default, props); } if (type !== "checkbox" && type !== "radio" && type !== "switch") { return /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, attributes, { ref: innerRef, "aria-invalid": invalid, className: (0, _classnames.default)(validationClassNames, customClass) })); } var wrapperClasses = (0, _classnames.default)(customClass, (0, _utils.mapToCssModules)((0, _classnames.default)("custom-control", { "custom-control-inline": inline }), cssModule)); var hidden = attributes.hidden, rest = (0, _objectWithoutPropertiesLoose2.default)(attributes, ["hidden"]); return /*#__PURE__*/_react.default.createElement("div", { className: wrapperClasses, hidden: hidden || false }, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, rest, { type: type === "switch" ? "checkbox" : type, ref: innerRef, "aria-invalid": invalid, className: (0, _classnames.default)(validationClassNames, (0, _utils.mapToCssModules)("custom-control-input", cssModule)) })), /*#__PURE__*/_react.default.createElement("label", { className: (0, _utils.mapToCssModules)("custom-control-label", cssModule), htmlFor: labelHtmlFor }, label), children); } CustomInput.propTypes = propTypes; var _default = CustomInput; exports.default = _default;