UNPKG

react-base-guide

Version:

react ui components

40 lines 2.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const Field_1 = __importDefault(require("./styled/Field")); const Message_1 = __importDefault(require("./styled/Message")); const StyledIcons_1 = require("./styled/StyledIcons"); const change_handler_1 = __importDefault(require("./change-handler")); const label_1 = __importDefault(require("../label")); const onClear = (e, props) => { e.preventDefault(); props.onClear ? props.onClear() : (props.onChange && props.onChange({ target: { value: "" } })); }; const inputProps = (props) => { let newProps = Object.assign({}, props); delete newProps.label; delete newProps.message; delete newProps.clear; delete newProps.onClear; delete newProps.styled; return newProps; }; const Input = (props, ref) => { const { value, onChange } = (0, change_handler_1.default)(props); const [showPass, setShowPass] = (0, react_1.useState)(false); const [focus, setFocus] = (0, react_1.useState)(props.autoFocus || false); return ((0, jsx_runtime_1.jsxs)(label_1.default, Object.assign({ label: props.label, focus: focus, tabIndex: props.tabIndex || 0, variant: "outlined", error: props.error, warning: props.warning, success: props.success, styled: props.styled }, { children: [props.type === "password" && (0, jsx_runtime_1.jsx)(StyledIcons_1.StyledPassword, { styled: { width: "14px", height: "38px" }, fill: showPass ? "active" : "secondary", onClick: () => setShowPass(!showPass) }), (props.clear === true && props.value != "" && !props.disabled && props.type !== "password") && (0, jsx_runtime_1.jsx)(StyledIcons_1.StyledClose, { styled: { width: "10px", height: "38px" }, onClick: (e) => onClear(e, props) }), props.message && (0, jsx_runtime_1.jsx)(Message_1.default, Object.assign({ "$error": props.error, "$success": props.success, "$warning": props.warning }, { children: props.message })), (0, jsx_runtime_1.jsx)(Field_1.default, Object.assign({}, inputProps(props), { ref: ref, type: showPass ? "text" : props.type, placeholder: props.type === "tel" ? "+X XXX XXX-XX-XX" : props.placeholder, maxLength: props.type === "tel" ? 16 : props.maxLength, value: value, onChange: onChange, onFocus: e => { setFocus(true); props.onFocus && props.onFocus(e); }, onBlur: e => { setFocus(false); props.onBlur && props.onBlur(e); } }))] }))); }; exports.default = (0, react_1.forwardRef)(Input); //# sourceMappingURL=index.js.map