1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-04-21 08:16:39 +02:00
foris-js/src/bootstrap/PasswordInput.js
2022-02-18 17:40:48 +01:00

58 lines
1.7 KiB
JavaScript

/*
* Copyright (C) 2019-2022 CZ.NIC z.s.p.o. (https://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import React, { useState } from "react";
import PropTypes from "prop-types";
import { Input } from "./Input";
PasswordInput.propTypes = {
/** Field label. */
label: PropTypes.string.isRequired,
/** Error message. */
error: PropTypes.string,
/** Password value. */
value: PropTypes.string,
/** Help text message. */
helpText: PropTypes.string,
/** Use show/hide password button. */
withEye: PropTypes.bool,
/** Use new-password in autocomplete attribute. */
newPass: PropTypes.bool,
};
export function PasswordInput({ withEye, newPass, ...props }) {
const [isHidden, setHidden] = useState(true);
return (
<Input
type={withEye && !isHidden ? "text" : "password"}
autoComplete={newPass ? "new-password" : "current-password"}
{...props}
>
{withEye ? (
<div className="input-group-append">
<button
type="button"
className="input-group-text"
onClick={(e) => {
e.preventDefault();
setHidden((shouldBeHidden) => !shouldBeHidden);
}}
>
<i
className={`fa ${
isHidden ? "fa-eye" : "fa-eye-slash"
}`}
/>
</button>
</div>
) : null}
</Input>
);
}