diff --git a/web/src/components/panels/index.tsx b/web/src/components/panels/index.tsx index 47676f2..f8770b7 100644 --- a/web/src/components/panels/index.tsx +++ b/web/src/components/panels/index.tsx @@ -7,7 +7,7 @@ import { Fragment, useRef, ReactNode, ReactElement } from "react"; import { XMarkIcon } from "@heroicons/react/24/solid"; import { Dialog, Transition } from "@headlessui/react"; import { Form, Formik } from "formik"; -import type { FormikValues } from "formik"; +import type { FormikValues, FormikProps } from "formik"; import DEBUG from "@components/debug"; import { useToggle } from "@hooks/hooks"; @@ -16,7 +16,7 @@ import { classNames } from "@utils"; interface SlideOverProps { title: string; - initialValues: FormikValues & DataType; + initialValues: DataType; validate?: (values: DataType) => void; onSubmit: (values?: DataType) => void; isOpen: boolean; @@ -31,7 +31,7 @@ interface SlideOverProps { extraButtons?: (values: DataType) => ReactNode; } -function SlideOver({ +function SlideOver({ title, initialValues, validate, @@ -48,13 +48,9 @@ function SlideOver({ extraButtons }: SlideOverProps): ReactElement { const cancelModalButtonRef = useRef(null); - const [deleteModalIsOpen, toggleDeleteModal] = useToggle(false); + const formRef = useRef>(null); - const test = (values: unknown) => { - if (testFn) { - testFn(values); - } - }; + const [deleteModalIsOpen, toggleDeleteModal] = useToggle(false); return ( @@ -71,13 +67,16 @@ function SlideOver({ /> )} -
{ - e.preventDefault(); - e.stopPropagation(); - }}> +
-
+
{ + e.preventDefault(); + e.stopPropagation(); + }} + > ({ initialValues={initialValues} onSubmit={onSubmit} validate={validate} + innerRef={formRef} > {({ handleSubmit, values }) => ( -
+ { + e.preventDefault(); + handleSubmit(e); + }} + >
@@ -154,7 +159,10 @@ function SlideOver({ "mr-2 inline-flex items-center px-4 py-2 border font-medium rounded-md shadow-sm text-sm transition ease-in-out duration-150 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 dark:focus:ring-blue-500" )} disabled={isTesting} - onClick={() => test(values)} + onClick={(e) => { + e.preventDefault(); + testFn(values); + }} > {isTesting ? ( ({ @@ -208,7 +223,6 @@ function SlideOver({ )} -
diff --git a/web/src/screens/settings/Irc.tsx b/web/src/screens/settings/Irc.tsx index d023473..eeb7235 100644 --- a/web/src/screens/settings/Irc.tsx +++ b/web/src/screens/settings/Irc.tsx @@ -248,7 +248,13 @@ const ListItem = ({ network, expanded }: ListItemProps) => { "grid grid-cols-12 gap-2 lg:gap-4 items-center py-2 cursor-pointer", network.enabled && !network.healthy ? "bg-red-50 dark:bg-red-900 hover:bg-red-100 dark:hover:bg-red-800" : "hover:bg-gray-50 dark:hover:bg-gray-700" )} - onClick={toggleEdit} + onClick={(e) => { + if (e.defaultPrevented) + return; + + e.preventDefault(); + toggleEdit(); + }} > e.stopPropagation()} + onClick={(e: MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + e.nativeEvent.stopImmediatePropagation(); + }} >