Conversation
Notifications sit at z-index 10300, far above the modal stack, so the toast reporting a partial bulk operation stayed lit and clickable on top of the modal its own link had opened. It now drops below the backdrop while that modal is shown; notifications keep covering every other backdrop. Co-Authored-By: Claude <noreply@anthropic.com>
albozek
approved these changes
Sep 14, 2026
Lowering the notifications container put every visible notification behind the backdrop, and a single notification cannot be lowered on its own: the container is position: fixed, so it establishes a stacking context its children cannot leave. The notification carrying the link is marked when it is created and, while that modal is shown, is covered with the backdrop's own colour and stops taking pointer events; the other notifications are untouched. Co-Authored-By: Claude <noreply@anthropic.com>
It belongs with the modal it reacts to rather than with the notifications container, next to the other modal partials. Co-Authored-By: Claude <noreply@anthropic.com>
GrabowskiM
approved these changes
Sep 14, 2026
OstafinL
approved these changes
Sep 15, 2026
dew326
approved these changes
Sep 17, 2026
The design team settled the rule: notifications already on screen when a modal opens go behind its backdrop, and notifications raised afterwards stay above it. That needs real stacking rather than an overlay painted on one notification. Co-Authored-By: Claude <noreply@anthropic.com>
Notifications that are already on screen when a modal opens move into a second container placed below the backdrop, and return when the last modal closes; anything raised while the modal is open is appended to the original container and stays above it. They cannot be ordered within one container, because it is position: fixed and so establishes a stacking context its children cannot leave. The second container is offset by the height of the first one, so the two keep reading as a single column. Bootstrap's own events drive it, which also covers the React popups built on them; the backdrop leaving the document is used as the restore trigger as well, because a popup unmounted by React dispatches its hidden event on a detached node. Co-Authored-By: Claude <noreply@anthropic.com>
|
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:
Per the design decision: notifications already on screen when a modal opens go below its backdrop, notifications raised after it opened stay above it, and everything returns to normal once the last modal closes.
They cannot be ordered within one container —
.ibexa-notifications-containerisposition: fixed, which establishes a stacking context its children cannot leave, so a child'sz-indexonly orders it against its siblings. Hence a second container below the backdrop, with the toasts moved between the two. The second one is offset by the height of the first, so the two keep reading as a single column with the usual 16px rhythm.Driven by Bootstrap's
show.bs.modal/hidden.bs.modal, which also covers the ReactPopupand Page Builder'sConfigPopupsince both are built on Bootstrap's modal. Restore is additionally triggered by the backdrop leaving the document, because a popup that React unmounts dispatches itshiddenevent on a detached node that never reachesdocument..modal.showdecides when the last modal is gone —body.modal-openis written by several sources without reference counting and is cleared by whichever nested modal closes first.Out of scope: the Universal Discovery Widget, which is a fixed overlay with its own scroll-lock class and no modal events — worth a follow-up if the same rule should apply there.
For QA:
Content → select sub-items → Move → pick the same folder. In the warning toast click "Click here for more information.": the modal opens and that toast drops behind the backdrop. Raise another notification while the modal is open (any second bulk action) — it must appear above the modal, below the dimmed one, with the two forming one column. Close the modal: everything returns to normal. Repeat with the bulk-delete confirmation popup, and with a modal opened on top of another one — the notifications only come back when the last one is closed.
Documentation: