~/tablv2.4.1
0звёздНачать

v2.4 · headless-таблица для React

Таблица легче, чем ваш favicon

Сортировка, группировка, виртуализация и типы — без единого стиля. tabl отдаёт данные и поведение, разметку рисуете вы.

npm i tabl
  • 4 КБ gzip
  • TypeScript
  • 0 зависимостей
  • MIT
$ 

// песочница

Попробуйте, не устанавливая

Каждый переключатель — одна опция в коде. Слева то, что вы напишете, справа то, что получите.

  1. Сортировка

    sort: { by: "size" } — одна строка, и колонка отсортирована. Стабильно, с любым компаратором.

  2. Группировка

    groupBy: "type" — строки собираются под заголовки с числом. Итоги считаются сами.

  3. Зебра

    view.zebra — чётные строки подкрашены, длинную таблицу читать легче.

  4. Компактно

    density: "compact" — на треть больше строк в том же окне. Всё ещё ваша разметка.

table.tsx
import { useTable } from "tabl"

const table = useTable({
  data,
  columns: ["name", "type", "size", "updated"],
})

return <Table {...table.props} />
результат
nametypesize, kbupdated
invoice-0412.pdfpdf412сегодня
logo.svgimage18вчера
report-q3.xlsxsheet12903 дня
cover.webpimage240неделю
contract.pdfpdf980месяц
budget.xlsxsheet2100месяц

// возможности

Всё, что нужно таблице. Ничего, что не нужно

Шесть вещей, которые вы обычно пишете сами и потом чините. Здесь они написаны один раз.

Виртуализация из коробки

48 000 строк рендерятся как 12: в DOM только то, что в окне. Включается сама, когда строк больше двухсот.

Сортировка

По любой колонке, с кастомным компаратором и стабильным порядком.

Тема — ваша

Ни одного стиля внутри. Светлая, тёмная, фирменная — таблица подхватывает любую.

Типы выводятся из данных

Колонки знают тип ячеек: редактор подскажет, TypeScript проверит.

Группировка

Один ключ — и строки собираются в раскрывающиеся группы с итогами.

4 КБ и ноль зависимостей

Меньше, чем иконка. Дерево-шейкинг: берёте только то, что используете.

// сравнение

Меньше значит быстрее

Размер после gzip у headless-таблиц для React. Данные с bundlephobia на день релиза 2.4.

gzip, минимальный импорт

  • tabl2.4.10.0 КБ
  • react-table8.x0.0 КБ
  • ag-grid community31.x0 КБ
  • mui data grid7.x0 КБ
    В 4,1 КБ входит
  • сортировка
  • группировка
  • виртуализация
  • типы колонок
  • SSR
  • выделение строк

Измерено `import { useTable }` без стилей. Полный набор фич tabl — 6,8 КБ.

// сообщество

Сделано 214 людьми из 31 страны

Каждый пулреквест ревьюят двое мейнтейнеров, каждый релиз проходит 1 900 тестов. Присоединяйтесь — good first issue всегда есть.

  • 0контрибьюторов
  • 0звёзд на GitHub
  • 0Mмлн установок в месяц
0+0 за месяц

звёзды на GitHub · 12 месяцев

// история версий

Что менялось

Семантические версии, ломающие изменения помечены. Полный список — в CHANGELOG.md.

Весь changelog →
    • строки разной высоты без замера заранее — ResizeObserver по мере появления
    • `table.scrollTo(rowIndex)` для программной прокрутки
    • исправлен дребезг при быстрой прокрутке на трекпаде
    • `groupBy` принимает функцию, а не только ключ
    • агрегаты `sum`, `avg`, `count` в строке группы
    • события `onGroupToggle` с состоянием
    • колонка может быть функцией от строки — тип выводится автоматически
    • `ColumnDef<T>` экспортируется для внешних описаний
    • документация по типам переписана
    • удалён компонент `<Table>` со стилями — только хук `useTable`
    • `onSort` теперь получает `{ by, dir }` вместо двух аргументов
    • размер бандла 4,1 КБ вместо 11
    • React 19 и Server Components

Одна звезда плюс один мейнтейнер

Звёзды на GitHub — единственная метрика, по которой проект попадает в подборки и находит людей. Если tabl сэкономил вам вечер — верните минуту.

Star on GitHubОткрыть на npmnpm i tabl