Перейти к содержимому
v2.5.0
English
Русский
Документация

DataGridSelectable

DataGridSelectable расширяет DataGrid управлением активной ячейкой и одиночным, множественным или диапазонным выбором.

API корня

ПропТипПо умолчанию
selectionS'single'
Режим выбора. 'single' — одновременно можно выбрать только одну ячейку; 'multiple' — независимый множественный выбор (переключение по ячейке); 'range' — выбор диапазона между двумя точками (Shift + стрелки или перетаскивание указателем)
disabledDataGridDisabled<K>—
Предикат или набор отключённых ячеек. Может быть: функцией (key) => boolean; массивом отключённых ключей; одним ключом. Отключённые ячейки нельзя выбрать или сфокусировать.
excludeDisabledbooleantrue
—
expandablebooleantrue
Включает расширение диапазонов выбора (Shift + стрелка или перетаскивание мышью).
defaultActiveK—
Неконтролируемая начальная активная ячейка.
activeK—
Контролируемая активная ячейка.
selectedS extends "single" ? K | null : K[]—
Контролируемые выбранные ячейки. В режиме 'single' значение null означает контролируемое состояние без выбора.
defaultSelectedS extends "single" ? K : K[]—
Неконтролируемые изначально выбранные ячейки.
fromK—
Границы диапазона. Если заданы, ограничивают выбор ячейками между from и to на основе функции compare.
toK—
—
resolveRange(start: DataGridResolveValue<K>, end: DataGridResolveValue<K>, grid: Grid<HTMLElement, K>) => K[]—
Собственная логика построения диапазона для selection="range". По начальному и конечному значениям возвращает список ключей, образующих диапазон.
equals(start: K | undefined, end: K | undefined) => boolean—
Собственная функция сравнения двух ключей ячеек на равенство. По умолчанию — строгое равенство (===).
compare(a: K, b: K) => -1 | 0 | 1—
Собственная функция упорядочивания двух ключей ячеек. Должна возвращать -1, 0 или 1.
onSelectCell(value: S extends 'single' ? K : K[]) => void—
Вызывается, когда пользователь выбирает ячейку. Получает список ключей выбранных ячеек.
onChangeActive(active: K) => void—
Вызывается при изменении активной (сфокусированной) ячейки.
refRef<HTMLDivElement>—
Ref на корневой элемент сетки.
apiRefRef<DataGridApiRef<K>>—
Ref на императивный API сетки. Предоставляет низкоуровневые структуры для сложных сценариев: grid — помощник навигации по матрице; keyMap — Map<K, [row, col]> для быстрого поиска
wrapDataGridWrap—
Режим зацикливания навигации. 'horizontal' — переход по столбцам в пределах строки; 'vertical' — переход по строкам в пределах столбца; 'both' — оба поведения; undefined — без зацикливания
excludeDataGridExclude<K>—
Исключает ячейки из обхода фокусом. Может быть: одним ключом; массивом ключей; предикатом (key) => boolean
rowDeltanumber—
Шаг навигации по строкам для PageUp/PageDown. undefined — переход к первой/последней строке; number — сдвиг на N строк относительно текущей
onArrow(e: KeyboardEvent<HTMLDivElement>, node: MatrixNode<HTMLElement, K>, prevNode: MatrixNode<HTMLElement, K>) => void—
Вызывается на каждом шаге навигации стрелками после смены фокуса

Также принимает все атрибуты <div>.

API дочерних частей

DataGridSelectableRowGroup

Группирует строки и может разделять области в продвинутых композициях.

ПропТипПо умолчанию
scopeDataGridScope—
Необязательная логическая группа для ячеек сетки. Позволяет DataGrid считать ячейки частью одной страницы или раздела.

Также принимает все атрибуты <div>.

DataGridSelectableRow

Одна строка ячеек матрицы.

ПропТипПо умолчанию
rowобязательныйnumber—
Индекс строки (с нуля) для всех дочерних ячеек. Передаётся потомкам через контекст.

Также принимает все атрибуты <div>.

DataGridSelectableCell

Одна выбираемая ячейка.

ПропТипПо умолчанию
disabledboolean—
Отключает выбор кликом и с клавиатуры. Переопределяет значение из корневого DataGrid
colобязательныйnumber—
Индекс столбца ячейки (с 0). Вместе с индексом строки из контекста строки образует координаты сетки: [row, col].
refRef<HTMLDivElement>—
Внешний ref на корневой элемент ячейки. Объединяется с внутренней регистрацией itemRef([row, col], key), если ячейка не исключена.
cellKeyDataGridCellKey—
Стабильный ключ, идентифицирующий ячейку в матрице DataGrid. Если не задан, ключ выводится из row/col как ${row}:${col}.
asChildbooleanfalse
Если true, рендерит дочерние элементы через Slot и передаёт пропсы и ref дочернему элементу вместо использования нативного <div>.
excludedboolean—
Исключает ячейки из обхода фокусом. Переопределяет значение из корневого DataGrid

Также принимает все атрибуты <div>.

  • модель ключей ячеек должна оставаться стабильной между рендерами

Хуки

useDataGridSelectableContext

Продвинутый хук для чтения состояния выбора и отключённости в собственных обёртках ячеек.

Типы

ТипОпределениеПримечания
DataGridSelectableProps<K, S>тип пропсов корняРасширяет DataGridProps<K>.
DataGridSelectableRowGroupPropsпропсы группы строкГруппировка и поведение областей.
DataGridSelectableRowPropsпропсы строкиМетаданные координаты строки.
DataGridSelectableCellPropsпропсы ячейкиКоордината ячейки и пропсы рендера.
DataGridSelection'single' | 'multiple' | 'range'Режим выбора.
DataGridDisabled<K>тип карты отключённых ячеекПредикат, список или ключ.

Модель состояния

  • Активное и выбранное состояния могут быть как контролируемыми, так и неконтролируемыми.
  • Режим диапазона использует логику расширения, управляемую клавиатурой и движением указателя.
  • Отключённые и исключённые ячейки меняют и выбор, и навигацию.

Заметки по интеграции

  • Сохраняйте стабильный порядок ключей при использовании compare и логики диапазонов.
  • Используйте DataGridPicker, когда визуальный слой пикера должен быть стандартным.
  • Проверяйте перетаскивание указателем, расширение с Shift и циклическую навигацию вместе в реальных сценариях.