chakra-ui
Version:
Responsive and accessible React UI components built with React and Emotion
54 lines (52 loc) • 1.99 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
/** @jsx jsx */
import { jsx } from "@emotion/core";
import propTypes from "prop-types";
import { forwardRef } from "react";
import { useFormControl } from "../FormControl";
import PseudoBox from "../PseudoBox";
import useInputStyle from "./styles";
var Input = forwardRef(function (props, ref) {
var type = props.type,
size = props.size,
variant = props.variant,
as = props.as,
ariaLabel = props["aria-label"],
ariaDescribedby = props["aria-describedby"],
isReadOnly = props.isReadOnly,
isFullWidth = props.isFullWidth,
isDisabled = props.isDisabled,
isInvalid = props.isInvalid,
isRequired = props.isRequired,
_focusBorderColor = props._focusBorderColor,
rest = _objectWithoutProperties(props, ["type", "size", "variant", "as", "aria-label", "aria-describedby", "isReadOnly", "isFullWidth", "isDisabled", "isInvalid", "isRequired", "_focusBorderColor"]);
var inputStyleProps = useInputStyle(props);
var formControl = useFormControl(props);
return jsx(PseudoBox, _extends({
ref: ref,
as: as,
type: type,
name: name,
readOnly: formControl.isReadOnly,
disabled: formControl.isDisabled,
"aria-label": ariaLabel,
"aria-invalid": formControl.isInvalid,
"aria-required": formControl.isRequired,
"aria-disabled": formControl.isDisabled,
"aria-describedby": ariaDescribedby
}, inputStyleProps, rest));
});
Input.defaultProps = {
size: "md",
as: "input",
variant: "outline",
isFullWidth: true,
_focusBorderColor: "blue"
};
process.env.NODE_ENV !== "production" ? Input.propTypes = {
size: propTypes.oneOf(["md", "sm", "lg"]),
type: propTypes.oneOf(["text", "email", "number", "password", "search"]),
variant: propTypes.oneOf(["outline", "unstyled", "flushed", "filled"])
} : void 0;
export default Input;