@prefect9/ui
Version:
UI React components
82 lines (81 loc) • 3.32 kB
JavaScript
;
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;