mirror of
https://gitlab.nic.cz/turris/reforis/foris-js.git
synced 2025-04-21 08:16:39 +02:00
58 lines
1.7 KiB
JavaScript
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>
|
|
);
|
|
}
|