From 01d048e2981e9540d15e118b719a3827f0170780 Mon Sep 17 00:00:00 2001 From: Eugene Fox Date: Fri, 9 Feb 2024 10:55:14 +0300 Subject: [PATCH] Minor 3.1.0 (#308) * - Minor code refactoring (#288) - Migrated last SCSS file to Griffel to get rid of SASS dependency - Migrated deprecated FUI components - Fixed FUI unmet peer dependency warning * Bump vite-plugin-web-extension from 4.1.0 to 4.1.1 (#283) Bumps [vite-plugin-web-extension](https://github.com/aklinker1/vite-plugin-web-extension) from 4.1.0 to 4.1.1. - [Release notes](https://github.com/aklinker1/vite-plugin-web-extension/releases) - [Commits](https://github.com/aklinker1/vite-plugin-web-extension/compare/v4.1.0...v4.1.1) --- updated-dependencies: - dependency-name: vite-plugin-web-extension dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump vite from 5.0.10 to 5.0.12 (#287) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.10 to 5.0.12. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.0.12/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.0.12/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @typescript-eslint/eslint-plugin from 6.16.0 to 6.20.0 (#292) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 6.16.0 to 6.20.0. - [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/v6.20.0/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] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump vite from 5.0.10 to 5.0.12 (#293) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.10 to 5.0.12. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.0.12/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.0.12/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @fluentui/react-components from 9.43.3 to 9.46.3 (#295) Bumps [@fluentui/react-components](https://github.com/microsoft/fluentui) from 9.43.3 to 9.46.3. - [Release notes](https://github.com/microsoft/fluentui/releases) - [Changelog](https://github.com/microsoft/fluentui/blob/master/azure-pipelines.release-fluentui.yml) - [Commits](https://github.com/microsoft/fluentui/compare/@fluentui/react-components_v9.43.3...@fluentui/react-components_v9.46.3) --- updated-dependencies: - dependency-name: "@fluentui/react-components" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @types/react from 18.2.45 to 18.2.48 (#296) Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.45 to 18.2.48. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @vitejs/plugin-react-swc from 3.5.0 to 3.6.0 (#297) Bumps [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) from 3.5.0 to 3.6.0. - [Release notes](https://github.com/vitejs/vite-plugin-react-swc/releases) - [Changelog](https://github.com/vitejs/vite-plugin-react-swc/blob/main/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite-plugin-react-swc/compare/v3.5.0...v3.6.0) --- updated-dependencies: - dependency-name: "@vitejs/plugin-react-swc" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump vite-plugin-static-copy from 1.0.0 to 1.0.1 (#298) Bumps [vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy) from 1.0.0 to 1.0.1. - [Release notes](https://github.com/sapphi-red/vite-plugin-static-copy/releases) - [Changelog](https://github.com/sapphi-red/vite-plugin-static-copy/blob/main/CHANGELOG.md) - [Commits](https://github.com/sapphi-red/vite-plugin-static-copy/compare/vite-plugin-static-copy@1.0.0...vite-plugin-static-copy@1.0.1) --- updated-dependencies: - dependency-name: vite-plugin-static-copy dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Eugene Fox * Bump @fluentui/react-icons from 2.0.224 to 2.0.226 (#299) Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.224 to 2.0.226. - [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] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Eugene Fox * Bump wdzeng/edge-addon from 1.2.2 to 1.2.3 (#289) Bumps [wdzeng/edge-addon](https://github.com/wdzeng/edge-addon) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/wdzeng/edge-addon/releases) - [Commits](https://github.com/wdzeng/edge-addon/compare/v1.2.2...v1.2.3) --- updated-dependencies: - dependency-name: wdzeng/edge-addon dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump wdzeng/chrome-extension from 1.2.1 to 1.2.2 (#290) Bumps [wdzeng/chrome-extension](https://github.com/wdzeng/chrome-extension) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/wdzeng/chrome-extension/releases) - [Commits](https://github.com/wdzeng/chrome-extension/compare/v1.2.1...v1.2.2) --- updated-dependencies: - dependency-name: wdzeng/chrome-extension dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump wdzeng/firefox-addon from 1.0.3 to 1.0.4 (#291) Bumps [wdzeng/firefox-addon](https://github.com/wdzeng/firefox-addon) from 1.0.3 to 1.0.4. - [Release notes](https://github.com/wdzeng/firefox-addon/releases) - [Commits](https://github.com/wdzeng/firefox-addon/compare/v1.0.3...v1.0.4) --- updated-dependencies: - dependency-name: wdzeng/firefox-addon dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @typescript-eslint/parser from 6.16.0 to 6.20.0 (#294) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.16.0 to 6.20.0. - [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/v6.20.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Eugene Fox * Bump @types/react from 18.2.48 to 18.2.55 (#301) Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.48 to 18.2.55. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump vite from 5.0.12 to 5.1.0 (#302) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.12 to 5.1.0. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/create-vite@5.1.0/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @fluentui/react-components from 9.46.3 to 9.46.4 (#306) Bumps [@fluentui/react-components](https://github.com/microsoft/fluentui) from 9.46.3 to 9.46.4. - [Release notes](https://github.com/microsoft/fluentui/releases) - [Changelog](https://github.com/microsoft/fluentui/blob/master/azure-pipelines.release-fluentui.yml) - [Commits](https://github.com/microsoft/fluentui/compare/@fluentui/react-components_v9.46.3...@fluentui/react-components_v9.46.4) --- updated-dependencies: - dependency-name: "@fluentui/react-components" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improved quick adjustment panel: (#300) - Added length slider range setting (#286) - Added more character options for quick adjustment - QA panel now collapses when settings panel is open * Bump @types/react-dom from 18.2.18 to 18.2.19 (#303) Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.18 to 18.2.19. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom) --- updated-dependencies: - dependency-name: "@types/react-dom" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Eugene Fox * Bump @typescript-eslint/eslint-plugin from 6.20.0 to 6.21.0 (#304) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 6.20.0 to 6.21.0. - [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/v6.21.0/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] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @typescript-eslint/parser from 6.20.0 to 6.21.0 (#305) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.20.0 to 6.21.0. - [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/v6.21.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update pt-BR (#307) * Improved quick adjustment panel: - Added length slider range setting (#286) - Added more character options for quick adjustment - QA panel now collapses when settings panel is open * Update pt-BR Update pt-BR * Update messages.json * Update messages.json * Update New * Update Final * Update Fix --------- Co-authored-by: Eugene Fox * Update package.json --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Maison da Silva --- .github/workflows/cd_pipeline.yaml | 6 +- .vscode/settings.json | 2 +- package.json | 26 +- src/App.tsx | 10 +- src/Components/AboutSection.tsx | 4 +- src/Components/GeneratorView.styles.ts | 28 +- src/Components/GeneratorView.tsx | 178 ++- src/Components/SettingsSection.styles.ts | 11 + src/Components/SettingsSection.tsx | 47 +- src/Data/Locales/en/messages.json | 19 +- src/Data/Locales/pl/messages.json | 19 +- src/Data/Locales/pt_BR/messages.json | 31 +- src/Data/Locales/ru/messages.json | 19 +- src/Data/Locales/uk/messages.json | 19 +- src/Models/ExtensionOptions.ts | 6 +- src/Specials/Snow.scss | 55 - src/Specials/Snow.styles.ts | 44 + src/Specials/Snow.tsx | 23 +- src/popup.css | 15 + yarn.lock | 1393 +++++++++++----------- 20 files changed, 1079 insertions(+), 876 deletions(-) delete mode 100644 src/Specials/Snow.scss create mode 100644 src/Specials/Snow.styles.ts diff --git a/.github/workflows/cd_pipeline.yaml b/.github/workflows/cd_pipeline.yaml index 849890e..0394912 100644 --- a/.github/workflows/cd_pipeline.yaml +++ b/.github/workflows/cd_pipeline.yaml @@ -105,7 +105,7 @@ jobs: with: name: packed-chrome - - uses: wdzeng/chrome-extension@v1.2.1 + - uses: wdzeng/chrome-extension@v1.2.2 with: extension-id: jnjobgjobffgmgfnkpkjfjkkfhfikmfl zip-path: PasswordGenerator-chrome.zip @@ -123,7 +123,7 @@ jobs: with: name: packed-chrome - - uses: wdzeng/edge-addon@v1.2.2 + - uses: wdzeng/edge-addon@v1.2.3 with: product-id: ${{ secrets.EDGE_PRODUCT_ID }} zip-path: PasswordGenerator-chrome.zip @@ -141,7 +141,7 @@ jobs: with: name: packed-firefox - - uses: wdzeng/firefox-addon@v1.0.3 + - uses: wdzeng/firefox-addon@v1.0.4 with: addon-guid: ${{ secrets.FIREFOX_EXT_UUID }} xpi-path: PasswordGenerator-firefox.zip diff --git a/.vscode/settings.json b/.vscode/settings.json index 71ed60d..f2cb992 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,7 +15,7 @@ "editor.insertSpaces": false, "files.insertFinalNewline": true, "editor.codeActionsOnSave": { - "source.organizeImports": true + "source.organizeImports": "explicit" }, "files.eol": "\n", "files.trimFinalNewlines": true, diff --git a/package.json b/package.json index 5628d37..24cdc01 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "password-generator", - "version": "3.0.2", + "version": "3.1.0", "private": true, "type": "module", "scripts": { @@ -9,32 +9,32 @@ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0" }, "dependencies": { - "@fluentui/react-components": "^9.43.3", - "@fluentui/react-icons": "^2.0.224", + "@fluentui/react-components": "^9.46.4", + "@fluentui/react-icons": "^2.0.226", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@types/react": "^18.2.45", - "@types/react-dom": "^18.2.18", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", "@types/webextension-polyfill": "^0.10.7", - "@typescript-eslint/eslint-plugin": "^6.16.0", - "@typescript-eslint/parser": "^6.16.0", - "@vitejs/plugin-react-swc": "^3.5.0", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@vitejs/plugin-react-swc": "^3.6.0", "eslint": "^8.56.0", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", - "sass": "^1.69.5", "typescript": "^5.3.3", - "vite": "^5.0.10", - "vite-plugin-static-copy": "^1.0.0", + "vite": "^5.1.0", + "vite-plugin-static-copy": "^1.0.1", "vite-plugin-svgr": "^4.2.0", - "vite-plugin-web-extension": "^4.1.0", + "vite-plugin-web-extension": "^4.1.1", "webextension-polyfill": "^0.10.0" }, "resolutions": { "postcss": "^8.4.31", - "tough-cookie": "^4.1.3" + "tough-cookie": "^4.1.3", + "scheduler": "^0.20.0" } } diff --git a/src/App.tsx b/src/App.tsx index c5b622a..417c53c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,18 +6,24 @@ import SettingsSection from "./Components/SettingsSection"; import Specials from "./Specials/Specials"; import { StorageProvider } from "./Utils/Storage"; import { useTheme } from "./Utils/Theme"; +import { useState } from "react"; export default function App(): JSX.Element { const theme = useTheme(); const cls = useStyles(); + const [selection, setSelection] = useState([]); return (
}> - - + + setSelection(e.openItems as string[]) } + collapsible + className={ cls.accordionAnimation }> diff --git a/src/Components/AboutSection.tsx b/src/Components/AboutSection.tsx index def8b2e..f956166 100644 --- a/src/Components/AboutSection.tsx +++ b/src/Components/AboutSection.tsx @@ -10,7 +10,7 @@ import { useStyles } from "./AboutSection.styles"; export default function AboutSection(): JSX.Element { - const theme = useTheme(bmcLightTheme, bmcDarkTheme); + const bmcTheme = useTheme(bmcLightTheme, bmcDarkTheme); const cls = useStyles(); const link = (text: string, href: string): JSX.Element => ( @@ -54,7 +54,7 @@ export default function AboutSection(): JSX.Element ) }> { loc("about@feedback") } - + ) }> { loc("about@sponsor") } diff --git a/src/Components/GeneratorView.styles.ts b/src/Components/GeneratorView.styles.ts index 02d0ede..17cba24 100644 --- a/src/Components/GeneratorView.styles.ts +++ b/src/Components/GeneratorView.styles.ts @@ -17,17 +17,6 @@ export const useStyles = makeStyles({ alignItems: "center", paddingRight: tokens.spacingHorizontalM, }, - optionsSpacing: - { - ...shorthands.padding(tokens.spacingVerticalS, tokens.spacingHorizontalS), - }, - optionsLabel: - { - "> div[role=note].fui-InfoButton__info": - { - zIndex: 1, - }, - }, copyIcon: { animationName: "scaleUpIn", @@ -39,5 +28,20 @@ export const useStyles = makeStyles({ animationName: "spin", animationDuration: tokens.durationSlow, animationTimingFunction: tokens.curveEasyEaseMax, - } + }, + msgBar: + { + ...shorthands.padding(tokens.spacingVerticalMNudge, tokens.spacingHorizontalM), + }, + options: + { + display: "flex", + flexDirection: "column", + ...shorthands.padding(tokens.spacingVerticalS, tokens.spacingHorizontalS), + }, + characterOptionsContainer: + { + display: "flex", + ...shorthands.gap(tokens.spacingHorizontalXS), + }, }); diff --git a/src/Components/GeneratorView.tsx b/src/Components/GeneratorView.tsx index eb23563..4c5a95e 100644 --- a/src/Components/GeneratorView.tsx +++ b/src/Components/GeneratorView.tsx @@ -1,6 +1,5 @@ -import { Button, Checkbox, Input, Slider, Text, Tooltip, mergeClasses } from "@fluentui/react-components"; -import { Alert, InfoLabel } from "@fluentui/react-components/unstable"; -import { ArrowClockwiseRegular, ArrowUndoRegular, CheckmarkRegular, CopyRegular } from "@fluentui/react-icons"; +import * as fui from "@fluentui/react-components"; +import * as Icons from "@fluentui/react-icons"; import { useEffect, useState } from "react"; import GeneratorOptions from "../Models/GeneratorOptions"; import { GetLocaleString as loc } from "../Utils/Localization"; @@ -9,22 +8,24 @@ import { useStorage } from "../Utils/Storage"; import { useTimeout } from "../Utils/Timeout"; import { useStyles } from "./GeneratorView.styles"; -type QuickOptions = Pick; - -export default function GeneratorView(): JSX.Element +export default function GeneratorView(props: { collapse: boolean; }): JSX.Element { - const { generatorOptions } = useStorage(); + const { generatorOptions, extOptions } = useStorage(); const [password, setPassword] = useState(""); - const [quickOpts, _setOpts] = useState(generatorOptions); + const [quickOpts, _setOpts] = useState(generatorOptions); const [error, setError] = useState(null); const [refreshTimer, copyTimer] = [useTimeout(310), useTimeout(1000)]; + const checkedOptions = Object.keys(quickOpts).filter(k => quickOpts[k as keyof GeneratorOptions] as boolean); const cls = useStyles(); + const IncludeIcon: Icons.FluentIcon = Icons.bundleIcon(Icons.AddCircleFilled, Icons.AddCircleRegular); + const ExcludeIcon: Icons.FluentIcon = Icons.bundleIcon(Icons.SubtractCircleFilled, Icons.SubtractCircleRegular); + const resetOptions = (): void => _setOpts(generatorOptions); - const setOptions = (opts: Partial) => + const setOptions = (opts: Partial) => _setOpts({ ...quickOpts, ...opts }); function RefreshPassword(): void @@ -42,64 +43,129 @@ export default function GeneratorView(): JSX.Element copyTimer.trigger(); } + function OnCheckedValueChange(_: unknown, e: fui.MenuCheckedValueChangeData): void + { + const opts: Partial> = {}; + + let keys = Object.keys(quickOpts).filter(i => i !== "Length") as (keyof Omit)[]; + + if (e.name === "include") + keys = keys.filter(i => !i.startsWith("Exclude")); + else + keys = keys.filter(i => i.startsWith("Exclude")); + + for (const key of keys) + opts[key] = e.checkedItems.includes(key); + + setOptions(opts); + } + useEffect(resetOptions, [generatorOptions]); useEffect(RefreshPassword, [generatorOptions, quickOpts]); useEffect(refreshTimer.trigger, [password]); - const actionButtons: JSX.Element = <> - -