;
inputClassName?: string;
};
export default function PasswordField({
value,
onValueChange,
saved = false,
savedPlaceholder = "••••••••",
revealLabel = "i18n:govoplan-core.show_password.044b852f",
hideLabel = "i18n:govoplan-core.hide_password.e40123b4",
generator = false,
generatorLabel = "i18n:govoplan-core.generate_password.bd5bede8",
generatorOptions,
placeholder,
disabled = false,
className = "",
inputClassName = "",
id,
...inputProps
}: PasswordFieldProps) {
const generatedId = useId();
const { translateText } = usePlatformLanguage();
const inputId = id ?? generatedId;
const [visible, setVisible] = useState(false);
const [generatorOpen, setGeneratorOpen] = useState(false);
const hasTypedPassword = value.length > 0;
const showSavedPlaceholder = saved && !hasTypedPassword;
const canReveal = hasTypedPassword && !disabled;
const canGenerate = generator && !disabled && !inputProps.readOnly;
const inputType = visible && canReveal ? "text" : "password";
const translatedGeneratorLabel = translateText(generatorLabel);
const translatedRevealLabel = translateText(revealLabel);
const translatedHideLabel = translateText(hideLabel);
return (
<>
{
onValueChange(event.target.value);
if (!event.target.value) setVisible(false);
}} />
{canReveal || canGenerate ? (
{canGenerate ? (
) : null}
{canReveal ? (
) : null}
) : null}
{
onValueChange(password);
setVisible(false);
}}
onClose={() => setGeneratorOpen(false)}
/>
>
);
}