From bcf5fb2521860d3aeee74f3ea37611703d182a9a Mon Sep 17 00:00:00 2001 From: Ildar Kamalov Date: Fri, 17 Jan 2025 16:36:39 +0300 Subject: [PATCH] use common checkbox component --- client/package-lock.json | 14 ++ client/package.json | 1 + client/src/components/Filters/FiltersList.tsx | 33 ++-- client/src/components/Filters/Modal.tsx | 2 - .../components/Settings/Dns/Config/Form.tsx | 160 ++++++++---------- .../components/Settings/Dns/Upstream/Form.tsx | 111 +++++------- .../Settings/FiltersConfig/index.tsx | 35 ++-- .../components/Settings/LogsConfig/Form.tsx | 108 +++++------- .../components/Settings/StatsConfig/Form.tsx | 76 ++++----- client/src/components/Settings/index.tsx | 62 ++++--- client/src/components/ui/Checkbox.tsx | 59 ------- .../Checkbox/checkbox.css} | 0 .../components/ui/Controls/Checkbox/index.tsx | 35 ++++ .../src/components/ui/Controls/InputGroup.tsx | 63 +++++++ 14 files changed, 365 insertions(+), 394 deletions(-) delete mode 100644 client/src/components/ui/Checkbox.tsx rename client/src/components/ui/{Checkbox.css => Controls/Checkbox/checkbox.css} (100%) create mode 100644 client/src/components/ui/Controls/Checkbox/index.tsx create mode 100644 client/src/components/ui/Controls/InputGroup.tsx diff --git a/client/package-lock.json b/client/package-lock.json index 6cd52325..ccf521cc 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -11,6 +11,7 @@ "@nivo/line": "^0.64.0", "axios": "^0.19.2", "classnames": "^2.5.1", + "clsx": "^2.1.1", "countries-and-timezones": "^3.6.0", "date-fns": "^1.29.0", "i18next": "^19.6.2", @@ -6389,6 +6390,14 @@ "node": ">=6" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -24834,6 +24843,11 @@ "shallow-clone": "^3.0.0" } }, + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", diff --git a/client/package.json b/client/package.json index 7d2b4391..1c97e553 100644 --- a/client/package.json +++ b/client/package.json @@ -24,6 +24,7 @@ "@nivo/line": "^0.64.0", "axios": "^0.19.2", "classnames": "^2.5.1", + "clsx": "^2.1.1", "countries-and-timezones": "^3.6.0", "date-fns": "^1.29.0", "i18next": "^19.6.2", diff --git a/client/src/components/Filters/FiltersList.tsx b/client/src/components/Filters/FiltersList.tsx index 96b38d78..b56d0d34 100644 --- a/client/src/components/Filters/FiltersList.tsx +++ b/client/src/components/Filters/FiltersList.tsx @@ -1,7 +1,8 @@ import React from 'react'; import classNames from 'classnames'; -import { useFormContext } from 'react-hook-form'; +import { Controller, useFormContext } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; +import { Checkbox } from '../ui/Controls/Checkbox'; const getIconsData = (homepage: string, source: string) => [ { @@ -49,7 +50,7 @@ type Props = { export const FiltersList = ({ categories, filters, selectedSources }: Props) => { const { t } = useTranslation(); - const { register } = useFormContext(); + const { control } = useFormContext(); return ( <> @@ -69,21 +70,19 @@ export const FiltersList = ({ categories, filters, selectedSources }: Props) => return (
- + ( + onChange(value)} + disabled={isSelected} + /> + )} + /> {renderIcons(iconsData)}
); diff --git a/client/src/components/Filters/Modal.tsx b/client/src/components/Filters/Modal.tsx index 51f8905e..80e12ecd 100644 --- a/client/src/components/Filters/Modal.tsx +++ b/client/src/components/Filters/Modal.tsx @@ -107,8 +107,6 @@ class Modal extends Component { const title = t(getTitle(modalType, whitelist)); - console.log(modalType, initialValues); - return ( ; onSubmit: (data: FormData) => void; -} +}; const Form = ({ processing, initialValues, onSubmit }: Props) => { const { t } = useTranslation(); @@ -67,6 +68,7 @@ const Form = ({ processing, initialValues, onSubmit }: Props) => { register, handleSubmit, watch, + control, formState: { errors, isSubmitting, isDirty }, } = useForm({ mode: 'onChange', @@ -86,9 +88,7 @@ const Form = ({ processing, initialValues, onSubmit }: Props) => { {t('rate_limit')} -
- {t('rate_limit_desc')} -
+
{t('rate_limit_desc')}
{ })} /> {errors.ratelimit && ( -
- {errors.ratelimit.message} -
+
{errors.ratelimit.message}
)} @@ -116,9 +114,7 @@ const Form = ({ processing, initialValues, onSubmit }: Props) => { {t('rate_limit_subnet_len_ipv4')} -
- {t('rate_limit_subnet_len_ipv4_desc')} -
+
{t('rate_limit_subnet_len_ipv4_desc')}
{ {t('rate_limit_subnet_len_ipv6')} -
- {t('rate_limit_subnet_len_ipv6_desc')} -
+
{t('rate_limit_subnet_len_ipv6_desc')}
{ {t('rate_limit_whitelist')} -
- {t('rate_limit_whitelist_desc')} -
+
{t('rate_limit_whitelist_desc')}