Перейти до вмісту
tatetUI

ScrollArea

Нативна scroll-область із edge affordance, подіями меж і програмним API.

Приклад

  • Подія 1
  • Подія 2
  • Подія 3
  • Подія 4
  • Подія 5
  • Подія 6
  • Подія 7
  • Подія 8
  • Подія 9
  • Подія 10
  • Подія 11
  • Подія 12

API

Props

НазваТипТиповоОпис
ariaLabelstring"Прокручувана область"Доступне ім'я області. Її оголошено як `region`, тож ім'я обов'язкове.
orientationverticalhorizontalboth"vertical"Вісь прокрутки. `both` вмикає обидві одразу.
tabindexnumber0tabindex області. Нуль лишає її доступною з клавіатури — без цього прокрутити вміст без миші неможливо.
edgeThresholdnumber1Допуск у пікселях, у межах якого край вважається досягнутим. Нуль не годиться: при дробовому масштабуванні сторінки scrollTop + clientHeight ніколи точно не дорівнює scrollHeight, і подія `reachEnd` не спрацьовувала б узагалі.
heightstringФіксована висота області — будь-яка CSS-величина.
maxHeightstringСтеля висоти: область росте за вмістом, доки не впреться.

Події

НазваPayloadОпис
scroll[event: Event]Нативна подія прокрутки.
reachStart[]Прокрутка вперше досягла початку.
reachEnd[]Прокрутка вперше досягла кінця.

Слоти

НазваОпис
defaultВміст області. Отримує стан країв, щоб споживач міг показати власну підказку «є що прокручувати» замість типового градієнта.

Доступно через ref

НазваТипОпис
viewportElHTMLElement
atStartboolean
atEndboolean
scrollTo(options: ScrollToOptions) => void
scrollToStart(behavior?: ScrollBehavior) => void
scrollToEnd(behavior?: ScrollBehavior) => void

Коли використовувати

Коли частині інтерфейсу потрібна власна вертикальна чи горизонтальна прокрутка — sidebar, журнал подій, довга панель або таблиця. Компонент додає лише affordance й події, не замінюючи механізм браузера.

Коли НЕ використовувати

Не огортайте ним всю сторінку й не створюйте вкладені scroll-контейнери без необхідності. Для тисяч однотипних рядків використовуйте UiVirtualList.

Доступність

Viewport лишається нативним overflow-контейнером, фокусується клавіатурою і має іменовану region. PageUp, PageDown, Home, End, wheel і touch працюють без кастомного перехоплення.