Skip to content

Commit 4e7410f

Browse files
committed
Allow ESC to close all floating windows (#750)
1 parent c7ee67a commit 4e7410f

File tree

16 files changed

+53
-15
lines changed

16 files changed

+53
-15
lines changed

src/_locales/de/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Vorlagen-Template",
144144
"Explain this: {{selection}}": "Erkläre das: {{selection}}",
145145
"New": "Neu",
146-
"Always display floating window, disable sidebar for all site adapters": "Immer das schwebende Fenster anzeigen, die Seitenleiste für alle Website-Adapter deaktivieren"
146+
"Always display floating window, disable sidebar for all site adapters": "Immer das schwebende Fenster anzeigen, die Seitenleiste für alle Website-Adapter deaktivieren",
147+
"Allow ESC to close all floating windows": "ESC-Taste zum Schließen aller schwebenden Fenster zulassen"
147148
}

src/_locales/en/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Prompt Template",
144144
"Explain this: {{selection}}": "Explain this: {{selection}}",
145145
"New": "New",
146-
"Always display floating window, disable sidebar for all site adapters": "Always display floating window, disable sidebar for all site adapters"
146+
"Always display floating window, disable sidebar for all site adapters": "Always display floating window, disable sidebar for all site adapters",
147+
"Allow ESC to close all floating windows": "Allow ESC to close all floating windows"
147148
}

src/_locales/es/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Plantilla de sugerencias",
144144
"Explain this: {{selection}}": "Explicar esto: {{selection}}",
145145
"New": "Nuevo",
146-
"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"
146+
"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",
147+
"Allow ESC to close all floating windows": "Permitir que ESC cierre todas las ventanas flotantes"
147148
}

src/_locales/fr/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Modèle de suggestion",
144144
"Explain this: {{selection}}": "Expliquer ceci : {{selection}}",
145145
"New": "Nouveau",
146-
"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"
146+
"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",
147+
"Allow ESC to close all floating windows": "Autoriser la touche ESC pour fermer toutes les fenêtres flottantes"
147148
}

src/_locales/in/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Template Prompt",
144144
"Explain this: {{selection}}": "Jelaskan ini: {{selection}}",
145145
"New": "Baru",
146-
"Always display floating window, disable sidebar for all site adapters": "Selalu tampilkan jendela mengambang, nonaktifkan sidebar untuk semua adapter situs"
146+
"Always display floating window, disable sidebar for all site adapters": "Selalu tampilkan jendela mengambang, nonaktifkan sidebar untuk semua adapter situs",
147+
"Allow ESC to close all floating windows": "Izinkan ESC untuk menutup semua jendela mengambang"
147148
}

src/_locales/it/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Modello di prompt",
144144
"Explain this: {{selection}}": "Spiega questo: {{selection}}",
145145
"New": "Nuovo",
146-
"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"
146+
"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",
147+
"Allow ESC to close all floating windows": "Consenti ESC per chiudere tutte le finestre flottanti"
147148
}

src/_locales/ja/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "プロンプトテンプレート",
144144
"Explain this: {{selection}}": "これを説明する: {{selection}}",
145145
"New": "新規",
146-
"Always display floating window, disable sidebar for all site adapters": "常にフローティングウィンドウを表示し、すべてのサイトアダプターでサイドバーを無効にします"
146+
"Always display floating window, disable sidebar for all site adapters": "常にフローティングウィンドウを表示し、すべてのサイトアダプターでサイドバーを無効にします",
147+
"Allow ESC to close all floating windows": "ESCキーですべてのフローティングウィンドウを閉じる"
147148
}

src/_locales/ko/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "프롬프트 템플릿",
144144
"Explain this: {{selection}}": "이것을 설명하세요: {{selection}}",
145145
"New": "새로 만들기",
146-
"Always display floating window, disable sidebar for all site adapters": "항상 떠다니는 창을 표시하고 모든 사이트 어댑터의 사이드바를 비활성화합니다"
146+
"Always display floating window, disable sidebar for all site adapters": "항상 떠다니는 창을 표시하고 모든 사이트 어댑터의 사이드바를 비활성화합니다",
147+
"Allow ESC to close all floating windows": "ESC를 눌러 모든 떠다니는 창을 닫도록 허용"
147148
}

src/_locales/pt/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Modelo de Prompt",
144144
"Explain this: {{selection}}": "Explique isso: {{selection}}",
145145
"New": "Novo",
146-
"Always display floating window, disable sidebar for all site adapters": "Sempre exibir janela flutuante, desativar barra lateral para todos os adaptadores de site"
146+
"Always display floating window, disable sidebar for all site adapters": "Sempre exibir janela flutuante, desativar barra lateral para todos os adaptadores de site",
147+
"Allow ESC to close all floating windows": "Permitir ESC para fechar todas as janelas flutuantes"
147148
}

src/_locales/ru/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Шаблон запроса",
144144
"Explain this: {{selection}}": "Объяснить это: {{selection}}",
145145
"New": "Новый",
146-
"Always display floating window, disable sidebar for all site adapters": "Всегда отображать плавающее окно, отключить боковую панель для всех адаптеров сайтов"
146+
"Always display floating window, disable sidebar for all site adapters": "Всегда отображать плавающее окно, отключить боковую панель для всех адаптеров сайтов",
147+
"Allow ESC to close all floating windows": "Разрешить ESC для закрытия всех плавающих окон"
147148
}

src/_locales/tr/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "Prompt Şablonu",
144144
"Explain this: {{selection}}": "Bunu açıkla: {{selection}}",
145145
"New": "Yeni",
146-
"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"
146+
"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",
147+
"Allow ESC to close all floating windows": "ESC tuşuyla tüm kayan pencereleri kapatmaya izin ver"
147148
}

src/_locales/zh-hans/main.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@
145145
"Explain this: {{selection}}": "解释这个: {{selection}}",
146146
"New": "新建",
147147
"Always display floating window, disable sidebar for all site adapters": "总是显示浮动窗口, 禁用所有站点适配器的侧边栏",
148+
"Allow ESC to close all floating windows": "允许按ESC关闭所有浮动窗口",
148149
"Temperature": "温度",
149150
"keep-alive Time": "保活时间",
150151
"5m": "5分钟",

src/_locales/zh-hant/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@
143143
"Prompt Template": "提示範本",
144144
"Explain this: {{selection}}": "解釋這個: {{selection}}",
145145
"New": "新增",
146-
"Always display floating window, disable sidebar for all site adapters": "總是顯示浮動視窗,停用所有網站適配器的側邊欄"
146+
"Always display floating window, disable sidebar for all site adapters": "總是顯示浮動視窗,停用所有網站適配器的側邊欄",
147+
"Allow ESC to close all floating windows": "允許按 ESC 關閉所有浮動視窗"
147148
}

src/components/ConversationCard/index.jsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,17 +253,30 @@ function ConversationCard(props) {
253253
setIsReady(true)
254254
}
255255

256-
const closeChatsListener = (message) => {
256+
const closeChatsMessageListener = (message) => {
257257
if (message.type === 'CLOSE_CHATS') {
258258
port.disconnect()
259+
Browser.runtime.onMessage.removeListener(closeChatsMessageListener)
260+
window.removeEventListener('keydown', closeChatsEscListener)
259261
if (props.onClose) props.onClose()
260262
}
261263
}
264+
const closeChatsEscListener = async (e) => {
265+
if (e.key === 'Escape' && (await getUserConfig()).allowEscToCloseAll) {
266+
closeChatsMessageListener({ type: 'CLOSE_CHATS' })
267+
}
268+
}
262269

263-
if (props.closeable) Browser.runtime.onMessage.addListener(closeChatsListener)
270+
if (props.closeable) {
271+
Browser.runtime.onMessage.addListener(closeChatsMessageListener)
272+
window.addEventListener('keydown', closeChatsEscListener)
273+
}
264274
port.onDisconnect.addListener(portListener)
265275
return () => {
266-
if (props.closeable) Browser.runtime.onMessage.removeListener(closeChatsListener)
276+
if (props.closeable) {
277+
Browser.runtime.onMessage.removeListener(closeChatsMessageListener)
278+
window.removeEventListener('keydown', closeChatsEscListener)
279+
}
267280
port.onDisconnect.removeListener(portListener)
268281
}
269282
}, [port])

src/config/index.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ export const defaultConfig = {
220220
clickIconAction: 'popup',
221221
insertAtTop: isMobile(),
222222
alwaysFloatingSidebar: false,
223+
allowEscToCloseAll: false,
223224
lockWhenAnswer: true,
224225
answerScrollMargin: 200,
225226
autoRegenAfterSwitchModel: false,

src/popup/sections/GeneralPart.jsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,17 @@ export function GeneralPart({ config, updateConfig }) {
484484
/>
485485
{t('Always display floating window, disable sidebar for all site adapters')}
486486
</label>
487+
<label>
488+
<input
489+
type="checkbox"
490+
checked={config.allowEscToCloseAll}
491+
onChange={(e) => {
492+
const checked = e.target.checked
493+
updateConfig({ allowEscToCloseAll: checked })
494+
}}
495+
/>
496+
{t('Allow ESC to close all floating windows')}
497+
</label>
487498
<label>
488499
<input
489500
type="checkbox"

0 commit comments

Comments
 (0)