From 1a6c3e04c758cd8bf8f5a749325655762956289e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 2 Nov 2025 09:07:20 +0000 Subject: [PATCH 1/3] Initial plan From 4f948ac12856190f4adad323331c10c1eec53a3e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 2 Nov 2025 09:15:41 +0000 Subject: [PATCH 2/3] fix: code review improvements - filename typo, validation, accessibility, event handling Co-authored-by: ohah <16170776+ohah@users.noreply.github.com> --- .../src/features/tab/ui/tab-button.tsx | 7 +++++- ...tab-title-mdal.tsx => tab-title-modal.tsx} | 24 +++++++++++++++---- .../src/shared/hooks/use-click-outside.ts | 13 ++++++---- 3 files changed, 34 insertions(+), 10 deletions(-) rename apps/executeJS/src/features/tab/ui/{tab-title-mdal.tsx => tab-title-modal.tsx} (73%) diff --git a/apps/executeJS/src/features/tab/ui/tab-button.tsx b/apps/executeJS/src/features/tab/ui/tab-button.tsx index 725f47a..34ff793 100644 --- a/apps/executeJS/src/features/tab/ui/tab-button.tsx +++ b/apps/executeJS/src/features/tab/ui/tab-button.tsx @@ -4,7 +4,7 @@ import { useRef, useState } from 'react'; import { Tab } from '@/features/playground'; import { useClickOutside } from '@/shared'; import { TabContextMenu } from '@/pages/playground'; -import { TabTitleModal } from './tab-title-mdal'; +import { TabTitleModal } from './tab-title-modal'; import { FormProvider, useForm } from 'react-hook-form'; interface TabButtonProps { @@ -58,13 +58,16 @@ export const TabButton: React.FC = ({ onClick={() => onActiveTab(id)} onContextMenu={(event) => onContextMenu(event, id)} className={`group-hover:text-gray-50 w-40 pl-3 pr-2 truncate text-left cursor-pointer select-none ${isActive ? 'text-gray-50' : 'text-gray-500'}`} + aria-label={`Tab: ${title}`} > {title} diff --git a/apps/executeJS/src/shared/hooks/use-click-outside.ts b/apps/executeJS/src/shared/hooks/use-click-outside.ts index 5053fbf..4bd1e8d 100644 --- a/apps/executeJS/src/shared/hooks/use-click-outside.ts +++ b/apps/executeJS/src/shared/hooks/use-click-outside.ts @@ -1,20 +1,23 @@ -import { useEffect, RefObject } from 'react'; +import { useEffect, useCallback, RefObject } from 'react'; export const useClickOutside = ( ref: RefObject, onClickOutside: () => void ) => { - useEffect(() => { - function handleClickOutside(event: MouseEvent) { + const handleClickOutside = useCallback( + (event: MouseEvent) => { if (ref.current && !ref.current.contains(event.target as Node)) { onClickOutside(); } - } + }, + [ref, onClickOutside] + ); + useEffect(() => { document.addEventListener('click', handleClickOutside); return () => { document.removeEventListener('click', handleClickOutside); }; - }, [ref, onClickOutside]); + }, [handleClickOutside]); }; From 201777e13b2698bde4fba76b23a1b7eff4054e76 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 2 Nov 2025 09:17:12 +0000 Subject: [PATCH 3/3] fix: improve form validation and accessibility in tab title modal Co-authored-by: ohah <16170776+ohah@users.noreply.github.com> --- .../src/features/tab/ui/tab-title-modal.tsx | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/apps/executeJS/src/features/tab/ui/tab-title-modal.tsx b/apps/executeJS/src/features/tab/ui/tab-title-modal.tsx index ac5c2fd..c4d1491 100644 --- a/apps/executeJS/src/features/tab/ui/tab-title-modal.tsx +++ b/apps/executeJS/src/features/tab/ui/tab-title-modal.tsx @@ -56,29 +56,32 @@ export const TabTitleModal: React.FC = ({ - { - return ( - - ); - }} - /> +
+ { + return ( + + ); + }} + /> - + + );