@mdtl/uikit 0.0.50 → 0.0.52
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/Table/AddingRowTemplate.d.ts +4 -0
- package/dist/components/Table/BasicTable.d.ts +34 -0
- package/dist/components/Table/Cell/Cell.d.ts +8 -0
- package/dist/components/Table/Cell/CellColumnContent.d.ts +11 -0
- package/dist/components/Table/Cell/ItemActions.d.ts +9 -0
- package/dist/components/Table/Cell/RowCell.d.ts +9 -0
- package/dist/components/Table/Cell/TileCell.d.ts +9 -0
- package/dist/components/Table/DraggableTableHeaderCell.d.ts +4 -0
- package/dist/components/Table/Row/DraggableRow.d.ts +9 -0
- package/dist/components/Table/Row/Row.d.ts +4 -0
- package/dist/components/Table/Row/TableRowWrapper.d.ts +9 -0
- package/dist/components/Table/TableBody.d.ts +9 -0
- package/dist/components/Table/TableFooter.d.ts +9 -0
- package/dist/components/Table/TableHeader.d.ts +9 -0
- package/dist/components/Table/TableHeaderCell.d.ts +4 -0
- package/dist/components/Table/TableLoader.d.ts +7 -0
- package/dist/components/Table/controls/constants.d.ts +6 -0
- package/dist/components/Table/interfaces/interfaces.d.ts +614 -0
- package/dist/components/Table/utils/DataFormat.d.ts +20 -0
- package/dist/components/Table/utils/Drag.d.ts +4 -0
- package/dist/components/Table/utils/hooks/useOverflowShadow.d.ts +7 -0
- package/dist/components/Table/utils/util.d.ts +77 -0
- package/dist/components/Tabs/Tabs.d.ts +2 -2
- package/dist/uikit.js +5 -5
- package/package.json +17 -4
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { AddingButtonRowTemplateProps } from './interfaces/interfaces';
|
|
3
|
+
declare const AddingButtonRowTemplate: <TData>({ text, onClick, colSpan, infoTooltip, overflowShadow, isNewRowCreated, setIsNewRowCreated, dataUpdateCallback, columns, tableData, setEditedRow, onStartRowEdit, itemActions, }: AddingButtonRowTemplateProps<TData>) => React.JSX.Element;
|
|
4
|
+
export default AddingButtonRowTemplate;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { JSX } from 'react';
|
|
2
|
+
import { ITableProps, IHashMap, THeadCellType } from './interfaces/interfaces';
|
|
3
|
+
import { Row, RowData } from '@tanstack/react-table';
|
|
4
|
+
declare module '@tanstack/table-core' {
|
|
5
|
+
interface ColumnDefBase<TData extends RowData, TValue = unknown> {
|
|
6
|
+
editTemplate?: (row: TData, props: IHashMap) => JSX.Element;
|
|
7
|
+
editable: boolean;
|
|
8
|
+
template?: (row: Row<TData>, props: IHashMap) => JSX.Element;
|
|
9
|
+
footerTemplate?: (row: IHashMap) => JSX.Element;
|
|
10
|
+
field: string;
|
|
11
|
+
type?: THeadCellType;
|
|
12
|
+
sorting: boolean;
|
|
13
|
+
width: number;
|
|
14
|
+
colSizeVarId: string;
|
|
15
|
+
backgroundColorCallback?: (row: TData) => string | undefined;
|
|
16
|
+
accessorKey?: string;
|
|
17
|
+
folder?: any;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export interface AdditionalRowFields {
|
|
21
|
+
hasChildren?: boolean;
|
|
22
|
+
parentId?: string;
|
|
23
|
+
level?: number;
|
|
24
|
+
subRows?: any;
|
|
25
|
+
isDragDisabled?: boolean;
|
|
26
|
+
nodeType?: number;
|
|
27
|
+
field?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Содержимое таблицы
|
|
31
|
+
* @param props
|
|
32
|
+
* @returns {JSX.Element}
|
|
33
|
+
*/
|
|
34
|
+
export declare const BasicTable: <TData extends AdditionalRowFields>({ columns, keyProperty, addingRowTemplate, onSettingsClick, viewMode, adaptive, hiddenHeader, root, data, itemActions, operations, multiselectVisibility, disableSelectAll, singleSelect, onItemClick, onRootChanged, itemActionsVisibilityCallback, editable, rowDraggable, onItemActionClick, onAcceptRowEdit, onStartRowEdit, onCancelRowEdit, emptyText, emptyTemplate, itemsPerPage, selectedKeysChangedCallback, expandedKeysChangedCallback, selectedItems, errorMessage, minWidth, treeSearchTypeChildren, dataUpdateCallback, sx, selectedRow, selectable, expandable, virtualization, localDataMode, multipleSortEnabled, rowBackgroundCallback, columnSizeChangedCallback, columnPinningChangedCallback, columnPinning: columnPinningProps, addingRowText, showTransposedTooltip, itemActionsDisabledTooltip, columnOrderChangedCallback, expandAllMethod, enableDrop, enableRowDragCallback, highlightDragOverRow, isFetchingMore, loading, hasMore, inSearch, inSelect, totalSumValues, getExpandData, loadMore, handleRequestSort, handleMultipleSort, getSortOrder, getSortDirection, order, orderBy, tableViewMode, name, changeRootCallback, loadedRows, ...props }: ITableProps<TData>) => JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ICellColumnProps, THeadCellType } from '../interfaces/interfaces';
|
|
3
|
+
declare module '@mui/material/OutlinedInput' {
|
|
4
|
+
interface OutlinedInputProps {
|
|
5
|
+
type?: THeadCellType;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Отрисовка шаблона / текста в ячейке
|
|
10
|
+
*/
|
|
11
|
+
export declare const CellColumnContent: <TData>(props: ICellColumnProps<TData>) => React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { IItemActionsProps } from '../interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from '../BasicTable';
|
|
4
|
+
/**
|
|
5
|
+
* Действия над записью
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare const ItemActions: <TData extends AdditionalRowFields>(props: IItemActionsProps<TData>) => React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { IRowCellProps } from '../interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from '../BasicTable';
|
|
4
|
+
/**
|
|
5
|
+
* Ячейки таблицы, образующие строку
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare const RowCell: <TData extends AdditionalRowFields>(props: IRowCellProps<TData>) => React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ITillCellProps } from '../interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from '../BasicTable';
|
|
4
|
+
/**
|
|
5
|
+
* Плоская ячейка-плитка
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns {JSX.Element}
|
|
8
|
+
*/
|
|
9
|
+
export declare const TillCell: <TData extends AdditionalRowFields>(props: ITillCellProps<TData>) => React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ITableRowProps } from '../interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from '../BasicTable';
|
|
4
|
+
/**
|
|
5
|
+
* Перетаскиваемая строка
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns {JSX.Element}
|
|
8
|
+
*/
|
|
9
|
+
export declare const DraggableRow: <TData extends AdditionalRowFields>(props: ITableRowProps<TData>) => React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ITableRowWrapperProps } from '../interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from '../BasicTable';
|
|
4
|
+
/**
|
|
5
|
+
* Обертка для строки, которая определяет будет строка draggable или обычной
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns {JSX.Element}
|
|
8
|
+
*/
|
|
9
|
+
export declare const TableRowWrapper: <TData extends AdditionalRowFields>(props: ITableRowWrapperProps<TData>) => React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ITableBodyProps } from './interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from './BasicTable';
|
|
4
|
+
/**
|
|
5
|
+
* Тело таблицы
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns {JSX.Element}
|
|
8
|
+
*/
|
|
9
|
+
export declare function TableBody<TData extends AdditionalRowFields>(props: ITableBodyProps<TData>): React.JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { IHashMap } from './interfaces/interfaces';
|
|
3
|
+
import { HeaderGroup } from '@tanstack/react-table';
|
|
4
|
+
interface ITableFooterProps<TData> {
|
|
5
|
+
footerGroups: HeaderGroup<TData>[];
|
|
6
|
+
totalValues: IHashMap[];
|
|
7
|
+
}
|
|
8
|
+
export declare const TableFooterContent: <TData>(props: ITableFooterProps<TData>) => React.JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ITableHeaderProps } from './interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from './BasicTable';
|
|
4
|
+
/**
|
|
5
|
+
* Шапка таблицы
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns {JSX.Element}
|
|
8
|
+
*/
|
|
9
|
+
export declare function TableHeader<TData extends AdditionalRowFields>(props: Readonly<ITableHeaderProps<TData>>): React.JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ITableHeaderCell } from './interfaces/interfaces';
|
|
3
|
+
import { AdditionalRowFields } from './BasicTable';
|
|
4
|
+
export declare const TableHeaderCell: <TData extends AdditionalRowFields>(props: ITableHeaderCell<TData>) => React.JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface ITableLoaderProps {
|
|
3
|
+
loadingIconRef: React.MutableRefObject<any>;
|
|
4
|
+
colSpan: number;
|
|
5
|
+
}
|
|
6
|
+
declare const _default: React.MemoExoticComponent<(props: ITableLoaderProps) => React.JSX.Element>;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const ITEM_ACTIONS_COLUMN_ID = "itemActions";
|
|
2
|
+
export declare const DRAG_ICON_COLUMN_ID = "dragIcon";
|
|
3
|
+
export declare const MULTISELECT_COLUMN_ID = "multiselect";
|
|
4
|
+
export declare const EXPAND_ICON_COLUMN_ID = "expandIcon";
|
|
5
|
+
export declare const PLACEHOLDER_ID = "placeholderId";
|
|
6
|
+
export declare const MOUSE_ENTER_TIME_BEFORE_HINT_ACTIVATED = 750;
|
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
import { JSX, MemoExoticComponent, CSSProperties, Ref, default as React } from 'react';
|
|
2
|
+
import { default as SvgIcon } from '@mui/material/SvgIcon';
|
|
3
|
+
import { SxProps } from '@mui/system';
|
|
4
|
+
import { Theme } from '@mui/material/styles';
|
|
5
|
+
import { VirtualItem } from '@tanstack/react-virtual';
|
|
6
|
+
import { Cell, Column, ExpandedState, Header, Row, Table } from '@tanstack/react-table';
|
|
7
|
+
import { Over } from '@dnd-kit/core';
|
|
8
|
+
export type THeadCellType = number | undefined | 'text' | 'date' | 'dateShortTime';
|
|
9
|
+
export interface ICellFolderCfg {
|
|
10
|
+
colSpan?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface IHeadCell<TData> {
|
|
13
|
+
/** название столбца, который будет выведен в шапке */
|
|
14
|
+
label: string;
|
|
15
|
+
/** поле в ответе с бека */
|
|
16
|
+
field: string;
|
|
17
|
+
/** можно ли редактировать ячейку */
|
|
18
|
+
editable?: boolean;
|
|
19
|
+
/** шаблон для отображения ячейки в режиме редактирования */
|
|
20
|
+
editTemplate?: (row: TData, props: IHashMap) => JSX.Element;
|
|
21
|
+
/** можно ли скрыть столбец */
|
|
22
|
+
fixed?: boolean;
|
|
23
|
+
/** флаг отображения столбца для выбора (костыль) */
|
|
24
|
+
hiddenSelect?: boolean;
|
|
25
|
+
/** флаг видимости столбца в таблице */
|
|
26
|
+
hidden?: boolean;
|
|
27
|
+
/** тип, от которого зависит форматирование в template */
|
|
28
|
+
type?: THeadCellType;
|
|
29
|
+
/** возможность сортировки колонки */
|
|
30
|
+
sorting?: boolean;
|
|
31
|
+
/** ширина колонки */
|
|
32
|
+
width?: number;
|
|
33
|
+
/** если столбец - папка (используется в дереве) */
|
|
34
|
+
folder?: ICellFolderCfg;
|
|
35
|
+
/** выключение отступов */
|
|
36
|
+
disablePadding?: boolean;
|
|
37
|
+
/** кастомный шаблон ячейки */
|
|
38
|
+
template?: (row: TData, props: TData) => JSX.Element;
|
|
39
|
+
/** цвет ячейки */
|
|
40
|
+
backgroundColorCallback?: (row: TData) => string | undefined;
|
|
41
|
+
/** используется в базовых колонках таблиц с шаблонами, чтобы поместить их в конец таблицы */
|
|
42
|
+
isLast?: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface IOperation {
|
|
45
|
+
id: string;
|
|
46
|
+
icon: MemoExoticComponent<(props: any) => JSX.Element> | typeof SvgIcon;
|
|
47
|
+
title: string;
|
|
48
|
+
/**
|
|
49
|
+
* коллбэк для операций над выделенными записями
|
|
50
|
+
* @param selectedKeys массив уникальных идентификаторов строки
|
|
51
|
+
*/
|
|
52
|
+
callback: (selectedKeys: string[]) => void;
|
|
53
|
+
}
|
|
54
|
+
export type MultiSelectType = 'all' | 'parent';
|
|
55
|
+
export declare enum ViewMode {
|
|
56
|
+
DEFAULT = "default",
|
|
57
|
+
SEARCH = "search",
|
|
58
|
+
SELECTED = "selected"
|
|
59
|
+
}
|
|
60
|
+
export interface IHashMap {
|
|
61
|
+
[key: string]: any;
|
|
62
|
+
}
|
|
63
|
+
export type Order = 'asc' | 'desc';
|
|
64
|
+
type TActionVisibleTypes = 'folder' | 'node' | 'all' | 'none' | 'menu' | 'icon';
|
|
65
|
+
type TActionVisible<TData> = (item: TData) => TActionVisibleTypes;
|
|
66
|
+
export interface IItemAction<TData> {
|
|
67
|
+
id: string;
|
|
68
|
+
icon?: MemoExoticComponent<(props: any) => JSX.Element> | typeof SvgIcon;
|
|
69
|
+
tooltip: string;
|
|
70
|
+
info?: JSX.Element;
|
|
71
|
+
visible?: TActionVisible<TData>;
|
|
72
|
+
children?: IItemAction<TData>[];
|
|
73
|
+
clickCallback?: (data: unknown) => void;
|
|
74
|
+
color?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ITableProps<TData> {
|
|
77
|
+
/** колонки, которые будут отображаться в таблице */
|
|
78
|
+
columns: IHeadCell<TData>[];
|
|
79
|
+
/**
|
|
80
|
+
* коллбэк, вызывающийся при изменении порядка колонок
|
|
81
|
+
* @param columnOrder порядковый массив названий колонок(field)
|
|
82
|
+
*/
|
|
83
|
+
columnOrderChangedCallback?: (columnOrder: string[]) => void;
|
|
84
|
+
/** айди кликнутой строки */
|
|
85
|
+
clickedRow?: string;
|
|
86
|
+
/** конфиг сгруппированных колонок */
|
|
87
|
+
grouping?: string[];
|
|
88
|
+
/**
|
|
89
|
+
* коллбэк, вызывающийся при изменении размеров колонки
|
|
90
|
+
* @param colSizeState ключ - название колонки(field), значение - размер колонки
|
|
91
|
+
*/
|
|
92
|
+
columnSizeChangedCallback?: (colSizeState: Record<string, number>) => void;
|
|
93
|
+
/**
|
|
94
|
+
* коллбэк, вызывающийся при запинивании колонки
|
|
95
|
+
* @param colPinState массив уникальных названий колонок(field)
|
|
96
|
+
*/
|
|
97
|
+
columnPinningChangedCallback?: (colPinState: string[]) => void;
|
|
98
|
+
/** конфиг айди закрепленных колонок */
|
|
99
|
+
columnPinning?: string[];
|
|
100
|
+
/** запрет выбора всех записей (пока что нет способов выбрать все записи на беке без костылей) */
|
|
101
|
+
disableSelectAll?: boolean;
|
|
102
|
+
/** сообщение, показывающееся при ошибке получения данных */
|
|
103
|
+
errorMessage?: string;
|
|
104
|
+
/** могут ли строки раскрываться (иметь подстроки), опция работает с любым видом таблицы */
|
|
105
|
+
expandable?: boolean;
|
|
106
|
+
/** метод для получения всех строк на всех уровнях вложенности */
|
|
107
|
+
expandAllMethod?: (isAllRowsExpanded: boolean) => void;
|
|
108
|
+
/** раскрытые строки */
|
|
109
|
+
expandedKeys?: Record<string, boolean>;
|
|
110
|
+
/** коллбэк при изменении массива айди раскрытых записей */
|
|
111
|
+
expandedKeysChangedCallback?: (expandedIds: Record<string, boolean>) => void;
|
|
112
|
+
/** спрятать заголовок таблицы */
|
|
113
|
+
hiddenHeader?: boolean;
|
|
114
|
+
/** кол-во строк на одной странице */
|
|
115
|
+
itemsPerPage?: number;
|
|
116
|
+
/** уникальный ключ для строки(по умолчанию id) */
|
|
117
|
+
keyProperty: string;
|
|
118
|
+
minWidth?: string | number;
|
|
119
|
+
/** имя таблицы */
|
|
120
|
+
name: string;
|
|
121
|
+
/** обработчик клика по строке */
|
|
122
|
+
onItemClick?: (row: TData) => void;
|
|
123
|
+
/** коллбэк если поменялся корень таблицы(провалились в какую-то запись) */
|
|
124
|
+
onRootChanged?: (rootItem: TData) => void;
|
|
125
|
+
/** действие при нажатии на иконку настроек таблицы */
|
|
126
|
+
onSettingsClick?: () => void;
|
|
127
|
+
/** массовые операции над выделенными записями */
|
|
128
|
+
operations?: IOperation[];
|
|
129
|
+
/** корень дерева в мастере в адаптиве для построения дерева с определенного узла */
|
|
130
|
+
root?: string;
|
|
131
|
+
/** колбэк для смены бэкграунда строки */
|
|
132
|
+
rowBackgroundCallback?: (row: TData) => string;
|
|
133
|
+
/** Можно ли выбирать элементы */
|
|
134
|
+
selectable?: boolean;
|
|
135
|
+
/** идентификаторы выбранных чекбоксом строк */
|
|
136
|
+
selectedKeys?: string[];
|
|
137
|
+
/** коллбэк при изменении массива выбранных записей */
|
|
138
|
+
selectedKeysChangedCallback?: (selectedKeys: string[], selectedItems?: TData[]) => void;
|
|
139
|
+
/** выбранные строки */
|
|
140
|
+
selectedItems?: TData[];
|
|
141
|
+
/** выбранная строка */
|
|
142
|
+
selectedRow?: (row: TData) => boolean;
|
|
143
|
+
/** показывает тултип для строки с выводом всех ее ячеек в транспонированном виде */
|
|
144
|
+
showTransposedTooltip?: boolean;
|
|
145
|
+
/** доп стили */
|
|
146
|
+
sx?: SxProps<Theme>;
|
|
147
|
+
/** вид отображения таблицы */
|
|
148
|
+
tableViewMode?: TableViewMode;
|
|
149
|
+
/** опция для поиска и работы только с листьями */
|
|
150
|
+
treeSearchTypeChildren?: boolean;
|
|
151
|
+
/** опция для функционала виртуализации(и колонок и строк). По умолчанию false*/
|
|
152
|
+
virtualization?: boolean;
|
|
153
|
+
/** коллбэк смены корня таблицы(если проваливаемся в запись) */
|
|
154
|
+
changeRootCallback?: (activeItem: Row<TData>) => void;
|
|
155
|
+
/** режим просмотра */
|
|
156
|
+
viewMode: ViewMode;
|
|
157
|
+
/** адаптируемая ли таблица(при true колонки с полем hidden скрываются и уменьшаются паддинги) */
|
|
158
|
+
adaptive?: boolean;
|
|
159
|
+
/** коллбэк для обновления данных */
|
|
160
|
+
dataUpdateCallback?: (data: IHashMap[]) => void;
|
|
161
|
+
/** состояние подгрузки доп элементов(next page) */
|
|
162
|
+
isFetchingMore: boolean;
|
|
163
|
+
/** состояние загрузки */
|
|
164
|
+
loading: boolean;
|
|
165
|
+
/** есть ли еще страницы */
|
|
166
|
+
hasMore: boolean;
|
|
167
|
+
/** включен режим поиска */
|
|
168
|
+
inSearch: boolean;
|
|
169
|
+
/** включен режим выбора */
|
|
170
|
+
inSelect: boolean;
|
|
171
|
+
/** значения в колонках для футера */
|
|
172
|
+
totalSumValues: TData[];
|
|
173
|
+
/** функция для подгрузки детей элемента */
|
|
174
|
+
getExpandData: (item: TData) => void;
|
|
175
|
+
/** функция подгрузки след страницы */
|
|
176
|
+
loadMore: (currentTable: string) => void;
|
|
177
|
+
/** коллбэк для сортировки */
|
|
178
|
+
handleRequestSort: (event: React.MouseEvent<unknown, MouseEvent>, property: string, isParameter: boolean) => void;
|
|
179
|
+
/** коллбэк для множественной сортировки */
|
|
180
|
+
handleMultipleSort: (property: string, isParameter: boolean) => void;
|
|
181
|
+
/** коллбэк получения порядка сортировки */
|
|
182
|
+
getSortOrder: (field: string) => void;
|
|
183
|
+
/** коллбэк получения направления сортировки */
|
|
184
|
+
getSortDirection: (field: string) => void;
|
|
185
|
+
/** порядок колонок для сортировки */
|
|
186
|
+
order: Order;
|
|
187
|
+
/** название сортируемой колонки */
|
|
188
|
+
orderBy: string;
|
|
189
|
+
/** коллбэк показывать ли действия над записью */
|
|
190
|
+
itemActionsVisibilityCallback?: (row: TData) => boolean;
|
|
191
|
+
/** есть ли в таблице возможность редактировать записи */
|
|
192
|
+
editable?: boolean;
|
|
193
|
+
/** одиночный выбор записи чекбоксом(можно выбрать только одну) */
|
|
194
|
+
singleSelect?: boolean;
|
|
195
|
+
/** множественный выбор записей чекбоксом(можно выбрать несколько) */
|
|
196
|
+
multiselectVisibility?: MultiSelectType;
|
|
197
|
+
/** шаблон для доп строки над таблицей для добавления новой строки
|
|
198
|
+
* для базового функционала добавления доп строки достаточно передать только addingRowText
|
|
199
|
+
*/
|
|
200
|
+
addingRowTemplate?: JSX.Element;
|
|
201
|
+
/** текст для строки над таблицей для добавления новой строки */
|
|
202
|
+
addingRowText?: string;
|
|
203
|
+
/** данные для таблицы(строки) */
|
|
204
|
+
data?: TData[] | null;
|
|
205
|
+
/** коллбэк начала редактирования строки(запускается при нажатии на кнопку редактировать) */
|
|
206
|
+
onStartRowEdit?: (item: TData) => void;
|
|
207
|
+
/** коллбэк сохранения редактируемой строки(вызывается при нажатии на галку сохранить) */
|
|
208
|
+
onAcceptRowEdit?: (item: TData, callback: () => void) => void;
|
|
209
|
+
/** коллбэк отмены редактирования строки, вызывается при нажатии на крестик */
|
|
210
|
+
onCancelRowEdit?: () => void;
|
|
211
|
+
/** коллбэк для показа тултипа в случае если нет действий над записью */
|
|
212
|
+
itemActionsDisabledTooltip?: (row: TData) => string;
|
|
213
|
+
/** коллбэк при нажатии на действия над записью */
|
|
214
|
+
onItemActionClick?: (actionId: string, item: TData, data?: unknown) => void;
|
|
215
|
+
/** редактируемая строка */
|
|
216
|
+
editedRow?: TData | null;
|
|
217
|
+
/** действия над записью */
|
|
218
|
+
itemActions?: IItemAction<TData>[];
|
|
219
|
+
/** режим dnd для строк */
|
|
220
|
+
rowDraggable?: boolean;
|
|
221
|
+
/** режим dnd для колонок */
|
|
222
|
+
columnDraggable?: boolean;
|
|
223
|
+
/** коллбэк определяющий можно ли перетаскивать строку */
|
|
224
|
+
enableRowDragCallback?: (row: TData) => boolean;
|
|
225
|
+
/** можно ли дропать строки в таблицу(для dnd между таблицами) */
|
|
226
|
+
enableDrop?: boolean;
|
|
227
|
+
/** менять ли цвет для over-строки при dnd */
|
|
228
|
+
highlightDragOverRow?: boolean;
|
|
229
|
+
/** режим сортировки на фронте */
|
|
230
|
+
localDataMode?: boolean;
|
|
231
|
+
/** режим множественной сортировки */
|
|
232
|
+
multipleSortEnabled?: boolean;
|
|
233
|
+
/** текст показывающийся при пустых данных */
|
|
234
|
+
emptyText?: string;
|
|
235
|
+
/** шаблон показывающийся при пустых данных */
|
|
236
|
+
emptyTemplate?: React.ReactElement;
|
|
237
|
+
/** подгруженные фронтом строки(если надо точечно подгружать строки в таблицу) */
|
|
238
|
+
loadedRows: Record<string, any>[];
|
|
239
|
+
}
|
|
240
|
+
export interface ITableBodyProps<TData> {
|
|
241
|
+
name: string;
|
|
242
|
+
rows: Row<TData>[];
|
|
243
|
+
rowDraggable: boolean;
|
|
244
|
+
columnDraggable?: boolean;
|
|
245
|
+
emptyText: string;
|
|
246
|
+
viewMode: ViewMode;
|
|
247
|
+
editedRow: TData;
|
|
248
|
+
tableViewMode: TableViewMode;
|
|
249
|
+
adaptive: boolean;
|
|
250
|
+
inSearch: boolean;
|
|
251
|
+
inSelect: boolean;
|
|
252
|
+
selectedRow: (row: TData) => boolean;
|
|
253
|
+
resultColumns: IHeadCell<TData>[];
|
|
254
|
+
root: string;
|
|
255
|
+
editable: boolean;
|
|
256
|
+
onClick: (item: Row<TData>) => void;
|
|
257
|
+
multiselectVisibility: MultiSelectType;
|
|
258
|
+
itemActions: IItemAction<TData>[];
|
|
259
|
+
keyProperty: string;
|
|
260
|
+
expanded: ExpandedState;
|
|
261
|
+
expandable: boolean;
|
|
262
|
+
selected: string[];
|
|
263
|
+
handleSelect: (item: TData) => void;
|
|
264
|
+
handleExpand: (item: Row<TData>, expandedState: Record<string, boolean>) => void;
|
|
265
|
+
itemActionsVisibilityCallback: (item: TData) => boolean;
|
|
266
|
+
rowBackgroundCallback: (row: TData) => string;
|
|
267
|
+
onItemActionClick: (actionId: string, item: TData, data?: unknown) => void;
|
|
268
|
+
onStartRowEdit: (item: TData) => void;
|
|
269
|
+
onAcceptRowEdit: (event: React.MouseEvent<unknown>, item: TData) => void;
|
|
270
|
+
virtualization: boolean;
|
|
271
|
+
hasMore: boolean;
|
|
272
|
+
loadingIconRef: React.MutableRefObject<any>;
|
|
273
|
+
virtualRows: VirtualItem[];
|
|
274
|
+
virtualizerTotalSize: number;
|
|
275
|
+
virtualColumns?: VirtualItem[];
|
|
276
|
+
virtualIndexes: number[];
|
|
277
|
+
columnVirtualizerTotalSize?: number;
|
|
278
|
+
leftPinnedColumns: Column<TData, unknown>[];
|
|
279
|
+
rightPinnedColumns: Column<TData, unknown>[];
|
|
280
|
+
clickedRow?: string | null;
|
|
281
|
+
overflowShadow: boolean;
|
|
282
|
+
colSpan: number;
|
|
283
|
+
resetNewRow: () => void;
|
|
284
|
+
isNewRowCreated: boolean;
|
|
285
|
+
setIsNewRowCreated: React.Dispatch<React.SetStateAction<boolean>>;
|
|
286
|
+
showTransposedTooltip?: boolean;
|
|
287
|
+
itemActionsDisabledTooltip?: (row: TData) => string;
|
|
288
|
+
itemActionsIcon?: JSX.Element;
|
|
289
|
+
enableRowDragCallback?: (row: TData) => boolean;
|
|
290
|
+
enableDrop: boolean;
|
|
291
|
+
onItemClick?: (row: TData) => void;
|
|
292
|
+
highlightDragOverRow?: boolean;
|
|
293
|
+
columnOrder: string[];
|
|
294
|
+
}
|
|
295
|
+
export interface ITableRowProps<TData> {
|
|
296
|
+
name: string;
|
|
297
|
+
selected: boolean;
|
|
298
|
+
determinate: boolean;
|
|
299
|
+
level: number;
|
|
300
|
+
viewMode: ViewMode;
|
|
301
|
+
tableViewMode?: TableViewMode;
|
|
302
|
+
root?: string | null;
|
|
303
|
+
adaptive: boolean;
|
|
304
|
+
inSearch: boolean;
|
|
305
|
+
inSelect: boolean;
|
|
306
|
+
onItemActionClick?: ITableProps<TData>['onItemActionClick'];
|
|
307
|
+
onStartRowEdit?: (item: TData | null) => void;
|
|
308
|
+
onAcceptRowEdit?: (event: React.MouseEvent<unknown>, item: TData | null) => void;
|
|
309
|
+
isEditedRow?: boolean;
|
|
310
|
+
expanded: ExpandedState;
|
|
311
|
+
onExpanded: (item: Row<TData>, expandedState?: TData) => void;
|
|
312
|
+
selectedRow: (row: TData) => boolean;
|
|
313
|
+
itemActionsVisibilityCallback: (row: TData) => boolean;
|
|
314
|
+
multiselectVisibility: MultiSelectType;
|
|
315
|
+
editable?: boolean;
|
|
316
|
+
columns: IHeadCell<TData>[];
|
|
317
|
+
onClick?: (item: Row<TData>) => void;
|
|
318
|
+
onSelect?: (item: TData) => void;
|
|
319
|
+
rowIndex: number;
|
|
320
|
+
keyProperty: string;
|
|
321
|
+
itemActions: IItemAction<TData>[];
|
|
322
|
+
row: Row<TData>;
|
|
323
|
+
dragOptions?: IRowDragOptions;
|
|
324
|
+
rowDraggable?: boolean;
|
|
325
|
+
columnDraggable?: boolean;
|
|
326
|
+
expandable?: boolean;
|
|
327
|
+
virtualized?: boolean;
|
|
328
|
+
rowBackgroundCallback?: ITableProps<TData>['rowBackgroundCallback'];
|
|
329
|
+
virtualization?: boolean;
|
|
330
|
+
virtualColumns?: VirtualItem[];
|
|
331
|
+
virtualIndexes: number[];
|
|
332
|
+
columnVirtualizerTotalSize?: number;
|
|
333
|
+
leftPinnedColumns: Column<TData, unknown>[];
|
|
334
|
+
rightPinnedColumns: Column<TData, unknown>[];
|
|
335
|
+
isClickHighlighted?: boolean;
|
|
336
|
+
overflowShadow: boolean;
|
|
337
|
+
virtualPaddingLeft?: number;
|
|
338
|
+
virtualPaddingRight?: number;
|
|
339
|
+
resetNewRow: () => void;
|
|
340
|
+
isNewRowCreated: boolean;
|
|
341
|
+
setIsNewRowCreated: React.Dispatch<React.SetStateAction<boolean>>;
|
|
342
|
+
showTransposedTooltip?: boolean;
|
|
343
|
+
itemActionsDisabledTooltip?: (row: TData) => string;
|
|
344
|
+
enableRowDragCallback?: (row: TData) => boolean;
|
|
345
|
+
enableDrop: boolean;
|
|
346
|
+
highlightDragOverRow?: boolean;
|
|
347
|
+
onItemClick?: (row: TData) => void;
|
|
348
|
+
columnOrder: string[];
|
|
349
|
+
}
|
|
350
|
+
export interface IRowCellProps<TData> {
|
|
351
|
+
cells: Cell<TData, unknown>[];
|
|
352
|
+
row: Row<TData>;
|
|
353
|
+
rowIndex: number;
|
|
354
|
+
expandable: boolean;
|
|
355
|
+
adaptive: boolean;
|
|
356
|
+
viewMode: ViewMode;
|
|
357
|
+
tableViewMode?: TableViewMode;
|
|
358
|
+
expanded: ExpandedState;
|
|
359
|
+
onExpanded: (item: Row<TData>, expandedState?: TData) => void;
|
|
360
|
+
keyProperty: string;
|
|
361
|
+
multiselectVisibility: MultiSelectType;
|
|
362
|
+
determinate: boolean;
|
|
363
|
+
selected: boolean;
|
|
364
|
+
onSelect: (item: TData) => void;
|
|
365
|
+
getBorderBottomStyle: () => string;
|
|
366
|
+
onClick: (item: Row<TData>) => void;
|
|
367
|
+
itemActions?: IItemAction<TData>[];
|
|
368
|
+
actionsVisible: boolean;
|
|
369
|
+
parentTreeTileItem: boolean;
|
|
370
|
+
editable: boolean;
|
|
371
|
+
onStartRowEdit?: (item: TData | null) => void;
|
|
372
|
+
onAcceptRowEdit?: (event: React.MouseEvent<unknown>, item: TData | null) => void;
|
|
373
|
+
onItemActionClick?: (actionId: string, item: TData, data?: TData[]) => void;
|
|
374
|
+
isEditedRow: boolean;
|
|
375
|
+
rowBackgroundCallback?: (row: TData) => string;
|
|
376
|
+
virtualization?: boolean;
|
|
377
|
+
virtualColumns?: VirtualItem[];
|
|
378
|
+
columnVirtualizerTotalSize?: number;
|
|
379
|
+
overflowShadow: boolean;
|
|
380
|
+
resetNewRow?: () => void;
|
|
381
|
+
isNewRowCreated?: boolean;
|
|
382
|
+
setIsNewRowCreated?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
383
|
+
showTransposedTooltip?: boolean;
|
|
384
|
+
columnDraggable?: boolean;
|
|
385
|
+
itemActionsDisabledTooltip?: (row: TData) => string;
|
|
386
|
+
enableRowDragCallback?: (row: TData) => boolean;
|
|
387
|
+
isDragOver: boolean;
|
|
388
|
+
}
|
|
389
|
+
export interface ITableRowWrapperProps<TData> {
|
|
390
|
+
rowDraggable: boolean;
|
|
391
|
+
columnDraggable?: boolean;
|
|
392
|
+
itemKey: string;
|
|
393
|
+
row: Row<TData>;
|
|
394
|
+
rowIndex: number;
|
|
395
|
+
viewMode: ViewMode;
|
|
396
|
+
isEditedRow: boolean;
|
|
397
|
+
onStartRowEdit: (item: TData | null) => void;
|
|
398
|
+
onAcceptRowEdit: (event: React.MouseEvent<unknown>, item: TData) => void;
|
|
399
|
+
selected: boolean;
|
|
400
|
+
tableViewMode: TableViewMode;
|
|
401
|
+
adaptive: boolean;
|
|
402
|
+
inSearch: boolean;
|
|
403
|
+
inSelect: boolean;
|
|
404
|
+
selectedRow: (row: TData) => boolean;
|
|
405
|
+
resultColumns: IHeadCell<TData>[];
|
|
406
|
+
root: string;
|
|
407
|
+
editable: boolean;
|
|
408
|
+
level: number;
|
|
409
|
+
onClick: (TData: any) => void;
|
|
410
|
+
handleSelect: (item: any) => void;
|
|
411
|
+
rowBackgroundCallback: (row: TData) => string;
|
|
412
|
+
multiselectVisibility: MultiSelectType;
|
|
413
|
+
itemActions: IItemAction<TData>[];
|
|
414
|
+
keyProperty: string;
|
|
415
|
+
expanded: ExpandedState;
|
|
416
|
+
expandable: boolean;
|
|
417
|
+
handleExpand: (item: any, expandedState: any) => void;
|
|
418
|
+
itemActionsVisibilityCallback: (TData: any) => boolean;
|
|
419
|
+
onItemActionClick: (actionId: string, item: TData, data?: TData[]) => void;
|
|
420
|
+
isNodeDeterminate: boolean;
|
|
421
|
+
virtualization?: boolean;
|
|
422
|
+
virtualColumns?: VirtualItem[];
|
|
423
|
+
virtualIndexes: number[];
|
|
424
|
+
columnVirtualizerTotalSize?: number;
|
|
425
|
+
leftPinnedColumns: Column<TData, unknown>[];
|
|
426
|
+
rightPinnedColumns: Column<TData, unknown>[];
|
|
427
|
+
isClickHighlighted?: boolean;
|
|
428
|
+
overflowShadow: boolean;
|
|
429
|
+
virtualPaddingLeft?: number;
|
|
430
|
+
virtualPaddingRight?: number;
|
|
431
|
+
resetNewRow: () => void;
|
|
432
|
+
isNewRowCreated: boolean;
|
|
433
|
+
setIsNewRowCreated: React.Dispatch<React.SetStateAction<boolean>>;
|
|
434
|
+
showTransposedTooltip?: boolean;
|
|
435
|
+
itemActionsDisabledTooltip?: (row: TData) => string;
|
|
436
|
+
enableRowDragCallback?: (row: TData) => boolean;
|
|
437
|
+
enableDrop: boolean;
|
|
438
|
+
onItemClick?: (row: TData) => void;
|
|
439
|
+
highlightDragOverRow?: boolean;
|
|
440
|
+
name: string;
|
|
441
|
+
columnOrder: string[];
|
|
442
|
+
}
|
|
443
|
+
export interface IItemActionsProps<TData> {
|
|
444
|
+
actionsVisible: boolean;
|
|
445
|
+
row: Row<TData>;
|
|
446
|
+
editable: boolean;
|
|
447
|
+
onStartRowEdit: (item: TData | null) => void;
|
|
448
|
+
onAcceptRowEdit: (event: React.MouseEvent<unknown>, item: TData | null) => void;
|
|
449
|
+
itemActions: IItemAction<TData>[];
|
|
450
|
+
onItemActionClick: (actionId: string, item: TData, data?: TData[]) => void;
|
|
451
|
+
editedRow: boolean;
|
|
452
|
+
resetNewRow: () => void;
|
|
453
|
+
isNewRowCreated: boolean;
|
|
454
|
+
setIsNewRowCreated: React.Dispatch<React.SetStateAction<boolean>>;
|
|
455
|
+
}
|
|
456
|
+
export interface ITableHeaderProps<TData> {
|
|
457
|
+
table: Table<TData>;
|
|
458
|
+
selectedKeys: string[];
|
|
459
|
+
data: TData[];
|
|
460
|
+
keyProperty: string;
|
|
461
|
+
onSettingsClick: () => void;
|
|
462
|
+
disableSelectAll: boolean;
|
|
463
|
+
singleSelect: boolean;
|
|
464
|
+
multiselectVisibility: MultiSelectType;
|
|
465
|
+
itemActions: IItemAction<TData>[];
|
|
466
|
+
hiddenHeader: boolean;
|
|
467
|
+
multipleSortEnabled: boolean;
|
|
468
|
+
setSelected: React.Dispatch<React.SetStateAction<string[]>>;
|
|
469
|
+
virtualization?: boolean;
|
|
470
|
+
virtualColumns?: VirtualItem[];
|
|
471
|
+
virtualIndexes: number[];
|
|
472
|
+
columnVirtualizerTotalSize?: number;
|
|
473
|
+
inSearch: boolean;
|
|
474
|
+
leftPinnedColumns: Column<TData, unknown>[];
|
|
475
|
+
rightPinnedColumns: Column<TData, unknown>[];
|
|
476
|
+
overflowShadow: boolean;
|
|
477
|
+
isNewRowCreated: boolean;
|
|
478
|
+
setIsNewRowCreated: React.Dispatch<React.SetStateAction<boolean>>;
|
|
479
|
+
addingRowTemplate: React.JSX.Element;
|
|
480
|
+
resultColumns: IHeadCell<TData>[];
|
|
481
|
+
tableData: TData[];
|
|
482
|
+
addingRowText?: string;
|
|
483
|
+
colSpan: number;
|
|
484
|
+
setEditedRow: (value: React.SetStateAction<TData>) => void;
|
|
485
|
+
onStartRowEdit?: (item: TData | null) => void;
|
|
486
|
+
columnDraggable?: boolean;
|
|
487
|
+
expandAllMethod?: (isAllRowsExpanded: boolean) => void;
|
|
488
|
+
isAllRowsExpanded: boolean;
|
|
489
|
+
setExpanded: React.Dispatch<React.SetStateAction<ExpandedState>>;
|
|
490
|
+
handleRequestSort: (event: React.MouseEvent<unknown, MouseEvent>, property: string, isParameter: boolean) => void;
|
|
491
|
+
handleMultipleSort: (property: string, isParameter: boolean) => void;
|
|
492
|
+
getSortOrder: (field: string) => void;
|
|
493
|
+
getSortDirection: (field: string) => void;
|
|
494
|
+
dataUpdateCallback?: (data: IHashMap[]) => void;
|
|
495
|
+
order: Order;
|
|
496
|
+
orderBy: string;
|
|
497
|
+
handleAutoFitWidth: (columnId: string) => void;
|
|
498
|
+
dragStartHandler: (event: any) => void;
|
|
499
|
+
dragEndHandler: (event: any) => void;
|
|
500
|
+
name: string;
|
|
501
|
+
}
|
|
502
|
+
export interface ITableHeaderCell<TData> {
|
|
503
|
+
header: Header<TData, unknown>;
|
|
504
|
+
multiselectVisibility: MultiSelectType;
|
|
505
|
+
colIndex: number;
|
|
506
|
+
handleRequestSort: (event: React.MouseEvent<unknown, MouseEvent>, property: string, isParameter: boolean) => void;
|
|
507
|
+
order: Order;
|
|
508
|
+
orderBy: string;
|
|
509
|
+
stickyStyle: Record<string, any>;
|
|
510
|
+
width: string | number;
|
|
511
|
+
columnDraggable: boolean;
|
|
512
|
+
dragOptions?: {
|
|
513
|
+
setNodeRef: Ref<HTMLTableRowElement>;
|
|
514
|
+
dragProps: Record<string, any>;
|
|
515
|
+
over: Over;
|
|
516
|
+
};
|
|
517
|
+
getSortOrder: (field: string) => number;
|
|
518
|
+
getSortDirection: (field: string) => 'asc' | 'desc';
|
|
519
|
+
handleAutoFitWidth: (columnId: string) => void;
|
|
520
|
+
dragStartHandler: (event: any) => void;
|
|
521
|
+
dragEndHandler: (event: any) => void;
|
|
522
|
+
tableName: string;
|
|
523
|
+
}
|
|
524
|
+
export interface ICellProps<TData> {
|
|
525
|
+
cell: Cell<TData, unknown>;
|
|
526
|
+
colSpan: number;
|
|
527
|
+
colIndex: number;
|
|
528
|
+
labelId: string;
|
|
529
|
+
cellKey: string;
|
|
530
|
+
row: Row<TData>;
|
|
531
|
+
keyProperty: string;
|
|
532
|
+
getBorderBottomStyle: () => string;
|
|
533
|
+
adaptive: boolean;
|
|
534
|
+
editable: boolean;
|
|
535
|
+
isEditedRow: boolean;
|
|
536
|
+
onExpanded: (item: Row<TData>, expandedState?: TData) => void;
|
|
537
|
+
levelPadding: number;
|
|
538
|
+
cellBg: string;
|
|
539
|
+
multiselectVisibility: MultiSelectType;
|
|
540
|
+
parentTreeTileItem: boolean;
|
|
541
|
+
colDraggableStyle?: TData;
|
|
542
|
+
nodeRef?: (node: HTMLElement) => void;
|
|
543
|
+
tooltipTitle?: React.JSX.Element | string;
|
|
544
|
+
isExpanded: boolean;
|
|
545
|
+
isLastColumn?: boolean;
|
|
546
|
+
}
|
|
547
|
+
export interface ICellColumnProps<TData> {
|
|
548
|
+
cell: Cell<TData, unknown>;
|
|
549
|
+
keyProperty: string;
|
|
550
|
+
row: Row<TData>;
|
|
551
|
+
editable: boolean;
|
|
552
|
+
isEditedRow: boolean;
|
|
553
|
+
isLastColumn?: boolean;
|
|
554
|
+
}
|
|
555
|
+
export interface ITillCellProps<TData> {
|
|
556
|
+
isEditedRow: boolean;
|
|
557
|
+
cells: Cell<TData, unknown>[];
|
|
558
|
+
row: Row<TData>;
|
|
559
|
+
selectedRow: boolean;
|
|
560
|
+
keyProperty: string;
|
|
561
|
+
multiselectVisibility: MultiSelectType;
|
|
562
|
+
determinate: boolean;
|
|
563
|
+
selected: boolean;
|
|
564
|
+
onExpanded: (item: Row<TData>, expandedState?: IHashMap) => void;
|
|
565
|
+
expandable: boolean;
|
|
566
|
+
parentTreeTileItem: boolean;
|
|
567
|
+
getBorderBottomStyle: () => string;
|
|
568
|
+
itemActions: IItemAction<TData>[];
|
|
569
|
+
actionsVisible: boolean;
|
|
570
|
+
editable: boolean;
|
|
571
|
+
onStartRowEdit: (item: TData | null) => void;
|
|
572
|
+
onAcceptRowEdit: (event: React.MouseEvent<unknown>, item: TData | null) => void;
|
|
573
|
+
onItemActionClick: (actionId: string, item: TData, data?: TData[]) => void;
|
|
574
|
+
resetNewRow: () => void;
|
|
575
|
+
isNewRowCreated: boolean;
|
|
576
|
+
setIsNewRowCreated: React.Dispatch<React.SetStateAction<boolean>>;
|
|
577
|
+
}
|
|
578
|
+
export declare enum TableViewMode {
|
|
579
|
+
TABLE = 0,
|
|
580
|
+
TREE = 1,
|
|
581
|
+
TILE = 2
|
|
582
|
+
}
|
|
583
|
+
interface IRowDragOptions {
|
|
584
|
+
setNodeRef: Ref<HTMLTableRowElement>;
|
|
585
|
+
dragProps: Record<string, any>;
|
|
586
|
+
dragStyle: CSSProperties;
|
|
587
|
+
isOver: boolean;
|
|
588
|
+
}
|
|
589
|
+
export interface AddingButtonRowTemplateProps<TData> {
|
|
590
|
+
text: string;
|
|
591
|
+
colSpan?: number;
|
|
592
|
+
onClick?: () => Promise<void> | void;
|
|
593
|
+
infoTooltip?: string;
|
|
594
|
+
overflowShadow?: boolean;
|
|
595
|
+
isNewRowCreated?: boolean;
|
|
596
|
+
setIsNewRowCreated?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
597
|
+
dataUpdateCallback?: (data: IHashMap[]) => void;
|
|
598
|
+
columns?: IHeadCell<TData>[];
|
|
599
|
+
tableData?: IHashMap[];
|
|
600
|
+
setEditedRow?: (value: React.SetStateAction<TData>) => void;
|
|
601
|
+
onStartRowEdit?: (item: IHashMap | null) => void;
|
|
602
|
+
itemActions?: IItemAction<TData>[];
|
|
603
|
+
}
|
|
604
|
+
export declare enum ConstantType {
|
|
605
|
+
Undefined = 0,
|
|
606
|
+
Number = 1,
|
|
607
|
+
Strings = 2,
|
|
608
|
+
Date = 3,
|
|
609
|
+
Boolean = 4,
|
|
610
|
+
Enum = 5,
|
|
611
|
+
DateTime = 6,
|
|
612
|
+
NotNullNumber = 7
|
|
613
|
+
}
|
|
614
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует дату в формате дд.мм.гггг чч:мм
|
|
3
|
+
* @param date
|
|
4
|
+
*/
|
|
5
|
+
export declare const formatDateShortTime: (date: any) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Форматирует дату в формате дд.мм.гггг
|
|
8
|
+
* @param date
|
|
9
|
+
*/
|
|
10
|
+
export declare const formatDate: (date: any) => string;
|
|
11
|
+
/**
|
|
12
|
+
* Форматирует дату для передачи в TextField для type datetime-local
|
|
13
|
+
* @param date
|
|
14
|
+
*/
|
|
15
|
+
export declare const formatDateToDateTimeLocalTextfield: (date: any) => string;
|
|
16
|
+
/**
|
|
17
|
+
* Форматирует дату в формате 3 м. назад date-fns
|
|
18
|
+
* @param date
|
|
19
|
+
*/
|
|
20
|
+
export declare const formatTimeAgo: (date: any) => string;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { CSSProperties } from '@mui/material/styles';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
import { IHashMap, IHeadCell, THeadCellType } from '../interfaces/interfaces';
|
|
4
|
+
export declare function getCellContentByType<T>(type: THeadCellType, value: T): string | T | React.JSX.Element;
|
|
5
|
+
export declare const actionsShadow: {
|
|
6
|
+
content: string;
|
|
7
|
+
width: number;
|
|
8
|
+
height: string;
|
|
9
|
+
position: string;
|
|
10
|
+
right: string;
|
|
11
|
+
top: number;
|
|
12
|
+
background: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const itemActionsStyle: {
|
|
15
|
+
position: string;
|
|
16
|
+
right: number;
|
|
17
|
+
top: number;
|
|
18
|
+
display: string;
|
|
19
|
+
alignItems: string;
|
|
20
|
+
justifyContent: string;
|
|
21
|
+
zIndex: number;
|
|
22
|
+
'&:before': {
|
|
23
|
+
content: string;
|
|
24
|
+
width: number;
|
|
25
|
+
height: string;
|
|
26
|
+
position: string;
|
|
27
|
+
right: string;
|
|
28
|
+
top: number;
|
|
29
|
+
background: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export declare const stickyStyle: {
|
|
33
|
+
position: string;
|
|
34
|
+
top: number;
|
|
35
|
+
background: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Обработка колонок для таблицы десктоп/адаптив
|
|
39
|
+
* @param columns
|
|
40
|
+
* @param adaptive
|
|
41
|
+
*/
|
|
42
|
+
export declare const getTableColumns: <TData>(columns: IHeadCell<TData>[], adaptive: boolean) => {
|
|
43
|
+
columns: unknown;
|
|
44
|
+
header: string;
|
|
45
|
+
label: string;
|
|
46
|
+
field: string;
|
|
47
|
+
editable?: boolean;
|
|
48
|
+
editTemplate?: (row: TData, props: IHashMap) => React.JSX.Element;
|
|
49
|
+
fixed?: boolean;
|
|
50
|
+
hiddenSelect?: boolean;
|
|
51
|
+
hidden?: boolean;
|
|
52
|
+
type?: THeadCellType;
|
|
53
|
+
sorting?: boolean;
|
|
54
|
+
width?: number;
|
|
55
|
+
folder?: import('../interfaces/interfaces').ICellFolderCfg;
|
|
56
|
+
disablePadding?: boolean;
|
|
57
|
+
template?: (row: TData, props: TData) => React.JSX.Element;
|
|
58
|
+
backgroundColorCallback?: (row: TData) => string | undefined;
|
|
59
|
+
isLast?: boolean;
|
|
60
|
+
}[];
|
|
61
|
+
export declare const getCommonPinningStyles: (column: any, isHeader?: boolean, hasShadow?: boolean) => CSSProperties;
|
|
62
|
+
export declare const dragOverlayStyle: {
|
|
63
|
+
padding: string;
|
|
64
|
+
background: string;
|
|
65
|
+
borderRadius: string;
|
|
66
|
+
height: number;
|
|
67
|
+
boxShadow: (theme: any) => any;
|
|
68
|
+
cursor: string;
|
|
69
|
+
whiteSpace: string;
|
|
70
|
+
opacity: number;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Получение элемента таблицы по id. Работает с плоским списком/деревом
|
|
74
|
+
* @param data
|
|
75
|
+
* @param id
|
|
76
|
+
*/
|
|
77
|
+
export declare function getTableItemById(data: IHashMap[], id: string): IHashMap;
|
|
@@ -7,10 +7,10 @@ interface TabProps {
|
|
|
7
7
|
endTemplate?: React.ReactNode;
|
|
8
8
|
count?: number;
|
|
9
9
|
}
|
|
10
|
-
interface
|
|
10
|
+
interface ITabsProps {
|
|
11
11
|
tabs: TabProps[];
|
|
12
12
|
activeTab: number;
|
|
13
13
|
onChange: (tab: number) => void;
|
|
14
14
|
}
|
|
15
|
-
export declare const Tabs: React.FC<
|
|
15
|
+
export declare const Tabs: React.FC<ITabsProps>;
|
|
16
16
|
export {};
|
package/dist/uikit.js
CHANGED
|
@@ -10472,15 +10472,15 @@ process.env.NODE_ENV !== "production" && (jo.propTypes = {
|
|
|
10472
10472
|
});
|
|
10473
10473
|
const m1 = ({ tabs: e, activeTab: t, onChange: n }) => {
|
|
10474
10474
|
const r = bp(), i = () => {
|
|
10475
|
-
const d = location.pathname + location.search;
|
|
10476
|
-
return
|
|
10477
|
-
}, [a, s] = ct(i()), l = (d, u) => {
|
|
10475
|
+
const d = location.pathname + location.search, u = e.find((g) => g.to === d), f = u?.id ?? t;
|
|
10476
|
+
return { foundTab: u, newActiveTabId: f };
|
|
10477
|
+
}, [a, s] = ct(i()?.newActiveTabId), l = (d, u) => {
|
|
10478
10478
|
const f = e.find((g) => g.id === u);
|
|
10479
10479
|
f && (s(u), f.to && r(f.to), n?.(u));
|
|
10480
10480
|
};
|
|
10481
10481
|
Co(() => {
|
|
10482
|
-
const d = i();
|
|
10483
|
-
a !==
|
|
10482
|
+
const { foundTab: d, newActiveTabId: u } = i();
|
|
10483
|
+
a !== u && (s(u), n?.(u)), document.title = d?.label || "JSA APS";
|
|
10484
10484
|
}, [location.pathname, location.search]);
|
|
10485
10485
|
const c = ({ label: d, startTemplate: u, endTemplate: f, count: g }) => /* @__PURE__ */ ie(
|
|
10486
10486
|
Kt,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mdtl/uikit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.52",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/uikit.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -30,7 +30,14 @@
|
|
|
30
30
|
"react-router-dom": "6.16.0",
|
|
31
31
|
"react-dom": "18.2.0",
|
|
32
32
|
"re-resizable": "^6.11.2",
|
|
33
|
-
"react-infinite-scroll-hook": "5.0.2"
|
|
33
|
+
"react-infinite-scroll-hook": "5.0.2",
|
|
34
|
+
"date-fns": "^4.1.0",
|
|
35
|
+
"@tanstack/react-table": "^8.21.3",
|
|
36
|
+
"@tanstack/react-virtual": "^3.13.10",
|
|
37
|
+
"@dnd-kit/core": "^6.1.0",
|
|
38
|
+
"@dnd-kit/modifiers": "^9.0.0",
|
|
39
|
+
"@dnd-kit/sortable": "^8.0.0",
|
|
40
|
+
"@dnd-kit/utilities": "^3.2.2"
|
|
34
41
|
},
|
|
35
42
|
"devDependencies": {
|
|
36
43
|
"@emotion/react": "^11.14.0",
|
|
@@ -45,7 +52,6 @@
|
|
|
45
52
|
"react-dom": "18.2.0",
|
|
46
53
|
"re-resizable": "^6.11.2",
|
|
47
54
|
"react-infinite-scroll-hook": "5.0.2",
|
|
48
|
-
|
|
49
55
|
"@eslint/js": "^9.36.0",
|
|
50
56
|
"@types/node": "^24.5.2",
|
|
51
57
|
"@types/react": "^19.1.13",
|
|
@@ -72,6 +78,13 @@
|
|
|
72
78
|
"vite-plugin-checker": "^0.6.2",
|
|
73
79
|
"vite-plugin-circular-dependency": "^0.2.1",
|
|
74
80
|
"vite-plugin-dts": "^4.5.4",
|
|
75
|
-
"vite-plugin-html": "^3.2.0"
|
|
81
|
+
"vite-plugin-html": "^3.2.0",
|
|
82
|
+
"date-fns": "^4.1.0",
|
|
83
|
+
"@tanstack/react-table": "^8.21.3",
|
|
84
|
+
"@tanstack/react-virtual": "^3.13.10",
|
|
85
|
+
"@dnd-kit/core": "^6.1.0",
|
|
86
|
+
"@dnd-kit/modifiers": "^9.0.0",
|
|
87
|
+
"@dnd-kit/sortable": "^8.0.0",
|
|
88
|
+
"@dnd-kit/utilities": "^3.2.2"
|
|
76
89
|
}
|
|
77
90
|
}
|