This commit is contained in:
Zuev
2026-10-02 04:07:56 +03:00
parent 97bf3cc50a
commit fc5801d683
42 changed files with 1201 additions and 305 deletions

View File

@@ -1,4 +1,5 @@
import { useEffect, useRef, useState } from 'react';
import { CustomSelect } from '../../shared/ui/CustomSelect.jsx';
import { getSession } from '../../../admin/js/api.js';
import { AsyncCombobox } from '../../shared/ui/AsyncCombobox.jsx';
@@ -621,7 +622,7 @@ export function TeacherAbsencesTab() {
<h2>Реестр инцидентов</h2>
</div>
<div className="absence-registry-actions">
<select
<CustomSelect
id="teacher-absence-status-filter"
aria-label="Фильтр по статусу"
value={statusFilter}
@@ -636,7 +637,7 @@ export function TeacherAbsencesTab() {
<option value="RESOLVED">Разрешены</option>
<option value="REJECTED">Отклонены</option>
<option value="CANCELLED">Отменены</option>
</select>
</CustomSelect>
<button
type="button"
className="btn btn-md btn-secondary"
@@ -668,7 +669,7 @@ export function TeacherAbsencesTab() {
</div>
</header>
<div className="teacher-dialogue-toolbar">
<select
<CustomSelect
id="teacher-preference-semester-filter"
aria-label="Семестр пожеланий"
value={preferenceSemesterId}
@@ -683,8 +684,8 @@ export function TeacherAbsencesTab() {
{absenceSemesterLabel(semester)}
</option>
))}
</select>
<select
</CustomSelect>
<CustomSelect
id="teacher-preference-status-filter"
aria-label="Статус пожеланий"
value={preferenceStatusFilter}
@@ -696,7 +697,7 @@ export function TeacherAbsencesTab() {
<option value="PENDING">На рассмотрении</option>
<option value="APPROVED">Согласованные</option>
<option value="">Все статусы</option>
</select>
</CustomSelect>
<button
className="btn btn-md btn-secondary"
id="teacher-preference-refresh"
@@ -726,7 +727,7 @@ export function TeacherAbsencesTab() {
</div>
</header>
<div className="teacher-dialogue-toolbar">
<select
<CustomSelect
id="teacher-change-status-filter"
aria-label="Статус заявок"
value={changeStatusFilter}
@@ -739,7 +740,7 @@ export function TeacherAbsencesTab() {
<option value="APPROVED">Одобренные</option>
<option value="REJECTED">Отклонённые</option>
<option value="">Все статусы</option>
</select>
</CustomSelect>
<button
className="btn btn-md btn-secondary"
id="teacher-change-refresh"
@@ -919,7 +920,7 @@ function LessonDecision({ lesson, index, locked, value, onChange }) {
</div>
<div className="absence-lesson-decision">
<label htmlFor={`absence-decision-${index}`}>Решение</label>
<select
<CustomSelect
id={`absence-decision-${index}`}
className="absence-decision-select"
disabled={locked}
@@ -930,7 +931,7 @@ function LessonDecision({ lesson, index, locked, value, onChange }) {
{options.map(option => (
<option key={option.value} value={option.value}>{option.label}</option>
))}
</select>
</CustomSelect>
{lesson.decisionStatus
? <span className="absence-decision-fixed">{decisionStatusLabel(lesson.decisionStatus)}</span>
: null}