@siemens/element-ng 51.2.0 → 51.4.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/README.md +2 -2
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +8 -46
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-chat-messages.mjs +2 -2
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-common.mjs +5 -0
- package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +2 -3
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +13 -3
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +261 -162
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +4 -4
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs +12 -8
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-maplibre.mjs +293 -10
- package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +2 -2
- package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-number-input.mjs +3 -2
- package/fesm2022/siemens-element-ng-number-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +19 -6
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-shadow-root.mjs +54 -1
- package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-theme.mjs +59 -23
- package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +82 -10
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +15 -10
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-typeahead.mjs +9 -0
- package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
- package/maplibre/styles/maplibre-gl.scss +4 -0
- package/package.json +8 -8
- package/schematics/migrations/data/attribute-selectors.js +8 -1
- package/schematics/migrations/data/element-selectors.js +7 -1
- package/schematics/migrations/data/symbol-renaming.js +10 -0
- package/schematics/migrations/utilities/attribute-selector.migration.js +26 -10
- package/schematics/migrations/utilities/element-selector.migration.js +25 -15
- package/schematics/migrations/utilities/symbol-renaming.migration.js +90 -3
- package/schematics/utils/template-edit-utils.js +9 -0
- package/template-i18n.json +6 -0
- package/types/siemens-element-ng-breadcrumb.d.ts +1 -1
- package/types/siemens-element-ng-common.d.ts +5 -0
- package/types/siemens-element-ng-dashboard.d.ts +0 -1
- package/types/siemens-element-ng-datepicker.d.ts +6 -1
- package/types/siemens-element-ng-filtered-search.d.ts +26 -10
- package/types/siemens-element-ng-form.d.ts +1 -1
- package/types/siemens-element-ng-maplibre.d.ts +112 -5
- package/types/siemens-element-ng-number-input.d.ts +2 -2
- package/types/siemens-element-ng-popover.d.ts +2 -1
- package/types/siemens-element-ng-shadow-root.d.ts +16 -1
- package/types/siemens-element-ng-theme.d.ts +35 -7
- package/types/siemens-element-ng-tooltip.d.ts +14 -1
- package/types/siemens-element-ng-translate.d.ts +6 -0
- package/types/siemens-element-ng-tree-view.d.ts +1 -0
- package/types/siemens-element-ng-typeahead.d.ts +7 -0
|
@@ -4,16 +4,18 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import * as ts from 'typescript';
|
|
6
6
|
import { EmitHint } from 'typescript';
|
|
7
|
-
import { findImportSpecifier } from '../../utils/index.js';
|
|
7
|
+
import { findImportSpecifier, getImportSpecifiers } from '../../utils/index.js';
|
|
8
|
+
import { removeImportSpecifiers } from './import-removal.js';
|
|
8
9
|
export const applySymbolRenamingMigration = (context, changes) => {
|
|
9
10
|
const { discoveredSourceFile, recorder } = context;
|
|
10
11
|
if (!changes?.length) {
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
|
-
const { sourceFile } = discoveredSourceFile;
|
|
14
|
+
const { sourceFile, typeChecker } = discoveredSourceFile;
|
|
14
15
|
const changeInstructions = [
|
|
15
16
|
...renameIdentifier({
|
|
16
17
|
sourceFile,
|
|
18
|
+
typeChecker,
|
|
17
19
|
renamingInstructions: changes
|
|
18
20
|
})
|
|
19
21
|
];
|
|
@@ -26,7 +28,7 @@ export const applySymbolRenamingMigration = (context, changes) => {
|
|
|
26
28
|
recorder.insertLeft(changeInstruction.start, printer.printNode(EmitHint.Unspecified, changeInstruction.newNode, sourceFile));
|
|
27
29
|
}
|
|
28
30
|
};
|
|
29
|
-
function* renameIdentifier({ sourceFile, renamingInstructions }) {
|
|
31
|
+
function* renameIdentifier({ sourceFile, typeChecker, renamingInstructions }) {
|
|
30
32
|
for (const node of sourceFile.statements) {
|
|
31
33
|
if (!ts.isImportDeclaration(node) || !ts.isStringLiteral(node.moduleSpecifier)) {
|
|
32
34
|
continue;
|
|
@@ -38,6 +40,10 @@ function* renameIdentifier({ sourceFile, renamingInstructions }) {
|
|
|
38
40
|
if (!(node.importClause?.namedBindings && ts.isNamedImports(node.importClause.namedBindings))) {
|
|
39
41
|
continue;
|
|
40
42
|
}
|
|
43
|
+
if (!renamingInstruction.toModule) {
|
|
44
|
+
yield* renameSymbolsInPlace(sourceFile, typeChecker, node, renamingInstruction);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
41
47
|
// Find all symbols from this import that need to be renamed/moved
|
|
42
48
|
const symbolsToProcess = [];
|
|
43
49
|
for (const { replace, replaceWith } of renamingInstruction.symbolRenamings) {
|
|
@@ -126,3 +132,84 @@ function* renameIdentifier({ sourceFile, renamingInstructions }) {
|
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
134
|
}
|
|
135
|
+
function* renameSymbolsInPlace(sourceFile, typeChecker, declaration, instruction) {
|
|
136
|
+
const importClause = declaration.importClause;
|
|
137
|
+
const bindings = importClause.namedBindings;
|
|
138
|
+
const replacements = new Map();
|
|
139
|
+
const references = new Map();
|
|
140
|
+
const redundantImports = [];
|
|
141
|
+
for (const specifier of bindings.elements) {
|
|
142
|
+
const importedName = specifier.propertyName ?? specifier.name;
|
|
143
|
+
const rename = instruction.symbolRenamings.find(change => change.replace === importedName.text);
|
|
144
|
+
if (!rename) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
// Aliases keep their local name and only change the imported symbol.
|
|
148
|
+
if (specifier.propertyName) {
|
|
149
|
+
replacements.set(specifier, rename.replaceWith);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const existingImport = getImportSpecifiers(sourceFile, declaration.moduleSpecifier.text, rename.replaceWith).find(candidate => {
|
|
153
|
+
const isTypeOnly = candidate.isTypeOnly || candidate.parent.parent.isTypeOnly;
|
|
154
|
+
return !isTypeOnly || specifier.isTypeOnly || importClause.isTypeOnly;
|
|
155
|
+
});
|
|
156
|
+
if (existingImport) {
|
|
157
|
+
redundantImports.push(specifier);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
replacements.set(specifier, rename.replaceWith);
|
|
161
|
+
}
|
|
162
|
+
const symbol = typeChecker.getSymbolAtLocation(specifier.name);
|
|
163
|
+
if (symbol) {
|
|
164
|
+
references.set(symbol, existingImport?.name.text ?? rename.replaceWith);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (redundantImports.length) {
|
|
168
|
+
const edit = removeImportSpecifiers(sourceFile, declaration, redundantImports);
|
|
169
|
+
const remaining = bindings.elements.filter(specifier => !redundantImports.includes(specifier));
|
|
170
|
+
const updatedBindings = ts.factory.updateNamedImports(bindings, remaining.map(specifier => {
|
|
171
|
+
const replacement = replacements.get(specifier);
|
|
172
|
+
if (!replacement) {
|
|
173
|
+
return specifier;
|
|
174
|
+
}
|
|
175
|
+
return ts.factory.updateImportSpecifier(specifier, specifier.isTypeOnly, specifier.propertyName ? ts.factory.createIdentifier(replacement) : undefined, specifier.propertyName ? specifier.name : ts.factory.createIdentifier(replacement));
|
|
176
|
+
}));
|
|
177
|
+
yield {
|
|
178
|
+
start: edit.start,
|
|
179
|
+
width: edit.width,
|
|
180
|
+
newNode: edit.newNode
|
|
181
|
+
? ts.factory.updateImportDeclaration(declaration, declaration.modifiers, ts.factory.updateImportClause(importClause, importClause.isTypeOnly, importClause.name, updatedBindings), declaration.moduleSpecifier, declaration.attributes)
|
|
182
|
+
: ts.factory.createIdentifier('')
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
for (const [specifier, replacement] of replacements) {
|
|
187
|
+
const importedName = specifier.propertyName ?? specifier.name;
|
|
188
|
+
yield {
|
|
189
|
+
start: importedName.getStart(),
|
|
190
|
+
width: importedName.getWidth(),
|
|
191
|
+
newNode: ts.factory.createIdentifier(replacement)
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const visit = function* (node) {
|
|
196
|
+
if (ts.isImportDeclaration(node)) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (ts.isIdentifier(node)) {
|
|
200
|
+
const symbol = typeChecker.getSymbolAtLocation(node);
|
|
201
|
+
const replacement = symbol && references.get(symbol);
|
|
202
|
+
if (replacement) {
|
|
203
|
+
yield {
|
|
204
|
+
start: node.getStart(),
|
|
205
|
+
width: node.getWidth(),
|
|
206
|
+
newNode: ts.factory.createIdentifier(replacement)
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
for (const child of node.getChildren()) {
|
|
211
|
+
yield* visit(child);
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
yield* visit(sourceFile);
|
|
215
|
+
}
|
|
@@ -33,3 +33,12 @@ export const removeAttribute = (template, attribute, offset, recorder) => {
|
|
|
33
33
|
const removeStart = start > 0 && /\s/.test(template[start - 1] ?? '') ? start - 1 : start;
|
|
34
34
|
recorder.remove(removeStart + offset, end - removeStart);
|
|
35
35
|
};
|
|
36
|
+
/** Removes static attributes and property/attribute bindings with the given names. */
|
|
37
|
+
export const removeAttributesFromElement = (template, element, names, offset, recorder) => {
|
|
38
|
+
for (const attribute of element.attrs) {
|
|
39
|
+
const matches = names.some(name => [name, `[${name}]`, `attr.${name}`, `[attr.${name}]`].includes(attribute.name));
|
|
40
|
+
if (matches) {
|
|
41
|
+
removeAttribute(template, attribute, offset, recorder);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
package/template-i18n.json
CHANGED
|
@@ -205,7 +205,13 @@
|
|
|
205
205
|
"SI_MAP.WINDOWS_HELP": "Use Ctrl + scroll to zoom the map",
|
|
206
206
|
"SI_MAP.ZOOM_IN": "Zoom in",
|
|
207
207
|
"SI_MAP.ZOOM_OUT": "Zoom out",
|
|
208
|
+
"SI_MAP_CLUSTER.CLOSE": "Close",
|
|
209
|
+
"SI_MAP_CLUSTER.ERROR": "Could not load locations.",
|
|
208
210
|
"SI_MAP_CLUSTER.LABEL": "Cluster with {{count}} locations",
|
|
211
|
+
"SI_MAP_CLUSTER.LOAD_MORE": "Load more",
|
|
212
|
+
"SI_MAP_CLUSTER.LOCATIONS": "Cluster locations",
|
|
213
|
+
"SI_MAP_CLUSTER.POPOVER_TITLE": "Cluster with {{count}} locations",
|
|
214
|
+
"SI_MAP_CLUSTER.RETRY": "Retry",
|
|
209
215
|
"SI_MARKDOWN.COPIED_CODE": "Copied",
|
|
210
216
|
"SI_MARKDOWN.COPY_CODE": "Copy code",
|
|
211
217
|
"SI_MARKDOWN.COPY_TABLE_AS_CSV": "Copy table as CSV",
|
|
@@ -66,7 +66,6 @@ declare class SiBreadcrumbComponent implements OnChanges, OnDestroy {
|
|
|
66
66
|
protected breadcrumbShortened: boolean;
|
|
67
67
|
protected ellipsesLevel: number;
|
|
68
68
|
protected breadcrumbDropdownOpen: number | undefined;
|
|
69
|
-
protected addExpandDropdown: boolean;
|
|
70
69
|
protected controlId: string;
|
|
71
70
|
protected readonly icons: Record<"elementBreadcrumbRoot" | "elementRight2", string>;
|
|
72
71
|
private readonly breadcrumbElement;
|
|
@@ -76,6 +75,7 @@ declare class SiBreadcrumbComponent implements OnChanges, OnDestroy {
|
|
|
76
75
|
ngOnChanges(): void;
|
|
77
76
|
ngOnDestroy(): void;
|
|
78
77
|
private processItems;
|
|
78
|
+
/** Toggle the ellipses dropdown to show the hidden breadcrumb levels. */
|
|
79
79
|
protected toggleBreadcrumbDropdown(itemLevel: number): void;
|
|
80
80
|
protected documentClick(targetElement: any): void;
|
|
81
81
|
protected resetBreadcrumb(): void;
|
|
@@ -130,6 +130,11 @@ declare class TextMeasureService {
|
|
|
130
130
|
/**
|
|
131
131
|
* Gets the width of the scrollbar. Nesc for windows
|
|
132
132
|
* http://stackoverflow.com/a/13382873/888165
|
|
133
|
+
*
|
|
134
|
+
* @deprecated This service uses a legacy DOM-measurement hack to determine scrollbar width.
|
|
135
|
+
* Use `element.offsetWidth - element.clientWidth` on the scrollable element directly,
|
|
136
|
+
* which is more accurate, SSR-safe, and accounts for OS-level theming and CSS overrides.
|
|
137
|
+
* Will be removed in v52.
|
|
133
138
|
*/
|
|
134
139
|
declare class ScrollbarHelper {
|
|
135
140
|
private document;
|
|
@@ -217,7 +217,7 @@ declare class SiDateInputDirective implements ControlValueAccessor, OnChanges, V
|
|
|
217
217
|
registerOnTouched(fn: () => void): void;
|
|
218
218
|
registerOnValidatorChange(fn: () => void): void;
|
|
219
219
|
setDisabledState(isDisabled: boolean): void;
|
|
220
|
-
writeValue(value?: Date | string): void;
|
|
220
|
+
writeValue(value?: Date | string | null): void;
|
|
221
221
|
private updateNativeValue;
|
|
222
222
|
/**
|
|
223
223
|
* Handles `input` events on the input element.
|
|
@@ -920,6 +920,11 @@ declare class SiTimepickerComponent implements ControlValueAccessor, Validator,
|
|
|
920
920
|
* Holds the time as date object that is presented by this control.
|
|
921
921
|
*/
|
|
922
922
|
private time?;
|
|
923
|
+
/**
|
|
924
|
+
* Whether `null` was emitted due to an incomplete or invalid input.
|
|
925
|
+
* The next valid time must be emitted, even if it equals the previous `time`.
|
|
926
|
+
*/
|
|
927
|
+
private invalidTimeEmitted;
|
|
923
928
|
private periodDefaults;
|
|
924
929
|
constructor();
|
|
925
930
|
writeValue(obj?: Date | string): void;
|
|
@@ -140,12 +140,23 @@ interface DisplayedCriteriaEventArgs {
|
|
|
140
140
|
allow(criteriaNamesToDisplay: string[], freeText?: boolean): void;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
/** Criterion definition normalized for internal rendering and input handling. */
|
|
143
144
|
interface InternalCriterionDefinition extends CriterionDefinition {
|
|
144
145
|
label: string;
|
|
145
146
|
translatedLabel: string;
|
|
147
|
+
/**
|
|
148
|
+
* Identifies free-text pills, displayed without a criterion label using a plain-text editor.
|
|
149
|
+
* Omitted for regular criteria. Internal only; not included in the search model.
|
|
150
|
+
*/
|
|
146
151
|
type?: 'free-text';
|
|
147
152
|
}
|
|
148
153
|
|
|
154
|
+
interface InternalCriterion {
|
|
155
|
+
config: InternalCriterionDefinition;
|
|
156
|
+
value: CriterionValue;
|
|
157
|
+
editOnCreation: boolean;
|
|
158
|
+
initialValueText?: string;
|
|
159
|
+
}
|
|
149
160
|
declare class SiFilteredSearchComponent implements OnInit, OnChanges {
|
|
150
161
|
/**
|
|
151
162
|
* Factory for CDK scroll strategies used by filtered-search overlays.
|
|
@@ -375,11 +386,8 @@ declare class SiFilteredSearchComponent implements OnInit, OnChanges {
|
|
|
375
386
|
private readonly scrollContainer;
|
|
376
387
|
private readonly valueComponents;
|
|
377
388
|
protected dataSource: Observable<InternalCriterionDefinition[]>;
|
|
378
|
-
protected
|
|
379
|
-
protected readonly
|
|
380
|
-
config: InternalCriterionDefinition;
|
|
381
|
-
value: CriterionValue;
|
|
382
|
-
}[]>;
|
|
389
|
+
protected readonly values: _angular_core.WritableSignal<InternalCriterion[]>;
|
|
390
|
+
protected readonly maxCriteriaReached: _angular_core.Signal<boolean>;
|
|
383
391
|
protected readonly searchValue: _angular_core.WritableSignal<string>;
|
|
384
392
|
/** Internal criteria model */
|
|
385
393
|
protected internalCriterionDefinitions: InternalCriterionDefinition[];
|
|
@@ -423,6 +431,11 @@ declare class SiFilteredSearchComponent implements OnInit, OnChanges {
|
|
|
423
431
|
*/
|
|
424
432
|
private convertToExternalModel;
|
|
425
433
|
private addCriterion;
|
|
434
|
+
private resolveValue;
|
|
435
|
+
private isDateCriterion;
|
|
436
|
+
private parseModelDate;
|
|
437
|
+
private parseInputDate;
|
|
438
|
+
private getAllowedCriteria;
|
|
426
439
|
/**
|
|
427
440
|
* Get criteria list to be shown in typeahead.
|
|
428
441
|
* @returns list of criteria to be shown in typeahead.
|
|
@@ -434,22 +447,25 @@ declare class SiFilteredSearchComponent implements OnInit, OnChanges {
|
|
|
434
447
|
protected onCreateCriterion(event: {
|
|
435
448
|
criterion: InternalCriterionDefinition;
|
|
436
449
|
value?: string;
|
|
450
|
+
accept: () => void;
|
|
437
451
|
}): void;
|
|
438
452
|
protected onCreateCriterionByName(event: {
|
|
439
453
|
criterionName: string;
|
|
440
454
|
value?: string;
|
|
455
|
+
editOnCreation?: boolean;
|
|
456
|
+
accept: () => void;
|
|
441
457
|
}): void;
|
|
442
458
|
protected onSearchValueChange(): void;
|
|
443
|
-
protected valueChange(value: CriterionValue, criterion:
|
|
444
|
-
config: InternalCriterionDefinition;
|
|
445
|
-
value: CriterionValue;
|
|
446
|
-
}): void;
|
|
459
|
+
protected valueChange(value: CriterionValue, criterion: InternalCriterion): void;
|
|
447
460
|
protected focusNext(index: number, event: {
|
|
448
461
|
freeText: string;
|
|
449
462
|
} | void): void;
|
|
450
463
|
private updateAndEmitSearchCriteria;
|
|
451
464
|
private emitChangeEvent;
|
|
452
|
-
protected createFreeTextPill(
|
|
465
|
+
protected createFreeTextPill(event: {
|
|
466
|
+
query: string;
|
|
467
|
+
accept: () => void;
|
|
468
|
+
}): void;
|
|
453
469
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFilteredSearchComponent, never>;
|
|
454
470
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFilteredSearchComponent, "si-filtered-search", never, { "scrollStrategy": { "alias": "scrollStrategy"; "required": false; "isSignal": true; }; "doSearchOnInputChange": { "alias": "doSearchOnInputChange"; "required": false; "isSignal": true; }; "lazyCriterionProvider": { "alias": "lazyCriterionProvider"; "required": false; "isSignal": true; }; "lazyValueProvider": { "alias": "lazyValueProvider"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "strictCriterion": { "alias": "strictCriterion"; "required": false; "isSignal": true; }; "strictValue": { "alias": "strictValue"; "required": false; "isSignal": true; }; "onlySelectValue": { "alias": "onlySelectValue"; "required": false; "isSignal": true; }; "lazyLoadingDebounceTime": { "alias": "lazyLoadingDebounceTime"; "required": false; "isSignal": true; }; "searchDebounceTime": { "alias": "searchDebounceTime"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "optionsInScrollableView": { "alias": "optionsInScrollableView"; "required": false; "isSignal": true; }; "searchCriteria": { "alias": "searchCriteria"; "required": false; "isSignal": true; }; "criteria": { "alias": "criteria"; "required": false; "isSignal": true; }; "exclusiveCriteria": { "alias": "exclusiveCriteria"; "required": false; "isSignal": true; }; "maxCriteria": { "alias": "maxCriteria"; "required": false; "isSignal": true; }; "maxCriteriaOptions": { "alias": "maxCriteriaOptions"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "clearButtonLabel": { "alias": "clearButtonLabel"; "required": false; "isSignal": true; }; "submitButtonLabel": { "alias": "submitButtonLabel"; "required": false; "isSignal": true; }; "itemCountText": { "alias": "itemCountText"; "required": false; "isSignal": true; }; "colorVariant": { "alias": "colorVariant"; "required": false; "isSignal": true; }; "disableFreeTextSearch": { "alias": "disableFreeTextSearch"; "required": false; "isSignal": true; }; "typeaheadOptionsLimit": { "alias": "typeaheadOptionsLimit"; "required": false; "isSignal": true; }; "disableSelectionByColonAndSemicolon": { "alias": "disableSelectionByColonAndSemicolon"; "required": false; "isSignal": true; }; "freeTextCriterion": { "alias": "freeTextCriterion"; "required": false; "isSignal": true; }; "searchForFreeTextLabel": { "alias": "searchForFreeTextLabel"; "required": false; "isSignal": true; }; }, { "doSearch": "doSearch"; "searchCriteria": "searchCriteriaChange"; "interceptDisplayedCriteria": "interceptDisplayedCriteria"; }, never, never, true, never>;
|
|
455
471
|
}
|
|
@@ -388,7 +388,7 @@ declare class SiFormFieldsetComponent {
|
|
|
388
388
|
/** @internal */
|
|
389
389
|
readonly hasOnlyRadios: _angular_core.Signal<boolean>;
|
|
390
390
|
protected readonly errors: _angular_core.Signal<readonly _siemens_element_ng_form.SiFormError[]>;
|
|
391
|
-
protected readonly
|
|
391
|
+
protected readonly showErrors: _angular_core.Signal<boolean>;
|
|
392
392
|
protected readonly isRequired: _angular_core.Signal<boolean>;
|
|
393
393
|
protected readonly labelId: string;
|
|
394
394
|
/** @internal */
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ExtendedStatusType } from '@siemens/element-ng/common';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { Signal } from '@angular/core';
|
|
3
|
+
import { Signal, TemplateRef } from '@angular/core';
|
|
4
4
|
import { StyleSpecification } from 'maplibre-gl';
|
|
5
5
|
import * as geojson from 'geojson';
|
|
6
|
+
import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -20,6 +21,27 @@ interface ClusterSegment {
|
|
|
20
21
|
color: string;
|
|
21
22
|
property: string;
|
|
22
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Context supplied to custom cluster popover templates, including all locations loaded so far.
|
|
26
|
+
*
|
|
27
|
+
* @experimental
|
|
28
|
+
*/
|
|
29
|
+
interface ClusterPopoverContext {
|
|
30
|
+
/** All loaded original point features, exposed by an unqualified `let-features` binding. */
|
|
31
|
+
$implicit: readonly ClusterPoint[];
|
|
32
|
+
/** The same accumulated features as `$implicit`, exposed by `let-features="features"`. */
|
|
33
|
+
features: readonly ClusterPoint[];
|
|
34
|
+
/** Total number of locations in the selected cluster, including locations not yet loaded. */
|
|
35
|
+
total: number;
|
|
36
|
+
/** Whether the initial batch, an additional batch, or a retry is being loaded. */
|
|
37
|
+
loading: boolean;
|
|
38
|
+
/** Error from a failed batch request, or `undefined` when no error is available. */
|
|
39
|
+
error: unknown;
|
|
40
|
+
/** Selected cluster feature, including its `cluster_id` and `point_count` properties. */
|
|
41
|
+
cluster: ClusterPoint;
|
|
42
|
+
/** Closes the popover using the same behavior as its Close button. */
|
|
43
|
+
close: () => void;
|
|
44
|
+
}
|
|
23
45
|
|
|
24
46
|
/**
|
|
25
47
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -144,9 +166,94 @@ declare class SiClusterSourceComponent {
|
|
|
144
166
|
protected readonly clusterConfiguration: _angular_core.Signal<ClusterConfiguration>;
|
|
145
167
|
/** Stores selection for the projected cluster-popover integration. */
|
|
146
168
|
protected readonly selectedCluster: _angular_core.WritableSignal<ClusterPoint | undefined>;
|
|
147
|
-
|
|
169
|
+
private readonly source;
|
|
170
|
+
/**
|
|
171
|
+
* Returns a page of original points belonging to a cluster.
|
|
172
|
+
* @see https://maplibre.org/maplibre-gl-js/docs/API/classes/GeoJSONSource/#getclusterleaves
|
|
173
|
+
*/
|
|
174
|
+
getClusterLeaves(clusterId: number, limit: number, offset: number): Promise<ClusterPoint[]>;
|
|
148
175
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiClusterSourceComponent, never>;
|
|
149
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiClusterSourceComponent, "si-cluster-source", never, { "sourceId": { "alias": "sourceId"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "groupProperty": { "alias": "groupProperty"; "required": false; "isSignal": true; }; "groupColors": { "alias": "groupColors"; "required": false; "isSignal": true; }; "statusProperty": { "alias": "statusProperty"; "required": false; "isSignal": true; }; "clusterRadius": { "alias": "clusterRadius"; "required": false; "isSignal": true; }; "clusterMaxZoom": { "alias": "clusterMaxZoom"; "required": false; "isSignal": true; }; "clusterMinPoints": { "alias": "clusterMinPoints"; "required": false; "isSignal": true; }; }, { "clusterClick": "clusterClick"; }, never, ["
|
|
176
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiClusterSourceComponent, "si-cluster-source", never, { "sourceId": { "alias": "sourceId"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "groupProperty": { "alias": "groupProperty"; "required": false; "isSignal": true; }; "groupColors": { "alias": "groupColors"; "required": false; "isSignal": true; }; "statusProperty": { "alias": "statusProperty"; "required": false; "isSignal": true; }; "clusterRadius": { "alias": "clusterRadius"; "required": false; "isSignal": true; }; "clusterMaxZoom": { "alias": "clusterMaxZoom"; "required": false; "isSignal": true; }; "clusterMinPoints": { "alias": "clusterMinPoints"; "required": false; "isSignal": true; }; }, { "clusterClick": "clusterClick"; }, never, ["*"], true, never>;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Optional popup with incrementally loaded locations projected into a `si-cluster-source`.
|
|
181
|
+
*
|
|
182
|
+
* @experimental
|
|
183
|
+
*/
|
|
184
|
+
declare class SiClusterPopoverComponent {
|
|
185
|
+
private static idCounter;
|
|
186
|
+
private readonly destroyRef;
|
|
187
|
+
private readonly focusTrapFactory;
|
|
188
|
+
private readonly document;
|
|
189
|
+
private readonly source;
|
|
190
|
+
private readonly mapService;
|
|
191
|
+
private readonly resizeObserver;
|
|
192
|
+
/**
|
|
193
|
+
* Maximum width passed to the MapLibre popup.
|
|
194
|
+
* @defaultValue '320px'
|
|
195
|
+
*/
|
|
196
|
+
readonly maxWidth: _angular_core.InputSignal<string>;
|
|
197
|
+
/**
|
|
198
|
+
* Whether the popup closes when the map moves.
|
|
199
|
+
* @defaultValue true
|
|
200
|
+
*/
|
|
201
|
+
readonly closeOnMove: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
202
|
+
/**
|
|
203
|
+
* Number of locations loaded initially and with each "Load more" action.
|
|
204
|
+
* @defaultValue 8
|
|
205
|
+
*/
|
|
206
|
+
readonly pageSize: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
207
|
+
/**
|
|
208
|
+
* Feature property displayed in the default list.
|
|
209
|
+
* @defaultValue 'name'
|
|
210
|
+
*/
|
|
211
|
+
readonly labelProperty: _angular_core.InputSignal<string>;
|
|
212
|
+
/**
|
|
213
|
+
* Feature property displayed as the description in the default list.
|
|
214
|
+
* @defaultValue 'description'
|
|
215
|
+
*/
|
|
216
|
+
readonly descriptionProperty: _angular_core.InputSignal<string>;
|
|
217
|
+
private readonly dialog;
|
|
218
|
+
private readonly scrollRegion;
|
|
219
|
+
private readonly batchButton;
|
|
220
|
+
private readonly selectedCluster;
|
|
221
|
+
private readonly batchFocusRequested;
|
|
222
|
+
private readonly offset;
|
|
223
|
+
private readonly displayedFeatures;
|
|
224
|
+
protected readonly titleId: string;
|
|
225
|
+
protected readonly popupCoordinates: _angular_core.WritableSignal<geojson.Position | undefined>;
|
|
226
|
+
protected readonly availableBlockSize: _angular_core.WritableSignal<number | undefined>;
|
|
227
|
+
protected readonly leaves: _angular_core.ResourceRef<ClusterPoint[] | undefined>;
|
|
228
|
+
protected readonly context: _angular_core.Signal<ClusterPopoverContext | undefined>;
|
|
229
|
+
protected readonly template: _angular_core.Signal<TemplateRef<ClusterPopoverContext> | undefined>;
|
|
230
|
+
protected readonly clusterPopoverTitle: _siemens_element_translate_ng_translate.TranslatableString;
|
|
231
|
+
protected readonly locationsLabel: _siemens_element_translate_ng_translate.TranslatableString;
|
|
232
|
+
protected readonly errorText: _siemens_element_translate_ng_translate.TranslatableString;
|
|
233
|
+
protected readonly loadMoreText: _siemens_element_translate_ng_translate.TranslatableString;
|
|
234
|
+
protected readonly retryText: _siemens_element_translate_ng_translate.TranslatableString;
|
|
235
|
+
protected readonly closeText: _siemens_element_translate_ng_translate.TranslatableString;
|
|
236
|
+
protected readonly icons: Record<"elementCancel", string>;
|
|
237
|
+
protected readonly close: () => void;
|
|
238
|
+
protected readonly loadBatch: () => void;
|
|
239
|
+
constructor();
|
|
240
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiClusterPopoverComponent, never>;
|
|
241
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiClusterPopoverComponent, "si-cluster-popover", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "closeOnMove": { "alias": "closeOnMove"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "labelProperty": { "alias": "labelProperty"; "required": false; "isSignal": true; }; "descriptionProperty": { "alias": "descriptionProperty"; "required": false; "isSignal": true; }; }, {}, ["template"], never, true, never>;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Template for custom location content inside `si-cluster-popover`.
|
|
246
|
+
*
|
|
247
|
+
* Receives a {@link ClusterPopoverContext} with all locations loaded so far. Loading feedback,
|
|
248
|
+
* error recovery, and the "Load more" button are handled by the popover.
|
|
249
|
+
*
|
|
250
|
+
* @experimental
|
|
251
|
+
*/
|
|
252
|
+
declare class SiClusterPopoverTemplateDirective {
|
|
253
|
+
/** @internal */
|
|
254
|
+
static ngTemplateContextGuard(directive: SiClusterPopoverTemplateDirective, context: unknown): context is ClusterPopoverContext;
|
|
255
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiClusterPopoverTemplateDirective, never>;
|
|
256
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiClusterPopoverTemplateDirective, "[siClusterPopoverTemplate]", never, {}, {}, never, never, true, never>;
|
|
150
257
|
}
|
|
151
258
|
|
|
152
259
|
/**
|
|
@@ -186,5 +293,5 @@ declare class SiStatusMarkerComponent {
|
|
|
186
293
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiStatusMarkerComponent, "si-status-marker", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
187
294
|
}
|
|
188
295
|
|
|
189
|
-
export { SiClusterSourceComponent, SiStatusMarkerComponent, injectSiMapStyle, injectSiMapTranslations };
|
|
190
|
-
export type { ClusterColors, ClusterPoint, ClusterSegment, MarkerStatus };
|
|
296
|
+
export { SiClusterPopoverComponent, SiClusterPopoverTemplateDirective, SiClusterSourceComponent, SiStatusMarkerComponent, injectSiMapStyle, injectSiMapTranslations };
|
|
297
|
+
export type { ClusterColors, ClusterPoint, ClusterPopoverContext, ClusterSegment, MarkerStatus };
|
|
@@ -26,7 +26,7 @@ declare class SiNumberInputComponent implements OnChanges, ControlValueAccessor,
|
|
|
26
26
|
*/
|
|
27
27
|
readonly step: _angular_core.InputSignal<number | "any">;
|
|
28
28
|
/** The value */
|
|
29
|
-
readonly value: _angular_core.InputSignal<number | undefined>;
|
|
29
|
+
readonly value: _angular_core.InputSignal<number | null | undefined>;
|
|
30
30
|
/** Optional unit label */
|
|
31
31
|
readonly unit: _angular_core.InputSignal<string | undefined>;
|
|
32
32
|
/**
|
|
@@ -104,7 +104,7 @@ declare class SiNumberInputComponent implements OnChanges, ControlValueAccessor,
|
|
|
104
104
|
/** @internal */
|
|
105
105
|
setDisabledState(isDisabled: boolean): void;
|
|
106
106
|
/** @internal */
|
|
107
|
-
writeValue(value: number | undefined): void;
|
|
107
|
+
writeValue(value: number | null | undefined): void;
|
|
108
108
|
/** @internal */
|
|
109
109
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
110
110
|
/** @internal */
|
|
@@ -13,7 +13,7 @@ declare class SiPopoverDirective implements OnDestroy {
|
|
|
13
13
|
*/
|
|
14
14
|
readonly siPopover: _angular_core.InputSignal<TranslatableString | TemplateRef<unknown> | undefined>;
|
|
15
15
|
/**
|
|
16
|
-
* The placement of the popover. One of 'top', 'start', end', 'bottom'
|
|
16
|
+
* The placement of the popover. One of 'top', 'start', 'end', 'bottom'
|
|
17
17
|
*
|
|
18
18
|
* @defaultValue 'auto'
|
|
19
19
|
*/
|
|
@@ -99,6 +99,7 @@ declare class PopoverComponent implements OnInit, OnDestroy {
|
|
|
99
99
|
private elementRef;
|
|
100
100
|
private focusTrapFactory;
|
|
101
101
|
private focusTrap?;
|
|
102
|
+
private focusTimeoutId?;
|
|
102
103
|
private readonly previouslyActiveElement;
|
|
103
104
|
ngOnInit(): void;
|
|
104
105
|
ngOnDestroy(): void;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OverlayContainer } from '@angular/cdk/overlay';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
+
import { Provider } from '@angular/core';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -36,9 +37,23 @@ declare class SiShadowRootDirective extends OverlayContainer {
|
|
|
36
37
|
private elementRef;
|
|
37
38
|
private document;
|
|
38
39
|
private destroyRef;
|
|
40
|
+
private themeTarget;
|
|
39
41
|
protected _createContainer(): void;
|
|
40
42
|
static ɵfac: i0.ɵɵFactoryDeclaration<SiShadowRootDirective, never>;
|
|
41
43
|
static ɵdir: i0.ɵɵDirectiveDeclaration<SiShadowRootDirective, "[siShadowRoot]", never, {}, {}, never, never, true, never>;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Copyright (c) Siemens 2016 - 2026
|
|
48
|
+
* SPDX-License-Identifier: MIT
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Provides the shadow root specific theme service with a dedicated theme target
|
|
53
|
+
* for components using Shadow DOM encapsulation.
|
|
54
|
+
* Use this when the component defines and loads the Element theme in its own shadow root instead
|
|
55
|
+
* of reusing the theme defined on `:root`.
|
|
56
|
+
*/
|
|
57
|
+
declare const provideShadowRootThemeTarget: () => Provider;
|
|
58
|
+
|
|
59
|
+
export { SiShadowRootDirective, provideShadowRootThemeTarget };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { EventEmitter, Signal } from '@angular/core';
|
|
3
|
+
import { InjectionToken, EventEmitter, Signal } from '@angular/core';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -48,7 +48,8 @@ interface ThemeColorSchemes {
|
|
|
48
48
|
type ThemeColorScheme = {
|
|
49
49
|
[key: string]: string;
|
|
50
50
|
};
|
|
51
|
-
type
|
|
51
|
+
type ColorScheme = 'light' | 'dark';
|
|
52
|
+
type ThemeType = ColorScheme | 'auto';
|
|
52
53
|
declare const ELEMENT_THEME_NAME = "element";
|
|
53
54
|
declare const elementTheme: ThemeDescription;
|
|
54
55
|
|
|
@@ -134,6 +135,32 @@ declare class SiDefaultThemeStore extends SiThemeStore {
|
|
|
134
135
|
private saveStore;
|
|
135
136
|
}
|
|
136
137
|
|
|
138
|
+
/**
|
|
139
|
+
* Copyright (c) Siemens 2016 - 2026
|
|
140
|
+
* SPDX-License-Identifier: MIT
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* DOM boundary controlled by {@link SiThemeService}.
|
|
145
|
+
*/
|
|
146
|
+
interface SiThemeDomTarget {
|
|
147
|
+
/** Element that receives theme and color-scheme classes. */
|
|
148
|
+
readonly element: HTMLElement;
|
|
149
|
+
/** CSS selector used for runtime theme variables. */
|
|
150
|
+
readonly rootSelector: string;
|
|
151
|
+
/** Event target for the legacy `theme-switch` event. */
|
|
152
|
+
readonly eventTarget?: EventTarget;
|
|
153
|
+
forEachElement(callback: (element: HTMLElement) => void): void;
|
|
154
|
+
registerElement?(element: HTMLElement): () => void;
|
|
155
|
+
getStyleElement(id: string): HTMLStyleElement | null;
|
|
156
|
+
appendStyleElement(style: HTMLStyleElement): void;
|
|
157
|
+
updateColorScheme(colorScheme: ColorScheme): void;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Theme DOM target. The default implementation targets the current document.
|
|
161
|
+
*/
|
|
162
|
+
declare const SI_THEME_DOM_TARGET: InjectionToken<SiThemeDomTarget>;
|
|
163
|
+
|
|
137
164
|
declare class SiThemeService {
|
|
138
165
|
/**
|
|
139
166
|
* The current color scheme. (e.g. light or dark).
|
|
@@ -190,8 +217,8 @@ declare class SiThemeService {
|
|
|
190
217
|
private isBrowser;
|
|
191
218
|
private previewTheme?;
|
|
192
219
|
private themeStore;
|
|
193
|
-
private meta;
|
|
194
220
|
private document;
|
|
221
|
+
private themeTarget;
|
|
195
222
|
constructor();
|
|
196
223
|
/**
|
|
197
224
|
* Returns `true` if a theme with the given name is available.
|
|
@@ -228,11 +255,11 @@ declare class SiThemeService {
|
|
|
228
255
|
*/
|
|
229
256
|
setActiveTheme(name?: string, type?: ThemeType): Observable<boolean>;
|
|
230
257
|
/**
|
|
231
|
-
* Apply `light` or `dark` theme to the
|
|
258
|
+
* Apply `light` or `dark` theme to the configured theme target.
|
|
232
259
|
*/
|
|
233
260
|
applyThemeType(type: ThemeType): void;
|
|
234
261
|
/**
|
|
235
|
-
* Applies the given theme to the
|
|
262
|
+
* Applies the given theme to the configured theme target. If no theme is given, the active theme is applied.
|
|
236
263
|
*/
|
|
237
264
|
applyTheme(theme?: Theme, type?: ThemeType, overwrite?: boolean): void;
|
|
238
265
|
/**
|
|
@@ -248,6 +275,7 @@ declare class SiThemeService {
|
|
|
248
275
|
private activateTheme;
|
|
249
276
|
private hasThemeCSS;
|
|
250
277
|
private createThemeCSS;
|
|
278
|
+
private createThemeSelector;
|
|
251
279
|
private createThemeVariantCSS;
|
|
252
280
|
private removeThemeCSS;
|
|
253
281
|
private toggleDark;
|
|
@@ -267,5 +295,5 @@ declare class SiThemeService {
|
|
|
267
295
|
*/
|
|
268
296
|
declare const injectIsDarkTheme: () => Signal<boolean>;
|
|
269
297
|
|
|
270
|
-
export { ELEMENT_THEME_NAME, SI_THEME_LOCAL_STORAGE_KEY, SiDefaultThemeStore, SiThemeService, SiThemeStore, elementTheme, injectIsDarkTheme };
|
|
271
|
-
export type { Theme, ThemeColorScheme, ThemeColorSchemes, ThemeDescription, ThemeProperty, ThemePropertyGroup, ThemePropertyType, ThemeStorage, ThemeType };
|
|
298
|
+
export { ELEMENT_THEME_NAME, SI_THEME_DOM_TARGET, SI_THEME_LOCAL_STORAGE_KEY, SiDefaultThemeStore, SiThemeService, SiThemeStore, elementTheme, injectIsDarkTheme };
|
|
299
|
+
export type { ColorScheme, SiThemeDomTarget, Theme, ThemeColorScheme, ThemeColorSchemes, ThemeDescription, ThemeProperty, ThemePropertyGroup, ThemePropertyType, ThemeStorage, ThemeType };
|
|
@@ -50,6 +50,19 @@ declare class SiTooltipModule {
|
|
|
50
50
|
static ɵinj: i0.ɵɵInjectorDeclaration<SiTooltipModule>;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Adds a tooltip containing the host element's text when that text is truncated.
|
|
55
|
+
*/
|
|
56
|
+
declare class SiTooltipOverflowDirective {
|
|
57
|
+
private readonly elementRef;
|
|
58
|
+
private readonly tooltipService;
|
|
59
|
+
private readonly element;
|
|
60
|
+
constructor();
|
|
61
|
+
private canShow;
|
|
62
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SiTooltipOverflowDirective, never>;
|
|
63
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SiTooltipOverflowDirective, "[siTooltipOverflow]", never, {}, {}, never, never, true, never>;
|
|
64
|
+
}
|
|
65
|
+
|
|
53
66
|
/**
|
|
54
67
|
* Copyright (c) Siemens 2016 - 2026
|
|
55
68
|
* SPDX-License-Identifier: MIT
|
|
@@ -90,5 +103,5 @@ declare class SiTooltipService {
|
|
|
90
103
|
static ɵprov: i0.ɵɵInjectableDeclaration<SiTooltipService>;
|
|
91
104
|
}
|
|
92
105
|
|
|
93
|
-
export { SiTooltipDirective, SiTooltipModule, SiTooltipService };
|
|
106
|
+
export { SiTooltipDirective, SiTooltipModule, SiTooltipOverflowDirective, SiTooltipService };
|
|
94
107
|
export type { TooltipRef };
|
|
@@ -207,7 +207,13 @@ interface SiTranslatableKeys {
|
|
|
207
207
|
'SI_MAP.WINDOWS_HELP'?: string;
|
|
208
208
|
'SI_MAP.ZOOM_IN'?: string;
|
|
209
209
|
'SI_MAP.ZOOM_OUT'?: string;
|
|
210
|
+
'SI_MAP_CLUSTER.CLOSE'?: string;
|
|
211
|
+
'SI_MAP_CLUSTER.ERROR'?: string;
|
|
210
212
|
'SI_MAP_CLUSTER.LABEL'?: string;
|
|
213
|
+
'SI_MAP_CLUSTER.LOAD_MORE'?: string;
|
|
214
|
+
'SI_MAP_CLUSTER.LOCATIONS'?: string;
|
|
215
|
+
'SI_MAP_CLUSTER.POPOVER_TITLE'?: string;
|
|
216
|
+
'SI_MAP_CLUSTER.RETRY'?: string;
|
|
211
217
|
'SI_MARKDOWN.COPIED_CODE'?: string;
|
|
212
218
|
'SI_MARKDOWN.COPY_CODE'?: string;
|
|
213
219
|
'SI_MARKDOWN.COPY_TABLE_AS_CSV'?: string;
|