Индикатор загрузки

Добрый день.
В своих приложениях я использую кастомный индикатор загрузки. Стили взял со следующей темы: https://forum.jmix.ru/t/otobrazhenie-spinnera/1333/2. Все прекрасно работает, но недавно нашел одну проблему. Если открыто модальное окно, и поверх него открывается еще одно, то стили к этим окнам не применяются. Индикатор загрузки отображается, но окна не блокируются и их прозрачность не меняется. Для остальной части экрана стили работают. У стандартного индикатора загрузки такая же проблема. Есть ли решение?

Добрый день.

У диалогов z-index: 10000, а в приведенных стилях, z-index для спиннера равен 100. Попробуйте поставить спиннеру z-index больше чем у диалогов.

Глеб

Я уже пробовал z-index менять на 10000. Не помогло.

А Вы пробовали задать больше 10000?

Пробовал. Не работает.

Не могли бы Вы приложить демо проект в котором проблема воспроизводится?

Demo.zip (94.8 КБ)
В окне редактирования пользователей добавил внизу кнопку для открытия нового окна с длительной загрузкой.

Добрый день.

Спасибо за демо проект. К сожалению, желаемое поведение не получится реализовать. Дело в том, что основной UI и диалоговые окна (а точнее все overlay/popup его части) находятся в параллельных HTML элементах

Screenshot 2024-05-14 at 13.57.48

т.к. Ваадин изначально такого не предполагал, их loading indicator носит чисто информационный характер. Поэтому, ни основной UI, ни overlay компоненты не знают, что сейчас UI немножко на “паузе”. В случае с основным UI, т.к. это соседний HTML элемент, то его удается блокировать с помощью CSS, что можно считать WA, т.к. стилями можно отключить только pointer-events, т.е. клики мышкой, клавиатурная навигация работать будет. Но, застилизовать таким образом произвольный элемент в дом дереве не получится.

Глеб

Добрый день.
Жаль. Спасибо, что разъяснили.

Решение проблемы:
.v-app:has(.v-loading-indicator:not([style*=“none”])) ~ .v-overlay-container .v-window-jmix-app-dialog-window {
.pointer-events: none;
.user-select: none;
.opacity: .5;
}

1 симпатия