@snack-uikit/table 0.31.1 → 0.32.1-preview-d479ae3f.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 +11 -0
- package/README.md +4 -2
- package/dist/cjs/components/ServerTable/ServerTable.js +1 -4
- package/dist/cjs/components/Table/Table.d.ts +1 -1
- package/dist/cjs/components/Table/Table.js +144 -116
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/index.d.ts +1 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/index.js +25 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/types.d.ts +7 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/types.js +5 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/useSaveTableSettings.d.ts +11 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/useSaveTableSettings.js +42 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/utils/index.d.ts +2 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/utils/index.js +26 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/utils/parser.d.ts +3 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/utils/parser.js +42 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/utils/serializer.d.ts +3 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/utils/serializer.js +43 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/vallidators.d.ts +3 -0
- package/dist/cjs/components/Table/hooks/useSaveTableSettings/vallidators.js +10 -0
- package/dist/cjs/components/Table/hooks/useStateControl.d.ts +1 -4
- package/dist/cjs/components/Table/hooks/useStateControl.js +7 -9
- package/dist/cjs/components/Table/styles.module.css +4 -3
- package/dist/cjs/components/types.d.ts +3 -1
- package/dist/cjs/constants.d.ts +3 -0
- package/dist/cjs/constants.js +5 -2
- package/dist/cjs/helperComponents/Cells/BodyCell/BodyCell.d.ts +2 -1
- package/dist/cjs/helperComponents/Cells/BodyCell/BodyCell.js +4 -2
- package/dist/cjs/helperComponents/Cells/BodyCell/styles.module.css +8 -2
- package/dist/cjs/helperComponents/Cells/CopyCell/CopyCell.js +1 -1
- package/dist/cjs/helperComponents/Cells/HeaderCell/HeaderCell.d.ts +2 -1
- package/dist/cjs/helperComponents/Cells/HeaderCell/HeaderCell.js +4 -2
- package/dist/cjs/helperComponents/Cells/HeaderCell/styles.module.css +10 -1
- package/dist/cjs/helperComponents/Cells/StatusCell/styles.module.css +3 -3
- package/dist/cjs/helperComponents/Cells/TreeCell/TreeCell.d.ts +1 -1
- package/dist/cjs/helperComponents/Cells/TreeCell/TreeCell.js +28 -30
- package/dist/cjs/helperComponents/Cells/TreeCell/TreeLine/styles.module.css +2 -2
- package/dist/cjs/helperComponents/Cells/TreeCell/styles.module.css +16 -34
- package/dist/cjs/helperComponents/Rows/BodyRow.d.ts +3 -2
- package/dist/cjs/helperComponents/Rows/BodyRow.js +9 -4
- package/dist/cjs/helperComponents/Rows/HeaderRow.d.ts +2 -1
- package/dist/cjs/helperComponents/Rows/HeaderRow.js +11 -4
- package/dist/cjs/helperComponents/Rows/Row.d.ts +3 -3
- package/dist/cjs/helperComponents/Rows/Row.js +4 -2
- package/dist/cjs/helperComponents/Rows/styles.module.css +14 -6
- package/dist/cjs/helperComponents/TableEmptyState/styles.module.css +1 -1
- package/dist/cjs/utils.d.ts +1 -0
- package/dist/cjs/utils.js +14 -2
- package/dist/esm/components/ServerTable/ServerTable.js +1 -1
- package/dist/esm/components/Table/Table.d.ts +1 -1
- package/dist/esm/components/Table/Table.js +48 -24
- package/dist/esm/components/Table/hooks/useSaveTableSettings/index.d.ts +1 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/index.js +1 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/types.d.ts +7 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/types.js +1 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/useSaveTableSettings.d.ts +11 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/useSaveTableSettings.js +26 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/utils/index.d.ts +2 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/utils/index.js +2 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/utils/parser.d.ts +3 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/utils/parser.js +30 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/utils/serializer.d.ts +3 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/utils/serializer.js +34 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/vallidators.d.ts +3 -0
- package/dist/esm/components/Table/hooks/useSaveTableSettings/vallidators.js +2 -0
- package/dist/esm/components/Table/hooks/useStateControl.d.ts +1 -4
- package/dist/esm/components/Table/hooks/useStateControl.js +7 -9
- package/dist/esm/components/Table/styles.module.css +4 -3
- package/dist/esm/components/types.d.ts +3 -1
- package/dist/esm/constants.d.ts +3 -0
- package/dist/esm/constants.js +3 -0
- package/dist/esm/helperComponents/Cells/BodyCell/BodyCell.d.ts +2 -1
- package/dist/esm/helperComponents/Cells/BodyCell/BodyCell.js +2 -2
- package/dist/esm/helperComponents/Cells/BodyCell/styles.module.css +8 -2
- package/dist/esm/helperComponents/Cells/CopyCell/CopyCell.js +1 -1
- package/dist/esm/helperComponents/Cells/HeaderCell/HeaderCell.d.ts +2 -1
- package/dist/esm/helperComponents/Cells/HeaderCell/HeaderCell.js +2 -2
- package/dist/esm/helperComponents/Cells/HeaderCell/styles.module.css +10 -1
- package/dist/esm/helperComponents/Cells/StatusCell/styles.module.css +3 -3
- package/dist/esm/helperComponents/Cells/TreeCell/TreeCell.d.ts +1 -1
- package/dist/esm/helperComponents/Cells/TreeCell/TreeCell.js +26 -28
- package/dist/esm/helperComponents/Cells/TreeCell/TreeLine/TreeLine.js +2 -2
- package/dist/esm/helperComponents/Cells/TreeCell/TreeLine/styles.module.css +2 -2
- package/dist/esm/helperComponents/Cells/TreeCell/styles.module.css +16 -34
- package/dist/esm/helperComponents/Rows/BodyRow.d.ts +3 -2
- package/dist/esm/helperComponents/Rows/BodyRow.js +2 -2
- package/dist/esm/helperComponents/Rows/HeaderRow.d.ts +2 -1
- package/dist/esm/helperComponents/Rows/HeaderRow.js +2 -2
- package/dist/esm/helperComponents/Rows/Row.d.ts +3 -3
- package/dist/esm/helperComponents/Rows/Row.js +2 -2
- package/dist/esm/helperComponents/Rows/styles.module.css +14 -6
- package/dist/esm/helperComponents/TableEmptyState/styles.module.css +1 -1
- package/dist/esm/utils.d.ts +1 -0
- package/dist/esm/utils.js +10 -0
- package/package.json +17 -16
- package/src/components/ServerTable/ServerTable.tsx +1 -1
- package/src/components/Table/Table.tsx +176 -127
- package/src/components/Table/hooks/useSaveTableSettings/index.ts +1 -0
- package/src/components/Table/hooks/useSaveTableSettings/types.ts +8 -0
- package/src/components/Table/hooks/useSaveTableSettings/useSaveTableSettings.ts +58 -0
- package/src/components/Table/hooks/useSaveTableSettings/utils/index.ts +2 -0
- package/src/components/Table/hooks/useSaveTableSettings/utils/parser.ts +40 -0
- package/src/components/Table/hooks/useSaveTableSettings/utils/serializer.ts +53 -0
- package/src/components/Table/hooks/useSaveTableSettings/vallidators.ts +7 -0
- package/src/components/Table/hooks/useStateControl.ts +12 -10
- package/src/components/Table/styles.module.scss +4 -8
- package/src/components/types.ts +5 -1
- package/src/constants.tsx +3 -0
- package/src/helperComponents/Cells/BodyCell/BodyCell.tsx +3 -1
- package/src/helperComponents/Cells/BodyCell/styles.module.scss +6 -1
- package/src/helperComponents/Cells/CopyCell/CopyCell.tsx +1 -1
- package/src/helperComponents/Cells/CopyCell/styles.module.scss +1 -1
- package/src/helperComponents/Cells/HeaderCell/HeaderCell.tsx +8 -2
- package/src/helperComponents/Cells/HeaderCell/styles.module.scss +9 -0
- package/src/helperComponents/Cells/StatusCell/styles.module.scss +9 -7
- package/src/helperComponents/Cells/TreeCell/TreeCell.tsx +51 -42
- package/src/helperComponents/Cells/TreeCell/TreeLine/TreeLine.tsx +2 -2
- package/src/helperComponents/Cells/TreeCell/TreeLine/styles.module.scss +8 -8
- package/src/helperComponents/Cells/TreeCell/styles.module.scss +36 -55
- package/src/helperComponents/Rows/BodyRow.tsx +7 -6
- package/src/helperComponents/Rows/HeaderRow.tsx +15 -6
- package/src/helperComponents/Rows/Row.tsx +10 -3
- package/src/helperComponents/Rows/styles.module.scss +30 -19
- package/src/helperComponents/TableEmptyState/styles.module.scss +1 -1
- package/src/utils.ts +14 -0
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.32.0 (2025-03-03)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **PDS-483:** table rowAutoHeight prop, removed default truncate when auto-height enabled ([0da9a86](https://github.com/cloud-ru-tech/snack-uikit/commit/0da9a861737fc35ba873a1795419d49c6cae51d1))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## 0.31.1 (2025-03-03)
|
|
7
18
|
|
|
8
19
|
### Only dependencies have been changed
|
package/README.md
CHANGED
|
@@ -119,6 +119,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
119
119
|
| rowSelection | `{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; }` | - | Параметры отвечают за возможность выбора строк <br> <strong>initialState</strong>: Начальное состояние выбора строк <br> <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br> <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br> <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br> <strong>onChange</strong>: Колбэк на выбор строк |
|
|
120
120
|
| search | `{ initialState?: string; state?: string; placeholder?: string; loading?: boolean; onChange?(value: string): void; }` | 'Search'<br> <strong>loading</strong>: Состояние загрузки в строке поиска <br> <strong>onChange</strong>: Колбэк на изменение данных в строке поиска | Параметры отвечают за глобальный поиск в таблице <br> <strong>initialState</strong>: Начальное состояние строки поиска <br> <strong>state</strong>: Состояние строки поиска, жестко устанавливаемое снаружи <br> <strong>placeholder</strong>: Placeholder строки поиска |
|
|
121
121
|
| enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
|
|
122
|
+
| rowAutoHeight | `boolean` | - | |
|
|
122
123
|
| pageSize | `number` | 10 | Максимальное кол-во строк на страницу |
|
|
123
124
|
| onRowClick | `RowClickHandler<TData>` | - | Колбэк клика по строке |
|
|
124
125
|
| className | `string` | - | CSS-класс |
|
|
@@ -143,7 +144,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
143
144
|
| scrollRef | `RefObject<HTMLElement>` | - | Ссылка на элемент, обозначающий самый конец прокручиваемого списка |
|
|
144
145
|
| scrollContainerRef | `RefObject<HTMLElement>` | - | Ссылка на контейнер, который скроллится |
|
|
145
146
|
| rowPinning | `Pick<RowPinningState, "top">` | { top: [], } | Определение какие строки должны быть закреплены в таблице |
|
|
146
|
-
| savedState | `{ id: string; resize?: boolean; }` | - | Конфиг для сохранения состояния в localStorage. <br> Поле id должно быть уникальным для разных таблиц в рамках приложения. <br> Для корректной работы необходимо наличие id в конфиге columnDefinitions |
|
|
147
|
+
| savedState | `{ id: string; filter?: Omit<FilterStateOptions<TFilters>, "filterLocalStorageKey">; resize?: boolean; }` | - | Конфиг для сохранения состояния в localStorage. <br> Поле id должно быть уникальным для разных таблиц в рамках приложения. <br> Для корректной работы необходимо наличие id в конфиге columnDefinitions |
|
|
147
148
|
| pagination | `{ state?: PaginationState; options?: number[]; optionsLabel?: string; onChange?(state: PaginationState): void; optionsRender?(value: string \| number, idx: number): string \| number; }` | 'Rows volume: ' <br> <strong>onChange</strong>: Колбэк на изменение пагинации | Параметры отвечают за пагинацию в таблице <br> <strong>state</strong>: Состояние строки поиска, жестко устанавливаемое снаружи <br> <strong>options</strong>: Варианты в выпадающем селекторе для установки кол-ва строк на страницу <br> <strong>optionsLabel</strong>: Текст для селектора кол-ва строк на страницу |
|
|
148
149
|
| autoResetPageIndex | `boolean` | - | Автоматический сброс пагинации к первой странице при изменении данных или состояния (e.g фильтры, сортировки, и т.д) |
|
|
149
150
|
| pageCount | `number` | - | Кол-во страниц (используется для внешнего управления) |
|
|
@@ -187,6 +188,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
187
188
|
| expanding | `{ getSubRows: (element: TData) => TData[]; expandingColumnDefinition: TreeColumnDefinitionProps<TData>; }` | - | Параметр отвечает за общие настройки раскрывающихся строк |
|
|
188
189
|
| rowSelection | `{ initialState?: RowSelectionState; state?: RowSelectionState; enable?: boolean \| ((row: Row<TData>) => boolean); multiRow?: boolean; onChange?(state: RowSelectionState): void; }` | - | Параметры отвечают за возможность выбора строк <br> <strong>initialState</strong>: Начальное состояние выбора строк <br> <strong>state</strong>: Состояние выбора строк, жестко устанавливаемое снаружи <br> <strong>enable</strong>: Колбэк определяющий можно ли выбрать строку <br> <strong>multiRow</strong>: Мульти-выбор строк (включен по-умолчанию, когда включается выбор) <br> <strong>onChange</strong>: Колбэк на выбор строк |
|
|
189
190
|
| enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
|
|
191
|
+
| rowAutoHeight | `boolean` | - | |
|
|
190
192
|
| onRowClick | `RowClickHandler<TData>` | - | Колбэк клика по строке |
|
|
191
193
|
| className | `string` | - | CSS-класс |
|
|
192
194
|
| loading | `boolean` | - | Состояние загрузки |
|
|
@@ -207,7 +209,7 @@ const columnDefinitions: ColumnDefinition<TableData>[] = [
|
|
|
207
209
|
| scrollRef | `RefObject<HTMLElement>` | - | Ссылка на элемент, обозначающий самый конец прокручиваемого списка |
|
|
208
210
|
| scrollContainerRef | `RefObject<HTMLElement>` | - | Ссылка на контейнер, который скроллится |
|
|
209
211
|
| rowPinning | `Pick<RowPinningState, "top">` | - | Определение какие строки должны быть закреплены в таблице |
|
|
210
|
-
| savedState | `{ id: string; resize?: boolean; }` | - | Конфиг для сохранения состояния в localStorage. <br> Поле id должно быть уникальным для разных таблиц в рамках приложения. <br> Для корректной работы необходимо наличие id в конфиге columnDefinitions |
|
|
212
|
+
| savedState | `{ id: string; filter?: Omit<FilterStateOptions<TFilters>, "filterLocalStorageKey">; resize?: boolean; }` | - | Конфиг для сохранения состояния в localStorage. <br> Поле id должно быть уникальным для разных таблиц в рамках приложения. <br> Для корректной работы необходимо наличие id в конфиге columnDefinitions |
|
|
211
213
|
| autoResetPageIndex | `boolean` | - | Автоматический сброс пагинации к первой странице при изменении данных или состояния (e.g фильтры, сортировки, и т.д) |
|
|
212
214
|
| suppressPagination | `boolean` | - | Отключение пагинации |
|
|
213
215
|
| manualPagination | `boolean` | true | |
|
|
@@ -34,10 +34,7 @@ function ServerTable(_a) {
|
|
|
34
34
|
manualFiltering = true
|
|
35
35
|
} = _a,
|
|
36
36
|
rest = __rest(_a, ["items", "total", "limit", "offset", "onChangePage", "search", "pagination", "columnFilters", "manualSorting", "manualPagination", "manualFiltering"]);
|
|
37
|
-
const
|
|
38
|
-
state: search,
|
|
39
|
-
onStateChange: setSearch
|
|
40
|
-
} = (0, hooks_1.useStateControl)(searchProp, '');
|
|
37
|
+
const [search, setSearch] = (0, hooks_1.useStateControl)(searchProp, '');
|
|
41
38
|
const [tempSearch, setTempSearch] = (0, react_1.useState)(search || '');
|
|
42
39
|
(0, react_1.useEffect)(() => {
|
|
43
40
|
var _a;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FiltersState } from '@snack-uikit/chips';
|
|
2
2
|
import { TableProps } from '../types';
|
|
3
3
|
/** Компонент таблицы */
|
|
4
|
-
export declare function Table<TData extends object, TFilters extends FiltersState = Record<string, unknown>>({ data, rowPinning, columnDefinitions, keepPinnedRows, copyPinnedRows, enableSelectPinned, rowSelection: rowSelectionProp, search, sorting: sortingProp, columnFilters, pagination: paginationProp, className, onRowClick, onRefresh, pageSize, pageCount, loading, infiniteLoading, outline, moreActions, exportSettings, dataFiltered, dataError, noDataState, noResultsState, errorDataState, suppressToolbar, suppressSearch, toolbarAfter, suppressPagination, manualSorting, manualPagination: manualPaginationProp, manualFiltering, autoResetPageIndex, scrollRef, scrollContainerRef, getRowId, enableFuzzySearch, savedState, expanding, bulkActions: bulkActionsProp, ...rest }: TableProps<TData, TFilters>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function Table<TData extends object, TFilters extends FiltersState = Record<string, unknown>>({ data, rowPinning, columnDefinitions, keepPinnedRows, copyPinnedRows, enableSelectPinned, rowSelection: rowSelectionProp, search, sorting: sortingProp, columnFilters, pagination: paginationProp, className, onRowClick, onRefresh, pageSize, pageCount, loading, infiniteLoading, outline, moreActions, exportSettings, dataFiltered, dataError, noDataState, noResultsState, errorDataState, suppressToolbar, suppressSearch, toolbarAfter, suppressPagination, manualSorting, manualPagination: manualPaginationProp, manualFiltering, autoResetPageIndex, scrollRef, scrollContainerRef, getRowId, enableFuzzySearch, savedState, expanding, bulkActions: bulkActionsProp, rowAutoHeight, ...rest }: TableProps<TData, TFilters>): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
export declare namespace Table {
|
|
6
6
|
var getStatusColumnDef: typeof import("../../helperComponents").getStatusColumnDef;
|
|
7
7
|
var statusAppearances: Record<string, string>;
|
|
@@ -34,6 +34,7 @@ const TreeCell_1 = require("../../helperComponents/Cells/TreeCell");
|
|
|
34
34
|
const utils_2 = require("../../utils");
|
|
35
35
|
const hooks_1 = require("./hooks");
|
|
36
36
|
const usePageReset_1 = require("./hooks/usePageReset");
|
|
37
|
+
const useSaveTableSettings_1 = require("./hooks/useSaveTableSettings");
|
|
37
38
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
38
39
|
const utils_3 = require("./utils");
|
|
39
40
|
/** Компонент таблицы */
|
|
@@ -81,29 +82,57 @@ function Table(_a) {
|
|
|
81
82
|
enableFuzzySearch,
|
|
82
83
|
savedState,
|
|
83
84
|
expanding,
|
|
84
|
-
bulkActions: bulkActionsProp
|
|
85
|
+
bulkActions: bulkActionsProp,
|
|
86
|
+
rowAutoHeight
|
|
85
87
|
} = _a,
|
|
86
|
-
rest = __rest(_a, ["data", "rowPinning", "columnDefinitions", "keepPinnedRows", "copyPinnedRows", "enableSelectPinned", "rowSelection", "search", "sorting", "columnFilters", "pagination", "className", "onRowClick", "onRefresh", "pageSize", "pageCount", "loading", "infiniteLoading", "outline", "moreActions", "exportSettings", "dataFiltered", "dataError", "noDataState", "noResultsState", "errorDataState", "suppressToolbar", "suppressSearch", "toolbarAfter", "suppressPagination", "manualSorting", "manualPagination", "manualFiltering", "autoResetPageIndex", "scrollRef", "scrollContainerRef", "getRowId", "enableFuzzySearch", "savedState", "expanding", "bulkActions"]);
|
|
88
|
+
rest = __rest(_a, ["data", "rowPinning", "columnDefinitions", "keepPinnedRows", "copyPinnedRows", "enableSelectPinned", "rowSelection", "search", "sorting", "columnFilters", "pagination", "className", "onRowClick", "onRefresh", "pageSize", "pageCount", "loading", "infiniteLoading", "outline", "moreActions", "exportSettings", "dataFiltered", "dataError", "noDataState", "noResultsState", "errorDataState", "suppressToolbar", "suppressSearch", "toolbarAfter", "suppressPagination", "manualSorting", "manualPagination", "manualFiltering", "autoResetPageIndex", "scrollRef", "scrollContainerRef", "getRowId", "enableFuzzySearch", "savedState", "expanding", "bulkActions", "rowAutoHeight"]);
|
|
87
89
|
const {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
} = (0,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
setDataToStorages,
|
|
91
|
+
defaultFilter
|
|
92
|
+
} = (0, useSaveTableSettings_1.useSaveTableSettings)({
|
|
93
|
+
options: savedState
|
|
94
|
+
});
|
|
95
|
+
const [globalFilter, onGlobalFilterChange] = (0, hooks_1.useStateControl)(search, '');
|
|
96
|
+
const [rowSelection, onRowSelectionChange] = (0, hooks_1.useStateControl)(rowSelectionProp, constants_1.DEFAULT_ROW_SELECTION);
|
|
95
97
|
const defaultPaginationState = (0, react_1.useMemo)(() => ({
|
|
96
98
|
pageIndex: 0,
|
|
97
99
|
pageSize
|
|
98
100
|
}), [pageSize]);
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
101
|
+
const [sorting, onSortingChange] = (0, hooks_1.useStateControl)(sortingProp, constants_1.DEFAULT_SORTING);
|
|
102
|
+
const [pagination, onPaginationChange] = (0, hooks_1.useStateControl)(paginationProp, defaultPaginationState);
|
|
103
|
+
const [filter, setFilter] = (0, hooks_1.useStateControl)({
|
|
104
|
+
state: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.value,
|
|
105
|
+
initialState: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.defaultValue,
|
|
106
|
+
onChange: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.onChange
|
|
107
|
+
}, undefined);
|
|
108
|
+
const [filterVisibility, setFilterVisibility] = (0, hooks_1.useStateControl)({
|
|
109
|
+
state: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.visibleFilters,
|
|
110
|
+
initialState: [],
|
|
111
|
+
onChange: columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.onVisibleFiltersChange
|
|
112
|
+
}, constants_1.DEFAULT_FILTER_VISIBILITY);
|
|
113
|
+
(0, react_1.useEffect)(() => {
|
|
114
|
+
setDataToStorages({
|
|
115
|
+
pagination,
|
|
116
|
+
sorting,
|
|
117
|
+
filter,
|
|
118
|
+
search: (search === null || search === void 0 ? void 0 : search.state) || ''
|
|
119
|
+
});
|
|
120
|
+
}, [pagination, sorting, globalFilter, filter, setDataToStorages, search === null || search === void 0 ? void 0 : search.state]);
|
|
121
|
+
(0, utils_1.useLayoutEffect)(() => {
|
|
122
|
+
if (defaultFilter) {
|
|
123
|
+
defaultFilter.pagination && onPaginationChange(defaultFilter.pagination);
|
|
124
|
+
defaultFilter.search && onGlobalFilterChange(defaultFilter.search);
|
|
125
|
+
defaultFilter.sorting && onSortingChange(defaultFilter.sorting);
|
|
126
|
+
defaultFilter.filter && setFilter((0, utils_2.customDateParser)(defaultFilter.filter));
|
|
127
|
+
defaultFilter.filter && setFilterVisibility(Object.keys(defaultFilter.filter));
|
|
128
|
+
}
|
|
129
|
+
}, [defaultFilter, onGlobalFilterChange, onPaginationChange, onSortingChange, setFilter, setFilterVisibility]);
|
|
130
|
+
const patchedFilter = (0, react_1.useMemo)(() => columnFilters ? Object.assign(Object.assign({}, columnFilters), {
|
|
131
|
+
value: filter,
|
|
132
|
+
onChange: setFilter,
|
|
133
|
+
visibleFilters: filterVisibility,
|
|
134
|
+
onVisibleFiltersChange: setFilterVisibility
|
|
135
|
+
}) : undefined, [columnFilters, filter, setFilter, filterVisibility, setFilterVisibility]);
|
|
107
136
|
const enableSelection = Boolean(rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.enable);
|
|
108
137
|
const manualPagination = infiniteLoading || manualPaginationProp;
|
|
109
138
|
const tableColumns = (0, react_1.useMemo)(() => {
|
|
@@ -157,10 +186,15 @@ function Table(_a) {
|
|
|
157
186
|
enableSorting: false,
|
|
158
187
|
enableResizing: false,
|
|
159
188
|
minSize: 40,
|
|
160
|
-
cell: cell =>
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
189
|
+
cell: cell => {
|
|
190
|
+
if (rowAutoHeight) {
|
|
191
|
+
return cell.getValue();
|
|
192
|
+
}
|
|
193
|
+
return (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, {
|
|
194
|
+
text: String(cell.getValue()),
|
|
195
|
+
maxLines: 1
|
|
196
|
+
});
|
|
197
|
+
}
|
|
164
198
|
},
|
|
165
199
|
manualSorting,
|
|
166
200
|
manualPagination,
|
|
@@ -311,7 +345,6 @@ function Table(_a) {
|
|
|
311
345
|
const tableFilteredRowsIds = tableFilteredRows.map(row => row.id);
|
|
312
346
|
const topRows = table.getTopRows();
|
|
313
347
|
const loadingTableRows = loadingTable.getRowModel().rows;
|
|
314
|
-
const tablePagination = table.getState().pagination;
|
|
315
348
|
const filteredTopRows = table.getState().globalFilter ? topRows.filter(tr => tableFilteredRowsIds.includes(tr.id)) : topRows;
|
|
316
349
|
const centerRows = copyPinnedRows ? tableRows : tableCenterRows;
|
|
317
350
|
const {
|
|
@@ -322,10 +355,6 @@ function Table(_a) {
|
|
|
322
355
|
noResultsState,
|
|
323
356
|
errorDataState
|
|
324
357
|
});
|
|
325
|
-
const cssPageSize = (0, react_1.useMemo)(() => {
|
|
326
|
-
const tempPageSize = (!suppressPagination ? tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.pageSize : pageSize) + filteredTopRows.length;
|
|
327
|
-
return !tableRows.length ? Math.min(Math.max(tempPageSize, 5), constants_1.DEFAULT_PAGE_SIZE) : tempPageSize;
|
|
328
|
-
}, [filteredTopRows.length, pageSize, suppressPagination, tablePagination === null || tablePagination === void 0 ? void 0 : tablePagination.pageSize, tableRows.length]);
|
|
329
358
|
(0, usePageReset_1.usePageReset)({
|
|
330
359
|
manualPagination,
|
|
331
360
|
maximumAvailablePage: pageCount || tableFilteredRows.length / pagination.pageSize,
|
|
@@ -337,102 +366,101 @@ function Table(_a) {
|
|
|
337
366
|
updateCellMap
|
|
338
367
|
} = (0, contexts_1.useCellAutoResizeController)(table);
|
|
339
368
|
const showToolbar = !suppressToolbar;
|
|
340
|
-
return (0, jsx_runtime_1.
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
369
|
+
return (0, jsx_runtime_1.jsxs)("div", Object.assign({
|
|
370
|
+
className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className)
|
|
371
|
+
}, (0, utils_1.extractSupportProps)(rest), {
|
|
372
|
+
children: [showToolbar && (0, jsx_runtime_1.jsx)("div", {
|
|
373
|
+
className: styles_module_scss_1.default.header,
|
|
374
|
+
children: (0, jsx_runtime_1.jsx)(toolbar_1.Toolbar, {
|
|
375
|
+
search: suppressSearch ? undefined : {
|
|
376
|
+
value: globalFilter,
|
|
377
|
+
onChange: onGlobalFilterChange,
|
|
378
|
+
loading: search === null || search === void 0 ? void 0 : search.loading,
|
|
379
|
+
placeholder: (search === null || search === void 0 ? void 0 : search.placeholder) || t('searchPlaceholder')
|
|
380
|
+
},
|
|
381
|
+
className: styles_module_scss_1.default.toolbar,
|
|
382
|
+
onRefresh: onRefresh ? handleOnRefresh : undefined,
|
|
383
|
+
bulkActions: bulkActions,
|
|
384
|
+
selectionMode: (rowSelectionProp === null || rowSelectionProp === void 0 ? void 0 : rowSelectionProp.multiRow) ? 'multiple' : 'single',
|
|
385
|
+
checked: table.getIsAllPageRowsSelected(),
|
|
386
|
+
indeterminate: table.getIsSomePageRowsSelected(),
|
|
387
|
+
onCheck: enableSelection ? handleOnToolbarCheck : undefined,
|
|
388
|
+
outline: outline,
|
|
389
|
+
after: toolbarAfter || exportSettings ? (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
|
|
390
|
+
children: [toolbarAfter, exportSettings && (0, jsx_runtime_1.jsx)(helperComponents_1.ExportButton, {
|
|
391
|
+
settings: exportSettings,
|
|
392
|
+
columnDefinitions: columnDefinitions,
|
|
393
|
+
data: data,
|
|
394
|
+
topRows: filteredTopRows,
|
|
395
|
+
centerRows: centerRows
|
|
396
|
+
})]
|
|
397
|
+
}) : undefined,
|
|
398
|
+
moreActions: moreActions,
|
|
399
|
+
filterRow: patchedFilter,
|
|
400
|
+
"data-test-id": constants_1.TEST_IDS.toolbar
|
|
401
|
+
})
|
|
402
|
+
}), (0, jsx_runtime_1.jsxs)(scroll_1.Scroll, {
|
|
403
|
+
size: 's',
|
|
404
|
+
className: styles_module_scss_1.default.table,
|
|
405
|
+
ref: scrollContainerRef,
|
|
406
|
+
"data-outline": outline || undefined,
|
|
407
|
+
children: [(0, jsx_runtime_1.jsx)("div", {
|
|
408
|
+
className: styles_module_scss_1.default.tableContent,
|
|
409
|
+
style: columnSizes.vars,
|
|
410
|
+
children: (0, jsx_runtime_1.jsx)(contexts_1.CellAutoResizeContext.Provider, {
|
|
411
|
+
value: {
|
|
412
|
+
updateCellMap
|
|
358
413
|
},
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
size: 's',
|
|
385
|
-
className: styles_module_scss_1.default.table,
|
|
386
|
-
ref: scrollContainerRef,
|
|
387
|
-
children: [(0, jsx_runtime_1.jsx)("div", {
|
|
388
|
-
className: styles_module_scss_1.default.tableContent,
|
|
389
|
-
style: columnSizes.vars,
|
|
390
|
-
children: (0, jsx_runtime_1.jsx)(helperComponents_1.TableContext.Provider, {
|
|
391
|
-
value: {
|
|
392
|
-
table
|
|
393
|
-
},
|
|
394
|
-
children: (!infiniteLoading || !data.length) && loading ? (0, jsx_runtime_1.jsxs)(skeleton_1.SkeletonContextProvider, {
|
|
414
|
+
children: (0, jsx_runtime_1.jsx)(helperComponents_1.TableContext.Provider, {
|
|
415
|
+
value: {
|
|
416
|
+
table
|
|
417
|
+
},
|
|
418
|
+
children: (!infiniteLoading || !data.length) && loading ? (0, jsx_runtime_1.jsxs)(skeleton_1.SkeletonContextProvider, {
|
|
419
|
+
loading: true,
|
|
420
|
+
children: [(0, jsx_runtime_1.jsx)(helperComponents_1.HeaderRow, {
|
|
421
|
+
rowAutoHeight: rowAutoHeight
|
|
422
|
+
}), loadingTableRows.map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
423
|
+
row: row,
|
|
424
|
+
rowAutoHeight: rowAutoHeight
|
|
425
|
+
}, row.id))]
|
|
426
|
+
}) : (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
|
|
427
|
+
children: [centerRows.length || filteredTopRows.length ? (0, jsx_runtime_1.jsx)(helperComponents_1.HeaderRow, {}) : null, filteredTopRows.length ? (0, jsx_runtime_1.jsx)("div", {
|
|
428
|
+
className: styles_module_scss_1.default.topRowWrapper,
|
|
429
|
+
children: filteredTopRows.map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
430
|
+
row: row,
|
|
431
|
+
onRowClick: onRowClick,
|
|
432
|
+
rowAutoHeight: rowAutoHeight
|
|
433
|
+
}, row.id))
|
|
434
|
+
}) : null, centerRows.map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
435
|
+
row: row,
|
|
436
|
+
onRowClick: onRowClick,
|
|
437
|
+
rowAutoHeight: rowAutoHeight
|
|
438
|
+
}, row.id)), data.length > 0 && infiniteLoading && loading && !dataError && (0, jsx_runtime_1.jsx)(skeleton_1.SkeletonContextProvider, {
|
|
395
439
|
loading: true,
|
|
396
|
-
children:
|
|
440
|
+
children: loadingTableRows.slice(0, 3).map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
397
441
|
row: row
|
|
398
|
-
}, row.id))
|
|
399
|
-
})
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
}, row.id))
|
|
406
|
-
}) : null, centerRows.map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
407
|
-
row: row,
|
|
408
|
-
onRowClick: onRowClick
|
|
409
|
-
}, row.id)), data.length > 0 && infiniteLoading && loading && (0, jsx_runtime_1.jsx)(skeleton_1.SkeletonContextProvider, {
|
|
410
|
-
loading: true,
|
|
411
|
-
children: loadingTableRows.slice(0, 3).map(row => (0, jsx_runtime_1.jsx)(helperComponents_1.BodyRow, {
|
|
412
|
-
row: row
|
|
413
|
-
}, row.id))
|
|
414
|
-
}), (0, jsx_runtime_1.jsx)(helperComponents_1.TableEmptyState, {
|
|
415
|
-
emptyStates: emptyStates,
|
|
416
|
-
dataError: dataError,
|
|
417
|
-
dataFiltered: dataFiltered || Boolean(table.getState().globalFilter),
|
|
418
|
-
tableRowsLength: tableRows.length + filteredTopRows.length
|
|
419
|
-
})]
|
|
420
|
-
})
|
|
442
|
+
}, row.id))
|
|
443
|
+
}), (0, jsx_runtime_1.jsx)(helperComponents_1.TableEmptyState, {
|
|
444
|
+
emptyStates: emptyStates,
|
|
445
|
+
dataError: dataError,
|
|
446
|
+
dataFiltered: dataFiltered || Boolean(table.getState().globalFilter),
|
|
447
|
+
tableRowsLength: tableRows.length + filteredTopRows.length
|
|
448
|
+
})]
|
|
421
449
|
})
|
|
422
|
-
})
|
|
423
|
-
className: styles_module_scss_1.default.scrollStub,
|
|
424
|
-
ref: scrollRef
|
|
425
|
-
})]
|
|
450
|
+
})
|
|
426
451
|
})
|
|
427
|
-
}),
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
optionsLabel: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsLabel,
|
|
431
|
-
pageCount: pageCount,
|
|
432
|
-
optionsRender: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsRender
|
|
452
|
+
}), (0, jsx_runtime_1.jsx)("div", {
|
|
453
|
+
className: styles_module_scss_1.default.scrollStub,
|
|
454
|
+
ref: scrollRef
|
|
433
455
|
})]
|
|
434
|
-
}))
|
|
435
|
-
|
|
456
|
+
}), !infiniteLoading && !suppressPagination && (0, jsx_runtime_1.jsx)(helperComponents_1.TablePagination, {
|
|
457
|
+
table: table,
|
|
458
|
+
options: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.options,
|
|
459
|
+
optionsLabel: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsLabel,
|
|
460
|
+
pageCount: pageCount,
|
|
461
|
+
optionsRender: paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.optionsRender
|
|
462
|
+
})]
|
|
463
|
+
}));
|
|
436
464
|
}
|
|
437
465
|
Table.getStatusColumnDef = helperComponents_1.getStatusColumnDef;
|
|
438
466
|
Table.statusAppearances = helperComponents_1.STATUS_APPEARANCE;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useSaveTableSettings';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./useSaveTableSettings"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FiltersState } from '@snack-uikit/chips';
|
|
2
|
+
import { TableProps } from '../../../types';
|
|
3
|
+
import { Settings } from './types';
|
|
4
|
+
type TableSettings<TFilter extends FiltersState = Record<string, unknown>> = {
|
|
5
|
+
options?: TableProps<TFilter>['savedState'];
|
|
6
|
+
};
|
|
7
|
+
export declare const useSaveTableSettings: <TFilter extends FiltersState = Record<string, unknown>>({ options, }: TableSettings<TFilter>) => {
|
|
8
|
+
defaultFilter: Settings<TFilter> | null | undefined;
|
|
9
|
+
setDataToStorages: (data: Settings<TFilter>) => void;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSaveTableSettings = void 0;
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
9
|
+
const utils_2 = require("./utils");
|
|
10
|
+
const vallidators_1 = require("./vallidators");
|
|
11
|
+
const useSaveTableSettings = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
options
|
|
14
|
+
} = _ref;
|
|
15
|
+
const saveFilterOptions = (0, react_1.useMemo)(() => (options === null || options === void 0 ? void 0 : options.filter) ? Object.assign(Object.assign({}, options.filter), {
|
|
16
|
+
filterLocalStorageKey: `${options.id}__filterState`
|
|
17
|
+
}) : undefined, [options]);
|
|
18
|
+
const validate = (0, react_1.useCallback)(data => {
|
|
19
|
+
const isPaginationValid = (0, vallidators_1.validatePaging)(data === null || data === void 0 ? void 0 : data.pagination);
|
|
20
|
+
const isSortingValid = (0, vallidators_1.validateSorting)(data === null || data === void 0 ? void 0 : data.sorting);
|
|
21
|
+
const isSearchValid = typeof (data === null || data === void 0 ? void 0 : data.search) === 'string';
|
|
22
|
+
const isFilterValid = Boolean(saveFilterOptions === null || saveFilterOptions === void 0 ? void 0 : saveFilterOptions.validateData(data === null || data === void 0 ? void 0 : data.filter));
|
|
23
|
+
return isPaginationValid && isSortingValid && isSearchValid && isFilterValid;
|
|
24
|
+
}, [saveFilterOptions]);
|
|
25
|
+
const filterStateOptions = (0, react_1.useMemo)(() => saveFilterOptions ? Object.assign(Object.assign({}, saveFilterOptions), {
|
|
26
|
+
validateData: validate
|
|
27
|
+
}) : undefined, [saveFilterOptions, validate]);
|
|
28
|
+
const {
|
|
29
|
+
getDefaultFilter,
|
|
30
|
+
setDataToStorages
|
|
31
|
+
} = (0, utils_1.useSaveFilterState)({
|
|
32
|
+
options: filterStateOptions,
|
|
33
|
+
serializer: utils_2.serializer,
|
|
34
|
+
parser: utils_2.parser
|
|
35
|
+
});
|
|
36
|
+
const defaultFilter = (0, react_1.useMemo)(getDefaultFilter, [getDefaultFilter]);
|
|
37
|
+
return {
|
|
38
|
+
defaultFilter,
|
|
39
|
+
setDataToStorages
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
exports.useSaveTableSettings = useSaveTableSettings;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./serializer"), exports);
|
|
26
|
+
__exportStar(require("./parser"), exports);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parser = void 0;
|
|
7
|
+
const ft_request_payload_transform_1 = require("@cloud-ru/ft-request-payload-transform");
|
|
8
|
+
const constants_1 = require("../../../../../constants");
|
|
9
|
+
const mapPagination = value => {
|
|
10
|
+
if (!value || !value.offset || !value.limit) return {
|
|
11
|
+
pageSize: constants_1.DEFAULT_PAGE_SIZE,
|
|
12
|
+
pageIndex: 0
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
pageSize: value.limit || constants_1.DEFAULT_PAGE_SIZE,
|
|
16
|
+
pageIndex: Math.floor(value.offset / value.limit)
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
const mapSort = function () {
|
|
20
|
+
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
21
|
+
return value.map(column => ({
|
|
22
|
+
id: column.field,
|
|
23
|
+
desc: column.direction === 'd'
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
26
|
+
const mapFilter = value => {
|
|
27
|
+
if (!value) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
return Object.fromEntries(value.map(filter => [filter.field, filter.value]));
|
|
31
|
+
};
|
|
32
|
+
const parser = value => {
|
|
33
|
+
var _a;
|
|
34
|
+
const parsedValue = (0, ft_request_payload_transform_1.parseQueryParamsString)(value);
|
|
35
|
+
return {
|
|
36
|
+
pagination: mapPagination(parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.pagination),
|
|
37
|
+
search: ((_a = parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.search) === null || _a === void 0 ? void 0 : _a.toString()) || '',
|
|
38
|
+
sorting: mapSort(parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.sort),
|
|
39
|
+
filter: mapFilter(parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.filter)
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
exports.parser = parser;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.serializer = void 0;
|
|
7
|
+
const ft_request_payload_transform_1 = require("@cloud-ru/ft-request-payload-transform");
|
|
8
|
+
const mapPagination = value => ({
|
|
9
|
+
limit: value.pageSize,
|
|
10
|
+
offset: value.pageSize * value.pageIndex
|
|
11
|
+
});
|
|
12
|
+
const mapSort = value => value.map(column => ({
|
|
13
|
+
field: column.id,
|
|
14
|
+
direction: column.desc ? 'd' : 'a'
|
|
15
|
+
}));
|
|
16
|
+
const mapDateToString = filter => filter instanceof Date ? filter.toISOString() : filter;
|
|
17
|
+
const mapFilter = value => {
|
|
18
|
+
if (!value) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return Object.entries(value).filter(_ref => {
|
|
22
|
+
let [_, value] = _ref;
|
|
23
|
+
return value !== undefined;
|
|
24
|
+
}).map(_ref2 => {
|
|
25
|
+
let [key, value] = _ref2;
|
|
26
|
+
return Array.isArray(value) ? {
|
|
27
|
+
value: value.map(mapDateToString),
|
|
28
|
+
condition: 'in',
|
|
29
|
+
field: key
|
|
30
|
+
} : {
|
|
31
|
+
value: mapDateToString(value),
|
|
32
|
+
condition: 'eq',
|
|
33
|
+
field: key
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const serializer = value => (0, ft_request_payload_transform_1.createRequestPayload)({
|
|
38
|
+
pagination: mapPagination(value.pagination),
|
|
39
|
+
search: value.search,
|
|
40
|
+
sort: mapSort(value.sorting),
|
|
41
|
+
filter: mapFilter(value.filter)
|
|
42
|
+
}).toString();
|
|
43
|
+
exports.serializer = serializer;
|