PanelHeader
Компонент, предназначенный для создания заголовочной секции (шапки) внутри компонента Panel.
Связанные компоненты:
Заголовок
Основной текст следует передавать в свойство children. В зависимости от платформы заголовок будет либо
располагаться слева, либо будет выровнен по центру (платформа iOS).
Дополнительно есть возможность передать в свойстве typographyProps параметры для типографического элемента заголовка,
например, Component (тэг для рендеринга компонента, span по умолчанию) или data-атрибуты.
Контент в начале
Используйте свойства before для добавления дополнительного контента слева от заголовка.
Наиболее частый вариант использования свойства before - иконки (например “Назад”, “Закрыть”) или текстовые кнопки (на платформе iOS).
Также допускается использовать компонент Avatar (размером 28px или 36px).
Контент в конце
Используйте свойства after для добавления дополнительного контента справа от заголовка.
Наиболее частый вариант использования свойства after - иконки и компонент Avatar (размером 28px или 36px).
Допускается использование нескольких иконок одновременно (компонент автоматически расставит между ними отступы).
Внешний вид
Прозрачный фон
Булево свойство transparent позволяет задать компоненту прозрачный фон.
Позиционирование
Плавающая шапка
Свойство float
Свойство fixed позволяет шапке выбиваться из потока и фиксироваться сверху при прокрутке основного контента.
true- шапка фиксируется сверху;false- шапка остаётся в потоке и прокручивается вместе с контентом.
По умолчанию значение true на всех платформах, кроме vkcom.
Разделитель
Используйте свойство delimiter, оно позволяет управлять типом разделителя (разделительная линия или отступ).
Доступны следующие значения:
"none"- разделитель отсутствует;"separator"- добвляется разделительная линия при условии, что это либо платформаvkcom, либо платформа android/iOS на мобильных устройствах;"spacing"- добавляется отступ, если это платформа android/iOS на планшетах и десктопах;"auto"- автоматически подбирает разделительную линию или отступ в зависимости от удовлетворяющих условий"separator"или"spacing".
Исключения, в которых разделительная линия после шапки не нужна (включая мобильные устройства android/iOS):
- если в
PanelHeaderрисуетсяSearch; - если после
PanelHeaderрисуетсяSearch; - если после
PanelHeaderрисуетсяBanner; - если в
PanelHeaderрисуютсяTabs; - любой другой элемент, визуально разделяющий шапку и основной контент.
В таких случаях передавайте в PanelHeader свойство delimiter="spacing", это позволит сохранить отступ
на планшетах и десктопах, но обеспечит отсутствие разделительной линии для мобильных устройствах.
PanelHeaderButton
Подкомпонент для отрисовки кнопки в шапке – передаётся в свойство before и/или after.
Контент
В качестве содержимого компонента передавайте в свойство children либо иконку ↗,
либо текст. Текстовые кнопки чаще всего используются в iOS, но есть исключения для android.
Обратите внимание, что для планшетов и десктопов рекомендуется использовать кнопки размером 24px,
а для мобильных устройств - размером 28px (возможно, будет полезен AdaptiveIconRenderer).
Если нужно несколько кнопок в ряд, то используйте React.Fragment:
Пресеты
PanelHeaderBack
Кнопка назад в экранах в рамках одного сценария (View). Внутри инкапсулирована логика показа нужной иконки для платформы.
Также можно передать свойство label, для отображения текста, который будет виден на платформах vkcom и iOS, но будет скрыт на Android.
С помощью свойств hideLabelOnVKCom и hideLabelOnIOS можно также визуально скрыть label на соответствующих платформах, он будет виден только для скринридеров.
PanelHeaderClose
Кнопка “Отмена” в модальных окнах для закрытия текущего View в рамках View. На iOS будет
показан текст, передаваемый как label, на Android и Desktop - <Icon28CancelOutline /> или <Icon24CancelOutline />. Если
передать свойство label, то на Android и Desktop он будет скрыт, но виден для скринридеров.
PanelHeaderEdit
Кнопка “Редактировать”. Принимает свойство isActive, которое определяет состояние кнопки (включен ли режим редактирования).
Для указания кастомных текстов для состояний можно использовать соответствующие свойства doneLabel и editLabel. Данные тексты
будут видны на iOS, а на Android и Desktop они будет скрыты, но видны для скринридеров.
PanelHeaderSubmit
Кнопка “Готово” в модальных окнах для закрытия текущего View в рамках View и сохранения
какого-либо результата. На iOS будет показан текст, передаваемый как label, на Android и Desktop - <Icon28DoneOutline />
или <Icon24DoneOutline />. Если передать свойство label, то на Android и Desktop текст будет скрыт, но виден для скринридеров.
PanelHeaderContent
Подкомпонент, предназначенный для создания сложного контента, включая добавление аватаров и подзаголовков.
Текстовые элементы
Заголовок
Текст заголовка следует передавать в свойство children данного компонента.
Дополнительный контент заголовка
В свойство aside можно передать дополнительный контент (чаще всего, иконку размером 12px), который будет
располагаться справа от заголовка.
Подзаголовок
Подзаголовок, располагающийся под заголовком, следует передавать в свойство subtitle.
Контент в начале
В компоненте доступна возможность добавления дополнительного контента в начале через свойство before.
Наиболее частый вариант использования свойства before - аватары (компонент Avatar).
Следует руководствоваться следующими правилами:
- на мобильных устройствах старайтесь использовать аватары размером
36px; - на планшетах и десктопах аватары размером
32px.
Обработчики событий
Компонент позволяет обрабатывать нажатия через свойство onClick. В таком случае вся шапка становится кликабельным
элементом (role="button"), поэтому старайтесь не вкладывать другие интерактивные элементы (кнопки, ссылки), чтобы
не нарушать a11y.
Свойства и методы
PanelHeader
| Свойство | Описание |
|---|---|
after | ReactNodeДобавляет элемент справа. При передаче нескольких элементов, расставляет отступы между ними. По умолчанию: - |
before | ReactNodeДобавляет элемент слева. По умолчанию: - |
delimiter | "auto" | "none" | "separator" | "spacing"Тип разделителя под шапкой.
По умолчанию: auto |
fixed | booleanЕсли По умолчанию: - |
float | booleanВысота шапки будет игнорироваться контентом панели. По умолчанию: false |
getRef | Ref<HTMLDivElement>По умолчанию: - |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
shadow | booleanDeprecated: Since 7.4.0. Свойство будет удалено в По умолчанию: - |
transparent | booleanПрозрачный фон компонента. По умолчанию: false |
typographyProps | (HasComponent & HTMLAttributes<HTMLElement> & HasDataAttribute)По умолчанию как По умолчанию: {} |
PanelHeaderButton
| Свойство | Описание |
|---|---|
activated | booleanПозволяет управлять По умолчанию: - |
activeClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
activeEffectDelay | numberДлительность показа По умолчанию: - |
activeMode | StateModeLiteralСтиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active. По умолчанию: - |
baseClassName | string | falseDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
baseStyle | CSSPropertiesDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
borderRadiusMode | "auto" | "inherit"Задает border-radius элементу
В режиме По умолчанию: - |
Component | ElementType<any, keyof IntrinsicElements>По умолчанию: - |
focusVisibleMode | FocusVisibleModeСтиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible По умолчанию: - |
getRootRef | Ref<HTMLElement>По умолчанию: - |
hasActive | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHoverWithChildren | booleanПозволяет родительскому компоненту
иметь Присваивается родителькому компоненту. По умолчанию: - |
hoverClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
hovered | booleanПозволяет управлять По умолчанию: - |
hoverMode | StateModeLiteralСтиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
label | ReactNodeТекст или содержимое кнопки. По умолчанию: - |
primary | booleanФлаг для обозначения первичной кнопки Влияет на стилизацию кнопки. По умолчанию: false |
unlockParentHover | booleanПозволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент. Присваивается дочернему компоненту. По умолчанию: - |
PanelHeaderBack
| Свойство | Описание |
|---|---|
activated | booleanПозволяет управлять По умолчанию: - |
activeClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
activeEffectDelay | numberДлительность показа По умолчанию: - |
activeMode | StateModeLiteralСтиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active. По умолчанию: - |
baseClassName | string | falseDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
baseStyle | CSSPropertiesDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
borderRadiusMode | "auto" | "inherit"Задает border-radius элементу
В режиме По умолчанию: - |
Component | ElementType<any, keyof IntrinsicElements>По умолчанию: - |
focusVisibleMode | FocusVisibleModeСтиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible По умолчанию: - |
getRootRef | Ref<HTMLElement>По умолчанию: - |
hasActive | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHoverWithChildren | booleanПозволяет родительскому компоненту
иметь Присваивается родителькому компоненту. По умолчанию: - |
hideLabelOnIOS | booleanСкрыть надпись на платформе По умолчанию: false |
hideLabelOnVKCom | booleanСкрыть надпись на платформе По умолчанию: false |
hoverClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
hovered | booleanПозволяет управлять По умолчанию: - |
hoverMode | StateModeLiteralСтиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
label | ReactNodeТекст или содержимое кнопки. По умолчанию: Назад |
primary | booleanФлаг для обозначения первичной кнопки Влияет на стилизацию кнопки. По умолчанию: - |
unlockParentHover | booleanПозволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент. Присваивается дочернему компоненту. По умолчанию: - |
PanelHeaderClose
| Свойство | Описание |
|---|---|
activated | booleanПозволяет управлять По умолчанию: - |
activeClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
activeEffectDelay | numberДлительность показа По умолчанию: - |
activeMode | StateModeLiteralСтиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active. По умолчанию: - |
baseClassName | string | falseDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
baseStyle | CSSPropertiesDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
borderRadiusMode | "auto" | "inherit"Задает border-radius элементу
В режиме По умолчанию: - |
Component | ElementType<any, keyof IntrinsicElements>По умолчанию: - |
focusVisibleMode | FocusVisibleModeСтиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible По умолчанию: - |
getRootRef | Ref<HTMLElement>По умолчанию: - |
hasActive | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHoverWithChildren | booleanПозволяет родительскому компоненту
иметь Присваивается родителькому компоненту. По умолчанию: - |
hoverClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
hovered | booleanПозволяет управлять По умолчанию: - |
hoverMode | StateModeLiteralСтиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
label | ReactNodeТекст или содержимое кнопки. По умолчанию: Отмена |
primary | booleanФлаг для обозначения первичной кнопки Влияет на стилизацию кнопки. По умолчанию: - |
unlockParentHover | booleanПозволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент. Присваивается дочернему компоненту. По умолчанию: - |
PanelHeaderEdit
| Свойство | Описание |
|---|---|
activated | booleanПозволяет управлять По умолчанию: - |
activeClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
activeEffectDelay | numberДлительность показа По умолчанию: - |
activeMode | StateModeLiteralСтиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active. По умолчанию: - |
baseClassName | string | falseDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
baseStyle | CSSPropertiesDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
borderRadiusMode | "auto" | "inherit"Задает border-radius элементу
В режиме По умолчанию: - |
Component | ElementType<any, keyof IntrinsicElements>По умолчанию: - |
doneLabel | stringТекст кнопки при активном режиме редактирования для выхода из него. Визуально скрыт везде, кроме iOS. По умолчанию: Готово |
editLabel | stringТекст кнопки, когда режим редактирования не активен. Визуально скрыт везде, кроме iOS. По умолчанию: Редактировать |
focusVisibleMode | FocusVisibleModeСтиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible По умолчанию: - |
getRootRef | Ref<HTMLElement>По умолчанию: - |
hasActive | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHoverWithChildren | booleanПозволяет родительскому компоненту
иметь Присваивается родителькому компоненту. По умолчанию: - |
hoverClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
hovered | booleanПозволяет управлять По умолчанию: - |
hoverMode | StateModeLiteralСтиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
isActive | booleanВключен ли режим редактирования. По умолчанию: false |
primary | booleanФлаг для обозначения первичной кнопки Влияет на стилизацию кнопки. По умолчанию: - |
unlockParentHover | booleanПозволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент. Присваивается дочернему компоненту. По умолчанию: - |
PanelHeaderSubmit
| Свойство | Описание |
|---|---|
activated | booleanПозволяет управлять По умолчанию: - |
activeClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
activeEffectDelay | numberДлительность показа По умолчанию: - |
activeMode | StateModeLiteralСтиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active. По умолчанию: - |
baseClassName | string | falseDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
baseStyle | CSSPropertiesDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
borderRadiusMode | "auto" | "inherit"Задает border-radius элементу
В режиме По умолчанию: - |
Component | ElementType<any, keyof IntrinsicElements>По умолчанию: - |
focusVisibleMode | FocusVisibleModeСтиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible По умолчанию: - |
getRootRef | Ref<HTMLElement>По умолчанию: - |
hasActive | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHoverWithChildren | booleanПозволяет родительскому компоненту
иметь Присваивается родителькому компоненту. По умолчанию: - |
hoverClassName | stringDeprecated: Since 7.3.0. Свойство устарело и будет удалено в По умолчанию: - |
hovered | booleanПозволяет управлять По умолчанию: - |
hoverMode | StateModeLiteralСтиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
label | ReactNodeТекст или содержимое кнопки. По умолчанию: Готово |
primary | booleanФлаг для обозначения первичной кнопки Влияет на стилизацию кнопки. По умолчанию: - |
unlockParentHover | booleanПозволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент. Присваивается дочернему компоненту. По умолчанию: - |
PanelHeaderContent
| Свойство | Описание |
|---|---|
aside | ReactNodeКомпонент отображаемый после содержимого. По умолчанию: - |
before | ReactNodeКомпонент отображаемый до содержимого. По умолчанию: - |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
subtitle | ReactNodeПодпись под основным текстом. По умолчанию: - |