diff --git a/src/_locales/de/main.json b/src/_locales/de/main.json index a5eb555..78dd956 100644 --- a/src/_locales/de/main.json +++ b/src/_locales/de/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Vorlagen-Template", "Explain this: {{selection}}": "Erkläre das: {{selection}}", "New": "Neu", - "Always display floating window, disable sidebar for all site adapters": "Immer das schwebende Fenster anzeigen, die Seitenleiste für alle Website-Adapter deaktivieren" + "Always display floating window, disable sidebar for all site adapters": "Immer das schwebende Fenster anzeigen, die Seitenleiste für alle Website-Adapter deaktivieren", + "Allow ESC to close all floating windows": "ESC-Taste zum Schließen aller schwebenden Fenster zulassen" } diff --git a/src/_locales/en/main.json b/src/_locales/en/main.json index 26dd94b..196ca97 100644 --- a/src/_locales/en/main.json +++ b/src/_locales/en/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Prompt Template", "Explain this: {{selection}}": "Explain this: {{selection}}", "New": "New", - "Always display floating window, disable sidebar for all site adapters": "Always display floating window, disable sidebar for all site adapters" + "Always display floating window, disable sidebar for all site adapters": "Always display floating window, disable sidebar for all site adapters", + "Allow ESC to close all floating windows": "Allow ESC to close all floating windows" } diff --git a/src/_locales/es/main.json b/src/_locales/es/main.json index 0ae0028..6e84392 100644 --- a/src/_locales/es/main.json +++ b/src/_locales/es/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Plantilla de sugerencias", "Explain this: {{selection}}": "Explicar esto: {{selection}}", "New": "Nuevo", - "Always display floating window, disable sidebar for all site adapters": "Mostrar siempre la ventana flotante, desactivar la barra lateral para todos los adaptadores de sitios" + "Always display floating window, disable sidebar for all site adapters": "Mostrar siempre la ventana flotante, desactivar la barra lateral para todos los adaptadores de sitios", + "Allow ESC to close all floating windows": "Permitir que ESC cierre todas las ventanas flotantes" } diff --git a/src/_locales/fr/main.json b/src/_locales/fr/main.json index 0019d2c..ff4197b 100644 --- a/src/_locales/fr/main.json +++ b/src/_locales/fr/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Modèle de suggestion", "Explain this: {{selection}}": "Expliquer ceci : {{selection}}", "New": "Nouveau", - "Always display floating window, disable sidebar for all site adapters": "Toujours afficher la fenêtre flottante, désactiver la barre latérale pour tous les adaptateurs de site" + "Always display floating window, disable sidebar for all site adapters": "Toujours afficher la fenêtre flottante, désactiver la barre latérale pour tous les adaptateurs de site", + "Allow ESC to close all floating windows": "Autoriser la touche ESC pour fermer toutes les fenêtres flottantes" } diff --git a/src/_locales/in/main.json b/src/_locales/in/main.json index 0650e9b..6826d8b 100644 --- a/src/_locales/in/main.json +++ b/src/_locales/in/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Template Prompt", "Explain this: {{selection}}": "Jelaskan ini: {{selection}}", "New": "Baru", - "Always display floating window, disable sidebar for all site adapters": "Selalu tampilkan jendela mengambang, nonaktifkan sidebar untuk semua adapter situs" + "Always display floating window, disable sidebar for all site adapters": "Selalu tampilkan jendela mengambang, nonaktifkan sidebar untuk semua adapter situs", + "Allow ESC to close all floating windows": "Izinkan ESC untuk menutup semua jendela mengambang" } diff --git a/src/_locales/it/main.json b/src/_locales/it/main.json index 594ff70..fc6b51b 100644 --- a/src/_locales/it/main.json +++ b/src/_locales/it/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Modello di prompt", "Explain this: {{selection}}": "Spiega questo: {{selection}}", "New": "Nuovo", - "Always display floating window, disable sidebar for all site adapters": "Mostra sempre la finestra flottante, disabilita la barra laterale per tutti gli adattatori del sito" + "Always display floating window, disable sidebar for all site adapters": "Mostra sempre la finestra flottante, disabilita la barra laterale per tutti gli adattatori del sito", + "Allow ESC to close all floating windows": "Consenti ESC per chiudere tutte le finestre flottanti" } diff --git a/src/_locales/ja/main.json b/src/_locales/ja/main.json index 5697909..b85e365 100644 --- a/src/_locales/ja/main.json +++ b/src/_locales/ja/main.json @@ -143,5 +143,6 @@ "Prompt Template": "プロンプトテンプレート", "Explain this: {{selection}}": "これを説明する: {{selection}}", "New": "新規", - "Always display floating window, disable sidebar for all site adapters": "常にフローティングウィンドウを表示し、すべてのサイトアダプターでサイドバーを無効にします" + "Always display floating window, disable sidebar for all site adapters": "常にフローティングウィンドウを表示し、すべてのサイトアダプターでサイドバーを無効にします", + "Allow ESC to close all floating windows": "ESCキーですべてのフローティングウィンドウを閉じる" } diff --git a/src/_locales/ko/main.json b/src/_locales/ko/main.json index e0a39a4..058f542 100644 --- a/src/_locales/ko/main.json +++ b/src/_locales/ko/main.json @@ -143,5 +143,6 @@ "Prompt Template": "프롬프트 템플릿", "Explain this: {{selection}}": "이것을 설명하세요: {{selection}}", "New": "새로 만들기", - "Always display floating window, disable sidebar for all site adapters": "항상 떠다니는 창을 표시하고 모든 사이트 어댑터의 사이드바를 비활성화합니다" + "Always display floating window, disable sidebar for all site adapters": "항상 떠다니는 창을 표시하고 모든 사이트 어댑터의 사이드바를 비활성화합니다", + "Allow ESC to close all floating windows": "ESC를 눌러 모든 떠다니는 창을 닫도록 허용" } diff --git a/src/_locales/pt/main.json b/src/_locales/pt/main.json index d4b62e2..47c4ece 100644 --- a/src/_locales/pt/main.json +++ b/src/_locales/pt/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Modelo de Prompt", "Explain this: {{selection}}": "Explique isso: {{selection}}", "New": "Novo", - "Always display floating window, disable sidebar for all site adapters": "Sempre exibir janela flutuante, desativar barra lateral para todos os adaptadores de site" + "Always display floating window, disable sidebar for all site adapters": "Sempre exibir janela flutuante, desativar barra lateral para todos os adaptadores de site", + "Allow ESC to close all floating windows": "Permitir ESC para fechar todas as janelas flutuantes" } diff --git a/src/_locales/ru/main.json b/src/_locales/ru/main.json index e5d1f75..05cfb1b 100644 --- a/src/_locales/ru/main.json +++ b/src/_locales/ru/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Шаблон запроса", "Explain this: {{selection}}": "Объяснить это: {{selection}}", "New": "Новый", - "Always display floating window, disable sidebar for all site adapters": "Всегда отображать плавающее окно, отключить боковую панель для всех адаптеров сайтов" + "Always display floating window, disable sidebar for all site adapters": "Всегда отображать плавающее окно, отключить боковую панель для всех адаптеров сайтов", + "Allow ESC to close all floating windows": "Разрешить ESC для закрытия всех плавающих окон" } diff --git a/src/_locales/tr/main.json b/src/_locales/tr/main.json index 77d4fba..cc2134d 100644 --- a/src/_locales/tr/main.json +++ b/src/_locales/tr/main.json @@ -143,5 +143,6 @@ "Prompt Template": "Prompt Şablonu", "Explain this: {{selection}}": "Bunu açıkla: {{selection}}", "New": "Yeni", - "Always display floating window, disable sidebar for all site adapters": "Her zaman kayan pencereyi görüntüle, tüm site adaptörleri için kenar çubuğunu devre dışı bırak" + "Always display floating window, disable sidebar for all site adapters": "Her zaman kayan pencereyi görüntüle, tüm site adaptörleri için kenar çubuğunu devre dışı bırak", + "Allow ESC to close all floating windows": "ESC tuşuyla tüm kayan pencereleri kapatmaya izin ver" } diff --git a/src/_locales/zh-hans/main.json b/src/_locales/zh-hans/main.json index f713173..ae1f95a 100644 --- a/src/_locales/zh-hans/main.json +++ b/src/_locales/zh-hans/main.json @@ -145,6 +145,7 @@ "Explain this: {{selection}}": "解释这个: {{selection}}", "New": "新建", "Always display floating window, disable sidebar for all site adapters": "总是显示浮动窗口, 禁用所有站点适配器的侧边栏", + "Allow ESC to close all floating windows": "允许按ESC关闭所有浮动窗口", "Temperature": "温度", "keep-alive Time": "保活时间", "5m": "5分钟", diff --git a/src/_locales/zh-hant/main.json b/src/_locales/zh-hant/main.json index 21a4089..8951662 100644 --- a/src/_locales/zh-hant/main.json +++ b/src/_locales/zh-hant/main.json @@ -143,5 +143,6 @@ "Prompt Template": "提示範本", "Explain this: {{selection}}": "解釋這個: {{selection}}", "New": "新增", - "Always display floating window, disable sidebar for all site adapters": "總是顯示浮動視窗,停用所有網站適配器的側邊欄" + "Always display floating window, disable sidebar for all site adapters": "總是顯示浮動視窗,停用所有網站適配器的側邊欄", + "Allow ESC to close all floating windows": "允許按 ESC 關閉所有浮動視窗" } diff --git a/src/components/ConversationCard/index.jsx b/src/components/ConversationCard/index.jsx index 58d2ece..0abb9ed 100644 --- a/src/components/ConversationCard/index.jsx +++ b/src/components/ConversationCard/index.jsx @@ -253,17 +253,30 @@ function ConversationCard(props) { setIsReady(true) } - const closeChatsListener = (message) => { + const closeChatsMessageListener = (message) => { if (message.type === 'CLOSE_CHATS') { port.disconnect() + Browser.runtime.onMessage.removeListener(closeChatsMessageListener) + window.removeEventListener('keydown', closeChatsEscListener) if (props.onClose) props.onClose() } } + const closeChatsEscListener = async (e) => { + if (e.key === 'Escape' && (await getUserConfig()).allowEscToCloseAll) { + closeChatsMessageListener({ type: 'CLOSE_CHATS' }) + } + } - if (props.closeable) Browser.runtime.onMessage.addListener(closeChatsListener) + if (props.closeable) { + Browser.runtime.onMessage.addListener(closeChatsMessageListener) + window.addEventListener('keydown', closeChatsEscListener) + } port.onDisconnect.addListener(portListener) return () => { - if (props.closeable) Browser.runtime.onMessage.removeListener(closeChatsListener) + if (props.closeable) { + Browser.runtime.onMessage.removeListener(closeChatsMessageListener) + window.removeEventListener('keydown', closeChatsEscListener) + } port.onDisconnect.removeListener(portListener) } }, [port]) diff --git a/src/config/index.mjs b/src/config/index.mjs index 02d0081..d0fa1b8 100644 --- a/src/config/index.mjs +++ b/src/config/index.mjs @@ -220,6 +220,7 @@ export const defaultConfig = { clickIconAction: 'popup', insertAtTop: isMobile(), alwaysFloatingSidebar: false, + allowEscToCloseAll: false, lockWhenAnswer: true, answerScrollMargin: 200, autoRegenAfterSwitchModel: false, diff --git a/src/popup/sections/GeneralPart.jsx b/src/popup/sections/GeneralPart.jsx index 2cf8b3a..8be45b5 100644 --- a/src/popup/sections/GeneralPart.jsx +++ b/src/popup/sections/GeneralPart.jsx @@ -484,6 +484,17 @@ export function GeneralPart({ config, updateConfig }) { /> {t('Always display floating window, disable sidebar for all site adapters')} +