feat: add quick-add button to directory explorer rows (#1351)
This commit is contained in:
@@ -389,6 +389,18 @@ export const DirectoryExplorerDialog: React.FC<DirectoryExplorerDialogProps> = (
|
|||||||
onOpenChange(false);
|
onOpenChange(false);
|
||||||
}, [onOpenChange]);
|
}, [onOpenChange]);
|
||||||
|
|
||||||
|
const handleQuickAdd = React.useCallback((event: React.MouseEvent, path: string) => {
|
||||||
|
event.stopPropagation();
|
||||||
|
const normalized = normalizeDirectoryPath(path);
|
||||||
|
if (normalized && addedProjectPaths.has(normalized)) return;
|
||||||
|
const added = addProject(path);
|
||||||
|
if (!added) {
|
||||||
|
toast.error(t('directoryExplorerDialog.toast.failedToAddProject'), {
|
||||||
|
description: t('directoryExplorerDialog.toast.selectValidDirectoryPath'),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [addProject, addedProjectPaths, t]);
|
||||||
|
|
||||||
const finalizeSelection = React.useCallback(async (target: string) => {
|
const finalizeSelection = React.useCallback(async (target: string) => {
|
||||||
if (!target || isConfirming) return;
|
if (!target || isConfirming) return;
|
||||||
const normalized = normalizeDirectoryPath(target);
|
const normalized = normalizeDirectoryPath(target);
|
||||||
@@ -628,6 +640,16 @@ export const DirectoryExplorerDialog: React.FC<DirectoryExplorerDialogProps> = (
|
|||||||
<span className="rounded-full border border-border/60 px-2 py-0.5 typography-meta text-muted-foreground">
|
<span className="rounded-full border border-border/60 px-2 py-0.5 typography-meta text-muted-foreground">
|
||||||
{t('directoryExplorerDialog.browse.addedBadge')}
|
{t('directoryExplorerDialog.browse.addedBadge')}
|
||||||
</span>
|
</span>
|
||||||
|
) : row.type === 'directory' ? (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onMouseDown={(event) => event.stopPropagation()}
|
||||||
|
onClick={(event) => handleQuickAdd(event, row.path)}
|
||||||
|
className="flex-shrink-0 rounded-full p-1 text-muted-foreground transition-colors hover:bg-interactive-hover/60 hover:text-foreground"
|
||||||
|
title={t('directoryExplorerDialog.browse.quickAdd')}
|
||||||
|
>
|
||||||
|
<Icon name="add" className="h-3.5 w-3.5" />
|
||||||
|
</button>
|
||||||
) : null}
|
) : null}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1166,6 +1166,7 @@ export const dict = {
|
|||||||
'directoryExplorerDialog.browse.empty': 'No matching directories.',
|
'directoryExplorerDialog.browse.empty': 'No matching directories.',
|
||||||
'directoryExplorerDialog.browse.parentDirectory': 'Parent directory',
|
'directoryExplorerDialog.browse.parentDirectory': 'Parent directory',
|
||||||
'directoryExplorerDialog.browse.addedBadge': 'Added',
|
'directoryExplorerDialog.browse.addedBadge': 'Added',
|
||||||
|
'directoryExplorerDialog.browse.quickAdd': 'Add',
|
||||||
'directoryExplorerDialog.footer.navigate': 'Navigate',
|
'directoryExplorerDialog.footer.navigate': 'Navigate',
|
||||||
'directoryExplorerDialog.footer.select': 'Select',
|
'directoryExplorerDialog.footer.select': 'Select',
|
||||||
'directoryExplorerDialog.footer.add': 'Add',
|
'directoryExplorerDialog.footer.add': 'Add',
|
||||||
|
|||||||
@@ -1132,6 +1132,7 @@ export const dict: Record<I18nKey, string> = {
|
|||||||
"directoryExplorerDialog.browse.empty": "No hay directorios coincidentes.",
|
"directoryExplorerDialog.browse.empty": "No hay directorios coincidentes.",
|
||||||
"directoryExplorerDialog.browse.parentDirectory": "Directorio padre",
|
"directoryExplorerDialog.browse.parentDirectory": "Directorio padre",
|
||||||
"directoryExplorerDialog.browse.addedBadge": "Añadido",
|
"directoryExplorerDialog.browse.addedBadge": "Añadido",
|
||||||
|
"directoryExplorerDialog.browse.quickAdd": "Añadir",
|
||||||
"directoryExplorerDialog.footer.navigate": "Navegar",
|
"directoryExplorerDialog.footer.navigate": "Navegar",
|
||||||
"directoryExplorerDialog.footer.select": "Seleccionar",
|
"directoryExplorerDialog.footer.select": "Seleccionar",
|
||||||
"directoryExplorerDialog.footer.add": "Añadir",
|
"directoryExplorerDialog.footer.add": "Añadir",
|
||||||
|
|||||||
@@ -1168,6 +1168,7 @@ export const dict: Record<I18nKey, string> = {
|
|||||||
'directoryExplorerDialog.browse.empty': '일치하는 디렉터리가 없습니다.',
|
'directoryExplorerDialog.browse.empty': '일치하는 디렉터리가 없습니다.',
|
||||||
'directoryExplorerDialog.browse.parentDirectory': '상위 디렉터리',
|
'directoryExplorerDialog.browse.parentDirectory': '상위 디렉터리',
|
||||||
'directoryExplorerDialog.browse.addedBadge': '추가됨',
|
'directoryExplorerDialog.browse.addedBadge': '추가됨',
|
||||||
|
'directoryExplorerDialog.browse.quickAdd': '추가',
|
||||||
'directoryExplorerDialog.footer.navigate': '탐색',
|
'directoryExplorerDialog.footer.navigate': '탐색',
|
||||||
'directoryExplorerDialog.footer.select': '선택',
|
'directoryExplorerDialog.footer.select': '선택',
|
||||||
'directoryExplorerDialog.footer.add': '추가',
|
'directoryExplorerDialog.footer.add': '추가',
|
||||||
|
|||||||
@@ -1271,6 +1271,7 @@ export const dict: Record<I18nKey, string> = {
|
|||||||
'directoryExplorerDialog.actions.openInFinder': 'Otwórz w Finderze',
|
'directoryExplorerDialog.actions.openInFinder': 'Otwórz w Finderze',
|
||||||
'directoryExplorerDialog.actions.openingFinder': 'Otwieranie...',
|
'directoryExplorerDialog.actions.openingFinder': 'Otwieranie...',
|
||||||
'directoryExplorerDialog.browse.addedBadge': 'Dodano',
|
'directoryExplorerDialog.browse.addedBadge': 'Dodano',
|
||||||
|
'directoryExplorerDialog.browse.quickAdd': 'Dodaj',
|
||||||
'directoryExplorerDialog.browse.directories': 'Katalogi',
|
'directoryExplorerDialog.browse.directories': 'Katalogi',
|
||||||
'directoryExplorerDialog.browse.empty': 'Brak pasujących katalogów.',
|
'directoryExplorerDialog.browse.empty': 'Brak pasujących katalogów.',
|
||||||
'directoryExplorerDialog.browse.loading': 'Ładowanie katalogów...',
|
'directoryExplorerDialog.browse.loading': 'Ładowanie katalogów...',
|
||||||
|
|||||||
@@ -1132,6 +1132,7 @@ export const dict: Record<I18nKey, string> = {
|
|||||||
"directoryExplorerDialog.browse.empty": "Nenhum diretório correspondente.",
|
"directoryExplorerDialog.browse.empty": "Nenhum diretório correspondente.",
|
||||||
"directoryExplorerDialog.browse.parentDirectory": "Diretório pai",
|
"directoryExplorerDialog.browse.parentDirectory": "Diretório pai",
|
||||||
"directoryExplorerDialog.browse.addedBadge": "Adicionado",
|
"directoryExplorerDialog.browse.addedBadge": "Adicionado",
|
||||||
|
"directoryExplorerDialog.browse.quickAdd": "Adicionar",
|
||||||
"directoryExplorerDialog.footer.navigate": "Navegar",
|
"directoryExplorerDialog.footer.navigate": "Navegar",
|
||||||
"directoryExplorerDialog.footer.select": "Selecionar",
|
"directoryExplorerDialog.footer.select": "Selecionar",
|
||||||
"directoryExplorerDialog.footer.add": "Adicionar",
|
"directoryExplorerDialog.footer.add": "Adicionar",
|
||||||
|
|||||||
@@ -1132,6 +1132,7 @@ export const dict: Record<I18nKey, string> = {
|
|||||||
"directoryExplorerDialog.browse.empty": "Немає відповідних каталогів.",
|
"directoryExplorerDialog.browse.empty": "Немає відповідних каталогів.",
|
||||||
"directoryExplorerDialog.browse.parentDirectory": "Батьківський каталог",
|
"directoryExplorerDialog.browse.parentDirectory": "Батьківський каталог",
|
||||||
"directoryExplorerDialog.browse.addedBadge": "Додано",
|
"directoryExplorerDialog.browse.addedBadge": "Додано",
|
||||||
|
"directoryExplorerDialog.browse.quickAdd": "Додати",
|
||||||
"directoryExplorerDialog.footer.navigate": "Навігація",
|
"directoryExplorerDialog.footer.navigate": "Навігація",
|
||||||
"directoryExplorerDialog.footer.select": "Вибрати",
|
"directoryExplorerDialog.footer.select": "Вибрати",
|
||||||
"directoryExplorerDialog.footer.add": "Додати",
|
"directoryExplorerDialog.footer.add": "Додати",
|
||||||
|
|||||||
@@ -1132,6 +1132,7 @@ export const dict: Record<I18nKey, string> = {
|
|||||||
'directoryExplorerDialog.browse.empty': '没有匹配的目录。',
|
'directoryExplorerDialog.browse.empty': '没有匹配的目录。',
|
||||||
'directoryExplorerDialog.browse.parentDirectory': '上级目录',
|
'directoryExplorerDialog.browse.parentDirectory': '上级目录',
|
||||||
'directoryExplorerDialog.browse.addedBadge': '已添加',
|
'directoryExplorerDialog.browse.addedBadge': '已添加',
|
||||||
|
'directoryExplorerDialog.browse.quickAdd': '添加',
|
||||||
'directoryExplorerDialog.footer.navigate': '导航',
|
'directoryExplorerDialog.footer.navigate': '导航',
|
||||||
'directoryExplorerDialog.footer.select': '选择',
|
'directoryExplorerDialog.footer.select': '选择',
|
||||||
'directoryExplorerDialog.footer.add': '添加',
|
'directoryExplorerDialog.footer.add': '添加',
|
||||||
|
|||||||
Reference in New Issue
Block a user