@simpleangularcontrols/sac-bootstrap5 16.0.0-rc.2 → 16.0.0-rc.21

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 (148) hide show
  1. package/README.md +17 -17
  2. package/components/browser/browser.d.ts +6 -6
  3. package/controls/buttons/index.d.ts +1 -0
  4. package/controls/checkbox/checkbox.d.ts +5 -5
  5. package/controls/checkbox/radiobutton.d.ts +7 -3
  6. package/controls/checkbox/radiobuttons.d.ts +5 -5
  7. package/controls/confirm/confirm.service.d.ts +8 -8
  8. package/controls/contextmenu/contextmenu.d.ts +6 -6
  9. package/controls/contextmenu/contextmenuanchor.d.ts +2 -2
  10. package/controls/contextmenu/contextmenucontainer.d.ts +2 -2
  11. package/controls/contextmenu/contextmenuitembutton.d.ts +3 -4
  12. package/controls/datetime/date.d.ts +9 -8
  13. package/controls/datetime/datetime.d.ts +9 -8
  14. package/controls/datetime/time.d.ts +9 -8
  15. package/controls/dialog/dialog.d.ts +4 -4
  16. package/controls/dialog/index.d.ts +1 -0
  17. package/controls/form/form.d.ts +3 -11
  18. package/controls/form/inheritform.directive.d.ts +16 -39
  19. package/controls/grid/grid.d.ts +6 -6
  20. package/controls/grid/gridbutton.d.ts +5 -11
  21. package/controls/grid/gridimage.d.ts +0 -5
  22. package/controls/input/input.d.ts +5 -5
  23. package/controls/input/inputarea.d.ts +5 -5
  24. package/controls/input/inputcurrency.d.ts +5 -5
  25. package/controls/input/inputdecimal.d.ts +5 -5
  26. package/controls/input/inputemail.d.ts +5 -5
  27. package/controls/input/inputinteger.d.ts +5 -5
  28. package/controls/input/inputpassword.d.ts +5 -5
  29. package/controls/input/inputsearch.d.ts +5 -5
  30. package/controls/layout/formlayout.directive.d.ts +6 -0
  31. package/controls/layout/layout.module.d.ts +12 -0
  32. package/controls/layout/tocontrolheight.pipe.d.ts +12 -0
  33. package/controls/layout/tocontrolwidthcss.pipe.d.ts +19 -0
  34. package/controls/layout/tolabelheight.pipe.d.ts +12 -0
  35. package/controls/layout/tolabelwidthcss.pipe.d.ts +13 -0
  36. package/controls/list/dropdown.d.ts +19 -19
  37. package/controls/list/listbox.d.ts +17 -17
  38. package/controls/multilanguage/multilanguageinput.d.ts +5 -5
  39. package/controls/multilanguage/multilanguageinputarea.d.ts +5 -5
  40. package/controls/multilanguage/multilanguagemenu.d.ts +9 -9
  41. package/controls/multilanguage/multilanguagemenuanchor.d.ts +2 -2
  42. package/controls/multilanguage/multilanguagemenucontainer.d.ts +2 -2
  43. package/controls/multilanguage/multilanguagemenuitembutton.d.ts +3 -4
  44. package/controls/static/formcontainer.d.ts +7 -7
  45. package/controls/static/staticlabel.d.ts +5 -5
  46. package/controls/tabs/tab.d.ts +1 -1
  47. package/controls/tinymce/tinymce.d.ts +7 -7
  48. package/controls/tooltip/tooltip.d.ts +37 -0
  49. package/controls/tooltip/tooltip.module.d.ts +8 -0
  50. package/controls/treeview/treeview.d.ts +17 -0
  51. package/controls/treeview/treeview.module.d.ts +8 -0
  52. package/controls/upload/dropzonemultiple.d.ts +7 -7
  53. package/controls/upload/dropzonesingle.d.ts +7 -7
  54. package/controls/upload/upload.d.ts +7 -7
  55. package/controls/upload/uploadmultiple.d.ts +7 -7
  56. package/controls/validation/validationsummary.d.ts +5 -5
  57. package/esm2022/components/browser/browser.mjs +19 -15
  58. package/esm2022/components/browser/browser.module.mjs +1 -1
  59. package/esm2022/controls/buttons/button.mjs +5 -5
  60. package/esm2022/controls/buttons/button.module.mjs +5 -9
  61. package/esm2022/controls/buttons/index.mjs +2 -0
  62. package/esm2022/controls/checkbox/checkbox.mjs +27 -19
  63. package/esm2022/controls/checkbox/checkbox.module.mjs +1 -1
  64. package/esm2022/controls/checkbox/radiobutton.mjs +18 -9
  65. package/esm2022/controls/checkbox/radiobuttons.mjs +28 -20
  66. package/esm2022/controls/confirm/confirm.mjs +3 -3
  67. package/esm2022/controls/confirm/confirm.module.mjs +1 -1
  68. package/esm2022/controls/confirm/confirm.service.mjs +30 -15
  69. package/esm2022/controls/contextmenu/contextmenu.mjs +16 -24
  70. package/esm2022/controls/contextmenu/contextmenu.module.mjs +12 -8
  71. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +5 -4
  72. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +5 -4
  73. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +22 -13
  74. package/esm2022/controls/contextmenu/contextmenuitemsplitter.mjs +14 -4
  75. package/esm2022/controls/contextmenu/index.mjs +1 -1
  76. package/esm2022/controls/datetime/date.mjs +39 -18
  77. package/esm2022/controls/datetime/dateselector.mjs +5 -10
  78. package/esm2022/controls/datetime/datetime.mjs +36 -18
  79. package/esm2022/controls/datetime/datetime.module.mjs +1 -1
  80. package/esm2022/controls/datetime/time.mjs +36 -18
  81. package/esm2022/controls/dialog/dialog.mjs +16 -12
  82. package/esm2022/controls/dialog/dialog.module.mjs +1 -1
  83. package/esm2022/controls/dialog/index.mjs +2 -0
  84. package/esm2022/controls/form/form.mjs +6 -17
  85. package/esm2022/controls/form/form.module.mjs +1 -1
  86. package/esm2022/controls/form/inheritform.directive.mjs +46 -63
  87. package/esm2022/controls/grid/grid.mjs +14 -16
  88. package/esm2022/controls/grid/grid.module.mjs +2 -2
  89. package/esm2022/controls/grid/gridbutton.mjs +11 -35
  90. package/esm2022/controls/grid/gridcolumn.mjs +3 -3
  91. package/esm2022/controls/grid/gridcolumnaction.mjs +3 -3
  92. package/esm2022/controls/grid/gridimage.mjs +5 -17
  93. package/esm2022/controls/grid/paging.mjs +17 -14
  94. package/esm2022/controls/input/input.mjs +29 -14
  95. package/esm2022/controls/input/input.module.mjs +1 -1
  96. package/esm2022/controls/input/inputarea.mjs +30 -15
  97. package/esm2022/controls/input/inputcurrency.mjs +29 -14
  98. package/esm2022/controls/input/inputdecimal.mjs +30 -15
  99. package/esm2022/controls/input/inputemail.mjs +29 -14
  100. package/esm2022/controls/input/inputinteger.mjs +29 -14
  101. package/esm2022/controls/input/inputpassword.mjs +28 -14
  102. package/esm2022/controls/input/inputsearch.mjs +29 -14
  103. package/esm2022/controls/layout/formlayout.directive.mjs +16 -0
  104. package/esm2022/controls/layout/layout.module.mjs +44 -0
  105. package/esm2022/controls/layout/tocontrolheight.pipe.mjs +35 -0
  106. package/esm2022/controls/layout/tocontrolwidthcss.pipe.mjs +59 -0
  107. package/esm2022/controls/layout/tolabelheight.pipe.mjs +35 -0
  108. package/esm2022/controls/layout/tolabelwidthcss.pipe.mjs +43 -0
  109. package/esm2022/controls/list/dropdown.mjs +55 -44
  110. package/esm2022/controls/list/dropdown.module.mjs +1 -1
  111. package/esm2022/controls/list/list.module.mjs +1 -1
  112. package/esm2022/controls/list/listbox.mjs +54 -44
  113. package/esm2022/controls/multilanguage/multilanguage.module.mjs +1 -1
  114. package/esm2022/controls/multilanguage/multilanguageinput.mjs +30 -17
  115. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +30 -17
  116. package/esm2022/controls/multilanguage/multilanguagemenu.mjs +13 -11
  117. package/esm2022/controls/multilanguage/multilanguagemenuanchor.mjs +5 -4
  118. package/esm2022/controls/multilanguage/multilanguagemenucontainer.mjs +5 -4
  119. package/esm2022/controls/multilanguage/multilanguagemenuitembutton.mjs +21 -12
  120. package/esm2022/controls/static/formcontainer.mjs +29 -18
  121. package/esm2022/controls/static/staticlabel.mjs +29 -14
  122. package/esm2022/controls/static/staticlabel.module.mjs +1 -1
  123. package/esm2022/controls/tabs/tab.mjs +8 -10
  124. package/esm2022/controls/tabs/tabitem.mjs +3 -3
  125. package/esm2022/controls/tabs/tabs.module.mjs +1 -1
  126. package/esm2022/controls/tinymce/tinymce.mjs +34 -21
  127. package/esm2022/controls/tinymce/tinymce.module.mjs +1 -1
  128. package/esm2022/controls/tooltip/tooltip.mjs +51 -0
  129. package/esm2022/controls/tooltip/tooltip.module.mjs +18 -0
  130. package/esm2022/controls/treeview/treeview.mjs +71 -0
  131. package/esm2022/controls/treeview/treeview.module.mjs +18 -0
  132. package/esm2022/controls/upload/dropzonemultiple.mjs +34 -15
  133. package/esm2022/controls/upload/dropzonesingle.mjs +34 -15
  134. package/esm2022/controls/upload/upload.mjs +31 -15
  135. package/esm2022/controls/upload/upload.module.mjs +1 -1
  136. package/esm2022/controls/upload/uploadmultiple.mjs +32 -15
  137. package/esm2022/controls/validation/validationsummary.mjs +12 -19
  138. package/esm2022/controls/validation/validationsummary.module.mjs +1 -1
  139. package/esm2022/controls/wizard/wizard.mjs +3 -3
  140. package/esm2022/controls/wizard/wizard.module.mjs +1 -1
  141. package/esm2022/controls/wizard/wizarditem.mjs +1 -1
  142. package/esm2022/public-api.mjs +38 -26
  143. package/fesm2022/simpleangularcontrols-sac-bootstrap5.mjs +1226 -664
  144. package/fesm2022/simpleangularcontrols-sac-bootstrap5.mjs.map +1 -1
  145. package/package.json +37 -36
  146. package/public-api.d.ts +37 -25
  147. package/simpleangularcontrols-sac-bootstrap5-16.0.0-rc.21.tgz +0 -0
  148. package/simpleangularcontrols-sac-bootstrap5-16.0.0-rc.2.tgz +0 -0
@@ -1,13 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ComponentFactoryResolver, Injectable, Inject, forwardRef, Directive, HostBinding, Host, Optional, ViewChild, NgModule, SkipSelf, TemplateRef, ContentChild, Input, ContentChildren } from '@angular/core';
2
+ import { Component, ComponentFactoryResolver, Injectable, Inject, forwardRef, Directive, Pipe, Host, Optional, ViewChild, NgModule, HostBinding, SkipSelf, TemplateRef, ContentChild, Input, ContentChildren } from '@angular/core';
3
+ import * as i1$2 from '@angular/common';
3
4
  import { NgIf, NgClass, NgFor, DOCUMENT, NgTemplateOutlet, AsyncPipe, NgForOf, CommonModule, NgStyle } from '@angular/common';
4
- import * as i1$2 from '@angular/common/http';
5
+ import * as i1 from '@angular/common/http';
5
6
  import { HttpClientModule } from '@angular/common/http';
6
7
  import * as i1$1 from '@angular/forms';
7
- import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, ControlContainer, NgForm } from '@angular/forms';
8
- import * as i1 from '@simpleangularcontrols/sac-common';
9
- import { SacButtonCommon, SacDialogCommon, SacConfirmCommon, ServiceConfirmCommon, isDefined, SacConfirmButton, SacContextmenuAnchorCommon, SacContextMenuContrainerCommon, SacContextmenuCommon, SacContextmenuItemButtonCommon, SacContextmenuItemCommon, SacFormCommon, SacDropzoneMultipleCommon, SacFileBrowserCommon, SacCheckboxCommon, SacRadiobuttonsCommon, SacRadiobuttonCommon, SacDateSelectorCommon, SacDateCommon, SacDateTimeCommon, SacTimeCommon, SacPagingCommon, SacGridCommon, SacGridButtonCommon, SacGridColumnCommon, SacGridColumnBaseCommon, SacGridColumnActionCommon, SacGridImageCommon, SacInputCommon, SacInputEmailCommon, SacInputAreaCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacListboxCommon, SacListboxOptionCommon, SacDropdownCommon, SacDropdownOptionCommon, SacMultilanguageInputCommon, IconType, SacMultilanguageInputAreaCommon, SacStaticLabelCommon, SacStaticFormContainerCommon, SacTabItemCommon, SacTabCommon, SacTinyMceCommon, SacDropzoneSingleCommon, SacUploadSingleCommon, SacUploadMultipleCommon, SacValidationSummaryCommon, SacWizardItemCommon, SacWizardCommon } from '@simpleangularcontrols/sac-common';
10
- import { Observable, forkJoin } from 'rxjs';
8
+ import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, NgForm, ControlContainer } from '@angular/forms';
9
+ import { SacButtonCommon, SacTestingAttributePipe, SacDialogCommon, SacConfirmCommon, ServiceConfirmCommon, isDefined, SacConfirmButton, SacContextmenuAnchorCommon, SacContextMenuContrainerCommon, SacContextmenuCommon, SacContextmenuItemButtonCommon, SacContextmenuItemCommon, ControlHeight, SacTooltipCommon, SacFormLayoutCommon, SacDropzoneMultipleCommon, SacFileBrowserCommon, SacCheckboxCommon, SacRadiobuttonsCommon, SacRadiobuttonCommon, SacDateSelectorCommon, SacDateCommon, SacDateTimeCommon, SacTimeCommon, SacFormCommon, SacPagingCommon, SacGridCommon, SacGridButtonCommon, SacGridColumnCommon, SacGridColumnBaseCommon, SacGridColumnActionCommon, SacGridImageCommon, SacInputCommon, SacInputEmailCommon, SacInputAreaCommon, SacInputCurrencyCommon, SacInputDecimalCommon, SacInputIntegerCommon, SacInputPasswordCommon, SacInputSearchCommon, SacDropdownOptionCommon, SacDropdownCommon, SacListboxOptionCommon, SacListboxCommon, SacMultilanguageInputCommon, IconType, SacMultilanguageInputAreaCommon, SacStaticLabelCommon, SacStaticFormContainerCommon, SacTabItemCommon, SacTabCommon, SacTinyMceCommon, SacDropzoneSingleCommon, SacUploadSingleCommon, SacUploadMultipleCommon, SacTreeviewCommon, SacValidationSummaryCommon, SacWizardItemCommon, SacWizardCommon } from '@simpleangularcontrols/sac-common';
10
+ import { forkJoin, Observable } from 'rxjs';
11
+ import { take } from 'rxjs/operators';
11
12
  import { IMaskDirective, IMaskModule } from 'angular-imask';
12
13
  import * as moment_ from 'moment';
13
14
  import { EditorComponent } from '@tinymce/tinymce-angular';
@@ -19,17 +20,19 @@ import { EditorComponent } from '@tinymce/tinymce-angular';
19
20
  */
20
21
  class SacButtonComponent extends SacButtonCommon {
21
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacButtonComponent, isStandalone: true, selector: "sac-button", usesInheritance: true, ngImport: i0, template: "<button [id]=\"name\" type=\"button\" class=\"btn d-flex justify-content-center align-items-center\" [attr.disabled]=\"_isdisabled ? 'disabled' : null\" (click)=\"buttonClick()\"\r\n [class.btn-primary]=\"role === 'primary'\"\r\n [class.btn-secondary]=\"role === 'secondary' || role === 'default'\"\r\n [class.btn-success]=\"role === 'success'\"\r\n [class.btn-danger]=\"role === 'danger'\"\r\n [class.btn-warning]=\"role === 'warning'\"\r\n [class.btn-info]=\"role === 'info'\"\r\n [class.btn-link]=\"role === 'link'\">\r\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" class=\"me-2\"></i>{{text}}\r\n</button>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacButtonComponent, isStandalone: true, selector: "sac-button", usesInheritance: true, ngImport: i0, template: "<button\n [id]=\"name\"\n type=\"button\"\n class=\"btn d-flex justify-content-center align-items-center\"\n [attr.disabled]=\"_isdisabled || isloading ? 'disabled' : null\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n (click)=\"buttonClick()\"\n [class.btn-primary]=\"role === 'primary'\"\n [class.btn-secondary]=\"role === 'secondary' || role === 'default'\"\n [class.btn-success]=\"role === 'success'\"\n [class.btn-danger]=\"role === 'danger'\"\n [class.btn-warning]=\"role === 'warning'\"\n [class.btn-info]=\"role === 'info'\"\n [class.btn-link]=\"role === 'link'\">\n <span\n *ngIf=\"isloading\"\n class=\"spinner-border spinner-border-sm me-2\"\n role=\"status\"\n aria-hidden=\"true\"></span>\n <i\n *ngIf=\"!isloading && icon !== ''\"\n [ngClass]=\"icon\"\n [class.me-2]=\"text\"></i\n >{{ text }}\n</button>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
23
24
  }
24
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacButtonComponent, decorators: [{
25
26
  type: Component,
26
- args: [{ selector: 'sac-button', standalone: true, imports: [NgIf, NgClass], template: "<button [id]=\"name\" type=\"button\" class=\"btn d-flex justify-content-center align-items-center\" [attr.disabled]=\"_isdisabled ? 'disabled' : null\" (click)=\"buttonClick()\"\r\n [class.btn-primary]=\"role === 'primary'\"\r\n [class.btn-secondary]=\"role === 'secondary' || role === 'default'\"\r\n [class.btn-success]=\"role === 'success'\"\r\n [class.btn-danger]=\"role === 'danger'\"\r\n [class.btn-warning]=\"role === 'warning'\"\r\n [class.btn-info]=\"role === 'info'\"\r\n [class.btn-link]=\"role === 'link'\">\r\n <i *ngIf=\"icon !== ''\" [ngClass]=\"icon\" class=\"me-2\"></i>{{text}}\r\n</button>\r\n" }]
27
+ args: [{ selector: 'sac-button', standalone: true, imports: [NgIf, NgClass, SacTestingAttributePipe], template: "<button\n [id]=\"name\"\n type=\"button\"\n class=\"btn d-flex justify-content-center align-items-center\"\n [attr.disabled]=\"_isdisabled || isloading ? 'disabled' : null\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n (click)=\"buttonClick()\"\n [class.btn-primary]=\"role === 'primary'\"\n [class.btn-secondary]=\"role === 'secondary' || role === 'default'\"\n [class.btn-success]=\"role === 'success'\"\n [class.btn-danger]=\"role === 'danger'\"\n [class.btn-warning]=\"role === 'warning'\"\n [class.btn-info]=\"role === 'info'\"\n [class.btn-link]=\"role === 'link'\">\n <span\n *ngIf=\"isloading\"\n class=\"spinner-border spinner-border-sm me-2\"\n role=\"status\"\n aria-hidden=\"true\"></span>\n <i\n *ngIf=\"!isloading && icon !== ''\"\n [ngClass]=\"icon\"\n [class.me-2]=\"text\"></i\n >{{ text }}\n</button>\n" }]
27
28
  }] });
28
29
 
29
30
  /**
30
31
  * Dialog Komponente
31
32
  */
32
33
  class SacDialogComponent extends SacDialogCommon {
34
+ // #endregion Properties
35
+ // #region Constructors
33
36
  /**
34
37
  * Konstruktor
35
38
  * @param el DOM Element Referenz
@@ -39,13 +42,8 @@ class SacDialogComponent extends SacDialogCommon {
39
42
  super(cdRef);
40
43
  this.element = el.nativeElement;
41
44
  }
42
- /**
43
- * Event wenn Komponente initialisiert wird
44
- */
45
- ngOnInit() {
46
- // Element an Body für korrektes Styling unter Bootstrap 3 verschieben
47
- document.body.appendChild(this.element);
48
- }
45
+ // #endregion Constructors
46
+ // #region Public Methods
49
47
  /**
50
48
  * Event wenn Element entfernt wird
51
49
  */
@@ -56,12 +54,19 @@ class SacDialogComponent extends SacDialogCommon {
56
54
  }
57
55
  super.ngOnDestroy();
58
56
  }
57
+ /**
58
+ * Event wenn Komponente initialisiert wird
59
+ */
60
+ ngOnInit() {
61
+ // Element an Body für korrektes Styling unter Bootstrap 3 verschieben
62
+ document.body.appendChild(this.element);
63
+ }
59
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDialogComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDialogComponent, isStandalone: true, selector: "sac-dialog", usesInheritance: true, ngImport: i0, template: "<div\r\n #dialog\r\n class=\"modal show\"\r\n style=\"display: block\"\r\n tabindex=\"-1\"\r\n role=\"dialog\"\r\n *ngIf=\"_show\"\r\n>\r\n <div\r\n class=\"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable\"\r\n role=\"document\"\r\n [class.modal-xl]=\"_size === 'extralarge'\"\r\n [class.modal-lg]=\"_size === 'large'\"\r\n [class.modal-sm]=\"_size === 'small'\"\r\n >\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{title}}</h5>\r\n <button\r\n type=\"button\"\r\n class=\"btn-close\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n (click)=\"hide()\"\r\n *ngIf=\"closebutton\"\r\n ></button>\r\n </div>\r\n <div class=\"modal-body\" [style.height]=\"height\">\r\n <ng-content select=\"[dialogbody]\"></ng-content>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <ng-content select=\"[dialogfooter]\"></ng-content>\r\n </div>\r\n </div>\r\n <!-- /.modal-content -->\r\n </div>\r\n <!-- /.modal-dialog -->\r\n</div>\r\n<!-- /.modal -->\r\n<div class=\"modal-backdrop show\" *ngIf=\"_show && backdrop\" #backdrop></div>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDialogComponent, isStandalone: true, selector: "sac-dialog", usesInheritance: true, ngImport: i0, template: "<div\n #dialog\n class=\"modal show\"\n style=\"display: block\"\n tabindex=\"-1\"\n role=\"dialog\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n *ngIf=\"_show\">\n <div\n class=\"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable\"\n role=\"document\"\n [class.modal-xl]=\"_size === 'extralarge'\"\n [class.modal-lg]=\"_size === 'large'\"\n [class.modal-sm]=\"_size === 'small'\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ title }}</h5>\n <button\n type=\"button\"\n class=\"btn-close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n (click)=\"hide()\"\n *ngIf=\"closebutton\"></button>\n </div>\n <div class=\"modal-body\">\n <ng-content select=\"[dialogbody]\"></ng-content>\n </div>\n <div class=\"modal-footer\">\n <ng-content select=\"[dialogfooter]\"></ng-content>\n </div>\n </div>\n <!-- /.modal-content -->\n </div>\n <!-- /.modal-dialog -->\n</div>\n<!-- /.modal -->\n<div\n class=\"modal-backdrop show\"\n *ngIf=\"_show && backdrop\"\n #backdrop></div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
61
66
  }
62
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDialogComponent, decorators: [{
63
68
  type: Component,
64
- args: [{ selector: 'sac-dialog', standalone: true, imports: [NgIf], template: "<div\r\n #dialog\r\n class=\"modal show\"\r\n style=\"display: block\"\r\n tabindex=\"-1\"\r\n role=\"dialog\"\r\n *ngIf=\"_show\"\r\n>\r\n <div\r\n class=\"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable\"\r\n role=\"document\"\r\n [class.modal-xl]=\"_size === 'extralarge'\"\r\n [class.modal-lg]=\"_size === 'large'\"\r\n [class.modal-sm]=\"_size === 'small'\"\r\n >\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{title}}</h5>\r\n <button\r\n type=\"button\"\r\n class=\"btn-close\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n (click)=\"hide()\"\r\n *ngIf=\"closebutton\"\r\n ></button>\r\n </div>\r\n <div class=\"modal-body\" [style.height]=\"height\">\r\n <ng-content select=\"[dialogbody]\"></ng-content>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <ng-content select=\"[dialogfooter]\"></ng-content>\r\n </div>\r\n </div>\r\n <!-- /.modal-content -->\r\n </div>\r\n <!-- /.modal-dialog -->\r\n</div>\r\n<!-- /.modal -->\r\n<div class=\"modal-backdrop show\" *ngIf=\"_show && backdrop\" #backdrop></div>\r\n" }]
69
+ args: [{ selector: 'sac-dialog', standalone: true, imports: [NgIf, SacTestingAttributePipe], template: "<div\n #dialog\n class=\"modal show\"\n style=\"display: block\"\n tabindex=\"-1\"\n role=\"dialog\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n *ngIf=\"_show\">\n <div\n class=\"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable\"\n role=\"document\"\n [class.modal-xl]=\"_size === 'extralarge'\"\n [class.modal-lg]=\"_size === 'large'\"\n [class.modal-sm]=\"_size === 'small'\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ title }}</h5>\n <button\n type=\"button\"\n class=\"btn-close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n (click)=\"hide()\"\n *ngIf=\"closebutton\"></button>\n </div>\n <div class=\"modal-body\">\n <ng-content select=\"[dialogbody]\"></ng-content>\n </div>\n <div class=\"modal-footer\">\n <ng-content select=\"[dialogfooter]\"></ng-content>\n </div>\n </div>\n <!-- /.modal-content -->\n </div>\n <!-- /.modal-dialog -->\n</div>\n<!-- /.modal -->\n<div\n class=\"modal-backdrop show\"\n *ngIf=\"_show && backdrop\"\n #backdrop></div>\n" }]
65
70
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
66
71
 
67
72
  /**
@@ -69,7 +74,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
69
74
  */
70
75
  class SacConfirmComponent extends SacConfirmCommon {
71
76
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacConfirmComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacConfirmComponent, isStandalone: true, selector: "sac-confirm", usesInheritance: true, ngImport: i0, template: "<sac-dialog\r\n [(isvisible)]=\"isvisible\"\r\n [title]=\"title\"\r\n [allowesc]=\"false\"\r\n [closebutton]=\"false\"\r\n dialogsize=\"small\"\r\n>\r\n <div dialogbody>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"me-2\">\r\n <img\r\n [attr.src]=\"image\"\r\n class=\"align-self-center mr-3\"\r\n *ngIf=\"hasImage()\"\r\n />\r\n </div>\r\n <div class=\"flex-grow-1\">{{message}}</div>\r\n </div>\r\n </div>\r\n <ng-container dialogfooter>\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <sac-button\r\n [name]=\"button.key\"\r\n [text]=\"button.text\"\r\n (clicked)=\"confirm(button.key)\"\r\n ></sac-button>\r\n </ng-container>\r\n </ng-container>\r\n</sac-dialog>\r\n", dependencies: [{ kind: "component", type: SacDialogComponent, selector: "sac-dialog" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SacButtonComponent, selector: "sac-button" }] }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacConfirmComponent, isStandalone: true, selector: "sac-confirm", usesInheritance: true, ngImport: i0, template: "<sac-dialog\n name=\"confirmDialog\"\n [(isvisible)]=\"isvisible\"\n [title]=\"title\"\n [allowesc]=\"false\"\n [closebutton]=\"false\"\n dialogsize=\"small\"\n>\n <div dialogbody>\n <div class=\"d-flex align-items-center\">\n <div class=\"me-2\">\n <img\n [attr.src]=\"image\"\n class=\"align-self-center mr-3\"\n *ngIf=\"hasImage()\"\n />\n </div>\n <div class=\"flex-grow-1\">{{message}}</div>\n </div>\n </div>\n <ng-container dialogfooter>\n <ng-container *ngFor=\"let button of buttons\">\n <sac-button\n [name]=\"button.key\"\n [text]=\"button.text\"\n [role]=\"button.role || 'default'\"\n (clicked)=\"confirm(button.key)\"\n ></sac-button>\n </ng-container>\n </ng-container>\n</sac-dialog>\n", dependencies: [{ kind: "component", type: SacDialogComponent, selector: "sac-dialog" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SacButtonComponent, selector: "sac-button" }] }); }
73
78
  }
74
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacConfirmComponent, decorators: [{
75
80
  type: Component,
@@ -78,7 +83,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
78
83
  NgIf,
79
84
  NgFor,
80
85
  SacButtonComponent,
81
- ], template: "<sac-dialog\r\n [(isvisible)]=\"isvisible\"\r\n [title]=\"title\"\r\n [allowesc]=\"false\"\r\n [closebutton]=\"false\"\r\n dialogsize=\"small\"\r\n>\r\n <div dialogbody>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"me-2\">\r\n <img\r\n [attr.src]=\"image\"\r\n class=\"align-self-center mr-3\"\r\n *ngIf=\"hasImage()\"\r\n />\r\n </div>\r\n <div class=\"flex-grow-1\">{{message}}</div>\r\n </div>\r\n </div>\r\n <ng-container dialogfooter>\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <sac-button\r\n [name]=\"button.key\"\r\n [text]=\"button.text\"\r\n (clicked)=\"confirm(button.key)\"\r\n ></sac-button>\r\n </ng-container>\r\n </ng-container>\r\n</sac-dialog>\r\n" }]
86
+ ], template: "<sac-dialog\n name=\"confirmDialog\"\n [(isvisible)]=\"isvisible\"\n [title]=\"title\"\n [allowesc]=\"false\"\n [closebutton]=\"false\"\n dialogsize=\"small\"\n>\n <div dialogbody>\n <div class=\"d-flex align-items-center\">\n <div class=\"me-2\">\n <img\n [attr.src]=\"image\"\n class=\"align-self-center mr-3\"\n *ngIf=\"hasImage()\"\n />\n </div>\n <div class=\"flex-grow-1\">{{message}}</div>\n </div>\n </div>\n <ng-container dialogfooter>\n <ng-container *ngFor=\"let button of buttons\">\n <sac-button\n [name]=\"button.key\"\n [text]=\"button.text\"\n [role]=\"button.role || 'default'\"\n (clicked)=\"confirm(button.key)\"\n ></sac-button>\n </ng-container>\n </ng-container>\n</sac-dialog>\n" }]
82
87
  }] });
83
88
 
84
89
  /**
@@ -96,6 +101,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
96
101
  * confirmService.ConfirmMessage('titel', 'frage', buttons).subscribe(action => { // Action Code });
97
102
  */
98
103
  class ServiceConfirm extends ServiceConfirmCommon {
104
+ // #endregion Properties
105
+ // #region Constructors
99
106
  /**
100
107
  * Konstruktor
101
108
  * @param componentFactoryResolver Component Factory Resolver Instanz
@@ -105,25 +112,22 @@ class ServiceConfirm extends ServiceConfirmCommon {
105
112
  constructor(componentFactoryResolver, appRef, injector) {
106
113
  super(appRef, injector);
107
114
  this.componentFactoryResolver = componentFactoryResolver;
115
+ // #region Properties
108
116
  /**
109
- * Titel der im Dialog angezeigt werden soll.
117
+ * Collection von Buttons die angezeigt werden müssen.
110
118
  */
111
- this.title = '';
119
+ this.buttons = [];
112
120
  /**
113
121
  * Message die in Dialog angezeigt werden soll.
114
122
  */
115
123
  this.message = '';
116
124
  /**
117
- * Collection von Buttons die angezeigt werden müssen.
125
+ * Titel der im Dialog angezeigt werden soll.
118
126
  */
119
- this.buttons = [];
120
- }
121
- /**
122
- * Erzeugen einer Component Factory für einen Dialog
123
- */
124
- GetComponentFactory() {
125
- return this.componentFactoryResolver.resolveComponentFactory(SacConfirmComponent);
127
+ this.title = '';
126
128
  }
129
+ // #endregion Constructors
130
+ // #region Public Methods
127
131
  /**
128
132
  * Confirm Dialog anzeigen
129
133
  * @param message Nachricht die angezeigt werden soll.
@@ -134,16 +138,30 @@ class ServiceConfirm extends ServiceConfirmCommon {
134
138
  this.message = message;
135
139
  // Default Buttons setzen, wenn keine Buttons angegeben sind
136
140
  if (!isDefined(buttons)) {
137
- // TODO: Text von Localisation Service beziehen
138
141
  this.buttons = [];
139
- this.buttons.push(new SacConfirmButton('yes', 'Ja'));
140
- this.buttons.push(new SacConfirmButton('no', 'Nein'));
142
+ forkJoin({
143
+ button_yes: this.localisationService.GetString(this.validationKeyService.ConfirmDefaultButtonYes),
144
+ button_no: this.localisationService.GetString(this.validationKeyService.ConfirmDefaultButtonNo),
145
+ })
146
+ .pipe(take(1))
147
+ .subscribe((texte) => {
148
+ this.buttons.push(new SacConfirmButton('yes', texte.button_yes, 'primary'));
149
+ this.buttons.push(new SacConfirmButton('no', texte.button_no));
150
+ });
141
151
  }
142
152
  else {
143
153
  this.buttons = buttons;
144
154
  }
145
155
  return super.Confirm();
146
156
  }
157
+ /**
158
+ * Erzeugen einer Component Factory für einen Dialog
159
+ */
160
+ GetComponentFactory() {
161
+ return this.componentFactoryResolver.resolveComponentFactory(SacConfirmComponent);
162
+ }
163
+ // #endregion Public Methods
164
+ // #region Protected Methods
147
165
  /**
148
166
  * Konfiguration des Dialogs
149
167
  * @param instance Instanz eines SacConfirm Dialogs
@@ -169,12 +187,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
169
187
  * Anker Komponente für Context Menü. Wird zum positionieren des Context Menü in der Page benötigt.
170
188
  */
171
189
  class SacContextmenuAnchorDirective extends SacContextmenuAnchorCommon {
190
+ // #region Constructors
172
191
  /**
173
192
  * Konstruktor
174
- * @param _elementRef HTML DOM Referenz
193
+ * @param elementRef HTML DOM Referenz
175
194
  */
176
- constructor(_elementRef) {
177
- super(_elementRef);
195
+ constructor(elementRef) {
196
+ super(elementRef);
178
197
  }
179
198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuAnchorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
180
199
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuAnchorDirective, isStandalone: true, selector: "[sacContextMenuAnchor]", providers: [
@@ -202,12 +221,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
202
221
  * Marker Komponente für Context Menü
203
222
  */
204
223
  class SacContextmenuContainerDirective extends SacContextMenuContrainerCommon {
224
+ // #region Constructors
205
225
  /**
206
226
  * Konstruktor
207
- * @param _elementRef Referenz auf DOM Element
227
+ * @param elementRef Referenz auf DOM Element
208
228
  */
209
- constructor(_elementRef) {
210
- super(_elementRef);
229
+ constructor(elementRef) {
230
+ super(elementRef);
211
231
  }
212
232
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
213
233
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuContainerDirective, isStandalone: true, selector: "[sacContextMenuContainer]", providers: [
@@ -235,149 +255,327 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
235
255
  * Component für Contextmenü
236
256
  */
237
257
  class SacContextmenuComponent extends SacContextmenuCommon {
258
+ // #region Constructors
238
259
  /**
239
260
  * Constructor
240
- * @param _document Referenz auf HTML Document
241
- * @param _ngZone Angular Zone Service
242
- * @param _elementRef Referenz auf HTML Element der aktuellen Komponente
243
- * @param _renderer Render Service von Angular
244
- * @param _injector injector to resolve services
261
+ * @param document Referenz auf HTML Document
262
+ * @param ngZone Angular Zone Service
263
+ * @param elementRef Referenz auf HTML Element der aktuellen Komponente
264
+ * @param renderer Render Service von Angular
265
+ * @param injector injector to resolve services
245
266
  */
246
- constructor(_document, _ngZone, _elementRef, _renderer, _injector) {
247
- super(_document, _ngZone, _elementRef, _renderer, _injector);
267
+ constructor(document, ngZone, elementRef, renderer, injector) {
268
+ super(document, ngZone, elementRef, renderer, injector);
248
269
  }
249
270
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuComponent, deps: [{ token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuComponent, isStandalone: true, selector: "sac-contextmenu", providers: [
251
- {
252
- provide: SacContextmenuCommon,
253
- useExisting: forwardRef(() => SacContextmenuComponent),
254
- },
255
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"dropdown\" [ngClass]=\"cssclass\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"\r\n ></ng-container>\r\n\r\n <ul\r\n class=\"dropdown-menu dropdown-menu-end\"\r\n sacContextMenuContainer\r\n [class.show]=\"isopen\"\r\n >\r\n <ng-content></ng-content>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #defaultButtonTemplate>\r\n <button\r\n sacContextMenuAnchor\r\n class=\"btn btn-sm btn-link text-secondary text-decoration-none\"\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n >\r\n <i [class]=\"IconContextMenu\"></i>\r\n </button>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SacContextmenuContainerDirective, selector: "[sacContextMenuContainer]" }, { kind: "directive", type: SacContextmenuAnchorDirective, selector: "[sacContextMenuAnchor]" }] }); }
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuComponent, isStandalone: true, selector: "sac-contextmenu", usesInheritance: true, ngImport: i0, template: "<div\n class=\"dropdown\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [ngClass]=\"cssclass\">\n <ng-container [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"></ng-container>\n\n <ul\n class=\"dropdown-menu dropdown-menu-end\"\n sacContextMenuContainer\n [class.show]=\"isopen\">\n <ng-content></ng-content>\n </ul>\n</div>\n\n<ng-template #defaultButtonTemplate>\n <button\n sacContextMenuAnchor\n class=\"btn btn-sm btn-link text-secondary text-decoration-none\"\n type=\"button\"\n (click)=\"toggle()\">\n <i [class]=\"IconContextMenu\"></i>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SacContextmenuContainerDirective, selector: "[sacContextMenuContainer]" }, { kind: "directive", type: SacContextmenuAnchorDirective, selector: "[sacContextMenuAnchor]" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
256
272
  }
257
273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuComponent, decorators: [{
258
274
  type: Component,
259
- args: [{ selector: 'sac-contextmenu', providers: [
260
- {
261
- provide: SacContextmenuCommon,
262
- useExisting: forwardRef(() => SacContextmenuComponent),
263
- },
264
- ], standalone: true, imports: [
275
+ args: [{ selector: 'sac-contextmenu', standalone: true, imports: [
265
276
  NgClass,
266
277
  NgTemplateOutlet,
267
278
  SacContextmenuContainerDirective,
268
279
  SacContextmenuAnchorDirective,
269
- ], template: "<div class=\"dropdown\" [ngClass]=\"cssclass\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"\r\n ></ng-container>\r\n\r\n <ul\r\n class=\"dropdown-menu dropdown-menu-end\"\r\n sacContextMenuContainer\r\n [class.show]=\"isopen\"\r\n >\r\n <ng-content></ng-content>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #defaultButtonTemplate>\r\n <button\r\n sacContextMenuAnchor\r\n class=\"btn btn-sm btn-link text-secondary text-decoration-none\"\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n >\r\n <i [class]=\"IconContextMenu\"></i>\r\n </button>\r\n</ng-template>\r\n" }]
280
+ SacTestingAttributePipe,
281
+ ], template: "<div\n class=\"dropdown\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [ngClass]=\"cssclass\">\n <ng-container [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"></ng-container>\n\n <ul\n class=\"dropdown-menu dropdown-menu-end\"\n sacContextMenuContainer\n [class.show]=\"isopen\">\n <ng-content></ng-content>\n </ul>\n</div>\n\n<ng-template #defaultButtonTemplate>\n <button\n sacContextMenuAnchor\n class=\"btn btn-sm btn-link text-secondary text-decoration-none\"\n type=\"button\"\n (click)=\"toggle()\">\n <i [class]=\"IconContextMenu\"></i>\n </button>\n</ng-template>\n" }]
270
282
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
271
283
  type: Inject,
272
284
  args: [DOCUMENT]
273
285
  }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; } });
274
286
 
275
287
  /**
276
- * Component für Menü Eintrag in Context Menü
288
+ * Component for menu entry in context menu
277
289
  */
278
290
  class SacContextmenuItemButtonComponent extends SacContextmenuItemButtonCommon {
291
+ // #region Constructors
279
292
  /**
280
293
  * Constructor
281
- * @param contextmenu Instance von Context Menü
282
294
  */
283
- constructor(contextmenu) {
284
- super(contextmenu);
295
+ constructor() {
296
+ super();
285
297
  }
286
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuItemButtonComponent, deps: [{ token: i1.SacContextmenuCommon }], target: i0.ɵɵFactoryTarget.Component }); }
287
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuItemButtonComponent, isStandalone: true, selector: "sac-contextmenubutton", usesInheritance: true, ngImport: i0, template: "<li>\r\n <button\r\n type=\"button\"\r\n class=\"dropdown-item\"\r\n (click)=\"callaction($event)\"\r\n [class.disabled]=\"isdisabled\"\r\n [class]=\"cssclass\"\r\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\r\n >\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"!isicondisabled\" style=\"min-width: 1.5rem\">\r\n <img *ngIf=\"image\" [src]=\"image\" class=\"align-baseline\" />\r\n <i *ngIf=\"icon\" [class]=\"iconstyle + ' ' + icon\"></i>\r\n </div>\r\n <div class=\"flex-grow-1\">{{ text }}</div>\r\n </div>\r\n </button>\r\n</li>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
298
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuItemButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
299
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuItemButtonComponent, isStandalone: true, selector: "sac-contextmenubutton", providers: [
300
+ {
301
+ provide: SacContextmenuItemCommon,
302
+ useExisting: forwardRef(() => SacContextmenuItemButtonComponent),
303
+ },
304
+ ], usesInheritance: true, ngImport: i0, template: "<li>\n <button\n [id]=\"name\"\n type=\"button\"\n class=\"dropdown-item\"\n (click)=\"callaction($event)\"\n [class.disabled]=\"isdisabled\"\n [ngClass]=\"cssclass\"\n [attr.disabled]=\"isdisabled ? 'disabled' : null\">\n <div class=\"d-flex\">\n <div\n *ngIf=\"!isicondisabled\"\n style=\"min-width: 1.5rem\">\n <img\n *ngIf=\"image\"\n [src]=\"image\"\n class=\"align-baseline\" />\n <i\n *ngIf=\"icon\"\n [class]=\"iconstyle + ' ' + icon\"></i>\n </div>\n <div class=\"flex-grow-1\">{{ text }}</div>\n </div>\n </button>\n</li>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
288
305
  }
289
306
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuItemButtonComponent, decorators: [{
290
307
  type: Component,
291
- args: [{ selector: 'sac-contextmenubutton', standalone: true, imports: [NgIf], template: "<li>\r\n <button\r\n type=\"button\"\r\n class=\"dropdown-item\"\r\n (click)=\"callaction($event)\"\r\n [class.disabled]=\"isdisabled\"\r\n [class]=\"cssclass\"\r\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\r\n >\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"!isicondisabled\" style=\"min-width: 1.5rem\">\r\n <img *ngIf=\"image\" [src]=\"image\" class=\"align-baseline\" />\r\n <i *ngIf=\"icon\" [class]=\"iconstyle + ' ' + icon\"></i>\r\n </div>\r\n <div class=\"flex-grow-1\">{{ text }}</div>\r\n </div>\r\n </button>\r\n</li>\r\n" }]
292
- }], ctorParameters: function () { return [{ type: i1.SacContextmenuCommon }]; } });
308
+ args: [{ selector: 'sac-contextmenubutton', providers: [
309
+ {
310
+ provide: SacContextmenuItemCommon,
311
+ useExisting: forwardRef(() => SacContextmenuItemButtonComponent),
312
+ },
313
+ ], standalone: true, imports: [NgIf, NgClass], template: "<li>\n <button\n [id]=\"name\"\n type=\"button\"\n class=\"dropdown-item\"\n (click)=\"callaction($event)\"\n [class.disabled]=\"isdisabled\"\n [ngClass]=\"cssclass\"\n [attr.disabled]=\"isdisabled ? 'disabled' : null\">\n <div class=\"d-flex\">\n <div\n *ngIf=\"!isicondisabled\"\n style=\"min-width: 1.5rem\">\n <img\n *ngIf=\"image\"\n [src]=\"image\"\n class=\"align-baseline\" />\n <i\n *ngIf=\"icon\"\n [class]=\"iconstyle + ' ' + icon\"></i>\n </div>\n <div class=\"flex-grow-1\">{{ text }}</div>\n </div>\n </button>\n</li>\n" }]
314
+ }], ctorParameters: function () { return []; } });
293
315
 
294
316
  /**
295
317
  * Splitter Komponente in Context Menü
296
318
  */
297
319
  class SacContextmenuItemSplitterComponent extends SacContextmenuItemCommon {
298
320
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuItemSplitterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuItemSplitterComponent, isStandalone: true, selector: "sac-contextmenusplitter", usesInheritance: true, ngImport: i0, template: "<li><div class=\"dropdown-divider\"></div></li>\r\n" }); }
321
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacContextmenuItemSplitterComponent, isStandalone: true, selector: "sac-contextmenusplitter", providers: [
322
+ {
323
+ provide: SacContextmenuItemCommon,
324
+ useExisting: forwardRef(() => SacContextmenuItemSplitterComponent),
325
+ },
326
+ ], usesInheritance: true, ngImport: i0, template: "<li><div class=\"dropdown-divider\"></div></li>\n" }); }
300
327
  }
301
328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacContextmenuItemSplitterComponent, decorators: [{
302
329
  type: Component,
303
- args: [{ selector: 'sac-contextmenusplitter', standalone: true, template: "<li><div class=\"dropdown-divider\"></div></li>\r\n" }]
330
+ args: [{ selector: 'sac-contextmenusplitter', standalone: true, providers: [
331
+ {
332
+ provide: SacContextmenuItemCommon,
333
+ useExisting: forwardRef(() => SacContextmenuItemSplitterComponent),
334
+ },
335
+ ], template: "<li><div class=\"dropdown-divider\"></div></li>\n" }]
336
+ }] });
337
+
338
+ class SacToControlHeightPipe {
339
+ // #region Public Methods
340
+ /**
341
+ * Returns the CSS class that defines the height for the control
342
+ * @param value ControlHeight value or null
343
+ */
344
+ transform(value) {
345
+ // Return default value
346
+ if (!value) {
347
+ return '';
348
+ }
349
+ switch (value) {
350
+ case ControlHeight.Small:
351
+ return 'form-control-sm';
352
+ case ControlHeight.Large:
353
+ return 'form-control-lg';
354
+ default:
355
+ return '';
356
+ }
357
+ }
358
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToControlHeightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
359
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SacToControlHeightPipe, isStandalone: true, name: "toControlHeight" }); }
360
+ }
361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToControlHeightPipe, decorators: [{
362
+ type: Pipe,
363
+ args: [{
364
+ name: 'toControlHeight',
365
+ standalone: true,
366
+ }]
367
+ }] });
368
+
369
+ class SacToControlWidthCssPipe {
370
+ // #region Public Methods
371
+ /**
372
+ * Get CSS classes from label width configuration to set control size
373
+ * @param value Configuration with grid columns for different viewports
374
+ * @returns string with css classe for bootstrap3
375
+ */
376
+ transform(value) {
377
+ const classes = [];
378
+ if (value.labelSizeXs) {
379
+ classes.push('col-' + this.calcControlSize(value.labelSizeXs));
380
+ }
381
+ if (value.labelSizeSm) {
382
+ classes.push('col-sm-' + this.calcControlSize(value.labelSizeSm));
383
+ }
384
+ if (value.labelSizeMd) {
385
+ classes.push('col-md-' + this.calcControlSize(value.labelSizeMd));
386
+ }
387
+ if (value.labelSizeLg) {
388
+ classes.push('col-lg-' + this.calcControlSize(value.labelSizeLg));
389
+ }
390
+ if (value.labelSizeXl) {
391
+ classes.push('col-xl-' + this.calcControlSize(value.labelSizeXl));
392
+ }
393
+ if (value.labelSizeXxl) {
394
+ classes.push('col-xxl-' + this.calcControlSize(value.labelSizeXxl));
395
+ }
396
+ return classes.join(' ');
397
+ }
398
+ // #endregion Public Methods
399
+ // #region Private Methods
400
+ /**
401
+ * calculate the control size
402
+ * @param labelsize grid size of label
403
+ * @returns grid size for control. should be between 1 and 12
404
+ */
405
+ calcControlSize(labelsize) {
406
+ if (labelsize === 12) {
407
+ return 12;
408
+ }
409
+ if (!labelsize) {
410
+ return 12;
411
+ }
412
+ return 12 - labelsize;
413
+ }
414
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToControlWidthCssPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
415
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SacToControlWidthCssPipe, isStandalone: true, name: "toControlWidthCss" }); }
416
+ }
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToControlWidthCssPipe, decorators: [{
418
+ type: Pipe,
419
+ args: [{
420
+ name: 'toControlWidthCss',
421
+ standalone: true,
422
+ }]
423
+ }] });
424
+
425
+ class SacToLabelHeightPipe {
426
+ // #region Public Methods
427
+ /**
428
+ * Returns the CSS class that defines the height for the control
429
+ * @param value ControlHeight value or null
430
+ */
431
+ transform(value) {
432
+ // Return default value
433
+ if (!value) {
434
+ return '';
435
+ }
436
+ switch (value) {
437
+ case ControlHeight.Small:
438
+ return 'col-form-label-sm';
439
+ case ControlHeight.Large:
440
+ return 'col-form-label-lg';
441
+ default:
442
+ return '';
443
+ }
444
+ }
445
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToLabelHeightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
446
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SacToLabelHeightPipe, isStandalone: true, name: "toLabelHeight" }); }
447
+ }
448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToLabelHeightPipe, decorators: [{
449
+ type: Pipe,
450
+ args: [{
451
+ name: 'toLabelHeight',
452
+ standalone: true,
453
+ }]
454
+ }] });
455
+
456
+ class SacToLabelWidthCssPipe {
457
+ // #region Public Methods
458
+ /**
459
+ * Get CSS classes from label width configuration to set label size
460
+ * @param value Configuration with grid columns for different viewports
461
+ * @returns string with css classe for bootstrap3
462
+ */
463
+ transform(value) {
464
+ const classes = [];
465
+ if (value.labelSizeXs) {
466
+ classes.push('col-' + value.labelSizeXs);
467
+ }
468
+ if (value.labelSizeSm) {
469
+ classes.push('col-sm-' + value.labelSizeSm);
470
+ }
471
+ if (value.labelSizeMd) {
472
+ classes.push('col-md-' + value.labelSizeMd);
473
+ }
474
+ if (value.labelSizeLg) {
475
+ classes.push('col-lg-' + value.labelSizeLg);
476
+ }
477
+ if (value.labelSizeXl) {
478
+ classes.push('col-xl-' + value.labelSizeXl);
479
+ }
480
+ if (value.labelSizeXxl) {
481
+ classes.push('col-xxl-' + value.labelSizeXxl);
482
+ }
483
+ return classes.join(' ');
484
+ }
485
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToLabelWidthCssPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
486
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SacToLabelWidthCssPipe, isStandalone: true, name: "toLabelWidthCss" }); }
487
+ }
488
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacToLabelWidthCssPipe, decorators: [{
489
+ type: Pipe,
490
+ args: [{
491
+ name: 'toLabelWidthCss',
492
+ standalone: true,
493
+ }]
304
494
  }] });
305
495
 
306
496
  /**
307
- * Erweiterung / Hooking für automatismen in Formular. Wird als Container für alle Controls benötigt.
497
+ * Tooltip Komponente
308
498
  *
309
- * @example Beispiel über Div Container
499
+ * @example ToolTip Control
310
500
  *
311
- * <div ngForm></div>
501
+ * <ngTooltip tooltiptext="Mein Tooltip" [inlinemode]="true">
502
+ * <i class="tooltip"></i>
503
+ * </ngTooltip>
312
504
  *
313
- * @example Beispiel über Form Tag
505
+ * @example ToolTip Control im Inline Mode. Style auf Icon kann auch in Klasse ausgelagert werden.
314
506
  *
315
- * <form></form>
507
+ * <div class="form-inline">
508
+ * <ngInputSearch iconname="Suchen"></ngInputSearch>
509
+ * <ngTooltip tooltiptext="Mein Tooltip" [inlinemode]="true">
510
+ * <i class="tooltip" style="position: relative; left: 0; top: 3px; display: inline-block; margin-right: 10px;"></i>
511
+ * </ngTooltip>
512
+ * </div>
316
513
  *
317
514
  */
318
- class SacFormDirective extends SacFormCommon {
515
+ class SacTooltipComponent extends SacTooltipCommon {
516
+ // #region Constructors
319
517
  /**
320
- * Konstruktor
321
- * @param form Instanz von NgForm für eigene automatische Formular Logik
518
+ * Konstrukor
519
+ * @param parent SacFormular Instanz
520
+ * @param injector Component Injector
322
521
  */
323
- constructor(form) {
324
- super(form);
325
- /**
326
- * Setzt die Standard CSS Klasse für auf dem Form Container
327
- */
328
- this.cssClassForm = true;
522
+ constructor(cdRef, ref) {
523
+ super(cdRef, ref);
329
524
  }
525
+ // #endregion Constructors
526
+ // #region Protected Methods
330
527
  /**
331
- * Setzt die CSS Klasse 'form-horizontal' wenn die Orientation auf Horizontal eingestellt ist
332
- */
333
- get orientientationHorizontal() { return this.getOrientation() === 'horizontal'; }
334
- /**
335
- * Setzt die CSS Klasse 'form-vertical' wenn die Orientation auf Vertical eingestellt ist
528
+ * Padding Value for Bootstrap5 Tooltip Padding
529
+ * @returns Static Padding Value for BS5
336
530
  */
337
- get orientientationVertical() { return this.getOrientation() === 'vertical'; }
338
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacFormDirective, deps: [{ token: i1$1.NgForm }], target: i0.ɵɵFactoryTarget.Directive }); }
339
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacFormDirective, isStandalone: true, selector: "form:not([ngNoForm]):not([formGroup]),[ngForm]", host: { properties: { "class.form": "this.cssClassForm", "class.form-horizontal": "this.orientientationHorizontal", "class.form-vertical": "this.orientientationVertical" } }, exportAs: ["sacform"], usesInheritance: true, ngImport: i0 }); }
531
+ getTooltipOffset() {
532
+ return 8;
533
+ }
534
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTooltipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
535
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTooltipComponent, isStandalone: true, selector: "sac-tooltip", usesInheritance: true, ngImport: i0, template: "<div\n [style.display]=\"inlinemode ? 'inline' : null\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <div\n #container\n (mouseenter)=\"ShowTooltip()\"\n (mouseleave)=\"HideTooltip()\"\n [style.display]=\"inlinemode ? 'inline' : null\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"IsTooltipVisible()\"\n #tooltip>\n <div\n [class.show]=\"IsTooltipContentVisible\"\n class=\"tooltip bs-tooltip-auto fade\"\n style=\"position: absolute\"\n [style.left.px]=\"LeftPos\"\n [style.top.px]=\"TopPos\"\n [class.top]=\"GetTooltipPosition() === TooltipPosition.top\"\n [class.left]=\"GetTooltipPosition() === TooltipPosition.left\"\n [class.right]=\"GetTooltipPosition() === TooltipPosition.right\"\n [class.bottom]=\"GetTooltipPosition() === TooltipPosition.bottom\"\n [attr.data-popper-placement]=\"\n GetTooltipPosition() === TooltipPosition.right\n ? 'right'\n : GetTooltipPosition() === TooltipPosition.left\n ? 'left'\n : GetTooltipPosition() === TooltipPosition.top\n ? 'top'\n : GetTooltipPosition() === TooltipPosition.bottom\n ? 'bottom'\n : null\n \">\n <div\n class=\"tooltip-arrow\"\n style=\"position: absolute\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\"></div>\n <div class=\"tooltip-inner\">{{ tooltiptext }}</div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
340
536
  }
341
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacFormDirective, decorators: [{
537
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTooltipComponent, decorators: [{
538
+ type: Component,
539
+ args: [{ selector: 'sac-tooltip', standalone: true, imports: [NgIf, SacTestingAttributePipe], template: "<div\n [style.display]=\"inlinemode ? 'inline' : null\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <div\n #container\n (mouseenter)=\"ShowTooltip()\"\n (mouseleave)=\"HideTooltip()\"\n [style.display]=\"inlinemode ? 'inline' : null\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"IsTooltipVisible()\"\n #tooltip>\n <div\n [class.show]=\"IsTooltipContentVisible\"\n class=\"tooltip bs-tooltip-auto fade\"\n style=\"position: absolute\"\n [style.left.px]=\"LeftPos\"\n [style.top.px]=\"TopPos\"\n [class.top]=\"GetTooltipPosition() === TooltipPosition.top\"\n [class.left]=\"GetTooltipPosition() === TooltipPosition.left\"\n [class.right]=\"GetTooltipPosition() === TooltipPosition.right\"\n [class.bottom]=\"GetTooltipPosition() === TooltipPosition.bottom\"\n [attr.data-popper-placement]=\"\n GetTooltipPosition() === TooltipPosition.right\n ? 'right'\n : GetTooltipPosition() === TooltipPosition.left\n ? 'left'\n : GetTooltipPosition() === TooltipPosition.top\n ? 'top'\n : GetTooltipPosition() === TooltipPosition.bottom\n ? 'bottom'\n : null\n \">\n <div\n class=\"tooltip-arrow\"\n style=\"position: absolute\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\"></div>\n <div class=\"tooltip-inner\">{{ tooltiptext }}</div>\n </div>\n </div>\n</div>\n" }]
540
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; } });
541
+
542
+ class SacFormLayoutDirective extends SacFormLayoutCommon {
543
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacFormLayoutDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
544
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacFormLayoutDirective, isStandalone: true, selector: "[sacFormLayout]", usesInheritance: true, ngImport: i0 }); }
545
+ }
546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacFormLayoutDirective, decorators: [{
342
547
  type: Directive,
343
548
  args: [{
344
- selector: 'form:not([ngNoForm]):not([formGroup]),[ngForm]',
345
- exportAs: 'sacform',
346
- standalone: true
549
+ selector: '[sacFormLayout]',
550
+ standalone: true,
347
551
  }]
348
- }], ctorParameters: function () { return [{ type: i1$1.NgForm }]; }, propDecorators: { cssClassForm: [{
349
- type: HostBinding,
350
- args: ['class.form']
351
- }], orientientationHorizontal: [{
352
- type: HostBinding,
353
- args: ['class.form-horizontal']
354
- }], orientientationVertical: [{
355
- type: HostBinding,
356
- args: ['class.form-vertical']
357
- }] } });
552
+ }] });
358
553
 
359
554
  /**
360
555
  * Dropzone Komponente für mehrere Uploads
361
556
  * @see https://github.com/kukhariev/ngx-uploadx/
362
557
  */
363
558
  class SacDropzoneMultipleComponent extends SacDropzoneMultipleCommon {
559
+ // #region Constructors
364
560
  /**
365
- * Konstruktor
366
- * @param parent Formular
367
- * @param injector Angular Dependency Injection Service
368
- * @param renderer Angular Rendering Engine
369
- * @param ngZone ngZone
561
+ * Constructor
562
+ * @param formLayout SacFormLayout to define scoped layout settings
563
+ * @param injector Injector for injecting services
564
+ * @param renderer Angular rendering engine
565
+ * @param ngZone ngZone to manage external javascripts
370
566
  */
371
- constructor(parent, injector, renderer, ngZone) {
372
- super(parent, injector, renderer, ngZone);
567
+ constructor(formLayout, injector, renderer, ngZone) {
568
+ super(formLayout, injector, renderer, ngZone);
373
569
  }
570
+ // #endregion Constructors
571
+ // #region Public Methods
374
572
  /**
375
573
  * Initialisiert das Control
376
574
  */
377
575
  ngOnInit() {
378
576
  super.ngOnInit();
379
577
  }
380
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropzoneMultipleComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
578
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropzoneMultipleComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
381
579
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDropzoneMultipleComponent, isStandalone: true, selector: "sac-dropzonemultiple", providers: [
382
580
  {
383
581
  provide: NG_VALUE_ACCESSOR,
@@ -389,7 +587,7 @@ class SacDropzoneMultipleComponent extends SacDropzoneMultipleCommon {
389
587
  multi: true,
390
588
  useExisting: forwardRef(() => SacDropzoneMultipleComponent),
391
589
  },
392
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <div\r\n class=\"dropzone d-flex justify-content-center position-relative\"\r\n (drop)=\"dropHandler($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n [class.active]=\"active\"\r\n [style.min-height]=\"uploadheight\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div\r\n class=\"content d-flex justify-content-center\"\r\n *ngIf=\"uploads.length === 0\"\r\n >\r\n <div class=\"align-self-center text-center\">\r\n <div\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\r\n *ngIf=\"uploads.length > 0\"\r\n >\r\n <div class=\"flex-fill progress-container\">\r\n <div\r\n class=\"dropzone-uploadstates\"\r\n [class.mt-1]=\"i > 0\"\r\n *ngFor=\"let file of uploads; let i = index\"\r\n >\r\n <div class=\"input-group upload-component upload-component-multiple\">\r\n <div class=\"form-control upload-progress border-secondary\">\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\"\r\n >\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <a\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <input\r\n #files\r\n multiple\r\n id=\"{{ name }}_uploadinput\"\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n [disabled]=\"HasQueueItem()\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
590
+ ], usesInheritance: true, ngImport: i0, template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"dropzone d-flex justify-content-center position-relative\"\n (drop)=\"dropHandler($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [class.active]=\"active\"\n [style.min-height]=\"uploadheight\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div\n class=\"content d-flex justify-content-center\"\n *ngIf=\"uploads.length === 0\">\n <div class=\"align-self-center text-center\">\n <div [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n <div\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\n *ngIf=\"uploads.length > 0\">\n <div class=\"flex-fill progress-container\">\n <div\n class=\"dropzone-uploadstates\"\n [class.mt-1]=\"i > 0\"\n *ngFor=\"let file of uploads; let i = index\">\n <div\n class=\"input-group upload-component upload-component-multiple\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <div class=\"form-control upload-progress border-secondary\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"file.progress === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"file.progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"file.progress\">\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\n </div>\n </div>\n </div>\n <a\n class=\"btn\"\n (click)=\"cancel(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </a>\n </div>\n </div>\n </div>\n </div>\n <input\n #files\n multiple\n id=\"{{ name }}_uploadinput\"\n type=\"file\"\n class=\"custom-file-input\"\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n [disabled]=\"HasQueueItem()\" />\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
393
591
  }
394
592
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropzoneMultipleComponent, decorators: [{
395
593
  type: Component,
@@ -404,8 +602,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
404
602
  multi: true,
405
603
  useExisting: forwardRef(() => SacDropzoneMultipleComponent),
406
604
  },
407
- ], standalone: true, imports: [NgIf, NgClass, NgFor, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <div\r\n class=\"dropzone d-flex justify-content-center position-relative\"\r\n (drop)=\"dropHandler($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n [class.active]=\"active\"\r\n [style.min-height]=\"uploadheight\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div\r\n class=\"content d-flex justify-content-center\"\r\n *ngIf=\"uploads.length === 0\"\r\n >\r\n <div class=\"align-self-center text-center\">\r\n <div\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\r\n *ngIf=\"uploads.length > 0\"\r\n >\r\n <div class=\"flex-fill progress-container\">\r\n <div\r\n class=\"dropzone-uploadstates\"\r\n [class.mt-1]=\"i > 0\"\r\n *ngFor=\"let file of uploads; let i = index\"\r\n >\r\n <div class=\"input-group upload-component upload-component-multiple\">\r\n <div class=\"form-control upload-progress border-secondary\">\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\"\r\n >\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <a\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <input\r\n #files\r\n multiple\r\n id=\"{{ name }}_uploadinput\"\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n [disabled]=\"HasQueueItem()\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"] }]
408
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
605
+ ], standalone: true, imports: [
606
+ NgIf,
607
+ NgClass,
608
+ NgFor,
609
+ AsyncPipe,
610
+ SacToControlWidthCssPipe,
611
+ SacToLabelWidthCssPipe,
612
+ SacToLabelHeightPipe,
613
+ SacTooltipComponent,
614
+ SacToControlHeightPipe,
615
+ SacTestingAttributePipe,
616
+ ], template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"dropzone d-flex justify-content-center position-relative\"\n (drop)=\"dropHandler($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [class.active]=\"active\"\n [style.min-height]=\"uploadheight\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div\n class=\"content d-flex justify-content-center\"\n *ngIf=\"uploads.length === 0\">\n <div class=\"align-self-center text-center\">\n <div [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n <div\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\n *ngIf=\"uploads.length > 0\">\n <div class=\"flex-fill progress-container\">\n <div\n class=\"dropzone-uploadstates\"\n [class.mt-1]=\"i > 0\"\n *ngFor=\"let file of uploads; let i = index\">\n <div\n class=\"input-group upload-component upload-component-multiple\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <div class=\"form-control upload-progress border-secondary\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"file.progress === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"file.progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"file.progress\">\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\n </div>\n </div>\n </div>\n <a\n class=\"btn\"\n (click)=\"cancel(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </a>\n </div>\n </div>\n </div>\n </div>\n <input\n #files\n multiple\n id=\"{{ name }}_uploadinput\"\n type=\"file\"\n class=\"custom-file-input\"\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n [disabled]=\"HasQueueItem()\" />\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"] }]
617
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
409
618
  type: Host
410
619
  }, {
411
620
  type: Optional
@@ -415,6 +624,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
415
624
  * Server File Browser Komponente
416
625
  */
417
626
  class SacBrowserComponent extends SacFileBrowserCommon {
627
+ // #endregion Properties
628
+ // #region Constructors
418
629
  /**
419
630
  * Konstruktor
420
631
  * @param httpClient HTTP Client
@@ -425,14 +636,8 @@ class SacBrowserComponent extends SacFileBrowserCommon {
425
636
  super(httpClient, injector);
426
637
  this.confirmService = confirmService;
427
638
  }
428
- /**
429
- * Erzeugt ein Array von einer bestimmten grösse
430
- * @param anzahl Grösse des Array
431
- * @returns Array
432
- */
433
- count(anzahl) {
434
- return new Array(anzahl);
435
- }
639
+ // #endregion Constructors
640
+ // #region Public Methods
436
641
  /**
437
642
  * Confirm Action wenn ein File gelöscht werden soll
438
643
  * @param file File das gelöscht werden soll.
@@ -441,8 +646,8 @@ class SacBrowserComponent extends SacFileBrowserCommon {
441
646
  confirmDeleteFile(file) {
442
647
  return new Observable((observer) => {
443
648
  forkJoin({
444
- title: this.lngResourceService.GetString('FILEBROWSER_DELETE'),
445
- message: this.lngResourceService.GetString('FILEBROWSER_CONFIRM_DELETEFILE'),
649
+ title: this.lngResourceService.GetString(this.validationKeyService.FilebrowserButtonDelete),
650
+ message: this.lngResourceService.GetString(this.validationKeyService.FilebrowserButtonDelete),
446
651
  }).subscribe((text) => {
447
652
  this.confirmService
448
653
  .ConfirmMessage(text.title, text.message)
@@ -466,8 +671,8 @@ class SacBrowserComponent extends SacFileBrowserCommon {
466
671
  confirmDeleteNode(node) {
467
672
  return new Observable((observer) => {
468
673
  forkJoin({
469
- title: this.lngResourceService.GetString('FILEBROWSER_DELETE'),
470
- message: this.lngResourceService.GetString('FILEBROWSER_CONFIRM_DELETEFOLDER'),
674
+ title: this.lngResourceService.GetString(this.validationKeyService.FilebrowserButtonDelete),
675
+ message: this.lngResourceService.GetString(this.validationKeyService.FilebrowserConfirmTextDeleteFolder),
471
676
  }).subscribe((text) => {
472
677
  this.confirmService
473
678
  .ConfirmMessage(text.title, text.message)
@@ -483,6 +688,14 @@ class SacBrowserComponent extends SacFileBrowserCommon {
483
688
  });
484
689
  });
485
690
  }
691
+ /**
692
+ * Erzeugt ein Array von einer bestimmten grösse
693
+ * @param anzahl Grösse des Array
694
+ * @returns Array
695
+ */
696
+ count(anzahl) {
697
+ return new Array(anzahl);
698
+ }
486
699
  /**
487
700
  * Methode wird aufgerufen, wenn eine Datei verschoben wird
488
701
  * @param uploadid Upload ID
@@ -493,8 +706,8 @@ class SacBrowserComponent extends SacFileBrowserCommon {
493
706
  this.uploadComponent.cancel(item.uploadId);
494
707
  }
495
708
  }
496
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacBrowserComponent, deps: [{ token: i1$2.HttpClient }, { token: i0.Injector }, { token: ServiceConfirm }], target: i0.ɵɵFactoryTarget.Component }); }
497
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacBrowserComponent, isStandalone: true, selector: "sac-filebrowser", providers: [ServiceConfirm], viewQueries: [{ propertyName: "uploadComponent", first: true, predicate: SacDropzoneMultipleComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 col-md-5 col-lg-4\">\r\n <ul class=\"list-group list-group-flush\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeItem\"\r\n [ngTemplateOutletContext]=\"{node: rootNode, deep: 0}\"\r\n ></ng-template>\r\n </ul>\r\n\r\n <ng-template #treeItem let-node=\"node\" let-deep=\"deep\">\r\n <li\r\n class=\"list-group-item py-1 px-2 d-flex align-items-center\"\r\n [class.list-group-item-secondary]=\"node === selectedNode\"\r\n (click)=\"selectNode(node)\"\r\n style=\"cursor: pointer\"\r\n >\r\n <div class=\"mx-3\" *ngFor=\"let i of count(deep)\"></div>\r\n <div\r\n (click)=\"switchExpandNode(node);$event.stopPropagation();\"\r\n class=\"me-2\"\r\n [ngClass]=\"node.ChildNodes.length === 0 ? iconFolderEmpty: (!node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderCollabsed : (node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderOpen : ''))\"\r\n ></div>\r\n <ng-container *ngIf=\"!node.IsEditMode\">\r\n <div class=\"flex-grow-1\">{{ node.Name }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"node.IsEditMode\">\r\n <div class=\"flex-grow-1\" ngForm>\r\n <input\r\n name=\"editFolder\"\r\n class=\"form-control form-control-sm\"\r\n [ngModel]=\"node.Name\"\r\n [ngModelOptions]=\"{updateOn: 'blur'}\"\r\n (ngModelChange)=\"renameNode(node, $event)\"\r\n (keydown.enter)=\"$event.target.blur();false;\"\r\n (blur)=\"renameNode(node, null)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </div>\r\n </ng-container>\r\n <div class=\"flex-shrink-0\">\r\n <a\r\n *ngIf=\"node.Path !== '/' && allowfolderrename\"\r\n class=\"btn btn-sm btn-link text-secondary\"\r\n (click)=\"editNode(node);$event.stopPropagation();\"\r\n >\r\n <i [class]=\"iconEdit\"></i>\r\n </a>\r\n <sac-contextmenu cssclass=\"d-inline-block\">\r\n <sac-contextmenubutton\r\n *ngIf=\"allowfoldercreate\"\r\n text=\"{{ lngResourceService.GetString('FILEBROWSER_NEWFOLDER') | async }}\"\r\n [icon]=\"iconFolderNew\"\r\n (clicked)=\"newNode(node)\"\r\n ></sac-contextmenubutton>\r\n <sac-contextmenubutton\r\n *ngIf=\"node.Path !== '/' && allowfolderdelete\"\r\n text=\"{{ lngResourceService.GetString('FILEBROWSER_DELETE') | async }}\"\r\n [icon]=\"iconDelete\"\r\n (clicked)=\"deleteNode(node)\"\r\n ></sac-contextmenubutton>\r\n <sac-contextmenusplitter\r\n *ngIf=\"allowfoldercreate || (node.Path !== '/' && allowfolderdelete)\"\r\n ></sac-contextmenusplitter>\r\n <sac-contextmenubutton\r\n text=\"{{ lngResourceService.GetString('FILEBROWSER_REFRESH') | async }}\"\r\n [icon]=\"iconRefresh\"\r\n (clicked)=\"refreshNode(node)\"\r\n ></sac-contextmenubutton>\r\n </sac-contextmenu>\r\n </div>\r\n </li>\r\n\r\n <ng-container *ngIf=\"node.IsExpanded\">\r\n <ng-template\r\n *ngFor=\"let child of node.ChildNodes\"\r\n [ngTemplateOutlet]=\"treeItem\"\r\n [ngTemplateOutletContext]=\"{node: child, deep: deep + 1}\"\r\n ></ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n <div class=\"col-12 col-md-7 col-lg-8\">\r\n <ng-container *ngIf=\"selectedNode && selectedNode.Files\">\r\n <div *ngIf=\"allowfileupload\" ngForm>\r\n <sac-dropzonemultiple\r\n [disablelabel]=\"true\"\r\n [endpoint]=\"apiurl + '/uploadregister'\"\r\n name=\"upload\"\r\n uploadheight=\"5rem\"\r\n [ngModel]=\"uploads\"\r\n (ngModelChange)=\"uploadComplete(selectedNode,$event)\"\r\n [allowedtypes]=\"allowedtypes\"\r\n >{{ lngResourceService.GetString('FILEBROWSER_UPLOAD') | async\r\n }}</sac-dropzonemultiple\r\n >\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-striped table-hover align-middle\">\r\n <thead>\r\n <th>\r\n {{ lngResourceService.GetString('FILEBROWSER_GRID_FILE') | async\r\n }}\r\n </th>\r\n <th>\r\n {{ lngResourceService.GetString('FILEBROWSER_GRID_SIZE') | async\r\n }}\r\n </th>\r\n <th style=\"width: 80px\"></th>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"selectedNode.Files.length === 0\">\r\n <tr>\r\n <td colspan=\"3\">\r\n {{ lngResourceService.GetString('FILEBROWSER_NO_FILES') |\r\n async }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectedNode.Files.length > 0\">\r\n <tr\r\n *ngFor=\"let item of selectedNode.Files\"\r\n (click)=\"selectFile(item)\"\r\n [class.table-primary]=\"selectedFileItem === item\"\r\n >\r\n <td [class.p-2]=\"item.IsEditMode\">\r\n <ng-container *ngIf=\"!item.IsEditMode\">\r\n {{ item.Filename }}\r\n </ng-container>\r\n <ng-container *ngIf=\"item.IsEditMode\">\r\n <div>\r\n <input\r\n name=\"editFolder\"\r\n class=\"form-control form-control-sm\"\r\n [ngModel]=\"item.Filename\"\r\n [ngModelOptions]=\"{updateOn: 'blur'}\"\r\n (ngModelChange)=\"renameFile(item, $event)\"\r\n (keydown.enter)=\"$event.target.blur();false\"\r\n (blur)=\"renameFile(item, null)\"\r\n (click)=\"$event.stopPropagation();\"\r\n />\r\n </div>\r\n </ng-container>\r\n </td>\r\n <td>{{ item.Size}}</td>\r\n <td class=\"p-2\">\r\n <div class=\"btn-toolbar\" role=\"toolbar\">\r\n <div class=\"btn-group ml-auto\" role=\"group\">\r\n <a\r\n *ngIf=\"allowfilerename\"\r\n class=\"btn btn-sm btn-link text-secondary\"\r\n (click)=\"editFile(item);$event.stopPropagation();\"\r\n ><i [class]=\"iconEdit\"></i\r\n ></a>\r\n </div>\r\n <div class=\"btn-group\" role=\"group\">\r\n <a\r\n *ngIf=\"allowfiledelete\"\r\n class=\"btn btn-sm btn-link text-secondary\"\r\n (click)=\"deleteFile(item);$event.stopPropagation();\"\r\n ><i [class]=\"iconDelete\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: HttpClientModule }, { kind: "component", type: SacContextmenuComponent, selector: "sac-contextmenu" }, { kind: "component", type: SacContextmenuItemButtonComponent, selector: "sac-contextmenubutton" }, { kind: "component", type: SacContextmenuItemSplitterComponent, selector: "sac-contextmenusplitter" }, { kind: "component", type: SacDropzoneMultipleComponent, selector: "sac-dropzonemultiple" }] }); }
709
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacBrowserComponent, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: ServiceConfirm }], target: i0.ɵɵFactoryTarget.Component }); }
710
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacBrowserComponent, isStandalone: true, selector: "sac-filebrowser", providers: [ServiceConfirm], viewQueries: [{ propertyName: "uploadComponent", first: true, predicate: SacDropzoneMultipleComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 col-md-5 col-lg-4\">\n <ul class=\"list-group list-group-flush\">\n <ng-template\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: rootNode, deep: 0}\"\n ></ng-template>\n </ul>\n\n <ng-template #treeItem let-node=\"node\" let-deep=\"deep\">\n <li\n class=\"list-group-item py-1 px-2 d-flex align-items-center\"\n [class.list-group-item-secondary]=\"node === selectedNode\"\n (click)=\"selectNode(node)\"\n style=\"cursor: pointer\"\n >\n <div class=\"mx-3\" *ngFor=\"let i of count(deep)\"></div>\n <div\n (click)=\"switchExpandNode(node);$event.stopPropagation();\"\n class=\"me-2\"\n [ngClass]=\"node.ChildNodes.length === 0 ? iconFolderEmpty: (!node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderCollabsed : (node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderOpen : ''))\"\n ></div>\n <ng-container *ngIf=\"!node.IsEditMode\">\n <div class=\"flex-grow-1\">{{ node.Name }}</div>\n </ng-container>\n <ng-container *ngIf=\"node.IsEditMode\">\n <div class=\"flex-grow-1\" ngForm>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"node.Name\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameNode(node, $event)\"\n (keydown.enter)=\"$event.target.blur();false;\"\n (blur)=\"renameNode(node, null)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n </ng-container>\n <div class=\"flex-shrink-0\">\n <a\n *ngIf=\"node.Path !== '/' && allowfolderrename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editNode(node);$event.stopPropagation();\"\n >\n <i [class]=\"iconEdit\"></i>\n </a>\n <sac-contextmenu cssclass=\"d-inline-block\">\n <sac-contextmenubutton\n *ngIf=\"allowfoldercreate\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonNewFolder) | async }}\"\n [icon]=\"iconFolderNew\"\n (clicked)=\"newNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenubutton\n *ngIf=\"node.Path !== '/' && allowfolderdelete\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonDelete) | async }}\"\n [icon]=\"iconDelete\"\n (clicked)=\"deleteNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenusplitter\n *ngIf=\"allowfoldercreate || (node.Path !== '/' && allowfolderdelete)\"\n ></sac-contextmenusplitter>\n <sac-contextmenubutton\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonRefresh) | async }}\"\n [icon]=\"iconRefresh\"\n (clicked)=\"refreshNode(node)\"\n ></sac-contextmenubutton>\n </sac-contextmenu>\n </div>\n </li>\n\n <ng-container *ngIf=\"node.IsExpanded\">\n <ng-template\n *ngFor=\"let child of node.ChildNodes\"\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: child, deep: deep + 1}\"\n ></ng-template>\n </ng-container>\n </ng-template>\n </div>\n <div class=\"col-12 col-md-7 col-lg-8\">\n <ng-container *ngIf=\"selectedNode && selectedNode.Files\">\n <div *ngIf=\"allowfileupload\" ngForm>\n <sac-dropzonemultiple\n [disablelabel]=\"true\"\n [endpoint]=\"apiurl + '/uploadregister'\"\n name=\"upload\"\n uploadheight=\"5rem\"\n [ngModel]=\"uploads\"\n (ngModelChange)=\"uploadComplete(selectedNode,$event)\"\n [allowedtypes]=\"allowedtypes\"\n >{{\n lngResourceService.GetString(validationKeyService.FilebrowserButtonUpload)\n | async }}</sac-dropzonemultiple\n >\n </div>\n <div class=\"table-responsive\">\n <table class=\"table table-striped table-hover align-middle\">\n <thead>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridFilename)\n | async }}\n </th>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridSize)\n | async }}\n </th>\n <th style=\"width: 80px\"></th>\n </thead>\n <tbody>\n <ng-container *ngIf=\"selectedNode.Files.length === 0\">\n <tr>\n <td colspan=\"3\">\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridNoFiles)\n | async }}\n </td>\n </tr>\n </ng-container>\n <ng-container *ngIf=\"selectedNode.Files.length > 0\">\n <tr\n *ngFor=\"let item of selectedNode.Files\"\n (click)=\"selectFile(item)\"\n [class.table-primary]=\"selectedFileItem === item\"\n >\n <td [class.p-2]=\"item.IsEditMode\">\n <ng-container *ngIf=\"!item.IsEditMode\">\n {{ item.Filename }}\n </ng-container>\n <ng-container *ngIf=\"item.IsEditMode\">\n <div>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"item.Filename\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameFile(item, $event)\"\n (keydown.enter)=\"$event.target.blur();false\"\n (blur)=\"renameFile(item, null)\"\n (click)=\"$event.stopPropagation();\"\n />\n </div>\n </ng-container>\n </td>\n <td>{{ item.Size}}</td>\n <td class=\"p-2\">\n <div class=\"btn-toolbar\" role=\"toolbar\">\n <div class=\"btn-group ml-auto\" role=\"group\">\n <a\n *ngIf=\"allowfilerename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconEdit\"></i\n ></a>\n </div>\n <div class=\"btn-group\" role=\"group\">\n <a\n *ngIf=\"allowfiledelete\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"deleteFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconDelete\"></i\n ></a>\n </div>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: HttpClientModule }, { kind: "component", type: SacContextmenuComponent, selector: "sac-contextmenu" }, { kind: "component", type: SacContextmenuItemButtonComponent, selector: "sac-contextmenubutton" }, { kind: "component", type: SacContextmenuItemSplitterComponent, selector: "sac-contextmenusplitter" }, { kind: "component", type: SacDropzoneMultipleComponent, selector: "sac-dropzonemultiple" }] }); }
498
711
  }
499
712
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacBrowserComponent, decorators: [{
500
713
  type: Component,
@@ -510,8 +723,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
510
723
  SacContextmenuItemButtonComponent,
511
724
  SacContextmenuItemSplitterComponent,
512
725
  SacDropzoneMultipleComponent,
513
- ], providers: [ServiceConfirm], template: "<div class=\"row\">\r\n <div class=\"col-12 col-md-5 col-lg-4\">\r\n <ul class=\"list-group list-group-flush\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"treeItem\"\r\n [ngTemplateOutletContext]=\"{node: rootNode, deep: 0}\"\r\n ></ng-template>\r\n </ul>\r\n\r\n <ng-template #treeItem let-node=\"node\" let-deep=\"deep\">\r\n <li\r\n class=\"list-group-item py-1 px-2 d-flex align-items-center\"\r\n [class.list-group-item-secondary]=\"node === selectedNode\"\r\n (click)=\"selectNode(node)\"\r\n style=\"cursor: pointer\"\r\n >\r\n <div class=\"mx-3\" *ngFor=\"let i of count(deep)\"></div>\r\n <div\r\n (click)=\"switchExpandNode(node);$event.stopPropagation();\"\r\n class=\"me-2\"\r\n [ngClass]=\"node.ChildNodes.length === 0 ? iconFolderEmpty: (!node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderCollabsed : (node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderOpen : ''))\"\r\n ></div>\r\n <ng-container *ngIf=\"!node.IsEditMode\">\r\n <div class=\"flex-grow-1\">{{ node.Name }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"node.IsEditMode\">\r\n <div class=\"flex-grow-1\" ngForm>\r\n <input\r\n name=\"editFolder\"\r\n class=\"form-control form-control-sm\"\r\n [ngModel]=\"node.Name\"\r\n [ngModelOptions]=\"{updateOn: 'blur'}\"\r\n (ngModelChange)=\"renameNode(node, $event)\"\r\n (keydown.enter)=\"$event.target.blur();false;\"\r\n (blur)=\"renameNode(node, null)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </div>\r\n </ng-container>\r\n <div class=\"flex-shrink-0\">\r\n <a\r\n *ngIf=\"node.Path !== '/' && allowfolderrename\"\r\n class=\"btn btn-sm btn-link text-secondary\"\r\n (click)=\"editNode(node);$event.stopPropagation();\"\r\n >\r\n <i [class]=\"iconEdit\"></i>\r\n </a>\r\n <sac-contextmenu cssclass=\"d-inline-block\">\r\n <sac-contextmenubutton\r\n *ngIf=\"allowfoldercreate\"\r\n text=\"{{ lngResourceService.GetString('FILEBROWSER_NEWFOLDER') | async }}\"\r\n [icon]=\"iconFolderNew\"\r\n (clicked)=\"newNode(node)\"\r\n ></sac-contextmenubutton>\r\n <sac-contextmenubutton\r\n *ngIf=\"node.Path !== '/' && allowfolderdelete\"\r\n text=\"{{ lngResourceService.GetString('FILEBROWSER_DELETE') | async }}\"\r\n [icon]=\"iconDelete\"\r\n (clicked)=\"deleteNode(node)\"\r\n ></sac-contextmenubutton>\r\n <sac-contextmenusplitter\r\n *ngIf=\"allowfoldercreate || (node.Path !== '/' && allowfolderdelete)\"\r\n ></sac-contextmenusplitter>\r\n <sac-contextmenubutton\r\n text=\"{{ lngResourceService.GetString('FILEBROWSER_REFRESH') | async }}\"\r\n [icon]=\"iconRefresh\"\r\n (clicked)=\"refreshNode(node)\"\r\n ></sac-contextmenubutton>\r\n </sac-contextmenu>\r\n </div>\r\n </li>\r\n\r\n <ng-container *ngIf=\"node.IsExpanded\">\r\n <ng-template\r\n *ngFor=\"let child of node.ChildNodes\"\r\n [ngTemplateOutlet]=\"treeItem\"\r\n [ngTemplateOutletContext]=\"{node: child, deep: deep + 1}\"\r\n ></ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </div>\r\n <div class=\"col-12 col-md-7 col-lg-8\">\r\n <ng-container *ngIf=\"selectedNode && selectedNode.Files\">\r\n <div *ngIf=\"allowfileupload\" ngForm>\r\n <sac-dropzonemultiple\r\n [disablelabel]=\"true\"\r\n [endpoint]=\"apiurl + '/uploadregister'\"\r\n name=\"upload\"\r\n uploadheight=\"5rem\"\r\n [ngModel]=\"uploads\"\r\n (ngModelChange)=\"uploadComplete(selectedNode,$event)\"\r\n [allowedtypes]=\"allowedtypes\"\r\n >{{ lngResourceService.GetString('FILEBROWSER_UPLOAD') | async\r\n }}</sac-dropzonemultiple\r\n >\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-striped table-hover align-middle\">\r\n <thead>\r\n <th>\r\n {{ lngResourceService.GetString('FILEBROWSER_GRID_FILE') | async\r\n }}\r\n </th>\r\n <th>\r\n {{ lngResourceService.GetString('FILEBROWSER_GRID_SIZE') | async\r\n }}\r\n </th>\r\n <th style=\"width: 80px\"></th>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"selectedNode.Files.length === 0\">\r\n <tr>\r\n <td colspan=\"3\">\r\n {{ lngResourceService.GetString('FILEBROWSER_NO_FILES') |\r\n async }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"selectedNode.Files.length > 0\">\r\n <tr\r\n *ngFor=\"let item of selectedNode.Files\"\r\n (click)=\"selectFile(item)\"\r\n [class.table-primary]=\"selectedFileItem === item\"\r\n >\r\n <td [class.p-2]=\"item.IsEditMode\">\r\n <ng-container *ngIf=\"!item.IsEditMode\">\r\n {{ item.Filename }}\r\n </ng-container>\r\n <ng-container *ngIf=\"item.IsEditMode\">\r\n <div>\r\n <input\r\n name=\"editFolder\"\r\n class=\"form-control form-control-sm\"\r\n [ngModel]=\"item.Filename\"\r\n [ngModelOptions]=\"{updateOn: 'blur'}\"\r\n (ngModelChange)=\"renameFile(item, $event)\"\r\n (keydown.enter)=\"$event.target.blur();false\"\r\n (blur)=\"renameFile(item, null)\"\r\n (click)=\"$event.stopPropagation();\"\r\n />\r\n </div>\r\n </ng-container>\r\n </td>\r\n <td>{{ item.Size}}</td>\r\n <td class=\"p-2\">\r\n <div class=\"btn-toolbar\" role=\"toolbar\">\r\n <div class=\"btn-group ml-auto\" role=\"group\">\r\n <a\r\n *ngIf=\"allowfilerename\"\r\n class=\"btn btn-sm btn-link text-secondary\"\r\n (click)=\"editFile(item);$event.stopPropagation();\"\r\n ><i [class]=\"iconEdit\"></i\r\n ></a>\r\n </div>\r\n <div class=\"btn-group\" role=\"group\">\r\n <a\r\n *ngIf=\"allowfiledelete\"\r\n class=\"btn btn-sm btn-link text-secondary\"\r\n (click)=\"deleteFile(item);$event.stopPropagation();\"\r\n ><i [class]=\"iconDelete\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
514
- }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: i0.Injector }, { type: ServiceConfirm }]; }, propDecorators: { uploadComponent: [{
726
+ ], providers: [ServiceConfirm], template: "<div class=\"row\">\n <div class=\"col-12 col-md-5 col-lg-4\">\n <ul class=\"list-group list-group-flush\">\n <ng-template\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: rootNode, deep: 0}\"\n ></ng-template>\n </ul>\n\n <ng-template #treeItem let-node=\"node\" let-deep=\"deep\">\n <li\n class=\"list-group-item py-1 px-2 d-flex align-items-center\"\n [class.list-group-item-secondary]=\"node === selectedNode\"\n (click)=\"selectNode(node)\"\n style=\"cursor: pointer\"\n >\n <div class=\"mx-3\" *ngFor=\"let i of count(deep)\"></div>\n <div\n (click)=\"switchExpandNode(node);$event.stopPropagation();\"\n class=\"me-2\"\n [ngClass]=\"node.ChildNodes.length === 0 ? iconFolderEmpty: (!node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderCollabsed : (node.IsExpanded && node.ChildNodes.length > 0 ? iconFolderOpen : ''))\"\n ></div>\n <ng-container *ngIf=\"!node.IsEditMode\">\n <div class=\"flex-grow-1\">{{ node.Name }}</div>\n </ng-container>\n <ng-container *ngIf=\"node.IsEditMode\">\n <div class=\"flex-grow-1\" ngForm>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"node.Name\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameNode(node, $event)\"\n (keydown.enter)=\"$event.target.blur();false;\"\n (blur)=\"renameNode(node, null)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n </ng-container>\n <div class=\"flex-shrink-0\">\n <a\n *ngIf=\"node.Path !== '/' && allowfolderrename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editNode(node);$event.stopPropagation();\"\n >\n <i [class]=\"iconEdit\"></i>\n </a>\n <sac-contextmenu cssclass=\"d-inline-block\">\n <sac-contextmenubutton\n *ngIf=\"allowfoldercreate\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonNewFolder) | async }}\"\n [icon]=\"iconFolderNew\"\n (clicked)=\"newNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenubutton\n *ngIf=\"node.Path !== '/' && allowfolderdelete\"\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonDelete) | async }}\"\n [icon]=\"iconDelete\"\n (clicked)=\"deleteNode(node)\"\n ></sac-contextmenubutton>\n <sac-contextmenusplitter\n *ngIf=\"allowfoldercreate || (node.Path !== '/' && allowfolderdelete)\"\n ></sac-contextmenusplitter>\n <sac-contextmenubutton\n text=\"{{ lngResourceService.GetString(validationKeyService.FilebrowserButtonRefresh) | async }}\"\n [icon]=\"iconRefresh\"\n (clicked)=\"refreshNode(node)\"\n ></sac-contextmenubutton>\n </sac-contextmenu>\n </div>\n </li>\n\n <ng-container *ngIf=\"node.IsExpanded\">\n <ng-template\n *ngFor=\"let child of node.ChildNodes\"\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{node: child, deep: deep + 1}\"\n ></ng-template>\n </ng-container>\n </ng-template>\n </div>\n <div class=\"col-12 col-md-7 col-lg-8\">\n <ng-container *ngIf=\"selectedNode && selectedNode.Files\">\n <div *ngIf=\"allowfileupload\" ngForm>\n <sac-dropzonemultiple\n [disablelabel]=\"true\"\n [endpoint]=\"apiurl + '/uploadregister'\"\n name=\"upload\"\n uploadheight=\"5rem\"\n [ngModel]=\"uploads\"\n (ngModelChange)=\"uploadComplete(selectedNode,$event)\"\n [allowedtypes]=\"allowedtypes\"\n >{{\n lngResourceService.GetString(validationKeyService.FilebrowserButtonUpload)\n | async }}</sac-dropzonemultiple\n >\n </div>\n <div class=\"table-responsive\">\n <table class=\"table table-striped table-hover align-middle\">\n <thead>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridFilename)\n | async }}\n </th>\n <th>\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridSize)\n | async }}\n </th>\n <th style=\"width: 80px\"></th>\n </thead>\n <tbody>\n <ng-container *ngIf=\"selectedNode.Files.length === 0\">\n <tr>\n <td colspan=\"3\">\n {{\n lngResourceService.GetString(validationKeyService.FilebrowserGridNoFiles)\n | async }}\n </td>\n </tr>\n </ng-container>\n <ng-container *ngIf=\"selectedNode.Files.length > 0\">\n <tr\n *ngFor=\"let item of selectedNode.Files\"\n (click)=\"selectFile(item)\"\n [class.table-primary]=\"selectedFileItem === item\"\n >\n <td [class.p-2]=\"item.IsEditMode\">\n <ng-container *ngIf=\"!item.IsEditMode\">\n {{ item.Filename }}\n </ng-container>\n <ng-container *ngIf=\"item.IsEditMode\">\n <div>\n <input\n name=\"editFolder\"\n class=\"form-control form-control-sm\"\n [ngModel]=\"item.Filename\"\n [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"renameFile(item, $event)\"\n (keydown.enter)=\"$event.target.blur();false\"\n (blur)=\"renameFile(item, null)\"\n (click)=\"$event.stopPropagation();\"\n />\n </div>\n </ng-container>\n </td>\n <td>{{ item.Size}}</td>\n <td class=\"p-2\">\n <div class=\"btn-toolbar\" role=\"toolbar\">\n <div class=\"btn-group ml-auto\" role=\"group\">\n <a\n *ngIf=\"allowfilerename\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"editFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconEdit\"></i\n ></a>\n </div>\n <div class=\"btn-group\" role=\"group\">\n <a\n *ngIf=\"allowfiledelete\"\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"deleteFile(item);$event.stopPropagation();\"\n ><i [class]=\"iconDelete\"></i\n ></a>\n </div>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </ng-container>\n </div>\n</div>\n" }]
727
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }, { type: ServiceConfirm }]; }, propDecorators: { uploadComponent: [{
515
728
  type: ViewChild,
516
729
  args: [SacDropzoneMultipleComponent, { static: false }]
517
730
  }] } });
@@ -532,18 +745,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
532
745
 
533
746
  class SACBootstrap5ButtonModule {
534
747
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
535
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ButtonModule, imports: [CommonModule,
536
- SacButtonComponent], exports: [SacButtonComponent] }); }
748
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ButtonModule, imports: [CommonModule, SacButtonComponent], exports: [SacButtonComponent] }); }
537
749
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ButtonModule, imports: [CommonModule] }); }
538
750
  }
539
751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ButtonModule, decorators: [{
540
752
  type: NgModule,
541
753
  args: [{
542
- imports: [
543
- CommonModule,
544
- SacButtonComponent
545
- ],
546
- exports: [SacButtonComponent]
754
+ imports: [CommonModule, SacButtonComponent],
755
+ exports: [SacButtonComponent],
547
756
  }]
548
757
  }] });
549
758
 
@@ -551,15 +760,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
551
760
  * Checkbox Kompontente
552
761
  */
553
762
  class SacCheckboxComponent extends SacCheckboxCommon {
763
+ // #region Constructors
554
764
  /**
555
- * Konstruktor
556
- * @param parent Formular
557
- * @param injector Angular Dependency Injection Service
765
+ * Constructor
766
+ * @param formLayout SacFormLayout to define scoped layout settings
767
+ * @param injector Injector for injecting services
558
768
  */
559
- constructor(parent, injector) {
560
- super(parent, injector);
769
+ constructor(formLayout, injector) {
770
+ super(formLayout, injector);
561
771
  }
562
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacCheckboxComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
772
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacCheckboxComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
563
773
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacCheckboxComponent, isStandalone: true, selector: "sac-checkbox", providers: [
564
774
  {
565
775
  provide: NG_VALUE_ACCESSOR,
@@ -571,9 +781,7 @@ class SacCheckboxComponent extends SacCheckboxCommon {
571
781
  useExisting: forwardRef(() => SacCheckboxComponent),
572
782
  multi: true,
573
783
  },
574
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3 align-items-center\" [class.g-0]=\"disablelabel\">\r\n <div class=\"col-12 col-form-label col-form-label-sm\" [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\">\r\n <ng-container *ngIf=\"!disablelabel\">{{label}}</ng-container>\r\n </div>\r\n <div class=\"col-12\" [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input form-check-input-sm\" id=\"{{name}}\" name=\"{{name}}\" type=\"checkbox\" [checked]=\"value\"\r\n (blur)=\"onTouch()\" (change)=\"setValue($event.target.checked)\" [disabled]=\"isdisabled\" />\r\n <label for=\"{{name}}\" class=\"form-check-label\">\r\n <ng-container *ngIf=\"checkboxtext\">{{checkboxtext}}</ng-container>\r\n </label>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], viewProviders: [
575
- { provide: ControlContainer, useExisting: SacFormDirective },
576
- ] }); }
784
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row\"\n [class.g-0]=\"disablelabel\"\n [class.mb-3]=\"!stacked\">\n <div\n class=\"col-12\"\n [ngClass]=\"[!disablelabel && !stacked ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden']\">\n <label\n *ngIf=\"!disablelabel && !stacked\"\n for=\"{{ name }}\"\n class=\"col-form-label d-flex\"\n [ngClass]=\"componentHeight | toLabelHeight\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\"\n >{{ label }}</div\n >\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n </div>\n <div\n class=\"align-self-center col-12\"\n [ngClass]=\"[!disablelabel && !stacked ? (this.labelSizes | toControlWidthCss) : '']\">\n <div\n class=\"form-check\"\n [class.form-switch]=\"checkboxstyle === 'switch'\"\n [attr.role]=\"checkboxstyle === 'switch' ? 'switch' : null\"\n [class.form-check-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-lg]=\"componentHeight === ControlHeight.Large\">\n <input\n class=\"form-check-input\"\n [class.form-check-input-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-input-lg]=\"componentHeight === ControlHeight.Large\"\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"checkbox\"\n [checked]=\"value\"\n (blur)=\"onTouch()\"\n (change)=\"setValue($event.target.checked)\"\n [disabled]=\"isdisabled\" />\n <label\n for=\"{{ name }}\"\n class=\"form-check-label\"\n [class.form-check-label-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-label-lg]=\"componentHeight === ControlHeight.Large\">\n <ng-container *ngIf=\"checkboxtext\">{{ checkboxtext }}</ng-container>\n </label>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n</div>\n", styles: [".form-check-sm{font-size:.875em}.form-check-lg{font-size:1.25em}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
577
785
  }
578
786
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacCheckboxComponent, decorators: [{
579
787
  type: Component,
@@ -588,10 +796,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
588
796
  useExisting: forwardRef(() => SacCheckboxComponent),
589
797
  multi: true,
590
798
  },
591
- ], viewProviders: [
592
- { provide: ControlContainer, useExisting: SacFormDirective },
593
- ], standalone: true, imports: [NgClass, NgIf], template: "<div class=\"row mb-3 align-items-center\" [class.g-0]=\"disablelabel\">\r\n <div class=\"col-12 col-form-label col-form-label-sm\" [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\">\r\n <ng-container *ngIf=\"!disablelabel\">{{label}}</ng-container>\r\n </div>\r\n <div class=\"col-12\" [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input form-check-input-sm\" id=\"{{name}}\" name=\"{{name}}\" type=\"checkbox\" [checked]=\"value\"\r\n (blur)=\"onTouch()\" (change)=\"setValue($event.target.checked)\" [disabled]=\"isdisabled\" />\r\n <label for=\"{{name}}\" class=\"form-check-label\">\r\n <ng-container *ngIf=\"checkboxtext\">{{checkboxtext}}</ng-container>\r\n </label>\r\n </div>\r\n </div>\r\n</div>" }]
594
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
799
+ ], standalone: true, imports: [
800
+ NgClass,
801
+ NgIf,
802
+ SacToControlWidthCssPipe,
803
+ SacToLabelWidthCssPipe,
804
+ SacToLabelHeightPipe,
805
+ SacTooltipComponent,
806
+ SacTestingAttributePipe,
807
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row\"\n [class.g-0]=\"disablelabel\"\n [class.mb-3]=\"!stacked\">\n <div\n class=\"col-12\"\n [ngClass]=\"[!disablelabel && !stacked ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden']\">\n <label\n *ngIf=\"!disablelabel && !stacked\"\n for=\"{{ name }}\"\n class=\"col-form-label d-flex\"\n [ngClass]=\"componentHeight | toLabelHeight\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\"\n >{{ label }}</div\n >\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n </div>\n <div\n class=\"align-self-center col-12\"\n [ngClass]=\"[!disablelabel && !stacked ? (this.labelSizes | toControlWidthCss) : '']\">\n <div\n class=\"form-check\"\n [class.form-switch]=\"checkboxstyle === 'switch'\"\n [attr.role]=\"checkboxstyle === 'switch' ? 'switch' : null\"\n [class.form-check-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-lg]=\"componentHeight === ControlHeight.Large\">\n <input\n class=\"form-check-input\"\n [class.form-check-input-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-input-lg]=\"componentHeight === ControlHeight.Large\"\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"checkbox\"\n [checked]=\"value\"\n (blur)=\"onTouch()\"\n (change)=\"setValue($event.target.checked)\"\n [disabled]=\"isdisabled\" />\n <label\n for=\"{{ name }}\"\n class=\"form-check-label\"\n [class.form-check-label-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-label-lg]=\"componentHeight === ControlHeight.Large\">\n <ng-container *ngIf=\"checkboxtext\">{{ checkboxtext }}</ng-container>\n </label>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n</div>\n", styles: [".form-check-sm{font-size:.875em}.form-check-lg{font-size:1.25em}\n"] }]
808
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
595
809
  type: Host
596
810
  }, {
597
811
  type: Optional
@@ -601,15 +815,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
601
815
  * Radiobuttons Group Komponente
602
816
  */
603
817
  class SacRadiobuttonsComponent extends SacRadiobuttonsCommon {
818
+ // #region Constructors
604
819
  /**
605
- * Konstruktor
606
- * @param parent Formular
607
- * @param injector Angular Dependency Injection Service
820
+ * Constructor
821
+ * @param formLayout SacFormLayout to define scoped layout settings
822
+ * @param injector Injector for injecting services
608
823
  */
609
- constructor(parent, injector) {
610
- super(parent, injector);
824
+ constructor(formLayout, injector) {
825
+ super(formLayout, injector);
611
826
  }
612
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacRadiobuttonsComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
827
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacRadiobuttonsComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
613
828
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacRadiobuttonsComponent, isStandalone: true, selector: "sac-radiobuttons", providers: [
614
829
  {
615
830
  provide: NG_VALUE_ACCESSOR,
@@ -621,9 +836,7 @@ class SacRadiobuttonsComponent extends SacRadiobuttonsCommon {
621
836
  useExisting: forwardRef(() => SacRadiobuttonsComponent),
622
837
  multi: true,
623
838
  },
624
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <div *ngIf=\"disablelabel === false\" class=\"col-form-label col-form-label-sm col-12 pt-0\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\">\r\n <ng-container *ngIf=\"!disablelabel\">{{label}}</ng-container>\r\n </div>\r\n <div [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], viewProviders: [
625
- { provide: ControlContainer, useExisting: SacFormDirective },
626
- ] }); }
839
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <div\n *ngIf=\"disablelabel === false\"\n class=\"col-12 pt-0\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden']\">\n <label\n class=\"col-form-label d-flex\"\n [ngClass]=\"componentHeight | toLabelHeight\"\n *ngIf=\"!disablelabel\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\"\n >{{ label }}</div\n >\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n </div>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.pt-1]=\"componentHeight === ControlHeight.Small\"\n [class.pt-2]=\"componentHeight !== ControlHeight.Small\">\n <ng-content></ng-content>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\"\n >{{ helptext }}</div\n >\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
627
840
  }
628
841
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacRadiobuttonsComponent, decorators: [{
629
842
  type: Component,
@@ -638,10 +851,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
638
851
  useExisting: forwardRef(() => SacRadiobuttonsComponent),
639
852
  multi: true,
640
853
  },
641
- ], viewProviders: [
642
- { provide: ControlContainer, useExisting: SacFormDirective },
643
- ], standalone: true, imports: [NgIf, NgClass], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <div *ngIf=\"disablelabel === false\" class=\"col-form-label col-form-label-sm col-12 pt-0\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\">\r\n <ng-container *ngIf=\"!disablelabel\">{{label}}</ng-container>\r\n </div>\r\n <div [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>" }]
644
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
854
+ ], standalone: true, imports: [
855
+ NgIf,
856
+ NgClass,
857
+ SacToControlWidthCssPipe,
858
+ SacToLabelWidthCssPipe,
859
+ SacToLabelHeightPipe,
860
+ SacTooltipComponent,
861
+ SacTestingAttributePipe,
862
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <div\n *ngIf=\"disablelabel === false\"\n class=\"col-12 pt-0\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden']\">\n <label\n class=\"col-form-label d-flex\"\n [ngClass]=\"componentHeight | toLabelHeight\"\n *ngIf=\"!disablelabel\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\"\n >{{ label }}</div\n >\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n </div>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.pt-1]=\"componentHeight === ControlHeight.Small\"\n [class.pt-2]=\"componentHeight !== ControlHeight.Small\">\n <ng-content></ng-content>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\"\n >{{ helptext }}</div\n >\n </div>\n</div>\n" }]
863
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
645
864
  type: Host
646
865
  }, {
647
866
  type: Optional
@@ -651,22 +870,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
651
870
  * Radiobutton Komponente
652
871
  */
653
872
  class SacRadiobuttonComponent extends SacRadiobuttonCommon {
873
+ // #region Constructors
654
874
  /**
655
875
  * Konstruktor
656
876
  * @param SacRadioButtons Radio Buttons Group Komponente
877
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
878
+ * @param injector Injector for injecting services
657
879
  */
658
- constructor(sacRadioButtons) {
659
- super(sacRadioButtons);
880
+ constructor(sacRadioButtons, formLayout, injector) {
881
+ super(sacRadioButtons, formLayout, injector);
660
882
  }
661
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacRadiobuttonComponent, deps: [{ token: SacRadiobuttonsComponent, host: true }], target: i0.ɵɵFactoryTarget.Component }); }
662
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacRadiobuttonComponent, isStandalone: true, selector: "sac-radiobutton", usesInheritance: true, ngImport: i0, template: "<div class=\"form-check\" *ngIf=\"hidden===false\">\r\n <input id=\"{{getName}}_{{getIndex}}\" name=\"{{getName}}\" type=\"radio\" class=\"form-check-input\" [value]=\"value\"\r\n [checked]=\"checked\" (change)=\"ChangeEvent()\" [disabled]=\"isDisabled\" />\r\n <label for=\"{{getName}}_{{getIndex}}\" class=\"form-check-label\">\r\n <ng-template *ngTemplateOutlet=\"labeltemplate || defaultItemLabelTemplate;context:{ label: label }\">\r\n </ng-template>\r\n </label>\r\n</div>\r\n\r\n<ng-template #defaultItemLabelTemplate let-label=\"label\">{{label}}</ng-template>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
883
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacRadiobuttonComponent, deps: [{ token: SacRadiobuttonsComponent, host: true }, { token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
884
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacRadiobuttonComponent, isStandalone: true, selector: "sac-radiobutton", usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-check\"\n [class.form-check-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-lg]=\"componentHeight === ControlHeight.Large\"\n *ngIf=\"hidden === false\">\n <input\n id=\"{{ getName }}_{{ getIndex }}\"\n name=\"{{ getName }}\"\n type=\"radio\"\n class=\"form-check-input\"\n [class.form-check-input-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-input-lg]=\"componentHeight === ControlHeight.Large\"\n [value]=\"value\"\n [checked]=\"checked\"\n (change)=\"ChangeEvent()\"\n [disabled]=\"isDisabled\" />\n <label\n for=\"{{ getName }}_{{ getIndex }}\"\n class=\"form-check-label\"\n [class.form-check-label-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-label-lg]=\"componentHeight === ControlHeight.Large\">\n <ng-template *ngTemplateOutlet=\"labeltemplate || defaultItemLabelTemplate; context: { label: label }\"> </ng-template>\n </label>\n</div>\n\n<ng-template\n #defaultItemLabelTemplate\n let-label=\"label\">\n <ng-container>{{ label }}</ng-container>\n</ng-template>\n", styles: [".form-check-lg{padding-left:1.75rem}.form-check-input{width:1rem;height:1rem}.form-check-input-sm{width:.875rem;height:.875rem;margin-top:.4rem}.form-check-input-lg{width:1.25rem;height:1.25rem;margin-left:-1.75rem;margin-top:.4rem}.form-check-label-sm{font-size:.875rem}.form-check-label-lg{font-size:1.25rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
663
885
  }
664
886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacRadiobuttonComponent, decorators: [{
665
887
  type: Component,
666
- args: [{ selector: 'sac-radiobutton', standalone: true, imports: [NgIf, NgTemplateOutlet], template: "<div class=\"form-check\" *ngIf=\"hidden===false\">\r\n <input id=\"{{getName}}_{{getIndex}}\" name=\"{{getName}}\" type=\"radio\" class=\"form-check-input\" [value]=\"value\"\r\n [checked]=\"checked\" (change)=\"ChangeEvent()\" [disabled]=\"isDisabled\" />\r\n <label for=\"{{getName}}_{{getIndex}}\" class=\"form-check-label\">\r\n <ng-template *ngTemplateOutlet=\"labeltemplate || defaultItemLabelTemplate;context:{ label: label }\">\r\n </ng-template>\r\n </label>\r\n</div>\r\n\r\n<ng-template #defaultItemLabelTemplate let-label=\"label\">{{label}}</ng-template>" }]
888
+ args: [{ selector: 'sac-radiobutton', standalone: true, imports: [NgIf, NgTemplateOutlet, SacTooltipComponent], template: "<div\n class=\"form-check\"\n [class.form-check-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-lg]=\"componentHeight === ControlHeight.Large\"\n *ngIf=\"hidden === false\">\n <input\n id=\"{{ getName }}_{{ getIndex }}\"\n name=\"{{ getName }}\"\n type=\"radio\"\n class=\"form-check-input\"\n [class.form-check-input-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-input-lg]=\"componentHeight === ControlHeight.Large\"\n [value]=\"value\"\n [checked]=\"checked\"\n (change)=\"ChangeEvent()\"\n [disabled]=\"isDisabled\" />\n <label\n for=\"{{ getName }}_{{ getIndex }}\"\n class=\"form-check-label\"\n [class.form-check-label-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-check-label-lg]=\"componentHeight === ControlHeight.Large\">\n <ng-template *ngTemplateOutlet=\"labeltemplate || defaultItemLabelTemplate; context: { label: label }\"> </ng-template>\n </label>\n</div>\n\n<ng-template\n #defaultItemLabelTemplate\n let-label=\"label\">\n <ng-container>{{ label }}</ng-container>\n</ng-template>\n", styles: [".form-check-lg{padding-left:1.75rem}.form-check-input{width:1rem;height:1rem}.form-check-input-sm{width:.875rem;height:.875rem;margin-top:.4rem}.form-check-input-lg{width:1.25rem;height:1.25rem;margin-left:-1.75rem;margin-top:.4rem}.form-check-label-sm{font-size:.875rem}.form-check-label-lg{font-size:1.25rem}\n"] }]
667
889
  }], ctorParameters: function () { return [{ type: SacRadiobuttonsComponent, decorators: [{
668
890
  type: Host
669
- }] }]; } });
891
+ }] }, { type: SacFormLayoutDirective, decorators: [{
892
+ type: Host
893
+ }, {
894
+ type: Optional
895
+ }] }, { type: i0.Injector }]; } });
670
896
 
671
897
  class SACBootstrap5CheckboxModule {
672
898
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -712,7 +938,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
712
938
 
713
939
  class SACBootstrap5ContextmenuModule {
714
940
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ContextmenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
715
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ContextmenuModule, imports: [CommonModule, SacContextmenuComponent,
941
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ContextmenuModule, imports: [CommonModule,
942
+ SacContextmenuComponent,
716
943
  SacContextmenuItemButtonComponent,
717
944
  SacContextmenuItemSplitterComponent,
718
945
  SacContextmenuAnchorDirective,
@@ -725,11 +952,14 @@ class SACBootstrap5ContextmenuModule {
725
952
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ContextmenuModule, decorators: [{
726
953
  type: NgModule,
727
954
  args: [{
728
- imports: [CommonModule, SacContextmenuComponent,
955
+ imports: [
956
+ CommonModule,
957
+ SacContextmenuComponent,
729
958
  SacContextmenuItemButtonComponent,
730
959
  SacContextmenuItemSplitterComponent,
731
960
  SacContextmenuAnchorDirective,
732
- SacContextmenuContainerDirective],
961
+ SacContextmenuContainerDirective,
962
+ ],
733
963
  exports: [
734
964
  SacContextmenuComponent,
735
965
  SacContextmenuItemButtonComponent,
@@ -744,36 +974,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
744
974
  */
745
975
  class SacDateSelectorComponent extends SacDateSelectorCommon {
746
976
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateSelectorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
747
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDateSelectorComponent, isStandalone: true, selector: "sac-dateselector", usesInheritance: true, ngImport: i0, template: "<div class=\"calendar-selector\">\r\n <div *ngIf=\"dateselection\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col text-start\">\r\n <a (click)=\"monthBack()\"><span [class]=\"iconMonthPrev\"></span></a>\r\n </div>\r\n <div class=\"col text-center\">{{month+1}}/{{year}}</div>\r\n <div class=\"col text-end\">\r\n <a (click)=\"monthNext()\"><span [class]=\"iconMonthNext\"></span></a>\r\n </div>\r\n </div>\r\n </div>\r\n <div></div>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <ng-container *ngFor=\"let week of dates; let i=index\">\r\n <ng-container *ngFor=\"let item of week\">\r\n <div\r\n class=\"p-2 col text-center\"\r\n [ngStyle]=\"{'cursor': item.isenabled ? 'pointer' : null}\"\r\n [ngClass]=\"{'day-current': item.iscurrent, 'day-selected': item.isselected, 'day-new': item.isnew, 'day-disabled': !item.isenabled}\"\r\n (click)=\"selectDate(item)\"\r\n >\r\n {{ item.displaytext }}\r\n </div>\r\n </ng-container>\r\n <div class=\"w-100\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-start\" *ngIf=\"timeselection\">\r\n <div class=\"p-2\">\r\n <div class=\"form-group\">\r\n <label>Stunde</label>\r\n <input\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"getHours()\"\r\n (input)=\"setHours($event.target.value)\"\r\n min=\"0\"\r\n max=\"23\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"p-2\">\r\n <div class=\"form-group\">\r\n <label>Minute</label>\r\n <input\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"getMinutes()\"\r\n (input)=\"setMinutes($event.target.value)\"\r\n min=\"0\"\r\n max=\"59\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-row\">\r\n <div class=\"flex-grow-1 p-2\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"setToday()\">\r\n Heute\r\n </button>\r\n </div>\r\n <div class=\"p-2\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary\"\r\n (click)=\"resetSelection()\"\r\n >\r\n Reset\r\n </button>\r\n </div>\r\n <div class=\"p-2\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"applySelection()\">\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
977
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDateSelectorComponent, isStandalone: true, selector: "sac-dateselector", usesInheritance: true, ngImport: i0, template: "<div\n class=\"calendar-selector\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <div *ngIf=\"dateselection\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col text-start\">\n <a (click)=\"monthBack()\"><span [class]=\"iconMonthPrev\"></span></a>\n </div>\n <div class=\"col text-center\">{{ month + 1 }}/{{ year }}</div>\n <div class=\"col text-end\">\n <a (click)=\"monthNext()\"><span [class]=\"iconMonthNext\"></span></a>\n </div>\n </div>\n </div>\n <div></div>\n <div class=\"container\">\n <div class=\"row\">\n <ng-container *ngFor=\"let week of dates; let i = index\">\n <ng-container *ngFor=\"let item of week\">\n <div\n class=\"p-2 col text-center\"\n [ngStyle]=\"{ cursor: item.isenabled ? 'pointer' : null }\"\n [ngClass]=\"{ 'day-current': item.iscurrent, 'day-selected': item.isselected, 'day-new': item.isnew, 'day-disabled': !item.isenabled }\"\n (click)=\"selectDate(item)\"\n >{{ item.displaytext }}</div\n >\n </ng-container>\n <div class=\"w-100\"></div>\n </ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"d-flex justify-content-start\"\n *ngIf=\"timeselection\">\n <div class=\"p-2\">\n <div class=\"form-group\">\n <label>Stunde</label>\n <input\n type=\"number\"\n class=\"form-control form-control-sm\"\n [value]=\"getHours()\"\n (input)=\"setHours($event.target.value)\"\n min=\"0\"\n max=\"23\" />\n </div>\n </div>\n <div class=\"p-2\">\n <div class=\"form-group\">\n <label>Minute</label>\n <input\n type=\"number\"\n class=\"form-control form-control-sm\"\n [value]=\"getMinutes()\"\n (input)=\"setMinutes($event.target.value)\"\n min=\"0\"\n max=\"59\" />\n </div>\n </div>\n </div>\n <div class=\"d-flex flex-row\">\n <div class=\"flex-grow-1 p-2\">\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n (click)=\"setToday()\">\n Heute\n </button>\n </div>\n <div class=\"p-2\">\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n (click)=\"resetSelection()\">\n Reset\n </button>\n </div>\n <div class=\"p-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"applySelection()\">\n Apply\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
748
978
  }
749
979
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateSelectorComponent, decorators: [{
750
980
  type: Component,
751
- args: [{ selector: 'sac-dateselector', standalone: true, imports: [
752
- NgIf,
753
- NgFor,
754
- NgStyle,
755
- NgClass,
756
- ], template: "<div class=\"calendar-selector\">\r\n <div *ngIf=\"dateselection\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col text-start\">\r\n <a (click)=\"monthBack()\"><span [class]=\"iconMonthPrev\"></span></a>\r\n </div>\r\n <div class=\"col text-center\">{{month+1}}/{{year}}</div>\r\n <div class=\"col text-end\">\r\n <a (click)=\"monthNext()\"><span [class]=\"iconMonthNext\"></span></a>\r\n </div>\r\n </div>\r\n </div>\r\n <div></div>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <ng-container *ngFor=\"let week of dates; let i=index\">\r\n <ng-container *ngFor=\"let item of week\">\r\n <div\r\n class=\"p-2 col text-center\"\r\n [ngStyle]=\"{'cursor': item.isenabled ? 'pointer' : null}\"\r\n [ngClass]=\"{'day-current': item.iscurrent, 'day-selected': item.isselected, 'day-new': item.isnew, 'day-disabled': !item.isenabled}\"\r\n (click)=\"selectDate(item)\"\r\n >\r\n {{ item.displaytext }}\r\n </div>\r\n </ng-container>\r\n <div class=\"w-100\"></div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-start\" *ngIf=\"timeselection\">\r\n <div class=\"p-2\">\r\n <div class=\"form-group\">\r\n <label>Stunde</label>\r\n <input\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"getHours()\"\r\n (input)=\"setHours($event.target.value)\"\r\n min=\"0\"\r\n max=\"23\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"p-2\">\r\n <div class=\"form-group\">\r\n <label>Minute</label>\r\n <input\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"getMinutes()\"\r\n (input)=\"setMinutes($event.target.value)\"\r\n min=\"0\"\r\n max=\"59\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-row\">\r\n <div class=\"flex-grow-1 p-2\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"setToday()\">\r\n Heute\r\n </button>\r\n </div>\r\n <div class=\"p-2\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary\"\r\n (click)=\"resetSelection()\"\r\n >\r\n Reset\r\n </button>\r\n </div>\r\n <div class=\"p-2\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"applySelection()\">\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
981
+ args: [{ selector: 'sac-dateselector', standalone: true, imports: [NgIf, NgFor, NgStyle, NgClass, SacTestingAttributePipe], template: "<div\n class=\"calendar-selector\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <div *ngIf=\"dateselection\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col text-start\">\n <a (click)=\"monthBack()\"><span [class]=\"iconMonthPrev\"></span></a>\n </div>\n <div class=\"col text-center\">{{ month + 1 }}/{{ year }}</div>\n <div class=\"col text-end\">\n <a (click)=\"monthNext()\"><span [class]=\"iconMonthNext\"></span></a>\n </div>\n </div>\n </div>\n <div></div>\n <div class=\"container\">\n <div class=\"row\">\n <ng-container *ngFor=\"let week of dates; let i = index\">\n <ng-container *ngFor=\"let item of week\">\n <div\n class=\"p-2 col text-center\"\n [ngStyle]=\"{ cursor: item.isenabled ? 'pointer' : null }\"\n [ngClass]=\"{ 'day-current': item.iscurrent, 'day-selected': item.isselected, 'day-new': item.isnew, 'day-disabled': !item.isenabled }\"\n (click)=\"selectDate(item)\"\n >{{ item.displaytext }}</div\n >\n </ng-container>\n <div class=\"w-100\"></div>\n </ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"d-flex justify-content-start\"\n *ngIf=\"timeselection\">\n <div class=\"p-2\">\n <div class=\"form-group\">\n <label>Stunde</label>\n <input\n type=\"number\"\n class=\"form-control form-control-sm\"\n [value]=\"getHours()\"\n (input)=\"setHours($event.target.value)\"\n min=\"0\"\n max=\"23\" />\n </div>\n </div>\n <div class=\"p-2\">\n <div class=\"form-group\">\n <label>Minute</label>\n <input\n type=\"number\"\n class=\"form-control form-control-sm\"\n [value]=\"getMinutes()\"\n (input)=\"setMinutes($event.target.value)\"\n min=\"0\"\n max=\"59\" />\n </div>\n </div>\n </div>\n <div class=\"d-flex flex-row\">\n <div class=\"flex-grow-1 p-2\">\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n (click)=\"setToday()\">\n Heute\n </button>\n </div>\n <div class=\"p-2\">\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n (click)=\"resetSelection()\">\n Reset\n </button>\n </div>\n <div class=\"p-2\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"applySelection()\">\n Apply\n </button>\n </div>\n </div>\n</div>\n" }]
757
982
  }] });
758
983
 
984
+ // #region Variables
759
985
  /**
760
986
  * Referenz auf Moment.JS
761
987
  */
762
988
  const moment = moment_['default'];
989
+ // #endregion Variables
990
+ // #region Exported Classes
763
991
  /**
764
992
  * Komponente für Datumauswahl
765
993
  */
766
994
  class SacDateComponent extends SacDateCommon {
995
+ // #region Constructors
767
996
  /**
768
- * Konstruktor
769
- * @param parent Formular
770
- * @param injector Angular Dependency Injection Service
771
- * @param _elementRef Referenz auf HTML DOM Element
997
+ * Constructor
998
+ * @param formLayout SacFormLayout to define scoped layout settings
999
+ * @param injector Injector for injecting services
1000
+ * @param elementRef Reference to html dom element
1001
+ * @param cdRef Change Dectection Servie
772
1002
  */
773
- constructor(parent, injector, _elementRef) {
774
- super(parent, injector, _elementRef);
1003
+ constructor(formLayout, injector, elementRef, cdRef) {
1004
+ super(formLayout, injector, elementRef, cdRef);
775
1005
  }
776
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1006
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
777
1007
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDateComponent, isStandalone: true, selector: "sac-date", providers: [
778
1008
  {
779
1009
  provide: NG_VALUE_ACCESSOR,
@@ -785,7 +1015,7 @@ class SacDateComponent extends SacDateCommon {
785
1015
  multi: true,
786
1016
  useExisting: forwardRef(() => SacDateComponent),
787
1017
  },
788
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12 position-relative\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [imask]=\"imaskDate\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"valuestring\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (accept)=\"setValueString($event)\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showDateSelector()\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <i [class]=\"IconSelector\"></i>\r\n </button>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"popover fade bs-popover-bottom show position-absolute\"\r\n role=\"tooltip\"\r\n *ngIf=\"_showselector\"\r\n style=\"\r\n display: block;\r\n left: unset;\r\n right: 0px;\r\n top: 34px;\r\n max-width: 325px;\r\n \"\r\n >\r\n <div\r\n class=\"popover-arrow position-absolute\"\r\n style=\"left: unset; right: 18px\"\r\n ></div>\r\n <h3 class=\"popover-header\" style=\"display: none\"></h3>\r\n <div class=\"popover-body\">\r\n <sac-dateselector\r\n [initialvalue]=\"value\"\r\n (selectdate)=\"dateselect($event)\"\r\n dateselection=\"true\"\r\n ></sac-dateselector>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacDateSelectorComponent, selector: "sac-dateselector" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1018
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12 position-relative\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [imask]=\"imaskDate\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"valuestring\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n (blur)=\"onTouch()\"\n (accept)=\"setValueString($event)\"\n [disabled]=\"isdisabled\" />\n <button\n #pickerbutton\n class=\"btn btn-secondary\"\n type=\"button\"\n (click)=\"showDateSelector()\"\n [disabled]=\"isdisabled\">\n <i [class]=\"IconSelector\"></i>\n </button>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n <div\n #picker\n *ngIf=\"_showselector\">\n <div\n class=\"popover fade show position-absolute bs-popover-auto\"\n role=\"tooltip\"\n [attr.data-popper-placement]=\"\n GetPickerPosition() === TooltipPosition.right\n ? 'right'\n : GetPickerPosition() === TooltipPosition.left\n ? 'left'\n : GetPickerPosition() === TooltipPosition.top || GetPickerPosition() === TooltipPosition.topend\n ? 'top'\n : GetPickerPosition() === TooltipPosition.bottom || GetPickerPosition() === TooltipPosition.bottomend\n ? 'bottom'\n : null\n \"\n [style.left.px]=\"posPopupLeft\"\n [style.top.px]=\"posPopupTop\">\n <div\n #pickerarrow\n class=\"popover-arrow position-absolute\"\n style=\"left: unset\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\">\n </div>\n\n <div class=\"popover-body\">\n <sac-dateselector\n name=\"{{ name }}_picker\"\n [initialvalue]=\"value\"\n (selectdate)=\"dateselect($event)\"\n dateselection=\"true\"></sac-dateselector>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacDateSelectorComponent, selector: "sac-dateselector" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
789
1019
  }
790
1020
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateComponent, decorators: [{
791
1021
  type: Component,
@@ -800,27 +1030,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
800
1030
  multi: true,
801
1031
  useExisting: forwardRef(() => SacDateComponent),
802
1032
  },
803
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, IMaskDirective, NgIf, AsyncPipe, SacDateSelectorComponent], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12 position-relative\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [imask]=\"imaskDate\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"valuestring\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (accept)=\"setValueString($event)\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showDateSelector()\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <i [class]=\"IconSelector\"></i>\r\n </button>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"popover fade bs-popover-bottom show position-absolute\"\r\n role=\"tooltip\"\r\n *ngIf=\"_showselector\"\r\n style=\"\r\n display: block;\r\n left: unset;\r\n right: 0px;\r\n top: 34px;\r\n max-width: 325px;\r\n \"\r\n >\r\n <div\r\n class=\"popover-arrow position-absolute\"\r\n style=\"left: unset; right: 18px\"\r\n ></div>\r\n <h3 class=\"popover-header\" style=\"display: none\"></h3>\r\n <div class=\"popover-body\">\r\n <sac-dateselector\r\n [initialvalue]=\"value\"\r\n (selectdate)=\"dateselect($event)\"\r\n dateselection=\"true\"\r\n ></sac-dateselector>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
804
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1033
+ ], standalone: true, imports: [
1034
+ NgClass,
1035
+ IMaskDirective,
1036
+ NgIf,
1037
+ AsyncPipe,
1038
+ SacDateSelectorComponent,
1039
+ SacToControlWidthCssPipe,
1040
+ SacToLabelWidthCssPipe,
1041
+ SacToLabelHeightPipe,
1042
+ SacToControlHeightPipe,
1043
+ SacTooltipComponent,
1044
+ SacTestingAttributePipe,
1045
+ ], template: "<div\n class=\"row mb-3\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12 position-relative\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [imask]=\"imaskDate\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"valuestring\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n (blur)=\"onTouch()\"\n (accept)=\"setValueString($event)\"\n [disabled]=\"isdisabled\" />\n <button\n #pickerbutton\n class=\"btn btn-secondary\"\n type=\"button\"\n (click)=\"showDateSelector()\"\n [disabled]=\"isdisabled\">\n <i [class]=\"IconSelector\"></i>\n </button>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n <div\n #picker\n *ngIf=\"_showselector\">\n <div\n class=\"popover fade show position-absolute bs-popover-auto\"\n role=\"tooltip\"\n [attr.data-popper-placement]=\"\n GetPickerPosition() === TooltipPosition.right\n ? 'right'\n : GetPickerPosition() === TooltipPosition.left\n ? 'left'\n : GetPickerPosition() === TooltipPosition.top || GetPickerPosition() === TooltipPosition.topend\n ? 'top'\n : GetPickerPosition() === TooltipPosition.bottom || GetPickerPosition() === TooltipPosition.bottomend\n ? 'bottom'\n : null\n \"\n [style.left.px]=\"posPopupLeft\"\n [style.top.px]=\"posPopupTop\">\n <div\n #pickerarrow\n class=\"popover-arrow position-absolute\"\n style=\"left: unset\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\">\n </div>\n\n <div class=\"popover-body\">\n <sac-dateselector\n name=\"{{ name }}_picker\"\n [initialvalue]=\"value\"\n (selectdate)=\"dateselect($event)\"\n dateselection=\"true\"></sac-dateselector>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1046
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
805
1047
  type: Host
806
1048
  }, {
807
1049
  type: Optional
808
- }] }, { type: i0.Injector }, { type: i0.ElementRef }]; } });
1050
+ }] }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
809
1051
 
810
1052
  /**
811
1053
  * Date und Time Komponente
812
1054
  */
813
1055
  class SacDateTimeComponent extends SacDateTimeCommon {
1056
+ // #region Constructors
814
1057
  /**
815
- * Konstruktor
816
- * @param parent Formular
817
- * @param injector Angular Dependency Injection Service
818
- * @param _elementRef DOM Element Referenz
1058
+ * Constructor
1059
+ * @param formLayout SacFormLayout to define scoped layout settings
1060
+ * @param injector Injector for injecting services
1061
+ * @param elementRef Reference to html dom element
1062
+ * @param cdRef Change Dectection Servie
819
1063
  */
820
- constructor(parent, injector, _elementRef) {
821
- super(parent, injector, _elementRef);
1064
+ constructor(formLayout, injector, elementRef, cdRef) {
1065
+ super(formLayout, injector, elementRef, cdRef);
822
1066
  }
823
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateTimeComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1067
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateTimeComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
824
1068
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDateTimeComponent, isStandalone: true, selector: "sac-datetime", providers: [
825
1069
  {
826
1070
  provide: NG_VALUE_ACCESSOR,
@@ -832,7 +1076,7 @@ class SacDateTimeComponent extends SacDateTimeCommon {
832
1076
  multi: true,
833
1077
  useExisting: forwardRef(() => SacDateTimeComponent),
834
1078
  },
835
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12 position-relative\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [imask]=\"imaskDate\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"valuestring\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (accept)=\"setValueString($event)\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <button\r\n class=\"btn btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showDateSelector()\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <i [class]=\"IconSelector\"></i>\r\n </button>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"popover fade bs-popover-bottom show position-absolute\"\r\n role=\"tooltip\"\r\n *ngIf=\"_showselector\"\r\n style=\"\r\n display: block;\r\n left: unset;\r\n right: 0px;\r\n top: 34px;\r\n max-width: 325px;\r\n \"\r\n >\r\n <div\r\n class=\"popover-arrow position-absolute\"\r\n style=\"left: unset; right: 18px\"\r\n ></div>\r\n <h3 class=\"popover-header\" style=\"display: none\"></h3>\r\n <div class=\"popover-body\">\r\n <sac-dateselector\r\n [initialvalue]=\"value\"\r\n (selectdate)=\"dateselect($event)\"\r\n dateselection=\"true\"\r\n timeselection=\"true\"\r\n ></sac-dateselector>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacDateSelectorComponent, selector: "sac-dateselector" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1079
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12 position-relative\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [imask]=\"imaskDate\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"valuestring\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n (blur)=\"onTouch()\"\n (accept)=\"setValueString($event)\"\n [disabled]=\"isdisabled\" />\n <button\n #pickerbutton\n class=\"btn btn-secondary\"\n type=\"button\"\n (click)=\"showDateSelector()\"\n [disabled]=\"isdisabled\">\n <i [class]=\"IconSelector\"></i>\n </button>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n <div\n #picker\n *ngIf=\"_showselector\">\n <div\n class=\"popover fade show position-absolute bs-popover-auto\"\n role=\"tooltip\"\n [attr.data-popper-placement]=\"\n GetPickerPosition() === TooltipPosition.right\n ? 'right'\n : GetPickerPosition() === TooltipPosition.left\n ? 'left'\n : GetPickerPosition() === TooltipPosition.top || GetPickerPosition() === TooltipPosition.topend\n ? 'top'\n : GetPickerPosition() === TooltipPosition.bottom || GetPickerPosition() === TooltipPosition.bottomend\n ? 'bottom'\n : null\n \"\n [style.left.px]=\"posPopupLeft\"\n [style.top.px]=\"posPopupTop\">\n <div\n #pickerarrow\n class=\"popover-arrow position-absolute\"\n style=\"left: unset\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\">\n </div>\n\n <div class=\"popover-body\">\n <sac-dateselector\n name=\"{{ name }}_picker\"\n [initialvalue]=\"value\"\n (selectdate)=\"dateselect($event)\"\n dateselection=\"true\"\n timeselection=\"true\"></sac-dateselector>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacDateSelectorComponent, selector: "sac-dateselector" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
836
1080
  }
837
1081
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDateTimeComponent, decorators: [{
838
1082
  type: Component,
@@ -847,27 +1091,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
847
1091
  multi: true,
848
1092
  useExisting: forwardRef(() => SacDateTimeComponent),
849
1093
  },
850
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, IMaskDirective, NgIf, AsyncPipe, SacDateSelectorComponent], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12 position-relative\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [imask]=\"imaskDate\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"valuestring\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (accept)=\"setValueString($event)\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <button\r\n class=\"btn btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showDateSelector()\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <i [class]=\"IconSelector\"></i>\r\n </button>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"popover fade bs-popover-bottom show position-absolute\"\r\n role=\"tooltip\"\r\n *ngIf=\"_showselector\"\r\n style=\"\r\n display: block;\r\n left: unset;\r\n right: 0px;\r\n top: 34px;\r\n max-width: 325px;\r\n \"\r\n >\r\n <div\r\n class=\"popover-arrow position-absolute\"\r\n style=\"left: unset; right: 18px\"\r\n ></div>\r\n <h3 class=\"popover-header\" style=\"display: none\"></h3>\r\n <div class=\"popover-body\">\r\n <sac-dateselector\r\n [initialvalue]=\"value\"\r\n (selectdate)=\"dateselect($event)\"\r\n dateselection=\"true\"\r\n timeselection=\"true\"\r\n ></sac-dateselector>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
851
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1094
+ ], standalone: true, imports: [
1095
+ NgClass,
1096
+ IMaskDirective,
1097
+ NgIf,
1098
+ AsyncPipe,
1099
+ SacDateSelectorComponent,
1100
+ SacToControlWidthCssPipe,
1101
+ SacToLabelWidthCssPipe,
1102
+ SacToLabelHeightPipe,
1103
+ SacToControlHeightPipe,
1104
+ SacTooltipComponent,
1105
+ SacTestingAttributePipe,
1106
+ ], template: "<div\n class=\"row mb-3\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12 position-relative\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [imask]=\"imaskDate\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"valuestring\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n (blur)=\"onTouch()\"\n (accept)=\"setValueString($event)\"\n [disabled]=\"isdisabled\" />\n <button\n #pickerbutton\n class=\"btn btn-secondary\"\n type=\"button\"\n (click)=\"showDateSelector()\"\n [disabled]=\"isdisabled\">\n <i [class]=\"IconSelector\"></i>\n </button>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n <div\n #picker\n *ngIf=\"_showselector\">\n <div\n class=\"popover fade show position-absolute bs-popover-auto\"\n role=\"tooltip\"\n [attr.data-popper-placement]=\"\n GetPickerPosition() === TooltipPosition.right\n ? 'right'\n : GetPickerPosition() === TooltipPosition.left\n ? 'left'\n : GetPickerPosition() === TooltipPosition.top || GetPickerPosition() === TooltipPosition.topend\n ? 'top'\n : GetPickerPosition() === TooltipPosition.bottom || GetPickerPosition() === TooltipPosition.bottomend\n ? 'bottom'\n : null\n \"\n [style.left.px]=\"posPopupLeft\"\n [style.top.px]=\"posPopupTop\">\n <div\n #pickerarrow\n class=\"popover-arrow position-absolute\"\n style=\"left: unset\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\">\n </div>\n\n <div class=\"popover-body\">\n <sac-dateselector\n name=\"{{ name }}_picker\"\n [initialvalue]=\"value\"\n (selectdate)=\"dateselect($event)\"\n dateselection=\"true\"\n timeselection=\"true\"></sac-dateselector>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1107
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
852
1108
  type: Host
853
1109
  }, {
854
1110
  type: Optional
855
- }] }, { type: i0.Injector }, { type: i0.ElementRef }]; } });
1111
+ }] }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
856
1112
 
857
1113
  /**
858
1114
  * Time Auswahl Komponente
859
1115
  */
860
1116
  class SacTimeComponent extends SacTimeCommon {
1117
+ // #region Constructors
861
1118
  /**
862
- * Konstruktor
863
- * @param parent Formular
864
- * @param injector Angular Dependency Injection Service
865
- * @param _elementRef DOM Element Referenz
1119
+ * Constructor
1120
+ * @param formLayout SacFormLayout to define scoped layout settings
1121
+ * @param injector Injector for injecting services
1122
+ * @param elementRef Reference to html dom element
1123
+ * @param cdRef Change Dectection Servie
866
1124
  */
867
- constructor(parent, injector, _elementRef) {
868
- super(parent, injector, _elementRef);
1125
+ constructor(formLayout, injector, elementRef, cdRef) {
1126
+ super(formLayout, injector, elementRef, cdRef);
869
1127
  }
870
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTimeComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTimeComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
871
1129
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTimeComponent, isStandalone: true, selector: "sac-time", providers: [
872
1130
  {
873
1131
  provide: NG_VALUE_ACCESSOR,
@@ -879,7 +1137,7 @@ class SacTimeComponent extends SacTimeCommon {
879
1137
  multi: true,
880
1138
  useExisting: forwardRef(() => SacTimeComponent),
881
1139
  },
882
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12 position-relative\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [imask]=\"imaskDate\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"valuestring\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (accept)=\"setValueString($event)\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <button\r\n class=\"btn btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showTimeSelector()\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <i [class]=\"IconSelector\"></i>\r\n </button>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"popover fade bs-popover-bottom show position-absolute\"\r\n role=\"tooltip\"\r\n *ngIf=\"_showselector\"\r\n style=\"\r\n display: block;\r\n left: unset;\r\n right: 0px;\r\n top: 34px;\r\n max-width: 325px;\r\n \"\r\n >\r\n <div\r\n class=\"popover-arrow position-absolute\"\r\n style=\"left: unset; right: 18px\"\r\n ></div>\r\n <h3 class=\"popover-header\" style=\"display: none\"></h3>\r\n <div class=\"popover-body\">\r\n <sac-dateselector\r\n [initialvalue]=\"value\"\r\n (selectdate)=\"timeselect($event)\"\r\n timeselection=\"true\"\r\n ></sac-dateselector>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacDateSelectorComponent, selector: "sac-dateselector" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1140
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12 position-relative\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [imask]=\"imaskDate\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"valuestring\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n (blur)=\"onTouch()\"\n (accept)=\"setValueString($event)\"\n [disabled]=\"isdisabled\" />\n <button\n #pickerbutton\n class=\"btn btn-secondary\"\n type=\"button\"\n (click)=\"showTimeSelector()\"\n [disabled]=\"isdisabled\">\n <i [class]=\"IconSelector\"></i>\n </button>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n <div\n #picker\n *ngIf=\"_showselector\">\n <div\n class=\"popover fade show position-absolute bs-popover-auto\"\n role=\"tooltip\"\n [attr.data-popper-placement]=\"\n GetPickerPosition() === TooltipPosition.right\n ? 'right'\n : GetPickerPosition() === TooltipPosition.left\n ? 'left'\n : GetPickerPosition() === TooltipPosition.top || GetPickerPosition() === TooltipPosition.topend\n ? 'top'\n : GetPickerPosition() === TooltipPosition.bottom || GetPickerPosition() === TooltipPosition.bottomend\n ? 'bottom'\n : null\n \"\n [style.left.px]=\"posPopupLeft\"\n [style.top.px]=\"posPopupTop\">\n <div\n #pickerarrow\n class=\"popover-arrow position-absolute\"\n style=\"left: unset\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\">\n </div>\n\n <div class=\"popover-body\">\n <sac-dateselector\n name=\"{{ name }}_picker\"\n [initialvalue]=\"value\"\n (selectdate)=\"timeselect($event)\"\n timeselection=\"true\"></sac-dateselector>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IMaskDirective, selector: "[imask]", inputs: ["imask", "unmask", "imaskElement"], outputs: ["accept", "complete"], exportAs: ["imask"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacDateSelectorComponent, selector: "sac-dateselector" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
883
1141
  }
884
1142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTimeComponent, decorators: [{
885
1143
  type: Component,
@@ -894,12 +1152,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
894
1152
  multi: true,
895
1153
  useExisting: forwardRef(() => SacTimeComponent),
896
1154
  },
897
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, IMaskDirective, NgIf, AsyncPipe, SacDateSelectorComponent], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12 position-relative\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [imask]=\"imaskDate\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"valuestring\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (accept)=\"setValueString($event)\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <button\r\n class=\"btn btn-secondary\"\r\n type=\"button\"\r\n (click)=\"showTimeSelector()\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <i [class]=\"IconSelector\"></i>\r\n </button>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"popover fade bs-popover-bottom show position-absolute\"\r\n role=\"tooltip\"\r\n *ngIf=\"_showselector\"\r\n style=\"\r\n display: block;\r\n left: unset;\r\n right: 0px;\r\n top: 34px;\r\n max-width: 325px;\r\n \"\r\n >\r\n <div\r\n class=\"popover-arrow position-absolute\"\r\n style=\"left: unset; right: 18px\"\r\n ></div>\r\n <h3 class=\"popover-header\" style=\"display: none\"></h3>\r\n <div class=\"popover-body\">\r\n <sac-dateselector\r\n [initialvalue]=\"value\"\r\n (selectdate)=\"timeselect($event)\"\r\n timeselection=\"true\"\r\n ></sac-dateselector>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
898
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1155
+ ], standalone: true, imports: [
1156
+ NgClass,
1157
+ IMaskDirective,
1158
+ NgIf,
1159
+ AsyncPipe,
1160
+ SacDateSelectorComponent,
1161
+ SacToControlWidthCssPipe,
1162
+ SacToLabelWidthCssPipe,
1163
+ SacToLabelHeightPipe,
1164
+ SacToControlHeightPipe,
1165
+ SacTooltipComponent,
1166
+ SacTestingAttributePipe,
1167
+ ], template: "<div\n class=\"row mb-3\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12 position-relative\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [imask]=\"imaskDate\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"valuestring\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n (blur)=\"onTouch()\"\n (accept)=\"setValueString($event)\"\n [disabled]=\"isdisabled\" />\n <button\n #pickerbutton\n class=\"btn btn-secondary\"\n type=\"button\"\n (click)=\"showTimeSelector()\"\n [disabled]=\"isdisabled\">\n <i [class]=\"IconSelector\"></i>\n </button>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n <div\n #picker\n *ngIf=\"_showselector\">\n <div\n class=\"popover fade show position-absolute bs-popover-auto\"\n role=\"tooltip\"\n [attr.data-popper-placement]=\"\n GetPickerPosition() === TooltipPosition.right\n ? 'right'\n : GetPickerPosition() === TooltipPosition.left\n ? 'left'\n : GetPickerPosition() === TooltipPosition.top || GetPickerPosition() === TooltipPosition.topend\n ? 'top'\n : GetPickerPosition() === TooltipPosition.bottom || GetPickerPosition() === TooltipPosition.bottomend\n ? 'bottom'\n : null\n \"\n [style.left.px]=\"posPopupLeft\"\n [style.top.px]=\"posPopupTop\">\n <div\n #pickerarrow\n class=\"popover-arrow position-absolute\"\n style=\"left: unset\"\n [style.top.px]=\"posArrowTop\"\n [style.left.px]=\"posArrowLeft\">\n </div>\n\n <div class=\"popover-body\">\n <sac-dateselector\n name=\"{{ name }}_picker\"\n [initialvalue]=\"value\"\n (selectdate)=\"timeselect($event)\"\n timeselection=\"true\"></sac-dateselector>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1168
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
899
1169
  type: Host
900
1170
  }, {
901
1171
  type: Optional
902
- }] }, { type: i0.Injector }, { type: i0.ElementRef }]; } });
1172
+ }] }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
903
1173
 
904
1174
  class SACBootstrap5DateTimeModule {
905
1175
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -936,84 +1206,110 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
936
1206
  }] });
937
1207
 
938
1208
  /**
939
- * Factory Methode für SacForm
940
- * @param form SacFormular
941
- */
942
- function SACFORM_FACTORY(form) {
943
- return form;
944
- }
945
- /**
946
- * Factory Methode für NgForm
947
- * @param form NgForm
948
- */
949
- function NGFORM_FACTORY(form) {
950
- return form;
951
- }
952
- /**
953
- * Directive zum erben eines NgForm/NgFormular einer übergeordneten Komponente
954
- *
955
- * @example Implementation in Markup
956
- *
957
- * <div sacInheritForm>
958
- * </div>
959
- *
960
- * @example Model an Sub-Komponente übergeben
961
- *
962
- * <div sacInheritForm>
963
- * <div>SubForm</div>
964
- * <div>
965
- * <ngInput [(ngModel)]="mymodel.fieldarea2" name="subformField3" label="field 3" [isrequired]="true"></ngInput>
966
- * </div>
967
- * </div>
1209
+ * Erweiterung / Hooking für automatismen in Formular. Wird als Container für alle Controls benötigt.
968
1210
  *
1211
+ * @example Beispiel über Div Container
969
1212
  *
970
- * (at)Component({
971
- * selector: 'sacInheritForm',
972
- * templateUrl: './subform.component.html'
973
- * })
974
- * export class SubFormComponent implements DoCheck {
1213
+ * <div ngForm></div>
975
1214
  *
976
- * (at)Input() mymodel;
977
- * (at)Output() mymodelChange = new EventEmitter();
1215
+ * @example Beispiel über Form Tag
978
1216
  *
979
- * ngDoCheck() {
980
- * this.mymodelChange.next(this.mymodel);
981
- * }
982
- *}
1217
+ * <form></form>
983
1218
  *
984
1219
  */
985
- class SacInheritFormDirective {
986
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInheritFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
987
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacInheritFormDirective, isStandalone: true, selector: "[sacInheritForm]", providers: [
988
- {
989
- provide: SacFormDirective,
990
- useFactory: SACFORM_FACTORY,
991
- deps: [[new SkipSelf(), SacFormDirective]]
992
- }, {
993
- provide: ControlContainer,
994
- useFactory: NGFORM_FACTORY,
995
- deps: [NgForm]
996
- }
997
- ], ngImport: i0 }); }
998
- }
999
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInheritFormDirective, decorators: [{
1000
- type: Directive,
1220
+ class SacFormDirective extends SacFormCommon {
1221
+ // #endregion Properties
1222
+ // #region Constructors
1223
+ /**
1224
+ * Konstruktor
1225
+ * @param form Instanz von NgForm für eigene automatische Formular Logik
1226
+ */
1227
+ constructor(form) {
1228
+ super(form);
1229
+ // #region Properties
1230
+ /**
1231
+ * Setzt die Standard CSS Klasse für auf dem Form Container
1232
+ */
1233
+ this.cssClassForm = true;
1234
+ }
1235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacFormDirective, deps: [{ token: i1$1.NgForm }], target: i0.ɵɵFactoryTarget.Directive }); }
1236
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacFormDirective, isStandalone: true, selector: "form:not([ngNoForm]):not([formGroup]),[ngForm]", host: { properties: { "class.form": "this.cssClassForm" } }, exportAs: ["sacform"], usesInheritance: true, ngImport: i0 }); }
1237
+ }
1238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacFormDirective, decorators: [{
1239
+ type: Directive,
1240
+ args: [{
1241
+ selector: 'form:not([ngNoForm]):not([formGroup]),[ngForm]',
1242
+ exportAs: 'sacform',
1243
+ standalone: true,
1244
+ }]
1245
+ }], ctorParameters: function () { return [{ type: i1$1.NgForm }]; }, propDecorators: { cssClassForm: [{
1246
+ type: HostBinding,
1247
+ args: ['class.form']
1248
+ }] } });
1249
+
1250
+ // #region Classes
1251
+ /**
1252
+ * Directive to inherit an NgForm/NgForm from a parent component
1253
+ */
1254
+ class SacInheritFormDirective extends SacFormCommon {
1255
+ // #region Constructors
1256
+ /**
1257
+ * Construtor
1258
+ * @param injector: injector to receive the NgForm instance
1259
+ */
1260
+ constructor(injector) {
1261
+ super(injector.get(NgForm));
1262
+ }
1263
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInheritFormDirective, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
1264
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacInheritFormDirective, isStandalone: true, selector: "[sacInheritForm]", providers: [
1265
+ {
1266
+ provide: SacFormDirective,
1267
+ useFactory: SACFORM_FACTORY,
1268
+ deps: [[new SkipSelf(), SacFormDirective]],
1269
+ },
1270
+ {
1271
+ provide: ControlContainer,
1272
+ useFactory: NGFORM_FACTORY,
1273
+ deps: [NgForm],
1274
+ },
1275
+ ], exportAs: ["sacinheritform"], usesInheritance: true, ngImport: i0 }); }
1276
+ }
1277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInheritFormDirective, decorators: [{
1278
+ type: Directive,
1001
1279
  args: [{
1002
1280
  selector: '[sacInheritForm]',
1281
+ exportAs: 'sacinheritform',
1282
+ standalone: true,
1003
1283
  providers: [
1004
1284
  {
1005
1285
  provide: SacFormDirective,
1006
1286
  useFactory: SACFORM_FACTORY,
1007
- deps: [[new SkipSelf(), SacFormDirective]]
1008
- }, {
1287
+ deps: [[new SkipSelf(), SacFormDirective]],
1288
+ },
1289
+ {
1009
1290
  provide: ControlContainer,
1010
1291
  useFactory: NGFORM_FACTORY,
1011
- deps: [NgForm]
1012
- }
1292
+ deps: [NgForm],
1293
+ },
1013
1294
  ],
1014
- standalone: true
1015
1295
  }]
1016
- }] });
1296
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1297
+ // #endregion Classes
1298
+ // #region Functions
1299
+ /**
1300
+ * Factory Methode für NgForm
1301
+ * @param form NgForm
1302
+ */
1303
+ function NGFORM_FACTORY(form) {
1304
+ return form;
1305
+ }
1306
+ /**
1307
+ * Factory Methode für SacForm
1308
+ * @param form SacFormular
1309
+ */
1310
+ function SACFORM_FACTORY(form) {
1311
+ return form;
1312
+ }
1017
1313
 
1018
1314
  class SACBootstrap5FormModule {
1019
1315
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5FormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1041,6 +1337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1041
1337
  * Paging Komponente
1042
1338
  */
1043
1339
  class SacPagingComponent extends SacPagingCommon {
1340
+ // #region Constructors
1044
1341
  /**
1045
1342
  * Konstruktor
1046
1343
  * @param injector Angular Dependency Injection Service
@@ -1050,48 +1347,53 @@ class SacPagingComponent extends SacPagingCommon {
1050
1347
  }
1051
1348
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacPagingComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1052
1349
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacPagingComponent, isStandalone: true, selector: "sac-paging", providers: [
1053
- { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: SacPagingComponent },
1350
+ {
1351
+ provide: NG_VALUE_ACCESSOR,
1352
+ multi: true,
1353
+ useExisting: SacPagingComponent,
1354
+ },
1054
1355
  {
1055
1356
  provide: NG_VALIDATORS,
1056
1357
  multi: true,
1057
1358
  useExisting: forwardRef(() => SacPagingComponent),
1058
1359
  },
1059
- ], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"d-flex justify-content-between align-items-center flex-wrap\"\r\n id=\"{{name}}\"\r\n>\r\n <div class=\"col-pagination order-2 order-md-1\" id=\"{{name}}_pages\">\r\n <ul class=\"pagination mb-4 mb-md-0\">\r\n <li\r\n class=\"page-item\"\r\n [ngClass]=\"{'aspNetDisabled disabled': activePageIndex === firstPageIndex}\"\r\n >\r\n <a class=\"page-link\" (click)=\"firstPage()\">\u00AB</a>\r\n </li>\r\n <li\r\n class=\"page-item\"\r\n *ngFor=\"let page of paginators; let i = index\"\r\n [ngClass]=\"{'active': page === activePageIndex}\"\r\n >\r\n <a class=\"page-link\" (click)=\"changePage(page)\">{{page + 1 }}</a>\r\n </li>\r\n <li\r\n class=\"page-item\"\r\n [ngClass]=\"{'aspNetDisabled disabled': activePageIndex === lastPageIndex}\"\r\n >\r\n <a class=\"page-link\" (click)=\"lastPage()\">\u00BB</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-summary order-1 order-md-2\">\r\n <div class=\"mb-4 mb-md-0 mr-4 mb-md-0\">{{ PagingText | async }}</div>\r\n </div>\r\n <div class=\"col-pagesize order-3\" *ngIf=\"!pagesizedisabled\">\r\n <div class=\"d-flex align-items-center\" id=\"{{name}}_size\">\r\n <select\r\n class=\"form-select form-select-sm\"\r\n style=\"width: 85px\"\r\n [ngModel]=\"pageSize\"\r\n (ngModelChange)=\"changePageSize($event)\"\r\n >\r\n <option [ngValue]=\"size\" *ngFor=\"let size of getPageSizes\">\r\n {{size}}\r\n </option>\r\n </select>\r\n <div class=\"ms-2\">{{ PageSizeText | async }}</div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
1360
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"d-flex justify-content-between align-items-center flex-wrap\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n id=\"{{ name }}\">\n <div\n class=\"col-pagination order-2 order-md-1\"\n id=\"{{ name }}_pages\">\n <ul class=\"pagination mb-4 mb-md-0\">\n <li\n class=\"page-item\"\n [ngClass]=\"{ 'aspNetDisabled disabled': activePageIndex === firstPageIndex }\">\n <a\n class=\"page-link\"\n (click)=\"firstPage()\"\n >\u00AB</a\n >\n </li>\n <li\n class=\"page-item\"\n *ngFor=\"let page of paginators; let i = index\"\n [ngClass]=\"{ active: page === activePageIndex }\">\n <a\n class=\"page-link\"\n (click)=\"changePage(page)\"\n >{{ page + 1 }}</a\n >\n </li>\n <li\n class=\"page-item\"\n [ngClass]=\"{ 'aspNetDisabled disabled': activePageIndex === lastPageIndex }\">\n <a\n class=\"page-link\"\n (click)=\"lastPage()\"\n >\u00BB</a\n >\n </li>\n </ul>\n </div>\n <div class=\"col-summary order-1 order-md-2\">\n <div class=\"mb-4 mb-md-0 mr-4 mb-md-0\">{{ PagingText | async }}</div>\n </div>\n <div\n class=\"col-pagesize order-3\"\n *ngIf=\"!pagesizedisabled\">\n <div\n class=\"d-flex align-items-center\"\n id=\"{{ name }}_size\">\n <select\n class=\"form-select form-select-sm\"\n style=\"width: 85px\"\n id=\"{{ name }}_pagesize\"\n [ngModel]=\"pageSize\"\n (ngModelChange)=\"changePageSize($event)\">\n <option\n [ngValue]=\"size\"\n *ngFor=\"let size of getPageSizes\">\n {{ size }}\n </option>\n </select>\n <div class=\"ms-2\">{{ PageSizeText | async }}</div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1060
1361
  }
1061
1362
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacPagingComponent, decorators: [{
1062
1363
  type: Component,
1063
1364
  args: [{ selector: 'sac-paging', providers: [
1064
- { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: SacPagingComponent },
1365
+ {
1366
+ provide: NG_VALUE_ACCESSOR,
1367
+ multi: true,
1368
+ useExisting: SacPagingComponent,
1369
+ },
1065
1370
  {
1066
1371
  provide: NG_VALIDATORS,
1067
1372
  multi: true,
1068
1373
  useExisting: forwardRef(() => SacPagingComponent),
1069
1374
  },
1070
- ], standalone: true, imports: [
1071
- NgClass,
1072
- NgFor,
1073
- NgIf,
1074
- FormsModule,
1075
- AsyncPipe,
1076
- ], template: "<div\r\n class=\"d-flex justify-content-between align-items-center flex-wrap\"\r\n id=\"{{name}}\"\r\n>\r\n <div class=\"col-pagination order-2 order-md-1\" id=\"{{name}}_pages\">\r\n <ul class=\"pagination mb-4 mb-md-0\">\r\n <li\r\n class=\"page-item\"\r\n [ngClass]=\"{'aspNetDisabled disabled': activePageIndex === firstPageIndex}\"\r\n >\r\n <a class=\"page-link\" (click)=\"firstPage()\">\u00AB</a>\r\n </li>\r\n <li\r\n class=\"page-item\"\r\n *ngFor=\"let page of paginators; let i = index\"\r\n [ngClass]=\"{'active': page === activePageIndex}\"\r\n >\r\n <a class=\"page-link\" (click)=\"changePage(page)\">{{page + 1 }}</a>\r\n </li>\r\n <li\r\n class=\"page-item\"\r\n [ngClass]=\"{'aspNetDisabled disabled': activePageIndex === lastPageIndex}\"\r\n >\r\n <a class=\"page-link\" (click)=\"lastPage()\">\u00BB</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-summary order-1 order-md-2\">\r\n <div class=\"mb-4 mb-md-0 mr-4 mb-md-0\">{{ PagingText | async }}</div>\r\n </div>\r\n <div class=\"col-pagesize order-3\" *ngIf=\"!pagesizedisabled\">\r\n <div class=\"d-flex align-items-center\" id=\"{{name}}_size\">\r\n <select\r\n class=\"form-select form-select-sm\"\r\n style=\"width: 85px\"\r\n [ngModel]=\"pageSize\"\r\n (ngModelChange)=\"changePageSize($event)\"\r\n >\r\n <option [ngValue]=\"size\" *ngFor=\"let size of getPageSizes\">\r\n {{size}}\r\n </option>\r\n </select>\r\n <div class=\"ms-2\">{{ PageSizeText | async }}</div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1375
+ ], standalone: true, imports: [NgClass, NgFor, NgIf, FormsModule, AsyncPipe, SacTestingAttributePipe], template: "<div\n class=\"d-flex justify-content-between align-items-center flex-wrap\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n id=\"{{ name }}\">\n <div\n class=\"col-pagination order-2 order-md-1\"\n id=\"{{ name }}_pages\">\n <ul class=\"pagination mb-4 mb-md-0\">\n <li\n class=\"page-item\"\n [ngClass]=\"{ 'aspNetDisabled disabled': activePageIndex === firstPageIndex }\">\n <a\n class=\"page-link\"\n (click)=\"firstPage()\"\n >\u00AB</a\n >\n </li>\n <li\n class=\"page-item\"\n *ngFor=\"let page of paginators; let i = index\"\n [ngClass]=\"{ active: page === activePageIndex }\">\n <a\n class=\"page-link\"\n (click)=\"changePage(page)\"\n >{{ page + 1 }}</a\n >\n </li>\n <li\n class=\"page-item\"\n [ngClass]=\"{ 'aspNetDisabled disabled': activePageIndex === lastPageIndex }\">\n <a\n class=\"page-link\"\n (click)=\"lastPage()\"\n >\u00BB</a\n >\n </li>\n </ul>\n </div>\n <div class=\"col-summary order-1 order-md-2\">\n <div class=\"mb-4 mb-md-0 mr-4 mb-md-0\">{{ PagingText | async }}</div>\n </div>\n <div\n class=\"col-pagesize order-3\"\n *ngIf=\"!pagesizedisabled\">\n <div\n class=\"d-flex align-items-center\"\n id=\"{{ name }}_size\">\n <select\n class=\"form-select form-select-sm\"\n style=\"width: 85px\"\n id=\"{{ name }}_pagesize\"\n [ngModel]=\"pageSize\"\n (ngModelChange)=\"changePageSize($event)\">\n <option\n [ngValue]=\"size\"\n *ngFor=\"let size of getPageSizes\">\n {{ size }}\n </option>\n </select>\n <div class=\"ms-2\">{{ PageSizeText | async }}</div>\n </div>\n </div>\n</div>\n" }]
1077
1376
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1078
1377
 
1079
1378
  /**
1080
1379
  * Grid Komponente
1081
1380
  */
1082
1381
  class SacGridComponent extends SacGridCommon {
1382
+ // #endregion Properties
1383
+ // #region Constructors
1083
1384
  /**
1084
1385
  * Konstrukor
1085
1386
  * @param cdRef Change Detection Reference
1086
1387
  */
1087
- constructor(cdRef) {
1088
- super(cdRef);
1388
+ constructor(cdRef, injector) {
1389
+ super(cdRef, injector);
1390
+ // #region Properties
1089
1391
  /**
1090
1392
  * Setzt die Ellipsis Funktion auf der Column
1091
1393
  */
1092
1394
  this.ellipsis = false;
1093
1395
  }
1094
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1396
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1095
1397
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacGridComponent, isStandalone: true, selector: "sac-grid", providers: [
1096
1398
  { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: SacGridComponent },
1097
1399
  {
@@ -1099,7 +1401,7 @@ class SacGridComponent extends SacGridCommon {
1099
1401
  multi: true,
1100
1402
  useExisting: forwardRef(() => SacGridComponent),
1101
1403
  },
1102
- ], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-responsive\">\r\n <table class=\"table table-striped table-hover\" id={{name}}>\r\n <thead class=\"thead-light\">\r\n <tr>\r\n <ng-container *ngTemplateOutlet=\"template; context { row: {}, type: 'header'}\">\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let item of value; let i=index\">\r\n <tr>\r\n <ng-container *ngTemplateOutlet=\"template; context { row: item, type: 'body'}\">\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n <tr *ngIf=\"value === undefined || value === null || value.length===0\">\r\n <td [attr.colspan]=\"ColumnCount\">{{emptytext}}</td>\r\n </tr>\r\n <tr>\r\n <td [attr.colspan]=\"ColumnCount\">\r\n <div class=\"container-fluid\">\r\n <sac-paging name=\"{{name}}Paging\" (paging)=\"pageChange($event)\" [pagerdata]=\"pagerdata\" [pagesizes]=\"pagesizes\" [pagingtext]=\"pagingtext\" [pagesizetext]=\"pagesizetext\" [pagesizedisabled]=\"pagesizedisabled\"></sac-paging>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SacPagingComponent, selector: "sac-paging" }] }); }
1404
+ ], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"table-responsive\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <table\n class=\"table table-striped table-hover\"\n id=\"{{ name }}\">\n <thead class=\"thead-light\">\n <tr>\n <ng-container *ngTemplateOutlet=\"template; context: { row: {}, type: 'header' }\"> </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of value; let i = index\">\n <tr>\n <ng-container *ngTemplateOutlet=\"template; context: { row: item, type: 'body' }\"> </ng-container>\n </tr>\n </ng-container>\n <tr\n *ngIf=\"value === undefined || value === null || value.length === 0\"\n data-e2e=\"emptyrow\">\n <td [attr.colspan]=\"ColumnCount\">{{ emptytext }}</td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"pagerdata\">\n <tr *ngIf=\"pagerdata\">\n <td [attr.colspan]=\"ColumnCount\">\n <div class=\"container-fluid\">\n <sac-paging\n name=\"{{ name }}Paging\"\n (paging)=\"pageChange($event)\"\n [pagerdata]=\"pagerdata\"\n [pagesizes]=\"pagesizes\"\n [pagingtext]=\"pagingtext\"\n [pagesizetext]=\"pagesizetext\"\n [pagesizedisabled]=\"pagesizedisabled\"></sac-paging>\n </div>\n </td>\n </tr>\n </tfoot>\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SacPagingComponent, selector: "sac-paging" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1103
1405
  }
1104
1406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridComponent, decorators: [{
1105
1407
  type: Component,
@@ -1110,61 +1412,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1110
1412
  multi: true,
1111
1413
  useExisting: forwardRef(() => SacGridComponent),
1112
1414
  },
1113
- ], standalone: true, imports: [
1114
- NgTemplateOutlet,
1115
- NgFor,
1116
- NgIf,
1117
- SacPagingComponent,
1118
- ], template: "<div class=\"table-responsive\">\r\n <table class=\"table table-striped table-hover\" id={{name}}>\r\n <thead class=\"thead-light\">\r\n <tr>\r\n <ng-container *ngTemplateOutlet=\"template; context { row: {}, type: 'header'}\">\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let item of value; let i=index\">\r\n <tr>\r\n <ng-container *ngTemplateOutlet=\"template; context { row: item, type: 'body'}\">\r\n </ng-container>\r\n </tr>\r\n </ng-container>\r\n <tr *ngIf=\"value === undefined || value === null || value.length===0\">\r\n <td [attr.colspan]=\"ColumnCount\">{{emptytext}}</td>\r\n </tr>\r\n <tr>\r\n <td [attr.colspan]=\"ColumnCount\">\r\n <div class=\"container-fluid\">\r\n <sac-paging name=\"{{name}}Paging\" (paging)=\"pageChange($event)\" [pagerdata]=\"pagerdata\" [pagesizes]=\"pagesizes\" [pagingtext]=\"pagingtext\" [pagesizetext]=\"pagesizetext\" [pagesizedisabled]=\"pagesizedisabled\"></sac-paging>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n" }]
1119
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { template: [{
1415
+ ], standalone: true, imports: [NgTemplateOutlet, NgFor, NgIf, SacPagingComponent, SacTestingAttributePipe], template: "<div\n class=\"table-responsive\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <table\n class=\"table table-striped table-hover\"\n id=\"{{ name }}\">\n <thead class=\"thead-light\">\n <tr>\n <ng-container *ngTemplateOutlet=\"template; context: { row: {}, type: 'header' }\"> </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of value; let i = index\">\n <tr>\n <ng-container *ngTemplateOutlet=\"template; context: { row: item, type: 'body' }\"> </ng-container>\n </tr>\n </ng-container>\n <tr\n *ngIf=\"value === undefined || value === null || value.length === 0\"\n data-e2e=\"emptyrow\">\n <td [attr.colspan]=\"ColumnCount\">{{ emptytext }}</td>\n </tr>\n </tbody>\n <tfoot *ngIf=\"pagerdata\">\n <tr *ngIf=\"pagerdata\">\n <td [attr.colspan]=\"ColumnCount\">\n <div class=\"container-fluid\">\n <sac-paging\n name=\"{{ name }}Paging\"\n (paging)=\"pageChange($event)\"\n [pagerdata]=\"pagerdata\"\n [pagesizes]=\"pagesizes\"\n [pagingtext]=\"pagingtext\"\n [pagesizetext]=\"pagesizetext\"\n [pagesizedisabled]=\"pagesizedisabled\"></sac-paging>\n </div>\n </td>\n </tr>\n </tfoot>\n </table>\n</div>\n" }]
1416
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }]; }, propDecorators: { template: [{
1120
1417
  type: ContentChild,
1121
1418
  args: [TemplateRef, { static: false }]
1122
1419
  }] } });
1123
1420
 
1124
1421
  /**
1125
1422
  * Grid Action Button
1126
- *
1127
- * @example Standard Action
1128
- *
1129
- * <ngGridButton icon="edit" (clicked)="action('edit')" [isdisabled]="true"></ngGridButton>
1130
- *
1131
- * @example Custom Action
1132
- *
1133
- * <ngGridButton iconstyle="sprite" icon="icon-sprite-base-main_info" (clicked)="action("info")"></ngGridButton>
1134
- *
1135
1423
  */
1136
1424
  class SacGridButtonComponent extends SacGridButtonCommon {
1425
+ // #region Constructors
1137
1426
  /**
1138
- * Gibt das Icon für den Button zurück
1139
- */
1140
- getIconClass() {
1141
- let iconset = this.iconstyle;
1142
- let iconcss = this.icon;
1143
- if (iconset === '') {
1144
- switch (this.icon) {
1145
- case 'edit':
1146
- iconset = 'sprite';
1147
- iconcss = 'icon-sprite-base-main_edit';
1148
- break;
1149
- case 'delete':
1150
- iconset = 'sprite';
1151
- iconcss = 'icon-sprite-base-main_delete';
1152
- break;
1153
- }
1154
- }
1155
- if (this._isdisabledvalue) {
1156
- iconcss += '_disabled';
1157
- }
1158
- const result = iconset + ' ' + iconcss;
1159
- return result.trim();
1427
+ * Construtor
1428
+ *
1429
+ * @param injector Injector to resolve icons
1430
+ */
1431
+ constructor(injector) {
1432
+ super(injector);
1160
1433
  }
1161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacGridButtonComponent, isStandalone: true, selector: "sac-gridbutton", usesInheritance: true, ngImport: i0, template: "<a (click)=\"callaction()\" style=\"padding-right: 5px;\" [class.disabled]=\"isdisabled\" [attr.disabled]=\"isdisabled ? 'disabled' : null\"><span class=\"{{getIconClass()}}\"></span></a>\r\n" }); }
1434
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridButtonComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1435
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacGridButtonComponent, isStandalone: true, selector: "sac-gridbutton", usesInheritance: true, ngImport: i0, template: "<a\n (click)=\"callaction()\"\n [attr.data-e2e]=\"name\"\n style=\"padding-right: 5px\"\n [style.cursor]=\"!isdisabled ? 'pointer' : null\"\n [class.disabled]=\"isdisabled\"\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\n ><span class=\"{{ getIconClass() }}\"></span\n></a>\n" }); }
1163
1436
  }
1164
1437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridButtonComponent, decorators: [{
1165
1438
  type: Component,
1166
- args: [{ selector: 'sac-gridbutton', standalone: true, template: "<a (click)=\"callaction()\" style=\"padding-right: 5px;\" [class.disabled]=\"isdisabled\" [attr.disabled]=\"isdisabled ? 'disabled' : null\"><span class=\"{{getIconClass()}}\"></span></a>\r\n" }]
1167
- }] });
1439
+ args: [{ selector: 'sac-gridbutton', standalone: true, template: "<a\n (click)=\"callaction()\"\n [attr.data-e2e]=\"name\"\n style=\"padding-right: 5px\"\n [style.cursor]=\"!isdisabled ? 'pointer' : null\"\n [class.disabled]=\"isdisabled\"\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\n ><span class=\"{{ getIconClass() }}\"></span\n></a>\n" }]
1440
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1168
1441
 
1169
1442
  /**
1170
1443
  * Grid Column Komponente
@@ -1184,7 +1457,7 @@ class SacGridColumnComponent extends SacGridColumnCommon {
1184
1457
  provide: SacGridColumnBaseCommon,
1185
1458
  useExisting: forwardRef(() => SacGridColumnComponent),
1186
1459
  },
1187
- ], usesInheritance: true, ngImport: i0, template: "<th\r\n scope=\"col\"\r\n *ngIf=\"IsHeader()\"\r\n [style.width]=\"width\"\r\n (click)=\"SortByColumn()\"\r\n>\r\n <span>{{header}}</span>\r\n <span\r\n class=\"ps-2\"\r\n [class]=\"IconSortUp\"\r\n *ngIf=\"IsSortedColumn() && GetSortDirection() ==='asc'\"\r\n ></span>\r\n <span\r\n class=\"ps-2\"\r\n [class]=\"IconSortDown\"\r\n *ngIf=\"IsSortedColumn() && GetSortDirection() ==='desc'\"\r\n ></span>\r\n</th>\r\n<td\r\n scope=\"col\"\r\n *ngIf=\"IsBody()\"\r\n [style.width]=\"width\"\r\n [class.ellipsis]=\"IsEllipsis()\"\r\n>\r\n <span [attr.title]=\"IsEllipsis() ? value : null\"> {{value}} </span>\r\n</td>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1460
+ ], usesInheritance: true, ngImport: i0, template: "<th\n #headerElement\n scope=\"col\"\n *ngIf=\"IsHeader()\"\n [style.width]=\"width\"\n (click)=\"SortByColumn()\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\">\n <span>{{ header }}</span>\n <span\n class=\"ps-2\"\n [class]=\"IconSortUp\"\n *ngIf=\"IsSortedColumn() && GetSortDirection() === 'asc'\"></span>\n <span\n class=\"ps-2\"\n [class]=\"IconSortDown\"\n *ngIf=\"IsSortedColumn() && GetSortDirection() === 'desc'\"></span>\n</th>\n<td\n #bodyElement\n scope=\"col\"\n *ngIf=\"IsBody()\"\n [style.width]=\"width\"\n [class.ellipsis]=\"IsEllipsis()\"\n (click)=\"ColumnClick()\"\n [style.max-width]=\"IsEllipsis() ? width : null\"\n [style.overflow]=\"IsEllipsis() ? 'hidden' : null\"\n [style.text-overflow]=\"IsEllipsis() ? 'ellipsis' : null\"\n [style.white-space]=\"IsEllipsis() ? 'nowrap' : null\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\">\n <span\n [attr.title]=\"IsEllipsis() ? value : null\"\n [innerHtml]=\"value\">\n </span>\n</td>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1188
1461
  }
1189
1462
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridColumnComponent, decorators: [{
1190
1463
  type: Component,
@@ -1193,7 +1466,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1193
1466
  provide: SacGridColumnBaseCommon,
1194
1467
  useExisting: forwardRef(() => SacGridColumnComponent),
1195
1468
  },
1196
- ], standalone: true, imports: [NgIf], template: "<th\r\n scope=\"col\"\r\n *ngIf=\"IsHeader()\"\r\n [style.width]=\"width\"\r\n (click)=\"SortByColumn()\"\r\n>\r\n <span>{{header}}</span>\r\n <span\r\n class=\"ps-2\"\r\n [class]=\"IconSortUp\"\r\n *ngIf=\"IsSortedColumn() && GetSortDirection() ==='asc'\"\r\n ></span>\r\n <span\r\n class=\"ps-2\"\r\n [class]=\"IconSortDown\"\r\n *ngIf=\"IsSortedColumn() && GetSortDirection() ==='desc'\"\r\n ></span>\r\n</th>\r\n<td\r\n scope=\"col\"\r\n *ngIf=\"IsBody()\"\r\n [style.width]=\"width\"\r\n [class.ellipsis]=\"IsEllipsis()\"\r\n>\r\n <span [attr.title]=\"IsEllipsis() ? value : null\"> {{value}} </span>\r\n</td>\r\n" }]
1469
+ ], standalone: true, imports: [NgIf], template: "<th\n #headerElement\n scope=\"col\"\n *ngIf=\"IsHeader()\"\n [style.width]=\"width\"\n (click)=\"SortByColumn()\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\">\n <span>{{ header }}</span>\n <span\n class=\"ps-2\"\n [class]=\"IconSortUp\"\n *ngIf=\"IsSortedColumn() && GetSortDirection() === 'asc'\"></span>\n <span\n class=\"ps-2\"\n [class]=\"IconSortDown\"\n *ngIf=\"IsSortedColumn() && GetSortDirection() === 'desc'\"></span>\n</th>\n<td\n #bodyElement\n scope=\"col\"\n *ngIf=\"IsBody()\"\n [style.width]=\"width\"\n [class.ellipsis]=\"IsEllipsis()\"\n (click)=\"ColumnClick()\"\n [style.max-width]=\"IsEllipsis() ? width : null\"\n [style.overflow]=\"IsEllipsis() ? 'hidden' : null\"\n [style.text-overflow]=\"IsEllipsis() ? 'ellipsis' : null\"\n [style.white-space]=\"IsEllipsis() ? 'nowrap' : null\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\">\n <span\n [attr.title]=\"IsEllipsis() ? value : null\"\n [innerHtml]=\"value\">\n </span>\n</td>\n" }]
1197
1470
  }], ctorParameters: function () { return [{ type: SacGridComponent }, { type: i0.Injector }, { type: i0.ElementRef }]; } });
1198
1471
 
1199
1472
  /**
@@ -1215,7 +1488,7 @@ class SacGridColumnActionComponent extends SacGridColumnActionCommon {
1215
1488
  provide: SacGridColumnBaseCommon,
1216
1489
  useExisting: forwardRef(() => SacGridColumnActionComponent),
1217
1490
  },
1218
- ], usesInheritance: true, ngImport: i0, template: "<th scope=\"col\" *ngIf=\"IsHeader()\" [style.width]=\"width\"><span></span></th>\r\n<td scope=\"col\" class=\"px-2\" *ngIf=\"IsBody()\">\r\n <ng-content></ng-content>\r\n</td>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1491
+ ], usesInheritance: true, ngImport: i0, template: "<th\n #headerElement\n scope=\"col\"\n *ngIf=\"IsHeader()\"\n [style.width]=\"width\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\">\n <span></span>\n</th>\n<td\n #bodyElement\n scope=\"col\"\n class=\"px-2\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\"\n *ngIf=\"IsBody()\">\n <ng-content></ng-content>\n</td>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1219
1492
  }
1220
1493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridColumnActionComponent, decorators: [{
1221
1494
  type: Component,
@@ -1224,33 +1497,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1224
1497
  provide: SacGridColumnBaseCommon,
1225
1498
  useExisting: forwardRef(() => SacGridColumnActionComponent),
1226
1499
  },
1227
- ], standalone: true, imports: [NgIf], template: "<th scope=\"col\" *ngIf=\"IsHeader()\" [style.width]=\"width\"><span></span></th>\r\n<td scope=\"col\" class=\"px-2\" *ngIf=\"IsBody()\">\r\n <ng-content></ng-content>\r\n</td>\r\n" }]
1500
+ ], standalone: true, imports: [NgIf], template: "<th\n #headerElement\n scope=\"col\"\n *ngIf=\"IsHeader()\"\n [style.width]=\"width\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\">\n <span></span>\n</th>\n<td\n #bodyElement\n scope=\"col\"\n class=\"px-2\"\n [class.text-right]=\"alignment === 'right'\"\n [class.text-center]=\"alignment === 'center'\"\n *ngIf=\"IsBody()\">\n <ng-content></ng-content>\n</td>\n" }]
1228
1501
  }], ctorParameters: function () { return [{ type: SacGridComponent }, { type: i0.Injector }, { type: i0.ElementRef }]; } });
1229
1502
 
1230
1503
  /**
1231
1504
  * Image Item für Grid
1232
1505
  */
1233
1506
  class SacGridImageComponent extends SacGridImageCommon {
1234
- /**
1235
- * Gibt die CSS Klassen für Sprite Images zurück
1236
- * @returns CSS Klasse
1237
- */
1238
- getIconClass() {
1239
- switch (this.iconstyle) {
1240
- case 'edit':
1241
- return 'sprite icon-sprite-base-main_edit';
1242
- case 'delete':
1243
- return 'sprite icon-sprite-base-main_delete';
1244
- default:
1245
- return this.iconstyle;
1246
- }
1247
- }
1248
1507
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridImageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1249
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacGridImageComponent, isStandalone: true, selector: "sac-gridimage", usesInheritance: true, ngImport: i0, template: "<span><span class=\"{{getIconClass()}}\"></span></span>\r\n" }); }
1508
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacGridImageComponent, isStandalone: true, selector: "sac-gridimage", usesInheritance: true, ngImport: i0, template: "<span><span [ngClass]=\"iconstyle\"></span></span>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1250
1509
  }
1251
1510
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacGridImageComponent, decorators: [{
1252
1511
  type: Component,
1253
- args: [{ selector: 'sac-gridimage', standalone: true, template: "<span><span class=\"{{getIconClass()}}\"></span></span>\r\n" }]
1512
+ args: [{ selector: 'sac-gridimage', imports: [CommonModule], standalone: true, template: "<span><span [ngClass]=\"iconstyle\"></span></span>\n" }]
1254
1513
  }] });
1255
1514
 
1256
1515
  class SACBootstrap5GridModule {
@@ -1258,7 +1517,7 @@ class SACBootstrap5GridModule {
1258
1517
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5GridModule, imports: [CommonModule, FormsModule,
1259
1518
  SacGridComponent, SacGridColumnComponent, SacGridColumnActionComponent, SacPagingComponent, SacGridButtonComponent, SacGridImageComponent], exports: [SacGridComponent, SacGridColumnComponent, SacGridColumnActionComponent, SacPagingComponent, SacGridButtonComponent, SacGridImageComponent] }); }
1260
1519
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5GridModule, imports: [CommonModule, FormsModule,
1261
- SacGridComponent, SacPagingComponent] }); }
1520
+ SacGridComponent, SacPagingComponent, SacGridImageComponent] }); }
1262
1521
  }
1263
1522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5GridModule, decorators: [{
1264
1523
  type: NgModule,
@@ -1275,15 +1534,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1275
1534
  * Input Komponente
1276
1535
  */
1277
1536
  class SacInputComponent extends SacInputCommon {
1537
+ // #region Constructors
1278
1538
  /**
1279
- * Konstruktor
1280
- * @param parent Formular
1281
- * @param injector Angular Dependency Injection Service
1539
+ * Constructor
1540
+ * @param formLayout SacFormLayout to define scoped layout settings
1541
+ * @param injector Injector for injecting services
1282
1542
  */
1283
- constructor(parent, injector) {
1284
- super(parent, injector);
1543
+ constructor(formLayout, injector) {
1544
+ super(formLayout, injector);
1285
1545
  }
1286
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1546
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1287
1547
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputComponent, isStandalone: true, selector: "sac-input", providers: [
1288
1548
  { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: SacInputComponent },
1289
1549
  {
@@ -1291,7 +1551,7 @@ class SacInputComponent extends SacInputCommon {
1291
1551
  multi: true,
1292
1552
  useExisting: forwardRef(() => SacInputComponent),
1293
1553
  },
1294
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n [attr.placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1554
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\" />\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1295
1555
  }
1296
1556
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputComponent, decorators: [{
1297
1557
  type: Component,
@@ -1302,8 +1562,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1302
1562
  multi: true,
1303
1563
  useExisting: forwardRef(() => SacInputComponent),
1304
1564
  },
1305
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, NgIf, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n [attr.placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1306
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1565
+ ], standalone: true, imports: [
1566
+ NgClass,
1567
+ NgIf,
1568
+ AsyncPipe,
1569
+ SacToControlWidthCssPipe,
1570
+ SacToLabelWidthCssPipe,
1571
+ SacToLabelHeightPipe,
1572
+ SacToControlHeightPipe,
1573
+ SacTooltipComponent,
1574
+ SacTestingAttributePipe,
1575
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\" />\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1576
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1307
1577
  type: Host
1308
1578
  }, {
1309
1579
  type: Optional
@@ -1313,15 +1583,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1313
1583
  * Input Box für E-Mail Adressen
1314
1584
  */
1315
1585
  class SacInputEmailComponent extends SacInputEmailCommon {
1586
+ // #region Constructors
1316
1587
  /**
1317
- * Konstruktor
1318
- * @param parent Formular
1319
- * @param injector Angular Dependency Injection Service
1588
+ * Constructor
1589
+ * @param formLayout SacFormLayout to define scoped layout settings
1590
+ * @param injector Injector for injecting services
1320
1591
  */
1321
- constructor(parent, injector) {
1322
- super(parent, injector);
1592
+ constructor(formLayout, injector) {
1593
+ super(formLayout, injector);
1323
1594
  }
1324
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputEmailComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputEmailComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1325
1596
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputEmailComponent, isStandalone: true, selector: "sac-inputemail", providers: [
1326
1597
  {
1327
1598
  provide: NG_VALUE_ACCESSOR,
@@ -1333,7 +1604,7 @@ class SacInputEmailComponent extends SacInputEmailCommon {
1333
1604
  multi: true,
1334
1605
  useExisting: forwardRef(() => SacInputEmailComponent),
1335
1606
  },
1336
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <span class=\"input-group-text\">@</span>\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n autocomplete=\"email\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1607
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <span class=\"input-group-text\">@</span>\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"email\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxtextlength\"\n autocomplete=\"email\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\" />\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1337
1608
  }
1338
1609
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputEmailComponent, decorators: [{
1339
1610
  type: Component,
@@ -1348,8 +1619,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1348
1619
  multi: true,
1349
1620
  useExisting: forwardRef(() => SacInputEmailComponent),
1350
1621
  },
1351
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, NgIf, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <span class=\"input-group-text\">@</span>\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n autocomplete=\"email\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1352
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1622
+ ], standalone: true, imports: [
1623
+ NgClass,
1624
+ NgIf,
1625
+ AsyncPipe,
1626
+ SacToControlWidthCssPipe,
1627
+ SacToLabelWidthCssPipe,
1628
+ SacToLabelHeightPipe,
1629
+ SacToControlHeightPipe,
1630
+ SacTooltipComponent,
1631
+ SacTestingAttributePipe,
1632
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <span class=\"input-group-text\">@</span>\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"email\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxtextlength\"\n autocomplete=\"email\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\" />\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1633
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1353
1634
  type: Host
1354
1635
  }, {
1355
1636
  type: Optional
@@ -1359,15 +1640,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1359
1640
  * Input Box für lange Texte
1360
1641
  */
1361
1642
  class SacInputAreaComponent extends SacInputAreaCommon {
1643
+ // #region Constructors
1362
1644
  /**
1363
- * Konstruktor
1364
- * @param parent Formular
1365
- * @param injector Angular Dependency Injection Service
1645
+ * Constructor
1646
+ * @param formLayout SacFormLayout to define scoped layout settings
1647
+ * @param injector Injector for injecting services
1366
1648
  */
1367
- constructor(parent, injector) {
1368
- super(parent, injector);
1649
+ constructor(formLayout, injector) {
1650
+ super(formLayout, injector);
1369
1651
  }
1370
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputAreaComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1652
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputAreaComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1371
1653
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputAreaComponent, isStandalone: true, selector: "sac-inputarea", providers: [
1372
1654
  {
1373
1655
  provide: NG_VALUE_ACCESSOR,
@@ -1379,7 +1661,7 @@ class SacInputAreaComponent extends SacInputAreaCommon {
1379
1661
  multi: true,
1380
1662
  useExisting: forwardRef(() => SacInputAreaComponent),
1381
1663
  },
1382
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <textarea\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [attr.rows]=\"rows\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [attr.maxlength]=\"maxlength\"\r\n [readonly]=\"readonly\"\r\n ></textarea>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1664
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <textarea\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"\"\n class=\"form-control\"\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.rows]=\"rows\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [attr.maxlength]=\"maxtextlength\"\n [readonly]=\"readonly\"></textarea>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1383
1665
  }
1384
1666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputAreaComponent, decorators: [{
1385
1667
  type: Component,
@@ -1394,8 +1676,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1394
1676
  multi: true,
1395
1677
  useExisting: forwardRef(() => SacInputAreaComponent),
1396
1678
  },
1397
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, NgIf, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <textarea\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [attr.rows]=\"rows\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [attr.maxlength]=\"maxlength\"\r\n [readonly]=\"readonly\"\r\n ></textarea>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1398
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1679
+ ], standalone: true, imports: [
1680
+ NgClass,
1681
+ NgIf,
1682
+ AsyncPipe,
1683
+ SacToControlWidthCssPipe,
1684
+ SacToLabelWidthCssPipe,
1685
+ SacToLabelHeightPipe,
1686
+ SacToControlHeightPipe,
1687
+ SacTooltipComponent,
1688
+ SacTestingAttributePipe,
1689
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <textarea\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"\"\n class=\"form-control\"\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.rows]=\"rows\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [attr.maxlength]=\"maxtextlength\"\n [readonly]=\"readonly\"></textarea>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1690
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1399
1691
  type: Host
1400
1692
  }, {
1401
1693
  type: Optional
@@ -1405,15 +1697,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1405
1697
  * Input Control für Währungen
1406
1698
  */
1407
1699
  class SacInputCurrencyComponent extends SacInputCurrencyCommon {
1700
+ // #region Constructors
1408
1701
  /**
1409
- * Konstruktor
1410
- * @param parent Formular
1411
- * @param injector Angular Dependency Injection Service
1702
+ * Constructor
1703
+ * @param formLayout SacFormLayout to define scoped layout settings
1704
+ * @param injector Injector for injecting services
1412
1705
  */
1413
- constructor(parent, injector) {
1414
- super(parent, injector);
1706
+ constructor(formLayout, injector) {
1707
+ super(formLayout, injector);
1415
1708
  }
1416
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputCurrencyComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1709
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputCurrencyComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1417
1710
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputCurrencyComponent, isStandalone: true, selector: "sac-inputcurrency", providers: [
1418
1711
  {
1419
1712
  provide: NG_VALUE_ACCESSOR,
@@ -1425,7 +1718,7 @@ class SacInputCurrencyComponent extends SacInputCurrencyCommon {
1425
1718
  multi: true,
1426
1719
  useExisting: forwardRef(() => SacInputCurrencyComponent),
1427
1720
  },
1428
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n />\r\n <span class=\"input-group-text\">CHF</span>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1721
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group input-group-sm\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"decimal\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n [attr.placeholder]=\"placeholder\"\n (keypress)=\"onKeyPress($event)\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\" />\n <span class=\"input-group-text\">{{ currency }}</span>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }] }); }
1429
1722
  }
1430
1723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputCurrencyComponent, decorators: [{
1431
1724
  type: Component,
@@ -1440,8 +1733,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1440
1733
  multi: true,
1441
1734
  useExisting: forwardRef(() => SacInputCurrencyComponent),
1442
1735
  },
1443
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, NgIf, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n />\r\n <span class=\"input-group-text\">CHF</span>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1444
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1736
+ ], standalone: true, imports: [
1737
+ NgClass,
1738
+ NgIf,
1739
+ AsyncPipe,
1740
+ SacToControlWidthCssPipe,
1741
+ SacToLabelWidthCssPipe,
1742
+ SacToLabelHeightPipe,
1743
+ SacToControlHeightPipe,
1744
+ SacTestingAttributePipe,
1745
+ SacTooltipComponent,
1746
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group input-group-sm\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"decimal\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n [attr.placeholder]=\"placeholder\"\n (keypress)=\"onKeyPress($event)\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\" />\n <span class=\"input-group-text\">{{ currency }}</span>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1747
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1445
1748
  type: Host
1446
1749
  }, {
1447
1750
  type: Optional
@@ -1451,15 +1754,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1451
1754
  * Input Komponente für Zahlen
1452
1755
  */
1453
1756
  class SacInputDecimalComponent extends SacInputDecimalCommon {
1757
+ // #region Constructors
1454
1758
  /**
1455
- * Konstruktor
1456
- * @param parent Formular
1457
- * @param injector Angular Dependency Injection Service
1759
+ * Constructor
1760
+ * @param formLayout SacFormLayout to define scoped layout settings
1761
+ * @param injector Injector for injecting services
1458
1762
  */
1459
- constructor(parent, injector) {
1460
- super(parent, injector);
1763
+ constructor(formLayout, injector) {
1764
+ super(formLayout, injector);
1461
1765
  }
1462
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputDecimalComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1766
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputDecimalComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1463
1767
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputDecimalComponent, isStandalone: true, selector: "sac-inputdecimal", providers: [
1464
1768
  {
1465
1769
  provide: NG_VALUE_ACCESSOR,
@@ -1471,7 +1775,7 @@ class SacInputDecimalComponent extends SacInputDecimalCommon {
1471
1775
  multi: true,
1472
1776
  useExisting: forwardRef(() => SacInputDecimalComponent),
1473
1777
  },
1474
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [disabled]=\"isdisabled\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1778
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"decimal\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n (keypress)=\"onKeyPress($event)\"\n [disabled]=\"isdisabled\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\" />\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1475
1779
  }
1476
1780
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputDecimalComponent, decorators: [{
1477
1781
  type: Component,
@@ -1486,8 +1790,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1486
1790
  multi: true,
1487
1791
  useExisting: forwardRef(() => SacInputDecimalComponent),
1488
1792
  },
1489
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, NgIf, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [disabled]=\"isdisabled\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1490
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1793
+ ], standalone: true, imports: [
1794
+ NgClass,
1795
+ NgIf,
1796
+ AsyncPipe,
1797
+ SacToControlWidthCssPipe,
1798
+ SacToLabelWidthCssPipe,
1799
+ SacToLabelHeightPipe,
1800
+ SacToControlHeightPipe,
1801
+ SacTooltipComponent,
1802
+ SacTestingAttributePipe,
1803
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"decimal\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n [attr.placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n (keypress)=\"onKeyPress($event)\"\n [disabled]=\"isdisabled\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\" />\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1804
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1491
1805
  type: Host
1492
1806
  }, {
1493
1807
  type: Optional
@@ -1497,15 +1811,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1497
1811
  * Input Komponten für Ganzzahlen
1498
1812
  */
1499
1813
  class SacInputIntegerComponent extends SacInputIntegerCommon {
1814
+ // #region Constructors
1500
1815
  /**
1501
- * Konstruktor
1502
- * @param parent Formular
1503
- * @param injector Angular Dependency Injection Service
1816
+ * Constructor
1817
+ * @param formLayout SacFormLayout to define scoped layout settings
1818
+ * @param injector Injector for injecting services
1504
1819
  */
1505
- constructor(parent, injector) {
1506
- super(parent, injector);
1820
+ constructor(formLayout, injector) {
1821
+ super(formLayout, injector);
1507
1822
  }
1508
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputIntegerComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1823
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputIntegerComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1509
1824
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputIntegerComponent, isStandalone: true, selector: "sac-inputinteger", providers: [
1510
1825
  {
1511
1826
  provide: NG_VALUE_ACCESSOR,
@@ -1517,7 +1832,7 @@ class SacInputIntegerComponent extends SacInputIntegerCommon {
1517
1832
  multi: true,
1518
1833
  useExisting: forwardRef(() => SacInputIntegerComponent),
1519
1834
  },
1520
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1835
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"decimal\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n [attr.placeholder]=\"placeholder\"\n (keypress)=\"onKeyPress($event)\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\" />\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1521
1836
  }
1522
1837
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputIntegerComponent, decorators: [{
1523
1838
  type: Component,
@@ -1532,8 +1847,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1532
1847
  multi: true,
1533
1848
  useExisting: forwardRef(() => SacInputIntegerComponent),
1534
1849
  },
1535
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, NgIf, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.placeholder]=\"placeholder\"\r\n (keypress)=\"onKeyPress($event)\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1536
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1850
+ ], standalone: true, imports: [
1851
+ NgClass,
1852
+ NgIf,
1853
+ AsyncPipe,
1854
+ SacToControlWidthCssPipe,
1855
+ SacToLabelWidthCssPipe,
1856
+ SacToLabelHeightPipe,
1857
+ SacToControlHeightPipe,
1858
+ SacTooltipComponent,
1859
+ SacTestingAttributePipe,
1860
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"decimal\"\n class=\"form-control\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n [attr.placeholder]=\"placeholder\"\n (keypress)=\"onKeyPress($event)\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\" />\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1861
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1537
1862
  type: Host
1538
1863
  }, {
1539
1864
  type: Optional
@@ -1543,15 +1868,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1543
1868
  * Input Box für Passwörter
1544
1869
  */
1545
1870
  class SacInputPasswordComponent extends SacInputPasswordCommon {
1871
+ // #region Constructors
1546
1872
  /**
1547
- * Konstruktor
1548
- * @param parent Formular
1549
- * @param injector Angular Dependency Injection Service
1873
+ * Constructor
1874
+ * @param formLayout SacFormLayout to define scoped layout settings
1875
+ * @param injector Injector for injecting services
1550
1876
  */
1551
- constructor(parent, injector) {
1552
- super(parent, injector);
1877
+ constructor(formLayout, injector) {
1878
+ super(formLayout, injector);
1553
1879
  }
1554
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputPasswordComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1880
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputPasswordComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1555
1881
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputPasswordComponent, isStandalone: true, selector: "sac-inputpassword", providers: [
1556
1882
  {
1557
1883
  provide: NG_VALUE_ACCESSOR,
@@ -1563,7 +1889,7 @@ class SacInputPasswordComponent extends SacInputPasswordCommon {
1563
1889
  multi: true,
1564
1890
  useExisting: forwardRef(() => SacInputPasswordComponent),
1565
1891
  },
1566
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"password\"\r\n class=\"form-control form-control-sm\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.maxlength]=\"maxlength\"\r\n autocomplete=\"new-password\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
1892
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n [class.input-group]=\"passwordeye\"\n [class.has-validation]=\"passwordeye && isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n [type]=\"passwordeyevisible ? 'text' : 'password'\"\n class=\"form-control\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.maxlength]=\"maxtextlength\"\n autocomplete=\"new-password\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\" />\n <a\n *ngIf=\"passwordeye\"\n class=\"btn btn-outline-secondary\"\n (click)=\"onTogglePasswordEye()\"\n ><span [ngClass]=\"passwordeyevisible ? PasswordEyeVisibleIcon : PasswordEyeHiddenIcon\"></span>\n </a>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1567
1893
  }
1568
1894
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputPasswordComponent, decorators: [{
1569
1895
  type: Component,
@@ -1578,8 +1904,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1578
1904
  multi: true,
1579
1905
  useExisting: forwardRef(() => SacInputPasswordComponent),
1580
1906
  },
1581
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgClass, NgIf, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"password\"\r\n class=\"form-control form-control-sm\"\r\n [attr.placeholder]=\"placeholder\"\r\n [value]=\"value\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.maxlength]=\"maxlength\"\r\n autocomplete=\"new-password\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n />\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1582
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1907
+ ], standalone: true, imports: [
1908
+ NgClass,
1909
+ NgIf,
1910
+ AsyncPipe,
1911
+ SacToControlWidthCssPipe,
1912
+ SacToLabelWidthCssPipe,
1913
+ SacToLabelHeightPipe,
1914
+ SacToControlHeightPipe,
1915
+ SacTooltipComponent, SacTestingAttributePipe
1916
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n [class.input-group]=\"passwordeye\"\n [class.has-validation]=\"passwordeye && isinlineerrorenabled && invalid && (dirty || touched)\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n [type]=\"passwordeyevisible ? 'text' : 'password'\"\n class=\"form-control\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"value\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.maxlength]=\"maxtextlength\"\n autocomplete=\"new-password\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\" />\n <a\n *ngIf=\"passwordeye\"\n class=\"btn btn-outline-secondary\"\n (click)=\"onTogglePasswordEye()\"\n ><span [ngClass]=\"passwordeyevisible ? PasswordEyeVisibleIcon : PasswordEyeHiddenIcon\"></span>\n </a>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1917
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1583
1918
  type: Host
1584
1919
  }, {
1585
1920
  type: Optional
@@ -1589,15 +1924,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1589
1924
  * Input Box für Suche
1590
1925
  */
1591
1926
  class SacInputSearchComponent extends SacInputSearchCommon {
1927
+ // #region Constructors
1592
1928
  /**
1593
- * Konstruktor
1594
- * @param parent Formular
1595
- * @param injector Angular Dependency Injection Service
1929
+ * Constructor
1930
+ * @param formLayout SacFormLayout to define scoped layout settings
1931
+ * @param injector Injector for injecting services
1596
1932
  */
1597
- constructor(parent, injector) {
1598
- super(parent, injector);
1933
+ constructor(formLayout, injector) {
1934
+ super(formLayout, injector);
1599
1935
  }
1600
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputSearchComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1936
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputSearchComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1601
1937
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacInputSearchComponent, isStandalone: true, selector: "sac-inputsearch", providers: [
1602
1938
  {
1603
1939
  provide: NG_VALUE_ACCESSOR,
@@ -1609,7 +1945,7 @@ class SacInputSearchComponent extends SacInputSearchCommon {
1609
1945
  multi: true,
1610
1946
  useExisting: forwardRef(() => SacInputSearchComponent),
1611
1947
  },
1612
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\"\r\n [class.required]=\"isrequired\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div class=\"input-group input-group-sm\">\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [value]=\"value\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'language-specific': islanguagespecific,'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n />\r\n <input\r\n type=\"submit\"\r\n class=\"btn btn-secondary\"\r\n id=\"{{name}}_search\"\r\n (click)=\"searchClick()\"\r\n [value]=\"buttontext\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1948
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n id=\"{{ name }}_label\"\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"search\"\n class=\"form-control\"\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\" />\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n id=\"{{ name }}_search\"\n (click)=\"searchClick()\">\n <i\n *ngIf=\"buttonmode === 'icon' || buttonmode === 'mixed'\"\n [class]=\"iconname\"\n [class.me-2]=\"buttonmode === 'mixed'\"></i>\n <ng-container *ngIf=\"buttonmode === 'text' || buttonmode === 'mixed'\">{{ buttontext }}</ng-container>\n </button>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
1613
1949
  }
1614
1950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacInputSearchComponent, decorators: [{
1615
1951
  type: Component,
@@ -1624,8 +1960,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1624
1960
  multi: true,
1625
1961
  useExisting: forwardRef(() => SacInputSearchComponent),
1626
1962
  },
1627
- ], standalone: true, imports: [NgIf, NgClass], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\"\r\n [class.required]=\"isrequired\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div class=\"input-group input-group-sm\">\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [value]=\"value\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"setValue($event.target.value)\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'language-specific': islanguagespecific,'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n [readonly]=\"readonly\"\r\n />\r\n <input\r\n type=\"submit\"\r\n class=\"btn btn-secondary\"\r\n id=\"{{name}}_search\"\r\n (click)=\"searchClick()\"\r\n [value]=\"buttontext\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1628
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
1963
+ ], standalone: true, imports: [
1964
+ NgClass,
1965
+ NgIf,
1966
+ SacToControlWidthCssPipe,
1967
+ SacToLabelWidthCssPipe,
1968
+ SacToLabelHeightPipe,
1969
+ SacToControlHeightPipe,
1970
+ SacTooltipComponent,
1971
+ SacTestingAttributePipe,
1972
+ ], template: "<div\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n id=\"{{ name }}_label\"\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n inputmode=\"search\"\n class=\"form-control\"\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n (input)=\"setValue($event.target.value)\"\n (keypress)=\"onKeyPress($event)\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"\n [readonly]=\"readonly\" />\n <button\n type=\"button\"\n class=\"btn btn-secondary\"\n id=\"{{ name }}_search\"\n (click)=\"searchClick()\">\n <i\n *ngIf=\"buttonmode === 'icon' || buttonmode === 'mixed'\"\n [class]=\"iconname\"\n [class.me-2]=\"buttonmode === 'mixed'\"></i>\n <ng-container *ngIf=\"buttonmode === 'text' || buttonmode === 'mixed'\">{{ buttontext }}</ng-container>\n </button>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
1973
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1629
1974
  type: Host
1630
1975
  }, {
1631
1976
  type: Optional
@@ -1648,196 +1993,243 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1648
1993
  }]
1649
1994
  }] });
1650
1995
 
1996
+ class SACBootstrap5LayoutModule {
1997
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1998
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5LayoutModule, imports: [CommonModule,
1999
+ SacFormLayoutDirective,
2000
+ SacToControlHeightPipe,
2001
+ SacToControlWidthCssPipe,
2002
+ SacToLabelHeightPipe,
2003
+ SacToLabelWidthCssPipe], exports: [SacFormLayoutDirective,
2004
+ SacToControlHeightPipe,
2005
+ SacToControlWidthCssPipe,
2006
+ SacToLabelHeightPipe,
2007
+ SacToLabelWidthCssPipe] }); }
2008
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5LayoutModule, imports: [CommonModule] }); }
2009
+ }
2010
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5LayoutModule, decorators: [{
2011
+ type: NgModule,
2012
+ args: [{
2013
+ imports: [
2014
+ CommonModule,
2015
+ SacFormLayoutDirective,
2016
+ SacToControlHeightPipe,
2017
+ SacToControlWidthCssPipe,
2018
+ SacToLabelHeightPipe,
2019
+ SacToLabelWidthCssPipe,
2020
+ ],
2021
+ exports: [
2022
+ SacFormLayoutDirective,
2023
+ SacToControlHeightPipe,
2024
+ SacToControlWidthCssPipe,
2025
+ SacToLabelHeightPipe,
2026
+ SacToLabelWidthCssPipe,
2027
+ ],
2028
+ }]
2029
+ }] });
2030
+
2031
+ // #region Exported Classes
1651
2032
  /**
1652
- * Listbox Komponente
2033
+ * Direktive für Dropdown Option List
1653
2034
  */
1654
- class SacListboxComponent extends SacListboxCommon {
2035
+ class SacDropdownOptionDirective extends SacDropdownOptionCommon {
2036
+ // #region Constructors
1655
2037
  /**
1656
2038
  * Konstruktor
1657
- * @param parent Formular
1658
- * @param injector Angular Dependiency Injection Service
2039
+ * @param elementRef Referenz auf HTML DOM Element
2040
+ * @param renderer Angular Rendering Engine
2041
+ * @param dropdownList Referenz auf DropDown Komponente
1659
2042
  */
1660
- constructor(parent, injector) {
1661
- super(parent, injector);
2043
+ constructor(elementRef, renderer, dropdownList) {
2044
+ super(elementRef, renderer, dropdownList);
1662
2045
  }
1663
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacListboxComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1664
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacListboxComponent, isStandalone: true, selector: "sac-listbox", providers: [
2046
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownOptionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SacDropdownComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
2047
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacDropdownOptionDirective, isStandalone: true, selector: "[sacOption],option", usesInheritance: true, ngImport: i0 }); }
2048
+ }
2049
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownOptionDirective, decorators: [{
2050
+ type: Directive,
2051
+ args: [{ selector: '[sacOption],option', standalone: true }]
2052
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SacDropdownComponent, decorators: [{
2053
+ type: Optional
2054
+ }, {
2055
+ type: Host
2056
+ }] }]; } });
2057
+ /**
2058
+ * Dropdown Komponente
2059
+ */
2060
+ class SacDropdownComponent extends SacDropdownCommon {
2061
+ // #region Constructors
2062
+ /**
2063
+ * Constructor
2064
+ * @param formLayout SacFormLayout to define scoped layout settings
2065
+ * @param injector Injector for injecting services
2066
+ * @param renderer Angular rendering engine
2067
+ * @param elementRef Reference to html dom element
2068
+ */
2069
+ constructor(formLayout, injector, renderer, elementRef) {
2070
+ super(formLayout, injector, renderer, elementRef);
2071
+ }
2072
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
2073
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDropdownComponent, isStandalone: true, selector: "sac-dropdown", providers: [
1665
2074
  {
1666
2075
  provide: NG_VALUE_ACCESSOR,
1667
2076
  multi: true,
1668
- useExisting: SacListboxComponent,
2077
+ useExisting: SacDropdownComponent,
1669
2078
  },
1670
2079
  {
1671
2080
  provide: NG_VALIDATORS,
1672
2081
  multi: true,
1673
- useExisting: forwardRef(() => SacListboxComponent),
2082
+ useExisting: forwardRef(() => SacDropdownComponent),
1674
2083
  },
1675
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <select\r\n multiple\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n class=\"form-select form-select-sm\"\r\n [size]=\"rowsize\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (change)=\"getSelectedItems($event.target)\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"groupitems === ''\">\r\n <option\r\n *ngFor=\"let option of options\"\r\n [value]=\"option[optionvalue]\"\r\n [disabled]=\"optionenabled !== '' && option[optionenabled] === false\"\r\n >\r\n {{option[optionlabel]}}\r\n </option>\r\n </ng-container>\r\n <ng-container *ngIf=\"groupitems !== ''\">\r\n <optgroup\r\n *ngFor=\"let option of options\"\r\n [attr.label]=\"option[grouplabel]\"\r\n >\r\n <option\r\n *ngFor=\"let item of option[groupitems]\"\r\n [value]=\"item[optionvalue]\"\r\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\r\n >\r\n {{item[optionlabel]}}\r\n </option>\r\n </optgroup>\r\n </ng-container>\r\n </select>\r\n <div\r\n class=\"invalid-feedback\"\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }, { kind: "directive", type: i0.forwardRef(function () { return SacListboxOptionDirective; }), selector: "[sacOption],option" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
2084
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <select\n #dropdownitem\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n class=\"form-select\"\n [class.form-select-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-select-lg]=\"componentHeight === ControlHeight.Large\"\n [ngClass]=\"{ 'is-invalid': invalid && (dirty || touched) }\"\n (blur)=\"onTouch()\"\n (change)=\"setValue(dropdownitem.value)\"\n [disabled]=\"isdisabled\">\n <option\n *ngIf=\"emptylabel !== ''\"\n [ngValue]=\"emptyvalue\"\n >{{ emptylabel }}</option\n >\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"groupitems === ''\">\n <option\n *ngFor=\"let item of options\"\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\">\n <ng-template *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate; context: { label: item[optionlabel], item: item }\"> </ng-template>\n </option>\n </ng-container>\n\n <ng-container *ngIf=\"groupitems !== ''\">\n <optgroup\n *ngFor=\"let group of options\"\n [attr.label]=\"group[grouplabel]\">\n <option\n *ngFor=\"let item of group[groupitems]\"\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\">\n <ng-template *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate; context: { label: item[optionlabel], item: item }\"> </ng-template>\n </option>\n </optgroup>\n </ng-container>\n </select>\n <div\n class=\"invalid-feedback\"\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n\n<ng-template\n #defaultItemLabelTemplate\n let-label=\"label\"\n >{{ label }}</ng-template\n>\n", dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return SacDropdownOptionDirective; }), selector: "[sacOption],option" }, { kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToControlWidthCssPipe; }), name: "toControlWidthCss" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToLabelWidthCssPipe; }), name: "toLabelWidthCss" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToLabelHeightPipe; }), name: "toLabelHeight" }, { kind: "component", type: i0.forwardRef(function () { return SacTooltipComponent; }), selector: "sac-tooltip" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToControlHeightPipe; }), name: "toControlHeight" }, { kind: "pipe", type: i0.forwardRef(function () { return SacTestingAttributePipe; }), name: "testingattribute" }] }); }
1676
2085
  }
1677
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacListboxComponent, decorators: [{
2086
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownComponent, decorators: [{
1678
2087
  type: Component,
1679
- args: [{ selector: 'sac-listbox', providers: [
2088
+ args: [{ selector: 'sac-dropdown', providers: [
1680
2089
  {
1681
2090
  provide: NG_VALUE_ACCESSOR,
1682
2091
  multi: true,
1683
- useExisting: SacListboxComponent,
2092
+ useExisting: SacDropdownComponent,
1684
2093
  },
1685
2094
  {
1686
2095
  provide: NG_VALIDATORS,
1687
2096
  multi: true,
1688
- useExisting: forwardRef(() => SacListboxComponent),
2097
+ useExisting: forwardRef(() => SacDropdownComponent),
1689
2098
  },
1690
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [
2099
+ ], standalone: true, imports: [
1691
2100
  NgClass,
1692
2101
  NgIf,
2102
+ forwardRef(() => SacDropdownOptionDirective),
1693
2103
  NgFor,
2104
+ NgTemplateOutlet,
1694
2105
  AsyncPipe,
1695
- forwardRef(() => SacListboxOptionDirective),
1696
- ], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <select\r\n multiple\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n class=\"form-select form-select-sm\"\r\n [size]=\"rowsize\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (change)=\"getSelectedItems($event.target)\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"groupitems === ''\">\r\n <option\r\n *ngFor=\"let option of options\"\r\n [value]=\"option[optionvalue]\"\r\n [disabled]=\"optionenabled !== '' && option[optionenabled] === false\"\r\n >\r\n {{option[optionlabel]}}\r\n </option>\r\n </ng-container>\r\n <ng-container *ngIf=\"groupitems !== ''\">\r\n <optgroup\r\n *ngFor=\"let option of options\"\r\n [attr.label]=\"option[grouplabel]\"\r\n >\r\n <option\r\n *ngFor=\"let item of option[groupitems]\"\r\n [value]=\"item[optionvalue]\"\r\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\r\n >\r\n {{item[optionlabel]}}\r\n </option>\r\n </optgroup>\r\n </ng-container>\r\n </select>\r\n <div\r\n class=\"invalid-feedback\"\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n" }]
1697
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2106
+ SacToControlWidthCssPipe,
2107
+ SacToLabelWidthCssPipe,
2108
+ SacToLabelHeightPipe,
2109
+ SacTooltipComponent,
2110
+ SacToControlHeightPipe,
2111
+ SacTestingAttributePipe,
2112
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <select\n #dropdownitem\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n class=\"form-select\"\n [class.form-select-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-select-lg]=\"componentHeight === ControlHeight.Large\"\n [ngClass]=\"{ 'is-invalid': invalid && (dirty || touched) }\"\n (blur)=\"onTouch()\"\n (change)=\"setValue(dropdownitem.value)\"\n [disabled]=\"isdisabled\">\n <option\n *ngIf=\"emptylabel !== ''\"\n [ngValue]=\"emptyvalue\"\n >{{ emptylabel }}</option\n >\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"groupitems === ''\">\n <option\n *ngFor=\"let item of options\"\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\">\n <ng-template *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate; context: { label: item[optionlabel], item: item }\"> </ng-template>\n </option>\n </ng-container>\n\n <ng-container *ngIf=\"groupitems !== ''\">\n <optgroup\n *ngFor=\"let group of options\"\n [attr.label]=\"group[grouplabel]\">\n <option\n *ngFor=\"let item of group[groupitems]\"\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\">\n <ng-template *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate; context: { label: item[optionlabel], item: item }\"> </ng-template>\n </option>\n </optgroup>\n </ng-container>\n </select>\n <div\n class=\"invalid-feedback\"\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n\n<ng-template\n #defaultItemLabelTemplate\n let-label=\"label\"\n >{{ label }}</ng-template\n>\n" }]
2113
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1698
2114
  type: Host
1699
2115
  }, {
1700
2116
  type: Optional
1701
- }] }, { type: i0.Injector }]; } });
2117
+ }] }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
2118
+
2119
+ class SACBootstrap5DropdownModule {
2120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2121
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, imports: [CommonModule, SacDropdownComponent,
2122
+ SacDropdownOptionDirective], exports: [SacDropdownComponent,
2123
+ SacDropdownOptionDirective] }); }
2124
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, imports: [CommonModule] }); }
2125
+ }
2126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, decorators: [{
2127
+ type: NgModule,
2128
+ args: [{
2129
+ imports: [CommonModule, SacDropdownComponent,
2130
+ SacDropdownOptionDirective],
2131
+ exports: [
2132
+ SacDropdownComponent,
2133
+ SacDropdownOptionDirective,
2134
+ ],
2135
+ }]
2136
+ }] });
2137
+
2138
+ // #region Exported Classes
1702
2139
  /**
1703
2140
  * Option Item in Listbox
1704
2141
  */
1705
2142
  class SacListboxOptionDirective extends SacListboxOptionCommon {
2143
+ // #region Constructors
1706
2144
  /**
1707
2145
  * Konstruktor
1708
- * @param _elementRef Referenz auf DOM Element
1709
- * @param _renderer Angular Rendering Engine
2146
+ * @param elementRef Referenz auf DOM Element
2147
+ * @param renderer Angular Rendering Engine
1710
2148
  * @param listbox Referenz auf Listbox Komponente
1711
2149
  */
1712
- constructor(_elementRef, _renderer, listbox) {
1713
- super(_elementRef, _renderer, listbox);
2150
+ constructor(elementRef, renderer, listbox) {
2151
+ super(elementRef, renderer, listbox);
1714
2152
  }
1715
2153
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacListboxOptionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SacListboxComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1716
2154
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacListboxOptionDirective, isStandalone: true, selector: "[sacOption],option", usesInheritance: true, ngImport: i0 }); }
1717
2155
  }
1718
2156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacListboxOptionDirective, decorators: [{
1719
2157
  type: Directive,
1720
- args: [{
1721
- selector: '[sacOption],option',
1722
- standalone: true,
1723
- }]
2158
+ args: [{ selector: '[sacOption],option', standalone: true }]
1724
2159
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SacListboxComponent, decorators: [{
1725
2160
  type: Optional
1726
2161
  }, {
1727
2162
  type: Host
1728
2163
  }] }]; } });
1729
-
1730
- class SACBootstrap5ListModule {
1731
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1732
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, imports: [CommonModule, SacListboxComponent, SacListboxOptionDirective], exports: [SacListboxComponent, SacListboxOptionDirective] }); }
1733
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, imports: [CommonModule] }); }
1734
- }
1735
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, decorators: [{
1736
- type: NgModule,
1737
- args: [{
1738
- imports: [CommonModule, SacListboxComponent, SacListboxOptionDirective],
1739
- exports: [SacListboxComponent, SacListboxOptionDirective],
1740
- }]
1741
- }] });
1742
-
1743
2164
  /**
1744
- * Dropdown Komponente
2165
+ * Listbox Komponente
1745
2166
  */
1746
- class SacDropdownComponent extends SacDropdownCommon {
2167
+ class SacListboxComponent extends SacListboxCommon {
2168
+ // #region Constructors
1747
2169
  /**
1748
- * Konstruktor
1749
- * @param parent Formular
1750
- * @param injector Dependency Injection Service
1751
- * @param _renderer Angular Rendering Engine
1752
- * @param _elementRef Referenz auf HTML DOM Element
2170
+ * Constructor
2171
+ * @param formLayout SacFormLayout to define scoped layout settings
2172
+ * @param injector Injector for injecting services
1753
2173
  */
1754
- constructor(parent, injector, _renderer, _elementRef) {
1755
- super(parent, injector, _renderer, _elementRef);
2174
+ constructor(formLayout, injector) {
2175
+ super(formLayout, injector);
1756
2176
  }
1757
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1758
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDropdownComponent, isStandalone: true, selector: "sac-dropdown", providers: [
2177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacListboxComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2178
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacListboxComponent, isStandalone: true, selector: "sac-listbox", providers: [
1759
2179
  {
1760
2180
  provide: NG_VALUE_ACCESSOR,
1761
2181
  multi: true,
1762
- useExisting: SacDropdownComponent,
2182
+ useExisting: SacListboxComponent,
1763
2183
  },
1764
2184
  {
1765
2185
  provide: NG_VALIDATORS,
1766
2186
  multi: true,
1767
- useExisting: forwardRef(() => SacDropdownComponent),
2187
+ useExisting: forwardRef(() => SacListboxComponent),
1768
2188
  },
1769
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <select\r\n #dropdownitem\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n class=\"form-select form-select-sm\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (change)=\"setValue(dropdownitem.value)\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <option *ngIf=\"emptylabel !== ''\" [ngValue]=\"emptyvalue\">\r\n {{emptylabel}}\r\n </option>\r\n\r\n <ng-content></ng-content>\r\n\r\n <ng-container *ngIf=\"groupitems === ''\">\r\n <option\r\n *ngFor=\"let item of options\"\r\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\r\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\r\n >\r\n <ng-template\r\n *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate;context:{ label: item[optionlabel], item: item }\"\r\n >\r\n </ng-template>\r\n </option>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"groupitems !== ''\">\r\n <optgroup\r\n *ngFor=\"let group of options\"\r\n [attr.label]=\"group[grouplabel]\"\r\n >\r\n <option\r\n *ngFor=\"let item of group[groupitems]\"\r\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\r\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\r\n >\r\n <ng-template\r\n *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate;context:{ label: item[optionlabel], item: item }\"\r\n >\r\n </ng-template>\r\n </option>\r\n </optgroup>\r\n </ng-container>\r\n </select>\r\n <div\r\n class=\"invalid-feedback\"\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultItemLabelTemplate let-label=\"label\">\r\n {{label}}\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return SacDropdownOptionDirective; }), selector: "[sacOption],option" }, { kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }] }); }
2189
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\"\n ><span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <select\n multiple\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n class=\"form-select\"\n [class.form-select-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-select-lg]=\"componentHeight === ControlHeight.Large\"\n [size]=\"rowsize\"\n [ngClass]=\"{ 'is-invalid': invalid && (dirty || touched) }\"\n (blur)=\"onTouch()\"\n (change)=\"getSelectedItems($event.target)\"\n [disabled]=\"isdisabled\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"groupitems === ''\">\n <option\n *ngFor=\"let option of options\"\n [value]=\"option[optionvalue]\"\n [disabled]=\"optionenabled !== '' && option[optionenabled] === false\"\n >{{ option[optionlabel] }}</option\n >\n </ng-container>\n <ng-container *ngIf=\"groupitems !== ''\">\n <optgroup\n *ngFor=\"let option of options\"\n [attr.label]=\"option[grouplabel]\">\n <option\n *ngFor=\"let item of option[groupitems]\"\n [value]=\"item[optionvalue]\"\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\n >{{ item[optionlabel] }}</option\n >\n </optgroup>\n </ng-container>\n </select>\n <div\n class=\"invalid-feedback\"\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }, { kind: "directive", type: i0.forwardRef(function () { return SacListboxOptionDirective; }), selector: "[sacOption],option" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToControlWidthCssPipe; }), name: "toControlWidthCss" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToLabelWidthCssPipe; }), name: "toLabelWidthCss" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToLabelHeightPipe; }), name: "toLabelHeight" }, { kind: "component", type: i0.forwardRef(function () { return SacTooltipComponent; }), selector: "sac-tooltip" }, { kind: "pipe", type: i0.forwardRef(function () { return SacToControlHeightPipe; }), name: "toControlHeight" }, { kind: "pipe", type: i0.forwardRef(function () { return SacTestingAttributePipe; }), name: "testingattribute" }] }); }
1770
2190
  }
1771
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownComponent, decorators: [{
2191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacListboxComponent, decorators: [{
1772
2192
  type: Component,
1773
- args: [{ selector: 'sac-dropdown', providers: [
2193
+ args: [{ selector: 'sac-listbox', providers: [
1774
2194
  {
1775
2195
  provide: NG_VALUE_ACCESSOR,
1776
2196
  multi: true,
1777
- useExisting: SacDropdownComponent,
2197
+ useExisting: SacListboxComponent,
1778
2198
  },
1779
2199
  {
1780
2200
  provide: NG_VALIDATORS,
1781
2201
  multi: true,
1782
- useExisting: forwardRef(() => SacDropdownComponent),
2202
+ useExisting: forwardRef(() => SacListboxComponent),
1783
2203
  },
1784
2204
  ], standalone: true, imports: [
1785
2205
  NgClass,
1786
2206
  NgIf,
1787
- forwardRef(() => SacDropdownOptionDirective),
1788
2207
  NgFor,
1789
- NgTemplateOutlet,
1790
2208
  AsyncPipe,
1791
- ], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <select\r\n #dropdownitem\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n class=\"form-select form-select-sm\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n (blur)=\"onTouch()\"\r\n (change)=\"setValue(dropdownitem.value)\"\r\n [disabled]=\"isdisabled\"\r\n >\r\n <option *ngIf=\"emptylabel !== ''\" [ngValue]=\"emptyvalue\">\r\n {{emptylabel}}\r\n </option>\r\n\r\n <ng-content></ng-content>\r\n\r\n <ng-container *ngIf=\"groupitems === ''\">\r\n <option\r\n *ngFor=\"let item of options\"\r\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\r\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\r\n >\r\n <ng-template\r\n *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate;context:{ label: item[optionlabel], item: item }\"\r\n >\r\n </ng-template>\r\n </option>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"groupitems !== ''\">\r\n <optgroup\r\n *ngFor=\"let group of options\"\r\n [attr.label]=\"group[grouplabel]\"\r\n >\r\n <option\r\n *ngFor=\"let item of group[groupitems]\"\r\n [ngValue]=\"optionvalue ? item[optionvalue] : item\"\r\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\r\n >\r\n <ng-template\r\n *ngTemplateOutlet=\"optionlabeltemplate || defaultItemLabelTemplate;context:{ label: item[optionlabel], item: item }\"\r\n >\r\n </ng-template>\r\n </option>\r\n </optgroup>\r\n </ng-container>\r\n </select>\r\n <div\r\n class=\"invalid-feedback\"\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultItemLabelTemplate let-label=\"label\">\r\n {{label}}\r\n</ng-template>\r\n" }]
1792
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2209
+ forwardRef(() => SacListboxOptionDirective),
2210
+ SacToControlWidthCssPipe,
2211
+ SacToLabelWidthCssPipe,
2212
+ SacToLabelHeightPipe,
2213
+ SacTooltipComponent,
2214
+ SacToControlHeightPipe,
2215
+ SacTestingAttributePipe
2216
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\"\n ><span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <select\n multiple\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n class=\"form-select\"\n [class.form-select-sm]=\"componentHeight === ControlHeight.Small\"\n [class.form-select-lg]=\"componentHeight === ControlHeight.Large\"\n [size]=\"rowsize\"\n [ngClass]=\"{ 'is-invalid': invalid && (dirty || touched) }\"\n (blur)=\"onTouch()\"\n (change)=\"getSelectedItems($event.target)\"\n [disabled]=\"isdisabled\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"groupitems === ''\">\n <option\n *ngFor=\"let option of options\"\n [value]=\"option[optionvalue]\"\n [disabled]=\"optionenabled !== '' && option[optionenabled] === false\"\n >{{ option[optionlabel] }}</option\n >\n </ng-container>\n <ng-container *ngIf=\"groupitems !== ''\">\n <optgroup\n *ngFor=\"let option of options\"\n [attr.label]=\"option[grouplabel]\">\n <option\n *ngFor=\"let item of option[groupitems]\"\n [value]=\"item[optionvalue]\"\n [disabled]=\"optionenabled !== '' && item[optionenabled] === false\"\n >{{ item[optionlabel] }}</option\n >\n </optgroup>\n </ng-container>\n </select>\n <div\n class=\"invalid-feedback\"\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
2217
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
1793
2218
  type: Host
1794
2219
  }, {
1795
2220
  type: Optional
1796
- }] }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
1797
- /**
1798
- * Direktive für Dropdown Option List
1799
- */
1800
- class SacDropdownOptionDirective extends SacDropdownOptionCommon {
1801
- /**
1802
- * Konstruktor
1803
- * @param _elementRef Referenz auf HTML DOM Element
1804
- * @param _renderer Angular Rendering Engine
1805
- * @param dropdownList Referenz auf DropDown Komponente
1806
- */
1807
- constructor(_elementRef, _renderer, dropdownList) {
1808
- super(_elementRef, _renderer, dropdownList);
1809
- }
1810
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownOptionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SacDropdownComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1811
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacDropdownOptionDirective, isStandalone: true, selector: "[sacOption],option", usesInheritance: true, ngImport: i0 }); }
1812
- }
1813
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownOptionDirective, decorators: [{
1814
- type: Directive,
1815
- args: [{
1816
- selector: '[sacOption],option',
1817
- standalone: true
1818
- }]
1819
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SacDropdownComponent, decorators: [{
1820
- type: Optional
1821
- }, {
1822
- type: Host
1823
- }] }]; } });
2221
+ }] }, { type: i0.Injector }]; } });
1824
2222
 
1825
- class SACBootstrap5DropdownModule {
1826
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1827
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, imports: [CommonModule, SacDropdownComponent,
1828
- SacDropdownOptionDirective], exports: [SacDropdownComponent,
1829
- SacDropdownOptionDirective] }); }
1830
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, imports: [CommonModule] }); }
2223
+ class SACBootstrap5ListModule {
2224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2225
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, imports: [CommonModule, SacListboxComponent, SacListboxOptionDirective], exports: [SacListboxComponent, SacListboxOptionDirective] }); }
2226
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, imports: [CommonModule] }); }
1831
2227
  }
1832
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5DropdownModule, decorators: [{
2228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5ListModule, decorators: [{
1833
2229
  type: NgModule,
1834
2230
  args: [{
1835
- imports: [CommonModule, SacDropdownComponent,
1836
- SacDropdownOptionDirective],
1837
- exports: [
1838
- SacDropdownComponent,
1839
- SacDropdownOptionDirective,
1840
- ],
2231
+ imports: [CommonModule, SacListboxComponent, SacListboxOptionDirective],
2232
+ exports: [SacListboxComponent, SacListboxOptionDirective],
1841
2233
  }]
1842
2234
  }] });
1843
2235
 
@@ -1845,12 +2237,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1845
2237
  * Anker Komponente für Context Menü. Wird zum positionieren des Context Menü in der Page benötigt.
1846
2238
  */
1847
2239
  class SacMultilanguagemenuAnchorDirective extends SacContextmenuAnchorCommon {
2240
+ // #region Constructors
1848
2241
  /**
1849
2242
  * Konstruktor
1850
- * @param _elementRef HTML DOM Referenz
2243
+ * @param elementRef HTML DOM Referenz
1851
2244
  */
1852
- constructor(_elementRef) {
1853
- super(_elementRef);
2245
+ constructor(elementRef) {
2246
+ super(elementRef);
1854
2247
  }
1855
2248
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguagemenuAnchorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1856
2249
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacMultilanguagemenuAnchorDirective, isStandalone: true, selector: "[sacMultilanguageMenuAnchor]", providers: [
@@ -1878,12 +2271,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1878
2271
  * Marker Komponente für Context Menü
1879
2272
  */
1880
2273
  class SacMultilanguagemenuContainerDirective extends SacContextMenuContrainerCommon {
2274
+ // #region Constructors
1881
2275
  /**
1882
2276
  * Konstruktor
1883
- * @param _elementRef Referenz auf DOM Element
2277
+ * @param elementRef Referenz auf DOM Element
1884
2278
  */
1885
- constructor(_elementRef) {
1886
- super(_elementRef);
2279
+ constructor(elementRef) {
2280
+ super(elementRef);
1887
2281
  }
1888
2282
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguagemenuContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1889
2283
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacMultilanguagemenuContainerDirective, isStandalone: true, selector: "[sacMultilanguageMenuContainer]", providers: [
@@ -1911,16 +2305,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1911
2305
  * Component für Contextmenü
1912
2306
  */
1913
2307
  class SacMultilanguagemenuComponent extends SacContextmenuCommon {
2308
+ // #endregion Properties
2309
+ // #region Constructors
1914
2310
  /**
1915
2311
  * Constructor
1916
- * @param _document Referenz auf HTML Document
1917
- * @param _ngZone Angular Zone Service
1918
- * @param _elementRef Referenz auf HTML Element der aktuellen Komponente
1919
- * @param _renderer Render Service von Angular
1920
- * @param _injector injector to resolve services in base component
2312
+ * @param document Referenz auf HTML Document
2313
+ * @param ngZone Angular Zone Service
2314
+ * @param elementRef Referenz auf HTML Element der aktuellen Komponente
2315
+ * @param renderer Render Service von Angular
2316
+ * @param injector injector to resolve services in base component
1921
2317
  */
1922
- constructor(_document, _ngZone, _elementRef, _renderer, _injector) {
1923
- super(_document, _ngZone, _elementRef, _renderer, _injector);
2318
+ constructor(document, ngZone, elementRef, renderer, injector) {
2319
+ super(document, ngZone, elementRef, renderer, injector);
1924
2320
  }
1925
2321
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguagemenuComponent, deps: [{ token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1926
2322
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacMultilanguagemenuComponent, isStandalone: true, selector: "[sac-multilanguagemenu]", inputs: { inputtemplate: "inputtemplate", validationtemplate: "validationtemplate" }, providers: [
@@ -1928,7 +2324,7 @@ class SacMultilanguagemenuComponent extends SacContextmenuCommon {
1928
2324
  provide: SacContextmenuCommon,
1929
2325
  useExisting: forwardRef(() => SacMultilanguagemenuComponent),
1930
2326
  },
1931
- ], usesInheritance: true, ngImport: i0, template: "<ng-container\r\n [ngTemplateOutlet]=\"inputtemplate || defaultInputTemplate\"\r\n></ng-container>\r\n<ng-container\r\n [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"\r\n></ng-container>\r\n<ng-container\r\n [ngTemplateOutlet]=\"validationtemplate || defaultValidationTemplate\"\r\n></ng-container>\r\n\r\n<ul\r\n class=\"dropdown-menu dropdown-menu-right\"\r\n sacMultilanguageMenuContainer\r\n [class.show]=\"isopen\"\r\n>\r\n <ng-content></ng-content>\r\n</ul>\r\n\r\n<ng-template #defaultButtonTemplate>\r\n <button\r\n sacMultilanguageMenuAnchor\r\n class=\"btn btn-secondary dropdown-toggle\"\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n ></button>\r\n</ng-template>\r\n\r\n<ng-template #defaultInputTemplate>\r\n <input type=\"text\" class=\"form-control form-control-sm\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultValidationTemplate></ng-template>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SacMultilanguagemenuContainerDirective, selector: "[sacMultilanguageMenuContainer]" }, { kind: "directive", type: SacMultilanguagemenuAnchorDirective, selector: "[sacMultilanguageMenuAnchor]" }] }); }
2327
+ ], usesInheritance: true, ngImport: i0, template: "<ng-container\n [ngTemplateOutlet]=\"inputtemplate || defaultInputTemplate\"\n></ng-container>\n<ng-container\n [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"\n></ng-container>\n<ng-container\n [ngTemplateOutlet]=\"validationtemplate || defaultValidationTemplate\"\n></ng-container>\n\n<ul\n class=\"dropdown-menu dropdown-menu-right\"\n sacMultilanguageMenuContainer\n [class.show]=\"isopen\"\n>\n <ng-content></ng-content>\n</ul>\n\n<ng-template #defaultButtonTemplate>\n <button\n sacMultilanguageMenuAnchor\n class=\"btn btn-secondary dropdown-toggle\"\n type=\"button\"\n (click)=\"toggle()\"\n ></button>\n</ng-template>\n\n<ng-template #defaultInputTemplate>\n <input type=\"text\" class=\"form-control\" />\n</ng-template>\n\n<ng-template #defaultValidationTemplate></ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SacMultilanguagemenuContainerDirective, selector: "[sacMultilanguageMenuContainer]" }, { kind: "directive", type: SacMultilanguagemenuAnchorDirective, selector: "[sacMultilanguageMenuAnchor]" }] }); }
1932
2328
  }
1933
2329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguagemenuComponent, decorators: [{
1934
2330
  type: Component,
@@ -1941,7 +2337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1941
2337
  NgTemplateOutlet,
1942
2338
  SacMultilanguagemenuContainerDirective,
1943
2339
  SacMultilanguagemenuAnchorDirective,
1944
- ], template: "<ng-container\r\n [ngTemplateOutlet]=\"inputtemplate || defaultInputTemplate\"\r\n></ng-container>\r\n<ng-container\r\n [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"\r\n></ng-container>\r\n<ng-container\r\n [ngTemplateOutlet]=\"validationtemplate || defaultValidationTemplate\"\r\n></ng-container>\r\n\r\n<ul\r\n class=\"dropdown-menu dropdown-menu-right\"\r\n sacMultilanguageMenuContainer\r\n [class.show]=\"isopen\"\r\n>\r\n <ng-content></ng-content>\r\n</ul>\r\n\r\n<ng-template #defaultButtonTemplate>\r\n <button\r\n sacMultilanguageMenuAnchor\r\n class=\"btn btn-secondary dropdown-toggle\"\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n ></button>\r\n</ng-template>\r\n\r\n<ng-template #defaultInputTemplate>\r\n <input type=\"text\" class=\"form-control form-control-sm\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultValidationTemplate></ng-template>\r\n" }]
2340
+ ], template: "<ng-container\n [ngTemplateOutlet]=\"inputtemplate || defaultInputTemplate\"\n></ng-container>\n<ng-container\n [ngTemplateOutlet]=\"buttontemplate || defaultButtonTemplate\"\n></ng-container>\n<ng-container\n [ngTemplateOutlet]=\"validationtemplate || defaultValidationTemplate\"\n></ng-container>\n\n<ul\n class=\"dropdown-menu dropdown-menu-right\"\n sacMultilanguageMenuContainer\n [class.show]=\"isopen\"\n>\n <ng-content></ng-content>\n</ul>\n\n<ng-template #defaultButtonTemplate>\n <button\n sacMultilanguageMenuAnchor\n class=\"btn btn-secondary dropdown-toggle\"\n type=\"button\"\n (click)=\"toggle()\"\n ></button>\n</ng-template>\n\n<ng-template #defaultInputTemplate>\n <input type=\"text\" class=\"form-control\" />\n</ng-template>\n\n<ng-template #defaultValidationTemplate></ng-template>\n" }]
1945
2341
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1946
2342
  type: Inject,
1947
2343
  args: [DOCUMENT]
@@ -1952,41 +2348,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1952
2348
  }] } });
1953
2349
 
1954
2350
  /**
1955
- * Component für Menü Eintrag in Context Menü
2351
+ * Component for menu entry in context menu
1956
2352
  */
1957
2353
  class SacMultilanguagemenuItemButtonComponent extends SacContextmenuItemButtonCommon {
2354
+ // #region Constructors
1958
2355
  /**
1959
2356
  * Constructor
1960
- * @param contextmenu Instance von Context Menü
1961
2357
  */
1962
- constructor(contextmenu) {
1963
- super(contextmenu);
2358
+ constructor() {
2359
+ super();
1964
2360
  }
1965
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguagemenuItemButtonComponent, deps: [{ token: i1.SacContextmenuCommon }], target: i0.ɵɵFactoryTarget.Component }); }
1966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacMultilanguagemenuItemButtonComponent, isStandalone: true, selector: "sac-multilanguagemenubutton", usesInheritance: true, ngImport: i0, template: "<li>\r\n <button\r\n type=\"button\"\r\n class=\"dropdown-item\"\r\n (click)=\"callaction($event)\"\r\n [class.disabled]=\"isdisabled\"\r\n [class]=\"cssclass\"\r\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\r\n >\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"!isicondisabled\" style=\"min-width: 1.5rem\">\r\n <img *ngIf=\"image\" [src]=\"image\" class=\"align-baseline\" />\r\n <i *ngIf=\"icon\" [class]=\"iconstyle + ' ' + icon\"></i>\r\n </div>\r\n <div class=\"flex-grow-1\">{{ text }}</div>\r\n </div>\r\n </button>\r\n</li>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
2361
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguagemenuItemButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2362
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacMultilanguagemenuItemButtonComponent, isStandalone: true, selector: "sac-multilanguagemenubutton", providers: [
2363
+ {
2364
+ provide: SacContextmenuItemCommon,
2365
+ useExisting: forwardRef(() => SacMultilanguagemenuItemButtonComponent),
2366
+ },
2367
+ ], usesInheritance: true, ngImport: i0, template: "<li>\n <button\n type=\"button\"\n class=\"dropdown-item\"\n (click)=\"callaction($event)\"\n [class.disabled]=\"isdisabled\"\n [class]=\"cssclass\"\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\n >\n <div class=\"d-flex\">\n <div *ngIf=\"!isicondisabled\" style=\"min-width: 1.5rem\">\n <img *ngIf=\"image\" [src]=\"image\" class=\"align-baseline\" />\n <i *ngIf=\"icon\" [class]=\"iconstyle + ' ' + icon\"></i>\n </div>\n <div class=\"flex-grow-1\">{{ text }}</div>\n </div>\n </button>\n</li>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1967
2368
  }
1968
2369
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguagemenuItemButtonComponent, decorators: [{
1969
2370
  type: Component,
1970
- args: [{ selector: 'sac-multilanguagemenubutton', standalone: true, imports: [NgIf], template: "<li>\r\n <button\r\n type=\"button\"\r\n class=\"dropdown-item\"\r\n (click)=\"callaction($event)\"\r\n [class.disabled]=\"isdisabled\"\r\n [class]=\"cssclass\"\r\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\r\n >\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"!isicondisabled\" style=\"min-width: 1.5rem\">\r\n <img *ngIf=\"image\" [src]=\"image\" class=\"align-baseline\" />\r\n <i *ngIf=\"icon\" [class]=\"iconstyle + ' ' + icon\"></i>\r\n </div>\r\n <div class=\"flex-grow-1\">{{ text }}</div>\r\n </div>\r\n </button>\r\n</li>\r\n" }]
1971
- }], ctorParameters: function () { return [{ type: i1.SacContextmenuCommon }]; } });
2371
+ args: [{ selector: 'sac-multilanguagemenubutton', providers: [
2372
+ {
2373
+ provide: SacContextmenuItemCommon,
2374
+ useExisting: forwardRef(() => SacMultilanguagemenuItemButtonComponent),
2375
+ },
2376
+ ], standalone: true, imports: [NgIf], template: "<li>\n <button\n type=\"button\"\n class=\"dropdown-item\"\n (click)=\"callaction($event)\"\n [class.disabled]=\"isdisabled\"\n [class]=\"cssclass\"\n [attr.disabled]=\"isdisabled ? 'disabled' : null\"\n >\n <div class=\"d-flex\">\n <div *ngIf=\"!isicondisabled\" style=\"min-width: 1.5rem\">\n <img *ngIf=\"image\" [src]=\"image\" class=\"align-baseline\" />\n <i *ngIf=\"icon\" [class]=\"iconstyle + ' ' + icon\"></i>\n </div>\n <div class=\"flex-grow-1\">{{ text }}</div>\n </div>\n </button>\n</li>\n" }]
2377
+ }], ctorParameters: function () { return []; } });
1972
2378
 
1973
2379
  /**
1974
2380
  * Componente für Mehrsprache Texte
1975
2381
  */
1976
2382
  class SacMultilanguageInputComponent extends SacMultilanguageInputCommon {
2383
+ // #endregion Properties
2384
+ // #region Constructors
1977
2385
  /**
1978
- * Konstruktor
1979
- * @param parent Formular Inject
1980
- * @param injector Default Injector
2386
+ * Constructor
2387
+ * @param formLayout SacFormLayout to define scoped layout settings
2388
+ * @param injector Injector for injecting services
1981
2389
  */
1982
- constructor(parent, injector) {
1983
- super(parent, injector);
2390
+ constructor(formLayout, injector) {
2391
+ super(formLayout, injector);
2392
+ // #region Properties
1984
2393
  /**
1985
2394
  * Enum für IconType in HTML Template
1986
2395
  */
1987
2396
  this.IconType = IconType;
1988
2397
  }
1989
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguageInputComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2398
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguageInputComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
1990
2399
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacMultilanguageInputComponent, isStandalone: true, selector: "sac-multilanguageinput", providers: [
1991
2400
  {
1992
2401
  provide: NG_VALUE_ACCESSOR,
@@ -1998,7 +2407,7 @@ class SacMultilanguageInputComponent extends SacMultilanguageInputCommon {
1998
2407
  multi: true,
1999
2408
  useExisting: forwardRef(() => SacMultilanguageInputComponent),
2000
2409
  },
2001
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n placement=\"bottom-right\"\r\n sac-multilanguagemenu\r\n [buttontemplate]=\"menuButton\"\r\n [inputtemplate]=\"menuInput\"\r\n [validationtemplate]=\"validationMessage\"\r\n #contextmenu\r\n >\r\n <ng-template #menuInput>\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"LanguageValue\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"SetLanguageValue($event.target.value)\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #menuButton>\r\n <button\r\n sacMultilanguageMenuAnchor\r\n [id]=\"name + '_dropdownitem'\"\r\n type=\"button\"\r\n class=\"btn dropdown-toggle\"\r\n (click)=\"contextmenu.toggle()\"\r\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\"\r\n >\r\n <img\r\n src=\"{{SelectedIcon}}\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.Image\"\r\n />\r\n <span\r\n [ngClass]=\"SelectedIcon\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.CssSprite\"\r\n ></span>\r\n </button>\r\n </ng-template>\r\n\r\n <ng-template #validationMessage>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div></ng-template\r\n >\r\n\r\n <ng-container *ngFor=\"let sprache of Languages\">\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.Image\"\r\n text=\"{{sprache.Text}}\"\r\n image=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\r\n text=\"{{sprache.Text}}\"\r\n icon=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"col text-right\"></div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SacMultilanguagemenuComponent, selector: "[sac-multilanguagemenu]", inputs: ["inputtemplate", "validationtemplate"] }, { kind: "directive", type: SacMultilanguagemenuAnchorDirective, selector: "[sacMultilanguageMenuAnchor]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacMultilanguagemenuItemButtonComponent, selector: "sac-multilanguagemenubutton" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
2410
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n placement=\"bottom-right\"\n sac-multilanguagemenu\n [buttontemplate]=\"menuButton\"\n [inputtemplate]=\"menuInput\"\n [validationtemplate]=\"validationMessage\"\n #contextmenu>\n <ng-template #menuInput>\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"LanguageValue\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n (input)=\"SetLanguageValue($event.target.value)\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\" />\n </ng-template>\n\n <ng-template #menuButton>\n <button\n sacMultilanguageMenuAnchor\n [id]=\"name + '_dropdownitem'\"\n type=\"button\"\n class=\"btn dropdown-toggle\"\n (click)=\"contextmenu.toggle()\"\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\">\n <img\n src=\"{{ SelectedIcon }}\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.Image\" />\n <span\n [ngClass]=\"SelectedIcon\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.CssSprite\"></span>\n </button>\n </ng-template>\n\n <ng-template #validationMessage>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div></ng-template\n >\n\n <ng-container *ngFor=\"let sprache of Languages\">\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.Image\"\n text=\"{{ sprache.Text }}\"\n image=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\n text=\"{{ sprache.Text }}\"\n icon=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n </ng-container>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col text-right\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SacMultilanguagemenuComponent, selector: "[sac-multilanguagemenu]", inputs: ["inputtemplate", "validationtemplate"] }, { kind: "directive", type: SacMultilanguagemenuAnchorDirective, selector: "[sacMultilanguageMenuAnchor]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacMultilanguagemenuItemButtonComponent, selector: "sac-multilanguagemenubutton" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2002
2411
  }
2003
2412
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguageInputComponent, decorators: [{
2004
2413
  type: Component,
@@ -2013,7 +2422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2013
2422
  multi: true,
2014
2423
  useExisting: forwardRef(() => SacMultilanguageInputComponent),
2015
2424
  },
2016
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [
2425
+ ], standalone: true, imports: [
2017
2426
  NgClass,
2018
2427
  SacMultilanguagemenuComponent,
2019
2428
  SacMultilanguagemenuAnchorDirective,
@@ -2021,8 +2430,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2021
2430
  NgFor,
2022
2431
  AsyncPipe,
2023
2432
  SacMultilanguagemenuItemButtonComponent,
2024
- ], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n placement=\"bottom-right\"\r\n sac-multilanguagemenu\r\n [buttontemplate]=\"menuButton\"\r\n [inputtemplate]=\"menuInput\"\r\n [validationtemplate]=\"validationMessage\"\r\n #contextmenu\r\n >\r\n <ng-template #menuInput>\r\n <input\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"LanguageValue\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n (input)=\"SetLanguageValue($event.target.value)\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #menuButton>\r\n <button\r\n sacMultilanguageMenuAnchor\r\n [id]=\"name + '_dropdownitem'\"\r\n type=\"button\"\r\n class=\"btn dropdown-toggle\"\r\n (click)=\"contextmenu.toggle()\"\r\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\"\r\n >\r\n <img\r\n src=\"{{SelectedIcon}}\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.Image\"\r\n />\r\n <span\r\n [ngClass]=\"SelectedIcon\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.CssSprite\"\r\n ></span>\r\n </button>\r\n </ng-template>\r\n\r\n <ng-template #validationMessage>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div></ng-template\r\n >\r\n\r\n <ng-container *ngFor=\"let sprache of Languages\">\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.Image\"\r\n text=\"{{sprache.Text}}\"\r\n image=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\r\n text=\"{{sprache.Text}}\"\r\n icon=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"col text-right\"></div>\r\n</div>\r\n" }]
2025
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2433
+ SacToControlWidthCssPipe,
2434
+ SacToLabelWidthCssPipe,
2435
+ SacToLabelHeightPipe,
2436
+ SacToControlHeightPipe,
2437
+ SacTooltipComponent,
2438
+ SacTestingAttributePipe,
2439
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n placement=\"bottom-right\"\n sac-multilanguagemenu\n [buttontemplate]=\"menuButton\"\n [inputtemplate]=\"menuInput\"\n [validationtemplate]=\"validationMessage\"\n #contextmenu>\n <ng-template #menuInput>\n <input\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"LanguageValue\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n (input)=\"SetLanguageValue($event.target.value)\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\" />\n </ng-template>\n\n <ng-template #menuButton>\n <button\n sacMultilanguageMenuAnchor\n [id]=\"name + '_dropdownitem'\"\n type=\"button\"\n class=\"btn dropdown-toggle\"\n (click)=\"contextmenu.toggle()\"\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\">\n <img\n src=\"{{ SelectedIcon }}\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.Image\" />\n <span\n [ngClass]=\"SelectedIcon\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.CssSprite\"></span>\n </button>\n </ng-template>\n\n <ng-template #validationMessage>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div></ng-template\n >\n\n <ng-container *ngFor=\"let sprache of Languages\">\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.Image\"\n text=\"{{ sprache.Text }}\"\n image=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\n text=\"{{ sprache.Text }}\"\n icon=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n </ng-container>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col text-right\"></div>\n</div>\n" }]
2440
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2026
2441
  type: Host
2027
2442
  }, {
2028
2443
  type: Optional
@@ -2032,19 +2447,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2032
2447
  * Componente für Mehrsprache Texte als mehrzeiliger Text
2033
2448
  */
2034
2449
  class SacMultilanguageInputAreaComponent extends SacMultilanguageInputAreaCommon {
2450
+ // #endregion Properties
2451
+ // #region Constructors
2035
2452
  /**
2036
- * Konstruktor
2037
- * @param parent Formular Inject
2038
- * @param injector Default Injector
2453
+ * Constructor
2454
+ * @param formLayout SacFormLayout to define scoped layout settings
2455
+ * @param injector Injector for injecting services
2039
2456
  */
2040
- constructor(parent, injector) {
2041
- super(parent, injector);
2457
+ constructor(formLayout, injector) {
2458
+ super(formLayout, injector);
2459
+ // #region Properties
2042
2460
  /**
2043
2461
  * Enum für IconType in HTML Template
2044
2462
  */
2045
2463
  this.IconType = IconType;
2046
2464
  }
2047
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguageInputAreaComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2465
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguageInputAreaComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2048
2466
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacMultilanguageInputAreaComponent, isStandalone: true, selector: "sac-multilanguageinputarea", providers: [
2049
2467
  {
2050
2468
  provide: NG_VALUE_ACCESSOR,
@@ -2056,7 +2474,7 @@ class SacMultilanguageInputAreaComponent extends SacMultilanguageInputAreaCommon
2056
2474
  multi: true,
2057
2475
  useExisting: forwardRef(() => SacMultilanguageInputAreaComponent),
2058
2476
  },
2059
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n placement=\"bottom-right\"\r\n sac-multilanguagemenu\r\n [buttontemplate]=\"menuButton\"\r\n [inputtemplate]=\"menuInput\"\r\n [validationtemplate]=\"validationMessage\"\r\n #contextmenu\r\n >\r\n <ng-template #menuInput>\r\n <textarea\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"LanguageValue\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n style=\"height: auto\"\r\n (input)=\"SetLanguageValue($event.target.value)\"\r\n [attr.rows]=\"rows\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template #menuButton>\r\n <button\r\n sacMultilanguageMenuAnchor\r\n [id]=\"name + '_dropdownitem'\"\r\n type=\"button\"\r\n class=\"btn dropdown-toggle\"\r\n (click)=\"contextmenu.toggle()\"\r\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\"\r\n >\r\n <img\r\n src=\"{{SelectedIcon}}\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.Image\"\r\n />\r\n <i\r\n [ngClass]=\"SelectedIcon\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.CssSprite\"\r\n ></i>\r\n </button>\r\n </ng-template>\r\n\r\n <ng-template #validationMessage>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div></ng-template\r\n >\r\n\r\n <ng-container *ngFor=\"let sprache of Languages\">\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.Image\"\r\n text=\"{{sprache.Text}}\"\r\n image=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\r\n text=\"{{sprache.Text}}\"\r\n icon=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"col text-right\"></div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SacMultilanguagemenuComponent, selector: "[sac-multilanguagemenu]", inputs: ["inputtemplate", "validationtemplate"] }, { kind: "directive", type: SacMultilanguagemenuAnchorDirective, selector: "[sacMultilanguageMenuAnchor]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacMultilanguagemenuItemButtonComponent, selector: "sac-multilanguagemenubutton" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
2477
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n placement=\"bottom-right\"\n sac-multilanguagemenu\n [buttontemplate]=\"menuButton\"\n [inputtemplate]=\"menuInput\"\n [validationtemplate]=\"validationMessage\"\n #contextmenu>\n <ng-template #menuInput>\n <textarea\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"LanguageValue\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n style=\"height: auto\"\n (input)=\"SetLanguageValue($event.target.value)\"\n [attr.rows]=\"rows\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"></textarea>\n </ng-template>\n\n <ng-template #menuButton>\n <button\n sacMultilanguageMenuAnchor\n [id]=\"name + '_dropdownitem'\"\n type=\"button\"\n class=\"btn dropdown-toggle\"\n (click)=\"contextmenu.toggle()\"\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\">\n <img\n src=\"{{ SelectedIcon }}\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.Image\" />\n <i\n [ngClass]=\"SelectedIcon\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.CssSprite\"></i>\n </button>\n </ng-template>\n\n <ng-template #validationMessage>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div></ng-template\n >\n\n <ng-container *ngFor=\"let sprache of Languages\">\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.Image\"\n text=\"{{ sprache.Text }}\"\n image=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\n text=\"{{ sprache.Text }}\"\n icon=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n </ng-container>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col text-right\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SacMultilanguagemenuComponent, selector: "[sac-multilanguagemenu]", inputs: ["inputtemplate", "validationtemplate"] }, { kind: "directive", type: SacMultilanguagemenuAnchorDirective, selector: "[sacMultilanguageMenuAnchor]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SacMultilanguagemenuItemButtonComponent, selector: "sac-multilanguagemenubutton" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2060
2478
  }
2061
2479
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacMultilanguageInputAreaComponent, decorators: [{
2062
2480
  type: Component,
@@ -2071,7 +2489,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2071
2489
  multi: true,
2072
2490
  useExisting: forwardRef(() => SacMultilanguageInputAreaComponent),
2073
2491
  },
2074
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [
2492
+ ], standalone: true, imports: [
2075
2493
  NgClass,
2076
2494
  SacMultilanguagemenuComponent,
2077
2495
  SacMultilanguagemenuAnchorDirective,
@@ -2079,8 +2497,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2079
2497
  NgFor,
2080
2498
  AsyncPipe,
2081
2499
  SacMultilanguagemenuItemButtonComponent,
2082
- ], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + labelsize : 'sr-only' ]\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div\r\n class=\"input-group input-group-sm\"\r\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n placement=\"bottom-right\"\r\n sac-multilanguagemenu\r\n [buttontemplate]=\"menuButton\"\r\n [inputtemplate]=\"menuInput\"\r\n [validationtemplate]=\"validationMessage\"\r\n #contextmenu\r\n >\r\n <ng-template #menuInput>\r\n <textarea\r\n id=\"{{name}}\"\r\n name=\"{{name}}\"\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [value]=\"LanguageValue\"\r\n [attr.placeholder]=\"placeholder\"\r\n (blur)=\"onTouch()\"\r\n style=\"height: auto\"\r\n (input)=\"SetLanguageValue($event.target.value)\"\r\n [attr.rows]=\"rows\"\r\n [attr.maxlength]=\"maxlength\"\r\n [ngClass]=\"{'is-invalid': invalid && (dirty || touched) }\"\r\n [disabled]=\"isdisabled\"\r\n ></textarea>\r\n </ng-template>\r\n\r\n <ng-template #menuButton>\r\n <button\r\n sacMultilanguageMenuAnchor\r\n [id]=\"name + '_dropdownitem'\"\r\n type=\"button\"\r\n class=\"btn dropdown-toggle\"\r\n (click)=\"contextmenu.toggle()\"\r\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\"\r\n >\r\n <img\r\n src=\"{{SelectedIcon}}\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.Image\"\r\n />\r\n <i\r\n [ngClass]=\"SelectedIcon\"\r\n class=\"align-baseline mr-1 ml-1\"\r\n *ngIf=\"SelectedIconType === IconType.CssSprite\"\r\n ></i>\r\n </button>\r\n </ng-template>\r\n\r\n <ng-template #validationMessage>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div></ng-template\r\n >\r\n\r\n <ng-container *ngFor=\"let sprache of Languages\">\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.Image\"\r\n text=\"{{sprache.Text}}\"\r\n image=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n <sac-multilanguagemenubutton\r\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\r\n text=\"{{sprache.Text}}\"\r\n icon=\"{{sprache.Icon}}\"\r\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger': ''\"\r\n (clicked)=\"SelectLanguage(sprache)\"\r\n ></sac-multilanguagemenubutton>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"col text-right\"></div>\r\n</div>\r\n" }]
2083
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2500
+ SacToControlWidthCssPipe,
2501
+ SacToLabelWidthCssPipe,
2502
+ SacToLabelHeightPipe,
2503
+ SacToControlHeightPipe,
2504
+ SacTooltipComponent,
2505
+ SacTestingAttributePipe,
2506
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.has-validation]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n placement=\"bottom-right\"\n sac-multilanguagemenu\n [buttontemplate]=\"menuButton\"\n [inputtemplate]=\"menuInput\"\n [validationtemplate]=\"validationMessage\"\n #contextmenu>\n <ng-template #menuInput>\n <textarea\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n type=\"text\"\n class=\"form-control\"\n [value]=\"LanguageValue\"\n [attr.placeholder]=\"placeholder\"\n (blur)=\"onTouch()\"\n style=\"height: auto\"\n (input)=\"SetLanguageValue($event.target.value)\"\n [attr.rows]=\"rows\"\n [attr.maxlength]=\"maxtextlength\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [disabled]=\"isdisabled\"></textarea>\n </ng-template>\n\n <ng-template #menuButton>\n <button\n sacMultilanguageMenuAnchor\n [id]=\"name + '_dropdownitem'\"\n type=\"button\"\n class=\"btn dropdown-toggle\"\n (click)=\"contextmenu.toggle()\"\n [ngClass]=\"[IsAnyEmpty() ? 'btn-warning' : 'btn-secondary']\">\n <img\n src=\"{{ SelectedIcon }}\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.Image\" />\n <i\n [ngClass]=\"SelectedIcon\"\n class=\"align-baseline mr-1 ml-1\"\n *ngIf=\"SelectedIconType === IconType.CssSprite\"></i>\n </button>\n </ng-template>\n\n <ng-template #validationMessage>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div></ng-template\n >\n\n <ng-container *ngFor=\"let sprache of Languages\">\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.Image\"\n text=\"{{ sprache.Text }}\"\n image=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n <sac-multilanguagemenubutton\n *ngIf=\"sprache.IconType === IconType.CssSprite\"\n text=\"{{ sprache.Text }}\"\n icon=\"{{ sprache.Icon }}\"\n [cssclass]=\"IsEmpty(sprache) ? 'text-danger border-left border-danger' : ''\"\n (clicked)=\"SelectLanguage(sprache)\"></sac-multilanguagemenubutton>\n </ng-container>\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col text-right\"></div>\n</div>\n" }]
2507
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2084
2508
  type: Host
2085
2509
  }, {
2086
2510
  type: Optional
@@ -2113,15 +2537,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2113
2537
  * Komponente für statischen Text in einem Formular
2114
2538
  */
2115
2539
  class SacStaticLabelComponent extends SacStaticLabelCommon {
2540
+ // #region Constructors
2116
2541
  /**
2117
- * Konstruktor
2118
- * @param parent Formular
2119
- * @param injector Angular Dependency Injection Service
2542
+ * Constructor
2543
+ * @param formLayout SacFormLayout to define scoped layout settings
2544
+ * @param injector Injector for injecting services
2120
2545
  */
2121
- constructor(parent, injector) {
2122
- super(parent, injector);
2546
+ constructor(formLayout, injector) {
2547
+ super(formLayout, injector);
2123
2548
  }
2124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacStaticLabelComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2549
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacStaticLabelComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2125
2550
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacStaticLabelComponent, isStandalone: true, selector: "sac-staticlabel", providers: [
2126
2551
  {
2127
2552
  provide: NG_VALUE_ACCESSOR,
@@ -2133,7 +2558,7 @@ class SacStaticLabelComponent extends SacStaticLabelCommon {
2133
2558
  multi: true,
2134
2559
  useExisting: forwardRef(() => SacStaticLabelComponent),
2135
2560
  },
2136
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div class=\"form-control-plaintext\" [innerHTML]=\"value\"></div>\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-left control-label\"\r\n *ngIf=\"isadaptivelabel && !disablelabel\"\r\n >{{label}}</label\r\n >\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
2561
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\"\n ><span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div>\n <div\n [id]=\"name\"\n class=\"form-control-plaintext\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [innerHTML]=\"value\"></div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2137
2562
  }
2138
2563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacStaticLabelComponent, decorators: [{
2139
2564
  type: Component,
@@ -2148,8 +2573,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2148
2573
  multi: true,
2149
2574
  useExisting: forwardRef(() => SacStaticLabelComponent),
2150
2575
  },
2151
- ], standalone: true, imports: [NgIf, NgClass], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div class=\"form-control-plaintext\" [innerHTML]=\"value\"></div>\r\n <label\r\n for=\"{{name}}\"\r\n class=\"col-left control-label\"\r\n *ngIf=\"isadaptivelabel && !disablelabel\"\r\n >{{label}}</label\r\n >\r\n </div>\r\n</div>\r\n" }]
2152
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2576
+ ], standalone: true, imports: [
2577
+ NgIf,
2578
+ NgClass,
2579
+ SacToControlWidthCssPipe,
2580
+ SacToLabelWidthCssPipe,
2581
+ SacToLabelHeightPipe,
2582
+ SacToControlHeightPipe,
2583
+ SacTooltipComponent,
2584
+ SacTestingAttributePipe,
2585
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\"\n ><span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div>\n <div\n [id]=\"name\"\n class=\"form-control-plaintext\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [innerHTML]=\"value\"></div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
2586
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2153
2587
  type: Host
2154
2588
  }, {
2155
2589
  type: Optional
@@ -2160,25 +2594,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2160
2594
  *
2161
2595
  * @example
2162
2596
  * <ngStaticFormContainer name='myformcontainer' label="My Custom Form Control" [isrequired]='false'>
2163
- * <input type="range" class="form-control form-control-sm" />
2597
+ * <input type="range" class="form-control" />
2164
2598
  * </ngStaticFormContainer>
2165
2599
  *
2166
2600
  * @example
2167
2601
  * <ngStaticFormContainer name='myformcintainer' label="My Custom Form Control" [isrequired]='false' tooltiptext="Dies ist ein Tooltip Text">
2168
- * <input type="range" class="form-control form-control-sm" />
2602
+ * <input type="range" class="form-control" />
2169
2603
  * </ngStaticFormContainer>
2170
2604
  *
2171
2605
  **/
2172
2606
  class SacStaticFormContainerComponent extends SacStaticFormContainerCommon {
2607
+ // #region Constructors
2173
2608
  /**
2174
- * Konsturktor
2175
- * @param parent Parent SacFormular Instanz
2176
- * @param injector Injector Instanz
2609
+ * Constructor
2610
+ * @param formLayout SacFormLayout to define scoped layout settings
2611
+ * @param injector Injector for injecting services
2177
2612
  */
2178
- constructor(parent, injector) {
2179
- super(parent, injector);
2613
+ constructor(formLayout, injector) {
2614
+ super(formLayout, injector);
2180
2615
  }
2181
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacStaticFormContainerComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacStaticFormContainerComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2182
2617
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacStaticFormContainerComponent, isStandalone: true, selector: "sac-staticformcontainer", providers: [
2183
2618
  {
2184
2619
  provide: NG_VALUE_ACCESSOR,
@@ -2190,7 +2625,7 @@ class SacStaticFormContainerComponent extends SacStaticFormContainerCommon {
2190
2625
  multi: true,
2191
2626
  useExisting: forwardRef(() => SacStaticFormContainerComponent),
2192
2627
  },
2193
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\"\r\n [class.required]=\"isrequired\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <ng-content></ng-content>\r\n <label\r\n for=\"{{name}}\"\r\n class=\"form-label-adaptive form-label-fixed\"\r\n [ngClass]=\"{ 'required': isrequired }\"\r\n *ngIf=\"isadaptivelabel && !disablelabel\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"invalid-feedback\"\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2628
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n [class.was-validated]=\"isinlineerrorenabled && isinvalid && errormessage\">\n <ng-content></ng-content>\n <label\n for=\"{{ name }}\"\n class=\"form-label-adaptive form-label-fixed\"\n [ngClass]=\"{ required: isrequired }\"\n *ngIf=\"isAdaptiveLabel && !disablelabel\"\n >{{ label }}</label\n >\n <div\n class=\"invalid-feedback\"\n *ngIf=\"isinlineerrorenabled && isinvalid && errormessage\">\n {{ errormessage }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2194
2629
  }
2195
2630
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacStaticFormContainerComponent, decorators: [{
2196
2631
  type: Component,
@@ -2208,9 +2643,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2208
2643
  ], standalone: true, imports: [
2209
2644
  NgIf,
2210
2645
  NgClass,
2211
- AsyncPipe,
2212
- ], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-sm-' + labelsize : 'sr-only']\"\r\n [class.required]=\"isrequired\"\r\n >{{label}}</label\r\n >\r\n <div\r\n [ngClass]=\"[disablelabel === false ? 'col-sm-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <ng-content></ng-content>\r\n <label\r\n for=\"{{name}}\"\r\n class=\"form-label-adaptive form-label-fixed\"\r\n [ngClass]=\"{ 'required': isrequired }\"\r\n *ngIf=\"isadaptivelabel && !disablelabel\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"invalid-feedback\"\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n" }]
2213
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2646
+ SacToControlWidthCssPipe,
2647
+ SacToControlHeightPipe,
2648
+ SacToLabelWidthCssPipe,
2649
+ SacToLabelHeightPipe,
2650
+ SacTooltipComponent,
2651
+ SacTestingAttributePipe,
2652
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n [class.was-validated]=\"isinlineerrorenabled && isinvalid && errormessage\">\n <ng-content></ng-content>\n <label\n for=\"{{ name }}\"\n class=\"form-label-adaptive form-label-fixed\"\n [ngClass]=\"{ required: isrequired }\"\n *ngIf=\"isAdaptiveLabel && !disablelabel\"\n >{{ label }}</label\n >\n <div\n class=\"invalid-feedback\"\n *ngIf=\"isinlineerrorenabled && isinvalid && errormessage\">\n {{ errormessage }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n" }]
2653
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2214
2654
  type: Host
2215
2655
  }, {
2216
2656
  type: Optional
@@ -2238,17 +2678,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2238
2678
  */
2239
2679
  class SacTabItemComponent extends SacTabItemCommon {
2240
2680
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTabItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2241
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTabItemComponent, isStandalone: true, selector: "sac-tabitem", usesInheritance: true, ngImport: i0, template: "<div [id]=\"id\" [hidden]=\"unloadwhenhidden === false && active === false\" *ngIf=\"(unloadwhenhidden === true && active === true) || unloadwhenhidden === false\" class=\"tab-pane\">\r\n <ng-template [ngTemplateOutlet]=\"templateRef\"></ng-template>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
2681
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTabItemComponent, isStandalone: true, selector: "sac-tabitem", usesInheritance: true, ngImport: i0, template: "<div [id]=\"id\" [hidden]=\"unloadwhenhidden === false && active === false\" *ngIf=\"(unloadwhenhidden === true && active === true) || unloadwhenhidden === false\" class=\"tab-pane\">\n <ng-template [ngTemplateOutlet]=\"templateRef\"></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
2242
2682
  }
2243
2683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTabItemComponent, decorators: [{
2244
2684
  type: Component,
2245
- args: [{ selector: 'sac-tabitem', standalone: true, imports: [NgIf, NgTemplateOutlet], template: "<div [id]=\"id\" [hidden]=\"unloadwhenhidden === false && active === false\" *ngIf=\"(unloadwhenhidden === true && active === true) || unloadwhenhidden === false\" class=\"tab-pane\">\r\n <ng-template [ngTemplateOutlet]=\"templateRef\"></ng-template>\r\n</div>\r\n" }]
2685
+ args: [{ selector: 'sac-tabitem', standalone: true, imports: [NgIf, NgTemplateOutlet], template: "<div [id]=\"id\" [hidden]=\"unloadwhenhidden === false && active === false\" *ngIf=\"(unloadwhenhidden === true && active === true) || unloadwhenhidden === false\" class=\"tab-pane\">\n <ng-template [ngTemplateOutlet]=\"templateRef\"></ng-template>\n</div>\n" }]
2246
2686
  }] });
2247
2687
 
2248
2688
  /**
2249
2689
  * Komponente für Tabs
2250
2690
  */
2251
2691
  class SacTabComponent extends SacTabCommon {
2692
+ // #endregion Properties
2693
+ // #region Public Methods
2252
2694
  /**
2253
2695
  * Gibt die TabItems zurück
2254
2696
  * @returns Array von TabItems
@@ -2257,15 +2699,11 @@ class SacTabComponent extends SacTabCommon {
2257
2699
  return this._tabItems.toArray();
2258
2700
  }
2259
2701
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2260
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTabComponent, isStandalone: true, selector: "sac-tab", queries: [{ propertyName: "_tabItems", predicate: SacTabItemComponent }], usesInheritance: true, ngImport: i0, template: "<!-- Nav tabs -->\r\n<ul class=\"nav nav-tabs\" role=\"tablist\">\r\n <li class=\"nav-item\" *ngFor=\"let item of _tabItems\">\r\n <a\r\n role=\"tab\"\r\n class=\"nav-link\"\r\n data-toggle=\"tab\"\r\n [ngClass]=\"{ 'active': item.active, 'disabled': item.disabled }\"\r\n (click)=\"selectTab(item)\"\r\n [ngStyle]=\"{'cursor': item.disabled ? 'not-allowed' : 'pointer'}\"\r\n >{{item.label}}</a\r\n >\r\n </li>\r\n</ul>\r\n\r\n<!-- Tab panes -->\r\n<div class=\"tab-content pl-3 pt-2\">\r\n <ng-content></ng-content>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2702
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTabComponent, isStandalone: true, selector: "sac-tab", queries: [{ propertyName: "_tabItems", predicate: SacTabItemComponent }], usesInheritance: true, ngImport: i0, template: "<!-- Nav tabs -->\n<ul\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"nav nav-tabs\"\n role=\"tablist\">\n <li\n class=\"nav-item\"\n *ngFor=\"let item of _tabItems\">\n <a\n [id]=\"GetTabItemButtonId(item.id)\"\n role=\"tab\"\n class=\"nav-link\"\n data-toggle=\"tab\"\n [ngClass]=\"{ active: item.active, disabled: item.disabled }\"\n (click)=\"selectTab(item)\"\n [ngStyle]=\"{ cursor: item.disabled ? 'not-allowed' : 'pointer' }\"\n >{{ item.label }}</a\n >\n </li>\n</ul>\n\n<!-- Tab panes -->\n<div class=\"tab-content pl-3 pt-2\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2261
2703
  }
2262
2704
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTabComponent, decorators: [{
2263
2705
  type: Component,
2264
- args: [{ selector: 'sac-tab', standalone: true, imports: [
2265
- NgFor,
2266
- NgClass,
2267
- NgStyle,
2268
- ], template: "<!-- Nav tabs -->\r\n<ul class=\"nav nav-tabs\" role=\"tablist\">\r\n <li class=\"nav-item\" *ngFor=\"let item of _tabItems\">\r\n <a\r\n role=\"tab\"\r\n class=\"nav-link\"\r\n data-toggle=\"tab\"\r\n [ngClass]=\"{ 'active': item.active, 'disabled': item.disabled }\"\r\n (click)=\"selectTab(item)\"\r\n [ngStyle]=\"{'cursor': item.disabled ? 'not-allowed' : 'pointer'}\"\r\n >{{item.label}}</a\r\n >\r\n </li>\r\n</ul>\r\n\r\n<!-- Tab panes -->\r\n<div class=\"tab-content pl-3 pt-2\">\r\n <ng-content></ng-content>\r\n</div>\r\n" }]
2706
+ args: [{ selector: 'sac-tab', standalone: true, imports: [NgFor, NgClass, NgStyle, SacTestingAttributePipe], template: "<!-- Nav tabs -->\n<ul\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"nav nav-tabs\"\n role=\"tablist\">\n <li\n class=\"nav-item\"\n *ngFor=\"let item of _tabItems\">\n <a\n [id]=\"GetTabItemButtonId(item.id)\"\n role=\"tab\"\n class=\"nav-link\"\n data-toggle=\"tab\"\n [ngClass]=\"{ active: item.active, disabled: item.disabled }\"\n (click)=\"selectTab(item)\"\n [ngStyle]=\"{ cursor: item.disabled ? 'not-allowed' : 'pointer' }\"\n >{{ item.label }}</a\n >\n </li>\n</ul>\n\n<!-- Tab panes -->\n<div class=\"tab-content pl-3 pt-2\">\n <ng-content></ng-content>\n</div>\n" }]
2269
2707
  }], propDecorators: { _tabItems: [{
2270
2708
  type: ContentChildren,
2271
2709
  args: [SacTabItemComponent]
@@ -2292,23 +2730,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2292
2730
  * TinyMCE Komponente
2293
2731
  */
2294
2732
  class SacTinyMceComponent extends SacTinyMceCommon {
2733
+ // #region Constructors
2295
2734
  /**
2296
- * Konstruktor
2297
- * @param parent Formular
2298
- * @param injector Angular Dependency Injection Service
2299
- * @param ngZone ngZone
2735
+ * Constructor
2736
+ * @param formLayout SacFormLayout to define scoped layout settings
2737
+ * @param injector Injector for injecting services
2738
+ * @param ngZone ngZone to manage external javascripts
2300
2739
  */
2301
- constructor(parent, injector, ngZone) {
2302
- super(parent, injector, ngZone);
2740
+ constructor(formLayout, injector, ngZone) {
2741
+ super(formLayout, injector, ngZone);
2303
2742
  }
2743
+ // #endregion Constructors
2744
+ // #region Public Methods
2304
2745
  /**
2305
2746
  * overwrite tinymce defaults
2306
- * @returns boostrap4 has no overwrites
2747
+ * @returns boostrap5 has no overwrites
2307
2748
  */
2308
2749
  overwriteDefaultSettings() {
2309
2750
  return {};
2310
2751
  }
2311
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTinyMceComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2752
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTinyMceComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2312
2753
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTinyMceComponent, isStandalone: true, selector: "sac-tinymce", providers: [
2313
2754
  {
2314
2755
  provide: NG_VALUE_ACCESSOR,
@@ -2320,7 +2761,7 @@ class SacTinyMceComponent extends SacTinyMceCommon {
2320
2761
  useExisting: forwardRef(() => SacTinyMceComponent),
2321
2762
  multi: true,
2322
2763
  },
2323
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <div\r\n class=\"col\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + labelsize : 'sr-only' ]\"\r\n >\r\n <label for=\"{{name}}\" class=\"form-control-label col-form-label-sm\"\r\n >{{label}}</label\r\n >\r\n </div>\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <editor\r\n [id]=\"name + '_tinymce'\"\r\n [init]=\"_config\"\r\n [initialValue]=\"value\"\r\n ngModel\r\n [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"setValue($event)\"\r\n (onSaveContent)=\"save($event.event.content)\"\r\n [disabled]=\"disabled\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n ></editor>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<sac-dialog\r\n *ngIf=\"selectdialogvisible\"\r\n [allowesc]=\"false\"\r\n [backdrop]=\"true\"\r\n [(isvisible)]=\"selectdialogvisible\"\r\n title=\"{{ lngResourceService.GetString('TINYMCE_FILESELECT_DIALOGTITLE') | async }}\"\r\n size=\"large\"\r\n height=\"500px\"\r\n>\r\n <ng-container dialogbody>\r\n <sac-filebrowser\r\n [apiurl]=\"filebrowserapiurl\"\r\n (file)=\"selectDialogSettings.value = $event\"\r\n [allowfoldercreate]=\"allowfoldercreate\"\r\n [allowfolderrename]=\"allowfolderrename\"\r\n [allowfolderdelete]=\"allowfolderdelete\"\r\n [allowfileupload]=\"allowfileupload\"\r\n [allowfilerename]=\"allowfilerename\"\r\n [allowfiledelete]=\"allowfiledelete\"\r\n [selectedfile]=\"selectDialogSettings.value\"\r\n [allowedtypes]=\"selectDialogSettings.allowedtypes\"\r\n ></sac-filebrowser>\r\n </ng-container>\r\n <ng-container dialogfooter>\r\n <sac-button\r\n role=\"primary\"\r\n [name]=\"name + '_modalOk'\"\r\n text=\"{{ lngResourceService.GetString('TINYMCE_FILESELECT_OK') | async }}\"\r\n (clicked)=\"setSelectDialogResult()\"\r\n ></sac-button>\r\n <sac-button\r\n [name]=\"name + '_modalClose'\"\r\n text=\"{{ lngResourceService.GetString('TINYMCE_FILESELECT_CANCEL') | async }}\"\r\n (clicked)=\"closeSelectDialog()\"\r\n ></sac-button>\r\n </ng-container>\r\n</sac-dialog>\r\n", styles: [".is-invalid{border:1px solid var(--bs-form-invalid-border-color)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SacDialogComponent, selector: "sac-dialog" }, { kind: "component", type: SacButtonComponent, selector: "sac-button" }, { kind: "component", type: SacBrowserComponent, selector: "sac-filebrowser" }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
2764
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <editor\n [id]=\"name + '_tinymce'\"\n [init]=\"_config\"\n [initialValue]=\"value\"\n ngModel\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"setValue($event)\"\n (onSaveContent)=\"save($event.event.content)\"\n (onBlur)=\"blur()\"\n [disabled]=\"disabled\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"></editor>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n\n <sac-dialog\n *ngIf=\"selectdialogvisible\"\n [allowesc]=\"false\"\n [backdrop]=\"true\"\n [(isvisible)]=\"selectdialogvisible\"\n title=\"{{ lngResourceService.GetString(validationKeyService.TinyMceFileselectDialogtitle) | async }}\"\n size=\"large\"\n height=\"500px\">\n <ng-container dialogbody>\n <sac-filebrowser\n [apiurl]=\"filebrowserapiurl\"\n (file)=\"selectDialogSettings.value = $event\"\n [allowfoldercreate]=\"allowfoldercreate\"\n [allowfolderrename]=\"allowfolderrename\"\n [allowfolderdelete]=\"allowfolderdelete\"\n [allowfileupload]=\"allowfileupload\"\n [allowfilerename]=\"allowfilerename\"\n [allowfiledelete]=\"allowfiledelete\"\n [selectedfile]=\"selectDialogSettings.value\"\n [allowedtypes]=\"selectDialogSettings.allowedtypes\"></sac-filebrowser>\n </ng-container>\n <ng-container dialogfooter>\n <sac-button\n role=\"primary\"\n [name]=\"name + '_modalOk'\"\n text=\"{{ lngResourceService.GetString(validationKeyService.TinyMceFileselectOk) | async }}\"\n (clicked)=\"setSelectDialogResult()\"></sac-button>\n <sac-button\n [name]=\"name + '_modalClose'\"\n text=\"{{ lngResourceService.GetString(validationKeyService.TinyMceFileselectCancel) | async }}\"\n (clicked)=\"closeSelectDialog()\"></sac-button>\n </ng-container>\n </sac-dialog>\n</div>\n", styles: [".is-invalid{border:1px solid var(--bs-form-invalid-border-color)}::ng-deep .tox.tox-tinymce-aux{z-index:900}::ng-deep .tox.tox-tinymce-aux .tox-dialog-wrap{z-index:800}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SacDialogComponent, selector: "sac-dialog" }, { kind: "component", type: SacButtonComponent, selector: "sac-button" }, { kind: "component", type: SacBrowserComponent, selector: "sac-filebrowser" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2324
2765
  }
2325
2766
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTinyMceComponent, decorators: [{
2326
2767
  type: Component,
@@ -2335,7 +2776,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2335
2776
  useExisting: forwardRef(() => SacTinyMceComponent),
2336
2777
  multi: true,
2337
2778
  },
2338
- ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [
2779
+ ], standalone: true, imports: [
2339
2780
  NgClass,
2340
2781
  EditorComponent,
2341
2782
  FormsModule,
@@ -2344,8 +2785,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2344
2785
  SacButtonComponent,
2345
2786
  SacBrowserComponent,
2346
2787
  AsyncPipe,
2347
- ], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <div\r\n class=\"col\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + labelsize : 'sr-only' ]\"\r\n >\r\n <label for=\"{{name}}\" class=\"form-control-label col-form-label-sm\"\r\n >{{label}}</label\r\n >\r\n </div>\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <editor\r\n [id]=\"name + '_tinymce'\"\r\n [init]=\"_config\"\r\n [initialValue]=\"value\"\r\n ngModel\r\n [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"setValue($event)\"\r\n (onSaveContent)=\"save($event.event.content)\"\r\n [disabled]=\"disabled\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n ></editor>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<sac-dialog\r\n *ngIf=\"selectdialogvisible\"\r\n [allowesc]=\"false\"\r\n [backdrop]=\"true\"\r\n [(isvisible)]=\"selectdialogvisible\"\r\n title=\"{{ lngResourceService.GetString('TINYMCE_FILESELECT_DIALOGTITLE') | async }}\"\r\n size=\"large\"\r\n height=\"500px\"\r\n>\r\n <ng-container dialogbody>\r\n <sac-filebrowser\r\n [apiurl]=\"filebrowserapiurl\"\r\n (file)=\"selectDialogSettings.value = $event\"\r\n [allowfoldercreate]=\"allowfoldercreate\"\r\n [allowfolderrename]=\"allowfolderrename\"\r\n [allowfolderdelete]=\"allowfolderdelete\"\r\n [allowfileupload]=\"allowfileupload\"\r\n [allowfilerename]=\"allowfilerename\"\r\n [allowfiledelete]=\"allowfiledelete\"\r\n [selectedfile]=\"selectDialogSettings.value\"\r\n [allowedtypes]=\"selectDialogSettings.allowedtypes\"\r\n ></sac-filebrowser>\r\n </ng-container>\r\n <ng-container dialogfooter>\r\n <sac-button\r\n role=\"primary\"\r\n [name]=\"name + '_modalOk'\"\r\n text=\"{{ lngResourceService.GetString('TINYMCE_FILESELECT_OK') | async }}\"\r\n (clicked)=\"setSelectDialogResult()\"\r\n ></sac-button>\r\n <sac-button\r\n [name]=\"name + '_modalClose'\"\r\n text=\"{{ lngResourceService.GetString('TINYMCE_FILESELECT_CANCEL') | async }}\"\r\n (clicked)=\"closeSelectDialog()\"\r\n ></sac-button>\r\n </ng-container>\r\n</sac-dialog>\r\n", styles: [".is-invalid{border:1px solid var(--bs-form-invalid-border-color)}\n"] }]
2348
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2788
+ SacToControlWidthCssPipe,
2789
+ SacToLabelWidthCssPipe,
2790
+ SacToLabelHeightPipe,
2791
+ SacTooltipComponent,
2792
+ SacToControlHeightPipe,
2793
+ SacTestingAttributePipe,
2794
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <editor\n [id]=\"name + '_tinymce'\"\n [init]=\"_config\"\n [initialValue]=\"value\"\n ngModel\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"setValue($event)\"\n (onSaveContent)=\"save($event.event.content)\"\n (onBlur)=\"blur()\"\n [disabled]=\"disabled\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"></editor>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n\n <sac-dialog\n *ngIf=\"selectdialogvisible\"\n [allowesc]=\"false\"\n [backdrop]=\"true\"\n [(isvisible)]=\"selectdialogvisible\"\n title=\"{{ lngResourceService.GetString(validationKeyService.TinyMceFileselectDialogtitle) | async }}\"\n size=\"large\"\n height=\"500px\">\n <ng-container dialogbody>\n <sac-filebrowser\n [apiurl]=\"filebrowserapiurl\"\n (file)=\"selectDialogSettings.value = $event\"\n [allowfoldercreate]=\"allowfoldercreate\"\n [allowfolderrename]=\"allowfolderrename\"\n [allowfolderdelete]=\"allowfolderdelete\"\n [allowfileupload]=\"allowfileupload\"\n [allowfilerename]=\"allowfilerename\"\n [allowfiledelete]=\"allowfiledelete\"\n [selectedfile]=\"selectDialogSettings.value\"\n [allowedtypes]=\"selectDialogSettings.allowedtypes\"></sac-filebrowser>\n </ng-container>\n <ng-container dialogfooter>\n <sac-button\n role=\"primary\"\n [name]=\"name + '_modalOk'\"\n text=\"{{ lngResourceService.GetString(validationKeyService.TinyMceFileselectOk) | async }}\"\n (clicked)=\"setSelectDialogResult()\"></sac-button>\n <sac-button\n [name]=\"name + '_modalClose'\"\n text=\"{{ lngResourceService.GetString(validationKeyService.TinyMceFileselectCancel) | async }}\"\n (clicked)=\"closeSelectDialog()\"></sac-button>\n </ng-container>\n </sac-dialog>\n</div>\n", styles: [".is-invalid{border:1px solid var(--bs-form-invalid-border-color)}::ng-deep .tox.tox-tinymce-aux{z-index:900}::ng-deep .tox.tox-tinymce-aux .tox-dialog-wrap{z-index:800}\n"] }]
2795
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2349
2796
  type: Host
2350
2797
  }, {
2351
2798
  type: Optional
@@ -2364,28 +2811,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2364
2811
  }]
2365
2812
  }] });
2366
2813
 
2814
+ class SACBootstrap5TooltipModule {
2815
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2816
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TooltipModule, imports: [CommonModule, SacTooltipComponent], exports: [SacTooltipComponent] }); }
2817
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TooltipModule, imports: [CommonModule] }); }
2818
+ }
2819
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TooltipModule, decorators: [{
2820
+ type: NgModule,
2821
+ args: [{
2822
+ imports: [CommonModule, SacTooltipComponent],
2823
+ exports: [SacTooltipComponent],
2824
+ }]
2825
+ }] });
2826
+
2367
2827
  /**
2368
2828
  * Dropzone Komponente für den Upload eines Files
2369
2829
  * @see https://github.com/kukhariev/ngx-uploadx/
2370
2830
  */
2371
2831
  class SacDropzoneSingleComponent extends SacDropzoneSingleCommon {
2832
+ // #region Constructors
2372
2833
  /**
2373
- * Konstruktor
2374
- * @param parent Formular
2375
- * @param injector Angular Dependency Injection Service
2376
- * @param renderer Angular Rendering Engine
2377
- * @param ngZone ngZone
2834
+ * Constructor
2835
+ * @param formLayout SacFormLayout to define scoped layout settings
2836
+ * @param injector Injector for injecting services
2837
+ * @param renderer Angular rendering engine
2838
+ * @param ngZone ngZone to manage external javascripts
2378
2839
  */
2379
- constructor(parent, injector, renderer, ngZone) {
2380
- super(parent, injector, renderer, ngZone);
2840
+ constructor(formLayout, injector, renderer, ngZone) {
2841
+ super(formLayout, injector, renderer, ngZone);
2381
2842
  }
2843
+ // #endregion Constructors
2844
+ // #region Public Methods
2382
2845
  /**
2383
2846
  * Initialisiert das Control
2384
2847
  */
2385
2848
  ngOnInit() {
2386
2849
  super.ngOnInit();
2387
2850
  }
2388
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropzoneSingleComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2851
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropzoneSingleComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2389
2852
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacDropzoneSingleComponent, isStandalone: true, selector: "sac-dropzonesingle", providers: [
2390
2853
  {
2391
2854
  provide: NG_VALUE_ACCESSOR,
@@ -2397,7 +2860,7 @@ class SacDropzoneSingleComponent extends SacDropzoneSingleCommon {
2397
2860
  multi: true,
2398
2861
  useExisting: forwardRef(() => SacDropzoneSingleComponent),
2399
2862
  },
2400
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <div\r\n class=\"dropzone d-flex justify-content-center position-relative\"\r\n (drop)=\"dropHandler($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n [style.min-height]=\"uploadheight\"\r\n [class.active]=\"active\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div\r\n class=\"content d-flex justify-content-center position-relative\"\r\n *ngIf=\"uploads.length === 0\"\r\n >\r\n <div class=\"align-self-center text-center\">\r\n <div\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\r\n *ngIf=\"uploads.length > 0\"\r\n >\r\n <div class=\"flex-fill progress-container\">\r\n <div class=\"dropzone-uploadstates\" *ngFor=\"let file of uploads\">\r\n <div class=\"input-group upload-component upload-component-multiple\">\r\n <div class=\"form-control upload-progress border-secondary\">\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\"\r\n >\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <a\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <input\r\n #files\r\n id=\"{{ name }}_uploadinput\"\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n [disabled]=\"HasQueueItem()\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2863
+ ], usesInheritance: true, ngImport: i0, template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"dropzone d-flex justify-content-center position-relative\"\n (drop)=\"dropHandler($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [style.min-height]=\"uploadheight\"\n [class.active]=\"active\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div\n class=\"content d-flex justify-content-center position-relative\"\n *ngIf=\"uploads.length === 0\">\n <div class=\"align-self-center text-center\">\n <div [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n <div\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\n *ngIf=\"uploads.length > 0\">\n <div class=\"flex-fill progress-container\">\n <div\n class=\"dropzone-uploadstates\"\n *ngFor=\"let file of uploads\">\n <div\n class=\"input-group upload-component upload-component-multiple\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <div class=\"form-control upload-progress border-secondary\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"file.progress === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"file.progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"file.progress\">\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\n </div>\n </div>\n </div>\n <a\n class=\"btn\"\n (click)=\"cancel(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </a>\n </div>\n </div>\n </div>\n </div>\n <input\n #files\n id=\"{{ name }}_uploadinput\"\n type=\"file\"\n class=\"custom-file-input\"\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n [disabled]=\"HasQueueItem()\" />\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2401
2864
  }
2402
2865
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropzoneSingleComponent, decorators: [{
2403
2866
  type: Component,
@@ -2412,8 +2875,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2412
2875
  multi: true,
2413
2876
  useExisting: forwardRef(() => SacDropzoneSingleComponent),
2414
2877
  },
2415
- ], standalone: true, imports: [NgIf, NgClass, NgFor, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <div\r\n class=\"dropzone d-flex justify-content-center position-relative\"\r\n (drop)=\"dropHandler($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n [style.min-height]=\"uploadheight\"\r\n [class.active]=\"active\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div\r\n class=\"content d-flex justify-content-center position-relative\"\r\n *ngIf=\"uploads.length === 0\"\r\n >\r\n <div class=\"align-self-center text-center\">\r\n <div\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\r\n *ngIf=\"uploads.length > 0\"\r\n >\r\n <div class=\"flex-fill progress-container\">\r\n <div class=\"dropzone-uploadstates\" *ngFor=\"let file of uploads\">\r\n <div class=\"input-group upload-component upload-component-multiple\">\r\n <div class=\"form-control upload-progress border-secondary\">\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\"\r\n >\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <a\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <input\r\n #files\r\n id=\"{{ name }}_uploadinput\"\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n [disabled]=\"HasQueueItem()\"\r\n />\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"] }]
2416
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2878
+ ], standalone: true, imports: [
2879
+ NgIf,
2880
+ NgClass,
2881
+ NgFor,
2882
+ AsyncPipe,
2883
+ SacToControlWidthCssPipe,
2884
+ SacToLabelWidthCssPipe,
2885
+ SacToLabelHeightPipe,
2886
+ SacTooltipComponent,
2887
+ SacToControlHeightPipe,
2888
+ SacTestingAttributePipe,
2889
+ ], template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"dropzone d-flex justify-content-center position-relative\"\n (drop)=\"dropHandler($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n [style.min-height]=\"uploadheight\"\n [class.active]=\"active\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div\n class=\"content d-flex justify-content-center position-relative\"\n *ngIf=\"uploads.length === 0\">\n <div class=\"align-self-center text-center\">\n <div [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n <div\n class=\"content d-flex justify-content-center align-items-center w-50 my-3\"\n *ngIf=\"uploads.length > 0\">\n <div class=\"flex-fill progress-container\">\n <div\n class=\"dropzone-uploadstates\"\n *ngFor=\"let file of uploads\">\n <div\n class=\"input-group upload-component upload-component-multiple\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <div class=\"form-control upload-progress border-secondary\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"file.progress === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"file.progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"file.progress\">\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\n </div>\n </div>\n </div>\n <a\n class=\"btn\"\n (click)=\"cancel(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </a>\n </div>\n </div>\n </div>\n </div>\n <input\n #files\n id=\"{{ name }}_uploadinput\"\n type=\"file\"\n class=\"custom-file-input\"\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n [disabled]=\"HasQueueItem()\" />\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", styles: [".dropzone{min-height:9.75rem;border:.125rem dashed lightgray;border-radius:.5rem;background:transparent}.dropzone.is-invalid{border-color:var(--bs-form-invalid-border-color)}.dropzone .content{position:relative;inset:0}.dropzone .content .is-invalid{color:var(--bs-form-invalid-border-color)}.dropzone .content .progress-container{min-width:50%;z-index:100}.dropzone .content .dropzone-uploadstates .upload-progress{padding:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress{height:100%;border-top-right-radius:0;border-bottom-right-radius:0}.dropzone .content .dropzone-uploadstates .upload-progress .progress .progress-text{left:0;right:0;position:absolute}.dropzone .custom-file-input{min-height:100%;height:unset;width:100%;opacity:0;position:absolute}\n"] }]
2890
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2417
2891
  type: Host
2418
2892
  }, {
2419
2893
  type: Optional
@@ -2424,17 +2898,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2424
2898
  * @see https://github.com/kukhariev/ngx-uploadx/
2425
2899
  */
2426
2900
  class SacUploadComponent extends SacUploadSingleCommon {
2901
+ // #region Constructors
2427
2902
  /**
2428
- * Konstruktor
2429
- * @param parent Formular
2430
- * @param injector Angular Dependency Injection Service
2431
- * @param renderer Angular Rendering Engine
2432
- * @param ngZone ngZone Referenz
2903
+ * Constructor
2904
+ * @param formLayout SacFormLayout to define scoped layout settings
2905
+ * @param injector Injector for injecting services
2906
+ * @param renderer Angular rendering engine
2907
+ * @param ngZone ngZone to manage external javascripts
2433
2908
  */
2434
- constructor(parent, injector, renderer, ngZone) {
2435
- super(parent, injector, renderer, ngZone);
2909
+ constructor(formLayout, injector, renderer, ngZone) {
2910
+ super(formLayout, injector, renderer, ngZone);
2436
2911
  }
2437
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacUploadComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2912
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacUploadComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2438
2913
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacUploadComponent, isStandalone: true, selector: "sac-upload", providers: [
2439
2914
  {
2440
2915
  provide: NG_VALUE_ACCESSOR,
@@ -2446,7 +2921,7 @@ class SacUploadComponent extends SacUploadSingleCommon {
2446
2921
  multi: true,
2447
2922
  useExisting: forwardRef(() => SacUploadComponent),
2448
2923
  },
2449
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <div\r\n class=\"input-group upload-component upload-single\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <!-- image-preview-input -->\r\n <div\r\n class=\"btn upload-input custom-file\"\r\n [class.disabled]=\"HasQueueItem()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <i class=\"pe-2\" [class]=\"IconBrowse\"></i>\r\n <span class=\"upload-browse\"\r\n >{{ lngResourceService.GetString('UPLOAD_BUTTON_BROWSE') | async\r\n }}</span\r\n >\r\n <input\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n #files\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n multiple\r\n [disabled]=\"HasQueueItem()\"\r\n />\r\n </div>\r\n <div\r\n class=\"form-control upload-progress\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"Progress()===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"Progress()\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"Progress()\"\r\n >\r\n <span class=\"progress-text text-dark\"\r\n >{{ Filename() | async }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancelAll()\"\r\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\r\n class=\"btn\"\r\n (click)=\"pauseAll()\"\r\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && IsPaused()\"\r\n class=\"btn\"\r\n (click)=\"uploadAll()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"uploadAll()\"\r\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span>{{\r\n lngResourceService.GetString('UPLOAD_BUTTON_UPLOAD') | async }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:calc(2.25rem + 2px)}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2924
+ ], usesInheritance: true, ngImport: i0, template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group upload-component upload-single\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <!-- image-preview-input -->\n <div\n class=\"btn upload-input custom-file\"\n [class.disabled]=\"HasQueueItem()\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <i\n class=\"pe-2\"\n [ngClass]=\"IconBrowse\"></i>\n <span class=\"upload-browse\">{{ buttonbrowse ? buttonbrowse : (lngResourceService.GetString(validationKeyService.UploadButtonBrowse) | async) }}</span>\n <input\n type=\"file\"\n id=\"{{ name }}_uploadinput\"\n class=\"custom-file-input\"\n #files\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n multiple\n [disabled]=\"HasQueueItem()\" />\n </div>\n <div\n class=\"form-control upload-progress\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"Progress() === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"Progress()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"Progress()\">\n <span class=\"progress-text text-dark\">{{ Filename() | async }}</span>\n </div>\n </div>\n </div>\n\n <button\n class=\"btn\"\n (click)=\"cancelAll()\"\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\n [class.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </button>\n <button\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\n class=\"btn\"\n (click)=\"pauseAll()\"\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\n [class.disabled]=\"IsUploading() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconPause\"></span>\n </button>\n <button\n *ngIf=\"autoupload && enablepause && IsPaused()\"\n class=\"btn\"\n (click)=\"uploadAll()\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconContinue\"></span>\n </button>\n <button\n *ngIf=\"autoupload === false\"\n class=\"btn text-nowrap\"\n (click)=\"uploadAll()\"\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\n [class.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span\n [ngClass]=\"IconUpload\"\n class=\"pe-2\"></span\n >{{ buttonupload ? buttonupload : (lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async) }}\n </button>\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", styles: [".upload-component .custom-file{height:100%}.upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:100%}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2450
2925
  }
2451
2926
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacUploadComponent, decorators: [{
2452
2927
  type: Component,
@@ -2461,8 +2936,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2461
2936
  multi: true,
2462
2937
  useExisting: forwardRef(() => SacUploadComponent),
2463
2938
  },
2464
- ], standalone: true, imports: [NgIf, NgClass, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-md-12']\"\r\n >\r\n <div\r\n class=\"input-group upload-component upload-single\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <!-- image-preview-input -->\r\n <div\r\n class=\"btn upload-input custom-file\"\r\n [class.disabled]=\"HasQueueItem()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <i class=\"pe-2\" [class]=\"IconBrowse\"></i>\r\n <span class=\"upload-browse\"\r\n >{{ lngResourceService.GetString('UPLOAD_BUTTON_BROWSE') | async\r\n }}</span\r\n >\r\n <input\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n #files\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n multiple\r\n [disabled]=\"HasQueueItem()\"\r\n />\r\n </div>\r\n <div\r\n class=\"form-control upload-progress\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"Progress()===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"Progress()\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"Progress()\"\r\n >\r\n <span class=\"progress-text text-dark\"\r\n >{{ Filename() | async }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancelAll()\"\r\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\r\n class=\"btn\"\r\n (click)=\"pauseAll()\"\r\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && IsPaused()\"\r\n class=\"btn\"\r\n (click)=\"uploadAll()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"uploadAll()\"\r\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span>{{\r\n lngResourceService.GetString('UPLOAD_BUTTON_UPLOAD') | async }}\r\n </button>\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:calc(2.25rem + 2px)}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"] }]
2465
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2939
+ ], standalone: true, imports: [
2940
+ NgIf,
2941
+ NgClass,
2942
+ AsyncPipe,
2943
+ SacToControlWidthCssPipe,
2944
+ SacToLabelWidthCssPipe,
2945
+ SacToLabelHeightPipe,
2946
+ SacToControlHeightPipe,
2947
+ SacTooltipComponent,
2948
+ SacTestingAttributePipe,
2949
+ ], template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\"\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div [class.flex-grow-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"input-group upload-component upload-single\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <!-- image-preview-input -->\n <div\n class=\"btn upload-input custom-file\"\n [class.disabled]=\"HasQueueItem()\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <i\n class=\"pe-2\"\n [ngClass]=\"IconBrowse\"></i>\n <span class=\"upload-browse\">{{ buttonbrowse ? buttonbrowse : (lngResourceService.GetString(validationKeyService.UploadButtonBrowse) | async) }}</span>\n <input\n type=\"file\"\n id=\"{{ name }}_uploadinput\"\n class=\"custom-file-input\"\n #files\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n multiple\n [disabled]=\"HasQueueItem()\" />\n </div>\n <div\n class=\"form-control upload-progress\"\n [ngClass]=\"[componentHeight | toControlHeight]\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"Progress() === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"Progress()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"Progress()\">\n <span class=\"progress-text text-dark\">{{ Filename() | async }}</span>\n </div>\n </div>\n </div>\n\n <button\n class=\"btn\"\n (click)=\"cancelAll()\"\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\n [class.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </button>\n <button\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\n class=\"btn\"\n (click)=\"pauseAll()\"\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\n [class.disabled]=\"IsUploading() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconPause\"></span>\n </button>\n <button\n *ngIf=\"autoupload && enablepause && IsPaused()\"\n class=\"btn\"\n (click)=\"uploadAll()\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconContinue\"></span>\n </button>\n <button\n *ngIf=\"autoupload === false\"\n class=\"btn text-nowrap\"\n (click)=\"uploadAll()\"\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\n [class.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span\n [ngClass]=\"IconUpload\"\n class=\"pe-2\"></span\n >{{ buttonupload ? buttonupload : (lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async) }}\n </button>\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n</div>\n", styles: [".upload-component .custom-file{height:100%}.upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:100%}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"] }]
2950
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2466
2951
  type: Host
2467
2952
  }, {
2468
2953
  type: Optional
@@ -2473,17 +2958,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2473
2958
  * @see https://github.com/kukhariev/ngx-uploadx/
2474
2959
  */
2475
2960
  class SacUploadMultipleComponent extends SacUploadMultipleCommon {
2961
+ // #region Constructors
2476
2962
  /**
2477
- * Konstruktor
2478
- * @param parent Formular
2479
- * @param injector Angular Dependency Injection Service
2480
- * @param renderer Angular Rendering Engine
2481
- * @param ngZone ngZone
2963
+ * Constructor
2964
+ * @param formLayout SacFormLayout to define scoped layout settings
2965
+ * @param injector Injector for injecting services
2966
+ * @param renderer Angular rendering engine
2967
+ * @param ngZone ngZone to manage external javascripts
2482
2968
  */
2483
- constructor(parent, injector, renderer, ngZone) {
2484
- super(parent, injector, renderer, ngZone);
2969
+ constructor(formLayout, injector, renderer, ngZone) {
2970
+ super(formLayout, injector, renderer, ngZone);
2485
2971
  }
2486
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacUploadMultipleComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2972
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacUploadMultipleComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2487
2973
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacUploadMultipleComponent, isStandalone: true, selector: "sac-uploadmultiple", providers: [
2488
2974
  {
2489
2975
  provide: NG_VALUE_ACCESSOR,
@@ -2495,7 +2981,7 @@ class SacUploadMultipleComponent extends SacUploadMultipleCommon {
2495
2981
  multi: true,
2496
2982
  useExisting: forwardRef(() => SacUploadMultipleComponent),
2497
2983
  },
2498
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div class=\"upload-component\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div\r\n class=\"btn-group\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <div\r\n class=\"btn upload-input custom-file\"\r\n [class.disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <i [class]=\"IconBrowse\" class=\"pe-2\"></i>\r\n <span class=\"upload-browse\">Browse</span>\r\n <input\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n #files\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n multiple\r\n [disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\r\n />\r\n </div>\r\n\r\n <div class=\"btn-group\">\r\n <!-- image-preview-clear button -->\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancelAll()\"\r\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\r\n class=\"btn\"\r\n (click)=\"pauseAll()\"\r\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && IsPaused() === true\"\r\n class=\"btn\"\r\n (click)=\"uploadAll()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"uploadAll()\"\r\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span> {{\r\n lngResourceService.GetString('UPLOAD_BUTTON_UPLOAD') | async }}\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let file of uploads\" style=\"margin-top: 5px\">\r\n <div class=\"input-group upload-component upload-multiple\">\r\n <div\r\n class=\"form-control upload-progress\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\"\r\n >\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && file.status !== 'paused')\"\r\n class=\"btn\"\r\n (click)=\"pause(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'uploading' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && file.status === 'paused'\"\r\n class=\"btn\"\r\n (click)=\"upload(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"upload(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'added' && file.status !== 'paused' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span>{{\r\n lngResourceService.GetString('UPLOAD_BUTTON_UPLOAD') | async }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:calc(2.25rem + 2px)}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2984
+ ], usesInheritance: true, ngImport: i0, template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\">\n <div class=\"upload-component\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <div\n class=\"btn-group\"\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <div\n class=\"btn upload-input custom-file\"\n [class.disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <i\n [ngClass]=\"IconBrowse\"\n class=\"pe-2\"></i>\n <span class=\"upload-browse\">{{\n buttonbrowse ? buttonbrowse : (lngResourceService.GetString(validationKeyService.UploadButtonBrowse) | async)\n }}</span>\n <input\n id=\"{{ name }}_uploadinput\"\n type=\"file\"\n class=\"custom-file-input\"\n #files\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n multiple\n [disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\" />\n </div>\n\n <div\n class=\"btn-group\"\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\">\n <!-- image-preview-clear button -->\n <button\n class=\"btn\"\n (click)=\"cancelAll()\"\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </button>\n <button\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\n class=\"btn\"\n (click)=\"pauseAll()\"\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconPause\"></span>\n </button>\n <button\n *ngIf=\"autoupload && enablepause && IsPaused() === true\"\n class=\"btn\"\n (click)=\"uploadAll()\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconContinue\"></span>\n </button>\n <button\n *ngIf=\"autoupload === false\"\n class=\"btn text-nowrap\"\n (click)=\"uploadAll()\"\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span\n [ngClass]=\"IconUpload\"\n class=\"pe-2\"></span\n >{{ buttonupload ? buttonupload : (lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async) }}\n </button>\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngFor=\"let file of uploads\"\n style=\"margin-top: 5px\">\n <div\n class=\"input-group upload-component upload-multiple\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <div\n class=\"form-control upload-progress\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"file.progress === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"file.progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"file.progress\">\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\n </div>\n </div>\n </div>\n\n <button\n class=\"btn\"\n (click)=\"cancel(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </button>\n <button\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && file.status !== 'paused')\"\n class=\"btn\"\n (click)=\"pause(file.uploadId)\"\n [attr.disabled]=\"file.status !== 'uploading' ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconPause\"></span>\n </button>\n <button\n *ngIf=\"autoupload && enablepause && file.status === 'paused'\"\n class=\"btn\"\n (click)=\"upload(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconContinue\"></span>\n </button>\n <button\n *ngIf=\"autoupload === false\"\n class=\"btn text-nowrap\"\n (click)=\"upload(file.uploadId)\"\n [attr.disabled]=\"file.status !== 'added' && file.status !== 'paused' ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span\n [ngClass]=\"IconUpload\"\n class=\"pe-2\"></span\n >{{ buttonupload ? buttonupload : (lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async) }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".upload-component .custom-file{height:100%}.upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:100%}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
2499
2985
  }
2500
2986
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacUploadMultipleComponent, decorators: [{
2501
2987
  type: Component,
@@ -2510,8 +2996,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2510
2996
  multi: true,
2511
2997
  useExisting: forwardRef(() => SacUploadMultipleComponent),
2512
2998
  },
2513
- ], standalone: true, imports: [NgIf, NgClass, NgFor, AsyncPipe], template: "<div class=\"row mb-3\" [class.g-0]=\"disablelabel\">\r\n <label\r\n *ngIf=\"disablelabel === false && !isadaptivelabel\"\r\n id=\"{{name}}_label\"\r\n for=\"{{name}}\"\r\n class=\"col-12 col-form-label col-form-label-sm\"\r\n [ngClass]=\"[labelsize !== 12 ? 'col-md-' + labelsize : 'sr-only']\"\r\n >{{label}}</label\r\n >\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"[disablelabel === false ? 'col-md-' + _inputsize : 'col-sm-12']\"\r\n >\r\n <div class=\"upload-component\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div\r\n class=\"btn-group\"\r\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n >\r\n <div\r\n class=\"btn upload-input custom-file\"\r\n [class.disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <i [class]=\"IconBrowse\" class=\"pe-2\"></i>\r\n <span class=\"upload-browse\">Browse</span>\r\n <input\r\n type=\"file\"\r\n class=\"custom-file-input\"\r\n #files\r\n (click)=\"files.value = ''\"\r\n (uploadxState)=\"onUpload($event)\"\r\n multiple\r\n [disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\r\n />\r\n </div>\r\n\r\n <div class=\"btn-group\">\r\n <!-- image-preview-clear button -->\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancelAll()\"\r\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\r\n class=\"btn\"\r\n (click)=\"pauseAll()\"\r\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && IsPaused() === true\"\r\n class=\"btn\"\r\n (click)=\"uploadAll()\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"uploadAll()\"\r\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span> {{\r\n lngResourceService.GetString('UPLOAD_BUTTON_UPLOAD') | async }}\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\r\n class=\"invalid-feedback\"\r\n >\r\n {{ GetErrorMessage() | async }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let file of uploads\" style=\"margin-top: 5px\">\r\n <div class=\"input-group upload-component upload-multiple\">\r\n <div\r\n class=\"form-control upload-progress\"\r\n [class.is-invalid]=\"invalid && (dirty || touched)\"\r\n >\r\n <div class=\"progress\">\r\n <div\r\n class=\"progress-bar\"\r\n [class.progress-bar-success]=\"file.progress===100\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"file.progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [style.width.%]=\"file.progress\"\r\n >\r\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"btn\"\r\n (click)=\"cancel(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconDelete\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && file.status !== 'paused')\"\r\n class=\"btn\"\r\n (click)=\"pause(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'uploading' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconPause\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload && enablepause && file.status === 'paused'\"\r\n class=\"btn\"\r\n (click)=\"upload(file.uploadId)\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconContinue\"></span>\r\n </button>\r\n <button\r\n *ngIf=\"autoupload === false\"\r\n class=\"btn text-nowrap\"\r\n (click)=\"upload(file.uploadId)\"\r\n [attr.disabled]=\"file.status !== 'added' && file.status !== 'paused' ? 'disabled' : null\"\r\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\r\n [class.btn-danger]=\"invalid && (dirty || touched)\"\r\n >\r\n <span [class]=\"IconUpload\" class=\"pe-2\"></span>{{\r\n lngResourceService.GetString('UPLOAD_BUTTON_UPLOAD') | async }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:calc(2.25rem + 2px)}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"] }]
2514
- }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2999
+ ], standalone: true, imports: [
3000
+ NgIf,
3001
+ NgClass,
3002
+ NgFor,
3003
+ AsyncPipe,
3004
+ SacToControlWidthCssPipe,
3005
+ SacToLabelWidthCssPipe,
3006
+ SacToLabelHeightPipe,
3007
+ SacTooltipComponent,
3008
+ SacToControlHeightPipe,
3009
+ SacTestingAttributePipe,
3010
+ ], template: "<div\n id=\"{{ name }}\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <label\n *ngIf=\"disablelabel === false && !isAdaptiveLabel\"\n id=\"{{ name }}_label\"\n for=\"{{ name }}_uploadinput\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\">\n <div class=\"upload-component\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div\n [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <div\n class=\"btn-group\"\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\"\n [class.is-invalid]=\"isinlineerrorenabled && invalid && (dirty || touched)\">\n <div\n class=\"btn upload-input custom-file\"\n [class.disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <i\n [ngClass]=\"IconBrowse\"\n class=\"pe-2\"></i>\n <span class=\"upload-browse\">{{\n buttonbrowse ? buttonbrowse : (lngResourceService.GetString(validationKeyService.UploadButtonBrowse) | async)\n }}</span>\n <input\n id=\"{{ name }}_uploadinput\"\n type=\"file\"\n class=\"custom-file-input\"\n #files\n (click)=\"files.value = ''\"\n (uploadxState)=\"onUpload($event)\"\n multiple\n [disabled]=\"maxfiles > 0 && uploads.length >= maxfiles\" />\n </div>\n\n <div\n class=\"btn-group\"\n [class.btn-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.btn-group-lg]=\"componentHeight === ControlHeight.Large\">\n <!-- image-preview-clear button -->\n <button\n class=\"btn\"\n (click)=\"cancelAll()\"\n [attr.disabled]=\"HasQueueItem() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </button>\n <button\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && IsPaused() === false)\"\n class=\"btn\"\n (click)=\"pauseAll()\"\n [attr.disabled]=\"IsUploading() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconPause\"></span>\n </button>\n <button\n *ngIf=\"autoupload && enablepause && IsPaused() === true\"\n class=\"btn\"\n (click)=\"uploadAll()\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconContinue\"></span>\n </button>\n <button\n *ngIf=\"autoupload === false\"\n class=\"btn text-nowrap\"\n (click)=\"uploadAll()\"\n [attr.disabled]=\"IsStateToUpload() === false ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span\n [ngClass]=\"IconUpload\"\n class=\"pe-2\"></span\n >{{ buttonupload ? buttonupload : (lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async) }}\n </button>\n </div>\n </div>\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngFor=\"let file of uploads\"\n style=\"margin-top: 5px\">\n <div\n class=\"input-group upload-component upload-multiple\"\n [class.input-group-sm]=\"componentHeight === ControlHeight.Small\"\n [class.input-group-lg]=\"componentHeight === ControlHeight.Large\">\n <div\n class=\"form-control upload-progress\"\n [class.is-invalid]=\"invalid && (dirty || touched)\">\n <div class=\"progress\">\n <div\n class=\"progress-bar\"\n [class.progress-bar-success]=\"file.progress === 100\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"file.progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width.%]=\"file.progress\">\n <span class=\"progress-text text-dark\">{{ file.name }}</span>\n </div>\n </div>\n </div>\n\n <button\n class=\"btn\"\n (click)=\"cancel(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconDelete\"></span>\n </button>\n <button\n *ngIf=\"(autoupload === false && enablepause) || (autoupload && enablepause && file.status !== 'paused')\"\n class=\"btn\"\n (click)=\"pause(file.uploadId)\"\n [attr.disabled]=\"file.status !== 'uploading' ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconPause\"></span>\n </button>\n <button\n *ngIf=\"autoupload && enablepause && file.status === 'paused'\"\n class=\"btn\"\n (click)=\"upload(file.uploadId)\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span [class]=\"IconContinue\"></span>\n </button>\n <button\n *ngIf=\"autoupload === false\"\n class=\"btn text-nowrap\"\n (click)=\"upload(file.uploadId)\"\n [attr.disabled]=\"file.status !== 'added' && file.status !== 'paused' ? 'disabled' : null\"\n [class.btn-secondary]=\"!(invalid && (dirty || touched))\"\n [class.btn-danger]=\"invalid && (dirty || touched)\">\n <span\n [ngClass]=\"IconUpload\"\n class=\"pe-2\"></span\n >{{ buttonupload ? buttonupload : (lngResourceService.GetString(validationKeyService.UploadButtonUpload) | async) }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".upload-component .custom-file{height:100%}.upload-component .custom-file .custom-file-input{inset:0;position:absolute;opacity:0}.upload-component.upload-multiple .upload-progress .progress{border-top-right-radius:0;border-bottom-right-radius:0}.upload-component.upload-single .upload-progress .progress{border-radius:0}.upload-component .upload-progress{padding:0;border:0}.upload-component .upload-progress .progress{height:100%}.upload-component .upload-progress .progress .progress-text{position:absolute;left:0;right:0}\n"] }]
3011
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
2515
3012
  type: Host
2516
3013
  }, {
2517
3014
  type: Optional
@@ -2544,17 +3041,90 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2544
3041
  }]
2545
3042
  }] });
2546
3043
 
3044
+ /**
3045
+ * Treeview Compomnent
3046
+ */
3047
+ class SacTreeviewComponent extends SacTreeviewCommon {
3048
+ // #region Constructors
3049
+ /**
3050
+ * Constructor
3051
+ * @param formLayout SacFormLayout to define scoped layout settings
3052
+ * @param injector Component Injector
3053
+ */
3054
+ constructor(formLayout, injector) {
3055
+ super(formLayout, injector);
3056
+ }
3057
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTreeviewComponent, deps: [{ token: SacFormLayoutDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
3058
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacTreeviewComponent, isStandalone: true, selector: "sac-treeview", providers: [
3059
+ {
3060
+ provide: NG_VALUE_ACCESSOR,
3061
+ multi: true,
3062
+ useExisting: SacTreeviewComponent,
3063
+ },
3064
+ {
3065
+ provide: NG_VALIDATORS,
3066
+ useExisting: forwardRef(() => SacTreeviewComponent),
3067
+ multi: true,
3068
+ },
3069
+ ], usesInheritance: true, ngImport: i0, template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\">\n <div [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"w-100\"\n [style.min-width]=\"helptextmode === 'tooltip' && helptext && disablelabel ? 0 : null\"\n [class.me-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <ul\n class=\"list-group list-group-flush\"\n id=\"{{ name }}\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [class.border]=\"invalid && (dirty || touched)\"\n [class.border-danger]=\"invalid && (dirty || touched)\">\n <ng-container *ngFor=\"let node of data\">\n <ng-template\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{ node: node, deep: 0, path: '', textpath: '' }\">\n </ng-template>\n </ng-container>\n </ul>\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n </div>\n</div>\n<ng-template\n #treeItem\n let-node=\"node\"\n let-deep=\"deep\"\n let-path=\"path\"\n let-textpath=\"textpath\">\n <li\n class=\"list-group-item list-group-item-action py-1 px-2 d-flex align-items-center\"\n [class.active]=\"isSelectedState(node)\"\n (mouseenter)=\"setHoverState(node, true)\"\n (mouseleave)=\"setHoverState(node, false)\"\n style=\"cursor: pointer\"\n attr.data-path=\"{{ path }}/{{ getStringField(node, attrid) }}\"\n attr.data-textpath=\"{{ textpath }}/{{ getStringField(node, attrlabel) }}\">\n <div\n class=\"mx-3\"\n *ngFor=\"let i of count(deep)\">\n </div>\n\n <div\n (click)=\"onNodeClicked(node)\"\n *ngIf=\"expandedstate === 'true' || expandedstate === true\"\n class=\"me-2\"\n [ngClass]=\"!hasChildren(node) ? iconFolderEmpty : !isExpandedState(node) ? iconFolderCollabsed : isExpandedState(node) ? iconFolderOpen : ''\">\n </div>\n\n <div\n (click)=\"onNodeClicked(node)\"\n *ngIf=\"attricon && getStringField(node, attricon)\">\n <ng-template\n [ngTemplateOutlet]=\"templateicon || defaultTemplateIcon\"\n [ngTemplateOutletContext]=\"{ node: node }\">\n </ng-template>\n </div>\n\n <div\n (click)=\"onNodeClicked(node)\"\n class=\"flex-grow-1 py-1\"\n [style.max-width.percent]=\"enableellipsis ? '100' : null\"\n [style.overflow]=\"enableellipsis ? 'hidden' : null\"\n [style.text-overflow]=\"enableellipsis ? 'ellipsis' : null\"\n [style.white-space]=\"enableellipsis ? 'nowrap' : null\">\n <ng-template\n [ngTemplateOutlet]=\"templatelabel || defaultTemplateLabel\"\n [ngTemplateOutletContext]=\"{ node: node, label: getStringField(node, attrlabel) }\">\n </ng-template>\n </div>\n\n <div\n (click)=\"setSelectedState(node)\"\n class=\"flex-shrink-0\"\n *ngIf=\"!isDisabledState(node) && (showactionalways || isSelectedState(node) || isHoverState(node))\">\n <ng-template\n [ngTemplateOutlet]=\"templateaction || defaultTemplateAction\"\n [ngTemplateOutletContext]=\"{ node: node, actionhandler: onActionClicked.bind(this) }\">\n </ng-template>\n </div>\n </li>\n\n <ng-container *ngIf=\"isExpandedState(node)\">\n <ng-template\n *ngFor=\"let child of getChildren(node)\"\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{\n node: child,\n deep: deep + 1,\n path: path + '/' + getStringField(node, attrid),\n textpath: textpath + '/' + getStringField(node, attrlabel)\n }\">\n </ng-template>\n </ng-container>\n</ng-template>\n<ng-template\n #defaultTemplateLabel\n let-label=\"label\"\n let-node=\"node\">\n <span [title]=\"label\">{{ label }}</span>\n</ng-template>\n\n<ng-template\n #defaultTemplateIcon\n let-node=\"node\">\n <div\n class=\"me-2\"\n [ngClass]=\"getStringField(node, attricon)\">\n </div>\n</ng-template>\n\n<ng-template\n #defaultTemplateAction\n let-node=\"node\"\n let-actionhandler=\"actionhandler\">\n <a\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"actionhandler({ action: 'default', node: node })\">\n <i [class]=\"iconAction\"></i>\n </a>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: SacToLabelWidthCssPipe, name: "toLabelWidthCss" }, { kind: "pipe", type: SacToLabelHeightPipe, name: "toLabelHeight" }, { kind: "component", type: SacTooltipComponent, selector: "sac-tooltip" }, { kind: "pipe", type: SacToControlWidthCssPipe, name: "toControlWidthCss" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacToControlHeightPipe, name: "toControlHeight" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }] }); }
3070
+ }
3071
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacTreeviewComponent, decorators: [{
3072
+ type: Component,
3073
+ args: [{ selector: 'sac-treeview', providers: [
3074
+ {
3075
+ provide: NG_VALUE_ACCESSOR,
3076
+ multi: true,
3077
+ useExisting: SacTreeviewComponent,
3078
+ },
3079
+ {
3080
+ provide: NG_VALIDATORS,
3081
+ useExisting: forwardRef(() => SacTreeviewComponent),
3082
+ multi: true,
3083
+ },
3084
+ ], standalone: true, imports: [
3085
+ NgIf,
3086
+ NgFor,
3087
+ NgTemplateOutlet,
3088
+ NgClass,
3089
+ SacToLabelWidthCssPipe,
3090
+ SacToLabelHeightPipe,
3091
+ SacTooltipComponent,
3092
+ SacToControlWidthCssPipe,
3093
+ AsyncPipe,
3094
+ SacToControlHeightPipe,
3095
+ SacTestingAttributePipe,
3096
+ ], template: "<div\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\"\n class=\"row mb-3\"\n [class.g-0]=\"disablelabel\">\n <label\n for=\"{{ name }}\"\n class=\"col-12 col-form-label d-flex\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toLabelWidthCss) : 'visually-hidden', componentHeight | toLabelHeight]\"\n [class.required]=\"isrequired\">\n <div\n class=\"text flex-grow-0\"\n [class.flex-sm-grow-1]=\"splitlabelandhelptext\">\n {{ label }}\n </div>\n <sac-tooltip\n *ngIf=\"helptextmode === 'tooltip' && helptext\"\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ms-1\">\n </span>\n </sac-tooltip>\n </label>\n <div\n class=\"col-12\"\n [ngClass]=\"[disablelabel === false ? (this.labelSizes | toControlWidthCss) : '']\">\n <div [class.d-flex]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <div\n class=\"w-100\"\n [style.min-width]=\"helptextmode === 'tooltip' && helptext && disablelabel ? 0 : null\"\n [class.me-1]=\"helptextmode === 'tooltip' && helptext && disablelabel\">\n <ul\n class=\"list-group list-group-flush\"\n id=\"{{ name }}\"\n [class.is-invalid]=\"invalid && (dirty || touched)\"\n [class.border]=\"invalid && (dirty || touched)\"\n [class.border-danger]=\"invalid && (dirty || touched)\">\n <ng-container *ngFor=\"let node of data\">\n <ng-template\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{ node: node, deep: 0, path: '', textpath: '' }\">\n </ng-template>\n </ng-container>\n </ul>\n\n <div\n *ngIf=\"isinlineerrorenabled && invalid && (dirty || touched)\"\n class=\"invalid-feedback\">\n {{ GetErrorMessage() | async }}\n </div>\n\n <div\n *ngIf=\"helptextmode === 'text' && helptext\"\n class=\"form-text\">\n {{ helptext }}\n </div>\n </div>\n\n <div\n *ngIf=\"helptextmode === 'tooltip' && helptext && disablelabel\"\n class=\"form-control-plaintext align-self-top ms-2 me-1 w-auto\"\n [ngClass]=\"[componentHeight | toControlHeight]\">\n <sac-tooltip\n [tooltiptext]=\"helptext\"\n [inlinemode]=\"true\">\n <span\n [ngClass]=\"HelptextTooltipIcon\"\n class=\"ml-1\">\n </span>\n </sac-tooltip>\n </div>\n </div>\n </div>\n</div>\n<ng-template\n #treeItem\n let-node=\"node\"\n let-deep=\"deep\"\n let-path=\"path\"\n let-textpath=\"textpath\">\n <li\n class=\"list-group-item list-group-item-action py-1 px-2 d-flex align-items-center\"\n [class.active]=\"isSelectedState(node)\"\n (mouseenter)=\"setHoverState(node, true)\"\n (mouseleave)=\"setHoverState(node, false)\"\n style=\"cursor: pointer\"\n attr.data-path=\"{{ path }}/{{ getStringField(node, attrid) }}\"\n attr.data-textpath=\"{{ textpath }}/{{ getStringField(node, attrlabel) }}\">\n <div\n class=\"mx-3\"\n *ngFor=\"let i of count(deep)\">\n </div>\n\n <div\n (click)=\"onNodeClicked(node)\"\n *ngIf=\"expandedstate === 'true' || expandedstate === true\"\n class=\"me-2\"\n [ngClass]=\"!hasChildren(node) ? iconFolderEmpty : !isExpandedState(node) ? iconFolderCollabsed : isExpandedState(node) ? iconFolderOpen : ''\">\n </div>\n\n <div\n (click)=\"onNodeClicked(node)\"\n *ngIf=\"attricon && getStringField(node, attricon)\">\n <ng-template\n [ngTemplateOutlet]=\"templateicon || defaultTemplateIcon\"\n [ngTemplateOutletContext]=\"{ node: node }\">\n </ng-template>\n </div>\n\n <div\n (click)=\"onNodeClicked(node)\"\n class=\"flex-grow-1 py-1\"\n [style.max-width.percent]=\"enableellipsis ? '100' : null\"\n [style.overflow]=\"enableellipsis ? 'hidden' : null\"\n [style.text-overflow]=\"enableellipsis ? 'ellipsis' : null\"\n [style.white-space]=\"enableellipsis ? 'nowrap' : null\">\n <ng-template\n [ngTemplateOutlet]=\"templatelabel || defaultTemplateLabel\"\n [ngTemplateOutletContext]=\"{ node: node, label: getStringField(node, attrlabel) }\">\n </ng-template>\n </div>\n\n <div\n (click)=\"setSelectedState(node)\"\n class=\"flex-shrink-0\"\n *ngIf=\"!isDisabledState(node) && (showactionalways || isSelectedState(node) || isHoverState(node))\">\n <ng-template\n [ngTemplateOutlet]=\"templateaction || defaultTemplateAction\"\n [ngTemplateOutletContext]=\"{ node: node, actionhandler: onActionClicked.bind(this) }\">\n </ng-template>\n </div>\n </li>\n\n <ng-container *ngIf=\"isExpandedState(node)\">\n <ng-template\n *ngFor=\"let child of getChildren(node)\"\n [ngTemplateOutlet]=\"treeItem\"\n [ngTemplateOutletContext]=\"{\n node: child,\n deep: deep + 1,\n path: path + '/' + getStringField(node, attrid),\n textpath: textpath + '/' + getStringField(node, attrlabel)\n }\">\n </ng-template>\n </ng-container>\n</ng-template>\n<ng-template\n #defaultTemplateLabel\n let-label=\"label\"\n let-node=\"node\">\n <span [title]=\"label\">{{ label }}</span>\n</ng-template>\n\n<ng-template\n #defaultTemplateIcon\n let-node=\"node\">\n <div\n class=\"me-2\"\n [ngClass]=\"getStringField(node, attricon)\">\n </div>\n</ng-template>\n\n<ng-template\n #defaultTemplateAction\n let-node=\"node\"\n let-actionhandler=\"actionhandler\">\n <a\n class=\"btn btn-sm btn-link text-secondary\"\n (click)=\"actionhandler({ action: 'default', node: node })\">\n <i [class]=\"iconAction\"></i>\n </a>\n</ng-template>\n" }]
3097
+ }], ctorParameters: function () { return [{ type: SacFormLayoutDirective, decorators: [{
3098
+ type: Host
3099
+ }, {
3100
+ type: Optional
3101
+ }] }, { type: i0.Injector }]; } });
3102
+
3103
+ class SACBootstrap5TreeviewModule {
3104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TreeviewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3105
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TreeviewModule, imports: [CommonModule, SacTreeviewComponent], exports: [SacTreeviewComponent] }); }
3106
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TreeviewModule, imports: [CommonModule] }); }
3107
+ }
3108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SACBootstrap5TreeviewModule, decorators: [{
3109
+ type: NgModule,
3110
+ args: [{
3111
+ imports: [CommonModule, SacTreeviewComponent],
3112
+ exports: [SacTreeviewComponent],
3113
+ }]
3114
+ }] });
3115
+
2547
3116
  /**
2548
3117
  * Validation Summary Kompontente
2549
3118
  */
2550
3119
  class SacValidationSummaryComponent extends SacValidationSummaryCommon {
3120
+ // #region Constructors
2551
3121
  /**
2552
- * Konstruktor
2553
- * @param parent Formular
2554
- * @param injector Angular Dependency Injection Service
3122
+ * Constructor
3123
+ * @param formControl Instance of Form Component to receive invalid form controls
3124
+ * @param injector Injector for injecting services
2555
3125
  */
2556
- constructor(parent, injector) {
2557
- super(parent, injector);
3126
+ constructor(formControl, injector) {
3127
+ super(formControl, injector);
2558
3128
  }
2559
3129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacValidationSummaryComponent, deps: [{ token: SacFormDirective, host: true, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
2560
3130
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacValidationSummaryComponent, isStandalone: true, selector: "sac-validationsummary", providers: [
@@ -2563,9 +3133,7 @@ class SacValidationSummaryComponent extends SacValidationSummaryCommon {
2563
3133
  multi: true,
2564
3134
  useExisting: SacValidationSummaryComponent,
2565
3135
  },
2566
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"hasErrors\">\r\n <ul class=\"mb-0\">\r\n <li *ngFor=\"let error of formErrors\">{{error | async}}</li>\r\n </ul>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], viewProviders: [
2567
- { provide: ControlContainer, useExisting: SacFormDirective },
2568
- ] }); }
3136
+ ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"alert alert-danger\"\n role=\"alert\"\n *ngIf=\"hasErrors\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <ul class=\"mb-0\">\n <li *ngFor=\"let error of formErrors\">{{ error | async }}</li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SacTestingAttributePipe, name: "testingattribute" }], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }] }); }
2569
3137
  }
2570
3138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacValidationSummaryComponent, decorators: [{
2571
3139
  type: Component,
@@ -2575,13 +3143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2575
3143
  multi: true,
2576
3144
  useExisting: SacValidationSummaryComponent,
2577
3145
  },
2578
- ], viewProviders: [
2579
- { provide: ControlContainer, useExisting: SacFormDirective },
2580
- ], standalone: true, imports: [
2581
- NgIf,
2582
- NgFor,
2583
- AsyncPipe,
2584
- ], template: "<div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"hasErrors\">\r\n <ul class=\"mb-0\">\r\n <li *ngFor=\"let error of formErrors\">{{error | async}}</li>\r\n </ul>\r\n</div>\r\n" }]
3146
+ ], viewProviders: [{ provide: ControlContainer, useExisting: SacFormDirective }], standalone: true, imports: [NgIf, NgFor, AsyncPipe, SacTestingAttributePipe], template: "<div\n class=\"alert alert-danger\"\n role=\"alert\"\n *ngIf=\"hasErrors\"\n [attr.data-e2e-key]=\"name | testingattribute : e2eidentifier\">\n <ul class=\"mb-0\">\n <li *ngFor=\"let error of formErrors\">{{ error | async }}</li>\n </ul>\n</div>\n" }]
2585
3147
  }], ctorParameters: function () { return [{ type: SacFormDirective, decorators: [{
2586
3148
  type: Host
2587
3149
  }, {
@@ -2631,7 +3193,7 @@ class SacWizardComponent extends SacWizardCommon {
2631
3193
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacWizardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2632
3194
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SacWizardComponent, isStandalone: true, selector: "sac-wizard", providers: [
2633
3195
  { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: SacWizardComponent },
2634
- ], queries: [{ propertyName: "_wizardItems", predicate: SacWizardItemComponent }], usesInheritance: true, ngImport: i0, template: "<ul class=\"nav nav-wizard\" role=\"tablist\">\r\n <li *ngFor=\"let item of _wizardItems\" class=\"nav-item\" [ngClass]=\"{ 'active': item._active, 'disabled': item._disabled, 'success': item._iscomplete }\"\r\n [ngStyle]=\"{'cursor': item._disabled ? 'not-allowed' : 'pointer'}\">\r\n <a role=\"tab\" (click)=\"selectStep(item)\">\r\n <div class=\"circle\">\r\n <span class=\"step\"></span>\r\n </div>\r\n </a>\r\n <div class=\"info\">\r\n <a (click)=\"selectStep(item)\">{{item._label}}</a>\r\n </div>\r\n </li>\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
3196
+ ], queries: [{ propertyName: "_wizardItems", predicate: SacWizardItemComponent }], usesInheritance: true, ngImport: i0, template: "<ul\n class=\"nav nav-wizard\"\n role=\"tablist\">\n <li\n *ngFor=\"let item of _wizardItems\"\n class=\"nav-item\"\n [ngClass]=\"{ active: item._active, disabled: item._disabled, success: item._iscomplete }\"\n [ngStyle]=\"{ cursor: item._disabled ? 'not-allowed' : 'pointer' }\">\n <a\n role=\"tab\"\n (click)=\"selectStep(item)\">\n <div class=\"circle\">\n <span class=\"step\"></span>\n </div>\n </a>\n <div class=\"info\">\n <a>{{ item._label }}</a>\n </div>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
2635
3197
  }
2636
3198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacWizardComponent, decorators: [{
2637
3199
  type: Component,
@@ -2641,7 +3203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2641
3203
  NgFor,
2642
3204
  NgClass,
2643
3205
  NgStyle,
2644
- ], template: "<ul class=\"nav nav-wizard\" role=\"tablist\">\r\n <li *ngFor=\"let item of _wizardItems\" class=\"nav-item\" [ngClass]=\"{ 'active': item._active, 'disabled': item._disabled, 'success': item._iscomplete }\"\r\n [ngStyle]=\"{'cursor': item._disabled ? 'not-allowed' : 'pointer'}\">\r\n <a role=\"tab\" (click)=\"selectStep(item)\">\r\n <div class=\"circle\">\r\n <span class=\"step\"></span>\r\n </div>\r\n </a>\r\n <div class=\"info\">\r\n <a (click)=\"selectStep(item)\">{{item._label}}</a>\r\n </div>\r\n </li>\r\n</ul>\r\n" }]
3206
+ ], template: "<ul\n class=\"nav nav-wizard\"\n role=\"tablist\">\n <li\n *ngFor=\"let item of _wizardItems\"\n class=\"nav-item\"\n [ngClass]=\"{ active: item._active, disabled: item._disabled, success: item._iscomplete }\"\n [ngStyle]=\"{ cursor: item._disabled ? 'not-allowed' : 'pointer' }\">\n <a\n role=\"tab\"\n (click)=\"selectStep(item)\">\n <div class=\"circle\">\n <span class=\"step\"></span>\n </div>\n </a>\n <div class=\"info\">\n <a>{{ item._label }}</a>\n </div>\n </li>\n</ul>\n" }]
2645
3207
  }], propDecorators: { _wizardItems: [{
2646
3208
  type: ContentChildren,
2647
3209
  args: [SacWizardItemComponent]
@@ -2672,5 +3234,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2672
3234
  * Generated bundle index. Do not edit.
2673
3235
  */
2674
3236
 
2675
- export { NGFORM_FACTORY, SACBootstrap5BrowserModule, SACBootstrap5ButtonModule, SACBootstrap5CheckboxModule, SACBootstrap5ConfirmModule, SACBootstrap5ContextmenuModule, SACBootstrap5DateTimeModule, SACBootstrap5DialogModule, SACBootstrap5DropdownModule, SACBootstrap5FormModule, SACBootstrap5GridModule, SACBootstrap5InputModule, SACBootstrap5ListModule, SACBootstrap5MultilanguageModule, SACBootstrap5StaticLabelModule, SACBootstrap5TabsModule, SACBootstrap5TinyMceModule, SACBootstrap5UploadModule, SACBootstrap5ValidationSummaryModule, SACBootstrap5WizardModule, SACFORM_FACTORY, SacBrowserComponent, SacButtonComponent, SacCheckboxComponent, SacConfirmComponent, SacContextmenuAnchorDirective, SacContextmenuComponent, SacContextmenuItemButtonComponent, SacContextmenuItemSplitterComponent, SacDateComponent, SacDateSelectorComponent, SacDateTimeComponent, SacDialogComponent, SacDropdownComponent, SacDropdownOptionDirective, SacDropzoneMultipleComponent, SacDropzoneSingleComponent, SacFormDirective, SacGridButtonComponent, SacGridColumnActionComponent, SacGridColumnComponent, SacGridComponent, SacGridImageComponent, SacInheritFormDirective, SacInputAreaComponent, SacInputComponent, SacInputCurrencyComponent, SacInputDecimalComponent, SacInputEmailComponent, SacInputIntegerComponent, SacInputPasswordComponent, SacInputSearchComponent, SacListboxComponent, SacListboxOptionDirective, SacMultilanguageInputAreaComponent, SacMultilanguageInputComponent, SacPagingComponent, SacRadiobuttonComponent, SacRadiobuttonsComponent, SacStaticFormContainerComponent, SacStaticLabelComponent, SacTabComponent, SacTabItemComponent, SacTimeComponent, SacTinyMceComponent, SacUploadComponent, SacUploadMultipleComponent, SacValidationSummaryComponent, SacWizardComponent, SacWizardItemComponent, ServiceConfirm };
3237
+ export { NGFORM_FACTORY, SACBootstrap5BrowserModule, SACBootstrap5ButtonModule, SACBootstrap5CheckboxModule, SACBootstrap5ConfirmModule, SACBootstrap5ContextmenuModule, SACBootstrap5DateTimeModule, SACBootstrap5DialogModule, SACBootstrap5DropdownModule, SACBootstrap5FormModule, SACBootstrap5GridModule, SACBootstrap5InputModule, SACBootstrap5LayoutModule, SACBootstrap5ListModule, SACBootstrap5MultilanguageModule, SACBootstrap5StaticLabelModule, SACBootstrap5TabsModule, SACBootstrap5TinyMceModule, SACBootstrap5TooltipModule, SACBootstrap5TreeviewModule, SACBootstrap5UploadModule, SACBootstrap5ValidationSummaryModule, SACBootstrap5WizardModule, SACFORM_FACTORY, SacBrowserComponent, SacButtonComponent, SacCheckboxComponent, SacConfirmComponent, SacContextmenuAnchorDirective, SacContextmenuComponent, SacContextmenuItemButtonComponent, SacContextmenuItemSplitterComponent, SacDateComponent, SacDateSelectorComponent, SacDateTimeComponent, SacDialogComponent, SacDropdownComponent, SacDropdownOptionDirective, SacDropzoneMultipleComponent, SacDropzoneSingleComponent, SacFormDirective, SacFormLayoutDirective, SacGridButtonComponent, SacGridColumnActionComponent, SacGridColumnComponent, SacGridComponent, SacGridImageComponent, SacInheritFormDirective, SacInputAreaComponent, SacInputComponent, SacInputCurrencyComponent, SacInputDecimalComponent, SacInputEmailComponent, SacInputIntegerComponent, SacInputPasswordComponent, SacInputSearchComponent, SacListboxComponent, SacListboxOptionDirective, SacMultilanguageInputAreaComponent, SacMultilanguageInputComponent, SacPagingComponent, SacRadiobuttonComponent, SacRadiobuttonsComponent, SacStaticFormContainerComponent, SacStaticLabelComponent, SacTabComponent, SacTabItemComponent, SacTimeComponent, SacTinyMceComponent, SacToControlHeightPipe, SacToControlWidthCssPipe, SacToLabelHeightPipe, SacToLabelWidthCssPipe, SacTooltipComponent, SacTreeviewComponent, SacUploadComponent, SacUploadMultipleComponent, SacValidationSummaryComponent, SacWizardComponent, SacWizardItemComponent, ServiceConfirm };
2676
3238
  //# sourceMappingURL=simpleangularcontrols-sac-bootstrap5.mjs.map