From 0d257977a1d18e2c848ae9ae8b1f9c2625088d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Thu, 30 Apr 2026 14:05:45 +0400 Subject: [PATCH] Refactor cookie banner forms to react-hook-form MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- .../cookies/CookieBannerCookiesPage.tsx | 3 +- .../cookies/_components/AddCookieRow.tsx | 52 ++++++---- .../_components/CategoryDialog.tsx | 59 +++++++----- .../cookies/_components/EditCategoryForm.tsx | 94 +++++++++++-------- .../cookies/_components/EditCookieRow.tsx | 52 ++++++---- .../display/CookieBannerDisplayPage.tsx | 3 +- .../_components/CategoryList.tsx | 0 .../settings/CookieBannerSettingsPage.tsx | 3 +- .../_components/BannerSettingsForm.tsx | 86 ++++++++++------- packages/helpers/src/duration.ts | 33 +++---- 10 files changed, 223 insertions(+), 162 deletions(-) rename apps/console/src/pages/organizations/cookie-banners/configuration/{ => cookies}/_components/CategoryDialog.tsx (76%) rename apps/console/src/pages/organizations/cookie-banners/configuration/{ => display}/_components/CategoryList.tsx (100%) rename apps/console/src/pages/organizations/cookie-banners/configuration/{ => settings}/_components/BannerSettingsForm.tsx (63%) diff --git a/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/CookieBannerCookiesPage.tsx b/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/CookieBannerCookiesPage.tsx index d68b6db86..b87d42946 100644 --- a/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/CookieBannerCookiesPage.tsx +++ b/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/CookieBannerCookiesPage.tsx @@ -22,8 +22,7 @@ import { graphql } from "relay-runtime"; import type { CookieBannerCookiesPageDeleteMutation } from "#/__generated__/core/CookieBannerCookiesPageDeleteMutation.graphql"; import type { CookieBannerCookiesPageQuery } from "#/__generated__/core/CookieBannerCookiesPageQuery.graphql"; -import { CategoryDialog } from "../_components/CategoryDialog"; - +import { CategoryDialog } from "./_components/CategoryDialog"; import { CategorySection } from "./_components/CategorySection"; export const cookieBannerCookiesPageQuery = graphql` diff --git a/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/_components/AddCookieRow.tsx b/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/_components/AddCookieRow.tsx index ddd943864..e92974210 100644 --- a/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/_components/AddCookieRow.tsx +++ b/apps/console/src/pages/organizations/cookie-banners/configuration/cookies/_components/AddCookieRow.tsx @@ -15,10 +15,16 @@ import { toMaxAgeSeconds } from "@probo/helpers"; import { useTranslate } from "@probo/i18n"; import { Button, DurationInput, Input, Td, Tr } from "@probo/ui"; -import { useState } from "react"; +import { Controller, useForm } from "react-hook-form"; import type { CookieEntry } from "./CategorySection"; +interface CookieFormValues { + name: string; + duration: { value: string; unit: string }; + description: string; +} + interface AddCookieRowProps { isUpdating: boolean; onSave: (cookie: CookieEntry) => void; @@ -31,16 +37,20 @@ export function AddCookieRow({ onCancel, }: AddCookieRowProps) { const { __ } = useTranslate(); - const [name, setName] = useState(""); - const [durationValue, setDurationValue] = useState(""); - const [durationUnit, setDurationUnit] = useState("days"); - const [description, setDescription] = useState(""); - const handleSave = () => { + const { register, handleSubmit, control } = useForm({ + defaultValues: { + name: "", + duration: { value: "", unit: "days" }, + description: "", + }, + }); + + const onSubmit = (data: CookieFormValues) => { onSave({ - name, - maxAgeSeconds: toMaxAgeSeconds(durationValue, durationUnit), - description, + name: data.name, + maxAgeSeconds: toMaxAgeSeconds(data.duration.value, data.duration.unit), + description: data.description, }); }; @@ -48,30 +58,34 @@ export function AddCookieRow({ setName(e.target.value)} + {...register("name")} placeholder={__("Cookie name")} /> - ( + field.onChange({ ...field.value, value: v })} + onUnitChange={u => field.onChange({ ...field.value, unit: u })} + /> + )} /> setDescription(e.target.value)} + {...register("description")} placeholder={__("Description")} />