@evergis/react 4.0.58 → 4.0.61

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.
Files changed (66) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +7 -7
  3. package/dist/components/Dashboard/branded.d.ts +52 -0
  4. package/dist/components/Dashboard/componentTypes.d.ts +571 -0
  5. package/dist/components/Dashboard/containers/AddFeatureContainer/index.d.ts +2 -2
  6. package/dist/components/Dashboard/containers/AttachmentContainer/index.d.ts +2 -2
  7. package/dist/components/Dashboard/containers/CameraContainer/index.d.ts +2 -2
  8. package/dist/components/Dashboard/containers/ChartContainer/index.d.ts +2 -2
  9. package/dist/components/Dashboard/containers/ContainersGroupContainer/index.d.ts +2 -2
  10. package/dist/components/Dashboard/containers/DataSourceContainer/index.d.ts +2 -2
  11. package/dist/components/Dashboard/containers/DataSourceProgressContainer/index.d.ts +2 -2
  12. package/dist/components/Dashboard/containers/DefaultAttributesContainer/index.d.ts +2 -2
  13. package/dist/components/Dashboard/containers/DividerContainer/index.d.ts +2 -2
  14. package/dist/components/Dashboard/containers/EditContainer/components/EditAttachmentContainer.d.ts +2 -2
  15. package/dist/components/Dashboard/containers/EditContainer/components/EditBooleanContainer.d.ts +2 -2
  16. package/dist/components/Dashboard/containers/EditContainer/components/EditCheckboxContainer.d.ts +2 -2
  17. package/dist/components/Dashboard/containers/EditContainer/components/EditChipsContainer.d.ts +2 -2
  18. package/dist/components/Dashboard/containers/EditContainer/components/EditDateContainer.d.ts +2 -2
  19. package/dist/components/Dashboard/containers/EditContainer/components/EditDropdownContainer.d.ts +2 -2
  20. package/dist/components/Dashboard/containers/EditContainer/components/EditGroupContainer.d.ts +2 -2
  21. package/dist/components/Dashboard/containers/EditContainer/components/EditNumberContainer.d.ts +2 -2
  22. package/dist/components/Dashboard/containers/EditContainer/components/EditStringContainer.d.ts +2 -2
  23. package/dist/components/Dashboard/containers/EditContainer/index.d.ts +2 -2
  24. package/dist/components/Dashboard/containers/ExportPdfContainer/index.d.ts +2 -2
  25. package/dist/components/Dashboard/containers/FiltersContainer/index.d.ts +2 -2
  26. package/dist/components/Dashboard/containers/IconContainer/index.d.ts +2 -2
  27. package/dist/components/Dashboard/containers/ImageContainer/index.d.ts +2 -2
  28. package/dist/components/Dashboard/containers/LayersContainer/index.d.ts +2 -2
  29. package/dist/components/Dashboard/containers/OneColumnContainer/index.d.ts +2 -2
  30. package/dist/components/Dashboard/containers/PagesContainer/index.d.ts +2 -2
  31. package/dist/components/Dashboard/containers/SlideshowContainer/index.d.ts +2 -2
  32. package/dist/components/Dashboard/containers/TabsContainer/index.d.ts +2 -2
  33. package/dist/components/Dashboard/containers/TaskContainer/index.d.ts +2 -2
  34. package/dist/components/Dashboard/containers/TitleContainer/index.d.ts +2 -2
  35. package/dist/components/Dashboard/containers/TwoColumnContainer/index.d.ts +2 -2
  36. package/dist/components/Dashboard/containers/UploadContainer/index.d.ts +2 -2
  37. package/dist/components/Dashboard/containers/registry.d.ts +37 -34
  38. package/dist/components/Dashboard/elements/ElementButton/index.d.ts +2 -2
  39. package/dist/components/Dashboard/elements/ElementCamera/types.d.ts +2 -2
  40. package/dist/components/Dashboard/elements/ElementChart/index.d.ts +2 -2
  41. package/dist/components/Dashboard/elements/ElementChips/index.d.ts +2 -2
  42. package/dist/components/Dashboard/elements/ElementControl/index.d.ts +2 -2
  43. package/dist/components/Dashboard/elements/ElementIcon/index.d.ts +2 -2
  44. package/dist/components/Dashboard/elements/ElementImage/index.d.ts +2 -2
  45. package/dist/components/Dashboard/elements/ElementLegend/index.d.ts +2 -4
  46. package/dist/components/Dashboard/elements/ElementLink/index.d.ts +2 -2
  47. package/dist/components/Dashboard/elements/ElementMarkdown/index.d.ts +2 -2
  48. package/dist/components/Dashboard/elements/ElementModal/index.d.ts +2 -2
  49. package/dist/components/Dashboard/elements/ElementSlideshow/types.d.ts +2 -2
  50. package/dist/components/Dashboard/elements/ElementSvg/index.d.ts +2 -6
  51. package/dist/components/Dashboard/elements/ElementTooltip/index.d.ts +2 -2
  52. package/dist/components/Dashboard/elements/ElementUploader/index.d.ts +2 -2
  53. package/dist/components/Dashboard/elements/registry.d.ts +12 -14
  54. package/dist/components/Dashboard/headers/{FeatureCardGradientHeader → FeatureCardBackgroundHeader}/index.d.ts +1 -1
  55. package/dist/components/Dashboard/headers/{FeatureCardGradientHeader → FeatureCardBackgroundHeader}/styled.d.ts +1 -1
  56. package/dist/components/Dashboard/headers/FeatureCardDefaultHeader/styled.d.ts +1 -0
  57. package/dist/components/Dashboard/headers/index.d.ts +1 -1
  58. package/dist/components/Dashboard/hooks/useWidgetConfig.d.ts +5 -1
  59. package/dist/components/Dashboard/hooks/useWidgetContext.d.ts +12 -1
  60. package/dist/components/Dashboard/hooks/useWidgetPage.d.ts +4 -1
  61. package/dist/components/Dashboard/types.d.ts +198 -93
  62. package/dist/index.js +2672 -2576
  63. package/dist/index.js.map +1 -1
  64. package/dist/react.esm.js +2660 -2576
  65. package/dist/react.esm.js.map +1 -1
  66. package/package.json +3 -2
@@ -6,6 +6,31 @@ import { CircleLayerSpecification, FillLayerSpecification, LineLayerSpecificatio
6
6
  import { AttributeFormatConfigurationDc, AttributeType, EqlRequestDc, FeatureDc, OgcGeometryType, PagedFeaturesListDc, PositionDc, QueryLayerServiceInfoDc, RemoteTaskStatus, StringSubType, AttributesConfigurationDc } from '@evergis/api';
7
7
  import { FeatureAttributeValue, EditGeometryType, ThemeName } from '../../types';
8
8
  import { InnerContainerProps } from './containers/DataSourceInnerContainer/types';
9
+ export * from './componentTypes';
10
+ export * from './branded';
11
+ /** Список допустимых типов диаграммы. `as const` даёт runtime-доступ для dropdown-ов. */
12
+ export declare const CHART_TYPES: readonly ["bar", "line", "pie", "stack"];
13
+ export type ChartType = (typeof CHART_TYPES)[number];
14
+ /** Выравнивание текста/блоков. */
15
+ export declare const ALIGNMENTS: readonly ["left", "center", "right"];
16
+ export type Alignment = (typeof ALIGNMENTS)[number];
17
+ /** Режим отображения коллекций. */
18
+ export declare const VIEW_MODES: readonly ["grid", "list"];
19
+ export type ViewMode = (typeof VIEW_MODES)[number];
20
+ /**
21
+ * CSS-длина для `fontSize`/etc. Template literal type ловит грубые ошибки вроде
22
+ * `fontSize: "fourteen"`, при этом пропускает корректные `"1rem"`, `"14px"`, `"100%"`, ...
23
+ *
24
+ * Применяется как **opt-in** для нового кода; ConfigOptions.fontSize пока остаётся `string`
25
+ * ради совместимости с legacy-конфигами.
26
+ */
27
+ export type CssLength = `${number}rem` | `${number}px` | `${number}em` | `${number}%`;
28
+ export type DesignToken = `var(--${string})`;
29
+ export type FontSizeToken = CssLength | DesignToken | "larger" | "smaller";
30
+ /** CSS-цвет — рамочная проверка, не валидирует hex-формат полностью. */
31
+ export type CssColor = `#${string}` | `rgb(${string})` | `rgba(${string})` | `hsl(${string})` | `hsla(${string})` | `var(--${string})` | "transparent" | "currentColor" | "inherit";
32
+ /** Расширение файла одной строкой: `".csv"`, `".csv,.txt"`. */
33
+ export type FileExtensions = `.${string}` | `.${string},${string}`;
9
34
  export interface DashboardsProps {
10
35
  zIndex?: CSSProperties["zIndex"];
11
36
  }
@@ -63,119 +88,186 @@ export interface CustomFeatureSelect {
63
88
  layout?: FillLayerSpecification["layout"];
64
89
  };
65
90
  }
66
- export interface ConfigOptions {
67
- innerTemplateName?: ContainerTemplate;
91
+ /**
92
+ * Доменная группировка опций конфига.
93
+ *
94
+ * Идея — разбить flat-интерфейс {@link ConfigOptions} (100+ полей) на тематические миксины:
95
+ * Layout, Typography, Chart, Visual, ... — чтобы `<Name>Options` можно было собирать через
96
+ * `Pick<ConfigLayoutOptions, ...>` и сразу видеть «характер компонента».
97
+ *
98
+ * `ConfigOptions` остаётся плоским fallback-объединением всех доменов (extends всех миксинов),
99
+ * поэтому существующий код, использующий `Pick<ConfigOptions, ...>`, продолжает работать.
100
+ *
101
+ * Поля с пометкой ⚠️ entity-ref — это runtime-связи (`chartId`, `tabId`, `filterName`, ...),
102
+ * концептуально принадлежат домену {@link ConfigEntityRefOptions} и могут получить branded types.
103
+ */
104
+ /** Размеры и раскладка. */
105
+ export interface ConfigLayoutOptions {
106
+ width?: number;
107
+ height?: number;
108
+ padding?: number;
109
+ radius?: number;
110
+ cornerRadius?: number;
111
+ column?: boolean;
112
+ twoColumns?: boolean;
113
+ align?: Alignment;
114
+ center?: boolean;
68
115
  innerTemplateStyle?: CSSProperties;
69
- position?: PositionDc;
70
- themeName?: ThemeName;
71
- relatedDataSources?: ConfigRelatedDataSource[];
72
- relatedAttributes?: ConfigRelatedAttribute[];
73
- relatedResources?: ConfigRelatedResource[];
74
- statusColors?: Record<RemoteTaskStatus, string>;
75
- chartType?: "bar" | "line" | "pie" | "stack";
76
- layerNames?: string[];
77
- layerName?: string;
78
- geometryType?: OgcGeometryType | EditGeometryType;
79
- fileExtensions?: string;
80
- parentResourceId?: string;
81
- srid?: string;
82
- title?: string;
83
- label?: string;
84
116
  withPadding?: boolean;
85
117
  withDivider?: boolean;
86
- dotSnapping?: boolean;
87
118
  bottomBlur?: boolean;
88
- tagView?: boolean;
89
- simple?: boolean;
90
- downloadById?: string;
91
- separator?: string;
92
- lineBreak?: string;
93
- image?: string;
119
+ noMargin?: boolean;
120
+ maxTextWidth?: number;
121
+ barWidth?: number;
122
+ barHeight?: number;
123
+ }
124
+ /** Типографика и цвета. */
125
+ export interface ConfigTypographyOptions {
126
+ fontSize?: string;
127
+ fontColor?: string;
94
128
  bgColor?: string;
129
+ backgroundColor?: string;
130
+ primaryColor?: string;
131
+ defaultColor?: string;
95
132
  noBg?: boolean;
96
- center?: boolean;
97
- fontColor?: string;
98
- fontSize?: string;
99
- placeholder?: string;
100
- step?: number;
101
- limit?: number;
102
- radius?: number;
103
- cornerRadius?: number;
104
- padding?: number;
105
- trim?: boolean;
106
- twoColumns?: boolean;
107
- inlineUnits?: boolean;
108
- noUnits?: boolean;
109
- noEmptyOption?: boolean;
110
- noMargin?: boolean;
133
+ colors?: string[];
134
+ colorAttribute?: string;
135
+ statusColors?: Record<RemoteTaskStatus, string>;
136
+ }
137
+ /** Поведение «раскрытия». */
138
+ export interface ConfigExpandableOptions {
139
+ expandable?: boolean;
140
+ expanded?: boolean;
141
+ expandLength?: number;
142
+ }
143
+ /** Связь с источником данных. */
144
+ export interface ConfigDataSourceBindingOptions {
145
+ /** ⚠️ entity-ref: имя источника. */
146
+ relatedDataSource?: string;
147
+ relatedDataSources?: ConfigRelatedDataSource[];
148
+ relatedAttributes?: ConfigRelatedAttribute[];
149
+ relatedResources?: ConfigRelatedResource[];
150
+ responseFilters?: Record<string, string>;
151
+ hideIfEmptyDataSource?: string;
152
+ }
153
+ /** Опции графика. */
154
+ export interface ConfigChartOptions {
155
+ chartType?: ChartType;
156
+ /** ⚠️ entity-ref: ссылка на ChartContainer по id. */
111
157
  chartId?: string;
158
+ markers?: BarChartMarker[] | string;
159
+ showLabels?: boolean;
160
+ showMarkers?: number;
112
161
  showTotal?: boolean;
113
162
  totalWord?: string;
114
163
  totalAttribute?: string;
115
- hideTitle?: boolean;
116
- width?: number;
117
- height?: number;
118
- barWidth?: number;
119
- barHeight?: number;
120
- showLabels?: boolean;
121
- showMarkers?: number;
122
- markers?: BarChartMarker[] | string;
164
+ dotSnapping?: boolean;
123
165
  drawMinMax?: boolean;
124
- attributes?: string[];
125
- attributesExclude?: string[];
126
- useProjectHiddenAttributes?: boolean;
127
- colors?: string[];
128
- defaultColor?: string;
129
- primaryColor?: string;
166
+ angle?: number;
167
+ }
168
+ /** Иконки/изображения. */
169
+ export interface ConfigVisualOptions {
170
+ icon?: IconTypesKeys;
171
+ iconAttribute?: string;
172
+ image?: string;
173
+ overlay?: string;
174
+ onlyIcon?: boolean;
175
+ bigIcon?: boolean;
176
+ big?: boolean;
177
+ tagView?: boolean;
178
+ }
179
+ /** Текст/заголовок. */
180
+ export interface ConfigTextDisplayOptions {
181
+ title?: string;
182
+ label?: string;
183
+ placeholder?: string;
184
+ hideTitle?: boolean;
185
+ simple?: boolean;
130
186
  maxLength?: number;
131
- maxValue?: number | Date;
132
- minValue?: number | Date;
133
- withTime?: boolean;
134
- multiSelect?: boolean;
135
- variants?: IOption[] | ChipOption[];
187
+ separator?: string;
188
+ lineBreak?: string;
189
+ }
190
+ /** Список/коллекция. */
191
+ export interface ConfigCollectionOptions {
136
192
  shownItems?: number;
137
193
  otherItems?: number;
138
- angle?: number;
139
- resolution?: number;
140
194
  orderByValue?: boolean;
141
195
  orderByTitle?: boolean;
142
- expandable?: boolean;
143
- expanded?: boolean;
144
- expandLength?: number;
145
- wrap?: boolean;
146
- icon?: IconTypesKeys;
147
- iconUrl?: string;
148
- big?: boolean;
149
- bigIcon?: boolean;
150
- onlyIcon?: boolean;
196
+ viewMode?: ViewMode;
151
197
  hideEmpty?: boolean;
152
- hideIfEmptyDataSource?: string;
153
- innerValue?: boolean;
154
- groupTooltip?: boolean;
155
- tabId?: string;
156
- column?: boolean;
157
- relatedDataSource?: string;
158
- responseFilters?: Record<string, string>;
198
+ limit?: number;
199
+ }
200
+ /** Карта/слои. */
201
+ export interface ConfigMapLayerOptions {
202
+ /** ⚠️ entity-ref: имя слоя. */
203
+ layerName?: string;
204
+ /** ⚠️ entity-ref: имена слоёв. */
205
+ layerNames?: string[];
206
+ geometryType?: OgcGeometryType | EditGeometryType;
207
+ baseMapName?: string;
208
+ baseMapSettings?: Record<string, BaseMapSettings>;
209
+ expandedLayers?: boolean;
210
+ customFeatureSelect?: CustomFeatureSelect;
211
+ pitch?: number;
212
+ bearing?: number;
213
+ srid?: string;
214
+ maxZoomTo?: number;
215
+ position?: PositionDc;
216
+ resolution?: number;
217
+ }
218
+ /** Контролы редактирования / фильтры. */
219
+ export interface ConfigEditOptions {
159
220
  control?: ConfigControl;
160
221
  controls?: ConfigControl[];
222
+ /** ⚠️ entity-ref на ConfigFilter. */
161
223
  filterName?: string;
224
+ /** ⚠️ entity-ref на ConfigFilter. */
162
225
  searchFilterName?: string;
163
- colorAttribute?: string;
164
- iconAttribute?: string;
165
- maxTextWidth?: number;
166
- backgroundColor?: string;
167
- align?: "left" | "center" | "right";
168
- pitch?: number;
169
- bearing?: number;
170
- projection?: string;
171
- baseMapName?: string;
172
- baseMapSettings?: Record<string, BaseMapSettings>;
173
- expandedLayers?: boolean;
226
+ variants?: IOption[] | ChipOption[];
227
+ multiSelect?: boolean;
228
+ withTime?: boolean;
229
+ step?: number;
230
+ minValue?: number | Date;
231
+ maxValue?: number | Date;
232
+ noEmptyOption?: boolean;
233
+ fileExtensions?: string;
234
+ }
235
+ /** Ссылки на сущности по id/name. */
236
+ export interface ConfigEntityRefOptions {
237
+ chartId?: string;
174
238
  modalId?: string;
239
+ tabId?: string;
240
+ filterName?: string;
241
+ searchFilterName?: string;
242
+ layerName?: string;
243
+ layerNames?: string[];
244
+ relatedDataSource?: string;
245
+ parentResourceId?: string;
246
+ downloadById?: string;
247
+ }
248
+ /** Прочее — поля без явного домена, обычно широкого назначения. */
249
+ export interface ConfigMiscOptions {
250
+ innerTemplateName?: ContainerTemplate;
251
+ themeName?: ThemeName;
175
252
  url?: string;
176
- maxZoomTo?: number;
177
- customFeatureSelect?: CustomFeatureSelect;
178
- viewMode?: "grid" | "list";
253
+ inlineUnits?: boolean;
254
+ noUnits?: boolean;
255
+ attributes?: string[];
256
+ useProjectHiddenAttributes?: boolean;
257
+ innerValue?: boolean;
258
+ groupTooltip?: boolean;
259
+ wrap?: boolean;
260
+ modalId?: string;
261
+ tabId?: string;
262
+ downloadById?: string;
263
+ parentResourceId?: string;
264
+ }
265
+ /**
266
+ * Flat-объединение всех доменных миксинов. Существующие места, использующие
267
+ * `Pick<ConfigOptions, ...>`, продолжают работать. Для нового кода предпочтительно делать
268
+ * `Pick<Config<Domain>Options, ...>` — это лучше документирует, к какому домену относится опция.
269
+ */
270
+ export interface ConfigOptions extends ConfigLayoutOptions, ConfigTypographyOptions, ConfigExpandableOptions, ConfigDataSourceBindingOptions, ConfigChartOptions, ConfigVisualOptions, ConfigTextDisplayOptions, ConfigCollectionOptions, ConfigMapLayerOptions, ConfigEditOptions, ConfigMiscOptions {
179
271
  }
180
272
  export interface ConfigDataSource {
181
273
  name: string;
@@ -291,9 +383,23 @@ export interface ConfigContainer {
291
383
  header?: ConfigContainerHeader;
292
384
  }
293
385
  export type FilterType = "checkbox" | "rangeNumber" | "rangeDate" | "text" | "dropdown" | "barChart" | "chips";
386
+ /**
387
+ * Литеральный union значений {@link ConfigContainerChild.type}.
388
+ *
389
+ * Делится на две группы:
390
+ * - text/attribute-рендеры (обрабатываются в `utils/getElementValue.tsx`): `"text"`, `"attributeAlias"`,
391
+ * `"attributeValue"`, `"attributeUnits"`, `"attributeDescription"`, `"layerName"`.
392
+ * - элементы-компоненты (`elements/registry.ts`): `"control"`, `"image"`, `"slideshow"`, `"svg"`,
393
+ * `"icon"`, `"tooltip"`, `"tags"`, `"link"`, `"button"`, `"camera"`, `"chart"`, `"legend"`,
394
+ * `"markdown"`, `"uploader"`, `"modal"`.
395
+ *
396
+ * Slot-id (`"alias"`, `"value"`, `"units"`, ...) сюда **не относится** — это значения поля
397
+ * `id`, см. parent-specific child-типы.
398
+ */
399
+ export type ConfigElementType = "text" | "attributeAlias" | "attributeValue" | "attributeUnits" | "attributeDescription" | "layerName" | "control" | "image" | "slideshow" | "svg" | "icon" | "tooltip" | "tags" | "link" | "button" | "camera" | "chart" | "legend" | "markdown" | "uploader" | "modal";
294
400
  export interface ConfigContainerChild extends Partial<ConfigContainer> {
295
401
  id?: string;
296
- type?: string;
402
+ type?: ConfigElementType;
297
403
  templateName?: ContainerTemplate | HeaderTemplate;
298
404
  value?: string | number;
299
405
  defaultValue?: string | number;
@@ -346,7 +452,7 @@ export declare enum ContainerTemplate {
346
452
  export declare enum HeaderTemplate {
347
453
  Default = "Default",
348
454
  Slideshow = "Slideshow",
349
- Gradient = "Gradient"
455
+ Background = "Background"
350
456
  }
351
457
  export interface GetRenderElementProps extends Omit<ContainerProps, "renderElement"> {
352
458
  expandedContainers?: Record<string, boolean>;
@@ -419,4 +525,3 @@ export type ClientFeatureAttribute = {
419
525
  stringFormat?: AttributeFormatConfigurationDc;
420
526
  clientData?: unknown;
421
527
  };
422
- export {};