refactor(sidebar): inline new-folder row, drop drag-to-blank creation (#999)

- Render the new-folder input as a temporary tree row at the creation
  location (file-explorer style): full-width input confirmed with Enter
  and canceled with Escape/blur; the parent folder auto-expands, and in
  list mode the row is inserted after the parent item
- Remove the drag-to-blank-area folder creation (drop-zone strip,
  sidebar-level drag handlers, performDragMoveWithState); dropping models
  onto folder nodes still moves them
- Update empty-state hints and locale keys accordingly
This commit is contained in:
Will Miao
2026-09-15 19:47:39 +08:00
parent 9734df15b4
commit cc8eedcff7
13 changed files with 258 additions and 551 deletions
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "Zielpfad für das Verschieben konnte nicht ermittelt werden.",
"moveUnsupported": "Verschieben wird für dieses Element nicht unterstützt.",
"createFolderHint": "Loslassen, um einen neuen Ordner zu erstellen",
"newFolderName": "Neuer Ordnername",
"folderNameHint": "Eingabetaste zum Bestätigen, Escape zum Abbrechen",
"emptyFolderName": "Bitte geben Sie einen Ordnernamen ein",
"invalidFolderName": "Ordnername enthält ungültige Zeichen",
"noDragState": "Kein ausstehender Ziehvorgang gefunden"
},
"empty": {
"noFolders": "Keine Ordner gefunden",
"dragHint": "Elemente hierher ziehen, um Ordner zu erstellen",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "Auf Updates in diesem Ordner prüfen",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "Unable to determine destination path for move.",
"moveUnsupported": "Move is not supported for this item.",
"createFolderHint": "Release to create new folder",
"newFolderName": "New folder name",
"folderNameHint": "Press Enter to confirm, Escape to cancel",
"emptyFolderName": "Please enter a folder name",
"invalidFolderName": "Folder name contains invalid characters",
"noDragState": "No pending drag operation found"
},
"empty": {
"noFolders": "No folders found",
"dragHint": "Drag items here to create folders",
"createHint": "Click the New Folder button above, or drag items here to create folders"
"createHint": "Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "Check for updates in this folder",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "No se puede determinar la ruta de destino para el movimiento.",
"moveUnsupported": "El movimiento no es compatible con este elemento.",
"createFolderHint": "Suelta para crear una nueva carpeta",
"newFolderName": "Nombre de la nueva carpeta",
"folderNameHint": "Presiona Enter para confirmar, Escape para cancelar",
"emptyFolderName": "Por favor, introduce un nombre de carpeta",
"invalidFolderName": "El nombre de la carpeta contiene caracteres no válidos",
"noDragState": "No se encontró ninguna operación de arrastre pendiente"
},
"empty": {
"noFolders": "No se encontraron carpetas",
"dragHint": "Arrastra elementos aquí para crear carpetas",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "Buscar actualizaciones en esta carpeta",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "Impossible de déterminer le chemin de destination pour le déplacement.",
"moveUnsupported": "Le déplacement n'est pas pris en charge pour cet élément.",
"createFolderHint": "Relâcher pour créer un nouveau dossier",
"newFolderName": "Nom du nouveau dossier",
"folderNameHint": "Appuyez sur Entrée pour confirmer, Échap pour annuler",
"emptyFolderName": "Veuillez saisir un nom de dossier",
"invalidFolderName": "Le nom du dossier contient des caractères invalides",
"noDragState": "Aucune opération de glissement en attente trouvée"
},
"empty": {
"noFolders": "Aucun dossier trouvé",
"dragHint": "Faites glisser des éléments ici pour créer des dossiers",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "Vérifier les mises à jour dans ce dossier",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "לא ניתן לקבוע את נתיב היעד להעברה.",
"moveUnsupported": "העברה אינה נתמכת עבור פריט זה.",
"createFolderHint": "שחרר כדי ליצור תיקייה חדשה",
"newFolderName": "שם תיקייה חדשה",
"folderNameHint": "הקש Enter לאישור, Escape לביטול",
"emptyFolderName": "אנא הזן שם תיקייה",
"invalidFolderName": "שם התיקייה מכיל תווים לא חוקיים",
"noDragState": "לא נמצאה פעולת גרירה ממתינה"
},
"empty": {
"noFolders": "לא נמצאו תיקיות",
"dragHint": "גרור פריטים לכאן כדי ליצור תיקיות",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "בדוק עדכונים בתיקייה זו",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "移動先のパスを特定できません。",
"moveUnsupported": "この項目の移動はサポートされていません。",
"createFolderHint": "放して新しいフォルダを作成",
"newFolderName": "新しいフォルダ名",
"folderNameHint": "Enterで確定、Escでキャンセル",
"emptyFolderName": "フォルダ名を入力してください",
"invalidFolderName": "フォルダ名に無効な文字が含まれています",
"noDragState": "保留中のドラッグ操作が見つかりません"
},
"empty": {
"noFolders": "フォルダが見つかりません",
"dragHint": "ここへアイテムをドラッグしてフォルダを作成します",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "このフォルダのアップデートを確認",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "이동할 대상 경로를 확인할 수 없습니다.",
"moveUnsupported": "이 항목은 이동을 지원하지 않습니다.",
"createFolderHint": "놓아서 새 폴더 만들기",
"newFolderName": "새 폴더 이름",
"folderNameHint": "Enter를 눌러 확인, Escape를 눌러 취소",
"emptyFolderName": "폴더 이름을 입력하세요",
"invalidFolderName": "폴더 이름에 잘못된 문자가 포함되어 있습니다",
"noDragState": "보류 중인 드래그 작업을 찾을 수 없습니다"
},
"empty": {
"noFolders": "폴더를 찾을 수 없습니다",
"dragHint": "항목을 여기로 드래그하여 폴더를 만듭니다",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "이 폴더의 업데이트 확인",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "Не удалось определить путь назначения для перемещения.",
"moveUnsupported": "Перемещение этого элемента не поддерживается.",
"createFolderHint": "Отпустите, чтобы создать новую папку",
"newFolderName": "Имя новой папки",
"folderNameHint": "Нажмите Enter для подтверждения, Escape для отмены",
"emptyFolderName": "Пожалуйста, введите имя папки",
"invalidFolderName": "Имя папки содержит недопустимые символы",
"noDragState": "Ожидающая операция перетаскивания не найдена"
},
"empty": {
"noFolders": "Папки не найдены",
"dragHint": "Перетащите элементы сюда, чтобы создать папки",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "Проверить обновления в этой папке",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "无法确定移动的目标路径。",
"moveUnsupported": "此条目不支持移动。",
"createFolderHint": "释放以创建新文件夹",
"newFolderName": "新文件夹名称",
"folderNameHint": "按 Enter 确认,Escape 取消",
"emptyFolderName": "请输入文件夹名称",
"invalidFolderName": "文件夹名称包含无效字符",
"noDragState": "未找到待处理的拖放操作"
},
"empty": {
"noFolders": "未找到文件夹",
"dragHint": "拖拽项目到此处以创建文件夹",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "检查此文件夹的更新",
+1 -4
View File
@@ -1266,17 +1266,14 @@
"dragDrop": {
"unableToResolveRoot": "無法確定移動的目標路徑。",
"moveUnsupported": "此項目不支援移動。",
"createFolderHint": "放開以建立新資料夾",
"newFolderName": "新資料夾名稱",
"folderNameHint": "按 Enter 確認,Escape 取消",
"emptyFolderName": "請輸入資料夾名稱",
"invalidFolderName": "資料夾名稱包含無效字元",
"noDragState": "未找到待處理的拖放操作"
},
"empty": {
"noFolders": "未找到資料夾",
"dragHint": "將項目拖到此處以建立資料夾",
"createHint": "[TODO: Translate] Click the New Folder button above, or drag items here to create folders"
"createHint": "[TODO: Translate] Click the New Folder button above to create folders"
},
"folderUpdateCheck": {
"label": "檢查此資料夾的更新",