Добавил вкладку заявок

This commit is contained in:
dipatrik10
2026-06-02 16:07:30 +03:00
parent 6d9f6b7a42
commit 08b8607f05
11 changed files with 456 additions and 157 deletions

View File

@@ -385,6 +385,22 @@
align-items: end;
}
.department-workspace-control-card {
display: grid;
gap: 1rem;
}
.department-workspace-control-card .card-header-row {
margin-bottom: 0;
}
.department-workspace-filter-grid {
display: grid;
grid-template-columns: minmax(260px, 1.35fr) repeat(2, minmax(180px, 0.65fr));
gap: 1rem;
align-items: end;
}
.schedule-view-metrics,
.department-workspace-grid {
display: grid;
@@ -397,7 +413,63 @@
}
.department-workspace-grid-wide {
grid-template-columns: repeat(4, minmax(220px, 1fr));
grid-template-columns: repeat(12, minmax(0, 1fr));
align-items: stretch;
}
.department-workspace-actions-grid {
gap: 1rem;
}
.department-subject-import-card {
grid-column: span 7;
grid-row: span 2;
}
.department-teacher-assign-card {
grid-column: span 5;
}
.department-teacher-request-card {
grid-column: span 5;
}
.department-teachers-card {
grid-column: 1 / -1;
}
.department-subject-import-card,
.department-teacher-assign-card,
.department-teacher-request-card,
.department-teachers-card,
.department-workspace-table-card {
min-width: 0;
}
.department-subject-import-card,
.department-teacher-assign-card,
.department-teacher-request-card {
display: flex;
flex-direction: column;
}
.department-subject-import-card .stack-form,
.department-teacher-assign-card .stack-form,
.department-teacher-request-card .stack-form {
display: flex;
flex-direction: column;
flex: 1;
}
.department-subject-import-card .subject-import-slots-panel {
flex: 1;
}
.department-subject-import-card .stack-form > .btn,
.department-teacher-assign-card .stack-form > .btn,
.department-teacher-request-card .stack-form > .btn {
align-self: flex-start;
margin-top: auto;
}
.teacher-request-actions {
@@ -407,6 +479,12 @@
min-width: 180px;
}
.teacher-request-toolbar {
display: flex;
align-items: center;
gap: 0.75rem;
}
#teacher-requests-tbody input,
#teacher-requests-tbody select {
min-width: 150px;
@@ -427,7 +505,6 @@
box-shadow: 0 0 0 3px var(--accent-glow);
}
.department-subject-import-card,
.department-teachers-card {
display: flex;
flex-direction: column;
@@ -575,7 +652,7 @@
.subject-import-row {
display: grid;
grid-template-columns: 160px minmax(260px, 1fr) auto;
grid-template-columns: minmax(120px, 0.7fr) minmax(240px, 1.3fr) auto;
column-gap: 0.65rem;
row-gap: 0.75rem;
align-items: end;
@@ -722,6 +799,10 @@
min-width: 0;
}
.subject-import-row .btn {
min-height: 42px;
}
.subject-import-row .form-group label {
margin-bottom: 0.45rem;
}
@@ -731,6 +812,14 @@
grid-template-columns: 1fr;
}
.department-subject-import-card,
.department-teacher-assign-card,
.department-teacher-request-card,
.department-teachers-card {
grid-column: 1;
grid-row: auto;
}
.academic-year-semesters {
grid-template-columns: 1fr;
}
@@ -740,6 +829,40 @@
}
}
@media (max-width: 1280px) and (min-width: 901px) {
.department-workspace-grid-wide {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.department-subject-import-card,
.department-teachers-card {
grid-column: 1 / -1;
grid-row: auto;
}
.department-teacher-assign-card,
.department-teacher-request-card {
grid-column: span 1;
}
}
@media (max-width: 700px) {
.department-workspace-filter-grid {
grid-template-columns: 1fr;
}
.subject-import-row {
grid-template-columns: 1fr;
}
.department-subject-import-card .stack-form > .btn,
.department-teacher-assign-card .stack-form > .btn,
.department-teacher-request-card .stack-form > .btn,
.subject-import-row .btn {
width: 100%;
}
}
.academic-year-semester-meta {
display: grid;
gap: 0.2rem;
@@ -1869,7 +1992,7 @@
@media (max-width: 1350px) {
.schedule-view-filter-grid,
.schedule-view-metrics,
.department-workspace-grid {
.department-workspace-grid:not(.department-workspace-grid-wide) {
grid-template-columns: 1fr;
}

View File

@@ -104,6 +104,7 @@
}
.nav-item svg {
flex: 0 0 auto;
transition: transform var(--transition);
}
@@ -112,6 +113,38 @@
transform: scale(1.15) rotate(-5deg);
}
.nav-item span:not(.nav-badge) {
min-width: 0;
}
.nav-badge {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 22px;
height: 22px;
margin-left: auto;
padding: 0 0.45rem;
border: 1px solid rgba(248, 113, 113, 0.28);
border-radius: 999px;
background: rgba(248, 113, 113, 0.16);
color: #fecaca;
font-size: 0.72rem;
font-weight: 800;
line-height: 1;
}
.nav-badge[hidden],
.topbar-request-badge[hidden] {
display: none !important;
}
[data-theme="light"] .nav-badge {
background: #fee2e2;
border-color: #fecaca;
color: #b91c1c;
}
.sidebar-footer {
padding: 0.75rem;
border-top: 1px solid var(--bg-card-border);
@@ -247,7 +280,7 @@
display: none;
}
.sidebar.collapsed .nav-item span,
.sidebar.collapsed .nav-item span:not(.nav-badge),
.sidebar.collapsed .btn-settings span {
position: absolute;
left: calc(100% + 10px);
@@ -271,13 +304,13 @@
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
[data-theme="light"] .sidebar.collapsed .nav-item span,
[data-theme="light"] .sidebar.collapsed .nav-item span:not(.nav-badge),
[data-theme="light"] .sidebar.collapsed .btn-settings span {
background: rgba(255, 255, 255, 0.95);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.sidebar.collapsed .nav-item:hover span,
.sidebar.collapsed .nav-item:hover span:not(.nav-badge),
.sidebar.collapsed .btn-settings:hover span {
opacity: 1;
visibility: visible;
@@ -298,6 +331,16 @@
padding: 0.75rem 0;
overflow: visible;
}
.sidebar.collapsed .nav-badge {
position: absolute;
top: 0.35rem;
right: 0.35rem;
min-width: 18px;
height: 18px;
padding: 0 0.3rem;
font-size: 0.65rem;
}
.sidebar.collapsed .btn-settings {
justify-content: center;
@@ -333,9 +376,44 @@
font-size: 1.3rem;
font-weight: 700;
letter-spacing: -0.02em;
}
.topbar-title-group {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
flex: 1;
}
.topbar-request-badge {
min-height: 30px;
padding: 0 0.75rem;
border: 1px solid rgba(248, 113, 113, 0.26);
border-radius: 999px;
background: rgba(248, 113, 113, 0.13);
color: #fecaca;
font: inherit;
font-size: 0.8rem;
font-weight: 800;
line-height: 1;
cursor: pointer;
white-space: nowrap;
transition: background var(--transition), border-color var(--transition), color var(--transition), transform var(--transition);
}
.topbar-request-badge:hover {
transform: translateY(-1px);
background: rgba(248, 113, 113, 0.2);
border-color: rgba(248, 113, 113, 0.42);
}
[data-theme="light"] .topbar-request-badge {
background: #fee2e2;
border-color: #fecaca;
color: #b91c1c;
}
.content {
padding: 1.5rem 2rem;
display: flex;