@simpleangularcontrols/sac-common 13.0.0-rc.2 → 13.0.0-rc.3

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 (82) hide show
  1. package/common/basedatetimecontrol.d.ts +33 -33
  2. package/common/basedatetimecontrol.d.ts.map +1 -1
  3. package/common/baseinputcontrol.d.ts +9 -9
  4. package/common/baseinputcontrol.d.ts.map +1 -1
  5. package/common/basemodelcontrol.d.ts +118 -90
  6. package/common/basemodelcontrol.d.ts.map +1 -1
  7. package/common/baseuploadcontrol.d.ts +140 -140
  8. package/common/baseuploadcontrol.d.ts.map +1 -1
  9. package/controls/checkbox/checkbox.d.ts +7 -3
  10. package/controls/checkbox/checkbox.d.ts.map +1 -1
  11. package/controls/checkbox/radiobuttons.d.ts +5 -4
  12. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  13. package/controls/contextmenu/contextmenu.d.ts +42 -42
  14. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  15. package/controls/contextmenu/contextmenuanchor.d.ts +2 -2
  16. package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
  17. package/controls/contextmenu/contextmenucontainer.d.ts +2 -2
  18. package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
  19. package/controls/datetime/date.d.ts +7 -7
  20. package/controls/datetime/date.d.ts.map +1 -1
  21. package/controls/datetime/datetime.d.ts +7 -7
  22. package/controls/datetime/datetime.d.ts.map +1 -1
  23. package/controls/datetime/time.d.ts +7 -7
  24. package/controls/datetime/time.d.ts.map +1 -1
  25. package/controls/form/form.d.ts +7 -43
  26. package/controls/form/form.d.ts.map +1 -1
  27. package/controls/input/inputdecimal.d.ts +21 -21
  28. package/controls/input/inputdecimal.d.ts.map +1 -1
  29. package/controls/layout/formlayout.d.ts +45 -0
  30. package/controls/layout/formlayout.d.ts.map +1 -0
  31. package/controls/layout/formlayout.ngfactory.d.ts +4 -0
  32. package/controls/layout/formlayout.ngfactory.d.ts.map +1 -0
  33. package/controls/layout/formlayout.ngsummary.d.ts +2 -0
  34. package/controls/layout/formlayout.ngsummary.d.ts.map +1 -0
  35. package/controls/list/dropdown.d.ts +45 -45
  36. package/controls/list/dropdown.d.ts.map +1 -1
  37. package/controls/multilanguage/multilanguageinput.d.ts +5 -4
  38. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  39. package/controls/multilanguage/multilanguageinputarea.d.ts +5 -4
  40. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  41. package/controls/tinymce/tinymce.d.ts +63 -63
  42. package/controls/tinymce/tinymce.d.ts.map +1 -1
  43. package/esm2020/common/basedatetimecontrol.mjs +75 -81
  44. package/esm2020/common/baseinputcontrol.mjs +20 -20
  45. package/esm2020/common/basemodelcontrol.mjs +290 -211
  46. package/esm2020/common/baseuploadcontrol.mjs +208 -207
  47. package/esm2020/controls/checkbox/checkbox.mjs +11 -5
  48. package/esm2020/controls/checkbox/radiobuttons.mjs +13 -12
  49. package/esm2020/controls/contextmenu/contextmenu.mjs +75 -65
  50. package/esm2020/controls/contextmenu/contextmenuanchor.mjs +6 -4
  51. package/esm2020/controls/contextmenu/contextmenucontainer.mjs +6 -4
  52. package/esm2020/controls/datetime/date.mjs +12 -12
  53. package/esm2020/controls/datetime/datetime.mjs +15 -15
  54. package/esm2020/controls/datetime/time.mjs +15 -15
  55. package/esm2020/controls/form/form.mjs +17 -71
  56. package/esm2020/controls/input/inputdecimal.mjs +58 -53
  57. package/esm2020/controls/layout/formlayout.mjs +72 -0
  58. package/esm2020/controls/layout/formlayout.ngfactory.mjs +4 -0
  59. package/esm2020/controls/layout/formlayout.ngsummary.mjs +2 -0
  60. package/esm2020/controls/list/dropdown.mjs +104 -85
  61. package/esm2020/controls/multilanguage/multilanguageinput.mjs +10 -9
  62. package/esm2020/controls/multilanguage/multilanguageinputarea.mjs +10 -9
  63. package/esm2020/controls/tinymce/tinymce.mjs +84 -77
  64. package/esm2020/interfaces/ISacLabelSizes.mjs +2 -0
  65. package/esm2020/interfaces/ISacLabelSizes.ngfactory.mjs +2 -0
  66. package/esm2020/interfaces/ISacLabelSizes.ngsummary.mjs +2 -0
  67. package/esm2020/public_api.mjs +20 -18
  68. package/fesm2015/simpleangularcontrols-sac-common.mjs +1971 -1825
  69. package/fesm2015/simpleangularcontrols-sac-common.mjs.map +1 -1
  70. package/fesm2020/simpleangularcontrols-sac-common.mjs +1969 -1824
  71. package/fesm2020/simpleangularcontrols-sac-common.mjs.map +1 -1
  72. package/interfaces/ISacLabelSizes.d.ts +27 -0
  73. package/interfaces/ISacLabelSizes.d.ts.map +1 -0
  74. package/interfaces/ISacLabelSizes.ngfactory.d.ts +2 -0
  75. package/interfaces/ISacLabelSizes.ngfactory.d.ts.map +1 -0
  76. package/interfaces/ISacLabelSizes.ngsummary.d.ts +2 -0
  77. package/interfaces/ISacLabelSizes.ngsummary.d.ts.map +1 -0
  78. package/package.json +1 -1
  79. package/public_api.d.ts +19 -17
  80. package/public_api.d.ts.map +1 -1
  81. package/simpleangularcontrols-sac-common-13.0.0-rc.3.tgz +0 -0
  82. package/simpleangularcontrols-sac-common-13.0.0-rc.2.tgz +0 -0
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Directive, Input, Output, ViewChild, HostListener, InjectionToken, Injectable, Host, ViewChildren, TemplateRef, ContentChild, Inject, NgModule } from '@angular/core';
2
+ import { EventEmitter, Directive, Input, Output, InjectionToken, Injectable, Host, ViewChild, HostListener, ViewChildren, TemplateRef, ContentChild, Inject, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
- import { FormGroup, NgControl, FormControlName, FormGroupDirective, Validators } from '@angular/forms';
4
+ import { NgControl, FormControlName, FormGroupDirective, Validators, FormGroup } from '@angular/forms';
5
5
  import { Observable, of } from 'rxjs';
6
6
  import * as moment_ from 'moment';
7
7
  import moment___default from 'moment';
@@ -151,225 +151,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
151
151
  type: Output
152
152
  }] } });
153
153
 
154
- /**
155
- * Base Komponente für Dialog
156
- */
157
- class SacDialogCommon {
158
- // #endregion
159
- // #region Constructor
160
- /**
161
- * Konstruktor
162
- * Inject des Formulars
163
- */
164
- constructor(cdRef) {
165
- this.cdRef = cdRef;
166
- this.hasSetBodyTag = false;
167
- /**
168
- * Boolean Property definiert ob das Dialog angezeigt wird
169
- */
170
- this._show = false;
171
- /**
172
- * Das property enthielt (wenn überhaupt gesetzt) entweder keywords für sizing oder custom css Klassen.
173
- * Die akzeptabel keywordssind: 'small', 'large', 'extralarge', 'medium', ''.
174
- */
175
- this._size = '';
176
- // #region Properties
177
- /**
178
- * Input Property. Erhält den Title des Dialog. Default Value: 'Dialog'.
179
- */
180
- this.title = 'Dialog';
181
- /**
182
- * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch ESC geschlossen werden. Default ist true.
183
- */
184
- this.allowesc = true;
185
- /**
186
- * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch click außerhalb des Dialog-Fenster geschlossen werden. Default ist true.
187
- */
188
- this.backdrop = true;
189
- /**
190
- * Input Property. Erhält den Namen des Dialog - benutzt für das ID. Default Value: ''
191
- */
192
- this.name = '';
193
- /**
194
- * Steuert ob im Header des Dialogs ein Button angezeigt wird.
195
- */
196
- this.closebutton = true;
197
- /**
198
- * Input Property. Erhält die Breite des Dialog
199
- */
200
- this.width = null;
201
- /**
202
- * Definiert eine feste Höhe beim Dialog.
203
- */
204
- this.height = null;
205
- /**
206
- * Output Emitter. Wird aufgerufen, wenn das Wert des _show property geändert ist - damait das Dialog geöfnet/geschlossen wird.
207
- */
208
- this.isvisibleChange = new EventEmitter();
209
- }
210
- /**
211
- * Implementation als Setter, da mit ngIf das Element bei Unsichtbarkeit UNDEFINED ist.
212
- */
213
- set dialogElementSetter(content) {
214
- this.dialogElement = content;
215
- }
216
- /**
217
- * Das Input akzeptiert sowohl default size-css-Klassen als auch custom Klassen.
218
- * case insensitive.
219
- * Die akzeptabel default-size-Klassen sind: 'small', 'large', 'extralarge', 'medium', ''.
220
- * Wenn size ist NICHT gesetzt (oder 'medium' oder ''), default ist in medium size: max-width 500px.
221
- */
222
- set size(v) {
223
- v = v.toLowerCase();
224
- this._size = v;
225
- }
226
- /**
227
- * Setter. Erhält das boolen Wert des _show property
228
- */
229
- set isvisible(v) {
230
- if (v &&
231
- !this.hasSetBodyTag &&
232
- !document.body.classList.contains('modal-open')) {
233
- document.body.classList.add('modal-open');
234
- this.hasSetBodyTag = true;
235
- }
236
- if (!v &&
237
- this.hasSetBodyTag &&
238
- document.body.classList.contains('modal-open')) {
239
- document.body.classList.remove('modal-open');
240
- this.hasSetBodyTag = false;
241
- }
242
- this._show = v;
243
- }
244
- /**
245
- * Getter. Ergibt das boolen Wert des _show property
246
- */
247
- get isvisible() {
248
- return this._show;
249
- }
250
- /**
251
- * Die Funktion prüft ob es ein default css classe für Size des Dialog durch den size Input gesetzt wurde.
252
- */
253
- issetdefaultsize() {
254
- let result = false;
255
- switch (this._size) {
256
- case 'small':
257
- result = true;
258
- break;
259
- case 'medium':
260
- result = true;
261
- break;
262
- case 'large':
263
- result = true;
264
- break;
265
- case 'extralarge':
266
- result = true;
267
- break;
268
- case '':
269
- result = true;
270
- break;
271
- }
272
- return result;
273
- }
274
- // #endregion
275
- /**
276
- * Methode wenn Componente entfernt wird
277
- */
278
- ngOnDestroy() {
279
- if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {
280
- document.body.classList.remove('modal-open');
281
- this.hasSetBodyTag = false;
282
- }
283
- }
284
- // #region Methods
285
- /**
286
- * Die Methode setz den Wert des _show property auf true
287
- */
288
- show() {
289
- this._show = true;
290
- if (!this.hasSetBodyTag &&
291
- !document.body.classList.contains('modal-open')) {
292
- document.body.classList.add('modal-open');
293
- this.hasSetBodyTag = true;
294
- }
295
- this.isvisibleChange.emit(this._show);
296
- }
297
- /**
298
- * Die Methode setz den Wert des _show property auf false
299
- */
300
- hide() {
301
- if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {
302
- document.body.classList.remove('modal-open');
303
- this.hasSetBodyTag = false;
304
- }
305
- this._show = false;
306
- this.isvisibleChange.emit(this._show);
307
- }
308
- /**
309
- * Getter for ChangeDetector.
310
- */
311
- get ChangeDetector() {
312
- return this.cdRef;
313
- }
314
- // #endregion
315
- // #region Host Actions
316
- /**
317
- * Allow Close by Click outside Dialog
318
- */
319
- onClick(event) {
320
- if (this.allowesc === false ||
321
- (this.dialogElement !== null &&
322
- this.dialogElement !== undefined &&
323
- event.target !== this.dialogElement.nativeElement)) {
324
- return;
325
- }
326
- this.hide();
327
- }
328
- /**
329
- * Allow Close by ESC
330
- */
331
- onKeydownHandler(event) {
332
- const ESCAPE_KEYCODE = 'Escape';
333
- if (this.allowesc === true && event.key === ESCAPE_KEYCODE) {
334
- this.hide();
335
- }
336
- }
337
- }
338
- SacDialogCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDialogCommon, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
339
- SacDialogCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDialogCommon, inputs: { title: "title", allowesc: "allowesc", backdrop: "backdrop", name: "name", closebutton: "closebutton", width: "width", height: "height", size: "size", isvisible: "isvisible" }, outputs: { isvisibleChange: "isvisibleChange" }, host: { listeners: { "click": "onClick($event)", "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "dialogElementSetter", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0 });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDialogCommon, decorators: [{
341
- type: Directive
342
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { dialogElementSetter: [{
343
- type: ViewChild,
344
- args: ['dialog', { static: false }]
345
- }], title: [{
346
- type: Input
347
- }], allowesc: [{
348
- type: Input
349
- }], backdrop: [{
350
- type: Input
351
- }], name: [{
352
- type: Input
353
- }], closebutton: [{
354
- type: Input
355
- }], width: [{
356
- type: Input
357
- }], height: [{
358
- type: Input
359
- }], size: [{
360
- type: Input
361
- }], isvisibleChange: [{
362
- type: Output
363
- }], isvisible: [{
364
- type: Input
365
- }], onClick: [{
366
- type: HostListener,
367
- args: ['click', ['$event']]
368
- }], onKeydownHandler: [{
369
- type: HostListener,
370
- args: ['document:keydown', ['$event']]
371
- }] } });
372
-
373
154
  /**
374
155
  * Prüft ob ein Objekt Defined ist
375
156
  * @param value Objekt
@@ -889,161 +670,73 @@ function mapToObject(map) {
889
670
  return obj;
890
671
  }
891
672
 
892
- /**
893
- * Base Komponente für SacFormular
673
+ /***
674
+ * base component for form options
894
675
  */
895
- class SacFormCommon {
896
- /**
897
- * Konstruktor
898
- * @param form Instanz von NgForm
899
- */
900
- constructor(form) {
901
- this.form = form;
676
+ class SacFormLayoutCommon {
677
+ constructor() {
678
+ // #region Properties
902
679
  /**
903
- * Inline Errors für das Formular
680
+ * defines that error messages are displayed under the controls
904
681
  */
905
- this._inlineerrorenabled = null;
682
+ this.inlineError = true;
906
683
  /**
907
- * Default Label Size for Form
684
+ * defines that the labels are displayed as adaptive labels
908
685
  */
909
- this.labelsize = 3;
686
+ this.isAdaptiveLabel = false;
910
687
  /**
911
- * Kontroliert, ob das Label adaptive ist
688
+ * default label size for medium devices
912
689
  */
913
- this.isadaptivelabel = false;
690
+ this.labelSizeMd = null;
914
691
  /**
915
- * Type des Forms
692
+ * default label size for small devices
916
693
  */
917
- this.orientation = 'horizontal';
694
+ this.labelSizeSm = null;
918
695
  /**
919
- * Standardwert wann die Werte via NgModel aktualisiert werden
696
+ * default label column size
920
697
  */
921
- this._updateon = 'change';
922
- this.form.options = { updateOn: this._updateon };
698
+ this.labelSizeXs = null;
699
+ /**
700
+ * default label size for extra extra large devices
701
+ */
702
+ this.labelSizeXxl = null;
703
+ /**
704
+ * default labe size for large devices
705
+ */
706
+ this.labelSizeLg = null;
707
+ /**
708
+ * default label size for extra large devices
709
+ */
710
+ this.labelSizeXl = null;
923
711
  }
712
+ // #endregion Properties
713
+ // #region Public Getters And Setters
924
714
  /**
925
- * Definiert, wenn das Model geupdatet wird
715
+ * Returns whether the inline error messages for the form are active.
926
716
  */
927
- set updateon(v) {
928
- this._updateon = v;
929
- this.form.options.updateOn = v;
930
- }
931
- get updateon() {
932
- return this._updateon;
933
- }
934
- /**
935
- * Aktiviert oder Deaktiviert die Inline Errors für das Control
936
- */
937
- set inlineerrorenabled(value) {
938
- if (value === null || value === undefined) {
939
- this._inlineerrorenabled = null;
940
- }
941
- else {
942
- this._inlineerrorenabled = convertToBoolean(value);
943
- }
944
- }
945
- /**
946
- * Aktiviert oder Deaktiviert die Inline Errors für das Control
947
- */
948
- get inlineerrorenabled() {
949
- return this._inlineerrorenabled;
950
- }
951
- /**
952
- * Vertikale oder horizontale Orientierung des Formulars zurück
953
- */
954
- getOrientation() {
955
- switch (this.orientation.toLowerCase()) {
956
- case 'horizontal':
957
- return 'horizontal';
958
- case 'vertical':
959
- return 'vertical';
960
- case 'none':
961
- return 'none';
962
- default:
963
- throw new Error('Invalid formtype at SacFormCommon. Valid values are horizontal, vertical, none');
964
- }
965
- }
966
- /**
967
- * Gibt die NgForm Instanz zurück
968
- */
969
- getForm() {
970
- return this.form;
971
- }
972
- /**
973
- * Markiert alle Controls innerhalb des Formulares als Touched
974
- */
975
- markAsTouched() {
976
- if (this.form && this.form.invalid) {
977
- this.markAsTouchedInternal(this.form.controls);
978
- }
979
- }
980
- /**
981
- * Aktualisiert die Werte und den Gültigkeitsstatus des Formulars
982
- */
983
- updateValueAndValidity(markAsTouched = true) {
984
- // Update all Controls
985
- this.updateValueAndValidityInternal(this.form.controls);
986
- // Update Main Form
987
- this.getForm().form.updateValueAndValidity();
988
- // Mark all Controls as Touched
989
- if (markAsTouched) {
990
- this.markAsTouched();
991
- }
992
- }
993
- /**
994
- * Markiert alle Controls inkl. dem Tree als Touched
995
- * @param controls Controls Collection
996
- */
997
- markAsTouchedInternal(controls) {
998
- const keyList = Object.keys(controls);
999
- for (const field of keyList) {
1000
- const control = controls[field];
1001
- if (control instanceof FormGroup) {
1002
- this.markAsTouchedInternal(control.controls);
1003
- }
1004
- else {
1005
- control.markAsTouched({ onlySelf: true });
1006
- }
1007
- }
1008
- }
1009
- /**
1010
- * Aktualisiert die Werte und die gültigkeit des Formulars
1011
- * @param controls Controls Collection
1012
- */
1013
- updateValueAndValidityInternal(controls) {
1014
- const keyList = Object.keys(controls);
1015
- for (const field of keyList) {
1016
- const control = controls[field];
1017
- if (control instanceof FormGroup) {
1018
- this.updateValueAndValidityInternal(control.controls);
1019
- }
1020
- else {
1021
- control.updateValueAndValidity({ onlySelf: true });
1022
- }
1023
- }
1024
- }
1025
- /**
1026
- * Gibt zurück, ob die Inline Error Meldungen für das Formular aktiv sind.
1027
- */
1028
- get IsInlineErrorEnabled() {
1029
- return this._inlineerrorenabled !== false;
717
+ get IsInlineErrorEnabled() {
718
+ return this.inlineError !== false;
1030
719
  }
1031
720
  }
1032
- SacFormCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacFormCommon, deps: [{ token: i1.NgForm }], target: i0.ɵɵFactoryTarget.Directive });
1033
- SacFormCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacFormCommon, inputs: { SacFormular: "SacFormular", labelsize: "labelsize", isadaptivelabel: "isadaptivelabel", orientation: "orientation", updateon: "updateon", inlineerrorenabled: "inlineerrorenabled" }, ngImport: i0 });
1034
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacFormCommon, decorators: [{
721
+ SacFormLayoutCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacFormLayoutCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
722
+ SacFormLayoutCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacFormLayoutCommon, inputs: { inlineError: "inlineError", isAdaptiveLabel: "isAdaptiveLabel", labelSizeMd: "labelSizeMd", labelSizeSm: "labelSizeSm", labelSizeXs: "labelSizeXs", labelSizeXxl: "labelSizeXxl", labelSizeLg: "labelSizeLg", labelSizeXl: "labelSizeXl" }, ngImport: i0 });
723
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacFormLayoutCommon, decorators: [{
1035
724
  type: Directive
1036
- }], ctorParameters: function () { return [{ type: i1.NgForm }]; }, propDecorators: { SacFormular: [{
725
+ }], propDecorators: { inlineError: [{
1037
726
  type: Input
1038
- }], labelsize: [{
727
+ }], isAdaptiveLabel: [{
1039
728
  type: Input
1040
- }], isadaptivelabel: [{
729
+ }], labelSizeMd: [{
1041
730
  type: Input
1042
- }], orientation: [{
731
+ }], labelSizeSm: [{
1043
732
  type: Input
1044
- }], updateon: [{
733
+ }], labelSizeXs: [{
1045
734
  type: Input
1046
- }], inlineerrorenabled: [{
735
+ }], labelSizeXxl: [{
736
+ type: Input
737
+ }], labelSizeLg: [{
738
+ type: Input
739
+ }], labelSizeXl: [{
1047
740
  type: Input
1048
741
  }] } });
1049
742
 
@@ -1051,65 +744,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
1051
744
  * Abstract Klasse für SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit
1052
745
  */
1053
746
  class SacBaseModelControl {
1054
- // #endregion
1055
- // #region Constructor
747
+ // #endregion Properties
748
+ // #region Constructors
1056
749
  /**
1057
- * Konstruktor
1058
- * Inject des Formulars
1059
- * @parent SacFormCommon
1060
- * @injector Injector
750
+ * Constructor
751
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
752
+ * @param injector Injector for injecting services
1061
753
  */
1062
- constructor(parent, injector) {
754
+ constructor(formlayout, injector) {
1063
755
  this.injector = injector;
756
+ // #region Properties
757
+ /**
758
+ * Inline Errors für das Control
759
+ */
760
+ this._inlineerrorenabled = null;
761
+ this._label = '';
762
+ /**
763
+ * Boolean Property dirty; default Wert - false
764
+ */
765
+ this._dirty = false;
1064
766
  /**
1065
767
  * SacModel Form ist disabled
1066
768
  */
1067
769
  this._disabledForm = false;
1068
- this._label = '';
1069
- // #endregion
1070
- // #region Properties
1071
770
  /**
1072
- * Name des Controls
771
+ * Boolean Property touched; default Wert - false
1073
772
  */
1074
- this.name = '';
773
+ this._touched = false;
1075
774
  /**
1076
- * Definiert die Labelgröse
775
+ * Interne Variable, die den Wert des Controls hält
1077
776
  */
1078
- this.labelsize = undefined;
777
+ this._value = null;
1079
778
  /**
1080
- * Deaktiviert das Label im Template
779
+ * Form layout instance if exists
1081
780
  */
1082
- this.disablelabel = false;
781
+ this.formlayout = null;
1083
782
  /**
1084
783
  * Deaktiviert das Input Control
1085
784
  */
1086
785
  this.disabled = false;
1087
786
  /**
1088
- * Kontroliert, ob das Label adaptive ist
787
+ * Deaktiviert das Label im Template
1089
788
  */
1090
- this.isadaptivelabel = undefined;
789
+ this.disablelabel = false;
1091
790
  /**
1092
- * Definiert, ob das Control Sprachspezifisch ist
791
+ * defines that error messages are displayed under the controls
1093
792
  */
1094
- this.islanguagespecific = false;
793
+ this.inlineError = true;
1095
794
  /**
1096
- * Interne Variable, die den Wert des Controls hält
795
+ * defines that the labels are displayed as adaptive labels
1097
796
  */
1098
- this._value = null;
797
+ this.isAdaptiveLabel = false;
1099
798
  /**
1100
- * Boolean Property dirty; default Wert - false
799
+ * default label size for medium devices
1101
800
  */
1102
- this._dirty = false;
801
+ this.labelSizeMd = null;
1103
802
  /**
1104
- * Boolean Property touched; default Wert - false
803
+ * default label size for small devices
1105
804
  */
1106
- this._touched = false;
805
+ this.labelSizeSm = null;
1107
806
  /**
1108
- * Inline Errors für das Control
807
+ * default label column size
1109
808
  */
1110
- this._inlineerrorenabled = null;
1111
- // #endregion
1112
- // #region Implementation ControlValueAccessor
809
+ this.labelSizeXs = null;
810
+ /**
811
+ * default label size for extra extra large devices
812
+ */
813
+ this.labelSizeXxl = null;
814
+ /**
815
+ * default labe size for large devices
816
+ */
817
+ this.labelSizeLg = null;
818
+ /**
819
+ * default label size for extra large devices
820
+ */
821
+ this.labelSizeXl = null;
822
+ /**
823
+ * Name des Controls
824
+ */
825
+ this.name = '';
1113
826
  /**
1114
827
  * Leere Implementation von "propagateChange". Muss gemacht werden, damit kein Fehler entsteht
1115
828
  */
@@ -1118,21 +831,41 @@ class SacBaseModelControl {
1118
831
  * Leere Implementation von "propagateTouch". Muss gemacht werden, damit kein Fehler entsteht
1119
832
  */
1120
833
  this.propagateTouch = () => { };
1121
- this.parent = parent;
834
+ this.formlayout = formlayout;
1122
835
  this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService());
1123
836
  }
837
+ // #endregion Constructors
838
+ // #region Public Getters And Setters
1124
839
  /**
1125
- * Definiert den Label Text
840
+ * Methode ergibt Boolean Wert für dirty
1126
841
  */
1127
- set label(v) {
1128
- this._label = v;
1129
- this.UpdateLabelToControl();
842
+ get dirty() {
843
+ if (this.ngControl !== null) {
844
+ this._dirty = this.ngControl.dirty;
845
+ }
846
+ return this._dirty;
847
+ }
848
+ get inlineerrorenabled() {
849
+ return this._inlineerrorenabled;
1130
850
  }
1131
851
  /**
1132
- * Definiert den Label Text
852
+ * Aktiviert oder Deaktiviert die Inline Errors für das Control
1133
853
  */
1134
- get label() {
1135
- return this._label;
854
+ set inlineerrorenabled(value) {
855
+ if (value === null || value === undefined) {
856
+ this._inlineerrorenabled = null;
857
+ }
858
+ else {
859
+ this._inlineerrorenabled = convertToBoolean(value);
860
+ }
861
+ }
862
+ /**
863
+ * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist
864
+ */
865
+ get invalid() {
866
+ return (this.ngControl !== undefined &&
867
+ this.ngControl !== null &&
868
+ this.ngControl.invalid);
1136
869
  }
1137
870
  /**
1138
871
  * Definiert ob das Control disabled ist
@@ -1140,74 +873,59 @@ class SacBaseModelControl {
1140
873
  get isdisabled() {
1141
874
  return this._disabledForm || this.disabled;
1142
875
  }
1143
- // #endregion
1144
- // #region Control Events
1145
876
  /**
1146
- * Init Event
877
+ * Returns whether the inline error messages are active for this control.
1147
878
  */
1148
- ngOnInit() {
879
+ get isinlineerrorenabled() {
1149
880
  var _a, _b;
1150
- // receive form via formcontrolname or formcontrol instance
1151
- const formControl = this.injector.get(NgControl, null);
1152
- if (formControl instanceof FormControlName) {
1153
- const form = this.injector.get(FormGroupDirective, null);
1154
- this.ngControl = form.getControl(formControl);
1155
- }
1156
- else {
1157
- this.ngControl = formControl.control;
1158
- }
1159
- this.UpdateLabelToControl();
1160
- /**
1161
- * Label Size von Formular lesen
1162
- */
1163
- if (this.labelsize === undefined) {
1164
- if (((_a = this.parent) === null || _a === void 0 ? void 0 : _a.labelsize) !== undefined) {
1165
- this.labelsize = this.parent.labelsize;
1166
- }
1167
- else {
1168
- this.labelsize = 4;
1169
- }
1170
- }
1171
- /**
1172
- * Adaptive Label from Form
1173
- */
1174
- if (this.isadaptivelabel === undefined) {
1175
- if (((_b = this.parent) === null || _b === void 0 ? void 0 : _b.isadaptivelabel) !== undefined) {
1176
- this.isadaptivelabel = this.parent.isadaptivelabel;
1177
- }
1178
- else {
1179
- this.isadaptivelabel = false;
1180
- }
881
+ if (((_a = this.formlayout) === null || _a === void 0 ? void 0 : _a.IsInlineErrorEnabled) === null ||
882
+ ((_b = this.formlayout) === null || _b === void 0 ? void 0 : _b.IsInlineErrorEnabled) === undefined) {
883
+ return this._inlineerrorenabled;
1181
884
  }
1182
- this.OnClassInit();
885
+ return (this.formlayout.IsInlineErrorEnabled !== false &&
886
+ this._inlineerrorenabled !== false);
1183
887
  }
1184
888
  /**
1185
- * Methode, damit andere Controls änderungen im Control mitbekommen können
1186
- * Zur Änderungsinfo die Methode propagateChange aufrufen.
889
+ * Definiert den Label Text
1187
890
  */
1188
- registerOnChange(fn) {
1189
- this.propagateChange = (obj) => fn(obj);
891
+ get label() {
892
+ return this._label;
1190
893
  }
1191
894
  /**
1192
- * Methode, damit andere Controls änderungen mitbekommen, wenn das Control aktiviert (Focus) wird.
895
+ * Definiert den Label Text
1193
896
  */
1194
- registerOnTouched(fn) {
1195
- this.propagateTouch = (obj) => fn(obj);
897
+ set label(v) {
898
+ this._label = v;
899
+ this.UpdateLabelToControl();
1196
900
  }
1197
901
  /**
1198
- * Methode zum schreiben von Werten aus dem Model in das Control
902
+ * returns an object with all label sizes. These values can then be transferred to corresponding CSS classes using a pipe
1199
903
  */
1200
- writeValue(value) {
1201
- this._value = value;
904
+ get labelSizes() {
905
+ return {
906
+ labelSizeSm: this.labelSizeSm,
907
+ labelSizeMd: this.labelSizeMd,
908
+ labelSizeXs: this.labelSizeXs,
909
+ labelSizeXl: this.labelSizeXl,
910
+ labelSizeXxl: this.labelSizeXxl,
911
+ labelSizeLg: this.labelSizeLg,
912
+ };
1202
913
  }
1203
914
  /**
1204
- * Setzt das Control auf Disabled
915
+ * Methode ergibt Boolean Wert für touched
1205
916
  */
1206
- setDisabledState(isDisabled) {
1207
- this._disabledForm = isDisabled;
917
+ get touched() {
918
+ if (this.ngControl !== null) {
919
+ this._touched = this.ngControl.touched;
920
+ }
921
+ return this._touched;
922
+ }
923
+ /**
924
+ * Get Methode für NgModel Binding in Html Markup
925
+ */
926
+ get value() {
927
+ return this._value;
1208
928
  }
1209
- // #endregion
1210
- // #region Control Value
1211
929
  /**
1212
930
  * Set Methode für NgModel Binding in Html Markup
1213
931
  * Input wird benötigt, damit der Wert auch über das Markup gesetzt werden kann.
@@ -1219,102 +937,10 @@ class SacBaseModelControl {
1219
937
  this._value = this.ConvertInputValue(v);
1220
938
  this.propagateChange(this._value);
1221
939
  }
940
+ // #endregion Public Getters And Setters
941
+ // #region Public Methods
1222
942
  /**
1223
- * Get Methode für NgModel Binding in Html Markup
1224
- */
1225
- get value() {
1226
- return this._value;
1227
- }
1228
- /**
1229
- * Methode die den Wert des Inputs setzt
1230
- */
1231
- setValue(v) {
1232
- this.value = v;
1233
- }
1234
- // #endregion
1235
- // #region Internal Properties
1236
- /**
1237
- * Berechnet die Breite des Labels
1238
- */
1239
- get _inputsize() {
1240
- return 12 - this.labelsize;
1241
- }
1242
- // #endregion
1243
- // #region Protected Helper Methods
1244
- /**
1245
- * Method can be used to Set Properties at Class Init
1246
- */
1247
- OnClassInit() { }
1248
- /**
1249
- * Methode ergibt Decimal Symbol
1250
- */
1251
- GetDecimalSymbol() {
1252
- return '.';
1253
- }
1254
- /**
1255
- * Method can Overwriten in Parent Classes
1256
- * @param value Wert welcher in den korrekten Typ konvertiert werden soll
1257
- * @returns Wert im korrekten Typ
1258
- */
1259
- ConvertInputValue(value) {
1260
- return value;
1261
- }
1262
- UpdateLabelToControl() {
1263
- // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
1264
- if (this.ngControl) {
1265
- this.ngControl.controllabel = this.label;
1266
- }
1267
- }
1268
- // #endregion
1269
- //#region Validation Base
1270
- /**
1271
- * Validator Methode
1272
- */
1273
- validate(c) {
1274
- const error = this.validateData(c);
1275
- return error;
1276
- }
1277
- /**
1278
- * Methode registriert Änderungen bei der Validierung
1279
- */
1280
- registerOnValidatorChange(fn) {
1281
- this._onChange = fn;
1282
- }
1283
- /**
1284
- * Methode ergibt Boolean Wert für dirty
1285
- */
1286
- get dirty() {
1287
- if (this.ngControl !== null) {
1288
- this._dirty = this.ngControl.dirty;
1289
- }
1290
- return this._dirty;
1291
- }
1292
- /**
1293
- * Methode ergibt Boolean Wert für touched
1294
- */
1295
- get touched() {
1296
- if (this.ngControl !== null) {
1297
- this._touched = this.ngControl.touched;
1298
- }
1299
- return this._touched;
1300
- }
1301
- /**
1302
- * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist
1303
- */
1304
- get invalid() {
1305
- return (this.ngControl !== undefined &&
1306
- this.ngControl !== null &&
1307
- this.ngControl.invalid);
1308
- }
1309
- /**
1310
- * Methode ergibt boolean touched = true
1311
- */
1312
- onTouch() {
1313
- this._touched = true;
1314
- this.propagateTouch();
1315
- }
1316
- /**
1317
- * Methode ergibt Error anhand von gegebenen Kriterien
943
+ * Methode ergibt Error anhand von gegebenen Kriterien
1318
944
  */
1319
945
  GetErrorMessage() {
1320
946
  if (this.ngControl.errors === undefined || this.ngControl.errors === null) {
@@ -1349,66 +975,213 @@ class SacBaseModelControl {
1349
975
  return this.lngResourceService.GetString(errorItem.errorMessageKey, parameters);
1350
976
  }
1351
977
  /**
1352
- * Aktualisiert den NgModel Wert und die Gültigkeit des Validators des Controls
978
+ * Init Event
1353
979
  */
1354
- UpdateValueAndValidity() {
1355
- if (this.ngControl) {
1356
- this.ngControl.updateValueAndValidity({ onlySelf: true });
980
+ ngOnInit() {
981
+ // receive form via formcontrolname or formcontrol instance
982
+ const formControl = this.injector.get(NgControl, null);
983
+ if (formControl instanceof FormControlName) {
984
+ const form = this.injector.get(FormGroupDirective, null);
985
+ this.ngControl = form.getControl(formControl);
986
+ }
987
+ else {
988
+ if (formControl) {
989
+ this.ngControl = formControl.control;
990
+ }
1357
991
  }
992
+ this.UpdateLabelToControl();
993
+ // set label sizes from formlayout directive
994
+ this.setLabelSizes();
995
+ // set adaptive label property from formlayout directive
996
+ this.setIsAdaptiveLabel();
997
+ this.OnClassInit();
1358
998
  }
1359
999
  /**
1360
- * Aktiviert oder Deaktiviert die Inline Errors für das Control
1000
+ * Set label sizes from property or parent layout control
1361
1001
  */
1362
- set inlineerrorenabled(value) {
1363
- if (value === null || value === undefined) {
1364
- this._inlineerrorenabled = null;
1002
+ setLabelSizes() {
1003
+ var _a, _b, _c, _d, _e, _f;
1004
+ // set size extra small
1005
+ if (!this.labelSizeXs) {
1006
+ if ((_a = this.formlayout) === null || _a === void 0 ? void 0 : _a.labelSizeXs) {
1007
+ this.labelSizeXs = this.formlayout.labelSizeXs;
1008
+ }
1009
+ else {
1010
+ this.labelSizeXs = 12;
1011
+ }
1365
1012
  }
1366
- else {
1367
- this._inlineerrorenabled = convertToBoolean(value);
1013
+ // set size small
1014
+ if (!this.labelSizeSm) {
1015
+ if ((_b = this.formlayout) === null || _b === void 0 ? void 0 : _b.labelSizeSm) {
1016
+ this.labelSizeSm = this.formlayout.labelSizeSm;
1017
+ }
1018
+ else {
1019
+ this.labelSizeSm = 4;
1020
+ }
1021
+ }
1022
+ // set size medium
1023
+ if (!this.labelSizeMd) {
1024
+ if ((_c = this.formlayout) === null || _c === void 0 ? void 0 : _c.labelSizeMd) {
1025
+ this.labelSizeMd = this.formlayout.labelSizeMd;
1026
+ }
1027
+ }
1028
+ // set size large
1029
+ if (!this.labelSizeLg) {
1030
+ if ((_d = this.formlayout) === null || _d === void 0 ? void 0 : _d.labelSizeLg) {
1031
+ this.labelSizeLg = this.formlayout.labelSizeLg;
1032
+ }
1033
+ }
1034
+ // set size extra large
1035
+ if (!this.labelSizeXl) {
1036
+ if ((_e = this.formlayout) === null || _e === void 0 ? void 0 : _e.labelSizeXl) {
1037
+ this.labelSizeXl = this.formlayout.labelSizeXl;
1038
+ }
1039
+ }
1040
+ // set size extra extra large
1041
+ if (!this.labelSizeXxl) {
1042
+ if ((_f = this.formlayout) === null || _f === void 0 ? void 0 : _f.labelSizeXxl) {
1043
+ this.labelSizeXxl = this.formlayout.labelSizeXxl;
1044
+ }
1368
1045
  }
1369
1046
  }
1370
- get inlineerrorenabled() {
1371
- return this._inlineerrorenabled;
1047
+ /**
1048
+ * Set adaptive label property from parent layout control
1049
+ */
1050
+ setIsAdaptiveLabel() {
1051
+ var _a;
1052
+ if (!this.isAdaptiveLabel) {
1053
+ if (((_a = this.formlayout) === null || _a === void 0 ? void 0 : _a.isAdaptiveLabel) !== undefined) {
1054
+ this.isAdaptiveLabel = this.formlayout.isAdaptiveLabel;
1055
+ }
1056
+ else {
1057
+ this.isAdaptiveLabel = false;
1058
+ }
1059
+ }
1372
1060
  }
1373
1061
  /**
1374
- * Returns whether the inline error messages are active for this control.
1062
+ * Methode ergibt boolean touched = true
1375
1063
  */
1376
- get isinlineerrorenabled() {
1377
- var _a, _b;
1378
- if (((_a = this.parent) === null || _a === void 0 ? void 0 : _a.IsInlineErrorEnabled) === null ||
1379
- ((_b = this.parent) === null || _b === void 0 ? void 0 : _b.IsInlineErrorEnabled) === undefined) {
1380
- return this._inlineerrorenabled;
1064
+ onTouch() {
1065
+ this._touched = true;
1066
+ this.propagateTouch();
1067
+ }
1068
+ /**
1069
+ * Methode, damit andere Controls änderungen im Control mitbekommen können
1070
+ * Zur Änderungsinfo die Methode propagateChange aufrufen.
1071
+ */
1072
+ registerOnChange(fn) {
1073
+ this.propagateChange = (obj) => fn(obj);
1074
+ }
1075
+ /**
1076
+ * Methode, damit andere Controls änderungen mitbekommen, wenn das Control aktiviert (Focus) wird.
1077
+ */
1078
+ registerOnTouched(fn) {
1079
+ this.propagateTouch = (obj) => fn(obj);
1080
+ }
1081
+ /**
1082
+ * Methode registriert Änderungen bei der Validierung
1083
+ */
1084
+ registerOnValidatorChange(fn) {
1085
+ this._onChange = fn;
1086
+ }
1087
+ /**
1088
+ * Setzt das Control auf Disabled
1089
+ */
1090
+ setDisabledState(isDisabled) {
1091
+ this._disabledForm = isDisabled;
1092
+ }
1093
+ /**
1094
+ * Methode die den Wert des Inputs setzt
1095
+ */
1096
+ setValue(v) {
1097
+ this.value = v;
1098
+ }
1099
+ /**
1100
+ * Validator Methode
1101
+ */
1102
+ validate(c) {
1103
+ const error = this.validateData(c);
1104
+ return error;
1105
+ }
1106
+ /**
1107
+ * Methode zum schreiben von Werten aus dem Model in das Control
1108
+ */
1109
+ writeValue(value) {
1110
+ this._value = value;
1111
+ }
1112
+ // #endregion Public Abstract Methods
1113
+ // #region Protected Methods
1114
+ /**
1115
+ * Method can Overwriten in Parent Classes
1116
+ * @param value Wert welcher in den korrekten Typ konvertiert werden soll
1117
+ * @returns Wert im korrekten Typ
1118
+ */
1119
+ ConvertInputValue(value) {
1120
+ return value;
1121
+ }
1122
+ /**
1123
+ * Methode ergibt Decimal Symbol
1124
+ */
1125
+ GetDecimalSymbol() {
1126
+ return '.';
1127
+ }
1128
+ /**
1129
+ * Method can be used to Set Properties at Class Init
1130
+ */
1131
+ OnClassInit() { }
1132
+ /**
1133
+ * Aktualisiert den NgModel Wert und die Gültigkeit des Validators des Controls
1134
+ */
1135
+ UpdateValueAndValidity() {
1136
+ if (this.ngControl) {
1137
+ this.ngControl.updateValueAndValidity({ onlySelf: true });
1138
+ }
1139
+ }
1140
+ // #endregion Protected Methods
1141
+ // #region Private Methods
1142
+ UpdateLabelToControl() {
1143
+ // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
1144
+ if (this.ngControl) {
1145
+ this.ngControl.controllabel = this.label;
1381
1146
  }
1382
- return (this.parent.IsInlineErrorEnabled !== false &&
1383
- this._inlineerrorenabled !== false);
1384
1147
  }
1385
1148
  }
1386
- SacBaseModelControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBaseModelControl, deps: [{ token: SacFormCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
1387
- SacBaseModelControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacBaseModelControl, inputs: { name: "name", label: "label", labelsize: "labelsize", disablelabel: "disablelabel", disabled: "disabled", isadaptivelabel: "isadaptivelabel", islanguagespecific: "islanguagespecific", value: "value", inlineerrorenabled: "inlineerrorenabled" }, ngImport: i0 });
1149
+ SacBaseModelControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBaseModelControl, deps: [{ token: SacFormLayoutCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
1150
+ SacBaseModelControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacBaseModelControl, inputs: { disabled: "disabled", disablelabel: "disablelabel", inlineError: "inlineError", isAdaptiveLabel: "isAdaptiveLabel", labelSizeMd: "labelSizeMd", labelSizeSm: "labelSizeSm", labelSizeXs: "labelSizeXs", labelSizeXxl: "labelSizeXxl", labelSizeLg: "labelSizeLg", labelSizeXl: "labelSizeXl", name: "name", inlineerrorenabled: "inlineerrorenabled", label: "label", value: "value" }, ngImport: i0 });
1388
1151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBaseModelControl, decorators: [{
1389
1152
  type: Directive
1390
1153
  }], ctorParameters: function () {
1391
- return [{ type: SacFormCommon, decorators: [{
1154
+ return [{ type: SacFormLayoutCommon, decorators: [{
1392
1155
  type: Host
1393
1156
  }] }, { type: i0.Injector }];
1394
- }, propDecorators: { name: [{
1157
+ }, propDecorators: { disabled: [{
1395
1158
  type: Input
1396
- }], label: [{
1159
+ }], disablelabel: [{
1397
1160
  type: Input
1398
- }], labelsize: [{
1161
+ }], inlineError: [{
1399
1162
  type: Input
1400
- }], disablelabel: [{
1163
+ }], isAdaptiveLabel: [{
1401
1164
  type: Input
1402
- }], disabled: [{
1165
+ }], labelSizeMd: [{
1403
1166
  type: Input
1404
- }], isadaptivelabel: [{
1167
+ }], labelSizeSm: [{
1405
1168
  type: Input
1406
- }], islanguagespecific: [{
1169
+ }], labelSizeXs: [{
1407
1170
  type: Input
1408
- }], value: [{
1171
+ }], labelSizeXxl: [{
1172
+ type: Input
1173
+ }], labelSizeLg: [{
1174
+ type: Input
1175
+ }], labelSizeXl: [{
1176
+ type: Input
1177
+ }], name: [{
1409
1178
  type: Input
1410
1179
  }], inlineerrorenabled: [{
1411
1180
  type: Input
1181
+ }], label: [{
1182
+ type: Input
1183
+ }], value: [{
1184
+ type: Input
1412
1185
  }] } });
1413
1186
 
1414
1187
  /**
@@ -1418,9 +1191,13 @@ class SacCheckboxCommon extends SacBaseModelControl {
1418
1191
  constructor() {
1419
1192
  super(...arguments);
1420
1193
  /**
1421
- * Text welcher als Tooltip angezeigt wird.
1422
- */
1194
+ * Text welcher als Tooltip angezeigt wird.
1195
+ */
1423
1196
  this.tooltiptext = '';
1197
+ /**
1198
+ * Defines that the checkbox can be used in a list of checkboxes and is not handled as a single form control
1199
+ */
1200
+ this.stacked = false;
1424
1201
  }
1425
1202
  /**
1426
1203
  * Control hat keinen Validator
@@ -1430,13 +1207,15 @@ class SacCheckboxCommon extends SacBaseModelControl {
1430
1207
  }
1431
1208
  }
1432
1209
  SacCheckboxCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacCheckboxCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1433
- SacCheckboxCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacCheckboxCommon, inputs: { tooltiptext: "tooltiptext", checkboxtext: "checkboxtext" }, usesInheritance: true, ngImport: i0 });
1210
+ SacCheckboxCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacCheckboxCommon, inputs: { tooltiptext: "tooltiptext", checkboxtext: "checkboxtext", stacked: "stacked" }, usesInheritance: true, ngImport: i0 });
1434
1211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacCheckboxCommon, decorators: [{
1435
1212
  type: Directive
1436
1213
  }], propDecorators: { tooltiptext: [{
1437
1214
  type: Input
1438
1215
  }], checkboxtext: [{
1439
1216
  type: Input
1217
+ }], stacked: [{
1218
+ type: Input
1440
1219
  }] } });
1441
1220
 
1442
1221
  /**
@@ -1894,11 +1673,12 @@ class Validation {
1894
1673
  */
1895
1674
  class SacRadiobuttonsCommon extends SacBaseModelControl {
1896
1675
  /**
1897
- * Konstruktor
1898
- * Inject des Formulars
1676
+ * Constructor
1677
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
1678
+ * @param injector Injector for injecting services
1899
1679
  */
1900
- constructor(parent, injector) {
1901
- super(parent, injector);
1680
+ constructor(formlayout, injector) {
1681
+ super(formlayout, injector);
1902
1682
  /**
1903
1683
  * Radio Button Index
1904
1684
  */
@@ -1947,7 +1727,7 @@ class SacRadiobuttonsCommon extends SacBaseModelControl {
1947
1727
  writeValue(value) {
1948
1728
  super.writeValue(value);
1949
1729
  if (value !== null && value !== undefined) {
1950
- this.contentRadiobuttons.forEach(itm => {
1730
+ this.contentRadiobuttons.forEach((itm) => {
1951
1731
  itm.checked = itm.value === value;
1952
1732
  });
1953
1733
  }
@@ -1957,7 +1737,7 @@ class SacRadiobuttonsCommon extends SacBaseModelControl {
1957
1737
  * Item selektieren
1958
1738
  */
1959
1739
  SelectItem(value) {
1960
- this.contentRadiobuttons.forEach(itm => {
1740
+ this.contentRadiobuttons.forEach((itm) => {
1961
1741
  itm.checked = itm.value === value;
1962
1742
  });
1963
1743
  this.value = value;
@@ -1970,7 +1750,7 @@ class SacRadiobuttonsCommon extends SacBaseModelControl {
1970
1750
  if (radioButtons === undefined || radioButtons === null) {
1971
1751
  return false;
1972
1752
  }
1973
- return this.contentRadiobuttons.some(itm => itm.checked);
1753
+ return this.contentRadiobuttons.some((itm) => itm.checked);
1974
1754
  }
1975
1755
  /**
1976
1756
  * Validator
@@ -1984,12 +1764,12 @@ class SacRadiobuttonsCommon extends SacBaseModelControl {
1984
1764
  }
1985
1765
  }
1986
1766
  }
1987
- SacRadiobuttonsCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacRadiobuttonsCommon, deps: [{ token: SacFormCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
1767
+ SacRadiobuttonsCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacRadiobuttonsCommon, deps: [{ token: SacFormLayoutCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
1988
1768
  SacRadiobuttonsCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacRadiobuttonsCommon, inputs: { validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired" }, usesInheritance: true, ngImport: i0 });
1989
1769
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacRadiobuttonsCommon, decorators: [{
1990
1770
  type: Directive
1991
1771
  }], ctorParameters: function () {
1992
- return [{ type: SacFormCommon, decorators: [{
1772
+ return [{ type: SacFormLayoutCommon, decorators: [{
1993
1773
  type: Host
1994
1774
  }] }, { type: i0.Injector }];
1995
1775
  }, propDecorators: { validationmessagerequired: [{
@@ -2019,88 +1799,412 @@ class SacRadiobuttonCommon {
2019
1799
  /**
2020
1800
  * Unique Index für RadioButton
2021
1801
  */
2022
- this._index = null;
2023
- // Registration des Controls in SacRadioButtons Container
2024
- this.sacRadioButtons.RegisterRadioButton(this);
1802
+ this._index = null;
1803
+ // Registration des Controls in SacRadioButtons Container
1804
+ this.sacRadioButtons.RegisterRadioButton(this);
1805
+ }
1806
+ /**
1807
+ * Methode ergibt Boolean, ob Control disabled ist
1808
+ */
1809
+ get isDisabled() {
1810
+ return this.disabled || this.sacRadioButtons.disabled;
1811
+ }
1812
+ /**
1813
+ * Setter für hidden Property
1814
+ */
1815
+ set hidden(v) {
1816
+ if (v === null || v === undefined || typeof v === 'boolean') {
1817
+ this._hidden = v;
1818
+ }
1819
+ else {
1820
+ this._hidden = v === 'true';
1821
+ }
1822
+ // Model Reset falls RadioButton selektiert war
1823
+ if (this._hidden && this.checked) {
1824
+ this.sacRadioButtons.SelectItem(null);
1825
+ }
1826
+ }
1827
+ get hidden() {
1828
+ return this._hidden;
1829
+ }
1830
+ /**
1831
+ * Getter für Unique Index
1832
+ */
1833
+ get getIndex() {
1834
+ if (this._index === null &&
1835
+ this.sacRadioButtons !== null &&
1836
+ this.sacRadioButtons !== undefined) {
1837
+ this._index = this.sacRadioButtons.GetRadionButtonIndex();
1838
+ }
1839
+ return this._index;
1840
+ }
1841
+ /**
1842
+ * Parent Control Name
1843
+ */
1844
+ get getName() {
1845
+ return this.sacRadioButtons.name;
1846
+ }
1847
+ //#endregion
1848
+ //#region Control Events
1849
+ /**
1850
+ * Event wenn die Komponente zerstört wird
1851
+ */
1852
+ ngOnDestroy() {
1853
+ // De-Registration des Controls in SacRadioButtons Container
1854
+ this.sacRadioButtons.UnregisterRadioButton(this);
1855
+ }
1856
+ //#endregion
1857
+ /**
1858
+ * Event bei Änderungen
1859
+ */
1860
+ ChangeEvent() {
1861
+ if (!this.disabled) {
1862
+ this.sacRadioButtons.SelectItem(this.value);
1863
+ this.onselectitem.emit();
1864
+ }
1865
+ }
1866
+ }
1867
+ SacRadiobuttonCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacRadiobuttonCommon, deps: [{ token: SacRadiobuttonsCommon }], target: i0.ɵɵFactoryTarget.Directive });
1868
+ SacRadiobuttonCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacRadiobuttonCommon, inputs: { value: "value", label: "label", checked: "checked", disabled: "disabled", hidden: "hidden", labeltemplate: "labeltemplate" }, outputs: { onselectitem: "onselectitem" }, ngImport: i0 });
1869
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacRadiobuttonCommon, decorators: [{
1870
+ type: Directive
1871
+ }], ctorParameters: function () { return [{ type: SacRadiobuttonsCommon }]; }, propDecorators: { value: [{
1872
+ type: Input
1873
+ }], label: [{
1874
+ type: Input
1875
+ }], checked: [{
1876
+ type: Input
1877
+ }], disabled: [{
1878
+ type: Input
1879
+ }], onselectitem: [{
1880
+ type: Output
1881
+ }], hidden: [{
1882
+ type: Input
1883
+ }], labeltemplate: [{
1884
+ type: Input
1885
+ }] } });
1886
+
1887
+ /**
1888
+ * Base Komponente für Dialog
1889
+ */
1890
+ class SacDialogCommon {
1891
+ // #endregion
1892
+ // #region Constructor
1893
+ /**
1894
+ * Konstruktor
1895
+ * Inject des Formulars
1896
+ */
1897
+ constructor(cdRef) {
1898
+ this.cdRef = cdRef;
1899
+ this.hasSetBodyTag = false;
1900
+ /**
1901
+ * Boolean Property definiert ob das Dialog angezeigt wird
1902
+ */
1903
+ this._show = false;
1904
+ /**
1905
+ * Das property enthielt (wenn überhaupt gesetzt) entweder keywords für sizing oder custom css Klassen.
1906
+ * Die akzeptabel keywordssind: 'small', 'large', 'extralarge', 'medium', ''.
1907
+ */
1908
+ this._size = '';
1909
+ // #region Properties
1910
+ /**
1911
+ * Input Property. Erhält den Title des Dialog. Default Value: 'Dialog'.
1912
+ */
1913
+ this.title = 'Dialog';
1914
+ /**
1915
+ * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch ESC geschlossen werden. Default ist true.
1916
+ */
1917
+ this.allowesc = true;
1918
+ /**
1919
+ * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch click außerhalb des Dialog-Fenster geschlossen werden. Default ist true.
1920
+ */
1921
+ this.backdrop = true;
1922
+ /**
1923
+ * Input Property. Erhält den Namen des Dialog - benutzt für das ID. Default Value: ''
1924
+ */
1925
+ this.name = '';
1926
+ /**
1927
+ * Steuert ob im Header des Dialogs ein Button angezeigt wird.
1928
+ */
1929
+ this.closebutton = true;
1930
+ /**
1931
+ * Input Property. Erhält die Breite des Dialog
1932
+ */
1933
+ this.width = null;
1934
+ /**
1935
+ * Definiert eine feste Höhe beim Dialog.
1936
+ */
1937
+ this.height = null;
1938
+ /**
1939
+ * Output Emitter. Wird aufgerufen, wenn das Wert des _show property geändert ist - damait das Dialog geöfnet/geschlossen wird.
1940
+ */
1941
+ this.isvisibleChange = new EventEmitter();
1942
+ }
1943
+ /**
1944
+ * Implementation als Setter, da mit ngIf das Element bei Unsichtbarkeit UNDEFINED ist.
1945
+ */
1946
+ set dialogElementSetter(content) {
1947
+ this.dialogElement = content;
1948
+ }
1949
+ /**
1950
+ * Das Input akzeptiert sowohl default size-css-Klassen als auch custom Klassen.
1951
+ * case insensitive.
1952
+ * Die akzeptabel default-size-Klassen sind: 'small', 'large', 'extralarge', 'medium', ''.
1953
+ * Wenn size ist NICHT gesetzt (oder 'medium' oder ''), default ist in medium size: max-width 500px.
1954
+ */
1955
+ set size(v) {
1956
+ v = v.toLowerCase();
1957
+ this._size = v;
1958
+ }
1959
+ /**
1960
+ * Setter. Erhält das boolen Wert des _show property
1961
+ */
1962
+ set isvisible(v) {
1963
+ if (v &&
1964
+ !this.hasSetBodyTag &&
1965
+ !document.body.classList.contains('modal-open')) {
1966
+ document.body.classList.add('modal-open');
1967
+ this.hasSetBodyTag = true;
1968
+ }
1969
+ if (!v &&
1970
+ this.hasSetBodyTag &&
1971
+ document.body.classList.contains('modal-open')) {
1972
+ document.body.classList.remove('modal-open');
1973
+ this.hasSetBodyTag = false;
1974
+ }
1975
+ this._show = v;
1976
+ }
1977
+ /**
1978
+ * Getter. Ergibt das boolen Wert des _show property
1979
+ */
1980
+ get isvisible() {
1981
+ return this._show;
1982
+ }
1983
+ /**
1984
+ * Die Funktion prüft ob es ein default css classe für Size des Dialog durch den size Input gesetzt wurde.
1985
+ */
1986
+ issetdefaultsize() {
1987
+ let result = false;
1988
+ switch (this._size) {
1989
+ case 'small':
1990
+ result = true;
1991
+ break;
1992
+ case 'medium':
1993
+ result = true;
1994
+ break;
1995
+ case 'large':
1996
+ result = true;
1997
+ break;
1998
+ case 'extralarge':
1999
+ result = true;
2000
+ break;
2001
+ case '':
2002
+ result = true;
2003
+ break;
2004
+ }
2005
+ return result;
2006
+ }
2007
+ // #endregion
2008
+ /**
2009
+ * Methode wenn Componente entfernt wird
2010
+ */
2011
+ ngOnDestroy() {
2012
+ if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {
2013
+ document.body.classList.remove('modal-open');
2014
+ this.hasSetBodyTag = false;
2015
+ }
2016
+ }
2017
+ // #region Methods
2018
+ /**
2019
+ * Die Methode setz den Wert des _show property auf true
2020
+ */
2021
+ show() {
2022
+ this._show = true;
2023
+ if (!this.hasSetBodyTag &&
2024
+ !document.body.classList.contains('modal-open')) {
2025
+ document.body.classList.add('modal-open');
2026
+ this.hasSetBodyTag = true;
2027
+ }
2028
+ this.isvisibleChange.emit(this._show);
2029
+ }
2030
+ /**
2031
+ * Die Methode setz den Wert des _show property auf false
2032
+ */
2033
+ hide() {
2034
+ if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {
2035
+ document.body.classList.remove('modal-open');
2036
+ this.hasSetBodyTag = false;
2037
+ }
2038
+ this._show = false;
2039
+ this.isvisibleChange.emit(this._show);
2040
+ }
2041
+ /**
2042
+ * Getter for ChangeDetector.
2043
+ */
2044
+ get ChangeDetector() {
2045
+ return this.cdRef;
2046
+ }
2047
+ // #endregion
2048
+ // #region Host Actions
2049
+ /**
2050
+ * Allow Close by Click outside Dialog
2051
+ */
2052
+ onClick(event) {
2053
+ if (this.allowesc === false ||
2054
+ (this.dialogElement !== null &&
2055
+ this.dialogElement !== undefined &&
2056
+ event.target !== this.dialogElement.nativeElement)) {
2057
+ return;
2058
+ }
2059
+ this.hide();
2060
+ }
2061
+ /**
2062
+ * Allow Close by ESC
2063
+ */
2064
+ onKeydownHandler(event) {
2065
+ const ESCAPE_KEYCODE = 'Escape';
2066
+ if (this.allowesc === true && event.key === ESCAPE_KEYCODE) {
2067
+ this.hide();
2068
+ }
2069
+ }
2070
+ }
2071
+ SacDialogCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDialogCommon, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
2072
+ SacDialogCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDialogCommon, inputs: { title: "title", allowesc: "allowesc", backdrop: "backdrop", name: "name", closebutton: "closebutton", width: "width", height: "height", size: "size", isvisible: "isvisible" }, outputs: { isvisibleChange: "isvisibleChange" }, host: { listeners: { "click": "onClick($event)", "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "dialogElementSetter", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0 });
2073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDialogCommon, decorators: [{
2074
+ type: Directive
2075
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { dialogElementSetter: [{
2076
+ type: ViewChild,
2077
+ args: ['dialog', { static: false }]
2078
+ }], title: [{
2079
+ type: Input
2080
+ }], allowesc: [{
2081
+ type: Input
2082
+ }], backdrop: [{
2083
+ type: Input
2084
+ }], name: [{
2085
+ type: Input
2086
+ }], closebutton: [{
2087
+ type: Input
2088
+ }], width: [{
2089
+ type: Input
2090
+ }], height: [{
2091
+ type: Input
2092
+ }], size: [{
2093
+ type: Input
2094
+ }], isvisibleChange: [{
2095
+ type: Output
2096
+ }], isvisible: [{
2097
+ type: Input
2098
+ }], onClick: [{
2099
+ type: HostListener,
2100
+ args: ['click', ['$event']]
2101
+ }], onKeydownHandler: [{
2102
+ type: HostListener,
2103
+ args: ['document:keydown', ['$event']]
2104
+ }] } });
2105
+
2106
+ // #endregion Type aliases
2107
+ // #region Classes
2108
+ /**
2109
+ * Base Komponente für SacFormular
2110
+ */
2111
+ class SacFormCommon {
2112
+ // #endregion Properties
2113
+ // #region Constructors
2114
+ /**
2115
+ * Konstruktor
2116
+ * @param form Instanz von NgForm
2117
+ */
2118
+ constructor(form) {
2119
+ this.form = form;
2120
+ // #region Properties
2121
+ /**
2122
+ * Standardwert wann die Werte via NgModel aktualisiert werden
2123
+ */
2124
+ this._updateon = 'change';
2125
+ this.form.options = { updateOn: this._updateon };
2126
+ }
2127
+ // #endregion Constructors
2128
+ // #region Public Getters And Setters
2129
+ get updateon() {
2130
+ return this._updateon;
2025
2131
  }
2026
2132
  /**
2027
- * Methode ergibt Boolean, ob Control disabled ist
2133
+ * Definiert, wenn das Model geupdatet wird
2028
2134
  */
2029
- get isDisabled() {
2030
- return this.disabled || this.sacRadioButtons.disabled;
2135
+ set updateon(v) {
2136
+ this._updateon = v;
2137
+ this.form.options.updateOn = v;
2031
2138
  }
2139
+ // #endregion Public Getters And Setters
2140
+ // #region Public Methods
2032
2141
  /**
2033
- * Setter für hidden Property
2142
+ * Gibt die NgForm Instanz zurück
2034
2143
  */
2035
- set hidden(v) {
2036
- if (v === null || v === undefined || typeof v === 'boolean') {
2037
- this._hidden = v;
2038
- }
2039
- else {
2040
- this._hidden = v === 'true';
2041
- }
2042
- // Model Reset falls RadioButton selektiert war
2043
- if (this._hidden && this.checked) {
2044
- this.sacRadioButtons.SelectItem(null);
2045
- }
2046
- }
2047
- get hidden() {
2048
- return this._hidden;
2144
+ getForm() {
2145
+ return this.form;
2049
2146
  }
2050
2147
  /**
2051
- * Getter für Unique Index
2148
+ * Markiert alle Controls innerhalb des Formulares als Touched
2052
2149
  */
2053
- get getIndex() {
2054
- if (this._index === null &&
2055
- this.sacRadioButtons !== null &&
2056
- this.sacRadioButtons !== undefined) {
2057
- this._index = this.sacRadioButtons.GetRadionButtonIndex();
2150
+ markAsTouched() {
2151
+ if (this.form && this.form.invalid) {
2152
+ this.markAsTouchedInternal(this.form.controls);
2058
2153
  }
2059
- return this._index;
2060
2154
  }
2061
2155
  /**
2062
- * Parent Control Name
2156
+ * Aktualisiert die Werte und den Gültigkeitsstatus des Formulars
2063
2157
  */
2064
- get getName() {
2065
- return this.sacRadioButtons.name;
2158
+ updateValueAndValidity(markAsTouched = true) {
2159
+ // Update all Controls
2160
+ this.updateValueAndValidityInternal(this.form.controls);
2161
+ // Update Main Form
2162
+ this.getForm().form.updateValueAndValidity();
2163
+ // Mark all Controls as Touched
2164
+ if (markAsTouched) {
2165
+ this.markAsTouched();
2166
+ }
2066
2167
  }
2067
- //#endregion
2068
- //#region Control Events
2168
+ // #endregion Public Methods
2169
+ // #region Private Methods
2069
2170
  /**
2070
- * Event wenn die Komponente zerstört wird
2171
+ * Markiert alle Controls inkl. dem Tree als Touched
2172
+ * @param controls Controls Collection
2071
2173
  */
2072
- ngOnDestroy() {
2073
- // De-Registration des Controls in SacRadioButtons Container
2074
- this.sacRadioButtons.UnregisterRadioButton(this);
2174
+ markAsTouchedInternal(controls) {
2175
+ const keyList = Object.keys(controls);
2176
+ for (const field of keyList) {
2177
+ const control = controls[field];
2178
+ if (control instanceof FormGroup) {
2179
+ this.markAsTouchedInternal(control.controls);
2180
+ }
2181
+ else {
2182
+ control.markAsTouched({ onlySelf: true });
2183
+ }
2184
+ }
2075
2185
  }
2076
- //#endregion
2077
2186
  /**
2078
- * Event bei Änderungen
2187
+ * Aktualisiert die Werte und die gültigkeit des Formulars
2188
+ * @param controls Controls Collection
2079
2189
  */
2080
- ChangeEvent() {
2081
- if (!this.disabled) {
2082
- this.sacRadioButtons.SelectItem(this.value);
2083
- this.onselectitem.emit();
2190
+ updateValueAndValidityInternal(controls) {
2191
+ const keyList = Object.keys(controls);
2192
+ for (const field of keyList) {
2193
+ const control = controls[field];
2194
+ if (control instanceof FormGroup) {
2195
+ this.updateValueAndValidityInternal(control.controls);
2196
+ }
2197
+ else {
2198
+ control.updateValueAndValidity({ onlySelf: true });
2199
+ }
2084
2200
  }
2085
2201
  }
2086
2202
  }
2087
- SacRadiobuttonCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacRadiobuttonCommon, deps: [{ token: SacRadiobuttonsCommon }], target: i0.ɵɵFactoryTarget.Directive });
2088
- SacRadiobuttonCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacRadiobuttonCommon, inputs: { value: "value", label: "label", checked: "checked", disabled: "disabled", hidden: "hidden", labeltemplate: "labeltemplate" }, outputs: { onselectitem: "onselectitem" }, ngImport: i0 });
2089
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacRadiobuttonCommon, decorators: [{
2203
+ SacFormCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacFormCommon, deps: [{ token: i1.NgForm }], target: i0.ɵɵFactoryTarget.Directive });
2204
+ SacFormCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacFormCommon, inputs: { updateon: "updateon" }, ngImport: i0 });
2205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacFormCommon, decorators: [{
2090
2206
  type: Directive
2091
- }], ctorParameters: function () { return [{ type: SacRadiobuttonsCommon }]; }, propDecorators: { value: [{
2092
- type: Input
2093
- }], label: [{
2094
- type: Input
2095
- }], checked: [{
2096
- type: Input
2097
- }], disabled: [{
2098
- type: Input
2099
- }], onselectitem: [{
2100
- type: Output
2101
- }], hidden: [{
2102
- type: Input
2103
- }], labeltemplate: [{
2207
+ }], ctorParameters: function () { return [{ type: i1.NgForm }]; }, propDecorators: { updateon: [{
2104
2208
  type: Input
2105
2209
  }] } });
2106
2210
 
@@ -2190,46 +2294,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
2190
2294
  type: Input
2191
2295
  }] } });
2192
2296
 
2193
- /**
2194
- * Function um ein Key Value Pair für das Dropdown zu erzeugen
2195
- * @param id ID
2196
- * @param value Wert der an das Element gebunden werden soll
2197
- */
2198
- function _buildValueString(id, value) {
2199
- // Wenn ID null ist Object zurückgeben
2200
- if (id == null) {
2201
- return `${value}`;
2202
- }
2203
- // Mapping Objekt zu String
2204
- if (value && typeof value === 'object') {
2205
- value = 'Object';
2206
- }
2207
- // String als ID
2208
- return `${id}: ${value}`.slice(0, 50);
2209
- }
2297
+ // #region Classes
2210
2298
  /**
2211
2299
  * Base Dropdown Komponente
2212
2300
  */
2213
2301
  class SacDropdownCommon extends SacBaseSelectControl {
2302
+ // #endregion Properties
2303
+ // #region Constructors
2214
2304
  /**
2215
- * Konstruktor
2216
- * @param parent Übergeordnetes HTML Element
2217
- * @param injector Injector für Services
2218
- * @param _renderer Render Engine
2219
- * @param _elementRef Referenz von HTML Element
2305
+ * Constructor
2306
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
2307
+ * @param injector Injector for injecting services
2308
+ * @param renderer html rendering engine
2309
+ * @param elementRef reference to html element
2220
2310
  */
2221
- constructor(parent, injector, _renderer, _elementRef) {
2222
- super(parent, injector);
2223
- this._renderer = _renderer;
2224
- this._elementRef = _elementRef;
2225
- /**
2226
- * Counter vom OptionID; default Wert = 0
2227
- */
2228
- this._optionIdCounter = 0;
2229
- /**
2230
- * OptionMap
2231
- */
2232
- this._optionMap = new Map();
2311
+ constructor(formlayout, injector, renderer, elementRef) {
2312
+ super(formlayout, injector);
2313
+ this.renderer = renderer;
2314
+ this.elementRef = elementRef;
2315
+ // #region Properties
2233
2316
  /**
2234
2317
  * compareWith-Funktion
2235
2318
  */
@@ -2250,7 +2333,17 @@ class SacDropdownCommon extends SacBaseSelectControl {
2250
2333
  * Resource Key für Validation Message Required in Validation Summary
2251
2334
  */
2252
2335
  this.validationmessagesummaryrequired = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
2336
+ /**
2337
+ * Counter vom OptionID; default Wert = 0
2338
+ */
2339
+ this._optionIdCounter = 0;
2340
+ /**
2341
+ * OptionMap
2342
+ */
2343
+ this._optionMap = new Map();
2253
2344
  }
2345
+ // #endregion Constructors
2346
+ // #region Public Getters And Setters
2254
2347
  /**
2255
2348
  * compareWith-Funktion
2256
2349
  */
@@ -2260,21 +2353,8 @@ class SacDropdownCommon extends SacBaseSelectControl {
2260
2353
  }
2261
2354
  this._compareWith = fn;
2262
2355
  }
2263
- /**
2264
- * Wert einstellen
2265
- * @param value - Wert
2266
- */
2267
- setValue(value) {
2268
- super.setValue(this.getOptionValue(value));
2269
- }
2270
- /**
2271
- * Wert schreiben
2272
- * @param value - Wert
2273
- */
2274
- writeValue(value) {
2275
- this.setSelectedValue(value);
2276
- super.writeValue(value);
2277
- }
2356
+ // #endregion Public Getters And Setters
2357
+ // #region Public Methods
2278
2358
  /**
2279
2359
  * Registriert das OptionID-Counter als String
2280
2360
  */
@@ -2294,23 +2374,39 @@ class SacDropdownCommon extends SacBaseSelectControl {
2294
2374
  }
2295
2375
  }
2296
2376
  /**
2297
- * Setzt den Selected Value auf dem Control
2298
- * @param value Value
2377
+ * Wert einstellen
2378
+ * @param value - Wert
2299
2379
  */
2300
- setSelectedValue(value) {
2301
- // Select Item aus Control lesen
2302
- const selectItem = this._elementRef.nativeElement.getElementsByTagName('select')[0];
2303
- /**
2304
- * Id vom Select Item
2305
- */
2306
- const id = this.getOptionId(value);
2307
- /**
2308
- * Value String
2309
- */
2310
- const valueString = _buildValueString(id, value);
2311
- if (selectItem !== undefined) {
2312
- this._renderer.setProperty(selectItem, 'value', valueString);
2380
+ setValue(value) {
2381
+ super.setValue(this.getOptionValue(value));
2382
+ }
2383
+ /**
2384
+ * Validator
2385
+ * @param c Control Instanz
2386
+ */
2387
+ validateData(c) {
2388
+ let error = null;
2389
+ if (this.isrequired) {
2390
+ error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
2313
2391
  }
2392
+ return error;
2393
+ }
2394
+ /**
2395
+ * Wert schreiben
2396
+ * @param value - Wert
2397
+ */
2398
+ writeValue(value) {
2399
+ this.setSelectedValue(value);
2400
+ super.writeValue(value);
2401
+ }
2402
+ // #endregion Public Methods
2403
+ // #region Private Methods
2404
+ /**
2405
+ * ID extrahieren
2406
+ * @param valueString String bei welchem die ID Extrahiert werden soll
2407
+ */
2408
+ extractId(valueString) {
2409
+ return valueString.split(':')[0];
2314
2410
  }
2315
2411
  /**
2316
2412
  * Nimmt das ID vom Option
@@ -2333,47 +2429,50 @@ class SacDropdownCommon extends SacBaseSelectControl {
2333
2429
  return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;
2334
2430
  }
2335
2431
  /**
2336
- * ID extrahieren
2337
- * @param valueString String bei welchem die ID Extrahiert werden soll
2338
- */
2339
- extractId(valueString) {
2340
- return valueString.split(':')[0];
2341
- }
2342
- /**
2343
- * Validator
2344
- * @param c Control Instanz
2432
+ * Setzt den Selected Value auf dem Control
2433
+ * @param value Value
2345
2434
  */
2346
- validateData(c) {
2347
- let error = null;
2348
- if (this.isrequired) {
2349
- error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
2435
+ setSelectedValue(value) {
2436
+ // Select Item aus Control lesen
2437
+ const selectItem = this.elementRef.nativeElement.getElementsByTagName('select')[0];
2438
+ /**
2439
+ * Id vom Select Item
2440
+ */
2441
+ const id = this.getOptionId(value);
2442
+ /**
2443
+ * Value String
2444
+ */
2445
+ const valueString = _buildValueString(id, value);
2446
+ if (selectItem !== undefined) {
2447
+ this.renderer.setProperty(selectItem, 'value', valueString);
2350
2448
  }
2351
- return error;
2352
2449
  }
2353
2450
  }
2354
- SacDropdownCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDropdownCommon, deps: [{ token: SacFormCommon, host: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2355
- SacDropdownCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDropdownCommon, inputs: { emptylabel: "emptylabel", emptyvalue: "emptyvalue", comparewith: "comparewith", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired" }, usesInheritance: true, ngImport: i0 });
2451
+ SacDropdownCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDropdownCommon, deps: [{ token: SacFormLayoutCommon, host: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2452
+ SacDropdownCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDropdownCommon, inputs: { emptylabel: "emptylabel", emptyvalue: "emptyvalue", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", comparewith: "comparewith" }, usesInheritance: true, ngImport: i0 });
2356
2453
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDropdownCommon, decorators: [{
2357
2454
  type: Directive
2358
2455
  }], ctorParameters: function () {
2359
- return [{ type: SacFormCommon, decorators: [{
2456
+ return [{ type: SacFormLayoutCommon, decorators: [{
2360
2457
  type: Host
2361
2458
  }] }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.ElementRef }];
2362
2459
  }, propDecorators: { emptylabel: [{
2363
2460
  type: Input
2364
2461
  }], emptyvalue: [{
2365
2462
  type: Input
2366
- }], comparewith: [{
2367
- type: Input
2368
2463
  }], validationmessagerequired: [{
2369
2464
  type: Input
2370
2465
  }], validationmessagesummaryrequired: [{
2371
2466
  type: Input
2467
+ }], comparewith: [{
2468
+ type: Input
2372
2469
  }] } });
2373
2470
  /**
2374
2471
  * SacDropdownOption-Klasse
2375
2472
  */
2376
2473
  class SacDropdownOptionCommon {
2474
+ // #endregion Properties
2475
+ // #region Constructors
2377
2476
  /**
2378
2477
  * Konstruktor
2379
2478
  * @param _element Referenz auf HTML Element
@@ -2384,6 +2483,7 @@ class SacDropdownOptionCommon {
2384
2483
  this._element = _element;
2385
2484
  this._renderer = _renderer;
2386
2485
  this._dropdown = _dropdown;
2486
+ // #region Properties
2387
2487
  /**
2388
2488
  * ID-String
2389
2489
  */
@@ -2392,6 +2492,8 @@ class SacDropdownOptionCommon {
2392
2492
  this.id = this._dropdown.registerOption();
2393
2493
  }
2394
2494
  }
2495
+ // #endregion Constructors
2496
+ // #region Public Getters And Setters
2395
2497
  /**
2396
2498
  * Option ngValue
2397
2499
  */
@@ -2410,6 +2512,8 @@ class SacDropdownOptionCommon {
2410
2512
  set value(value) {
2411
2513
  this._setElementValue(value);
2412
2514
  }
2515
+ // #endregion Public Getters And Setters
2516
+ // #region Public Methods
2413
2517
  /**
2414
2518
  * Den Wert vom Option-Element einstellen
2415
2519
  * @param value Wert
@@ -2434,7 +2538,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
2434
2538
  type: Input
2435
2539
  }], value: [{
2436
2540
  type: Input
2437
- }] } });
2541
+ }] } });
2542
+ // #endregion Classes
2543
+ // #region Functions
2544
+ /**
2545
+ * Function um ein Key Value Pair für das Dropdown zu erzeugen
2546
+ * @param id ID
2547
+ * @param value Wert der an das Element gebunden werden soll
2548
+ */
2549
+ function _buildValueString(id, value) {
2550
+ // Wenn ID null ist Object zurückgeben
2551
+ if (id == null) {
2552
+ return `${value}`;
2553
+ }
2554
+ // Mapping Objekt zu String
2555
+ if (value && typeof value === 'object') {
2556
+ value = 'Object';
2557
+ }
2558
+ // String als ID
2559
+ return `${id}: ${value}`.slice(0, 50);
2560
+ }
2438
2561
 
2439
2562
  /**
2440
2563
  * Basis Komponente für SacListboxOption
@@ -2607,6 +2730,119 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
2607
2730
  args: [SacListboxOptionCommon]
2608
2731
  }] } });
2609
2732
 
2733
+ /**
2734
+ * Base component for SacTab
2735
+ */
2736
+ class SacTabCommon {
2737
+ constructor() {
2738
+ /**
2739
+ * control name
2740
+ */
2741
+ this.name = '';
2742
+ /**
2743
+ * dispose tabs when they are hidden
2744
+ */
2745
+ this.unloadtabitemswhenhidden = null;
2746
+ /**
2747
+ * Event when new tab is selected
2748
+ */
2749
+ this.tabselected = new EventEmitter();
2750
+ }
2751
+ // #region Control initialisieren
2752
+ /**
2753
+ * AfterContentInit Event
2754
+ */
2755
+ ngAfterContentInit() {
2756
+ this.initTabs();
2757
+ }
2758
+ /**
2759
+ * Initialisiert die Tabs
2760
+ */
2761
+ initTabs() {
2762
+ const activeTab = this.tabItems().filter((tab) => tab.active);
2763
+ this.tabItems().forEach((itm) => {
2764
+ if (this.unloadtabitemswhenhidden !== null) {
2765
+ itm.unloadwhenhidden = this.unloadtabitemswhenhidden;
2766
+ }
2767
+ });
2768
+ if (activeTab.length === 0) {
2769
+ this.selectTab(this.tabItems()[0]);
2770
+ }
2771
+ }
2772
+ // #endregion
2773
+ /**
2774
+ * select new tab
2775
+ * @param tab tab that should be selected
2776
+ */
2777
+ selectTab(tab) {
2778
+ // Cancel if Selected Tab is disabled
2779
+ if (tab.disabled) {
2780
+ return;
2781
+ }
2782
+ this.tabItems().forEach((item) => (item.active = false));
2783
+ tab.active = true;
2784
+ this.tabselected.emit(tab.id);
2785
+ }
2786
+ /**
2787
+ * get id of tab button
2788
+ * @param tabitemid id of tab
2789
+ */
2790
+ GetTabItemButtonId(tabitemid) {
2791
+ return this.name + '_' + tabitemid;
2792
+ }
2793
+ }
2794
+ SacTabCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2795
+ SacTabCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTabCommon, inputs: { name: "name", tablabeltemplate: "tablabeltemplate", unloadtabitemswhenhidden: "unloadtabitemswhenhidden" }, outputs: { tabselected: "tabselected" }, ngImport: i0 });
2796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabCommon, decorators: [{
2797
+ type: Directive
2798
+ }], propDecorators: { name: [{
2799
+ type: Input
2800
+ }], tablabeltemplate: [{
2801
+ type: Input
2802
+ }], unloadtabitemswhenhidden: [{
2803
+ type: Input
2804
+ }], tabselected: [{
2805
+ type: Output
2806
+ }] } });
2807
+
2808
+ /**
2809
+ * Die Basis Komponente für SacTabItem
2810
+ */
2811
+ class SacTabItemCommon {
2812
+ constructor() {
2813
+ /**
2814
+ * Boolean Property prüft ob das Tab aktiv ist
2815
+ */
2816
+ this.active = false;
2817
+ /**
2818
+ * Boolean Property prüft ob das Tab disabled ist
2819
+ */
2820
+ this.disabled = false;
2821
+ /**
2822
+ * Das Input property ekzeptiert boolen Wert. Default ist true. Definiert, ob die Komponente hidden sein sollte.
2823
+ */
2824
+ this.unloadwhenhidden = true;
2825
+ }
2826
+ }
2827
+ SacTabItemCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabItemCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2828
+ SacTabItemCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTabItemCommon, inputs: { active: "active", disabled: "disabled", id: "id", label: "label", unloadwhenhidden: "unloadwhenhidden" }, queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0 });
2829
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabItemCommon, decorators: [{
2830
+ type: Directive
2831
+ }], propDecorators: { active: [{
2832
+ type: Input
2833
+ }], disabled: [{
2834
+ type: Input
2835
+ }], id: [{
2836
+ type: Input
2837
+ }], label: [{
2838
+ type: Input
2839
+ }], unloadwhenhidden: [{
2840
+ type: Input
2841
+ }], templateRef: [{
2842
+ type: ContentChild,
2843
+ args: [TemplateRef, { static: true }]
2844
+ }] } });
2845
+
2610
2846
  /**
2611
2847
  * Basis Komponente für SacValidationSummary
2612
2848
  */
@@ -2729,119 +2965,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
2729
2965
  type: Input
2730
2966
  }] } });
2731
2967
 
2732
- /**
2733
- * Base component for SacTab
2734
- */
2735
- class SacTabCommon {
2736
- constructor() {
2737
- /**
2738
- * control name
2739
- */
2740
- this.name = '';
2741
- /**
2742
- * dispose tabs when they are hidden
2743
- */
2744
- this.unloadtabitemswhenhidden = null;
2745
- /**
2746
- * Event when new tab is selected
2747
- */
2748
- this.tabselected = new EventEmitter();
2749
- }
2750
- // #region Control initialisieren
2751
- /**
2752
- * AfterContentInit Event
2753
- */
2754
- ngAfterContentInit() {
2755
- this.initTabs();
2756
- }
2757
- /**
2758
- * Initialisiert die Tabs
2759
- */
2760
- initTabs() {
2761
- const activeTab = this.tabItems().filter((tab) => tab.active);
2762
- this.tabItems().forEach((itm) => {
2763
- if (this.unloadtabitemswhenhidden !== null) {
2764
- itm.unloadwhenhidden = this.unloadtabitemswhenhidden;
2765
- }
2766
- });
2767
- if (activeTab.length === 0) {
2768
- this.selectTab(this.tabItems()[0]);
2769
- }
2770
- }
2771
- // #endregion
2772
- /**
2773
- * select new tab
2774
- * @param tab tab that should be selected
2775
- */
2776
- selectTab(tab) {
2777
- // Cancel if Selected Tab is disabled
2778
- if (tab.disabled) {
2779
- return;
2780
- }
2781
- this.tabItems().forEach((item) => (item.active = false));
2782
- tab.active = true;
2783
- this.tabselected.emit(tab.id);
2784
- }
2785
- /**
2786
- * get id of tab button
2787
- * @param tabitemid id of tab
2788
- */
2789
- GetTabItemButtonId(tabitemid) {
2790
- return this.name + '_' + tabitemid;
2791
- }
2792
- }
2793
- SacTabCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2794
- SacTabCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTabCommon, inputs: { name: "name", tablabeltemplate: "tablabeltemplate", unloadtabitemswhenhidden: "unloadtabitemswhenhidden" }, outputs: { tabselected: "tabselected" }, ngImport: i0 });
2795
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabCommon, decorators: [{
2796
- type: Directive
2797
- }], propDecorators: { name: [{
2798
- type: Input
2799
- }], tablabeltemplate: [{
2800
- type: Input
2801
- }], unloadtabitemswhenhidden: [{
2802
- type: Input
2803
- }], tabselected: [{
2804
- type: Output
2805
- }] } });
2806
-
2807
- /**
2808
- * Die Basis Komponente für SacTabItem
2809
- */
2810
- class SacTabItemCommon {
2811
- constructor() {
2812
- /**
2813
- * Boolean Property prüft ob das Tab aktiv ist
2814
- */
2815
- this.active = false;
2816
- /**
2817
- * Boolean Property prüft ob das Tab disabled ist
2818
- */
2819
- this.disabled = false;
2820
- /**
2821
- * Das Input property ekzeptiert boolen Wert. Default ist true. Definiert, ob die Komponente hidden sein sollte.
2822
- */
2823
- this.unloadwhenhidden = true;
2824
- }
2825
- }
2826
- SacTabItemCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabItemCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2827
- SacTabItemCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTabItemCommon, inputs: { active: "active", disabled: "disabled", id: "id", label: "label", unloadwhenhidden: "unloadwhenhidden" }, queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0 });
2828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTabItemCommon, decorators: [{
2829
- type: Directive
2830
- }], propDecorators: { active: [{
2831
- type: Input
2832
- }], disabled: [{
2833
- type: Input
2834
- }], id: [{
2835
- type: Input
2836
- }], label: [{
2837
- type: Input
2838
- }], unloadwhenhidden: [{
2839
- type: Input
2840
- }], templateRef: [{
2841
- type: ContentChild,
2842
- args: [TemplateRef, { static: true }]
2843
- }] } });
2844
-
2845
2968
  /**
2846
2969
  * Abstract Klasse für SacInputBase. Extendes SacBaseModelControl
2847
2970
  */
@@ -2849,6 +2972,14 @@ class SacInputBase extends SacBaseModelControl {
2849
2972
  constructor() {
2850
2973
  super(...arguments);
2851
2974
  // #region Properties
2975
+ /**
2976
+ * Erlaubte Zeichen bei der Eingabe
2977
+ */
2978
+ this.allowedchars = '';
2979
+ /**
2980
+ * Autofill aktivieren oder deaktivieren
2981
+ */
2982
+ this.disableautocomplete = false;
2852
2983
  /**
2853
2984
  * Definiert das Control als Required
2854
2985
  */
@@ -2857,10 +2988,6 @@ class SacInputBase extends SacBaseModelControl {
2857
2988
  * TextBox Placeholder
2858
2989
  */
2859
2990
  this.placeholder = null;
2860
- /**
2861
- * Erlaubte Zeichen bei der Eingabe
2862
- */
2863
- this.allowedchars = '';
2864
2991
  /**
2865
2992
  * Macht das Input readonly
2866
2993
  */
@@ -2869,13 +2996,9 @@ class SacInputBase extends SacBaseModelControl {
2869
2996
  * Text welcher als Tooltip angezeigt wird.
2870
2997
  */
2871
2998
  this.tooltiptext = '';
2872
- /**
2873
- * Autofill aktivieren oder deaktivieren
2874
- */
2875
- this.disableautocomplete = false;
2876
2999
  }
2877
- // #endregion
2878
- // #region Event Handler
3000
+ // #endregion Properties
3001
+ // #region Public Methods
2879
3002
  /**
2880
3003
  * Methode validiert Input wenn KeyPress-Event passiert
2881
3004
  */
@@ -2895,8 +3018,8 @@ class SacInputBase extends SacBaseModelControl {
2895
3018
  event.preventDefault();
2896
3019
  }
2897
3020
  }
2898
- // #endregion
2899
- // #region Protected Virtual Methods
3021
+ // #endregion Public Methods
3022
+ // #region Protected Methods
2900
3023
  /**
2901
3024
  * Methode validiert wenn ein Drück-Event passiert
2902
3025
  */
@@ -2905,14 +3028,16 @@ class SacInputBase extends SacBaseModelControl {
2905
3028
  }
2906
3029
  }
2907
3030
  SacInputBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacInputBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
2908
- SacInputBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacInputBase, inputs: { isrequired: "isrequired", placeholder: "placeholder", allowedchars: "allowedchars", readonly: "readonly", regexvalidation: "regexvalidation", tooltiptext: "tooltiptext", disableautocomplete: "disableautocomplete" }, usesInheritance: true, ngImport: i0 });
3031
+ SacInputBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacInputBase, inputs: { allowedchars: "allowedchars", disableautocomplete: "disableautocomplete", isrequired: "isrequired", placeholder: "placeholder", readonly: "readonly", regexvalidation: "regexvalidation", tooltiptext: "tooltiptext" }, usesInheritance: true, ngImport: i0 });
2909
3032
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacInputBase, decorators: [{
2910
3033
  type: Directive
2911
- }], propDecorators: { isrequired: [{
3034
+ }], propDecorators: { allowedchars: [{
2912
3035
  type: Input
2913
- }], placeholder: [{
3036
+ }], disableautocomplete: [{
3037
+ type: Input
3038
+ }], isrequired: [{
2914
3039
  type: Input
2915
- }], allowedchars: [{
3040
+ }], placeholder: [{
2916
3041
  type: Input
2917
3042
  }], readonly: [{
2918
3043
  type: Input
@@ -2920,8 +3045,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
2920
3045
  type: Input
2921
3046
  }], tooltiptext: [{
2922
3047
  type: Input
2923
- }], disableautocomplete: [{
2924
- type: Input
2925
3048
  }] } });
2926
3049
 
2927
3050
  /**
@@ -3050,56 +3173,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
3050
3173
  class SacInputDecimalCommon extends SacInputBase {
3051
3174
  constructor() {
3052
3175
  super(...arguments);
3176
+ // #region Properties
3053
3177
  /**
3054
3178
  * Definiert das Negative Werte erlaubt sind
3055
3179
  */
3056
3180
  this.allownegativ = false;
3057
- /**
3058
- * Definiert den minimalen Wert
3059
- */
3060
- this.minvalue = undefined;
3061
3181
  /**
3062
3182
  * Definiert den maximalen Wert
3063
3183
  */
3064
3184
  this.maxvalue = undefined;
3065
3185
  /**
3066
- * Resource Key für Validation Message Required bei Control
3186
+ * Definiert den minimalen Wert
3067
3187
  */
3068
- this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
3188
+ this.minvalue = undefined;
3069
3189
  /**
3070
- * Resource Key für Validation Message Required in Validation Summary
3190
+ * Resource Key für Validation Message MaxValue bei Control
3071
3191
  */
3072
- this.validationmessagesummaryrequired = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
3192
+ this.validationmessagemaxvalue = 'VALIDATION_ERROR_MAXVALUE';
3073
3193
  /**
3074
3194
  * Resource Key für Validation Message MinValue bei Control
3075
3195
  */
3076
3196
  this.validationmessageminvalue = 'VALIDATION_ERROR_MINVALUE';
3077
3197
  /**
3078
- * Resource Key für Validation Message MinValue in Validation Summary
3079
- */
3080
- this.validationmessagesummaryminvalue = 'VALIDATION_ERROR_SUMMARY_MINVALUE';
3081
- /**
3082
- * Resource Key für Validation Message MaxValue bei Control
3198
+ * Resource Key für Validation Message Required bei Control
3083
3199
  */
3084
- this.validationmessagemaxvalue = 'VALIDATION_ERROR_MAXVALUE';
3200
+ this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
3085
3201
  /**
3086
3202
  * Resource Key für Validation Message MaxValue in Validation Summary
3087
3203
  */
3088
3204
  this.validationmessagesummarymaxvalue = 'VALIDATION_ERROR_SUMMARY_MAXVALUE';
3205
+ /**
3206
+ * Resource Key für Validation Message MinValue in Validation Summary
3207
+ */
3208
+ this.validationmessagesummaryminvalue = 'VALIDATION_ERROR_SUMMARY_MINVALUE';
3209
+ /**
3210
+ * Resource Key für Validation Message Required in Validation Summary
3211
+ */
3212
+ this.validationmessagesummaryrequired = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
3089
3213
  }
3214
+ // #endregion Properties
3215
+ // #region Public Methods
3090
3216
  /**
3091
- * Methode die erzeugt den Control in Abhängigkeit davon, ob negative Were erlaubt sing oder nicht
3217
+ * Methode validiert ob der Wert entspricht den gegebenen Kriterien
3092
3218
  */
3093
- OnClassInit() {
3094
- super.OnClassInit();
3219
+ validateData(c) {
3095
3220
  /**
3096
- * Definiert die Werte die erlaubt sind
3221
+ * Error Meldung, die angezeigt wird, wenn die Kriterien nicht erfüllt sind
3097
3222
  */
3098
- this.allowedchars = '0123456789' + this.GetDecimalSymbol();
3099
- if (this.allownegativ) {
3100
- this.allowedchars = this.allowedchars + '-';
3223
+ let error = null;
3224
+ if (this.isrequired) {
3225
+ error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
3226
+ }
3227
+ if (error === null &&
3228
+ this.minvalue !== undefined &&
3229
+ this.minvalue !== null) {
3230
+ error = Validation.minValue(this.minvalue, this.validationmessageminvalue, this.validationmessagesummaryminvalue)(c);
3101
3231
  }
3232
+ if (error === null &&
3233
+ this.maxvalue !== undefined &&
3234
+ this.maxvalue !== null) {
3235
+ error = Validation.maxValue(this.maxvalue, this.validationmessagemaxvalue, this.validationmessagesummarymaxvalue)(c);
3236
+ }
3237
+ return error;
3102
3238
  }
3239
+ // #endregion Public Methods
3240
+ // #region Protected Methods
3103
3241
  /**
3104
3242
  * Konvertiert den Wert des Inputs
3105
3243
  */
@@ -3119,6 +3257,19 @@ class SacInputDecimalCommon extends SacInputBase {
3119
3257
  }
3120
3258
  }
3121
3259
  }
3260
+ /**
3261
+ * Methode die erzeugt den Control in Abhängigkeit davon, ob negative Were erlaubt sing oder nicht
3262
+ */
3263
+ OnClassInit() {
3264
+ super.OnClassInit();
3265
+ /**
3266
+ * Definiert die Werte die erlaubt sind
3267
+ */
3268
+ this.allowedchars = '0123456789' + this.GetDecimalSymbol();
3269
+ if (this.allownegativ) {
3270
+ this.allowedchars = this.allowedchars + '-';
3271
+ }
3272
+ }
3122
3273
  /**
3123
3274
  * Methode validiert ob der Wert entspricht den gegebenen Kriterien wenn ein Key gedrückt wird
3124
3275
  */
@@ -3142,52 +3293,29 @@ class SacInputDecimalCommon extends SacInputBase {
3142
3293
  return true;
3143
3294
  }
3144
3295
  }
3145
- /**
3146
- * Methode validiert ob der Wert entspricht den gegebenen Kriterien
3147
- */
3148
- validateData(c) {
3149
- /**
3150
- * Error Meldung, die angezeigt wird, wenn die Kriterien nicht erfüllt sind
3151
- */
3152
- let error = null;
3153
- if (this.isrequired) {
3154
- error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
3155
- }
3156
- if (error === null &&
3157
- this.minvalue !== undefined &&
3158
- this.minvalue !== null) {
3159
- error = Validation.minValue(this.minvalue, this.validationmessageminvalue, this.validationmessagesummaryminvalue)(c);
3160
- }
3161
- if (error === null &&
3162
- this.maxvalue !== undefined &&
3163
- this.maxvalue !== null) {
3164
- error = Validation.maxValue(this.maxvalue, this.validationmessagemaxvalue, this.validationmessagesummarymaxvalue)(c);
3165
- }
3166
- return error;
3167
- }
3168
3296
  }
3169
3297
  SacInputDecimalCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacInputDecimalCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3170
- SacInputDecimalCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacInputDecimalCommon, inputs: { allownegativ: "allownegativ", minvalue: "minvalue", maxvalue: "maxvalue", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", validationmessageminvalue: "validationmessageminvalue", validationmessagesummaryminvalue: "validationmessagesummaryminvalue", validationmessagemaxvalue: "validationmessagemaxvalue", validationmessagesummarymaxvalue: "validationmessagesummarymaxvalue" }, usesInheritance: true, ngImport: i0 });
3298
+ SacInputDecimalCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacInputDecimalCommon, inputs: { allownegativ: "allownegativ", maxvalue: "maxvalue", minvalue: "minvalue", validationmessagemaxvalue: "validationmessagemaxvalue", validationmessageminvalue: "validationmessageminvalue", validationmessagerequired: "validationmessagerequired", validationmessagesummarymaxvalue: "validationmessagesummarymaxvalue", validationmessagesummaryminvalue: "validationmessagesummaryminvalue", validationmessagesummaryrequired: "validationmessagesummaryrequired" }, usesInheritance: true, ngImport: i0 });
3171
3299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacInputDecimalCommon, decorators: [{
3172
3300
  type: Directive
3173
3301
  }], propDecorators: { allownegativ: [{
3174
3302
  type: Input
3175
- }], minvalue: [{
3176
- type: Input
3177
3303
  }], maxvalue: [{
3178
3304
  type: Input
3179
- }], validationmessagerequired: [{
3305
+ }], minvalue: [{
3180
3306
  type: Input
3181
- }], validationmessagesummaryrequired: [{
3307
+ }], validationmessagemaxvalue: [{
3182
3308
  type: Input
3183
3309
  }], validationmessageminvalue: [{
3184
3310
  type: Input
3185
- }], validationmessagesummaryminvalue: [{
3186
- type: Input
3187
- }], validationmessagemaxvalue: [{
3311
+ }], validationmessagerequired: [{
3188
3312
  type: Input
3189
3313
  }], validationmessagesummarymaxvalue: [{
3190
3314
  type: Input
3315
+ }], validationmessagesummaryminvalue: [{
3316
+ type: Input
3317
+ }], validationmessagesummaryrequired: [{
3318
+ type: Input
3191
3319
  }] } });
3192
3320
 
3193
3321
  /**
@@ -3679,6 +3807,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
3679
3807
  type: Input
3680
3808
  }] } });
3681
3809
 
3810
+ /**
3811
+ * Base Grid Action Button
3812
+ */
3813
+ class SacGridButtonCommon {
3814
+ constructor() {
3815
+ /**
3816
+ * Input Property für Styling des Buttons. Deffiniert die Css Klassen des Buttons
3817
+ */
3818
+ this.iconstyle = '';
3819
+ /**
3820
+ * Button ist deaktiviert
3821
+ */
3822
+ this._isdisabledvalue = false;
3823
+ /**
3824
+ * Event wenn auf den Button geklickt wird
3825
+ */
3826
+ this.clicked = new EventEmitter();
3827
+ }
3828
+ /**
3829
+ * Deaktivieren von Buttons
3830
+ * @param v Deaktiviert den Button
3831
+ * @return Definiert ob der Button deaktiviert ist
3832
+ */
3833
+ set isdisabled(v) {
3834
+ if (v === null || v === undefined || typeof v === 'boolean') {
3835
+ this._isdisabledvalue = v;
3836
+ }
3837
+ else {
3838
+ this._isdisabledvalue = v === 'true';
3839
+ }
3840
+ }
3841
+ get isdisabled() {
3842
+ return this._isdisabledvalue;
3843
+ }
3844
+ /**
3845
+ * Die Methode wird das cklickaction Emitter aktivieren
3846
+ */
3847
+ callaction() {
3848
+ if (!this._isdisabledvalue) {
3849
+ this.clicked.emit(this.iconstyle);
3850
+ }
3851
+ }
3852
+ }
3853
+ SacGridButtonCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridButtonCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3854
+ SacGridButtonCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacGridButtonCommon, inputs: { iconstyle: "iconstyle", icon: "icon", isdisabled: "isdisabled" }, outputs: { clicked: "clicked" }, ngImport: i0 });
3855
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridButtonCommon, decorators: [{
3856
+ type: Directive
3857
+ }], propDecorators: { iconstyle: [{
3858
+ type: Input
3859
+ }], icon: [{
3860
+ type: Input
3861
+ }], isdisabled: [{
3862
+ type: Input
3863
+ }], clicked: [{
3864
+ type: Output
3865
+ }] } });
3866
+
3682
3867
  /**
3683
3868
  * Enum für Icon Types in Componenten
3684
3869
  */
@@ -4356,6 +4541,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
4356
4541
  type: Directive
4357
4542
  }], ctorParameters: function () { return [{ type: SacGridCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; } });
4358
4543
 
4544
+ /**
4545
+ * Basis Komponente für SacGridImage
4546
+ */
4547
+ class SacGridImageCommon {
4548
+ }
4549
+ SacGridImageCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridImageCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4550
+ SacGridImageCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacGridImageCommon, inputs: { iconstyle: "iconstyle" }, ngImport: i0 });
4551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridImageCommon, decorators: [{
4552
+ type: Directive
4553
+ }], propDecorators: { iconstyle: [{
4554
+ type: Input
4555
+ }] } });
4556
+
4359
4557
  /**
4360
4558
  * Basiskomponente für Paging
4361
4559
  */
@@ -4565,114 +4763,44 @@ class SacPagingCommon {
4565
4763
  }
4566
4764
  /**
4567
4765
  * Gibt die totale Anzahl Seiten zurück
4568
- */
4569
- getTotalPageNumber() {
4570
- return this.lastPageIndex + 1;
4571
- }
4572
- /**
4573
- * Text mit Aktueller Seite und Total Seiten
4574
- */
4575
- get PagingText() {
4576
- return this.lngResourceService.GetString(this.pagingtext, {
4577
- CURRENTPAGE: this.getCurrentPageNumber(),
4578
- TOTALPAGES: this.getTotalPageNumber(),
4579
- });
4580
- }
4581
- /**
4582
- * Property mit Text für Total Einträge in Seite
4583
- */
4584
- get PageSizeText() {
4585
- return this.lngResourceService.GetString(this.pagesizetext);
4586
- }
4587
- }
4588
- SacPagingCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacPagingCommon, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
4589
- SacPagingCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacPagingCommon, inputs: { pagerdata: "pagerdata", pagingtext: "pagingtext", pagesizetext: "pagesizetext", pagesizes: "pagesizes", pagesizedisabled: "pagesizedisabled", name: "name" }, outputs: { paging: "paging" }, ngImport: i0 });
4590
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacPagingCommon, decorators: [{
4591
- type: Directive
4592
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { pagerdata: [{
4593
- type: Input
4594
- }], pagingtext: [{
4595
- type: Input
4596
- }], pagesizetext: [{
4597
- type: Input
4598
- }], pagesizes: [{
4599
- type: Input
4600
- }], pagesizedisabled: [{
4601
- type: Input
4602
- }], name: [{
4603
- type: Input
4604
- }], paging: [{
4605
- type: Output
4606
- }] } });
4607
-
4608
- /**
4609
- * Base Grid Action Button
4610
- */
4611
- class SacGridButtonCommon {
4612
- constructor() {
4613
- /**
4614
- * Input Property für Styling des Buttons. Deffiniert die Css Klassen des Buttons
4615
- */
4616
- this.iconstyle = '';
4617
- /**
4618
- * Button ist deaktiviert
4619
- */
4620
- this._isdisabledvalue = false;
4621
- /**
4622
- * Event wenn auf den Button geklickt wird
4623
- */
4624
- this.clicked = new EventEmitter();
4766
+ */
4767
+ getTotalPageNumber() {
4768
+ return this.lastPageIndex + 1;
4625
4769
  }
4626
4770
  /**
4627
- * Deaktivieren von Buttons
4628
- * @param v Deaktiviert den Button
4629
- * @return Definiert ob der Button deaktiviert ist
4771
+ * Text mit Aktueller Seite und Total Seiten
4630
4772
  */
4631
- set isdisabled(v) {
4632
- if (v === null || v === undefined || typeof v === 'boolean') {
4633
- this._isdisabledvalue = v;
4634
- }
4635
- else {
4636
- this._isdisabledvalue = v === 'true';
4637
- }
4638
- }
4639
- get isdisabled() {
4640
- return this._isdisabledvalue;
4773
+ get PagingText() {
4774
+ return this.lngResourceService.GetString(this.pagingtext, {
4775
+ CURRENTPAGE: this.getCurrentPageNumber(),
4776
+ TOTALPAGES: this.getTotalPageNumber(),
4777
+ });
4641
4778
  }
4642
4779
  /**
4643
- * Die Methode wird das cklickaction Emitter aktivieren
4780
+ * Property mit Text für Total Einträge in Seite
4644
4781
  */
4645
- callaction() {
4646
- if (!this._isdisabledvalue) {
4647
- this.clicked.emit(this.iconstyle);
4648
- }
4782
+ get PageSizeText() {
4783
+ return this.lngResourceService.GetString(this.pagesizetext);
4649
4784
  }
4650
4785
  }
4651
- SacGridButtonCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridButtonCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4652
- SacGridButtonCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacGridButtonCommon, inputs: { iconstyle: "iconstyle", icon: "icon", isdisabled: "isdisabled" }, outputs: { clicked: "clicked" }, ngImport: i0 });
4653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridButtonCommon, decorators: [{
4786
+ SacPagingCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacPagingCommon, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
4787
+ SacPagingCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacPagingCommon, inputs: { pagerdata: "pagerdata", pagingtext: "pagingtext", pagesizetext: "pagesizetext", pagesizes: "pagesizes", pagesizedisabled: "pagesizedisabled", name: "name" }, outputs: { paging: "paging" }, ngImport: i0 });
4788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacPagingCommon, decorators: [{
4654
4789
  type: Directive
4655
- }], propDecorators: { iconstyle: [{
4790
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { pagerdata: [{
4656
4791
  type: Input
4657
- }], icon: [{
4792
+ }], pagingtext: [{
4658
4793
  type: Input
4659
- }], isdisabled: [{
4794
+ }], pagesizetext: [{
4660
4795
  type: Input
4661
- }], clicked: [{
4662
- type: Output
4663
- }] } });
4664
-
4665
- /**
4666
- * Basis Komponente für SacGridImage
4667
- */
4668
- class SacGridImageCommon {
4669
- }
4670
- SacGridImageCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridImageCommon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4671
- SacGridImageCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacGridImageCommon, inputs: { iconstyle: "iconstyle" }, ngImport: i0 });
4672
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacGridImageCommon, decorators: [{
4673
- type: Directive
4674
- }], propDecorators: { iconstyle: [{
4796
+ }], pagesizes: [{
4797
+ type: Input
4798
+ }], pagesizedisabled: [{
4799
+ type: Input
4800
+ }], name: [{
4675
4801
  type: Input
4802
+ }], paging: [{
4803
+ type: Output
4676
4804
  }] } });
4677
4805
 
4678
4806
  /**
@@ -4683,17 +4811,18 @@ const moment$4 = moment_['default'];
4683
4811
  * Base Klasse für Date/Time Controls
4684
4812
  */
4685
4813
  class SacBaseDateTimeControl extends SacBaseModelControl {
4686
- // #region Constructor
4814
+ // #endregion Properties
4815
+ // #region Constructors
4687
4816
  /**
4688
- * Konstruktor
4689
- * @param parent typ SacFormCommon
4690
- * @param injector typ Injector
4691
- * @param _elementRef typ ElementRef
4817
+ * Constructor
4818
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
4819
+ * @param injector Injector for injecting services
4820
+ * @param elementRef reference to html element
4692
4821
  */
4693
- constructor(parent, injector, _elementRef) {
4694
- super(parent, injector);
4695
- this._elementRef = _elementRef;
4696
- //#region Abstract Methods
4822
+ constructor(formlayout, injector, elementRef) {
4823
+ super(formlayout, injector);
4824
+ this.elementRef = elementRef;
4825
+ // #region Properties
4697
4826
  /**
4698
4827
  * das property enthielt das Value als string. Default ist ''
4699
4828
  */
@@ -4706,14 +4835,6 @@ class SacBaseDateTimeControl extends SacBaseModelControl {
4706
4835
  * TextBox Placeholder
4707
4836
  */
4708
4837
  this.placeholder = null;
4709
- /**
4710
- * Resource Key für Validation Message Required bei Control
4711
- */
4712
- this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
4713
- /**
4714
- * Resource Key für Validation Message Required in Validation Summary
4715
- */
4716
- this.validationmessagerequiredsummary = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
4717
4838
  /**
4718
4839
  * Resource Key für Validation Message DateTimeFormat bei Control
4719
4840
  */
@@ -4722,51 +4843,17 @@ class SacBaseDateTimeControl extends SacBaseModelControl {
4722
4843
  * Resource Key für Validation Message DateTimeFormat in Validation Summary
4723
4844
  */
4724
4845
  this.validationmessagedatetimeformatsummary = 'VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT';
4846
+ /**
4847
+ * Resource Key für Validation Message Required bei Control
4848
+ */
4849
+ this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
4850
+ /**
4851
+ * Resource Key für Validation Message Required in Validation Summary
4852
+ */
4853
+ this.validationmessagerequiredsummary = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
4725
4854
  }
4726
- // #endregion
4727
- /**
4728
- * Init Event
4729
- */
4730
- ngOnInit() {
4731
- super.ngOnInit();
4732
- this.SetDateTimeFormat();
4733
- }
4734
- //#endregion
4735
- //#region Variablen
4736
- //#endregion
4737
- // #region Properties
4738
- //#endregion
4739
- //#region ValueControlAccess
4740
- /**
4741
- * Overwrite WriteValue to Set correct Date Object
4742
- */
4743
- writeValue(value) {
4744
- if (value === '' || value === null || value === undefined) {
4745
- // Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.
4746
- this._valueAsString = '';
4747
- // Set Internal Property
4748
- this._value = null;
4749
- }
4750
- else {
4751
- this._value = this.getDate(value).toDate();
4752
- }
4753
- super.writeValue(this._value);
4754
- }
4755
- /**
4756
- * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann
4757
- */
4758
- getDate(timestamp) {
4759
- const date = new Date(timestamp);
4760
- const year = date.getUTCFullYear();
4761
- const month = date.getUTCMonth();
4762
- const day = date.getUTCDate();
4763
- const hours = date.getUTCHours();
4764
- const minutes = date.getUTCMinutes();
4765
- const seconds = date.getUTCSeconds();
4766
- return moment$4(Date.UTC(year, month, day, hours, minutes, seconds));
4767
- }
4768
- //#endregion
4769
- // #region Value as String
4855
+ // #endregion Constructors
4856
+ // #region Public Getters And Setters
4770
4857
  /**
4771
4858
  * Das Input bekommt das value von typ string
4772
4859
  */
@@ -4793,23 +4880,34 @@ class SacBaseDateTimeControl extends SacBaseModelControl {
4793
4880
  return date.local().format(this.GetDateTimeFormatString());
4794
4881
  }
4795
4882
  }
4883
+ // #endregion Public Getters And Setters
4884
+ // #region Public Methods
4885
+ /**
4886
+ * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann
4887
+ */
4888
+ getDate(timestamp) {
4889
+ const date = new Date(timestamp);
4890
+ const year = date.getUTCFullYear();
4891
+ const month = date.getUTCMonth();
4892
+ const day = date.getUTCDate();
4893
+ const hours = date.getUTCHours();
4894
+ const minutes = date.getUTCMinutes();
4895
+ const seconds = date.getUTCSeconds();
4896
+ return moment$4(Date.UTC(year, month, day, hours, minutes, seconds));
4897
+ }
4898
+ /**
4899
+ * Init Event
4900
+ */
4901
+ ngOnInit() {
4902
+ super.ngOnInit();
4903
+ this.SetDateTimeFormat();
4904
+ }
4796
4905
  /**
4797
4906
  * setzt das value von typ string zu property valuestring
4798
4907
  */
4799
4908
  setValueString(v) {
4800
4909
  this.valuestring = v;
4801
4910
  }
4802
- // #endregion
4803
- // #region Private Methods
4804
- SetDateTimeFormat() {
4805
- // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
4806
- if (this.ngControl) {
4807
- this.ngControl.datetimeformatstring =
4808
- this.GetDateTimeFormatString();
4809
- }
4810
- }
4811
- // #endregion
4812
- //#region Validation
4813
4911
  /**
4814
4912
  * Validator
4815
4913
  */
@@ -4821,23 +4919,47 @@ class SacBaseDateTimeControl extends SacBaseModelControl {
4821
4919
  }
4822
4920
  return error;
4823
4921
  }
4922
+ /**
4923
+ * Overwrite WriteValue to Set correct Date Object
4924
+ */
4925
+ writeValue(value) {
4926
+ if (value === '' || value === null || value === undefined) {
4927
+ // Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.
4928
+ this._valueAsString = '';
4929
+ // Set Internal Property
4930
+ this._value = null;
4931
+ }
4932
+ else {
4933
+ this._value = this.getDate(value).toDate();
4934
+ }
4935
+ super.writeValue(this._value);
4936
+ }
4937
+ // #endregion Public Abstract Methods
4938
+ // #region Private Methods
4939
+ SetDateTimeFormat() {
4940
+ // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
4941
+ if (this.ngControl) {
4942
+ this.ngControl.datetimeformatstring =
4943
+ this.GetDateTimeFormatString();
4944
+ }
4945
+ }
4824
4946
  }
4825
- SacBaseDateTimeControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBaseDateTimeControl, deps: [{ token: SacFormCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
4826
- SacBaseDateTimeControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacBaseDateTimeControl, inputs: { isrequired: "isrequired", placeholder: "placeholder", validationmessagerequired: "validationmessagerequired", validationmessagerequiredsummary: "validationmessagerequiredsummary", validationmessagedatetimeformat: "validationmessagedatetimeformat", validationmessagedatetimeformatsummary: "validationmessagedatetimeformatsummary", valuestring: "valuestring" }, usesInheritance: true, ngImport: i0 });
4947
+ SacBaseDateTimeControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBaseDateTimeControl, deps: [{ token: SacFormLayoutCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
4948
+ SacBaseDateTimeControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacBaseDateTimeControl, inputs: { isrequired: "isrequired", placeholder: "placeholder", validationmessagedatetimeformat: "validationmessagedatetimeformat", validationmessagedatetimeformatsummary: "validationmessagedatetimeformatsummary", validationmessagerequired: "validationmessagerequired", validationmessagerequiredsummary: "validationmessagerequiredsummary", valuestring: "valuestring" }, usesInheritance: true, ngImport: i0 });
4827
4949
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacBaseDateTimeControl, decorators: [{
4828
4950
  type: Directive
4829
- }], ctorParameters: function () { return [{ type: SacFormCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { isrequired: [{
4951
+ }], ctorParameters: function () { return [{ type: SacFormLayoutCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { isrequired: [{
4830
4952
  type: Input
4831
4953
  }], placeholder: [{
4832
4954
  type: Input
4833
- }], validationmessagerequired: [{
4834
- type: Input
4835
- }], validationmessagerequiredsummary: [{
4836
- type: Input
4837
4955
  }], validationmessagedatetimeformat: [{
4838
4956
  type: Input
4839
4957
  }], validationmessagedatetimeformatsummary: [{
4840
4958
  type: Input
4959
+ }], validationmessagerequired: [{
4960
+ type: Input
4961
+ }], validationmessagerequiredsummary: [{
4962
+ type: Input
4841
4963
  }], valuestring: [{
4842
4964
  type: Input
4843
4965
  }] } });
@@ -4852,14 +4974,14 @@ const moment$3 = moment_['default'];
4852
4974
  class SacDateCommon extends SacBaseDateTimeControl {
4853
4975
  // #endregion
4854
4976
  /**
4855
- * Konstruktor
4856
- * @param parent typ SacFormCommon
4857
- * @param injector typ Injector
4858
- * @param _elementRef typ ElementRef
4977
+ * Constructor
4978
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
4979
+ * @param injector Injector for injecting services
4980
+ * @param elementRef reference to html element
4859
4981
  */
4860
- constructor(parent, injector, _elementRef) {
4861
- super(parent, injector, _elementRef);
4862
- this._elementRef = _elementRef;
4982
+ constructor(formlayout, injector, elementRef) {
4983
+ super(formlayout, injector, elementRef);
4984
+ this.elementRef = elementRef;
4863
4985
  // #region Constants
4864
4986
  /**
4865
4987
  * Format des Datums
@@ -4988,7 +5110,7 @@ class SacDateCommon extends SacBaseDateTimeControl {
4988
5110
  * HostListener
4989
5111
  */
4990
5112
  onClick(targetElement) {
4991
- const clickedInside = this._elementRef.nativeElement.contains(targetElement);
5113
+ const clickedInside = this.elementRef.nativeElement.contains(targetElement);
4992
5114
  if (!clickedInside) {
4993
5115
  this._showselector = false;
4994
5116
  }
@@ -5031,11 +5153,11 @@ class SacDateCommon extends SacBaseDateTimeControl {
5031
5153
  return error;
5032
5154
  }
5033
5155
  }
5034
- SacDateCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDateCommon, deps: [{ token: SacFormCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5156
+ SacDateCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDateCommon, deps: [{ token: SacFormLayoutCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5035
5157
  SacDateCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDateCommon, inputs: { mindate: "mindate", maxdate: "maxdate", validationmessagemindate: "validationmessagemindate", validationmessagesummarymindate: "validationmessagesummarymindate", validationmessagemaxdate: "validationmessagemaxdate", validationmessagesummarymaxdate: "validationmessagesummarymaxdate" }, host: { listeners: { "document:click": "onClick($event.target)" } }, usesInheritance: true, ngImport: i0 });
5036
5158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDateCommon, decorators: [{
5037
5159
  type: Directive
5038
- }], ctorParameters: function () { return [{ type: SacFormCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { mindate: [{
5160
+ }], ctorParameters: function () { return [{ type: SacFormLayoutCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { mindate: [{
5039
5161
  type: Input
5040
5162
  }], maxdate: [{
5041
5163
  type: Input
@@ -5520,14 +5642,14 @@ const moment$1 = moment_['default'];
5520
5642
  class SacDateTimeCommon extends SacBaseDateTimeControl {
5521
5643
  // #endregion
5522
5644
  /**
5523
- * Konstruktor
5524
- * @param parent typ SacFormCommon
5525
- * @param injector typ Injector
5526
- * @param _elementRef typ ElementRef
5645
+ * Constructor
5646
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
5647
+ * @param injector Injector for injecting services
5648
+ * @param elementRef reference to html element
5527
5649
  */
5528
- constructor(parent, injector, _elementRef) {
5529
- super(parent, injector, _elementRef);
5530
- this._elementRef = _elementRef;
5650
+ constructor(formlayout, injector, elementRef) {
5651
+ super(formlayout, injector, elementRef);
5652
+ this.elementRef = elementRef;
5531
5653
  //#endregion
5532
5654
  // #region Constants
5533
5655
  /**
@@ -5674,7 +5796,7 @@ class SacDateTimeCommon extends SacBaseDateTimeControl {
5674
5796
  * HostListener
5675
5797
  */
5676
5798
  onClick(targetElement) {
5677
- const clickedInside = this._elementRef.nativeElement.contains(targetElement);
5799
+ const clickedInside = this.elementRef.nativeElement.contains(targetElement);
5678
5800
  if (!clickedInside) {
5679
5801
  this._showselector = false;
5680
5802
  }
@@ -5717,11 +5839,11 @@ class SacDateTimeCommon extends SacBaseDateTimeControl {
5717
5839
  return error;
5718
5840
  }
5719
5841
  }
5720
- SacDateTimeCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDateTimeCommon, deps: [{ token: SacFormCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5842
+ SacDateTimeCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDateTimeCommon, deps: [{ token: SacFormLayoutCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5721
5843
  SacDateTimeCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDateTimeCommon, inputs: { mindate: "mindate", maxdate: "maxdate", validationmessagemindate: "validationmessagemindate", validationmessagesummarymindate: "validationmessagesummarymindate", validationmessagemaxdate: "validationmessagemaxdate", validationmessagesummarymaxdate: "validationmessagesummarymaxdate" }, host: { listeners: { "document:click": "onClick($event.target)" } }, usesInheritance: true, ngImport: i0 });
5722
5844
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDateTimeCommon, decorators: [{
5723
5845
  type: Directive
5724
- }], ctorParameters: function () { return [{ type: SacFormCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { mindate: [{
5846
+ }], ctorParameters: function () { return [{ type: SacFormLayoutCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { mindate: [{
5725
5847
  type: Input
5726
5848
  }], maxdate: [{
5727
5849
  type: Input
@@ -5748,14 +5870,14 @@ const moment = moment_['default'];
5748
5870
  class SacTimeCommon extends SacBaseDateTimeControl {
5749
5871
  // #endregion
5750
5872
  /**
5751
- * Konstruktor
5752
- * @param parent typ SacFormCommon
5753
- * @param injector typ Injector
5754
- * @param _elementRef typ ElementRef
5873
+ * Constructor
5874
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
5875
+ * @param injector Injector for injecting services
5876
+ * @param elementRef reference to html element
5755
5877
  */
5756
- constructor(parent, injector, _elementRef) {
5757
- super(parent, injector, _elementRef);
5758
- this._elementRef = _elementRef;
5878
+ constructor(formlayout, injector, elementRef) {
5879
+ super(formlayout, injector, elementRef);
5880
+ this.elementRef = elementRef;
5759
5881
  // #region Constants
5760
5882
  /**
5761
5883
  * Format des Datums
@@ -5883,7 +6005,7 @@ class SacTimeCommon extends SacBaseDateTimeControl {
5883
6005
  * HostListener
5884
6006
  */
5885
6007
  onClick(targetElement) {
5886
- const clickedInside = this._elementRef.nativeElement.contains(targetElement);
6008
+ const clickedInside = this.elementRef.nativeElement.contains(targetElement);
5887
6009
  if (!clickedInside) {
5888
6010
  this._showselector = false;
5889
6011
  }
@@ -5926,11 +6048,11 @@ class SacTimeCommon extends SacBaseDateTimeControl {
5926
6048
  return error;
5927
6049
  }
5928
6050
  }
5929
- SacTimeCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTimeCommon, deps: [{ token: SacFormCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
6051
+ SacTimeCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTimeCommon, deps: [{ token: SacFormLayoutCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5930
6052
  SacTimeCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTimeCommon, inputs: { mintime: "mintime", maxtime: "maxtime", validationmessagemintime: "validationmessagemintime", validationmessagesummarymintime: "validationmessagesummarymintime", validationmessagemaxtime: "validationmessagemaxtime", validationmessagesummarymaxtime: "validationmessagesummarymaxtime" }, host: { listeners: { "document:click": "onClick($event.target)" } }, usesInheritance: true, ngImport: i0 });
5931
6053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTimeCommon, decorators: [{
5932
6054
  type: Directive
5933
- }], ctorParameters: function () { return [{ type: SacFormCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { mintime: [{
6055
+ }], ctorParameters: function () { return [{ type: SacFormLayoutCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { mintime: [{
5934
6056
  type: Input
5935
6057
  }], maxtime: [{
5936
6058
  type: Input
@@ -5947,36 +6069,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
5947
6069
  args: ['document:click', ['$event.target']]
5948
6070
  }] } });
5949
6071
 
5950
- /**
5951
- * Common Klasse für Static Label Control
5952
- **/
5953
- class SacStaticLabelCommon extends SacInputBase {
5954
- constructor() {
5955
- super(...arguments);
5956
- /**
5957
- * Erlaubt HTML Content in der Anzeige des Wertes
5958
- */
5959
- this.allowhtml = false;
5960
- }
5961
- /**
5962
- * Validierung des Controls
5963
- *
5964
- * @param c Control das Validiert werden soll
5965
- * @returns Fehlermeldung aus Validation oder NULL
5966
- */
5967
- validateData(c) {
5968
- // Keine Validierung, daher immer NULL
5969
- return null;
5970
- }
5971
- }
5972
- SacStaticLabelCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacStaticLabelCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
5973
- SacStaticLabelCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacStaticLabelCommon, inputs: { allowhtml: "allowhtml" }, usesInheritance: true, ngImport: i0 });
5974
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacStaticLabelCommon, decorators: [{
5975
- type: Directive
5976
- }], propDecorators: { allowhtml: [{
5977
- type: Input
5978
- }] } });
5979
-
5980
6072
  /**
5981
6073
  * Common Control für Form Item Container.
5982
6074
  **/
@@ -6020,9 +6112,39 @@ SacStaticFormContainerCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0
6020
6112
  SacStaticFormContainerCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacStaticFormContainerCommon, inputs: { tooltiptext: "tooltiptext", isrequired: "isrequired" }, usesInheritance: true, ngImport: i0 });
6021
6113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacStaticFormContainerCommon, decorators: [{
6022
6114
  type: Directive
6023
- }], propDecorators: { tooltiptext: [{
6024
- type: Input
6025
- }], isrequired: [{
6115
+ }], propDecorators: { tooltiptext: [{
6116
+ type: Input
6117
+ }], isrequired: [{
6118
+ type: Input
6119
+ }] } });
6120
+
6121
+ /**
6122
+ * Common Klasse für Static Label Control
6123
+ **/
6124
+ class SacStaticLabelCommon extends SacInputBase {
6125
+ constructor() {
6126
+ super(...arguments);
6127
+ /**
6128
+ * Erlaubt HTML Content in der Anzeige des Wertes
6129
+ */
6130
+ this.allowhtml = false;
6131
+ }
6132
+ /**
6133
+ * Validierung des Controls
6134
+ *
6135
+ * @param c Control das Validiert werden soll
6136
+ * @returns Fehlermeldung aus Validation oder NULL
6137
+ */
6138
+ validateData(c) {
6139
+ // Keine Validierung, daher immer NULL
6140
+ return null;
6141
+ }
6142
+ }
6143
+ SacStaticLabelCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacStaticLabelCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6144
+ SacStaticLabelCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacStaticLabelCommon, inputs: { allowhtml: "allowhtml" }, usesInheritance: true, ngImport: i0 });
6145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacStaticLabelCommon, decorators: [{
6146
+ type: Directive
6147
+ }], propDecorators: { allowhtml: [{
6026
6148
  type: Input
6027
6149
  }] } });
6028
6150
 
@@ -6216,15 +6338,18 @@ class TinyMceDialogSettings {
6216
6338
  * Basis Komponente für TinyMCE Editor
6217
6339
  */
6218
6340
  class SacTinyMceCommon extends SacBaseModelControl {
6341
+ // #endregion Properties
6342
+ // #region Constructors
6219
6343
  /**
6220
- * Konstruktor
6221
- * @param parent Instanz vom Formular
6222
- * @param injector Injector Service
6223
- * @param ngZone NgZone für Javascript in TinyMCE
6344
+ * Constructor
6345
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
6346
+ * @param injector Injector for injecting services
6347
+ * @param ngZone ngzone for handling external javascripts
6224
6348
  */
6225
- constructor(parent, injector, ngZone) {
6226
- super(parent, injector);
6349
+ constructor(formlayout, injector, ngZone) {
6350
+ super(formlayout, injector);
6227
6351
  this.ngZone = ngZone;
6352
+ // #region Properties
6228
6353
  /**
6229
6354
  * Default Config mit Standardwerten für TinyMCE
6230
6355
  */
@@ -6238,49 +6363,37 @@ class SacTinyMceCommon extends SacBaseModelControl {
6238
6363
  save_onsavecallback: () => { },
6239
6364
  };
6240
6365
  /**
6241
- * TinyMCE Config
6242
- */
6243
- this._config = {};
6244
- /**
6245
- * Der Select Dialog wird angezeigt
6246
- */
6247
- this.selectdialogvisible = false;
6248
- /**
6249
- * Definiert das Control als Required
6366
+ * Erlaubt im Filebrowser das löschen von Dateien
6250
6367
  */
6251
- this.isrequired = false;
6368
+ this.allowfiledelete = false;
6252
6369
  /**
6253
- * Höhe des Editors
6370
+ * Erlaubt im Filebrowser das umbennen von Dateien
6254
6371
  */
6255
- this.height = undefined;
6372
+ this.allowfilerename = false;
6256
6373
  /**
6257
- * URL zu Filebrowser Backend
6374
+ * Erlaubt im Filebrowser das hochladen von Files
6258
6375
  */
6259
- this.filebrowserapiurl = null;
6376
+ this.allowfileupload = false;
6260
6377
  /**
6261
6378
  * Erlaubt im Filebrowser das anlegen eines Ordners
6262
6379
  */
6263
6380
  this.allowfoldercreate = false;
6264
- /**
6265
- * Erlaubt im Filebrowser das umbennen eines Ordners
6266
- */
6267
- this.allowfolderrename = false;
6268
6381
  /**
6269
6382
  * Erlaubt im Filebrowser das löschen eines Ordners
6270
6383
  */
6271
6384
  this.allowfolderdelete = false;
6272
6385
  /**
6273
- * Erlaubt im Filebrowser das hochladen von Files
6386
+ * Erlaubt im Filebrowser das umbennen eines Ordners
6274
6387
  */
6275
- this.allowfileupload = false;
6388
+ this.allowfolderrename = false;
6276
6389
  /**
6277
- * Erlaubt im Filebrowser das umbennen von Dateien
6390
+ * URL zu Filebrowser Backend
6278
6391
  */
6279
- this.allowfilerename = false;
6392
+ this.filebrowserapiurl = null;
6280
6393
  /**
6281
- * Erlaubt im Filebrowser das löschen von Dateien
6394
+ * File Extensions für Links (Format: .xxx,.yyy,.eee)
6282
6395
  */
6283
- this.allowfiledelete = false;
6396
+ this.filetypesfiles = '';
6284
6397
  /**
6285
6398
  * File Extensions für Images (Format: .xxx,.yyy,.eee)
6286
6399
  */
@@ -6290,9 +6403,13 @@ class SacTinyMceCommon extends SacBaseModelControl {
6290
6403
  */
6291
6404
  this.filetypesvideo = '.mp4,.m4v,.ogv,.webm,.mov';
6292
6405
  /**
6293
- * File Extensions für Links (Format: .xxx,.yyy,.eee)
6406
+ * Höhe des Editors
6294
6407
  */
6295
- this.filetypesfiles = '';
6408
+ this.height = undefined;
6409
+ /**
6410
+ * Definiert das Control als Required
6411
+ */
6412
+ this.isrequired = false;
6296
6413
  /**
6297
6414
  * Resource Key für Validation Message Required bei Control
6298
6415
  */
@@ -6305,9 +6422,19 @@ class SacTinyMceCommon extends SacBaseModelControl {
6305
6422
  * Event wenn Save Action in TinyMCE ausgelöst wird
6306
6423
  */
6307
6424
  this.onsave = new EventEmitter();
6425
+ /**
6426
+ * TinyMCE Config
6427
+ */
6428
+ this._config = {};
6429
+ /**
6430
+ * Der Select Dialog wird angezeigt
6431
+ */
6432
+ this.selectdialogvisible = false;
6308
6433
  this.lngResourceService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService());
6309
6434
  this.config = {};
6310
6435
  }
6436
+ // #endregion Constructors
6437
+ // #region Public Getters And Setters
6311
6438
  /**
6312
6439
  * TinyMCE Konfiguration
6313
6440
  * @link https://www.tiny.cloud/docs/configure/
@@ -6321,7 +6448,35 @@ class SacTinyMceCommon extends SacBaseModelControl {
6321
6448
  get config() {
6322
6449
  return this._config;
6323
6450
  }
6324
- //#region Integration Select Dialog für Fileauswahl
6451
+ // #endregion Public Getters And Setters
6452
+ // #region Public Methods
6453
+ /**
6454
+ * Schliesst den Dateiauswahl Dialog
6455
+ */
6456
+ closeSelectDialog() {
6457
+ this.selectdialogvisible = false;
6458
+ }
6459
+ /**
6460
+ * Löst die Speichern Action aus
6461
+ * @param content Content als String
6462
+ */
6463
+ save(content) {
6464
+ this.onsave.emit(content);
6465
+ }
6466
+ /**
6467
+ * Setzt das Resultat aus dem Dateiauswahl Dialog
6468
+ */
6469
+ setSelectDialogResult() {
6470
+ if (this.selectDialogSettings.value) {
6471
+ if (this.selectDialogSettings.value.startsWith('/') ||
6472
+ this.selectDialogSettings.value.startsWith('\\')) {
6473
+ this.selectDialogSettings.value =
6474
+ this.selectDialogSettings.value.substring(1);
6475
+ }
6476
+ this.selectDialogSettings.callback(this.selectDialogSettings.value);
6477
+ }
6478
+ this.closeSelectDialog();
6479
+ }
6325
6480
  /**
6326
6481
  * Zeigt den Dateiauswahl Dialog an
6327
6482
  * @param callback Callback Methode welche aufgerufen wird, wenn der Dialog geschlossen wird
@@ -6356,34 +6511,6 @@ class SacTinyMceCommon extends SacBaseModelControl {
6356
6511
  });
6357
6512
  });
6358
6513
  }
6359
- /**
6360
- * Setzt das Resultat aus dem Dateiauswahl Dialog
6361
- */
6362
- setSelectDialogResult() {
6363
- if (this.selectDialogSettings.value) {
6364
- if (this.selectDialogSettings.value.startsWith('/') ||
6365
- this.selectDialogSettings.value.startsWith('\\')) {
6366
- this.selectDialogSettings.value =
6367
- this.selectDialogSettings.value.substring(1);
6368
- }
6369
- this.selectDialogSettings.callback(this.selectDialogSettings.value);
6370
- }
6371
- this.closeSelectDialog();
6372
- }
6373
- /**
6374
- * Schliesst den Dateiauswahl Dialog
6375
- */
6376
- closeSelectDialog() {
6377
- this.selectdialogvisible = false;
6378
- }
6379
- //#endregion
6380
- /**
6381
- * Löst die Speichern Action aus
6382
- * @param content Content als String
6383
- */
6384
- save(content) {
6385
- this.onsave.emit(content);
6386
- }
6387
6514
  /**
6388
6515
  * Validiert das Control
6389
6516
  * @param c Control Instanz die valdidiert wird
@@ -6396,6 +6523,8 @@ class SacTinyMceCommon extends SacBaseModelControl {
6396
6523
  }
6397
6524
  return error;
6398
6525
  }
6526
+ // #endregion Public Abstract Methods
6527
+ // #region Private Methods
6399
6528
  /**
6400
6529
  * Gibt die TinyMCE Settings zurück, die aus den Properties der Angular Komponenten erzeugt werden
6401
6530
  * @returns Objekt mit Settings
@@ -6408,45 +6537,105 @@ class SacTinyMceCommon extends SacBaseModelControl {
6408
6537
  return settings;
6409
6538
  }
6410
6539
  }
6411
- SacTinyMceCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTinyMceCommon, deps: [{ token: SacFormCommon, host: true }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
6412
- SacTinyMceCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTinyMceCommon, inputs: { isrequired: "isrequired", height: "height", filebrowserapiurl: "filebrowserapiurl", allowfoldercreate: "allowfoldercreate", allowfolderrename: "allowfolderrename", allowfolderdelete: "allowfolderdelete", allowfileupload: "allowfileupload", allowfilerename: "allowfilerename", allowfiledelete: "allowfiledelete", filetypesimages: "filetypesimages", filetypesvideo: "filetypesvideo", filetypesfiles: "filetypesfiles", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", config: "config" }, outputs: { onsave: "onsave" }, usesInheritance: true, ngImport: i0 });
6540
+ SacTinyMceCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTinyMceCommon, deps: [{ token: SacFormLayoutCommon, host: true }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
6541
+ SacTinyMceCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTinyMceCommon, inputs: { allowfiledelete: "allowfiledelete", allowfilerename: "allowfilerename", allowfileupload: "allowfileupload", allowfoldercreate: "allowfoldercreate", allowfolderdelete: "allowfolderdelete", allowfolderrename: "allowfolderrename", filebrowserapiurl: "filebrowserapiurl", filetypesfiles: "filetypesfiles", filetypesimages: "filetypesimages", filetypesvideo: "filetypesvideo", height: "height", isrequired: "isrequired", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", config: "config" }, outputs: { onsave: "onsave" }, usesInheritance: true, ngImport: i0 });
6413
6542
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTinyMceCommon, decorators: [{
6414
6543
  type: Directive
6415
6544
  }], ctorParameters: function () {
6416
- return [{ type: SacFormCommon, decorators: [{
6545
+ return [{ type: SacFormLayoutCommon, decorators: [{
6417
6546
  type: Host
6418
6547
  }] }, { type: i0.Injector }, { type: i0.NgZone }];
6419
- }, propDecorators: { isrequired: [{
6548
+ }, propDecorators: { allowfiledelete: [{
6420
6549
  type: Input
6421
- }], height: [{
6550
+ }], allowfilerename: [{
6422
6551
  type: Input
6423
- }], filebrowserapiurl: [{
6552
+ }], allowfileupload: [{
6424
6553
  type: Input
6425
6554
  }], allowfoldercreate: [{
6426
6555
  type: Input
6427
- }], allowfolderrename: [{
6428
- type: Input
6429
6556
  }], allowfolderdelete: [{
6430
6557
  type: Input
6431
- }], allowfileupload: [{
6558
+ }], allowfolderrename: [{
6432
6559
  type: Input
6433
- }], allowfilerename: [{
6560
+ }], filebrowserapiurl: [{
6434
6561
  type: Input
6435
- }], allowfiledelete: [{
6562
+ }], filetypesfiles: [{
6436
6563
  type: Input
6437
6564
  }], filetypesimages: [{
6438
6565
  type: Input
6439
6566
  }], filetypesvideo: [{
6440
6567
  type: Input
6441
- }], filetypesfiles: [{
6568
+ }], height: [{
6569
+ type: Input
6570
+ }], isrequired: [{
6442
6571
  type: Input
6443
6572
  }], validationmessagerequired: [{
6444
6573
  type: Input
6445
6574
  }], validationmessagesummaryrequired: [{
6446
6575
  type: Input
6576
+ }], onsave: [{
6577
+ type: Output
6447
6578
  }], config: [{
6448
6579
  type: Input
6449
- }], onsave: [{
6580
+ }] } });
6581
+
6582
+ /**
6583
+ *Basis Komponente für SacTreeItemAction
6584
+ */
6585
+ class SacTreeItemActionCommon {
6586
+ /**
6587
+ * Konstruktor
6588
+ * @param el Element Referenz
6589
+ */
6590
+ constructor(el) {
6591
+ this.el = el;
6592
+ /**
6593
+ * Event wenn auf das Icon geclickt wird
6594
+ */
6595
+ this.clicked = new EventEmitter();
6596
+ }
6597
+ /**
6598
+ * lifecycle OnInit hook. Wird aufgeruren sobald das Komponent initialisiert ist.
6599
+ */
6600
+ ngOnInit() {
6601
+ let rootElement = this.el.nativeElement;
6602
+ let parentElement = rootElement.parentElement;
6603
+ while (rootElement.firstChild) {
6604
+ parentElement.insertBefore(rootElement.firstChild, rootElement);
6605
+ }
6606
+ parentElement.removeChild(rootElement);
6607
+ }
6608
+ /**
6609
+ * Die Methode erstellt die CSS Klasse des Icon. Akzeptiert ein Key-word und baut ein vollständige CSS Klasse.
6610
+ */
6611
+ transformClass(initialClass) {
6612
+ switch (initialClass) {
6613
+ case 'add':
6614
+ return 'jstree-icon icon icon-base-add jstree-add';
6615
+ case 'delete':
6616
+ return 'jstree-icon icon icon-base-delete jstree-delete';
6617
+ default:
6618
+ return initialClass;
6619
+ }
6620
+ }
6621
+ /**
6622
+ * Die Methode wird das cklickaction Emitter aktivieren.
6623
+ */
6624
+ iconaction() {
6625
+ this.clicked.emit();
6626
+ }
6627
+ }
6628
+ SacTreeItemActionCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTreeItemActionCommon, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
6629
+ SacTreeItemActionCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTreeItemActionCommon, inputs: { item: "item", title: "title", iconstyle: "iconstyle" }, outputs: { clicked: "clicked" }, ngImport: i0 });
6630
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTreeItemActionCommon, decorators: [{
6631
+ type: Directive
6632
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { item: [{
6633
+ type: Input
6634
+ }], title: [{
6635
+ type: Input
6636
+ }], iconstyle: [{
6637
+ type: Input
6638
+ }], clicked: [{
6450
6639
  type: Output
6451
6640
  }] } });
6452
6641
 
@@ -6807,67 +6996,7 @@ SacTreeViewChildCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", v
6807
6996
  SacTreeViewChildCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTreeViewChildCommon, usesInheritance: true, ngImport: i0 });
6808
6997
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTreeViewChildCommon, decorators: [{
6809
6998
  type: Directive
6810
- }] });
6811
-
6812
- /**
6813
- *Basis Komponente für SacTreeItemAction
6814
- */
6815
- class SacTreeItemActionCommon {
6816
- /**
6817
- * Konstruktor
6818
- * @param el Element Referenz
6819
- */
6820
- constructor(el) {
6821
- this.el = el;
6822
- /**
6823
- * Event wenn auf das Icon geclickt wird
6824
- */
6825
- this.clicked = new EventEmitter();
6826
- }
6827
- /**
6828
- * lifecycle OnInit hook. Wird aufgeruren sobald das Komponent initialisiert ist.
6829
- */
6830
- ngOnInit() {
6831
- let rootElement = this.el.nativeElement;
6832
- let parentElement = rootElement.parentElement;
6833
- while (rootElement.firstChild) {
6834
- parentElement.insertBefore(rootElement.firstChild, rootElement);
6835
- }
6836
- parentElement.removeChild(rootElement);
6837
- }
6838
- /**
6839
- * Die Methode erstellt die CSS Klasse des Icon. Akzeptiert ein Key-word und baut ein vollständige CSS Klasse.
6840
- */
6841
- transformClass(initialClass) {
6842
- switch (initialClass) {
6843
- case 'add':
6844
- return 'jstree-icon icon icon-base-add jstree-add';
6845
- case 'delete':
6846
- return 'jstree-icon icon icon-base-delete jstree-delete';
6847
- default:
6848
- return initialClass;
6849
- }
6850
- }
6851
- /**
6852
- * Die Methode wird das cklickaction Emitter aktivieren.
6853
- */
6854
- iconaction() {
6855
- this.clicked.emit();
6856
- }
6857
- }
6858
- SacTreeItemActionCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTreeItemActionCommon, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
6859
- SacTreeItemActionCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacTreeItemActionCommon, inputs: { item: "item", title: "title", iconstyle: "iconstyle" }, outputs: { clicked: "clicked" }, ngImport: i0 });
6860
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacTreeItemActionCommon, decorators: [{
6861
- type: Directive
6862
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { item: [{
6863
- type: Input
6864
- }], title: [{
6865
- type: Input
6866
- }], iconstyle: [{
6867
- type: Input
6868
- }], clicked: [{
6869
- type: Output
6870
- }] } });
6999
+ }] });
6871
7000
 
6872
7001
  /**
6873
7002
  * Enum für Tooltip Positionen
@@ -7246,41 +7375,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
7246
7375
  args: ['tooltip', { static: true }]
7247
7376
  }] } });
7248
7377
 
7249
- /**
7250
- * Klasse für den Upload einer Datei in der Upload Component
7251
- */
7252
- class SacUploadFile {
7253
- /**
7254
- * Konstruktor
7255
- * @param ufile Upload Status
7256
- */
7257
- constructor(ufile) {
7258
- this.uploadId = ufile.uploadId;
7259
- this.name = ufile.name;
7260
- this.progress = ufile.progress;
7261
- this.status = ufile.status;
7262
- this.documentid = null;
7263
- }
7264
- }
7378
+ // #region Classes
7265
7379
  /**
7266
7380
  * Base Klasse für Uploader Control
7267
7381
  */
7268
7382
  class SacUploadBase extends SacBaseModelControl {
7383
+ // #endregion Properties
7384
+ // #region Constructors
7269
7385
  /**
7270
7386
  * Constructor
7271
- * @param parent Formular Component
7272
- * @param injector Injector für Komponenten Injection
7273
- * @param renderer Rendering Engine
7274
- * @param ngZone NgZone
7387
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
7388
+ * @param injector Injector for injecting services
7389
+ * @param renderer angular rendering engine
7390
+ * @param ngZone ngzone for handling external scripts
7275
7391
  */
7276
- constructor(parent, injector, renderer, ngZone) {
7277
- super(parent, injector);
7392
+ constructor(formlayout, injector, renderer, ngZone) {
7393
+ super(formlayout, injector);
7278
7394
  this.renderer = renderer;
7279
7395
  this.ngZone = ngZone;
7280
- /**
7281
- * Upload Settings
7282
- */
7283
- this.options = {};
7284
7396
  /**
7285
7397
  * Erlaubte Dateitypen
7286
7398
  */
@@ -7297,23 +7409,26 @@ class SacUploadBase extends SacBaseModelControl {
7297
7409
  * API Endpoint
7298
7410
  */
7299
7411
  this._endpoint = null;
7300
- //#region Properties
7301
7412
  /**
7302
- * Resource Key für Validation Message Required bei Control
7413
+ * Upload Settings
7303
7414
  */
7304
- this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
7415
+ this.options = {};
7305
7416
  /**
7306
- * Resource Key für Validation Message Required in Validation Summary
7417
+ * Definiert das Control als Required
7307
7418
  */
7308
- this.validationmessagesummaryrequired = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
7419
+ this.isrequired = false;
7309
7420
  /**
7310
7421
  * Max. Dateigrösse für Files die hochgeladen werden können. 0 deaktiviert den Filter
7311
7422
  */
7312
7423
  this.maxfilesize = 0;
7313
7424
  /**
7314
- * Definiert das Control als Required
7425
+ * Resource Key für Validation Message Required bei Control
7315
7426
  */
7316
- this.isrequired = false;
7427
+ this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
7428
+ /**
7429
+ * Resource Key für Validation Message Required in Validation Summary
7430
+ */
7431
+ this.validationmessagesummaryrequired = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
7317
7432
  /**
7318
7433
  * Event wenn ein Error in der Komponente ausgelöst wird.
7319
7434
  */
@@ -7344,6 +7459,8 @@ class SacUploadBase extends SacBaseModelControl {
7344
7459
  // Subscripe Event for State changes
7345
7460
  this.uploadService.events.subscribe((ufile) => this.onUpload(ufile));
7346
7461
  }
7462
+ // #endregion Constructors
7463
+ // #region Public Getters And Setters
7347
7464
  /**
7348
7465
  * Erlaubte Dateitypen für den Upload. Format: ".xxx,.yyy,.zzz"
7349
7466
  */
@@ -7351,9 +7468,6 @@ class SacUploadBase extends SacBaseModelControl {
7351
7468
  this._allowedtypes = types;
7352
7469
  this.setAllowedTypes(types);
7353
7470
  }
7354
- get allowedtypes() {
7355
- return this._allowedtypes;
7356
- }
7357
7471
  /**
7358
7472
  * Files nach der Auswahl automatisch hochladen
7359
7473
  */
@@ -7362,19 +7476,12 @@ class SacUploadBase extends SacBaseModelControl {
7362
7476
  this.options.autoUpload = v;
7363
7477
  this.uploadService.connect(this.options);
7364
7478
  }
7365
- get autoupload() {
7366
- return this._autoupload;
7367
- }
7368
7479
  /**
7369
7480
  * Uploads können unterbrochen werden
7370
7481
  */
7371
7482
  set enablepause(v) {
7372
7483
  this._enablepause = v;
7373
7484
  }
7374
- get enablepause() {
7375
- return this._enablepause;
7376
- }
7377
- //#endregion
7378
7485
  /**
7379
7486
  * Definiert den Registration Endpoint für Uploads.
7380
7487
  */
@@ -7382,110 +7489,50 @@ class SacUploadBase extends SacBaseModelControl {
7382
7489
  this._endpoint = v;
7383
7490
  this.setEndpoint(v);
7384
7491
  }
7385
- get endpoint() {
7386
- return this._endpoint;
7387
- }
7388
- /**
7389
- * Initialisiert das Control
7390
- */
7391
- ngOnInit() {
7392
- super.ngOnInit();
7393
- // Init Event Listener for Input File Control and Handling Files
7394
- this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);
7395
- this.setAllowedTypes(this._allowedtypes);
7396
- this.setEndpoint(this._endpoint);
7397
- if (this._endpoint === null) {
7398
- throw new Error('endpoint is not defined!');
7399
- }
7400
- this.uploadService.connect(this.options);
7401
- }
7402
- /**
7403
- * Destroy des Controls
7404
- */
7405
- ngOnDestroy() {
7406
- if (this.listenerFn) {
7407
- this.listenerFn();
7408
- }
7409
- }
7410
- //#region All File Events
7411
- /**
7412
- * Cancel all Uploaded files
7413
- */
7414
- cancelAll() {
7415
- if (this.HasQueueItem() === true) {
7416
- this.uploadService.control({ action: 'cancel' });
7417
- }
7418
- }
7419
7492
  /**
7420
- * Upload all queued Files
7493
+ * Icon for browse button
7421
7494
  */
7422
- uploadAll() {
7423
- if (this.IsStateToUpload() === true) {
7424
- this.uploadService.control({ action: 'upload' });
7425
- }
7495
+ get IconBrowse() {
7496
+ return this.iconService.UploadComponentBrowseIcon;
7426
7497
  }
7427
7498
  /**
7428
- * Pause all Uploads
7499
+ * icon for continous buttons
7429
7500
  */
7430
- pauseAll() {
7431
- if (this.IsUploading() === true) {
7432
- this.uploadService.control({ action: 'pause' });
7433
- }
7501
+ get IconContinue() {
7502
+ return this.iconService.UploadComponentContinueIcon;
7434
7503
  }
7435
- //#endregion
7436
- //#region Singel File Events
7437
7504
  /**
7438
- * Cancel single upload
7439
- * @param uploadId ID of File to cancel
7505
+ * icon for delete buttons
7440
7506
  */
7441
- cancel(uploadId) {
7442
- this.uploadService.control({ action: 'cancel', uploadId: uploadId });
7507
+ get IconDelete() {
7508
+ return this.iconService.UploadComponentDeleteIcon;
7443
7509
  }
7444
7510
  /**
7445
- * Cancel Single File
7446
- * @param uploadId ID of File to Cancel
7511
+ * icon for pause buttons
7447
7512
  */
7448
- pause(uploadId) {
7449
- this.uploadService.control({ action: 'pause', uploadId });
7513
+ get IconPause() {
7514
+ return this.iconService.UploadComponentPauseIcon;
7450
7515
  }
7451
7516
  /**
7452
- * Upload Single File
7453
- *
7454
- * @param uploadId ID of File to Upload
7517
+ * icon for upload button
7455
7518
  */
7456
- upload(uploadId) {
7457
- this.uploadService.control({ action: 'upload', uploadId });
7519
+ get IconUpload() {
7520
+ return this.iconService.UploadComponentUploadIcon;
7458
7521
  }
7459
- //#endregion
7460
- //#region UI Property Helper
7461
- /**
7462
- * Gibt an ob Queue Elemente beinhaltet
7463
- * @returns Elemente in der Queue
7464
- */
7465
- HasQueueItem() {
7466
- return this.uploads.length > 0;
7522
+ get allowedtypes() {
7523
+ return this._allowedtypes;
7467
7524
  }
7468
- /**
7469
- * Prüft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.
7470
- * @returns Elemente für Upload vorhanden
7471
- */
7472
- IsStateToUpload() {
7473
- return (this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0);
7525
+ get autoupload() {
7526
+ return this._autoupload;
7474
7527
  }
7475
- /**
7476
- * Prüft ob ein Upload eines Files am laufen ist
7477
- * @returns Upload ist am laufen
7478
- */
7479
- IsUploading() {
7480
- return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;
7528
+ get enablepause() {
7529
+ return this._enablepause;
7481
7530
  }
7482
- /**
7483
- * Prüft ob ein Upload pausiert
7484
- * @returns Pausierter Upload ist vorhanden
7485
- */
7486
- IsPaused() {
7487
- return this.uploads.filter((itm) => itm.status === 'paused').length > 0;
7531
+ get endpoint() {
7532
+ return this._endpoint;
7488
7533
  }
7534
+ // #endregion Public Getters And Setters
7535
+ // #region Public Methods
7489
7536
  /**
7490
7537
  * Name der Datei die Hochgeladen wird
7491
7538
  * @returns Observable des Dateinamens.
@@ -7498,6 +7545,13 @@ class SacUploadBase extends SacBaseModelControl {
7498
7545
  return this.lngResourceService.GetString('UPLOAD_NO_FILE_SELECTED');
7499
7546
  }
7500
7547
  }
7548
+ /**
7549
+ * Gibt an ob Queue Elemente beinhaltet
7550
+ * @returns Elemente in der Queue
7551
+ */
7552
+ HasQueueItem() {
7553
+ return this.uploads.length > 0;
7554
+ }
7501
7555
  /**
7502
7556
  * Gibt an ob ein Upload abgeschlossen ist
7503
7557
  * @returns Upload erfolgreich
@@ -7510,6 +7564,27 @@ class SacUploadBase extends SacBaseModelControl {
7510
7564
  return false;
7511
7565
  }
7512
7566
  }
7567
+ /**
7568
+ * Prüft ob ein Upload pausiert
7569
+ * @returns Pausierter Upload ist vorhanden
7570
+ */
7571
+ IsPaused() {
7572
+ return this.uploads.filter((itm) => itm.status === 'paused').length > 0;
7573
+ }
7574
+ /**
7575
+ * Prüft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.
7576
+ * @returns Elemente für Upload vorhanden
7577
+ */
7578
+ IsStateToUpload() {
7579
+ return (this.uploads.filter((itm) => itm.status === 'added' || itm.status === 'paused').length > 0);
7580
+ }
7581
+ /**
7582
+ * Prüft ob ein Upload eines Files am laufen ist
7583
+ * @returns Upload ist am laufen
7584
+ */
7585
+ IsUploading() {
7586
+ return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;
7587
+ }
7513
7588
  /**
7514
7589
  * Gibt den Uploadfortschritt zurück
7515
7590
  * @returns Upload Fortschritt. Wert von 0-100
@@ -7522,67 +7597,42 @@ class SacUploadBase extends SacBaseModelControl {
7522
7597
  return 0;
7523
7598
  }
7524
7599
  }
7525
- //#endregion
7526
- //#region Validation
7527
7600
  /**
7528
- * Validiert das Upload Control
7529
- * @param c Control das validiert werden soll
7601
+ * Cancel single upload
7602
+ * @param uploadId ID of File to cancel
7530
7603
  */
7531
- validateData(c) {
7532
- let error = null;
7533
- if (this.isrequired) {
7534
- error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
7535
- }
7536
- return error;
7604
+ cancel(uploadId) {
7605
+ this.uploadService.control({ action: 'cancel', uploadId: uploadId });
7537
7606
  }
7538
- //#endregion
7539
7607
  /**
7540
- * Setzt die erlaubten Datentypen für den Upload
7541
- *
7542
- * @param types Erlaubte File Extensions
7608
+ * Cancel all Uploaded files
7543
7609
  */
7544
- setAllowedTypes(types) {
7545
- // Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.
7546
- if (this.uploadInput && this.uploadInput.nativeElement) {
7547
- this.renderer.setAttribute(this.uploadInput.nativeElement, 'accept', types);
7610
+ cancelAll() {
7611
+ if (this.HasQueueItem() === true) {
7612
+ this.uploadService.control({ action: 'cancel' });
7548
7613
  }
7549
- this.options.allowedTypes = types;
7550
- }
7551
- /**
7552
- * Setzt den Upload Endpoit
7553
- * @param url Register URI
7554
- */
7555
- setEndpoint(url) {
7556
- this.options.endpoint = url;
7557
7614
  }
7558
7615
  /**
7559
- * Prüft ob die Dateierweiterung gültig ist
7560
- *
7561
- * @param filename Dateiname
7616
+ * Destroy des Controls
7562
7617
  */
7563
- isExtensionValid(filename) {
7564
- if (this._allowedtypes === '*') {
7565
- return true;
7618
+ ngOnDestroy() {
7619
+ if (this.listenerFn) {
7620
+ this.listenerFn();
7566
7621
  }
7567
- let isValid = false;
7568
- const extensions = this._allowedtypes.split(',');
7569
- extensions.forEach((itm) => {
7570
- if (filename.toLowerCase().endsWith(itm.toLowerCase())) {
7571
- isValid = true;
7572
- }
7573
- });
7574
- return isValid;
7575
7622
  }
7576
7623
  /**
7577
- * Prüft ob das File nicht zu gross ist.
7578
- *
7579
- * @param filesize Max File Size in Bytes
7624
+ * Initialisiert das Control
7580
7625
  */
7581
- isFileSizeValid(filesize) {
7582
- if (this.maxfilesize === 0) {
7583
- return true;
7626
+ ngOnInit() {
7627
+ super.ngOnInit();
7628
+ // Init Event Listener for Input File Control and Handling Files
7629
+ this.listenerFn = this.renderer.listen(this.uploadInput.nativeElement, 'change', this.fileListener);
7630
+ this.setAllowedTypes(this._allowedtypes);
7631
+ this.setEndpoint(this._endpoint);
7632
+ if (this._endpoint === null) {
7633
+ throw new Error('endpoint is not defined!');
7584
7634
  }
7585
- return this.maxfilesize >= filesize;
7635
+ this.uploadService.connect(this.options);
7586
7636
  }
7587
7637
  /**
7588
7638
  * Upload Event
@@ -7627,11 +7677,49 @@ class SacUploadBase extends SacBaseModelControl {
7627
7677
  this.UpdateFileCount();
7628
7678
  }
7629
7679
  /**
7630
- * Returns the number of uploaded files
7680
+ * Cancel Single File
7681
+ * @param uploadId ID of File to Cancel
7631
7682
  */
7632
- UploadedFileCount() {
7633
- return this.uploads.filter((itm) => itm.status === 'complete').length;
7683
+ pause(uploadId) {
7684
+ this.uploadService.control({ action: 'pause', uploadId });
7685
+ }
7686
+ /**
7687
+ * Pause all Uploads
7688
+ */
7689
+ pauseAll() {
7690
+ if (this.IsUploading() === true) {
7691
+ this.uploadService.control({ action: 'pause' });
7692
+ }
7693
+ }
7694
+ /**
7695
+ * Upload Single File
7696
+ *
7697
+ * @param uploadId ID of File to Upload
7698
+ */
7699
+ upload(uploadId) {
7700
+ this.uploadService.control({ action: 'upload', uploadId });
7634
7701
  }
7702
+ /**
7703
+ * Upload all queued Files
7704
+ */
7705
+ uploadAll() {
7706
+ if (this.IsStateToUpload() === true) {
7707
+ this.uploadService.control({ action: 'upload' });
7708
+ }
7709
+ }
7710
+ /**
7711
+ * Validiert das Upload Control
7712
+ * @param c Control das validiert werden soll
7713
+ */
7714
+ validateData(c) {
7715
+ let error = null;
7716
+ if (this.isrequired) {
7717
+ error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
7718
+ }
7719
+ return error;
7720
+ }
7721
+ // #endregion Public Abstract Methods
7722
+ // #region Private Methods
7635
7723
  UpdateFileCount() {
7636
7724
  // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
7637
7725
  if (this.ngControl) {
@@ -7640,140 +7728,127 @@ class SacUploadBase extends SacBaseModelControl {
7640
7728
  }
7641
7729
  }
7642
7730
  /**
7643
- * Icon for browse button
7731
+ * Returns the number of uploaded files
7644
7732
  */
7645
- get IconBrowse() {
7646
- return this.iconService.UploadComponentBrowseIcon;
7733
+ UploadedFileCount() {
7734
+ return this.uploads.filter((itm) => itm.status === 'complete').length;
7647
7735
  }
7648
7736
  /**
7649
- * icon for upload button
7737
+ * Prüft ob die Dateierweiterung gültig ist
7738
+ *
7739
+ * @param filename Dateiname
7650
7740
  */
7651
- get IconUpload() {
7652
- return this.iconService.UploadComponentUploadIcon;
7741
+ isExtensionValid(filename) {
7742
+ if (this._allowedtypes === '*') {
7743
+ return true;
7744
+ }
7745
+ let isValid = false;
7746
+ const extensions = this._allowedtypes.split(',');
7747
+ extensions.forEach((itm) => {
7748
+ if (filename.toLowerCase().endsWith(itm.toLowerCase())) {
7749
+ isValid = true;
7750
+ }
7751
+ });
7752
+ return isValid;
7653
7753
  }
7654
7754
  /**
7655
- * icon for delete buttons
7755
+ * Prüft ob das File nicht zu gross ist.
7756
+ *
7757
+ * @param filesize Max File Size in Bytes
7656
7758
  */
7657
- get IconDelete() {
7658
- return this.iconService.UploadComponentDeleteIcon;
7759
+ isFileSizeValid(filesize) {
7760
+ if (this.maxfilesize === 0) {
7761
+ return true;
7762
+ }
7763
+ return this.maxfilesize >= filesize;
7659
7764
  }
7660
7765
  /**
7661
- * icon for pause buttons
7766
+ * Setzt die erlaubten Datentypen für den Upload
7767
+ *
7768
+ * @param types Erlaubte File Extensions
7662
7769
  */
7663
- get IconPause() {
7664
- return this.iconService.UploadComponentPauseIcon;
7770
+ setAllowedTypes(types) {
7771
+ // Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.
7772
+ if (this.uploadInput && this.uploadInput.nativeElement) {
7773
+ this.renderer.setAttribute(this.uploadInput.nativeElement, 'accept', types);
7774
+ }
7775
+ this.options.allowedTypes = types;
7665
7776
  }
7666
7777
  /**
7667
- * icon for continous buttons
7778
+ * Setzt den Upload Endpoit
7779
+ * @param url Register URI
7668
7780
  */
7669
- get IconContinue() {
7670
- return this.iconService.UploadComponentContinueIcon;
7781
+ setEndpoint(url) {
7782
+ this.options.endpoint = url;
7671
7783
  }
7672
7784
  }
7673
- SacUploadBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadBase, deps: [{ token: SacFormCommon }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
7674
- SacUploadBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacUploadBase, inputs: { validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", allowedtypes: "allowedtypes", autoupload: "autoupload", enablepause: "enablepause", maxfilesize: "maxfilesize", isrequired: "isrequired", endpoint: "endpoint" }, outputs: { onfileerror: "onfileerror" }, viewQueries: [{ propertyName: "uploadInput", first: true, predicate: ["files"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 });
7785
+ SacUploadBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadBase, deps: [{ token: SacFormLayoutCommon }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
7786
+ SacUploadBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacUploadBase, inputs: { isrequired: "isrequired", maxfilesize: "maxfilesize", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", allowedtypes: "allowedtypes", autoupload: "autoupload", enablepause: "enablepause", endpoint: "endpoint" }, outputs: { onfileerror: "onfileerror" }, viewQueries: [{ propertyName: "uploadInput", first: true, predicate: ["files"], descendants: true, static: true }], usesInheritance: true, ngImport: i0 });
7675
7787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadBase, decorators: [{
7676
7788
  type: Directive
7677
- }], ctorParameters: function () { return [{ type: SacFormCommon }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { validationmessagerequired: [{
7789
+ }], ctorParameters: function () { return [{ type: SacFormLayoutCommon }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { uploadInput: [{
7790
+ type: ViewChild,
7791
+ args: ['files', { static: true }]
7792
+ }], isrequired: [{
7793
+ type: Input
7794
+ }], maxfilesize: [{
7795
+ type: Input
7796
+ }], validationmessagerequired: [{
7678
7797
  type: Input
7679
7798
  }], validationmessagesummaryrequired: [{
7680
7799
  type: Input
7800
+ }], onfileerror: [{
7801
+ type: Output
7681
7802
  }], allowedtypes: [{
7682
7803
  type: Input
7683
7804
  }], autoupload: [{
7684
7805
  type: Input
7685
7806
  }], enablepause: [{
7686
7807
  type: Input
7687
- }], maxfilesize: [{
7688
- type: Input
7689
- }], isrequired: [{
7690
- type: Input
7691
7808
  }], endpoint: [{
7692
7809
  type: Input
7693
- }], onfileerror: [{
7694
- type: Output
7695
- }], uploadInput: [{
7696
- type: ViewChild,
7697
- args: ['files', { static: true }]
7698
- }] } });
7699
-
7810
+ }] } });
7700
7811
  /**
7701
- * Upload Komponente für ein einzelnes File
7812
+ * Klasse für den Upload einer Datei in der Upload Component
7702
7813
  */
7703
- class SacUploadSingleCommon extends SacUploadBase {
7704
- constructor() {
7705
- super(...arguments);
7706
- /**
7707
- * Label für Browse Button
7708
- */
7709
- this.buttonbrowse = 'Browse';
7710
- /**
7711
- * Label für Upload Button
7712
- */
7713
- this.buttonupload = 'Upload';
7714
- }
7715
- /**
7716
- * Macht keine Validierung in diesem Control
7717
- *
7718
- * @param file File das hinzugefügt wurde
7719
- */
7720
- CustomAddValidation(file) {
7721
- return true;
7722
- }
7814
+ class SacUploadFile {
7815
+ // #endregion Properties
7816
+ // #region Constructors
7723
7817
  /**
7724
- * Setzt die File ID des hochgeladen Files in das Model
7725
- *
7726
- * @param file ID des Files
7818
+ * Konstruktor
7819
+ * @param ufile Upload Status
7727
7820
  */
7728
- SetUploadValue(file) {
7729
- if (file === null) {
7730
- super.setValue(null);
7731
- }
7732
- else {
7733
- if (file.response !== undefined &&
7734
- file.response !== null &&
7735
- file.response.documentid !== null &&
7736
- file.response.documentid !== undefined) {
7737
- super.setValue(file.response.documentid);
7738
- }
7739
- else {
7740
- super.setValue(file.uploadId);
7741
- }
7742
- }
7821
+ constructor(ufile) {
7822
+ this.uploadId = ufile.uploadId;
7823
+ this.name = ufile.name;
7824
+ this.progress = ufile.progress;
7825
+ this.status = ufile.status;
7826
+ this.documentid = null;
7743
7827
  }
7744
- }
7745
- SacUploadSingleCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadSingleCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7746
- SacUploadSingleCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacUploadSingleCommon, inputs: { buttonbrowse: "buttonbrowse", buttonupload: "buttonupload" }, usesInheritance: true, ngImport: i0 });
7747
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadSingleCommon, decorators: [{
7748
- type: Directive
7749
- }], propDecorators: { buttonbrowse: [{
7750
- type: Input
7751
- }], buttonupload: [{
7752
- type: Input
7753
- }] } });
7828
+ }
7754
7829
 
7755
7830
  /**
7756
- * Upload Componente für mehrere Files
7831
+ * Upload Komponente für ein einzelnes File
7757
7832
  */
7758
- class SacUploadMultipleCommon extends SacUploadBase {
7833
+ class SacDropzoneMultipleCommon extends SacUploadBase {
7759
7834
  constructor() {
7760
7835
  super(...arguments);
7761
7836
  /**
7762
- * Max. Files die hochgeladen werden können. 0 deaktiviert das Limit
7837
+ * Property wenn Drag Event aktiv ist (Maus über Zone)
7763
7838
  */
7764
- this.maxfiles = 0;
7839
+ this.active = false;
7765
7840
  /**
7766
- * Min. Files die hochgeladen werden müssen. 0 deaktiviert das Limit
7841
+ * Höhe des Upload Controls
7767
7842
  */
7768
- this.minfiles = 0;
7843
+ this.uploadheight = null;
7769
7844
  /**
7770
- * Label für Browse Button
7845
+ * Max. Anzahl Files die hochgeladen werden können
7771
7846
  */
7772
- this.buttonbrowse = 'Browse';
7847
+ this.maxfiles = 0;
7773
7848
  /**
7774
- * Label für Upload Button
7849
+ * Min. Anzahl Files die hochgeladen werden müssen
7775
7850
  */
7776
- this.buttonupload = 'Upload';
7851
+ this.minfiles = 0;
7777
7852
  /**
7778
7853
  * Resource Key für Validation Message Required bei Control
7779
7854
  */
@@ -7783,6 +7858,49 @@ class SacUploadMultipleCommon extends SacUploadBase {
7783
7858
  */
7784
7859
  this.validationmessagesummaryminfiles = 'VALIDATION_ERROR_SUMMARY_FILESMIN';
7785
7860
  }
7861
+ /**
7862
+ * Ervent wenn das Control initialisert wird
7863
+ */
7864
+ ngOnInit() {
7865
+ super.ngOnInit();
7866
+ this.autoupload = true;
7867
+ }
7868
+ /**
7869
+ * Methode für Drag and Drop von Files
7870
+ * @param event Drag Event
7871
+ */
7872
+ dropHandler(event) {
7873
+ if (event.dataTransfer &&
7874
+ event.dataTransfer.files &&
7875
+ event.dataTransfer.files.item(0)) {
7876
+ event.stopPropagation();
7877
+ event.preventDefault();
7878
+ this.active = false;
7879
+ this.uploadService.handleFiles(event.dataTransfer.files);
7880
+ }
7881
+ }
7882
+ /**
7883
+ * Methode wenn Drag in die Zone eintritt
7884
+ * @param event DragEnter Event
7885
+ */
7886
+ onDragOver(event) {
7887
+ if (event.dataTransfer &&
7888
+ event.dataTransfer.files &&
7889
+ event.dataTransfer.types.every((itm) => itm === 'Files') &&
7890
+ event.dataTransfer.types.length > 0) {
7891
+ event.dataTransfer.dropEffect = 'copy';
7892
+ event.stopPropagation();
7893
+ event.preventDefault();
7894
+ this.active = true;
7895
+ }
7896
+ }
7897
+ /**
7898
+ * Methode wenn Drag die Zone verlässt
7899
+ * @param event DragLeave Event
7900
+ */
7901
+ onDragLeave(event) {
7902
+ this.active = false;
7903
+ }
7786
7904
  /**
7787
7905
  * Prüft ob die max. Files in der Queue nicht überschritten werden
7788
7906
  *
@@ -7854,17 +7972,15 @@ class SacUploadMultipleCommon extends SacUploadBase {
7854
7972
  return error;
7855
7973
  }
7856
7974
  }
7857
- SacUploadMultipleCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadMultipleCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7858
- SacUploadMultipleCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacUploadMultipleCommon, inputs: { maxfiles: "maxfiles", minfiles: "minfiles", buttonbrowse: "buttonbrowse", buttonupload: "buttonupload", validationmessageminfiles: "validationmessageminfiles", validationmessagesummaryminfiles: "validationmessagesummaryminfiles" }, usesInheritance: true, ngImport: i0 });
7859
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadMultipleCommon, decorators: [{
7975
+ SacDropzoneMultipleCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDropzoneMultipleCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7976
+ SacDropzoneMultipleCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDropzoneMultipleCommon, inputs: { uploadheight: "uploadheight", maxfiles: "maxfiles", minfiles: "minfiles", validationmessageminfiles: "validationmessageminfiles", validationmessagesummaryminfiles: "validationmessagesummaryminfiles" }, usesInheritance: true, ngImport: i0 });
7977
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDropzoneMultipleCommon, decorators: [{
7860
7978
  type: Directive
7861
- }], propDecorators: { maxfiles: [{
7862
- type: Input
7863
- }], minfiles: [{
7979
+ }], propDecorators: { uploadheight: [{
7864
7980
  type: Input
7865
- }], buttonbrowse: [{
7981
+ }], maxfiles: [{
7866
7982
  type: Input
7867
- }], buttonupload: [{
7983
+ }], minfiles: [{
7868
7984
  type: Input
7869
7985
  }], validationmessageminfiles: [{
7870
7986
  type: Input
@@ -7976,27 +8092,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
7976
8092
  }] } });
7977
8093
 
7978
8094
  /**
7979
- * Upload Komponente für ein einzelnes File
8095
+ * Upload Componente für mehrere Files
7980
8096
  */
7981
- class SacDropzoneMultipleCommon extends SacUploadBase {
8097
+ class SacUploadMultipleCommon extends SacUploadBase {
7982
8098
  constructor() {
7983
8099
  super(...arguments);
7984
8100
  /**
7985
- * Property wenn Drag Event aktiv ist (Maus über Zone)
8101
+ * Max. Files die hochgeladen werden können. 0 deaktiviert das Limit
7986
8102
  */
7987
- this.active = false;
8103
+ this.maxfiles = 0;
7988
8104
  /**
7989
- * Höhe des Upload Controls
8105
+ * Min. Files die hochgeladen werden müssen. 0 deaktiviert das Limit
7990
8106
  */
7991
- this.uploadheight = null;
8107
+ this.minfiles = 0;
7992
8108
  /**
7993
- * Max. Anzahl Files die hochgeladen werden können
8109
+ * Label für Browse Button
7994
8110
  */
7995
- this.maxfiles = 0;
8111
+ this.buttonbrowse = 'Browse';
7996
8112
  /**
7997
- * Min. Anzahl Files die hochgeladen werden müssen
8113
+ * Label für Upload Button
7998
8114
  */
7999
- this.minfiles = 0;
8115
+ this.buttonupload = 'Upload';
8000
8116
  /**
8001
8117
  * Resource Key für Validation Message Required bei Control
8002
8118
  */
@@ -8006,49 +8122,6 @@ class SacDropzoneMultipleCommon extends SacUploadBase {
8006
8122
  */
8007
8123
  this.validationmessagesummaryminfiles = 'VALIDATION_ERROR_SUMMARY_FILESMIN';
8008
8124
  }
8009
- /**
8010
- * Ervent wenn das Control initialisert wird
8011
- */
8012
- ngOnInit() {
8013
- super.ngOnInit();
8014
- this.autoupload = true;
8015
- }
8016
- /**
8017
- * Methode für Drag and Drop von Files
8018
- * @param event Drag Event
8019
- */
8020
- dropHandler(event) {
8021
- if (event.dataTransfer &&
8022
- event.dataTransfer.files &&
8023
- event.dataTransfer.files.item(0)) {
8024
- event.stopPropagation();
8025
- event.preventDefault();
8026
- this.active = false;
8027
- this.uploadService.handleFiles(event.dataTransfer.files);
8028
- }
8029
- }
8030
- /**
8031
- * Methode wenn Drag in die Zone eintritt
8032
- * @param event DragEnter Event
8033
- */
8034
- onDragOver(event) {
8035
- if (event.dataTransfer &&
8036
- event.dataTransfer.files &&
8037
- event.dataTransfer.types.every((itm) => itm === 'Files') &&
8038
- event.dataTransfer.types.length > 0) {
8039
- event.dataTransfer.dropEffect = 'copy';
8040
- event.stopPropagation();
8041
- event.preventDefault();
8042
- this.active = true;
8043
- }
8044
- }
8045
- /**
8046
- * Methode wenn Drag die Zone verlässt
8047
- * @param event DragLeave Event
8048
- */
8049
- onDragLeave(event) {
8050
- this.active = false;
8051
- }
8052
8125
  /**
8053
8126
  * Prüft ob die max. Files in der Queue nicht überschritten werden
8054
8127
  *
@@ -8120,32 +8193,90 @@ class SacDropzoneMultipleCommon extends SacUploadBase {
8120
8193
  return error;
8121
8194
  }
8122
8195
  }
8123
- SacDropzoneMultipleCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDropzoneMultipleCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
8124
- SacDropzoneMultipleCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacDropzoneMultipleCommon, inputs: { uploadheight: "uploadheight", maxfiles: "maxfiles", minfiles: "minfiles", validationmessageminfiles: "validationmessageminfiles", validationmessagesummaryminfiles: "validationmessagesummaryminfiles" }, usesInheritance: true, ngImport: i0 });
8125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacDropzoneMultipleCommon, decorators: [{
8196
+ SacUploadMultipleCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadMultipleCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
8197
+ SacUploadMultipleCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacUploadMultipleCommon, inputs: { maxfiles: "maxfiles", minfiles: "minfiles", buttonbrowse: "buttonbrowse", buttonupload: "buttonupload", validationmessageminfiles: "validationmessageminfiles", validationmessagesummaryminfiles: "validationmessagesummaryminfiles" }, usesInheritance: true, ngImport: i0 });
8198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadMultipleCommon, decorators: [{
8126
8199
  type: Directive
8127
- }], propDecorators: { uploadheight: [{
8128
- type: Input
8129
- }], maxfiles: [{
8200
+ }], propDecorators: { maxfiles: [{
8130
8201
  type: Input
8131
8202
  }], minfiles: [{
8132
8203
  type: Input
8204
+ }], buttonbrowse: [{
8205
+ type: Input
8206
+ }], buttonupload: [{
8207
+ type: Input
8133
8208
  }], validationmessageminfiles: [{
8134
8209
  type: Input
8135
8210
  }], validationmessagesummaryminfiles: [{
8136
8211
  type: Input
8137
8212
  }] } });
8138
8213
 
8214
+ /**
8215
+ * Upload Komponente für ein einzelnes File
8216
+ */
8217
+ class SacUploadSingleCommon extends SacUploadBase {
8218
+ constructor() {
8219
+ super(...arguments);
8220
+ /**
8221
+ * Label für Browse Button
8222
+ */
8223
+ this.buttonbrowse = 'Browse';
8224
+ /**
8225
+ * Label für Upload Button
8226
+ */
8227
+ this.buttonupload = 'Upload';
8228
+ }
8229
+ /**
8230
+ * Macht keine Validierung in diesem Control
8231
+ *
8232
+ * @param file File das hinzugefügt wurde
8233
+ */
8234
+ CustomAddValidation(file) {
8235
+ return true;
8236
+ }
8237
+ /**
8238
+ * Setzt die File ID des hochgeladen Files in das Model
8239
+ *
8240
+ * @param file ID des Files
8241
+ */
8242
+ SetUploadValue(file) {
8243
+ if (file === null) {
8244
+ super.setValue(null);
8245
+ }
8246
+ else {
8247
+ if (file.response !== undefined &&
8248
+ file.response !== null &&
8249
+ file.response.documentid !== null &&
8250
+ file.response.documentid !== undefined) {
8251
+ super.setValue(file.response.documentid);
8252
+ }
8253
+ else {
8254
+ super.setValue(file.uploadId);
8255
+ }
8256
+ }
8257
+ }
8258
+ }
8259
+ SacUploadSingleCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadSingleCommon, deps: null, target: i0.ɵɵFactoryTarget.Directive });
8260
+ SacUploadSingleCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacUploadSingleCommon, inputs: { buttonbrowse: "buttonbrowse", buttonupload: "buttonupload" }, usesInheritance: true, ngImport: i0 });
8261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacUploadSingleCommon, decorators: [{
8262
+ type: Directive
8263
+ }], propDecorators: { buttonbrowse: [{
8264
+ type: Input
8265
+ }], buttonupload: [{
8266
+ type: Input
8267
+ }] } });
8268
+
8139
8269
  /**
8140
8270
  * Base Klasse für Multi Language Input Control
8141
8271
  */
8142
8272
  class SacMultilanguageInputCommon extends SacInputBase {
8143
8273
  /**
8144
- * Konstruktor
8145
- * Inject des Formulars
8274
+ * Constructor
8275
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
8276
+ * @param injector Injector for injecting services
8146
8277
  */
8147
- constructor(parent, injector) {
8148
- super(parent, injector);
8278
+ constructor(formlayout, injector) {
8279
+ super(formlayout, injector);
8149
8280
  /**
8150
8281
  * Max länge an Zeichen für Eingabefeld
8151
8282
  */
@@ -8335,12 +8466,12 @@ class SacMultilanguageInputCommon extends SacInputBase {
8335
8466
  return error;
8336
8467
  }
8337
8468
  }
8338
- SacMultilanguageInputCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacMultilanguageInputCommon, deps: [{ token: SacFormCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
8469
+ SacMultilanguageInputCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacMultilanguageInputCommon, deps: [{ token: SacFormLayoutCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
8339
8470
  SacMultilanguageInputCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacMultilanguageInputCommon, inputs: { maxlength: "maxlength", controlwidth: "controlwidth", requiredany: "requiredany", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", validationmessagerequiredany: "validationmessagerequiredany", validationmessagesummaryrequiredany: "validationmessagesummaryrequiredany" }, usesInheritance: true, ngImport: i0 });
8340
8471
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacMultilanguageInputCommon, decorators: [{
8341
8472
  type: Directive
8342
8473
  }], ctorParameters: function () {
8343
- return [{ type: SacFormCommon, decorators: [{
8474
+ return [{ type: SacFormLayoutCommon, decorators: [{
8344
8475
  type: Host
8345
8476
  }] }, { type: i0.Injector }];
8346
8477
  }, propDecorators: { maxlength: [{
@@ -8364,11 +8495,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
8364
8495
  */
8365
8496
  class SacMultilanguageInputAreaCommon extends SacInputBase {
8366
8497
  /**
8367
- * Konstruktor
8368
- * Inject des Formulars
8498
+ * Constructor
8499
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
8500
+ * @param injector Injector for injecting services
8369
8501
  */
8370
- constructor(parent, injector) {
8371
- super(parent, injector);
8502
+ constructor(formlayout, injector) {
8503
+ super(formlayout, injector);
8372
8504
  /**
8373
8505
  * Max länge an Zeichen für Eingabefeld
8374
8506
  */
@@ -8528,141 +8660,61 @@ class SacMultilanguageInputAreaCommon extends SacInputBase {
8528
8660
  this.value[itm.IsoCode] === null) {
8529
8661
  found = true;
8530
8662
  return;
8531
- }
8532
- });
8533
- }
8534
- return found;
8535
- }
8536
- /**
8537
- * Methode validiert, ob der Wert den gegebenen Kriterien entspricht
8538
- * @param c Controls das validiert wird
8539
- */
8540
- validateData(c) {
8541
- let error = null;
8542
- if (error === null &&
8543
- c.value !== null &&
8544
- c.value !== undefined &&
8545
- c.value !== '' &&
8546
- this.isrequired !== undefined &&
8547
- this.isrequired === true) {
8548
- error = Validation.multilanguageRequired(this.languages, this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
8549
- }
8550
- if (error === null &&
8551
- c.value !== null &&
8552
- c.value !== undefined &&
8553
- c.value !== '' &&
8554
- this.requiredany !== undefined &&
8555
- this.requiredany === true) {
8556
- error = Validation.multilanguageRequiredAny(this.languages, this.validationmessagerequiredany, this.validationmessagesummaryrequiredany)(c);
8557
- }
8558
- return error;
8559
- }
8560
- }
8561
- SacMultilanguageInputAreaCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacMultilanguageInputAreaCommon, deps: [{ token: SacFormCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
8562
- SacMultilanguageInputAreaCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacMultilanguageInputAreaCommon, inputs: { maxlength: "maxlength", rows: "rows", controlwidth: "controlwidth", requiredany: "requiredany", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", validationmessagerequiredany: "validationmessagerequiredany", validationmessagesummaryrequiredany: "validationmessagesummaryrequiredany" }, usesInheritance: true, ngImport: i0 });
8563
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacMultilanguageInputAreaCommon, decorators: [{
8564
- type: Directive
8565
- }], ctorParameters: function () {
8566
- return [{ type: SacFormCommon, decorators: [{
8567
- type: Host
8568
- }] }, { type: i0.Injector }];
8569
- }, propDecorators: { maxlength: [{
8570
- type: Input
8571
- }], rows: [{
8572
- type: Input
8573
- }], controlwidth: [{
8574
- type: Input
8575
- }], requiredany: [{
8576
- type: Input
8577
- }], validationmessagerequired: [{
8578
- type: Input
8579
- }], validationmessagesummaryrequired: [{
8580
- type: Input
8581
- }], validationmessagerequiredany: [{
8582
- type: Input
8583
- }], validationmessagesummaryrequiredany: [{
8584
- type: Input
8585
- }] } });
8586
-
8587
- /**
8588
- * Basis Klasse für Confirm Service implementation
8589
- */
8590
- class ServiceConfirmCommon {
8591
- /**
8592
- * Konstruktor
8593
- * @param appRef ApplicationRef zum Anhängen des Dialogs an den Content
8594
- * @param injector Injector um die Instanz zu erzeuge
8595
- */
8596
- constructor(appRef, injector) {
8597
- this.appRef = appRef;
8598
- this.injector = injector;
8599
- //#region Properties
8600
- /**
8601
- * Referenz auf IConfirm Instanz.
8602
- */
8603
- this.component = null;
8604
- this.localisationService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService());
8605
- this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
8606
- }
8607
- /**
8608
- * Erzeugt eine Instanz für den Dialog
8609
- */
8610
- CreateInstance() {
8611
- // ComponentFactory aus Service laden
8612
- const factory = this.GetComponentFactory();
8613
- // Instanz der Komponente erzeugen und an die View anhängen
8614
- this.component = factory.create(this.injector);
8615
- this.appRef.attachView(this.component.hostView);
8616
- }
8617
- /**
8618
- * Entfernt die Instanz des Dialogs
8619
- */
8620
- DestroyInstance() {
8621
- // Dialog aus View entfernen und Komponenten löschen
8622
- this.appRef.detachView(this.component.hostView);
8623
- this.component.destroy();
8624
- }
8625
- /**
8626
- * Zeigt den Dialog an
8627
- */
8628
- OpenDialog() {
8629
- const dialog = this.component.instance;
8630
- dialog.show();
8631
- return dialog;
8632
- }
8633
- /**
8634
- * Blendet den Dialog aus
8635
- */
8636
- CloseDialog() {
8637
- const dialog = this.component.instance;
8638
- dialog.hide();
8663
+ }
8664
+ });
8665
+ }
8666
+ return found;
8639
8667
  }
8640
8668
  /**
8641
- * Interne Methode für die Implementation des Confirm Dialogs. Steuert die Feedbacks, die Erzeugung und Anzeige des Dialogs
8669
+ * Methode validiert, ob der Wert den gegebenen Kriterien entspricht
8670
+ * @param c Controls das validiert wird
8642
8671
  */
8643
- Confirm() {
8644
- // Dialog erzeugen
8645
- this.CreateInstance();
8646
- const instance = this.OpenDialog();
8647
- // Konfiguration der Dialog Instanz durch Service Implementation zulassen
8648
- this.ConfigureDialog(instance);
8649
- // Event Emitter für Confirmation im Service. Event Emitter Asynchron initialiseren
8650
- const confirmTask = new EventEmitter(true);
8651
- // Callback wenn Dialog bestätigt wurde
8652
- instance.onconfirm.subscribe((value) => {
8653
- // Dialog entfernen
8654
- this.CloseDialog();
8655
- // Emit auf Service auslösen
8656
- confirmTask.emit(value);
8657
- }, (err) => {
8658
- // Do nothing on Error
8659
- }, () => {
8660
- this.DestroyInstance();
8661
- });
8662
- // Confirm Emitter für Result zurückgeben
8663
- return confirmTask;
8672
+ validateData(c) {
8673
+ let error = null;
8674
+ if (error === null &&
8675
+ c.value !== null &&
8676
+ c.value !== undefined &&
8677
+ c.value !== '' &&
8678
+ this.isrequired !== undefined &&
8679
+ this.isrequired === true) {
8680
+ error = Validation.multilanguageRequired(this.languages, this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
8681
+ }
8682
+ if (error === null &&
8683
+ c.value !== null &&
8684
+ c.value !== undefined &&
8685
+ c.value !== '' &&
8686
+ this.requiredany !== undefined &&
8687
+ this.requiredany === true) {
8688
+ error = Validation.multilanguageRequiredAny(this.languages, this.validationmessagerequiredany, this.validationmessagesummaryrequiredany)(c);
8689
+ }
8690
+ return error;
8664
8691
  }
8665
- }
8692
+ }
8693
+ SacMultilanguageInputAreaCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacMultilanguageInputAreaCommon, deps: [{ token: SacFormLayoutCommon, host: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
8694
+ SacMultilanguageInputAreaCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacMultilanguageInputAreaCommon, inputs: { maxlength: "maxlength", rows: "rows", controlwidth: "controlwidth", requiredany: "requiredany", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired", validationmessagerequiredany: "validationmessagerequiredany", validationmessagesummaryrequiredany: "validationmessagesummaryrequiredany" }, usesInheritance: true, ngImport: i0 });
8695
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacMultilanguageInputAreaCommon, decorators: [{
8696
+ type: Directive
8697
+ }], ctorParameters: function () {
8698
+ return [{ type: SacFormLayoutCommon, decorators: [{
8699
+ type: Host
8700
+ }] }, { type: i0.Injector }];
8701
+ }, propDecorators: { maxlength: [{
8702
+ type: Input
8703
+ }], rows: [{
8704
+ type: Input
8705
+ }], controlwidth: [{
8706
+ type: Input
8707
+ }], requiredany: [{
8708
+ type: Input
8709
+ }], validationmessagerequired: [{
8710
+ type: Input
8711
+ }], validationmessagesummaryrequired: [{
8712
+ type: Input
8713
+ }], validationmessagerequiredany: [{
8714
+ type: Input
8715
+ }], validationmessagesummaryrequiredany: [{
8716
+ type: Input
8717
+ }] } });
8666
8718
 
8667
8719
  /**
8668
8720
  * Basis Klasse für Confirm Dialog
@@ -8765,6 +8817,86 @@ class SacConfirmButton {
8765
8817
  }
8766
8818
  }
8767
8819
 
8820
+ /**
8821
+ * Basis Klasse für Confirm Service implementation
8822
+ */
8823
+ class ServiceConfirmCommon {
8824
+ /**
8825
+ * Konstruktor
8826
+ * @param appRef ApplicationRef zum Anhängen des Dialogs an den Content
8827
+ * @param injector Injector um die Instanz zu erzeuge
8828
+ */
8829
+ constructor(appRef, injector) {
8830
+ this.appRef = appRef;
8831
+ this.injector = injector;
8832
+ //#region Properties
8833
+ /**
8834
+ * Referenz auf IConfirm Instanz.
8835
+ */
8836
+ this.component = null;
8837
+ this.localisationService = injector.get(SACLOCALISATION_SERVICE, new SacDefaultLocalisationService());
8838
+ this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
8839
+ }
8840
+ /**
8841
+ * Erzeugt eine Instanz für den Dialog
8842
+ */
8843
+ CreateInstance() {
8844
+ // ComponentFactory aus Service laden
8845
+ const factory = this.GetComponentFactory();
8846
+ // Instanz der Komponente erzeugen und an die View anhängen
8847
+ this.component = factory.create(this.injector);
8848
+ this.appRef.attachView(this.component.hostView);
8849
+ }
8850
+ /**
8851
+ * Entfernt die Instanz des Dialogs
8852
+ */
8853
+ DestroyInstance() {
8854
+ // Dialog aus View entfernen und Komponenten löschen
8855
+ this.appRef.detachView(this.component.hostView);
8856
+ this.component.destroy();
8857
+ }
8858
+ /**
8859
+ * Zeigt den Dialog an
8860
+ */
8861
+ OpenDialog() {
8862
+ const dialog = this.component.instance;
8863
+ dialog.show();
8864
+ return dialog;
8865
+ }
8866
+ /**
8867
+ * Blendet den Dialog aus
8868
+ */
8869
+ CloseDialog() {
8870
+ const dialog = this.component.instance;
8871
+ dialog.hide();
8872
+ }
8873
+ /**
8874
+ * Interne Methode für die Implementation des Confirm Dialogs. Steuert die Feedbacks, die Erzeugung und Anzeige des Dialogs
8875
+ */
8876
+ Confirm() {
8877
+ // Dialog erzeugen
8878
+ this.CreateInstance();
8879
+ const instance = this.OpenDialog();
8880
+ // Konfiguration der Dialog Instanz durch Service Implementation zulassen
8881
+ this.ConfigureDialog(instance);
8882
+ // Event Emitter für Confirmation im Service. Event Emitter Asynchron initialiseren
8883
+ const confirmTask = new EventEmitter(true);
8884
+ // Callback wenn Dialog bestätigt wurde
8885
+ instance.onconfirm.subscribe((value) => {
8886
+ // Dialog entfernen
8887
+ this.CloseDialog();
8888
+ // Emit auf Service auslösen
8889
+ confirmTask.emit(value);
8890
+ }, (err) => {
8891
+ // Do nothing on Error
8892
+ }, () => {
8893
+ this.DestroyInstance();
8894
+ });
8895
+ // Confirm Emitter für Result zurückgeben
8896
+ return confirmTask;
8897
+ }
8898
+ }
8899
+
8768
8900
  /**
8769
8901
  * Position Utility Klasse
8770
8902
  * @see https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/util/positioning.ts
@@ -9070,12 +9202,14 @@ function positionElements(hostElement, targetElement, placement, appendToBody, b
9070
9202
  * Base Context Menu Anchor Component für Open/Close Event
9071
9203
  */
9072
9204
  class SacContextmenuAnchorCommon {
9205
+ // #endregion Properties
9206
+ // #region Constructors
9073
9207
  /**
9074
9208
  * Konstruktor
9075
- * @param _elementRef Refernz auf das HTML welcher als Anker für das Context Menü verwendet wird
9209
+ * @param elementRef Refernz auf das HTML welcher als Anker für das Context Menü verwendet wird
9076
9210
  */
9077
- constructor(_elementRef) {
9078
- this.nativeElement = _elementRef.nativeElement;
9211
+ constructor(elementRef) {
9212
+ this.nativeElement = elementRef.nativeElement;
9079
9213
  }
9080
9214
  }
9081
9215
  SacContextmenuAnchorCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacContextmenuAnchorCommon, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -9088,12 +9222,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
9088
9222
  * Common Marker Klasse für den Menü Container
9089
9223
  */
9090
9224
  class SacContextMenuContrainerCommon {
9225
+ // #endregion Properties
9226
+ // #region Constructors
9091
9227
  /**
9092
9228
  * Konstruktor
9093
- * @param _elementRef Referenz auf das HTML Element mit der Marker Direktive
9229
+ * @param elementRef Referenz auf das HTML Element mit der Marker Direktive
9094
9230
  */
9095
- constructor(_elementRef) {
9096
- this.nativeElement = _elementRef.nativeElement;
9231
+ constructor(elementRef) {
9232
+ this.nativeElement = elementRef.nativeElement;
9097
9233
  }
9098
9234
  }
9099
9235
  SacContextMenuContrainerCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacContextMenuContrainerCommon, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
@@ -9106,35 +9242,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
9106
9242
  * Base Context Menü Element. Die Logik wurde aus NG-BOOTSTRAP übernommen.
9107
9243
  */
9108
9244
  class SacContextmenuCommon {
9245
+ // #endregion Properties
9246
+ // #region Constructors
9109
9247
  /**
9110
9248
  * Konstruktor
9111
- * @param _document HTML Document Element
9112
- * @param _ngZone Angular Zone Service
9113
- * @param _elementRef HTML Element des aktuellen Controls
9114
- * @param _renderer Angular Rendering Service
9115
- * @param _injector injector to resolve the icon service
9116
- */
9117
- constructor(_document, _ngZone, _elementRef, _renderer, _injector) {
9118
- this._document = _document;
9119
- this._ngZone = _ngZone;
9120
- this._elementRef = _elementRef;
9121
- this._renderer = _renderer;
9249
+ * @param document HTML Document Element
9250
+ * @param ngZone Angular Zone Service
9251
+ * @param elementRef HTML Element des aktuellen Controls
9252
+ * @param renderer Angular Rendering Service
9253
+ * @param injector injector to resolve the icon service
9254
+ */
9255
+ constructor(document, ngZone, elementRef, renderer, injector) {
9256
+ this.document = document;
9257
+ this.ngZone = ngZone;
9258
+ this.elementRef = elementRef;
9259
+ this.renderer = renderer;
9122
9260
  /**
9123
9261
  * Body HTML Element
9124
9262
  */
9125
9263
  this.bodyContainer = null;
9126
9264
  /**
9127
- * Definiert ob das Dropdown offen ist.
9265
+ * Container an welchem die Position ausgerichtet wird. Aktuell wird nun Body Supported
9128
9266
  */
9129
- this.isopen = false;
9267
+ this.container = 'body';
9130
9268
  /**
9131
9269
  * Extra CSS Klassen für das Control
9132
9270
  */
9133
9271
  this.cssclass = '';
9134
9272
  /**
9135
- * Container an welchem die Position ausgerichtet wird. Aktuell wird nun Body Supported
9273
+ * Definiert ob das Dropdown offen ist.
9136
9274
  */
9137
- this.container = 'body';
9275
+ this.isopen = false;
9138
9276
  /**
9139
9277
  * The preferred placement of the dropdown.
9140
9278
  *
@@ -9154,11 +9292,21 @@ class SacContextmenuCommon {
9154
9292
  'top-left',
9155
9293
  'top-right',
9156
9294
  ];
9157
- this.zoneSubscription = this._ngZone.onStable.subscribe(() => {
9295
+ this.zoneSubscription = this.ngZone.onStable.subscribe(() => {
9158
9296
  this._positionMenu();
9159
9297
  });
9160
- this.iconService = _injector.get(SACICON_SERVICE, new SacDefaultIconService());
9298
+ this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
9299
+ }
9300
+ // #endregion Constructors
9301
+ // #region Public Getters And Setters
9302
+ /**
9303
+ * icon for default context menü button
9304
+ */
9305
+ get IconContextMenu() {
9306
+ return this.iconService.ContextMenuOpenIcon;
9161
9307
  }
9308
+ // #endregion Public Getters And Setters
9309
+ // #region Public Methods
9162
9310
  /**
9163
9311
  * HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.
9164
9312
  */
@@ -9170,12 +9318,26 @@ class SacContextmenuCommon {
9170
9318
  this.close();
9171
9319
  }
9172
9320
  }
9321
+ /**
9322
+ * Schliesst das Dropdown
9323
+ */
9324
+ close() {
9325
+ this._resetContainer();
9326
+ this.isopen = false;
9327
+ }
9173
9328
  /**
9174
9329
  * Event wenn Component entfernt wird.
9175
9330
  */
9176
9331
  ngOnDestroy() {
9177
9332
  this.zoneSubscription.unsubscribe();
9178
9333
  }
9334
+ /**
9335
+ * Öffnet das Dropdown / Zeigt das Menü an.
9336
+ */
9337
+ open() {
9338
+ this._applyContainer(this.container);
9339
+ this.isopen = true;
9340
+ }
9179
9341
  /**
9180
9342
  * Toggle von Dropdown
9181
9343
  */
@@ -9187,26 +9349,8 @@ class SacContextmenuCommon {
9187
9349
  this.open();
9188
9350
  }
9189
9351
  }
9190
- /**
9191
- * Öffnet das Dropdown / Zeigt das Menü an.
9192
- */
9193
- open() {
9194
- this._applyContainer(this.container);
9195
- this.isopen = true;
9196
- }
9197
- /**
9198
- * Schliesst das Dropdown
9199
- */
9200
- close() {
9201
- this._resetContainer();
9202
- this.isopen = false;
9203
- }
9204
- /**
9205
- * icon for default context menü button
9206
- */
9207
- get IconContextMenu() {
9208
- return this.iconService.ContextMenuOpenIcon;
9209
- }
9352
+ // #endregion Public Methods
9353
+ // #region Protected Methods
9210
9354
  /**
9211
9355
  * Setzt die Position des Menüs im Markup
9212
9356
  */
@@ -9216,23 +9360,8 @@ class SacContextmenuCommon {
9216
9360
  positionElements(anchor.nativeElement, this.bodyContainer || this._menu.nativeElement, this.placement, this.container === 'body');
9217
9361
  }
9218
9362
  }
9219
- /**
9220
- * Setzt die CSS Klassen auf dem Menü Container auf den Standard zurück
9221
- */
9222
- _resetContainer() {
9223
- const renderer = this._renderer;
9224
- if (this._menu) {
9225
- const dropdownElement = this._elementRef.nativeElement;
9226
- const dropdownMenuElement = this._menu.nativeElement;
9227
- renderer.appendChild(dropdownElement, dropdownMenuElement);
9228
- renderer.removeStyle(dropdownMenuElement, 'position');
9229
- renderer.removeStyle(dropdownMenuElement, 'transform');
9230
- }
9231
- if (this.bodyContainer) {
9232
- renderer.removeChild(this._document.body, this.bodyContainer);
9233
- this.bodyContainer = null;
9234
- }
9235
- }
9363
+ // #endregion Protected Methods
9364
+ // #region Private Methods
9236
9365
  /**
9237
9366
  * Setzt die Position des Menüs innerhalb der Seite. Die Ausrichtung passiert innerhalb der Seite
9238
9367
  * damit das Menü innerhalb eines Dialogs sauber funktionioniert.
@@ -9242,7 +9371,7 @@ class SacContextmenuCommon {
9242
9371
  // Reset Classes on Container
9243
9372
  this._resetContainer();
9244
9373
  if (container === 'body') {
9245
- const renderer = this._renderer;
9374
+ const renderer = this.renderer;
9246
9375
  const dropdownMenuElement = this._menu.nativeElement;
9247
9376
  const bodyContainer = (this.bodyContainer =
9248
9377
  this.bodyContainer || renderer.createElement('div'));
@@ -9251,12 +9380,29 @@ class SacContextmenuCommon {
9251
9380
  renderer.setStyle(dropdownMenuElement, 'position', 'static');
9252
9381
  renderer.setStyle(bodyContainer, 'z-index', '1050');
9253
9382
  renderer.appendChild(bodyContainer, dropdownMenuElement);
9254
- renderer.appendChild(this._document.body, bodyContainer);
9383
+ renderer.appendChild(this.document.body, bodyContainer);
9384
+ }
9385
+ }
9386
+ /**
9387
+ * Setzt die CSS Klassen auf dem Menü Container auf den Standard zurück
9388
+ */
9389
+ _resetContainer() {
9390
+ const renderer = this.renderer;
9391
+ if (this._menu) {
9392
+ const dropdownElement = this.elementRef.nativeElement;
9393
+ const dropdownMenuElement = this._menu.nativeElement;
9394
+ renderer.appendChild(dropdownElement, dropdownMenuElement);
9395
+ renderer.removeStyle(dropdownMenuElement, 'position');
9396
+ renderer.removeStyle(dropdownMenuElement, 'transform');
9397
+ }
9398
+ if (this.bodyContainer) {
9399
+ renderer.removeChild(this.document.body, this.bodyContainer);
9400
+ this.bodyContainer = null;
9255
9401
  }
9256
9402
  }
9257
9403
  }
9258
9404
  SacContextmenuCommon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacContextmenuCommon, deps: [{ token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
9259
- SacContextmenuCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacContextmenuCommon, inputs: { isopen: "isopen", cssclass: "cssclass", buttontemplate: "buttontemplate", container: "container", placement: "placement" }, host: { listeners: { "document:click": "onClick($event.target)" } }, queries: [{ propertyName: "_anchorTemplate", first: true, predicate: SacContextmenuAnchorCommon, descendants: true }], viewQueries: [{ propertyName: "_anchor", first: true, predicate: SacContextmenuAnchorCommon, descendants: true }, { propertyName: "_menu", first: true, predicate: SacContextMenuContrainerCommon, descendants: true }], ngImport: i0 });
9405
+ SacContextmenuCommon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SacContextmenuCommon, inputs: { buttontemplate: "buttontemplate", container: "container", cssclass: "cssclass", isopen: "isopen", placement: "placement" }, host: { listeners: { "document:click": "onClick($event.target)" } }, queries: [{ propertyName: "_anchorTemplate", first: true, predicate: SacContextmenuAnchorCommon, descendants: true }], viewQueries: [{ propertyName: "_anchor", first: true, predicate: SacContextmenuAnchorCommon, descendants: true }, { propertyName: "_menu", first: true, predicate: SacContextMenuContrainerCommon, descendants: true }], ngImport: i0 });
9260
9406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SacContextmenuCommon, decorators: [{
9261
9407
  type: Directive
9262
9408
  }], ctorParameters: function () {
@@ -9264,23 +9410,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
9264
9410
  type: Inject,
9265
9411
  args: [DOCUMENT]
9266
9412
  }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }];
9267
- }, propDecorators: { _anchor: [{
9268
- type: ViewChild,
9269
- args: [SacContextmenuAnchorCommon, { static: false }]
9270
- }], _anchorTemplate: [{
9413
+ }, propDecorators: { _anchorTemplate: [{
9271
9414
  type: ContentChild,
9272
9415
  args: [SacContextmenuAnchorCommon, { static: false }]
9416
+ }], _anchor: [{
9417
+ type: ViewChild,
9418
+ args: [SacContextmenuAnchorCommon, { static: false }]
9273
9419
  }], _menu: [{
9274
9420
  type: ViewChild,
9275
9421
  args: [SacContextMenuContrainerCommon, { static: false }]
9276
- }], isopen: [{
9277
- type: Input
9278
- }], cssclass: [{
9279
- type: Input
9280
9422
  }], buttontemplate: [{
9281
9423
  type: Input
9282
9424
  }], container: [{
9283
9425
  type: Input
9426
+ }], cssclass: [{
9427
+ type: Input
9428
+ }], isopen: [{
9429
+ type: Input
9284
9430
  }], placement: [{
9285
9431
  type: Input
9286
9432
  }], onClick: [{
@@ -9979,5 +10125,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
9979
10125
  * Generated bundle index. Do not edit.
9980
10126
  */
9981
10127
 
9982
- export { GridResponse, IconType, Interpolation, LanguageModel, PagerData, PagerRequest, Positioning, SACCommonListboxOptionModule, SACFILEBROWSER_SERVICE, SACICON_SERVICE, SACLANGUAGE_SERVICE, SACLOCALISATION_SERVICE, SacAbstractFileBrowserService, SacAbstractIconService, SacAbstractLanguageService, SacAbstractLocalisationService, SacButtonCommon, SacCheckboxCommon, SacConfirmButton, SacConfirmCommon, SacContextMenuContrainerCommon, SacContextmenuAnchorCommon, SacContextmenuCommon, SacContextmenuItemButtonCommon, SacContextmenuItemCommon, SacDateCommon, SacDateSelectorCommon, SacDateTimeCommon, SacDialogCommon, SacDropdownCommon, SacDropdownOptionCommon, SacDropzoneMultipleCommon, SacDropzoneSingleCommon, SacFileBrowserCommon, SacFormCommon, SacGridButtonCommon, SacGridColumnActionCommon, SacGridColumnBaseCommon, SacGridColumnCommon, SacGridCommon, SacGridImageCommon, SacInputAreaCommon, SacInputCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputEmailCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacListboxCommon, SacListboxOptionCommon, SacMultilanguageInputAreaCommon, SacMultilanguageInputCommon, SacPagingCommon, SacRadiobuttonCommon, SacRadiobuttonsCommon, SacStaticFormContainerCommon, SacStaticLabelCommon, SacTabCommon, SacTabItemCommon, SacTimeCommon, SacTinyMceCommon, SacTooltipCommon, SacTreeItemActionCommon, SacTreeViewChildCommon, SacTreeViewCommon, SacUploadFile, SacUploadMultipleCommon, SacUploadSingleCommon, SacValidationSummaryCommon, SacWizardCommon, SacWizardItemCommon, ServiceConfirmCommon, SortDescriptor, SortOrder, TooltipPosition, Validation, ValidationErrorItem, convertToBoolean, convertToNumber, isDefined, mapToObject, positionElements, positionService };
10128
+ export { GridResponse, IconType, Interpolation, LanguageModel, PagerData, PagerRequest, Positioning, SACCommonListboxOptionModule, SACFILEBROWSER_SERVICE, SACICON_SERVICE, SACLANGUAGE_SERVICE, SACLOCALISATION_SERVICE, SacAbstractFileBrowserService, SacAbstractIconService, SacAbstractLanguageService, SacAbstractLocalisationService, 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, SacInputCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputEmailCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacListboxCommon, SacListboxOptionCommon, SacMultilanguageInputAreaCommon, SacMultilanguageInputCommon, SacPagingCommon, SacRadiobuttonCommon, SacRadiobuttonsCommon, SacStaticFormContainerCommon, SacStaticLabelCommon, SacTabCommon, SacTabItemCommon, SacTimeCommon, SacTinyMceCommon, SacTooltipCommon, SacTreeItemActionCommon, SacTreeViewChildCommon, SacTreeViewCommon, SacUploadFile, SacUploadMultipleCommon, SacUploadSingleCommon, SacValidationSummaryCommon, SacWizardCommon, SacWizardItemCommon, ServiceConfirmCommon, SortDescriptor, SortOrder, TooltipPosition, Validation, ValidationErrorItem, convertToBoolean, convertToNumber, isDefined, mapToObject, positionElements, positionService };
9983
10129
  //# sourceMappingURL=simpleangularcontrols-sac-common.mjs.map