UNPKG

@prefect9/ui

Version:

UI React components

82 lines (81 loc) 3.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("core-js/modules/es.string.trim.js"); require("core-js/modules/web.dom-collections.iterator.js"); var _react = require("react"); var _isType = require("@prefect9/is-type"); var _styles = _interopRequireDefault(require("../../styles.css")); var _icons = _interopRequireDefault(require("../../icons")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const PasswordField = /*#__PURE__*/(0, _react.forwardRef)((_ref2, fieldRef) => { let { id: fieldId, label, placeholder, value: fieldValue, onInput: fieldEditHandler, invalid, errorText, className: userClassName, disabled } = _ref2; const _ref = (0, _react.useRef)(null); const ref = fieldRef !== null && fieldRef !== void 0 ? fieldRef : _ref; const _id = (0, _react.useId)(); const id = fieldId !== null && fieldId !== void 0 ? fieldId : _id; const [value, setValue] = (0, _react.useState)((0, _isType.isStr)(fieldValue) ? fieldValue : ''); const editHandler = (0, _react.useCallback)(e => { e.preventDefault(); const newValue = ref.current.value; setValue(newValue); if ((0, _isType.isFunc)(fieldEditHandler)) fieldEditHandler(newValue); }, [ref, fieldEditHandler]); (0, _react.useEffect)(() => { if (!(0, _isType.isStr)(fieldValue)) return; setValue(fieldValue); }, [fieldValue]); const [showed, setShowed] = (0, _react.useState)(false); const clickHandler = (0, _react.useCallback)(() => { if (showed) setShowed(false);else setShowed(true); }, [showed]); const className = (0, _react.useMemo)(() => { const result = ['prefect9-field', 'prefect9-field__password']; if (invalid) result.push('prefect9-field__invalid'); if ((0, _isType.isStr)(userClassName) && userClassName.trim().length) result.push(userClassName.trim()); return result.join(' '); }, [invalid, userClassName]); return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: className, children: [label ? /*#__PURE__*/(0, _jsxRuntime.jsx)("label", { htmlFor: id, className: "prefect9-field__label", children: label }) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "prefect9-field__container prefect9-field__container__ico-right", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", { ref: ref, id: id, type: showed ? 'text' : 'password', placeholder: placeholder, value: value, onInput: editHandler, className: "prefect9-field__input", disabled: (0, _isType.isTrue)(disabled) ? true : false }), showed ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.default.EyeSlash, { className: "prefect9-field__ico-right", onClick: clickHandler }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.default.Eye, { className: "prefect9-field__ico-right", onClick: clickHandler })] }), (0, _isType.isStr)(errorText) && errorText.trim().length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "prefect9-field__error", children: errorText }) : null] }); }); var _default = exports.default = PasswordField;