@evergis/react 4.0.156 → 4.0.158
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/Dashboard/containers/LayersContainer/styled.d.ts +0 -2
- package/dist/components/Dashboard/containers/StructuredDataContainer/constants.d.ts +3 -0
- package/dist/components/Dashboard/containers/StructuredDataContainer/hooks/useStructuredDataSchema.d.ts +4 -0
- package/dist/components/Dashboard/containers/StructuredDataContainer/types.d.ts +8 -1
- package/dist/components/Dashboard/containers/StructuredDataContainer/utils/listOptions.d.ts +17 -0
- package/dist/components/Dashboard/elements/ElementModal/styled.d.ts +6 -0
- package/dist/components/Dashboard/elements/ElementTable/components/ChipsCell.d.ts +13 -0
- package/dist/components/Dashboard/elements/ElementTable/components/DropdownCell.d.ts +10 -0
- package/dist/components/Dashboard/elements/ElementTable/constants.d.ts +9 -0
- package/dist/components/Dashboard/elements/ElementTable/hooks/useCellEditing.d.ts +1 -0
- package/dist/components/Dashboard/elements/ElementTable/hooks/useDropdownAutoOpen.d.ts +9 -0
- package/dist/components/Dashboard/elements/ElementTable/styled.d.ts +11 -0
- package/dist/components/Dashboard/elements/ElementTable/utils/listValue.d.ts +11 -0
- package/dist/components/Dashboard/styled/dashboard.d.ts +0 -1
- package/dist/components/Dashboard/types.d.ts +21 -0
- package/dist/index.js +367 -164
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +367 -164
- package/dist/react.esm.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AttributeType } from '@evergis/api';
|
|
2
|
+
import { ConfigAttributeControl } from '../../types';
|
|
2
3
|
/** Слот представления: единственный ребёнок контейнера, рисующий данные (элемент `table`). */
|
|
3
4
|
export declare const STRUCTURED_DATA_VIEW_SLOT = "data";
|
|
4
5
|
/**
|
|
@@ -12,5 +13,7 @@ export declare const NUMBER_EDITOR_TYPES: AttributeType[];
|
|
|
12
13
|
export declare const INTEGER_ATTRIBUTE_TYPES: AttributeType[];
|
|
13
14
|
/** Тип атрибута, когда его не задали ни конфиг, ни источник. */
|
|
14
15
|
export declare const DEFAULT_ATTRIBUTE_TYPE = AttributeType.String;
|
|
16
|
+
/** Контрол колонки со списком значений, когда `control` в описании атрибута не задан. */
|
|
17
|
+
export declare const DEFAULT_ATTRIBUTE_CONTROL: ConfigAttributeControl;
|
|
15
18
|
/** Сколько миллисекунд висит нотификация об ошибке записи. */
|
|
16
19
|
export declare const SAVE_ERROR_DURATION = 5000;
|
|
@@ -11,9 +11,13 @@ import { StructuredDataContainerConfig, WidgetType } from '../../../types';
|
|
|
11
11
|
*
|
|
12
12
|
* Берётся из конфига страницы, а не из загруженного источника: от него зависит, какие ячейки
|
|
13
13
|
* редактируемы, и до окончания загрузки схема не должна меняться.
|
|
14
|
+
*
|
|
15
|
+
* `viewSchema` — та же схема со списками значений для представления. Списки зависят от
|
|
16
|
+
* загруженных источников страницы, поэтому в схему данных (черновик, запись) они не входят.
|
|
14
17
|
*/
|
|
15
18
|
export declare const useStructuredDataSchema: (type: WidgetType, elementConfig?: StructuredDataContainerConfig) => {
|
|
16
19
|
schema: import('../types').StructuredDataAttribute[];
|
|
20
|
+
viewSchema: import('../types').StructuredDataAttribute[];
|
|
17
21
|
dataSource: import('../../../types').WidgetDataSource;
|
|
18
22
|
layerName: string;
|
|
19
23
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CSSProperties } from 'react';
|
|
2
2
|
import { AttributeType, StringSubType } from '@evergis/api';
|
|
3
3
|
import { FeatureAttributeValue } from '../../../../types';
|
|
4
|
-
import { ConfigAttributeDescription } from '../../types';
|
|
4
|
+
import { ChipOption, ConfigAttributeControl, ConfigAttributeDescription } from '../../types';
|
|
5
5
|
/** Состояние строки черновика относительно последнего сохранения. */
|
|
6
6
|
export type DraftRowState = "pristine" | "created" | "updated" | "deleted";
|
|
7
7
|
/**
|
|
@@ -43,6 +43,13 @@ export interface StructuredDataAttribute {
|
|
|
43
43
|
parentResourceId?: string;
|
|
44
44
|
/** Что разрешено выбирать в диалоге файлов колонки вложений — значение `accept`. */
|
|
45
45
|
fileExtensions?: string;
|
|
46
|
+
/** Контрол выбора из списка. Задан ровно тогда, когда задан `listOptions`. */
|
|
47
|
+
control?: ConfigAttributeControl;
|
|
48
|
+
/**
|
|
49
|
+
* Допустимые значения колонки — из `variants` либо из записей `relatedDataSource`. Есть только
|
|
50
|
+
* у схемы представления: черновику и записи список не нужен.
|
|
51
|
+
*/
|
|
52
|
+
listOptions?: ChipOption[];
|
|
46
53
|
}
|
|
47
54
|
/**
|
|
48
55
|
* Значение {@link StructuredDataContext} — всё, что нужно представлению (`ElementTable`)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ChipOption, ConfigAttributeDescription, WidgetDataSource } from '../../../types';
|
|
2
|
+
import { StructuredDataAttribute } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Список допустимых значений колонки: варианты из конфига, а без них — записи связанного
|
|
5
|
+
* источника. `undefined` — списка нет, и значение вводится вручную.
|
|
6
|
+
*
|
|
7
|
+
* Источник, ещё не загруженный или не найденный, даёт пустой список, а не его отсутствие:
|
|
8
|
+
* колонка со списком не должна на время загрузки превращаться в свободный ввод.
|
|
9
|
+
*/
|
|
10
|
+
export declare const getAttributeListOptions: (description: ConfigAttributeDescription | undefined, dataSources: WidgetDataSource[]) => ChipOption[] | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Схема представления: схема данных плюс списки значений и их контролы.
|
|
13
|
+
*
|
|
14
|
+
* Отдельно от схемы данных потому, что зависит от загруженных источников страницы: черновик
|
|
15
|
+
* пересобирает строки при каждой смене схемы, и загрузка справочника стирала бы в нём правки.
|
|
16
|
+
*/
|
|
17
|
+
export declare const withListControls: (schema: StructuredDataAttribute[], attributesDescription: ConfigAttributeDescription[] | undefined, dataSources: WidgetDataSource[]) => StructuredDataAttribute[];
|
|
@@ -15,4 +15,10 @@ export declare const ModalTitleText: import('styled-components').StyledComponent
|
|
|
15
15
|
* верхний угол строки заголовка, как в макете, а кликабельная площадь кнопки сохраняется.
|
|
16
16
|
*/
|
|
17
17
|
export declare const ModalCloseButton: import('styled-components').StyledComponent<import('react').FC<import('@evergis/uilib-gl').IIconButtonProps>, any, {}, never>;
|
|
18
|
+
/**
|
|
19
|
+
* Каждого прямого ребёнка модалки `ContainerChildren` (`isMain`) оборачивает карточкой дашборда
|
|
20
|
+
* `ContainerWrapper`. `noBorders` снимает с неё тень и отступ, но не фон (90% белого) и не
|
|
21
|
+
* `backdrop-filter` — поверх шапки они легли бы белой размытой подложкой под каждым ребёнком.
|
|
22
|
+
* Селектор прямой: вложенные карточки страниц внутри содержимого остаются как есть.
|
|
23
|
+
*/
|
|
18
24
|
export declare const ModalContent: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { TableCellProps } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Колонка со списком значений в виде ряда кнопок (`control: "chips"`).
|
|
5
|
+
*
|
|
6
|
+
* Ряд виден всегда, как галка у логической колонки: выбор — один клик, без открытия редактора.
|
|
7
|
+
* Выбранный пункт подсвечен, клик по нему снимает выбор — иначе очистить ячейку было бы нечем.
|
|
8
|
+
* Без права правки ряд остаётся на месте и показывает выбор, но на клики не отвечает.
|
|
9
|
+
*
|
|
10
|
+
* Кнопки — те же, что у фильтра-чипсов: вариант со своим `color`/`icon` выглядит одинаково и там,
|
|
11
|
+
* и здесь.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ChipsCell: FC<TableCellProps>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { TableCellProps } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Колонка со списком значений в виде выпадающего списка (`control: "dropdown"`).
|
|
5
|
+
*
|
|
6
|
+
* Вне фокуса показывает подпись выбранного пункта, а сам список встаёт на фокус — как редакторы
|
|
7
|
+
* остальных ячеек. Значение не из списка (справочник поменялся, строка пришла из источника)
|
|
8
|
+
* показывается как есть, по `stringFormat` колонки: так видно, что в данных, а не пустота.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DropdownCell: FC<TableCellProps>;
|
|
@@ -33,5 +33,14 @@ export declare const ATTACHMENTS_INLINE_LIMIT = 1;
|
|
|
33
33
|
* Величина с макета и опцией не выносится: поп-ап у колонки один на все таблицы.
|
|
34
34
|
*/
|
|
35
35
|
export declare const ATTACHMENTS_SHOWN_ITEMS = 3;
|
|
36
|
+
/**
|
|
37
|
+
* Пустой пункт выпадающего списка в ячейке: выбор снимает значение. У `Dropdown` пункт с пустым
|
|
38
|
+
* значением показывается как плейсхолдер, поэтому и подпись у него — тот же прочерк, что у
|
|
39
|
+
* пустой ячейки.
|
|
40
|
+
*/
|
|
41
|
+
export declare const EMPTY_LIST_OPTION: {
|
|
42
|
+
text: string;
|
|
43
|
+
value: string;
|
|
44
|
+
};
|
|
36
45
|
/** Вид списка, с которого поп-ап вложений открывается. */
|
|
37
46
|
export declare const ATTACHMENTS_VIEW_MODE: "list";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Раскрывает `Dropdown` сразу, как ячейка перешла в правку.
|
|
3
|
+
*
|
|
4
|
+
* Правку открывает фокус ячейки, а своего «открыться сразу» у `Dropdown` нет: без этого список
|
|
5
|
+
* пришлось бы раскрывать вторым кликом, а с Tab-а — ещё и Enter-ом. Меню переключает клик по полю
|
|
6
|
+
* списка; поле — родитель скрытого `input`, которым `Dropdown` ловит клавиатуру (`FocusTrap`), и
|
|
7
|
+
* другого инпута внутри нет: поиск по пунктам живёт в портале.
|
|
8
|
+
*/
|
|
9
|
+
export declare const useDropdownAutoOpen: (editing: boolean) => import('react').MutableRefObject<HTMLDivElement>;
|
|
@@ -135,4 +135,15 @@ export declare const ColorCellBox: import('styled-components').StyledComponent<"
|
|
|
135
135
|
export declare const ColorSwatch: import('styled-components').StyledComponent<"div", any, {
|
|
136
136
|
$color: string;
|
|
137
137
|
}, never>;
|
|
138
|
+
/**
|
|
139
|
+
* Ряд кнопок колонки со списком. Не влезает в ширину колонки — переносится, и строка таблицы
|
|
140
|
+
* растёт вниз: резать выбор многоточием, как текст, нельзя.
|
|
141
|
+
*
|
|
142
|
+
* Зазор между кнопками по горизонтали даёт их собственный правый отступ, поэтому здесь задан
|
|
143
|
+
* только межстрочный. Отступы ряда — как у текстовой ячейки, чтобы значения соседних колонок
|
|
144
|
+
* стояли на одной линии.
|
|
145
|
+
*/
|
|
146
|
+
export declare const ChipsCellBox: import('styled-components').StyledComponent<"div", any, {
|
|
147
|
+
$interactive?: boolean;
|
|
148
|
+
}, never>;
|
|
138
149
|
export declare const TableEmpty: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FeatureAttributeValue } from '../../../../../types';
|
|
2
|
+
import { ChipOption } from '../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Значение ячейки совпадает со значением пункта списка.
|
|
5
|
+
*
|
|
6
|
+
* Сравниваем строками: у варианта из конфига значение бывает строкой, а в ячейке числового
|
|
7
|
+
* атрибута лежит число, и строгое сравнение не узнало бы собственный выбор.
|
|
8
|
+
*/
|
|
9
|
+
export declare const isSameListValue: (left: FeatureAttributeValue, right: FeatureAttributeValue) => boolean;
|
|
10
|
+
/** Пункт списка, выбранный в ячейке. Нет — значение в ячейке не из списка либо пусто. */
|
|
11
|
+
export declare const findListOption: (listOptions: ChipOption[], value: FeatureAttributeValue) => ChipOption | undefined;
|
|
@@ -6,6 +6,5 @@ export declare const DashboardPlaceholder: import('styled-components').StyledCom
|
|
|
6
6
|
}, never>;
|
|
7
7
|
export declare const DashboardWrapper: import('styled-components').StyledComponent<"div", any, import('@evergis/uilib-gl').FlexProps & {
|
|
8
8
|
hasImage?: boolean;
|
|
9
|
-
isPresentationMode?: boolean;
|
|
10
9
|
}, never>;
|
|
11
10
|
export declare const DashboardContent: import('styled-components').StyledComponent<"div", any, import('@evergis/uilib-gl').FlexProps, never>;
|
|
@@ -606,7 +606,28 @@ export interface ConfigAttributeDescription {
|
|
|
606
606
|
* (`".pdf,.jpg"` либо `"image/*"`). Не задан — ограничений нет.
|
|
607
607
|
*/
|
|
608
608
|
fileExtensions?: string;
|
|
609
|
+
/**
|
|
610
|
+
* Контрол выбора значения из списка — `variants` либо записей `relatedDataSource`. Список задан,
|
|
611
|
+
* а контрол нет — `"dropdown"`. Без списка опция ни на что не влияет.
|
|
612
|
+
*/
|
|
613
|
+
control?: ConfigAttributeControl;
|
|
614
|
+
/**
|
|
615
|
+
* Допустимые значения атрибута: в ячейку пишется `value`, показывается `text`. Заданы вместе
|
|
616
|
+
* с `relatedDataSource` — выигрывают варианты.
|
|
617
|
+
*/
|
|
618
|
+
variants?: ChipOption[];
|
|
619
|
+
/** ⚠️ entity-ref: источник страницы, из записей которого собирается список значений. */
|
|
620
|
+
relatedDataSource?: string;
|
|
621
|
+
/** Атрибут записи `relatedDataSource`, чьё значение пишется в ячейку. Не задан — `attributeName`. */
|
|
622
|
+
attributeValue?: string;
|
|
623
|
+
/**
|
|
624
|
+
* Атрибут записи `relatedDataSource`, который показывается подписью значения. Не задан —
|
|
625
|
+
* `attributeValue`. Не путать с `alias` — это заголовок самой колонки.
|
|
626
|
+
*/
|
|
627
|
+
attributeAlias?: string;
|
|
609
628
|
}
|
|
629
|
+
/** Контрол выбора значения атрибута из списка: выпадающий список либо ряд кнопок. */
|
|
630
|
+
export type ConfigAttributeControl = "dropdown" | "chips";
|
|
610
631
|
export interface ConfigDataSource {
|
|
611
632
|
name: string;
|
|
612
633
|
alias?: string;
|