@siemens/element-ng 48.2.0-rc.1 → 48.3.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 +5 -0
- package/accordion/index.d.ts +5 -1
- package/application-header/index.d.ts +15 -2
- package/chat-messages/index.d.ts +654 -0
- package/chat-messages/package.json +3 -0
- package/dashboard/index.d.ts +1 -0
- package/fesm2022/siemens-element-ng-accordion.mjs +5 -1
- package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs +62 -1
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +4 -4
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-chat-messages.mjs +863 -0
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-dashboard.mjs +8 -4
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +277 -118
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +3 -4
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +13 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-icon.mjs +3 -1
- package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +116 -117
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs +253 -0
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-phone-number.mjs +5 -4
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +3 -4
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-resize-observer.mjs +13 -0
- package/fesm2022/siemens-element-ng-resize-observer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +41 -2
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/file-uploader/index.d.ts +119 -15
- package/header-dropdown/index.d.ts +7 -0
- package/icon/index.d.ts +3 -1
- package/ip-input/index.d.ts +13 -1
- package/markdown-renderer/index.d.ts +36 -0
- package/markdown-renderer/package.json +3 -0
- package/package.json +11 -3
- package/resize-observer/index.d.ts +13 -0
- package/schematics/collection.json +6 -0
- package/schematics/migrations/action-modal-migration/action-modal-migration.js +121 -0
- package/schematics/migrations/action-modal-migration/action-modal.mappings.js +98 -0
- package/schematics/migrations/action-modal-migration/index.js +5 -0
- package/schematics/migrations/data/attribute-selectors.js +6 -0
- package/schematics/migrations/data/component-names.js +78 -0
- package/schematics/migrations/data/element-selectors.js +10 -0
- package/schematics/migrations/data/index.js +17 -0
- package/schematics/migrations/data/output-names.js +8 -0
- package/schematics/migrations/data/symbol-removals.js +58 -0
- package/schematics/migrations/element-migration/element-migration.js +101 -0
- package/schematics/migrations/element-migration/index.js +5 -0
- package/schematics/migrations/index.js +18 -0
- package/schematics/migrations/schema.json +16 -0
- package/schematics/migrations/wizard-migration/index.js +88 -0
- package/schematics/scss-import-to-siemens-migration/index.js +3 -3
- package/schematics/simpl-siemens-migration/index.js +2 -1
- package/schematics/ts-import-to-siemens-migration/index.js +2 -2
- package/schematics/utils/html-utils.js +72 -0
- package/schematics/utils/index.js +4 -2
- package/schematics/utils/project-utils.js +24 -35
- package/schematics/utils/template-utils.js +190 -0
- package/schematics/utils/ts-utils.js +96 -0
- package/template-i18n.json +9 -0
- package/translate/index.d.ts +9 -0
- package/tree-view/index.d.ts +40 -1
package/file-uploader/index.d.ts
CHANGED
|
@@ -20,6 +20,112 @@ interface UploadFile {
|
|
|
20
20
|
progress: number;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
interface FileUploadError extends UploadFile {
|
|
24
|
+
status: 'invalid';
|
|
25
|
+
errorText: TranslatableString;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Directive for handling file uploads with validation for file type and size.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```html
|
|
32
|
+
* <input
|
|
33
|
+
* #fileInput
|
|
34
|
+
* type="file"
|
|
35
|
+
* class="d-none"
|
|
36
|
+
* siFileUpload
|
|
37
|
+
* [accept]="accept()"
|
|
38
|
+
* [maxFileSize]="maxFileSize()"
|
|
39
|
+
* [multiple]="true"
|
|
40
|
+
* (validFiles)="onFilesAdded($event)"
|
|
41
|
+
* (fileError)="onFileError($event)"
|
|
42
|
+
* />
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare class SiFileUploadDirective {
|
|
46
|
+
/**
|
|
47
|
+
* Text or translation key of message title if incorrect file type is dragged / dropped.
|
|
48
|
+
*
|
|
49
|
+
* @defaultValue
|
|
50
|
+
* ```
|
|
51
|
+
* t(() => $localize`:@@SI_FILE_UPLOADER.ERROR_FILE_TYPE:Incorrect file type selected`)
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
readonly errorTextFileType: _angular_core.InputSignal<TranslatableString>;
|
|
55
|
+
/**
|
|
56
|
+
* Message or translation key if file exceeds the maximum file size limit.
|
|
57
|
+
*
|
|
58
|
+
* @defaultValue
|
|
59
|
+
* ```
|
|
60
|
+
* t(() => $localize`:@@SI_FILE_UPLOADER.ERROR_FILE_SIZE_EXCEEDED:File exceeds allowed maximum size`)
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
readonly errorTextFileMaxSize: _angular_core.InputSignal<TranslatableString>;
|
|
64
|
+
/**
|
|
65
|
+
* Define which file types are suggested in file browser.
|
|
66
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#attr-accept
|
|
67
|
+
*/
|
|
68
|
+
readonly accept: _angular_core.InputSignal<string | undefined>;
|
|
69
|
+
/**
|
|
70
|
+
* Define maximal allowed file size in bytes.
|
|
71
|
+
*/
|
|
72
|
+
readonly maxFileSize: _angular_core.InputSignal<number | undefined>;
|
|
73
|
+
/**
|
|
74
|
+
* Defines whether the file input allows selecting multiple files.
|
|
75
|
+
* When {@link directoryUpload} is enabled, this will have no effect.
|
|
76
|
+
*
|
|
77
|
+
* @defaultValue false
|
|
78
|
+
*/
|
|
79
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
80
|
+
/**
|
|
81
|
+
* Enable directory upload.
|
|
82
|
+
*
|
|
83
|
+
* @defaultValue false
|
|
84
|
+
*/
|
|
85
|
+
readonly directoryUpload: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
86
|
+
/**
|
|
87
|
+
* Event emitted when valid files are added.
|
|
88
|
+
* Invalid files (due to size or type) will be ignored and instead the {@link fileError} event will be emitted.
|
|
89
|
+
*/
|
|
90
|
+
readonly validFiles: _angular_core.OutputEmitterRef<UploadFile[]>;
|
|
91
|
+
/**
|
|
92
|
+
* Event emitted when valid files are added.
|
|
93
|
+
* Also includes invalid files, but with status 'invalid' and an errorText describing why they were ignored.
|
|
94
|
+
*/
|
|
95
|
+
readonly filesAdded: _angular_core.OutputEmitterRef<UploadFile[]>;
|
|
96
|
+
/**
|
|
97
|
+
* Event emitted when file validation errors occur, including files that were ignored due to size or type.
|
|
98
|
+
*/
|
|
99
|
+
readonly fileError: _angular_core.OutputEmitterRef<FileUploadError>;
|
|
100
|
+
private readonly elementRef;
|
|
101
|
+
private locale;
|
|
102
|
+
private numberFormat;
|
|
103
|
+
protected onInputChange(event: Event): void;
|
|
104
|
+
/**
|
|
105
|
+
* Handle files from input or drag and drop
|
|
106
|
+
*/
|
|
107
|
+
handleFiles(files: FileList | null): void;
|
|
108
|
+
/**
|
|
109
|
+
* Handle directory entries for drag and drop
|
|
110
|
+
*/
|
|
111
|
+
handleItems(items: DataTransferItemList): void;
|
|
112
|
+
/**
|
|
113
|
+
* Reset the file input value
|
|
114
|
+
*/
|
|
115
|
+
reset(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Trigger the file input click
|
|
118
|
+
*/
|
|
119
|
+
triggerClick(): void;
|
|
120
|
+
private makeUploadFile;
|
|
121
|
+
private verifyFileSize;
|
|
122
|
+
private verifyFileType;
|
|
123
|
+
fileSizeToString(num: number): string;
|
|
124
|
+
static formatFileSize(num: number, formatter?: Intl.NumberFormat): string;
|
|
125
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFileUploadDirective, never>;
|
|
126
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiFileUploadDirective, "input[type=\"file\"][siFileUpload]", never, { "errorTextFileType": { "alias": "errorTextFileType"; "required": false; "isSignal": true; }; "errorTextFileMaxSize": { "alias": "errorTextFileMaxSize"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "directoryUpload": { "alias": "directoryUpload"; "required": false; "isSignal": true; }; }, { "validFiles": "validFiles"; "filesAdded": "filesAdded"; "fileError": "fileError"; }, never, never, true, never>;
|
|
127
|
+
}
|
|
128
|
+
|
|
23
129
|
declare class SiFileDropzoneComponent {
|
|
24
130
|
/**
|
|
25
131
|
* Text or translation key of the input file selector (is combined with the `uploadTextRest`).
|
|
@@ -92,9 +198,14 @@ declare class SiFileDropzoneComponent {
|
|
|
92
198
|
*/
|
|
93
199
|
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
94
200
|
/**
|
|
95
|
-
* Event emitted when files are added.
|
|
201
|
+
* Event emitted when valid files are added.
|
|
202
|
+
* Invalid files are also included here, but with status 'invalid' and an errorText describing why they were ignored.
|
|
96
203
|
*/
|
|
97
204
|
readonly filesAdded: _angular_core.OutputEmitterRef<UploadFile[]>;
|
|
205
|
+
/**
|
|
206
|
+
* Event emitted when file validation errors occur, including files that were ignored due to size or type.
|
|
207
|
+
*/
|
|
208
|
+
readonly fileError: _angular_core.OutputEmitterRef<FileUploadError>;
|
|
98
209
|
/**
|
|
99
210
|
* Enable directory upload.
|
|
100
211
|
*
|
|
@@ -104,25 +215,18 @@ declare class SiFileDropzoneComponent {
|
|
|
104
215
|
protected readonly maxFileSizeString: _angular_core.Signal<string>;
|
|
105
216
|
protected readonly icons: Record<"elementUpload", string>;
|
|
106
217
|
protected dragOver: boolean;
|
|
107
|
-
private readonly
|
|
108
|
-
private locale;
|
|
109
|
-
private numberFormat;
|
|
218
|
+
private readonly fileUploadDirective;
|
|
110
219
|
protected dropHandler(event: DragEvent): void;
|
|
111
220
|
protected dragOverHandler(event: DragEvent): void;
|
|
112
221
|
protected inputEnterHandler(): void;
|
|
113
|
-
protected
|
|
114
|
-
protected
|
|
222
|
+
protected onFilesAdded(files: UploadFile[]): void;
|
|
223
|
+
protected onFileError(error: FileUploadError): void;
|
|
115
224
|
/**
|
|
116
225
|
* Reset all the files inside the native file input (and therefore the dropzone).
|
|
117
226
|
*/
|
|
118
227
|
reset(): void;
|
|
119
|
-
private makeUploadFile;
|
|
120
|
-
private verifyFileSize;
|
|
121
|
-
private verifyFileType;
|
|
122
|
-
private fileSizeToString;
|
|
123
|
-
private handleItems;
|
|
124
228
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFileDropzoneComponent, never>;
|
|
125
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFileDropzoneComponent, "si-file-dropzone", never, { "uploadTextFileSelect": { "alias": "uploadTextFileSelect"; "required": false; "isSignal": true; }; "uploadDropText": { "alias": "uploadDropText"; "required": false; "isSignal": true; }; "maxFileSizeText": { "alias": "maxFileSizeText"; "required": false; "isSignal": true; }; "acceptText": { "alias": "acceptText"; "required": false; "isSignal": true; }; "errorTextFileType": { "alias": "errorTextFileType"; "required": false; "isSignal": true; }; "errorTextFileMaxSize": { "alias": "errorTextFileMaxSize"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "directoryUpload": { "alias": "directoryUpload"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; }, never, never, true, never>;
|
|
229
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiFileDropzoneComponent, "si-file-dropzone", never, { "uploadTextFileSelect": { "alias": "uploadTextFileSelect"; "required": false; "isSignal": true; }; "uploadDropText": { "alias": "uploadDropText"; "required": false; "isSignal": true; }; "maxFileSizeText": { "alias": "maxFileSizeText"; "required": false; "isSignal": true; }; "acceptText": { "alias": "acceptText"; "required": false; "isSignal": true; }; "errorTextFileType": { "alias": "errorTextFileType"; "required": false; "isSignal": true; }; "errorTextFileMaxSize": { "alias": "errorTextFileMaxSize"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "directoryUpload": { "alias": "directoryUpload"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; "fileError": "fileError"; }, never, never, true, never>;
|
|
126
230
|
}
|
|
127
231
|
|
|
128
232
|
/**
|
|
@@ -418,9 +522,9 @@ declare class SiFileUploaderComponent implements OnChanges {
|
|
|
418
522
|
|
|
419
523
|
declare class SiFileUploaderModule {
|
|
420
524
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiFileUploaderModule, never>;
|
|
421
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiFileUploaderModule, never, [typeof SiFileDropzoneComponent, typeof SiFileUploaderComponent], [typeof SiFileDropzoneComponent, typeof SiFileUploaderComponent]>;
|
|
525
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiFileUploaderModule, never, [typeof SiFileDropzoneComponent, typeof SiFileUploaderComponent, typeof SiFileUploadDirective], [typeof SiFileDropzoneComponent, typeof SiFileUploaderComponent, typeof SiFileUploadDirective]>;
|
|
422
526
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<SiFileUploaderModule>;
|
|
423
527
|
}
|
|
424
528
|
|
|
425
|
-
export { SiFileDropzoneComponent, SiFileUploaderComponent, SiFileUploaderModule };
|
|
426
|
-
export type { FileUploadConfig, FileUploadResult, UploadFile };
|
|
529
|
+
export { SiFileDropzoneComponent, SiFileUploadDirective, SiFileUploaderComponent, SiFileUploaderModule };
|
|
530
|
+
export type { FileUploadConfig, FileUploadError, FileUploadResult, UploadFile };
|
|
@@ -66,15 +66,22 @@ declare class SiHeaderDropdownTriggerDirective implements OnChanges, OnInit, OnD
|
|
|
66
66
|
* Must only be opened using an {@link SiHeaderDropdownTriggerDirective}.
|
|
67
67
|
*/
|
|
68
68
|
declare class SiHeaderDropdownComponent {
|
|
69
|
+
/** @internal */
|
|
69
70
|
protected trigger: SiHeaderDropdownTriggerDirective;
|
|
70
71
|
private readonly focusTrap;
|
|
71
72
|
private previousElement;
|
|
72
73
|
private readonly document;
|
|
73
74
|
private readonly options;
|
|
74
75
|
constructor();
|
|
76
|
+
/** @internal */
|
|
75
77
|
protected get show(): boolean;
|
|
78
|
+
/** @internal */
|
|
79
|
+
protected get overlay(): boolean;
|
|
80
|
+
/** @internal */
|
|
76
81
|
protected get submenu(): boolean;
|
|
82
|
+
/** @internal */
|
|
77
83
|
protected get trapFocus(): boolean;
|
|
84
|
+
/** @internal */
|
|
78
85
|
protected escape(): void;
|
|
79
86
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiHeaderDropdownComponent, never>;
|
|
80
87
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiHeaderDropdownComponent, "si-header-dropdown", never, {}, {}, never, ["*"], true, never>;
|
package/icon/index.d.ts
CHANGED
|
@@ -246,6 +246,8 @@ declare const elementAlarmFilled = "data:image/svg+xml;utf8,<svg xmlns='http://w
|
|
|
246
246
|
declare const elementAlarmTick = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M427.72 116.64 279.19 277.47l-73.9-73.9a12 12 0 0 0-17 17l82.73 82.73a12 12 0 0 0 8.48 3.51h.24a12 12 0 0 0 8.58-3.86l157-170a12 12 0 0 0-17.63-16.28Z'/></svg>";
|
|
247
247
|
declare const elementUser = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M256 252a76 76 0 1 0-76-76 76.08 76.08 0 0 0 76 76Zm0-128a52 52 0 1 1-52 52 52.06 52.06 0 0 1 52-52ZM124 360.14a12 12 0 0 0 6.71-2.06c.61-.41 61.54-41.08 126.14-41.08 75.3 0 122.86 39.84 123.3 40.23a12 12 0 0 0 15.68-18.18c-2.19-1.88-54.39-46.05-139-46.05C185 293 120 336.35 117.28 338.19a12 12 0 0 0 6.72 21.95Z'/></svg>";
|
|
248
248
|
declare const elementHelp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M256 64C150.13 64 64 150.13 64 256s86.13 192 192 192 192-86.13 192-192S361.87 64 256 64Zm0 360c-92.64 0-168-75.36-168-168S163.36 88 256 88s168 75.36 168 168-75.36 168-168 168Z'/><path d='M256 305a12 12 0 0 1-12-12v-29.22a12 12 0 0 1 6.51-10.67 11.63 11.63 0 0 1 1.67-.71c1.14-.4 38.54-14.05 38.54-36.4a36 36 0 0 0-70-12 12 12 0 1 1-22.64-8 60 60 0 0 1 116.6 20c0 31-31.39 48.92-46.72 55.84V293A12 12 0 0 1 256 305ZM256.11 360h-.22a16 16 0 0 1 0-32h.22a16 16 0 0 1 0 32Z'/></svg>";
|
|
249
|
+
declare const elementPinch = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M248.46 275.15c0-.19-.05-.37-.07-.55s-.06-.41-.1-.61a6 6 0 0 0-.15-.61c0-.18-.08-.36-.13-.53s-.14-.39-.2-.58-.13-.36-.2-.53-.16-.35-.24-.53-.17-.36-.26-.53-.19-.33-.29-.49-.2-.35-.32-.52-.25-.35-.38-.52-.2-.29-.32-.43c-.24-.29-.5-.58-.77-.85-.28-.27-.56-.52-.86-.77-.14-.12-.29-.22-.44-.33l-.5-.37-.53-.32-.48-.28c-.18-.1-.37-.18-.55-.27l-.51-.23c-.18-.08-.37-.14-.55-.21l-.56-.19-.56-.15-.58-.14-.66-.1-.5-.07a11.85 11.85 0 0 0-1.19-.06h-120a12 12 0 0 0 0 24h91L108 387.84a12 12 0 1 0 17 17l99.51-99.51v91a12 12 0 0 0 24 0v-120a10.88 10.88 0 0 0-.05-1.18ZM405.1 106.75a12 12 0 0 0-17 0l-99.51 99.51v-91a12 12 0 0 0-24 0v120a10.88 10.88 0 0 0 .06 1.14c0 .18.05.36.08.54s.05.41.09.62.1.4.15.6.08.36.14.54.13.38.2.58.12.35.19.52.17.36.25.53.16.36.26.54.19.33.29.49.2.35.31.52l.38.51.32.43c.25.3.5.58.77.86.27.27.56.53.85.77l.44.33a6 6 0 0 0 .51.37 5.74 5.74 0 0 0 .53.32l.47.29.55.26c.17.08.34.17.52.24l.54.2c.19.07.37.14.57.2l.54.14.6.14.63.1c.17 0 .35.06.53.07a11.66 11.66 0 0 0 1.18.06h120a12 12 0 0 0 0-24h-91l99.51-99.51a12 12 0 0 0 .05-16.91Z'/></svg>";
|
|
250
|
+
declare const elementZoom = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M423.94 98.82c0-.19-.05-.37-.08-.55s-.05-.41-.09-.61-.1-.41-.15-.61a4.58 4.58 0 0 0-.14-.53c-.06-.2-.13-.39-.2-.58s-.12-.36-.19-.53-.16-.35-.25-.53-.16-.36-.26-.54-.19-.32-.29-.48-.2-.35-.31-.52-.25-.35-.38-.52l-.32-.43c-.24-.29-.5-.58-.77-.85s-.56-.53-.85-.77l-.44-.33c-.17-.12-.33-.25-.51-.37l-.53-.32-.47-.28c-.18-.1-.37-.18-.56-.27l-.51-.24-.55-.2-.55-.19c-.19-.06-.38-.1-.57-.15l-.57-.14-.67-.1-.49-.07q-.6-.06-1.2-.06H308a12 12 0 0 0 0 24h75l-100.82 100.8a12 12 0 0 0 17 17L400 129v75a12 12 0 0 0 24 0V100a10.88 10.88 0 0 0-.06-1.18ZM212.85 282.18 112 383v-75a12 12 0 0 0-24 0v104a10.88 10.88 0 0 0 .06 1.14c0 .19 0 .37.08.55s0 .41.09.61.1.41.15.61a4.58 4.58 0 0 0 .14.53c.06.2.13.39.2.58s.12.36.19.53.17.35.25.53.16.36.26.54.19.32.29.48.2.35.31.52.25.35.38.52l.32.43c.24.29.5.58.77.85s.56.53.85.77l.44.33c.17.12.33.25.51.37l.52.32.48.28c.18.1.37.18.55.27l.52.24.54.19c.19.07.37.14.57.2a5.36 5.36 0 0 0 .54.14c.2.05.39.11.6.15s.42.06.63.09l.53.08a11.51 11.51 0 0 0 1.23.15h104a12 12 0 0 0 0-24h-75l100.82-100.85a12 12 0 1 0-17-17Z'/></svg>";
|
|
249
251
|
|
|
250
|
-
export { STATUS_ICON_CONFIG, SiIconComponent, SiIconLegacyComponent, SiIconModule, SiStatusIconComponent, addIcons, element2dEditor, elementAlarmFilled, elementAlarmTick, elementBreadcrumbRoot, elementCalendar, elementCancel, elementChecked, elementCheckedFilled, elementCircleFilled, elementDelete, elementDocument, elementDoubleLeft, elementDoubleRight, elementDown2, elementExport, elementFavorites, elementFavoritesFilled, elementHelp, elementHide, elementLeft2, elementLeft3, elementLeft4, elementLock, elementMenu, elementMinus, elementNotChecked, elementOctagonFilled, elementOk, elementOptionsVertical, elementOutOfService, elementPlus, elementRadioChecked, elementRecordFilled, elementRedo, elementRight2, elementRight3, elementRight4, elementSearch, elementShow, elementSortDown, elementSortUp, elementSoundMute, elementSoundOn, elementSquare45Filled, elementSquareFilled, elementStateExclamationMark, elementStateInfo, elementStatePause, elementStateProgress, elementStateQuestionMark, elementStateTick, elementThumbnails, elementTriangleFilled, elementUpload, elementUser, elementWarningFilled, provideIconConfig };
|
|
252
|
+
export { STATUS_ICON_CONFIG, SiIconComponent, SiIconLegacyComponent, SiIconModule, SiStatusIconComponent, addIcons, element2dEditor, elementAlarmFilled, elementAlarmTick, elementBreadcrumbRoot, elementCalendar, elementCancel, elementChecked, elementCheckedFilled, elementCircleFilled, elementDelete, elementDocument, elementDoubleLeft, elementDoubleRight, elementDown2, elementExport, elementFavorites, elementFavoritesFilled, elementHelp, elementHide, elementLeft2, elementLeft3, elementLeft4, elementLock, elementMenu, elementMinus, elementNotChecked, elementOctagonFilled, elementOk, elementOptionsVertical, elementOutOfService, elementPinch, elementPlus, elementRadioChecked, elementRecordFilled, elementRedo, elementRight2, elementRight3, elementRight4, elementSearch, elementShow, elementSortDown, elementSortUp, elementSoundMute, elementSoundOn, elementSquare45Filled, elementSquareFilled, elementStateExclamationMark, elementStateInfo, elementStatePause, elementStateProgress, elementStateQuestionMark, elementStateTick, elementThumbnails, elementTriangleFilled, elementUpload, elementUser, elementWarningFilled, elementZoom, provideIconConfig };
|
|
251
253
|
export type { IconConfig };
|
package/ip-input/index.d.ts
CHANGED
|
@@ -45,7 +45,15 @@ declare abstract class SiIpInputDirective {
|
|
|
45
45
|
setDisabledState(isDisabled: boolean): void;
|
|
46
46
|
writeValue(value?: string | null): void;
|
|
47
47
|
protected onInput(e: Event): void;
|
|
48
|
+
/** @internal */
|
|
48
49
|
protected blur(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Allow to adjust the input value when leaving the input field.
|
|
52
|
+
*/
|
|
53
|
+
protected leaveInput(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Enforce a format on user input.
|
|
56
|
+
*/
|
|
49
57
|
protected abstract maskInput(e: AddrInputEvent): void;
|
|
50
58
|
static ɵfac: i0.ɵɵFactoryDeclaration<SiIpInputDirective, never>;
|
|
51
59
|
static ɵdir: i0.ɵɵDirectiveDeclaration<SiIpInputDirective, "input[siIpInput]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "cidr": { "alias": "cidr"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -72,6 +80,11 @@ declare abstract class SiIpInputDirective {
|
|
|
72
80
|
*/
|
|
73
81
|
declare class SiIp4InputDirective extends SiIpInputDirective implements ControlValueAccessor, Validator {
|
|
74
82
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
83
|
+
/**
|
|
84
|
+
* Trim leading zeros from each part of the IPv4 address
|
|
85
|
+
*/
|
|
86
|
+
protected leaveInput(): void;
|
|
87
|
+
/** @internal */
|
|
75
88
|
protected maskInput(e: AddrInputEvent): void;
|
|
76
89
|
static ɵfac: i0.ɵɵFactoryDeclaration<SiIp4InputDirective, never>;
|
|
77
90
|
static ɵdir: i0.ɵɵDirectiveDeclaration<SiIp4InputDirective, "input[siIpV4]", ["siIpV4"], {}, {}, never, never, true, never>;
|
|
@@ -111,7 +124,6 @@ declare class SiIp6InputDirective extends SiIpInputDirective implements ControlV
|
|
|
111
124
|
|
|
112
125
|
/**
|
|
113
126
|
* Validator factory for a IPV6 address.
|
|
114
|
-
|
|
115
127
|
*/
|
|
116
128
|
declare const ipV6Validator: (options: {
|
|
117
129
|
zeroCompression?: boolean;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Component to display markdown text, uses the {@link getMarkdownRenderer} function internally, relies on `markdown-content` theme class.
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
declare class SiMarkdownRendererComponent {
|
|
9
|
+
private sanitizer;
|
|
10
|
+
private hostElement;
|
|
11
|
+
private markdownRenderer;
|
|
12
|
+
/**
|
|
13
|
+
* The markdown text to transform and display
|
|
14
|
+
* @defaultValue ''
|
|
15
|
+
*/
|
|
16
|
+
readonly text: i0.InputSignal<string>;
|
|
17
|
+
constructor();
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SiMarkdownRendererComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SiMarkdownRendererComponent, "si-markdown-renderer", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns a markdown renderer function which_
|
|
24
|
+
* - Transforms markdown text into formatted HTML.
|
|
25
|
+
* - Returns a DOM node containing the formatted content.
|
|
26
|
+
*
|
|
27
|
+
* **Warning:** The returned Node is inserted without additional sanitization.
|
|
28
|
+
* Input content is sanitized before processing.
|
|
29
|
+
*
|
|
30
|
+
* @experimental
|
|
31
|
+
* @param sanitizer - Angular DomSanitizer instance
|
|
32
|
+
* @returns A function taking the markdown text to transform and returning a DOM div element containing the formatted HTML
|
|
33
|
+
*/
|
|
34
|
+
declare const getMarkdownRenderer: (sanitizer: DomSanitizer) => ((text: string) => Node);
|
|
35
|
+
|
|
36
|
+
export { SiMarkdownRendererComponent, getMarkdownRenderer };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@siemens/element-ng",
|
|
3
3
|
"description": "Element Angular component library, implementing the Siemens Design Language",
|
|
4
|
-
"version": "48.
|
|
4
|
+
"version": "48.3.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"@angular/router": "20",
|
|
31
31
|
"@ngx-formly/bootstrap": "^6.2.2",
|
|
32
32
|
"@ngx-formly/core": "^6.2.2",
|
|
33
|
-
"@siemens/element-translate-ng": "48.
|
|
34
|
-
"@siemens/element-theme": "48.
|
|
33
|
+
"@siemens/element-translate-ng": "48.3.0",
|
|
34
|
+
"@siemens/element-theme": "48.3.0",
|
|
35
35
|
"@siemens/ngx-datatable": "22 - 24",
|
|
36
36
|
"flag-icons": "^7.3.2",
|
|
37
37
|
"google-libphonenumber": "^3.2.40",
|
|
@@ -111,6 +111,10 @@
|
|
|
111
111
|
"types": "./card/index.d.ts",
|
|
112
112
|
"default": "./fesm2022/siemens-element-ng-card.mjs"
|
|
113
113
|
},
|
|
114
|
+
"./chat-messages": {
|
|
115
|
+
"types": "./chat-messages/index.d.ts",
|
|
116
|
+
"default": "./fesm2022/siemens-element-ng-chat-messages.mjs"
|
|
117
|
+
},
|
|
114
118
|
"./circle-status": {
|
|
115
119
|
"types": "./circle-status/index.d.ts",
|
|
116
120
|
"default": "./fesm2022/siemens-element-ng-circle-status.mjs"
|
|
@@ -243,6 +247,10 @@
|
|
|
243
247
|
"types": "./main-detail-container/index.d.ts",
|
|
244
248
|
"default": "./fesm2022/siemens-element-ng-main-detail-container.mjs"
|
|
245
249
|
},
|
|
250
|
+
"./markdown-renderer": {
|
|
251
|
+
"types": "./markdown-renderer/index.d.ts",
|
|
252
|
+
"default": "./fesm2022/siemens-element-ng-markdown-renderer.mjs"
|
|
253
|
+
},
|
|
246
254
|
"./menu": {
|
|
247
255
|
"types": "./menu/index.d.ts",
|
|
248
256
|
"default": "./fesm2022/siemens-element-ng-menu.mjs"
|
|
@@ -36,6 +36,19 @@ declare class ResizeObserverService {
|
|
|
36
36
|
private processQueue;
|
|
37
37
|
/**
|
|
38
38
|
* check size on all observed elements. Only use in testing!
|
|
39
|
+
* @deprecated Will be removed in major version 50! For testing purposes use the resize observer mock:
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* beforeEach(() => mockResizeObserver());
|
|
43
|
+
* afterEach(() => restoreResizeObserver());
|
|
44
|
+
* it('should trigger resize', () => {
|
|
45
|
+
* // For all observed elements
|
|
46
|
+
* MockResizeObserver.triggerResize({});
|
|
47
|
+
* // For specific HTML element
|
|
48
|
+
* MockResizeObserver.triggerResize({ target: myElement });
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
|
|
39
52
|
*/
|
|
40
53
|
_checkAll(): void;
|
|
41
54
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ResizeObserverService, never>;
|
|
@@ -23,6 +23,12 @@
|
|
|
23
23
|
"factory": "./ts-import-to-siemens-migration/index#tsImportMigration",
|
|
24
24
|
"schema": "./ts-import-to-siemens-migration/schema.json",
|
|
25
25
|
"aliases": ["ts-i-migration"]
|
|
26
|
+
},
|
|
27
|
+
"migrate-v47-to-v48": {
|
|
28
|
+
"description": "A migration schematic for updating Element from v47 to v48",
|
|
29
|
+
"factory": "./migrations/index#v47to48Migration",
|
|
30
|
+
"schema": "./migrations/schema.json",
|
|
31
|
+
"aliases": ["v47-to-v48"]
|
|
26
32
|
}
|
|
27
33
|
}
|
|
28
34
|
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
3
|
+
* SPDX-License-Identifier: MIT
|
|
4
|
+
*/
|
|
5
|
+
import { SchematicsException } from '@angular-devkit/schematics';
|
|
6
|
+
import * as ts from 'typescript';
|
|
7
|
+
import { discoverSourceFiles, getImportSpecifiers } from '../../utils/index.js';
|
|
8
|
+
import { ACTION_DIALOG_TYPES_REPLACEMENTS, ACTION_MODAL_SYMBOLS, DIALOG_METHOD_CONFIGS, LEGACY_METHODS } from './action-modal.mappings.js';
|
|
9
|
+
/**
|
|
10
|
+
* Migration rule for action modal methods.
|
|
11
|
+
* @param options - The options object containing the path to the project files to be migrated.
|
|
12
|
+
* @returns A schematic rule for migrating action modal methods.
|
|
13
|
+
*/
|
|
14
|
+
export const actionModalMigrationRule = (options) => {
|
|
15
|
+
return async (tree, context) => {
|
|
16
|
+
context.logger.info('🔄 Migrating action modal methods to v48...');
|
|
17
|
+
const tsSourceFiles = await discoverSourceFiles(tree, context, options.path);
|
|
18
|
+
for (const filePath of tsSourceFiles) {
|
|
19
|
+
const content = tree.read(filePath);
|
|
20
|
+
if (!content) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const sourceFile = ts.createSourceFile(filePath, content.toString(), ts.ScriptTarget.Latest, true);
|
|
24
|
+
// Match both @siemens/element-ng and @simpl/element-ng, with or without /action-modal
|
|
25
|
+
// This ensures we only process files that import from these modules
|
|
26
|
+
const modulePathToMatch = /@(siemens|simpl)\/element-ng(\/action-modal)?/;
|
|
27
|
+
const actionModalImports = getImportSpecifiers(sourceFile, modulePathToMatch, ACTION_MODAL_SYMBOLS);
|
|
28
|
+
if (!actionModalImports?.length) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const pendingTransformations = [];
|
|
32
|
+
const visitNodeAndCollectTransformations = (node) => {
|
|
33
|
+
// Collect method call transformations
|
|
34
|
+
if (ts.isCallExpression(node)) {
|
|
35
|
+
const methodTransformation = createActionDialogMethodCallTransformation(node);
|
|
36
|
+
if (methodTransformation) {
|
|
37
|
+
pendingTransformations.push(methodTransformation);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Collect type reference transformations
|
|
41
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
42
|
+
const typeTransformation = createActionDialogTypeTransformation(node);
|
|
43
|
+
if (typeTransformation) {
|
|
44
|
+
pendingTransformations.push(typeTransformation);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
node.forEachChild(visitNodeAndCollectTransformations);
|
|
48
|
+
};
|
|
49
|
+
sourceFile.forEachChild(visitNodeAndCollectTransformations);
|
|
50
|
+
if (pendingTransformations.length > 0) {
|
|
51
|
+
applyCodeTransformations(tree, filePath, pendingTransformations);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return tree;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const createActionDialogMethodCallTransformation = (node) => {
|
|
58
|
+
const expression = node.expression;
|
|
59
|
+
if (!ts.isPropertyAccessExpression(expression)) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
const methodName = expression.name.text;
|
|
63
|
+
if (!LEGACY_METHODS.includes(methodName)) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
const dialogPropertiesArray = generateDialogProperties(methodName, node.arguments);
|
|
67
|
+
const printer = ts.createPrinter();
|
|
68
|
+
const newNode = ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(expression.expression, ts.factory.createIdentifier('showActionDialog')), undefined, [ts.factory.createObjectLiteralExpression(dialogPropertiesArray)]);
|
|
69
|
+
const newCode = printer.printNode(ts.EmitHint.Expression, newNode, node.getSourceFile());
|
|
70
|
+
return {
|
|
71
|
+
node,
|
|
72
|
+
newCode,
|
|
73
|
+
type: 'method-call'
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
const createActionDialogTypeTransformation = (node) => {
|
|
77
|
+
const nodeText = node.getText().trim();
|
|
78
|
+
const matchingReplacement = ACTION_DIALOG_TYPES_REPLACEMENTS.find(typeReplacement => nodeText === typeReplacement.old);
|
|
79
|
+
if (!matchingReplacement) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
node,
|
|
84
|
+
newCode: `'${matchingReplacement.new}'`,
|
|
85
|
+
type: 'type-reference'
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Generates the dialog properties for the action dialog.
|
|
90
|
+
* @param methodName - The name of the method being migrated.
|
|
91
|
+
* @param nodeArguments - The arguments passed to the method.
|
|
92
|
+
* @returns An array of PropertyAssignment nodes for TypeScript printer.
|
|
93
|
+
* @throws SchematicsException if the method configuration is unknown.
|
|
94
|
+
*/
|
|
95
|
+
const generateDialogProperties = (methodName, nodeArguments) => {
|
|
96
|
+
const methodConfig = DIALOG_METHOD_CONFIGS[methodName];
|
|
97
|
+
if (!methodConfig) {
|
|
98
|
+
throw new SchematicsException(`Unknown method configuration for: ${methodName}`);
|
|
99
|
+
}
|
|
100
|
+
const dialogProperties = [
|
|
101
|
+
ts.factory.createPropertyAssignment(ts.factory.createIdentifier('type'), ts.factory.createStringLiteral(methodConfig.type, true))
|
|
102
|
+
];
|
|
103
|
+
nodeArguments.forEach((arg, index) => {
|
|
104
|
+
const paramName = methodConfig.parameters[index];
|
|
105
|
+
if (paramName) {
|
|
106
|
+
dialogProperties.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(paramName), arg));
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return dialogProperties;
|
|
110
|
+
};
|
|
111
|
+
const applyCodeTransformations = (tree, filePath, codeTransformations) => {
|
|
112
|
+
const recorder = tree.beginUpdate(filePath);
|
|
113
|
+
// Sort by position (descending) to avoid offset issues
|
|
114
|
+
codeTransformations
|
|
115
|
+
.sort((a, b) => b.node.getStart() - a.node.getStart())
|
|
116
|
+
.forEach(({ node, newCode }) => {
|
|
117
|
+
recorder.remove(node.getStart(), node.getWidth());
|
|
118
|
+
recorder.insertLeft(node.getStart(), newCode);
|
|
119
|
+
});
|
|
120
|
+
tree.commitUpdate(recorder);
|
|
121
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
3
|
+
* SPDX-License-Identifier: MIT
|
|
4
|
+
*/
|
|
5
|
+
export const ACTION_MODAL_SYMBOLS = [
|
|
6
|
+
'AlertDialogResult',
|
|
7
|
+
'ConfirmationDialogResult',
|
|
8
|
+
'DeleteConfirmationDialogResult',
|
|
9
|
+
'EditDiscardDialogResult',
|
|
10
|
+
'SiActionDialogService'
|
|
11
|
+
];
|
|
12
|
+
export const LEGACY_METHODS = [
|
|
13
|
+
'showAlertDialog',
|
|
14
|
+
'showConfirmationDialog',
|
|
15
|
+
'showEditDiscardDialog',
|
|
16
|
+
'showDeleteConfirmationDialog'
|
|
17
|
+
];
|
|
18
|
+
export const DIALOG_METHOD_CONFIGS = {
|
|
19
|
+
showAlertDialog: {
|
|
20
|
+
type: 'alert',
|
|
21
|
+
parameters: ['message', 'heading', 'confirmBtnName', 'translationParams', 'icon', 'diOptions']
|
|
22
|
+
},
|
|
23
|
+
showConfirmationDialog: {
|
|
24
|
+
type: 'confirmation',
|
|
25
|
+
parameters: [
|
|
26
|
+
'message',
|
|
27
|
+
'heading',
|
|
28
|
+
'confirmBtnName',
|
|
29
|
+
'declineBtnName',
|
|
30
|
+
'translationParams',
|
|
31
|
+
'icon',
|
|
32
|
+
'diOptions'
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
showEditDiscardDialog: {
|
|
36
|
+
type: 'edit-discard',
|
|
37
|
+
parameters: [
|
|
38
|
+
'disableSave',
|
|
39
|
+
'message',
|
|
40
|
+
'heading',
|
|
41
|
+
'saveBtnName',
|
|
42
|
+
'discardBtnName',
|
|
43
|
+
'cancelBtnName',
|
|
44
|
+
'disableSaveMessage',
|
|
45
|
+
'disableSaveDiscardBtnName',
|
|
46
|
+
'translationParams',
|
|
47
|
+
'icon',
|
|
48
|
+
'diOptions'
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
showDeleteConfirmationDialog: {
|
|
52
|
+
type: 'delete-confirm',
|
|
53
|
+
parameters: [
|
|
54
|
+
'message',
|
|
55
|
+
'heading',
|
|
56
|
+
'deleteBtnName',
|
|
57
|
+
'cancelBtnName',
|
|
58
|
+
'translationParams',
|
|
59
|
+
'icon',
|
|
60
|
+
'diOptions'
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
export const ACTION_DIALOG_TYPES_REPLACEMENTS = [
|
|
65
|
+
// Alert dialog
|
|
66
|
+
{
|
|
67
|
+
old: 'AlertDialogResult.Confirm',
|
|
68
|
+
new: 'confirm'
|
|
69
|
+
},
|
|
70
|
+
// Edit discard dialog
|
|
71
|
+
{
|
|
72
|
+
old: 'EditDiscardDialogResult.Save',
|
|
73
|
+
new: 'save'
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
old: 'EditDiscardDialogResult.Discard',
|
|
77
|
+
new: 'discard'
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
old: 'EditDiscardDialogResult.Cancel',
|
|
81
|
+
new: 'cancel'
|
|
82
|
+
},
|
|
83
|
+
// Confirmation dialog
|
|
84
|
+
{
|
|
85
|
+
old: 'ConfirmationDialogResult.Confirm',
|
|
86
|
+
new: 'confirm'
|
|
87
|
+
},
|
|
88
|
+
{ old: 'ConfirmationDialogResult.Decline', new: 'decline' },
|
|
89
|
+
// Delete confirmation dialog
|
|
90
|
+
{
|
|
91
|
+
old: 'DeleteConfirmationDialogResult.Delete',
|
|
92
|
+
new: 'delete'
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
old: 'DeleteConfirmationDialogResult.Cancel',
|
|
96
|
+
new: 'cancel'
|
|
97
|
+
}
|
|
98
|
+
];
|