Поддержка RTL
Оберните приложение (или только части, использующие эту библиотеку) в dir="rtl" — проп rtl нигде не существует, потому что он не нужен:
<VirtualTable :columns="columns" :rows="rows" dir="rtl" style="height: 500px" />Каждый компонент использует логические CSS-свойства (inset-inline-start/inset-inline-end, padding-inline-start, margin-inline-start) вместо физических left/right для позиционирования — отступ VirtualTree, зафиксированные столбцы VirtualTable и ручка изменения размера столбца, позиционирование ячеек VirtualGrid и горизонтальный ползунок VirtualScrollbar автоматически зеркалируются, когда браузер разрешает direction: rtl, без единого JS-ветвления по направлению.
Нормализация позиции прокрутки
Единственное место, реально нуждающееся в JS — это element.scrollLeft, чей знак/точка отсчёта различаются в RTL между браузерами (0 у начального края, отрицательное значение к концу, согласно современной спецификации). Виртуализация столбцов VirtualTable, горизонтальный режим VirtualScrollbar и раскладка horizontal у VirtualList — все читают/пишут его через normalizeScrollLeft/setNormalizedScrollLeft, а не через сырое свойство. Drag-to-resize столбца также инвертирует знак дельты указателя в RTL, поскольку там ручка изменения размера находится на физически левом краю.
normalizeScrollLeft(el)
(el: HTMLElement) => number
Возвращает расстояние прокрутки от начального края, положительное как в LTR, так и в RTL — нормализуя различие в знаке/точке отсчёта между браузерами.
setNormalizedScrollLeft(el, distance)
(el: HTMLElement, distance: number) => void
Устанавливает позицию прокрутки по расстоянию от начального края, преобразуя её обратно в тот сырой формат scrollLeft, который ожидает текущий браузер и направление.
import { normalizeScrollLeft, setNormalizedScrollLeft } from 'vue-virtual-scroller-kit'
const distanceFromStart = normalizeScrollLeft(el) // работает одинаково в LTR и RTL
setNormalizedScrollLeft(el, distanceFromStart + 100)Обе функции также экспортируются из vue-virtual-scroller-kit, если вам нужна та же нормализация в собственном коде.