# Неделя #4: Виджеты страницы
# Задачи на неделю:
Изучить учебные материалы
Обеспечить функционированием виджеты страницы
- Вертикальный аккордеон (секция с командой)
- Слайдер
- Модальное окно
- Слайдшоу в секции отзывов
Обеспечить обработку ответа от сервера в форме заказа
# Как все успеть
# 🗓 Понедельник
Смотрим видео-курс по jQuery
Хорошим опытом будет найти аналоги функций jQuery в ванильном JS. Если аналогов найти не удалось - попробуйте реализовать эти функции самостоятельно.
# 🗓 Вторник
Реализуем функционирование вертикального аккордеона

Пояснения к верстке секции
- Все элементы внутри подобных блоков идентичны по своей верстке.
- Блок отмеченный знаком # находится во всех элементах аккордеона, но он скрыт по умолчанию (либо display: none, либо height: 0, с добавлением overflow: hidden - второй вариант предпочтительнее так как впоследствии мы будем изменять высоту блока динамически)
- Функционирование можно обеспечить двумя способами
- Необходимо завести класс модификатор, который будет навешиваться как дополнительный класс на элемент аккордеона и тем самым менять в нем отображение на то, которое соответствует активному элементу, а именно
- Заголовок становится желтым
- Треугольник “смотрит” вверх
- Секция # отображена
- По клику измеряем высоту спрятанного блока и отображаем этот блок путем установления высоты на блок обертку (изначально обертка имеет высоту 0, что и прячет блок с текстом)
# 🗓 Среда
Реализуем слайдер на JavaScript
# Функционирование слайдера
Пройденного материала будет достаточно для реализации этого слайдер ванильным JS либо при помощи jQuery. Но в качестве опыта подключите готовую библиотеку слайдера и настройте ее для корректной работы. Популярные бибилиотеки для этой задачи:
# 🗓 Четверг
Реализуем слайдшоу

# Реализация
Виджет представляет из себя 2 списка. Список с контентом и список с аватарами
- По умолчанию отображен только один элемент в списке контентом
- При клике на элемент из списка аватаров нужно найти необходимый элемент в списке с контентом и отобразить его
- Связать элементы (из списков) друг с другом можно несколькими способами:
- По порядку - нажали на первый элемент, значит нужно отобразить первый
- Задать контеным элементам id, и аватарам в href (если это ссылка) прописать соответсвующий id для открытия элемента
# 🗓 Пятница
Смотрим подготовительное видео по работе с Ajax
Реализуем работу формы заказа
Сервер отправки почты расположен по адресу: https://webdev-api.loftschool.com/sendmail (при отправке, убедитесь что используете именно протокол https, а не http)
Метод отправки - POST
Сервер ждет следующие параметры:
1. name - имя заказавшего
2. phone - телефон заказавшего
3. comment - комментарий
4. to - почта (в формате валидного адреса email)
В ответ на такой AJAX запрос сервер ответит данными в формате JSON В ответе будет содержаться информация о том удалось ли отправить сообщение (поле status в ответе), и текcт сообщения (либо текст ошибки)
Так как сервер ждет JSON ему нужно об этом сообщить. Т.е после того как вы сделали .open() нужно добавить в запрос заголовок с типом контента:
xhr.open('...');
xhr.setRequestHeader('content-type', 'application/json');
Сервер работает в режиме эмуляции (для того что бы этим сервером нельзя было воспользоваться как спам-сервисом) поэтому само письмо на почту не придет.
Перед отправкой запроса обязательно проверьте нужные поля на пустые значения. Что бы не отправлять заведомо не верный запрос.
Реализуем функционирование модального окна в секции Заказ (в зависимоcти от пришедшего ответа с сервера необходимо отобразить соответствующее всплывающее окно)
Сервер возвращает случайным образом либо успешный ответ либо ошибку
Итог работы
- Виджеты страницы работают исправно (аккордеон, слайдер, модальное окно, слайдшоу)
- В зависимости от ответа со стороны сервера - в модальном окне появляются разные сообщения (отправка удалась/произошла ошибка)