@simpleangularcontrols/sac-common 10.0.0-rc.27 → 10.0.0-rc.28

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 (121) hide show
  1. package/bundles/simpleangularcontrols-sac-common.umd.js +716 -361
  2. package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
  3. package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
  4. package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
  5. package/common/basedatetimecontrol.d.ts +5 -0
  6. package/common/basemodelcontrol.d.ts +4 -0
  7. package/common/baseuploadcontrol.d.ts +4 -0
  8. package/controls/buttons/button.d.ts +25 -21
  9. package/controls/checkbox/checkbox.d.ts +1 -1
  10. package/controls/confirm/confirm.d.ts +19 -19
  11. package/controls/confirm/confirm.service.d.ts +10 -10
  12. package/controls/contextmenu/contextmenu.d.ts +8 -0
  13. package/controls/datetime/dateselector.d.ts +9 -1
  14. package/controls/dialog/dialog.d.ts +5 -1
  15. package/controls/form/form.d.ts +4 -4
  16. package/controls/grid/grid.d.ts +22 -18
  17. package/controls/grid/gridbutton.d.ts +23 -4
  18. package/controls/grid/gridcolumn.d.ts +5 -5
  19. package/controls/grid/gridcolumnaction.d.ts +1 -1
  20. package/controls/grid/gridcolumnbase.d.ts +17 -5
  21. package/controls/grid/model.d.ts +17 -17
  22. package/controls/grid/paging.d.ts +33 -29
  23. package/controls/input/inputdecimal.d.ts +1 -1
  24. package/controls/input/inputemail.d.ts +1 -1
  25. package/controls/input/inputinteger.d.ts +1 -1
  26. package/controls/input/inputsearch.d.ts +5 -5
  27. package/controls/list/dropdown.d.ts +3 -3
  28. package/controls/list/dropdownoptions.d.ts +1 -1
  29. package/controls/list/listbox.d.ts +1 -1
  30. package/controls/multilanguage/multilanguageinput.d.ts +2 -2
  31. package/controls/static/staticlabel.d.ts +1 -1
  32. package/controls/tabs/tab.d.ts +19 -15
  33. package/controls/tabs/tabitem.d.ts +4 -4
  34. package/controls/tinymce/tinymce.d.ts +26 -22
  35. package/controls/tinymce/tinymcedialogsettings.d.ts +9 -9
  36. package/controls/tooltip/tooltip.d.ts +8 -0
  37. package/controls/upload/dropzonemultiple.d.ts +4 -0
  38. package/controls/upload/dropzonesingle.d.ts +4 -0
  39. package/controls/upload/uploadmultiple.d.ts +4 -0
  40. package/controls/upload/uploadsingle.d.ts +4 -0
  41. package/controls/validation/validationsummary.d.ts +8 -4
  42. package/controls/wizard/wizard.d.ts +30 -30
  43. package/controls/wizard/wizarditem.d.ts +4 -4
  44. package/esm2015/common/basedatetimecontrol.js +6 -1
  45. package/esm2015/common/basemodelcontrol.js +6 -1
  46. package/esm2015/common/baseuploadcontrol.js +18 -5
  47. package/esm2015/controls/buttons/button.js +37 -32
  48. package/esm2015/controls/checkbox/checkbox.js +2 -2
  49. package/esm2015/controls/confirm/confirm.button.js +1 -1
  50. package/esm2015/controls/confirm/confirm.js +33 -35
  51. package/esm2015/controls/confirm/confirm.service.js +2 -2
  52. package/esm2015/controls/contextmenu/contextmenu.js +12 -1
  53. package/esm2015/controls/contextmenu/contextmenuanchor.js +1 -1
  54. package/esm2015/controls/contextmenu/contextmenucontainer.js +1 -1
  55. package/esm2015/controls/datetime/dateselector.js +41 -19
  56. package/esm2015/controls/dialog/dialog.js +22 -12
  57. package/esm2015/controls/form/form.js +3 -4
  58. package/esm2015/controls/grid/grid.js +23 -13
  59. package/esm2015/controls/grid/gridbutton.js +55 -14
  60. package/esm2015/controls/grid/gridcolumn.js +8 -8
  61. package/esm2015/controls/grid/gridcolumnaction.js +2 -2
  62. package/esm2015/controls/grid/gridcolumnbase.js +18 -7
  63. package/esm2015/controls/grid/gridimage.js +1 -1
  64. package/esm2015/controls/grid/model.js +23 -23
  65. package/esm2015/controls/grid/paging.js +48 -38
  66. package/esm2015/controls/input/inputdecimal.js +2 -2
  67. package/esm2015/controls/input/inputemail.js +2 -2
  68. package/esm2015/controls/input/inputinteger.js +2 -2
  69. package/esm2015/controls/input/inputsearch.js +8 -8
  70. package/esm2015/controls/layout/formlayout.js +6 -2
  71. package/esm2015/controls/list/buildvaluestring.js +3 -1
  72. package/esm2015/controls/list/dropdown.js +11 -2
  73. package/esm2015/controls/list/dropdownoptions.js +9 -2
  74. package/esm2015/controls/list/list.module.js +2 -2
  75. package/esm2015/controls/list/listbox.js +4 -4
  76. package/esm2015/controls/multilanguage/multilanguageinput.js +2 -2
  77. package/esm2015/controls/static/staticlabel.js +6 -2
  78. package/esm2015/controls/tabs/tab.js +38 -28
  79. package/esm2015/controls/tabs/tabitem.js +5 -3
  80. package/esm2015/controls/tinymce/tinymce.js +33 -32
  81. package/esm2015/controls/tinymce/tinymcedialogsettings.js +3 -1
  82. package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.js +1 -4
  83. package/esm2015/controls/tinymce/tinymceinstance.js +1 -1
  84. package/esm2015/controls/tooltip/tooltip.js +12 -1
  85. package/esm2015/controls/upload/dropzonemultiple.js +10 -2
  86. package/esm2015/controls/upload/dropzonesingle.js +10 -2
  87. package/esm2015/controls/upload/uploadmultiple.js +10 -2
  88. package/esm2015/controls/upload/uploadsingle.js +10 -2
  89. package/esm2015/controls/validation/validationsummary.js +12 -6
  90. package/esm2015/controls/wizard/wizard.js +55 -49
  91. package/esm2015/controls/wizard/wizarditem.js +8 -6
  92. package/esm2015/interfaces/ISacConfigurationService.js +1 -1
  93. package/esm2015/interfaces/ISacIconService.js +1 -1
  94. package/esm2015/public_api.js +4 -1
  95. package/esm2015/services/sac-configuration.service.js +15 -5
  96. package/esm2015/services/sac-filebrowser.service.js +68 -62
  97. package/esm2015/services/sac-icon.service.js +31 -1
  98. package/esm2015/services/sac-language.service.js +6 -2
  99. package/esm2015/utilities/guid.js +4 -4
  100. package/esm2015/utilities/popuphelper.js +2 -2
  101. package/esm2015/utilities/testingattribute.pipe.js +39 -0
  102. package/esm2015/utilities/testingattribute.pipe.ngfactory.js +7 -0
  103. package/esm2015/utilities/utilities.module.js +12 -0
  104. package/esm2015/utilities/utilities.module.ngfactory.js +7 -0
  105. package/fesm2015/simpleangularcontrols-sac-common.js +708 -382
  106. package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
  107. package/interfaces/ISacConfigurationService.d.ts +4 -0
  108. package/interfaces/ISacIconService.d.ts +20 -0
  109. package/package.json +1 -1
  110. package/public_api.d.ts +2 -0
  111. package/services/sac-configuration.service.d.ts +13 -5
  112. package/services/sac-filebrowser.service.d.ts +59 -59
  113. package/services/sac-icon.service.d.ts +40 -0
  114. package/services/sac-language.service.d.ts +2 -2
  115. package/simpleangularcontrols-sac-common-10.0.0-rc.28.tgz +0 -0
  116. package/simpleangularcontrols-sac-common.metadata.json +1 -1
  117. package/utilities/testingattribute.pipe.d.ts +12 -0
  118. package/utilities/testingattribute.pipe.ngfactory.d.ts +1 -0
  119. package/utilities/utilities.module.d.ts +2 -0
  120. package/utilities/utilities.module.ngfactory.d.ts +3 -0
  121. package/simpleangularcontrols-sac-common-10.0.0-rc.27.tgz +0 -0
@@ -1,8 +1,9 @@
1
- import { EventEmitter, Directive, Input, Output, ɵɵdefineInjectable, Injectable, InjectionToken, ɵɵinject, Inject, Host, Injector, ChangeDetectorRef, ViewChild, HostListener, Renderer2, ElementRef, ViewChildren, ContentChild, TemplateRef, NgZone, ContentChildren, NgModule } from '@angular/core';
1
+ import { EventEmitter, Directive, Output, Input, InjectionToken, ɵɵdefineInjectable, Injectable, ɵɵinject, Inject, Host, Injector, ChangeDetectorRef, ViewChild, HostListener, Renderer2, ElementRef, ViewChildren, ContentChild, TemplateRef, NgZone, ContentChildren, Pipe, NgModule } from '@angular/core';
2
2
  import { HttpClient } from '@angular/common/http';
3
3
  import { Observable, of } from 'rxjs';
4
4
  import { NgControl, FormControlName, FormGroupDirective, Validators, FormGroup, NgForm } from '@angular/forms';
5
5
  import moment_, { ISO_8601 } from 'moment';
6
+ import { IMaskDirective } from 'angular-imask';
6
7
  import { MaskedRange } from 'imask';
7
8
  import { UploadxService } from 'ngx-uploadx';
8
9
  import { DOCUMENT } from '@angular/common';
@@ -22,33 +23,46 @@ class SacButtonCommon {
22
23
  */
23
24
  this._role = 'default';
24
25
  /**
25
- * Input Property für Icon Style Klasse; default Wert - ''
26
- */
27
- this.icon = '';
28
- /**
29
- * Input Property für Name; default Wert - ''
30
- */
31
- this.name = '';
32
- /**
33
- * Input Property für Text des Buttons; default Wert - ''
26
+ * Das boolean property ist benutzt für Aktivation des Spinner des Button. Default ist false.
34
27
  */
35
- this.text = '';
28
+ this._isloadingvalue = false;
36
29
  /**
37
30
  * Output Event Emitter
38
31
  */
39
32
  this.clicked = new EventEmitter();
40
33
  /**
41
- * Das boolean property ist benutzt für Aktivation des Spinner des Button. Default ist false.
34
+ * Identifier used for the E2E data attribute.
42
35
  */
43
- this._isloadingvalue = false;
36
+ this.e2eidentifier = null;
44
37
  /**
45
38
  * Boolean Property für Error; default Wert - false
46
39
  */
47
40
  this.hasError = false;
41
+ /**
42
+ * Input Property für Icon Style Klasse; default Wert - ''
43
+ */
44
+ this.icon = '';
45
+ /**
46
+ * Input Property für Name; default Wert - ''
47
+ */
48
+ this.name = '';
49
+ /**
50
+ * Input Property für Text des Buttons; default Wert - ''
51
+ */
52
+ this.text = '';
48
53
  // #endregion Public Methods
49
54
  }
50
55
  // #endregion Properties
51
56
  // #region Public Getters And Setters
57
+ /**
58
+ * Getter Methode. Ergibt boolean Wert. Definiert, ob das Button desabled ist.
59
+ */
60
+ get _isdisabled() {
61
+ return this._isdisabledvalue;
62
+ }
63
+ get isdisabled() {
64
+ return this._isdisabledvalue;
65
+ }
52
66
  /**
53
67
  * Deaktivieren von Buttons
54
68
  * @param v Deaktiviert den Button
@@ -62,6 +76,9 @@ class SacButtonCommon {
62
76
  this._isdisabledvalue = v === 'true';
63
77
  }
64
78
  }
79
+ get isloading() {
80
+ return this._isloadingvalue;
81
+ }
65
82
  /**
66
83
  * Das Input property. Definiert der Status des islaoding property. Es ist benutzt für Aktivation des Spinner des Button.
67
84
  */
@@ -73,6 +90,12 @@ class SacButtonCommon {
73
90
  this._isloadingvalue = v === 'true';
74
91
  }
75
92
  }
93
+ /**
94
+ * Die Methode returns die definierte Style-Rolle des Buttons
95
+ */
96
+ get role() {
97
+ return this._role;
98
+ }
76
99
  /**
77
100
  * Definiert den Style des Buttons
78
101
  * @param v Definiert den Style des Buttons.
@@ -105,24 +128,6 @@ class SacButtonCommon {
105
128
  throw new Error('Invalid role " + v + " for button.');
106
129
  }
107
130
  }
108
- /**
109
- * Getter Methode. Ergibt boolean Wert. Definiert, ob das Button desabled ist.
110
- */
111
- get _isdisabled() {
112
- return this._isdisabledvalue;
113
- }
114
- get isdisabled() {
115
- return this._isdisabledvalue;
116
- }
117
- get isloading() {
118
- return this._isloadingvalue;
119
- }
120
- /**
121
- * Die Methode returns die definierte Style-Rolle des Buttons
122
- */
123
- get role() {
124
- return this._role;
125
- }
126
131
  // #endregion Public Getters And Setters
127
132
  // #region Public Methods
128
133
  /**
@@ -138,10 +143,11 @@ SacButtonCommon.decorators = [
138
143
  { type: Directive }
139
144
  ];
140
145
  SacButtonCommon.propDecorators = {
146
+ clicked: [{ type: Output }],
147
+ e2eidentifier: [{ type: Input }],
141
148
  icon: [{ type: Input }],
142
149
  name: [{ type: Input }],
143
150
  text: [{ type: Input }],
144
- clicked: [{ type: Output }],
145
151
  isdisabled: [{ type: Input }],
146
152
  isloading: [{ type: Input }],
147
153
  role: [{ type: Input }]
@@ -171,6 +177,7 @@ var ControlHeight;
171
177
  */
172
178
  class SacFormLayoutCommon {
173
179
  constructor() {
180
+ // #region Properties
174
181
  /**
175
182
  * Defines the default display for a checkbox. You can choose between a checkbox and a switch. If no style is defined, the global style or the style on the control is used.
176
183
  */
@@ -219,7 +226,10 @@ class SacFormLayoutCommon {
219
226
  * Detach label text and tooltip from each other in Label so that label and tooltip can be aligned differently. This is in Bootstrap 3 not supported!
220
227
  */
221
228
  this.splitlabelandhelptext = null;
229
+ // #endregion Public Getters And Setters
222
230
  }
231
+ // #endregion Properties
232
+ // #region Public Getters And Setters
223
233
  /**
224
234
  * Returns whether the inline error messages for the form are active.
225
235
  */
@@ -246,6 +256,13 @@ SacFormLayoutCommon.propDecorators = {
246
256
  splitlabelandhelptext: [{ type: Input }]
247
257
  };
248
258
 
259
+ // #region Variables
260
+ /**
261
+ * injection token for component configuration service
262
+ */
263
+ const SACCONFIGURATION_SERVICE = new InjectionToken('SacConfigurationService');
264
+ // #endregion Variables
265
+ // #region Exported Classes
249
266
  /**
250
267
  * abstract class for configuration settings providing in components
251
268
  */
@@ -259,6 +276,7 @@ SacAbstractConfigurationService.decorators = [
259
276
  * default configuration service for components
260
277
  * */
261
278
  class SacDefaultConfigurationService extends SacAbstractConfigurationService {
279
+ // #region Public Getters And Setters
262
280
  /**
263
281
  * @inheritdoc
264
282
  */
@@ -277,6 +295,12 @@ class SacDefaultConfigurationService extends SacAbstractConfigurationService {
277
295
  get CurrencyText() {
278
296
  return 'CHF';
279
297
  }
298
+ /**
299
+ * @inheritdoc
300
+ */
301
+ get EnableE2EAttributes() {
302
+ return false;
303
+ }
280
304
  /**
281
305
  * @inheritdoc
282
306
  */
@@ -342,10 +366,6 @@ SacDefaultConfigurationService.ɵprov = ɵɵdefineInjectable({ factory: function
342
366
  SacDefaultConfigurationService.decorators = [
343
367
  { type: Injectable, args: [{ providedIn: 'root' },] }
344
368
  ];
345
- /**
346
- * injection token for component configuration service
347
- */
348
- const SACCONFIGURATION_SERVICE = new InjectionToken('SacConfigurationService');
349
369
 
350
370
  /**
351
371
  * Klasse für API Request zum löschen eines Files
@@ -438,10 +458,13 @@ class BrowserNodeRequest {
438
458
  }
439
459
  }
440
460
 
461
+ // #region Variables
441
462
  /**
442
463
  * Injection Token für Language Service
443
464
  */
444
465
  const SACFILEBROWSER_SERVICE = new InjectionToken('FileBrowserService');
466
+ // #endregion Variables
467
+ // #region Exported Classes
445
468
  /**
446
469
  * Abstrakte Implementierung des File Service für die Browser Component
447
470
  */
@@ -457,6 +480,7 @@ SacAbstractFileBrowserService.decorators = [
457
480
  * Standardimplementierung des Backend Service für die File Browser Component
458
481
  */
459
482
  class SacDefaultFileBrowserService extends SacAbstractFileBrowserService {
483
+ // #region Constructors
460
484
  /**
461
485
  * Konstruktor
462
486
  * @param httpclient HTTP Client Service
@@ -465,18 +489,20 @@ class SacDefaultFileBrowserService extends SacAbstractFileBrowserService {
465
489
  super();
466
490
  this.httpclient = httpclient;
467
491
  }
492
+ // #endregion Constructors
493
+ // #region Public Methods
468
494
  /**
469
- * Gibt einen Node zurück
495
+ * Löscht eine Datei
470
496
  * @param apiurl URL zu API Service
471
- * @param path Pfad des Node welcher angefordert wird
472
- * @param allowedextensions Erlaubte Extensions die angezeigt werden dürfen
497
+ * @param path Pfad des Files welches gelöscht werden soll
498
+ * @param allowedextensions Erlaubte Extensions für Files
473
499
  */
474
- GetNode(apiurl, path, allowedextensions) {
475
- const url = `${apiurl}/getnodes`;
500
+ DeleteFile(apiurl, path, allowedextensions) {
501
+ const url = `${apiurl}/deletefile`;
476
502
  if (!path) {
477
503
  path = '';
478
504
  }
479
- const request = new BrowserNodeRequest({
505
+ const request = new BrowserFileDeleteRequest({
480
506
  Path: path,
481
507
  AllowedTypes: allowedextensions,
482
508
  });
@@ -485,113 +511,115 @@ class SacDefaultFileBrowserService extends SacAbstractFileBrowserService {
485
511
  });
486
512
  }
487
513
  /**
488
- * Speichert einen Node
514
+ * Löscht einen Node
489
515
  * @param apiurl URL zu API Service
490
- * @param path Pfad in welchem der Node gespeichert werden soll
491
- * @param newFoldername Name des neuen Nodes
516
+ * @param path Pfad des Nodes welcher gelöscht werden soll
492
517
  */
493
- SaveNode(apiurl, path, newFoldername) {
494
- const url = `${apiurl}/newnode`;
518
+ DeleteNode(apiurl, path) {
519
+ const url = `${apiurl}/deletenode`;
495
520
  if (!path) {
496
521
  path = '';
497
522
  }
498
- const request = new BrowserNodeNewRequest({
523
+ const request = new BrowserNodeDeleteRequest({
499
524
  Path: path,
500
- NewFoldername: newFoldername,
501
525
  });
502
526
  return this.httpclient.post(url, request, {
503
527
  withCredentials: true,
504
528
  });
505
529
  }
506
530
  /**
507
- * Rename eines Nodes
531
+ * Methode welche die Dateien eines Nodes ausliest
508
532
  * @param apiurl URL zu API Service
509
- * @param path Pfad des Nodes welcher umbenannt werden soll
510
- * @param newFoldername Neuer Name des Nodes
533
+ * @param path Pfad des Nodes in welchem die Files gelesen werden sollen
534
+ * @param allowedextensions Erlaubte File Extensions
511
535
  */
512
- RenameNode(apiurl, path, newFoldername) {
513
- const url = `${apiurl}/renamenode`;
536
+ GetFiles(apiurl, path, allowedextensions) {
537
+ const url = `${apiurl}/getfiles`;
514
538
  if (!path) {
515
539
  path = '';
516
540
  }
517
- const request = new BrowserNodeRenameRequest({
541
+ const request = new BrowserNodeRequest({
518
542
  Path: path,
519
- NewFoldername: newFoldername,
543
+ AllowedTypes: allowedextensions,
520
544
  });
521
- return this.httpclient.put(url, request, {
545
+ return this.httpclient.post(url, request, {
522
546
  withCredentials: true,
523
547
  });
524
548
  }
525
549
  /**
526
- * Löscht einen Node
550
+ * Gibt einen Node zurück
527
551
  * @param apiurl URL zu API Service
528
- * @param path Pfad des Nodes welcher gelöscht werden soll
552
+ * @param path Pfad des Node welcher angefordert wird
553
+ * @param allowedextensions Erlaubte Extensions die angezeigt werden dürfen
529
554
  */
530
- DeleteNode(apiurl, path) {
531
- const url = `${apiurl}/deletenode`;
555
+ GetNode(apiurl, path, allowedextensions) {
556
+ const url = `${apiurl}/getnodes`;
532
557
  if (!path) {
533
558
  path = '';
534
559
  }
535
- const request = new BrowserNodeDeleteRequest({
560
+ const request = new BrowserNodeRequest({
536
561
  Path: path,
562
+ AllowedTypes: allowedextensions,
537
563
  });
538
564
  return this.httpclient.post(url, request, {
539
565
  withCredentials: true,
540
566
  });
541
567
  }
542
568
  /**
543
- * Methode welche die Dateien eines Nodes ausliest
569
+ * Methode welche eine Datei umbenannt
544
570
  * @param apiurl URL zu API Service
545
- * @param path Pfad des Nodes in welchem die Files gelesen werden sollen
546
- * @param allowedextensions Erlaubte File Extensions
571
+ * @param path Pfad zum File welches umbenannt werden soll
572
+ * @param newFilename Neuer Dateiname
573
+ * @param allowedextensions Erlaubte Extension für Files
547
574
  */
548
- GetFiles(apiurl, path, allowedextensions) {
549
- const url = `${apiurl}/getfiles`;
575
+ RenameFile(apiurl, path, newFilename, allowedextensions) {
576
+ const url = `${apiurl}/renamefile`;
550
577
  if (!path) {
551
578
  path = '';
552
579
  }
553
- const request = new BrowserNodeRequest({
580
+ const request = new BrowserFileRenameRequest({
554
581
  Path: path,
582
+ NewFilename: newFilename,
555
583
  AllowedTypes: allowedextensions,
556
584
  });
557
- return this.httpclient.post(url, request, {
585
+ return this.httpclient.put(url, request, {
558
586
  withCredentials: true,
559
587
  });
560
588
  }
561
589
  /**
562
- * Speichert eine Hochgeladene Datei in der Struktur
590
+ * Rename eines Nodes
563
591
  * @param apiurl URL zu API Service
564
- * @param path Pfad in welchem das neue File gespeichert werden soll
565
- * @param id ID des Uploads
566
- * @param allowedextensions Erlaubte Extensions für den Upload
592
+ * @param path Pfad des Nodes welcher umbenannt werden soll
593
+ * @param newFoldername Neuer Name des Nodes
567
594
  */
568
- SaveFile(apiurl, path, id, allowedextensions) {
569
- const url = `${apiurl}/uploadfile`;
595
+ RenameNode(apiurl, path, newFoldername) {
596
+ const url = `${apiurl}/renamenode`;
570
597
  if (!path) {
571
598
  path = '';
572
599
  }
573
- const request = new BrowserFileSaveRequest({
600
+ const request = new BrowserNodeRenameRequest({
574
601
  Path: path,
575
- UploadId: id,
576
- AllowedTypes: allowedextensions,
602
+ NewFoldername: newFoldername,
577
603
  });
578
- return this.httpclient.post(url, request, {
604
+ return this.httpclient.put(url, request, {
579
605
  withCredentials: true,
580
606
  });
581
607
  }
582
608
  /**
583
- * Löscht eine Datei
609
+ * Speichert eine Hochgeladene Datei in der Struktur
584
610
  * @param apiurl URL zu API Service
585
- * @param path Pfad des Files welches gelöscht werden soll
586
- * @param allowedextensions Erlaubte Extensions für Files
611
+ * @param path Pfad in welchem das neue File gespeichert werden soll
612
+ * @param id ID des Uploads
613
+ * @param allowedextensions Erlaubte Extensions für den Upload
587
614
  */
588
- DeleteFile(apiurl, path, allowedextensions) {
589
- const url = `${apiurl}/deletefile`;
615
+ SaveFile(apiurl, path, id, allowedextensions) {
616
+ const url = `${apiurl}/uploadfile`;
590
617
  if (!path) {
591
618
  path = '';
592
619
  }
593
- const request = new BrowserFileDeleteRequest({
620
+ const request = new BrowserFileSaveRequest({
594
621
  Path: path,
622
+ UploadId: id,
595
623
  AllowedTypes: allowedextensions,
596
624
  });
597
625
  return this.httpclient.post(url, request, {
@@ -599,23 +627,21 @@ class SacDefaultFileBrowserService extends SacAbstractFileBrowserService {
599
627
  });
600
628
  }
601
629
  /**
602
- * Methode welche eine Datei umbenannt
630
+ * Speichert einen Node
603
631
  * @param apiurl URL zu API Service
604
- * @param path Pfad zum File welches umbenannt werden soll
605
- * @param newFilename Neuer Dateiname
606
- * @param allowedextensions Erlaubte Extension für Files
632
+ * @param path Pfad in welchem der Node gespeichert werden soll
633
+ * @param newFoldername Name des neuen Nodes
607
634
  */
608
- RenameFile(apiurl, path, newFilename, allowedextensions) {
609
- const url = `${apiurl}/renamefile`;
635
+ SaveNode(apiurl, path, newFoldername) {
636
+ const url = `${apiurl}/newnode`;
610
637
  if (!path) {
611
638
  path = '';
612
639
  }
613
- const request = new BrowserFileRenameRequest({
640
+ const request = new BrowserNodeNewRequest({
614
641
  Path: path,
615
- NewFilename: newFilename,
616
- AllowedTypes: allowedextensions,
642
+ NewFoldername: newFoldername,
617
643
  });
618
- return this.httpclient.put(url, request, {
644
+ return this.httpclient.post(url, request, {
619
645
  withCredentials: true,
620
646
  });
621
647
  }
@@ -735,6 +761,36 @@ class SacDefaultIconService extends SacAbstractIconService {
735
761
  get GenericHelptextIcon() {
736
762
  return 'fa fa-info-circle';
737
763
  }
764
+ /**
765
+ * @inheritdoc
766
+ */
767
+ get GridButtonDefaultDeleteIcon() {
768
+ return 'fa-trash';
769
+ }
770
+ /**
771
+ * @inheritdoc
772
+ */
773
+ get GridButtonDefaultDeleteIconSet() {
774
+ return 'fa';
775
+ }
776
+ /**
777
+ * @inheritdoc
778
+ */
779
+ get GridButtonDefaultEditIcon() {
780
+ return 'fa-pen';
781
+ }
782
+ /**
783
+ * @inheritdoc
784
+ */
785
+ get GridButtonDefaultEditIconSet() {
786
+ return 'fa';
787
+ }
788
+ /**
789
+ * @inheritdoc
790
+ */
791
+ get GridButtonDisabledIconSuffix() {
792
+ return ' disabled';
793
+ }
738
794
  /**
739
795
  * @inheritdoc
740
796
  */
@@ -840,10 +896,13 @@ var IconType;
840
896
  IconType[IconType["CssSprite"] = 2] = "CssSprite";
841
897
  })(IconType || (IconType = {}));
842
898
 
899
+ // #region Variables
843
900
  /**
844
901
  * injection token for language service
845
902
  */
846
903
  const SACLANGUAGE_SERVICE = new InjectionToken('SacLanguageService');
904
+ // #endregion Variables
905
+ // #region Exported Classes
847
906
  /**
848
907
  * abstract class for languages provides in components
849
908
  */
@@ -857,6 +916,7 @@ SacAbstractLanguageService.decorators = [
857
916
  * default service for languages
858
917
  * */
859
918
  class SacDefaultLanguageService extends SacAbstractLanguageService {
919
+ // #region Public Methods
860
920
  /**
861
921
  * @inheritdoc
862
922
  */
@@ -1469,10 +1529,10 @@ function mapToObject(map) {
1469
1529
  return obj;
1470
1530
  }
1471
1531
 
1472
- // #region Functions
1473
1532
  /**
1474
1533
  * create a guid with crypto library if availabe and a fallback to Math.Random implementation
1475
1534
  */
1535
+ // #region Exported Functions
1476
1536
  function createGuid() {
1477
1537
  if (typeof crypto !== undefined && crypto['randomUUID'] !== undefined) {
1478
1538
  // return guid without hyphen
@@ -1480,12 +1540,12 @@ function createGuid() {
1480
1540
  }
1481
1541
  else {
1482
1542
  return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1483
- var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
1543
+ const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;
1484
1544
  return v.toString(16);
1485
1545
  });
1486
1546
  }
1487
1547
  }
1488
- // #endregion Functions
1548
+ // #endregion Exported Functions
1489
1549
 
1490
1550
  /**
1491
1551
  * Abstract Klasse für SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit
@@ -1545,6 +1605,10 @@ class SacBaseModelControl {
1545
1605
  * Deaktiviert das Label im Template
1546
1606
  */
1547
1607
  this.disablelabel = false;
1608
+ /**
1609
+ * Identifier used for the E2E data attribute.
1610
+ */
1611
+ this.e2eidentifier = null;
1548
1612
  /**
1549
1613
  * Text to support the user during input.
1550
1614
  */
@@ -1995,6 +2059,7 @@ SacBaseModelControl.propDecorators = {
1995
2059
  componentHeight: [{ type: Input }],
1996
2060
  disabled: [{ type: Input }],
1997
2061
  disablelabel: [{ type: Input }],
2062
+ e2eidentifier: [{ type: Input }],
1998
2063
  helptext: [{ type: Input }],
1999
2064
  helptextmode: [{ type: Input }],
2000
2065
  inlineError: [{ type: Input }],
@@ -2854,12 +2919,15 @@ SacRadiobuttonCommon.propDecorators = {
2854
2919
  * Base Komponente für Dialog
2855
2920
  */
2856
2921
  class SacDialogCommon {
2922
+ // #endregion Properties
2923
+ // #region Constructors
2857
2924
  /**
2858
2925
  * Konstruktor
2859
2926
  * Inject des Formulars
2860
2927
  */
2861
2928
  constructor(cdRef) {
2862
2929
  this.cdRef = cdRef;
2930
+ // #region Properties
2863
2931
  this.hasSetBodyTag = false;
2864
2932
  /**
2865
2933
  * Boolean Property definiert ob das Dialog angezeigt wird
@@ -2882,19 +2950,25 @@ class SacDialogCommon {
2882
2950
  * Steuert ob im Header des Dialogs ein Button angezeigt wird.
2883
2951
  */
2884
2952
  this.closebutton = true;
2953
+ /**
2954
+ * Identifier used for the E2E data attribute.
2955
+ */
2956
+ this.e2eidentifier = null;
2885
2957
  /**
2886
2958
  * Output Emitter. Wird aufgerufen, wenn das Wert des _show property geändert ist - damait das Dialog geöfnet/geschlossen wird.
2887
2959
  */
2888
2960
  this.isvisibleChange = new EventEmitter();
2889
2961
  /**
2890
- * Input Property. Erhält den Namen des Dialog - benutzt für das ID. Default Value: ''
2962
+ * name of control
2891
2963
  */
2892
- this.name = '';
2964
+ this.name = createGuid();
2893
2965
  /**
2894
2966
  * Input Property. Erhält den Title des Dialog. Default Value: 'Dialog'.
2895
2967
  */
2896
2968
  this.title = 'Dialog';
2897
2969
  }
2970
+ // #endregion Constructors
2971
+ // #region Public Getters And Setters
2898
2972
  /**
2899
2973
  * Implementation als Setter, da mit ngIf das Element bei Unsichtbarkeit UNDEFINED ist.
2900
2974
  */
@@ -2911,15 +2985,11 @@ class SacDialogCommon {
2911
2985
  * Setter. Erhält das boolen Wert des _show property
2912
2986
  */
2913
2987
  set isvisible(v) {
2914
- if (v &&
2915
- !this.hasSetBodyTag &&
2916
- !document.body.classList.contains('modal-open')) {
2988
+ if (v && !this.hasSetBodyTag && !document.body.classList.contains('modal-open')) {
2917
2989
  document.body.classList.add('modal-open');
2918
2990
  this.hasSetBodyTag = true;
2919
2991
  }
2920
- if (!v &&
2921
- this.hasSetBodyTag &&
2922
- document.body.classList.contains('modal-open')) {
2992
+ if (!v && this.hasSetBodyTag && document.body.classList.contains('modal-open')) {
2923
2993
  document.body.classList.remove('modal-open');
2924
2994
  this.hasSetBodyTag = false;
2925
2995
  }
@@ -2934,12 +3004,16 @@ class SacDialogCommon {
2934
3004
  set size(v) {
2935
3005
  this._size = v;
2936
3006
  }
3007
+ // #endregion Public Getters And Setters
3008
+ // #region Protected Getters And Setters
2937
3009
  /**
2938
3010
  * Getter for ChangeDetector.
2939
3011
  */
2940
3012
  get ChangeDetector() {
2941
3013
  return this.cdRef;
2942
3014
  }
3015
+ // #endregion Protected Getters And Setters
3016
+ // #region Public Methods
2943
3017
  /**
2944
3018
  * Die Methode setz den Wert des _show property auf false
2945
3019
  */
@@ -2986,8 +3060,7 @@ class SacDialogCommon {
2986
3060
  */
2987
3061
  show() {
2988
3062
  this._show = true;
2989
- if (!this.hasSetBodyTag &&
2990
- !document.body.classList.contains('modal-open')) {
3063
+ if (!this.hasSetBodyTag && !document.body.classList.contains('modal-open')) {
2991
3064
  document.body.classList.add('modal-open');
2992
3065
  this.hasSetBodyTag = true;
2993
3066
  }
@@ -3004,6 +3077,7 @@ SacDialogCommon.propDecorators = {
3004
3077
  allowesc: [{ type: Input }],
3005
3078
  backdrop: [{ type: Input }],
3006
3079
  closebutton: [{ type: Input }],
3080
+ e2eidentifier: [{ type: Input }],
3007
3081
  isvisibleChange: [{ type: Output }],
3008
3082
  name: [{ type: Input }],
3009
3083
  title: [{ type: Input }],
@@ -3014,8 +3088,7 @@ SacDialogCommon.propDecorators = {
3014
3088
  onKeydownHandler: [{ type: HostListener, args: ['document:keydown', ['$event'],] }]
3015
3089
  };
3016
3090
 
3017
- // #endregion Type aliases
3018
- // #region Classes
3091
+ // #region Exported Classes
3019
3092
  /**
3020
3093
  * Base Komponente für SacFormular
3021
3094
  */
@@ -3120,7 +3193,7 @@ SacFormCommon.ctorParameters = () => [
3120
3193
  SacFormCommon.propDecorators = {
3121
3194
  updateon: [{ type: Input }]
3122
3195
  };
3123
- // #endregion Classes
3196
+ // #endregion Exported Types
3124
3197
 
3125
3198
  /**
3126
3199
  * Abstract Klasse für SacBaseListControl. Extendes SacBaseModelControl
@@ -3204,6 +3277,7 @@ SacBaseSelectControl.propDecorators = {
3204
3277
  * @param id ID
3205
3278
  * @param value Wert der an das Element gebunden werden soll
3206
3279
  */
3280
+ // #region Exported Functions
3207
3281
  function _buildValueString(id, value) {
3208
3282
  // Wenn ID null ist Object zurückgeben
3209
3283
  if (id == null) {
@@ -3216,11 +3290,14 @@ function _buildValueString(id, value) {
3216
3290
  // String als ID
3217
3291
  return `${id}: ${value}`.slice(0, 50);
3218
3292
  }
3293
+ // #endregion Exported Functions
3219
3294
 
3220
3295
  /**
3221
3296
  * Base Dropdown Komponente
3222
3297
  */
3223
3298
  class SacDropdownCommon extends SacBaseSelectControl {
3299
+ // #endregion Properties
3300
+ // #region Constructors
3224
3301
  /**
3225
3302
  * Constructor
3226
3303
  * @param formlayout SacFormLayoutCommon to define scoped layout settings
@@ -3232,6 +3309,7 @@ class SacDropdownCommon extends SacBaseSelectControl {
3232
3309
  super(formlayout, injector);
3233
3310
  this.renderer = renderer;
3234
3311
  this.elementRef = elementRef;
3312
+ // #region Properties
3235
3313
  /**
3236
3314
  * compareWith-Funktion
3237
3315
  */
@@ -3261,6 +3339,8 @@ class SacDropdownCommon extends SacBaseSelectControl {
3261
3339
  */
3262
3340
  this.validationmessagesummaryrequired = this.validationKeyService.ValidationErrorSummaryRequired;
3263
3341
  }
3342
+ // #endregion Constructors
3343
+ // #region Public Getters And Setters
3264
3344
  /**
3265
3345
  * compareWith-Funktion
3266
3346
  */
@@ -3270,6 +3350,8 @@ class SacDropdownCommon extends SacBaseSelectControl {
3270
3350
  }
3271
3351
  this._compareWith = fn;
3272
3352
  }
3353
+ // #endregion Public Getters And Setters
3354
+ // #region Public Methods
3273
3355
  /**
3274
3356
  * Registriert das OptionID-Counter als String
3275
3357
  */
@@ -3320,6 +3402,8 @@ class SacDropdownCommon extends SacBaseSelectControl {
3320
3402
  this.setSelectedValue(value);
3321
3403
  super.writeValue(value);
3322
3404
  }
3405
+ // #endregion Public Methods
3406
+ // #region Private Methods
3323
3407
  /**
3324
3408
  * ID extrahieren
3325
3409
  * @param valueString String bei welchem die ID Extrahiert werden soll
@@ -3388,6 +3472,8 @@ SacDropdownCommon.propDecorators = {
3388
3472
  * SacDropdownOption-Klasse
3389
3473
  */
3390
3474
  class SacDropdownOptionCommon {
3475
+ // #endregion Properties
3476
+ // #region Constructors
3391
3477
  /**
3392
3478
  * Konstruktor
3393
3479
  * @param _element Referenz auf HTML Element
@@ -3398,6 +3484,7 @@ class SacDropdownOptionCommon {
3398
3484
  this._element = _element;
3399
3485
  this._renderer = _renderer;
3400
3486
  this._dropdown = _dropdown;
3487
+ // #region Properties
3401
3488
  /**
3402
3489
  * ID-String
3403
3490
  */
@@ -3406,6 +3493,8 @@ class SacDropdownOptionCommon {
3406
3493
  this.id = this._dropdown.registerOption();
3407
3494
  }
3408
3495
  }
3496
+ // #endregion Constructors
3497
+ // #region Public Getters And Setters
3409
3498
  /**
3410
3499
  * Option ngValue
3411
3500
  */
@@ -3424,6 +3513,8 @@ class SacDropdownOptionCommon {
3424
3513
  set value(value) {
3425
3514
  this._setElementValue(value);
3426
3515
  }
3516
+ // #endregion Public Getters And Setters
3517
+ // #region Public Methods
3427
3518
  /**
3428
3519
  * Den Wert vom Option-Element einstellen
3429
3520
  * @param value Wert
@@ -3485,7 +3576,7 @@ class SacListboxOptionCommon {
3485
3576
  /**
3486
3577
  * NgValue des Controls. Wird für die Mehrfachauswahl benötigt
3487
3578
  */
3488
- set ngvalue(value) {
3579
+ set ngValue(value) {
3489
3580
  if (this._listbox) {
3490
3581
  this._value = value;
3491
3582
  }
@@ -3528,7 +3619,7 @@ SacListboxOptionCommon.ctorParameters = () => [
3528
3619
  { type: SacListboxCommon }
3529
3620
  ];
3530
3621
  SacListboxOptionCommon.propDecorators = {
3531
- ngvalue: [{ type: Input }],
3622
+ ngValue: [{ type: Input }],
3532
3623
  value: [{ type: Input }]
3533
3624
  };
3534
3625
  /**
@@ -3642,41 +3733,40 @@ class HTMLCollection {
3642
3733
  */
3643
3734
  class SacTabCommon {
3644
3735
  constructor() {
3736
+ // #region Properties
3645
3737
  /**
3646
- * control name
3738
+ * Identifier used for the E2E data attribute.
3647
3739
  */
3648
- this.name = '';
3740
+ this.e2eidentifier = null;
3649
3741
  /**
3650
- * dispose tabs when they are hidden
3742
+ * name of control
3651
3743
  */
3652
- this.unloadtabitemswhenhidden = null;
3744
+ this.name = createGuid();
3653
3745
  /**
3654
3746
  * Event when new tab is selected
3655
3747
  */
3656
3748
  this.tabselected = new EventEmitter();
3749
+ /**
3750
+ * dispose tabs when they are hidden
3751
+ */
3752
+ this.unloadtabitemswhenhidden = null;
3753
+ // #endregion Private Methods
3657
3754
  }
3658
- // #region Control initialisieren
3755
+ // #endregion Properties
3756
+ // #region Public Methods
3659
3757
  /**
3660
- * AfterContentInit Event
3758
+ * get id of tab button
3759
+ * @param tabitemid id of tab
3661
3760
  */
3662
- ngAfterContentInit() {
3663
- this.initTabs();
3761
+ GetTabItemButtonId(tabitemid) {
3762
+ return this.name + '_' + tabitemid;
3664
3763
  }
3665
3764
  /**
3666
- * Initialisiert die Tabs
3765
+ * AfterContentInit Event
3667
3766
  */
3668
- initTabs() {
3669
- const activeTab = this.tabItems().filter((tab) => tab.active);
3670
- this.tabItems().forEach((itm) => {
3671
- if (this.unloadtabitemswhenhidden !== null) {
3672
- itm.unloadwhenhidden = this.unloadtabitemswhenhidden;
3673
- }
3674
- });
3675
- if (activeTab.length === 0) {
3676
- this.selectTab(this.tabItems()[0]);
3677
- }
3767
+ ngAfterContentInit() {
3768
+ this.initTabs();
3678
3769
  }
3679
- // #endregion
3680
3770
  /**
3681
3771
  * select new tab
3682
3772
  * @param tab tab that should be selected
@@ -3690,22 +3780,32 @@ class SacTabCommon {
3690
3780
  tab.active = true;
3691
3781
  this.tabselected.emit(tab.id);
3692
3782
  }
3783
+ // #endregion Public Methods
3784
+ // #region Private Methods
3693
3785
  /**
3694
- * get id of tab button
3695
- * @param tabitemid id of tab
3786
+ * Initialisiert die Tabs
3696
3787
  */
3697
- GetTabItemButtonId(tabitemid) {
3698
- return this.name + '_' + tabitemid;
3788
+ initTabs() {
3789
+ const activeTab = this.tabItems().filter((tab) => tab.active);
3790
+ this.tabItems().forEach((itm) => {
3791
+ if (this.unloadtabitemswhenhidden !== null) {
3792
+ itm.unloadwhenhidden = this.unloadtabitemswhenhidden;
3793
+ }
3794
+ });
3795
+ if (activeTab.length === 0) {
3796
+ this.selectTab(this.tabItems()[0]);
3797
+ }
3699
3798
  }
3700
3799
  }
3701
3800
  SacTabCommon.decorators = [
3702
3801
  { type: Directive }
3703
3802
  ];
3704
3803
  SacTabCommon.propDecorators = {
3804
+ e2eidentifier: [{ type: Input }],
3705
3805
  name: [{ type: Input }],
3706
3806
  tablabeltemplate: [{ type: Input }],
3707
- unloadtabitemswhenhidden: [{ type: Input }],
3708
- tabselected: [{ type: Output }]
3807
+ tabselected: [{ type: Output }],
3808
+ unloadtabitemswhenhidden: [{ type: Input }]
3709
3809
  };
3710
3810
 
3711
3811
  /**
@@ -3713,6 +3813,7 @@ SacTabCommon.propDecorators = {
3713
3813
  */
3714
3814
  class SacTabItemCommon {
3715
3815
  constructor() {
3816
+ // #region Properties
3716
3817
  /**
3717
3818
  * Boolean Property prüft ob das Tab aktiv ist
3718
3819
  */
@@ -3725,6 +3826,7 @@ class SacTabItemCommon {
3725
3826
  * Das Input property ekzeptiert boolen Wert. Default ist true. Definiert, ob die Komponente hidden sein sollte.
3726
3827
  */
3727
3828
  this.unloadwhenhidden = true;
3829
+ // #endregion Properties
3728
3830
  }
3729
3831
  }
3730
3832
  SacTabItemCommon.decorators = [
@@ -3735,8 +3837,8 @@ SacTabItemCommon.propDecorators = {
3735
3837
  disabled: [{ type: Input }],
3736
3838
  id: [{ type: Input }],
3737
3839
  label: [{ type: Input }],
3738
- unloadwhenhidden: [{ type: Input }],
3739
- templateRef: [{ type: ContentChild, args: [TemplateRef, { static: true },] }]
3840
+ templateRef: [{ type: ContentChild, args: [TemplateRef, { static: true },] }],
3841
+ unloadwhenhidden: [{ type: Input }]
3740
3842
  };
3741
3843
 
3742
3844
  /**
@@ -3751,9 +3853,13 @@ class SacValidationSummaryCommon {
3751
3853
  */
3752
3854
  constructor(parent, injector) {
3753
3855
  /**
3754
- * Name-Property
3856
+ * Identifier used for the E2E data attribute.
3755
3857
  */
3756
- this.name = '';
3858
+ this.e2eidentifier = null;
3859
+ /**
3860
+ * name of control
3861
+ */
3862
+ this.name = createGuid();
3757
3863
  this.parent = parent;
3758
3864
  this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());
3759
3865
  this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService(this.validationKeyService));
@@ -3862,6 +3968,7 @@ SacValidationSummaryCommon.ctorParameters = () => [
3862
3968
  { type: Injector }
3863
3969
  ];
3864
3970
  SacValidationSummaryCommon.propDecorators = {
3971
+ e2eidentifier: [{ type: Input }],
3865
3972
  form: [{ type: Input }],
3866
3973
  formGroupName: [{ type: Input }],
3867
3974
  name: [{ type: Input }]
@@ -4481,14 +4588,14 @@ class SacInputSearchCommon extends SacInputCommon {
4481
4588
  * Text welcher auf dem Button angezeigt wird
4482
4589
  */
4483
4590
  this.buttontext = '';
4484
- /**
4485
- * Name des Such-Icons
4486
- */
4487
- this.iconname = '';
4488
4591
  /**
4489
4592
  * Event wenn auf das Such-Icon geclickt wird
4490
4593
  */
4491
4594
  this.clicked = new EventEmitter();
4595
+ /**
4596
+ * Name des Such-Icons
4597
+ */
4598
+ this.iconname = '';
4492
4599
  // #endregion Private Methods
4493
4600
  }
4494
4601
  // #endregion Properties
@@ -4530,14 +4637,34 @@ SacInputSearchCommon.decorators = [
4530
4637
  SacInputSearchCommon.propDecorators = {
4531
4638
  buttonmode: [{ type: Input }],
4532
4639
  buttontext: [{ type: Input }],
4533
- iconname: [{ type: Input }],
4534
- clicked: [{ type: Output }]
4640
+ clicked: [{ type: Output }],
4641
+ iconname: [{ type: Input }]
4535
4642
  };
4536
4643
 
4537
- // #region Classes
4538
4644
  /**
4539
4645
  * GridResponse class
4540
4646
  */
4647
+ // #region Exported Enums
4648
+ /**
4649
+ * Enum for sorting
4650
+ */
4651
+ var SortOrder;
4652
+ (function (SortOrder) {
4653
+ /**
4654
+ * No sorting
4655
+ */
4656
+ SortOrder[SortOrder["None"] = 0] = "None";
4657
+ /**
4658
+ * Ascending
4659
+ */
4660
+ SortOrder[SortOrder["Ascending"] = 1] = "Ascending";
4661
+ /**
4662
+ * Descending
4663
+ */
4664
+ SortOrder[SortOrder["Descending"] = 2] = "Descending";
4665
+ })(SortOrder || (SortOrder = {}));
4666
+ // #endregion Exported Enums
4667
+ // #region Exported Classes
4541
4668
  class GridResponse {
4542
4669
  }
4543
4670
  /**
@@ -4612,27 +4739,7 @@ class SortDescriptor {
4612
4739
  this.SortOrder = sortorder;
4613
4740
  }
4614
4741
  }
4615
- // #endregion Classes
4616
- // #region Enums
4617
- /**
4618
- * Enum for sorting
4619
- */
4620
- var SortOrder;
4621
- (function (SortOrder) {
4622
- /**
4623
- * No sorting
4624
- */
4625
- SortOrder[SortOrder["None"] = 0] = "None";
4626
- /**
4627
- * Ascending
4628
- */
4629
- SortOrder[SortOrder["Ascending"] = 1] = "Ascending";
4630
- /**
4631
- * Descending
4632
- */
4633
- SortOrder[SortOrder["Descending"] = 2] = "Descending";
4634
- })(SortOrder || (SortOrder = {}));
4635
- // #endregion Enums
4742
+ // #endregion Exported Classes
4636
4743
 
4637
4744
  /**
4638
4745
  * Basic component for SacGrid
@@ -4660,6 +4767,18 @@ class SacGridCommon {
4660
4767
  * Contains Array of Pages.
4661
4768
  */
4662
4769
  this.paginators = [];
4770
+ /**
4771
+ * Number of columns in the grid
4772
+ */
4773
+ this.ColumnCount = 0;
4774
+ /**
4775
+ * Identifier used for the E2E data attribute.
4776
+ */
4777
+ this.e2eidentifier = null;
4778
+ /**
4779
+ * name of control
4780
+ */
4781
+ this.name = createGuid();
4663
4782
  /**
4664
4783
  * Deactivates the selection of the PageSize in the pager
4665
4784
  */
@@ -4672,14 +4791,6 @@ class SacGridCommon {
4672
4791
  * Event when the pager is clicked.
4673
4792
  */
4674
4793
  this.paging = new EventEmitter();
4675
- /**
4676
- * Event when a header is clicked so that the grid is sorted.
4677
- */
4678
- this.sorting = new EventEmitter();
4679
- /**
4680
- * Number of columns in the grid
4681
- */
4682
- this.ColumnCount = 0;
4683
4794
  /**
4684
4795
  * Column by which currently sorted.
4685
4796
  */
@@ -4688,6 +4799,10 @@ class SacGridCommon {
4688
4799
  * Current direction of sorting
4689
4800
  */
4690
4801
  this.sortDirection = SortOrder.None;
4802
+ /**
4803
+ * Event when a header is clicked so that the grid is sorted.
4804
+ */
4805
+ this.sorting = new EventEmitter();
4691
4806
  this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());
4692
4807
  // Set Default Values from Injector
4693
4808
  this.pagesizetext = this.validationKeyService.PagingEntries;
@@ -4760,6 +4875,7 @@ SacGridCommon.ctorParameters = () => [
4760
4875
  ];
4761
4876
  SacGridCommon.propDecorators = {
4762
4877
  body: [{ type: Input }],
4878
+ e2eidentifier: [{ type: Input }],
4763
4879
  emptytext: [{ type: Input }],
4764
4880
  headers: [{ type: Input }],
4765
4881
  maxvisiblepagenumbers: [{ type: Input }],
@@ -4768,10 +4884,10 @@ SacGridCommon.propDecorators = {
4768
4884
  pagesizedisabled: [{ type: Input }],
4769
4885
  pagesizes: [{ type: Input }],
4770
4886
  pagesizetext: [{ type: Input }],
4771
- pagingtext: [{ type: Input }],
4772
- value: [{ type: Input }],
4773
4887
  paging: [{ type: Output }],
4888
+ pagingtext: [{ type: Input }],
4774
4889
  sorting: [{ type: Output }],
4890
+ value: [{ type: Input }],
4775
4891
  sortdata: [{ type: Input }]
4776
4892
  };
4777
4893
 
@@ -4779,24 +4895,34 @@ SacGridCommon.propDecorators = {
4779
4895
  * Base Grid Action Button
4780
4896
  */
4781
4897
  class SacGridButtonCommon {
4782
- constructor() {
4783
- // #region Properties
4898
+ // #endregion Properties
4899
+ // #region Constructors
4900
+ /**
4901
+ * Constructor
4902
+ *
4903
+ * @param injector Injector to resovle services
4904
+ */
4905
+ constructor(injector) {
4906
+ this.injector = injector;
4784
4907
  /**
4785
4908
  * Button is deactivated
4786
4909
  */
4787
4910
  this._isdisabledvalue = false;
4788
- /**
4789
- * Input property for styling the button. Defines the CSS classes of the button
4790
- */
4791
- this.iconstyle = '';
4792
4911
  /**
4793
4912
  * Event when the button is clicked
4794
4913
  */
4795
4914
  this.clicked = new EventEmitter();
4796
- // #endregion Public Methods
4915
+ /**
4916
+ * Input property for styling the button. Defines the CSS classes of the button
4917
+ */
4918
+ this.iconstyle = '';
4919
+ this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
4797
4920
  }
4798
- // #endregion Properties
4921
+ // #endregion Constructors
4799
4922
  // #region Public Getters And Setters
4923
+ get isdisabled() {
4924
+ return this._isdisabledvalue;
4925
+ }
4800
4926
  /**
4801
4927
  * Deactivating buttons
4802
4928
  * @param v Deactivates the button. Can be a Boolean or the strings `true` or `false`.
@@ -4810,9 +4936,6 @@ class SacGridButtonCommon {
4810
4936
  this._isdisabledvalue = v === 'true';
4811
4937
  }
4812
4938
  }
4813
- get isdisabled() {
4814
- return this._isdisabledvalue;
4815
- }
4816
4939
  // #endregion Public Getters And Setters
4817
4940
  // #region Public Methods
4818
4941
  /**
@@ -4823,14 +4946,47 @@ class SacGridButtonCommon {
4823
4946
  this.clicked.emit(this.iconstyle);
4824
4947
  }
4825
4948
  }
4949
+ /**
4950
+ * Defines the CSS class for the icon on the button
4951
+ */
4952
+ getIconClass() {
4953
+ let cssclass;
4954
+ // Handle Default Icons
4955
+ if (this.iconstyle === '') {
4956
+ switch (this.icon) {
4957
+ case 'edit':
4958
+ cssclass = `${this.iconService.GridButtonDefaultEditIconSet} ${this.iconService.GridButtonDefaultEditIcon}`;
4959
+ break;
4960
+ case 'delete':
4961
+ cssclass = `${this.iconService.GridButtonDefaultDeleteIconSet} ${this.iconService.GridButtonDefaultDeleteIcon}`;
4962
+ break;
4963
+ default:
4964
+ cssclass = this.icon;
4965
+ break;
4966
+ }
4967
+ }
4968
+ else {
4969
+ cssclass = `${this.iconstyle} ${this.icon}`;
4970
+ }
4971
+ // trim style
4972
+ cssclass = cssclass.trim();
4973
+ if (this._isdisabledvalue) {
4974
+ cssclass += this.iconService.GridButtonDisabledIconSuffix;
4975
+ }
4976
+ return cssclass;
4977
+ }
4826
4978
  }
4827
4979
  SacGridButtonCommon.decorators = [
4828
4980
  { type: Directive }
4829
4981
  ];
4982
+ SacGridButtonCommon.ctorParameters = () => [
4983
+ { type: Injector }
4984
+ ];
4830
4985
  SacGridButtonCommon.propDecorators = {
4986
+ clicked: [{ type: Output }],
4831
4987
  icon: [{ type: Input }],
4832
4988
  iconstyle: [{ type: Input }],
4833
- clicked: [{ type: Output }],
4989
+ name: [{ type: Input }],
4834
4990
  isdisabled: [{ type: Input }]
4835
4991
  };
4836
4992
 
@@ -4850,6 +5006,10 @@ class SacGridColumnBaseCommon {
4850
5006
  this.grid = grid;
4851
5007
  this.injector = injector;
4852
5008
  this.el = el;
5009
+ /**
5010
+ * Align the column
5011
+ */
5012
+ this.alignment = 'left';
4853
5013
  /**
4854
5014
  * Click on Column Element
4855
5015
  */
@@ -4921,9 +5081,7 @@ class SacGridColumnBaseCommon {
4921
5081
  * Triggers the events so that the table is sorted according to this column.
4922
5082
  */
4923
5083
  SortByColumn() {
4924
- if (this.sortkey !== undefined &&
4925
- this.sortkey !== null &&
4926
- this.sortkey !== '') {
5084
+ if (this.sortkey !== undefined && this.sortkey !== null && this.sortkey !== '') {
4927
5085
  return this.grid.SortBy(this.sortkey);
4928
5086
  }
4929
5087
  }
@@ -4931,6 +5089,12 @@ class SacGridColumnBaseCommon {
4931
5089
  * Called when the component is destroyed.
4932
5090
  */
4933
5091
  ngOnDestroy() {
5092
+ if (this.headerElement) {
5093
+ this.headerElement.nativeElement.remove();
5094
+ }
5095
+ if (this.bodyElement) {
5096
+ this.bodyElement.nativeElement.remove();
5097
+ }
4934
5098
  if (this.IsHeader()) {
4935
5099
  this.grid.UnregisterColumn();
4936
5100
  }
@@ -4959,13 +5123,16 @@ SacGridColumnBaseCommon.ctorParameters = () => [
4959
5123
  { type: ElementRef }
4960
5124
  ];
4961
5125
  SacGridColumnBaseCommon.propDecorators = {
5126
+ alignment: [{ type: Input }],
5127
+ bodyElement: [{ type: ViewChild, args: ['bodyElement', { static: false },] }],
4962
5128
  header: [{ type: Input }],
5129
+ headerElement: [{ type: ViewChild, args: ['headerElement', { static: false },] }],
4963
5130
  name: [{ type: Input }],
5131
+ rowclicked: [{ type: Output }],
4964
5132
  sortkey: [{ type: Input }],
4965
5133
  type: [{ type: Input }],
4966
5134
  value: [{ type: Input }],
4967
- width: [{ type: Input }],
4968
- rowclicked: [{ type: Output }]
5135
+ width: [{ type: Input }]
4969
5136
  };
4970
5137
 
4971
5138
  /**
@@ -4987,18 +5154,18 @@ class SacGridColumnCommon extends SacGridColumnBaseCommon {
4987
5154
  }
4988
5155
  // #endregion Constructors
4989
5156
  // #region Public Getters And Setters
4990
- /**
4991
- * Sets the ellipsis property. Can be a Boolean or the strings `true` or `false`.
4992
- */
4993
- set ellipsis(v) {
4994
- this._ellipsis = convertToBoolean(v);
4995
- }
4996
5157
  /**
4997
5158
  * Getter for the ellipsis property. Always returns a boolean type.
4998
5159
  */
4999
5160
  get ellipsis() {
5000
5161
  return this._ellipsis;
5001
5162
  }
5163
+ /**
5164
+ * Sets the ellipsis property. Can be a Boolean or the strings `true` or `false`.
5165
+ */
5166
+ set ellipsis(v) {
5167
+ this._ellipsis = convertToBoolean(v);
5168
+ }
5002
5169
  // #endregion Public Getters And Setters
5003
5170
  // #region Public Methods
5004
5171
  /**
@@ -5072,6 +5239,30 @@ class SacPagingCommon {
5072
5239
  * Total number of rows
5073
5240
  */
5074
5241
  this.totalRowCount = 0;
5242
+ /**
5243
+ * Active page index
5244
+ */
5245
+ this.activePageIndex = 0;
5246
+ /**
5247
+ * Identifier used for the E2E data attribute.
5248
+ */
5249
+ this.e2eidentifier = null;
5250
+ /**
5251
+ * First page index
5252
+ */
5253
+ this.firstPageIndex = 0;
5254
+ /**
5255
+ * Last page index
5256
+ */
5257
+ this.lastPageIndex = 0;
5258
+ /**
5259
+ * name of control
5260
+ */
5261
+ this.name = createGuid();
5262
+ /**
5263
+ * Number of elements per page
5264
+ */
5265
+ this.pageSize = 20;
5075
5266
  /**
5076
5267
  * Deactivate page size selection
5077
5268
  */
@@ -5089,35 +5280,19 @@ class SacPagingCommon {
5089
5280
  */
5090
5281
  this.pagesizetext = '';
5091
5282
  /**
5092
- * Text in pager for 'Page x of y'. The following interpolation texts are available:
5093
- * {{CURRENTPAGE}}: Current page
5094
- * {{TOTALPAGES}}: Number of pages
5283
+ * Item for each paging element (page number)
5095
5284
  */
5096
- this.pagingtext = '';
5285
+ this.paginators = [];
5097
5286
  /**
5098
5287
  * Event when the page is changed in the grid. The new PageIndex is given as a parameter.
5099
5288
  */
5100
5289
  this.paging = new EventEmitter();
5101
5290
  /**
5102
- * Active page index
5103
- */
5104
- this.activePageIndex = 0;
5105
- /**
5106
- * First page index
5107
- */
5108
- this.firstPageIndex = 0;
5109
- /**
5110
- * Last page index
5111
- */
5112
- this.lastPageIndex = 0;
5113
- /**
5114
- * Number of elements per page
5115
- */
5116
- this.pageSize = 20;
5117
- /**
5118
- * Item for each paging element (page number)
5291
+ * Text in pager for 'Page x of y'. The following interpolation texts are available:
5292
+ * {{CURRENTPAGE}}: Current page
5293
+ * {{TOTALPAGES}}: Number of pages
5119
5294
  */
5120
- this.paginators = [];
5295
+ this.pagingtext = '';
5121
5296
  this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());
5122
5297
  // Set Default Values from Injector
5123
5298
  this.pagesizetext = this.validationKeyService.PagingEntries;
@@ -5126,17 +5301,6 @@ class SacPagingCommon {
5126
5301
  }
5127
5302
  // #endregion Constructors
5128
5303
  // #region Public Getters And Setters
5129
- /**
5130
- * Property for Pager Data
5131
- */
5132
- set pagerdata(p) {
5133
- if (p != null) {
5134
- this.totalRowCount = p.TotalRowCount;
5135
- this.activePageIndex = p.CurrentPageIndex;
5136
- this.pageSize = p.PageSize;
5137
- }
5138
- this.createPager();
5139
- }
5140
5304
  /**
5141
5305
  * Property with text for total entries in page
5142
5306
  */
@@ -5158,6 +5322,17 @@ class SacPagingCommon {
5158
5322
  get getPageSizes() {
5159
5323
  return this.pagesizes.split('|').map((itm) => Number(itm));
5160
5324
  }
5325
+ /**
5326
+ * Property for Pager Data
5327
+ */
5328
+ set pagerdata(p) {
5329
+ if (p != null) {
5330
+ this.totalRowCount = p.TotalRowCount;
5331
+ this.activePageIndex = p.CurrentPageIndex;
5332
+ this.pageSize = p.PageSize;
5333
+ }
5334
+ this.createPager();
5335
+ }
5161
5336
  // #endregion Public Getters And Setters
5162
5337
  // #region Public Methods
5163
5338
  /**
@@ -5295,12 +5470,13 @@ SacPagingCommon.ctorParameters = () => [
5295
5470
  { type: Injector }
5296
5471
  ];
5297
5472
  SacPagingCommon.propDecorators = {
5473
+ e2eidentifier: [{ type: Input }],
5298
5474
  name: [{ type: Input }],
5299
5475
  pagesizedisabled: [{ type: Input }],
5300
5476
  pagesizes: [{ type: Input }],
5301
5477
  pagesizetext: [{ type: Input }],
5302
- pagingtext: [{ type: Input }],
5303
5478
  paging: [{ type: Output }],
5479
+ pagingtext: [{ type: Input }],
5304
5480
  pagerdata: [{ type: Input }]
5305
5481
  };
5306
5482
 
@@ -5635,7 +5811,7 @@ class PopUpHelper {
5635
5811
  return element.offsetTop;
5636
5812
  }
5637
5813
  const parentValue = this.getOffsetTopParent(element.offsetParent);
5638
- let offset = element.offsetTop;
5814
+ const offset = element.offsetTop;
5639
5815
  return parentValue + offset;
5640
5816
  }
5641
5817
  /**
@@ -5810,6 +5986,9 @@ class SacBaseDateTimeControl extends SacBaseModelControl {
5810
5986
  else {
5811
5987
  this.value = null;
5812
5988
  }
5989
+ // update imaks reference
5990
+ this.cdRef.detectChanges();
5991
+ this.iMask.maskRef.updateControl();
5813
5992
  }
5814
5993
  /**
5815
5994
  * Returns the position of the tooltip
@@ -5979,6 +6158,7 @@ SacBaseDateTimeControl.ctorParameters = () => [
5979
6158
  { type: ChangeDetectorRef }
5980
6159
  ];
5981
6160
  SacBaseDateTimeControl.propDecorators = {
6161
+ iMask: [{ type: ViewChild, args: [IMaskDirective, { static: false },] }],
5982
6162
  isrequired: [{ type: Input }],
5983
6163
  pickerarrow: [{ type: ViewChild, args: ['pickerarrow', { static: false },] }],
5984
6164
  pickerbutton: [{ type: ViewChild, args: ['pickerbutton', { static: true },] }],
@@ -6249,6 +6429,14 @@ class DateSelectorItem {
6249
6429
  this.isnew = isnew;
6250
6430
  }
6251
6431
  }
6432
+ // #endregion Classes
6433
+ // #region Variables
6434
+ /**
6435
+ * Moment
6436
+ */
6437
+ const moment$2 = moment_;
6438
+ // #endregion Variables
6439
+ // #region Exported Classes
6252
6440
  /**
6253
6441
  *Basis Komponente für SacDateSelector
6254
6442
  */
@@ -6272,10 +6460,18 @@ class SacDateSelectorCommon {
6272
6460
  * Datum Selector
6273
6461
  */
6274
6462
  this.dateselection = false;
6463
+ /**
6464
+ * Identifier used for the E2E data attribute.
6465
+ */
6466
+ this.e2eidentifier = null;
6275
6467
  /**
6276
6468
  * Monat
6277
6469
  */
6278
6470
  this.month = 4;
6471
+ /**
6472
+ * name of control
6473
+ */
6474
+ this.name = createGuid();
6279
6475
  /**
6280
6476
  * Output Event beim Datum Selektieren
6281
6477
  */
@@ -6344,6 +6540,10 @@ class SacDateSelectorCommon {
6344
6540
  tempValue.year(1900);
6345
6541
  this._selectedValue = tempValue.utc();
6346
6542
  }
6543
+ if (this._selectedValue === null && this._initialValue !== null) {
6544
+ this.selectdate.emit({ date: this._initialValue.local() });
6545
+ return;
6546
+ }
6347
6547
  this.selectdate.emit({
6348
6548
  date: this._selectedValue,
6349
6549
  });
@@ -6445,12 +6645,8 @@ class SacDateSelectorCommon {
6445
6645
  */
6446
6646
  selectDate(v) {
6447
6647
  if (v.isenabled) {
6448
- this.dates.forEach((date) => date
6449
- .filter((filter) => filter.isnew)
6450
- .forEach((itm) => (itm.isnew = false)));
6451
- this.dates.forEach((date) => date
6452
- .filter((filter) => filter.isselected)
6453
- .forEach((itm) => (itm.isselected = false)));
6648
+ this.dates.forEach((date) => date.filter((filter) => filter.isnew).forEach((itm) => (itm.isnew = false)));
6649
+ this.dates.forEach((date) => date.filter((filter) => filter.isselected).forEach((itm) => (itm.isselected = false)));
6454
6650
  v.isnew = true;
6455
6651
  v.isselected = true;
6456
6652
  const dateValue = moment$2(v.date);
@@ -6478,6 +6674,9 @@ class SacDateSelectorCommon {
6478
6674
  * Setter für Stunden Uhrzeit
6479
6675
  */
6480
6676
  setHours(v) {
6677
+ if (v >= 24) {
6678
+ return;
6679
+ }
6481
6680
  /**
6482
6681
  * Select Value setzen falls leer
6483
6682
  */
@@ -6493,6 +6692,9 @@ class SacDateSelectorCommon {
6493
6692
  * Setter für Minuten Uhrzeit
6494
6693
  */
6495
6694
  setMinutes(v) {
6695
+ if (v >= 60) {
6696
+ return;
6697
+ }
6496
6698
  /**
6497
6699
  * Select Value setzen falls leer
6498
6700
  */
@@ -6570,9 +6772,7 @@ class SacDateSelectorCommon {
6570
6772
  for (let dayinmonth = 1; dayinmonth <= currentMonth.daysInMonth(); dayinmonth++) {
6571
6773
  let isSelectedDate = false;
6572
6774
  let isNewDate = false;
6573
- const isCurrentDate = moment$2().month() === this.month &&
6574
- moment$2().year() === this.year &&
6575
- moment$2().date() === dayinmonth;
6775
+ const isCurrentDate = moment$2().month() === this.month && moment$2().year() === this.year && moment$2().date() === dayinmonth;
6576
6776
  // Initial Wert setzen, falls vorhanden
6577
6777
  if (this._initialValue !== null) {
6578
6778
  isSelectedDate =
@@ -6624,6 +6824,11 @@ class SacDateSelectorCommon {
6624
6824
  if (this._selectedValue === null) {
6625
6825
  if (this._initialValue === null) {
6626
6826
  this._selectedValue = moment$2();
6827
+ /**
6828
+ * clean seconds and miliseconds for initial values
6829
+ */
6830
+ this._selectedValue.second(0);
6831
+ this._selectedValue.millisecond(0);
6627
6832
  }
6628
6833
  else {
6629
6834
  this._selectedValue = this._initialValue;
@@ -6640,19 +6845,15 @@ SacDateSelectorCommon.ctorParameters = () => [
6640
6845
  SacDateSelectorCommon.propDecorators = {
6641
6846
  autoapplyselection: [{ type: Input }],
6642
6847
  dateselection: [{ type: Input }],
6848
+ e2eidentifier: [{ type: Input }],
6643
6849
  month: [{ type: Input }],
6850
+ name: [{ type: Input }],
6644
6851
  selectdate: [{ type: Output }],
6645
6852
  timeselection: [{ type: Input }],
6646
6853
  year: [{ type: Input }],
6647
6854
  initialvalue: [{ type: Input }]
6648
6855
  };
6649
- // #endregion Classes
6650
- // #region Variables
6651
- /**
6652
- * Moment
6653
- */
6654
- const moment$2 = moment_;
6655
- // #endregion Variables
6856
+ // #endregion Exported Classes
6656
6857
 
6657
6858
  /**
6658
6859
  * Komponente für SacDateTimeCommon. Extends SacBaseDateTimeControl
@@ -7143,12 +7344,16 @@ SacStaticFormContainerCommon.propDecorators = {
7143
7344
  **/
7144
7345
  class SacStaticLabelCommon extends SacInputBase {
7145
7346
  constructor() {
7347
+ // #region Properties
7146
7348
  super(...arguments);
7147
7349
  /**
7148
7350
  * Erlaubt HTML Content in der Anzeige des Wertes
7149
7351
  */
7150
7352
  this.allowhtml = false;
7353
+ // #endregion Public Methods
7151
7354
  }
7355
+ // #endregion Properties
7356
+ // #region Public Methods
7152
7357
  /**
7153
7358
  * Validierung des Controls
7154
7359
  *
@@ -7172,18 +7377,15 @@ SacStaticLabelCommon.propDecorators = {
7172
7377
  */
7173
7378
  class SacWizardCommon {
7174
7379
  constructor() {
7175
- /**
7176
- * Name des Controls
7177
- */
7178
- this.name = '';
7380
+ // #region Properties
7179
7381
  /**
7180
7382
  * Boolean Property prüft ob Navigation im Wizard disabled ist; default Wert - false
7181
7383
  */
7182
7384
  this.disablenavigation = false;
7183
7385
  /**
7184
- * EventEmitter wenn der Schritt geändert wird
7386
+ * Name des Controls
7185
7387
  */
7186
- this.stepchanged = new EventEmitter();
7388
+ this.name = '';
7187
7389
  /**
7188
7390
  * Leere Implementation von 'propagateChange'. Muss gemacht werden, damit kein Fehler entsteht
7189
7391
  */
@@ -7192,52 +7394,26 @@ class SacWizardCommon {
7192
7394
  * Leere Implementation von 'propagateTouch'. Muss gemacht werden, damit kein Fehler entsteht
7193
7395
  */
7194
7396
  this.propagateTouch = () => { };
7397
+ /**
7398
+ * EventEmitter wenn der Schritt geändert wird
7399
+ */
7400
+ this.stepchanged = new EventEmitter();
7401
+ // #endregion Private Methods
7195
7402
  }
7196
- /**
7197
- * Setter und Getter für aktueller Schritt
7198
- */
7199
- set currentstep(v) {
7200
- this.changeStep(v);
7201
- this.propagateChange(this._currentstep);
7202
- }
7203
- get currentstep() {
7204
- return this._currentstep;
7205
- }
7206
- setStepInternal(step) {
7207
- this._currentstep = step;
7208
- this.propagateChange(this._currentstep);
7209
- }
7210
- // #region Control initialisieren
7211
- /**
7212
- * AfterContentInit Event
7213
- */
7214
- ngAfterContentInit() {
7215
- this.initSteps();
7216
- }
7217
- /**
7218
- * Ursprünglicher Schritt wird selektiert
7219
- */
7220
- initSteps() {
7221
- const activeStep = this.wizardItems().filter((step) => step.active);
7222
- if (activeStep.length === 0) {
7223
- const initStep = this.wizardItems().toArray()[0];
7224
- this.selectStep(initStep);
7225
- initStep.disabled = false;
7226
- this.setStepInternal(initStep.id);
7227
- }
7403
+ // #endregion Properties
7404
+ // #region Public Getters And Setters
7405
+ get currentstep() {
7406
+ return this._currentstep;
7228
7407
  }
7229
- // #endregion
7230
7408
  /**
7231
- * Schritt selektieren
7232
- * @param step Step welcher selektiert werden soll
7409
+ * Setter und Getter für aktueller Schritt
7233
7410
  */
7234
- selectStep(step) {
7235
- // Cancel if Navigation disabled
7236
- if (this.disablenavigation) {
7237
- return;
7238
- }
7239
- this.changeStep(step.id);
7411
+ set currentstep(v) {
7412
+ this.changeStep(v);
7413
+ this.propagateChange(this._currentstep);
7240
7414
  }
7415
+ // #endregion Public Getters And Setters
7416
+ // #region Public Methods
7241
7417
  /**
7242
7418
  * Auf nächsten/vorherigen Schritt gehen
7243
7419
  * @param step Step auf welchen gewechselt werden soll
@@ -7248,7 +7424,7 @@ class SacWizardCommon {
7248
7424
  }
7249
7425
  const wizardItemsArray = this.wizardItems().toArray();
7250
7426
  const itemsCount = wizardItemsArray.length;
7251
- const currentItemIndex = wizardItemsArray.findIndex(itm => itm.id === step);
7427
+ const currentItemIndex = wizardItemsArray.findIndex((itm) => itm.id === step);
7252
7428
  for (let i = 0; i < itemsCount; i++) {
7253
7429
  const item = wizardItemsArray[i];
7254
7430
  if (i < currentItemIndex) {
@@ -7273,6 +7449,12 @@ class SacWizardCommon {
7273
7449
  this.setStepInternal(step);
7274
7450
  this.stepchanged.emit(step);
7275
7451
  }
7452
+ /**
7453
+ * AfterContentInit Event
7454
+ */
7455
+ ngAfterContentInit() {
7456
+ this.initSteps();
7457
+ }
7276
7458
  /**
7277
7459
  * Methode, damit andere Controls änderungen im Control mitbekommen können
7278
7460
  * Zur Änderungsinfo die Methode propagateChange aufrufen.
@@ -7286,6 +7468,17 @@ class SacWizardCommon {
7286
7468
  registerOnTouched(fn) {
7287
7469
  this.propagateTouch = (obj) => fn(obj);
7288
7470
  }
7471
+ /**
7472
+ * Schritt selektieren
7473
+ * @param step Step welcher selektiert werden soll
7474
+ */
7475
+ selectStep(step) {
7476
+ // Cancel if Navigation disabled
7477
+ if (this.disablenavigation) {
7478
+ return;
7479
+ }
7480
+ this.changeStep(step.id);
7481
+ }
7289
7482
  /**
7290
7483
  * Methode zum schreiben von Werten aus dem Model in das Control
7291
7484
  */
@@ -7294,15 +7487,33 @@ class SacWizardCommon {
7294
7487
  this.changeStep(value);
7295
7488
  }
7296
7489
  }
7490
+ // #endregion Public Methods
7491
+ // #region Private Methods
7492
+ /**
7493
+ * Ursprünglicher Schritt wird selektiert
7494
+ */
7495
+ initSteps() {
7496
+ const activeStep = this.wizardItems().filter((step) => step.active);
7497
+ if (activeStep.length === 0) {
7498
+ const initStep = this.wizardItems().toArray()[0];
7499
+ this.selectStep(initStep);
7500
+ initStep.disabled = false;
7501
+ this.setStepInternal(initStep.id);
7502
+ }
7503
+ }
7504
+ setStepInternal(step) {
7505
+ this._currentstep = step;
7506
+ this.propagateChange(this._currentstep);
7507
+ }
7297
7508
  }
7298
7509
  SacWizardCommon.decorators = [
7299
7510
  { type: Directive }
7300
7511
  ];
7301
7512
  SacWizardCommon.propDecorators = {
7302
- name: [{ type: Input }],
7303
7513
  disablenavigation: [{ type: Input }],
7304
- currentstep: [{ type: Input }],
7305
- stepchanged: [{ type: Output }]
7514
+ name: [{ type: Input }],
7515
+ stepchanged: [{ type: Output }],
7516
+ currentstep: [{ type: Input }]
7306
7517
  };
7307
7518
 
7308
7519
  /**
@@ -7310,14 +7521,16 @@ SacWizardCommon.propDecorators = {
7310
7521
  */
7311
7522
  class SacWizardItemCommon {
7312
7523
  constructor() {
7313
- /**
7314
- * Prüft ob der Schritt abgeschlossen wurde.
7315
- */
7316
- this.iscomplete = false;
7524
+ // #region Properties
7317
7525
  /**
7318
7526
  * Prüft ob der Schritt disabled ist.
7319
7527
  */
7320
7528
  this.disabled = true;
7529
+ /**
7530
+ * Prüft ob der Schritt abgeschlossen wurde.
7531
+ */
7532
+ this.iscomplete = false;
7533
+ // #endregion Properties
7321
7534
  }
7322
7535
  }
7323
7536
  SacWizardItemCommon.decorators = [
@@ -7325,9 +7538,9 @@ SacWizardItemCommon.decorators = [
7325
7538
  ];
7326
7539
  SacWizardItemCommon.propDecorators = {
7327
7540
  active: [{ type: Input }],
7328
- iscomplete: [{ type: Input }],
7329
7541
  disabled: [{ type: Input }],
7330
7542
  id: [{ type: Input }],
7543
+ iscomplete: [{ type: Input }],
7331
7544
  label: [{ type: Input }]
7332
7545
  };
7333
7546
 
@@ -7335,6 +7548,8 @@ SacWizardItemCommon.propDecorators = {
7335
7548
  * Settings für TinyMCE Dialog
7336
7549
  */
7337
7550
  class TinyMceDialogSettings {
7551
+ // #endregion Properties
7552
+ // #region Constructors
7338
7553
  /**
7339
7554
  * Konstruktor
7340
7555
  * @param init Initale Werte
@@ -7372,6 +7587,10 @@ class SacTinyMceCommon extends SacBaseModelControl {
7372
7587
  file_picker_callback: this.showSelectDialog,
7373
7588
  save_onsavecallback: () => { },
7374
7589
  };
7590
+ /**
7591
+ * TinyMCE Config
7592
+ */
7593
+ this._config = {};
7375
7594
  /**
7376
7595
  * Erlaubt im Filebrowser das löschen von Dateien
7377
7596
  */
@@ -7420,26 +7639,22 @@ class SacTinyMceCommon extends SacBaseModelControl {
7420
7639
  * Definiert das Control als Required
7421
7640
  */
7422
7641
  this.isrequired = false;
7423
- /**
7424
- * Resource Key für Validation Message Required bei Control
7425
- */
7426
- this.validationmessagerequired = this.validationKeyService.ValidationErrorRequired;
7427
- /**
7428
- * Resource Key für Validation Message Required in Validation Summary
7429
- */
7430
- this.validationmessagesummaryrequired = this.validationKeyService.ValidationErrorSummaryRequired;
7431
7642
  /**
7432
7643
  * Event wenn Save Action in TinyMCE ausgelöst wird
7433
7644
  */
7434
7645
  this.onsave = new EventEmitter();
7435
- /**
7436
- * TinyMCE Config
7437
- */
7438
- this._config = {};
7439
7646
  /**
7440
7647
  * Der Select Dialog wird angezeigt
7441
7648
  */
7442
7649
  this.selectdialogvisible = false;
7650
+ /**
7651
+ * Resource Key für Validation Message Required bei Control
7652
+ */
7653
+ this.validationmessagerequired = this.validationKeyService.ValidationErrorRequired;
7654
+ /**
7655
+ * Resource Key für Validation Message Required in Validation Summary
7656
+ */
7657
+ this.validationmessagesummaryrequired = this.validationKeyService.ValidationErrorSummaryRequired;
7443
7658
  this.validationKeyService = injector.get(SACVALIDATIONKEY_SERVICE, new SacDefaultValidationKeyService());
7444
7659
  this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService(this.validationKeyService));
7445
7660
  this.config = {};
@@ -7448,19 +7663,25 @@ class SacTinyMceCommon extends SacBaseModelControl {
7448
7663
  // #region Public Getters And Setters
7449
7664
  /**
7450
7665
  * TinyMCE Konfiguration
7451
- * @link https://www.tiny.cloud/docs/configure/
7452
7666
  */
7453
- set config(v) {
7454
- this._config = Object.assign(Object.assign(Object.assign(Object.assign({}, this.getDynamicSettings()), this.baseConfig), this.overwriteDefaultSettings()), v);
7667
+ get config() {
7668
+ return this._config;
7455
7669
  }
7456
7670
  /**
7457
7671
  * TinyMCE Konfiguration
7672
+ * @link https://www.tiny.cloud/docs/configure/
7458
7673
  */
7459
- get config() {
7460
- return this._config;
7674
+ set config(v) {
7675
+ this._config = Object.assign(Object.assign(Object.assign(Object.assign({}, this.getDynamicSettings()), this.baseConfig), this.overwriteDefaultSettings()), v);
7461
7676
  }
7462
7677
  // #endregion Public Getters And Setters
7463
7678
  // #region Public Methods
7679
+ /**
7680
+ * event when control is touched
7681
+ */
7682
+ blur() {
7683
+ this.propagateTouch();
7684
+ }
7464
7685
  /**
7465
7686
  * Schliesst den Dateiauswahl Dialog
7466
7687
  */
@@ -7479,10 +7700,8 @@ class SacTinyMceCommon extends SacBaseModelControl {
7479
7700
  */
7480
7701
  setSelectDialogResult() {
7481
7702
  if (this.selectDialogSettings.value) {
7482
- if (this.selectDialogSettings.value.startsWith('/') ||
7483
- this.selectDialogSettings.value.startsWith('\\')) {
7484
- this.selectDialogSettings.value =
7485
- this.selectDialogSettings.value.substring(1);
7703
+ if (this.selectDialogSettings.value.startsWith('/') || this.selectDialogSettings.value.startsWith('\\')) {
7704
+ this.selectDialogSettings.value = this.selectDialogSettings.value.substring(1);
7486
7705
  }
7487
7706
  this.selectDialogSettings.callback(this.selectDialogSettings.value);
7488
7707
  }
@@ -7507,16 +7726,13 @@ class SacTinyMceCommon extends SacBaseModelControl {
7507
7726
  });
7508
7727
  switch (meta.filetype) {
7509
7728
  case 'image':
7510
- this.settings.angular.selectDialogSettings.allowedtypes =
7511
- this.settings.angular.filetypesimages;
7729
+ this.settings.angular.selectDialogSettings.allowedtypes = this.settings.angular.filetypesimages;
7512
7730
  break;
7513
7731
  case 'media':
7514
- this.settings.angular.selectDialogSettings.allowedtypes =
7515
- this.settings.angular.filetypesvideo;
7732
+ this.settings.angular.selectDialogSettings.allowedtypes = this.settings.angular.filetypesvideo;
7516
7733
  break;
7517
7734
  default:
7518
- this.settings.angular.selectDialogSettings.allowedtypes =
7519
- this.settings.angular.filetypesfiles;
7735
+ this.settings.angular.selectDialogSettings.allowedtypes = this.settings.angular.filetypesfiles;
7520
7736
  break;
7521
7737
  }
7522
7738
  });
@@ -7534,7 +7750,7 @@ class SacTinyMceCommon extends SacBaseModelControl {
7534
7750
  }
7535
7751
  return error;
7536
7752
  }
7537
- // #endregion Public Abstract Methods
7753
+ // #endregion Public Methods
7538
7754
  // #region Private Methods
7539
7755
  /**
7540
7756
  * Gibt die TinyMCE Settings zurück, die aus den Properties der Angular Komponenten erzeugt werden
@@ -7569,9 +7785,9 @@ SacTinyMceCommon.propDecorators = {
7569
7785
  filetypesvideo: [{ type: Input }],
7570
7786
  height: [{ type: Input }],
7571
7787
  isrequired: [{ type: Input }],
7788
+ onsave: [{ type: Output }],
7572
7789
  validationmessagerequired: [{ type: Input }],
7573
7790
  validationmessagesummaryrequired: [{ type: Input }],
7574
- onsave: [{ type: Output }],
7575
7791
  config: [{ type: Input }]
7576
7792
  };
7577
7793
 
@@ -7984,6 +8200,14 @@ class SacTooltipCommon {
7984
8200
  * Position of the tooltip at the top
7985
8201
  */
7986
8202
  this.TopPos = 0;
8203
+ /**
8204
+ * Identifier used for the E2E data attribute.
8205
+ */
8206
+ this.e2eidentifier = null;
8207
+ /**
8208
+ * name of control
8209
+ */
8210
+ this.name = createGuid();
7987
8211
  /**
7988
8212
  * Position of the picker arrow at the left
7989
8213
  */
@@ -8170,6 +8394,8 @@ SacTooltipCommon.ctorParameters = () => [
8170
8394
  ];
8171
8395
  SacTooltipCommon.propDecorators = {
8172
8396
  content: [{ type: ViewChild, args: ['container', { static: true },] }],
8397
+ e2eidentifier: [{ type: Input }],
8398
+ name: [{ type: Input }],
8173
8399
  position: [{ type: Input }],
8174
8400
  tooltiptext: [{ type: Input }],
8175
8401
  inlinemode: [{ type: Input }],
@@ -8223,9 +8449,22 @@ class SacUploadBase extends SacBaseModelControl {
8223
8449
  * Handling von neuen Files im Input Control
8224
8450
  */
8225
8451
  this.fileListener = () => {
8226
- if (this.uploadInput.nativeElement.files) {
8227
- this.uploadService.handleFileList(this.uploadInput.nativeElement.files);
8452
+ // exit if files is null or undefined
8453
+ if (!this.uploadInput.nativeElement.files) {
8454
+ return;
8228
8455
  }
8456
+ if (this.GetMaxFiles() > 0) {
8457
+ const maxFiles = this.GetMaxFiles() + this.UploadedFileCount();
8458
+ const possibleFiles = maxFiles - this.uploadInput.nativeElement.files.length;
8459
+ if (possibleFiles < 0) {
8460
+ const dataTransfer = new DataTransfer();
8461
+ const files = Array.from(this.uploadInput.nativeElement.files).splice(0, this.uploadInput.nativeElement.files.length + possibleFiles);
8462
+ // clone files
8463
+ files.forEach((file) => dataTransfer.items.add(file));
8464
+ this.uploadInput.nativeElement.files = dataTransfer.files;
8465
+ }
8466
+ }
8467
+ this.uploadService.handleFileList(this.uploadInput.nativeElement.files);
8229
8468
  };
8230
8469
  /**
8231
8470
  * Definiert das Control als Required
@@ -8552,7 +8791,7 @@ class SacUploadBase extends SacBaseModelControl {
8552
8791
  }
8553
8792
  return error;
8554
8793
  }
8555
- // #endregion Public Methods
8794
+ // #endregion Protected Methods
8556
8795
  // #region Private Methods
8557
8796
  UpdateFileCount() {
8558
8797
  // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
@@ -8689,7 +8928,7 @@ class SacDropzoneMultipleCommon extends SacUploadBase {
8689
8928
  * Resource Key für Validation Message Required in Validation Summary
8690
8929
  */
8691
8930
  this.validationmessagesummaryminfiles = this.validationKeyService.ValidationErrorSummaryFilesMin;
8692
- // #endregion Public Methods
8931
+ // #endregion Protected Methods
8693
8932
  }
8694
8933
  // #endregion Properties
8695
8934
  // #region Public Methods
@@ -8804,6 +9043,14 @@ class SacDropzoneMultipleCommon extends SacUploadBase {
8804
9043
  }
8805
9044
  return error;
8806
9045
  }
9046
+ // #endregion Public Methods
9047
+ // #region Protected Methods
9048
+ /**
9049
+ * @inheritdoc
9050
+ */
9051
+ GetMaxFiles() {
9052
+ return this.maxfiles;
9053
+ }
8807
9054
  }
8808
9055
  SacDropzoneMultipleCommon.decorators = [
8809
9056
  { type: Directive }
@@ -8831,7 +9078,7 @@ class SacDropzoneSingleCommon extends SacUploadBase {
8831
9078
  * Höhe der Dropzone. Wert wird mit Einheit angegeben.
8832
9079
  */
8833
9080
  this.uploadheight = null;
8834
- // #endregion Public Methods
9081
+ // #endregion Protected Methods
8835
9082
  }
8836
9083
  // #endregion Properties
8837
9084
  // #region Public Methods
@@ -8914,6 +9161,14 @@ class SacDropzoneSingleCommon extends SacUploadBase {
8914
9161
  this.active = true;
8915
9162
  }
8916
9163
  }
9164
+ // #endregion Public Methods
9165
+ // #region Protected Methods
9166
+ /**
9167
+ * @inheritdoc
9168
+ */
9169
+ GetMaxFiles() {
9170
+ return 1;
9171
+ }
8917
9172
  }
8918
9173
  SacDropzoneSingleCommon.decorators = [
8919
9174
  { type: Directive }
@@ -8953,7 +9208,7 @@ class SacUploadMultipleCommon extends SacUploadBase {
8953
9208
  * Resource Key für Validation Message Required in Validation Summary
8954
9209
  */
8955
9210
  this.validationmessagesummaryminfiles = this.validationKeyService.ValidationErrorSummaryFilesMin;
8956
- // #endregion Public Methods
9211
+ // #endregion Protected Methods
8957
9212
  }
8958
9213
  // #endregion Properties
8959
9214
  // #region Public Methods
@@ -9027,6 +9282,14 @@ class SacUploadMultipleCommon extends SacUploadBase {
9027
9282
  }
9028
9283
  return error;
9029
9284
  }
9285
+ // #endregion Public Methods
9286
+ // #region Protected Methods
9287
+ /**
9288
+ * @inheritdoc
9289
+ */
9290
+ GetMaxFiles() {
9291
+ return this.maxfiles;
9292
+ }
9030
9293
  }
9031
9294
  SacUploadMultipleCommon.decorators = [
9032
9295
  { type: Directive }
@@ -9055,7 +9318,7 @@ class SacUploadSingleCommon extends SacUploadBase {
9055
9318
  * Label für Upload Button
9056
9319
  */
9057
9320
  this.buttonupload = '';
9058
- // #endregion Public Methods
9321
+ // #endregion Protected Methods
9059
9322
  }
9060
9323
  // #endregion Properties
9061
9324
  // #region Public Methods
@@ -9088,6 +9351,14 @@ class SacUploadSingleCommon extends SacUploadBase {
9088
9351
  }
9089
9352
  }
9090
9353
  }
9354
+ // #endregion Public Methods
9355
+ // #region Protected Methods
9356
+ /**
9357
+ * @inheritdoc
9358
+ */
9359
+ GetMaxFiles() {
9360
+ return 1;
9361
+ }
9091
9362
  }
9092
9363
  SacUploadSingleCommon.decorators = [
9093
9364
  { type: Directive }
@@ -9539,43 +9810,35 @@ SacMultilanguageInputAreaCommon.propDecorators = {
9539
9810
  */
9540
9811
  class SacConfirmCommon {
9541
9812
  constructor() {
9542
- //#region Input / Output Properties
9543
- /**
9544
- * Event wenn Dialog geschlossen wird
9545
- */
9546
- this.onconfirm = new EventEmitter();
9547
- /**
9548
- * Dialog Titel für Confirm Dialog
9549
- */
9550
- this.title = '';
9813
+ // #region Properties
9551
9814
  /**
9552
- * Nachricht die auf dem Dialog angezeigt wird
9815
+ * Map mit Buttons die in Dialog angezeigt werden.
9553
9816
  */
9554
- this.message = '';
9817
+ this.buttons = [];
9555
9818
  /**
9556
9819
  * Icon welches auf dem Dialog angezeigt wird
9557
9820
  */
9558
9821
  this.image = '';
9559
- /**
9560
- * Map mit Buttons die in Dialog angezeigt werden.
9561
- */
9562
- this.buttons = [];
9563
- //#endregion
9564
- //#region Internal Properties and Methods
9565
9822
  /**
9566
9823
  * Definiert ob der Dialog sichtbar ist
9567
9824
  */
9568
9825
  this.isvisible = false;
9569
- //#endregion
9570
- }
9571
- /**
9572
- * Definiert, ob für den Dialog ein Image definiert wurde
9573
- */
9574
- hasImage() {
9575
- return this.image !== '';
9826
+ /**
9827
+ * Nachricht die auf dem Dialog angezeigt wird
9828
+ */
9829
+ this.message = '';
9830
+ /**
9831
+ * Event wenn Dialog geschlossen wird
9832
+ */
9833
+ this.onconfirm = new EventEmitter();
9834
+ /**
9835
+ * Dialog Titel für Confirm Dialog
9836
+ */
9837
+ this.title = '';
9838
+ // #endregion Public Methods
9576
9839
  }
9577
- //#endregion
9578
- //#region Public Methods
9840
+ // #endregion Properties
9841
+ // #region Public Methods
9579
9842
  /**
9580
9843
  * Action wenn Button auf Dialog geklickt wurde. Löst den EventEmitter aus und blendet den Dialog aus.
9581
9844
  * @param action
@@ -9585,10 +9848,10 @@ class SacConfirmCommon {
9585
9848
  this.isvisible = false;
9586
9849
  }
9587
9850
  /**
9588
- * Zeigt den Dialog an
9851
+ * Definiert, ob für den Dialog ein Image definiert wurde
9589
9852
  */
9590
- show() {
9591
- this.isvisible = true;
9853
+ hasImage() {
9854
+ return this.image !== '';
9592
9855
  }
9593
9856
  /**
9594
9857
  * Blendet den Dialog aus
@@ -9596,16 +9859,22 @@ class SacConfirmCommon {
9596
9859
  hide() {
9597
9860
  this.isvisible = false;
9598
9861
  }
9862
+ /**
9863
+ * Zeigt den Dialog an
9864
+ */
9865
+ show() {
9866
+ this.isvisible = true;
9867
+ }
9599
9868
  }
9600
9869
  SacConfirmCommon.decorators = [
9601
9870
  { type: Directive }
9602
9871
  ];
9603
9872
  SacConfirmCommon.propDecorators = {
9604
- onconfirm: [{ type: Output }],
9605
- title: [{ type: Input }],
9606
- message: [{ type: Input }],
9873
+ buttons: [{ type: Input }],
9607
9874
  image: [{ type: Input }],
9608
- buttons: [{ type: Input }]
9875
+ message: [{ type: Input }],
9876
+ onconfirm: [{ type: Output }],
9877
+ title: [{ type: Input }]
9609
9878
  };
9610
9879
 
9611
9880
  /**
@@ -10119,10 +10388,18 @@ class SacContextmenuCommon {
10119
10388
  * Extra CSS Klassen für das Control
10120
10389
  */
10121
10390
  this.cssclass = '';
10391
+ /**
10392
+ * Identifier used for the E2E data attribute.
10393
+ */
10394
+ this.e2eidentifier = null;
10122
10395
  /**
10123
10396
  * Definiert ob das Dropdown offen ist.
10124
10397
  */
10125
10398
  this.isopen = false;
10399
+ /**
10400
+ * name of control
10401
+ */
10402
+ this.name = createGuid();
10126
10403
  /**
10127
10404
  * The preferred placement of the dropdown.
10128
10405
  *
@@ -10268,8 +10545,10 @@ SacContextmenuCommon.propDecorators = {
10268
10545
  buttontemplate: [{ type: Input }],
10269
10546
  container: [{ type: Input }],
10270
10547
  cssclass: [{ type: Input }],
10548
+ e2eidentifier: [{ type: Input }],
10271
10549
  isopen: [{ type: Input }],
10272
10550
  menuitems: [{ type: ContentChildren, args: [SacContextmenuItemCommon,] }],
10551
+ name: [{ type: Input }],
10273
10552
  placement: [{ type: Input }],
10274
10553
  onClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
10275
10554
  };
@@ -10918,6 +11197,53 @@ SacFileBrowserCommon.propDecorators = {
10918
11197
  exitEditMode: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
10919
11198
  };
10920
11199
 
11200
+ class SacTestingAttributePipe {
11201
+ // #endregion Properties
11202
+ // #region Constructors
11203
+ /**
11204
+ *
11205
+ */
11206
+ constructor(injector) {
11207
+ // get attribute state from config
11208
+ const configurationService = injector.get(SACCONFIGURATION_SERVICE, new SacDefaultConfigurationService());
11209
+ this.isEnabled = configurationService.EnableE2EAttributes;
11210
+ }
11211
+ // #endregion Constructors
11212
+ // #region Public Methods
11213
+ transform(controlname, e2eattribute) {
11214
+ // return null to disable attribute if disabled
11215
+ if (!this.isEnabled) {
11216
+ return null;
11217
+ }
11218
+ if (e2eattribute) {
11219
+ return e2eattribute;
11220
+ }
11221
+ if (controlname) {
11222
+ return controlname;
11223
+ }
11224
+ // disable attribute if name and e2e attribute is not set
11225
+ return null;
11226
+ }
11227
+ }
11228
+ SacTestingAttributePipe.decorators = [
11229
+ { type: Pipe, args: [{
11230
+ name: 'testingattribute',
11231
+ },] }
11232
+ ];
11233
+ SacTestingAttributePipe.ctorParameters = () => [
11234
+ { type: Injector }
11235
+ ];
11236
+
11237
+ class SACCommonUtliltiesModule {
11238
+ }
11239
+ SACCommonUtliltiesModule.decorators = [
11240
+ { type: NgModule, args: [{
11241
+ declarations: [SacTestingAttributePipe],
11242
+ imports: [],
11243
+ exports: [SacTestingAttributePipe],
11244
+ },] }
11245
+ ];
11246
+
10921
11247
  /**
10922
11248
  * Model für Sprachen
10923
11249
  */
@@ -10936,7 +11262,7 @@ SACCommonListboxOptionModule.decorators = [
10936
11262
  { type: NgModule, args: [{
10937
11263
  declarations: [],
10938
11264
  imports: [],
10939
- exports: []
11265
+ exports: [],
10940
11266
  },] }
10941
11267
  ];
10942
11268
 
@@ -10948,5 +11274,5 @@ SACCommonListboxOptionModule.decorators = [
10948
11274
  * Generated bundle index. Do not edit.
10949
11275
  */
10950
11276
 
10951
- export { ControlHeight, GridResponse, IconType, Interpolation, LanguageModel, PagerData, PagerRequest, Positioning, SACCONFIGURATION_SERVICE, SACCommonListboxOptionModule, SACFILEBROWSER_SERVICE, SACICON_SERVICE, SACLANGUAGE_SERVICE, SACLOCALISATION_SERVICE, SACVALIDATIONKEY_SERVICE, SacAbstractConfigurationService, SacAbstractFileBrowserService, SacAbstractIconService, SacAbstractLanguageService, SacAbstractLocalisationService, SacBaseDateTimeControl, SacBaseListControl, SacBaseModelControl, SacBaseSelectControl, SacButtonCommon, SacCheckboxCommon, SacConfirmButton, SacConfirmCommon, SacContextMenuContrainerCommon, SacContextmenuAnchorCommon, SacContextmenuCommon, SacContextmenuItemButtonCommon, SacContextmenuItemCommon, SacDateCommon, SacDateSelectorCommon, SacDateTimeCommon, SacDialogCommon, SacDropdownCommon, SacDropdownOptionCommon, SacDropzoneMultipleCommon, SacDropzoneSingleCommon, SacFileBrowserCommon, SacFormCommon, SacFormLayoutCommon, SacGridButtonCommon, SacGridColumnActionCommon, SacGridColumnBaseCommon, SacGridColumnCommon, SacGridCommon, SacGridImageCommon, SacInputAreaCommon, SacInputBase, SacInputCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputEmailCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacListboxCommon, SacListboxOptionCommon, SacMultilanguageInputAreaCommon, SacMultilanguageInputCommon, SacPagingCommon, SacRadiobuttonCommon, SacRadiobuttonsCommon, SacStaticFormContainerCommon, SacStaticLabelCommon, SacTabCommon, SacTabItemCommon, SacTimeCommon, SacTinyMceCommon, SacTooltipCommon, SacTreeviewCommon, SacUploadBase, SacUploadFile, SacUploadMultipleCommon, SacUploadSingleCommon, SacValidationSummaryCommon, SacWizardCommon, SacWizardItemCommon, ServiceConfirmCommon, SortDescriptor, SortOrder, TooltipPosition, Validation, ValidationErrorItem, convertToBoolean, convertToNumber, isDefined, mapToObject, positionElements, positionService };
11277
+ export { ControlHeight, GridResponse, IconType, Interpolation, LanguageModel, PagerData, PagerRequest, Positioning, SACCONFIGURATION_SERVICE, SACCommonListboxOptionModule, SACCommonUtliltiesModule, SACFILEBROWSER_SERVICE, SACICON_SERVICE, SACLANGUAGE_SERVICE, SACLOCALISATION_SERVICE, SACVALIDATIONKEY_SERVICE, SacAbstractConfigurationService, SacAbstractFileBrowserService, SacAbstractIconService, SacAbstractLanguageService, SacAbstractLocalisationService, SacBaseDateTimeControl, SacBaseListControl, SacBaseModelControl, SacBaseSelectControl, SacButtonCommon, SacCheckboxCommon, SacConfirmButton, SacConfirmCommon, SacContextMenuContrainerCommon, SacContextmenuAnchorCommon, SacContextmenuCommon, SacContextmenuItemButtonCommon, SacContextmenuItemCommon, SacDateCommon, SacDateSelectorCommon, SacDateTimeCommon, SacDialogCommon, SacDropdownCommon, SacDropdownOptionCommon, SacDropzoneMultipleCommon, SacDropzoneSingleCommon, SacFileBrowserCommon, SacFormCommon, SacFormLayoutCommon, SacGridButtonCommon, SacGridColumnActionCommon, SacGridColumnBaseCommon, SacGridColumnCommon, SacGridCommon, SacGridImageCommon, SacInputAreaCommon, SacInputBase, SacInputCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputEmailCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacListboxCommon, SacListboxOptionCommon, SacMultilanguageInputAreaCommon, SacMultilanguageInputCommon, SacPagingCommon, SacRadiobuttonCommon, SacRadiobuttonsCommon, SacStaticFormContainerCommon, SacStaticLabelCommon, SacTabCommon, SacTabItemCommon, SacTestingAttributePipe, SacTimeCommon, SacTinyMceCommon, SacTooltipCommon, SacTreeviewCommon, SacUploadBase, SacUploadFile, SacUploadMultipleCommon, SacUploadSingleCommon, SacValidationSummaryCommon, SacWizardCommon, SacWizardItemCommon, ServiceConfirmCommon, SortDescriptor, SortOrder, TooltipPosition, Validation, ValidationErrorItem, convertToBoolean, convertToNumber, isDefined, mapToObject, positionElements, positionService };
10952
11278
  //# sourceMappingURL=simpleangularcontrols-sac-common.js.map