# Модальные окна для работы с сотрудниками
## `_create_employee.html`
Модальное окно для создания нового профиля сотрудника.
### Использование
```django
{# Включить модал в шаблон #}
{% include "employees/modals/_create_employee.html" %}
{# Инициализировать JavaScript (в конце страницы) #}
```
### Интеграция с page_header компонентом
```django
{% include "includes/components/page_header.html" with
icon="bi-people"
title="Сотрудники"
create_as_card=True
create_modal="#createEmployeeModal"
create_text="Создать профиль"
%}
{# В конце шаблона #}
{% include "employees/modals/_create_employee.html" %}
```
### JavaScript API
#### `initCreateEmployeeModal(options)`
Инициализирует обработчик модального окна создания сотрудника.
**Параметры:**
- `options.modalId` (string) - ID модального окна, по умолчанию `'createEmployeeModal'`
- `options.formId` (string) - ID формы, по умолчанию `'createEmployeeForm'`
- `options.errorsId` (string) - ID блока ошибок, по умолчанию `'createEmployeeErrors'`
- `options.submitBtnId` (string) - ID кнопки отправки, по умолчанию `'createEmployeeSubmit'`
- `options.submitUrl` (string) - URL для отправки формы, **обязательный параметр**
**Пример:**
```javascript
initCreateEmployeeModal({
submitUrl: '/employees/create/modal/',
modalId: 'myCustomModal' // опционально
});
```
### Поля формы
**Обязательные:**
- Email
- Телефон
**Опциональные:**
- Фамилия, Имя, Отчество
- Пол (M/F)
- Дата рождения
- Должность (выбор из списка)
- Пароль (генерируется автоматически, если не указан)
- Telegram, WhatsApp, WeChat
- Аватар (изображение)
### Backend
Модал отправляет AJAX запрос на:
```
POST /employees/create/modal/
```
Вьюха: `employees.views_front.employee_create_modal`
Обрабатывает данные формы, обращается к API через `get_api_client()` и возвращает JSON:
**Успех:**
```json
{
"success": true,
"message": "Сотрудник успешно создан",
"employee_id": 123,
"redirect_url": "/employees/123/"
}
```
**Ошибка:**
```json
{
"success": false,
"error": "Описание ошибки"
}
```
### Особенности
1. **Нет прямого обращения к API** - запрос идёт через фронтовую вьюху `employee_create_modal`, которая сама обращается к API
2. **Валидация** - ошибки парсятся из ответа API и показываются в модале
3. **Автозакрытие** - при успехе модал закрывается и происходит редирект на профиль созданного сотрудника
4. **Loading state** - кнопка блокируется и показывает spinner во время отправки
### Зависимости
- Bootstrap 5 Modal
- Django CSRF middleware
- Список должностей в контексте (`positions_list`)