Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Версионирование тем
Добавляем новую фичу для облегчения обновлений нашей библиотеки.
Проблема
В дизайн-системе время от времени возникает необходимость сделать "визуальные изменения" компонентов. Например, это могут быть новые цвета или что-то другое, немного меняющее внешний их вид и верстку (раз, два).
Такие изменения полезны, они поддерживают дизайн-систему в актуальном и рабочем состоянии. И, как правило, они не очень срочные, т.е. пользователям не обязательно их применять сразу же как только они появились. Но зачастую, чтобы их применить и адаптировать в проекте пользователя, ему нужно потратить дополнительные ресурсы: обновить скриншотные тесты, подправить внешний вид других элементов на странице и протестировать, что дизайн в целом остался консистентным. А мы стремимся сделать процесс обновления библиотеки максимально простым и бесплатным для пользователей.
С другой стороны, мы также стремимся и к тому, чтобы пользовательские дизайны были максимально актуальны и соответствовали гайдам и дизайн-системе в целом. А библиотека была синхронизирована с фигмой и гайдами. И проекты, стремящиеся к тому же тоже есть. Плюс, в компании нередко запускаются новые проекты, в которых нет легаси, готовые сразу использовать последние версии дизайн-системы.
Таким образом, необходимо выработать решение, удовлетворяющее всем описанным требованиям:
Решение
В библиотеке появляется версионирование тем, т.е. несколько разных версий одной и той же базовой темы, светлой или темной, с разным набором визуальных изменений. Пользователь может выбрать себе наиболее подходящую в данный момент версию темы, оставаясь при этом на последней версии библиотеки.
Концепт
В
LIGHT_THEME
иDARK_THEME
всегда самые актуальные стили.Есть промежуточные версии тем, которые можно использовать вместе с последней версией библиотеки (
LIGHT_THEME_X
,DARK_THEME_X
), чтобы не получать визуальные изменения.Т.е. пользователь устанавливая очередную версию пакета, например,
5.1.0
, сможет при желании остаться на предыдущей версии темы, явно ее применив:Переименование
Создание новых тем
Создание визуальных изменений
Хелпер для определения текущей версии темы. GTE значит "greater than or equal", т.е. больше или равно (
>=
). Другие, вероятно, не понадобятся из-за композиции версий.Стили
Код компонента. Используем композицию версий, т.е. последующие накладываются на предыдущие.
Тесты
Делаем истории и скриншоты на предыдущую версию темы с ее отличиями. Используем дефолтный браузер (хром 2022), остальные скипаем, новые не создаем.
Ссылки
IF-2146
Чек-лист перед запросом ревью
Добавлены тесты на все изменения
✅ unit-тесты для логики
✅ скриншоты для верстки и кросс-браузерности
⬜ нерелевантно
Добавлена (обновлена) документация
⬜ styleguidist для пропов и примеров использования компонентов
⬜ jsdoc для утилит и хелперов
⬜ комментарии для неочевидных мест в коде
⬜ прочие инструкции (
README.md
,contributing.md
и др.)✅ нерелевантно
Изменения корректно типизированы
✅ без использования
any
(см. PR2856
)⬜ нерелевантно
Прочее
✅ все тесты и линтеры на CI проходят
✅ в коде нет лишних изменений
✅ заголовок PR кратко и доступно отражает суть изменений (он попадет в changelog)