import { createSignal } from "solid-js"; import { generatePassword } from "../../shared/generate"; interface GeneratorProps { onSelect?: (password: string) => void; onClose?: () => void; } export function Generator(props: GeneratorProps) { const [password, setPassword] = createSignal(generatePassword({ length: 20 })); const [length, setLength] = createSignal(20); const [upper, setUpper] = createSignal(true); const [lower, setLower] = createSignal(true); const [numbers, setNumbers] = createSignal(true); const [symbols, setSymbols] = createSignal(true); function regenerate() { setPassword( generatePassword({ length: length(), includeUppercase: upper(), includeLowercase: lower(), includeNumbers: numbers(), includeSymbols: symbols(), }) ); } function handleUse() { if (props.onSelect) { props.onSelect(password()); } if (props.onClose) { props.onClose(); } } return (
{password()}
Length: {length()} { setLength(parseInt((e.target as HTMLInputElement).value)); regenerate(); }} />
); }