0.36.6 • Published 2 months ago

@snack-uikit/table v0.36.6

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 months ago

Table

Installation

npm i @snack-uikit/table

Changelog

TODO:

  • multiple row selection with Shift key pressed

Примечание

Для оптимальной работы таблицы используйте useMemo для columnDefinitions или выносите их определение за компонент

Example

import { Table } from '@snack-uikit/table';

// ...

type TableData = {
  id: string;
  firstName: string;
  lastName: string;
  age: number;
  status: string;
}

const columnDefinitions: ColumnDefinition<TableData>[] = [
  Table.getStatusColumnDef<Person>({
    accessorKey: 'status',
    mapStatusToAppearance: {
      pending: Table.statusAppearances.Blue,
      success: Table.statusAppearances.Green,
      // ... etc
    },
    header: 'Статус',
    renderDescription: (value: string) => t(translations.statuses[value]),
    size: 250,
  }),
  {
    accessorKey: 'id',
  },
  {
    // id, size - обязательны при передаче pinned
    id: 'firstName',
    size: 140,
    pinned: 'left',
    accessorKey: 'firstName',
    header: 'Имя',
    enableSorting: true,
    sortDescFirst: true,
  },
  {
    accessorKey: 'lastName',
    header: 'Фамилия',
    cell: ctx => <div className='custom'>{ctx.getValue<string>()}</div>,
    maxSize: 200,
    enableSorting: false,
  },
  {
    accessorKey: 'age',
    header: ctx => `Можно добавить хедер так: ${ctx.column.id}`,
    minSize: 40,
  },
  Table.getRowActionsColumnDef({
    pinned: true,
    actionsGenerator: () => [
      {
        option: 'Действие с иконкой',
        icon: <PlaceholderSVG />,
        onClick: handleRowActionClick,
      },
      {
        option: 'Другое действие',
        onClick: handleRowActionClick,
      },
    ],
  })
];

// ...

<Table
  columnDefinitions={columnDefinitions}
  data={data}
  rowSelection={{
    enable: true, // false выключает выбор всех строк (состояние disabled)
    // или можно передать функцию для вычисления
    // enable: row => !['Pending', 'Loading'].includes(row.original.status),
    onChange: handleRowSelection,
  }}
/>

CopyCell

Props

nametypedefault valuedescription
valuestring \| number-

Table

Компонент таблицы

Props

nametypedefault valuedescription
columnDefinitions*ColumnDefinition<TData>[]-Определение внешнего вида и функционала колонок
data*TData[]-Данные для отрисовки
keepPinnedRowsboolean-Параметр отвечает за отображение закрепленных строк на всех страницах таблицы
copyPinnedRowsboolean-Параметр отвечает за сохранение закрепленных строк в теле таблицы
enableSelectPinnedboolean-Параметр отвечает за чекбокс выбора закрепленных строк
sorting{ initialState?: SortingState; state?: SortingState; onChange?(state: SortingState): void; }-Параметры отвечают за возможность сортировки, их стоит использовать если нужно отслеживать состояние initialState: Начальное состояние сортировки state: Состояние сортировки, жестко устанавливаемое снаружи onChange: Колбэк на изменение сортировки
rowSelection{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; }-Параметры отвечают за возможность выбора строк initialState: Начальное состояние выбора строк state: Состояние выбора строк, жестко устанавливаемое снаружи enable: Колбэк определяющий можно ли выбрать строку multiRow: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) onChange: Колбэк на выбор строк
search{ initialState?: string; state?: string; placeholder?: string; loading?: boolean; onChange?(value: string): void; }'Search' loading: Состояние загрузки в строке поиска onChange: Колбэк на изменение данных в строке поискаПараметры отвечают за глобальный поиск в таблице initialState: Начальное состояние строки поиска state: Состояние строки поиска, жестко устанавливаемое снаружи placeholder: Placeholder строки поиска
enableFuzzySearchboolean-Включить нечеткий поиск
pageSizenumber10Максимальное кол-во строк на страницу
pagination{ state?: PaginationState; options?: number[]; optionsLabel?: string; onChange?(state: PaginationState): void; optionsRender?(value: string \| number, idx: number): string \| number; }'Rows volume: ' onChange: Колбэк на изменение пагинацииПараметры отвечают за пагинацию в таблице state: Состояние строки поиска, жестко устанавливаемое снаружи options: Варианты в выпадающем селекторе для установки кол-ва строк на страницу optionsLabel: Текст для селектора кол-ва строк на страницу
autoResetPageIndexboolean-Автоматический сброс пагинации к первой странице при изменении данных или состояния (e.g фильтры, сортировки, и т.д)
pageCountnumber-Кол-во страниц (используется для внешнего управления)
onRowClickRowClickHandler<TData>-Колбэк клика по строке
classNamestring-CSS-класс
loadingboolean-Состояние загрузки
onRefresh() => void-Колбек обновления данных
onDelete(selectionState: RowSelectionState, resetRowSelection: (defaultState?: boolean) => void) => void-Колбек удаления выбранных
outlineboolean-Внешний бордер для тулбара и таблицы
columnFiltersReactNode-Фильтры
dataFilteredboolean-
dataErrorboolean-
exportSettings{ fileName: string; filterData?: boolean; exportToCSV?(args: ExportProps<TData>): void; exportToXLSX?(args: ExportProps<TData>): void; }-Настройки экспорта в тулбаре
moreActionsAction[]-Элементы выпадающего списка кнопки с действиями
noDataStateEmptyStateProps-Экран при отстутствии данных
noResultsStateEmptyStateProps-Экран при отстутствии результатов поиска или фильтров
errorDataStateEmptyStateProps-Экран при ошибке запроса
suppressToolbarboolean-Отключение тулбара
toolbarBeforeReactNode-Дополнительный слот в Toolbar перед строкой поиска
toolbarAfterReactNode-Дополнительный слот в Toolbar после строки поиска
suppressPaginationboolean-Отключение пагинации
manualSortingboolean-
manualPaginationboolean-
manualFilteringboolean-
getRowId(originalRow: TData, index: number, parent?: Row<TData>) => string-Дополнительная функция используется для получения уникального идентификатора для любой заданной строки
scrollRefRefObject<HTMLElement>-Ссылка на элемент, обозначающий самый конец прокручиваемого списка
scrollContainerRefRefObject<HTMLElement>-Ссылка на контейнер, который скроллится
rowPinningPick<RowPinningState, "top">{ top: [], }Определение какие строки должны быть закреплены в таблице
savedState{ id: string; resize?: boolean; }-Конфиг для сохранения состояния в localStorage. Поле id должно быть уникальным для разных таблиц в рамках приложения. Для корректной работы необходимо наличие id в конфиге columnDefinitions

Table.getStatusColumnDef

Вспомогательная функция для создания ячейки со статусом

Props

nametypedefault valuedescription
mapStatusToAppearance*MapStatusToAppearanceFnType-Маппинг значений статуса на цвета
accessorKey*string-Имя ключа соответствующее полю в data
enableSortingbooleantrueВключение/выключение сортировки
renderDescription(cellValue: string, row: TData) => string-Функция для отрисовки текста, если не передана, то будет отрисован только индикатор статуса
sizenumber-Размер ячейки
minSizenumber-
maxSizenumber-
headerColumnDefTemplate<HeaderContext<TData, unknown>> & (string \| ((ctx: HeaderContext<TData, unknown>) => string))-Заголовок колонки
enableResizingboolean-Включение/выключение ресайза колонки

Table.getRowActionsColumnDef

Вспомогательная функция для создания ячейки с дополнительными действиями у строки

Props

nametypedefault valuedescription
actionsGenerator*ActionsGenerator<TData>-Действия для строки
pinnedboolean-Закрепление колонки справа в таблице

ServerTable

Props

nametypedefault valuedescription
onChangePage*(offset: number, limit: number) => void-
columnDefinitions*ColumnDefinition<TData>[]-Определение внешнего вида и функционала колонок
keepPinnedRowsbooleanfalseПараметр отвечает за отображение закрепленных строк на всех страницах таблицы
copyPinnedRowsbooleanfalseПараметр отвечает за сохранение закрепленных строк в теле таблицы
enableSelectPinnedboolean-Параметр отвечает за чекбокс выбора закрепленных строк
sorting{ initialState?: SortingState; state?: SortingState; onChange?(state: SortingState): void; }-Параметры отвечают за возможность сортировки, их стоит использовать если нужно отслеживать состояние initialState: Начальное состояние сортировки state: Состояние сортировки, жестко устанавливаемое снаружи onChange: Колбэк на изменение сортировки
rowSelection{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; }-Параметры отвечают за возможность выбора строк initialState: Начальное состояние выбора строк state: Состояние выбора строк, жестко устанавливаемое снаружи enable: Колбэк определяющий можно ли выбрать строку multiRow: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) onChange: Колбэк на выбор строк
enableFuzzySearchboolean-Включить нечеткий поиск
autoResetPageIndexboolean-Автоматический сброс пагинации к первой странице при изменении данных или состояния (e.g фильтры, сортировки, и т.д)
onRowClickRowClickHandler<TData>-Колбэк клика по строке
classNamestring-CSS-класс
loadingboolean-Состояние загрузки
onRefresh() => void-Колбек обновления данных
onDelete(selectionState: RowSelectionState, resetRowSelection: (defaultState?: boolean) => void) => void-Колбек удаления выбранных
outlineboolean-Внешний бордер для тулбара и таблицы
columnFiltersReactNode-Фильтры
dataFilteredboolean-
dataErrorboolean-
exportSettings{ fileName: string; filterData?: boolean; exportToCSV?(args: ExportProps<TData>): void; exportToXLSX?(args: ExportProps<TData>): void; }-Настройки экспорта в тулбаре
moreActionsAction[]-Элементы выпадающего списка кнопки с действиями
noDataStateEmptyStateProps-Экран при отстутствии данных
noResultsStateEmptyStateProps-Экран при отстутствии результатов поиска или фильтров
errorDataStateEmptyStateProps-Экран при ошибке запроса
suppressToolbarboolean-Отключение тулбара
toolbarBeforeReactNode-Дополнительный слот в Toolbar перед строкой поиска
toolbarAfterReactNode-Дополнительный слот в Toolbar после строки поиска
suppressPaginationboolean-Отключение пагинации
manualSortingbooleantrue
manualPaginationbooleantrue
manualFilteringbooleantrue
getRowId(originalRow: TData, index: number, parent?: Row<TData>) => string-Дополнительная функция используется для получения уникального идентификатора для любой заданной строки
scrollRefRefObject<HTMLElement>-Ссылка на элемент, обозначающий самый конец прокручиваемого списка
scrollContainerRefRefObject<HTMLElement>-Ссылка на контейнер, который скроллится
rowPinningPick<RowPinningState, "top">-Определение какие строки должны быть закреплены в таблице
savedState{ id: string; resize?: boolean; }-Конфиг для сохранения состояния в localStorage. Поле id должно быть уникальным для разных таблиц в рамках приложения. Для корректной работы необходимо наличие id в конфиге columnDefinitions
itemsTData[]-Данные для отрисовки
totalnumber10Общее кол-во строк
limitnumber10Кол-во строк на страницу
offsetnumber-Смещение
search{ initialValue?: string; state: string; placeholder?: string; loading?: boolean; onChange(value: string): void; }'Search...' loading: Состояние загрузки в строке поиска onChange: Колбэк на изменение данных в строке поискаПараметры отвечают за глобальный поиск в таблице initialState: Начальное состояние строки поиска state: Состояние строки поиска, жестко устанавливаемое снаружи placeholder: Placeholder строки поиска
pagination{ options?: number[]; optionsLabel?: string; }'Rows volume' Параметры отвечают за пагинацию в таблице options: Варианты в выпадающем селекторе для установки кол-ва строк на страницу optionsLabel: Текст для селектора кол-ва строк на страницу

ServerTable.getRowActionsColumnDef

Вспомогательная функция для создания ячейки с дополнительными действиями у строки

Props

nametypedefault valuedescription
actionsGenerator*ActionsGenerator<TData>-Действия для строки
pinnedboolean-Закрепление колонки справа в таблице

ServerTable.getStatusColumnDef

Вспомогательная функция для создания ячейки со статусом

Props

nametypedefault valuedescription
mapStatusToAppearance*MapStatusToAppearanceFnType-Маппинг значений статуса на цвета
accessorKey*string-Имя ключа соответствующее полю в data
enableSortingbooleantrueВключение/выключение сортировки
renderDescription(cellValue: string, row: TData) => string-Функция для отрисовки текста, если не передана, то будет отрисован только индикатор статуса
sizenumber-Размер ячейки
minSizenumber-
maxSizenumber-
headerColumnDefTemplate<HeaderContext<TData, unknown>> & (string \| ((ctx: HeaderContext<TData, unknown>) => string))-Заголовок колонки
enableResizingboolean-Включение/выключение ресайза колонки

exportToCSV

Props

nametypedefault valuedescription
columnDefinitions*ColumnDefinition<TData>[]-
data*TData[]-
fileNamestringTable

exportToXLSX

Props

nametypedefault valuedescription
columnDefinitions*ColumnDefinition<TData>[]-
data*TData[]-
fileNamestringTable
0.32.0

5 months ago

0.33.4

5 months ago

0.33.3

5 months ago

0.33.2

5 months ago

0.33.1

5 months ago

0.33.0

5 months ago

0.30.0

5 months ago

0.31.1

5 months ago

0.31.0

5 months ago

0.25.14

8 months ago

0.25.15

8 months ago

0.25.16

8 months ago

0.25.17

8 months ago

0.36.4

3 months ago

0.25.10

8 months ago

0.36.3

3 months ago

0.25.11

8 months ago

0.36.2

3 months ago

0.25.12

8 months ago

0.36.1

3 months ago

0.25.13

8 months ago

0.36.0

3 months ago

0.36.6

2 months ago

0.36.5

2 months ago

0.25.4

9 months ago

0.25.3

9 months ago

0.25.2

9 months ago

0.25.9

9 months ago

0.25.8

9 months ago

0.25.7

9 months ago

0.25.6

9 months ago

0.25.5

9 months ago

0.26.3

7 months ago

0.26.2

7 months ago

0.26.1

7 months ago

0.26.0

7 months ago

0.26.7

6 months ago

0.26.6

6 months ago

0.26.5

7 months ago

0.26.4

7 months ago

0.34.6

5 months ago

0.34.5

5 months ago

0.34.4

5 months ago

0.34.3

5 months ago

0.34.2

5 months ago

0.34.1

5 months ago

0.34.0

5 months ago

0.34.9

5 months ago

0.34.8

5 months ago

0.34.7

5 months ago

0.35.4

3 months ago

0.35.3

4 months ago

0.35.2

4 months ago

0.35.1

4 months ago

0.35.0

4 months ago

0.29.0

5 months ago

0.27.2

6 months ago

0.27.1

6 months ago

0.27.0

6 months ago

0.27.3

6 months ago

0.28.1

6 months ago

0.28.0

6 months ago

0.28.7

5 months ago

0.28.6

5 months ago

0.28.5

6 months ago

0.28.4

6 months ago

0.28.3

6 months ago

0.28.2

6 months ago

0.25.1

9 months ago

0.25.0

9 months ago

0.24.0

9 months ago

0.23.8

9 months ago

0.23.7

10 months ago

0.23.6

10 months ago

0.23.5

10 months ago

0.23.4

10 months ago

0.23.3

10 months ago

0.23.2

10 months ago

0.20.1

1 year ago

0.20.0

1 year ago

0.17.5

1 year ago

0.17.6

1 year ago

0.17.7

1 year ago

0.17.8

1 year ago

0.17.9

1 year ago

0.21.1

12 months ago

0.21.0

12 months ago

0.18.1

1 year ago

0.18.0

1 year ago

0.22.2

11 months ago

0.22.1

11 months ago

0.22.0

12 months ago

0.20.9

12 months ago

0.20.8

12 months ago

0.20.7

1 year ago

0.20.6

1 year ago

0.20.5

1 year ago

0.20.4

1 year ago

0.20.3

1 year ago

0.20.2

1 year ago

0.19.0

1 year ago

0.19.1

1 year ago

0.19.2

1 year ago

0.19.3

1 year ago

0.19.4

1 year ago

0.19.5

1 year ago

0.19.6

1 year ago

0.23.1

10 months ago

0.23.0

11 months ago

0.20.13

12 months ago

0.20.11

12 months ago

0.20.12

12 months ago

0.20.10

12 months ago

0.17.4

1 year ago

0.17.3

1 year ago

0.17.2

1 year ago

0.17.1

1 year ago

0.17.0

1 year ago

0.16.8

1 year ago

0.16.6

1 year ago

0.16.7

1 year ago

0.16.5

1 year ago

0.16.4

1 year ago

0.16.3

1 year ago

0.16.1

1 year ago

0.16.2

1 year ago

0.16.0

1 year ago

0.15.1

1 year ago

0.15.0

1 year ago

0.14.18

1 year ago

0.14.17

1 year ago

0.14.16

1 year ago

0.14.15

1 year ago

0.14.14

1 year ago

0.14.13

1 year ago

0.14.12

1 year ago

0.14.11

1 year ago

0.14.10

1 year ago

0.14.9

1 year ago

0.14.6

1 year ago

0.14.7

1 year ago

0.14.8

1 year ago

0.14.5

1 year ago

0.14.4

1 year ago

0.14.3

1 year ago

0.14.1

1 year ago

0.14.2

1 year ago

0.13.3

1 year ago

0.14.0

1 year ago

0.13.2

1 year ago

0.13.1

1 year ago

0.13.0

1 year ago

0.12.1

1 year ago

0.12.0

1 year ago

0.11.6

1 year ago

0.11.7

1 year ago

0.11.4

2 years ago

0.11.5

2 years ago

0.11.3

2 years ago

0.11.2

2 years ago

0.11.1

2 years ago

0.10.2

2 years ago

0.10.1

2 years ago

0.10.0

2 years ago

0.9.0

2 years ago

0.8.9

2 years ago

0.8.8

2 years ago

0.8.5

2 years ago

0.8.4

2 years ago

0.8.7

2 years ago

0.8.6

2 years ago

0.8.3

2 years ago

0.8.2

2 years ago

0.8.1

2 years ago

0.8.0

2 years ago

0.7.2

2 years ago

0.7.1

2 years ago

0.7.0

2 years ago