Replies: 1 comment
-
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Проблема
Сейчас VKUI не позволяет изменять свойства компонентов раскладки в зависимости от системных брейкпоинтов.
Единственная возможность это сделать - использовать хуки
useAdaptivityConditionalRenderилиuseAdaptivityWithJSMediaQueries, но тут есть нюансы:useAdaptivityConditionalRender– хук возвращает CSS-классы для ограниченного набора параметров адаптивности. Навешивая класс, вы управляете видимостью компонентов. Например, вам необходимо располагать элементы горизонтально при условии, что ширина экрана больше1024px, и вертикально - если меньше. В коде сейчас это можно реализовать следующим образом:Пример кода
Сразу же всплывают проблемы – необходимо дублировать код + в DOM по факту будет и элемент с горизонтальным выравниваем, и с вертикальным, а показ/скрытие работает через CSS Media Query.
useAdaptivityWithJSMediaQueries– делает тоже самое, что и предыдущий хук, но через условия в JS (без CSS-классов):Пример кода
В DOM не будет дублирования, но использования JS медиа выражений в рантайме ведёт к ошибках гидарции при использовании SSR.
Поиск решений
Мы хотим полностью переработать систему адаптивности и перейти полностью к mobile-first подходу, это позволит:
Цель этой дискуссии - определить наиболее удобный API для управления свойствами, которые должны быть завязаны на адаптивность.
Для начала мы хотим поддержать изменения в некоторых компонентах раскладки:
Flex– адаптивными будем считать свойства:direction,gap,noWrap,align,justify,reverse(текущийmarginпод вопросом);Flex.Item– адаптивными будем считать свойства:flex,alignSelf,flexBasis;SimpleGrid– адаптивными будем считать свойства:align,columns,gap,minColWidth(текущийmarginпод вопросом);Separator– адаптивными будем считать свойства:size,padding,direction,align;Spacing– адаптивными будем считать свойства:size.Warning
Пока перебивать брейкпоинты возможности не будет. Планируем это продумать в следующей итерации.
На данном этапе как минимум попробуем расширить их количество.
1️⃣ Вариант 1
Пример кода
2️⃣ Вариант 2
Пример кода
Референсы
7 votes ·
Beta Was this translation helpful? Give feedback.
All reactions