@evergis/react 4.0.74 → 4.0.76

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.
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ import { WidgetFilterProps } from '../types';
3
+ export declare const TreeFilter: FC<WidgetFilterProps>;
@@ -0,0 +1,21 @@
1
+ import { ConfigContainerChild, WidgetType } from '../../../types';
2
+ export declare const useTreeFilter: (type: WidgetType, filter: ConfigContainerChild) => {
3
+ width: string;
4
+ placeholder: string;
5
+ multiSelect: boolean;
6
+ loading: boolean;
7
+ data: import('@evergis/uilib-gl').TreeItemProps[];
8
+ setData: import('react').Dispatch<import('react').SetStateAction<import('@evergis/uilib-gl').TreeItemProps[]>>;
9
+ expanded: import('@evergis/uilib-gl').TreeId[];
10
+ setExpanded: import('react').Dispatch<import('react').SetStateAction<import('@evergis/uilib-gl').TreeId[]>>;
11
+ onLoadChildren: (item: import('@evergis/uilib-gl').TreeItemProps) => Promise<import('@evergis/uilib-gl').PartialLoadData<import('../types').TreeNodeData>>;
12
+ selectedIds: Set<import('@evergis/uilib-gl').TreeId>;
13
+ selectedCount: number;
14
+ selectedLabel: string;
15
+ searchValue: string;
16
+ onSearchChange: (value: string) => void;
17
+ onOpen: () => Promise<void>;
18
+ onClose: () => void;
19
+ onToggleSelect: (item: any) => void;
20
+ onReset: () => void;
21
+ };
@@ -0,0 +1,11 @@
1
+ import { PartialLoadData, TreeId, TreeItemProps } from '@evergis/uilib-gl';
2
+ import { WidgetType } from '../../../types';
3
+ import { TreeNodeData } from '../types';
4
+ export declare const useTreeFilterData: (type: WidgetType, filterName: string) => {
5
+ configFilter: import('../../../types').ConfigFilter;
6
+ layerName: string;
7
+ loadLevelOne: () => Promise<TreeItemProps[]>;
8
+ loadChildren: (item: TreeItemProps) => Promise<PartialLoadData<TreeNodeData>>;
9
+ searchNodes: (query: string) => Promise<TreeItemProps[]>;
10
+ loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>;
11
+ };
@@ -0,0 +1,17 @@
1
+ import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
2
+ type UseTreeFilterSearchParams = {
3
+ searchNodes: (query: string) => Promise<TreeItemProps[]>;
4
+ loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>;
5
+ };
6
+ export declare const useTreeFilterSearch: ({ searchNodes, loadByIds }: UseTreeFilterSearchParams) => {
7
+ searchValue: string;
8
+ isSearchActive: boolean;
9
+ searching: boolean;
10
+ searchData: TreeItemProps[];
11
+ setSearchData: import('react').Dispatch<import('react').SetStateAction<TreeItemProps[]>>;
12
+ searchExpanded: TreeId[];
13
+ setSearchExpanded: import('react').Dispatch<import('react').SetStateAction<TreeId[]>>;
14
+ onSearchChange: (value: string) => void;
15
+ resetSearch: () => void;
16
+ };
17
+ export {};
@@ -0,0 +1,9 @@
1
+ import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
2
+ import { ConfigFilter, WidgetType } from '../../../types';
3
+ export declare const useTreeFilterSelection: (type: WidgetType, filterName: string, configFilter?: ConfigFilter) => {
4
+ selected: Map<TreeId, number>;
5
+ selectedIds: Set<TreeId>;
6
+ selectedLabel: string;
7
+ onToggleSelect: (item: TreeItemProps, multiSelect?: boolean) => void;
8
+ onReset: () => void;
9
+ };
@@ -0,0 +1,15 @@
1
+ import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
2
+ type UseTreeFilterTreeParams = {
3
+ selected: Map<TreeId, number>;
4
+ loadLevelOne: () => Promise<TreeItemProps[]>;
5
+ loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>;
6
+ };
7
+ export declare const useTreeFilterTree: ({ selected, loadLevelOne, loadByIds }: UseTreeFilterTreeParams) => {
8
+ treeData: TreeItemProps[];
9
+ setTreeData: import('react').Dispatch<import('react').SetStateAction<TreeItemProps[]>>;
10
+ treeExpanded: TreeId[];
11
+ setTreeExpanded: import('react').Dispatch<import('react').SetStateAction<TreeId[]>>;
12
+ loading: boolean;
13
+ onOpen: () => Promise<void>;
14
+ };
15
+ export {};
@@ -1,3 +1,4 @@
1
+ import { TreeId } from '@evergis/uilib-gl';
1
2
  import { ConfigContainer, ConfigContainerChild, WidgetType } from '../../types';
2
3
  export type FilterOption = {
3
4
  text: string;
@@ -5,6 +6,11 @@ export type FilterOption = {
5
6
  min: string | number;
6
7
  max: string | number;
7
8
  };
9
+ /** Доменные данные узла иерархического фильтра "tree", хранятся в `TreeItemProps.data`. */
10
+ export type TreeNodeData = {
11
+ parentId: TreeId | null;
12
+ level: number;
13
+ };
8
14
  export type WidgetFilterProps = {
9
15
  type: WidgetType;
10
16
  filter: ConfigContainerChild;
@@ -0,0 +1,25 @@
1
+ import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
2
+ import { TreeFilterValue } from '../../../types';
3
+ export declare const buildLevelOneCondition: (attributeLevel: string) => string;
4
+ export declare const buildChildrenCondition: (attributeParentValue: string, parentId: TreeId) => string;
5
+ export declare const buildSearchCondition: (attributeAlias: string, query: string) => string;
6
+ export declare const buildIdsCondition: (attributeValue: string, ids: Array<string | number>) => string;
7
+ /** Группирует выбранные id по уровню в объектное значение фильтра `{ l{N}: [ids] }`. */
8
+ export declare const buildFilterValue: (selected: Map<TreeId, number>) => TreeFilterValue;
9
+ /** Разбирает объектное значение фильтра в карту `id → level`. */
10
+ export declare const parseFilterValue: (value?: TreeFilterValue) => Map<TreeId, number>;
11
+ /** Стабильная сериализация выбора для сравнения (порядок не важен). */
12
+ export declare const serializeSelection: (selected: Map<TreeId, number>) => string;
13
+ /**
14
+ * Дозапрашивает цепочку предков вверх по `parentId` уровень за уровнем (батч `id in (...)`),
15
+ * пока не достигнет уровня 1. Возвращает исходные узлы вместе с предками.
16
+ */
17
+ export declare const collectAncestors: (nodes: TreeItemProps[], loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>) => Promise<TreeItemProps[]>;
18
+ /**
19
+ * Собирает плоский набор узлов в дерево по `parentId`. Узлы с подгруженными потомками
20
+ * раскрываются; листья-папки без потомков получают `children = null` (ленивая подгрузка).
21
+ */
22
+ export declare const assembleTree: (nodes: TreeItemProps[]) => {
23
+ roots: TreeItemProps[];
24
+ expanded: TreeId[];
25
+ };
@@ -329,6 +329,14 @@ export interface ConfigFilter {
329
329
  attributeValue?: string;
330
330
  attributeMin?: string;
331
331
  attributeMax?: string;
332
+ /** Атрибут id родителя — для иерархического фильтра "tree". */
333
+ attributeParentValue?: string;
334
+ /** Атрибут числового уровня (корень = 1) — для "tree". */
335
+ attributeLevel?: string;
336
+ /** Атрибут-флаг наличия детей (показ шеврона) — для "tree". */
337
+ attributeHasChildren?: string;
338
+ /** Единый лимит на запросы дерева (дети уровня, поиск) — для "tree". */
339
+ limit?: number;
332
340
  valueType?: ConfigFilterValueType;
333
341
  resetFilters?: string[];
334
342
  }
@@ -345,11 +353,19 @@ export interface ChipOption {
345
353
  color?: string;
346
354
  icon?: string;
347
355
  }
356
+ /**
357
+ * Значение иерархического фильтра "tree": объект «уровень → массив id».
358
+ * Ключи вида `l{N}` (l1, l3, ...); уровни без выбранных элементов не включаются.
359
+ * Пример: `{ l1: [1, 2], l3: [1023] }`.
360
+ */
361
+ export type TreeFilterValue = Record<string, Array<string | number>>;
348
362
  export interface SelectedFilter {
349
- value: string | number | string[] | number[] | Date | Date[];
363
+ value: string | number | string[] | number[] | Date | Date[] | TreeFilterValue;
350
364
  min?: string | number | Date;
351
365
  max?: string | number | Date;
352
366
  }
367
+ /** Значение фильтра без объектного варианта "tree" — для скалярных/массивных фильтров. */
368
+ export type ScalarFilterValue = Exclude<SelectedFilter["value"], TreeFilterValue>;
353
369
  export interface ConfigLayer {
354
370
  name: string;
355
371
  opacity?: number;
@@ -412,7 +428,7 @@ export interface ConfigContainer {
412
428
  options?: ConfigOptions;
413
429
  header?: ConfigContainerHeader;
414
430
  }
415
- export type FilterType = "checkbox" | "rangeNumber" | "rangeDate" | "text" | "dropdown" | "barChart" | "chips";
431
+ export type FilterType = "checkbox" | "rangeNumber" | "rangeDate" | "text" | "dropdown" | "barChart" | "chips" | "tree";
416
432
  /**
417
433
  * Литеральный union значений {@link ConfigContainerChild.type}.
418
434
  *
@@ -0,0 +1,12 @@
1
+ import { SelectedFilter, TreeFilterValue } from '../types';
2
+ /**
3
+ * Объектное значение иерархического фильтра "tree" («уровень → массив id»),
4
+ * в отличие от скалярных/массивных значений остальных фильтров.
5
+ */
6
+ export declare const isTreeFilterValue: (value?: SelectedFilter["value"]) => value is TreeFilterValue;
7
+ /**
8
+ * Подставляет плейсхолдеры уровней `%name.l{N}` значениями id соответствующего уровня
9
+ * (формат `[id1,id2,...]` для оператора IN). Уровни, отсутствующие в значении (или пустые),
10
+ * не подставляются — плейсхолдер остаётся нетронутым, как и любой пустой `%`-плейсхолдер.
11
+ */
12
+ export declare const applyTreeFilterToCondition: (condition: string, name: string, value: TreeFilterValue, isSingle?: boolean) => string;
@@ -1,2 +1,2 @@
1
1
  import { SelectedFilter, SelectedFilters } from '../types';
2
- export declare const getSelectedFilterValue: (filterName: string, selectedFilters: SelectedFilters, defaultValue: SelectedFilter["value"]) => string | number | Date | (string | number | Date)[];
2
+ export declare const getSelectedFilterValue: (filterName: string, selectedFilters: SelectedFilters, defaultValue: SelectedFilter["value"]) => string | number | Date | import('../types').TreeFilterValue | (string | number | Date | import('../types').TreeFilterValue)[];
@@ -5,6 +5,7 @@ export * from './checkEqualOrIncludes';
5
5
  export * from './checkIsLoading';
6
6
  export * from './createConfigLayer';
7
7
  export * from './createConfigPage';
8
+ export * from './applyTreeFilterToCondition';
8
9
  export * from './createNewPageId';
9
10
  export * from './eqlParametersToPayload';
10
11
  export * from './formatChartRelatedValue';