From 82d24a8febf5c8a44565dd77ff9aca0dafea3774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sat, 29 Aug 2026 09:43:28 +0100 Subject: [PATCH] the download card is a column, so the title stops escaping it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the thumbnail, the title and the Download button shared one row. a long title — which on YouTube is most of them — competed with the button for the width and won, running past the card's own border. `truncate` was already on the title and could not help: it only bites when the box is actually bounded, and a flex sibling that is free to be pushed out means it never is. adding more min-w-0 would have been guessing at that; splitting the row removes the competition. so the card is a column now: thumbnail and text on the top row, the action on its own below. the title has the whole width to truncate against, and the button has a row it cannot be squeezed out of — which also means it stays put as titles change length, rather than the layout shifting per result. Co-Authored-By: Claude Opus 5 Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043 --- .../components/VideoDownloadDialog.tsx | 83 ++++++++++--------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/src/workspaces/officerdev/src/apps/FileBrowser/FileBrowserApp/components/VideoDownloadDialog.tsx b/src/workspaces/officerdev/src/apps/FileBrowser/FileBrowserApp/components/VideoDownloadDialog.tsx index e3474894..4b98e687 100644 --- a/src/workspaces/officerdev/src/apps/FileBrowser/FileBrowserApp/components/VideoDownloadDialog.tsx +++ b/src/workspaces/officerdev/src/apps/FileBrowser/FileBrowserApp/components/VideoDownloadDialog.tsx @@ -252,48 +252,57 @@ export const VideoDownloadDialog = ({ fileBrowserManager }: VideoDownloadDialogP {entries.map((e, i) => (
-
- {e.status === 'loading' ? ( - - ) : e.status === 'error' ? ( - - ) : e.thumbnail && !audioOnly ? ( - - ) : ( - - )} -
+
+
+ {e.status === 'loading' ? ( + + ) : e.status === 'error' ? ( + + ) : e.thumbnail && !audioOnly ? ( + + ) : ( + + )} +
-
- {e.status === 'loading' ? ( -
-
-
-
- ) : e.status === 'error' ? ( - <> -

- {t('videoDownload.couldNotFetch')} -

-

{e.error || e.url}

- - ) : ( - <> -

- {e.title || e.url} -

-

- {[e.uploader, fmtDuration(e.duration)].filter(Boolean).join(' · ')} -

- {e.dl === 'error' &&

{e.dlError}

} - - )} +
+ {e.status === 'loading' ? ( +
+
+
+
+ ) : e.status === 'error' ? ( + <> +

+ {t('videoDownload.couldNotFetch')} +

+

{e.error || e.url}

+ + ) : ( + <> +

+ {e.title || e.url} +

+

+ {[e.uploader, fmtDuration(e.duration)].filter(Boolean).join(' · ')} +

+ {e.dl === 'error' &&

{e.dlError}

} + + )} +
{e.status === 'ready' && ( -
+
{e.dl === 'done' ? ( {t('videoDownload.saved')}