feat(projects): support adding multiple projects at once in the directory picker
Add a multi-select mode to the "Add project directory" dialog: each directory row gets a select toggle (checkbox icon, Space toggles the highlighted row), and the primary action becomes "Add selected" and registers every selected directory in one store update. Selections apply to the currently browsed directory and reset on navigation, dialog open, and clone-mode entry. Clone mode keeps its single-target flow. Add addProjects() to useProjectsStore: validates, normalizes, and dedups paths (already-added or duplicated), creates entries in a single state update and single persist, activates the first newly added project, and discovers icons for each entry. Mirrors addProject semantics for the single entry. Refs OPE-142
This commit is contained in:
@@ -1612,6 +1612,7 @@ export const dict = {
|
||||
'directoryExplorerDialog.actions.openInFinder': 'Im Finder öffnen',
|
||||
'directoryExplorerDialog.actions.adding': 'Füge hinzu...',
|
||||
'directoryExplorerDialog.actions.addProject': 'Projekt hinzufügen',
|
||||
'directoryExplorerDialog.actions.addSelected': 'Ausgewählte hinzufügen',
|
||||
'directoryExplorerDialog.actions.addLocalProject': 'Lokales Projekt hinzufügen',
|
||||
'directoryExplorerDialog.actions.cloneRepository': 'Repository klonen',
|
||||
'directoryExplorerDialog.actions.cloneAndAdd': 'Klonen & hinzufügen',
|
||||
@@ -1629,6 +1630,7 @@ export const dict = {
|
||||
'directoryExplorerDialog.browse.parentDirectory': 'Übergeordnetes Verzeichnis',
|
||||
'directoryExplorerDialog.browse.addedBadge': 'Hinzugefügt',
|
||||
'directoryExplorerDialog.browse.quickAdd': 'Hinzufügen',
|
||||
'directoryExplorerDialog.browse.selectForAdd': 'Zum Hinzufügen auswählen',
|
||||
'directoryExplorerDialog.footer.navigate': 'Navigieren',
|
||||
'directoryExplorerDialog.footer.select': 'Auswählen',
|
||||
'directoryExplorerDialog.footer.add': 'Hinzufügen',
|
||||
|
||||
@@ -1813,6 +1813,7 @@ export const dict = {
|
||||
'directoryExplorerDialog.actions.openInFinder': 'Open in Finder',
|
||||
'directoryExplorerDialog.actions.adding': 'Adding...',
|
||||
'directoryExplorerDialog.actions.addProject': 'Add project',
|
||||
'directoryExplorerDialog.actions.addSelected': 'Add selected',
|
||||
'directoryExplorerDialog.actions.addLocalProject': 'Add local project',
|
||||
'directoryExplorerDialog.actions.cloneRepository': 'Clone repository',
|
||||
'directoryExplorerDialog.actions.cloneAndAdd': 'Clone & add',
|
||||
@@ -1830,6 +1831,7 @@ export const dict = {
|
||||
'directoryExplorerDialog.browse.parentDirectory': 'Parent directory',
|
||||
'directoryExplorerDialog.browse.addedBadge': 'Added',
|
||||
'directoryExplorerDialog.browse.quickAdd': 'Add',
|
||||
'directoryExplorerDialog.browse.selectForAdd': 'Select for add',
|
||||
'directoryExplorerDialog.footer.navigate': 'Navigate',
|
||||
'directoryExplorerDialog.footer.select': 'Select',
|
||||
'directoryExplorerDialog.footer.add': 'Add',
|
||||
|
||||
@@ -1791,6 +1791,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"directoryExplorerDialog.actions.openInFinder": "Abrir en Finder",
|
||||
"directoryExplorerDialog.actions.adding": "Añadiendo...",
|
||||
"directoryExplorerDialog.actions.addProject": "Añadir proyecto",
|
||||
"directoryExplorerDialog.actions.addSelected": "Añadir seleccionados",
|
||||
"directoryExplorerDialog.actions.addLocalProject": "Añadir proyecto local",
|
||||
"directoryExplorerDialog.actions.cloneRepository": "Clonar repositorio",
|
||||
"directoryExplorerDialog.actions.cloneAndAdd": "Clonar y añadir",
|
||||
@@ -1808,6 +1809,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"directoryExplorerDialog.browse.parentDirectory": "Directorio padre",
|
||||
"directoryExplorerDialog.browse.addedBadge": "Añadido",
|
||||
"directoryExplorerDialog.browse.quickAdd": "Añadir",
|
||||
"directoryExplorerDialog.browse.selectForAdd": "Seleccionar para añadir",
|
||||
"directoryExplorerDialog.footer.navigate": "Navegar",
|
||||
"directoryExplorerDialog.footer.select": "Seleccionar",
|
||||
"directoryExplorerDialog.footer.add": "Añadir",
|
||||
|
||||
@@ -1571,6 +1571,7 @@ export const dict = {
|
||||
'directoryExplorerDialog.actions.openInFinder': 'Ouvrir dans le Finder',
|
||||
'directoryExplorerDialog.actions.adding': 'Ajout...',
|
||||
'directoryExplorerDialog.actions.addProject': 'Ajouter un projet',
|
||||
'directoryExplorerDialog.actions.addSelected': 'Ajouter la sélection',
|
||||
'directoryExplorerDialog.actions.addLocalProject': 'Ajouter un projet local',
|
||||
'directoryExplorerDialog.actions.cloneRepository': 'Cloner le dépôt',
|
||||
'directoryExplorerDialog.actions.cloneAndAdd': 'Cloner et ajouter',
|
||||
@@ -1588,6 +1589,7 @@ export const dict = {
|
||||
'directoryExplorerDialog.browse.parentDirectory': 'Annuaire parent',
|
||||
'directoryExplorerDialog.browse.addedBadge': 'Ajouté',
|
||||
'directoryExplorerDialog.browse.quickAdd': 'Ajouter',
|
||||
'directoryExplorerDialog.browse.selectForAdd': 'Sélectionner pour ajouter',
|
||||
'directoryExplorerDialog.footer.navigate': 'Naviguer',
|
||||
'directoryExplorerDialog.footer.select': 'Sélectionner',
|
||||
'directoryExplorerDialog.footer.add': 'Ajouter',
|
||||
|
||||
@@ -1809,6 +1809,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.actions.openInFinder': 'Finderで開く',
|
||||
'directoryExplorerDialog.actions.adding': '追加中...',
|
||||
'directoryExplorerDialog.actions.addProject': 'プロジェクトを追加',
|
||||
'directoryExplorerDialog.actions.addSelected': '選択したものを追加',
|
||||
'directoryExplorerDialog.actions.addLocalProject': 'ローカルプロジェクトを追加',
|
||||
'directoryExplorerDialog.actions.cloneRepository': 'リポジトリをクローン',
|
||||
'directoryExplorerDialog.actions.cloneAndAdd': 'クローンして追加',
|
||||
@@ -1826,6 +1827,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.browse.parentDirectory': '親ディレクトリ',
|
||||
'directoryExplorerDialog.browse.addedBadge': '追加済み',
|
||||
'directoryExplorerDialog.browse.quickAdd': '追加',
|
||||
'directoryExplorerDialog.browse.selectForAdd': '追加するものを選択',
|
||||
'directoryExplorerDialog.footer.navigate': '移動',
|
||||
'directoryExplorerDialog.footer.select': '選択',
|
||||
'directoryExplorerDialog.footer.add': '追加',
|
||||
|
||||
@@ -1815,6 +1815,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.actions.openInFinder': 'Finder에서 열기',
|
||||
'directoryExplorerDialog.actions.adding': '추가 중…',
|
||||
'directoryExplorerDialog.actions.addProject': '프로젝트 추가',
|
||||
'directoryExplorerDialog.actions.addSelected': '선택 항목 추가',
|
||||
'directoryExplorerDialog.actions.addLocalProject': '로컬 프로젝트 추가',
|
||||
'directoryExplorerDialog.actions.cloneRepository': '저장소 복제',
|
||||
'directoryExplorerDialog.actions.cloneAndAdd': '복제하고 추가',
|
||||
@@ -1832,6 +1833,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.browse.parentDirectory': '상위 디렉터리',
|
||||
'directoryExplorerDialog.browse.addedBadge': '추가됨',
|
||||
'directoryExplorerDialog.browse.quickAdd': '추가',
|
||||
'directoryExplorerDialog.browse.selectForAdd': '추가할 항목 선택',
|
||||
'directoryExplorerDialog.footer.navigate': '탐색',
|
||||
'directoryExplorerDialog.footer.select': '선택',
|
||||
'directoryExplorerDialog.footer.add': '추가',
|
||||
|
||||
@@ -1880,6 +1880,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"diffView.scope.selectorAria": "Wybierz tryb zmian",
|
||||
'diffView.summary.changedFilesSingle': 'Zmieniono {count} plik',
|
||||
'directoryExplorerDialog.actions.addProject': 'Dodaj projekt',
|
||||
'directoryExplorerDialog.actions.addSelected': 'Dodaj zaznaczone',
|
||||
'directoryExplorerDialog.actions.addLocalProject': 'Dodaj projekt lokalny',
|
||||
'directoryExplorerDialog.actions.adding': 'Dodawanie...',
|
||||
'directoryExplorerDialog.actions.alreadyAdded': 'Już dodano',
|
||||
@@ -1891,6 +1892,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.actions.openingFinder': 'Otwieranie...',
|
||||
'directoryExplorerDialog.browse.addedBadge': 'Dodano',
|
||||
'directoryExplorerDialog.browse.quickAdd': 'Dodaj',
|
||||
'directoryExplorerDialog.browse.selectForAdd': 'Zaznacz do dodania',
|
||||
'directoryExplorerDialog.browse.directories': 'Katalogi',
|
||||
'directoryExplorerDialog.browse.empty': 'Brak pasujących katalogów.',
|
||||
'directoryExplorerDialog.browse.permissionDenied': 'OpenChamber potrzebuje dostępu do tego folderu.',
|
||||
|
||||
@@ -1791,6 +1791,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"directoryExplorerDialog.actions.openInFinder": "Abrir no Finder",
|
||||
"directoryExplorerDialog.actions.adding": "Adicionando...",
|
||||
"directoryExplorerDialog.actions.addProject": "Adicionar projeto",
|
||||
"directoryExplorerDialog.actions.addSelected": "Adicionar selecionados",
|
||||
"directoryExplorerDialog.actions.addLocalProject": "Adicionar projeto local",
|
||||
"directoryExplorerDialog.actions.cloneRepository": "Clonar repositório",
|
||||
"directoryExplorerDialog.actions.cloneAndAdd": "Clonar e adicionar",
|
||||
@@ -1808,6 +1809,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"directoryExplorerDialog.browse.parentDirectory": "Diretório pai",
|
||||
"directoryExplorerDialog.browse.addedBadge": "Adicionado",
|
||||
"directoryExplorerDialog.browse.quickAdd": "Adicionar",
|
||||
"directoryExplorerDialog.browse.selectForAdd": "Selecionar para adicionar",
|
||||
"directoryExplorerDialog.footer.navigate": "Navegar",
|
||||
"directoryExplorerDialog.footer.select": "Selecionar",
|
||||
"directoryExplorerDialog.footer.add": "Adicionar",
|
||||
|
||||
@@ -1791,6 +1791,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"directoryExplorerDialog.actions.openInFinder": "Відкрити у Finder",
|
||||
"directoryExplorerDialog.actions.adding": "Додавання...",
|
||||
"directoryExplorerDialog.actions.addProject": "Додати проєкт",
|
||||
"directoryExplorerDialog.actions.addSelected": "Додати вибрані",
|
||||
"directoryExplorerDialog.actions.addLocalProject": "Додати локальний проєкт",
|
||||
"directoryExplorerDialog.actions.cloneRepository": "Клонувати репозиторій",
|
||||
"directoryExplorerDialog.actions.cloneAndAdd": "Клонувати й додати",
|
||||
@@ -1808,6 +1809,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
"directoryExplorerDialog.browse.parentDirectory": "Батьківський каталог",
|
||||
"directoryExplorerDialog.browse.addedBadge": "Додано",
|
||||
"directoryExplorerDialog.browse.quickAdd": "Додати",
|
||||
"directoryExplorerDialog.browse.selectForAdd": "Вибрати для додавання",
|
||||
"directoryExplorerDialog.footer.navigate": "Навігація",
|
||||
"directoryExplorerDialog.footer.select": "Вибрати",
|
||||
"directoryExplorerDialog.footer.add": "Додати",
|
||||
|
||||
@@ -1779,6 +1779,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.actions.openInFinder': '在 Finder 中打开',
|
||||
'directoryExplorerDialog.actions.adding': '添加中...',
|
||||
'directoryExplorerDialog.actions.addProject': '添加项目',
|
||||
'directoryExplorerDialog.actions.addSelected': '添加所选项目',
|
||||
'directoryExplorerDialog.actions.addLocalProject': '添加本地项目',
|
||||
'directoryExplorerDialog.actions.cloneRepository': '克隆仓库',
|
||||
'directoryExplorerDialog.actions.cloneAndAdd': '克隆并添加',
|
||||
@@ -1796,6 +1797,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.browse.parentDirectory': '上级目录',
|
||||
'directoryExplorerDialog.browse.addedBadge': '已添加',
|
||||
'directoryExplorerDialog.browse.quickAdd': '添加',
|
||||
'directoryExplorerDialog.browse.selectForAdd': '选择以添加',
|
||||
'directoryExplorerDialog.footer.navigate': '导航',
|
||||
'directoryExplorerDialog.footer.select': '选择',
|
||||
'directoryExplorerDialog.footer.add': '添加',
|
||||
|
||||
@@ -1783,6 +1783,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.actions.openInFinder': '在 Finder 中開啟',
|
||||
'directoryExplorerDialog.actions.adding': '新增中...',
|
||||
'directoryExplorerDialog.actions.addProject': '新增專案',
|
||||
'directoryExplorerDialog.actions.addSelected': '新增所選項目',
|
||||
'directoryExplorerDialog.actions.addLocalProject': '新增本地專案',
|
||||
'directoryExplorerDialog.actions.cloneRepository': '複製儲存庫',
|
||||
'directoryExplorerDialog.actions.cloneAndAdd': '複製並新增',
|
||||
@@ -1800,6 +1801,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'directoryExplorerDialog.browse.parentDirectory': '上層目錄',
|
||||
'directoryExplorerDialog.browse.addedBadge': '已新增',
|
||||
'directoryExplorerDialog.browse.quickAdd': '添加',
|
||||
'directoryExplorerDialog.browse.selectForAdd': '選取以新增',
|
||||
'directoryExplorerDialog.footer.navigate': '導覽',
|
||||
'directoryExplorerDialog.footer.select': '選擇',
|
||||
'directoryExplorerDialog.footer.add': '新增',
|
||||
|
||||
Reference in New Issue
Block a user