HorizontalScroll

Компонент для показа большого количества элементов с горизонтальной прокруткой. Поддерживается навигация жестами и с клавиатуры. Лучше всего подходит для отображения множества компонентов HorizontalCell.

Связанные компоненты:

Загружается...

С помощью свойств getScrollToLeft и getScrollToRight можно определять величину сдвига прокрутки при нажатии на левую и правую стрелки навигации соответственно.

function handleScrollToLeft(currentPosition) {
  // сдвигаем текущее положение прокрутки на 120px назад
  return currentPosition - 120;
}
 
function handleScrollToRight(currentPosition) {
  // сдвигаем текущее положение прокрутки на 120px вперёд
  return currentPosition + 120;
}
 
<HorizontalScroll getScrollToLeft={handleScrollToLeft} getScrollToRight={handleScrollToRight}>
  {/* контент для прокрутки */}
</HorizontalScroll>;

По умолчанию сдвиг происходит на всю ширину видимого контента.

Свойство scrollAnimationDuration позволяет управлять длительностью (в миллисекундах) анимации прокрутки при нажатии на одну из стрелок навигации.

По умолчанию значение равно 250.

По умолчанию горизонтальная прокрутка компонента с помощью мыши возможна при зажатие клавиши shift (это стандартное поведение, позволяющее разграничить вертикальную и горизонтальную прокрутку).

Добавить возможность прокручивать контент безусловно колесом мыши можно с помощью свойства scrollOnAnyWheel. В таком случае, если мышь находится над компонентом HorizontalScroll и его потомками, то активируется прокрутка по горизонтали.

Элементы позволяют осуществлять прокрутку по горизонтали.

Задаётся свойством showArrows.

  • true — стрелки показываются при наведении на компонент (по умолчанию);
  • false — стрелки скрыты;
  • "always" — стрелки всегда видны.

Стрелки автоматически скрываются, когда достигнут край прокрутки.

Задаётся свойством arrowSize.

  • "s" — уменьшенный размер;
  • "m" — стандартный размер (по умолчанию).

Свойство arrowOffsetY позволяет задать сдвиг по вертикали. Принимает либо числовое значение (в пикселях) или строковое (для возможности задать значение токеном). Положительное значение сдвигает стрелку вниз, отрицательное — вверх.

Если вам требуется изменить тэг компонента (по умолчанию div), который оборачивает ваш контент, например, для реализации нативного списка (тэги ul/li), используйте свойство ContentWrapperComponent.

Также с помощью свойства contentWrapperClassName можно передать свой CSS-класс на эту обёртку, а с помощью свойства contentWrapperRef получить ссылку на DOM-элемент этой обёртки (ref-объект ↗)

const refContainer = React.useRef(null);
 
<HorizontalScroll
  ContentWrapperComponent="ul"
  contentWrapperRef={refContainer}
  contentWrapperClassName="custom-class"
>
  <li>Первый</li>
  <li>Второй</li>
  <li>Третий</li>
</HorizontalScroll>;

Компонент автоматически поддерживает RTL-режим, в котором стрелки меняют своё направление, а прокрутка работает в обратном направлении.

Для возможности тестирования доступны свойства с постфиксом *TestId, которые вы можете использовать, чтобы находить необходимые части компонента:

  • nextButtonTestIdid стрелки навигации в направлении следующего элемента;
  • prevButtonTestIdid стрелки навигации в направлении предыдущего элемента.

Компонент для отображения кнопки “Показать все”, используется в HorizontalScroll в конце списка.

Загружается...

Задаётся свойством size.

  • "s" — уменьшенный размер (по умолчанию);
  • "m" — стандартный размер.

Если вы используется в качестве контента HorizontalScroll элементы <HorizontalCell size="s", то рекомендуется задавать размер size="s" для HorizontalCellShowMore, во всех остальных случаях подойдет size="m".

Задаётся свойством height. Должна соответствовать высоте соседних элементов.

<HorizontalScroll>
  <HorizontalCell size="xl" title="Команда" subtitle="4 фотографии">
    <img />
  </HorizontalCell>
  <HorizontalCell size="xl" title="Медиагалерея Вконтакте" subtitle="64 фотографии">
    <img />
  </HorizontalCell>
  <HorizontalCellShowMore size="m" height={124} />
</HorizontalScroll>

Задаётся через children.

  • для size="s" по умолчанию отображается “Все”;
  • для size="m" по умолчанию отображается “Показать все”.
<HorizontalCellShowMore size="m">Ещё</HorizontalCellShowMore>

Задаётся свойством centered.

  • false — стандартное выравнивание (по умолчанию);
  • true — выравнивание по центру относительно родителя.
<HorizontalCellShowMore centered />
СвойствоОписание
arrowOffsetYstring | number

Смещает иконки кнопок навигации по вертикали.

По умолчанию: -
arrowSize"s" | "m"

Размер стрелок.

По умолчанию: m
contentWrapperClassNamestring

Специфичный className для обертки над контентом, прокинутым в children.

По умолчанию: -
ContentWrapperComponentElementType<any, keyof IntrinsicElements>

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

По умолчанию: div
contentWrapperRefRef<HTMLElement>

ref для обертки над контентом, прокинутым в children.

По умолчанию: -
getRefRef<HTMLDivElement>
По умолчанию: -
getRootRefRef<HTMLDivElement>
По умолчанию: -
getScrollToLeftScrollPositionHandler

Функция для расчета величины прокрутки при нажатии на левую стрелку.

По умолчанию: -
getScrollToRightScrollPositionHandler

Функция для расчета величины прокрутки при нажатии на правую стрелку.

По умолчанию: -
nextButtonTestIdstring

Передает атрибут data-testid для кнопки прокрутки горизонтального скролла в направлении следующего элемента.

По умолчанию: -
prevButtonTestIdstring

Передает атрибут data-testid для кнопки прокрутки горизонтального скролла в направлении предыдущего элемента.

По умолчанию: -
scrollAnimationDurationnumber

Длительность анимации скролла.

По умолчанию: 250
scrollOnAnyWheelboolean

Добавляет возможность прокручивать контент на любое колесо мыши. По умолчанию прокручивается как любой горизонтальный контент через shift.

По умолчанию: false
showArrowsboolean | "always"

Показывать ли стрелки.

По умолчанию: true
СвойствоОписание
activatedboolean

Позволяет управлять activated-состоянием извне.

По умолчанию: -
activeClassNamestring

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство activeMode.

По умолчанию: -
activeEffectDelaynumber

Длительность показа active-состояния.

По умолчанию: -
activeModeStateModeLiteral

Стиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active.

По умолчанию: -
baseClassNamestring | false

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство className.

По умолчанию: -
baseStyleCSSProperties

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство style.

По умолчанию: -
centeredboolean

Выравнивание по центру относительно родителя.

По умолчанию: false
childrenReactNode

Предназначен для отрисовки текста. По умолчанию для size='s' содержит текст Все, для size='m' - Показать все.

По умолчанию: size === 's' ? 'Все' : 'Показать все'
ComponentElementType<any, keyof IntrinsicElements>
По умолчанию: -
focusVisibleModeFocusVisibleMode

Стиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible

По умолчанию: -
getRefRef<HTMLElement>
По умолчанию: -
getRootRefRef<HTMLDivElement>
По умолчанию: -
hasActiveboolean

Указывает, должен ли компонент реагировать на active-состояние.

По умолчанию: -
hasHoverboolean

Указывает, должен ли компонент реагировать на hover-состояние.

По умолчанию: -
hasHoverWithChildrenboolean

Позволяет родительскому компоненту иметь hovered-cостояние при наведении на любой дочерний элемент. По умолчанию состояние hovered у родителя сбрасывается.

Присваивается родителькому компоненту.

По умолчанию: -
heightLiteralUnion<16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 56 | 64 | 72 | 80 | 88 | 96, number>

Задаёт высоту компонента. Должeн соответствовать размеру картинок внутри соседних HorizontalCell компонентов.

Используйте размеры, заданные дизайн-системой (смотри типы).

Игнорируется, если size='s'.

По умолчанию: -
hoverClassNamestring

Deprecated: Since 7.3.0.

Свойство устарело и будет удалено в v8, используйте свойство hoverMode.

По умолчанию: -
hoveredboolean

Позволяет управлять hovered-состоянием извне.

По умолчанию: -
hoverModeStateModeLiteral

Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover.

По умолчанию: -
size"s" | "m"

Задаёт размер компонента.

Значение s применяется для <HorizontalCell size="s", в остальных случаях рекомендуется m.

По умолчанию: s
unlockParentHoverboolean

Позволяет родительскому компоненту показывать hovered-состояние при наведении на текущий дочерний компонент.

Присваивается дочернему компоненту.

По умолчанию: -