1
0
mirror of https://github.com/XFox111/PasswordGeneratorExtension.git synced 2026-04-22 08:08:01 +03:00
Files
PasswordGeneratorExtension/entrypoints/advanced/components/GeneratorForm.tsx
T
Eugene Fox 8126886fb5 Major 5.0 (#469)
* Advanced generator, UI overhaul (#449)

* Major overhaul:
- Added advanced generator
- Removed "Insert and copy" feature
- Moved settings to extension options
- General refactoring

* Updated custom character options for default generator (#447)

* Added state save for advanced generator mode

* Fixed state save for advanced password generator

* Updated extension description

* Minor UI fixes:
- Fixed Options UI not displaying in Google Chrome
- Fixed Quick Options menus overflowing on some locales
- Fixed Advanced generator configuration UI clipping when window height is too small
- Fixed divider in Options UI taking up all available space

* Minor UI/UX changes and fixes:
- Fixed locale in Advanced generator toast notifications
- Added toast notification for copying a single password in Advanced generator
- Moved custom characters input lables to placeholders
- Fixed minor type issues
- Removed duplicate "About" text
- Fixed input fields alignment in Options
- Added "disabled" state for "Include Custom" option in Quick settings

* Bump @typescript-eslint/parser from 8.16.0 to 8.19.1 (#468)

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.16.0 to 8.19.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.19.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  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.16.0 to 9.18.0 (#467)

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.16.0 to 9.18.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.18.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  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-components from 9.56.3 to 9.57.0 (#466)

Bumps [@fluentui/react-components](https://github.com/microsoft/fluentui) from 9.56.3 to 9.57.0.
- [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.56.3...@fluentui/react-components_v9.57.0)

---
updated-dependencies:
- dependency-name: "@fluentui/react-components"
  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 wxt from 0.19.17 to 0.19.24 (#465)

Bumps [wxt](https://github.com/wxt-dev/wxt) from 0.19.17 to 0.19.24.
- [Release notes](https://github.com/wxt-dev/wxt/releases)
- [Commits](https://github.com/wxt-dev/wxt/compare/wxt-v0.19.17...wxt-v0.19.24)

---
updated-dependencies:
- dependency-name: wxt
  dependency-type: direct:development
  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>

* Bump eslint from 9.16.0 to 9.18.0 (#464)

Bumps [eslint](https://github.com/eslint/eslint) from 9.16.0 to 9.18.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.16.0...v9.18.0)

---
updated-dependencies:
- dependency-name: eslint
  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-plugin-react from 7.37.2 to 7.37.4 (#463)

Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.37.2 to 7.37.4.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.2...v7.37.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  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>
Co-authored-by: Eugene Fox <eugene.xfox@outlook.com>

* Bump typescript from 5.7.2 to 5.7.3 (#462)

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.7.2 to 5.7.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.7.2...v5.7.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  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>
Co-authored-by: Eugene Fox <eugene.xfox@outlook.com>

* Bump @typescript-eslint/eslint-plugin from 8.16.0 to 8.19.1 (#461)

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.16.0 to 8.19.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.19.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  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 wdzeng/chrome-extension from 1.2.4 to 1.3.0 (#450)

* Bump wdzeng/chrome-extension from 1.2.4 to 1.3.0

Bumps [wdzeng/chrome-extension](https://github.com/wdzeng/chrome-extension) from 1.2.4 to 1.3.0.
- [Release notes](https://github.com/wdzeng/chrome-extension/releases)
- [Commits](https://github.com/wdzeng/chrome-extension/compare/v1.2.4...v1.3.0)

---
updated-dependencies:
- dependency-name: wdzeng/chrome-extension
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Optimized CD workflow

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eugene Fox <eugene@xfox111.net>

* Bump @fluentui/react-icons from 2.0.266 to 2.0.270 (#458)

Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.266 to 2.0.270.
- [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-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>

* Bump @wxt-dev/module-react from 1.1.2 to 1.1.3 (#455)

Bumps [@wxt-dev/module-react](https://github.com/wxt-dev/wxt/tree/HEAD/packages/module-react) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/wxt-dev/wxt/releases)
- [Changelog](https://github.com/wxt-dev/wxt/blob/main/packages/module-react/CHANGELOG.md)
- [Commits](https://github.com/wxt-dev/wxt/commits/module-react-v1.1.3/packages/module-react)

---
updated-dependencies:
- dependency-name: "@wxt-dev/module-react"
  dependency-type: direct:development
  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>

* Bump globals from 15.12.0 to 15.14.0 (#452)

Bumps [globals](https://github.com/sindresorhus/globals) from 15.12.0 to 15.14.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.12.0...v15.14.0)

---
updated-dependencies:
- dependency-name: globals
  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>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 14:08:31 +03:00

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");
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;
};