Folders one level at a time on a phone, and targets a thumb can hit
Three things the mobile interface got wrong, all of them measurable. The folder tree spent its width on depth. Four levels down, the 16px indent steps and the 18px twisty left a folder 85px of a 300px drawer to print its name in, and the twisty had walked far enough right that hitting it was luck -- a miss landed on the row, which is a link, so the wrong tap also cost a navigation. Under 768px the tree is now a drill-down: one level at a time, no indent, a back row above it, and a chevron at the right edge that is the same size in the same place on every row. Tapping the row still opens the folder; only the chevron changes what the list shows. The tree is untouched above 768px, where a wide sidebar can afford the indent and where dragging a folder onto another folder -- still the only way to reparent one -- needs both of them on screen at once. Every control in the top bar was under the 44px a fingertip covers: the icons at 36, the search filter at 30, the row menu at 24, and the hamburger 6px from the bezel in the corner a thumb is worst at. They keep the size they draw at and gain a transparent hit area, since growing the boxes would reflow a bar with no room to give; rows grow for real, because a 44px target inside a 36px row reaches into its neighbours. The one exception is the row menu, held to 36px wide: at a full 44 it overlapped the drill chevron by 4px, so its right edge silently drilled instead. Pinch was dead on the message list. `.msg-row` sets `touch-action: pan-y` to feed the swipe gesture the horizontal movement the browser is not using -- but naming any value drops every gesture not named, zoom included. It worked on an open message and died on the list, which reads as the zoom being broken at random rather than as a rule about rows. `pan-y pinch-zoom` keeps the swipe and gives the zoom back.
This commit is contained in:
@@ -229,6 +229,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "Ordneroptionen",
|
||||
"New folder": "Neuer Ordner",
|
||||
"New subfolder": "Neuer Unterordner",
|
||||
"Open subfolders of {name}": "Unterordner von {name} öffnen",
|
||||
"Delete folder": "Ordner löschen",
|
||||
"No matching folders": "Keine passenden Ordner",
|
||||
"No subfolders here.": "Hier gibt es keine Unterordner.",
|
||||
|
||||
@@ -221,6 +221,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "Opciones de la carpeta",
|
||||
"New folder": "Carpeta nueva",
|
||||
"New subfolder": "Subcarpeta nueva",
|
||||
"Open subfolders of {name}": "Abrir las subcarpetas de {name}",
|
||||
"Delete folder": "Eliminar la carpeta",
|
||||
"No matching folders": "Ninguna carpeta coincide",
|
||||
"No subfolders here.": "Aquí no hay subcarpetas.",
|
||||
|
||||
@@ -226,6 +226,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "Options du dossier",
|
||||
"New folder": "Nouveau dossier",
|
||||
"New subfolder": "Nouveau sous-dossier",
|
||||
"Open subfolders of {name}": "Ouvrir les sous-dossiers de {name}",
|
||||
"Delete folder": "Supprimer le dossier",
|
||||
"No matching folders": "Aucun dossier correspondant",
|
||||
"No subfolders here.": "Aucun sous-dossier ici.",
|
||||
|
||||
@@ -220,6 +220,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "フォルダーのオプション",
|
||||
"New folder": "新しいフォルダー",
|
||||
"New subfolder": "新しいサブフォルダー",
|
||||
"Open subfolders of {name}": "{name} のサブフォルダーを開く",
|
||||
"Delete folder": "フォルダーを削除",
|
||||
"No matching folders": "該当するフォルダーはありません",
|
||||
"No subfolders here.": "サブフォルダーはありません。",
|
||||
|
||||
@@ -217,6 +217,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "Mapopties",
|
||||
"New folder": "Nieuwe map",
|
||||
"New subfolder": "Nieuwe submap",
|
||||
"Open subfolders of {name}": "Submappen van {name} openen",
|
||||
"Delete folder": "Map verwijderen",
|
||||
"No matching folders": "Geen overeenkomende mappen",
|
||||
"No subfolders here.": "Hier zijn geen submappen.",
|
||||
|
||||
@@ -224,6 +224,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "Opções da pasta",
|
||||
"New folder": "Nova pasta",
|
||||
"New subfolder": "Nova subpasta",
|
||||
"Open subfolders of {name}": "Abrir as subpastas de {name}",
|
||||
"Delete folder": "Excluir a pasta",
|
||||
"No matching folders": "Nenhuma pasta corresponde",
|
||||
"No subfolders here.": "Não há subpastas aqui.",
|
||||
|
||||
@@ -223,6 +223,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "Параметры папки",
|
||||
"New folder": "Новая папка",
|
||||
"New subfolder": "Новая вложенная папка",
|
||||
"Open subfolders of {name}": "Открыть вложенные папки «{name}»",
|
||||
"Delete folder": "Удалить папку",
|
||||
"No matching folders": "Подходящих папок нет",
|
||||
"No subfolders here.": "Здесь нет вложенных папок.",
|
||||
|
||||
@@ -217,6 +217,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "Параметри теки",
|
||||
"New folder": "Нова тека",
|
||||
"New subfolder": "Нова вкладена тека",
|
||||
"Open subfolders of {name}": "Відкрити вкладені теки «{name}»",
|
||||
"Delete folder": "Видалити теку",
|
||||
"No matching folders": "Відповідних тек немає",
|
||||
"No subfolders here.": "Тут немає вкладених тек.",
|
||||
|
||||
@@ -219,6 +219,7 @@ export const catalog: Catalog = {
|
||||
"Folder options": "文件夹选项",
|
||||
"New folder": "新建文件夹",
|
||||
"New subfolder": "新建子文件夹",
|
||||
"Open subfolders of {name}": "打开{name}的子文件夹",
|
||||
"Delete folder": "删除文件夹",
|
||||
"No matching folders": "没有匹配的文件夹",
|
||||
"No subfolders here.": "这里没有子文件夹。",
|
||||
|
||||
Reference in New Issue
Block a user