mirror of
https://github.com/photoprism/photoprism.git
synced 2026-03-02 22:57:18 -05:00
UX: Improve VCombobox menu rendering in dialogs #2437
Labels
No labels
ai
android
api
auth
awesome
bug
bug
ci
cli
config
database
declined
deprecated
docker
docs 📚
documents
duplicate
easy
enhancement
enhancement
enhancement
epic
faces
feedback wanted
frontend
hacktoberfest
help wanted
idea
in-progress
incomplete
index
invalid
ios
labels
live
live
low-priority
macos
member-feature
metadata
mobile
nas
needs-analysis
no-coding-required
no-coding-required
observability
performance
places
please-test
plus-feature
priority
pro-feature
question
raspberry-pi
raw
released
released
released
research
resolved
security
sharing
tested
tests
third-party-issue
thumbnails
upgrade
upstream-issue
ux
vector
video
waiting
won't fix
won't fix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/photoprism#2437
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @lastzero on GitHub (Nov 10, 2025).
Originally assigned to: @graciousgrey, @omerdduran on GitHub.
As a developer, I would like to adjust the
VComboboxmenu properties so that theVMenurenders inside an existing dialog overlay rather than being teleported to the root overlay container..v-menu, which is created by the.v-comboboxcomponent, is rendered in a dedicated.v-overlaycontainer when focused. This is not a problem on regular pages like/library/people/newi.e. without a focus trap.common/view.jsso that.v-menuworks even when rendered outside the active dialog (since the dialog loses focus whenever the menu appears in a new.v-overlaycontainer, which the focus trap would usually prevent):github.com/photoprism/photoprism@05e4fdf67c/frontend/src/common/view.js (L737-L753).v-menuthat lists the names available for the.v-comboboxwould be rendered inside the current.v-overlaywhen used in a dialog component, such as the photo edit dialog:github.com/photoprism/photoprism@05e4fdf67c/frontend/src/component/photo/edit/people.vue (L75-L96)This generally shouldn't be a big issue—but getting it right requires experimenting with the available
VComboboxandVMenuproperties, e.g.,activator,attach,contained,target,scrim, andz-index:Bonus: It would be great if this also solved the positioning issues of the menu on mobile devices. This is likely a result of the menu being attached to a separate overlay container.
Testing: At a minimum, the changes must be tested and proven to be compatible with Google Chrome, Chromium, Firefox, and Safari on desktop and mobile devices running iOS/Android.
Documentation: Changes should be documented with inline code comments and, if needed, in
frontend/src/common/README.mdto align the View Helper Guidelines with the updated implementation.Related Issues
@lastzero commented on GitHub (Nov 11, 2025):
Note that the search input element in the location selector dialog also needs to be fixed:
The list that opens appears to be rendered in a dedicated
.v-overlaycontainer, and the focus trap now prevents that.@lastzero commented on GitHub (Nov 11, 2025):
@omerdduran @graciousgrey Be sure to check all dialogs for components like
<v-autocomplete>,<v-menu>, and<v-combobox>that might render and/or focus outside their dialog container/overlay. Thank you! 🤗@lastzero commented on GitHub (Nov 12, 2025):
@omerdduran Note that I mainly added the background scrim (
scrim: true) to ensure only one name menu is open at the same time. However, that is not quite ideal in the Photo Edit Dialog, especially if we want to render theVMenuwithcontained: truei.e. inside the dialog overlay:github.com/photoprism/photoprism@b8bdd707d6/frontend/src/component/photo/edit/people.vue (L142-L158)From what I understand, the main issue with open and opening name menus could have been
openOnClick: true, which we might not need when we alreadyopenOnFocus: true:openOnClick: truealso completely broke the menu in Firefox. Since the default is true incomponent/defaults.js, keep in in mind that you need to explicitly disabled if needed (the defaults are meant for the regular action menu e.g. in page toolbars, although we might ultimately also not needopenOnClickthere - to be investigated on mobile and desktop browsers):github.com/photoprism/photoprism@b8bdd707d6/frontend/src/component/defaults.js (L86-L100)👉️ I suggested testing different menu settings in the Photo Edit Dialog one more time, with
scrim: falseandopenOnClick: false, to see if that improves the user experience on mobile devices without breaking functionality on desktop browsers like Chrome and Firefox. Also, try rendering the menu inside the dialog's People tab, e.g. in combination with a higherzIndexand/or a customattachorcontainedsetting.