mirror of
https://github.com/XFox111/PasswordGeneratorExtension.git
synced 2026-04-22 08:08:01 +03:00
a4de3139bf
* Force no-wrap for special characters tooltip (resolves #551) (#555) * Increase width of password count field in advanced generator (resolves #548) (#554) * Added password length limit in advanced generator (#552) * Added password length limit in advanced generator (resolves #547) * Add radix to parseInt Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Remove unnecessary callback dependency Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * npm audit fix (#556) * Added length slider range limits (#557) * Added length slider range limits (resolves #546) * Fix validateMaxLimit logic Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Added password length update on input field blur (resolves #549) (#559) * Separator option for advanced password generator (#558) * Added separator option for advanced password generator (resolves #545) * Fix typos * Fixed merge typo * Update package.json * Bump @fluentui/react-components from 9.64.0 to 9.66.5 (#561) Bumps [@fluentui/react-components](https://github.com/microsoft/fluentui) from 9.64.0 to 9.66.5. - [Release notes](https://github.com/microsoft/fluentui/releases) - [Changelog](https://github.com/microsoft/fluentui/blob/master/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/fluentui/compare/@fluentui/react-components_v9.64.0...@fluentui/react-components_v9.66.5) --- updated-dependencies: - dependency-name: "@fluentui/react-components" dependency-version: 9.66.5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @typescript-eslint/parser from 8.33.1 to 8.35.1 (#562) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.33.1 to 8.35.1. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.35.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-version: 8.35.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @eslint/js from 9.28.0 to 9.30.0 (#564) Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.28.0 to 9.30.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.30.0/packages/js) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-version: 9.30.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump eslint from 9.28.0 to 9.30.0 (#566) Bumps [eslint](https://github.com/eslint/eslint) from 9.28.0 to 9.30.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.28.0...v9.30.0) --- updated-dependencies: - dependency-name: eslint dependency-version: 9.30.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @typescript-eslint/eslint-plugin from 8.33.1 to 8.35.1 (#563) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.33.1 to 8.35.1. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.35.1/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.35.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @fluentui/react-icons from 2.0.302 to 2.0.305 (#565) Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.302 to 2.0.305. - [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml) - [Commits](https://github.com/microsoft/fluentui-system-icons/commits) --- updated-dependencies: - dependency-name: "@fluentui/react-icons" dependency-version: 2.0.305 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Moved default password lengths to constants (#553) * Added radix 10 for parseInt (#553) * Removed ts-expect-error microsoft/fluentui#27090 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
92 lines
2.5 KiB
TypeScript
92 lines
2.5 KiB
TypeScript
import { Button, Input, InputOnChangeData, MessageBar, MessageBarBody, MessageBarTitle, Text, Toast, ToastTitle, useToastController } from "@fluentui/react-components";
|
|
import { bundleIcon, Key24Regular, Save20Filled, Save20Regular } from "@fluentui/react-icons";
|
|
import { PropsWithChildren, ReactElement } from "react";
|
|
import { useStyles } from "./GeneratorForm.styles";
|
|
|
|
export default function GeneratorForm(props: GeneratorFormProps): ReactElement
|
|
{
|
|
const [passwordCount, private_setPasswordCount] = useState<number | null>(5);
|
|
const [error, setError] = useState<string | null>(null);
|
|
const toaster = useToastController();
|
|
|
|
const cls = useStyles();
|
|
const SaveIcon = bundleIcon(Save20Filled, Save20Regular);
|
|
|
|
const setPasswordCount = useCallback((_: any, e: InputOnChangeData) =>
|
|
{
|
|
const n = parseInt(e.value ?? "1", 10);
|
|
private_setPasswordCount(isNaN(n) || n < 1 ? null : Math.min(n, 1000));
|
|
}, []);
|
|
|
|
const onSubmit = useCallback((args: React.FormEvent<HTMLFormElement>) =>
|
|
{
|
|
args.preventDefault();
|
|
|
|
try
|
|
{
|
|
setError(null);
|
|
props.onGenerate(passwordCount ?? 1);
|
|
}
|
|
catch (ex)
|
|
{
|
|
setError((ex as Error).message);
|
|
}
|
|
}, [props.onGenerate, passwordCount]);
|
|
|
|
const onSave = useCallback(async () =>
|
|
{
|
|
props.onSave();
|
|
await browser.storage.sync.set({ AdvancedBulkCount: passwordCount ?? 5 });
|
|
|
|
toaster.dispatchToast(
|
|
<Toast>
|
|
<ToastTitle>{ i18n.t("advanced.saved_msg") }</ToastTitle>
|
|
</Toast>,
|
|
{
|
|
intent: "success",
|
|
timeout: 1000
|
|
}
|
|
);
|
|
}, [props.onSave, toaster, passwordCount]);
|
|
|
|
useEffect(() =>
|
|
{
|
|
browser.storage.sync.get("AdvancedBulkCount").then(({ AdvancedBulkCount }) =>
|
|
private_setPasswordCount(AdvancedBulkCount as number ?? 5)
|
|
);
|
|
}, []);
|
|
|
|
return (
|
|
<form onSubmit={ onSubmit } className={ cls.root }>
|
|
{ props.children }
|
|
|
|
{ error &&
|
|
<MessageBar intent="error">
|
|
<MessageBarBody>
|
|
<MessageBarTitle>{ error }</MessageBarTitle>
|
|
</MessageBarBody>
|
|
</MessageBar>
|
|
}
|
|
|
|
<div className={ cls.actionRoot }>
|
|
<div className={ cls.bulkRoot }>
|
|
<Key24Regular />
|
|
<Text align="center">x</Text>
|
|
<Input value={ passwordCount?.toString() ?? "" } onChange={ setPasswordCount } />
|
|
</div>
|
|
<Button appearance="primary" type="submit">{ i18n.t("advanced.actions.generate") }</Button>
|
|
</div>
|
|
|
|
<Button appearance="subtle" icon={ <SaveIcon /> } onClick={ onSave }>
|
|
{ i18n.t("advanced.actions.save_config") }
|
|
</Button>
|
|
</form>
|
|
);
|
|
}
|
|
|
|
export type GeneratorFormProps = PropsWithChildren &
|
|
{
|
|
onSave: () => void;
|
|
onGenerate: (count: number) => void;
|
|
};
|