Files
tnsu-approval-route/frontend/src/webparts/approvalAdmin/components/ui/ProgressOverlay.module.scss
T
gorbenko.pavel b94e6e60f5
Tests / frontend-test (pull_request) Successful in 1m31s
Tests / backend-test (pull_request) Successful in 1m38s
Модалки рендерятся порталом в body поверх шапки SharePoint
На живой странице оверлей модалки жил внутри канвы веб-части, чей
контекст наложения ниже шапки SharePoint: верх высокого окна (например,
«Новый шаг маршрута») уезжал под шапку. В workbench шапки нет, поэтому
там было незаметно. Теперь Modal и ConfirmDialog рендерят подложку через
ModalOverlay (портал в document.body) с z-index выше шапки; меню
выпадающих списков подняты над ним.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 09:41:53 +05:00

63 lines
1.3 KiB
SCSS

@import '../../../../styles/design-tokens';
// Ниже Modal.module.scss/.overlay (z-index 100000) — диалоги, которые может
// открыть сама длительная операция (например, разрешение конфликта), должны
// быть ПОВЕРХ этой подложки, а не под ней.
.overlay {
position: fixed;
inset: 0;
z-index: 250;
display: flex;
align-items: center;
justify-content: center;
background: rgba(10, 27, 48, .45);
}
.box {
min-width: 320px;
max-width: 420px;
padding: 24px 26px;
border-radius: $r-lg;
background: #fff;
box-shadow: $sh-modal;
text-align: center;
}
.label {
font-size: 13.5px;
font-weight: 600;
color: $gray-900;
}
.counter {
margin-top: 4px;
font-size: 12px;
color: $gray-500;
}
.track {
margin-top: 14px;
height: 6px;
border-radius: $r-full;
background: $gray-200;
overflow: hidden;
}
.fill {
height: 100%;
border-radius: $r-full;
background: $grad-gold;
transition: width .2s;
}
// Общее число шагов заранее неизвестно — бегущая полоса вместо доли.
.indeterminate {
width: 40%;
animation: slide 1.1s ease-in-out infinite;
}
@keyframes slide {
0% { transform: translateX(-100%); }
100% { transform: translateX(250%); }
}