-
Notifications
You must be signed in to change notification settings - Fork 460
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix Fullscreen mode support in ViewerOverlay #9596
Conversation
Signed-off-by: Grigorii K. Shartsev <[email protected]>
/backport to stable27 |
Tested in a call with and without participants in normal and Fullscreen modes |
Work when:
Does not work when:
|
Yes. But this is not related to the viewer overlay. It didn't work even without overlay, because the viewer is moved only once on opening. Do you prefer to fix this problem in this PR together with the overlay bug? |
Hmm, Portal also doesn't react to the target selector update. So a little bit related. |
Signed-off-by: Grigorii K. Shartsev <[email protected]>
A new commit adds support to the fullscreen mode toggle after overlay opening. But it still requires a fix for the same issue with the viewer. |
Signed-off-by: Joas Schilling <[email protected]>
☑️ Resolves
🖼️ Screenshots
🚧 Tasks
In the Fullscreen mode, Talk Vue app (
#content-vue
) is a top layer element. It is not possible to display any other elements outside the Talk app on top of the top layer using CSS.Both Viewer and ViewerOverlayCallView are rendered outside the Talk app and had this problem. With Viewer it is solved now by a
fixme
hack with manual moving a DOM element with Viewer to the Talk app.This PR fixes this problem in a similar way, in a fullscreen mode
Teleport
is used to move the ViewerOverlay not to the body, but to the Talk app (#content-vue
).A do not like this solution. Formally this is not correct to use Portal/Teleport to move something inside the Vue app. It should only be used to teleport something outside the app and Vue app content should never be mutated directly without Vue and its Virtual DOM.
Alternative solutions could be:
#content-vue
as Talk Vue app, so its parent could be in the Fullscreen allowing to render new elements there#content-vue
not a vue app or changes the Talk app server-side template. I'm afraid, it could break many things. I'd consider doing something like these in techdept later.So I haven't found any better solution :(
🏁 Checklist
docs/
has been updated or is not required