@snack-uikit/table 0.9.0 → 0.10.0
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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 0.10.0 (2024-01-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **FF-4102:** update toolbar usage, add 'toolbarBeforeSearch' prop ([6acf0ba](https://github.com/cloud-ru-tech/snack-uikit/commit/6acf0ba5bfb1afaaa485857f3058b65a92f6c75c))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# 0.9.0 (2024-01-16)
|
|
7
18
|
|
|
8
19
|
|
package/README.md
CHANGED
|
@@ -123,6 +123,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
123
123
|
| noDataState | `TableEmptyStateProps` | { icon: CrossSVG, appearance: 'red', title: 'Data collection error', description: 'Try refreshing the page', } as const | Экран при отстутствии данных |
|
|
124
124
|
| noResultsState | `TableEmptyStateProps` | { icon: SearchSVG, appearance: 'neutral', title: 'Not found', description: 'Try entering another query', } as const | Экран при отстутствии результатов поиска |
|
|
125
125
|
| suppressToolbar | `boolean` | - | Отключение тулбара |
|
|
126
|
+
| toolbarBefore | `ReactNode` | - | Дополнительный слот в `Toolbar` перед строкой поиска |
|
|
126
127
|
| suppressPagination | `boolean` | - | Отключение пагинации |
|
|
127
128
|
## Table.getStatusColumnDef
|
|
128
129
|
Вспомогательная функция для создания ячейки со статусом
|
|
@@ -88,11 +88,13 @@ export type TableProps<TData extends object> = WithSupportProps<{
|
|
|
88
88
|
noResultsState?: TableEmptyStateProps;
|
|
89
89
|
/** Отключение тулбара */
|
|
90
90
|
suppressToolbar?: boolean;
|
|
91
|
+
/** Дополнительный слот в `Toolbar` перед строкой поиска */
|
|
92
|
+
toolbarBefore?: ReactNode;
|
|
91
93
|
/** Отключение пагинации */
|
|
92
94
|
suppressPagination?: boolean;
|
|
93
95
|
}>;
|
|
94
96
|
/** Компонент таблицы */
|
|
95
|
-
export declare function Table<TData extends object>({ data, columnDefinitions, rowSelection: rowSelectionProp, search, sorting: sortingProp, columnFilters: columnFiltersProp, pagination: paginationProp, className, onRowClick, onRefresh, onDelete, pageSize, pageCount, loading, outline, moreActions, exportFileName, noDataState, noResultsState, suppressToolbar, suppressPagination, ...rest }: TableProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
97
|
+
export declare function Table<TData extends object>({ data, columnDefinitions, rowSelection: rowSelectionProp, search, sorting: sortingProp, columnFilters: columnFiltersProp, pagination: paginationProp, className, onRowClick, onRefresh, onDelete, pageSize, pageCount, loading, outline, moreActions, exportFileName, noDataState, noResultsState, suppressToolbar, toolbarBefore, suppressPagination, ...rest }: TableProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
96
98
|
export declare namespace Table {
|
|
97
99
|
var getStatusColumnDef: typeof import("../../helperComponents").getStatusColumnDef;
|
|
98
100
|
var statusAppearances: {
|
|
@@ -27,7 +27,7 @@ import { useLoadingTable, useStateControl } from './hooks';
|
|
|
27
27
|
import styles from './styles.module.css';
|
|
28
28
|
/** Компонент таблицы */
|
|
29
29
|
export function Table(_a) {
|
|
30
|
-
var { data, columnDefinitions, rowSelection: rowSelectionProp, search, sorting: sortingProp, columnFilters: columnFiltersProp, pagination: paginationProp, className, onRowClick, onRefresh, onDelete, pageSize = 10, pageCount, loading = false, outline = false, moreActions, exportFileName, noDataState = DEFAULT_NO_DATA_TABLE_STATE, noResultsState = DEFAULT_NO_RESULTS_TABLE_STATE, suppressToolbar = false, suppressPagination = false } = _a, rest = __rest(_a, ["data", "columnDefinitions", "rowSelection", "search", "sorting", "columnFilters", "pagination", "className", "onRowClick", "onRefresh", "onDelete", "pageSize", "pageCount", "loading", "outline", "moreActions", "exportFileName", "noDataState", "noResultsState", "suppressToolbar", "suppressPagination"]);
|
|
30
|
+
var { data, columnDefinitions, rowSelection: rowSelectionProp, search, sorting: sortingProp, columnFilters: columnFiltersProp, pagination: paginationProp, className, onRowClick, onRefresh, onDelete, pageSize = 10, pageCount, loading = false, outline = false, moreActions, exportFileName, noDataState = DEFAULT_NO_DATA_TABLE_STATE, noResultsState = DEFAULT_NO_RESULTS_TABLE_STATE, suppressToolbar = false, toolbarBefore, suppressPagination = false } = _a, rest = __rest(_a, ["data", "columnDefinitions", "rowSelection", "search", "sorting", "columnFilters", "pagination", "className", "onRowClick", "onRefresh", "onDelete", "pageSize", "pageCount", "loading", "outline", "moreActions", "exportFileName", "noDataState", "noResultsState", "suppressToolbar", "toolbarBefore", "suppressPagination"]);
|
|
31
31
|
const { state: globalFilter, onStateChange: onGlobalFilterChange } = useStateControl(search, '');
|
|
32
32
|
const { state: rowSelection, onStateChange: onRowSelectionChange } = useStateControl(rowSelectionProp, {});
|
|
33
33
|
const defaultPaginationState = useMemo(() => ({
|
|
@@ -140,7 +140,12 @@ export function Table(_a) {
|
|
|
140
140
|
const tableRows = table.getRowModel().rows;
|
|
141
141
|
const loadingTableRows = loadingTable.getRowModel().rows;
|
|
142
142
|
const tablePagination = table.getState().pagination;
|
|
143
|
-
return (_jsx(_Fragment, { children: _jsxs("div", Object.assign({ style: { '--page-size': !suppressPagination ? tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.pageSize : pageSize }, className: cn(styles.wrapper, className) }, extractSupportProps(rest), { children: [!suppressToolbar && (_jsxs("div", { className: styles.header, children: [_jsx(Toolbar, {
|
|
143
|
+
return (_jsx(_Fragment, { children: _jsxs("div", Object.assign({ style: { '--page-size': !suppressPagination ? tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.pageSize : pageSize }, className: cn(styles.wrapper, className) }, extractSupportProps(rest), { children: [!suppressToolbar && (_jsxs("div", { className: styles.header, children: [_jsx(Toolbar, { search: {
|
|
144
|
+
value: globalFilter,
|
|
145
|
+
onChange: onGlobalFilterChange,
|
|
146
|
+
loading: search === null || search === void 0 ? void 0 : search.loading,
|
|
147
|
+
placeholder: (search === null || search === void 0 ? void 0 : search.placeholder) || 'Search',
|
|
148
|
+
}, checked: table.getIsAllPageRowsSelected(), indeterminate: table.getIsSomePageRowsSelected(), className: styles.toolbar, onRefresh: onRefresh ? handleOnRefresh : undefined, onDelete: enableSelection && onDelete ? handleOnDelete : undefined, onCheck: enableSelection ? handleOnCheck : undefined, outline: outline, selectionMode: (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow) ? 'multiple' : 'single', before: toolbarBefore, after: exportFileName ? (_jsx(ExportButton, { fileName: exportFileName, columnDefinitions: columnDefinitions, data: data })) : undefined, moreActions: moreActions }), columnFiltersProp && _jsxs("div", { className: styles.filtersWrapper, children: [" ", columnFiltersProp, " "] })] })), _jsx("div", { className: styles.scrollWrapper, "data-outline": outline || undefined, children: _jsx(Scroll, { size: 's', className: styles.table, children: _jsx("div", { className: styles.tableContent, style: columnSizeVars, children: _jsx(TableContext.Provider, { value: { table }, children: loading ? (_jsxs(SkeletonContextProvider, { loading: true, children: [_jsx(HeaderRow, {}), loadingTableRows.map(row => (_jsx(BodyRow, { row: row }, row.id)))] })) : (_jsxs(_Fragment, { children: [tableRows.length ? _jsx(HeaderRow, {}) : null, tableRows.map(row => (_jsx(BodyRow, { row: row, onRowClick: onRowClick }, row.id))), !tableRows.length && globalFilter && _jsx(TableEmptyState, Object.assign({}, noResultsState)), !tableRows.length && !globalFilter && _jsx(TableEmptyState, Object.assign({}, noDataState))] })) }) }) }) }), !suppressPagination && (_jsx(TablePagination, { table: table, options: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.options, optionsLabel: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsLabel, pageCount: pageCount }))] })) }));
|
|
144
149
|
}
|
|
145
150
|
Table.getStatusColumnDef = getStatusColumnDef;
|
|
146
151
|
Table.statusAppearances = STATUS_APPEARANCE;
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"title": "Table",
|
|
7
|
-
"version": "0.
|
|
7
|
+
"version": "0.10.0",
|
|
8
8
|
"sideEffects": [
|
|
9
9
|
"*.css",
|
|
10
10
|
"*.woff",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@snack-uikit/scroll": "0.5.0",
|
|
42
42
|
"@snack-uikit/skeleton": "0.3.2",
|
|
43
43
|
"@snack-uikit/toggles": "0.9.3",
|
|
44
|
-
"@snack-uikit/toolbar": "0.
|
|
44
|
+
"@snack-uikit/toolbar": "0.6.0",
|
|
45
45
|
"@snack-uikit/truncate-string": "0.4.4",
|
|
46
46
|
"@snack-uikit/typography": "0.6.1",
|
|
47
47
|
"@snack-uikit/utils": "3.2.0",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"uncontrollable": "8.0.0",
|
|
52
52
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.1/xlsx-0.20.1.tgz"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "75f118e9d2fa2f38727460ebdd9ac5a1c31cc176"
|
|
55
55
|
}
|
|
@@ -136,6 +136,9 @@ export type TableProps<TData extends object> = WithSupportProps<{
|
|
|
136
136
|
|
|
137
137
|
/** Отключение тулбара */
|
|
138
138
|
suppressToolbar?: boolean;
|
|
139
|
+
/** Дополнительный слот в `Toolbar` перед строкой поиска */
|
|
140
|
+
toolbarBefore?: ReactNode;
|
|
141
|
+
|
|
139
142
|
/** Отключение пагинации */
|
|
140
143
|
suppressPagination?: boolean;
|
|
141
144
|
}>;
|
|
@@ -170,6 +173,8 @@ export function Table<TData extends object>({
|
|
|
170
173
|
noResultsState = DEFAULT_NO_RESULTS_TABLE_STATE,
|
|
171
174
|
|
|
172
175
|
suppressToolbar = false,
|
|
176
|
+
toolbarBefore,
|
|
177
|
+
|
|
173
178
|
suppressPagination = false,
|
|
174
179
|
|
|
175
180
|
...rest
|
|
@@ -344,8 +349,12 @@ export function Table<TData extends object>({
|
|
|
344
349
|
{!suppressToolbar && (
|
|
345
350
|
<div className={styles.header}>
|
|
346
351
|
<Toolbar
|
|
347
|
-
|
|
348
|
-
|
|
352
|
+
search={{
|
|
353
|
+
value: globalFilter,
|
|
354
|
+
onChange: onGlobalFilterChange,
|
|
355
|
+
loading: search?.loading,
|
|
356
|
+
placeholder: search?.placeholder || 'Search',
|
|
357
|
+
}}
|
|
349
358
|
checked={table.getIsAllPageRowsSelected()}
|
|
350
359
|
indeterminate={table.getIsSomePageRowsSelected()}
|
|
351
360
|
className={styles.toolbar}
|
|
@@ -353,10 +362,9 @@ export function Table<TData extends object>({
|
|
|
353
362
|
onDelete={enableSelection && onDelete ? handleOnDelete : undefined}
|
|
354
363
|
onCheck={enableSelection ? handleOnCheck : undefined}
|
|
355
364
|
outline={outline}
|
|
356
|
-
loading={search?.loading}
|
|
357
|
-
placeholder={search?.placeholder || 'Search'}
|
|
358
365
|
selectionMode={rowSelectionProp?.multiRow ? 'multiple' : 'single'}
|
|
359
|
-
|
|
366
|
+
before={toolbarBefore}
|
|
367
|
+
after={
|
|
360
368
|
exportFileName ? (
|
|
361
369
|
<ExportButton fileName={exportFileName} columnDefinitions={columnDefinitions} data={data} />
|
|
362
370
|
) : undefined
|