@datavac/ui-kit 1.7.1 → 1.8.0-data-table.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/DataTable/DataTable.d.ts +2 -0
- package/dist/components/DataTable/DataTableRow.d.ts +18 -0
- package/dist/components/DataTable/index.d.ts +2 -0
- package/dist/components/DataTable/types.d.ts +77 -0
- package/dist/components/SortControl/SortControl.d.ts +10 -0
- package/dist/components/SortControl/index.d.ts +2 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +932 -696
- package/package.json +2 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { DataTableProps } from './types';
|
|
2
|
+
export declare function DataTable<T = Record<string, unknown>>({ columns, rows, isRowDisabled, onRowClick, getRowKey, sortField, sortDirection, onSortChange, mobileActionLabel, mobileDisabledLabel, tabletColumns, desktopBreakpoint, className, }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DataTableColumn, DesktopBreakpoint } from './types';
|
|
2
|
+
interface DataTableRowProps<T> {
|
|
3
|
+
row: T;
|
|
4
|
+
index: number;
|
|
5
|
+
columns: DataTableColumn<T>[];
|
|
6
|
+
isDisabled?: boolean;
|
|
7
|
+
hasAction?: boolean;
|
|
8
|
+
mobileActionLabel?: string;
|
|
9
|
+
/** @default "Нет сведений" */
|
|
10
|
+
mobileDisabledLabel?: string;
|
|
11
|
+
/** @default 3 */
|
|
12
|
+
tabletColumns?: number;
|
|
13
|
+
/** @default 'md' */
|
|
14
|
+
desktopBreakpoint?: DesktopBreakpoint;
|
|
15
|
+
onClick?: () => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function DataTableRow<T>({ row, index, columns, isDisabled, hasAction, mobileActionLabel, mobileDisabledLabel, tabletColumns, desktopBreakpoint, onClick, }: DataTableRowProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SortDirection } from '../SortControl';
|
|
3
|
+
export type { SortDirection };
|
|
4
|
+
/**
|
|
5
|
+
* Viewport-ширина, при которой включается desktop-layout (горизонтальная таблица).
|
|
6
|
+
* Используйте 'lg' для таблиц с 5+ колонками.
|
|
7
|
+
* @default 'md' (768px)
|
|
8
|
+
*/
|
|
9
|
+
export type DesktopBreakpoint = 'md' | 'lg';
|
|
10
|
+
/**
|
|
11
|
+
* Дескриптор колонки. Передайте дженерик-параметр для типизированного `render`:
|
|
12
|
+
* @example
|
|
13
|
+
* const columns: DataTableColumn<VaccineData>[] = [
|
|
14
|
+
* { key: 'name', label: 'Название', render: (row) => row.name },
|
|
15
|
+
* ]
|
|
16
|
+
*/
|
|
17
|
+
export interface DataTableColumn<T = Record<string, unknown>> {
|
|
18
|
+
key: string;
|
|
19
|
+
label: string;
|
|
20
|
+
/** Фиксированная ширина колонки в px или любая CSS-строка */
|
|
21
|
+
width?: string | number;
|
|
22
|
+
/** flex-grow для колонки (растягивается пропорционально) */
|
|
23
|
+
flex?: number;
|
|
24
|
+
/** Показать SortControl в заголовке (desktop) и включить колонку в мобильный Select */
|
|
25
|
+
sortable?: boolean;
|
|
26
|
+
/** Подсказка, которая появляется при наведении на иконку ⓘ в заголовке колонки. */
|
|
27
|
+
tooltip?: ReactNode;
|
|
28
|
+
/** Кастомный рендер ячейки. Если не задан — выводится значение row[key] */
|
|
29
|
+
render?: (row: T, index: number) => ReactNode;
|
|
30
|
+
/**
|
|
31
|
+
* Показывать колонку только в desktop-таблице.
|
|
32
|
+
* В планшетных и мобильных карточках колонка скрывается.
|
|
33
|
+
*/
|
|
34
|
+
desktopOnly?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface DataTableProps<T = Record<string, unknown>> {
|
|
37
|
+
columns: DataTableColumn<T>[];
|
|
38
|
+
rows: T[];
|
|
39
|
+
/** Делает строку недоступной для клика; меняет стиль на fgMuted */
|
|
40
|
+
isRowDisabled?: (row: T) => boolean;
|
|
41
|
+
/** Вызывается только для активных строк */
|
|
42
|
+
onRowClick?: (row: T) => void;
|
|
43
|
+
/** Уникальный ключ строки для React; по умолчанию — индекс */
|
|
44
|
+
getRowKey?: (row: T, index: number) => string;
|
|
45
|
+
/** Текущее поле сортировки */
|
|
46
|
+
sortField?: string;
|
|
47
|
+
/** Текущее направление сортировки */
|
|
48
|
+
sortDirection?: SortDirection;
|
|
49
|
+
/** Сортировку данных делает родитель; DataTable лишь сигнализирует об изменении */
|
|
50
|
+
onSortChange?: (field: string, direction: SortDirection) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Текст бейджа в мобильной карточке (< 480px) для активной строки.
|
|
53
|
+
* Показывается в правом верхнем углу первого поля, когда задан onRowClick.
|
|
54
|
+
* На планшете бейдж не показывается — только стрелка.
|
|
55
|
+
* @default "Подробнее"
|
|
56
|
+
*/
|
|
57
|
+
mobileActionLabel?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Текст бейджа в мобильной карточке (< 480px) для disabled-строки.
|
|
60
|
+
* Показывается вместо mobileActionLabel когда строка недоступна.
|
|
61
|
+
* @default "Нет сведений"
|
|
62
|
+
*/
|
|
63
|
+
mobileDisabledLabel?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Количество колонок в строке планшетной карточки.
|
|
66
|
+
* Если колонок больше — они переносятся на новые строки с тем же шагом.
|
|
67
|
+
* @default 3
|
|
68
|
+
*/
|
|
69
|
+
tabletColumns?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Viewport-ширина, при которой включается desktop-layout.
|
|
72
|
+
* Используйте 'lg' (1024px) для таблиц с 5+ колонками.
|
|
73
|
+
* @default 'md' (768px)
|
|
74
|
+
*/
|
|
75
|
+
desktopBreakpoint?: DesktopBreakpoint;
|
|
76
|
+
className?: string;
|
|
77
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type SortDirection = 'asc' | 'desc';
|
|
2
|
+
export interface SortControlProps {
|
|
3
|
+
label: string;
|
|
4
|
+
field: string;
|
|
5
|
+
active: boolean;
|
|
6
|
+
direction: SortDirection;
|
|
7
|
+
onChange: (field: string, direction: SortDirection) => void;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function SortControl({ label, field, active, direction, onChange, className, }: SortControlProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export type IconProps = SVGProps<SVGSVGElement>;
|
|
|
3
3
|
export declare function ArrowDownArrowUpIcon({ width, height, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
export declare function ArrowDownToBracketIcon({ width, height, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
export declare function ArrowUpRightFromSquareIcon({ width, height, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare function ArrowIcon({ width, height, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
6
7
|
export declare function ArrowsIcon({ width, height, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export declare function BottleIcon({ width, height, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
export declare function ChevronDownIcon({ width, height, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
|