0.17.0 • Published 3 days ago

@snack-uikit/table v0.17.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 days 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[]-Данные для отрисовки
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{ initialValue?: 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; }'Rows volume: ' onChange: Колбэк на изменение пагинацииПараметры отвечают за пагинацию в таблице state: Состояние строки поиска, жестко устанавливаемое снаружи options: Варианты в выпадающем селекторе для установки кол-ва строк на страницу optionsLabel: Текст для селектора кол-ва строк на страницу
pageCountnumber-Кол-во страниц (используется для внешнего управления)
onRowClickRowClickHandler<TData>-Колбэк клика по строке
classNamestring-CSS-класс
loadingboolean-Состояние загрузки
onRefresh() => void-Колбек обновления данных
onDelete(selectionState: RowSelectionState, resetRowSelection: (defaultState?: boolean) => void) => void-Колбек удаления выбранных
outlineboolean-Внешний бордер для тулбара и таблицы
columnFiltersReactNode-Фильтры
dataFilteredboolean-
dataErrorboolean-
exportFileNamestring-Название файла при экспорте CSV/XLSX
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>-Ссылка на контейнер, который скроллится

Table.getStatusColumnDef

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

Props

nametypedefault valuedescription
mapStatusToAppearance*MapStatusToAppearanceFnType-Маппинг значений статуса на цвета
accessorKey*string-Имя ключа соответствующее полю в data
enableSortingboolean-Включение/выключение сортировки
renderDescription(cellValue: string) => string-Функция для отрисовки текста, если не передана, то будет отрисован только индикатор статуса
sizenumber-Размер ячейки
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>[]-Определение внешнего вида и функционала колонок
loadingboolean-Состояние загрузки
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-Включить нечеткий поиск
onRowClickRowClickHandler<TData>-Колбэк клика по строке
classNamestring-CSS-класс
onRefresh() => void-Колбек обновления данных
onDelete(selectionState: RowSelectionState, resetRowSelection: (defaultState?: boolean) => void) => void-Колбек удаления выбранных
outlineboolean-Внешний бордер для тулбара и таблицы
columnFiltersReactNode-Фильтры
dataFilteredboolean-
dataErrorboolean-
exportFileNamestring-Название файла при экспорте CSV/XLSX
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>-Ссылка на контейнер, который скроллится
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
enableSortingboolean-Включение/выключение сортировки
renderDescription(cellValue: string) => string-Функция для отрисовки текста, если не передана, то будет отрисован только индикатор статуса
sizenumber-Размер ячейки
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.17.0

3 days ago

0.16.8

3 days ago

0.16.6

15 days ago

0.16.7

15 days ago

0.16.5

17 days ago

0.16.4

18 days ago

0.16.3

18 days ago

0.16.1

20 days ago

0.16.2

20 days ago

0.16.0

25 days ago

0.15.1

1 month ago

0.15.0

1 month ago

0.14.18

2 months ago

0.14.17

2 months ago

0.14.16

2 months ago

0.14.15

2 months ago

0.14.14

2 months ago

0.14.13

2 months ago

0.14.12

2 months ago

0.14.11

2 months ago

0.14.10

2 months ago

0.14.9

2 months ago

0.14.6

3 months ago

0.14.7

2 months ago

0.14.8

2 months ago

0.14.5

3 months ago

0.14.4

3 months ago

0.14.3

3 months ago

0.14.1

3 months ago

0.14.2

3 months ago

0.13.3

3 months ago

0.14.0

3 months ago

0.13.2

3 months ago

0.13.1

3 months ago

0.13.0

3 months ago

0.12.1

3 months ago

0.12.0

3 months ago

0.11.6

3 months ago

0.11.7

3 months ago

0.11.4

3 months ago

0.11.5

3 months ago

0.11.3

3 months ago

0.11.2

3 months ago

0.11.1

3 months ago

0.10.2

4 months ago

0.10.1

4 months ago

0.10.0

4 months ago

0.9.0

4 months ago

0.8.9

4 months ago

0.8.8

5 months ago

0.8.5

5 months ago

0.8.4

5 months ago

0.8.7

5 months ago

0.8.6

5 months ago

0.8.3

5 months ago

0.8.2

5 months ago

0.8.1

5 months ago

0.8.0

5 months ago

0.7.2

5 months ago

0.7.1

5 months ago

0.7.0

5 months ago