Спасение рядового оверрайда
Спасение рядового оверрайда

Спасение рядового оверрайда

Кратко

Автор
Темы
Дата
January 15, 2023
super:Link

Саша Окунев для профи

15 января 2023

Как безопасно накатывать обновления на компоненты из библиотек в Figma

Проблема

Когда работаешь в большом проекте, в котором используются библиотеки, всегда есть риск, что что-то сломается. Например, может прилететь обновление компонента, у которого изменилась структура, а на его экземплярах (instance) были настроены оверрайды.

Это приводит к тому, что после апдейта экземпляр в файле потеряет контент, который в нём был.

Когда у нас сотни файлов и экранов в них, слетевший ценный контент может стать большой проблемой для команды. Так что мы, как хранители UI-кита, бережём нервы наших дизайнеров и следим за тем, чтобы ни у кого ничего не слетело.

С этим можно бороться через функцию Review Updates. В этом уроке я покажу, как при помощи неё последовательно восстановить контент в каждом экземпляре.

Файлы урока

Для начала рассмотрим файл библиотеки. Его можно скачать из Community и повторить урок самостоятельно.

Напомню, что функция библиотек доступна в Figma начиная с тарифа Professional.

В библиотеке мы видим два компонента:

- screen-header

- number

image

screen-header можно использовать для оформления макетов. Он содержит место для заголовка экрана, описание и порядковый номер. На его примере будем менять структуру, чтобы контент слетал, а мы его восстановили.

image

Теперь посмотрим на макет с экземплярами. Его придётся воссоздать самостоятельно.

Как воссоздать?

Видим, что в оверрайдах прописаны номера экранов.

image

1

Допустим, мы хотим вместо обычного текстового слоя с номером экрана подставить компонент number. Это довольно серьёзно изменит структуру screen-header. Как мы видим, в его экземплярах прописаны номера, они сто процентов слетят, когда мы обновим компонент. Figma не сможет сопоставить простой текстовый слой и компонент number, в котором тоже есть текстовый слой.

❤️
Видно, как Figma работает над тем, чтобы максимально бережно сохранять контент при обновлении компонента. До недавнего времени даже перенос слоя из одного автолейаута в другой приводил к потере контента в оверрайдах, но в новых версиях Figma этого больше не происходит.

Итак, погнали.

2

В файле библиотеки подменяем текстовый слой для номеров экземпляром number.

Для этого удобно использовать функцию Paste to Replace, клавиша Shift Cmd R.

image

3

Публикуем библиотеку, чтобы донести обновление до файла. Нажимаем Publish.

image

И ещё раз.

image

4

Теперь переходим в файл макета. У меня он называется slashdesigner.

При его открытии появится плашка Component updates available. Нажимаем Review.

image

5

Видим список обновившихся компонентов файла. Не нажимаем Update или Update all сразу, а нажимаем на компонент в списке или на шеврон.

image

6

Оказываемся на экране сравнения версий. Видим, что на одном из экземпляров контент с номером экрана 3 был потерян и заменён на пустой number.

В данном случае из контента всего один символ, но если текст длинный, удобно в этот момент сделать скриншот левой версии, чтобы на следующем шаге восстановить его вручную.

Нажимаем Update instance. Так мы оставим в этом экземпляре свежую версию справа.

image

7

Видим, что экземпляр обновился.

image

8

Хитрость: не закрываем окно Review updates, а отодвигаем его в сторону, чтобы не загораживало основной редактор. Это позволит вернуться к процессу сравнения позже.

image

9

По желанию. Если сделали скриншот на шаге 6, вставляем его рядом с обновлённым экземпляром, чтобы было удобно с ним сверяться.

image

10

Восстанавливаем потерянный контент. После этого удаляем скриншот, он больше не нужен.

image

11

Возвращаем на центр экрана отодвинутое ранее окно Review updates и нажимаем кнопку Next instance, чтобы перейти к ревью следующего экземпляра.

image

12

Figma фокусирует нас на следующем экземпляре. Восстанавливаем его контент аналогично первому. Повторяем шаги 6-12, пока экземпляры не закончатся.

image

13

Мы восстановили все слетевшие оверрайды компонента screen-header.

image

14

Последний, перестраховочный шаг для макетов, в которых давно не обновляли компоненты. Если есть другие компоненты, которые требуют аналогичного ревью, нажимаем Back в верхнем левом углу и возвращаемся на экран Updates. Убеждаемся, что он пуст и мы ничего не забыли. Теперь можно закрыть окно. ⏹️

image

/designer/designer

— образовательный телеграм-канал о продуктовом дизайне и инструментах для него, о карьере дизайнера и эмиграции. Опечатки и обратную связь → @okunev