Repository navigation
fix: improve mobile usability of tooltips, switches, editor menus and admin tables - #3550
Merged
Merged
Conversation
This was referenced Oct 3, 2026
JammingBen
reviewed
Oct 6, 2026
Member
Author
…implify its overflow calculation
…ere touch devices don't have them
…ll screen on phones
…ainer via scrollTarget
AlexAndBear
force-pushed
the
fix/mobile-small-code-fixes
branch
from
October 6, 2026 11:27
aeaec26 to
11291a1
Compare
JammingBen
approved these changes
Oct 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
Second round of mobile fixes from #3542: issues that need only small code changes.
OcTooltip.ts: remember whether the last input was touch (pointerdown.pointerType) and don't show tooltips after touch. The tooltip used to appear when a menu closed and focus went back to its trigger. Keyboard input re-enables tooltips, mouse hover is unchangedLocationPickerModal.vue,FilePickerModal.vue,SaveAsModal.vue: on phones (max-sm) the modals are full screen (h-dvh, no max width/height, no rounded corners or border) and the embedded UI fills the whole body instead of70vh. The embedded UI keeps its hamburger, search and "+" button, they are needed to switch spaces and create a target folder. The file picker and save as modals no longer hide their title, so all pickers show title and close button like Copy/Move to (on desktop too). That the "+" button covers the last row is fixed by G3 in #3549ViewOptions.vue: on mobile the persisted tile size defaults to the smallest size (1, two columns). A size chosen by the user is still keptGenericSpace.vue): up to the tablet breakpoint (960px, where the "New" button is replaced by the floating "+" button) the hint is 'Use the "+" button to add files'. The breakpoint can't tell a touch tablet from a narrow desktop window, so drag & drop isn't mentioned there. Empty spaces overview (Projects.vue): "+" instead of "New" up to the tablet breakpoint (not in the original finding, same problem). Public file drop (FilesDrop.vue): phones get 'Tap the button below to select files or folders.' Desktop texts are unchangedImageCropper.vue: on mobile (isMobile) the hint reads "Pinch to zoom, drag to move", desktop keeps the keyboard hintOcEmojiPicker.vue: center the picker (flex justify-center), the fixedmin-w-[352px]stays. The desktop modal width is handled onmainalready (EmojiPickerModal.vuesizes the modal to the picker). emoji-mart'sdynamicWidthwas tried but its rows don't account for the padding and overflow the pickerTextEditorTableBubbleMenu.vue: the menu is centered in the visible editor area instead of under the middle of the whole table, which is off-screen for wide tables. It follows scrolling of the editor content (it only listened to window scroll before), and when it's pinned to the bottom of the viewport it moves above the active cell instead of covering it.shiftkeeps it inside the viewport, and it's positioned again inonShowonce its actions have renderedTextEditorToolbar.vue, the bubble menu keeps its pill shape: the drop was limited to the width of the toolbar row (234px at 360px), now only the viewport limits it (w-max, so the measured width doesn't depend on its previous position). Groups no longer wrap internally, so nothing overflows the pill, and the separator in front of a group that starts a wrapped row is hidden. The open menu is positioned again when the toolbar resizes or other actions move into it; before, it stayed at its old position and ended up off-screen when the window got narrower (desktop too). The calculation which actions fit into the toolbar is simplified into one pass over the action widthsTextEditorToolbar.vue: close the overflow drop when a modal opens (e.g. Insert image → Image from URL)text-editor.cssreserved6rem(centered, so 3rem on each side) for the hover controls whenever the container is narrower than 840px. Now only the left side is reserved, and only as much as the shown controls need:TextEditorContent.vuesets--text-editor-handle-width(desktop: plus button and drag handle, 3rem; mobile: plus button only, 1.5rem). The table of contents toggle overlays the content (sticky, absolutely positioned), so no space is kept free for it. Text width at 412px: 282px → 345px of 394pxCodeBlockComponent.vue: languages that aren't in the list (aliases likejs) are added as an option, so the select isn't empty. The overlap part of E8 is in #3549width: 'expand', wrap: 'truncate', actionswidth: 'shrink', wrap: 'nowrap'Desktop (1440×900, compared to
main): the groups table is unchanged. Hovering still shows tooltips. Intended differences: in the Users and Spaces tables the name column now truncates like in the files table, so the column widths shift slightly. The table bubble menu is now centered in the visible editor area. Desktop keeps tile size 2 as default. In narrow editor containers (< 840px) the text no longer keeps the unused 3rem on the right, the left side is unchanged.Related Issue
How Has This Been Tested?
pnpm vite), Playwright Chromium device emulation (Pixel 7 412px, Galaxy S8 360px) and desktop 1440×900main); mouse hover still shows the tooltippnpm check:typesand the tests of the touched packages passTypes of changes