import type { ReactNode } from "react"; import FormField from "./FormField"; import PasswordField from "./PasswordField"; export type CredentialValues = { username?: string | null; password?: string | null; }; export type CredentialFieldsProps = { values: CredentialValues; onChange: (patch: Partial) => void; disabled?: boolean; usernameDisabled?: boolean; passwordDisabled?: boolean; savedPassword?: boolean; savedPasswordPlaceholder?: string; heading?: ReactNode; headingClassName?: string; usernameLabel?: ReactNode; passwordLabel?: ReactNode; usernamePlaceholder?: string; passwordPlaceholder?: string; usernameAutoComplete?: string; passwordAutoComplete?: string; showUsername?: boolean; showPassword?: boolean; }; export type CredentialPanelProps = CredentialFieldsProps & { className?: string; gridClassName?: string; children?: ReactNode; }; export function CredentialFields({ values, onChange, disabled = false, usernameDisabled = disabled, passwordDisabled = disabled, savedPassword = false, savedPasswordPlaceholder = "••••••••", heading, headingClassName = "credential-panel-heading", usernameLabel = "i18n:govoplan-core.username.84c29015", passwordLabel = "i18n:govoplan-core.password.8be3c943", usernamePlaceholder, passwordPlaceholder, usernameAutoComplete = "username", passwordAutoComplete = "new-password", showUsername = true, showPassword = true }: CredentialFieldsProps) { return ( <> {heading &&
{heading}
} {showUsername && onChange({ username: event.target.value })} /> } {showPassword && onChange({ password })} /> } ); } export default function CredentialPanel({ className = "", gridClassName = "", children, ...fieldProps }: CredentialPanelProps) { return (
{children &&
{children}
}
); } function stringValue(value: string | number | null | undefined): string { if (value === null || value === undefined) return ""; return String(value); }