Skip to content

Адаптеры и ограничения

Component SFC зависит от публичного контракта Table, а не от API конкретной grid-библиотеки. Стандартные Vue-адаптеры используют разные реализации:

АдаптерРеализация Table
vue-nativeRevoGrid
vue-shadcnTanStack Table и TanStack Virtual
aodbAODB DataTable на TanStack Table

Все адаптеры должны сохранять структуру Table/Column/Cell, смысловые Events, Actions, row identity и authored defaults. Внешний Component SFC не импортирует RevoGrid или TanStack.

Стандартный selection UX

selection-trigger="auto" позволяет адаптеру выбрать привычное для его окружения взаимодействие, не меняя публичный Source-контракт:

Адаптерauto разрешается как
vue-nativerow
vue-shadcnrow
aodbcontrol

Если переносимый Component SFC требует конкретного поведения, укажите control, row или both явно. Явное значение имеет приоритет над стандартом адаптера. Во всех вариантах используется одно состояние selection, поэтому выбор через control обязан давать ту же подсветку, Events и Actions, что и выбор через строку.

cell-selection-mode="single" одинаково поддерживается vue-native, vue-shadcn и aodb. Во всех трёх реализациях identity ячейки — это rowId + columnKey, публикуется cellSelectionChanged, а выбранная surface получает states selected и cell-selected. Row selection и cell selection работают одновременно и хранят независимое состояние. При row/both клик по ячейке также применяет row-selection policy; при control — не меняет строки. Escape очищает оба selection, если клавишу не обработал вложенный control.

Что может различаться

  • внешний вид toolbar и pagination;
  • жест открытия меню заголовка;
  • состав встроенного default column menu;
  • наличие adapter-specific column manager;
  • способ измерения виртуальных строк;
  • theme hint и доступные visual tokens.

Если одинаковый UX обязателен, объявляйте inline ColumnMenu и проверяйте обе активные реализации. Не делайте вывод о переносимости по одному renderer-у.

Текущие ограничения

ВозможностьСтатус
Локальный pagingПоддерживается
Виртуализация локальной коллекцииПоддерживается
Серверный paging через lazyПока не реализован
СортировкаЛокальная, по переданным rows
Универсальный Table search/filter propОтсутствует
Loading/error propsОтсутствуют; принадлежат внешнему runtime
Отдельный ColumnMenu на каждой ColumnНе поддерживается в v1
Grouping и aggregation contractНе объявлен публичным Table API
Persistence selectionНе поддерживается
Выбор одной ячейкиПоддерживается во всех обязательных адаптерах

Как документировать расширение

Новая возможность становится общей только после появления renderer-neutral контракта, compiler validation и реализации во всех обязательных адаптерах. Опция одной grid-библиотеки не должна автоматически попадать в публичную SFC документацию.

Application может зарегистрировать собственный adapter, но он обязан сохранить внешние данные, Events, Actions и lifecycle Table. Adapter-specific расширения не должны менять Source-контракт без отдельного публичного capability.