1

Этап 1

Модальное окно

2

Этап 2

Поле ввода

1

Этап 1

Модальное окно

2

Этап 2

Поле ввода

07 ноября 2020

Цель заброшена

Автор не отписывался в цели 3 года 4 месяца 25 дней

Общая

Разработать набор UI-компонентов для системы

Привет всем!

По профессии я frontend-разработчик, уже полгода работаю удаленно. Текущих рабочих задач немного, сами они несложные, и я начинаю чувствовать, что профессионально деградирую. Чтобы поддерживать навыки на должном уровне и развиваться, я решил переписать компоненты интерфейса, которые мы используем в проектах, и постепенно заменить ими старые, которые я разработал почти полтора года назад. Часть новых компонентов уже готова, я делал их несколько месяцев назад, однако нужно внимательно изучить их код, соблюсти его единство, стройность логики. Вот список компонентов, который должен получиться на выходе:

  1. Кнопка
  2. Иконка
  3. Поповер
  4. Модальное окно
  5. Поле ввода и текстовое поле
  6. Группа чекбоксов
  7. Радиокнопки
  8. Мультиселект
  9. Поле выбора даты

Чтобы не затягивать выполнение задачи, упростить существующий код и поскорее интегрировать компоненты в систему, я решил отказаться от поддержки скрин-ридеров, которую уже реализовал для части компонентов. Остальные аспекты взаимодействия пользователя с компонентом будут учитываться, в соответствии с рекомендациями Консорциума.

 Критерий завершения

Все компоненты разработаны

  1. Модальное окно

    Технически правильнее будет начать с самых базовых компонентов: кнопки и иконки, но, так как я еще не обсудил стили фокуса с дизайнером, я решил начать работу с компонента модального окна. Я не буду описывать базовый функционал модального окна, а остановлюсь на неочевидных моментах, которые, на мой взгляд, должны присутствовать в грамотно разработанном модальном окне:

    1. Вне зависимости от того, где используется модальное окно, оно должно всегда прикрепляться к body
    2. Если у body присутствует полоса прокрутки, она должна скрываться. При этом дополнительная ширина, которая образуется при сокрытии полосы прокрутки не должна приводить к движению страницы в стороны при открытии/закрытии модального окна
    3. При открытии модального окна должна сохраняться информация о текущем активном элементе, текущем уровне прокрутки по осям x, y. Эти данные должны возвращаться в исходное состояние, когда модальное окно закрывается
    4. Когда модальное окно открыто, фокус должен быть "зациклен" внутри него. Другими словами, мы не можем перейти на активные элементы вне модального окна при навигации через Tab (реализовал через элементы-ловушки)
    5. При открытии модального окна должна сохраняться информация о текущем активном элементе, текущем уровне прокрутки по осям х, у. Эти данные должны возвращаться в исходное состояние, когда модальное окно закрывается
    6. Всё это должно корректно работать в сценариях, когда на странице присутствуют несколько модальных окон (например тогда, когда одно модальное окно вызывает другое)
  2. Поле ввода

    Поле ввода уже готово. Нужно проанализировать код и добавить несколько улучшений:

    1. удалить aria-атрибуты, которые я пока решил не поддерживать.
    2. поискать плагин маски, который будет достаточно функциональным, будет иметь настройки маски-даты и времени и не будет конфликтовать с валидатором.
    3. в инпуте используется спиннер, его также надо будет переписать, попробовать заменить css стили с анимацией на анимированную свг-иконку.
  • 460
  • 07 ноября 2020, 05:31
Регистрация

Регистрация

Уже зарегистрированы?
Быстрая регистрация через соцсети
Вход на сайт

Входите.
Открыто.

Еще не зарегистрированы?
 
Войти через соцсети
Забыли пароль?