* feat: enhance loading spinner with progress indication and add warning for unplaced vacation days * Update src/app/services/calendar-service.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/app/components/calendar-year/calendar-year.scss Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/app/components/user-input/user-input.html Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix setTimeout async anti-pattern in calendar-year component (#50) * Initial plan * fix: replace setTimeout async anti-pattern with queueMicrotask and void Co-authored-by: THoguet <61246905+THoguet@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: THoguet <61246905+THoguet@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
83 lines
1.2 KiB
SCSS
83 lines
1.2 KiB
SCSS
@use '@angular/material' as mat;
|
|
|
|
.calendar-year {
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
justify-content: space-evenly;
|
|
max-width: 65vw;
|
|
position: relative;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.calendar-year {
|
|
max-width: 100vw;
|
|
}
|
|
}
|
|
|
|
.loading-overlay {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background-color: rgba(255, 255, 255, 0.9);
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
border-radius: 4px;
|
|
z-index: 1000;
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
background-color: rgba(0, 0, 0, 0.7);
|
|
}
|
|
}
|
|
|
|
.loading-spinner {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 16px;
|
|
|
|
p {
|
|
font-size: 16px;
|
|
font-weight: 500;
|
|
color: #333;
|
|
margin: 0;
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
color: #ddd;
|
|
}
|
|
}
|
|
}
|
|
|
|
.spinner-container {
|
|
position: relative;
|
|
display: inline-block;
|
|
|
|
::ng-deep .mat-mdc-progress-spinner {
|
|
// Override Material spinner size
|
|
width: 100px;
|
|
height: 100px;
|
|
}
|
|
|
|
.spinner-text {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
color: #333;
|
|
pointer-events: none;
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
color: #ddd;
|
|
}
|
|
}
|
|
}
|
|
|
|
.card {
|
|
margin: 16px;
|
|
}
|