@simpleangularcontrols/sac-common 16.0.0-rc.5 → 16.0.0-rc.7

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 (29) hide show
  1. package/common/basemodelcontrol.d.ts.map +1 -1
  2. package/controls/confirm/confirm.button.d.ts +1 -1
  3. package/controls/confirm/confirm.button.d.ts.map +1 -1
  4. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  5. package/controls/input/inputcurrency.d.ts +6 -1
  6. package/controls/input/inputcurrency.d.ts.map +1 -1
  7. package/controls/layout/formlayout.d.ts +1 -1
  8. package/controls/layout/formlayout.d.ts.map +1 -1
  9. package/esm2022/common/basemodelcontrol.mjs +36 -36
  10. package/esm2022/controls/confirm/confirm.button.mjs +3 -3
  11. package/esm2022/controls/contextmenu/contextmenu.mjs +10 -10
  12. package/esm2022/controls/input/inputcurrency.mjs +9 -4
  13. package/esm2022/controls/layout/formlayout.mjs +4 -4
  14. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -3
  15. package/esm2022/public_api.mjs +6 -5
  16. package/esm2022/services/sac-configuration.service.mjs +16 -10
  17. package/esm2022/utilities/guid.mjs +7 -5
  18. package/fesm2022/simpleangularcontrols-sac-common.mjs +1046 -1033
  19. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  20. package/interfaces/ISacConfigurationService.d.ts +8 -0
  21. package/interfaces/ISacConfigurationService.d.ts.map +1 -1
  22. package/package.json +1 -1
  23. package/public_api.d.ts +7 -1
  24. package/public_api.d.ts.map +1 -1
  25. package/services/sac-configuration.service.d.ts +19 -0
  26. package/services/sac-configuration.service.d.ts.map +1 -1
  27. package/simpleangularcontrols-sac-common-16.0.0-rc.7.tgz +0 -0
  28. package/utilities/guid.d.ts.map +1 -1
  29. package/simpleangularcontrols-sac-common-16.0.0-rc.5.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"simpleangularcontrols-sac-common.mjs","sources":["../../../projects/sac-common/src/controls/buttons/button.ts","../../../projects/sac-common/src/enums/ControlHeight.ts","../../../projects/sac-common/src/services/sac-configuration.service.ts","../../../projects/sac-common/src/components/browser/models/browserfiledeleterequest.ts","../../../projects/sac-common/src/components/browser/models/browserfilerenamerequest.ts","../../../projects/sac-common/src/components/browser/models/browserfilesaverequest.ts","../../../projects/sac-common/src/components/browser/models/browsernodedeleterequest.ts","../../../projects/sac-common/src/components/browser/models/browsernodenewrequest.ts","../../../projects/sac-common/src/components/browser/models/browsernoderenamerequest.ts","../../../projects/sac-common/src/components/browser/models/browsernoderequest.ts","../../../projects/sac-common/src/services/sac-filebrowser.service.ts","../../../projects/sac-common/src/services/sac-icon.service.ts","../../../projects/sac-common/src/enums/IconType.ts","../../../projects/sac-common/src/services/sac-language.service.ts","../../../projects/sac-common/src/utilities/datatypes.ts","../../../projects/sac-common/src/utilities/interpolation.ts","../../../projects/sac-common/src/services/sac-validationkey.service.ts","../../../projects/sac-common/src/services/sac-localisation.service.ts","../../../projects/sac-common/src/utilities/convertion.ts","../../../projects/sac-common/src/utilities/guid.ts","../../../projects/sac-common/src/controls/layout/formlayout.ts","../../../projects/sac-common/src/common/basemodelcontrol.ts","../../../projects/sac-common/src/controls/checkbox/checkbox.ts","../../../projects/sac-common/src/validation/validationerroritem.ts","../../../projects/sac-common/src/validation/validationerrorcreator.ts","../../../projects/sac-common/src/validation/isDateValid.ts","../../../projects/sac-common/src/validation/invaliddate.validator.ts","../../../projects/sac-common/src/validation/maxdate.validator.ts","../../../projects/sac-common/src/validation/maxtime.validator.ts","../../../projects/sac-common/src/validation/maxvalue.validator.ts","../../../projects/sac-common/src/validation/mindate.validator.ts","../../../projects/sac-common/src/validation/minfiles.validator.ts","../../../projects/sac-common/src/validation/minlength.validator.ts","../../../projects/sac-common/src/validation/mintime.validator.ts","../../../projects/sac-common/src/validation/minvalue.validator.ts","../../../projects/sac-common/src/validation/multilanguagerequired.validator.ts","../../../projects/sac-common/src/validation/multilanguagerequiredany.validator.ts","../../../projects/sac-common/src/validation/pattern.validator.ts","../../../projects/sac-common/src/validation/required.validator.ts","../../../projects/sac-common/src/validation/email.validator.ts","../../../projects/sac-common/src/validation/validation.ts","../../../projects/sac-common/src/controls/checkbox/radiobuttons.ts","../../../projects/sac-common/src/controls/checkbox/radiobutton.ts","../../../projects/sac-common/src/controls/dialog/dialog.ts","../../../projects/sac-common/src/controls/form/form.ts","../../../projects/sac-common/src/common/baselistcontrol.ts","../../../projects/sac-common/src/common/baseselectcontrol.ts","../../../projects/sac-common/src/controls/list/dropdown.ts","../../../projects/sac-common/src/controls/list/listbox.ts","../../../projects/sac-common/src/controls/tabs/tab.ts","../../../projects/sac-common/src/controls/tabs/tabitem.ts","../../../projects/sac-common/src/controls/validation/validationsummary.ts","../../../projects/sac-common/src/common/baseinputcontrol.ts","../../../projects/sac-common/src/controls/input/input.ts","../../../projects/sac-common/src/controls/input/inputarea.ts","../../../projects/sac-common/src/controls/input/inputdecimal.ts","../../../projects/sac-common/src/controls/input/inputcurrency.ts","../../../projects/sac-common/src/controls/input/inputemail.ts","../../../projects/sac-common/src/controls/input/inputinteger.ts","../../../projects/sac-common/src/controls/input/inputpassword.ts","../../../projects/sac-common/src/controls/input/inputsearch.ts","../../../projects/sac-common/src/controls/grid/model.ts","../../../projects/sac-common/src/controls/grid/grid.ts","../../../projects/sac-common/src/controls/grid/gridbutton.ts","../../../projects/sac-common/src/controls/grid/gridcolumnbase.ts","../../../projects/sac-common/src/controls/grid/gridcolumn.ts","../../../projects/sac-common/src/controls/grid/gridcolumnaction.ts","../../../projects/sac-common/src/controls/grid/gridimage.ts","../../../projects/sac-common/src/controls/grid/paging.ts","../../../projects/sac-common/src/common/basedatetimecontrol.ts","../../../projects/sac-common/src/controls/datetime/date.ts","../../../projects/sac-common/src/controls/datetime/dateselector.ts","../../../projects/sac-common/src/controls/datetime/datetime.ts","../../../projects/sac-common/src/controls/datetime/time.ts","../../../projects/sac-common/src/controls/static/formcontainer.ts","../../../projects/sac-common/src/controls/static/staticlabel.ts","../../../projects/sac-common/src/controls/wizard/wizard.ts","../../../projects/sac-common/src/controls/wizard/wizarditem.ts","../../../projects/sac-common/src/controls/tinymce/tinymcedialogsettings.ts","../../../projects/sac-common/src/controls/tinymce/tinymce.ts","../../../projects/sac-common/src/controls/treeview/ngtreeitemaction.ts","../../../projects/sac-common/src/controls/treeview/treeview.ts","../../../projects/sac-common/src/controls/treeview/treeviewchild.ts","../../../projects/sac-common/src/utilities/enums.ts","../../../projects/sac-common/src/controls/tooltip/tooltip.ts","../../../projects/sac-common/src/common/baseuploadcontrol.ts","../../../projects/sac-common/src/controls/upload/dropzonemultiple.ts","../../../projects/sac-common/src/controls/upload/dropzonesingle.ts","../../../projects/sac-common/src/controls/upload/uploadmultiple.ts","../../../projects/sac-common/src/controls/upload/uploadsingle.ts","../../../projects/sac-common/src/controls/multilanguage/multilanguageinput.ts","../../../projects/sac-common/src/controls/multilanguage/multilanguageinputarea.ts","../../../projects/sac-common/src/controls/confirm/confirm.ts","../../../projects/sac-common/src/controls/confirm/confirm.button.ts","../../../projects/sac-common/src/controls/confirm/confirm.service.ts","../../../projects/sac-common/src/utilities/positioning.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenuanchor.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenucontainer.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenu.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenuitem.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenuitembutton.ts","../../../projects/sac-common/src/components/browser/browser.ts","../../../projects/sac-common/src/models/languagemodel.ts","../../../projects/sac-common/src/public_api.ts","../../../projects/sac-common/src/simpleangularcontrols-sac-common.ts"],"sourcesContent":["import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BUTTONROLETYPE } from '../../enums/ButtonRoleType';\r\n\r\n/**\r\n * Base Komponente für das Button\r\n */\r\n@Directive()\r\nexport class SacButtonCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Boolean Property definiert, ob das Button 'disabled' ist; default - false\r\n */\r\n private _isdisabledvalue: boolean = false;\r\n /**\r\n * Das Property definiert die Rolle des Buttons. Standardwert ist 'default'.\r\n */\r\n private _role: BUTTONROLETYPE = 'default';\r\n\r\n /**\r\n * Input Property für Icon Style Klasse; default Wert - ''\r\n */\r\n @Input() public icon: string = '';\r\n /**\r\n * Input Property für Name; default Wert - ''\r\n */\r\n @Input() public name: string = '';\r\n /**\r\n * Input Property für Text des Buttons; default Wert - ''\r\n */\r\n @Input() public text: string = '';\r\n /**\r\n * Output Event Emitter\r\n */\r\n @Output()\r\n public clicked = new EventEmitter();\r\n\r\n /**\r\n * Das boolean property ist benutzt für Aktivation des Spinner des Button. Default ist false.\r\n */\r\n public _isloadingvalue: boolean = false;\r\n /**\r\n * Boolean Property für Error; default Wert - false\r\n */\r\n public hasError = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Deaktivieren von Buttons\r\n * @param v Deaktiviert den Button\r\n * @return Definiert ob der Button deaktiviert ist\r\n */\r\n @Input()\r\n public set isdisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isdisabledvalue = v as boolean;\r\n } else {\r\n this._isdisabledvalue = v === 'true';\r\n }\r\n }\r\n\r\n /**\r\n * Das Input property. Definiert der Status des islaoding property. Es ist benutzt für Aktivation des Spinner des Button.\r\n */\r\n @Input()\r\n public set isloading(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isloadingvalue = v as boolean;\r\n } else {\r\n this._isloadingvalue = v === 'true';\r\n }\r\n }\r\n\r\n /**\r\n * Definiert den Style des Buttons\r\n * @param v Definiert den Style des Buttons.\r\n * Folgende Typen sind Supported: primary, secondary, success, danger, warning, info, light, dark, link, default\r\n * @returns Type des Buttons\r\n */\r\n @Input()\r\n public set role(v: BUTTONROLETYPE) {\r\n // Validation of Input\r\n switch (v) {\r\n case '':\r\n case 'primary':\r\n case 'default':\r\n case 'light':\r\n case 'dark':\r\n case 'link':\r\n case 'success':\r\n case 'secondary':\r\n case 'danger':\r\n case 'warning':\r\n case 'info':\r\n // Empty Role is Default\r\n if (v === '') {\r\n this._role = 'default';\r\n } else {\r\n this._role = v;\r\n }\r\n break;\r\n default:\r\n throw new Error('Invalid role \" + v + \" for button.');\r\n }\r\n }\r\n\r\n /**\r\n * Getter Methode. Ergibt boolean Wert. Definiert, ob das Button desabled ist.\r\n */\r\n public get _isdisabled(): boolean {\r\n return this._isdisabledvalue;\r\n }\r\n\r\n public get isdisabled(): boolean | string {\r\n return this._isdisabledvalue;\r\n }\r\n\r\n public get isloading(): boolean | string {\r\n return this._isloadingvalue;\r\n }\r\n\r\n /**\r\n * Die Methode returns die definierte Style-Rolle des Buttons\r\n */\r\n public get role(): BUTTONROLETYPE {\r\n return this._role;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Die Methode wird ein Event aufrufen, wenn das Button geklickt wird UND das Button nicht disabled ODER isloading ist.\r\n */\r\n public buttonClick() {\r\n if (this._isdisabled === false && this._isloadingvalue === false) {\r\n this.clicked.emit();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","/**\r\n * Defines the height of the form controls\r\n */\r\nexport enum ControlHeight {\r\n /**\r\n * Default Componnent Height\r\n */\r\n Default = 0,\r\n /**\r\n * Small Component Height\r\n */\r\n Small = 1,\r\n /**\r\n * Large Component Height\r\n */\r\n Large,\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { ControlHeight } from '../enums/ControlHeight';\r\nimport { ISacConfigurationService } from '../interfaces/ISacConfigurationService';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * abstract class for configuration settings providing in components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractConfigurationService\r\n implements ISacConfigurationService\r\n{\r\n // #region Public Abstract Getters And Setters\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get ComponentHeight(): ControlHeight | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeLg(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeMd(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeSm(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeXl(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeXs(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeXxl(): number | null;\r\n\r\n // #endregion Public Abstract Getters And Setters\r\n}\r\n\r\n/**\r\n * default configuration service for components\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultConfigurationService extends SacAbstractConfigurationService {\r\n // #region Public Getters And Setters\r\n\r\n public get ComponentHeight(): ControlHeight {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeLg(): number | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeMd(): number | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeSm(): number | null {\r\n return 4;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeXl(): number | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeXs(): number | null {\r\n return 12;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeXxl(): number | null {\r\n return null;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * injection token for component configuration service\r\n */\r\nexport const SACCONFIGURATION_SERVICE =\r\n new InjectionToken<ISacConfigurationService>('SacConfigurationService');\r\n\r\n// #endregion Variables\r\n","/**\r\n * Klasse für API Request zum löschen eines Files\r\n */\r\nexport class BrowserFileDeleteRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initale Werte der Klasse\r\n */\r\n constructor(init?: Partial<BrowserFileDeleteRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n AllowedTypes: string;\r\n}\r\n","/**\r\n * Klasse für den API Request zum umbenennen einer Datei\r\n */\r\nexport class BrowserFileRenameRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserFileRenameRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad zu Datei\r\n */\r\n Path: string;\r\n /**\r\n * Neuer Dateiname\r\n */\r\n NewFilename: string;\r\n /**\r\n * Erlaubte Dateierweiterungen\r\n */\r\n AllowedTypes: string;\r\n}\r\n","/**\r\n * Request zum speichern einer hochgeladenen Datei\r\n */\r\nexport class BrowserFileSaveRequest {\r\n /**\r\n * Constructor\r\n * @param init Initale Parameter\r\n */\r\n constructor(init?: Partial<BrowserFileSaveRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad in welchem der Upload gespeichert werden soll\r\n */\r\n public Path: string;\r\n /**\r\n * Upload ID\r\n */\r\n public UploadId: string;\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n public AllowedTypes: string;\r\n}\r\n","/**\r\n * Klasse für API Request zum löschen eines Nodes\r\n */\r\nexport class BrowserNodeDeleteRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserNodeDeleteRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n}\r\n","/**\r\n * Klasse für API Request zum anlegen eines neuen Nodes\r\n */\r\nexport class BrowserNodeNewRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserNodeNewRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n /**\r\n * Name des neuen Nodes\r\n */\r\n NewFoldername: string;\r\n}\r\n","/**\r\n * Klasse für API Request zum umbenennen eines Nodes\r\n */\r\nexport class BrowserNodeRenameRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserNodeRenameRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n /**\r\n * Neuer Name des Nodes\r\n */\r\n NewFoldername: string;\r\n}\r\n","/**\r\n * Klasse für den Request eines Nodes\r\n */\r\nexport class BrowserNodeRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initale Werte für die Instanz\r\n */\r\n constructor(init?: Partial<BrowserNodeRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad des Nodes\r\n */\r\n public Path: string;\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n public AllowedTypes: string;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BrowserFileDeleteRequest } from '../components/browser/models/browserfiledeleterequest';\r\nimport { BrowserFileRenameRequest } from '../components/browser/models/browserfilerenamerequest';\r\nimport { IBrowserFileResponse } from '../components/browser/models/browserfileresponse';\r\nimport { BrowserFileSaveRequest } from '../components/browser/models/browserfilesaverequest';\r\nimport { BrowserNodeDeleteRequest } from '../components/browser/models/browsernodedeleterequest';\r\nimport { BrowserNodeNewRequest } from '../components/browser/models/browsernodenewrequest';\r\nimport { BrowserNodeRenameRequest } from '../components/browser/models/browsernoderenamerequest';\r\nimport { BrowserNodeRequest } from '../components/browser/models/browsernoderequest';\r\nimport { IBrowserNodeResponse } from '../components/browser/models/browsernoderesponse';\r\nimport { ISacFileBrowserService } from '../interfaces/ISacFileBrowserService';\r\n\r\n/**\r\n * Injection Token für Language Service\r\n */\r\nexport const SACFILEBROWSER_SERVICE =\r\n new InjectionToken<ISacFileBrowserService>('FileBrowserService');\r\n\r\n/**\r\n * Abstrakte Implementierung des File Service für die Browser Component\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class SacAbstractFileBrowserService\r\n implements ISacFileBrowserService\r\n{\r\n /**\r\n * Gibt einen Node zurück\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Node welcher angefordert wird\r\n * @param allowedextensions Erlaubte Extensions die angezeigt werden dürfen\r\n */\r\n abstract GetNode(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Speichert einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem der Node gespeichert werden soll\r\n * @param newFoldername Name des neuen Nodes\r\n */\r\n abstract SaveNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Rename eines Nodes\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher umbenannt werden soll\r\n * @param newFoldername Neuer Name des Nodes\r\n */\r\n abstract RenameNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Löscht einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher gelöscht werden soll\r\n */\r\n abstract DeleteNode(\r\n apiurl: string,\r\n path: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Methode welche die Dateien eines Nodes ausliest\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes in welchem die Files gelesen werden sollen\r\n * @param allowedextensions Erlaubte File Extensions\r\n */\r\n abstract GetFiles(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n\r\n /**\r\n * Speichert eine Hochgeladene Datei in der Struktur\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem das neue File gespeichert werden soll\r\n * @param id ID des Uploads\r\n * @param allowedextensions Erlaubte Extensions für den Upload\r\n */\r\n abstract SaveFile(\r\n apiurl: string,\r\n path: string,\r\n id: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n\r\n /**\r\n * Methode welche eine Datei umbenannt\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad zum File welches umbenannt werden soll\r\n * @param newFilename Neuer Dateiname\r\n * @param allowedextensions Erlaubte Extension für Files\r\n */\r\n abstract RenameFile(\r\n apiurl: string,\r\n path: string,\r\n newFilename: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n\r\n /**\r\n * Löscht eine Datei\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Files welches gelöscht werden soll\r\n * @param allowedextensions Erlaubte Extensions für Files\r\n */\r\n abstract DeleteFile(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n}\r\n\r\n/**\r\n * Standardimplementierung des Backend Service für die File Browser Component\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SacDefaultFileBrowserService extends SacAbstractFileBrowserService {\r\n /**\r\n * Konstruktor\r\n * @param httpclient HTTP Client Service\r\n */\r\n constructor(private httpclient: HttpClient) {\r\n super();\r\n }\r\n\r\n /**\r\n * Gibt einen Node zurück\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Node welcher angefordert wird\r\n * @param allowedextensions Erlaubte Extensions die angezeigt werden dürfen\r\n */\r\n public GetNode(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/getnodes`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeRequest({\r\n Path: path,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Speichert einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem der Node gespeichert werden soll\r\n * @param newFoldername Name des neuen Nodes\r\n */\r\n public SaveNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/newnode`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeNewRequest({\r\n Path: path,\r\n NewFoldername: newFoldername,\r\n });\r\n\r\n return this.httpclient.post<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Rename eines Nodes\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher umbenannt werden soll\r\n * @param newFoldername Neuer Name des Nodes\r\n */\r\n public RenameNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/renamenode`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeRenameRequest({\r\n Path: path,\r\n NewFoldername: newFoldername,\r\n });\r\n\r\n return this.httpclient.put<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Löscht einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher gelöscht werden soll\r\n */\r\n public DeleteNode(\r\n apiurl: string,\r\n path: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/deletenode`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeDeleteRequest({\r\n Path: path,\r\n });\r\n\r\n return this.httpclient.post<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Methode welche die Dateien eines Nodes ausliest\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes in welchem die Files gelesen werden sollen\r\n * @param allowedextensions Erlaubte File Extensions\r\n */\r\n public GetFiles(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/getfiles`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeRequest({\r\n Path: path,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Speichert eine Hochgeladene Datei in der Struktur\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem das neue File gespeichert werden soll\r\n * @param id ID des Uploads\r\n * @param allowedextensions Erlaubte Extensions für den Upload\r\n */\r\n public SaveFile(\r\n apiurl: string,\r\n path: string,\r\n id: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/uploadfile`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserFileSaveRequest({\r\n Path: path,\r\n UploadId: id,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Löscht eine Datei\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Files welches gelöscht werden soll\r\n * @param allowedextensions Erlaubte Extensions für Files\r\n */\r\n public DeleteFile(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/deletefile`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserFileDeleteRequest({\r\n Path: path,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Methode welche eine Datei umbenannt\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad zum File welches umbenannt werden soll\r\n * @param newFilename Neuer Dateiname\r\n * @param allowedextensions Erlaubte Extension für Files\r\n */\r\n public RenameFile(\r\n apiurl: string,\r\n path: string,\r\n newFilename: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/renamefile`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserFileRenameRequest({\r\n Path: path,\r\n NewFilename: newFilename,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.put<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { ISacIconService } from '../interfaces/ISacIconService';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * abstract class for icon providing in components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractIconService implements ISacIconService {\r\n // #region Public Abstract Getters And Setters\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentDeleteIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentEditIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderClosedIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderEmptyIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderNewIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderOpenIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentRefreshIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get ConfirmDefaultImage(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get ContextMenuOpenIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateComponentSelectorIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateTimeComponentSelectorIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateTimeSelectorComponentMonthNextIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateTimeSelectorComponentMonthPrevIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get GridComponentSortDown(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get GridComponentSortUp(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get TimeComponentSelectorIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentBrowseIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentContinueIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentDeleteIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentPauseIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentUploadIcon(): string;\r\n\r\n // #endregion Public Abstract Getters And Setters\r\n}\r\n\r\n/**\r\n * default icons service for components\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultIconService extends SacAbstractIconService {\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentDeleteIcon(): string {\r\n return 'fas fa-trash';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentEditIcon(): string {\r\n return 'fas fa-pen';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderClosedIcon(): string {\r\n return 'fa fa-folder-plus';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderEmptyIcon(): string {\r\n return 'fa fa-folder';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderNewIcon(): string {\r\n return 'far fa-folder';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderOpenIcon(): string {\r\n return 'fa fa-folder-open';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentRefreshIcon(): string {\r\n return 'fas fa-sync-alt';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get ConfirmDefaultImage(): string {\r\n return '/assets/icons/dialog/question.png';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get ContextMenuOpenIcon(): string {\r\n return 'fas fa-ellipsis-v';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateComponentSelectorIcon(): string {\r\n return 'fa fa-calendar';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateTimeComponentSelectorIcon(): string {\r\n return 'fa fa-calendar';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateTimeSelectorComponentMonthNextIcon(): string {\r\n return 'fa fa-chevron-right';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateTimeSelectorComponentMonthPrevIcon(): string {\r\n return 'fa fa-chevron-left';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get GridComponentSortDown(): string {\r\n return 'fa fa-caret-down';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get GridComponentSortUp(): string {\r\n return 'fa fa-caret-up';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get TimeComponentSelectorIcon(): string {\r\n return 'fa fa-clock';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentBrowseIcon(): string {\r\n return 'fa fa-folder-open';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentContinueIcon(): string {\r\n return 'fa fa-play';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentDeleteIcon(): string {\r\n return 'fa fa-times';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentPauseIcon(): string {\r\n return 'fa fa-pause';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentUploadIcon(): string {\r\n return 'fa fa-upload';\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * injection token for component icon service\r\n */\r\nexport const SACICON_SERVICE = new InjectionToken<ISacIconService>(\r\n 'SacIconService'\r\n);\r\n\r\n// #endregion Variables\r\n","/**\r\n * Enum für Icon Types in Componenten\r\n */\r\nexport enum IconType {\r\n Image = 1,\r\n CssSprite = 2\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLanguageService } from '../interfaces/ISacLanguageService';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { IconType } from '../enums/IconType';\r\n\r\n/**\r\n * injection token for language service\r\n */\r\nexport const SACLANGUAGE_SERVICE = new InjectionToken<ISacLanguageService>(\r\n 'SacLanguageService'\r\n);\r\n\r\n/**\r\n * abstract class for languages provides in components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractLanguageService\r\n implements ISacLanguageService\r\n{\r\n /**\r\n * @inheritdoc\r\n */\r\n abstract GetLanguages(): Observable<LanguageModel[]>;\r\n}\r\n\r\n/**\r\n * default service for languages\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultLanguageService extends SacAbstractLanguageService {\r\n /**\r\n * @inheritdoc\r\n */\r\n public GetLanguages(): Observable<LanguageModel[]> {\r\n return new Observable<LanguageModel[]>((observer) => {\r\n const result: LanguageModel[] = [];\r\n\r\n result.push({\r\n Icon: '/icons/en.png',\r\n IconType: IconType.Image,\r\n IsoCode: 'en',\r\n Text: 'English',\r\n });\r\n\r\n observer.next(result);\r\n observer.complete();\r\n });\r\n }\r\n}\r\n","/**\r\n * Prüft ob ein Objekt Defined ist\r\n * @param value Objekt\r\n * @return Objekt ist definied. TRUE wenn Objekt definied. FALSE wenn Objekt NULL oder UNDEFINED.\r\n */\r\nexport function isDefined(value: any): boolean {\r\n return typeof value !== 'undefined' && value !== null;\r\n}\r\n","import { isDefined } from './datatypes';\r\n\r\n/**\r\n * Klasse zum ersetzen von Platzhaltern in Strings\r\n */\r\nexport class Interpolation {\r\n\r\n /**\r\n * Template zum Parsen der Platzhalter\r\n */\r\n private templateMatcher: RegExp = /{{\\s?([^{}\\s]*)\\s?}}/g;\r\n\r\n /**\r\n * Platzhalter in String ersetzen\r\n * @param text Text in welchem die Platzhalter ersetzt werden\r\n * @param params Objekt mit Parameter.\r\n */\r\n public interpolateString(text: string, params?: any) {\r\n if (!params) {\r\n return text;\r\n }\r\n\r\n return text.replace(this.templateMatcher, (substring: string, b: string) => {\r\n const r = this.getValue(params, b);\r\n return isDefined(r) ? r : substring;\r\n });\r\n }\r\n\r\n /**\r\n * Wert aus Objekt in Objekt oder Objektstruktur lesen\r\n * @param target Objekt das zu parsen ist.\r\n * @param key Key nach welchem gesucht wird. Navigation in Properties des Objekt mit einem Punkt.\r\n */\r\n private getValue(target: any, key: string): any {\r\n const keys = key.split('.');\r\n key = '';\r\n do {\r\n key += keys.shift();\r\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\r\n target = target[key];\r\n key = '';\r\n } else if (!keys.length) {\r\n target = undefined;\r\n } else {\r\n key += '.';\r\n }\r\n } while (keys.length);\r\n\r\n return target;\r\n }\r\n\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { ISacValidationKeyService } from '../interfaces/ISacValidationKeyService';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultValidationKeyService\r\n implements ISacValidationKeyService\r\n{\r\n // #region Public Getters And Setters\r\n\r\n public get ConfirmDefaultButtonNo(): string {\r\n return 'CONFIRM_BUTTON_NO';\r\n }\r\n\r\n public get ConfirmDefaultButtonYes(): string {\r\n return 'CONFIRM_BUTTON_YES';\r\n }\r\n\r\n public get FilebrowserButtonDelete(): string {\r\n return 'FILEBROWSER_DELETE';\r\n }\r\n\r\n public get FilebrowserButtonNewFolder(): string {\r\n return 'FILEBROWSER_NEWFOLDER';\r\n }\r\n\r\n public get FilebrowserButtonRefresh(): string {\r\n return 'FILEBROWSER_REFRESH';\r\n }\r\n\r\n public get FilebrowserButtonUpload(): string {\r\n return 'FILEBROWSER_UPLOAD';\r\n }\r\n\r\n public get FilebrowserConfirmTextDeleteFile(): string {\r\n return 'FILEBROWSER_CONFIRM_DELETEFILE';\r\n }\r\n\r\n public get FilebrowserConfirmTextDeleteFolder(): string {\r\n return 'FILEBROWSER_CONFIRM_DELETEFOLDER';\r\n }\r\n\r\n public get FilebrowserGridFilename(): string {\r\n return 'FILEBROWSER_GRID_FILE';\r\n }\r\n\r\n public get FilebrowserGridNoFiles(): string {\r\n return 'FILEBROWSER_NO_FILES';\r\n }\r\n\r\n public get FilebrowserGridSize(): string {\r\n return 'FILEBROWSER_GRID_SIZE';\r\n }\r\n\r\n public get PagingEntries(): string {\r\n return 'PAGING_PAGEENTRIESTEXT';\r\n }\r\n\r\n public get PagingPageOf(): string {\r\n return 'PAGING_PAGEOFTEXT';\r\n }\r\n\r\n public get TinyMceFileselectCancel(): string {\r\n return 'TINYMCE_FILESELECT_CANCEL';\r\n }\r\n\r\n public get TinyMceFileselectDialogtitle(): string {\r\n return 'TINYMCE_FILESELECT_DIALOGTITLE';\r\n }\r\n\r\n public get TinyMceFileselectOk(): string {\r\n return 'TINYMCE_FILESELECT_OK';\r\n }\r\n\r\n public get UploadButtonBrowse(): string {\r\n return 'UPLOAD_BUTTON_BROWSE';\r\n }\r\n\r\n public get UploadButtonUpload(): string {\r\n return 'UPLOAD_BUTTON_UPLOAD';\r\n }\r\n\r\n public get UploadNoFilesSelected(): string {\r\n return 'UPLOAD_NO_FILE_SELECTED';\r\n }\r\n\r\n public get ValidationErrorDatetimeFormat(): string {\r\n return 'VALIDATION_ERROR_DATETIMEFORMAT';\r\n }\r\n\r\n public get ValidationErrorEmail(): string {\r\n return 'VALIDATION_ERROR_EMAIL';\r\n }\r\n\r\n public get ValidationErrorFilesMin(): string {\r\n return 'VALIDATION_ERROR_FILESMIN';\r\n }\r\n\r\n public get ValidationErrorMaxDate(): string {\r\n return 'VALIDATION_ERROR_MAXDATE';\r\n }\r\n\r\n public get ValidationErrorMaxTime(): string {\r\n return 'VALIDATION_ERROR_MAXTIME';\r\n }\r\n\r\n public get ValidationErrorMaxValue(): string {\r\n return 'VALIDATION_ERROR_MAXVALUE';\r\n }\r\n\r\n public get ValidationErrorMinDate(): string {\r\n return 'VALIDATION_ERROR_MINDATE';\r\n }\r\n\r\n public get ValidationErrorMinLength(): string {\r\n return 'VALIDATION_ERROR_MINLENGTH';\r\n }\r\n\r\n public get ValidationErrorMinTime(): string {\r\n return 'VALIDATION_ERROR_MINTIME';\r\n }\r\n\r\n public get ValidationErrorMinValue(): string {\r\n return 'VALIDATION_ERROR_MINVALUE';\r\n }\r\n\r\n public get ValidationErrorMultilanguageRequired(): string {\r\n return 'VALIDATION_ERROR_MULTILANGUAGEREQUIRED';\r\n }\r\n\r\n public get ValidationErrorMultilanguageRequiredAny(): string {\r\n return 'VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY';\r\n }\r\n\r\n public get ValidationErrorPattern(): string {\r\n return 'VALIDATION_ERROR_PATTERN';\r\n }\r\n\r\n // Generic Messages\r\n public get ValidationErrorRequired(): string {\r\n return 'VALIDATION_ERROR_REQUIRED';\r\n }\r\n\r\n public get ValidationErrorSummaryDatetimeFormat(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT';\r\n }\r\n\r\n public get ValidationErrorSummaryEmail(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_EMAIL';\r\n }\r\n\r\n public get ValidationErrorSummaryFilesMin(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_FILESMIN';\r\n }\r\n\r\n public get ValidationErrorSummaryMaxDate(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MAXDATE';\r\n }\r\n\r\n public get ValidationErrorSummaryMaxTime(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MAXTIME';\r\n }\r\n\r\n public get ValidationErrorSummaryMaxValue(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MAXVALUE';\r\n }\r\n\r\n public get ValidationErrorSummaryMinDate(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINDATE';\r\n }\r\n\r\n public get ValidationErrorSummaryMinLength(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINLENGTH';\r\n }\r\n\r\n public get ValidationErrorSummaryMinTime(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINTIME';\r\n }\r\n\r\n public get ValidationErrorSummaryMinValue(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINVALUE';\r\n }\r\n\r\n public get ValidationErrorSummaryMultilanguageRequired(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED';\r\n }\r\n\r\n public get ValidationErrorSummaryMultilanguageRequiredAny(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY';\r\n }\r\n\r\n public get ValidationErrorSummaryPattern(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_PATTERN';\r\n }\r\n\r\n public get ValidationErrorSummaryRequired(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_REQUIRED';\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n\r\n/**\r\n * injection token for localisation service\r\n */\r\nexport const SACVALIDATIONKEY_SERVICE =\r\n new InjectionToken<ISacValidationKeyService>('SacValidationkeyService');\r\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../interfaces/ISacValidationKeyService';\r\nimport { Interpolation } from '../utilities/interpolation';\r\nimport { SACVALIDATIONKEY_SERVICE } from './sac-validationkey.service';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * abstract class for localisation in components\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractLocalisationService\r\n implements ISacLocalisationService\r\n{\r\n // #region Protected Abstract Getters And Setters\r\n\r\n protected abstract get CONFIRM_BUTTON_NO(): Map<string, string>;\r\n protected abstract get CONFIRM_BUTTON_YES(): Map<string, string>;\r\n protected abstract get FILEBROWSER_CONFIRM_DELETEFILE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_CONFIRM_DELETEFOLDER(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get FILEBROWSER_DELETE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_GRID_FILE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_GRID_SIZE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_NEWFOLDER(): Map<string, string>;\r\n protected abstract get FILEBROWSER_NO_FILES(): Map<string, string>;\r\n protected abstract get FILEBROWSER_REFRESH(): Map<string, string>;\r\n protected abstract get FILEBROWSER_UPLOAD(): Map<string, string>;\r\n protected abstract get PAGING_PAGEENTRIESTEXT(): Map<string, string>;\r\n protected abstract get PAGING_PAGEOFTEXT(): Map<string, string>;\r\n protected abstract get TINYMCE_FILESELECT_CANCEL(): Map<string, string>;\r\n protected abstract get TINYMCE_FILESELECT_DIALOGTITLE(): Map<string, string>;\r\n protected abstract get TINYMCE_FILESELECT_OK(): Map<string, string>;\r\n protected abstract get UPLOAD_BUTTON_BROWSE(): Map<string, string>;\r\n protected abstract get UPLOAD_BUTTON_UPLOAD(): Map<string, string>;\r\n protected abstract get UPLOAD_NO_FILE_SELECTED(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_DATETIMEFORMAT(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_EMAIL(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_FILESMIN(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MAXDATE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MAXTIME(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MAXVALUE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINDATE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINLENGTH(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINTIME(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINVALUE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MULTILANGUAGEREQUIRED(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_PATTERN(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_REQUIRED(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_EMAIL(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_FILESMIN(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MAXDATE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MAXTIME(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MAXVALUE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINDATE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINLENGTH(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINTIME(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINVALUE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_PATTERN(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_REQUIRED(): Map<\r\n string,\r\n string\r\n >;\r\n\r\n // #endregion Protected Abstract Getters And Setters\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Die Methode übersetzt den eingegebenen Wort/Begriff. Verlangt key und optionell params\r\n */\r\n public abstract GetString(key: string, params?: any): Observable<string>;\r\n\r\n // #endregion Public Abstract Methods\r\n}\r\n\r\n/**\r\n * default localisation service\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultLocalisationService extends SacAbstractLocalisationService {\r\n // #region Properties\r\n\r\n /**\r\n * Language Resources für Controls Library\r\n */\r\n public data: Map<string, Map<string, string>> = new Map<\r\n string,\r\n Map<string, string>\r\n >();\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * */\r\n constructor(\r\n @Inject(SACVALIDATIONKEY_SERVICE)\r\n private validationKeyService: ISacValidationKeyService\r\n ) {\r\n super();\r\n\r\n // Set Languages\r\n this.data.set('de', new Map<string, string>());\r\n\r\n // Validation\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorRequired,\r\n this.VALIDATION_ERROR_REQUIRED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryRequired,\r\n this.VALIDATION_ERROR_SUMMARY_REQUIRED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinValue,\r\n this.VALIDATION_ERROR_MINVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinValue,\r\n this.VALIDATION_ERROR_SUMMARY_MINVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorPattern,\r\n this.VALIDATION_ERROR_PATTERN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryPattern,\r\n this.VALIDATION_ERROR_SUMMARY_PATTERN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMaxValue,\r\n this.VALIDATION_ERROR_MAXVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMaxValue,\r\n this.VALIDATION_ERROR_SUMMARY_MAXVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorEmail,\r\n this.VALIDATION_ERROR_EMAIL.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryEmail,\r\n this.VALIDATION_ERROR_SUMMARY_EMAIL.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinLength,\r\n this.VALIDATION_ERROR_MINLENGTH.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinLength,\r\n this.VALIDATION_ERROR_SUMMARY_MINLENGTH.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinDate,\r\n this.VALIDATION_ERROR_MINDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinDate,\r\n this.VALIDATION_ERROR_SUMMARY_MINDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMaxDate,\r\n this.VALIDATION_ERROR_MAXDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMaxDate,\r\n this.VALIDATION_ERROR_SUMMARY_MAXDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinTime,\r\n this.VALIDATION_ERROR_MINTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinTime,\r\n this.VALIDATION_ERROR_SUMMARY_MINTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMaxTime,\r\n this.VALIDATION_ERROR_MAXTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMaxTime,\r\n this.VALIDATION_ERROR_SUMMARY_MAXTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorDatetimeFormat,\r\n this.VALIDATION_ERROR_DATETIMEFORMAT.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryDatetimeFormat,\r\n this.VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorFilesMin,\r\n this.VALIDATION_ERROR_FILESMIN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryFilesMin,\r\n this.VALIDATION_ERROR_SUMMARY_FILESMIN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMultilanguageRequiredAny,\r\n this.VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny,\r\n this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMultilanguageRequired,\r\n this.VALIDATION_ERROR_MULTILANGUAGEREQUIRED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMultilanguageRequired,\r\n this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED.get('de')\r\n );\r\n\r\n // Grid Component\r\n this.data\r\n .get('de')\r\n .set(validationKeyService.PagingPageOf, this.PAGING_PAGEOFTEXT.get('de'));\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.PagingEntries,\r\n this.PAGING_PAGEENTRIESTEXT.get('de')\r\n );\r\n\r\n // Upload Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.UploadNoFilesSelected,\r\n this.UPLOAD_NO_FILE_SELECTED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.UploadButtonUpload,\r\n this.UPLOAD_BUTTON_UPLOAD.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.UploadButtonBrowse,\r\n this.UPLOAD_BUTTON_BROWSE.get('de')\r\n );\r\n\r\n // TinyMCE Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.TinyMceFileselectOk,\r\n this.TINYMCE_FILESELECT_OK.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.TinyMceFileselectCancel,\r\n this.TINYMCE_FILESELECT_CANCEL.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.TinyMceFileselectDialogtitle,\r\n this.TINYMCE_FILESELECT_DIALOGTITLE.get('de')\r\n );\r\n\r\n // Confirm Dialog Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ConfirmDefaultButtonYes,\r\n this.CONFIRM_BUTTON_YES.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ConfirmDefaultButtonNo,\r\n this.CONFIRM_BUTTON_NO.get('de')\r\n );\r\n\r\n // Browser Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserGridNoFiles,\r\n this.FILEBROWSER_NO_FILES.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserGridFilename,\r\n this.FILEBROWSER_GRID_FILE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserGridSize,\r\n this.FILEBROWSER_GRID_SIZE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonUpload,\r\n this.FILEBROWSER_UPLOAD.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonNewFolder,\r\n this.FILEBROWSER_NEWFOLDER.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonRefresh,\r\n this.FILEBROWSER_REFRESH.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonDelete,\r\n this.FILEBROWSER_DELETE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n this.validationKeyService.FilebrowserConfirmTextDeleteFolder,\r\n this.FILEBROWSER_CONFIRM_DELETEFOLDER.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n this.validationKeyService.FilebrowserConfirmTextDeleteFile,\r\n this.FILEBROWSER_CONFIRM_DELETEFILE.get('de')\r\n );\r\n\r\n // EN\r\n this.data.set('en', new Map<string, string>());\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Protected Getters And Setters\r\n\r\n protected get CONFIRM_BUTTON_NO(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Nein']]);\r\n }\r\n\r\n protected get CONFIRM_BUTTON_YES(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Ja']]);\r\n }\r\n\r\n protected get FILEBROWSER_CONFIRM_DELETEFILE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Soll die Datei gelöscht werden?']]);\r\n }\r\n\r\n protected get FILEBROWSER_CONFIRM_DELETEFOLDER(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Soll der Ordner gelöscht werden?'],\r\n ]);\r\n }\r\n\r\n protected get FILEBROWSER_DELETE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Löschen']]);\r\n }\r\n\r\n protected get FILEBROWSER_GRID_FILE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Dateiname']]);\r\n }\r\n\r\n protected get FILEBROWSER_GRID_SIZE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Grösse']]);\r\n }\r\n\r\n protected get FILEBROWSER_NEWFOLDER(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Neuer Ordner']]);\r\n }\r\n\r\n protected get FILEBROWSER_NO_FILES(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Keine Dateien vorhanden']]);\r\n }\r\n\r\n protected get FILEBROWSER_REFRESH(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Aktualisieren']]);\r\n }\r\n\r\n protected get FILEBROWSER_UPLOAD(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Legen Sie Dateien hier ab um Sie hochzuladen'],\r\n ]);\r\n }\r\n\r\n protected get PAGING_PAGEENTRIESTEXT(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Einträge pro Seite']]);\r\n }\r\n\r\n protected get PAGING_PAGEOFTEXT(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Seite {{CURRENTPAGE}} von {{TOTALPAGES}}'],\r\n ]);\r\n }\r\n\r\n protected get TINYMCE_FILESELECT_CANCEL(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Abbrechen']]);\r\n }\r\n\r\n protected get TINYMCE_FILESELECT_DIALOGTITLE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Datei auswählen']]);\r\n }\r\n\r\n protected get TINYMCE_FILESELECT_OK(): Map<string, string> {\r\n return new Map<string, string>([['de', 'OK']]);\r\n }\r\n\r\n protected get UPLOAD_BUTTON_BROWSE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Browse...']]);\r\n }\r\n\r\n protected get UPLOAD_BUTTON_UPLOAD(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Upload']]);\r\n }\r\n\r\n protected get UPLOAD_NO_FILE_SELECTED(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Keine Datei ausgewählt']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_DATETIMEFORMAT(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Feld ist kein gültiges Datum.']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_EMAIL(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Feld ist keine E-Mail Adresse']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_FILESMIN(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Es müssen min. {{MINFILES}} Dateien hochgeladen sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MAXDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss älter oder gleich {{MAXDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MAXTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss älter oder gleich {{MAXTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MAXVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" darf nicht grösser als {{MAXVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss neuer oder gleich {{MINDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINLENGTH(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld erfordert min. {{MINLENGTH}} Zeichen.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss neuer oder gleich {{MINTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Wert darf nicht kleiner als {{MINVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MULTILANGUAGEREQUIRED(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Es müssen alle Sprachen erfasst sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n > {\r\n return new Map<string, string>([\r\n ['de', 'Es muss min. 1 Sprache erfasst sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_PATTERN(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Wert entspricht nicht der Format Vorlage.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_REQUIRED(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Feld ist erforderlich.']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" ist kein gültiges Datum.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_EMAIL(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" ist keine E-Mail Adresse'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_FILESMIN(): Map<string, string> {\r\n return new Map<string, string>([\r\n [\r\n 'de',\r\n 'Feld \"{{FIELD}}\" muss min. {{MINFILES}} Dateien hochgeladen haben.',\r\n ],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MAXDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss älter oder gleich {{MAXDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MAXTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss älter oder gleich {{MAXTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MAXVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Wert darf nicht grösser als {{MAXVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss neuer oder gleich {{MINDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINLENGTH(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" erfordert min. {{MINLENGTH}} Zeichen.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss neuer oder gleich {{MINTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" darf nicht kleiner als {{MINVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED(): Map<\r\n string,\r\n string\r\n > {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss alle Sprachen erfasst haben.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n > {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss min. 1 Sprache erfasst haben.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_PATTERN(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" entspricht nicht der Format Vorlage.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_REQUIRED(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" ist erforderlich.'],\r\n ]);\r\n }\r\n\r\n // #endregion Protected Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Die Methode ergibt die selecte Sprache (string) anhand von Key und Params\r\n */\r\n public GetString(key: string, params?: any): Observable<string> {\r\n return new Observable<string>((observer) => {\r\n let language: string = this.GetLanguage();\r\n\r\n if (!this.data.has(language)) {\r\n language = this.GetFallbackLanguage();\r\n\r\n // Return Key if no Language exists\r\n if (!this.data.has(language)) {\r\n observer.next(key);\r\n observer.complete();\r\n return;\r\n }\r\n }\r\n\r\n if (this.data.get(language).has(key)) {\r\n const resource = this.data.get(language).get(key);\r\n if (params !== undefined && params !== null) {\r\n const formatter: Interpolation = new Interpolation();\r\n observer.next(formatter.interpolateString(resource, params));\r\n observer.complete();\r\n return;\r\n } else {\r\n observer.next(resource);\r\n observer.complete();\r\n return;\r\n }\r\n } else {\r\n observer.next(key);\r\n observer.complete();\r\n return;\r\n }\r\n });\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Die Funktion setzt die default Sprache auf DE, falls die Sprach-Setzung nicht möglich ist.\r\n */\r\n private GetFallbackLanguage(): string {\r\n return 'de';\r\n }\r\n\r\n /**\r\n * Die Funktion ergibt die ausgewählte Sprache.\r\n */\r\n private GetLanguage(): string {\r\n const language: string = navigator.language;\r\n\r\n if (language.indexOf('-') >= 0) {\r\n return language.split('-')[0];\r\n } else {\r\n return language;\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * injection token for localisation service\r\n */\r\nexport const SACLOCALISATION_SERVICE =\r\n new InjectionToken<SacAbstractLocalisationService>('SacLocalisationService');\r\n\r\n// #endregion Variables\r\n","/**\r\n * Erzeugt ein Boolean\r\n * @param value\r\n */\r\nexport function convertToBoolean(value: any): boolean {\r\n if (value === null || value === undefined || typeof value === 'boolean') {\r\n return value;\r\n }\r\n\r\n return value.toString() === 'true';\r\n}\r\n\r\n/**\r\n * Erzeugt ein Number\r\n * @param value\r\n */\r\nexport function convertToNumber(value: any): number {\r\n if (value === null || value === undefined || typeof value === 'number') {\r\n return value;\r\n }\r\n\r\n return parseFloat(value.toString());\r\n}\r\n\r\n\r\n/**\r\n * Erzeugt aus einer Map ein Objekt\r\n * @param map Map mit Key und Values. Key ist ein String. Value kann ein Objekt sein.\r\n */\r\nexport function mapToObject(map: Map<string, any>): any {\r\n const obj = {};\r\n map.forEach((v, k) => {\r\n obj[k] = v;\r\n });\r\n return obj;\r\n}\r\n","/**\r\n * create a guid with crypto library if availabe and a fallback to Math.Random implementation\r\n */\r\nexport function createGuid(): string {\r\n if (typeof crypto !== undefined) {\r\n // return guid without hyphen\r\n return crypto.randomUUID().replace(/\\-/gi, '');\r\n } else {\r\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0,\r\n v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { ControlHeight } from '../../enums/ControlHeight';\r\n\r\n/***\r\n * base component for form options\r\n */\r\n@Directive()\r\nexport class SacFormLayoutCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Defines the standard height of the components\r\n */\r\n @Input() public componentHeight: ControlHeight | null = null;\r\n /**\r\n * defines that error messages are displayed under the controls\r\n */\r\n @Input() public inlineError: boolean = true;\r\n /**\r\n * defines that the labels are displayed as adaptive labels\r\n */\r\n @Input() public isAdaptiveLabel: boolean = false;\r\n /**\r\n * default labe size for large devices\r\n */\r\n @Input()\r\n public labelSizeLg: number | null = null;\r\n /**\r\n * default label size for medium devices\r\n */\r\n @Input()\r\n public labelSizeMd: number | null = null;\r\n /**\r\n * default label size for small devices\r\n */\r\n @Input()\r\n public labelSizeSm: number | null = null;\r\n /**\r\n * default label size for extra large devices\r\n */\r\n @Input()\r\n public labelSizeXl: number | null = null;\r\n /**\r\n * default label column size\r\n */\r\n @Input()\r\n public labelSizeXs: number | null = null;\r\n /**\r\n * default label size for extra extra large devices\r\n */\r\n @Input()\r\n public labelSizeXxl: number | null = null;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Returns whether the inline error messages for the form are active.\r\n */\r\n public get IsInlineErrorEnabled(): boolean {\r\n return this.inlineError !== false;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n","import { Directive, Host, Injector, Input, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControlName,\r\n FormGroupDirective,\r\n NgControl,\r\n UntypedFormControl,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ControlHeight } from '../enums/ControlHeight';\r\nimport { ISacConfigurationService } from '../interfaces/ISacConfigurationService';\r\nimport { ISacLabelSizes } from '../interfaces/ISacLabelSizes';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../interfaces/ISacValidationKeyService';\r\nimport { IAbstractControlLabelExtension } from '../interfaces/iabstractcontrollabel';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../services';\r\nimport {\r\n SACCONFIGURATION_SERVICE,\r\n SacDefaultConfigurationService,\r\n} from '../services/sac-configuration.service';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../services/sac-localisation.service';\r\nimport { convertToBoolean } from '../utilities/convertion';\r\nimport { createGuid } from '../utilities/guid';\r\nimport { ValidationErrorItem } from '../validation';\r\n/**\r\n * Abstract Klasse für SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit\r\n */\r\n@Directive()\r\nexport abstract class SacBaseModelControl<VALUE>\r\n implements ControlValueAccessor, Validator, OnInit\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * Inline Errors für das Control\r\n */\r\n private _inlineerrorenabled: boolean | null = null;\r\n private _label: string = '';\r\n\r\n /**\r\n * Service for loading default settings for the controls\r\n */\r\n protected readonly configurationService: ISacConfigurationService;\r\n\r\n /**\r\n * Boolean Property dirty; default Wert - false\r\n */\r\n protected _dirty: boolean = false;\r\n /**\r\n * SacModel Form ist disabled\r\n */\r\n protected _disabledForm: boolean = false;\r\n /**\r\n * Validator\r\n */\r\n protected _onChange: () => void;\r\n /**\r\n * Boolean Property touched; default Wert - false\r\n */\r\n protected _touched: boolean = false;\r\n /**\r\n * Interne Variable, die den Wert des Controls hält\r\n */\r\n protected _value: VALUE = null;\r\n /**\r\n * Form layout instance if exists\r\n */\r\n protected formlayout: SacFormLayoutCommon = null;\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n /**\r\n * ngControl\r\n */\r\n protected ngControl: UntypedFormControl;\r\n\r\n /**\r\n * Defines the standard height of the components\r\n */\r\n @Input()\r\n public componentHeight: ControlHeight | null = null;\r\n /**\r\n * Deaktiviert das Input Control\r\n */\r\n @Input() public disabled: boolean = false;\r\n /**\r\n * Deaktiviert das Label im Template\r\n */\r\n @Input() public disablelabel: boolean = false;\r\n /**\r\n * defines that error messages are displayed under the controls\r\n */\r\n @Input() public inlineError: boolean = true;\r\n /**\r\n * defines that the labels are displayed as adaptive labels\r\n */\r\n @Input() public isAdaptiveLabel: boolean = false;\r\n /**\r\n * default labe size for large devices\r\n */\r\n @Input()\r\n public labelSizeLg: number | null = null;\r\n /**\r\n * default label size for medium devices\r\n */\r\n @Input()\r\n public labelSizeMd: number | null = null;\r\n /**\r\n * default label size for small devices\r\n */\r\n @Input()\r\n public labelSizeSm: number | null = null;\r\n /**\r\n * default label size for extra large devices\r\n */\r\n @Input()\r\n public labelSizeXl: number | null = null;\r\n /**\r\n * default label column size\r\n */\r\n @Input()\r\n public labelSizeXs: number | null = null;\r\n /**\r\n * default label size for extra extra large devices\r\n */\r\n @Input()\r\n public labelSizeXxl: number | null = null;\r\n /**\r\n * Name des Controls\r\n */\r\n @Input() public name: string = createGuid();\r\n\r\n /**\r\n * ControlHeight enum for use in HTML markup\r\n */\r\n public ControlHeight: typeof ControlHeight = ControlHeight;\r\n /**\r\n * Leere Implementation von \"propagateChange\". Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n public propagateChange: any = () => {};\r\n /**\r\n * Leere Implementation von \"propagateTouch\". Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n public propagateTouch: any = () => {};\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n public validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(\r\n @Host() formlayout: SacFormLayoutCommon,\r\n private injector: Injector\r\n ) {\r\n this.formlayout = formlayout;\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.configurationService = injector.get(\r\n SACCONFIGURATION_SERVICE,\r\n new SacDefaultConfigurationService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Aktiviert oder Deaktiviert die Inline Errors für das Control\r\n */\r\n @Input()\r\n public set inlineerrorenabled(value: boolean | null) {\r\n if (value === null || value === undefined) {\r\n this._inlineerrorenabled = null;\r\n } else {\r\n this._inlineerrorenabled = convertToBoolean(value);\r\n }\r\n }\r\n\r\n /**\r\n * Definiert den Label Text\r\n */\r\n @Input() public set label(v: string) {\r\n this._label = v;\r\n this.UpdateLabelToControl();\r\n }\r\n\r\n /**\r\n * Set Methode für NgModel Binding in Html Markup\r\n * Input wird benötigt, damit der Wert auch über das Markup gesetzt werden kann.\r\n */\r\n @Input()\r\n public set value(v: VALUE) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this._value = this.ConvertInputValue(v);\r\n this.propagateChange(this._value);\r\n }\r\n\r\n /**\r\n * Methode ergibt Boolean Wert für dirty\r\n */\r\n public get dirty(): boolean {\r\n if (this.ngControl !== null) {\r\n this._dirty = this.ngControl.dirty;\r\n }\r\n\r\n return this._dirty;\r\n }\r\n\r\n public get inlineerrorenabled(): boolean | null {\r\n return this._inlineerrorenabled;\r\n }\r\n\r\n /**\r\n * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist\r\n */\r\n public get invalid(): boolean {\r\n return (\r\n this.ngControl !== undefined &&\r\n this.ngControl !== null &&\r\n this.ngControl.invalid\r\n );\r\n }\r\n\r\n /**\r\n * Definiert ob das Control disabled ist\r\n */\r\n public get isdisabled(): boolean {\r\n return this._disabledForm || this.disabled;\r\n }\r\n\r\n /**\r\n * Returns whether the inline error messages are active for this control.\r\n */\r\n public get isinlineerrorenabled(): boolean {\r\n if (\r\n this.formlayout?.IsInlineErrorEnabled === null ||\r\n this.formlayout?.IsInlineErrorEnabled === undefined\r\n ) {\r\n return this._inlineerrorenabled;\r\n }\r\n\r\n return (\r\n this.formlayout.IsInlineErrorEnabled !== false &&\r\n this._inlineerrorenabled !== false\r\n );\r\n }\r\n\r\n /**\r\n * Definiert den Label Text\r\n */\r\n public get label(): string {\r\n return this._label;\r\n }\r\n\r\n /**\r\n * returns an object with all label sizes. These values can then be transferred to corresponding CSS classes using a pipe\r\n */\r\n public get labelSizes(): ISacLabelSizes {\r\n return {\r\n labelSizeSm: this.labelSizeSm,\r\n labelSizeMd: this.labelSizeMd,\r\n labelSizeXs: this.labelSizeXs,\r\n labelSizeXl: this.labelSizeXl,\r\n labelSizeXxl: this.labelSizeXxl,\r\n labelSizeLg: this.labelSizeLg,\r\n };\r\n }\r\n\r\n /**\r\n * Methode ergibt Boolean Wert für touched\r\n */\r\n public get touched(): boolean {\r\n if (this.ngControl !== null) {\r\n this._touched = this.ngControl.touched;\r\n }\r\n\r\n return this._touched;\r\n }\r\n\r\n /**\r\n * Get Methode für NgModel Binding in Html Markup\r\n */\r\n public get value(): VALUE {\r\n return this._value;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode ergibt Error anhand von gegebenen Kriterien\r\n */\r\n public GetErrorMessage(): Observable<string> {\r\n if (this.ngControl.errors === undefined || this.ngControl.errors === null) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const errors: ValidationErrors = this.ngControl.errors;\r\n\r\n if (errors.length === 0) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const keys: string[] = Object.keys(errors);\r\n\r\n if (keys.length <= 0) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const errorItem: ValidationErrorItem = errors[keys[0]];\r\n\r\n // Validation Parameters\r\n const parameters = {};\r\n if (errorItem.parameters !== null && errorItem.parameters !== undefined) {\r\n errorItem.parameters.forEach((v, k) => {\r\n parameters[k] = v;\r\n });\r\n }\r\n parameters['FIELD'] = errorItem.fieldName;\r\n\r\n return this.lngResourceService.GetString(\r\n errorItem.errorMessageKey,\r\n parameters\r\n );\r\n }\r\n\r\n /**\r\n * Init Event\r\n */\r\n public ngOnInit() {\r\n // receive form via formcontrolname or formcontrol instance\r\n const formControl = this.injector.get(NgControl, null);\r\n if (formControl instanceof FormControlName) {\r\n const form = this.injector.get(FormGroupDirective, null);\r\n this.ngControl = form.getControl(formControl);\r\n } else {\r\n if (formControl) {\r\n this.ngControl = formControl.control as UntypedFormControl;\r\n }\r\n }\r\n\r\n this.UpdateLabelToControl();\r\n\r\n // set label sizes from formlayout directive\r\n this.setLabelSizes();\r\n\r\n // set component heigth from fromlayout directive\r\n this.setComponentHeight();\r\n\r\n // set adaptive label property from formlayout directive\r\n this.setIsAdaptiveLabel();\r\n\r\n this.OnClassInit();\r\n }\r\n\r\n /**\r\n * Methode ergibt boolean touched = true\r\n */\r\n public onTouch(): void {\r\n this._touched = true;\r\n this.propagateTouch();\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen im Control mitbekommen können\r\n * Zur Änderungsinfo die Methode propagateChange aufrufen.\r\n */\r\n public registerOnChange(fn: any): void {\r\n this.propagateChange = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen mitbekommen, wenn das Control aktiviert (Focus) wird.\r\n */\r\n public registerOnTouched(fn: any): void {\r\n this.propagateTouch = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode registriert Änderungen bei der Validierung\r\n */\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Setzt das Control auf Disabled\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this._disabledForm = isDisabled;\r\n }\r\n\r\n /**\r\n * Methode die den Wert des Inputs setzt\r\n */\r\n public setValue(v: VALUE): void {\r\n this.value = v;\r\n }\r\n\r\n /**\r\n * Validator Methode\r\n */\r\n public validate(c: AbstractControl): ValidationErrors | null {\r\n const error: ValidationErrors | null = this.validateData(c);\r\n return error;\r\n }\r\n\r\n /**\r\n * Methode zum schreiben von Werten aus dem Model in das Control\r\n */\r\n public writeValue(value: VALUE) {\r\n this._value = value;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Abstrakte Validator Methode\r\n */\r\n public abstract validateData(c: AbstractControl): ValidationErrors | null;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Method can Overwriten in Parent Classes\r\n * @param value Wert welcher in den korrekten Typ konvertiert werden soll\r\n * @returns Wert im korrekten Typ\r\n */\r\n protected ConvertInputValue(value: VALUE): VALUE {\r\n return value;\r\n }\r\n\r\n /**\r\n * Methode ergibt Decimal Symbol\r\n */\r\n protected GetDecimalSymbol(): string {\r\n return '.';\r\n }\r\n\r\n /**\r\n * Method can be used to Set Properties at Class Init\r\n */\r\n protected OnClassInit(): void {}\r\n\r\n /**\r\n * Aktualisiert den NgModel Wert und die Gültigkeit des Validators des Controls\r\n */\r\n protected UpdateValueAndValidity(): void {\r\n if (this.ngControl) {\r\n this.ngControl.updateValueAndValidity({ onlySelf: true });\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateLabelToControl(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (\r\n this.ngControl as unknown as IAbstractControlLabelExtension\r\n ).controllabel = this.label;\r\n }\r\n }\r\n\r\n /**\r\n * Set component height from property or parent layout control\r\n */\r\n private setComponentHeight() {\r\n // set size extra small\r\n if (!this.componentHeight) {\r\n if (this.formlayout?.componentHeight) {\r\n this.componentHeight = this.formlayout.componentHeight;\r\n } else {\r\n this.componentHeight = this.configurationService.ComponentHeight;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set adaptive label property from parent layout control\r\n */\r\n private setIsAdaptiveLabel() {\r\n if (!this.isAdaptiveLabel) {\r\n if (this.formlayout?.isAdaptiveLabel !== undefined) {\r\n this.isAdaptiveLabel = this.formlayout.isAdaptiveLabel;\r\n } else {\r\n this.isAdaptiveLabel = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set label sizes from property or parent layout control\r\n */\r\n private setLabelSizes() {\r\n // set size extra small\r\n if (!this.labelSizeXs) {\r\n if (this.formlayout?.labelSizeXs) {\r\n this.labelSizeXs = this.formlayout.labelSizeXs;\r\n } else {\r\n this.labelSizeXs = this.configurationService.LabelSizeXs;\r\n }\r\n }\r\n\r\n // set size small\r\n if (!this.labelSizeSm) {\r\n if (this.formlayout?.labelSizeSm) {\r\n this.labelSizeSm = this.formlayout.labelSizeSm;\r\n } else {\r\n this.labelSizeSm = this.configurationService.LabelSizeSm;\r\n }\r\n }\r\n\r\n // set size medium\r\n if (!this.labelSizeMd) {\r\n if (this.formlayout?.labelSizeMd) {\r\n this.labelSizeMd = this.formlayout.labelSizeMd;\r\n } else {\r\n this.labelSizeMd = this.configurationService.LabelSizeMd;\r\n }\r\n }\r\n\r\n // set size large\r\n if (!this.labelSizeLg) {\r\n if (this.formlayout?.labelSizeLg) {\r\n this.labelSizeLg = this.formlayout.labelSizeLg;\r\n } else {\r\n this.labelSizeLg = this.configurationService.LabelSizeLg;\r\n }\r\n }\r\n\r\n // set size extra large\r\n if (!this.labelSizeXl) {\r\n if (this.formlayout?.labelSizeXl) {\r\n this.labelSizeXl = this.formlayout.labelSizeXl;\r\n } else {\r\n this.labelSizeXl = this.configurationService.LabelSizeXl;\r\n }\r\n }\r\n\r\n // set size extra extra large\r\n if (!this.labelSizeXxl) {\r\n if (this.formlayout?.labelSizeXxl) {\r\n this.labelSizeXxl = this.formlayout.labelSizeXxl;\r\n } else {\r\n this.labelSizeXxl = this.configurationService.LabelSizeXxl;\r\n }\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\n\r\n/**\r\n * Basis Komponente für SacCheckboxCommon. Extends SacBaseModelControl\r\n */\r\n@Directive()\r\nexport class SacCheckboxCommon extends SacBaseModelControl<boolean> {\r\n /**\r\n * Text welcher als Tooltip angezeigt wird.\r\n */\r\n @Input() tooltiptext: string = '';\r\n\r\n /**\r\n * Text vom Checkbox-Control. Der Text wird rechts von der Checkbox angezeigt.\r\n */\r\n @Input() checkboxtext;\r\n\r\n /**\r\n * Defines that the checkbox can be used in a list of checkboxes and is not handled as a single form control\r\n */\r\n @Input() stacked: boolean = false;\r\n\r\n /**\r\n * Control hat keinen Validator\r\n */\r\n validateData(c: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n}\r\n","/**\r\n * Klasse für Validierungsfehler\r\n * */\r\nexport class ValidationErrorItem {\r\n /**\r\n * Konstruktor\r\n * @param errorType Type des Fehlers\r\n * @param errorMessageKey Key für Fehlermeldung\r\n * @param errorMessageSummaryKey Key für Fehlermeldung in Validation Summary\r\n * @param fieldName Name des Labels oder Bezeichnung des Feldes\r\n */\r\n constructor(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageSummaryKey: string,\r\n fieldName: string = null\r\n ) {\r\n this.errorType = errorType;\r\n this.errorMessageKey = errorMessageKey;\r\n this.errorMessageValidationSummaryKey = errorMessageSummaryKey;\r\n this.fieldName = fieldName;\r\n }\r\n\r\n /**\r\n * Typ den Fehler\r\n */\r\n public errorType: string;\r\n\r\n /**\r\n * Error Message Key\r\n */\r\n public errorMessageKey: string;\r\n\r\n /**\r\n * Error Message Key für Validation Summary\r\n */\r\n public errorMessageValidationSummaryKey: string;\r\n\r\n /**\r\n * Label oder Name des Feldes\r\n */\r\n public fieldName: string = null;\r\n\r\n /**\r\n * Map mit Parametern die in den Meldungen als Platzhalter verwendet werden können\r\n */\r\n public parameters: Map<string, any> = new Map<string, any>();\r\n}\r\n","import { ValidationErrorItem } from './validationerroritem';\r\n\r\nexport function CreateValidationError(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageValidationSummaryKey: string,\r\n parameters: Map<string, any> = new Map<string, any>()\r\n): any {\r\n const item: ValidationErrorItem = new ValidationErrorItem(\r\n errorType,\r\n errorMessageKey,\r\n errorMessageValidationSummaryKey\r\n );\r\n\r\n if (parameters !== null && parameters !== undefined && parameters.size > 0) {\r\n parameters.forEach((v, k) => {\r\n item.parameters.set(k, v);\r\n });\r\n }\r\n\r\n return { [errorType]: item };\r\n}\r\n","import { Moment } from 'moment';\r\nimport * as moment_ from 'moment';\r\n/**\r\n * Moment\r\n */\r\nexport const moment = moment_['default'];\r\n\r\nexport function isDateValid(value: any, format: string) {\r\n // NULL ist gültig\r\n if (value === null || value === undefined || value === '') {\r\n return true;\r\n }\r\n\r\n let date: Moment = moment(value, [format], true);\r\n date = date.utc();\r\n\r\n return date.isValid();\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\n\r\nexport function isValidDateValidator(\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n if (!isDateValid(control.value, ctl.datetimeformatstring)) {\r\n return CreateValidationError(\r\n 'dateformat',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function maxDateValidator(\r\n maxDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || maxDate === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && maxDate < ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MAXDATE',\r\n moment(maxDate).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'datemax',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function maxTimeValidator(\r\n maxTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || maxTime === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && maxTime < ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MAXTIME',\r\n moment(maxTime).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'timemax',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function maxValueValidator(\r\n maxvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.max(maxvalue);\r\n\r\n if (validator(control) !== null) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MAXVALUE', maxvalue);\r\n\r\n return CreateValidationError(\r\n 'maxvalue',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function minDateValidator(\r\n minDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || minDate === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && minDate > ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MINDATE',\r\n moment(minDate).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'datemin',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function minFilesValidator(\r\n minFiles: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IUploadControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!minFiles || minFiles === 0) {\r\n return null;\r\n }\r\n\r\n if (ctl.uploadedfilecount !== null && minFiles > ctl.uploadedfilecount) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MINFILES', minFiles);\r\n\r\n return CreateValidationError(\r\n 'minfiles',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function minLengthValidator(\r\n minlength: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.minLength(minlength);\r\n\r\n if (\r\n minlength !== null &&\r\n minlength !== undefined &&\r\n control.value !== '' &&\r\n control.value !== undefined &&\r\n control.value != null &&\r\n validator(control) != null\r\n ) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MINLENGTH', minlength);\r\n\r\n return CreateValidationError(\r\n 'minlength',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function minTimeValidator(\r\n minTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || minTime === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && minTime > ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MINTIME',\r\n moment(minTime).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'timemin',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function minValueValidator(\r\n minvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.min(minvalue);\r\n\r\n if (validator(control) !== null) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MINVALUE', minvalue);\r\n\r\n return CreateValidationError(\r\n 'minvalue',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function multilanguageRequiredValidator(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n let missing = false;\r\n\r\n languages.forEach((item: LanguageModel) => {\r\n if (control.value) {\r\n if (\r\n control.value[item.IsoCode] === undefined ||\r\n control.value[item.IsoCode] === null ||\r\n control.value[item.IsoCode] === ''\r\n ) {\r\n missing = true;\r\n }\r\n }\r\n });\r\n\r\n if (missing) {\r\n return CreateValidationError(\r\n 'required',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function multilanguageRequiredAnyValidator(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n let missing = false;\r\n\r\n languages.forEach((item: LanguageModel) => {\r\n if (control.value) {\r\n if (\r\n control.value[item.IsoCode] !== undefined &&\r\n control.value[item.IsoCode] !== null &&\r\n control.value[item.IsoCode] !== ''\r\n ) {\r\n missing = true;\r\n }\r\n }\r\n });\r\n\r\n if (!missing) {\r\n return CreateValidationError(\r\n 'requiredany',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function patternValidator(\r\n pattern: string,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.pattern(pattern);\r\n\r\n if (validator(control) !== null) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('PATTERN', pattern);\r\n\r\n return CreateValidationError(\r\n 'pattern',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function requiredValidator(\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (Validators.required(control) !== null) {\r\n return CreateValidationError(\r\n 'required',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function emailValidator(\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (Validators.email(control) !== null) {\r\n return CreateValidationError(\r\n 'email',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport * as moment_ from 'moment';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { isValidDateValidator } from './invaliddate.validator';\r\nimport { maxDateValidator } from './maxdate.validator';\r\nimport { maxTimeValidator } from './maxtime.validator';\r\nimport { maxValueValidator } from './maxvalue.validator';\r\nimport { minDateValidator } from './mindate.validator';\r\nimport { minFilesValidator } from './minfiles.validator';\r\nimport { minLengthValidator } from './minlength.validator';\r\nimport { minTimeValidator } from './mintime.validator';\r\nimport { minValueValidator } from './minvalue.validator';\r\nimport { multilanguageRequiredValidator } from './multilanguagerequired.validator';\r\nimport { multilanguageRequiredAnyValidator } from './multilanguagerequiredany.validator';\r\nimport { patternValidator } from './pattern.validator';\r\nimport { requiredValidator } from './required.validator';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { emailValidator } from './email.validator';\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Klasse mit Standard Validatoren\r\n */\r\nexport class Validation {\r\n /**\r\n * Die Methode ist von jedem Validator aufgerufen. Die setzt sowohl den errorType des gerpüfte Item, als auch die ErrorMessage (gemäss von errorType, FieldName und Parameters).\r\n * @param errorType Typ den Fehler\r\n * @param errorMessageKey Error Message Key\r\n * @param errorMessageValidationSummaryKey Error Message Key für Validation Summary\r\n * @param fieldName Label oder Name des Feldes\r\n * @param parameters Parametern die in den Meldungen als Platzhalter verwendet werden können\r\n */\r\n static GetValidationErrorItem(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageValidationSummaryKey: string,\r\n fieldName: string = null,\r\n parameters: Map<string, any> = new Map<string, any>()\r\n ): any {\r\n return CreateValidationError(\r\n errorType,\r\n errorMessageKey,\r\n errorMessageValidationSummaryKey,\r\n parameters\r\n );\r\n }\r\n\r\n /**\r\n * Validator für Required State\r\n * @param control Control das Validiert wird\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static required(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return requiredValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator für Min Value\r\n * @param control Control das Validiert wird\r\n * @param minvalue Min. Value\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minValue(\r\n minvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minValueValidator(\r\n minvalue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validierung mit einem RegEx Pattern\r\n * @param control Control das validiert werden soll.\r\n * @param pattern RegEx Pattern\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static pattern(\r\n pattern: string,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return patternValidator(\r\n pattern,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator für Max Value\r\n * @param control Control das Validiert werden soll\r\n * @param maxvalue Max. Wert\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxValue(\r\n maxvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxValueValidator(\r\n maxvalue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert Feld auf E-Mail Adresse\r\n * @param control Control das Valdiert werden soll\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static email(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return emailValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert auf die Länge des Wertes im Control\r\n * @param control Control das Validiert werden soll\r\n * @param minlength Min. Länge des Wertes\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minLength(\r\n minlength: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minLengthValidator(\r\n minlength,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum neuer als minDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minDate Min. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minDate(\r\n minDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minDateValidator(\r\n minDate,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum älter als maxDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxDate max. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxDate(\r\n maxDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxDateValidator(\r\n maxDate,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit später als minTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minTime(\r\n minTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n ): ValidatorFn {\r\n return minTimeValidator(\r\n minTime,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit früher als maxTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxTime(\r\n maxTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxTimeValidator(\r\n maxTime,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator der prüft ob der Wert ein Datum ist.\r\n * @param control Control mit IDateTimeControl Interface implementierung\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die beim Control angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static isValidDate(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return isValidDateValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator für min. Anzahl von Uploads\r\n * @param control Control das Validatiert werden soll. Control muss IUploadControl implementiert haben\r\n * @param minFiles Min. Anzahl Files die hochgeladen werden müssen\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minFiles(\r\n minFiles: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minFilesValidator(\r\n minFiles,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator für MultiLanguage Control, welcher überprüft ob alle Sprachen erfasst sind.\r\n * @param control Control das Validatiert werden soll\r\n * @param languages Sprachen die im Control erfasst werden können.\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static multilanguageRequired(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredValidator(\r\n languages,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator für MultiLanguage Control, welcher überprüft ob min. ein Wert erfasst wurde\r\n * @param control Control das Validatiert werden soll\r\n * @param languages Sprachen die im Control erfasst werden können.\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static multilanguageRequiredAny(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredAnyValidator(\r\n languages,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n}\r\n","import { Directive, Host, Injector, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors, Validator } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\nimport { SacRadiobuttonCommon } from './radiobutton';\r\n\r\n/**\r\n * Basis Komponente für SacRadiobuttonsCommon. Extends SacBaseModelControl\r\n */\r\n@Directive()\r\nexport abstract class SacRadiobuttonsCommon\r\n extends SacBaseModelControl<any>\r\n implements Validator\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * Radio Buttons Content\r\n */\r\n private contentRadiobuttons: SacRadiobuttonCommon[] = [];\r\n /**\r\n * Radio Button Index\r\n */\r\n private radioButtonIndex: number = 0;\r\n\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(@Host() formlayout: SacFormLayoutCommon, injector: Injector) {\r\n super(formlayout, injector);\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * GEtter für Radio Button Index\r\n */\r\n public GetRadionButtonIndex(): number {\r\n this.radioButtonIndex++;\r\n return this.radioButtonIndex;\r\n }\r\n\r\n /**\r\n * Methode prüft ob Item checked ist\r\n */\r\n public HasCheckedItem(): boolean {\r\n const radioButtons: SacRadiobuttonCommon[] = this.contentRadiobuttons;\r\n\r\n if (radioButtons === undefined || radioButtons === null) {\r\n return false;\r\n }\r\n\r\n return this.contentRadiobuttons.some((itm) => itm.checked);\r\n }\r\n\r\n /**\r\n * Erstellung des RadioButton\r\n */\r\n public RegisterRadioButton(radioButton: SacRadiobuttonCommon) {\r\n this.contentRadiobuttons.push(radioButton);\r\n }\r\n\r\n /**\r\n * Item selektieren\r\n */\r\n public SelectItem(value: any) {\r\n this.contentRadiobuttons.forEach((itm) => {\r\n itm.checked = itm.value === value;\r\n });\r\n\r\n this.value = value;\r\n }\r\n\r\n /**\r\n * Löschen des Radio Button\r\n */\r\n public UnregisterRadioButton(radioButton: SacRadiobuttonCommon) {\r\n const index: number = this.contentRadiobuttons.indexOf(radioButton);\r\n\r\n if (index >= 0) {\r\n this.contentRadiobuttons.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors {\r\n if (!this.HasCheckedItem()) {\r\n return Validation.GetValidationErrorItem(\r\n 'required',\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired,\r\n this.label\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Wert schreiben\r\n */\r\n public writeValue(value: any) {\r\n super.writeValue(value);\r\n if (value !== null && value !== undefined) {\r\n this.contentRadiobuttons.forEach((itm) => {\r\n itm.checked = itm.value === value;\r\n });\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { ControlHeight } from '../../enums/ControlHeight';\r\nimport { SacRadiobuttonsCommon } from './radiobuttons';\r\n\r\n/**\r\n * Basis Komponente für SacRadiobutton.\r\n */\r\n@Directive()\r\nexport abstract class SacRadiobuttonCommon implements OnDestroy {\r\n /**\r\n * Konstruktor\r\n * @param SacRadioButtons\r\n */\r\n constructor(protected sacRadioButtons: SacRadiobuttonsCommon) {\r\n // Registration des Controls in SacRadioButtons Container\r\n this.sacRadioButtons.RegisterRadioButton(this);\r\n }\r\n\r\n /**\r\n * ControlHeight enum for use in HTML markup\r\n */\r\n ControlHeight: typeof ControlHeight = ControlHeight;\r\n\r\n /**\r\n * Wert\r\n */\r\n @Input()\r\n public value: any;\r\n\r\n /**\r\n * Label Text\r\n */\r\n @Input()\r\n public label: string;\r\n\r\n /**\r\n * Boolean Property, ob Radiobutton checked ist\r\n */\r\n @Input()\r\n public checked: boolean;\r\n\r\n /**\r\n * Boolean Property, ob Radiobutton disabled ist\r\n */\r\n @Input()\r\n public disabled: boolean;\r\n\r\n /**\r\n * Output Event\r\n */\r\n @Output()\r\n onselectitem = new EventEmitter();\r\n\r\n /**\r\n * Methode ergibt Boolean, ob Control disabled ist\r\n */\r\n get isDisabled(): boolean {\r\n return this.disabled || this.sacRadioButtons.disabled;\r\n }\r\n\r\n /**\r\n * Boolean Property zum Ausblenden des Controls; default Wert - false\r\n */\r\n private _hidden: boolean = false;\r\n\r\n /**\r\n * Setter für hidden Property\r\n */\r\n @Input()\r\n set hidden(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._hidden = v as boolean;\r\n } else {\r\n this._hidden = v === 'true';\r\n }\r\n\r\n // Model Reset falls RadioButton selektiert war\r\n if (this._hidden && this.checked) {\r\n this.sacRadioButtons.SelectItem(null);\r\n }\r\n }\r\n get hidden(): boolean | string {\r\n return this._hidden;\r\n }\r\n\r\n /**\r\n * Unique Index für RadioButton\r\n */\r\n _index: number = null;\r\n\r\n /**\r\n * Getter für Unique Index\r\n */\r\n get getIndex(): number {\r\n if (\r\n this._index === null &&\r\n this.sacRadioButtons !== null &&\r\n this.sacRadioButtons !== undefined\r\n ) {\r\n this._index = this.sacRadioButtons.GetRadionButtonIndex();\r\n }\r\n\r\n return this._index;\r\n }\r\n\r\n /**\r\n * Parent Control Name\r\n */\r\n get getName(): string {\r\n return this.sacRadioButtons.name;\r\n }\r\n\r\n /**\r\n * define the control height from parent control\r\n */\r\n get componentHeight(): ControlHeight | null {\r\n return this.sacRadioButtons.componentHeight;\r\n }\r\n\r\n //#region Control Templates\r\n\r\n /**\r\n * Template für Value Element\r\n */\r\n @Input()\r\n labeltemplate: TemplateRef<any>;\r\n\r\n //#endregion\r\n\r\n //#region Control Events\r\n\r\n /**\r\n * Event wenn die Komponente zerstört wird\r\n */\r\n ngOnDestroy(): void {\r\n // De-Registration des Controls in SacRadioButtons Container\r\n this.sacRadioButtons.UnregisterRadioButton(this);\r\n }\r\n\r\n //#endregion\r\n\r\n /**\r\n * Event bei Änderungen\r\n */\r\n public ChangeEvent(): void {\r\n if (!this.disabled) {\r\n this.sacRadioButtons.SelectItem(this.value);\r\n this.onselectitem.emit();\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n Directive,\r\n OnDestroy,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Base Komponente für Dialog\r\n */\r\n@Directive()\r\nexport class SacDialogCommon implements OnDestroy {\r\n /**\r\n * Name des Containers für den Dialog\r\n */\r\n dialogElement: ElementRef;\r\n\r\n private hasSetBodyTag = false;\r\n\r\n /**\r\n * Implementation als Setter, da mit ngIf das Element bei Unsichtbarkeit UNDEFINED ist.\r\n */\r\n @ViewChild('dialog', { static: false })\r\n set dialogElementSetter(content: ElementRef) {\r\n this.dialogElement = content;\r\n }\r\n\r\n /**\r\n * Boolean Property definiert ob das Dialog angezeigt wird\r\n */\r\n _show: boolean = false;\r\n\r\n /**\r\n * Das property enthielt (wenn überhaupt gesetzt) entweder keywords für sizing oder custom css Klassen.\r\n * Die akzeptabel keywordssind: 'small', 'large', 'extralarge', 'medium', ''.\r\n */\r\n _size: string = '';\r\n\r\n // #region Properties\r\n\r\n /**\r\n * Input Property. Erhält den Title des Dialog. Default Value: 'Dialog'.\r\n */\r\n @Input()\r\n public title: string = 'Dialog';\r\n\r\n /**\r\n * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch ESC geschlossen werden. Default ist true.\r\n */\r\n @Input()\r\n public allowesc: boolean = true;\r\n\r\n /**\r\n * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch click außerhalb des Dialog-Fenster geschlossen werden. Default ist true.\r\n */\r\n @Input()\r\n public backdrop: boolean = true;\r\n\r\n /**\r\n * Input Property. Erhält den Namen des Dialog - benutzt für das ID. Default Value: ''\r\n */\r\n @Input()\r\n public name: string = '';\r\n\r\n /**\r\n * Steuert ob im Header des Dialogs ein Button angezeigt wird.\r\n */\r\n @Input()\r\n public closebutton: boolean = true;\r\n\r\n /**\r\n * Input Property. Erhält die Breite des Dialog\r\n */\r\n @Input()\r\n public width: string = null;\r\n\r\n /**\r\n * Definiert eine feste Höhe beim Dialog.\r\n */\r\n @Input()\r\n public height: string = null;\r\n\r\n /**\r\n * Das Input akzeptiert sowohl default size-css-Klassen als auch custom Klassen.\r\n * case insensitive.\r\n * Die akzeptabel default-size-Klassen sind: 'small', 'large', 'extralarge', 'medium', ''.\r\n * Wenn size ist NICHT gesetzt (oder 'medium' oder ''), default ist in medium size: max-width 500px.\r\n */\r\n @Input()\r\n set size(v: string) {\r\n v = v.toLowerCase();\r\n this._size = v;\r\n }\r\n\r\n /**\r\n * Output Emitter. Wird aufgerufen, wenn das Wert des _show property geändert ist - damait das Dialog geöfnet/geschlossen wird.\r\n */\r\n @Output()\r\n isvisibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Setter. Erhält das boolen Wert des _show property\r\n */\r\n @Input()\r\n set isvisible(v: boolean) {\r\n if (\r\n v &&\r\n !this.hasSetBodyTag &&\r\n !document.body.classList.contains('modal-open')\r\n ) {\r\n document.body.classList.add('modal-open');\r\n this.hasSetBodyTag = true;\r\n }\r\n\r\n if (\r\n !v &&\r\n this.hasSetBodyTag &&\r\n document.body.classList.contains('modal-open')\r\n ) {\r\n document.body.classList.remove('modal-open');\r\n this.hasSetBodyTag = false;\r\n }\r\n\r\n this._show = v;\r\n }\r\n\r\n /**\r\n * Getter. Ergibt das boolen Wert des _show property\r\n */\r\n get isvisible(): boolean {\r\n return this._show;\r\n }\r\n\r\n /**\r\n * Die Funktion prüft ob es ein default css classe für Size des Dialog durch den size Input gesetzt wurde.\r\n */\r\n issetdefaultsize(): boolean {\r\n let result: boolean = false;\r\n\r\n switch (this._size) {\r\n case 'small':\r\n result = true;\r\n break;\r\n case 'medium':\r\n result = true;\r\n break;\r\n case 'large':\r\n result = true;\r\n break;\r\n case 'extralarge':\r\n result = true;\r\n break;\r\n case '':\r\n result = true;\r\n break;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Constructor\r\n\r\n /**\r\n * Konstruktor\r\n * Inject des Formulars\r\n */\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n // #endregion\r\n\r\n /**\r\n * Methode wenn Componente entfernt wird\r\n */\r\n ngOnDestroy(): void {\r\n if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {\r\n document.body.classList.remove('modal-open');\r\n this.hasSetBodyTag = false;\r\n }\r\n }\r\n\r\n // #region Methods\r\n\r\n /**\r\n * Die Methode setz den Wert des _show property auf true\r\n */\r\n public show(): void {\r\n this._show = true;\r\n\r\n if (\r\n !this.hasSetBodyTag &&\r\n !document.body.classList.contains('modal-open')\r\n ) {\r\n document.body.classList.add('modal-open');\r\n this.hasSetBodyTag = true;\r\n }\r\n\r\n this.isvisibleChange.emit(this._show);\r\n }\r\n\r\n /**\r\n * Die Methode setz den Wert des _show property auf false\r\n */\r\n public hide(): void {\r\n if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {\r\n document.body.classList.remove('modal-open');\r\n this.hasSetBodyTag = false;\r\n }\r\n\r\n this._show = false;\r\n this.isvisibleChange.emit(this._show);\r\n }\r\n\r\n /**\r\n * Getter for ChangeDetector.\r\n */\r\n protected get ChangeDetector(): ChangeDetectorRef {\r\n return this.cdRef;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Host Actions\r\n\r\n /**\r\n * Allow Close by Click outside Dialog\r\n */\r\n @HostListener('click', ['$event'])\r\n onClick(event: any): void {\r\n if (\r\n this.allowesc === false ||\r\n (this.dialogElement !== null &&\r\n this.dialogElement !== undefined &&\r\n event.target !== this.dialogElement.nativeElement)\r\n ) {\r\n return;\r\n }\r\n this.hide();\r\n }\r\n\r\n /**\r\n * Allow Close by ESC\r\n */\r\n @HostListener('document:keydown', ['$event'])\r\n onKeydownHandler(event: KeyboardEvent) {\r\n const ESCAPE_KEYCODE = 'Escape';\r\n\r\n if (this.allowesc === true && event.key === ESCAPE_KEYCODE) {\r\n this.hide();\r\n }\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, UntypedFormGroup, NgForm } from '@angular/forms';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\n\r\n// #region Type aliases\r\n\r\n/**\r\n * Type for form actions\r\n */\r\nexport type FormHooks = 'change' | 'blur' | 'submit';\r\n\r\n// #endregion Type aliases\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Komponente für SacFormular\r\n */\r\n@Directive()\r\nexport class SacFormCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Standardwert wann die Werte via NgModel aktualisiert werden\r\n */\r\n private _updateon: FormHooks = 'change';\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param form Instanz von NgForm\r\n */\r\n constructor(private form: NgForm) {\r\n this.form.options = { updateOn: this._updateon };\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Definiert, wenn das Model geupdatet wird\r\n */\r\n @Input()\r\n public set updateon(v: FormHooks) {\r\n this._updateon = v;\r\n this.form.options.updateOn = v;\r\n }\r\n\r\n public get updateon(): FormHooks {\r\n return this._updateon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Gibt die NgForm Instanz zurück\r\n */\r\n public getForm(): NgForm {\r\n return this.form;\r\n }\r\n\r\n /**\r\n * Markiert alle Controls innerhalb des Formulares als Touched\r\n */\r\n public markAsTouched(): void {\r\n if (this.form && this.form.invalid) {\r\n this.markAsTouchedInternal(this.form.controls);\r\n }\r\n }\r\n\r\n /**\r\n * Aktualisiert die Werte und den Gültigkeitsstatus des Formulars\r\n */\r\n public updateValueAndValidity(markAsTouched: boolean = true): void {\r\n // Update all Controls\r\n this.updateValueAndValidityInternal(this.form.controls);\r\n // Update Main Form\r\n this.getForm().form.updateValueAndValidity();\r\n\r\n // Mark all Controls as Touched\r\n if (markAsTouched) {\r\n this.markAsTouched();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Markiert alle Controls inkl. dem Tree als Touched\r\n * @param controls Controls Collection\r\n */\r\n private markAsTouchedInternal(controls: { [key: string]: AbstractControl }) {\r\n const keyList: string[] = Object.keys(controls);\r\n\r\n for (const field of keyList) {\r\n const control = controls[field];\r\n if (control instanceof UntypedFormGroup) {\r\n this.markAsTouchedInternal(control.controls);\r\n } else {\r\n control.markAsTouched({ onlySelf: true });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Aktualisiert die Werte und die gültigkeit des Formulars\r\n * @param controls Controls Collection\r\n */\r\n private updateValueAndValidityInternal(controls: {\r\n [key: string]: AbstractControl;\r\n }) {\r\n const keyList: string[] = Object.keys(controls);\r\n\r\n for (const field of keyList) {\r\n const control = controls[field];\r\n if (control instanceof UntypedFormGroup) {\r\n this.updateValueAndValidityInternal(control.controls);\r\n } else {\r\n control.updateValueAndValidity({ onlySelf: true });\r\n }\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n// #endregion Classes\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n\r\n/**\r\n * Abstract Klasse für SacBaseListControl. Extendes SacBaseModelControl\r\n */\r\n@Directive()\r\nexport abstract class SacBaseListControl<\r\n VALUE\r\n> extends SacBaseModelControl<VALUE> {\r\n /**\r\n * options. Typ: any\r\n */\r\n _options: any[];\r\n\r\n /**\r\n * Template für Value Element\r\n */\r\n @Input()\r\n optionlabeltemplate: TemplateRef<any>;\r\n\r\n /**\r\n * Definiert das Label für das Option Element\r\n */\r\n @Input() optionlabel: string = 'label';\r\n\r\n /**\r\n * Definiert den Wert für das Option Element\r\n */\r\n @Input() optionvalue: string = 'value';\r\n\r\n /**\r\n * Definiert, ob das Option Element aktiv ist\r\n */\r\n @Input() optionenabled: string = '';\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() isrequired: boolean = false;\r\n\r\n /**\r\n * Style Breite für List Control Element\r\n */\r\n @Input() width: string = null;\r\n\r\n /**\r\n * Input property für options\r\n */\r\n @Input() get options(): any[] {\r\n return this._options;\r\n }\r\n\r\n /**\r\n * setter für options\r\n */\r\n set options(val: any[]) {\r\n this._options = val;\r\n }\r\n}\r\n","import { Input, Directive } from '@angular/core';\r\nimport { SacBaseListControl } from './baselistcontrol';\r\n\r\n/**\r\n * Abstract Klasse für SacBaseSelectControl. Extendes SacBaseListControl\r\n */\r\n@Directive()\r\nexport abstract class SacBaseSelectControl<VALUE> extends SacBaseListControl<VALUE> {\r\n\r\n /**\r\n * Definiert das Label für das Group Element\r\n */\r\n @Input() grouplabel: string = 'label';\r\n\r\n /**\r\n * Definiert die Collection der Items im Group Element\r\n */\r\n @Input() groupitems: string = '';\r\n\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Host,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseSelectControl } from '../../common/baseselectcontrol';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Dropdown Komponente\r\n */\r\n@Directive()\r\nexport class SacDropdownCommon extends SacBaseSelectControl<any> {\r\n // #region Properties\r\n\r\n /**\r\n * compareWith-Funktion\r\n */\r\n private _compareWith: (o1: any, o2: any) => boolean = Object.is;\r\n\r\n /**\r\n * Label Text für Empty Item\r\n */\r\n @Input() public emptylabel: string = '';\r\n /**\r\n * Option Value für Empty Item\r\n */\r\n @Input() public emptyvalue: string = null;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n /**\r\n * Counter vom OptionID; default Wert = 0\r\n */\r\n public _optionIdCounter: number = 0;\r\n /**\r\n * OptionMap\r\n */\r\n public _optionMap: Map<string, any> = new Map<string, any>();\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer html rendering engine\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n @Host() formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector);\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * compareWith-Funktion\r\n */\r\n @Input()\r\n public set comparewith(fn: (o1: any, o2: any) => boolean) {\r\n if (typeof fn !== 'function') {\r\n throw new Error(\r\n `compareWith must be a function, but received ${JSON.stringify(fn)}`\r\n );\r\n }\r\n this._compareWith = fn;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Registriert das OptionID-Counter als String\r\n */\r\n public registerOption(): string {\r\n return (this._optionIdCounter++).toString();\r\n }\r\n\r\n /**\r\n * Methode die von Options aufgerufen wird, um das Mapping zwischen Dropdown Value und Value herzustellen.\r\n * @param id: Id aus Options\r\n * @param value: Value\r\n */\r\n public setOptionMap(id: string, value: any): void {\r\n this._optionMap.set(id, value);\r\n\r\n // Selected Value auf Control aktualisieren, wenn Value dem SelectedValue entspricht\r\n if (this.value === value) {\r\n this.setSelectedValue(value);\r\n }\r\n }\r\n\r\n /**\r\n * Wert einstellen\r\n * @param value - Wert\r\n */\r\n public setValue(value: string) {\r\n super.setValue(this.getOptionValue(value));\r\n }\r\n\r\n /**\r\n * Validator\r\n * @param c Control Instanz\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n return error;\r\n }\r\n\r\n /**\r\n * Wert schreiben\r\n * @param value - Wert\r\n */\r\n public writeValue(value: any) {\r\n this.setSelectedValue(value);\r\n super.writeValue(value);\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * ID extrahieren\r\n * @param valueString String bei welchem die ID Extrahiert werden soll\r\n */\r\n private extractId(valueString: string): string {\r\n return valueString.split(':')[0];\r\n }\r\n\r\n /**\r\n * Nimmt das ID vom Option\r\n * @param value\r\n */\r\n private getOptionId(value: any): string | null {\r\n for (const id of Array.from(this._optionMap.keys())) {\r\n if (this._compareWith(this._optionMap.get(id), value)) {\r\n return id;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Nimmt den String-Wert vom Option\r\n * @param valueString\r\n */\r\n private getOptionValue(valueString: string): any {\r\n const id: string = this.extractId(valueString);\r\n return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\r\n }\r\n\r\n /**\r\n * Setzt den Selected Value auf dem Control\r\n * @param value Value\r\n */\r\n private setSelectedValue(value: any): void {\r\n // Select Item aus Control lesen\r\n const selectItem: any =\r\n this.elementRef.nativeElement.getElementsByTagName('select')[0];\r\n /**\r\n * Id vom Select Item\r\n */\r\n const id: string | null = this.getOptionId(value);\r\n /**\r\n * Value String\r\n */\r\n const valueString = _buildValueString(id, value);\r\n\r\n if (selectItem !== undefined) {\r\n this.renderer.setProperty(selectItem, 'value', valueString);\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * SacDropdownOption-Klasse\r\n */\r\n@Directive()\r\nexport class SacDropdownOptionCommon implements OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * ID-String\r\n */\r\n private id: string = null;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param _element Referenz auf HTML Element\r\n * @param _renderer Render Engine\r\n * @param _dropdown Dropdown Instanz\r\n */\r\n constructor(\r\n private _element: ElementRef,\r\n private _renderer: Renderer2,\r\n private _dropdown: SacDropdownCommon\r\n ) {\r\n if (this._dropdown) {\r\n this.id = this._dropdown.registerOption();\r\n }\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Option ngValue\r\n */\r\n @Input()\r\n public set ngValue(value: any) {\r\n // Cancel wenn kein Parent Dropdown vorhanden\r\n if (this._dropdown == null) {\r\n return;\r\n }\r\n\r\n this._dropdown.setOptionMap(this.id, value);\r\n this._setElementValue(_buildValueString(this.id, value));\r\n\r\n this._dropdown.writeValue(this._dropdown.value);\r\n }\r\n\r\n /**\r\n * Wert-Setter\r\n */\r\n @Input()\r\n public set value(value: any) {\r\n this._setElementValue(value);\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Den Wert vom Option-Element einstellen\r\n * @param value Wert\r\n */\r\n public _setElementValue(value: string): void {\r\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\r\n }\r\n\r\n /**\r\n * OnDestroy Event\r\n */\r\n public ngOnDestroy(): void {\r\n if (this._dropdown) {\r\n this._dropdown._optionMap.delete(this.id);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Functions\r\n\r\n/**\r\n * Function um ein Key Value Pair für das Dropdown zu erzeugen\r\n * @param id ID\r\n * @param value Wert der an das Element gebunden werden soll\r\n */\r\nexport function _buildValueString(id: string | null, value: any): string {\r\n // Wenn ID null ist Object zurückgeben\r\n if (id == null) {\r\n return `${value}`;\r\n }\r\n\r\n // Mapping Objekt zu String\r\n if (value && typeof value === 'object') {\r\n value = 'Object';\r\n }\r\n\r\n // String als ID\r\n return `${id}: ${value}`.slice(0, 50);\r\n}\r\n\r\n// #endregion Functions\r\n","// tsco:ignore\r\nimport {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n QueryList,\r\n Renderer2,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseSelectControl } from '../../common/baseselectcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n// #region Interfaces\r\n\r\n/**\r\n * Wrapper für HTML Options\r\n */\r\ninterface HTMLOption {\r\n // #region Properties\r\n\r\n /**\r\n * Boolean Property für Selektierte Elemente\r\n */\r\n selected: boolean;\r\n /**\r\n * Wert\r\n */\r\n value: string;\r\n\r\n // #endregion Properties\r\n}\r\n\r\n// #endregion Interfaces\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Basis Komponente für SacListboxOption\r\n */\r\n@Directive()\r\nexport class SacListboxOptionCommon implements OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * Value von Selected Option Item\r\n */\r\n private _value: any = null;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param _element: ElementRef\r\n * @param _renderer: Renderer2\r\n */\r\n constructor(\r\n private _element: ElementRef,\r\n private _renderer: Renderer2,\r\n private _listbox: SacListboxCommon\r\n ) {\r\n if (this._listbox) {\r\n this._listbox.registerOption(this);\r\n }\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * NgValue des Controls. Wird für die Mehrfachauswahl benötigt\r\n */\r\n @Input()\r\n public set ngvalue(value: any) {\r\n if (this._listbox) {\r\n this._value = value;\r\n }\r\n }\r\n\r\n /**\r\n * Definiert den Wert der Listbox\r\n */\r\n @Input()\r\n public set value(value: any) {\r\n if (this._listbox) {\r\n this._value = value;\r\n }\r\n }\r\n\r\n public get value(): any {\r\n return this._value;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode ergibt den Status der Elemente, die selektiert wurden\r\n * @param selected Element ist selektiert\r\n */\r\n public _setSelected(selected: boolean) {\r\n this._renderer.setProperty(\r\n this._element.nativeElement,\r\n 'selected',\r\n selected\r\n );\r\n }\r\n\r\n /**\r\n * OnDestroy Event\r\n */\r\n public ngOnDestroy(): void {\r\n if (this._listbox) {\r\n this._listbox.unregisterOption(this);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n\r\n/**\r\n * Komponente für SacListboxCommon. Extends SacBaseSelectControl\r\n */\r\n@Directive()\r\nexport class SacListboxCommon extends SacBaseSelectControl<Array<string>> {\r\n // #region Properties\r\n\r\n /**\r\n * Anzahl der Zeilen\r\n */\r\n @Input() public rowsize: number = 5;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n /**\r\n * ViewChildren Methode\r\n */\r\n @ViewChildren(SacListboxOptionCommon)\r\n public contentOptions: QueryList<SacListboxOptionCommon>;\r\n\r\n /**\r\n * OptionMap\r\n */\r\n public optionlist: Array<SacListboxOptionCommon> =\r\n new Array<SacListboxOptionCommon>();\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Getter für selektierte Elemente\r\n */\r\n public getSelectedItems(selectelement: any) {\r\n const selectedValues: Array<string> = new Array<string>();\r\n\r\n if (selectelement.hasOwnProperty('selectedOptions')) {\r\n const options: HTMLCollection = selectelement.selectedOptions;\r\n for (let i = 0; i < options.length; i++) {\r\n const opt: HTMLOption = options.item(i);\r\n selectedValues.push(opt.value);\r\n }\r\n } else {\r\n // Degrade on IE\r\n const options: HTMLCollection = <HTMLCollection>selectelement.options;\r\n for (let i = 0; i < options.length; i++) {\r\n const opt: HTMLOption = options.item(i);\r\n if (opt.selected) {\r\n selectedValues.push(opt.value);\r\n }\r\n }\r\n\r\n this.setValue(selectedValues);\r\n }\r\n }\r\n\r\n /**\r\n * Registriert ein Listbox Element\r\n * @param option Listbox Option Item das registriert werden soll\r\n */\r\n public registerOption(option: SacListboxOptionCommon): void {\r\n this.optionlist.push(option);\r\n }\r\n\r\n /**\r\n * Hebt die Registration eines Listbox Items auf\r\n * @param option Listbox Option Item das deregistriert werden soll\r\n */\r\n public unregisterOption(option: SacListboxOptionCommon): void {\r\n const index = this.optionlist.indexOf(option);\r\n this.optionlist.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Validator Methode\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Methode schreibt neuen Wert\r\n */\r\n public writeValue(value: Array<string>) {\r\n if (this.optionlist && value) {\r\n this.optionlist.forEach((itm) => {\r\n if (value.indexOf(itm.value) >= 0) {\r\n itm._setSelected(true);\r\n }\r\n });\r\n }\r\n\r\n super.writeValue(value);\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n\r\n/**\r\n * Wrapper für HTML Select\r\n */\r\nabstract class HTMLCollection {\r\n // #region Properties\r\n\r\n /**\r\n * Länge\r\n */\r\n public length: number;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Option-Item\r\n */\r\n public abstract item(_: number): HTMLOption;\r\n\r\n // #endregion Public Abstract Methods\r\n}\r\n\r\n// #endregion Classes\r\n","import {\r\n AfterContentInit,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { SacTabItemCommon } from './tabitem';\r\n\r\n/**\r\n * Base component for SacTab\r\n */\r\n@Directive()\r\nexport abstract class SacTabCommon implements AfterContentInit {\r\n /**\r\n * control name\r\n */\r\n @Input()\r\n public name: string = '';\r\n\r\n /**\r\n * input property for template. Typ TemplateRef<any>\r\n */\r\n @Input()\r\n tablabeltemplate: TemplateRef<any>;\r\n\r\n /**\r\n * dispose tabs when they are hidden\r\n */\r\n @Input()\r\n unloadtabitemswhenhidden: boolean | null = null;\r\n\r\n /**\r\n * Event when new tab is selected\r\n */\r\n @Output()\r\n tabselected: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Array von TabItems\r\n */\r\n abstract tabItems(): SacTabItemCommon[];\r\n\r\n // #region Control initialisieren\r\n\r\n /**\r\n * AfterContentInit Event\r\n */\r\n ngAfterContentInit() {\r\n this.initTabs();\r\n }\r\n\r\n /**\r\n * Initialisiert die Tabs\r\n */\r\n private initTabs(): void {\r\n const activeTab = this.tabItems().filter((tab) => tab.active);\r\n\r\n this.tabItems().forEach((itm) => {\r\n if (this.unloadtabitemswhenhidden !== null) {\r\n itm.unloadwhenhidden = this.unloadtabitemswhenhidden;\r\n }\r\n });\r\n\r\n if (activeTab.length === 0) {\r\n this.selectTab(this.tabItems()[0]);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * select new tab\r\n * @param tab tab that should be selected\r\n */\r\n selectTab(tab: SacTabItemCommon): void {\r\n // Cancel if Selected Tab is disabled\r\n if (tab.disabled) {\r\n return;\r\n }\r\n\r\n this.tabItems().forEach((item) => (item.active = false));\r\n tab.active = true;\r\n this.tabselected.emit(tab.id);\r\n }\r\n\r\n /**\r\n * get id of tab button\r\n * @param tabitemid id of tab\r\n */\r\n public GetTabItemButtonId(tabitemid: string) {\r\n return this.name + '_' + tabitemid;\r\n }\r\n}\r\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n/**\r\n * Die Basis Komponente für SacTabItem\r\n */\r\n@Directive()\r\nexport class SacTabItemCommon {\r\n /**\r\n * Boolean Property prüft ob das Tab aktiv ist\r\n */\r\n @Input()\r\n active: boolean = false;\r\n /**\r\n * Boolean Property prüft ob das Tab disabled ist\r\n */\r\n @Input()\r\n disabled: boolean = false;\r\n /**\r\n * ID-String\r\n */\r\n @Input()\r\n id: string;\r\n /**\r\n * Label Text vom Control\r\n */\r\n @Input()\r\n label: string;\r\n\r\n /**\r\n * Das Input property ekzeptiert boolen Wert. Default ist true. Definiert, ob die Komponente hidden sein sollte.\r\n */\r\n @Input()\r\n unloadwhenhidden: boolean = true;\r\n\r\n /**\r\n * ContentChild Decorator\r\n */\r\n @ContentChild(TemplateRef, { static: true })\r\n templateRef: TemplateRef<any>;\r\n}\r\n","import { Directive, Injector, Input } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormArray,\r\n NgForm,\r\n UntypedFormArray,\r\n UntypedFormGroup,\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport { IAbstractControlLabelExtension } from '../../interfaces/iabstractcontrollabel';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../../services/sac-localisation.service';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services/sac-validationkey.service';\r\nimport { ValidationErrorItem } from '../../validation';\r\nimport { SacFormCommon } from '../form/form';\r\n\r\n/**\r\n * Basis Komponente für SacValidationSummary\r\n */\r\n@Directive()\r\nexport class SacValidationSummaryCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n /**\r\n * Parent Formular\r\n */\r\n protected parent: SacFormCommon;\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n protected validationKeyService: ISacValidationKeyService;\r\n\r\n /**\r\n * reactive form instance\r\n */\r\n @Input()\r\n public form: UntypedFormGroup;\r\n /**\r\n * Form groupname to filter summary to formgroup\r\n *\r\n * Important: it works only in reactive forms mode.\r\n */\r\n @Input()\r\n public formGroupName: string;\r\n /**\r\n * Name-Property\r\n */\r\n @Input()\r\n public name: string = '';\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * Inject des Formulars\r\n */\r\n constructor(parent: SacFormCommon, injector: Injector) {\r\n this.parent = parent;\r\n\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Validation Methode\r\n */\r\n public get formErrors(): Observable<string>[] {\r\n const collection: Array<Observable<string>> = new Array<\r\n Observable<string>\r\n >();\r\n\r\n let formBase: UntypedFormGroup;\r\n if (this.parent) {\r\n formBase = this.parent.getForm().form;\r\n } else if (this.form instanceof UntypedFormGroup) {\r\n formBase = this.form;\r\n\r\n // formgroup can only be get in reactive forms mode\r\n if (this.formGroupName) {\r\n formBase = formBase.get(this.formGroupName) as UntypedFormGroup;\r\n }\r\n } else {\r\n throw new Error('missing form');\r\n }\r\n\r\n const items: Array<NgForm | UntypedFormArray> = Object.keys(\r\n formBase.controls\r\n ).map((key) => {\r\n return <NgForm | UntypedFormArray>formBase.controls[key];\r\n });\r\n\r\n this.getErrorCollection(items, collection);\r\n\r\n return collection.filter((item) => item !== null);\r\n }\r\n\r\n /**\r\n * Getter wenn Errors entstehen\r\n */\r\n public get hasErrors() {\r\n return this.formErrors.length > 0;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Fügt einen Validation Error in die Error Collection hinzu\r\n * @param ctl Fehlerhaftes Control\r\n * @param collection Collection aller Fehlermeldungen\r\n */\r\n private addErrorToCollection(\r\n ctl: AbstractControl,\r\n collection: Array<Observable<string>>\r\n ): void {\r\n if (ctl.errors === null || ctl.touched === false || ctl.valid === true) {\r\n return;\r\n }\r\n\r\n const keys: string[] = Object.keys(ctl.errors);\r\n\r\n if (keys.length <= 0) {\r\n return;\r\n }\r\n\r\n const errorItem: ValidationErrorItem = ctl.errors[keys[0]];\r\n\r\n // Validation Parameters\r\n const parameters = {};\r\n if (errorItem.parameters !== null && errorItem.parameters !== undefined) {\r\n errorItem.parameters.forEach((v, k) => {\r\n parameters[k] = v;\r\n });\r\n }\r\n\r\n if ((ctl as unknown as IAbstractControlLabelExtension)?.controllabel) {\r\n parameters['FIELD'] = (\r\n ctl as unknown as IAbstractControlLabelExtension\r\n ).controllabel;\r\n } else {\r\n parameters['FIELD'] = errorItem.fieldName;\r\n }\r\n\r\n collection.push(\r\n this.lngResourceService.GetString(\r\n errorItem.errorMessageValidationSummaryKey,\r\n parameters\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Die Methode gibt Collection von Errors. Verlangt controls: Array<NgForm | FormArray> und collection: Array<Observable<string>>\r\n */\r\n private getErrorCollection(\r\n controls: Array<NgForm | UntypedFormArray>,\r\n collection: Array<Observable<string>>\r\n ): void {\r\n controls.forEach((ctl) => {\r\n if (ctl.controls === undefined || ctl.controls === null) {\r\n this.addErrorToCollection(<AbstractControl>ctl, collection);\r\n } else {\r\n Object.keys(ctl.controls).map((controlKey) => {\r\n const control = ctl.controls[controlKey];\r\n\r\n // Cancel Analyse wenn Item not Touched oder Valid\r\n if (control.touched === false || control.valid === true) {\r\n return;\r\n }\r\n\r\n // Handle wenn Control kein Container ist\r\n if (control.controls === undefined || control.controls === null) {\r\n this.addErrorToCollection(control, collection);\r\n } else {\r\n // Handling eines Control Containers\r\n const items: Array<NgForm | UntypedFormArray> = Object.keys(\r\n control.controls\r\n ).map((formKey) => {\r\n return <NgForm | UntypedFormArray>control.controls[formKey];\r\n });\r\n\r\n this.getErrorCollection(items, collection);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n\r\n/**\r\n * Abstract Klasse für SacInputBase. Extendes SacBaseModelControl\r\n */\r\n@Directive()\r\nexport abstract class SacInputBase<VALUE> extends SacBaseModelControl<VALUE> {\r\n // #region Properties\r\n\r\n /**\r\n * Erlaubte Zeichen bei der Eingabe\r\n */\r\n @Input() public allowedchars: string = '';\r\n /**\r\n * Autofill aktivieren oder deaktivieren\r\n */\r\n @Input() public disableautocomplete: boolean = false;\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n /**\r\n * TextBox Placeholder\r\n */\r\n @Input() public placeholder: string = null;\r\n /**\r\n * Macht das Input readonly\r\n */\r\n @Input() public readonly: boolean = false;\r\n /**\r\n * Definiert das Feld als valid/invalid von eingegebenen regex-pattern\r\n */\r\n @Input() public regexvalidation: string;\r\n /**\r\n * Text welcher als Tooltip angezeigt wird.\r\n */\r\n @Input() public tooltiptext: string = '';\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert Input wenn KeyPress-Event passiert\r\n */\r\n public onKeyPress(event: KeyboardEvent): Boolean {\r\n // Cancel wenn _allowedChars leer ist.\r\n if (this.allowedchars.length === 0) {\r\n return true;\r\n }\r\n\r\n // Validate Input\r\n const character = event.key;\r\n // Zeichen in Allowed Chars nicht gefunden, Event nicht weitergeben\r\n if (this.allowedchars.indexOf(character) < 0) {\r\n event.preventDefault();\r\n }\r\n\r\n const inputControl = event.target as HTMLInputElement;\r\n\r\n if (!this.OnKeyPressValidation(inputControl.selectionStart, character)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Methode validiert wenn ein Drück-Event passiert\r\n */\r\n protected OnKeyPressValidation(position: number, character: string): boolean {\r\n return true;\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Basis Komponente für SacInput\r\n */\r\n@Directive()\r\nexport class SacInputCommon extends SacInputBase<string> {\r\n // #region Properties\r\n\r\n /**\r\n * Fix breite für das Control definieren.\r\n */\r\n @Input() public controlwidth: string = null;\r\n /**\r\n * Max länge an Zeichen für Eingabefeld\r\n */\r\n @Input() public maxlength: number = null;\r\n /**\r\n * Resource Key für Validation Message Pattern bei Control\r\n */\r\n @Input() public validationmessagepattern: string =\r\n this.validationKeyService.ValidationErrorPattern;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern in Validation Summary\r\n */\r\n @Input() public validationmessagesummarypattern: string =\r\n this.validationKeyService.ValidationErrorSummaryPattern;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriterien entspricht\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.regexvalidation !== undefined &&\r\n this.regexvalidation !== null\r\n ) {\r\n error = Validation.pattern(\r\n this.regexvalidation,\r\n this.validationmessagepattern,\r\n this.validationmessagesummarypattern\r\n )(c);\r\n }\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputArea\r\n */\r\n@Directive()\r\nexport class SacInputAreaCommon extends SacInputCommon {\r\n\r\n /**\r\n * Definiert die Höhe der TextArea Box.\r\n */\r\n @Input() rows: number = 5;\r\n\r\n /**\r\n * Definiert die Höhe der TextArea Box. Ist normalfall leer, da Höhe auch über Rows gesetzt werden kann.\r\n */\r\n @Input() height: string = null;\r\n\r\n /**\r\n * Property mit dem Custom CSS Klassen auf dem Form-Control definiert werden können.\r\n */\r\n @Input() customcssclass: string = '';\r\n\r\n /**\r\n * Getter für die Länge des Inputs\r\n */\r\n get _currentLength(): number {\r\n if (this.value === null || this.value === undefined) {\r\n return 0;\r\n } else {\r\n return this.value.length + this.value.split(/\\r|\\n/).length - 1;\r\n }\r\n }\r\n\r\n /**\r\n * Methode wird 'true' ergeben wenn ein Key gedrückt wird und maxlength ist nicht definiert\r\n */\r\n public onKeyPress(event: KeyboardEvent): Boolean {\r\n // Exist if MaxLength not defined\r\n if (this.maxlength === undefined || this.maxlength === null) {\r\n return true;\r\n }\r\n\r\n if (this._currentLength >= this.maxlength || ((event.key === 'Enter' || event.key === ' ') && this._currentLength + 1 >= this.maxlength)) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Basis Komponente für SacInputDecimal\r\n */\r\n@Directive()\r\nexport class SacInputDecimalCommon extends SacInputBase<number> {\r\n // #region Properties\r\n\r\n /**\r\n * Definiert das Negative Werte erlaubt sind\r\n */\r\n @Input() public allownegativ: boolean = false;\r\n /**\r\n * Definiert den maximalen Wert\r\n */\r\n @Input() public maxvalue: number = undefined;\r\n /**\r\n * Definiert den minimalen Wert\r\n */\r\n @Input() public minvalue: number = undefined;\r\n /**\r\n * Resource Key für Validation Message MaxValue bei Control\r\n */\r\n @Input() public validationmessagemaxvalue: string =\r\n this.validationKeyService.ValidationErrorMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue bei Control\r\n */\r\n @Input() public validationmessageminvalue: string =\r\n this.validationKeyService.ValidationErrorMinValue;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message MaxValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryminvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMinValue;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n /**\r\n * Error Meldung, die angezeigt wird, wenn die Kriterien nicht erfüllt sind\r\n */\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.minvalue !== undefined &&\r\n this.minvalue !== null\r\n ) {\r\n error = Validation.minValue(\r\n this.minvalue,\r\n this.validationmessageminvalue,\r\n this.validationmessagesummaryminvalue\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.maxvalue !== undefined &&\r\n this.maxvalue !== null\r\n ) {\r\n error = Validation.maxValue(\r\n this.maxvalue,\r\n this.validationmessagemaxvalue,\r\n this.validationmessagesummarymaxvalue\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Konvertiert den Wert des Inputs\r\n */\r\n protected ConvertInputValue(value: any): any {\r\n if (value === '' || value === null) {\r\n return null;\r\n } else {\r\n if (this.allownegativ === true && value === '-') {\r\n return '-';\r\n } else if (value === '.') {\r\n return '0.';\r\n } else {\r\n return parseFloat(value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Methode die erzeugt den Control in Abhängigkeit davon, ob negative Were erlaubt sing oder nicht\r\n */\r\n protected OnClassInit(): void {\r\n super.OnClassInit();\r\n\r\n /**\r\n * Definiert die Werte die erlaubt sind\r\n */\r\n this.allowedchars = '0123456789' + this.GetDecimalSymbol();\r\n\r\n if (this.allownegativ) {\r\n this.allowedchars = this.allowedchars + '-';\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien wenn ein Key gedrückt wird\r\n */\r\n protected OnKeyPressValidation(position: number, character: string): boolean {\r\n if (\r\n (this.allownegativ === false && character === '-') ||\r\n (this.allownegativ === true && position > 0 && character === '-')\r\n ) {\r\n return false;\r\n }\r\n\r\n // Verhindern von Doppelpunkt Eingabe (45..545)\r\n if (\r\n this._value !== null &&\r\n this._value.toString().length < position &&\r\n character === '.'\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n character === this.GetDecimalSymbol() &&\r\n this._value !== null &&\r\n this._value.toString().indexOf(this.GetDecimalSymbol()) >= 0\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { SacInputDecimalCommon } from './inputdecimal';\r\n\r\n/**\r\n * Basis Komponente für SacInputCurrency\r\n */\r\n@Directive()\r\nexport class SacInputCurrencyCommon extends SacInputDecimalCommon {\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { Validation } from '../../validation';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputEmail\r\n */\r\n@Directive()\r\nexport class SacInputEmailCommon extends SacInputCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Resource Key für Validation Message Email bei Control\r\n */\r\n @Input() public validationmessageemail: string =\r\n this.validationKeyService.ValidationErrorEmail;\r\n /**\r\n * Resource Key für Validation Message Email in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryemail: string =\r\n this.validationKeyService.ValidationErrorSummaryEmail;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriteriten entspricht\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.email(\r\n this.validationmessageemail,\r\n this.validationmessagesummaryemail\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Basis Komponente für SacInputInteger\r\n */\r\n@Directive()\r\nexport class SacInputIntegerCommon extends SacInputBase<number> {\r\n // #region Properties\r\n\r\n /**\r\n * Definiert das Negative Werte erlaubt sind\r\n */\r\n @Input() public allownegativ: boolean = false;\r\n /**\r\n * Definiert den maximalen Wert\r\n */\r\n @Input() public maxvalue: number = undefined;\r\n /**\r\n * Definiert den minimalen Wert\r\n */\r\n @Input() public minvalue: number = undefined;\r\n /**\r\n * Resource Key für Validation Message MaxValue bei Control\r\n */\r\n @Input() public validationmessagemaxvalue: string =\r\n this.validationKeyService.ValidationErrorMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue bei Control\r\n */\r\n @Input() public validationmessageminvalue: string =\r\n this.validationKeyService.ValidationErrorMinValue;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message MaxValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryminvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMinValue;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n /**\r\n * Error Meldung, die angezeigt wird, wenn die Kriterien nicht erfüllt sind\r\n */\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.minvalue !== undefined &&\r\n this.minvalue !== null\r\n ) {\r\n error = Validation.minValue(\r\n this.minvalue,\r\n this.validationmessageminvalue,\r\n this.validationmessagesummaryminvalue\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.maxvalue !== undefined &&\r\n this.maxvalue !== null\r\n ) {\r\n error = Validation.maxValue(\r\n this.maxvalue,\r\n this.validationmessagemaxvalue,\r\n this.validationmessagesummarymaxvalue\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Konvertiert den Wert des Inputs\r\n */\r\n protected ConvertInputValue(value: any): any {\r\n if (value === '' || value === null) {\r\n return null;\r\n } else {\r\n if (this.allownegativ === true && value === '-') {\r\n return '-';\r\n } else {\r\n return parseInt(value, 10);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Methode die erzeugt den Control in Abhängigkeit davon, ob negative Were erlaubt sing oder nicht\r\n */\r\n protected OnClassInit(): void {\r\n super.OnClassInit();\r\n\r\n /**\r\n * Definiert die Wete die erlaubt sind\r\n */\r\n this.allowedchars = '0123456789';\r\n\r\n if (this.allownegativ) {\r\n this.allowedchars = this.allowedchars + '-';\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien wenn ein Key gedrückt wird\r\n */\r\n protected OnKeyPressValidation(position: number, character: string): boolean {\r\n if (\r\n (this.allownegativ === false && character === '-') ||\r\n (this.allownegativ === true && position > 0 && character === '-')\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { Validation } from '../../validation';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputPassword\r\n */\r\n@Directive()\r\nexport class SacInputPasswordCommon extends SacInputCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Min. Textlänge\r\n */\r\n @Input() public minlength: number = 5;\r\n /**\r\n * Resource Key für Validation Message MinLength bei Control\r\n */\r\n @Input() public validationmessageminlength: string =\r\n this.validationKeyService.ValidationErrorMinLength;\r\n /**\r\n * Resource Key für Validation Message MinLength in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryminlength: string =\r\n this.validationKeyService.ValidationErrorSummaryMinLength;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriteriten entspricht\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.minLength(\r\n this.minlength,\r\n this.validationmessageminlength,\r\n this.validationmessagesummaryminlength\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputSearch\r\n */\r\n@Directive()\r\nexport class SacInputSearchCommon extends SacInputCommon {\r\n /**\r\n * Name des Such-Icons\r\n */\r\n @Input() iconname: string = '';\r\n /**\r\n * Text welcher auf dem Button angezeigt wird\r\n */\r\n @Input() buttontext: string = '';\r\n\r\n /**\r\n * Event wenn auf das Such-Icon geclickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Methode sendet den Wert des Inputs durch das Event\r\n */\r\n searchClick() {\r\n this.clicked.emit(this.value);\r\n }\r\n}\r\n","/**\r\n * Model für Pager Settings\r\n */\r\nexport class PagerData {\r\n\r\n /**\r\n * Konstruktor\r\n * @param PageSize Anzahl Elemente pro Seite\r\n * @param CurrentPageIndex Aktuelle Seite\r\n * @param TotalRowCount Total Rows in Datenbank\r\n */\r\n constructor(PageSize: number, CurrentPageIndex: number, TotalRowCount: number) {\r\n this.PageSize = PageSize;\r\n this.CurrentPageIndex = CurrentPageIndex;\r\n this.TotalRowCount = TotalRowCount;\r\n }\r\n\r\n /**\r\n * Gesamte Anzahl der Zeilen\r\n */\r\n TotalRowCount = 0;\r\n\r\n /**\r\n * Aktueller Index der Seite\r\n */\r\n CurrentPageIndex = 0;\r\n\r\n /**\r\n * PageSize\r\n */\r\n PageSize = 20;\r\n}\r\n\r\n/**\r\n * Model wenn Seite geändert werden soll\r\n */\r\nexport class PagerRequest {\r\n\r\n /**\r\n * Konstruktor\r\n * @param PageSize Seitegrösse / Anzahl Elemente pro Seite\r\n * @param NewPageIndex Neuer Seitenindex\r\n */\r\n constructor(PageSize: number, NewPageIndex: number) {\r\n this.PageSize = PageSize;\r\n this.NewPageIndex = NewPageIndex;\r\n }\r\n\r\n /**\r\n * Aktueller Index der Seite\r\n */\r\n PageSize: number = 0;\r\n\r\n /**\r\n * PageSize\r\n */\r\n NewPageIndex: number = 0;\r\n\r\n}\r\n\r\n/**\r\n * GridResponse-Klasse\r\n */\r\nexport class GridResponse<T> {\r\n /**\r\n * Gesamte Anzahl der Zeilen\r\n */\r\n TotalRowCount: number;\r\n /**\r\n * Data\r\n */\r\n Data: T[];\r\n}\r\n\r\n/**\r\n * Model für Sortierung\r\n */\r\nexport class SortDescriptor {\r\n /**\r\n * Konstruktor\r\n * @param sortcolumn Column die Sortiert wird\r\n * @param sortorder Art der Sortierung\r\n */\r\n constructor(sortcolumn?: string, sortorder?: SortOrder) {\r\n this.SortColumn = sortcolumn;\r\n this.SortOrder = sortorder;\r\n }\r\n\r\n /**\r\n * Bezeichnung / Key für Sortierung\r\n */\r\n SortColumn: string;\r\n\r\n /**\r\n * Sortierung\r\n */\r\n SortOrder: SortOrder;\r\n}\r\n\r\n/**\r\n * Enum für Sortierung\r\n */\r\nexport enum SortOrder {\r\n None = 0,\r\n Ascending = 1,\r\n Descending = 2\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\nimport { PagerData, PagerRequest, SortDescriptor, SortOrder } from './model';\r\n\r\n/**\r\n * Basis Komponente für SacGrid\r\n */\r\n@Directive()\r\nexport abstract class SacGridCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Protected Property. Enthielt die Nummer der aktiven Seite. Type: number. Default ist 1\r\n */\r\n protected activePage: number = 1;\r\n /**\r\n * Protected Property. Enthielt die Nummer der ersten angezeigtenen Seite in Pager. Type: number. Default ist 1\r\n */\r\n protected firstPageNumber: number = 1;\r\n // protected firstVisibleIndex: number = 1;\r\n // protected lastVisibleIndex;\r\n\r\n /**\r\n * Protected Property. Enthielt die Nummer der letzen Seite in Pager. Type: number. Default ist undefined/null\r\n */\r\n protected lastPageNumber: number;\r\n /**\r\n * Protected Property. Enthielt Array of Pages. Default value: empty array []\r\n */\r\n protected paginators: Array<any> = [];\r\n\r\n /**\r\n * Input property für body. Type: TemplateRef<any>.\r\n */\r\n @Input() public body: TemplateRef<any>;\r\n /**\r\n * Text welcher angezeigt wird, wenn keine Rows verfügbar sind.\r\n */\r\n @Input()\r\n public emptytext: string;\r\n /**\r\n * Input property für headers. Type: TemplateRef<any>.\r\n */\r\n @Input() public headers: TemplateRef<any>;\r\n /**\r\n * Input property für die maximalle Seiten die sichtbar sind. Type: number.\r\n */\r\n @Input() public maxvisiblepagenumbers: number;\r\n /**\r\n * Input property für Name.\r\n */\r\n @Input()\r\n public name: string;\r\n /**\r\n * Pager Settings\r\n *\r\n * Pager kann ausgeschaltet werden, in dem PagerData auf NULL gesetzt wird.\r\n */\r\n @Input()\r\n public pagerdata: PagerData;\r\n /**\r\n * Deaktiviert die Auswahl der PageSize im Pager\r\n */\r\n @Input()\r\n public pagesizedisabled: boolean = false;\r\n /**\r\n * Definiert die Anzahl der Elemente pro Seite die ausgewählt werden können\r\n */\r\n @Input()\r\n public pagesizes: string = '20|50|100';\r\n /**\r\n * Text in Page für Anzahl Seitenelemente pro Seite\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{PAGESIZE}}: Anzahl Elemente pro Seite\r\n */\r\n @Input()\r\n public pagesizetext: string;\r\n /**\r\n * Text in Pager für 'Seite x von y'.\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{CURRENTPAGE}}: Aktuelle Seite\r\n * {{TOTALPAGES}}: Anzahl Seiten\r\n */\r\n @Input()\r\n public pagingtext: string;\r\n /**\r\n * Grid Daten\r\n */\r\n @Input()\r\n public value: any;\r\n /**\r\n * Output EventEmitter. Wird aufgerufen wenn das Pager geklickt ist.\r\n */\r\n @Output() public paging: EventEmitter<PagerRequest> =\r\n new EventEmitter<PagerRequest>();\r\n /**\r\n * Output EventEmitter. Wird aufgerufen wenn ein Header geklickt ist, damit das Column soritert wird.\r\n */\r\n @Output() public sorting: EventEmitter<SortDescriptor> =\r\n new EventEmitter<SortDescriptor>();\r\n\r\n /**\r\n * Private Property. Enthielt die Column Menge. Type: number. Default ist 0\r\n */\r\n public ColumnCount: number = 0;\r\n /**\r\n * Aktuell Sortierte Spalte\r\n */\r\n public sortColumn: string = '';\r\n /**\r\n * Aktuelle Sortierung\r\n */\r\n public sortDirection: SortOrder = SortOrder.None;\r\n public validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param cd Change Detection Service\r\n * @param injector DI Injector\r\n */\r\n constructor(private cd: ChangeDetectorRef, injector: Injector) {\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n // Set Default Values from Injector\r\n this.pagesizetext = this.validationKeyService.PagingEntries;\r\n this.pagingtext = this.validationKeyService.PagingPageOf;\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Model für Sortierung\r\n * @param sortDescription Settings für aktuelle sortierung\r\n */\r\n @Input()\r\n public set sortdata(sortDescription: SortDescriptor) {\r\n this.sortColumn = sortDescription.SortColumn;\r\n this.sortDirection = sortDescription.SortOrder;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Die Methode erhöht die Column-Stücke um eins\r\n */\r\n public RegisterColumn() {\r\n this.ColumnCount++;\r\n // Detect Changes ausführen, da ColumnChange nach OnInit ausgeführt wird.\r\n this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Die Methode deffiniert das Sortierung Flow\r\n */\r\n public SortBy(command) {\r\n let direction: SortOrder;\r\n\r\n if (command === this.sortColumn) {\r\n switch (this.sortDirection) {\r\n case SortOrder.None:\r\n case SortOrder.Descending:\r\n direction = SortOrder.Ascending;\r\n break;\r\n case SortOrder.Ascending:\r\n direction = SortOrder.Descending;\r\n break;\r\n }\r\n } else {\r\n direction = SortOrder.Ascending;\r\n }\r\n\r\n const result: SortDescriptor = new SortDescriptor();\r\n result.SortColumn = command;\r\n result.SortOrder = direction;\r\n\r\n this.sorting.emit(result);\r\n }\r\n\r\n /**\r\n * Die Methode verringert die Column-Stücke um eins\r\n */\r\n public UnregisterColumn() {\r\n this.ColumnCount--;\r\n }\r\n\r\n /**\r\n * Setzt die neue Seite\r\n * @param newStartIndex Neuer Seiten Index (Zero-Based)\r\n */\r\n public pageChange(newStartIndex) {\r\n this.paging.emit(newStartIndex);\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * Base Grid Action Button\r\n */\r\n@Directive()\r\nexport class SacGridButtonCommon {\r\n /**\r\n * Input Property für Styling des Buttons. Deffiniert die Css Klassen des Buttons\r\n */\r\n @Input()\r\n public iconstyle: string = '';\r\n\r\n /**\r\n * Icon Name aus Sprite\r\n */\r\n @Input()\r\n public icon: string;\r\n\r\n /**\r\n * Button ist deaktiviert\r\n */\r\n protected _isdisabledvalue: boolean = false;\r\n\r\n /**\r\n * Deaktivieren von Buttons\r\n * @param v Deaktiviert den Button\r\n * @return Definiert ob der Button deaktiviert ist\r\n */\r\n @Input()\r\n set isdisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isdisabledvalue = v as boolean;\r\n } else {\r\n this._isdisabledvalue = v === 'true';\r\n }\r\n }\r\n get isdisabled(): boolean | string {\r\n return this._isdisabledvalue;\r\n }\r\n\r\n /**\r\n * Event wenn auf den Button geklickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Die Methode wird das cklickaction Emitter aktivieren\r\n */\r\n public callaction() {\r\n if (!this._isdisabledvalue) {\r\n this.clicked.emit(this.iconstyle);\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { SacGridCommon } from './grid';\r\nimport { SortOrder } from './model';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\n\r\n/**\r\n * Base Komponente für GridColumn\r\n */\r\n@Directive()\r\nexport class SacGridColumnBaseCommon implements OnInit, OnDestroy {\r\n /**\r\n * Konstruktor\r\n * @param grid reference to grid component\r\n * @param injector di injector to resolve icon service\r\n * @param el reference to html element\r\n */\r\n constructor(\r\n private grid: SacGridCommon,\r\n protected injector: Injector,\r\n private el: ElementRef\r\n ) {\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n /**\r\n * icon service\r\n */\r\n protected iconService: ISacIconService;\r\n\r\n //#region Input / Outputs\r\n\r\n /**\r\n * Das Input property erhält den Namen des Column\r\n */\r\n @Input()\r\n public name: any;\r\n\r\n /**\r\n * Das Input property erhält das Value des Column\r\n */\r\n @Input()\r\n public value: any;\r\n\r\n /**\r\n * Das Input property erhält das Header des Column\r\n */\r\n @Input()\r\n public header: string;\r\n\r\n /**\r\n * Das Input property erhält die Breite des Column\r\n */\r\n @Input()\r\n public width: string;\r\n\r\n /**\r\n * Das Input property erhält das Type des Column\r\n */\r\n @Input()\r\n public type: string;\r\n\r\n /**\r\n * Das Input property erhält das Column- Key-Word, damit das Column sortiert werden kann.\r\n */\r\n @Input()\r\n public sortkey: string;\r\n\r\n //#endregion\r\n\r\n //#region Interface Implementations\r\n\r\n /**\r\n * lifecycle hook - OnInit. Wird aufgeruren sobald das Komponent initialisiert ist.\r\n */\r\n ngOnInit() {\r\n const rootElement: HTMLElement = this.el.nativeElement;\r\n const parentElement: HTMLElement = rootElement.parentElement;\r\n\r\n while (rootElement.firstChild) {\r\n parentElement.insertBefore(rootElement.firstChild, rootElement);\r\n }\r\n\r\n parentElement.removeChild(rootElement);\r\n\r\n if (this.IsHeader()) {\r\n this.grid.RegisterColumn();\r\n }\r\n }\r\n\r\n /**\r\n * lifecycle hook - ngOnDestroy. Wird aufgeruren wenn das Component zerstört wird.\r\n */\r\n ngOnDestroy(): void {\r\n if (this.IsHeader()) {\r\n this.grid.UnregisterColumn();\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Type Handling\r\n\r\n /**\r\n * die Methode ergibt boolean Wert, ob das Element Header ist.\r\n */\r\n public IsHeader(): boolean {\r\n return this.type === 'header';\r\n }\r\n\r\n /**\r\n * die Methode ergibt boolean Wert, ob das Element Body ist.\r\n */\r\n public IsBody(): boolean {\r\n return this.type === 'body';\r\n }\r\n\r\n /**\r\n * die Methode ergibt boolean Wert, ob das Element Footer ist.\r\n */\r\n public IsFooter(): boolean {\r\n return this.type === 'footer';\r\n }\r\n\r\n //#endregion\r\n\r\n /**\r\n * sort up icon for grid header\r\n */\r\n public get IconSortUp(): string {\r\n return this.iconService.GridComponentSortUp;\r\n }\r\n\r\n /**\r\n * sort down icon for grid header\r\n */\r\n public get IconSortDown(): string {\r\n return this.iconService.GridComponentSortDown;\r\n }\r\n\r\n /**\r\n * Die Methode deffiniert wie das Grid sortiert wird, abhängig von gekligte Column\r\n */\r\n public SortByColumn() {\r\n if (\r\n this.sortkey !== undefined &&\r\n this.sortkey !== null &&\r\n this.sortkey !== ''\r\n ) {\r\n return this.grid.SortBy(this.sortkey);\r\n }\r\n }\r\n\r\n /**\r\n * die Methode ergibt boolean Wert und definiert, ob das Column für Sortierung aktiviert ist, gemäß eingegebene sortKey\r\n */\r\n public IsSortedColumn(): boolean {\r\n return this.grid.sortColumn === this.sortkey;\r\n }\r\n\r\n /**\r\n * Die methode definiert die Dortirung Richtung. Die Werte sind: none, asc, desc.\r\n */\r\n public GetSortDirection(): string {\r\n switch (this.grid.sortDirection) {\r\n case SortOrder.None:\r\n return 'none';\r\n case SortOrder.Ascending:\r\n return 'asc';\r\n case SortOrder.Descending:\r\n return 'desc';\r\n default:\r\n return 'none';\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Injector, Input } from '@angular/core';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\nimport { SacGridCommon } from './grid';\r\nimport { SacGridColumnBaseCommon } from './gridcolumnbase';\r\n\r\n/**\r\n * Komponente für SacGridColumnCommon. Extends SacGridColumnBaseCommon\r\n */\r\n@Directive()\r\nexport class SacGridColumnCommon extends SacGridColumnBaseCommon {\r\n /**\r\n * Konstruktor\r\n */\r\n constructor(grid: SacGridCommon, injector: Injector, el: ElementRef) {\r\n super(grid, injector, el);\r\n }\r\n\r\n /**\r\n * Das Property enthielt boolean Wert für die CSS Klasse ellipsis. Default is false.\r\n */\r\n private _ellipsis: boolean = false;\r\n\r\n /**\r\n * Input Parameter für das css Class ellipsis. Das Setter setzt das boolean Wert auf das private property _ellipsis\r\n */\r\n @Input()\r\n public set ellipsis(v: string | boolean) {\r\n this._ellipsis = convertToBoolean(v);\r\n }\r\n\r\n /**\r\n * Getter für das private property _ellipsis. Ergibt das boolean Wert des Property\r\n */\r\n public get ellipsis(): string | boolean {\r\n return this._ellipsis;\r\n }\r\n\r\n /**\r\n * Die Methode returns das Wert des Property _ellipsis\r\n */\r\n public IsEllipsis(): boolean {\r\n return this._ellipsis;\r\n }\r\n}\r\n","import { ElementRef, Directive, Injector } from '@angular/core';\r\nimport { SacGridCommon } from './grid';\r\nimport { SacGridColumnBaseCommon } from './gridcolumnbase';\r\n\r\n/**\r\n * Komponente für SacGridColumnActionCommon. Extends SacGridColumnBaseCommon\r\n */\r\n@Directive()\r\nexport class SacGridColumnActionCommon extends SacGridColumnBaseCommon {\r\n /**\r\n * Konstruktor\r\n * @param el Element Referenz\r\n * @param injector di inector to resolve icon service\r\n * @param grid SacGridCommon\r\n */\r\n constructor(grid: SacGridCommon, injector: Injector, el: ElementRef) {\r\n super(grid, injector, el);\r\n }\r\n}\r\n","import { Input, Directive } from '@angular/core';\r\n\r\n/**\r\n * Basis Komponente für SacGridImage\r\n */\r\n@Directive()\r\nexport class SacGridImageCommon {\r\n\r\n /**\r\n * das Input property akypetiert string value für style des Icon\r\n */\r\n @Input()\r\n public iconstyle: string;\r\n\r\n}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../../services/sac-localisation.service';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services/sac-validationkey.service';\r\nimport { PagerData, PagerRequest } from './model';\r\n\r\n/**\r\n * Basiskomponente für Paging\r\n */\r\n@Directive()\r\nexport abstract class SacPagingCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n private validationKeyService: ISacValidationKeyService;\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n /**\r\n * Total Anzahl Rows\r\n */\r\n protected totalRowCount: number = 0;\r\n\r\n /**\r\n * Name des Grids. Wird für ID und Name Bezeichnungen verwendet\r\n */\r\n @Input()\r\n public name: string;\r\n /**\r\n * Auswahl der Seitengrösse deaktivieren\r\n */\r\n @Input()\r\n public pagesizedisabled: boolean = false;\r\n /**\r\n * Text in Page für Anzahl Seitenelemente pro Seite\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{PAGESIZE}}: Anzahl Elemente pro Seite\r\n */\r\n @Input()\r\n public pagesizes: string = '20|50|100';\r\n /**\r\n * Text in Page für Anzahl Seitenelemente pro Seite\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{PAGESIZE}}: Anzahl Elemente pro Seite\r\n */\r\n @Input()\r\n public pagesizetext: string = '';\r\n /**\r\n * Text in Pager für 'Seite x von y'.\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{CURRENTPAGE}}: Aktuelle Seite\r\n * {{TOTALPAGES}}: Anzahl Seiten\r\n */\r\n @Input()\r\n public pagingtext: string = '';\r\n /**\r\n * Event wenn im Grid die Seite geändert wird. Als Parameter wird der neue PageIndex mitgegeben.\r\n */\r\n @Output()\r\n public paging: EventEmitter<PagerRequest> = new EventEmitter<PagerRequest>();\r\n\r\n /**\r\n * Aktiver Seitenindex\r\n */\r\n public activePageIndex: number = 0;\r\n /**\r\n * Erster Seitenindex\r\n */\r\n public firstPageIndex: number = 0;\r\n /**\r\n * Letzter Seitenindex\r\n */\r\n public lastPageIndex: number = 0;\r\n /**\r\n * Anzahl Elemente pro Seite\r\n */\r\n public pageSize: number = 20;\r\n /**\r\n * Item für jedes Paging Element (Seitenzahl)\r\n */\r\n public paginators: Array<any> = [];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * Inject des Formulars\r\n * @parent SacFormCommon\r\n * @injector Injector\r\n */\r\n constructor(injector: Injector) {\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n // Set Default Values from Injector\r\n this.pagesizetext = this.validationKeyService.PagingEntries;\r\n this.pagingtext = this.validationKeyService.PagingPageOf;\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Property für Pager Data\r\n */\r\n @Input()\r\n public set pagerdata(p: PagerData) {\r\n if (p != null) {\r\n this.totalRowCount = p.TotalRowCount;\r\n this.activePageIndex = p.CurrentPageIndex;\r\n this.pageSize = p.PageSize;\r\n }\r\n\r\n this.createPager();\r\n }\r\n\r\n /**\r\n * Property mit Text für Total Einträge in Seite\r\n */\r\n public get PageSizeText(): Observable<string> {\r\n return this.lngResourceService.GetString(this.pagesizetext);\r\n }\r\n\r\n /**\r\n * Text mit Aktueller Seite und Total Seiten\r\n */\r\n public get PagingText(): Observable<string> {\r\n return this.lngResourceService.GetString(this.pagingtext, {\r\n CURRENTPAGE: this.getCurrentPageNumber(),\r\n TOTALPAGES: this.getTotalPageNumber(),\r\n });\r\n }\r\n\r\n /**\r\n * Gibt die Page Sizes als Number Array zurück\r\n */\r\n public get getPageSizes(): number[] {\r\n return this.pagesizes.split('|').map((itm) => Number(itm));\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Andert die Seite auf den neuen Index\r\n * @param newPageIndex Seiten Index. Dies entspricht der Seitenzahl - 1.\r\n */\r\n public changePage(newPageIndex: number) {\r\n if (this.activePageIndex !== newPageIndex) {\r\n this.paged(newPageIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Ändert die Seitengrösse im Pager\r\n * @param newSize Neue Anzahl Elemente pro Seite\r\n */\r\n public changePageSize(newSize: number) {\r\n const pagerData: PagerRequest = new PagerRequest(\r\n newSize,\r\n this.activePageIndex\r\n );\r\n this.paging.emit(pagerData);\r\n }\r\n\r\n /**\r\n * Paging auf 1. Seite\r\n */\r\n public firstPage() {\r\n if (this.activePageIndex !== this.firstPageIndex) {\r\n this.paged(0);\r\n }\r\n }\r\n\r\n /**\r\n * Gibt die aktuelle Seitenzahl zurück\r\n */\r\n public getCurrentPageNumber(): number {\r\n return this.activePageIndex + 1;\r\n }\r\n\r\n /**\r\n * Gibt die totale Anzahl Seiten zurück\r\n */\r\n public getTotalPageNumber(): number {\r\n return this.lastPageIndex + 1;\r\n }\r\n\r\n /**\r\n * Paging auf letzter Seite\r\n */\r\n public lastPage() {\r\n if (this.activePageIndex !== this.lastPageIndex) {\r\n this.paged(this.lastPageIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Paging auf nächste Seite\r\n */\r\n public nextPage() {\r\n if (this.activePageIndex !== this.lastPageIndex) {\r\n this.paged(this.activePageIndex + 1);\r\n }\r\n }\r\n\r\n /**\r\n * Paging eine Seite zurück\r\n */\r\n public previousPage() {\r\n if (this.activePageIndex !== this.firstPageIndex) {\r\n this.paged(this.activePageIndex - 1);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Erzeugt die Pager Daten\r\n */\r\n protected createPager() {\r\n this.paginators = [];\r\n\r\n if (this.totalRowCount > 0) {\r\n let totalPageCount = Math.ceil(this.totalRowCount / this.pageSize);\r\n\r\n // PageCount auf 1 stellen, wenn keine Records vorhanden sind.\r\n if (totalPageCount === 0) {\r\n totalPageCount = 1;\r\n }\r\n\r\n // PageIndex berechnen\r\n this.lastPageIndex = totalPageCount - 1;\r\n const startPageIndex = this.getStartPageIndex(totalPageCount);\r\n const endPageIndex = this.getEndPageIndex(totalPageCount);\r\n\r\n // Index Fix wenn Aktive Seite grösser als letze Seite\r\n if (this.activePageIndex > this.lastPageIndex) {\r\n this.activePageIndex = this.lastPageIndex;\r\n }\r\n\r\n for (let i = startPageIndex; i <= endPageIndex; i++) {\r\n this.paginators.push(i);\r\n }\r\n } else {\r\n this.paginators.push(0);\r\n }\r\n }\r\n\r\n /**\r\n * Gibt den letzten Seitenindex zurück.\r\n * @param totalPageCount Total Anzahl Seiten\r\n */\r\n protected getEndPageIndex(totalPageCount: number): number {\r\n let endingPageToDisplay = this.activePageIndex + 2;\r\n const maxEndingPageIndex = 4 > totalPageCount - 1 ? totalPageCount - 1 : 4;\r\n\r\n if (endingPageToDisplay > totalPageCount - 1) {\r\n endingPageToDisplay = totalPageCount - 1;\r\n } else if (this.activePageIndex < 2) {\r\n endingPageToDisplay = maxEndingPageIndex;\r\n }\r\n return endingPageToDisplay;\r\n }\r\n\r\n /**\r\n * Gibt den Start Index zurück\r\n * @param totalPageCount Total Anzahl Seiten\r\n */\r\n protected getStartPageIndex(totalPageCount: number): number {\r\n let startingPageToDisplay: number = 0;\r\n startingPageToDisplay = this.activePageIndex - 2;\r\n\r\n if (totalPageCount - this.activePageIndex - 1 < 2) {\r\n startingPageToDisplay = totalPageCount - 5;\r\n }\r\n\r\n if (startingPageToDisplay < 0) {\r\n startingPageToDisplay = 0;\r\n }\r\n return startingPageToDisplay;\r\n }\r\n\r\n /**\r\n * Methode löst den Event aus, dass ein Paging stattgefunden hat\r\n */\r\n protected paged(newPageIndex: number) {\r\n const pagerData: PagerRequest = new PagerRequest(\r\n this.pageSize,\r\n newPageIndex\r\n );\r\n this.paging.emit(pagerData);\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, ElementRef, Injector, Input, OnInit } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as moment_ from 'moment';\r\nimport { Moment } from 'moment';\r\nimport { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { Validation } from '../validation';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n/**\r\n * Base Klasse für Date/Time Controls\r\n */\r\n@Directive()\r\nexport abstract class SacBaseDateTimeControl\r\n extends SacBaseModelControl<Date>\r\n implements OnInit\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * das property enthielt das Value als string. Default ist ''\r\n */\r\n protected _valueAsString = '';\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n /**\r\n * TextBox Placeholder\r\n */\r\n @Input() public placeholder: string = null;\r\n /**\r\n * Resource Key für Validation Message DateTimeFormat bei Control\r\n */\r\n @Input() public validationmessagedatetimeformat: string =\r\n this.validationKeyService.ValidationErrorDatetimeFormat;\r\n /**\r\n * Resource Key für Validation Message DateTimeFormat in Validation Summary\r\n */\r\n @Input() public validationmessagedatetimeformatsummary: string =\r\n this.validationKeyService.ValidationErrorSummaryDatetimeFormat;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagerequiredsummary: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector);\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Das Input bekommt das value von typ string\r\n */\r\n @Input()\r\n public set valuestring(v: string) {\r\n this._valueAsString = v;\r\n let date: Moment = moment(v, [this.GetDateTimeFormatString()], true);\r\n\r\n date = this.ModifyParsedDateTimeValue(date).utc();\r\n\r\n if (date.isValid()) {\r\n this.value = date.toDate();\r\n } else {\r\n this.value = null;\r\n }\r\n }\r\n\r\n /**\r\n * getter für valuestring\r\n */\r\n public get valuestring(): string {\r\n if (this.value === null) {\r\n return this._valueAsString;\r\n } else {\r\n const date = moment.utc(this.value);\r\n return date.local().format(this.GetDateTimeFormatString());\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann\r\n */\r\n public getDate(timestamp) {\r\n const date = new Date(timestamp);\r\n const year = date.getUTCFullYear();\r\n const month = date.getUTCMonth();\r\n const day = date.getUTCDate();\r\n const hours = date.getUTCHours();\r\n const minutes = date.getUTCMinutes();\r\n const seconds = date.getUTCSeconds();\r\n\r\n return moment(Date.UTC(year, month, day, hours, minutes, seconds));\r\n }\r\n\r\n /**\r\n * Init Event\r\n */\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n this.SetDateTimeFormat();\r\n }\r\n\r\n /**\r\n * setzt das value von typ string zu property valuestring\r\n */\r\n public setValueString(v: string) {\r\n this.valuestring = v;\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = Validation.isValidDate(\r\n this.validationmessagedatetimeformat,\r\n this.validationmessagedatetimeformatsummary\r\n )(c);\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagerequiredsummary\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Overwrite WriteValue to Set correct Date Object\r\n */\r\n public writeValue(value: Date | string) {\r\n if (value === '' || value === null || value === undefined) {\r\n // Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.\r\n this._valueAsString = '';\r\n // Set Internal Property\r\n this._value = null;\r\n } else {\r\n this._value = this.getDate(value).toDate();\r\n }\r\n\r\n super.writeValue(this._value);\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Die methode returns dateTime in string\r\n */\r\n public abstract GetDateTimeFormatString(): string;\r\n /**\r\n * Die methode modifiziert das eingegebene Value von typ Moment\r\n */\r\n public abstract ModifyParsedDateTimeValue(v: Moment): Moment;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n private SetDateTimeFormat(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IDateTimeControl).datetimeformatstring =\r\n this.GetDateTimeFormatString();\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as IMask from 'imask';\r\nimport * as moment_ from 'moment';\r\n\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SacBaseDateTimeControl } from '../../common/basedatetimecontrol';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Komponente für SacDateCommon. Extends SacBaseDateTimeControl\r\n */\r\n@Directive()\r\nexport class SacDateCommon extends SacBaseDateTimeControl {\r\n // #region Properties\r\n\r\n /**\r\n * icon service\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Format des Datums\r\n */\r\n public readonly DATEFORMAT: string = 'DD.MM.YYYY';\r\n /**\r\n * Maske\r\n */\r\n public readonly imaskDate = {\r\n mask: this.DATEFORMAT,\r\n blocks: {\r\n DD: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 31,\r\n maxLength: 2,\r\n },\r\n MM: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 12,\r\n maxLength: 2,\r\n },\r\n YYYY: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 9999,\r\n },\r\n },\r\n placeholderChar: '_',\r\n autofix: true,\r\n lazy: false,\r\n overwrite: true,\r\n };\r\n\r\n /**\r\n * Resource Key für Validation Message MaxDate bei Control\r\n */\r\n @Input() public validationmessagemaxdate: string =\r\n this.validationKeyService.ValidationErrorMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate bei Control\r\n */\r\n @Input() public validationmessagemindate: string =\r\n this.validationKeyService.ValidationErrorMinDate;\r\n /**\r\n * Resource Key für Validation Message MaxDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxdate: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymindate: string =\r\n this.validationKeyService.ValidationErrorSummaryMinDate;\r\n\r\n /**\r\n * Min Date\r\n */\r\n public _maxdate: Date = null;\r\n /**\r\n * Min Date\r\n */\r\n public _mindate: Date = null;\r\n /**\r\n * Definiert ob der Date Selector angezeigt wird\r\n */\r\n public _showselector: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector, elementRef);\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Min Date\r\n */\r\n @Input()\r\n public set maxdate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._maxdate = super.getDate(date).toDate();\r\n } else {\r\n this._maxdate = null;\r\n }\r\n }\r\n\r\n /**\r\n * Min Date\r\n */\r\n @Input()\r\n public set mindate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._mindate = super.getDate(date).toDate();\r\n } else {\r\n this._mindate = null;\r\n }\r\n }\r\n\r\n /**\r\n * icon for date selector button\r\n */\r\n public get IconSelector(): string {\r\n return this.iconService.DateComponentSelectorIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this._showselector = false;\r\n }\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum-Format vom String\r\n */\r\n public GetDateTimeFormatString(): string {\r\n return this.DATEFORMAT;\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum - Moment\r\n */\r\n public ModifyParsedDateTimeValue(v: Moment): Moment {\r\n return v;\r\n }\r\n\r\n /**\r\n * Date Selector\r\n */\r\n public dateselect(v: any) {\r\n if (v.date === null) {\r\n this.setValueString('');\r\n } else {\r\n this.value = moment(v.date).utc().toDate();\r\n }\r\n\r\n this._showselector = false;\r\n }\r\n\r\n /**\r\n * Zeigt Date Selector an\r\n */\r\n public showDateSelector(): void {\r\n // Touch Event auslösen\r\n this.onTouch();\r\n\r\n if (this._showselector) {\r\n this._showselector = false;\r\n } else {\r\n this._showselector = true;\r\n }\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = super.validateData(c);\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._mindate !== undefined &&\r\n this._mindate !== null\r\n ) {\r\n error = Validation.minDate(\r\n this._mindate,\r\n this.validationmessagemindate,\r\n this.validationmessagesummarymindate\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._maxdate !== undefined &&\r\n this._maxdate !== null\r\n ) {\r\n error = Validation.maxDate(\r\n this._maxdate,\r\n this.validationmessagemaxdate,\r\n this.validationmessagesummarymaxdate\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import {\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n Directive,\r\n Injector,\r\n} from '@angular/core';\r\nimport * as moment_ from 'moment';\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\n\r\n// #region Classes\r\n\r\n/**\r\n *Basis Komponente für DateSelectorItem\r\n */\r\nclass DateSelectorItem {\r\n // #region Properties\r\n\r\n /**\r\n * Datum\r\n */\r\n public date: Date = undefined;\r\n /**\r\n * DisplayText Property; default Wert - ''\r\n */\r\n public displaytext: string = '';\r\n /**\r\n * Boolean Property, die zeigt, ob das Element aktuell ist; default Wert - false\r\n */\r\n public iscurrent: boolean = false;\r\n /**\r\n * Boolean Property, die zeigt, ob das Control enabled ist; default Wert - false\r\n */\r\n public isenabled: boolean = false;\r\n /**\r\n * Boolean Property, die zeigt, ob das Element neu ist; default Wert - false\r\n */\r\n public isnew: boolean = false;\r\n /**\r\n * Boolean Property, die zeigt, ob das Element selektiert ist; default Wert - false\r\n */\r\n public isselected: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param displaytext Anzeigetext\r\n * @param date Datum\r\n * @param isenabled Element ist aktiv\r\n * @param isselected Element ist selektiert\r\n * @param iscurrent Element ist aktuelles Element\r\n * @param isnew Element ist neu\r\n */\r\n constructor(\r\n displaytext: string,\r\n date: Date,\r\n isenabled: boolean,\r\n isselected: boolean,\r\n iscurrent: boolean,\r\n isnew: boolean\r\n ) {\r\n this.displaytext = displaytext;\r\n this.date = date;\r\n this.isenabled = isenabled;\r\n this.iscurrent = iscurrent;\r\n this.isselected = isselected;\r\n this.isnew = isnew;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n\r\n/**\r\n *Basis Komponente für SacDateSelector\r\n */\r\n@Directive()\r\nexport class SacDateSelectorCommon implements OnInit {\r\n // #region Properties\r\n\r\n /**\r\n * Ursprüngliches Datum\r\n */\r\n private _initialValue: Moment | null;\r\n /**\r\n * Aktuell gewähltes Datum\r\n */\r\n private _selectedValue: Moment | null;\r\n /**\r\n * Anfang des Kalenders\r\n */\r\n private beginOfCalendar: number = 1;\r\n /**\r\n * icon service to resolve icons\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Boolean Property für automatische Selektierung; default Wert - false\r\n */\r\n @Input()\r\n public autoapplyselection = false;\r\n /**\r\n * Array von Daten\r\n */\r\n public dates: DateSelectorItem[][] = [];\r\n /**\r\n * Datum Selector\r\n */\r\n @Input()\r\n public dateselection: boolean = false;\r\n /**\r\n * Monat\r\n */\r\n @Input()\r\n public month: number = 4;\r\n /**\r\n * Output Event beim Datum Selektieren\r\n */\r\n @Output()\r\n public selectdate = new EventEmitter<any>();\r\n /**\r\n * Time Selector\r\n */\r\n @Input()\r\n public timeselection: boolean = false;\r\n /**\r\n * Jahr\r\n */\r\n @Input()\r\n public year: number = 2018;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n constructor(injector: Injector) {\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Get icon to switch to next month\r\n */\r\n public get iconMonthNext(): string {\r\n return this.iconService.DateTimeSelectorComponentMonthNextIcon;\r\n }\r\n\r\n /**\r\n * Get icon to switch to previous month\r\n */\r\n public get iconMonthPrev(): string {\r\n return this.iconService.DateTimeSelectorComponentMonthPrevIcon;\r\n }\r\n\r\n /**\r\n * Input für ursprüngliches Datum\r\n */\r\n @Input()\r\n public get initialvalue(): Date {\r\n return this._initialValue.toDate();\r\n }\r\n\r\n public set initialvalue(v: Date | null) {\r\n if (v === null || v === undefined) {\r\n this._initialValue = null;\r\n } else {\r\n this._initialValue = moment(v);\r\n }\r\n\r\n this._selectedValue = null;\r\n\r\n if (this._initialValue === null) {\r\n this.initCalendar(moment());\r\n } else {\r\n this.initCalendar(this._initialValue);\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Selektierung übernehmen\r\n */\r\n public applySelection(): void {\r\n if (this.timeselection === false && this._selectedValue !== null) {\r\n this._selectedValue.hour(0);\r\n this._selectedValue.minute(0);\r\n this._selectedValue.second(0);\r\n this._selectedValue.millisecond(0);\r\n }\r\n\r\n if (this.dateselection === false && this._selectedValue !== null) {\r\n const tempValue: Moment = this._selectedValue.local();\r\n tempValue.date(1);\r\n tempValue.month(0);\r\n tempValue.year(1900);\r\n this._selectedValue = tempValue.utc();\r\n }\r\n\r\n this.selectdate.emit({\r\n date: this._selectedValue,\r\n });\r\n }\r\n\r\n /**\r\n * Modus ändern\r\n */\r\n public changeMode(): void {\r\n if (this.beginOfCalendar === 0) {\r\n this.beginOfCalendar = 1;\r\n } else {\r\n this.beginOfCalendar = 0;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Getter für Stunden Uhrzeit\r\n */\r\n public getHours(): number {\r\n if (this._selectedValue === null) {\r\n /**\r\n * Wert aus Init Value lesen\r\n */\r\n if (this._initialValue === null) {\r\n return 0;\r\n } else {\r\n return this._initialValue.hour();\r\n }\r\n } else {\r\n return this._selectedValue.hour();\r\n }\r\n }\r\n\r\n /**\r\n * Getter für Minuten Uhrzeit\r\n */\r\n public getMinutes(): number {\r\n if (this._selectedValue === null) {\r\n /**\r\n * Wert aus Init Value lesen\r\n */\r\n if (this._initialValue === null) {\r\n return 0;\r\n } else {\r\n return this._initialValue.minutes();\r\n }\r\n } else {\r\n return this._selectedValue.minutes();\r\n }\r\n }\r\n\r\n /**\r\n * Vorheriger Monat\r\n */\r\n public monthBack(): void {\r\n this.month = this.month - 1;\r\n\r\n if (this.month < 0) {\r\n this.month = 11;\r\n this.year = this.year - 1;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Nächster Monat\r\n */\r\n public monthNext(): void {\r\n this.month = this.month + 1;\r\n\r\n if (this.month > 11) {\r\n this.month = 0;\r\n this.year = this.year + 1;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Init Event\r\n */\r\n public ngOnInit() {\r\n /**\r\n * Init Initial Date if Empty\r\n */\r\n if (this._initialValue === undefined) {\r\n this.initialvalue = null;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Selektierung resetten\r\n */\r\n public resetSelection(): void {\r\n this.selectdate.emit({\r\n date: null,\r\n });\r\n }\r\n\r\n /**\r\n * Methode ergibt das selektierte Datum\r\n */\r\n public selectDate(v: DateSelectorItem): void {\r\n if (v.isenabled) {\r\n this.dates.forEach((date) =>\r\n date\r\n .filter((filter) => filter.isnew)\r\n .forEach((itm) => (itm.isnew = false))\r\n );\r\n this.dates.forEach((date) =>\r\n date\r\n .filter((filter) => filter.isselected)\r\n .forEach((itm) => (itm.isselected = false))\r\n );\r\n v.isnew = true;\r\n v.isselected = true;\r\n\r\n const dateValue: Moment = moment(v.date);\r\n\r\n // Übernehmen der Zeit aus dem bestehenden Wert\r\n if (this._selectedValue === null) {\r\n if (this._initialValue !== null) {\r\n dateValue.hour(this._initialValue.hour());\r\n dateValue.minute(this._initialValue.minute());\r\n }\r\n } else {\r\n dateValue.hour(this._selectedValue.hour());\r\n dateValue.minute(this._selectedValue.minute());\r\n }\r\n\r\n // Sekunden un Milisekunden Clean\r\n dateValue.second(0);\r\n dateValue.millisecond(0);\r\n this._selectedValue = dateValue;\r\n\r\n if (this.autoapplyselection) {\r\n this.applySelection();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Setter für Stunden Uhrzeit\r\n */\r\n public setHours(v: number | null): void {\r\n /**\r\n * Select Value setzen falls leer\r\n */\r\n this.initSelectedValue();\r\n\r\n if (v === null) {\r\n this._selectedValue.hour(0);\r\n } else {\r\n this._selectedValue.hour(v);\r\n }\r\n }\r\n\r\n /**\r\n * Setter für Minuten Uhrzeit\r\n */\r\n public setMinutes(v: number | null): void {\r\n /**\r\n * Select Value setzen falls leer\r\n */\r\n this.initSelectedValue();\r\n\r\n if (v === null) {\r\n this._selectedValue.minutes(0);\r\n } else {\r\n this._selectedValue.minutes(v);\r\n }\r\n }\r\n\r\n /**\r\n * Auswahl auf aktuelle Zeit stellen\r\n */\r\n public setToday(): void {\r\n this._selectedValue = moment();\r\n\r\n /**\r\n * Sekunden un Milisekunden Clean\r\n */\r\n this._selectedValue.second(0);\r\n this._selectedValue.millisecond(0);\r\n\r\n /**\r\n * Kalender Daten initialisieren falls Kalender angezeigt\r\n */\r\n if (this.dateselection) {\r\n this.initCalendar(this._selectedValue);\r\n }\r\n\r\n if (this.autoapplyselection) {\r\n this.applySelection();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Ursprünglicher Kalender\r\n */\r\n private initCalendar(v: Moment) {\r\n /**\r\n * Monat und Jahr setzen\r\n */\r\n this.month = v.month();\r\n this.year = v.year();\r\n\r\n /**\r\n * Daten für Kalender initialiseren\r\n */\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Initial Datum\r\n */\r\n private initDates(): void {\r\n const currentMonth = moment(new Date(this.year, this.month, 1));\r\n const lastMonth = moment(new Date(this.year, this.month, 1));\r\n lastMonth.add({ months: -1 });\r\n const nextMonths = moment(new Date(this.year, this.month, 1));\r\n nextMonths.add({ months: 1 });\r\n\r\n const weekdayBegin: number = currentMonth.weekday();\r\n const weekdayEnd: number = moment(\r\n new Date(\r\n currentMonth.year(),\r\n currentMonth.month(),\r\n currentMonth.daysInMonth()\r\n )\r\n ).weekday();\r\n // Clear Array\r\n const daysInCalendar: DateSelectorItem[] = [];\r\n this.dates = [];\r\n\r\n if (weekdayBegin !== this.beginOfCalendar) {\r\n const lastMonthDay = lastMonth.daysInMonth();\r\n const lastMonthDate = new Date(\r\n lastMonth.year(),\r\n lastMonth.month(),\r\n lastMonthDay\r\n );\r\n const lastMonthWeekday = moment(lastMonthDate).weekday();\r\n\r\n let daysInLastMonth =\r\n 7 - ((7 + this.beginOfCalendar - lastMonthWeekday) % 7);\r\n if (daysInLastMonth === 7) {\r\n daysInLastMonth = 0;\r\n }\r\n\r\n for (\r\n let day = lastMonthDay;\r\n day >= lastMonthDay - daysInLastMonth;\r\n day--\r\n ) {\r\n daysInCalendar.splice(\r\n 0,\r\n 0,\r\n new DateSelectorItem(\r\n day.toString(),\r\n new Date(lastMonth.year(), lastMonth.month(), day),\r\n false,\r\n false,\r\n false,\r\n false\r\n )\r\n );\r\n }\r\n }\r\n\r\n // Add all Days in Month\r\n for (\r\n let dayinmonth = 1;\r\n dayinmonth <= currentMonth.daysInMonth();\r\n dayinmonth++\r\n ) {\r\n let isSelectedDate: boolean = false;\r\n let isNewDate: boolean = false;\r\n const isCurrentDate: boolean =\r\n moment().month() === this.month &&\r\n moment().year() === this.year &&\r\n moment().date() === dayinmonth;\r\n\r\n // Initial Wert setzen, falls vorhanden\r\n if (this._initialValue !== null) {\r\n isSelectedDate =\r\n this._initialValue.month() === this.month &&\r\n this._initialValue.year() === this.year &&\r\n this._initialValue.date() === dayinmonth;\r\n }\r\n\r\n // Selected Date Wert setzen, falls Wert gesetzt\r\n if (this._selectedValue !== null) {\r\n isNewDate =\r\n this._selectedValue.month() === this.month &&\r\n this._selectedValue.year() === this.year &&\r\n this._selectedValue.date() === dayinmonth;\r\n }\r\n\r\n daysInCalendar.push(\r\n new DateSelectorItem(\r\n dayinmonth.toString(),\r\n moment([this.year, this.month, dayinmonth]).toDate(),\r\n true,\r\n isSelectedDate,\r\n isCurrentDate,\r\n isNewDate\r\n )\r\n );\r\n }\r\n\r\n let endOfCalender: number;\r\n if (this.beginOfCalendar === 0) {\r\n endOfCalender = 6;\r\n } else {\r\n endOfCalender = 0;\r\n }\r\n\r\n if (weekdayEnd !== endOfCalender) {\r\n let countMissingDays: number;\r\n\r\n if (this.beginOfCalendar === 0) {\r\n countMissingDays = endOfCalender - weekdayEnd;\r\n } else {\r\n countMissingDays = 7 - weekdayEnd;\r\n }\r\n\r\n for (let i = 1; i <= countMissingDays; i++) {\r\n daysInCalendar.push(\r\n new DateSelectorItem(\r\n i.toString(),\r\n new Date(nextMonths.year(), nextMonths.month(), i),\r\n false,\r\n false,\r\n false,\r\n false\r\n )\r\n );\r\n }\r\n }\r\n\r\n for (let index = 0; index < daysInCalendar.length / 7; index++) {\r\n for (let day = 0; day < 7; day++) {\r\n if (day === 0) {\r\n this.dates[index] = [];\r\n }\r\n\r\n this.dates[index].push(daysInCalendar[index * 7 + day]);\r\n }\r\n }\r\n }\r\n\r\n private initSelectedValue() {\r\n /**\r\n * Select Value setzen falls leer\r\n */\r\n if (this._selectedValue === null) {\r\n if (this._initialValue === null) {\r\n this._selectedValue = moment();\r\n } else {\r\n this._selectedValue = this._initialValue;\r\n }\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n// #endregion Variables\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as IMask from 'imask';\r\nimport * as moment_ from 'moment';\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SacBaseDateTimeControl } from '../../common/basedatetimecontrol';\r\nimport { ISacIconService } from '../../public_api';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Komponente für SacDateTimeCommon. Extends SacBaseDateTimeControl\r\n */\r\n@Directive()\r\nexport class SacDateTimeCommon extends SacBaseDateTimeControl {\r\n // #region Properties\r\n\r\n /**\r\n * icon service\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Format des Datums\r\n */\r\n public readonly DATEFORMAT: string = 'DD.MM.YYYY HH:mm';\r\n /**\r\n * Maske\r\n */\r\n /**\r\n * Maske\r\n */\r\n public readonly imaskDate = {\r\n mask: this.DATEFORMAT,\r\n blocks: {\r\n DD: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 31,\r\n maxLength: 2,\r\n },\r\n MM: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 12,\r\n maxLength: 2,\r\n },\r\n YYYY: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 9999,\r\n },\r\n HH: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 23,\r\n maxLength: 2,\r\n },\r\n mm: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 59,\r\n maxLength: 2,\r\n },\r\n },\r\n placeholderChar: '_',\r\n autofix: true,\r\n lazy: false,\r\n overwrite: true,\r\n };\r\n\r\n /**\r\n * Resource Key für Validation Message MaxDate bei Control\r\n */\r\n @Input() public validationmessagemaxdate: string =\r\n this.validationKeyService.ValidationErrorMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate bei Control\r\n */\r\n @Input() public validationmessagemindate: string =\r\n this.validationKeyService.ValidationErrorMinDate;\r\n /**\r\n * Resource Key für Validation Message MaxDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxdate: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymindate: string =\r\n this.validationKeyService.ValidationErrorSummaryMinDate;\r\n\r\n /**\r\n * Maximaler Wert des Datums\r\n */\r\n public _maxdate: Date = null;\r\n /**\r\n * Minimaler Wert des Datums\r\n */\r\n public _mindate: Date = null;\r\n /**\r\n * Definiert ob der Date Selector angezeigt wird\r\n */\r\n public _showselector: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector, elementRef);\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Max Date\r\n */\r\n @Input()\r\n public set maxdate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._maxdate = super.getDate(date).toDate();\r\n } else {\r\n this._maxdate = null;\r\n }\r\n }\r\n\r\n /**\r\n * Min Date\r\n */\r\n @Input()\r\n public set mindate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._mindate = super.getDate(date).toDate();\r\n } else {\r\n this._mindate = null;\r\n }\r\n }\r\n\r\n /**\r\n * icon for date selector button\r\n */\r\n public get IconSelector(): string {\r\n return this.iconService.DateTimeComponentSelectorIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this._showselector = false;\r\n }\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum-Format vom String\r\n */\r\n public GetDateTimeFormatString(): string {\r\n return this.DATEFORMAT;\r\n }\r\n\r\n /**\r\n * Methode modifiziert den parsed Wert des Datums\r\n */\r\n public ModifyParsedDateTimeValue(v: Moment): Moment {\r\n return v;\r\n }\r\n\r\n /**\r\n * Methode ergibt das selektierte Datum\r\n */\r\n public dateselect(v: any) {\r\n if (v.date === null) {\r\n this.setValueString('');\r\n } else {\r\n this.value = moment(v.date).utc().toDate();\r\n }\r\n\r\n this._showselector = false;\r\n }\r\n\r\n /**\r\n * DateSelector wird beim Click-Event angezeigt\r\n */\r\n public showDateSelector(): void {\r\n /**\r\n * Touch Event auslösen\r\n */\r\n this.onTouch();\r\n\r\n if (this._showselector) {\r\n this._showselector = false;\r\n } else {\r\n this._showselector = true;\r\n }\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = super.validateData(c);\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._mindate !== undefined &&\r\n this._mindate !== null\r\n ) {\r\n error = Validation.minDate(\r\n this._mindate,\r\n this.validationmessagemindate,\r\n this.validationmessagesummarymindate\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._maxdate !== undefined &&\r\n this._maxdate !== null\r\n ) {\r\n error = Validation.maxDate(\r\n this._maxdate,\r\n this.validationmessagemaxdate,\r\n this.validationmessagesummarymaxdate\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as IMask from 'imask';\r\nimport * as moment_ from 'moment';\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SacBaseDateTimeControl } from '../../common/basedatetimecontrol';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Komponente für SacTimeCommon. Extends SacBaseDateTimeControl\r\n */\r\n@Directive()\r\nexport class SacTimeCommon extends SacBaseDateTimeControl {\r\n // #region Properties\r\n\r\n /**\r\n * icon service\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Format des Datums\r\n */\r\n public readonly TIMEFORMAT: string = 'HH:mm';\r\n /**\r\n * Maske\r\n */\r\n public readonly imaskDate = {\r\n mask: this.TIMEFORMAT,\r\n blocks: {\r\n HH: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 23,\r\n maxLength: 2,\r\n },\r\n mm: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 59,\r\n maxLength: 2,\r\n },\r\n },\r\n placeholderChar: '_',\r\n autofix: true,\r\n lazy: false,\r\n overwrite: true,\r\n };\r\n\r\n /**\r\n * Resource Key für Validation Message MinTime bei Control\r\n */\r\n @Input() public validationmessagemaxtime: string =\r\n this.validationKeyService.ValidationErrorMaxTime;\r\n /**\r\n * Resource Key für Validation Message MinTime bei Control\r\n */\r\n @Input() public validationmessagemintime: string =\r\n this.validationKeyService.ValidationErrorMinTime;\r\n /**\r\n * Resource Key für Validation Message MinTime in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxtime: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxTime;\r\n /**\r\n * Resource Key für Validation Message MinTime in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymintime: string =\r\n this.validationKeyService.ValidationErrorSummaryMinTime;\r\n\r\n /**\r\n * Max Time\r\n */\r\n public _maxtime: Date = null;\r\n /**\r\n * Min Time\r\n */\r\n public _mintime: Date = null;\r\n /**\r\n * Definiert ob der Date Selector angezeigt wird\r\n */\r\n public _showselector: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector, elementRef);\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Max Time\r\n */\r\n @Input()\r\n public set maxtime(v: string | Date | null) {\r\n let time = moment(v, [this.TIMEFORMAT], true);\r\n\r\n time = this.ModifyParsedDateTimeValue(time);\r\n\r\n if (time.isValid()) {\r\n this._maxtime = super.getDate(time).toDate();\r\n } else {\r\n this._maxtime = null;\r\n }\r\n }\r\n\r\n /**\r\n * Min Time\r\n */\r\n @Input()\r\n public set mintime(v: string | Date | null) {\r\n let time = moment(v, [this.TIMEFORMAT], true);\r\n\r\n time = this.ModifyParsedDateTimeValue(time);\r\n\r\n if (time.isValid()) {\r\n this._mintime = super.getDate(time).toDate();\r\n } else {\r\n this._mintime = null;\r\n }\r\n }\r\n\r\n /**\r\n * icon for date selector button\r\n */\r\n public get IconSelector(): string {\r\n return this.iconService.TimeComponentSelectorIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this._showselector = false;\r\n }\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum-Format vom String\r\n */\r\n public GetDateTimeFormatString(): string {\r\n return this.TIMEFORMAT;\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum - Moment\r\n */\r\n public ModifyParsedDateTimeValue(v: Moment): Moment {\r\n v.date(1);\r\n v.month(0);\r\n v.year(1900);\r\n return v;\r\n }\r\n\r\n /**\r\n * Zeigt Date Selector an\r\n */\r\n public showTimeSelector(): void {\r\n // Touch Event auslösen\r\n this.onTouch();\r\n\r\n if (this._showselector) {\r\n this._showselector = false;\r\n } else {\r\n this._showselector = true;\r\n }\r\n }\r\n\r\n /**\r\n * Time Selector\r\n */\r\n public timeselect(v: any) {\r\n if (v.date === null) {\r\n this.setValueString('');\r\n } else {\r\n this.value = moment(v.date).utc().toDate();\r\n }\r\n\r\n this._showselector = false;\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = super.validateData(c);\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._mintime !== undefined &&\r\n this._mintime !== null\r\n ) {\r\n error = Validation.minTime(\r\n this._mintime,\r\n this.validationmessagemintime,\r\n this.validationmessagesummarymintime\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._maxtime !== undefined &&\r\n this._maxtime !== null\r\n ) {\r\n error = Validation.maxTime(\r\n this._maxtime,\r\n this.validationmessagemaxtime,\r\n this.validationmessagesummarymaxtime\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\n\r\n/**\r\n * Common Control für Form Item Container.\r\n **/\r\n@Directive()\r\nexport class SacStaticFormContainerCommon extends SacBaseModelControl<string> {\r\n\r\n\r\n /**\r\n * Definiert den Container als Required Form Item\r\n */\r\n private _isrequired: boolean = false;\r\n\r\n /**\r\n * Text welcher als Tooltip angezeigt wird.\r\n */\r\n @Input() tooltiptext: string = '';\r\n\r\n /**\r\n * Definiert den Container als Required Form Item\r\n */\r\n get isrequired(): boolean {\r\n return this._isrequired;\r\n }\r\n /**\r\n * Definiert den Container als Required Form Item\r\n */\r\n @Input()\r\n set isrequired(v: boolean) {\r\n this._isrequired = convertToBoolean(v);\r\n }\r\n\r\n /**\r\n * Validierung des Controls\r\n *\r\n * @description Validierung wird auf dem Form Container nicht gemacht, da kein Model Binding vorhanden.\r\n * @param c Control das Validiert werden soll\r\n * @returns Fehlermeldung aus Validation oder NULL\r\n */\r\n validateData(c: AbstractControl): ValidationErrors | null {\r\n // Keine Validierung, daher immer NULL\r\n return null;\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\n\r\n/**\r\n * Common Klasse für Static Label Control\r\n **/\r\n@Directive()\r\nexport class SacStaticLabelCommon extends SacInputBase<string> {\r\n\r\n /**\r\n * Erlaubt HTML Content in der Anzeige des Wertes\r\n */\r\n @Input()\r\n allowhtml: boolean = false;\r\n\r\n /**\r\n * Validierung des Controls\r\n *\r\n * @param c Control das Validiert werden soll\r\n * @returns Fehlermeldung aus Validation oder NULL\r\n */\r\n validateData(c: AbstractControl): ValidationErrors | null {\r\n // Keine Validierung, daher immer NULL\r\n return null;\r\n }\r\n}\r\n","import { AfterContentInit, Directive, EventEmitter, Input, Output, QueryList } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { SacWizardItemCommon } from './wizarditem';\r\n\r\n/**\r\n * Base Komponente für SacWizardCommon\r\n */\r\n@Directive()\r\nexport abstract class SacWizardCommon implements AfterContentInit, ControlValueAccessor {\r\n\r\n /**\r\n * Aktueller Schritt im Wizard\r\n */\r\n private _currentstep: string;\r\n\r\n /**\r\n * Name des Controls\r\n */\r\n @Input()\r\n name: string = '';\r\n\r\n /**\r\n * Boolean Property prüft ob Navigation im Wizard disabled ist; default Wert - false\r\n */\r\n @Input()\r\n disablenavigation: boolean = false;\r\n\r\n /**\r\n * Setter und Getter für aktueller Schritt\r\n */\r\n @Input()\r\n set currentstep(v: string | null) {\r\n this.changeStep(v);\r\n this.propagateChange(this._currentstep);\r\n }\r\n get currentstep(): string | null {\r\n return this._currentstep;\r\n }\r\n /**\r\n * EventEmitter wenn der Schritt geändert wird\r\n */\r\n @Output()\r\n stepchanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\r\n /**\r\n * Abstrakte QueryList von SacWizardItemCommon\r\n */\r\n abstract wizardItems(): QueryList<SacWizardItemCommon>;\r\n\r\n private setStepInternal(step: string): void {\r\n this._currentstep = step;\r\n this.propagateChange(this._currentstep);\r\n }\r\n\r\n // #region Control initialisieren\r\n\r\n /**\r\n * AfterContentInit Event\r\n */\r\n ngAfterContentInit() {\r\n this.initSteps();\r\n }\r\n /**\r\n * Ursprünglicher Schritt wird selektiert\r\n */\r\n private initSteps(): void {\r\n const activeStep = this.wizardItems().filter((step) => step.active);\r\n\r\n if (activeStep.length === 0) {\r\n const initStep: SacWizardItemCommon = this.wizardItems().toArray()[0];\r\n this.selectStep(initStep);\r\n initStep.disabled = false;\r\n this.setStepInternal(initStep.id);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * Schritt selektieren\r\n * @param step Step welcher selektiert werden soll\r\n */\r\n selectStep(step: SacWizardItemCommon): void {\r\n\r\n // Cancel if Navigation disabled\r\n if (this.disablenavigation) {\r\n return;\r\n }\r\n\r\n this.changeStep(step.id);\r\n }\r\n\r\n /**\r\n * Auf nächsten/vorherigen Schritt gehen\r\n * @param step Step auf welchen gewechselt werden soll\r\n */\r\n changeStep(step: string | null) {\r\n if (this.wizardItems() === undefined || this.wizardItems() === null) {\r\n return;\r\n }\r\n\r\n const wizardItemsArray: SacWizardItemCommon[] = this.wizardItems().toArray();\r\n const itemsCount: number = wizardItemsArray.length;\r\n const currentItemIndex = wizardItemsArray.findIndex(itm => itm.id === step);\r\n\r\n for (let i: number = 0; i < itemsCount; i++) {\r\n const item: SacWizardItemCommon = wizardItemsArray[i];\r\n\r\n if (i < currentItemIndex) {\r\n item.iscomplete = true;\r\n } else {\r\n item.iscomplete = false;\r\n }\r\n\r\n if (i > currentItemIndex + 1) {\r\n item.disabled = true;\r\n } else {\r\n item.disabled = false;\r\n }\r\n\r\n if (i === currentItemIndex) {\r\n item.active = true;\r\n } else {\r\n item.active = false;\r\n }\r\n }\r\n\r\n this.setStepInternal(step);\r\n this.stepchanged.emit(step);\r\n }\r\n\r\n /**\r\n * Leere Implementation von 'propagateChange'. Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n propagateChange: any = () => { };\r\n /**\r\n * Leere Implementation von 'propagateTouch'. Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n propagateTouch: any = () => { };\r\n\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen im Control mitbekommen können\r\n * Zur Änderungsinfo die Methode propagateChange aufrufen.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen mitbekommen, wenn das Control aktiviert (Focus) wird.\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouch = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode zum schreiben von Werten aus dem Model in das Control\r\n */\r\n writeValue(value: string | null) {\r\n if (value) {\r\n this.changeStep(value);\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n/**\r\n * Basis Komponente für SacWizardItem\r\n */\r\n@Directive()\r\nexport class SacWizardItemCommon {\r\n /**\r\n * Prüft ob der aktuelle Schritt aktiv ist.\r\n */\r\n @Input()\r\n active: boolean;\r\n /**\r\n * Prüft ob der Schritt abgeschlossen wurde.\r\n */\r\n @Input()\r\n iscomplete: boolean = false;\r\n /**\r\n * Prüft ob der Schritt disabled ist.\r\n */\r\n @Input()\r\n disabled: boolean = true;\r\n /**\r\n * ID-String\r\n */\r\n @Input()\r\n id: string;\r\n /**\r\n * Label-Property, das angezeigt wird\r\n */\r\n @Input()\r\n label: string;\r\n\r\n}\r\n","import { TinyMceDialogSettingsMeta } from './tinymcedialogsettingsmeta';\r\n\r\n/**\r\n * Settings für TinyMCE Dialog\r\n */\r\nexport class TinyMceDialogSettings {\r\n /**\r\n * Konstruktor\r\n * @param init Initale Werte\r\n */\r\n constructor(init?: Partial<TinyMceDialogSettings>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Callback Methode für Dialog\r\n */\r\n public callback: any;\r\n /**\r\n * Wert aus Dialog\r\n */\r\n public value: string;\r\n /**\r\n * Meta Daten zu Dialog\r\n */\r\n public meta: TinyMceDialogSettingsMeta;\r\n /**\r\n * File Type Filter\r\n */\r\n public allowedtypes: string;\r\n}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n Host,\r\n Injector,\r\n Input,\r\n NgZone,\r\n Output,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\nimport { SacDefaultLocalisationService } from '../../services/sac-localisation.service';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\nimport { TinyMceDialogSettings } from './tinymcedialogsettings';\r\nimport { TinyMceDialogSettingsMeta } from './tinymcedialogsettingsmeta';\r\nimport { TinyMceInstance } from './tinymceinstance';\r\n\r\n/**\r\n * Basis Komponente für TinyMCE Editor\r\n */\r\n@Directive()\r\nexport abstract class SacTinyMceCommon extends SacBaseModelControl<string> {\r\n // #region Properties\r\n\r\n /**\r\n * Default Config mit Standardwerten für TinyMCE\r\n */\r\n private baseConfig: any = {\r\n base_url: '/tinymce',\r\n suffix: '.min',\r\n branding: false,\r\n angular: this,\r\n file_picker_types: 'file media image',\r\n file_picker_callback: this.showSelectDialog,\r\n save_onsavecallback: () => {},\r\n };\r\n\r\n /**\r\n * Erlaubt im Filebrowser das löschen von Dateien\r\n */\r\n @Input()\r\n public allowfiledelete = false;\r\n /**\r\n * Erlaubt im Filebrowser das umbennen von Dateien\r\n */\r\n @Input()\r\n public allowfilerename = false;\r\n /**\r\n * Erlaubt im Filebrowser das hochladen von Files\r\n */\r\n @Input()\r\n public allowfileupload = false;\r\n /**\r\n * Erlaubt im Filebrowser das anlegen eines Ordners\r\n */\r\n @Input()\r\n public allowfoldercreate = false;\r\n /**\r\n * Erlaubt im Filebrowser das löschen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderdelete = false;\r\n /**\r\n * Erlaubt im Filebrowser das umbennen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderrename = false;\r\n /**\r\n * URL zu Filebrowser Backend\r\n */\r\n @Input()\r\n public filebrowserapiurl: string = null;\r\n /**\r\n * File Extensions für Links (Format: .xxx,.yyy,.eee)\r\n */\r\n @Input()\r\n public filetypesfiles = '';\r\n /**\r\n * File Extensions für Images (Format: .xxx,.yyy,.eee)\r\n */\r\n @Input()\r\n public filetypesimages = '.gif,.jpeg,.jpg,.png,.tif,.tiff,.bmp';\r\n /**\r\n * File Extensions für Media (Format: .xxx,.yyy,.eee)\r\n */\r\n @Input()\r\n public filetypesvideo = '.mp4,.m4v,.ogv,.webm,.mov';\r\n /**\r\n * Höhe des Editors\r\n */\r\n @Input()\r\n public height: string = undefined;\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input()\r\n public isrequired: boolean = false;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n /**\r\n * Event wenn Save Action in TinyMCE ausgelöst wird\r\n */\r\n @Output()\r\n public onsave: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * TinyMCE Config\r\n */\r\n public _config: any = {};\r\n /**\r\n * Service für Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n /**\r\n * Settings Instanz für Dialog\r\n */\r\n public selectDialogSettings: TinyMceDialogSettings;\r\n /**\r\n * Der Select Dialog wird angezeigt\r\n */\r\n public selectdialogvisible = false;\r\n /**\r\n * Instanz auf TinyMCE Settings. Wird durch TinyMCE gesetzt und wird für den Callback des Dialog benötigt\r\n */\r\n public settings: TinyMceInstance;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param ngZone ngzone for handling external javascripts\r\n */\r\n constructor(\r\n @Host() formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected ngZone: NgZone\r\n ) {\r\n super(formlayout, injector);\r\n\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.config = {};\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * TinyMCE Konfiguration\r\n * @link https://www.tiny.cloud/docs/configure/\r\n */\r\n @Input()\r\n public set config(v: any) {\r\n this._config = {\r\n ...this.getDynamicSettings(),\r\n ...this.baseConfig,\r\n ...this.overwriteDefaultSettings(),\r\n ...v,\r\n };\r\n }\r\n\r\n /**\r\n * TinyMCE Konfiguration\r\n */\r\n public get config(): any {\r\n return this._config;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Schliesst den Dateiauswahl Dialog\r\n */\r\n public closeSelectDialog(): void {\r\n this.selectdialogvisible = false;\r\n }\r\n\r\n /**\r\n * Löst die Speichern Action aus\r\n * @param content Content als String\r\n */\r\n public save(content: any): void {\r\n this.onsave.emit(content);\r\n }\r\n\r\n /**\r\n * Setzt das Resultat aus dem Dateiauswahl Dialog\r\n */\r\n public setSelectDialogResult(): void {\r\n if (this.selectDialogSettings.value) {\r\n if (\r\n this.selectDialogSettings.value.startsWith('/') ||\r\n this.selectDialogSettings.value.startsWith('\\\\')\r\n ) {\r\n this.selectDialogSettings.value =\r\n this.selectDialogSettings.value.substring(1);\r\n }\r\n\r\n this.selectDialogSettings.callback(this.selectDialogSettings.value);\r\n }\r\n\r\n this.closeSelectDialog();\r\n }\r\n\r\n /**\r\n * Zeigt den Dateiauswahl Dialog an\r\n * @param callback Callback Methode welche aufgerufen wird, wenn der Dialog geschlossen wird\r\n * @param value Wert aus dem Datei Dialog\r\n * @param meta Meta Daten zur Datei\r\n */\r\n public showSelectDialog(\r\n callback,\r\n value: string,\r\n meta: TinyMceDialogSettingsMeta\r\n ): void {\r\n this.settings.angular.ngZone.runOutsideAngular(() => {\r\n this.settings.angular.ngZone.run(() => {\r\n this.settings.angular.selectdialogvisible = true;\r\n\r\n // Set Dialog Settings\r\n this.settings.angular.selectDialogSettings = new TinyMceDialogSettings({\r\n callback: callback,\r\n value: value,\r\n meta: meta,\r\n allowedtypes: '',\r\n });\r\n\r\n switch (meta.filetype) {\r\n case 'image':\r\n this.settings.angular.selectDialogSettings.allowedtypes =\r\n this.settings.angular.filetypesimages;\r\n break;\r\n case 'media':\r\n this.settings.angular.selectDialogSettings.allowedtypes =\r\n this.settings.angular.filetypesvideo;\r\n break;\r\n default:\r\n this.settings.angular.selectDialogSettings.allowedtypes =\r\n this.settings.angular.filetypesfiles;\r\n break;\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Validiert das Control\r\n * @param c Control Instanz die valdidiert wird\r\n * @returns Gibt eine Fehlermeldung oder NULL zurück\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * get settings in effective implementation that overwrites the defaults. use {} for non overwrites.\r\n */\r\n public abstract overwriteDefaultSettings(): any;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Gibt die TinyMCE Settings zurück, die aus den Properties der Angular Komponenten erzeugt werden\r\n * @returns Objekt mit Settings\r\n */\r\n private getDynamicSettings(): any {\r\n let settings = {\r\n selector: '#' + this.name + '_tinymce',\r\n height: this.height,\r\n };\r\n\r\n return settings;\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\n\r\n/**\r\n *Basis Komponente für SacTreeItemAction\r\n */\r\n@Directive()\r\nexport class SacTreeItemActionCommon implements OnInit {\r\n /**\r\n * Konstruktor\r\n * @param el Element Referenz\r\n */\r\n constructor(private el: ElementRef) {}\r\n\r\n /**\r\n * lifecycle OnInit hook. Wird aufgeruren sobald das Komponent initialisiert ist.\r\n */\r\n ngOnInit() {\r\n let rootElement: HTMLElement = this.el.nativeElement;\r\n let parentElement: HTMLElement = rootElement.parentElement;\r\n\r\n while (rootElement.firstChild) {\r\n parentElement.insertBefore(rootElement.firstChild, rootElement);\r\n }\r\n\r\n parentElement.removeChild(rootElement);\r\n }\r\n\r\n /**\r\n *Input Property. Akzeptiert das Wert des Object.\r\n */\r\n @Input() item: any;\r\n\r\n /**\r\n * Input Property für Title des TreeItemAction\r\n */\r\n @Input() title: string;\r\n\r\n /**\r\n * Input Property für Styling des Icon. Deffiniert die Css Klassen des Icon\r\n */\r\n @Input() iconstyle: string;\r\n\r\n /**\r\n * Event wenn auf das Icon geclickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Die Methode erstellt die CSS Klasse des Icon. Akzeptiert ein Key-word und baut ein vollständige CSS Klasse.\r\n */\r\n transformClass(initialClass) {\r\n switch (initialClass) {\r\n case 'add':\r\n return 'jstree-icon icon icon-base-add jstree-add';\r\n case 'delete':\r\n return 'jstree-icon icon icon-base-delete jstree-delete';\r\n default:\r\n return initialClass;\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode wird das cklickaction Emitter aktivieren.\r\n */\r\n iconaction() {\r\n this.clicked.emit();\r\n }\r\n}\r\n","import {\r\n ContentChild,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Basis Komponente für SacTreeView\r\n */\r\n@Directive()\r\nexport class SacTreeViewCommon implements OnInit {\r\n /**\r\n * Das Property enthielt boolean Wert und deffiniert, ob alle Items collapsed sind. Default value: undefined/null\r\n */\r\n public _collapseAll: boolean;\r\n\r\n /**\r\n * Das Property enthielt boolean Wert und deffiniert, ob alle Items selected sind. Default value: undefined/null\r\n */\r\n private _selectAll: boolean;\r\n\r\n /**\r\n * Das Property enthielt array of nodes. Default value: empty array [].\r\n */\r\n public nodes: any[] = [];\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isCollapsed'. Es wird benutzt beim rendering. Für Expand/Collapsed Sicht des Node(Wert)\r\n */\r\n public collapseAttr = 'isCollapsed';\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isSelected'. Es wird benutzt beim Vorbereitung des Data des TreeView\r\n */\r\n public selectAttr = 'isSelected';\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isIndeterminate'. Es wird benutzt beim Vorbereitung des Data des TreeView\r\n */\r\n public inDeterminateAttr = 'isIndeterminate';\r\n\r\n /**\r\n * Providen data for tree.\r\n */\r\n private _data: any[] = [];\r\n\r\n /**\r\n * Getter für Data des TreeView\r\n */\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n /**\r\n * Input Property für Data des TreeView\r\n */\r\n @Input()\r\n set data(value: any[]) {\r\n this._data = value;\r\n this.nodes = value;\r\n\r\n // this.nodes.forEach(node => node[\"typeId\"] = \"13\")\r\n\r\n this.LoadTree();\r\n\r\n if (this._collapseAll !== undefined) {\r\n this.collapseAllNode(this._collapseAll);\r\n }\r\n }\r\n\r\n /**\r\n * Input Property für template des TreeView. Type: TemplateRef<any>.\r\n */\r\n @Input()\r\n template: TemplateRef<any>;\r\n\r\n /**\r\n * Die Directive erhält die actions für das TreeView\r\n */\r\n @ContentChild('actions', { static: true })\r\n public set treeviewTemplate(v: TemplateRef<any>) {\r\n this.template = v;\r\n }\r\n\r\n /**\r\n * Getter für das TreeView Template\r\n */\r\n public get treeviewTemplate(): TemplateRef<any> {\r\n return this.template;\r\n }\r\n\r\n /**\r\n * Input property erhält Icon für das Template\r\n */\r\n @Input()\r\n fileicontemplate: TemplateRef<any>;\r\n\r\n /**\r\n * Setter property. Deffiniert das FileIcon für das TreeView\r\n */\r\n @ContentChild('treefileicon', { static: true })\r\n public set treefileicon(v: TemplateRef<any>) {\r\n this.fileicontemplate = v;\r\n }\r\n\r\n /**\r\n * Getter property. Ergibt das FileIcon für das TreeView\r\n */\r\n public get treefileicon(): TemplateRef<any> {\r\n return this.fileicontemplate;\r\n }\r\n\r\n /**\r\n * Input property für den Namen des TreeView. Type string. Default value: \"\"\r\n */\r\n @Input()\r\n name: string = '';\r\n\r\n /**\r\n * A flag indicating data is flatten in array and prepare is required.(Default\r\n * is false).\r\n */\r\n @Input() prepareData = false;\r\n\r\n /**\r\n * Attribute for Text in Tree\r\n */\r\n @Input() textAttr = 'data';\r\n\r\n /**\r\n * Name of ID property in input data.\r\n */\r\n @Input() idAttr = 'id';\r\n\r\n /**\r\n * Name of parent property in input data.\r\n */\r\n @Input() parentAttr = 'PARENT_ID';\r\n\r\n /**\r\n * Name of children list property in input data.\r\n */\r\n @Input() childrenAttr = 'children';\r\n\r\n /**\r\n * Title des Treeview\r\n */\r\n @Input() title;\r\n\r\n // @Input(\"titleAction\") _titleAction: string\r\n\r\n /**\r\n * Collapse or expand all parent nodes.\r\n */\r\n @Input()\r\n set collapseall(value: boolean) {\r\n this._collapseAll = value;\r\n if (this.nodes && this.nodes.length && this.nodes.length > 0) {\r\n this.collapseAllNode(this._collapseAll);\r\n }\r\n\r\n // this._recursiveEdit(\r\n // this.nodes, this.childrenAttr, this.collapseAttr, this._collapseAll);\r\n\r\n // this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Getter für das collapse property. Ergibt boolean Wert, ob die Items collapsed/expand sind.\r\n */\r\n get collapseall(): boolean {\r\n return this._collapseAll;\r\n }\r\n\r\n /**\r\n * Select or deselect all nodes.\r\n */\r\n @Input()\r\n set selectall(value: boolean) {\r\n this._selectAll = value;\r\n this._recursiveEdit(this.nodes, this.childrenAttr, this.selectAttr, value);\r\n this._recursiveEdit(\r\n this.nodes,\r\n this.childrenAttr,\r\n this.inDeterminateAttr,\r\n false\r\n );\r\n }\r\n\r\n /**\r\n * Input property - setter. Deffiniert das ID des selektierten Item(node)\r\n */\r\n @Input()\r\n set selectedid(v: any) {\r\n this.selectedNode = this.findNode(this.nodes, v, this.idAttr);\r\n\r\n // if (this.selectedNode) {\r\n // this.selectedIdEmitter.emit(this.selectedNode[this.idAttr]);\r\n // this.selectedTextEmitter.emit(this.selectedNode[this.textAttr]);\r\n // }\r\n }\r\n\r\n /**\r\n * Getter. Ergibt das ID des selektierten Item(node)\r\n */\r\n get selectedId(): any {\r\n return this.selectedNode ? this.selectedNode[this.idAttr] : null;\r\n }\r\n\r\n /**\r\n * Das Property erhält das selektierte Wert(node). Default value: undefined/null\r\n */\r\n private _selectedNode;\r\n\r\n /**\r\n * Setter für das selektierte Wert(node). Wenn aufgerufen das ID und TextAttr des selected Node wird emitted\r\n */\r\n set selectedNode(v: any) {\r\n this._selectedNode = v;\r\n\r\n if (this._selectedNode) {\r\n this.selectedidchange.emit(this.selectedId);\r\n this.selectedtextchanged.emit(v[this.textAttr]);\r\n }\r\n }\r\n\r\n /**\r\n * Getter für das selektierte Wert(node). Ergibt das selektierte Wert(node).\r\n */\r\n get selectedNode(): any {\r\n return this._selectedNode;\r\n }\r\n\r\n /**\r\n * Output Emitter. Emit das ID des selected Node.\r\n */\r\n @Output()\r\n selectedidchange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Output Emitter. Emit das TextAttr des selected Node.\r\n */\r\n @Output()\r\n selectedtextchanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Output Emitter. Emit wenn ein Node selektiert wird.\r\n */\r\n @Output()\r\n selecteditem: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive.\r\n * Define an ngOnInit() method to handle any additional initialization tasks.\r\n */\r\n ngOnInit() {\r\n this.collapseAllNode(this._collapseAll);\r\n\r\n if (this.selectedId) this.openSelectedNode(this.nodes);\r\n }\r\n\r\n /**\r\n * Funktion setzt alle parent items recusiv zum selected node\r\n * auf collapsed = false\r\n */\r\n private openSelectedNode(data): boolean {\r\n let result: boolean = false;\r\n for (let i = 0; i < data.length; i++) {\r\n if (\r\n data[i][this.childrenAttr].length &&\r\n data[i][this.idAttr] != this.selectedId\r\n )\r\n result = this.openSelectedNode(data[i][this.childrenAttr]);\r\n if (result || data[i][this.idAttr] == this.selectedId) {\r\n data[i][this.collapseAttr] = false;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Die Methode vorbereitet die Daten für das TreeView. Die Funktion sollte geändert werden abhängig von dem kommenden Daten (wenn array)\r\n */\r\n private LoadTree() {\r\n //if the tree structure require array the function below should be changed\r\n const cloned = this._data.map((x) => Object.assign({}, x));\r\n\r\n // If data is flat, prepare data with recursive function.\r\n this.nodes = this.prepareData ? this._getPreparedData(cloned) : this._data;\r\n }\r\n\r\n /**\r\n * Die Methode collapse/expand den selectierten Node\r\n */\r\n onCollapseClick(node) {\r\n if (node[this.childrenAttr].length) {\r\n node[this.collapseAttr] = !node[this.collapseAttr];\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode set den selektierten Node und emit es.\r\n */\r\n onClick(node) {\r\n this.selectedNode = node;\r\n this.selecteditem.emit(this.selectedNode);\r\n // this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Die Methode wird ein event mit Meldung zu Parent emit-en.\r\n */\r\n sendMsgToParent(msg) {\r\n this.selecteditem.emit(msg);\r\n }\r\n\r\n /**\r\n * Die Methode wird alle Nodes collapse\r\n */\r\n collapseAllNode(command) {\r\n this.nodes.forEach((node) => {\r\n if (node[this.childrenAttr].length) {\r\n collapseAllHIdden(node, this.collapseAttr, command, this.childrenAttr);\r\n }\r\n });\r\n function collapseAllHIdden(node, collapseAttr, command, childrenAttr) {\r\n node[collapseAttr] = command;\r\n node.children.forEach((child: any) => {\r\n if (child[childrenAttr].length) {\r\n collapseAllHIdden(child, collapseAttr, command, childrenAttr);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Funktion gibt node aus der liste zurück, welches das Value auf dem gewünschten Attribut hat\r\n * Wenn node nicht gefunden wird, wird null zurück gegeben\r\n * @param data Liste der nodes\r\n * @param searchValue Das gesuchte value\r\n * @param attr Der namen des Attributs auf dem das value gesucht wird\r\n */\r\n private findNode(data, searchValue, attr): any {\r\n let result: any = null;\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i][attr] == searchValue) result = data[i];\r\n else {\r\n if (data[i][this.childrenAttr].length) {\r\n let recursiveResult = this.findNode(\r\n data[i][this.childrenAttr],\r\n searchValue,\r\n attr\r\n );\r\n if (recursiveResult) result = recursiveResult;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Die Methode editiert (recursive) alle eingegebene Nodes abhängig von gegebenen Attibute und Value Kriterien.\r\n */\r\n private _recursiveEdit(list, childrenAttr, attr, value) {\r\n if (Array.isArray(list)) {\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n list[i][attr] = value;\r\n if (list[i][childrenAttr].length) {\r\n this._recursiveEdit(list[i][childrenAttr], childrenAttr, attr, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode erstellt eine standarte Sicht-Liste von Nodes\r\n */\r\n private _getPreparedData(list) {\r\n const tree = [],\r\n lookup = {};\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n lookup[list[i][this.idAttr]] = list[i];\r\n list[i][this.childrenAttr] = [];\r\n list[i][this.collapseAttr] = true;\r\n list[i][this.selectAttr] = false;\r\n list[i][this.inDeterminateAttr] = false;\r\n }\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n if (list[i][this.parentAttr]) {\r\n lookup[list[i][this.parentAttr]][this.childrenAttr].push(list[i]);\r\n } else {\r\n tree.push(list[i]);\r\n }\r\n }\r\n\r\n return tree;\r\n }\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { SacTreeViewCommon } from './treeview';\r\n\r\n/**\r\n * Komponente für SacTreeViewChildCommon. Extends SacTreeViewCommon \r\n */\r\n@Directive()\r\nexport class SacTreeViewChildCommon extends SacTreeViewCommon implements OnInit {\r\n /**\r\n * A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive. \r\n * Define an ngOnInit() method to handle any additional initialization tasks.\r\n */\r\n ngOnInit(){ \r\n this.collapseAllNode(this.collapseall)\r\n }\r\n}\r\n\r\n\r\n","/**\r\n * Enum für Tooltip Positionen\r\n */\r\nexport enum TooltipPosition {\r\n none = 0,\r\n // tslint:disable-next-line:no-bitwise\r\n top = 1 << 0,\r\n // tslint:disable-next-line:no-bitwise\r\n right = 1 << 1,\r\n // tslint:disable-next-line:no-bitwise\r\n bottom = 1 << 2,\r\n // tslint:disable-next-line:no-bitwise\r\n left = 1 << 3\r\n}\r\n","import { ChangeDetectorRef, Directive, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\nimport { TooltipPosition } from '../../utilities/enums';\r\n\r\n/**\r\n * Tooltip Component\r\n *\r\n * Benötigt im HTML Markup folgende Identifier\r\n * - container: Container für ng-content in welchem das Element angezeigt wird, wo der Tooltip angehängt wird.\r\n * - tooltip: Container für Tooltip\r\n *\r\n * Tooltip muss in 2 Schritten angezeigt werden. In einem ersten Schritt wird der Tooltip Markup erzeugt mit (ngIf). In einem 2. Schritt\r\n * kann der Tooltip dann über die CSS visibility angezeigt werden. Wird dies nicht so gemacht, kann es bei gewissen Browsern zu einem Flacker Effekt führen.\r\n *\r\n */\r\n@Directive()\r\nexport class SacTooltipCommon implements OnInit, OnDestroy {\r\n /**\r\n * Property für Enum in Angular HTML Template\r\n */\r\n TooltipPosition = TooltipPosition;\r\n\r\n /**\r\n * Definiert ob der Tooltip sichtbar ist\r\n */\r\n private _isTooltipVisible: boolean = false;\r\n\r\n /**\r\n * Position des Tooltips oben\r\n */\r\n TopPos: number = 0;\r\n\r\n /**\r\n * Position des Tooltips links\r\n */\r\n LeftPos: number = 0;\r\n\r\n /**\r\n * Position des Tooltips. Werte: left|top|right|bottom|auto\r\n *\r\n * Wert 'auto' kann mit einem anderen Wert kombiniert werden.\r\n */\r\n @Input()\r\n position: string = 'right|auto';\r\n\r\n /**\r\n * Text für ToolTip\r\n */\r\n @Input()\r\n tooltiptext: string;\r\n\r\n /**\r\n * Inline Mode für Tooltip\r\n */\r\n private _inlinemode: boolean;\r\n\r\n /**\r\n * Definiert ob der Tooltip sichtbar sein soll\r\n */\r\n IsTooltipContentVisible: boolean = false;\r\n\r\n /**\r\n * Setter für Inline Mode für Tooltip\r\n */\r\n @Input()\r\n set inlinemode(value: boolean) {\r\n this._inlinemode = convertToBoolean(value);\r\n }\r\n /**\r\n * Getter für Inline Mode für Tooltip\r\n */\r\n get inlinemode(): boolean {\r\n return this._inlinemode;\r\n }\r\n\r\n /**\r\n * Name des Containers für Content (z.B. Icon) auf welchem der Tooltip angezeigt wird.\r\n */\r\n @ViewChild('container', { static: true }) content: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Name des Containers für den Tooltip\r\n */\r\n private tooltipcontainer: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Setter für Name des Containers für den Tooltip. Wird benötigt, da Tooltip via NGIF ausgeblendet werden kann.\r\n */\r\n @ViewChild('tooltip', { static: true })\r\n set tooltip(content: ElementRef) {\r\n if (content !== undefined) {\r\n document.body.appendChild(content.nativeElement);\r\n }\r\n\r\n this.tooltipcontainer = content;\r\n this.onContentChange();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Konstruktor\r\n * @param ref Element Referenz\r\n */\r\n constructor(private cdRef: ChangeDetectorRef, private ref: ElementRef) { }\r\n\r\n /**\r\n * Ervent wenn das Control initialisert wird\r\n */\r\n ngOnInit() {\r\n // Register Event Listener\r\n window.addEventListener('scroll', this.onContentChange, true);\r\n window.addEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.appendChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Event wenn das Control zerstört wird.\r\n */\r\n ngOnDestroy() {\r\n // Unregister Event Listener\r\n window.removeEventListener('scroll', this.onContentChange, true);\r\n window.removeEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.removeChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Berechnet die Position des Tooltips von Oben\r\n */\r\n private getTopPosition(): number {\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: ClientRect = childItem.getBoundingClientRect();\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.TopPos = contentPosition.top - this.getToolTipHeight();\r\n return contentPosition.top - this.getToolTipHeight();\r\n case TooltipPosition.right:\r\n this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n case TooltipPosition.bottom:\r\n this.TopPos = contentPosition.top + contentPosition.height;\r\n return contentPosition.top + contentPosition.height;\r\n case TooltipPosition.left:\r\n this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n }\r\n\r\n return childItem.clientTop + childItem.offsetTop - ((this.getToolTipHeight() / 2) - (childItem.clientHeight / 2));\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetTop;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Berechnet die Position des Tooltips von Links\r\n */\r\n private getLeftPosition(): number {\r\n\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: ClientRect = childItem.getBoundingClientRect();\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.LeftPos = contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);\r\n return contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);\r\n case TooltipPosition.right:\r\n this.LeftPos = contentPosition.left + contentPosition.width;\r\n return contentPosition.left + contentPosition.width;\r\n case TooltipPosition.bottom:\r\n this.LeftPos = contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);\r\n return contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);\r\n case TooltipPosition.left:\r\n this.LeftPos = contentPosition.left - this.getToolTipWidth();\r\n return contentPosition.left - this.getToolTipWidth();\r\n }\r\n\r\n return this.content.nativeElement.offsetTop;\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetLeft;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Berechnet die Höhe des Tooltips\r\n */\r\n private getToolTipHeight(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.clientHeight;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Berechnet die Breite die Tooltips\r\n */\r\n private getToolTipWidth(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.clientWidth;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Definiert ob der Tooltip im Markup vorhanden ist\r\n */\r\n IsTooltipVisible(): boolean {\r\n return this._isTooltipVisible;\r\n }\r\n\r\n /**\r\n * Tooltip anzeigen\r\n */\r\n ShowTooltip(): void {\r\n this._isTooltipVisible = true;\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n this.IsTooltipContentVisible = true;\r\n });\r\n }\r\n\r\n /**\r\n * Tooltip ausblenden\r\n */\r\n HideTooltip(): void {\r\n this._isTooltipVisible = false;\r\n this.IsTooltipContentVisible = false;\r\n }\r\n\r\n /**\r\n * Methode wenn Content geändert hat und Proporties im UI neu gesetzt werden müssen.\r\n */\r\n private onContentChange = (): void => {\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n });\r\n }\r\n\r\n /**\r\n * Gibt die Position des Tooltips zurück\r\n */\r\n public GetTooltipPosition(): TooltipPosition {\r\n const validPositions: TooltipPosition = this.ValidatePositions();\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.right) && (validPositions & TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.top) && (validPositions & TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.left) && (validPositions & TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.bottom) && (validPositions & TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Get Auto Position or Default\r\n if (this.IsAutoPosition()) {\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.right) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.top) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.left) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.bottom) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n return TooltipPosition.right;\r\n } else {\r\n return this.GetPosition();\r\n }\r\n }\r\n\r\n /**\r\n * Definiert ob AutoPosition aktiv ist\r\n */\r\n private IsAutoPosition(): boolean {\r\n const positions = this.position.split('|');\r\n return positions.indexOf('auto') >= 0;\r\n }\r\n\r\n /**\r\n * Gibt die definierte Position für den Tooltip zurück\r\n */\r\n private GetPosition(): TooltipPosition {\r\n const positions = this.position.split('|');\r\n\r\n if (this.HasPosition(TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Default Position if empty\r\n return TooltipPosition.right;\r\n }\r\n\r\n /**\r\n * Gibt zurück, ob die Position konfiguriert wurde\r\n *\r\n * @param position Position auf welche geprüft wird\r\n */\r\n private HasPosition(position: TooltipPosition): boolean {\r\n const positions = this.position.split('|');\r\n\r\n if (position === TooltipPosition.right && positions.indexOf('right') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.top && positions.indexOf('top') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.left && positions.indexOf('left') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.bottom && positions.indexOf('bottom') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Prüft ob die Position gültig ist, resp. der Tooltip auf die Position platz hat\r\n */\r\n private ValidatePositions(): TooltipPosition {\r\n // Check if Container is false\r\n if (this.tooltipcontainer === undefined) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n let allowedPositions: TooltipPosition = TooltipPosition.none;\r\n const basePosition: ClientRect = this.content.nativeElement.firstElementChild.getBoundingClientRect();\r\n const tooltipRect: ClientRect = this.tooltipcontainer.nativeElement.getBoundingClientRect();\r\n\r\n const leftPosOk: boolean = basePosition.left - tooltipRect.width > 0;\r\n const rightPosOk: boolean = basePosition.right + tooltipRect.width < window.innerWidth;\r\n const topPosOk: boolean = basePosition.top - tooltipRect.height > 0;\r\n const bottomPosOk: boolean = basePosition.bottom + tooltipRect.height < window.innerHeight;\r\n\r\n const leftHalfPosOk: boolean = basePosition.left - (tooltipRect.width / 2) > 0;\r\n const rightHalfPosOk: boolean = basePosition.right + (tooltipRect.width / 2) < window.innerWidth;\r\n const topHalfPosOk: boolean = basePosition.top - (tooltipRect.height / 2) > 0;\r\n const bottomHalfPosOk: boolean = basePosition.bottom + (tooltipRect.height / 2) < window.innerHeight;\r\n\r\n if (leftPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.left;\r\n }\r\n\r\n if (rightPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.right;\r\n }\r\n\r\n if (topPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.top;\r\n }\r\n\r\n if (bottomPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.bottom;\r\n }\r\n\r\n return allowedPositions;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport {\r\n IdService,\r\n UPLOADX_AJAX,\r\n UPLOADX_FACTORY_OPTIONS,\r\n UPLOADX_OPTIONS,\r\n UploadState,\r\n UploadxOptions,\r\n UploadxService,\r\n} from 'ngx-uploadx';\r\nimport { Observable, of } from 'rxjs';\r\nimport { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ISacIconService } from '../interfaces/ISacIconService';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\r\nimport {\r\n SACICON_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultIconService,\r\n SacDefaultValidationKeyService,\r\n} from '../services';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../services/sac-localisation.service';\r\nimport { Validation } from '../validation';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Klasse für Uploader Control\r\n */\r\n@Directive()\r\nexport abstract class SacUploadBase<VALUE>\r\n extends SacBaseModelControl<VALUE>\r\n implements OnInit, OnDestroy\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * File Input Control\r\n */\r\n @ViewChild('files', { static: true })\r\n private uploadInput: ElementRef;\r\n\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n private _allowedtypes: string = '*';\r\n /**\r\n * Files automatisch hochladen\r\n */\r\n private _autoupload: boolean = false;\r\n /**\r\n * Pausieren von Uploads erlauben\r\n */\r\n private _enablepause: boolean = true;\r\n /**\r\n * API Endpoint\r\n */\r\n private _endpoint: string = null;\r\n /**\r\n * Upload Settings\r\n */\r\n private options: UploadxOptions = {};\r\n\r\n /**\r\n * icon service to receive icons for uploader\r\n */\r\n protected iconService: ISacIconService;\r\n /**\r\n * Upload Service\r\n */\r\n protected uploadService: UploadxService;\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n /**\r\n * Max. Dateigrösse für Files die hochgeladen werden können. 0 deaktiviert den Filter\r\n */\r\n @Input() public maxfilesize: number = 0;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n /**\r\n * Event wenn ein Error in der Komponente ausgelöst wird.\r\n */\r\n @Output() public onfileerror = new EventEmitter<string>();\r\n\r\n /**\r\n * Handling von neuen Files im Input Control\r\n */\r\n public fileListener = () => {\r\n if (this.uploadInput.nativeElement.files) {\r\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\r\n }\r\n };\r\n /**\r\n * Listener für Files\r\n */\r\n public listenerFn: () => void;\r\n /**\r\n * Service für Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n /**\r\n * Array von Uploads\r\n */\r\n public uploads: SacUploadFile[];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer angular rendering engine\r\n * @param ngZone ngzone for handling external scripts\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private ngZone: NgZone\r\n ) {\r\n super(formlayout, injector);\r\n\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n\r\n this.uploads = [];\r\n\r\n this.options.allowedTypes = '*';\r\n this.options.concurrency = 1;\r\n this.options.token = 'sometoken';\r\n this.options.autoUpload = this._autoupload;\r\n this.options.withCredentials = true;\r\n this.options.chunkSize = 1024 * 16 * 8;\r\n this.options.headers = (f: File) => ({\r\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\r\n });\r\n\r\n // Init new Service Instance\r\n this.uploadService = new UploadxService();\r\n this.uploadService.init(this.options);\r\n\r\n // Subscripe Event for State changes\r\n this.uploadService.events.subscribe((ufile: UploadState) =>\r\n this.onUpload(ufile)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Erlaubte Dateitypen für den Upload. Format: \".xxx,.yyy,.zzz\"\r\n */\r\n @Input()\r\n public set allowedtypes(types: string) {\r\n this._allowedtypes = types;\r\n this.setAllowedTypes(types);\r\n }\r\n\r\n /**\r\n * Files nach der Auswahl automatisch hochladen\r\n */\r\n @Input()\r\n public set autoupload(v: boolean) {\r\n this._autoupload = v;\r\n this.options.autoUpload = v;\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Uploads können unterbrochen werden\r\n */\r\n @Input()\r\n public set enablepause(v: boolean) {\r\n this._enablepause = v;\r\n }\r\n\r\n /**\r\n * Definiert den Registration Endpoint für Uploads.\r\n */\r\n @Input()\r\n public set endpoint(v: string) {\r\n this._endpoint = v;\r\n this.setEndpoint(v);\r\n }\r\n\r\n /**\r\n * Icon for browse button\r\n */\r\n public get IconBrowse(): string {\r\n return this.iconService.UploadComponentBrowseIcon;\r\n }\r\n\r\n /**\r\n * icon for continous buttons\r\n */\r\n public get IconContinue(): string {\r\n return this.iconService.UploadComponentContinueIcon;\r\n }\r\n\r\n /**\r\n * icon for delete buttons\r\n */\r\n public get IconDelete(): string {\r\n return this.iconService.UploadComponentDeleteIcon;\r\n }\r\n\r\n /**\r\n * icon for pause buttons\r\n */\r\n public get IconPause(): string {\r\n return this.iconService.UploadComponentPauseIcon;\r\n }\r\n\r\n /**\r\n * icon for upload button\r\n */\r\n public get IconUpload(): string {\r\n return this.iconService.UploadComponentUploadIcon;\r\n }\r\n\r\n public get allowedtypes(): string {\r\n return this._allowedtypes;\r\n }\r\n\r\n public get autoupload(): boolean {\r\n return this._autoupload;\r\n }\r\n\r\n public get enablepause(): boolean {\r\n return this._enablepause;\r\n }\r\n\r\n public get endpoint(): string {\r\n return this._endpoint;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Name der Datei die Hochgeladen wird\r\n * @returns Observable des Dateinamens.\r\n */\r\n public Filename(): Observable<string> {\r\n if (this.uploads.length > 0) {\r\n return of(this.uploads[0].name);\r\n } else {\r\n return this.lngResourceService.GetString(\r\n this.validationKeyService.UploadNoFilesSelected\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Gibt an ob Queue Elemente beinhaltet\r\n * @returns Elemente in der Queue\r\n */\r\n public HasQueueItem(): boolean {\r\n return this.uploads.length > 0;\r\n }\r\n\r\n /**\r\n * Gibt an ob ein Upload abgeschlossen ist\r\n * @returns Upload erfolgreich\r\n */\r\n public HasSuccessUpload(): boolean {\r\n if (this.uploads.length > 0) {\r\n return (\r\n this.uploads.filter((itm) => itm.status !== 'complete').length === 0\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Prüft ob ein Upload pausiert\r\n * @returns Pausierter Upload ist vorhanden\r\n */\r\n public IsPaused(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\r\n }\r\n\r\n /**\r\n * Prüft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.\r\n * @returns Elemente für Upload vorhanden\r\n */\r\n public IsStateToUpload(): boolean {\r\n return (\r\n this.uploads.filter(\r\n (itm) => itm.status === 'added' || itm.status === 'paused'\r\n ).length > 0\r\n );\r\n }\r\n\r\n /**\r\n * Prüft ob ein Upload eines Files am laufen ist\r\n * @returns Upload ist am laufen\r\n */\r\n public IsUploading(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\r\n }\r\n\r\n /**\r\n * Gibt den Uploadfortschritt zurück\r\n * @returns Upload Fortschritt. Wert von 0-100\r\n */\r\n public Progress(): number {\r\n if (this.uploads.length > 0) {\r\n return this.uploads[0].progress;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Cancel single upload\r\n * @param uploadId ID of File to cancel\r\n */\r\n public cancel(uploadId) {\r\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\r\n }\r\n\r\n /**\r\n * Cancel all Uploaded files\r\n */\r\n public cancelAll() {\r\n if (this.HasQueueItem() === true) {\r\n this.uploadService.control({ action: 'cancel' });\r\n }\r\n }\r\n\r\n /**\r\n * Destroy des Controls\r\n */\r\n public ngOnDestroy() {\r\n if (this.listenerFn) {\r\n this.listenerFn();\r\n }\r\n }\r\n\r\n /**\r\n * Initialisiert das Control\r\n */\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n // Init Event Listener for Input File Control and Handling Files\r\n this.listenerFn = this.renderer.listen(\r\n this.uploadInput.nativeElement,\r\n 'change',\r\n this.fileListener\r\n );\r\n\r\n this.setAllowedTypes(this._allowedtypes);\r\n this.setEndpoint(this._endpoint);\r\n\r\n if (this._endpoint === null) {\r\n throw new Error('endpoint is not defined!');\r\n }\r\n\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Upload Event\r\n *\r\n * @param uploadsOutStream Upload Item\r\n */\r\n public onUpload(ufile: UploadState) {\r\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\r\n\r\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\r\n if (\r\n this.isExtensionValid(ufile.name) &&\r\n this.isFileSizeValid(ufile.size) &&\r\n this.CustomAddValidation(ufile)\r\n ) {\r\n this.uploads.push(new SacUploadFile(ufile));\r\n } else {\r\n this.cancel(ufile.uploadId);\r\n\r\n if (!this.isExtensionValid(ufile.name)) {\r\n this.onfileerror.emit('INVALID_EXTENSION');\r\n } else if (!this.isFileSizeValid(ufile.size)) {\r\n this.onfileerror.emit('INVALID_FILESIZE');\r\n }\r\n }\r\n } else if (ufile.status === 'cancelled') {\r\n if (index >= 0) {\r\n this.uploads.splice(index, 1);\r\n }\r\n\r\n this.SetUploadValue(null);\r\n } else if (ufile.status === 'complete') {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n this.SetUploadValue(ufile);\r\n } else {\r\n if (index >= 0) {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n }\r\n }\r\n\r\n this.UpdateFileCount();\r\n }\r\n\r\n /**\r\n * Cancel Single File\r\n * @param uploadId ID of File to Cancel\r\n */\r\n public pause(uploadId) {\r\n this.uploadService.control({ action: 'pause', uploadId });\r\n }\r\n\r\n /**\r\n * Pause all Uploads\r\n */\r\n public pauseAll() {\r\n if (this.IsUploading() === true) {\r\n this.uploadService.control({ action: 'pause' });\r\n }\r\n }\r\n\r\n /**\r\n * Upload Single File\r\n *\r\n * @param uploadId ID of File to Upload\r\n */\r\n public upload(uploadId) {\r\n this.uploadService.control({ action: 'upload', uploadId });\r\n }\r\n\r\n /**\r\n * Upload all queued Files\r\n */\r\n public uploadAll() {\r\n if (this.IsStateToUpload() === true) {\r\n this.uploadService.control({ action: 'upload' });\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Upload Control\r\n * @param c Control das validiert werden soll\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Methode kann für Controls verwendet werden, zusätzliche Validierungen bei hinzufügen der Files zu machen\r\n *\r\n * @param file File das hinzugefügt wurde.\r\n * @returns Valdierung ist erfolgreich\r\n */\r\n public abstract CustomAddValidation(file: UploadState): boolean;\r\n /**\r\n * Methode welche die Upload ID's in das Model setzt oder löscht\r\n *\r\n * @param file Type von File ID's\r\n */\r\n public abstract SetUploadValue(file: UploadState): void;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateFileCount(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IUploadControl).uploadedfilecount =\r\n this.UploadedFileCount();\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of uploaded files\r\n */\r\n private UploadedFileCount(): number {\r\n return this.uploads.filter((itm) => itm.status === 'complete').length;\r\n }\r\n\r\n /**\r\n * Prüft ob die Dateierweiterung gültig ist\r\n *\r\n * @param filename Dateiname\r\n */\r\n private isExtensionValid(filename: string): boolean {\r\n if (this._allowedtypes === '*') {\r\n return true;\r\n }\r\n\r\n let isValid: boolean = false;\r\n const extensions: string[] = this._allowedtypes.split(',');\r\n\r\n extensions.forEach((itm) => {\r\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n\r\n /**\r\n * Prüft ob das File nicht zu gross ist.\r\n *\r\n * @param filesize Max File Size in Bytes\r\n */\r\n private isFileSizeValid(filesize: number): boolean {\r\n if (this.maxfilesize === 0) {\r\n return true;\r\n }\r\n\r\n return this.maxfilesize >= filesize;\r\n }\r\n\r\n /**\r\n * Setzt die erlaubten Datentypen für den Upload\r\n *\r\n * @param types Erlaubte File Extensions\r\n */\r\n private setAllowedTypes(types: string) {\r\n // Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.\r\n if (this.uploadInput && this.uploadInput.nativeElement) {\r\n this.renderer.setAttribute(\r\n this.uploadInput.nativeElement,\r\n 'accept',\r\n types\r\n );\r\n }\r\n\r\n this.options.allowedTypes = types;\r\n }\r\n\r\n /**\r\n * Setzt den Upload Endpoit\r\n * @param url Register URI\r\n */\r\n private setEndpoint(url: string) {\r\n this.options.endpoint = url;\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * Klasse für den Upload einer Datei in der Upload Component\r\n */\r\nexport class SacUploadFile {\r\n // #region Properties\r\n\r\n /**\r\n * Document ID\r\n */\r\n public documentid: string;\r\n /**\r\n * Dateiname\r\n */\r\n public name: string;\r\n /**\r\n * Upload Fortschritt\r\n */\r\n public progress: number;\r\n /**\r\n * Upload Status\r\n */\r\n public status: string;\r\n /**\r\n * Upload ID\r\n */\r\n public uploadId: string;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ufile Upload Status\r\n */\r\n constructor(ufile: UploadState) {\r\n this.uploadId = ufile.uploadId;\r\n this.name = ufile.name;\r\n this.progress = ufile.progress;\r\n this.status = ufile.status;\r\n this.documentid = null;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n\r\n// #endregion Classes\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Upload Komponente für ein einzelnes File\r\n */\r\n@Directive()\r\nexport class SacDropzoneMultipleCommon\r\n extends SacUploadBase<string[]>\r\n implements OnInit\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * Max. Anzahl Files die hochgeladen werden können\r\n */\r\n @Input()\r\n public maxfiles: number = 0;\r\n /**\r\n * Min. Anzahl Files die hochgeladen werden müssen\r\n */\r\n @Input()\r\n public minfiles: number = 0;\r\n /**\r\n * Höhe des Upload Controls\r\n */\r\n @Input()\r\n public uploadheight: string = null;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessageminfiles: string =\r\n this.validationKeyService.ValidationErrorFilesMin;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryminfiles: string =\r\n this.validationKeyService.ValidationErrorSummaryFilesMin;\r\n\r\n /**\r\n * Property wenn Drag Event aktiv ist (Maus über Zone)\r\n */\r\n public active = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft ob die max. Files in der Queue nicht überschritten werden\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n public CustomAddValidation(file: UploadState): boolean {\r\n if (this.maxfiles > 0 && this.uploads.length >= this.maxfiles) {\r\n this.onfileerror.emit('INVALID_MAXFILES');\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Setzt die File ID's der hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files welches hochgeladen wurde.\r\n */\r\n public SetUploadValue(file: UploadState) {\r\n let documentid: string = null;\r\n if (file === null) {\r\n documentid = null;\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n documentid = file.response.documentid;\r\n } else {\r\n documentid = file.uploadId;\r\n }\r\n\r\n // Document ID aktualisieren, damit Wert von Server in Model gesetzt werden kann.\r\n this.uploads\r\n .filter((itm) => itm !== null && itm.uploadId === file.uploadId)\r\n .forEach((itm) => {\r\n itm.documentid = documentid;\r\n });\r\n }\r\n\r\n // List of Files\r\n const fileIds: string[] = [];\r\n\r\n // Add all Items with Uploaded State to Model\r\n this.uploads\r\n .filter((itm) => itm.status === 'complete')\r\n .forEach((itm) => {\r\n if (itm.documentid !== null && itm.documentid !== undefined) {\r\n fileIds.push(itm.documentid);\r\n }\r\n });\r\n\r\n if (fileIds.length > 0) {\r\n super.setValue(fileIds);\r\n } else {\r\n super.setValue(null);\r\n }\r\n }\r\n\r\n /**\r\n * Methode für Drag and Drop von Files\r\n * @param event Drag Event\r\n */\r\n public dropHandler(event: DragEvent): void {\r\n if (\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.files.item(0)\r\n ) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = false;\r\n this.uploadService.handleFiles(event.dataTransfer.files);\r\n }\r\n }\r\n\r\n /**\r\n * Ervent wenn das Control initialisert wird\r\n */\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.autoupload = true;\r\n }\r\n\r\n /**\r\n * Methode wenn Drag die Zone verlässt\r\n * @param event DragLeave Event\r\n */\r\n public onDragLeave(event: DragEvent): void {\r\n this.active = false;\r\n }\r\n\r\n /**\r\n * Methode wenn Drag in die Zone eintritt\r\n * @param event DragEnter Event\r\n */\r\n public onDragOver(event: DragEvent): void {\r\n if (\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.types.every((itm) => itm === 'Files') &&\r\n event.dataTransfer.types.length > 0\r\n ) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = true;\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Control\r\n *\r\n * @param c Control\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.minFiles(\r\n this.minfiles,\r\n this.validationmessageminfiles,\r\n this.validationmessagesummaryminfiles\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\n\r\n/**\r\n * Upload Komponente für ein einzelnes File\r\n */\r\n@Directive()\r\nexport class SacDropzoneSingleCommon\r\n extends SacUploadBase<string>\r\n implements OnInit\r\n{\r\n /**\r\n * Höhe der Dropzone. Wert wird mit Einheit angegeben.\r\n */\r\n @Input()\r\n public uploadheight: string = null;\r\n\r\n /**\r\n * Property wenn Drag Event aktiv ist (Maus über Zone)\r\n */\r\n public active = false;\r\n\r\n /**\r\n * Ervent wenn das Control initialisert wird\r\n */\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.autoupload = true;\r\n }\r\n\r\n /**\r\n * Methode für Drag and Drop von Files\r\n * @param event Drag Event\r\n */\r\n dropHandler(event: DragEvent): void {\r\n if (\r\n !this.HasQueueItem() &&\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.files.item(0)\r\n ) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = false;\r\n\r\n if (event.dataTransfer.files.length === 1) {\r\n this.uploadService.handleFiles(event.dataTransfer.files);\r\n } else {\r\n this.onfileerror.emit('INVALID_DRAGDROP_MAXFILES');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn Drag in die Zone eintritt\r\n * @param event DragEnter Event\r\n */\r\n onDragOver(event: DragEvent): void {\r\n if (\r\n !this.HasQueueItem() &&\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.types.every((itm) => itm === 'Files') &&\r\n event.dataTransfer.types.length > 0\r\n ) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = true;\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn Drag die Zone verlässt\r\n * @param event DragLeave Event\r\n */\r\n onDragLeave(event: DragEvent): void {\r\n this.active = false;\r\n }\r\n\r\n /**\r\n * Macht keine Validierung in diesem Control\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n CustomAddValidation(file: UploadState): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Setzt die File ID des hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files\r\n */\r\n SetUploadValue(file: UploadState) {\r\n if (file === null) {\r\n super.setValue(null);\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n super.setValue(file.response.documentid);\r\n } else {\r\n super.setValue(file.uploadId);\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Upload Componente für mehrere Files\r\n */\r\n@Directive()\r\nexport class SacUploadMultipleCommon extends SacUploadBase<string[]> {\r\n // #region Properties\r\n\r\n /**\r\n * Label für Browse Button\r\n */\r\n @Input()\r\n public buttonbrowse: string = 'Browse';\r\n /**\r\n * Label für Upload Button\r\n */\r\n @Input()\r\n public buttonupload: string = 'Upload';\r\n /**\r\n * Max. Files die hochgeladen werden können. 0 deaktiviert das Limit\r\n */\r\n @Input()\r\n public maxfiles: number = 0;\r\n /**\r\n * Min. Files die hochgeladen werden müssen. 0 deaktiviert das Limit\r\n */\r\n @Input()\r\n public minfiles: number = 0;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessageminfiles: string =\r\n this.validationKeyService.ValidationErrorFilesMin;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryminfiles: string =\r\n this.validationKeyService.ValidationErrorSummaryFilesMin;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft ob die max. Files in der Queue nicht überschritten werden\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n public CustomAddValidation(file: UploadState): boolean {\r\n if (this.maxfiles > 0 && this.uploads.length >= this.maxfiles) {\r\n this.onfileerror.emit('INVALID_MAXFILES');\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Setzt die File ID's der hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files welches hochgeladen wurde.\r\n */\r\n public SetUploadValue(file: UploadState) {\r\n let documentid: string = null;\r\n if (file === null) {\r\n documentid = null;\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n documentid = file.response.documentid;\r\n } else {\r\n documentid = file.uploadId;\r\n }\r\n\r\n // Document ID aktualisieren, damit Wert von Server in Model gesetzt werden kann.\r\n this.uploads\r\n .filter((itm) => itm !== null && itm.uploadId === file.uploadId)\r\n .forEach((itm) => {\r\n itm.documentid = documentid;\r\n });\r\n }\r\n\r\n // List of Files\r\n const fileIds: string[] = [];\r\n\r\n // Add all Items with Uploaded State to Model\r\n this.uploads\r\n .filter((itm) => itm.status === 'complete')\r\n .forEach((itm) => {\r\n if (itm.documentid !== null && itm.documentid !== undefined) {\r\n fileIds.push(itm.documentid);\r\n }\r\n });\r\n\r\n if (fileIds.length > 0) {\r\n super.setValue(fileIds);\r\n } else {\r\n super.setValue(null);\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Control\r\n *\r\n * @param c Control\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.minFiles(\r\n this.minfiles,\r\n this.validationmessageminfiles,\r\n this.validationmessagesummaryminfiles\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\n\r\n/**\r\n * Upload Komponente für ein einzelnes File\r\n */\r\n@Directive()\r\nexport class SacUploadSingleCommon extends SacUploadBase<string> {\r\n /**\r\n * Label für Browse Button\r\n */\r\n @Input()\r\n buttonbrowse: string = 'Browse';\r\n\r\n /**\r\n * Label für Upload Button\r\n */\r\n @Input()\r\n buttonupload: string = 'Upload';\r\n\r\n /**\r\n * Macht keine Validierung in diesem Control\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n CustomAddValidation(file: UploadState): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Setzt die File ID des hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files\r\n */\r\n SetUploadValue(file: UploadState) {\r\n if (file === null) {\r\n super.setValue(null);\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n super.setValue(file.response.documentid);\r\n } else {\r\n super.setValue(file.uploadId);\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, Host, Injector, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { IconType } from '../../enums/IconType';\r\nimport { ISacLanguageService } from '../../interfaces/ISacLanguageService';\r\nimport { LanguageModel } from '../../models/languagemodel';\r\nimport {\r\n SACLANGUAGE_SERVICE,\r\n SacDefaultLanguageService,\r\n} from '../../services/sac-language.service';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Base Klasse für Multi Language Input Control\r\n */\r\n@Directive()\r\nexport class SacMultilanguageInputCommon extends SacInputBase<any> {\r\n // #region Properties\r\n\r\n /**\r\n * Sprache für das Control\r\n */\r\n private languages: LanguageModel[] = [];\r\n /**\r\n * Selektierte Sprace des Controls\r\n */\r\n private selectedLanguage: LanguageModel = null;\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngLanguageService: ISacLanguageService;\r\n\r\n /**\r\n * Fix breite für das Control definieren.\r\n */\r\n @Input() public controlwidth: string = null;\r\n /**\r\n * Max länge an Zeichen für Eingabefeld\r\n */\r\n @Input() public maxlength: number = null;\r\n /**\r\n * Aktiviert den Validator, das min. eine Sprache erfasst sein muss\r\n */\r\n @Input() public requiredany: boolean = false;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorMultilanguageRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern bei Control\r\n */\r\n @Input() public validationmessagerequiredany: string =\r\n this.validationKeyService.ValidationErrorMultilanguageRequiredAny;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequiredany: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(@Host() formlayout: SacFormLayoutCommon, injector: Injector) {\r\n super(formlayout, injector);\r\n\r\n this.lngLanguageService = injector.get(\r\n SACLANGUAGE_SERVICE,\r\n new SacDefaultLanguageService()\r\n );\r\n\r\n this.lngLanguageService\r\n .GetLanguages()\r\n .subscribe((result: LanguageModel[]) => {\r\n this.languages = result;\r\n\r\n if (this.languages.length > 0) {\r\n this.selectedLanguage = this.languages[0];\r\n // Control Validierung ausführen, da Wert potentiell bereits gesetzt sein kann\r\n this.UpdateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Gibt den Wert der aktuell ausgewählten Sprache zurück\r\n */\r\n public get LanguageValue(): string {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return '';\r\n }\r\n\r\n if (this.value[currentIsoCode] === undefined) {\r\n return '';\r\n } else {\r\n return this.value[currentIsoCode];\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Collection der Sprachen\r\n */\r\n public get Languages(): LanguageModel[] {\r\n return this.languages;\r\n }\r\n\r\n /**\r\n * Gibt das Icon der selektierten Sprache zurück\r\n */\r\n public get SelectedIcon(): string {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.Icon;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Gibt den Type des Icons für die selektierte Sprache zurück\r\n */\r\n public get SelectedIconType(): IconType {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.IconType;\r\n } else {\r\n return IconType.Image;\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft ob in irgendeiner Sprache kein Wert definiert wurde\r\n * @returns Leerwert ist vorhanden\r\n */\r\n public IsAnyEmpty(): boolean {\r\n let found = false;\r\n\r\n if (this.value) {\r\n this.languages.forEach((itm: LanguageModel) => {\r\n if (itm === null) {\r\n found = true;\r\n return;\r\n }\r\n\r\n if (\r\n this.value[itm.IsoCode] === undefined ||\r\n this.value[itm.IsoCode] === '' ||\r\n this.value[itm.IsoCode] === null\r\n ) {\r\n found = true;\r\n return;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n\r\n /**\r\n * Prüft ob in einer bestimmten Sprache ein Wert vorhanden ist.\r\n * @param sprache Sprache in welcher der Wert geprüft werden soll\r\n * @returns Wert ist vorhanden\r\n */\r\n public IsEmpty(sprache: LanguageModel): boolean {\r\n if (this.value) {\r\n // Fallback falls keine Selektierte Sprache\r\n if (sprache === null) {\r\n return true;\r\n }\r\n\r\n return (\r\n this.value[sprache.IsoCode] === undefined ||\r\n this.value[sprache.IsoCode] === '' ||\r\n this.value[sprache.IsoCode] === null\r\n );\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Selektiert die Sprache\r\n * @param language Sprache die selektiert werden soll\r\n */\r\n public SelectLanguage(language: LanguageModel) {\r\n this.selectedLanguage = language;\r\n }\r\n\r\n /**\r\n * Setzt den Wert für die aktuell gewählte Sprache\r\n * @param value Wert welcher gesetzt werden soll\r\n */\r\n public SetLanguageValue(value: string): void {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return;\r\n }\r\n\r\n this.value[currentIsoCode] = value;\r\n this.propagateChange(this._value);\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriterien entspricht\r\n * @param c Control das validiert wird\r\n */\r\n public validateData(c: AbstractControl): { [key: string]: any } {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.isrequired !== undefined &&\r\n this.isrequired === true\r\n ) {\r\n error = Validation.multilanguageRequired(\r\n this.languages,\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.requiredany !== undefined &&\r\n this.requiredany === true\r\n ) {\r\n error = Validation.multilanguageRequiredAny(\r\n this.languages,\r\n this.validationmessagerequiredany,\r\n this.validationmessagesummaryrequiredany\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Host, Injector, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { IconType } from '../../enums/IconType';\r\nimport { ISacLanguageService } from '../../interfaces/ISacLanguageService';\r\nimport { LanguageModel } from '../../models/languagemodel';\r\nimport {\r\n SACLANGUAGE_SERVICE,\r\n SacDefaultLanguageService,\r\n} from '../../services/sac-language.service';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Base Klasse für Multi Language Textarea Control\r\n */\r\n@Directive()\r\nexport class SacMultilanguageInputAreaCommon extends SacInputBase<any> {\r\n // #region Properties\r\n\r\n /**\r\n * Sprache für das Control\r\n */\r\n private languages: LanguageModel[] = [];\r\n /**\r\n * Selektierte Sprace des Controls\r\n */\r\n private selectedLanguage: LanguageModel = null;\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngLanguageService: ISacLanguageService;\r\n\r\n /**\r\n * Fix breite für das Control definieren.\r\n */\r\n @Input() public controlwidth: string = null;\r\n /**\r\n * Max länge an Zeichen für Eingabefeld\r\n */\r\n @Input() public maxlength: number = null;\r\n /**\r\n * Aktiviert den Validator, das min. eine Sprache erfasst sein muss\r\n */\r\n @Input() public requiredany: boolean = false;\r\n /**\r\n * Anzahl Rows für TextArea\r\n */\r\n @Input() public rows: number = 7;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern bei Control\r\n */\r\n @Input() public validationmessagerequiredany: string =\r\n this.validationKeyService.ValidationErrorMultilanguageRequiredAny;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequiredany: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(@Host() formlayout: SacFormLayoutCommon, injector: Injector) {\r\n super(formlayout, injector);\r\n\r\n this.lngLanguageService = injector.get(\r\n SACLANGUAGE_SERVICE,\r\n new SacDefaultLanguageService()\r\n );\r\n\r\n this.lngLanguageService\r\n .GetLanguages()\r\n .subscribe((result: LanguageModel[]) => {\r\n this.languages = result;\r\n\r\n if (this.languages.length > 0) {\r\n this.selectedLanguage = this.languages[0];\r\n }\r\n // Control Validierung ausführen, da Wert potentiell bereits gesetzt sein kann\r\n this.UpdateValueAndValidity();\r\n });\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Getter welcher den Wert der Component in der gewählten Sprache zurückgibt. Wenn keine Sprache selektiert ist, wird ein leerer Wert zurückgegeben.\r\n * Ist in der Component kein Wert gespeichert wird ein leerer Wert zurückgegeben\r\n */\r\n public get LanguageValue(): string {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return '';\r\n }\r\n\r\n return this.value[currentIsoCode];\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Collection der Sprachen\r\n */\r\n public get Languages(): LanguageModel[] {\r\n return this.languages;\r\n }\r\n\r\n /**\r\n * Gibt das Icon der selektierten Sprache zurück\r\n */\r\n public get SelectedIcon(): string {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.Icon;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Gibt den Type des Icons für die selektierte Sprache zurück\r\n */\r\n public get SelectedIconType(): IconType {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.IconType;\r\n } else {\r\n return IconType.Image;\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft, ob in einer beliebigen Sprache der Kompontente kein Wert definiert ist.\r\n * @returns Gibt an ob ein Leeres Element vorhanden ist\r\n */\r\n public IsAnyEmpty(): boolean {\r\n let found = false;\r\n\r\n if (this.value) {\r\n this.languages.forEach((itm: LanguageModel) => {\r\n if (itm === null) {\r\n found = true;\r\n return;\r\n }\r\n\r\n if (\r\n this.value[itm.IsoCode] === undefined ||\r\n this.value[itm.IsoCode] === '' ||\r\n this.value[itm.IsoCode] === null\r\n ) {\r\n found = true;\r\n return;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n\r\n /**\r\n * Gibt an, ob in einer bestimmten Sprache ein Wert definiert ist\r\n * @param sprache Sprache in welcher der Wert geprüft werden soll\r\n * @returns Wert ist vorhanden\r\n */\r\n public IsEmpty(sprache: LanguageModel): boolean {\r\n if (this.value) {\r\n // Fallback falls keine Selektierte Sprache\r\n if (sprache === null) {\r\n return true;\r\n }\r\n\r\n return (\r\n this.value[sprache.IsoCode] === undefined ||\r\n this.value[sprache.IsoCode] === '' ||\r\n this.value[sprache.IsoCode] === null\r\n );\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Selektiert die Sprache der Komponente\r\n * @param language Sprache die selektiert werden soll\r\n */\r\n public SelectLanguage(language: LanguageModel) {\r\n this.selectedLanguage = language;\r\n }\r\n\r\n /**\r\n * Speichert einen Wert zur aktuell gewählten Sprache\r\n * @param value Wert welcher gespeichert werden soll\r\n */\r\n public SetLanguageValue(value: string) {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return;\r\n }\r\n\r\n this.value[currentIsoCode] = value;\r\n this.propagateChange(this._value);\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriterien entspricht\r\n * @param c Controls das validiert wird\r\n */\r\n public validateData(c: AbstractControl): { [key: string]: any } {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.isrequired !== undefined &&\r\n this.isrequired === true\r\n ) {\r\n error = Validation.multilanguageRequired(\r\n this.languages,\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.requiredany !== undefined &&\r\n this.requiredany === true\r\n ) {\r\n error = Validation.multilanguageRequiredAny(\r\n this.languages,\r\n this.validationmessagerequiredany,\r\n this.validationmessagesummaryrequiredany\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { EventEmitter, Input, Output, Directive } from '@angular/core';\r\nimport { IConfirmComponent } from '../../interfaces/iconfirmcomponent';\r\nimport { SacConfirmButton } from './confirm.button';\r\n\r\n/**\r\n * Basis Klasse für Confirm Dialog\r\n */\r\n@Directive()\r\nexport class SacConfirmCommon implements IConfirmComponent {\r\n\r\n //#region Input / Output Properties\r\n\r\n /**\r\n * Event wenn Dialog geschlossen wird\r\n */\r\n @Output()\r\n public onconfirm: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Dialog Titel für Confirm Dialog\r\n */\r\n @Input()\r\n public title: string = '';\r\n\r\n /**\r\n * Nachricht die auf dem Dialog angezeigt wird\r\n */\r\n @Input()\r\n public message: string = '';\r\n\r\n /**\r\n * Icon welches auf dem Dialog angezeigt wird\r\n */\r\n @Input()\r\n public image: string = '';\r\n\r\n /**\r\n * Map mit Buttons die in Dialog angezeigt werden.\r\n */\r\n @Input()\r\n public buttons: SacConfirmButton[] = [];\r\n\r\n //#endregion\r\n\r\n //#region Internal Properties and Methods\r\n\r\n /**\r\n * Definiert ob der Dialog sichtbar ist\r\n */\r\n isvisible: boolean = false;\r\n\r\n /**\r\n * Definiert, ob für den Dialog ein Image definiert wurde\r\n */\r\n hasImage(): boolean {\r\n return this.image !== '';\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Public Methods\r\n\r\n /**\r\n * Action wenn Button auf Dialog geklickt wurde. Löst den EventEmitter aus und blendet den Dialog aus.\r\n * @param action\r\n */\r\n public confirm(action: string): void {\r\n this.onconfirm.emit(action);\r\n this.isvisible = false;\r\n }\r\n\r\n /**\r\n * Zeigt den Dialog an\r\n */\r\n public show(): void {\r\n this.isvisible = true;\r\n }\r\n\r\n /**\r\n * Blendet den Dialog aus\r\n */\r\n public hide(): void {\r\n this.isvisible = false;\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import { BUTTONROLETYPE } from '../../enums/ButtonRoleType';\r\n\r\n/**\r\n * Class for button templates in Confirm Button\r\n */\r\nexport class SacConfirmButton {\r\n // #region Properties\r\n\r\n /**\r\n * Key of the button. Is returned as a result when confirming\r\n */\r\n public key: string = '';\r\n /**\r\n * Layout of the button\r\n */\r\n public role: BUTTONROLETYPE = 'secondary';\r\n /**\r\n * Display text of the buttonAnzeigetext des Buttons\r\n */\r\n public text: string = '';\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param key Key for button\r\n * @param text Text for button\r\n * @param role Role type for the button. Default is ‘secondary’\r\n */\r\n constructor(\r\n key: string = '',\r\n text: string = '',\r\n role: BUTTONROLETYPE = 'default'\r\n ) {\r\n this.key = key;\r\n this.text = text;\r\n this.role = role;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactory,\r\n ComponentRef,\r\n EventEmitter,\r\n Injector,\r\n} from '@angular/core';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport { IConfirmComponent } from '../../interfaces/iconfirmcomponent';\r\nimport {\r\n SACICON_SERVICE,\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultIconService,\r\n SacDefaultLocalisationService,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\n\r\n/**\r\n * Basis Klasse für Confirm Service implementation\r\n */\r\nexport abstract class ServiceConfirmCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Referenz auf IConfirm Instanz.\r\n */\r\n protected component: ComponentRef<IConfirmComponent> = null;\r\n /**\r\n * service for default icon in dialog\r\n */\r\n protected iconService: ISacIconService;\r\n /**\r\n * service for tranlsate default text\r\n */\r\n protected localisationService: ISacLocalisationService;\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n protected validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param appRef ApplicationRef zum Anhängen des Dialogs an den Content\r\n * @param injector Injector um die Instanz zu erzeuge\r\n */\r\n constructor(private appRef: ApplicationRef, private injector: Injector) {\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.localisationService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Blendet den Dialog aus\r\n */\r\n protected CloseDialog(): void {\r\n const dialog = this.component.instance;\r\n dialog.hide();\r\n }\r\n\r\n /**\r\n * Interne Methode für die Implementation des Confirm Dialogs. Steuert die Feedbacks, die Erzeugung und Anzeige des Dialogs\r\n */\r\n protected Confirm(): EventEmitter<string> {\r\n // Dialog erzeugen\r\n this.CreateInstance();\r\n const instance: IConfirmComponent = this.OpenDialog();\r\n\r\n // Konfiguration der Dialog Instanz durch Service Implementation zulassen\r\n this.ConfigureDialog(instance);\r\n\r\n // Event Emitter für Confirmation im Service. Event Emitter Asynchron initialiseren\r\n const confirmTask: EventEmitter<string> = new EventEmitter<string>(true);\r\n\r\n // Callback wenn Dialog bestätigt wurde\r\n instance.onconfirm.subscribe(\r\n (value) => {\r\n // Dialog entfernen\r\n this.CloseDialog();\r\n\r\n // Emit auf Service auslösen\r\n confirmTask.emit(value);\r\n },\r\n (err) => {\r\n // Do nothing on Error\r\n },\r\n () => {\r\n this.DestroyInstance();\r\n }\r\n );\r\n\r\n // Confirm Emitter für Result zurückgeben\r\n return confirmTask;\r\n }\r\n\r\n /**\r\n * Erzeugt eine Instanz für den Dialog\r\n */\r\n protected CreateInstance(): void {\r\n // ComponentFactory aus Service laden\r\n const factory: ComponentFactory<IConfirmComponent> =\r\n this.GetComponentFactory();\r\n\r\n // Instanz der Komponente erzeugen und an die View anhängen\r\n this.component = factory.create(this.injector);\r\n this.appRef.attachView(this.component.hostView);\r\n }\r\n\r\n /**\r\n * Entfernt die Instanz des Dialogs\r\n */\r\n protected DestroyInstance(): void {\r\n // Dialog aus View entfernen und Komponenten löschen\r\n this.appRef.detachView(this.component.hostView);\r\n this.component.destroy();\r\n }\r\n\r\n /**\r\n * Zeigt den Dialog an\r\n */\r\n protected OpenDialog(): IConfirmComponent {\r\n const dialog = this.component.instance;\r\n dialog.show();\r\n return dialog as IConfirmComponent;\r\n }\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Protected Abstract Methods\r\n\r\n /**\r\n * Methode zur Konfiguration der Confirm Dialog Komponente\r\n * @param instance Instanz auf IConfirmComponent Komponente\r\n */\r\n protected abstract ConfigureDialog(instance: IConfirmComponent);\r\n /**\r\n * Abstrakte Methode zum erzeugen der Komponent Factory für den Dialog\r\n */\r\n protected abstract GetComponentFactory(): ComponentFactory<IConfirmComponent>;\r\n\r\n // #endregion Protected Abstract Methods\r\n}\r\n","interface ClientRect {\r\n top: number;\r\n bottom: number;\r\n left: number;\r\n right: number;\r\n height: number;\r\n width: number;\r\n}\r\n\r\n/**\r\n * Position Utility Klasse\r\n * @see https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/util/positioning.ts\r\n */\r\nexport class Positioning {\r\n /**\r\n * Get all Styles of Element\r\n * @param element HTML Element\r\n * @returns All Styles of element\r\n */\r\n private getAllStyles(element: HTMLElement) {\r\n return window.getComputedStyle(element);\r\n }\r\n\r\n /**\r\n * Get Style value of element\r\n * @param element HTML Element\r\n * @param prop Style\r\n * @returns Value of Style\r\n */\r\n private getStyle(element: HTMLElement, prop: string): string {\r\n return this.getAllStyles(element)[prop];\r\n }\r\n\r\n /**\r\n * Check if the element has an static position\r\n * @param element HTML Element\r\n * @returns Item has a static position\r\n */\r\n private isStaticPositioned(element: HTMLElement): boolean {\r\n return (this.getStyle(element, 'position') || 'static') === 'static';\r\n }\r\n\r\n /**\r\n * Get the Offset of the parent element\r\n * @param element HTML Element\r\n * @returns HTML ELement\r\n */\r\n private offsetParent(element: HTMLElement): HTMLElement {\r\n let offsetParentEl =\r\n <HTMLElement>element.offsetParent || document.documentElement;\r\n\r\n while (\r\n offsetParentEl &&\r\n offsetParentEl !== document.documentElement &&\r\n this.isStaticPositioned(offsetParentEl)\r\n ) {\r\n offsetParentEl = <HTMLElement>offsetParentEl.offsetParent;\r\n }\r\n\r\n return offsetParentEl || document.documentElement;\r\n }\r\n\r\n /**\r\n * Get Element Position\r\n * @param element HTML Element for Position\r\n * @param round Round Values\r\n * @returns Position Values\r\n */\r\n position(element: HTMLElement, round = true): ClientRect {\r\n let elPosition: ClientRect;\r\n let parentOffset: ClientRect = {\r\n width: 0,\r\n height: 0,\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n };\r\n\r\n if (this.getStyle(element, 'position') === 'fixed') {\r\n elPosition = element.getBoundingClientRect();\r\n elPosition = {\r\n top: elPosition.top,\r\n bottom: elPosition.bottom,\r\n left: elPosition.left,\r\n right: elPosition.right,\r\n height: elPosition.height,\r\n width: elPosition.width,\r\n };\r\n } else {\r\n const offsetParentEl = this.offsetParent(element);\r\n\r\n elPosition = this.offset(element, false);\r\n\r\n if (offsetParentEl !== document.documentElement) {\r\n parentOffset = this.offset(offsetParentEl, false);\r\n }\r\n\r\n parentOffset.top += offsetParentEl.clientTop;\r\n parentOffset.left += offsetParentEl.clientLeft;\r\n }\r\n\r\n elPosition.top -= parentOffset.top;\r\n elPosition.bottom -= parentOffset.top;\r\n elPosition.left -= parentOffset.left;\r\n elPosition.right -= parentOffset.left;\r\n\r\n if (round) {\r\n elPosition.top = Math.round(elPosition.top);\r\n elPosition.bottom = Math.round(elPosition.bottom);\r\n elPosition.left = Math.round(elPosition.left);\r\n elPosition.right = Math.round(elPosition.right);\r\n }\r\n\r\n return elPosition;\r\n }\r\n\r\n /**\r\n * Get Offset of Item\r\n * @param element HTML Element for Offset\r\n * @param round Round the Values\r\n * @returns Return Offset Position\r\n */\r\n offset(element: HTMLElement, round = true): ClientRect {\r\n const elBcr = element.getBoundingClientRect();\r\n const viewportOffset = {\r\n top: window.pageYOffset - document.documentElement.clientTop,\r\n left: window.pageXOffset - document.documentElement.clientLeft,\r\n };\r\n\r\n const elOffset = {\r\n height: elBcr.height || element.offsetHeight,\r\n width: elBcr.width || element.offsetWidth,\r\n top: elBcr.top + viewportOffset.top,\r\n bottom: elBcr.bottom + viewportOffset.top,\r\n left: elBcr.left + viewportOffset.left,\r\n right: elBcr.right + viewportOffset.left,\r\n };\r\n\r\n if (round) {\r\n elOffset.height = Math.round(elOffset.height);\r\n elOffset.width = Math.round(elOffset.width);\r\n elOffset.top = Math.round(elOffset.top);\r\n elOffset.bottom = Math.round(elOffset.bottom);\r\n elOffset.left = Math.round(elOffset.left);\r\n elOffset.right = Math.round(elOffset.right);\r\n }\r\n\r\n return elOffset;\r\n }\r\n\r\n /**\r\n * Return false if the element to position is outside the viewport\r\n * @returns position is inside viewport\r\n */\r\n positionElements(\r\n hostElement: HTMLElement,\r\n targetElement: HTMLElement,\r\n placement: string,\r\n appendToBody?: boolean\r\n ): boolean {\r\n const [placementPrimary = 'top', placementSecondary = 'center'] =\r\n placement.split('-');\r\n\r\n const hostElPosition = appendToBody\r\n ? this.offset(hostElement, false)\r\n : this.position(hostElement, false);\r\n const targetElStyles = this.getAllStyles(targetElement);\r\n\r\n const marginTop = parseFloat(targetElStyles.marginTop);\r\n const marginBottom = parseFloat(targetElStyles.marginBottom);\r\n const marginLeft = parseFloat(targetElStyles.marginLeft);\r\n const marginRight = parseFloat(targetElStyles.marginRight);\r\n\r\n let topPosition = 0;\r\n let leftPosition = 0;\r\n\r\n switch (placementPrimary) {\r\n case 'top':\r\n topPosition =\r\n hostElPosition.top -\r\n (targetElement.offsetHeight + marginTop + marginBottom);\r\n break;\r\n case 'bottom':\r\n topPosition = hostElPosition.top + hostElPosition.height;\r\n break;\r\n case 'left':\r\n leftPosition =\r\n hostElPosition.left -\r\n (targetElement.offsetWidth + marginLeft + marginRight);\r\n break;\r\n case 'right':\r\n leftPosition = hostElPosition.left + hostElPosition.width;\r\n break;\r\n }\r\n\r\n switch (placementSecondary) {\r\n case 'top':\r\n topPosition = hostElPosition.top;\r\n break;\r\n case 'bottom':\r\n topPosition =\r\n hostElPosition.top +\r\n hostElPosition.height -\r\n targetElement.offsetHeight;\r\n break;\r\n case 'left':\r\n leftPosition = hostElPosition.left;\r\n break;\r\n case 'right':\r\n leftPosition =\r\n hostElPosition.left +\r\n hostElPosition.width -\r\n targetElement.offsetWidth;\r\n break;\r\n case 'center':\r\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\r\n leftPosition =\r\n hostElPosition.left +\r\n hostElPosition.width / 2 -\r\n targetElement.offsetWidth / 2;\r\n } else {\r\n topPosition =\r\n hostElPosition.top +\r\n hostElPosition.height / 2 -\r\n targetElement.offsetHeight / 2;\r\n }\r\n break;\r\n }\r\n\r\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\r\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\r\n targetElement.style.transform = `translate(${Math.round(\r\n leftPosition\r\n )}px, ${Math.round(topPosition)}px)`;\r\n\r\n // Check if the targetElement is inside the viewport\r\n const targetElBCR = targetElement.getBoundingClientRect();\r\n const html = document.documentElement;\r\n const windowHeight = window.innerHeight || html.clientHeight;\r\n const windowWidth = window.innerWidth || html.clientWidth;\r\n\r\n return (\r\n targetElBCR.left >= 0 &&\r\n targetElBCR.top >= 0 &&\r\n targetElBCR.right <= windowWidth &&\r\n targetElBCR.bottom <= windowHeight\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Placement Separator Regex\r\n */\r\nconst placementSeparator = /\\s+/;\r\n/**\r\n * Global Position Service\r\n */\r\nexport const positionService = new Positioning();\r\n\r\n/**\r\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\r\n * Returns the applied placement.\r\n * In case of auto placement, placements are selected in order\r\n * 'top', 'bottom', 'left', 'right',\r\n * 'top-left', 'top-right',\r\n * 'bottom-left', 'bottom-right',\r\n * 'left-top', 'left-bottom',\r\n * 'right-top', 'right-bottom'.\r\n */\r\nexport function positionElements(\r\n hostElement: HTMLElement,\r\n targetElement: HTMLElement,\r\n placement: string | Placement | PlacementArray,\r\n appendToBody?: boolean,\r\n baseClass?: string\r\n): Placement | null {\r\n const placementVals: Array<Placement> = Array.isArray(placement)\r\n ? placement\r\n : (placement.split(placementSeparator) as Array<Placement>);\r\n\r\n const allowedPlacements = [\r\n 'top',\r\n 'bottom',\r\n 'left',\r\n 'right',\r\n 'top-left',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'left-top',\r\n 'left-bottom',\r\n 'right-top',\r\n 'right-bottom',\r\n ];\r\n\r\n const classList = targetElement.classList;\r\n const addClassesToTarget = (targetPlacement: Placement): Array<string> => {\r\n const [primary, secondary] = targetPlacement.split('-');\r\n const classes: string[] = [];\r\n if (baseClass) {\r\n classes.push(`${baseClass}-${primary}`);\r\n if (secondary) {\r\n classes.push(`${baseClass}-${primary}-${secondary}`);\r\n }\r\n\r\n classes.forEach((classname) => {\r\n classList.add(classname);\r\n });\r\n }\r\n return classes;\r\n };\r\n\r\n // Remove old placement classes to avoid issues\r\n if (baseClass) {\r\n allowedPlacements.forEach((placementToRemove) => {\r\n classList.remove(`${baseClass}-${placementToRemove}`);\r\n });\r\n }\r\n\r\n // replace auto placement with other placements\r\n let hasAuto = placementVals.findIndex((val) => val === 'auto');\r\n if (hasAuto >= 0) {\r\n allowedPlacements.forEach(function (obj) {\r\n if (placementVals.find((val) => val.search('^' + obj) !== -1) == null) {\r\n placementVals.splice(hasAuto++, 1, obj as Placement);\r\n }\r\n });\r\n }\r\n\r\n // coordinates where to position\r\n\r\n // Required for transform:\r\n const style = targetElement.style;\r\n style.position = 'absolute';\r\n style.top = '0';\r\n style.left = '0';\r\n style['will-change'] = 'transform';\r\n\r\n let testPlacement: Placement | null = null;\r\n let isInViewport = false;\r\n for (testPlacement of placementVals) {\r\n const addedClasses = addClassesToTarget(testPlacement);\r\n\r\n if (\r\n positionService.positionElements(\r\n hostElement,\r\n targetElement,\r\n testPlacement,\r\n appendToBody\r\n )\r\n ) {\r\n isInViewport = true;\r\n break;\r\n }\r\n\r\n // Remove the baseClasses for further calculation\r\n if (baseClass) {\r\n addedClasses.forEach((classname) => {\r\n classList.remove(classname);\r\n });\r\n }\r\n }\r\n\r\n if (!isInViewport) {\r\n // If nothing match, the first placement is the default one\r\n testPlacement = placementVals[0];\r\n addClassesToTarget(testPlacement);\r\n positionService.positionElements(\r\n hostElement,\r\n targetElement,\r\n testPlacement,\r\n appendToBody\r\n );\r\n }\r\n\r\n return testPlacement;\r\n}\r\n\r\n/**\r\n * Placement Typen\r\n */\r\nexport type Placement =\r\n | 'auto'\r\n | 'top'\r\n | 'bottom'\r\n | 'left'\r\n | 'right'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n | 'left-top'\r\n | 'left-bottom'\r\n | 'right-top'\r\n | 'right-bottom';\r\n\r\n/**\r\n * Placement Array\r\n */\r\nexport type PlacementArray = Placement | Array<Placement> | string;\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Base Context Menu Anchor Component für Open/Close Event\r\n */\r\n@Directive()\r\nexport class SacContextmenuAnchorCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Referenz auf das Native HTML Element\r\n */\r\n public nativeElement: HTMLElement;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param elementRef Refernz auf das HTML welcher als Anker für das Context Menü verwendet wird\r\n */\r\n constructor(elementRef: ElementRef<HTMLElement>) {\r\n this.nativeElement = elementRef.nativeElement;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Common Marker Klasse für den Menü Container\r\n */\r\n@Directive()\r\nexport class SacContextMenuContrainerCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Referenz auf das HTML Element des Menü Containers\r\n */\r\n public nativeElement: HTMLElement;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param elementRef Referenz auf das HTML Element mit der Marker Direktive\r\n */\r\n constructor(elementRef: ElementRef<HTMLElement>) {\r\n this.nativeElement = elementRef.nativeElement;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n ContentChild,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { PlacementArray, positionElements } from '../../utilities/positioning';\r\nimport { SacContextmenuAnchorCommon } from './contextmenuanchor';\r\nimport { SacContextMenuContrainerCommon } from './contextmenucontainer';\r\n\r\n/**\r\n * Base Context Menü Element. Die Logik wurde aus NG-BOOTSTRAP übernommen.\r\n */\r\n@Directive()\r\nexport class SacContextmenuCommon implements OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * Button für Open/Close Event aus Template\r\n */\r\n @ContentChild(SacContextmenuAnchorCommon, { static: false })\r\n private _anchorTemplate: SacContextmenuAnchorCommon;\r\n /**\r\n * Button für Open/Close Event\r\n */\r\n @ViewChild(SacContextmenuAnchorCommon, { static: false })\r\n private _anchor: SacContextmenuAnchorCommon;\r\n /**\r\n * Container Element für Dropdown\r\n */\r\n @ViewChild(SacContextMenuContrainerCommon, { static: false })\r\n private _menu: SacContextMenuContrainerCommon;\r\n\r\n /**\r\n * Body HTML Element\r\n */\r\n private bodyContainer: HTMLElement | null = null;\r\n /**\r\n * Zone Subscription für Postitonierung des Elements\r\n */\r\n private zoneSubscription: Subscription;\r\n\r\n /**\r\n * icon service\r\n */\r\n protected iconService: ISacIconService;\r\n\r\n /**\r\n * Custom HTML Template für Dropdown Button. Button muss den Marker \"ngContextmenuAnchor\" beinhalten, damit das Control korrekt funktioniert.\r\n */\r\n @Input()\r\n public buttontemplate: TemplateRef<any>;\r\n /**\r\n * Container an welchem die Position ausgerichtet wird. Aktuell wird nun Body Supported\r\n */\r\n @Input()\r\n public container: null | 'body' = 'body';\r\n /**\r\n * Extra CSS Klassen für das Control\r\n */\r\n @Input()\r\n public cssclass: string = '';\r\n /**\r\n * Definiert ob das Dropdown offen ist.\r\n */\r\n @Input()\r\n public isopen: boolean = false;\r\n /**\r\n * The preferred placement of the dropdown.\r\n *\r\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\r\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\r\n * `\"right-bottom\"`\r\n *\r\n * Accepts an array of strings or a string with space separated possible values.\r\n *\r\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\r\n *\r\n * Please see the [positioning overview](#/positioning) for more details.\r\n */\r\n @Input() public placement: PlacementArray = [\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'top-left',\r\n 'top-right',\r\n ];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param document HTML Document Element\r\n * @param ngZone Angular Zone Service\r\n * @param elementRef HTML Element des aktuellen Controls\r\n * @param renderer Angular Rendering Service\r\n * @param injector injector to resolve the icon service\r\n */\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private ngZone: NgZone,\r\n private elementRef: ElementRef<HTMLElement>,\r\n private renderer: Renderer2,\r\n injector: Injector\r\n ) {\r\n this.zoneSubscription = this.ngZone.onStable.subscribe(() => {\r\n this._positionMenu();\r\n });\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * icon for default context menü button\r\n */\r\n public get IconContextMenu(): string {\r\n return this.iconService.ContextMenuOpenIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const anchor: SacContextmenuAnchorCommon =\r\n this._anchor || this._anchorTemplate;\r\n\r\n if (\r\n this._menu &&\r\n !this._menu.nativeElement.contains(targetElement) &&\r\n !anchor.nativeElement.contains(targetElement)\r\n ) {\r\n this.close();\r\n }\r\n }\r\n\r\n /**\r\n * Schliesst das Dropdown\r\n */\r\n public close(): void {\r\n this._resetContainer();\r\n this.isopen = false;\r\n }\r\n\r\n /**\r\n * Event wenn Component entfernt wird.\r\n */\r\n public ngOnDestroy(): void {\r\n this.zoneSubscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Öffnet das Dropdown / Zeigt das Menü an.\r\n */\r\n public open(): void {\r\n this._applyContainer(this.container);\r\n this.isopen = true;\r\n }\r\n\r\n /**\r\n * Toggle von Dropdown\r\n */\r\n public toggle(): void {\r\n if (this.isopen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Setzt die Position des Menüs im Markup\r\n */\r\n protected _positionMenu() {\r\n const anchor: SacContextmenuAnchorCommon =\r\n this._anchor || this._anchorTemplate;\r\n\r\n if (anchor && this._menu) {\r\n positionElements(\r\n anchor.nativeElement,\r\n this.bodyContainer || this._menu.nativeElement,\r\n this.placement,\r\n this.container === 'body'\r\n );\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Setzt die Position des Menüs innerhalb der Seite. Die Ausrichtung passiert innerhalb der Seite\r\n * damit das Menü innerhalb eines Dialogs sauber funktionioniert.\r\n * @param container Definiert wo das Menü ausgerichtet wird. Im Moment nur BODY Supported\r\n */\r\n private _applyContainer(container: null | 'body' = null) {\r\n // Reset Classes on Container\r\n this._resetContainer();\r\n\r\n if (container === 'body') {\r\n const renderer = this.renderer;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n const bodyContainer = (this.bodyContainer =\r\n this.bodyContainer || renderer.createElement('div'));\r\n\r\n // Override some styles to have the positioning working\r\n renderer.setStyle(bodyContainer, 'position', 'absolute');\r\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\r\n renderer.setStyle(bodyContainer, 'z-index', '1050');\r\n\r\n renderer.appendChild(bodyContainer, dropdownMenuElement);\r\n renderer.appendChild(this.document.body, bodyContainer);\r\n }\r\n }\r\n\r\n /**\r\n * Setzt die CSS Klassen auf dem Menü Container auf den Standard zurück\r\n */\r\n private _resetContainer() {\r\n const renderer = this.renderer;\r\n if (this._menu) {\r\n const dropdownElement = this.elementRef.nativeElement;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n\r\n renderer.appendChild(dropdownElement, dropdownMenuElement);\r\n renderer.removeStyle(dropdownMenuElement, 'position');\r\n renderer.removeStyle(dropdownMenuElement, 'transform');\r\n }\r\n if (this.bodyContainer) {\r\n renderer.removeChild(this.document.body, this.bodyContainer);\r\n this.bodyContainer = null;\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * Base Context Menu Item\r\n */\r\n@Directive()\r\nexport class SacContextmenuItemCommon {}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { SacContextmenuCommon } from './contextmenu';\r\nimport { SacContextmenuItemCommon } from './contextmenuitem';\r\n\r\n/**\r\n * Base Context Menu Button Item\r\n */\r\n@Directive()\r\nexport class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {\r\n /**\r\n * Constructor\r\n * @param contextmenu Instance of Context Menü.\r\n */\r\n constructor(protected contextmenu: SacContextmenuCommon) {\r\n super();\r\n }\r\n\r\n /**\r\n * Menu Item ist deaktiviert\r\n */\r\n protected _isdisabled: boolean = false;\r\n\r\n /**\r\n * Icon Column in Menü ist deaktiviert\r\n */\r\n protected _isicondisabled: boolean = false;\r\n\r\n /**\r\n * Icon für Menü\r\n */\r\n @Input()\r\n public icon: string;\r\n\r\n /**\r\n * css class for button styling\r\n */\r\n @Input()\r\n public cssclass: string = '';\r\n\r\n /**\r\n * Input Property für Styling des Buttons. Definiert die Css Klassen des Buttons\r\n */\r\n @Input()\r\n public iconstyle: string = '';\r\n\r\n /**\r\n * Image für Menü. Wird benötigt wenn das Icon für den Button ein File und nicht ein Icon Font ist.\r\n */\r\n @Input()\r\n public image: string;\r\n\r\n /**\r\n * Menu Item ist deaktiviert\r\n */\r\n @Input()\r\n public set isdisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isdisabled = v as boolean;\r\n } else {\r\n this._isdisabled = v === 'true';\r\n }\r\n }\r\n /**\r\n * Menu Item ist deaktiviert\r\n */\r\n public get isdisabled(): boolean | string {\r\n return this._isdisabled;\r\n }\r\n\r\n /**\r\n * Icon Column in Menü ist deaktiviert\r\n */\r\n @Input()\r\n public set isicondisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isicondisabled = v as boolean;\r\n } else {\r\n this._isicondisabled = v === 'true';\r\n }\r\n }\r\n /**\r\n * Icon Column in Menü ist deaktiviert\r\n */\r\n public get isicondisabled(): boolean | string {\r\n return this._isicondisabled;\r\n }\r\n\r\n /**\r\n * Text für Menü Item.\r\n */\r\n @Input()\r\n public text: string;\r\n\r\n /**\r\n * Event wenn auf den Button geklickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /**\r\n * Die Methode wird das cklickaction Emitter aktivieren\r\n */\r\n public callaction(event: MouseEvent) {\r\n if (!this._isdisabled) {\r\n this.clicked.emit();\r\n this.contextmenu.close();\r\n }\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Directive,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacFileBrowserService } from '../../interfaces/ISacFileBrowserService';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport {\r\n SACICON_SERVICE,\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultIconService,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\nimport {\r\n SACFILEBROWSER_SERVICE,\r\n SacDefaultFileBrowserService,\r\n} from '../../services/sac-filebrowser.service';\r\nimport { SacDefaultLocalisationService } from '../../services/sac-localisation.service';\r\nimport { IBrowserFile } from './models/browserfile';\r\nimport { IBrowserFileResponse } from './models/browserfileresponse';\r\nimport { IBrowserNode } from './models/browsernode';\r\nimport { IBrowserNodeResponse } from './models/browsernoderesponse';\r\n\r\n/**\r\n * Base Component für File Browser\r\n */\r\n@Directive()\r\nexport abstract class SacFileBrowserCommon implements OnInit {\r\n // #region Properties\r\n\r\n /**\r\n * Service für File Browser Zugriff (Backend)\r\n */\r\n private browserService: ISacFileBrowserService;\r\n /**\r\n * Icon service to receive icon classes for ui\r\n */\r\n private iconService: ISacIconService;\r\n /**\r\n * File welches beim starten des Browsers bereits selektiert ist\r\n */\r\n private preselecedfile: string | null = null;\r\n\r\n /**\r\n * Erlaubte Dateierweiterungen für Fileauswahl und Upload. Dateierweiterung mit Punkt und\r\n * getrennt durch Komma für mehr als eine Erweiterung (Example: \".jpg,.gif\")\r\n */\r\n @Input()\r\n public allowedtypes: string = '';\r\n /**\r\n * Erlaubt das löschen einer Datei\r\n */\r\n @Input()\r\n public allowfiledelete: boolean = true;\r\n /**\r\n * Erlaubt das umbenennen einer Datei\r\n */\r\n @Input()\r\n public allowfilerename: boolean = true;\r\n /**\r\n * Erlaubt den Upload von Dateien\r\n */\r\n @Input()\r\n public allowfileupload: boolean = true;\r\n /**\r\n * Erlaubt das erstellen eines neuen Ordners\r\n */\r\n @Input()\r\n public allowfoldercreate: boolean = true;\r\n /**\r\n * Erlaubt das löschen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderdelete: boolean = true;\r\n /**\r\n * Erlaubt das Umbenennen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderrename: boolean = true;\r\n /**\r\n * URL für Backend API\r\n */\r\n @Input()\r\n public apiurl: string;\r\n /**\r\n * Output Emitter wenn File selektiert wird.\r\n */\r\n @Output()\r\n public file: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n /**\r\n * Root Node Item für Tree\r\n */\r\n public rootNode: IBrowserNode = {\r\n Name: '',\r\n ChildNodes: [],\r\n Files: [],\r\n IsExpanded: true,\r\n IsEditMode: false,\r\n IsNewNode: false,\r\n Path: '',\r\n };\r\n /**\r\n * Selected File Name\r\n */\r\n public selectedFile: string;\r\n /**\r\n * Selected File Item\r\n */\r\n public selectedFileItem: IBrowserFile = null;\r\n /**\r\n * Selected Node Item\r\n */\r\n public selectedNode: IBrowserNode = null;\r\n /**\r\n * Liste von Uploads\r\n */\r\n public uploads: string[] = [];\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n public validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param httpclient Angular HTTP Client\r\n * @param injector Service Injector\r\n */\r\n constructor(httpclient: HttpClient, injector: Injector) {\r\n this.browserService = injector.get(\r\n SACFILEBROWSER_SERVICE,\r\n new SacDefaultFileBrowserService(httpclient)\r\n );\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Setzt den Seleced Node über den Pfad\r\n */\r\n @Input()\r\n public set selectedfile(v: string | null) {\r\n const selectednode = this.findSelectedNodeByPath(this.rootNode, v);\r\n\r\n if (selectednode !== null) {\r\n this.selectNode(selectednode);\r\n }\r\n\r\n this.preselecedfile = v;\r\n }\r\n\r\n /**\r\n * CSS icon class for delete icon\r\n * @returns css class with icon\r\n */\r\n public get iconDelete(): string {\r\n return this.iconService.BrowserComponentDeleteIcon;\r\n }\r\n\r\n /**\r\n * CSS icon class for edit icon\r\n * @returns css class with icon\r\n */\r\n public get iconEdit(): string {\r\n return this.iconService.BrowserComponentEditIcon;\r\n }\r\n\r\n /**\r\n * CSS icon for folders in tree there are collabsed\r\n * @returns css class with icon\r\n */\r\n public get iconFolderCollabsed(): string {\r\n return this.iconService.BrowserComponentFolderClosedIcon;\r\n }\r\n\r\n /**\r\n * CSS icon class for folders without subfolders\r\n * @returns css class with icon\r\n */\r\n public get iconFolderEmpty(): string {\r\n return this.iconService.BrowserComponentFolderEmptyIcon;\r\n }\r\n\r\n /**\r\n * CSS icon for new folders action\r\n * @returns css class with icon\r\n */\r\n public get iconFolderNew(): string {\r\n return this.iconService.BrowserComponentFolderNewIcon;\r\n }\r\n\r\n /**\r\n * CSS icon for folders in tree there are expanded\r\n * @returns css class with icon\r\n */\r\n public get iconFolderOpen(): string {\r\n return this.iconService.BrowserComponentFolderOpenIcon;\r\n }\r\n\r\n /**\r\n * CSS icon class for refresh icon\r\n * @returns css class with icon\r\n */\r\n public get iconRefresh(): string {\r\n return this.iconService.BrowserComponentRefreshIcon;\r\n }\r\n\r\n /**\r\n * Getter für Selected File. Ist an Input Property gebunden\r\n */\r\n public get selectedfile(): string | null {\r\n if (this.selectFile && this.selectFile.length > 0) {\r\n return this.selectedFile;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener welcher den Edit Mode bei allen Files und Nodes beendet.\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public exitEditMode(targetElement): void {\r\n if (this.selectedNode) {\r\n this.selectedNode.Files.forEach((itm) => (itm.IsEditMode = false));\r\n\r\n if (\r\n !this.selectedNode ||\r\n this.selectedNode.Name === null ||\r\n this.selectedNode.Name.length === 0\r\n ) {\r\n this.clearNewChildNodes(this.rootNode);\r\n }\r\n }\r\n\r\n this.resetNodeEditMode(null);\r\n }\r\n\r\n /**\r\n * Löscht ein File\r\n * @param file File welches gelöscht werden soll\r\n */\r\n public deleteFile(file: IBrowserFile): void {\r\n this.confirmDeleteFile(file).subscribe((confirm) => {\r\n if (confirm) {\r\n this.browserService\r\n .DeleteFile(\r\n this.apiurl,\r\n this.selectedNode.Path + '/' + file.Filename,\r\n this.allowedtypes\r\n )\r\n .subscribe((result: IBrowserFileResponse) => {\r\n this.selectedNode.Files = result.Files;\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Löscht einen Node\r\n * @param node Node welcher gelöscht werden soll\r\n */\r\n public deleteNode(node: IBrowserNode): void {\r\n this.confirmDeleteNode(node).subscribe((confirm) => {\r\n if (confirm) {\r\n this.browserService\r\n .DeleteNode(this.apiurl, node.Path)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n const parentNode = this.findParentNode(this.rootNode, node);\r\n parentNode.ChildNodes = result.Node.ChildNodes;\r\n\r\n this.rootNode.ChildNodes.forEach((itm) => {\r\n this.fillPath(itm, '');\r\n });\r\n\r\n this.selectNode(parentNode);\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Setzt ein File in den Edit Mode\r\n * @param file File welches in den Edit Mode gesetzt werden soll\r\n */\r\n public editFile(file: IBrowserFile): void {\r\n file.IsEditMode = true;\r\n }\r\n\r\n /**\r\n * Setzt einen Node in den Edit Mode\r\n * @param node Node welcher bearbeitet werden soll\r\n */\r\n public editNode(node: IBrowserNode): void {\r\n node.IsEditMode = true;\r\n }\r\n\r\n /**\r\n * Erzeugt einen neuen Node im Tree\r\n * @param node Node unter welchem ein neuer Node erstellt werden soll\r\n */\r\n public newNode(node: IBrowserNode) {\r\n const item: IBrowserNode = {\r\n ChildNodes: [],\r\n Files: [],\r\n IsEditMode: false,\r\n IsExpanded: false,\r\n Name: '',\r\n Path: node.Path,\r\n IsNewNode: true,\r\n };\r\n\r\n node.ChildNodes.push(item);\r\n this.selectNode(item);\r\n this.editNode(item);\r\n }\r\n\r\n /**\r\n * Init Event der Komponente\r\n */\r\n public ngOnInit(): void {\r\n this.browserService\r\n .GetNode(this.apiurl, '', this.allowedtypes)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n this.rootNode = {\r\n Name: result.Node.Name,\r\n Files: result.Node.Files,\r\n ChildNodes: result.Node.ChildNodes,\r\n IsExpanded: true,\r\n IsEditMode: false,\r\n IsNewNode: false,\r\n Path: '/',\r\n };\r\n\r\n this.setPathToAllNodes();\r\n this.selectedNode = this.rootNode;\r\n\r\n // Selected File erneut setzen, wenn Property gesetzt wurde bevor Daten vom Service geladen wurden.\r\n if (this.preselecedfile !== null && this.preselecedfile.length > 0) {\r\n this.selectedfile = this.preselecedfile;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Aktualisiert den Node\r\n */\r\n public refreshNode(node: IBrowserNode): void {\r\n if (!node.IsExpanded) {\r\n this.switchExpandNode(node);\r\n }\r\n\r\n this.browserService\r\n .GetNode(this.apiurl, node.Path, this.allowedtypes)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n node.ChildNodes = result.Node.ChildNodes;\r\n node.Files = result.Node.Files;\r\n\r\n this.setPathToAllNodes();\r\n });\r\n }\r\n\r\n /**\r\n * Methode wenn eine Datei umbenannt werden soll\r\n * @param file File welches umbenannt werden soll\r\n * @param newFilename Neuer Dateiname\r\n */\r\n public renameFile(file: IBrowserFile, newFilename: string): void {\r\n file.IsEditMode = false;\r\n\r\n if (!newFilename || newFilename === null || newFilename.length === 0) {\r\n // Cancel, Invalid Filename\r\n return;\r\n }\r\n\r\n if (file.Filename !== newFilename) {\r\n this.browserService\r\n .RenameFile(\r\n this.apiurl,\r\n this.selectedNode.Path + '/' + file.Filename,\r\n newFilename,\r\n this.allowedtypes\r\n )\r\n .subscribe((result: IBrowserFileResponse) => {\r\n this.selectedNode.Files = result.Files;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn ein Node umbenannt werden soll\r\n * @param node Node welcher umbenannt werden soll\r\n * @param newFoldername Neuer Ordnername\r\n */\r\n public renameNode(node: IBrowserNode, newFoldername: string): void {\r\n node.IsEditMode = false;\r\n\r\n if (!node.IsNewNode) {\r\n if (\r\n !newFoldername ||\r\n newFoldername === null ||\r\n newFoldername.length === 0\r\n ) {\r\n // Cancel Rename. Invalid Foldername\r\n return;\r\n }\r\n\r\n if (node.Name !== newFoldername) {\r\n this.browserService\r\n .RenameNode(this.apiurl, node.Path, newFoldername)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n node.Name = result.Node.Name;\r\n\r\n this.setPathToAllNodes();\r\n });\r\n }\r\n } else {\r\n if (\r\n !newFoldername ||\r\n newFoldername === null ||\r\n newFoldername.length === 0\r\n ) {\r\n this.clearNewChildNodes(this.rootNode);\r\n return;\r\n }\r\n\r\n node.Name = newFoldername;\r\n node.IsNewNode = false;\r\n this.browserService\r\n .SaveNode(this.apiurl, node.Path, newFoldername)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n node.Name = result.Node.Name;\r\n node.Files = result.Node.Files;\r\n\r\n this.setPathToAllNodes();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn ein File selektiert wird\r\n * @param file File welches selektiert wird\r\n */\r\n public selectFile(file: IBrowserFile) {\r\n if (!file.IsEditMode) {\r\n this.selectedNode.Files.forEach((itm) => (itm.IsEditMode = false));\r\n }\r\n\r\n if (!this.selectedNode.Path.endsWith('/')) {\r\n this.selectedFile = this.selectedNode.Path + '/' + file.Filename;\r\n } else {\r\n this.selectedFile = '/' + file.Filename;\r\n }\r\n\r\n this.selectedFileItem = file;\r\n this.file.emit(this.selectedFile);\r\n }\r\n\r\n /**\r\n * Methode wenn ein Node selektiert wird\r\n * @param node Node welcher selektiert werden soll\r\n */\r\n public selectNode(node: IBrowserNode): void {\r\n if (!node.IsExpanded) {\r\n this.switchExpandNode(node);\r\n }\r\n\r\n // Reset the Edit Mode in all Nodes\r\n this.resetNodeEditMode(null);\r\n\r\n if (!node.Files) {\r\n this.browserService\r\n .GetFiles(this.apiurl, node.Path, this.allowedtypes)\r\n .subscribe((result: IBrowserFileResponse) => {\r\n node.Files = result.Files;\r\n this.selectedNode = node;\r\n\r\n if (this.preselecedfile !== null && this.preselecedfile.length > 0) {\r\n const filename = this.preselecedfile.substring(\r\n this.preselecedfile.lastIndexOf('/') + 1\r\n );\r\n const file = node.Files.find((itm) => itm.Filename === filename);\r\n if (file) {\r\n this.selectFile(file);\r\n }\r\n }\r\n });\r\n } else {\r\n this.selectedNode = node;\r\n }\r\n }\r\n\r\n /**\r\n * Expand/Collabse Methode für Nodes\r\n * @param node Node welcher geöffnet oder geschlossen werden soll\r\n */\r\n public switchExpandNode(node: IBrowserNode): void {\r\n if (node.IsExpanded) {\r\n node.IsExpanded = false;\r\n } else {\r\n node.IsExpanded = true;\r\n }\r\n }\r\n\r\n /**\r\n * Methode die Aufgerufen werden muss, wenn ein Upload beendet ist.\r\n * @param param Parameter des hochgeladenen Files\r\n */\r\n public uploadComplete(node: IBrowserNode, uploadIdList: string[]): void {\r\n if (uploadIdList !== null) {\r\n uploadIdList.forEach((element) => {\r\n if (this.uploads.indexOf(element) < 0) {\r\n this.uploads.push(element);\r\n }\r\n });\r\n }\r\n\r\n const id = this.uploads.pop();\r\n if (id) {\r\n this.browserService\r\n .SaveFile(this.apiurl, node.Path, id, this.allowedtypes)\r\n .subscribe((result: IBrowserFileResponse) => {\r\n this.selectedNode.Files = result.Files;\r\n this.uploadedFileMoved(id);\r\n });\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Abstrakte Confirm Methode welche implementiert werden muss. Methode wird aufgerufen, wenn eine\r\n * Datei gelöscht werden soll.\r\n * @param file File für welches ein Delete Confirm eingefordert werden soll\r\n */\r\n public abstract confirmDeleteFile(file: IBrowserFile): Observable<boolean>;\r\n /**\r\n * Abstrakte Confirm Methode welche implementiert werden muss. Methode wird aufgerufen, wenn ein\r\n * Ordner gelöscht werden soll.\r\n * @param folder Ordern für welchen ein Delete Confirm eingefordert werden soll.\r\n */\r\n public abstract confirmDeleteNode(folder: IBrowserNode): Observable<boolean>;\r\n /**\r\n * Abstrakte Methode die Aufgerufen wird, wenn das Hochgeladene File aus dem Temp Folder in die\r\n * Struktur verschoben wurde.\r\n * @param uploadid ID des Uploads\r\n */\r\n public abstract uploadedFileMoved(uploadid: string): void;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Rekursive Methode welche beim Node und all seinen Childs neue Nodes entfernt\r\n * @param node Node bei welchem alle neuen Nodes entfernt werden soll.\r\n */\r\n private clearNewChildNodes(node: IBrowserNode) {\r\n node.ChildNodes.forEach((itm) => {\r\n if (itm.IsNewNode) {\r\n node.ChildNodes.splice(node.ChildNodes.indexOf(itm));\r\n }\r\n });\r\n\r\n node.ChildNodes.forEach((itm) => this.clearNewChildNodes(itm));\r\n }\r\n\r\n /**\r\n * Methode welche den Pfad für einen Node erzeugt\r\n * @param node Node für welchen der Pfad erzeugt werden soll\r\n * @param parentPath Übergeordneter Pfad\r\n */\r\n private fillPath(node: IBrowserNode, parentPath: string) {\r\n node.Path = parentPath + '/' + node.Name;\r\n node.ChildNodes.forEach((itm) => {\r\n this.fillPath(itm, node.Path);\r\n });\r\n }\r\n\r\n /**\r\n * Sucht den übergeordneten Node im Tree\r\n * @param node Aktueller Node\r\n * @param nodeToFind Node welcher gefunden werden soll\r\n * @returns Node wenn er gefunden wurde, ansonsten wird NULL zurückgegeben\r\n */\r\n private findParentNode(\r\n node: IBrowserNode,\r\n nodeToFind: IBrowserNode\r\n ): IBrowserNode {\r\n if (node.ChildNodes.indexOf(nodeToFind) >= 0) {\r\n return node;\r\n }\r\n\r\n for (const child of node.ChildNodes) {\r\n const result = this.findParentNode(child, nodeToFind);\r\n if (result !== null) {\r\n return result;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Sucht einen Node gem. einem URL Pfad\r\n * @param node Node in welchem gesucht werden soll\r\n * @param path Pfad nach welchem gesucht wird\r\n * @returns Node welcher zum gesuchten Pfad passt. Wenn kein Node gefunden wird, wird NULL zurückgegeben\r\n */\r\n private findSelectedNodeByPath(\r\n node: IBrowserNode,\r\n path: string\r\n ): IBrowserNode {\r\n // Cancel wenn Pfad nicht definiert\r\n if (path === undefined || path === null) {\r\n return null;\r\n }\r\n\r\n // Pfad in Array splitten und Root Foldername setzen\r\n const pathArray = path.split('/');\r\n pathArray[0] = this.rootNode.Name;\r\n\r\n return this.findSelectedNodeByPathArray(node, pathArray, 0);\r\n }\r\n\r\n /**\r\n * Sucht einen Node gem. einem Array von Node Namen\r\n * @param node Node in welchem gesucht werden soll\r\n * @param path Array von Node Namen, welche die Hirarchy des Pfades abbilden\r\n * @param index Aktueller Index im PATH Array\r\n * @returns Node wenn einer gefunden wurde, ansonsten NULL\r\n */\r\n private findSelectedNodeByPathArray(\r\n node: IBrowserNode,\r\n path: string[],\r\n index: number\r\n ): IBrowserNode {\r\n // Check ob Ordner korrekt. Letzer Ordner zurückgeben. Path Last Index ist der Filename\r\n if (node.Name === path[index] && path.length - 2 === index) {\r\n return node;\r\n } else if (node.Name === path[index]) {\r\n // Expand Node\r\n node.IsExpanded = true;\r\n for (const item of node.ChildNodes) {\r\n const result = this.findSelectedNodeByPathArray(item, path, index + 1);\r\n\r\n if (result !== null) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Rekursive Methode welche beim Node und all seinen Childs den Edit Mode beendet.\r\n * @param node Node bei welchem der Edit Mode beendet werden soll\r\n */\r\n private resetNodeEditMode(node: IBrowserNode): void {\r\n if (node === null) {\r\n this.resetNodeEditMode(this.rootNode);\r\n } else {\r\n node.IsEditMode = false;\r\n\r\n if (node.ChildNodes) {\r\n node.ChildNodes.forEach((itm) => this.resetNodeEditMode(itm));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Setzt den Pfad in allen Nodes\r\n */\r\n private setPathToAllNodes() {\r\n this.rootNode.ChildNodes.forEach((itm) => {\r\n this.fillPath(itm, '');\r\n });\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { IconType } from '../enums/IconType';\r\n\r\n/**\r\n * Model für Sprachen\r\n */\r\nexport class LanguageModel {\r\n /**\r\n * ISO Code zu Sprache\r\n */\r\n public IsoCode: string;\r\n /**\r\n * Icon für Sprache\r\n */\r\n public Icon: string;\r\n /**\r\n * Bezeichnung für Sprache\r\n */\r\n public Text: string;\r\n /**\r\n * Typ des Icons. Default ist Image\r\n */\r\n public IconType: IconType = IconType.Image;\r\n}\r\n","/*\r\n * Public API Surface of sac-controls-common\r\n */\r\nexport { SacButtonCommon } from './controls/buttons/button';\r\nexport { SacCheckboxCommon } from './controls/checkbox/checkbox';\r\nexport { SacRadiobuttonCommon } from './controls/checkbox/radiobutton';\r\nexport { SacRadiobuttonsCommon } from './controls/checkbox/radiobuttons';\r\nexport { SacDialogCommon } from './controls/dialog/dialog';\r\nexport { SacFormCommon } from './controls/form/form';\r\nexport { SacFormLayoutCommon } from './controls/layout/formlayout';\r\nexport {\r\n SacDropdownCommon,\r\n SacDropdownOptionCommon,\r\n} from './controls/list/dropdown';\r\nexport {\r\n SacListboxCommon,\r\n SacListboxOptionCommon,\r\n} from './controls/list/listbox';\r\nexport { SacTabCommon } from './controls/tabs/tab';\r\nexport { SacTabItemCommon } from './controls/tabs/tabitem';\r\nexport { SacValidationSummaryCommon } from './controls/validation/validationsummary';\r\n\r\n// Input classes\r\nexport { SacInputCommon } from './controls/input/input';\r\nexport { SacInputAreaCommon } from './controls/input/inputarea';\r\nexport { SacInputCurrencyCommon } from './controls/input/inputcurrency';\r\nexport { SacInputDecimalCommon } from './controls/input/inputdecimal';\r\nexport { SacInputEmailCommon } from './controls/input/inputemail';\r\nexport { SacInputIntegerCommon } from './controls/input/inputinteger';\r\nexport { SacInputPasswordCommon } from './controls/input/inputpassword';\r\nexport { SacInputSearchCommon } from './controls/input/inputsearch';\r\n\r\n// Grid Classes\r\nexport { SacGridCommon } from './controls/grid/grid';\r\nexport { SacGridButtonCommon } from './controls/grid/gridbutton';\r\nexport { SacGridColumnCommon } from './controls/grid/gridcolumn';\r\nexport { SacGridColumnActionCommon } from './controls/grid/gridcolumnaction';\r\nexport { SacGridColumnBaseCommon } from './controls/grid/gridcolumnbase';\r\nexport { SacGridImageCommon } from './controls/grid/gridimage';\r\nexport * from './controls/grid/model';\r\nexport { SacPagingCommon } from './controls/grid/paging';\r\n\r\n// Datetime classes\r\nexport { SacDateCommon } from './controls/datetime/date';\r\nexport { SacDateSelectorCommon } from './controls/datetime/dateselector';\r\nexport { SacDateTimeCommon } from './controls/datetime/datetime';\r\nexport { SacTimeCommon } from './controls/datetime/time';\r\n\r\n// StaticLabel\r\nexport { SacStaticFormContainerCommon } from './controls/static/formcontainer';\r\nexport { SacStaticLabelCommon } from './controls/static/staticlabel';\r\n\r\n// Wizard\r\nexport { SacWizardCommon } from './controls/wizard/wizard';\r\nexport { SacWizardItemCommon } from './controls/wizard/wizarditem';\r\n\r\n// TinyMCE\r\nexport { SacTinyMceCommon } from './controls/tinymce/tinymce';\r\n\r\n// TreeView\r\nexport { SacTreeItemActionCommon } from './controls/treeview/ngtreeitemaction';\r\nexport { SacTreeViewCommon } from './controls/treeview/treeview';\r\nexport { SacTreeViewChildCommon } from './controls/treeview/treeviewchild';\r\n\r\n// Tooltip\r\nexport { SacTooltipCommon } from './controls/tooltip/tooltip';\r\n\r\n// Upload\r\nexport { SacUploadFile } from './common/baseuploadcontrol';\r\nexport { SacDropzoneMultipleCommon } from './controls/upload/dropzonemultiple';\r\nexport { SacDropzoneSingleCommon } from './controls/upload/dropzonesingle';\r\nexport { SacUploadMultipleCommon } from './controls/upload/uploadmultiple';\r\nexport { SacUploadSingleCommon } from './controls/upload/uploadsingle';\r\n\r\n// MultiLanguage classes\r\nexport { SacMultilanguageInputCommon } from './controls/multilanguage/multilanguageinput';\r\nexport { SacMultilanguageInputAreaCommon } from './controls/multilanguage/multilanguageinputarea';\r\n\r\n// Confirm Service\r\nexport { SacConfirmCommon } from './controls/confirm/confirm';\r\nexport { SacConfirmButton } from './controls/confirm/confirm.button';\r\nexport * from './controls/confirm/confirm.service';\r\nexport * from './interfaces/iconfirmcomponent';\r\n\r\n// Context Menu\r\nexport * from './controls/contextmenu/contextmenu';\r\nexport * from './controls/contextmenu/contextmenuanchor';\r\nexport * from './controls/contextmenu/contextmenucontainer';\r\nexport * from './controls/contextmenu/contextmenuitem';\r\nexport * from './controls/contextmenu/contextmenuitembutton';\r\n\r\n// File Browser\r\nexport { SacFileBrowserCommon } from './components/browser/browser';\r\nexport { IBrowserFile } from './components/browser/models/browserfile';\r\nexport { IBrowserNode } from './components/browser/models/browsernode';\r\n\r\n// Services\r\nexport * from './interfaces/ISacFileBrowserService';\r\nexport * from './interfaces/ISacIconService';\r\nexport * from './interfaces/ISacLanguageService';\r\nexport * from './interfaces/ISacLocalisationService';\r\nexport * from './interfaces/ISacValidationKeyService';\r\nexport {\r\n SACCONFIGURATION_SERVICE,\r\n SACFILEBROWSER_SERVICE,\r\n SACICON_SERVICE,\r\n SACLANGUAGE_SERVICE,\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacAbstractConfigurationService,\r\n SacAbstractFileBrowserService,\r\n SacAbstractIconService,\r\n SacAbstractLanguageService,\r\n SacAbstractLocalisationService,\r\n} from './services';\r\n\r\n// Export Interfaces\r\nexport * from './interfaces/ISacLabelSizes';\r\nexport * from './interfaces/iabstractcontrollabel';\r\n\r\n// Export Models\r\nexport * from './models/languagemodel';\r\n\r\n// Export Enums\r\nexport * from './enums/ButtonRoleType';\r\nexport * from './enums/ControlHeight';\r\nexport * from './enums/IconType';\r\n\r\n// Export Validators\r\nexport * from './validation';\r\n\r\n// Export of Modules\r\n\r\n// Export Utlities\r\nexport * from './utilities/convertion';\r\nexport * from './utilities/datatypes';\r\nexport * from './utilities/enums';\r\nexport * from './utilities/interpolation';\r\nexport * from './utilities/positioning';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SacFormLayoutCommon","moment","i1.SacRadiobuttonsCommon","i1","i1.SacFormCommon","i1.SacGridCommon","i1.SacContextmenuCommon"],"mappings":"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"}
1
+ {"version":3,"file":"simpleangularcontrols-sac-common.mjs","sources":["../../../projects/sac-common/src/controls/buttons/button.ts","../../../projects/sac-common/src/enums/ControlHeight.ts","../../../projects/sac-common/src/services/sac-configuration.service.ts","../../../projects/sac-common/src/components/browser/models/browserfiledeleterequest.ts","../../../projects/sac-common/src/components/browser/models/browserfilerenamerequest.ts","../../../projects/sac-common/src/components/browser/models/browserfilesaverequest.ts","../../../projects/sac-common/src/components/browser/models/browsernodedeleterequest.ts","../../../projects/sac-common/src/components/browser/models/browsernodenewrequest.ts","../../../projects/sac-common/src/components/browser/models/browsernoderenamerequest.ts","../../../projects/sac-common/src/components/browser/models/browsernoderequest.ts","../../../projects/sac-common/src/services/sac-filebrowser.service.ts","../../../projects/sac-common/src/services/sac-icon.service.ts","../../../projects/sac-common/src/enums/IconType.ts","../../../projects/sac-common/src/services/sac-language.service.ts","../../../projects/sac-common/src/utilities/datatypes.ts","../../../projects/sac-common/src/utilities/interpolation.ts","../../../projects/sac-common/src/services/sac-validationkey.service.ts","../../../projects/sac-common/src/services/sac-localisation.service.ts","../../../projects/sac-common/src/utilities/convertion.ts","../../../projects/sac-common/src/utilities/guid.ts","../../../projects/sac-common/src/controls/layout/formlayout.ts","../../../projects/sac-common/src/common/basemodelcontrol.ts","../../../projects/sac-common/src/controls/checkbox/checkbox.ts","../../../projects/sac-common/src/validation/validationerroritem.ts","../../../projects/sac-common/src/validation/validationerrorcreator.ts","../../../projects/sac-common/src/validation/isDateValid.ts","../../../projects/sac-common/src/validation/invaliddate.validator.ts","../../../projects/sac-common/src/validation/maxdate.validator.ts","../../../projects/sac-common/src/validation/maxtime.validator.ts","../../../projects/sac-common/src/validation/maxvalue.validator.ts","../../../projects/sac-common/src/validation/mindate.validator.ts","../../../projects/sac-common/src/validation/minfiles.validator.ts","../../../projects/sac-common/src/validation/minlength.validator.ts","../../../projects/sac-common/src/validation/mintime.validator.ts","../../../projects/sac-common/src/validation/minvalue.validator.ts","../../../projects/sac-common/src/validation/multilanguagerequired.validator.ts","../../../projects/sac-common/src/validation/multilanguagerequiredany.validator.ts","../../../projects/sac-common/src/validation/pattern.validator.ts","../../../projects/sac-common/src/validation/required.validator.ts","../../../projects/sac-common/src/validation/email.validator.ts","../../../projects/sac-common/src/validation/validation.ts","../../../projects/sac-common/src/controls/checkbox/radiobuttons.ts","../../../projects/sac-common/src/controls/checkbox/radiobutton.ts","../../../projects/sac-common/src/controls/dialog/dialog.ts","../../../projects/sac-common/src/controls/form/form.ts","../../../projects/sac-common/src/common/baselistcontrol.ts","../../../projects/sac-common/src/common/baseselectcontrol.ts","../../../projects/sac-common/src/controls/list/dropdown.ts","../../../projects/sac-common/src/controls/list/listbox.ts","../../../projects/sac-common/src/controls/tabs/tab.ts","../../../projects/sac-common/src/controls/tabs/tabitem.ts","../../../projects/sac-common/src/controls/validation/validationsummary.ts","../../../projects/sac-common/src/common/baseinputcontrol.ts","../../../projects/sac-common/src/controls/input/input.ts","../../../projects/sac-common/src/controls/input/inputarea.ts","../../../projects/sac-common/src/controls/input/inputdecimal.ts","../../../projects/sac-common/src/controls/input/inputcurrency.ts","../../../projects/sac-common/src/controls/input/inputemail.ts","../../../projects/sac-common/src/controls/input/inputinteger.ts","../../../projects/sac-common/src/controls/input/inputpassword.ts","../../../projects/sac-common/src/controls/input/inputsearch.ts","../../../projects/sac-common/src/controls/grid/model.ts","../../../projects/sac-common/src/controls/grid/grid.ts","../../../projects/sac-common/src/controls/grid/gridbutton.ts","../../../projects/sac-common/src/controls/grid/gridcolumnbase.ts","../../../projects/sac-common/src/controls/grid/gridcolumn.ts","../../../projects/sac-common/src/controls/grid/gridcolumnaction.ts","../../../projects/sac-common/src/controls/grid/gridimage.ts","../../../projects/sac-common/src/controls/grid/paging.ts","../../../projects/sac-common/src/common/basedatetimecontrol.ts","../../../projects/sac-common/src/controls/datetime/date.ts","../../../projects/sac-common/src/controls/datetime/dateselector.ts","../../../projects/sac-common/src/controls/datetime/datetime.ts","../../../projects/sac-common/src/controls/datetime/time.ts","../../../projects/sac-common/src/controls/static/formcontainer.ts","../../../projects/sac-common/src/controls/static/staticlabel.ts","../../../projects/sac-common/src/controls/wizard/wizard.ts","../../../projects/sac-common/src/controls/wizard/wizarditem.ts","../../../projects/sac-common/src/controls/tinymce/tinymcedialogsettings.ts","../../../projects/sac-common/src/controls/tinymce/tinymce.ts","../../../projects/sac-common/src/controls/treeview/ngtreeitemaction.ts","../../../projects/sac-common/src/controls/treeview/treeview.ts","../../../projects/sac-common/src/controls/treeview/treeviewchild.ts","../../../projects/sac-common/src/utilities/enums.ts","../../../projects/sac-common/src/controls/tooltip/tooltip.ts","../../../projects/sac-common/src/common/baseuploadcontrol.ts","../../../projects/sac-common/src/controls/upload/dropzonemultiple.ts","../../../projects/sac-common/src/controls/upload/dropzonesingle.ts","../../../projects/sac-common/src/controls/upload/uploadmultiple.ts","../../../projects/sac-common/src/controls/upload/uploadsingle.ts","../../../projects/sac-common/src/controls/multilanguage/multilanguageinput.ts","../../../projects/sac-common/src/controls/multilanguage/multilanguageinputarea.ts","../../../projects/sac-common/src/controls/confirm/confirm.ts","../../../projects/sac-common/src/controls/confirm/confirm.button.ts","../../../projects/sac-common/src/controls/confirm/confirm.service.ts","../../../projects/sac-common/src/utilities/positioning.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenuanchor.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenucontainer.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenu.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenuitem.ts","../../../projects/sac-common/src/controls/contextmenu/contextmenuitembutton.ts","../../../projects/sac-common/src/components/browser/browser.ts","../../../projects/sac-common/src/models/languagemodel.ts","../../../projects/sac-common/src/public_api.ts","../../../projects/sac-common/src/simpleangularcontrols-sac-common.ts"],"sourcesContent":["import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BUTTONROLETYPE } from '../../enums/ButtonRoleType';\r\n\r\n/**\r\n * Base Komponente für das Button\r\n */\r\n@Directive()\r\nexport class SacButtonCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Boolean Property definiert, ob das Button 'disabled' ist; default - false\r\n */\r\n private _isdisabledvalue: boolean = false;\r\n /**\r\n * Das Property definiert die Rolle des Buttons. Standardwert ist 'default'.\r\n */\r\n private _role: BUTTONROLETYPE = 'default';\r\n\r\n /**\r\n * Input Property für Icon Style Klasse; default Wert - ''\r\n */\r\n @Input() public icon: string = '';\r\n /**\r\n * Input Property für Name; default Wert - ''\r\n */\r\n @Input() public name: string = '';\r\n /**\r\n * Input Property für Text des Buttons; default Wert - ''\r\n */\r\n @Input() public text: string = '';\r\n /**\r\n * Output Event Emitter\r\n */\r\n @Output()\r\n public clicked = new EventEmitter();\r\n\r\n /**\r\n * Das boolean property ist benutzt für Aktivation des Spinner des Button. Default ist false.\r\n */\r\n public _isloadingvalue: boolean = false;\r\n /**\r\n * Boolean Property für Error; default Wert - false\r\n */\r\n public hasError = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Deaktivieren von Buttons\r\n * @param v Deaktiviert den Button\r\n * @return Definiert ob der Button deaktiviert ist\r\n */\r\n @Input()\r\n public set isdisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isdisabledvalue = v as boolean;\r\n } else {\r\n this._isdisabledvalue = v === 'true';\r\n }\r\n }\r\n\r\n /**\r\n * Das Input property. Definiert der Status des islaoding property. Es ist benutzt für Aktivation des Spinner des Button.\r\n */\r\n @Input()\r\n public set isloading(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isloadingvalue = v as boolean;\r\n } else {\r\n this._isloadingvalue = v === 'true';\r\n }\r\n }\r\n\r\n /**\r\n * Definiert den Style des Buttons\r\n * @param v Definiert den Style des Buttons.\r\n * Folgende Typen sind Supported: primary, secondary, success, danger, warning, info, light, dark, link, default\r\n * @returns Type des Buttons\r\n */\r\n @Input()\r\n public set role(v: BUTTONROLETYPE) {\r\n // Validation of Input\r\n switch (v) {\r\n case '':\r\n case 'primary':\r\n case 'default':\r\n case 'light':\r\n case 'dark':\r\n case 'link':\r\n case 'success':\r\n case 'secondary':\r\n case 'danger':\r\n case 'warning':\r\n case 'info':\r\n // Empty Role is Default\r\n if (v === '') {\r\n this._role = 'default';\r\n } else {\r\n this._role = v;\r\n }\r\n break;\r\n default:\r\n throw new Error('Invalid role \" + v + \" for button.');\r\n }\r\n }\r\n\r\n /**\r\n * Getter Methode. Ergibt boolean Wert. Definiert, ob das Button desabled ist.\r\n */\r\n public get _isdisabled(): boolean {\r\n return this._isdisabledvalue;\r\n }\r\n\r\n public get isdisabled(): boolean | string {\r\n return this._isdisabledvalue;\r\n }\r\n\r\n public get isloading(): boolean | string {\r\n return this._isloadingvalue;\r\n }\r\n\r\n /**\r\n * Die Methode returns die definierte Style-Rolle des Buttons\r\n */\r\n public get role(): BUTTONROLETYPE {\r\n return this._role;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Die Methode wird ein Event aufrufen, wenn das Button geklickt wird UND das Button nicht disabled ODER isloading ist.\r\n */\r\n public buttonClick() {\r\n if (this._isdisabled === false && this._isloadingvalue === false) {\r\n this.clicked.emit();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","/**\r\n * Defines the height of the form controls\r\n */\r\nexport enum ControlHeight {\r\n /**\r\n * Default Componnent Height\r\n */\r\n Default = 0,\r\n /**\r\n * Small Component Height\r\n */\r\n Small = 1,\r\n /**\r\n * Large Component Height\r\n */\r\n Large,\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { ControlHeight } from '../enums/ControlHeight';\r\nimport { ISacConfigurationService } from '../interfaces/ISacConfigurationService';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * abstract class for configuration settings providing in components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractConfigurationService\r\n implements ISacConfigurationService\r\n{\r\n // #region Public Abstract Getters And Setters\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get ComponentHeight(): ControlHeight | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get CurrencyText(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get InlineErrorEnabled(): boolean;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeLg(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeMd(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeSm(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeXl(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeXs(): number | null;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get LabelSizeXxl(): number | null;\r\n\r\n // #endregion Public Abstract Getters And Setters\r\n}\r\n\r\n/**\r\n * default configuration service for components\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultConfigurationService extends SacAbstractConfigurationService {\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get ComponentHeight(): ControlHeight {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get CurrencyText(): string {\r\n return 'CHF';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get InlineErrorEnabled(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeLg(): number | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeMd(): number | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeSm(): number | null {\r\n return 4;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeXl(): number | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeXs(): number | null {\r\n return 12;\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get LabelSizeXxl(): number | null {\r\n return null;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * injection token for component configuration service\r\n */\r\nexport const SACCONFIGURATION_SERVICE =\r\n new InjectionToken<ISacConfigurationService>('SacConfigurationService');\r\n\r\n// #endregion Variables\r\n","/**\r\n * Klasse für API Request zum löschen eines Files\r\n */\r\nexport class BrowserFileDeleteRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initale Werte der Klasse\r\n */\r\n constructor(init?: Partial<BrowserFileDeleteRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n AllowedTypes: string;\r\n}\r\n","/**\r\n * Klasse für den API Request zum umbenennen einer Datei\r\n */\r\nexport class BrowserFileRenameRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserFileRenameRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad zu Datei\r\n */\r\n Path: string;\r\n /**\r\n * Neuer Dateiname\r\n */\r\n NewFilename: string;\r\n /**\r\n * Erlaubte Dateierweiterungen\r\n */\r\n AllowedTypes: string;\r\n}\r\n","/**\r\n * Request zum speichern einer hochgeladenen Datei\r\n */\r\nexport class BrowserFileSaveRequest {\r\n /**\r\n * Constructor\r\n * @param init Initale Parameter\r\n */\r\n constructor(init?: Partial<BrowserFileSaveRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad in welchem der Upload gespeichert werden soll\r\n */\r\n public Path: string;\r\n /**\r\n * Upload ID\r\n */\r\n public UploadId: string;\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n public AllowedTypes: string;\r\n}\r\n","/**\r\n * Klasse für API Request zum löschen eines Nodes\r\n */\r\nexport class BrowserNodeDeleteRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserNodeDeleteRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n}\r\n","/**\r\n * Klasse für API Request zum anlegen eines neuen Nodes\r\n */\r\nexport class BrowserNodeNewRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserNodeNewRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n /**\r\n * Name des neuen Nodes\r\n */\r\n NewFoldername: string;\r\n}\r\n","/**\r\n * Klasse für API Request zum umbenennen eines Nodes\r\n */\r\nexport class BrowserNodeRenameRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initiale Werte\r\n */\r\n constructor(init?: Partial<BrowserNodeRenameRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad\r\n */\r\n Path: string;\r\n /**\r\n * Neuer Name des Nodes\r\n */\r\n NewFoldername: string;\r\n}\r\n","/**\r\n * Klasse für den Request eines Nodes\r\n */\r\nexport class BrowserNodeRequest {\r\n /**\r\n * Konstruktor\r\n * @param init Initale Werte für die Instanz\r\n */\r\n constructor(init?: Partial<BrowserNodeRequest>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Pfad des Nodes\r\n */\r\n public Path: string;\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n public AllowedTypes: string;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BrowserFileDeleteRequest } from '../components/browser/models/browserfiledeleterequest';\r\nimport { BrowserFileRenameRequest } from '../components/browser/models/browserfilerenamerequest';\r\nimport { IBrowserFileResponse } from '../components/browser/models/browserfileresponse';\r\nimport { BrowserFileSaveRequest } from '../components/browser/models/browserfilesaverequest';\r\nimport { BrowserNodeDeleteRequest } from '../components/browser/models/browsernodedeleterequest';\r\nimport { BrowserNodeNewRequest } from '../components/browser/models/browsernodenewrequest';\r\nimport { BrowserNodeRenameRequest } from '../components/browser/models/browsernoderenamerequest';\r\nimport { BrowserNodeRequest } from '../components/browser/models/browsernoderequest';\r\nimport { IBrowserNodeResponse } from '../components/browser/models/browsernoderesponse';\r\nimport { ISacFileBrowserService } from '../interfaces/ISacFileBrowserService';\r\n\r\n/**\r\n * Injection Token für Language Service\r\n */\r\nexport const SACFILEBROWSER_SERVICE =\r\n new InjectionToken<ISacFileBrowserService>('FileBrowserService');\r\n\r\n/**\r\n * Abstrakte Implementierung des File Service für die Browser Component\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class SacAbstractFileBrowserService\r\n implements ISacFileBrowserService\r\n{\r\n /**\r\n * Gibt einen Node zurück\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Node welcher angefordert wird\r\n * @param allowedextensions Erlaubte Extensions die angezeigt werden dürfen\r\n */\r\n abstract GetNode(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Speichert einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem der Node gespeichert werden soll\r\n * @param newFoldername Name des neuen Nodes\r\n */\r\n abstract SaveNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Rename eines Nodes\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher umbenannt werden soll\r\n * @param newFoldername Neuer Name des Nodes\r\n */\r\n abstract RenameNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Löscht einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher gelöscht werden soll\r\n */\r\n abstract DeleteNode(\r\n apiurl: string,\r\n path: string\r\n ): Observable<IBrowserNodeResponse>;\r\n\r\n /**\r\n * Methode welche die Dateien eines Nodes ausliest\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes in welchem die Files gelesen werden sollen\r\n * @param allowedextensions Erlaubte File Extensions\r\n */\r\n abstract GetFiles(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n\r\n /**\r\n * Speichert eine Hochgeladene Datei in der Struktur\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem das neue File gespeichert werden soll\r\n * @param id ID des Uploads\r\n * @param allowedextensions Erlaubte Extensions für den Upload\r\n */\r\n abstract SaveFile(\r\n apiurl: string,\r\n path: string,\r\n id: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n\r\n /**\r\n * Methode welche eine Datei umbenannt\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad zum File welches umbenannt werden soll\r\n * @param newFilename Neuer Dateiname\r\n * @param allowedextensions Erlaubte Extension für Files\r\n */\r\n abstract RenameFile(\r\n apiurl: string,\r\n path: string,\r\n newFilename: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n\r\n /**\r\n * Löscht eine Datei\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Files welches gelöscht werden soll\r\n * @param allowedextensions Erlaubte Extensions für Files\r\n */\r\n abstract DeleteFile(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse>;\r\n}\r\n\r\n/**\r\n * Standardimplementierung des Backend Service für die File Browser Component\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SacDefaultFileBrowserService extends SacAbstractFileBrowserService {\r\n /**\r\n * Konstruktor\r\n * @param httpclient HTTP Client Service\r\n */\r\n constructor(private httpclient: HttpClient) {\r\n super();\r\n }\r\n\r\n /**\r\n * Gibt einen Node zurück\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Node welcher angefordert wird\r\n * @param allowedextensions Erlaubte Extensions die angezeigt werden dürfen\r\n */\r\n public GetNode(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/getnodes`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeRequest({\r\n Path: path,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Speichert einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem der Node gespeichert werden soll\r\n * @param newFoldername Name des neuen Nodes\r\n */\r\n public SaveNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/newnode`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeNewRequest({\r\n Path: path,\r\n NewFoldername: newFoldername,\r\n });\r\n\r\n return this.httpclient.post<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Rename eines Nodes\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher umbenannt werden soll\r\n * @param newFoldername Neuer Name des Nodes\r\n */\r\n public RenameNode(\r\n apiurl: string,\r\n path: string,\r\n newFoldername: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/renamenode`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeRenameRequest({\r\n Path: path,\r\n NewFoldername: newFoldername,\r\n });\r\n\r\n return this.httpclient.put<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Löscht einen Node\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes welcher gelöscht werden soll\r\n */\r\n public DeleteNode(\r\n apiurl: string,\r\n path: string\r\n ): Observable<IBrowserNodeResponse> {\r\n const url = `${apiurl}/deletenode`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeDeleteRequest({\r\n Path: path,\r\n });\r\n\r\n return this.httpclient.post<IBrowserNodeResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Methode welche die Dateien eines Nodes ausliest\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Nodes in welchem die Files gelesen werden sollen\r\n * @param allowedextensions Erlaubte File Extensions\r\n */\r\n public GetFiles(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/getfiles`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserNodeRequest({\r\n Path: path,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Speichert eine Hochgeladene Datei in der Struktur\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad in welchem das neue File gespeichert werden soll\r\n * @param id ID des Uploads\r\n * @param allowedextensions Erlaubte Extensions für den Upload\r\n */\r\n public SaveFile(\r\n apiurl: string,\r\n path: string,\r\n id: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/uploadfile`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserFileSaveRequest({\r\n Path: path,\r\n UploadId: id,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Löscht eine Datei\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad des Files welches gelöscht werden soll\r\n * @param allowedextensions Erlaubte Extensions für Files\r\n */\r\n public DeleteFile(\r\n apiurl: string,\r\n path: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/deletefile`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserFileDeleteRequest({\r\n Path: path,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.post<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n\r\n /**\r\n * Methode welche eine Datei umbenannt\r\n * @param apiurl URL zu API Service\r\n * @param path Pfad zum File welches umbenannt werden soll\r\n * @param newFilename Neuer Dateiname\r\n * @param allowedextensions Erlaubte Extension für Files\r\n */\r\n public RenameFile(\r\n apiurl: string,\r\n path: string,\r\n newFilename: string,\r\n allowedextensions: string\r\n ): Observable<IBrowserFileResponse> {\r\n const url = `${apiurl}/renamefile`;\r\n\r\n if (!path) {\r\n path = '';\r\n }\r\n\r\n const request = new BrowserFileRenameRequest({\r\n Path: path,\r\n NewFilename: newFilename,\r\n AllowedTypes: allowedextensions,\r\n });\r\n\r\n return this.httpclient.put<IBrowserFileResponse>(url, request, {\r\n withCredentials: true,\r\n });\r\n }\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { ISacIconService } from '../interfaces/ISacIconService';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * abstract class for icon providing in components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractIconService implements ISacIconService {\r\n // #region Public Abstract Getters And Setters\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentDeleteIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentEditIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderClosedIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderEmptyIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderNewIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentFolderOpenIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get BrowserComponentRefreshIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get ConfirmDefaultImage(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get ContextMenuOpenIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateComponentSelectorIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateTimeComponentSelectorIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateTimeSelectorComponentMonthNextIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get DateTimeSelectorComponentMonthPrevIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get GridComponentSortDown(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get GridComponentSortUp(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get TimeComponentSelectorIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentBrowseIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentContinueIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentDeleteIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentPauseIcon(): string;\r\n /**\r\n * @inheritdoc\r\n */\r\n public abstract get UploadComponentUploadIcon(): string;\r\n\r\n // #endregion Public Abstract Getters And Setters\r\n}\r\n\r\n/**\r\n * default icons service for components\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultIconService extends SacAbstractIconService {\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentDeleteIcon(): string {\r\n return 'fas fa-trash';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentEditIcon(): string {\r\n return 'fas fa-pen';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderClosedIcon(): string {\r\n return 'fa fa-folder-plus';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderEmptyIcon(): string {\r\n return 'fa fa-folder';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderNewIcon(): string {\r\n return 'far fa-folder';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentFolderOpenIcon(): string {\r\n return 'fa fa-folder-open';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get BrowserComponentRefreshIcon(): string {\r\n return 'fas fa-sync-alt';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get ConfirmDefaultImage(): string {\r\n return '/assets/icons/dialog/question.png';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get ContextMenuOpenIcon(): string {\r\n return 'fas fa-ellipsis-v';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateComponentSelectorIcon(): string {\r\n return 'fa fa-calendar';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateTimeComponentSelectorIcon(): string {\r\n return 'fa fa-calendar';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateTimeSelectorComponentMonthNextIcon(): string {\r\n return 'fa fa-chevron-right';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get DateTimeSelectorComponentMonthPrevIcon(): string {\r\n return 'fa fa-chevron-left';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get GridComponentSortDown(): string {\r\n return 'fa fa-caret-down';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get GridComponentSortUp(): string {\r\n return 'fa fa-caret-up';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get TimeComponentSelectorIcon(): string {\r\n return 'fa fa-clock';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentBrowseIcon(): string {\r\n return 'fa fa-folder-open';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentContinueIcon(): string {\r\n return 'fa fa-play';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentDeleteIcon(): string {\r\n return 'fa fa-times';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentPauseIcon(): string {\r\n return 'fa fa-pause';\r\n }\r\n\r\n /**\r\n * @inheritdoc\r\n */\r\n public get UploadComponentUploadIcon(): string {\r\n return 'fa fa-upload';\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * injection token for component icon service\r\n */\r\nexport const SACICON_SERVICE = new InjectionToken<ISacIconService>(\r\n 'SacIconService'\r\n);\r\n\r\n// #endregion Variables\r\n","/**\r\n * Enum für Icon Types in Componenten\r\n */\r\nexport enum IconType {\r\n Image = 1,\r\n CssSprite = 2\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLanguageService } from '../interfaces/ISacLanguageService';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { IconType } from '../enums/IconType';\r\n\r\n/**\r\n * injection token for language service\r\n */\r\nexport const SACLANGUAGE_SERVICE = new InjectionToken<ISacLanguageService>(\r\n 'SacLanguageService'\r\n);\r\n\r\n/**\r\n * abstract class for languages provides in components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractLanguageService\r\n implements ISacLanguageService\r\n{\r\n /**\r\n * @inheritdoc\r\n */\r\n abstract GetLanguages(): Observable<LanguageModel[]>;\r\n}\r\n\r\n/**\r\n * default service for languages\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultLanguageService extends SacAbstractLanguageService {\r\n /**\r\n * @inheritdoc\r\n */\r\n public GetLanguages(): Observable<LanguageModel[]> {\r\n return new Observable<LanguageModel[]>((observer) => {\r\n const result: LanguageModel[] = [];\r\n\r\n result.push({\r\n Icon: '/icons/en.png',\r\n IconType: IconType.Image,\r\n IsoCode: 'en',\r\n Text: 'English',\r\n });\r\n\r\n observer.next(result);\r\n observer.complete();\r\n });\r\n }\r\n}\r\n","/**\r\n * Prüft ob ein Objekt Defined ist\r\n * @param value Objekt\r\n * @return Objekt ist definied. TRUE wenn Objekt definied. FALSE wenn Objekt NULL oder UNDEFINED.\r\n */\r\nexport function isDefined(value: any): boolean {\r\n return typeof value !== 'undefined' && value !== null;\r\n}\r\n","import { isDefined } from './datatypes';\r\n\r\n/**\r\n * Klasse zum ersetzen von Platzhaltern in Strings\r\n */\r\nexport class Interpolation {\r\n\r\n /**\r\n * Template zum Parsen der Platzhalter\r\n */\r\n private templateMatcher: RegExp = /{{\\s?([^{}\\s]*)\\s?}}/g;\r\n\r\n /**\r\n * Platzhalter in String ersetzen\r\n * @param text Text in welchem die Platzhalter ersetzt werden\r\n * @param params Objekt mit Parameter.\r\n */\r\n public interpolateString(text: string, params?: any) {\r\n if (!params) {\r\n return text;\r\n }\r\n\r\n return text.replace(this.templateMatcher, (substring: string, b: string) => {\r\n const r = this.getValue(params, b);\r\n return isDefined(r) ? r : substring;\r\n });\r\n }\r\n\r\n /**\r\n * Wert aus Objekt in Objekt oder Objektstruktur lesen\r\n * @param target Objekt das zu parsen ist.\r\n * @param key Key nach welchem gesucht wird. Navigation in Properties des Objekt mit einem Punkt.\r\n */\r\n private getValue(target: any, key: string): any {\r\n const keys = key.split('.');\r\n key = '';\r\n do {\r\n key += keys.shift();\r\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\r\n target = target[key];\r\n key = '';\r\n } else if (!keys.length) {\r\n target = undefined;\r\n } else {\r\n key += '.';\r\n }\r\n } while (keys.length);\r\n\r\n return target;\r\n }\r\n\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { ISacValidationKeyService } from '../interfaces/ISacValidationKeyService';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultValidationKeyService\r\n implements ISacValidationKeyService\r\n{\r\n // #region Public Getters And Setters\r\n\r\n public get ConfirmDefaultButtonNo(): string {\r\n return 'CONFIRM_BUTTON_NO';\r\n }\r\n\r\n public get ConfirmDefaultButtonYes(): string {\r\n return 'CONFIRM_BUTTON_YES';\r\n }\r\n\r\n public get FilebrowserButtonDelete(): string {\r\n return 'FILEBROWSER_DELETE';\r\n }\r\n\r\n public get FilebrowserButtonNewFolder(): string {\r\n return 'FILEBROWSER_NEWFOLDER';\r\n }\r\n\r\n public get FilebrowserButtonRefresh(): string {\r\n return 'FILEBROWSER_REFRESH';\r\n }\r\n\r\n public get FilebrowserButtonUpload(): string {\r\n return 'FILEBROWSER_UPLOAD';\r\n }\r\n\r\n public get FilebrowserConfirmTextDeleteFile(): string {\r\n return 'FILEBROWSER_CONFIRM_DELETEFILE';\r\n }\r\n\r\n public get FilebrowserConfirmTextDeleteFolder(): string {\r\n return 'FILEBROWSER_CONFIRM_DELETEFOLDER';\r\n }\r\n\r\n public get FilebrowserGridFilename(): string {\r\n return 'FILEBROWSER_GRID_FILE';\r\n }\r\n\r\n public get FilebrowserGridNoFiles(): string {\r\n return 'FILEBROWSER_NO_FILES';\r\n }\r\n\r\n public get FilebrowserGridSize(): string {\r\n return 'FILEBROWSER_GRID_SIZE';\r\n }\r\n\r\n public get PagingEntries(): string {\r\n return 'PAGING_PAGEENTRIESTEXT';\r\n }\r\n\r\n public get PagingPageOf(): string {\r\n return 'PAGING_PAGEOFTEXT';\r\n }\r\n\r\n public get TinyMceFileselectCancel(): string {\r\n return 'TINYMCE_FILESELECT_CANCEL';\r\n }\r\n\r\n public get TinyMceFileselectDialogtitle(): string {\r\n return 'TINYMCE_FILESELECT_DIALOGTITLE';\r\n }\r\n\r\n public get TinyMceFileselectOk(): string {\r\n return 'TINYMCE_FILESELECT_OK';\r\n }\r\n\r\n public get UploadButtonBrowse(): string {\r\n return 'UPLOAD_BUTTON_BROWSE';\r\n }\r\n\r\n public get UploadButtonUpload(): string {\r\n return 'UPLOAD_BUTTON_UPLOAD';\r\n }\r\n\r\n public get UploadNoFilesSelected(): string {\r\n return 'UPLOAD_NO_FILE_SELECTED';\r\n }\r\n\r\n public get ValidationErrorDatetimeFormat(): string {\r\n return 'VALIDATION_ERROR_DATETIMEFORMAT';\r\n }\r\n\r\n public get ValidationErrorEmail(): string {\r\n return 'VALIDATION_ERROR_EMAIL';\r\n }\r\n\r\n public get ValidationErrorFilesMin(): string {\r\n return 'VALIDATION_ERROR_FILESMIN';\r\n }\r\n\r\n public get ValidationErrorMaxDate(): string {\r\n return 'VALIDATION_ERROR_MAXDATE';\r\n }\r\n\r\n public get ValidationErrorMaxTime(): string {\r\n return 'VALIDATION_ERROR_MAXTIME';\r\n }\r\n\r\n public get ValidationErrorMaxValue(): string {\r\n return 'VALIDATION_ERROR_MAXVALUE';\r\n }\r\n\r\n public get ValidationErrorMinDate(): string {\r\n return 'VALIDATION_ERROR_MINDATE';\r\n }\r\n\r\n public get ValidationErrorMinLength(): string {\r\n return 'VALIDATION_ERROR_MINLENGTH';\r\n }\r\n\r\n public get ValidationErrorMinTime(): string {\r\n return 'VALIDATION_ERROR_MINTIME';\r\n }\r\n\r\n public get ValidationErrorMinValue(): string {\r\n return 'VALIDATION_ERROR_MINVALUE';\r\n }\r\n\r\n public get ValidationErrorMultilanguageRequired(): string {\r\n return 'VALIDATION_ERROR_MULTILANGUAGEREQUIRED';\r\n }\r\n\r\n public get ValidationErrorMultilanguageRequiredAny(): string {\r\n return 'VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY';\r\n }\r\n\r\n public get ValidationErrorPattern(): string {\r\n return 'VALIDATION_ERROR_PATTERN';\r\n }\r\n\r\n // Generic Messages\r\n public get ValidationErrorRequired(): string {\r\n return 'VALIDATION_ERROR_REQUIRED';\r\n }\r\n\r\n public get ValidationErrorSummaryDatetimeFormat(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT';\r\n }\r\n\r\n public get ValidationErrorSummaryEmail(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_EMAIL';\r\n }\r\n\r\n public get ValidationErrorSummaryFilesMin(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_FILESMIN';\r\n }\r\n\r\n public get ValidationErrorSummaryMaxDate(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MAXDATE';\r\n }\r\n\r\n public get ValidationErrorSummaryMaxTime(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MAXTIME';\r\n }\r\n\r\n public get ValidationErrorSummaryMaxValue(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MAXVALUE';\r\n }\r\n\r\n public get ValidationErrorSummaryMinDate(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINDATE';\r\n }\r\n\r\n public get ValidationErrorSummaryMinLength(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINLENGTH';\r\n }\r\n\r\n public get ValidationErrorSummaryMinTime(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINTIME';\r\n }\r\n\r\n public get ValidationErrorSummaryMinValue(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MINVALUE';\r\n }\r\n\r\n public get ValidationErrorSummaryMultilanguageRequired(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED';\r\n }\r\n\r\n public get ValidationErrorSummaryMultilanguageRequiredAny(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY';\r\n }\r\n\r\n public get ValidationErrorSummaryPattern(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_PATTERN';\r\n }\r\n\r\n public get ValidationErrorSummaryRequired(): string {\r\n return 'VALIDATION_ERROR_SUMMARY_REQUIRED';\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n\r\n/**\r\n * injection token for localisation service\r\n */\r\nexport const SACVALIDATIONKEY_SERVICE =\r\n new InjectionToken<ISacValidationKeyService>('SacValidationkeyService');\r\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../interfaces/ISacValidationKeyService';\r\nimport { Interpolation } from '../utilities/interpolation';\r\nimport { SACVALIDATIONKEY_SERVICE } from './sac-validationkey.service';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * abstract class for localisation in components\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport abstract class SacAbstractLocalisationService\r\n implements ISacLocalisationService\r\n{\r\n // #region Protected Abstract Getters And Setters\r\n\r\n protected abstract get CONFIRM_BUTTON_NO(): Map<string, string>;\r\n protected abstract get CONFIRM_BUTTON_YES(): Map<string, string>;\r\n protected abstract get FILEBROWSER_CONFIRM_DELETEFILE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_CONFIRM_DELETEFOLDER(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get FILEBROWSER_DELETE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_GRID_FILE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_GRID_SIZE(): Map<string, string>;\r\n protected abstract get FILEBROWSER_NEWFOLDER(): Map<string, string>;\r\n protected abstract get FILEBROWSER_NO_FILES(): Map<string, string>;\r\n protected abstract get FILEBROWSER_REFRESH(): Map<string, string>;\r\n protected abstract get FILEBROWSER_UPLOAD(): Map<string, string>;\r\n protected abstract get PAGING_PAGEENTRIESTEXT(): Map<string, string>;\r\n protected abstract get PAGING_PAGEOFTEXT(): Map<string, string>;\r\n protected abstract get TINYMCE_FILESELECT_CANCEL(): Map<string, string>;\r\n protected abstract get TINYMCE_FILESELECT_DIALOGTITLE(): Map<string, string>;\r\n protected abstract get TINYMCE_FILESELECT_OK(): Map<string, string>;\r\n protected abstract get UPLOAD_BUTTON_BROWSE(): Map<string, string>;\r\n protected abstract get UPLOAD_BUTTON_UPLOAD(): Map<string, string>;\r\n protected abstract get UPLOAD_NO_FILE_SELECTED(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_DATETIMEFORMAT(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_EMAIL(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_FILESMIN(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MAXDATE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MAXTIME(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MAXVALUE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINDATE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINLENGTH(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINTIME(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MINVALUE(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_MULTILANGUAGEREQUIRED(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_PATTERN(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_REQUIRED(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_EMAIL(): Map<string, string>;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_FILESMIN(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MAXDATE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MAXTIME(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MAXVALUE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINDATE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINLENGTH(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINTIME(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MINVALUE(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_PATTERN(): Map<\r\n string,\r\n string\r\n >;\r\n protected abstract get VALIDATION_ERROR_SUMMARY_REQUIRED(): Map<\r\n string,\r\n string\r\n >;\r\n\r\n // #endregion Protected Abstract Getters And Setters\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Die Methode übersetzt den eingegebenen Wort/Begriff. Verlangt key und optionell params\r\n */\r\n public abstract GetString(key: string, params?: any): Observable<string>;\r\n\r\n // #endregion Public Abstract Methods\r\n}\r\n\r\n/**\r\n * default localisation service\r\n * */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SacDefaultLocalisationService extends SacAbstractLocalisationService {\r\n // #region Properties\r\n\r\n /**\r\n * Language Resources für Controls Library\r\n */\r\n public data: Map<string, Map<string, string>> = new Map<\r\n string,\r\n Map<string, string>\r\n >();\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * */\r\n constructor(\r\n @Inject(SACVALIDATIONKEY_SERVICE)\r\n private validationKeyService: ISacValidationKeyService\r\n ) {\r\n super();\r\n\r\n // Set Languages\r\n this.data.set('de', new Map<string, string>());\r\n\r\n // Validation\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorRequired,\r\n this.VALIDATION_ERROR_REQUIRED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryRequired,\r\n this.VALIDATION_ERROR_SUMMARY_REQUIRED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinValue,\r\n this.VALIDATION_ERROR_MINVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinValue,\r\n this.VALIDATION_ERROR_SUMMARY_MINVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorPattern,\r\n this.VALIDATION_ERROR_PATTERN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryPattern,\r\n this.VALIDATION_ERROR_SUMMARY_PATTERN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMaxValue,\r\n this.VALIDATION_ERROR_MAXVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMaxValue,\r\n this.VALIDATION_ERROR_SUMMARY_MAXVALUE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorEmail,\r\n this.VALIDATION_ERROR_EMAIL.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryEmail,\r\n this.VALIDATION_ERROR_SUMMARY_EMAIL.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinLength,\r\n this.VALIDATION_ERROR_MINLENGTH.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinLength,\r\n this.VALIDATION_ERROR_SUMMARY_MINLENGTH.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinDate,\r\n this.VALIDATION_ERROR_MINDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinDate,\r\n this.VALIDATION_ERROR_SUMMARY_MINDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMaxDate,\r\n this.VALIDATION_ERROR_MAXDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMaxDate,\r\n this.VALIDATION_ERROR_SUMMARY_MAXDATE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMinTime,\r\n this.VALIDATION_ERROR_MINTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMinTime,\r\n this.VALIDATION_ERROR_SUMMARY_MINTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMaxTime,\r\n this.VALIDATION_ERROR_MAXTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMaxTime,\r\n this.VALIDATION_ERROR_SUMMARY_MAXTIME.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorDatetimeFormat,\r\n this.VALIDATION_ERROR_DATETIMEFORMAT.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryDatetimeFormat,\r\n this.VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorFilesMin,\r\n this.VALIDATION_ERROR_FILESMIN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryFilesMin,\r\n this.VALIDATION_ERROR_SUMMARY_FILESMIN.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMultilanguageRequiredAny,\r\n this.VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny,\r\n this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorMultilanguageRequired,\r\n this.VALIDATION_ERROR_MULTILANGUAGEREQUIRED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ValidationErrorSummaryMultilanguageRequired,\r\n this.VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED.get('de')\r\n );\r\n\r\n // Grid Component\r\n this.data\r\n .get('de')\r\n .set(validationKeyService.PagingPageOf, this.PAGING_PAGEOFTEXT.get('de'));\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.PagingEntries,\r\n this.PAGING_PAGEENTRIESTEXT.get('de')\r\n );\r\n\r\n // Upload Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.UploadNoFilesSelected,\r\n this.UPLOAD_NO_FILE_SELECTED.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.UploadButtonUpload,\r\n this.UPLOAD_BUTTON_UPLOAD.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.UploadButtonBrowse,\r\n this.UPLOAD_BUTTON_BROWSE.get('de')\r\n );\r\n\r\n // TinyMCE Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.TinyMceFileselectOk,\r\n this.TINYMCE_FILESELECT_OK.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.TinyMceFileselectCancel,\r\n this.TINYMCE_FILESELECT_CANCEL.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.TinyMceFileselectDialogtitle,\r\n this.TINYMCE_FILESELECT_DIALOGTITLE.get('de')\r\n );\r\n\r\n // Confirm Dialog Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ConfirmDefaultButtonYes,\r\n this.CONFIRM_BUTTON_YES.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.ConfirmDefaultButtonNo,\r\n this.CONFIRM_BUTTON_NO.get('de')\r\n );\r\n\r\n // Browser Component\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserGridNoFiles,\r\n this.FILEBROWSER_NO_FILES.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserGridFilename,\r\n this.FILEBROWSER_GRID_FILE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserGridSize,\r\n this.FILEBROWSER_GRID_SIZE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonUpload,\r\n this.FILEBROWSER_UPLOAD.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonNewFolder,\r\n this.FILEBROWSER_NEWFOLDER.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonRefresh,\r\n this.FILEBROWSER_REFRESH.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n validationKeyService.FilebrowserButtonDelete,\r\n this.FILEBROWSER_DELETE.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n this.validationKeyService.FilebrowserConfirmTextDeleteFolder,\r\n this.FILEBROWSER_CONFIRM_DELETEFOLDER.get('de')\r\n );\r\n this.data\r\n .get('de')\r\n .set(\r\n this.validationKeyService.FilebrowserConfirmTextDeleteFile,\r\n this.FILEBROWSER_CONFIRM_DELETEFILE.get('de')\r\n );\r\n\r\n // EN\r\n this.data.set('en', new Map<string, string>());\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Protected Getters And Setters\r\n\r\n protected get CONFIRM_BUTTON_NO(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Nein']]);\r\n }\r\n\r\n protected get CONFIRM_BUTTON_YES(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Ja']]);\r\n }\r\n\r\n protected get FILEBROWSER_CONFIRM_DELETEFILE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Soll die Datei gelöscht werden?']]);\r\n }\r\n\r\n protected get FILEBROWSER_CONFIRM_DELETEFOLDER(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Soll der Ordner gelöscht werden?'],\r\n ]);\r\n }\r\n\r\n protected get FILEBROWSER_DELETE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Löschen']]);\r\n }\r\n\r\n protected get FILEBROWSER_GRID_FILE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Dateiname']]);\r\n }\r\n\r\n protected get FILEBROWSER_GRID_SIZE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Grösse']]);\r\n }\r\n\r\n protected get FILEBROWSER_NEWFOLDER(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Neuer Ordner']]);\r\n }\r\n\r\n protected get FILEBROWSER_NO_FILES(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Keine Dateien vorhanden']]);\r\n }\r\n\r\n protected get FILEBROWSER_REFRESH(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Aktualisieren']]);\r\n }\r\n\r\n protected get FILEBROWSER_UPLOAD(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Legen Sie Dateien hier ab um Sie hochzuladen'],\r\n ]);\r\n }\r\n\r\n protected get PAGING_PAGEENTRIESTEXT(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Einträge pro Seite']]);\r\n }\r\n\r\n protected get PAGING_PAGEOFTEXT(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Seite {{CURRENTPAGE}} von {{TOTALPAGES}}'],\r\n ]);\r\n }\r\n\r\n protected get TINYMCE_FILESELECT_CANCEL(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Abbrechen']]);\r\n }\r\n\r\n protected get TINYMCE_FILESELECT_DIALOGTITLE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Datei auswählen']]);\r\n }\r\n\r\n protected get TINYMCE_FILESELECT_OK(): Map<string, string> {\r\n return new Map<string, string>([['de', 'OK']]);\r\n }\r\n\r\n protected get UPLOAD_BUTTON_BROWSE(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Browse...']]);\r\n }\r\n\r\n protected get UPLOAD_BUTTON_UPLOAD(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Upload']]);\r\n }\r\n\r\n protected get UPLOAD_NO_FILE_SELECTED(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Keine Datei ausgewählt']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_DATETIMEFORMAT(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Feld ist kein gültiges Datum.']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_EMAIL(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Feld ist keine E-Mail Adresse']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_FILESMIN(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Es müssen min. {{MINFILES}} Dateien hochgeladen sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MAXDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss älter oder gleich {{MAXDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MAXTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss älter oder gleich {{MAXTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MAXVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" darf nicht grösser als {{MAXVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss neuer oder gleich {{MINDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINLENGTH(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld erfordert min. {{MINLENGTH}} Zeichen.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld muss neuer oder gleich {{MINTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MINVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Wert darf nicht kleiner als {{MINVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MULTILANGUAGEREQUIRED(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Es müssen alle Sprachen erfasst sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n > {\r\n return new Map<string, string>([\r\n ['de', 'Es muss min. 1 Sprache erfasst sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_PATTERN(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Wert entspricht nicht der Format Vorlage.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_REQUIRED(): Map<string, string> {\r\n return new Map<string, string>([['de', 'Feld ist erforderlich.']]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" ist kein gültiges Datum.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_EMAIL(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" ist keine E-Mail Adresse'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_FILESMIN(): Map<string, string> {\r\n return new Map<string, string>([\r\n [\r\n 'de',\r\n 'Feld \"{{FIELD}}\" muss min. {{MINFILES}} Dateien hochgeladen haben.',\r\n ],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MAXDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss älter oder gleich {{MAXDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MAXTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss älter oder gleich {{MAXTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MAXVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Wert darf nicht grösser als {{MAXVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINDATE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss neuer oder gleich {{MINDATE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINLENGTH(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" erfordert min. {{MINLENGTH}} Zeichen.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINTIME(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss neuer oder gleich {{MINTIME}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MINVALUE(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" darf nicht kleiner als {{MINVALUE}} sein.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED(): Map<\r\n string,\r\n string\r\n > {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss alle Sprachen erfasst haben.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY(): Map<\r\n string,\r\n string\r\n > {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" muss min. 1 Sprache erfasst haben.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_PATTERN(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" entspricht nicht der Format Vorlage.'],\r\n ]);\r\n }\r\n\r\n protected get VALIDATION_ERROR_SUMMARY_REQUIRED(): Map<string, string> {\r\n return new Map<string, string>([\r\n ['de', 'Feld \"{{FIELD}}\" ist erforderlich.'],\r\n ]);\r\n }\r\n\r\n // #endregion Protected Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Die Methode ergibt die selecte Sprache (string) anhand von Key und Params\r\n */\r\n public GetString(key: string, params?: any): Observable<string> {\r\n return new Observable<string>((observer) => {\r\n let language: string = this.GetLanguage();\r\n\r\n if (!this.data.has(language)) {\r\n language = this.GetFallbackLanguage();\r\n\r\n // Return Key if no Language exists\r\n if (!this.data.has(language)) {\r\n observer.next(key);\r\n observer.complete();\r\n return;\r\n }\r\n }\r\n\r\n if (this.data.get(language).has(key)) {\r\n const resource = this.data.get(language).get(key);\r\n if (params !== undefined && params !== null) {\r\n const formatter: Interpolation = new Interpolation();\r\n observer.next(formatter.interpolateString(resource, params));\r\n observer.complete();\r\n return;\r\n } else {\r\n observer.next(resource);\r\n observer.complete();\r\n return;\r\n }\r\n } else {\r\n observer.next(key);\r\n observer.complete();\r\n return;\r\n }\r\n });\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Die Funktion setzt die default Sprache auf DE, falls die Sprach-Setzung nicht möglich ist.\r\n */\r\n private GetFallbackLanguage(): string {\r\n return 'de';\r\n }\r\n\r\n /**\r\n * Die Funktion ergibt die ausgewählte Sprache.\r\n */\r\n private GetLanguage(): string {\r\n const language: string = navigator.language;\r\n\r\n if (language.indexOf('-') >= 0) {\r\n return language.split('-')[0];\r\n } else {\r\n return language;\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * injection token for localisation service\r\n */\r\nexport const SACLOCALISATION_SERVICE =\r\n new InjectionToken<SacAbstractLocalisationService>('SacLocalisationService');\r\n\r\n// #endregion Variables\r\n","/**\r\n * Erzeugt ein Boolean\r\n * @param value\r\n */\r\nexport function convertToBoolean(value: any): boolean {\r\n if (value === null || value === undefined || typeof value === 'boolean') {\r\n return value;\r\n }\r\n\r\n return value.toString() === 'true';\r\n}\r\n\r\n/**\r\n * Erzeugt ein Number\r\n * @param value\r\n */\r\nexport function convertToNumber(value: any): number {\r\n if (value === null || value === undefined || typeof value === 'number') {\r\n return value;\r\n }\r\n\r\n return parseFloat(value.toString());\r\n}\r\n\r\n\r\n/**\r\n * Erzeugt aus einer Map ein Objekt\r\n * @param map Map mit Key und Values. Key ist ein String. Value kann ein Objekt sein.\r\n */\r\nexport function mapToObject(map: Map<string, any>): any {\r\n const obj = {};\r\n map.forEach((v, k) => {\r\n obj[k] = v;\r\n });\r\n return obj;\r\n}\r\n","// #region Functions\r\n\r\n/**\r\n * create a guid with crypto library if availabe and a fallback to Math.Random implementation\r\n */\r\nexport function createGuid(): string {\r\n if (typeof crypto !== undefined && crypto['randomUUID'] !== undefined) {\r\n // return guid without hyphen\r\n return crypto.randomUUID().replace(/\\-/gi, '');\r\n } else {\r\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0,\r\n v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n\r\n// #endregion Functions\r\n","import { Directive, Input } from '@angular/core';\r\nimport { ControlHeight } from '../../enums/ControlHeight';\r\n\r\n/***\r\n * base component for form options\r\n */\r\n@Directive()\r\nexport class SacFormLayoutCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Defines the standard height of the components\r\n */\r\n @Input() public componentHeight: ControlHeight | null = null;\r\n /**\r\n * defines that error messages are displayed under the controls\r\n */\r\n @Input() public inlineError: boolean | null = null;\r\n /**\r\n * defines that the labels are displayed as adaptive labels\r\n */\r\n @Input() public isAdaptiveLabel: boolean = false;\r\n /**\r\n * default labe size for large devices\r\n */\r\n @Input()\r\n public labelSizeLg: number | null = null;\r\n /**\r\n * default label size for medium devices\r\n */\r\n @Input()\r\n public labelSizeMd: number | null = null;\r\n /**\r\n * default label size for small devices\r\n */\r\n @Input()\r\n public labelSizeSm: number | null = null;\r\n /**\r\n * default label size for extra large devices\r\n */\r\n @Input()\r\n public labelSizeXl: number | null = null;\r\n /**\r\n * default label column size\r\n */\r\n @Input()\r\n public labelSizeXs: number | null = null;\r\n /**\r\n * default label size for extra extra large devices\r\n */\r\n @Input()\r\n public labelSizeXxl: number | null = null;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Returns whether the inline error messages for the form are active.\r\n */\r\n public get IsInlineErrorEnabled(): boolean {\r\n return this.inlineError;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n}\r\n","import { Directive, Host, Injector, Input, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControlName,\r\n FormGroupDirective,\r\n NgControl,\r\n UntypedFormControl,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ControlHeight } from '../enums/ControlHeight';\r\nimport { ISacConfigurationService } from '../interfaces/ISacConfigurationService';\r\nimport { ISacLabelSizes } from '../interfaces/ISacLabelSizes';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../interfaces/ISacValidationKeyService';\r\nimport { IAbstractControlLabelExtension } from '../interfaces/iabstractcontrollabel';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../services';\r\nimport {\r\n SACCONFIGURATION_SERVICE,\r\n SacDefaultConfigurationService,\r\n} from '../services/sac-configuration.service';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../services/sac-localisation.service';\r\nimport { convertToBoolean } from '../utilities/convertion';\r\nimport { createGuid } from '../utilities/guid';\r\nimport { ValidationErrorItem } from '../validation';\r\n/**\r\n * Abstract Klasse für SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit\r\n */\r\n@Directive()\r\nexport abstract class SacBaseModelControl<VALUE>\r\n implements ControlValueAccessor, Validator, OnInit\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * Inline Errors für das Control\r\n */\r\n private _inlineerrorenabled: boolean | null = null;\r\n private _label: string = '';\r\n\r\n /**\r\n * Service for loading default settings for the controls\r\n */\r\n protected readonly configurationService: ISacConfigurationService;\r\n\r\n /**\r\n * Boolean Property dirty; default Wert - false\r\n */\r\n protected _dirty: boolean = false;\r\n /**\r\n * SacModel Form ist disabled\r\n */\r\n protected _disabledForm: boolean = false;\r\n /**\r\n * Validator\r\n */\r\n protected _onChange: () => void;\r\n /**\r\n * Boolean Property touched; default Wert - false\r\n */\r\n protected _touched: boolean = false;\r\n /**\r\n * Interne Variable, die den Wert des Controls hält\r\n */\r\n protected _value: VALUE = null;\r\n /**\r\n * Form layout instance if exists\r\n */\r\n protected formlayout: SacFormLayoutCommon = null;\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n /**\r\n * ngControl\r\n */\r\n protected ngControl: UntypedFormControl;\r\n\r\n /**\r\n * Defines the standard height of the components\r\n */\r\n @Input()\r\n public componentHeight: ControlHeight | null = null;\r\n /**\r\n * Deaktiviert das Input Control\r\n */\r\n @Input() public disabled: boolean = false;\r\n /**\r\n * Deaktiviert das Label im Template\r\n */\r\n @Input() public disablelabel: boolean = false;\r\n /**\r\n * defines that error messages are displayed under the controls\r\n */\r\n @Input() public inlineError: boolean = true;\r\n /**\r\n * defines that the labels are displayed as adaptive labels\r\n */\r\n @Input() public isAdaptiveLabel: boolean = false;\r\n /**\r\n * default labe size for large devices\r\n */\r\n @Input()\r\n public labelSizeLg: number | null = null;\r\n /**\r\n * default label size for medium devices\r\n */\r\n @Input()\r\n public labelSizeMd: number | null = null;\r\n /**\r\n * default label size for small devices\r\n */\r\n @Input()\r\n public labelSizeSm: number | null = null;\r\n /**\r\n * default label size for extra large devices\r\n */\r\n @Input()\r\n public labelSizeXl: number | null = null;\r\n /**\r\n * default label column size\r\n */\r\n @Input()\r\n public labelSizeXs: number | null = null;\r\n /**\r\n * default label size for extra extra large devices\r\n */\r\n @Input()\r\n public labelSizeXxl: number | null = null;\r\n /**\r\n * Name des Controls\r\n */\r\n @Input() public name: string = createGuid();\r\n\r\n /**\r\n * ControlHeight enum for use in HTML markup\r\n */\r\n public ControlHeight: typeof ControlHeight = ControlHeight;\r\n /**\r\n * Leere Implementation von \"propagateChange\". Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n public propagateChange: any = () => {};\r\n /**\r\n * Leere Implementation von \"propagateTouch\". Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n public propagateTouch: any = () => {};\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n public validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(\r\n @Host() formlayout: SacFormLayoutCommon,\r\n private injector: Injector\r\n ) {\r\n this.formlayout = formlayout;\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.configurationService = injector.get(\r\n SACCONFIGURATION_SERVICE,\r\n new SacDefaultConfigurationService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Aktiviert oder Deaktiviert die Inline Errors für das Control\r\n */\r\n @Input()\r\n public set inlineerrorenabled(value: boolean | null) {\r\n if (value === null || value === undefined) {\r\n this._inlineerrorenabled = null;\r\n } else {\r\n this._inlineerrorenabled = convertToBoolean(value);\r\n }\r\n }\r\n\r\n /**\r\n * Definiert den Label Text\r\n */\r\n @Input() public set label(v: string) {\r\n this._label = v;\r\n this.UpdateLabelToControl();\r\n }\r\n\r\n /**\r\n * Set Methode für NgModel Binding in Html Markup\r\n * Input wird benötigt, damit der Wert auch über das Markup gesetzt werden kann.\r\n */\r\n @Input()\r\n public set value(v: VALUE) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this._value = this.ConvertInputValue(v);\r\n this.propagateChange(this._value);\r\n }\r\n\r\n /**\r\n * Methode ergibt Boolean Wert für dirty\r\n */\r\n public get dirty(): boolean {\r\n if (this.ngControl !== null) {\r\n this._dirty = this.ngControl.dirty;\r\n }\r\n\r\n return this._dirty;\r\n }\r\n\r\n public get inlineerrorenabled(): boolean | null {\r\n return this._inlineerrorenabled;\r\n }\r\n\r\n /**\r\n * Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist\r\n */\r\n public get invalid(): boolean {\r\n return (\r\n this.ngControl !== undefined &&\r\n this.ngControl !== null &&\r\n this.ngControl.invalid\r\n );\r\n }\r\n\r\n /**\r\n * Definiert ob das Control disabled ist\r\n */\r\n public get isdisabled(): boolean {\r\n return this._disabledForm || this.disabled;\r\n }\r\n\r\n /**\r\n * Returns whether the inline error messages are active for this control.\r\n */\r\n public get isinlineerrorenabled(): boolean {\r\n if (this._inlineerrorenabled !== null) {\r\n return this._inlineerrorenabled;\r\n }\r\n\r\n if (\r\n this.formlayout !== null &&\r\n this.formlayout.IsInlineErrorEnabled !== null\r\n ) {\r\n return this.formlayout?.IsInlineErrorEnabled;\r\n }\r\n\r\n if (this.configurationService.InlineErrorEnabled !== null) {\r\n return this.configurationService.InlineErrorEnabled;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Definiert den Label Text\r\n */\r\n public get label(): string {\r\n return this._label;\r\n }\r\n\r\n /**\r\n * returns an object with all label sizes. These values can then be transferred to corresponding CSS classes using a pipe\r\n */\r\n public get labelSizes(): ISacLabelSizes {\r\n return {\r\n labelSizeSm: this.labelSizeSm,\r\n labelSizeMd: this.labelSizeMd,\r\n labelSizeXs: this.labelSizeXs,\r\n labelSizeXl: this.labelSizeXl,\r\n labelSizeXxl: this.labelSizeXxl,\r\n labelSizeLg: this.labelSizeLg,\r\n };\r\n }\r\n\r\n /**\r\n * Methode ergibt Boolean Wert für touched\r\n */\r\n public get touched(): boolean {\r\n if (this.ngControl !== null) {\r\n this._touched = this.ngControl.touched;\r\n }\r\n\r\n return this._touched;\r\n }\r\n\r\n /**\r\n * Get Methode für NgModel Binding in Html Markup\r\n */\r\n public get value(): VALUE {\r\n return this._value;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode ergibt Error anhand von gegebenen Kriterien\r\n */\r\n public GetErrorMessage(): Observable<string> {\r\n if (this.ngControl.errors === undefined || this.ngControl.errors === null) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const errors: ValidationErrors = this.ngControl.errors;\r\n\r\n if (errors.length === 0) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const keys: string[] = Object.keys(errors);\r\n\r\n if (keys.length <= 0) {\r\n return new Observable<string>((observer) => {\r\n observer.next('');\r\n observer.complete();\r\n });\r\n }\r\n\r\n const errorItem: ValidationErrorItem = errors[keys[0]];\r\n\r\n // Validation Parameters\r\n const parameters = {};\r\n if (errorItem.parameters !== null && errorItem.parameters !== undefined) {\r\n errorItem.parameters.forEach((v, k) => {\r\n parameters[k] = v;\r\n });\r\n }\r\n parameters['FIELD'] = errorItem.fieldName;\r\n\r\n return this.lngResourceService.GetString(\r\n errorItem.errorMessageKey,\r\n parameters\r\n );\r\n }\r\n\r\n /**\r\n * Init Event\r\n */\r\n public ngOnInit() {\r\n // receive form via formcontrolname or formcontrol instance\r\n const formControl = this.injector.get(NgControl, null);\r\n if (formControl instanceof FormControlName) {\r\n const form = this.injector.get(FormGroupDirective, null);\r\n this.ngControl = form.getControl(formControl);\r\n } else {\r\n if (formControl) {\r\n this.ngControl = formControl.control as UntypedFormControl;\r\n }\r\n }\r\n\r\n this.UpdateLabelToControl();\r\n\r\n // set label sizes from formlayout directive\r\n this.setLabelSizes();\r\n\r\n // set component heigth from fromlayout directive\r\n this.setComponentHeight();\r\n\r\n // set adaptive label property from formlayout directive\r\n this.setIsAdaptiveLabel();\r\n\r\n this.OnClassInit();\r\n }\r\n\r\n /**\r\n * Methode ergibt boolean touched = true\r\n */\r\n public onTouch(): void {\r\n this._touched = true;\r\n this.propagateTouch();\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen im Control mitbekommen können\r\n * Zur Änderungsinfo die Methode propagateChange aufrufen.\r\n */\r\n public registerOnChange(fn: any): void {\r\n this.propagateChange = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen mitbekommen, wenn das Control aktiviert (Focus) wird.\r\n */\r\n public registerOnTouched(fn: any): void {\r\n this.propagateTouch = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode registriert Änderungen bei der Validierung\r\n */\r\n public registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Setzt das Control auf Disabled\r\n */\r\n public setDisabledState(isDisabled: boolean): void {\r\n this._disabledForm = isDisabled;\r\n }\r\n\r\n /**\r\n * Methode die den Wert des Inputs setzt\r\n */\r\n public setValue(v: VALUE): void {\r\n this.value = v;\r\n }\r\n\r\n /**\r\n * Validator Methode\r\n */\r\n public validate(c: AbstractControl): ValidationErrors | null {\r\n const error: ValidationErrors | null = this.validateData(c);\r\n return error;\r\n }\r\n\r\n /**\r\n * Methode zum schreiben von Werten aus dem Model in das Control\r\n */\r\n public writeValue(value: VALUE) {\r\n this._value = value;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Abstrakte Validator Methode\r\n */\r\n public abstract validateData(c: AbstractControl): ValidationErrors | null;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Method can Overwriten in Parent Classes\r\n * @param value Wert welcher in den korrekten Typ konvertiert werden soll\r\n * @returns Wert im korrekten Typ\r\n */\r\n protected ConvertInputValue(value: VALUE): VALUE {\r\n return value;\r\n }\r\n\r\n /**\r\n * Methode ergibt Decimal Symbol\r\n */\r\n protected GetDecimalSymbol(): string {\r\n return '.';\r\n }\r\n\r\n /**\r\n * Method can be used to Set Properties at Class Init\r\n */\r\n protected OnClassInit(): void {}\r\n\r\n /**\r\n * Aktualisiert den NgModel Wert und die Gültigkeit des Validators des Controls\r\n */\r\n protected UpdateValueAndValidity(): void {\r\n if (this.ngControl) {\r\n this.ngControl.updateValueAndValidity({ onlySelf: true });\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateLabelToControl(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (\r\n this.ngControl as unknown as IAbstractControlLabelExtension\r\n ).controllabel = this.label;\r\n }\r\n }\r\n\r\n /**\r\n * Set component height from property or parent layout control\r\n */\r\n private setComponentHeight() {\r\n // set size extra small\r\n if (!this.componentHeight) {\r\n if (this.formlayout?.componentHeight) {\r\n this.componentHeight = this.formlayout.componentHeight;\r\n } else {\r\n this.componentHeight = this.configurationService.ComponentHeight;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set adaptive label property from parent layout control\r\n */\r\n private setIsAdaptiveLabel() {\r\n if (!this.isAdaptiveLabel) {\r\n if (this.formlayout?.isAdaptiveLabel !== undefined) {\r\n this.isAdaptiveLabel = this.formlayout.isAdaptiveLabel;\r\n } else {\r\n this.isAdaptiveLabel = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set label sizes from property or parent layout control\r\n */\r\n private setLabelSizes() {\r\n // set size extra small\r\n if (!this.labelSizeXs) {\r\n if (this.formlayout?.labelSizeXs) {\r\n this.labelSizeXs = this.formlayout.labelSizeXs;\r\n } else {\r\n this.labelSizeXs = this.configurationService.LabelSizeXs;\r\n }\r\n }\r\n\r\n // set size small\r\n if (!this.labelSizeSm) {\r\n if (this.formlayout?.labelSizeSm) {\r\n this.labelSizeSm = this.formlayout.labelSizeSm;\r\n } else {\r\n this.labelSizeSm = this.configurationService.LabelSizeSm;\r\n }\r\n }\r\n\r\n // set size medium\r\n if (!this.labelSizeMd) {\r\n if (this.formlayout?.labelSizeMd) {\r\n this.labelSizeMd = this.formlayout.labelSizeMd;\r\n } else {\r\n this.labelSizeMd = this.configurationService.LabelSizeMd;\r\n }\r\n }\r\n\r\n // set size large\r\n if (!this.labelSizeLg) {\r\n if (this.formlayout?.labelSizeLg) {\r\n this.labelSizeLg = this.formlayout.labelSizeLg;\r\n } else {\r\n this.labelSizeLg = this.configurationService.LabelSizeLg;\r\n }\r\n }\r\n\r\n // set size extra large\r\n if (!this.labelSizeXl) {\r\n if (this.formlayout?.labelSizeXl) {\r\n this.labelSizeXl = this.formlayout.labelSizeXl;\r\n } else {\r\n this.labelSizeXl = this.configurationService.LabelSizeXl;\r\n }\r\n }\r\n\r\n // set size extra extra large\r\n if (!this.labelSizeXxl) {\r\n if (this.formlayout?.labelSizeXxl) {\r\n this.labelSizeXxl = this.formlayout.labelSizeXxl;\r\n } else {\r\n this.labelSizeXxl = this.configurationService.LabelSizeXxl;\r\n }\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\n\r\n/**\r\n * Basis Komponente für SacCheckboxCommon. Extends SacBaseModelControl\r\n */\r\n@Directive()\r\nexport class SacCheckboxCommon extends SacBaseModelControl<boolean> {\r\n /**\r\n * Text welcher als Tooltip angezeigt wird.\r\n */\r\n @Input() tooltiptext: string = '';\r\n\r\n /**\r\n * Text vom Checkbox-Control. Der Text wird rechts von der Checkbox angezeigt.\r\n */\r\n @Input() checkboxtext;\r\n\r\n /**\r\n * Defines that the checkbox can be used in a list of checkboxes and is not handled as a single form control\r\n */\r\n @Input() stacked: boolean = false;\r\n\r\n /**\r\n * Control hat keinen Validator\r\n */\r\n validateData(c: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n}\r\n","/**\r\n * Klasse für Validierungsfehler\r\n * */\r\nexport class ValidationErrorItem {\r\n /**\r\n * Konstruktor\r\n * @param errorType Type des Fehlers\r\n * @param errorMessageKey Key für Fehlermeldung\r\n * @param errorMessageSummaryKey Key für Fehlermeldung in Validation Summary\r\n * @param fieldName Name des Labels oder Bezeichnung des Feldes\r\n */\r\n constructor(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageSummaryKey: string,\r\n fieldName: string = null\r\n ) {\r\n this.errorType = errorType;\r\n this.errorMessageKey = errorMessageKey;\r\n this.errorMessageValidationSummaryKey = errorMessageSummaryKey;\r\n this.fieldName = fieldName;\r\n }\r\n\r\n /**\r\n * Typ den Fehler\r\n */\r\n public errorType: string;\r\n\r\n /**\r\n * Error Message Key\r\n */\r\n public errorMessageKey: string;\r\n\r\n /**\r\n * Error Message Key für Validation Summary\r\n */\r\n public errorMessageValidationSummaryKey: string;\r\n\r\n /**\r\n * Label oder Name des Feldes\r\n */\r\n public fieldName: string = null;\r\n\r\n /**\r\n * Map mit Parametern die in den Meldungen als Platzhalter verwendet werden können\r\n */\r\n public parameters: Map<string, any> = new Map<string, any>();\r\n}\r\n","import { ValidationErrorItem } from './validationerroritem';\r\n\r\nexport function CreateValidationError(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageValidationSummaryKey: string,\r\n parameters: Map<string, any> = new Map<string, any>()\r\n): any {\r\n const item: ValidationErrorItem = new ValidationErrorItem(\r\n errorType,\r\n errorMessageKey,\r\n errorMessageValidationSummaryKey\r\n );\r\n\r\n if (parameters !== null && parameters !== undefined && parameters.size > 0) {\r\n parameters.forEach((v, k) => {\r\n item.parameters.set(k, v);\r\n });\r\n }\r\n\r\n return { [errorType]: item };\r\n}\r\n","import { Moment } from 'moment';\r\nimport * as moment_ from 'moment';\r\n/**\r\n * Moment\r\n */\r\nexport const moment = moment_['default'];\r\n\r\nexport function isDateValid(value: any, format: string) {\r\n // NULL ist gültig\r\n if (value === null || value === undefined || value === '') {\r\n return true;\r\n }\r\n\r\n let date: Moment = moment(value, [format], true);\r\n date = date.utc();\r\n\r\n return date.isValid();\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\n\r\nexport function isValidDateValidator(\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n if (!isDateValid(control.value, ctl.datetimeformatstring)) {\r\n return CreateValidationError(\r\n 'dateformat',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function maxDateValidator(\r\n maxDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || maxDate === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && maxDate < ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MAXDATE',\r\n moment(maxDate).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'datemax',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function maxTimeValidator(\r\n maxTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || maxTime === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && maxTime < ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MAXTIME',\r\n moment(maxTime).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'timemax',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function maxValueValidator(\r\n maxvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.max(maxvalue);\r\n\r\n if (validator(control) !== null) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MAXVALUE', maxvalue);\r\n\r\n return CreateValidationError(\r\n 'maxvalue',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function minDateValidator(\r\n minDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || minDate === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && minDate > ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MINDATE',\r\n moment(minDate).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'datemin',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function minFilesValidator(\r\n minFiles: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IUploadControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!minFiles || minFiles === 0) {\r\n return null;\r\n }\r\n\r\n if (ctl.uploadedfilecount !== null && minFiles > ctl.uploadedfilecount) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MINFILES', minFiles);\r\n\r\n return CreateValidationError(\r\n 'minfiles',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function minLengthValidator(\r\n minlength: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.minLength(minlength);\r\n\r\n if (\r\n minlength !== null &&\r\n minlength !== undefined &&\r\n control.value !== '' &&\r\n control.value !== undefined &&\r\n control.value != null &&\r\n validator(control) != null\r\n ) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MINLENGTH', minlength);\r\n\r\n return CreateValidationError(\r\n 'minlength',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { isDateValid } from './isDateValid';\r\n\r\nexport function minTimeValidator(\r\n minTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const ctl = control as unknown as IDateTimeControl;\r\n\r\n // Check abbrechen, wenn kein gültiges Datum\r\n if (!isDateValid(ctl.value, ctl.datetimeformatstring) || minTime === null) {\r\n return null;\r\n }\r\n\r\n if (ctl.value !== null && minTime > ctl.value) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set(\r\n 'MINTIME',\r\n moment(minTime).format(ctl.datetimeformatstring)\r\n );\r\n\r\n return CreateValidationError(\r\n 'timemin',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function minValueValidator(\r\n minvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.min(minvalue);\r\n\r\n if (validator(control) !== null) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('MINVALUE', minvalue);\r\n\r\n return CreateValidationError(\r\n 'minvalue',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function multilanguageRequiredValidator(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n let missing = false;\r\n\r\n languages.forEach((item: LanguageModel) => {\r\n if (control.value) {\r\n if (\r\n control.value[item.IsoCode] === undefined ||\r\n control.value[item.IsoCode] === null ||\r\n control.value[item.IsoCode] === ''\r\n ) {\r\n missing = true;\r\n }\r\n }\r\n });\r\n\r\n if (missing) {\r\n return CreateValidationError(\r\n 'required',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function multilanguageRequiredAnyValidator(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n let missing = false;\r\n\r\n languages.forEach((item: LanguageModel) => {\r\n if (control.value) {\r\n if (\r\n control.value[item.IsoCode] !== undefined &&\r\n control.value[item.IsoCode] !== null &&\r\n control.value[item.IsoCode] !== ''\r\n ) {\r\n missing = true;\r\n }\r\n }\r\n });\r\n\r\n if (!missing) {\r\n return CreateValidationError(\r\n 'requiredany',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function patternValidator(\r\n pattern: string,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const validator: ValidatorFn = Validators.pattern(pattern);\r\n\r\n if (validator(control) !== null) {\r\n const parameters: Map<string, any> = new Map<string, any>();\r\n parameters.set('PATTERN', pattern);\r\n\r\n return CreateValidationError(\r\n 'pattern',\r\n validationMessage,\r\n validationMessageSummary,\r\n parameters\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function requiredValidator(\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (Validators.required(control) !== null) {\r\n return CreateValidationError(\r\n 'required',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import {\r\n AbstractControl,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\n\r\nexport function emailValidator(\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (Validators.email(control) !== null) {\r\n return CreateValidationError(\r\n 'email',\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n}\r\n","import { ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport * as moment_ from 'moment';\r\nimport { LanguageModel } from '../models/languagemodel';\r\nimport { isValidDateValidator } from './invaliddate.validator';\r\nimport { maxDateValidator } from './maxdate.validator';\r\nimport { maxTimeValidator } from './maxtime.validator';\r\nimport { maxValueValidator } from './maxvalue.validator';\r\nimport { minDateValidator } from './mindate.validator';\r\nimport { minFilesValidator } from './minfiles.validator';\r\nimport { minLengthValidator } from './minlength.validator';\r\nimport { minTimeValidator } from './mintime.validator';\r\nimport { minValueValidator } from './minvalue.validator';\r\nimport { multilanguageRequiredValidator } from './multilanguagerequired.validator';\r\nimport { multilanguageRequiredAnyValidator } from './multilanguagerequiredany.validator';\r\nimport { patternValidator } from './pattern.validator';\r\nimport { requiredValidator } from './required.validator';\r\nimport { CreateValidationError } from './validationerrorcreator';\r\nimport { emailValidator } from './email.validator';\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Klasse mit Standard Validatoren\r\n */\r\nexport class Validation {\r\n /**\r\n * Die Methode ist von jedem Validator aufgerufen. Die setzt sowohl den errorType des gerpüfte Item, als auch die ErrorMessage (gemäss von errorType, FieldName und Parameters).\r\n * @param errorType Typ den Fehler\r\n * @param errorMessageKey Error Message Key\r\n * @param errorMessageValidationSummaryKey Error Message Key für Validation Summary\r\n * @param fieldName Label oder Name des Feldes\r\n * @param parameters Parametern die in den Meldungen als Platzhalter verwendet werden können\r\n */\r\n static GetValidationErrorItem(\r\n errorType: string,\r\n errorMessageKey: string,\r\n errorMessageValidationSummaryKey: string,\r\n fieldName: string = null,\r\n parameters: Map<string, any> = new Map<string, any>()\r\n ): any {\r\n return CreateValidationError(\r\n errorType,\r\n errorMessageKey,\r\n errorMessageValidationSummaryKey,\r\n parameters\r\n );\r\n }\r\n\r\n /**\r\n * Validator für Required State\r\n * @param control Control das Validiert wird\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static required(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return requiredValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator für Min Value\r\n * @param control Control das Validiert wird\r\n * @param minvalue Min. Value\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minValue(\r\n minvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minValueValidator(\r\n minvalue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validierung mit einem RegEx Pattern\r\n * @param control Control das validiert werden soll.\r\n * @param pattern RegEx Pattern\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static pattern(\r\n pattern: string,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return patternValidator(\r\n pattern,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator für Max Value\r\n * @param control Control das Validiert werden soll\r\n * @param maxvalue Max. Wert\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxValue(\r\n maxvalue: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxValueValidator(\r\n maxvalue,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert Feld auf E-Mail Adresse\r\n * @param control Control das Valdiert werden soll\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static email(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return emailValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validiert auf die Länge des Wertes im Control\r\n * @param control Control das Validiert werden soll\r\n * @param minlength Min. Länge des Wertes\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minLength(\r\n minlength: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minLengthValidator(\r\n minlength,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum neuer als minDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minDate Min. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minDate(\r\n minDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minDateValidator(\r\n minDate,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob das Datum älter als maxDate ist\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxDate max. Datum\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxDate(\r\n maxDate: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxDateValidator(\r\n maxDate,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit später als minTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param minTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minTime(\r\n minTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary: string\r\n ): ValidatorFn {\r\n return minTimeValidator(\r\n minTime,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validiert ob die Zeit früher als maxTime ist.\r\n * @param control Control das Validiert werden soll. Muss IDateTimeControl implementiert haben\r\n * @param maxTime Min. Zeit\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static maxTime(\r\n maxTime: Date,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return maxTimeValidator(\r\n maxTime,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator der prüft ob der Wert ein Datum ist.\r\n * @param control Control mit IDateTimeControl Interface implementierung\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die beim Control angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static isValidDate(\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return isValidDateValidator(validationMessage, validationMessageSummary);\r\n }\r\n\r\n /**\r\n * Validator für min. Anzahl von Uploads\r\n * @param control Control das Validatiert werden soll. Control muss IUploadControl implementiert haben\r\n * @param minFiles Min. Anzahl Files die hochgeladen werden müssen\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static minFiles(\r\n minFiles: number,\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return minFilesValidator(\r\n minFiles,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator für MultiLanguage Control, welcher überprüft ob alle Sprachen erfasst sind.\r\n * @param control Control das Validatiert werden soll\r\n * @param languages Sprachen die im Control erfasst werden können.\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static multilanguageRequired(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredValidator(\r\n languages,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n\r\n /**\r\n * Validator für MultiLanguage Control, welcher überprüft ob min. ein Wert erfasst wurde\r\n * @param control Control das Validatiert werden soll\r\n * @param languages Sprachen die im Control erfasst werden können.\r\n * @param fieldName Label des Controls\r\n * @param validationMessage Validierungsmeldung die unterhalb des Controls angezeigt wird\r\n * @param validationMessageSummary Validierungsmeldung die im Validation Summary angezeigt wird\r\n */\r\n static multilanguageRequiredAny(\r\n languages: LanguageModel[],\r\n validationMessage: string,\r\n validationMessageSummary\r\n ): ValidatorFn {\r\n return multilanguageRequiredAnyValidator(\r\n languages,\r\n validationMessage,\r\n validationMessageSummary\r\n );\r\n }\r\n}\r\n","import { Directive, Host, Injector, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors, Validator } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\nimport { SacRadiobuttonCommon } from './radiobutton';\r\n\r\n/**\r\n * Basis Komponente für SacRadiobuttonsCommon. Extends SacBaseModelControl\r\n */\r\n@Directive()\r\nexport abstract class SacRadiobuttonsCommon\r\n extends SacBaseModelControl<any>\r\n implements Validator\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * Radio Buttons Content\r\n */\r\n private contentRadiobuttons: SacRadiobuttonCommon[] = [];\r\n /**\r\n * Radio Button Index\r\n */\r\n private radioButtonIndex: number = 0;\r\n\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(@Host() formlayout: SacFormLayoutCommon, injector: Injector) {\r\n super(formlayout, injector);\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * GEtter für Radio Button Index\r\n */\r\n public GetRadionButtonIndex(): number {\r\n this.radioButtonIndex++;\r\n return this.radioButtonIndex;\r\n }\r\n\r\n /**\r\n * Methode prüft ob Item checked ist\r\n */\r\n public HasCheckedItem(): boolean {\r\n const radioButtons: SacRadiobuttonCommon[] = this.contentRadiobuttons;\r\n\r\n if (radioButtons === undefined || radioButtons === null) {\r\n return false;\r\n }\r\n\r\n return this.contentRadiobuttons.some((itm) => itm.checked);\r\n }\r\n\r\n /**\r\n * Erstellung des RadioButton\r\n */\r\n public RegisterRadioButton(radioButton: SacRadiobuttonCommon) {\r\n this.contentRadiobuttons.push(radioButton);\r\n }\r\n\r\n /**\r\n * Item selektieren\r\n */\r\n public SelectItem(value: any) {\r\n this.contentRadiobuttons.forEach((itm) => {\r\n itm.checked = itm.value === value;\r\n });\r\n\r\n this.value = value;\r\n }\r\n\r\n /**\r\n * Löschen des Radio Button\r\n */\r\n public UnregisterRadioButton(radioButton: SacRadiobuttonCommon) {\r\n const index: number = this.contentRadiobuttons.indexOf(radioButton);\r\n\r\n if (index >= 0) {\r\n this.contentRadiobuttons.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors {\r\n if (!this.HasCheckedItem()) {\r\n return Validation.GetValidationErrorItem(\r\n 'required',\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired,\r\n this.label\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Wert schreiben\r\n */\r\n public writeValue(value: any) {\r\n super.writeValue(value);\r\n if (value !== null && value !== undefined) {\r\n this.contentRadiobuttons.forEach((itm) => {\r\n itm.checked = itm.value === value;\r\n });\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { ControlHeight } from '../../enums/ControlHeight';\r\nimport { SacRadiobuttonsCommon } from './radiobuttons';\r\n\r\n/**\r\n * Basis Komponente für SacRadiobutton.\r\n */\r\n@Directive()\r\nexport abstract class SacRadiobuttonCommon implements OnDestroy {\r\n /**\r\n * Konstruktor\r\n * @param SacRadioButtons\r\n */\r\n constructor(protected sacRadioButtons: SacRadiobuttonsCommon) {\r\n // Registration des Controls in SacRadioButtons Container\r\n this.sacRadioButtons.RegisterRadioButton(this);\r\n }\r\n\r\n /**\r\n * ControlHeight enum for use in HTML markup\r\n */\r\n ControlHeight: typeof ControlHeight = ControlHeight;\r\n\r\n /**\r\n * Wert\r\n */\r\n @Input()\r\n public value: any;\r\n\r\n /**\r\n * Label Text\r\n */\r\n @Input()\r\n public label: string;\r\n\r\n /**\r\n * Boolean Property, ob Radiobutton checked ist\r\n */\r\n @Input()\r\n public checked: boolean;\r\n\r\n /**\r\n * Boolean Property, ob Radiobutton disabled ist\r\n */\r\n @Input()\r\n public disabled: boolean;\r\n\r\n /**\r\n * Output Event\r\n */\r\n @Output()\r\n onselectitem = new EventEmitter();\r\n\r\n /**\r\n * Methode ergibt Boolean, ob Control disabled ist\r\n */\r\n get isDisabled(): boolean {\r\n return this.disabled || this.sacRadioButtons.disabled;\r\n }\r\n\r\n /**\r\n * Boolean Property zum Ausblenden des Controls; default Wert - false\r\n */\r\n private _hidden: boolean = false;\r\n\r\n /**\r\n * Setter für hidden Property\r\n */\r\n @Input()\r\n set hidden(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._hidden = v as boolean;\r\n } else {\r\n this._hidden = v === 'true';\r\n }\r\n\r\n // Model Reset falls RadioButton selektiert war\r\n if (this._hidden && this.checked) {\r\n this.sacRadioButtons.SelectItem(null);\r\n }\r\n }\r\n get hidden(): boolean | string {\r\n return this._hidden;\r\n }\r\n\r\n /**\r\n * Unique Index für RadioButton\r\n */\r\n _index: number = null;\r\n\r\n /**\r\n * Getter für Unique Index\r\n */\r\n get getIndex(): number {\r\n if (\r\n this._index === null &&\r\n this.sacRadioButtons !== null &&\r\n this.sacRadioButtons !== undefined\r\n ) {\r\n this._index = this.sacRadioButtons.GetRadionButtonIndex();\r\n }\r\n\r\n return this._index;\r\n }\r\n\r\n /**\r\n * Parent Control Name\r\n */\r\n get getName(): string {\r\n return this.sacRadioButtons.name;\r\n }\r\n\r\n /**\r\n * define the control height from parent control\r\n */\r\n get componentHeight(): ControlHeight | null {\r\n return this.sacRadioButtons.componentHeight;\r\n }\r\n\r\n //#region Control Templates\r\n\r\n /**\r\n * Template für Value Element\r\n */\r\n @Input()\r\n labeltemplate: TemplateRef<any>;\r\n\r\n //#endregion\r\n\r\n //#region Control Events\r\n\r\n /**\r\n * Event wenn die Komponente zerstört wird\r\n */\r\n ngOnDestroy(): void {\r\n // De-Registration des Controls in SacRadioButtons Container\r\n this.sacRadioButtons.UnregisterRadioButton(this);\r\n }\r\n\r\n //#endregion\r\n\r\n /**\r\n * Event bei Änderungen\r\n */\r\n public ChangeEvent(): void {\r\n if (!this.disabled) {\r\n this.sacRadioButtons.SelectItem(this.value);\r\n this.onselectitem.emit();\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n Directive,\r\n OnDestroy,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Base Komponente für Dialog\r\n */\r\n@Directive()\r\nexport class SacDialogCommon implements OnDestroy {\r\n /**\r\n * Name des Containers für den Dialog\r\n */\r\n dialogElement: ElementRef;\r\n\r\n private hasSetBodyTag = false;\r\n\r\n /**\r\n * Implementation als Setter, da mit ngIf das Element bei Unsichtbarkeit UNDEFINED ist.\r\n */\r\n @ViewChild('dialog', { static: false })\r\n set dialogElementSetter(content: ElementRef) {\r\n this.dialogElement = content;\r\n }\r\n\r\n /**\r\n * Boolean Property definiert ob das Dialog angezeigt wird\r\n */\r\n _show: boolean = false;\r\n\r\n /**\r\n * Das property enthielt (wenn überhaupt gesetzt) entweder keywords für sizing oder custom css Klassen.\r\n * Die akzeptabel keywordssind: 'small', 'large', 'extralarge', 'medium', ''.\r\n */\r\n _size: string = '';\r\n\r\n // #region Properties\r\n\r\n /**\r\n * Input Property. Erhält den Title des Dialog. Default Value: 'Dialog'.\r\n */\r\n @Input()\r\n public title: string = 'Dialog';\r\n\r\n /**\r\n * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch ESC geschlossen werden. Default ist true.\r\n */\r\n @Input()\r\n public allowesc: boolean = true;\r\n\r\n /**\r\n * Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch click außerhalb des Dialog-Fenster geschlossen werden. Default ist true.\r\n */\r\n @Input()\r\n public backdrop: boolean = true;\r\n\r\n /**\r\n * Input Property. Erhält den Namen des Dialog - benutzt für das ID. Default Value: ''\r\n */\r\n @Input()\r\n public name: string = '';\r\n\r\n /**\r\n * Steuert ob im Header des Dialogs ein Button angezeigt wird.\r\n */\r\n @Input()\r\n public closebutton: boolean = true;\r\n\r\n /**\r\n * Input Property. Erhält die Breite des Dialog\r\n */\r\n @Input()\r\n public width: string = null;\r\n\r\n /**\r\n * Definiert eine feste Höhe beim Dialog.\r\n */\r\n @Input()\r\n public height: string = null;\r\n\r\n /**\r\n * Das Input akzeptiert sowohl default size-css-Klassen als auch custom Klassen.\r\n * case insensitive.\r\n * Die akzeptabel default-size-Klassen sind: 'small', 'large', 'extralarge', 'medium', ''.\r\n * Wenn size ist NICHT gesetzt (oder 'medium' oder ''), default ist in medium size: max-width 500px.\r\n */\r\n @Input()\r\n set size(v: string) {\r\n v = v.toLowerCase();\r\n this._size = v;\r\n }\r\n\r\n /**\r\n * Output Emitter. Wird aufgerufen, wenn das Wert des _show property geändert ist - damait das Dialog geöfnet/geschlossen wird.\r\n */\r\n @Output()\r\n isvisibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Setter. Erhält das boolen Wert des _show property\r\n */\r\n @Input()\r\n set isvisible(v: boolean) {\r\n if (\r\n v &&\r\n !this.hasSetBodyTag &&\r\n !document.body.classList.contains('modal-open')\r\n ) {\r\n document.body.classList.add('modal-open');\r\n this.hasSetBodyTag = true;\r\n }\r\n\r\n if (\r\n !v &&\r\n this.hasSetBodyTag &&\r\n document.body.classList.contains('modal-open')\r\n ) {\r\n document.body.classList.remove('modal-open');\r\n this.hasSetBodyTag = false;\r\n }\r\n\r\n this._show = v;\r\n }\r\n\r\n /**\r\n * Getter. Ergibt das boolen Wert des _show property\r\n */\r\n get isvisible(): boolean {\r\n return this._show;\r\n }\r\n\r\n /**\r\n * Die Funktion prüft ob es ein default css classe für Size des Dialog durch den size Input gesetzt wurde.\r\n */\r\n issetdefaultsize(): boolean {\r\n let result: boolean = false;\r\n\r\n switch (this._size) {\r\n case 'small':\r\n result = true;\r\n break;\r\n case 'medium':\r\n result = true;\r\n break;\r\n case 'large':\r\n result = true;\r\n break;\r\n case 'extralarge':\r\n result = true;\r\n break;\r\n case '':\r\n result = true;\r\n break;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Constructor\r\n\r\n /**\r\n * Konstruktor\r\n * Inject des Formulars\r\n */\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n // #endregion\r\n\r\n /**\r\n * Methode wenn Componente entfernt wird\r\n */\r\n ngOnDestroy(): void {\r\n if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {\r\n document.body.classList.remove('modal-open');\r\n this.hasSetBodyTag = false;\r\n }\r\n }\r\n\r\n // #region Methods\r\n\r\n /**\r\n * Die Methode setz den Wert des _show property auf true\r\n */\r\n public show(): void {\r\n this._show = true;\r\n\r\n if (\r\n !this.hasSetBodyTag &&\r\n !document.body.classList.contains('modal-open')\r\n ) {\r\n document.body.classList.add('modal-open');\r\n this.hasSetBodyTag = true;\r\n }\r\n\r\n this.isvisibleChange.emit(this._show);\r\n }\r\n\r\n /**\r\n * Die Methode setz den Wert des _show property auf false\r\n */\r\n public hide(): void {\r\n if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {\r\n document.body.classList.remove('modal-open');\r\n this.hasSetBodyTag = false;\r\n }\r\n\r\n this._show = false;\r\n this.isvisibleChange.emit(this._show);\r\n }\r\n\r\n /**\r\n * Getter for ChangeDetector.\r\n */\r\n protected get ChangeDetector(): ChangeDetectorRef {\r\n return this.cdRef;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Host Actions\r\n\r\n /**\r\n * Allow Close by Click outside Dialog\r\n */\r\n @HostListener('click', ['$event'])\r\n onClick(event: any): void {\r\n if (\r\n this.allowesc === false ||\r\n (this.dialogElement !== null &&\r\n this.dialogElement !== undefined &&\r\n event.target !== this.dialogElement.nativeElement)\r\n ) {\r\n return;\r\n }\r\n this.hide();\r\n }\r\n\r\n /**\r\n * Allow Close by ESC\r\n */\r\n @HostListener('document:keydown', ['$event'])\r\n onKeydownHandler(event: KeyboardEvent) {\r\n const ESCAPE_KEYCODE = 'Escape';\r\n\r\n if (this.allowesc === true && event.key === ESCAPE_KEYCODE) {\r\n this.hide();\r\n }\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, UntypedFormGroup, NgForm } from '@angular/forms';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\n\r\n// #region Type aliases\r\n\r\n/**\r\n * Type for form actions\r\n */\r\nexport type FormHooks = 'change' | 'blur' | 'submit';\r\n\r\n// #endregion Type aliases\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Komponente für SacFormular\r\n */\r\n@Directive()\r\nexport class SacFormCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Standardwert wann die Werte via NgModel aktualisiert werden\r\n */\r\n private _updateon: FormHooks = 'change';\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param form Instanz von NgForm\r\n */\r\n constructor(private form: NgForm) {\r\n this.form.options = { updateOn: this._updateon };\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Definiert, wenn das Model geupdatet wird\r\n */\r\n @Input()\r\n public set updateon(v: FormHooks) {\r\n this._updateon = v;\r\n this.form.options.updateOn = v;\r\n }\r\n\r\n public get updateon(): FormHooks {\r\n return this._updateon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Gibt die NgForm Instanz zurück\r\n */\r\n public getForm(): NgForm {\r\n return this.form;\r\n }\r\n\r\n /**\r\n * Markiert alle Controls innerhalb des Formulares als Touched\r\n */\r\n public markAsTouched(): void {\r\n if (this.form && this.form.invalid) {\r\n this.markAsTouchedInternal(this.form.controls);\r\n }\r\n }\r\n\r\n /**\r\n * Aktualisiert die Werte und den Gültigkeitsstatus des Formulars\r\n */\r\n public updateValueAndValidity(markAsTouched: boolean = true): void {\r\n // Update all Controls\r\n this.updateValueAndValidityInternal(this.form.controls);\r\n // Update Main Form\r\n this.getForm().form.updateValueAndValidity();\r\n\r\n // Mark all Controls as Touched\r\n if (markAsTouched) {\r\n this.markAsTouched();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Markiert alle Controls inkl. dem Tree als Touched\r\n * @param controls Controls Collection\r\n */\r\n private markAsTouchedInternal(controls: { [key: string]: AbstractControl }) {\r\n const keyList: string[] = Object.keys(controls);\r\n\r\n for (const field of keyList) {\r\n const control = controls[field];\r\n if (control instanceof UntypedFormGroup) {\r\n this.markAsTouchedInternal(control.controls);\r\n } else {\r\n control.markAsTouched({ onlySelf: true });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Aktualisiert die Werte und die gültigkeit des Formulars\r\n * @param controls Controls Collection\r\n */\r\n private updateValueAndValidityInternal(controls: {\r\n [key: string]: AbstractControl;\r\n }) {\r\n const keyList: string[] = Object.keys(controls);\r\n\r\n for (const field of keyList) {\r\n const control = controls[field];\r\n if (control instanceof UntypedFormGroup) {\r\n this.updateValueAndValidityInternal(control.controls);\r\n } else {\r\n control.updateValueAndValidity({ onlySelf: true });\r\n }\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n// #endregion Classes\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n\r\n/**\r\n * Abstract Klasse für SacBaseListControl. Extendes SacBaseModelControl\r\n */\r\n@Directive()\r\nexport abstract class SacBaseListControl<\r\n VALUE\r\n> extends SacBaseModelControl<VALUE> {\r\n /**\r\n * options. Typ: any\r\n */\r\n _options: any[];\r\n\r\n /**\r\n * Template für Value Element\r\n */\r\n @Input()\r\n optionlabeltemplate: TemplateRef<any>;\r\n\r\n /**\r\n * Definiert das Label für das Option Element\r\n */\r\n @Input() optionlabel: string = 'label';\r\n\r\n /**\r\n * Definiert den Wert für das Option Element\r\n */\r\n @Input() optionvalue: string = 'value';\r\n\r\n /**\r\n * Definiert, ob das Option Element aktiv ist\r\n */\r\n @Input() optionenabled: string = '';\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() isrequired: boolean = false;\r\n\r\n /**\r\n * Style Breite für List Control Element\r\n */\r\n @Input() width: string = null;\r\n\r\n /**\r\n * Input property für options\r\n */\r\n @Input() get options(): any[] {\r\n return this._options;\r\n }\r\n\r\n /**\r\n * setter für options\r\n */\r\n set options(val: any[]) {\r\n this._options = val;\r\n }\r\n}\r\n","import { Input, Directive } from '@angular/core';\r\nimport { SacBaseListControl } from './baselistcontrol';\r\n\r\n/**\r\n * Abstract Klasse für SacBaseSelectControl. Extendes SacBaseListControl\r\n */\r\n@Directive()\r\nexport abstract class SacBaseSelectControl<VALUE> extends SacBaseListControl<VALUE> {\r\n\r\n /**\r\n * Definiert das Label für das Group Element\r\n */\r\n @Input() grouplabel: string = 'label';\r\n\r\n /**\r\n * Definiert die Collection der Items im Group Element\r\n */\r\n @Input() groupitems: string = '';\r\n\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Host,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseSelectControl } from '../../common/baseselectcontrol';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Dropdown Komponente\r\n */\r\n@Directive()\r\nexport class SacDropdownCommon extends SacBaseSelectControl<any> {\r\n // #region Properties\r\n\r\n /**\r\n * compareWith-Funktion\r\n */\r\n private _compareWith: (o1: any, o2: any) => boolean = Object.is;\r\n\r\n /**\r\n * Label Text für Empty Item\r\n */\r\n @Input() public emptylabel: string = '';\r\n /**\r\n * Option Value für Empty Item\r\n */\r\n @Input() public emptyvalue: string = null;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n /**\r\n * Counter vom OptionID; default Wert = 0\r\n */\r\n public _optionIdCounter: number = 0;\r\n /**\r\n * OptionMap\r\n */\r\n public _optionMap: Map<string, any> = new Map<string, any>();\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer html rendering engine\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n @Host() formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector);\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * compareWith-Funktion\r\n */\r\n @Input()\r\n public set comparewith(fn: (o1: any, o2: any) => boolean) {\r\n if (typeof fn !== 'function') {\r\n throw new Error(\r\n `compareWith must be a function, but received ${JSON.stringify(fn)}`\r\n );\r\n }\r\n this._compareWith = fn;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Registriert das OptionID-Counter als String\r\n */\r\n public registerOption(): string {\r\n return (this._optionIdCounter++).toString();\r\n }\r\n\r\n /**\r\n * Methode die von Options aufgerufen wird, um das Mapping zwischen Dropdown Value und Value herzustellen.\r\n * @param id: Id aus Options\r\n * @param value: Value\r\n */\r\n public setOptionMap(id: string, value: any): void {\r\n this._optionMap.set(id, value);\r\n\r\n // Selected Value auf Control aktualisieren, wenn Value dem SelectedValue entspricht\r\n if (this.value === value) {\r\n this.setSelectedValue(value);\r\n }\r\n }\r\n\r\n /**\r\n * Wert einstellen\r\n * @param value - Wert\r\n */\r\n public setValue(value: string) {\r\n super.setValue(this.getOptionValue(value));\r\n }\r\n\r\n /**\r\n * Validator\r\n * @param c Control Instanz\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n return error;\r\n }\r\n\r\n /**\r\n * Wert schreiben\r\n * @param value - Wert\r\n */\r\n public writeValue(value: any) {\r\n this.setSelectedValue(value);\r\n super.writeValue(value);\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * ID extrahieren\r\n * @param valueString String bei welchem die ID Extrahiert werden soll\r\n */\r\n private extractId(valueString: string): string {\r\n return valueString.split(':')[0];\r\n }\r\n\r\n /**\r\n * Nimmt das ID vom Option\r\n * @param value\r\n */\r\n private getOptionId(value: any): string | null {\r\n for (const id of Array.from(this._optionMap.keys())) {\r\n if (this._compareWith(this._optionMap.get(id), value)) {\r\n return id;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Nimmt den String-Wert vom Option\r\n * @param valueString\r\n */\r\n private getOptionValue(valueString: string): any {\r\n const id: string = this.extractId(valueString);\r\n return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\r\n }\r\n\r\n /**\r\n * Setzt den Selected Value auf dem Control\r\n * @param value Value\r\n */\r\n private setSelectedValue(value: any): void {\r\n // Select Item aus Control lesen\r\n const selectItem: any =\r\n this.elementRef.nativeElement.getElementsByTagName('select')[0];\r\n /**\r\n * Id vom Select Item\r\n */\r\n const id: string | null = this.getOptionId(value);\r\n /**\r\n * Value String\r\n */\r\n const valueString = _buildValueString(id, value);\r\n\r\n if (selectItem !== undefined) {\r\n this.renderer.setProperty(selectItem, 'value', valueString);\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * SacDropdownOption-Klasse\r\n */\r\n@Directive()\r\nexport class SacDropdownOptionCommon implements OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * ID-String\r\n */\r\n private id: string = null;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param _element Referenz auf HTML Element\r\n * @param _renderer Render Engine\r\n * @param _dropdown Dropdown Instanz\r\n */\r\n constructor(\r\n private _element: ElementRef,\r\n private _renderer: Renderer2,\r\n private _dropdown: SacDropdownCommon\r\n ) {\r\n if (this._dropdown) {\r\n this.id = this._dropdown.registerOption();\r\n }\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Option ngValue\r\n */\r\n @Input()\r\n public set ngValue(value: any) {\r\n // Cancel wenn kein Parent Dropdown vorhanden\r\n if (this._dropdown == null) {\r\n return;\r\n }\r\n\r\n this._dropdown.setOptionMap(this.id, value);\r\n this._setElementValue(_buildValueString(this.id, value));\r\n\r\n this._dropdown.writeValue(this._dropdown.value);\r\n }\r\n\r\n /**\r\n * Wert-Setter\r\n */\r\n @Input()\r\n public set value(value: any) {\r\n this._setElementValue(value);\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Den Wert vom Option-Element einstellen\r\n * @param value Wert\r\n */\r\n public _setElementValue(value: string): void {\r\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\r\n }\r\n\r\n /**\r\n * OnDestroy Event\r\n */\r\n public ngOnDestroy(): void {\r\n if (this._dropdown) {\r\n this._dropdown._optionMap.delete(this.id);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Functions\r\n\r\n/**\r\n * Function um ein Key Value Pair für das Dropdown zu erzeugen\r\n * @param id ID\r\n * @param value Wert der an das Element gebunden werden soll\r\n */\r\nexport function _buildValueString(id: string | null, value: any): string {\r\n // Wenn ID null ist Object zurückgeben\r\n if (id == null) {\r\n return `${value}`;\r\n }\r\n\r\n // Mapping Objekt zu String\r\n if (value && typeof value === 'object') {\r\n value = 'Object';\r\n }\r\n\r\n // String als ID\r\n return `${id}: ${value}`.slice(0, 50);\r\n}\r\n\r\n// #endregion Functions\r\n","// tsco:ignore\r\nimport {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n QueryList,\r\n Renderer2,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseSelectControl } from '../../common/baseselectcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n// #region Interfaces\r\n\r\n/**\r\n * Wrapper für HTML Options\r\n */\r\ninterface HTMLOption {\r\n // #region Properties\r\n\r\n /**\r\n * Boolean Property für Selektierte Elemente\r\n */\r\n selected: boolean;\r\n /**\r\n * Wert\r\n */\r\n value: string;\r\n\r\n // #endregion Properties\r\n}\r\n\r\n// #endregion Interfaces\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Basis Komponente für SacListboxOption\r\n */\r\n@Directive()\r\nexport class SacListboxOptionCommon implements OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * Value von Selected Option Item\r\n */\r\n private _value: any = null;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param _element: ElementRef\r\n * @param _renderer: Renderer2\r\n */\r\n constructor(\r\n private _element: ElementRef,\r\n private _renderer: Renderer2,\r\n private _listbox: SacListboxCommon\r\n ) {\r\n if (this._listbox) {\r\n this._listbox.registerOption(this);\r\n }\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * NgValue des Controls. Wird für die Mehrfachauswahl benötigt\r\n */\r\n @Input()\r\n public set ngvalue(value: any) {\r\n if (this._listbox) {\r\n this._value = value;\r\n }\r\n }\r\n\r\n /**\r\n * Definiert den Wert der Listbox\r\n */\r\n @Input()\r\n public set value(value: any) {\r\n if (this._listbox) {\r\n this._value = value;\r\n }\r\n }\r\n\r\n public get value(): any {\r\n return this._value;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode ergibt den Status der Elemente, die selektiert wurden\r\n * @param selected Element ist selektiert\r\n */\r\n public _setSelected(selected: boolean) {\r\n this._renderer.setProperty(\r\n this._element.nativeElement,\r\n 'selected',\r\n selected\r\n );\r\n }\r\n\r\n /**\r\n * OnDestroy Event\r\n */\r\n public ngOnDestroy(): void {\r\n if (this._listbox) {\r\n this._listbox.unregisterOption(this);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n\r\n/**\r\n * Komponente für SacListboxCommon. Extends SacBaseSelectControl\r\n */\r\n@Directive()\r\nexport class SacListboxCommon extends SacBaseSelectControl<Array<string>> {\r\n // #region Properties\r\n\r\n /**\r\n * Anzahl der Zeilen\r\n */\r\n @Input() public rowsize: number = 5;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n /**\r\n * ViewChildren Methode\r\n */\r\n @ViewChildren(SacListboxOptionCommon)\r\n public contentOptions: QueryList<SacListboxOptionCommon>;\r\n\r\n /**\r\n * OptionMap\r\n */\r\n public optionlist: Array<SacListboxOptionCommon> =\r\n new Array<SacListboxOptionCommon>();\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Getter für selektierte Elemente\r\n */\r\n public getSelectedItems(selectelement: any) {\r\n const selectedValues: Array<string> = new Array<string>();\r\n\r\n if (selectelement.hasOwnProperty('selectedOptions')) {\r\n const options: HTMLCollection = selectelement.selectedOptions;\r\n for (let i = 0; i < options.length; i++) {\r\n const opt: HTMLOption = options.item(i);\r\n selectedValues.push(opt.value);\r\n }\r\n } else {\r\n // Degrade on IE\r\n const options: HTMLCollection = <HTMLCollection>selectelement.options;\r\n for (let i = 0; i < options.length; i++) {\r\n const opt: HTMLOption = options.item(i);\r\n if (opt.selected) {\r\n selectedValues.push(opt.value);\r\n }\r\n }\r\n\r\n this.setValue(selectedValues);\r\n }\r\n }\r\n\r\n /**\r\n * Registriert ein Listbox Element\r\n * @param option Listbox Option Item das registriert werden soll\r\n */\r\n public registerOption(option: SacListboxOptionCommon): void {\r\n this.optionlist.push(option);\r\n }\r\n\r\n /**\r\n * Hebt die Registration eines Listbox Items auf\r\n * @param option Listbox Option Item das deregistriert werden soll\r\n */\r\n public unregisterOption(option: SacListboxOptionCommon): void {\r\n const index = this.optionlist.indexOf(option);\r\n this.optionlist.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Validator Methode\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Methode schreibt neuen Wert\r\n */\r\n public writeValue(value: Array<string>) {\r\n if (this.optionlist && value) {\r\n this.optionlist.forEach((itm) => {\r\n if (value.indexOf(itm.value) >= 0) {\r\n itm._setSelected(true);\r\n }\r\n });\r\n }\r\n\r\n super.writeValue(value);\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n\r\n/**\r\n * Wrapper für HTML Select\r\n */\r\nabstract class HTMLCollection {\r\n // #region Properties\r\n\r\n /**\r\n * Länge\r\n */\r\n public length: number;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Option-Item\r\n */\r\n public abstract item(_: number): HTMLOption;\r\n\r\n // #endregion Public Abstract Methods\r\n}\r\n\r\n// #endregion Classes\r\n","import {\r\n AfterContentInit,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { SacTabItemCommon } from './tabitem';\r\n\r\n/**\r\n * Base component for SacTab\r\n */\r\n@Directive()\r\nexport abstract class SacTabCommon implements AfterContentInit {\r\n /**\r\n * control name\r\n */\r\n @Input()\r\n public name: string = '';\r\n\r\n /**\r\n * input property for template. Typ TemplateRef<any>\r\n */\r\n @Input()\r\n tablabeltemplate: TemplateRef<any>;\r\n\r\n /**\r\n * dispose tabs when they are hidden\r\n */\r\n @Input()\r\n unloadtabitemswhenhidden: boolean | null = null;\r\n\r\n /**\r\n * Event when new tab is selected\r\n */\r\n @Output()\r\n tabselected: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Array von TabItems\r\n */\r\n abstract tabItems(): SacTabItemCommon[];\r\n\r\n // #region Control initialisieren\r\n\r\n /**\r\n * AfterContentInit Event\r\n */\r\n ngAfterContentInit() {\r\n this.initTabs();\r\n }\r\n\r\n /**\r\n * Initialisiert die Tabs\r\n */\r\n private initTabs(): void {\r\n const activeTab = this.tabItems().filter((tab) => tab.active);\r\n\r\n this.tabItems().forEach((itm) => {\r\n if (this.unloadtabitemswhenhidden !== null) {\r\n itm.unloadwhenhidden = this.unloadtabitemswhenhidden;\r\n }\r\n });\r\n\r\n if (activeTab.length === 0) {\r\n this.selectTab(this.tabItems()[0]);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * select new tab\r\n * @param tab tab that should be selected\r\n */\r\n selectTab(tab: SacTabItemCommon): void {\r\n // Cancel if Selected Tab is disabled\r\n if (tab.disabled) {\r\n return;\r\n }\r\n\r\n this.tabItems().forEach((item) => (item.active = false));\r\n tab.active = true;\r\n this.tabselected.emit(tab.id);\r\n }\r\n\r\n /**\r\n * get id of tab button\r\n * @param tabitemid id of tab\r\n */\r\n public GetTabItemButtonId(tabitemid: string) {\r\n return this.name + '_' + tabitemid;\r\n }\r\n}\r\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n/**\r\n * Die Basis Komponente für SacTabItem\r\n */\r\n@Directive()\r\nexport class SacTabItemCommon {\r\n /**\r\n * Boolean Property prüft ob das Tab aktiv ist\r\n */\r\n @Input()\r\n active: boolean = false;\r\n /**\r\n * Boolean Property prüft ob das Tab disabled ist\r\n */\r\n @Input()\r\n disabled: boolean = false;\r\n /**\r\n * ID-String\r\n */\r\n @Input()\r\n id: string;\r\n /**\r\n * Label Text vom Control\r\n */\r\n @Input()\r\n label: string;\r\n\r\n /**\r\n * Das Input property ekzeptiert boolen Wert. Default ist true. Definiert, ob die Komponente hidden sein sollte.\r\n */\r\n @Input()\r\n unloadwhenhidden: boolean = true;\r\n\r\n /**\r\n * ContentChild Decorator\r\n */\r\n @ContentChild(TemplateRef, { static: true })\r\n templateRef: TemplateRef<any>;\r\n}\r\n","import { Directive, Injector, Input } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormArray,\r\n NgForm,\r\n UntypedFormArray,\r\n UntypedFormGroup,\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport { IAbstractControlLabelExtension } from '../../interfaces/iabstractcontrollabel';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../../services/sac-localisation.service';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services/sac-validationkey.service';\r\nimport { ValidationErrorItem } from '../../validation';\r\nimport { SacFormCommon } from '../form/form';\r\n\r\n/**\r\n * Basis Komponente für SacValidationSummary\r\n */\r\n@Directive()\r\nexport class SacValidationSummaryCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n /**\r\n * Parent Formular\r\n */\r\n protected parent: SacFormCommon;\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n protected validationKeyService: ISacValidationKeyService;\r\n\r\n /**\r\n * reactive form instance\r\n */\r\n @Input()\r\n public form: UntypedFormGroup;\r\n /**\r\n * Form groupname to filter summary to formgroup\r\n *\r\n * Important: it works only in reactive forms mode.\r\n */\r\n @Input()\r\n public formGroupName: string;\r\n /**\r\n * Name-Property\r\n */\r\n @Input()\r\n public name: string = '';\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * Inject des Formulars\r\n */\r\n constructor(parent: SacFormCommon, injector: Injector) {\r\n this.parent = parent;\r\n\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Validation Methode\r\n */\r\n public get formErrors(): Observable<string>[] {\r\n const collection: Array<Observable<string>> = new Array<\r\n Observable<string>\r\n >();\r\n\r\n let formBase: UntypedFormGroup;\r\n if (this.parent) {\r\n formBase = this.parent.getForm().form;\r\n } else if (this.form instanceof UntypedFormGroup) {\r\n formBase = this.form;\r\n\r\n // formgroup can only be get in reactive forms mode\r\n if (this.formGroupName) {\r\n formBase = formBase.get(this.formGroupName) as UntypedFormGroup;\r\n }\r\n } else {\r\n throw new Error('missing form');\r\n }\r\n\r\n const items: Array<NgForm | UntypedFormArray> = Object.keys(\r\n formBase.controls\r\n ).map((key) => {\r\n return <NgForm | UntypedFormArray>formBase.controls[key];\r\n });\r\n\r\n this.getErrorCollection(items, collection);\r\n\r\n return collection.filter((item) => item !== null);\r\n }\r\n\r\n /**\r\n * Getter wenn Errors entstehen\r\n */\r\n public get hasErrors() {\r\n return this.formErrors.length > 0;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Fügt einen Validation Error in die Error Collection hinzu\r\n * @param ctl Fehlerhaftes Control\r\n * @param collection Collection aller Fehlermeldungen\r\n */\r\n private addErrorToCollection(\r\n ctl: AbstractControl,\r\n collection: Array<Observable<string>>\r\n ): void {\r\n if (ctl.errors === null || ctl.touched === false || ctl.valid === true) {\r\n return;\r\n }\r\n\r\n const keys: string[] = Object.keys(ctl.errors);\r\n\r\n if (keys.length <= 0) {\r\n return;\r\n }\r\n\r\n const errorItem: ValidationErrorItem = ctl.errors[keys[0]];\r\n\r\n // Validation Parameters\r\n const parameters = {};\r\n if (errorItem.parameters !== null && errorItem.parameters !== undefined) {\r\n errorItem.parameters.forEach((v, k) => {\r\n parameters[k] = v;\r\n });\r\n }\r\n\r\n if ((ctl as unknown as IAbstractControlLabelExtension)?.controllabel) {\r\n parameters['FIELD'] = (\r\n ctl as unknown as IAbstractControlLabelExtension\r\n ).controllabel;\r\n } else {\r\n parameters['FIELD'] = errorItem.fieldName;\r\n }\r\n\r\n collection.push(\r\n this.lngResourceService.GetString(\r\n errorItem.errorMessageValidationSummaryKey,\r\n parameters\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Die Methode gibt Collection von Errors. Verlangt controls: Array<NgForm | FormArray> und collection: Array<Observable<string>>\r\n */\r\n private getErrorCollection(\r\n controls: Array<NgForm | UntypedFormArray>,\r\n collection: Array<Observable<string>>\r\n ): void {\r\n controls.forEach((ctl) => {\r\n if (ctl.controls === undefined || ctl.controls === null) {\r\n this.addErrorToCollection(<AbstractControl>ctl, collection);\r\n } else {\r\n Object.keys(ctl.controls).map((controlKey) => {\r\n const control = ctl.controls[controlKey];\r\n\r\n // Cancel Analyse wenn Item not Touched oder Valid\r\n if (control.touched === false || control.valid === true) {\r\n return;\r\n }\r\n\r\n // Handle wenn Control kein Container ist\r\n if (control.controls === undefined || control.controls === null) {\r\n this.addErrorToCollection(control, collection);\r\n } else {\r\n // Handling eines Control Containers\r\n const items: Array<NgForm | UntypedFormArray> = Object.keys(\r\n control.controls\r\n ).map((formKey) => {\r\n return <NgForm | UntypedFormArray>control.controls[formKey];\r\n });\r\n\r\n this.getErrorCollection(items, collection);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n\r\n/**\r\n * Abstract Klasse für SacInputBase. Extendes SacBaseModelControl\r\n */\r\n@Directive()\r\nexport abstract class SacInputBase<VALUE> extends SacBaseModelControl<VALUE> {\r\n // #region Properties\r\n\r\n /**\r\n * Erlaubte Zeichen bei der Eingabe\r\n */\r\n @Input() public allowedchars: string = '';\r\n /**\r\n * Autofill aktivieren oder deaktivieren\r\n */\r\n @Input() public disableautocomplete: boolean = false;\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n /**\r\n * TextBox Placeholder\r\n */\r\n @Input() public placeholder: string = null;\r\n /**\r\n * Macht das Input readonly\r\n */\r\n @Input() public readonly: boolean = false;\r\n /**\r\n * Definiert das Feld als valid/invalid von eingegebenen regex-pattern\r\n */\r\n @Input() public regexvalidation: string;\r\n /**\r\n * Text welcher als Tooltip angezeigt wird.\r\n */\r\n @Input() public tooltiptext: string = '';\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert Input wenn KeyPress-Event passiert\r\n */\r\n public onKeyPress(event: KeyboardEvent): Boolean {\r\n // Cancel wenn _allowedChars leer ist.\r\n if (this.allowedchars.length === 0) {\r\n return true;\r\n }\r\n\r\n // Validate Input\r\n const character = event.key;\r\n // Zeichen in Allowed Chars nicht gefunden, Event nicht weitergeben\r\n if (this.allowedchars.indexOf(character) < 0) {\r\n event.preventDefault();\r\n }\r\n\r\n const inputControl = event.target as HTMLInputElement;\r\n\r\n if (!this.OnKeyPressValidation(inputControl.selectionStart, character)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Methode validiert wenn ein Drück-Event passiert\r\n */\r\n protected OnKeyPressValidation(position: number, character: string): boolean {\r\n return true;\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Basis Komponente für SacInput\r\n */\r\n@Directive()\r\nexport class SacInputCommon extends SacInputBase<string> {\r\n // #region Properties\r\n\r\n /**\r\n * Fix breite für das Control definieren.\r\n */\r\n @Input() public controlwidth: string = null;\r\n /**\r\n * Max länge an Zeichen für Eingabefeld\r\n */\r\n @Input() public maxlength: number = null;\r\n /**\r\n * Resource Key für Validation Message Pattern bei Control\r\n */\r\n @Input() public validationmessagepattern: string =\r\n this.validationKeyService.ValidationErrorPattern;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern in Validation Summary\r\n */\r\n @Input() public validationmessagesummarypattern: string =\r\n this.validationKeyService.ValidationErrorSummaryPattern;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriterien entspricht\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.regexvalidation !== undefined &&\r\n this.regexvalidation !== null\r\n ) {\r\n error = Validation.pattern(\r\n this.regexvalidation,\r\n this.validationmessagepattern,\r\n this.validationmessagesummarypattern\r\n )(c);\r\n }\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputArea\r\n */\r\n@Directive()\r\nexport class SacInputAreaCommon extends SacInputCommon {\r\n\r\n /**\r\n * Definiert die Höhe der TextArea Box.\r\n */\r\n @Input() rows: number = 5;\r\n\r\n /**\r\n * Definiert die Höhe der TextArea Box. Ist normalfall leer, da Höhe auch über Rows gesetzt werden kann.\r\n */\r\n @Input() height: string = null;\r\n\r\n /**\r\n * Property mit dem Custom CSS Klassen auf dem Form-Control definiert werden können.\r\n */\r\n @Input() customcssclass: string = '';\r\n\r\n /**\r\n * Getter für die Länge des Inputs\r\n */\r\n get _currentLength(): number {\r\n if (this.value === null || this.value === undefined) {\r\n return 0;\r\n } else {\r\n return this.value.length + this.value.split(/\\r|\\n/).length - 1;\r\n }\r\n }\r\n\r\n /**\r\n * Methode wird 'true' ergeben wenn ein Key gedrückt wird und maxlength ist nicht definiert\r\n */\r\n public onKeyPress(event: KeyboardEvent): Boolean {\r\n // Exist if MaxLength not defined\r\n if (this.maxlength === undefined || this.maxlength === null) {\r\n return true;\r\n }\r\n\r\n if (this._currentLength >= this.maxlength || ((event.key === 'Enter' || event.key === ' ') && this._currentLength + 1 >= this.maxlength)) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Basis Komponente für SacInputDecimal\r\n */\r\n@Directive()\r\nexport class SacInputDecimalCommon extends SacInputBase<number> {\r\n // #region Properties\r\n\r\n /**\r\n * Definiert das Negative Werte erlaubt sind\r\n */\r\n @Input() public allownegativ: boolean = false;\r\n /**\r\n * Definiert den maximalen Wert\r\n */\r\n @Input() public maxvalue: number = undefined;\r\n /**\r\n * Definiert den minimalen Wert\r\n */\r\n @Input() public minvalue: number = undefined;\r\n /**\r\n * Resource Key für Validation Message MaxValue bei Control\r\n */\r\n @Input() public validationmessagemaxvalue: string =\r\n this.validationKeyService.ValidationErrorMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue bei Control\r\n */\r\n @Input() public validationmessageminvalue: string =\r\n this.validationKeyService.ValidationErrorMinValue;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message MaxValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryminvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMinValue;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n /**\r\n * Error Meldung, die angezeigt wird, wenn die Kriterien nicht erfüllt sind\r\n */\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.minvalue !== undefined &&\r\n this.minvalue !== null\r\n ) {\r\n error = Validation.minValue(\r\n this.minvalue,\r\n this.validationmessageminvalue,\r\n this.validationmessagesummaryminvalue\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.maxvalue !== undefined &&\r\n this.maxvalue !== null\r\n ) {\r\n error = Validation.maxValue(\r\n this.maxvalue,\r\n this.validationmessagemaxvalue,\r\n this.validationmessagesummarymaxvalue\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Konvertiert den Wert des Inputs\r\n */\r\n protected ConvertInputValue(value: any): any {\r\n if (value === '' || value === null) {\r\n return null;\r\n } else {\r\n if (this.allownegativ === true && value === '-') {\r\n return '-';\r\n } else if (value === '.') {\r\n return '0.';\r\n } else {\r\n return parseFloat(value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Methode die erzeugt den Control in Abhängigkeit davon, ob negative Were erlaubt sing oder nicht\r\n */\r\n protected OnClassInit(): void {\r\n super.OnClassInit();\r\n\r\n /**\r\n * Definiert die Werte die erlaubt sind\r\n */\r\n this.allowedchars = '0123456789' + this.GetDecimalSymbol();\r\n\r\n if (this.allownegativ) {\r\n this.allowedchars = this.allowedchars + '-';\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien wenn ein Key gedrückt wird\r\n */\r\n protected OnKeyPressValidation(position: number, character: string): boolean {\r\n if (\r\n (this.allownegativ === false && character === '-') ||\r\n (this.allownegativ === true && position > 0 && character === '-')\r\n ) {\r\n return false;\r\n }\r\n\r\n // Verhindern von Doppelpunkt Eingabe (45..545)\r\n if (\r\n this._value !== null &&\r\n this._value.toString().length < position &&\r\n character === '.'\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n character === this.GetDecimalSymbol() &&\r\n this._value !== null &&\r\n this._value.toString().indexOf(this.GetDecimalSymbol()) >= 0\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { SacInputDecimalCommon } from './inputdecimal';\r\n\r\n/**\r\n * Basis Komponente für SacInputCurrency\r\n */\r\n@Directive()\r\nexport class SacInputCurrencyCommon extends SacInputDecimalCommon {\r\n // #region Properties\r\n\r\n @Input()\r\n public currency: string = '';\r\n\r\n // #endregion Properties\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Set currency during initialization if no value is defined.\r\n */\r\n protected OnClassInit(): void {\r\n super.OnClassInit();\r\n\r\n if (!this.currency) {\r\n this.currency = this.configurationService.CurrencyText;\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { Validation } from '../../validation';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputEmail\r\n */\r\n@Directive()\r\nexport class SacInputEmailCommon extends SacInputCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Resource Key für Validation Message Email bei Control\r\n */\r\n @Input() public validationmessageemail: string =\r\n this.validationKeyService.ValidationErrorEmail;\r\n /**\r\n * Resource Key für Validation Message Email in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryemail: string =\r\n this.validationKeyService.ValidationErrorSummaryEmail;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriteriten entspricht\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.email(\r\n this.validationmessageemail,\r\n this.validationmessagesummaryemail\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Basis Komponente für SacInputInteger\r\n */\r\n@Directive()\r\nexport class SacInputIntegerCommon extends SacInputBase<number> {\r\n // #region Properties\r\n\r\n /**\r\n * Definiert das Negative Werte erlaubt sind\r\n */\r\n @Input() public allownegativ: boolean = false;\r\n /**\r\n * Definiert den maximalen Wert\r\n */\r\n @Input() public maxvalue: number = undefined;\r\n /**\r\n * Definiert den minimalen Wert\r\n */\r\n @Input() public minvalue: number = undefined;\r\n /**\r\n * Resource Key für Validation Message MaxValue bei Control\r\n */\r\n @Input() public validationmessagemaxvalue: string =\r\n this.validationKeyService.ValidationErrorMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue bei Control\r\n */\r\n @Input() public validationmessageminvalue: string =\r\n this.validationKeyService.ValidationErrorMinValue;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message MaxValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxValue;\r\n /**\r\n * Resource Key für Validation Message MinValue in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryminvalue: string =\r\n this.validationKeyService.ValidationErrorSummaryMinValue;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n /**\r\n * Error Meldung, die angezeigt wird, wenn die Kriterien nicht erfüllt sind\r\n */\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.minvalue !== undefined &&\r\n this.minvalue !== null\r\n ) {\r\n error = Validation.minValue(\r\n this.minvalue,\r\n this.validationmessageminvalue,\r\n this.validationmessagesummaryminvalue\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n this.maxvalue !== undefined &&\r\n this.maxvalue !== null\r\n ) {\r\n error = Validation.maxValue(\r\n this.maxvalue,\r\n this.validationmessagemaxvalue,\r\n this.validationmessagesummarymaxvalue\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Konvertiert den Wert des Inputs\r\n */\r\n protected ConvertInputValue(value: any): any {\r\n if (value === '' || value === null) {\r\n return null;\r\n } else {\r\n if (this.allownegativ === true && value === '-') {\r\n return '-';\r\n } else {\r\n return parseInt(value, 10);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Methode die erzeugt den Control in Abhängigkeit davon, ob negative Were erlaubt sing oder nicht\r\n */\r\n protected OnClassInit(): void {\r\n super.OnClassInit();\r\n\r\n /**\r\n * Definiert die Wete die erlaubt sind\r\n */\r\n this.allowedchars = '0123456789';\r\n\r\n if (this.allownegativ) {\r\n this.allowedchars = this.allowedchars + '-';\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert ob der Wert entspricht den gegebenen Kriterien wenn ein Key gedrückt wird\r\n */\r\n protected OnKeyPressValidation(position: number, character: string): boolean {\r\n if (\r\n (this.allownegativ === false && character === '-') ||\r\n (this.allownegativ === true && position > 0 && character === '-')\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { Validation } from '../../validation';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputPassword\r\n */\r\n@Directive()\r\nexport class SacInputPasswordCommon extends SacInputCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Min. Textlänge\r\n */\r\n @Input() public minlength: number = 5;\r\n /**\r\n * Resource Key für Validation Message MinLength bei Control\r\n */\r\n @Input() public validationmessageminlength: string =\r\n this.validationKeyService.ValidationErrorMinLength;\r\n /**\r\n * Resource Key für Validation Message MinLength in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryminlength: string =\r\n this.validationKeyService.ValidationErrorSummaryMinLength;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriteriten entspricht\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.minLength(\r\n this.minlength,\r\n this.validationmessageminlength,\r\n this.validationmessagesummaryminlength\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SacInputCommon } from './input';\r\n\r\n/**\r\n * Basis Komponente für SacInputSearch\r\n */\r\n@Directive()\r\nexport class SacInputSearchCommon extends SacInputCommon {\r\n /**\r\n * Name des Such-Icons\r\n */\r\n @Input() iconname: string = '';\r\n /**\r\n * Text welcher auf dem Button angezeigt wird\r\n */\r\n @Input() buttontext: string = '';\r\n\r\n /**\r\n * Event wenn auf das Such-Icon geclickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Methode sendet den Wert des Inputs durch das Event\r\n */\r\n searchClick() {\r\n this.clicked.emit(this.value);\r\n }\r\n}\r\n","/**\r\n * Model für Pager Settings\r\n */\r\nexport class PagerData {\r\n\r\n /**\r\n * Konstruktor\r\n * @param PageSize Anzahl Elemente pro Seite\r\n * @param CurrentPageIndex Aktuelle Seite\r\n * @param TotalRowCount Total Rows in Datenbank\r\n */\r\n constructor(PageSize: number, CurrentPageIndex: number, TotalRowCount: number) {\r\n this.PageSize = PageSize;\r\n this.CurrentPageIndex = CurrentPageIndex;\r\n this.TotalRowCount = TotalRowCount;\r\n }\r\n\r\n /**\r\n * Gesamte Anzahl der Zeilen\r\n */\r\n TotalRowCount = 0;\r\n\r\n /**\r\n * Aktueller Index der Seite\r\n */\r\n CurrentPageIndex = 0;\r\n\r\n /**\r\n * PageSize\r\n */\r\n PageSize = 20;\r\n}\r\n\r\n/**\r\n * Model wenn Seite geändert werden soll\r\n */\r\nexport class PagerRequest {\r\n\r\n /**\r\n * Konstruktor\r\n * @param PageSize Seitegrösse / Anzahl Elemente pro Seite\r\n * @param NewPageIndex Neuer Seitenindex\r\n */\r\n constructor(PageSize: number, NewPageIndex: number) {\r\n this.PageSize = PageSize;\r\n this.NewPageIndex = NewPageIndex;\r\n }\r\n\r\n /**\r\n * Aktueller Index der Seite\r\n */\r\n PageSize: number = 0;\r\n\r\n /**\r\n * PageSize\r\n */\r\n NewPageIndex: number = 0;\r\n\r\n}\r\n\r\n/**\r\n * GridResponse-Klasse\r\n */\r\nexport class GridResponse<T> {\r\n /**\r\n * Gesamte Anzahl der Zeilen\r\n */\r\n TotalRowCount: number;\r\n /**\r\n * Data\r\n */\r\n Data: T[];\r\n}\r\n\r\n/**\r\n * Model für Sortierung\r\n */\r\nexport class SortDescriptor {\r\n /**\r\n * Konstruktor\r\n * @param sortcolumn Column die Sortiert wird\r\n * @param sortorder Art der Sortierung\r\n */\r\n constructor(sortcolumn?: string, sortorder?: SortOrder) {\r\n this.SortColumn = sortcolumn;\r\n this.SortOrder = sortorder;\r\n }\r\n\r\n /**\r\n * Bezeichnung / Key für Sortierung\r\n */\r\n SortColumn: string;\r\n\r\n /**\r\n * Sortierung\r\n */\r\n SortOrder: SortOrder;\r\n}\r\n\r\n/**\r\n * Enum für Sortierung\r\n */\r\nexport enum SortOrder {\r\n None = 0,\r\n Ascending = 1,\r\n Descending = 2\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\nimport { PagerData, PagerRequest, SortDescriptor, SortOrder } from './model';\r\n\r\n/**\r\n * Basis Komponente für SacGrid\r\n */\r\n@Directive()\r\nexport abstract class SacGridCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Protected Property. Enthielt die Nummer der aktiven Seite. Type: number. Default ist 1\r\n */\r\n protected activePage: number = 1;\r\n /**\r\n * Protected Property. Enthielt die Nummer der ersten angezeigtenen Seite in Pager. Type: number. Default ist 1\r\n */\r\n protected firstPageNumber: number = 1;\r\n // protected firstVisibleIndex: number = 1;\r\n // protected lastVisibleIndex;\r\n\r\n /**\r\n * Protected Property. Enthielt die Nummer der letzen Seite in Pager. Type: number. Default ist undefined/null\r\n */\r\n protected lastPageNumber: number;\r\n /**\r\n * Protected Property. Enthielt Array of Pages. Default value: empty array []\r\n */\r\n protected paginators: Array<any> = [];\r\n\r\n /**\r\n * Input property für body. Type: TemplateRef<any>.\r\n */\r\n @Input() public body: TemplateRef<any>;\r\n /**\r\n * Text welcher angezeigt wird, wenn keine Rows verfügbar sind.\r\n */\r\n @Input()\r\n public emptytext: string;\r\n /**\r\n * Input property für headers. Type: TemplateRef<any>.\r\n */\r\n @Input() public headers: TemplateRef<any>;\r\n /**\r\n * Input property für die maximalle Seiten die sichtbar sind. Type: number.\r\n */\r\n @Input() public maxvisiblepagenumbers: number;\r\n /**\r\n * Input property für Name.\r\n */\r\n @Input()\r\n public name: string;\r\n /**\r\n * Pager Settings\r\n *\r\n * Pager kann ausgeschaltet werden, in dem PagerData auf NULL gesetzt wird.\r\n */\r\n @Input()\r\n public pagerdata: PagerData;\r\n /**\r\n * Deaktiviert die Auswahl der PageSize im Pager\r\n */\r\n @Input()\r\n public pagesizedisabled: boolean = false;\r\n /**\r\n * Definiert die Anzahl der Elemente pro Seite die ausgewählt werden können\r\n */\r\n @Input()\r\n public pagesizes: string = '20|50|100';\r\n /**\r\n * Text in Page für Anzahl Seitenelemente pro Seite\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{PAGESIZE}}: Anzahl Elemente pro Seite\r\n */\r\n @Input()\r\n public pagesizetext: string;\r\n /**\r\n * Text in Pager für 'Seite x von y'.\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{CURRENTPAGE}}: Aktuelle Seite\r\n * {{TOTALPAGES}}: Anzahl Seiten\r\n */\r\n @Input()\r\n public pagingtext: string;\r\n /**\r\n * Grid Daten\r\n */\r\n @Input()\r\n public value: any;\r\n /**\r\n * Output EventEmitter. Wird aufgerufen wenn das Pager geklickt ist.\r\n */\r\n @Output() public paging: EventEmitter<PagerRequest> =\r\n new EventEmitter<PagerRequest>();\r\n /**\r\n * Output EventEmitter. Wird aufgerufen wenn ein Header geklickt ist, damit das Column soritert wird.\r\n */\r\n @Output() public sorting: EventEmitter<SortDescriptor> =\r\n new EventEmitter<SortDescriptor>();\r\n\r\n /**\r\n * Private Property. Enthielt die Column Menge. Type: number. Default ist 0\r\n */\r\n public ColumnCount: number = 0;\r\n /**\r\n * Aktuell Sortierte Spalte\r\n */\r\n public sortColumn: string = '';\r\n /**\r\n * Aktuelle Sortierung\r\n */\r\n public sortDirection: SortOrder = SortOrder.None;\r\n public validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param cd Change Detection Service\r\n * @param injector DI Injector\r\n */\r\n constructor(private cd: ChangeDetectorRef, injector: Injector) {\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n // Set Default Values from Injector\r\n this.pagesizetext = this.validationKeyService.PagingEntries;\r\n this.pagingtext = this.validationKeyService.PagingPageOf;\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Model für Sortierung\r\n * @param sortDescription Settings für aktuelle sortierung\r\n */\r\n @Input()\r\n public set sortdata(sortDescription: SortDescriptor) {\r\n this.sortColumn = sortDescription.SortColumn;\r\n this.sortDirection = sortDescription.SortOrder;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Die Methode erhöht die Column-Stücke um eins\r\n */\r\n public RegisterColumn() {\r\n this.ColumnCount++;\r\n // Detect Changes ausführen, da ColumnChange nach OnInit ausgeführt wird.\r\n this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Die Methode deffiniert das Sortierung Flow\r\n */\r\n public SortBy(command) {\r\n let direction: SortOrder;\r\n\r\n if (command === this.sortColumn) {\r\n switch (this.sortDirection) {\r\n case SortOrder.None:\r\n case SortOrder.Descending:\r\n direction = SortOrder.Ascending;\r\n break;\r\n case SortOrder.Ascending:\r\n direction = SortOrder.Descending;\r\n break;\r\n }\r\n } else {\r\n direction = SortOrder.Ascending;\r\n }\r\n\r\n const result: SortDescriptor = new SortDescriptor();\r\n result.SortColumn = command;\r\n result.SortOrder = direction;\r\n\r\n this.sorting.emit(result);\r\n }\r\n\r\n /**\r\n * Die Methode verringert die Column-Stücke um eins\r\n */\r\n public UnregisterColumn() {\r\n this.ColumnCount--;\r\n }\r\n\r\n /**\r\n * Setzt die neue Seite\r\n * @param newStartIndex Neuer Seiten Index (Zero-Based)\r\n */\r\n public pageChange(newStartIndex) {\r\n this.paging.emit(newStartIndex);\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * Base Grid Action Button\r\n */\r\n@Directive()\r\nexport class SacGridButtonCommon {\r\n /**\r\n * Input Property für Styling des Buttons. Deffiniert die Css Klassen des Buttons\r\n */\r\n @Input()\r\n public iconstyle: string = '';\r\n\r\n /**\r\n * Icon Name aus Sprite\r\n */\r\n @Input()\r\n public icon: string;\r\n\r\n /**\r\n * Button ist deaktiviert\r\n */\r\n protected _isdisabledvalue: boolean = false;\r\n\r\n /**\r\n * Deaktivieren von Buttons\r\n * @param v Deaktiviert den Button\r\n * @return Definiert ob der Button deaktiviert ist\r\n */\r\n @Input()\r\n set isdisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isdisabledvalue = v as boolean;\r\n } else {\r\n this._isdisabledvalue = v === 'true';\r\n }\r\n }\r\n get isdisabled(): boolean | string {\r\n return this._isdisabledvalue;\r\n }\r\n\r\n /**\r\n * Event wenn auf den Button geklickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Die Methode wird das cklickaction Emitter aktivieren\r\n */\r\n public callaction() {\r\n if (!this._isdisabledvalue) {\r\n this.clicked.emit(this.iconstyle);\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { SacGridCommon } from './grid';\r\nimport { SortOrder } from './model';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\n\r\n/**\r\n * Base Komponente für GridColumn\r\n */\r\n@Directive()\r\nexport class SacGridColumnBaseCommon implements OnInit, OnDestroy {\r\n /**\r\n * Konstruktor\r\n * @param grid reference to grid component\r\n * @param injector di injector to resolve icon service\r\n * @param el reference to html element\r\n */\r\n constructor(\r\n private grid: SacGridCommon,\r\n protected injector: Injector,\r\n private el: ElementRef\r\n ) {\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n /**\r\n * icon service\r\n */\r\n protected iconService: ISacIconService;\r\n\r\n //#region Input / Outputs\r\n\r\n /**\r\n * Das Input property erhält den Namen des Column\r\n */\r\n @Input()\r\n public name: any;\r\n\r\n /**\r\n * Das Input property erhält das Value des Column\r\n */\r\n @Input()\r\n public value: any;\r\n\r\n /**\r\n * Das Input property erhält das Header des Column\r\n */\r\n @Input()\r\n public header: string;\r\n\r\n /**\r\n * Das Input property erhält die Breite des Column\r\n */\r\n @Input()\r\n public width: string;\r\n\r\n /**\r\n * Das Input property erhält das Type des Column\r\n */\r\n @Input()\r\n public type: string;\r\n\r\n /**\r\n * Das Input property erhält das Column- Key-Word, damit das Column sortiert werden kann.\r\n */\r\n @Input()\r\n public sortkey: string;\r\n\r\n //#endregion\r\n\r\n //#region Interface Implementations\r\n\r\n /**\r\n * lifecycle hook - OnInit. Wird aufgeruren sobald das Komponent initialisiert ist.\r\n */\r\n ngOnInit() {\r\n const rootElement: HTMLElement = this.el.nativeElement;\r\n const parentElement: HTMLElement = rootElement.parentElement;\r\n\r\n while (rootElement.firstChild) {\r\n parentElement.insertBefore(rootElement.firstChild, rootElement);\r\n }\r\n\r\n parentElement.removeChild(rootElement);\r\n\r\n if (this.IsHeader()) {\r\n this.grid.RegisterColumn();\r\n }\r\n }\r\n\r\n /**\r\n * lifecycle hook - ngOnDestroy. Wird aufgeruren wenn das Component zerstört wird.\r\n */\r\n ngOnDestroy(): void {\r\n if (this.IsHeader()) {\r\n this.grid.UnregisterColumn();\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Type Handling\r\n\r\n /**\r\n * die Methode ergibt boolean Wert, ob das Element Header ist.\r\n */\r\n public IsHeader(): boolean {\r\n return this.type === 'header';\r\n }\r\n\r\n /**\r\n * die Methode ergibt boolean Wert, ob das Element Body ist.\r\n */\r\n public IsBody(): boolean {\r\n return this.type === 'body';\r\n }\r\n\r\n /**\r\n * die Methode ergibt boolean Wert, ob das Element Footer ist.\r\n */\r\n public IsFooter(): boolean {\r\n return this.type === 'footer';\r\n }\r\n\r\n //#endregion\r\n\r\n /**\r\n * sort up icon for grid header\r\n */\r\n public get IconSortUp(): string {\r\n return this.iconService.GridComponentSortUp;\r\n }\r\n\r\n /**\r\n * sort down icon for grid header\r\n */\r\n public get IconSortDown(): string {\r\n return this.iconService.GridComponentSortDown;\r\n }\r\n\r\n /**\r\n * Die Methode deffiniert wie das Grid sortiert wird, abhängig von gekligte Column\r\n */\r\n public SortByColumn() {\r\n if (\r\n this.sortkey !== undefined &&\r\n this.sortkey !== null &&\r\n this.sortkey !== ''\r\n ) {\r\n return this.grid.SortBy(this.sortkey);\r\n }\r\n }\r\n\r\n /**\r\n * die Methode ergibt boolean Wert und definiert, ob das Column für Sortierung aktiviert ist, gemäß eingegebene sortKey\r\n */\r\n public IsSortedColumn(): boolean {\r\n return this.grid.sortColumn === this.sortkey;\r\n }\r\n\r\n /**\r\n * Die methode definiert die Dortirung Richtung. Die Werte sind: none, asc, desc.\r\n */\r\n public GetSortDirection(): string {\r\n switch (this.grid.sortDirection) {\r\n case SortOrder.None:\r\n return 'none';\r\n case SortOrder.Ascending:\r\n return 'asc';\r\n case SortOrder.Descending:\r\n return 'desc';\r\n default:\r\n return 'none';\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Injector, Input } from '@angular/core';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\nimport { SacGridCommon } from './grid';\r\nimport { SacGridColumnBaseCommon } from './gridcolumnbase';\r\n\r\n/**\r\n * Komponente für SacGridColumnCommon. Extends SacGridColumnBaseCommon\r\n */\r\n@Directive()\r\nexport class SacGridColumnCommon extends SacGridColumnBaseCommon {\r\n /**\r\n * Konstruktor\r\n */\r\n constructor(grid: SacGridCommon, injector: Injector, el: ElementRef) {\r\n super(grid, injector, el);\r\n }\r\n\r\n /**\r\n * Das Property enthielt boolean Wert für die CSS Klasse ellipsis. Default is false.\r\n */\r\n private _ellipsis: boolean = false;\r\n\r\n /**\r\n * Input Parameter für das css Class ellipsis. Das Setter setzt das boolean Wert auf das private property _ellipsis\r\n */\r\n @Input()\r\n public set ellipsis(v: string | boolean) {\r\n this._ellipsis = convertToBoolean(v);\r\n }\r\n\r\n /**\r\n * Getter für das private property _ellipsis. Ergibt das boolean Wert des Property\r\n */\r\n public get ellipsis(): string | boolean {\r\n return this._ellipsis;\r\n }\r\n\r\n /**\r\n * Die Methode returns das Wert des Property _ellipsis\r\n */\r\n public IsEllipsis(): boolean {\r\n return this._ellipsis;\r\n }\r\n}\r\n","import { ElementRef, Directive, Injector } from '@angular/core';\r\nimport { SacGridCommon } from './grid';\r\nimport { SacGridColumnBaseCommon } from './gridcolumnbase';\r\n\r\n/**\r\n * Komponente für SacGridColumnActionCommon. Extends SacGridColumnBaseCommon\r\n */\r\n@Directive()\r\nexport class SacGridColumnActionCommon extends SacGridColumnBaseCommon {\r\n /**\r\n * Konstruktor\r\n * @param el Element Referenz\r\n * @param injector di inector to resolve icon service\r\n * @param grid SacGridCommon\r\n */\r\n constructor(grid: SacGridCommon, injector: Injector, el: ElementRef) {\r\n super(grid, injector, el);\r\n }\r\n}\r\n","import { Input, Directive } from '@angular/core';\r\n\r\n/**\r\n * Basis Komponente für SacGridImage\r\n */\r\n@Directive()\r\nexport class SacGridImageCommon {\r\n\r\n /**\r\n * das Input property akypetiert string value für style des Icon\r\n */\r\n @Input()\r\n public iconstyle: string;\r\n\r\n}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../../services/sac-localisation.service';\r\nimport {\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services/sac-validationkey.service';\r\nimport { PagerData, PagerRequest } from './model';\r\n\r\n/**\r\n * Basiskomponente für Paging\r\n */\r\n@Directive()\r\nexport abstract class SacPagingCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n private validationKeyService: ISacValidationKeyService;\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngResourceService: ISacLocalisationService;\r\n /**\r\n * Total Anzahl Rows\r\n */\r\n protected totalRowCount: number = 0;\r\n\r\n /**\r\n * Name des Grids. Wird für ID und Name Bezeichnungen verwendet\r\n */\r\n @Input()\r\n public name: string;\r\n /**\r\n * Auswahl der Seitengrösse deaktivieren\r\n */\r\n @Input()\r\n public pagesizedisabled: boolean = false;\r\n /**\r\n * Text in Page für Anzahl Seitenelemente pro Seite\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{PAGESIZE}}: Anzahl Elemente pro Seite\r\n */\r\n @Input()\r\n public pagesizes: string = '20|50|100';\r\n /**\r\n * Text in Page für Anzahl Seitenelemente pro Seite\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{PAGESIZE}}: Anzahl Elemente pro Seite\r\n */\r\n @Input()\r\n public pagesizetext: string = '';\r\n /**\r\n * Text in Pager für 'Seite x von y'.\r\n * Folgende Interpolation Texte sind vorhanden:\r\n * {{CURRENTPAGE}}: Aktuelle Seite\r\n * {{TOTALPAGES}}: Anzahl Seiten\r\n */\r\n @Input()\r\n public pagingtext: string = '';\r\n /**\r\n * Event wenn im Grid die Seite geändert wird. Als Parameter wird der neue PageIndex mitgegeben.\r\n */\r\n @Output()\r\n public paging: EventEmitter<PagerRequest> = new EventEmitter<PagerRequest>();\r\n\r\n /**\r\n * Aktiver Seitenindex\r\n */\r\n public activePageIndex: number = 0;\r\n /**\r\n * Erster Seitenindex\r\n */\r\n public firstPageIndex: number = 0;\r\n /**\r\n * Letzter Seitenindex\r\n */\r\n public lastPageIndex: number = 0;\r\n /**\r\n * Anzahl Elemente pro Seite\r\n */\r\n public pageSize: number = 20;\r\n /**\r\n * Item für jedes Paging Element (Seitenzahl)\r\n */\r\n public paginators: Array<any> = [];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * Inject des Formulars\r\n * @parent SacFormCommon\r\n * @injector Injector\r\n */\r\n constructor(injector: Injector) {\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n // Set Default Values from Injector\r\n this.pagesizetext = this.validationKeyService.PagingEntries;\r\n this.pagingtext = this.validationKeyService.PagingPageOf;\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Property für Pager Data\r\n */\r\n @Input()\r\n public set pagerdata(p: PagerData) {\r\n if (p != null) {\r\n this.totalRowCount = p.TotalRowCount;\r\n this.activePageIndex = p.CurrentPageIndex;\r\n this.pageSize = p.PageSize;\r\n }\r\n\r\n this.createPager();\r\n }\r\n\r\n /**\r\n * Property mit Text für Total Einträge in Seite\r\n */\r\n public get PageSizeText(): Observable<string> {\r\n return this.lngResourceService.GetString(this.pagesizetext);\r\n }\r\n\r\n /**\r\n * Text mit Aktueller Seite und Total Seiten\r\n */\r\n public get PagingText(): Observable<string> {\r\n return this.lngResourceService.GetString(this.pagingtext, {\r\n CURRENTPAGE: this.getCurrentPageNumber(),\r\n TOTALPAGES: this.getTotalPageNumber(),\r\n });\r\n }\r\n\r\n /**\r\n * Gibt die Page Sizes als Number Array zurück\r\n */\r\n public get getPageSizes(): number[] {\r\n return this.pagesizes.split('|').map((itm) => Number(itm));\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Andert die Seite auf den neuen Index\r\n * @param newPageIndex Seiten Index. Dies entspricht der Seitenzahl - 1.\r\n */\r\n public changePage(newPageIndex: number) {\r\n if (this.activePageIndex !== newPageIndex) {\r\n this.paged(newPageIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Ändert die Seitengrösse im Pager\r\n * @param newSize Neue Anzahl Elemente pro Seite\r\n */\r\n public changePageSize(newSize: number) {\r\n const pagerData: PagerRequest = new PagerRequest(\r\n newSize,\r\n this.activePageIndex\r\n );\r\n this.paging.emit(pagerData);\r\n }\r\n\r\n /**\r\n * Paging auf 1. Seite\r\n */\r\n public firstPage() {\r\n if (this.activePageIndex !== this.firstPageIndex) {\r\n this.paged(0);\r\n }\r\n }\r\n\r\n /**\r\n * Gibt die aktuelle Seitenzahl zurück\r\n */\r\n public getCurrentPageNumber(): number {\r\n return this.activePageIndex + 1;\r\n }\r\n\r\n /**\r\n * Gibt die totale Anzahl Seiten zurück\r\n */\r\n public getTotalPageNumber(): number {\r\n return this.lastPageIndex + 1;\r\n }\r\n\r\n /**\r\n * Paging auf letzter Seite\r\n */\r\n public lastPage() {\r\n if (this.activePageIndex !== this.lastPageIndex) {\r\n this.paged(this.lastPageIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Paging auf nächste Seite\r\n */\r\n public nextPage() {\r\n if (this.activePageIndex !== this.lastPageIndex) {\r\n this.paged(this.activePageIndex + 1);\r\n }\r\n }\r\n\r\n /**\r\n * Paging eine Seite zurück\r\n */\r\n public previousPage() {\r\n if (this.activePageIndex !== this.firstPageIndex) {\r\n this.paged(this.activePageIndex - 1);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Erzeugt die Pager Daten\r\n */\r\n protected createPager() {\r\n this.paginators = [];\r\n\r\n if (this.totalRowCount > 0) {\r\n let totalPageCount = Math.ceil(this.totalRowCount / this.pageSize);\r\n\r\n // PageCount auf 1 stellen, wenn keine Records vorhanden sind.\r\n if (totalPageCount === 0) {\r\n totalPageCount = 1;\r\n }\r\n\r\n // PageIndex berechnen\r\n this.lastPageIndex = totalPageCount - 1;\r\n const startPageIndex = this.getStartPageIndex(totalPageCount);\r\n const endPageIndex = this.getEndPageIndex(totalPageCount);\r\n\r\n // Index Fix wenn Aktive Seite grösser als letze Seite\r\n if (this.activePageIndex > this.lastPageIndex) {\r\n this.activePageIndex = this.lastPageIndex;\r\n }\r\n\r\n for (let i = startPageIndex; i <= endPageIndex; i++) {\r\n this.paginators.push(i);\r\n }\r\n } else {\r\n this.paginators.push(0);\r\n }\r\n }\r\n\r\n /**\r\n * Gibt den letzten Seitenindex zurück.\r\n * @param totalPageCount Total Anzahl Seiten\r\n */\r\n protected getEndPageIndex(totalPageCount: number): number {\r\n let endingPageToDisplay = this.activePageIndex + 2;\r\n const maxEndingPageIndex = 4 > totalPageCount - 1 ? totalPageCount - 1 : 4;\r\n\r\n if (endingPageToDisplay > totalPageCount - 1) {\r\n endingPageToDisplay = totalPageCount - 1;\r\n } else if (this.activePageIndex < 2) {\r\n endingPageToDisplay = maxEndingPageIndex;\r\n }\r\n return endingPageToDisplay;\r\n }\r\n\r\n /**\r\n * Gibt den Start Index zurück\r\n * @param totalPageCount Total Anzahl Seiten\r\n */\r\n protected getStartPageIndex(totalPageCount: number): number {\r\n let startingPageToDisplay: number = 0;\r\n startingPageToDisplay = this.activePageIndex - 2;\r\n\r\n if (totalPageCount - this.activePageIndex - 1 < 2) {\r\n startingPageToDisplay = totalPageCount - 5;\r\n }\r\n\r\n if (startingPageToDisplay < 0) {\r\n startingPageToDisplay = 0;\r\n }\r\n return startingPageToDisplay;\r\n }\r\n\r\n /**\r\n * Methode löst den Event aus, dass ein Paging stattgefunden hat\r\n */\r\n protected paged(newPageIndex: number) {\r\n const pagerData: PagerRequest = new PagerRequest(\r\n this.pageSize,\r\n newPageIndex\r\n );\r\n this.paging.emit(pagerData);\r\n }\r\n\r\n // #endregion Protected Methods\r\n}\r\n","import { Directive, ElementRef, Injector, Input, OnInit } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as moment_ from 'moment';\r\nimport { Moment } from 'moment';\r\nimport { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\r\nimport { Validation } from '../validation';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n/**\r\n * Base Klasse für Date/Time Controls\r\n */\r\n@Directive()\r\nexport abstract class SacBaseDateTimeControl\r\n extends SacBaseModelControl<Date>\r\n implements OnInit\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * das property enthielt das Value als string. Default ist ''\r\n */\r\n protected _valueAsString = '';\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n /**\r\n * TextBox Placeholder\r\n */\r\n @Input() public placeholder: string = null;\r\n /**\r\n * Resource Key für Validation Message DateTimeFormat bei Control\r\n */\r\n @Input() public validationmessagedatetimeformat: string =\r\n this.validationKeyService.ValidationErrorDatetimeFormat;\r\n /**\r\n * Resource Key für Validation Message DateTimeFormat in Validation Summary\r\n */\r\n @Input() public validationmessagedatetimeformatsummary: string =\r\n this.validationKeyService.ValidationErrorSummaryDatetimeFormat;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagerequiredsummary: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector);\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Das Input bekommt das value von typ string\r\n */\r\n @Input()\r\n public set valuestring(v: string) {\r\n this._valueAsString = v;\r\n let date: Moment = moment(v, [this.GetDateTimeFormatString()], true);\r\n\r\n date = this.ModifyParsedDateTimeValue(date).utc();\r\n\r\n if (date.isValid()) {\r\n this.value = date.toDate();\r\n } else {\r\n this.value = null;\r\n }\r\n }\r\n\r\n /**\r\n * getter für valuestring\r\n */\r\n public get valuestring(): string {\r\n if (this.value === null) {\r\n return this._valueAsString;\r\n } else {\r\n const date = moment.utc(this.value);\r\n return date.local().format(this.GetDateTimeFormatString());\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann\r\n */\r\n public getDate(timestamp) {\r\n const date = new Date(timestamp);\r\n const year = date.getUTCFullYear();\r\n const month = date.getUTCMonth();\r\n const day = date.getUTCDate();\r\n const hours = date.getUTCHours();\r\n const minutes = date.getUTCMinutes();\r\n const seconds = date.getUTCSeconds();\r\n\r\n return moment(Date.UTC(year, month, day, hours, minutes, seconds));\r\n }\r\n\r\n /**\r\n * Init Event\r\n */\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n this.SetDateTimeFormat();\r\n }\r\n\r\n /**\r\n * setzt das value von typ string zu property valuestring\r\n */\r\n public setValueString(v: string) {\r\n this.valuestring = v;\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = Validation.isValidDate(\r\n this.validationmessagedatetimeformat,\r\n this.validationmessagedatetimeformatsummary\r\n )(c);\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagerequiredsummary\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n /**\r\n * Overwrite WriteValue to Set correct Date Object\r\n */\r\n public writeValue(value: Date | string) {\r\n if (value === '' || value === null || value === undefined) {\r\n // Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.\r\n this._valueAsString = '';\r\n // Set Internal Property\r\n this._value = null;\r\n } else {\r\n this._value = this.getDate(value).toDate();\r\n }\r\n\r\n super.writeValue(this._value);\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Die methode returns dateTime in string\r\n */\r\n public abstract GetDateTimeFormatString(): string;\r\n /**\r\n * Die methode modifiziert das eingegebene Value von typ Moment\r\n */\r\n public abstract ModifyParsedDateTimeValue(v: Moment): Moment;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n private SetDateTimeFormat(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IDateTimeControl).datetimeformatstring =\r\n this.GetDateTimeFormatString();\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as IMask from 'imask';\r\nimport * as moment_ from 'moment';\r\n\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SacBaseDateTimeControl } from '../../common/basedatetimecontrol';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Komponente für SacDateCommon. Extends SacBaseDateTimeControl\r\n */\r\n@Directive()\r\nexport class SacDateCommon extends SacBaseDateTimeControl {\r\n // #region Properties\r\n\r\n /**\r\n * icon service\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Format des Datums\r\n */\r\n public readonly DATEFORMAT: string = 'DD.MM.YYYY';\r\n /**\r\n * Maske\r\n */\r\n public readonly imaskDate = {\r\n mask: this.DATEFORMAT,\r\n blocks: {\r\n DD: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 31,\r\n maxLength: 2,\r\n },\r\n MM: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 12,\r\n maxLength: 2,\r\n },\r\n YYYY: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 9999,\r\n },\r\n },\r\n placeholderChar: '_',\r\n autofix: true,\r\n lazy: false,\r\n overwrite: true,\r\n };\r\n\r\n /**\r\n * Resource Key für Validation Message MaxDate bei Control\r\n */\r\n @Input() public validationmessagemaxdate: string =\r\n this.validationKeyService.ValidationErrorMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate bei Control\r\n */\r\n @Input() public validationmessagemindate: string =\r\n this.validationKeyService.ValidationErrorMinDate;\r\n /**\r\n * Resource Key für Validation Message MaxDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxdate: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymindate: string =\r\n this.validationKeyService.ValidationErrorSummaryMinDate;\r\n\r\n /**\r\n * Min Date\r\n */\r\n public _maxdate: Date = null;\r\n /**\r\n * Min Date\r\n */\r\n public _mindate: Date = null;\r\n /**\r\n * Definiert ob der Date Selector angezeigt wird\r\n */\r\n public _showselector: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector, elementRef);\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Min Date\r\n */\r\n @Input()\r\n public set maxdate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._maxdate = super.getDate(date).toDate();\r\n } else {\r\n this._maxdate = null;\r\n }\r\n }\r\n\r\n /**\r\n * Min Date\r\n */\r\n @Input()\r\n public set mindate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._mindate = super.getDate(date).toDate();\r\n } else {\r\n this._mindate = null;\r\n }\r\n }\r\n\r\n /**\r\n * icon for date selector button\r\n */\r\n public get IconSelector(): string {\r\n return this.iconService.DateComponentSelectorIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this._showselector = false;\r\n }\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum-Format vom String\r\n */\r\n public GetDateTimeFormatString(): string {\r\n return this.DATEFORMAT;\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum - Moment\r\n */\r\n public ModifyParsedDateTimeValue(v: Moment): Moment {\r\n return v;\r\n }\r\n\r\n /**\r\n * Date Selector\r\n */\r\n public dateselect(v: any) {\r\n if (v.date === null) {\r\n this.setValueString('');\r\n } else {\r\n this.value = moment(v.date).utc().toDate();\r\n }\r\n\r\n this._showselector = false;\r\n }\r\n\r\n /**\r\n * Zeigt Date Selector an\r\n */\r\n public showDateSelector(): void {\r\n // Touch Event auslösen\r\n this.onTouch();\r\n\r\n if (this._showselector) {\r\n this._showselector = false;\r\n } else {\r\n this._showselector = true;\r\n }\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = super.validateData(c);\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._mindate !== undefined &&\r\n this._mindate !== null\r\n ) {\r\n error = Validation.minDate(\r\n this._mindate,\r\n this.validationmessagemindate,\r\n this.validationmessagesummarymindate\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._maxdate !== undefined &&\r\n this._maxdate !== null\r\n ) {\r\n error = Validation.maxDate(\r\n this._maxdate,\r\n this.validationmessagemaxdate,\r\n this.validationmessagesummarymaxdate\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import {\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n Directive,\r\n Injector,\r\n} from '@angular/core';\r\nimport * as moment_ from 'moment';\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\n\r\n// #region Classes\r\n\r\n/**\r\n *Basis Komponente für DateSelectorItem\r\n */\r\nclass DateSelectorItem {\r\n // #region Properties\r\n\r\n /**\r\n * Datum\r\n */\r\n public date: Date = undefined;\r\n /**\r\n * DisplayText Property; default Wert - ''\r\n */\r\n public displaytext: string = '';\r\n /**\r\n * Boolean Property, die zeigt, ob das Element aktuell ist; default Wert - false\r\n */\r\n public iscurrent: boolean = false;\r\n /**\r\n * Boolean Property, die zeigt, ob das Control enabled ist; default Wert - false\r\n */\r\n public isenabled: boolean = false;\r\n /**\r\n * Boolean Property, die zeigt, ob das Element neu ist; default Wert - false\r\n */\r\n public isnew: boolean = false;\r\n /**\r\n * Boolean Property, die zeigt, ob das Element selektiert ist; default Wert - false\r\n */\r\n public isselected: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param displaytext Anzeigetext\r\n * @param date Datum\r\n * @param isenabled Element ist aktiv\r\n * @param isselected Element ist selektiert\r\n * @param iscurrent Element ist aktuelles Element\r\n * @param isnew Element ist neu\r\n */\r\n constructor(\r\n displaytext: string,\r\n date: Date,\r\n isenabled: boolean,\r\n isselected: boolean,\r\n iscurrent: boolean,\r\n isnew: boolean\r\n ) {\r\n this.displaytext = displaytext;\r\n this.date = date;\r\n this.isenabled = isenabled;\r\n this.iscurrent = iscurrent;\r\n this.isselected = isselected;\r\n this.isnew = isnew;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n\r\n/**\r\n *Basis Komponente für SacDateSelector\r\n */\r\n@Directive()\r\nexport class SacDateSelectorCommon implements OnInit {\r\n // #region Properties\r\n\r\n /**\r\n * Ursprüngliches Datum\r\n */\r\n private _initialValue: Moment | null;\r\n /**\r\n * Aktuell gewähltes Datum\r\n */\r\n private _selectedValue: Moment | null;\r\n /**\r\n * Anfang des Kalenders\r\n */\r\n private beginOfCalendar: number = 1;\r\n /**\r\n * icon service to resolve icons\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Boolean Property für automatische Selektierung; default Wert - false\r\n */\r\n @Input()\r\n public autoapplyselection = false;\r\n /**\r\n * Array von Daten\r\n */\r\n public dates: DateSelectorItem[][] = [];\r\n /**\r\n * Datum Selector\r\n */\r\n @Input()\r\n public dateselection: boolean = false;\r\n /**\r\n * Monat\r\n */\r\n @Input()\r\n public month: number = 4;\r\n /**\r\n * Output Event beim Datum Selektieren\r\n */\r\n @Output()\r\n public selectdate = new EventEmitter<any>();\r\n /**\r\n * Time Selector\r\n */\r\n @Input()\r\n public timeselection: boolean = false;\r\n /**\r\n * Jahr\r\n */\r\n @Input()\r\n public year: number = 2018;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n constructor(injector: Injector) {\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Get icon to switch to next month\r\n */\r\n public get iconMonthNext(): string {\r\n return this.iconService.DateTimeSelectorComponentMonthNextIcon;\r\n }\r\n\r\n /**\r\n * Get icon to switch to previous month\r\n */\r\n public get iconMonthPrev(): string {\r\n return this.iconService.DateTimeSelectorComponentMonthPrevIcon;\r\n }\r\n\r\n /**\r\n * Input für ursprüngliches Datum\r\n */\r\n @Input()\r\n public get initialvalue(): Date {\r\n return this._initialValue.toDate();\r\n }\r\n\r\n public set initialvalue(v: Date | null) {\r\n if (v === null || v === undefined) {\r\n this._initialValue = null;\r\n } else {\r\n this._initialValue = moment(v);\r\n }\r\n\r\n this._selectedValue = null;\r\n\r\n if (this._initialValue === null) {\r\n this.initCalendar(moment());\r\n } else {\r\n this.initCalendar(this._initialValue);\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Selektierung übernehmen\r\n */\r\n public applySelection(): void {\r\n if (this.timeselection === false && this._selectedValue !== null) {\r\n this._selectedValue.hour(0);\r\n this._selectedValue.minute(0);\r\n this._selectedValue.second(0);\r\n this._selectedValue.millisecond(0);\r\n }\r\n\r\n if (this.dateselection === false && this._selectedValue !== null) {\r\n const tempValue: Moment = this._selectedValue.local();\r\n tempValue.date(1);\r\n tempValue.month(0);\r\n tempValue.year(1900);\r\n this._selectedValue = tempValue.utc();\r\n }\r\n\r\n this.selectdate.emit({\r\n date: this._selectedValue,\r\n });\r\n }\r\n\r\n /**\r\n * Modus ändern\r\n */\r\n public changeMode(): void {\r\n if (this.beginOfCalendar === 0) {\r\n this.beginOfCalendar = 1;\r\n } else {\r\n this.beginOfCalendar = 0;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Getter für Stunden Uhrzeit\r\n */\r\n public getHours(): number {\r\n if (this._selectedValue === null) {\r\n /**\r\n * Wert aus Init Value lesen\r\n */\r\n if (this._initialValue === null) {\r\n return 0;\r\n } else {\r\n return this._initialValue.hour();\r\n }\r\n } else {\r\n return this._selectedValue.hour();\r\n }\r\n }\r\n\r\n /**\r\n * Getter für Minuten Uhrzeit\r\n */\r\n public getMinutes(): number {\r\n if (this._selectedValue === null) {\r\n /**\r\n * Wert aus Init Value lesen\r\n */\r\n if (this._initialValue === null) {\r\n return 0;\r\n } else {\r\n return this._initialValue.minutes();\r\n }\r\n } else {\r\n return this._selectedValue.minutes();\r\n }\r\n }\r\n\r\n /**\r\n * Vorheriger Monat\r\n */\r\n public monthBack(): void {\r\n this.month = this.month - 1;\r\n\r\n if (this.month < 0) {\r\n this.month = 11;\r\n this.year = this.year - 1;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Nächster Monat\r\n */\r\n public monthNext(): void {\r\n this.month = this.month + 1;\r\n\r\n if (this.month > 11) {\r\n this.month = 0;\r\n this.year = this.year + 1;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Init Event\r\n */\r\n public ngOnInit() {\r\n /**\r\n * Init Initial Date if Empty\r\n */\r\n if (this._initialValue === undefined) {\r\n this.initialvalue = null;\r\n }\r\n\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Selektierung resetten\r\n */\r\n public resetSelection(): void {\r\n this.selectdate.emit({\r\n date: null,\r\n });\r\n }\r\n\r\n /**\r\n * Methode ergibt das selektierte Datum\r\n */\r\n public selectDate(v: DateSelectorItem): void {\r\n if (v.isenabled) {\r\n this.dates.forEach((date) =>\r\n date\r\n .filter((filter) => filter.isnew)\r\n .forEach((itm) => (itm.isnew = false))\r\n );\r\n this.dates.forEach((date) =>\r\n date\r\n .filter((filter) => filter.isselected)\r\n .forEach((itm) => (itm.isselected = false))\r\n );\r\n v.isnew = true;\r\n v.isselected = true;\r\n\r\n const dateValue: Moment = moment(v.date);\r\n\r\n // Übernehmen der Zeit aus dem bestehenden Wert\r\n if (this._selectedValue === null) {\r\n if (this._initialValue !== null) {\r\n dateValue.hour(this._initialValue.hour());\r\n dateValue.minute(this._initialValue.minute());\r\n }\r\n } else {\r\n dateValue.hour(this._selectedValue.hour());\r\n dateValue.minute(this._selectedValue.minute());\r\n }\r\n\r\n // Sekunden un Milisekunden Clean\r\n dateValue.second(0);\r\n dateValue.millisecond(0);\r\n this._selectedValue = dateValue;\r\n\r\n if (this.autoapplyselection) {\r\n this.applySelection();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Setter für Stunden Uhrzeit\r\n */\r\n public setHours(v: number | null): void {\r\n /**\r\n * Select Value setzen falls leer\r\n */\r\n this.initSelectedValue();\r\n\r\n if (v === null) {\r\n this._selectedValue.hour(0);\r\n } else {\r\n this._selectedValue.hour(v);\r\n }\r\n }\r\n\r\n /**\r\n * Setter für Minuten Uhrzeit\r\n */\r\n public setMinutes(v: number | null): void {\r\n /**\r\n * Select Value setzen falls leer\r\n */\r\n this.initSelectedValue();\r\n\r\n if (v === null) {\r\n this._selectedValue.minutes(0);\r\n } else {\r\n this._selectedValue.minutes(v);\r\n }\r\n }\r\n\r\n /**\r\n * Auswahl auf aktuelle Zeit stellen\r\n */\r\n public setToday(): void {\r\n this._selectedValue = moment();\r\n\r\n /**\r\n * Sekunden un Milisekunden Clean\r\n */\r\n this._selectedValue.second(0);\r\n this._selectedValue.millisecond(0);\r\n\r\n /**\r\n * Kalender Daten initialisieren falls Kalender angezeigt\r\n */\r\n if (this.dateselection) {\r\n this.initCalendar(this._selectedValue);\r\n }\r\n\r\n if (this.autoapplyselection) {\r\n this.applySelection();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Ursprünglicher Kalender\r\n */\r\n private initCalendar(v: Moment) {\r\n /**\r\n * Monat und Jahr setzen\r\n */\r\n this.month = v.month();\r\n this.year = v.year();\r\n\r\n /**\r\n * Daten für Kalender initialiseren\r\n */\r\n this.initDates();\r\n }\r\n\r\n /**\r\n * Initial Datum\r\n */\r\n private initDates(): void {\r\n const currentMonth = moment(new Date(this.year, this.month, 1));\r\n const lastMonth = moment(new Date(this.year, this.month, 1));\r\n lastMonth.add({ months: -1 });\r\n const nextMonths = moment(new Date(this.year, this.month, 1));\r\n nextMonths.add({ months: 1 });\r\n\r\n const weekdayBegin: number = currentMonth.weekday();\r\n const weekdayEnd: number = moment(\r\n new Date(\r\n currentMonth.year(),\r\n currentMonth.month(),\r\n currentMonth.daysInMonth()\r\n )\r\n ).weekday();\r\n // Clear Array\r\n const daysInCalendar: DateSelectorItem[] = [];\r\n this.dates = [];\r\n\r\n if (weekdayBegin !== this.beginOfCalendar) {\r\n const lastMonthDay = lastMonth.daysInMonth();\r\n const lastMonthDate = new Date(\r\n lastMonth.year(),\r\n lastMonth.month(),\r\n lastMonthDay\r\n );\r\n const lastMonthWeekday = moment(lastMonthDate).weekday();\r\n\r\n let daysInLastMonth =\r\n 7 - ((7 + this.beginOfCalendar - lastMonthWeekday) % 7);\r\n if (daysInLastMonth === 7) {\r\n daysInLastMonth = 0;\r\n }\r\n\r\n for (\r\n let day = lastMonthDay;\r\n day >= lastMonthDay - daysInLastMonth;\r\n day--\r\n ) {\r\n daysInCalendar.splice(\r\n 0,\r\n 0,\r\n new DateSelectorItem(\r\n day.toString(),\r\n new Date(lastMonth.year(), lastMonth.month(), day),\r\n false,\r\n false,\r\n false,\r\n false\r\n )\r\n );\r\n }\r\n }\r\n\r\n // Add all Days in Month\r\n for (\r\n let dayinmonth = 1;\r\n dayinmonth <= currentMonth.daysInMonth();\r\n dayinmonth++\r\n ) {\r\n let isSelectedDate: boolean = false;\r\n let isNewDate: boolean = false;\r\n const isCurrentDate: boolean =\r\n moment().month() === this.month &&\r\n moment().year() === this.year &&\r\n moment().date() === dayinmonth;\r\n\r\n // Initial Wert setzen, falls vorhanden\r\n if (this._initialValue !== null) {\r\n isSelectedDate =\r\n this._initialValue.month() === this.month &&\r\n this._initialValue.year() === this.year &&\r\n this._initialValue.date() === dayinmonth;\r\n }\r\n\r\n // Selected Date Wert setzen, falls Wert gesetzt\r\n if (this._selectedValue !== null) {\r\n isNewDate =\r\n this._selectedValue.month() === this.month &&\r\n this._selectedValue.year() === this.year &&\r\n this._selectedValue.date() === dayinmonth;\r\n }\r\n\r\n daysInCalendar.push(\r\n new DateSelectorItem(\r\n dayinmonth.toString(),\r\n moment([this.year, this.month, dayinmonth]).toDate(),\r\n true,\r\n isSelectedDate,\r\n isCurrentDate,\r\n isNewDate\r\n )\r\n );\r\n }\r\n\r\n let endOfCalender: number;\r\n if (this.beginOfCalendar === 0) {\r\n endOfCalender = 6;\r\n } else {\r\n endOfCalender = 0;\r\n }\r\n\r\n if (weekdayEnd !== endOfCalender) {\r\n let countMissingDays: number;\r\n\r\n if (this.beginOfCalendar === 0) {\r\n countMissingDays = endOfCalender - weekdayEnd;\r\n } else {\r\n countMissingDays = 7 - weekdayEnd;\r\n }\r\n\r\n for (let i = 1; i <= countMissingDays; i++) {\r\n daysInCalendar.push(\r\n new DateSelectorItem(\r\n i.toString(),\r\n new Date(nextMonths.year(), nextMonths.month(), i),\r\n false,\r\n false,\r\n false,\r\n false\r\n )\r\n );\r\n }\r\n }\r\n\r\n for (let index = 0; index < daysInCalendar.length / 7; index++) {\r\n for (let day = 0; day < 7; day++) {\r\n if (day === 0) {\r\n this.dates[index] = [];\r\n }\r\n\r\n this.dates[index].push(daysInCalendar[index * 7 + day]);\r\n }\r\n }\r\n }\r\n\r\n private initSelectedValue() {\r\n /**\r\n * Select Value setzen falls leer\r\n */\r\n if (this._selectedValue === null) {\r\n if (this._initialValue === null) {\r\n this._selectedValue = moment();\r\n } else {\r\n this._selectedValue = this._initialValue;\r\n }\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Variables\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n// #endregion Variables\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as IMask from 'imask';\r\nimport * as moment_ from 'moment';\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SacBaseDateTimeControl } from '../../common/basedatetimecontrol';\r\nimport { ISacIconService } from '../../public_api';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Komponente für SacDateTimeCommon. Extends SacBaseDateTimeControl\r\n */\r\n@Directive()\r\nexport class SacDateTimeCommon extends SacBaseDateTimeControl {\r\n // #region Properties\r\n\r\n /**\r\n * icon service\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Format des Datums\r\n */\r\n public readonly DATEFORMAT: string = 'DD.MM.YYYY HH:mm';\r\n /**\r\n * Maske\r\n */\r\n /**\r\n * Maske\r\n */\r\n public readonly imaskDate = {\r\n mask: this.DATEFORMAT,\r\n blocks: {\r\n DD: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 31,\r\n maxLength: 2,\r\n },\r\n MM: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 12,\r\n maxLength: 2,\r\n },\r\n YYYY: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 9999,\r\n },\r\n HH: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 23,\r\n maxLength: 2,\r\n },\r\n mm: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 59,\r\n maxLength: 2,\r\n },\r\n },\r\n placeholderChar: '_',\r\n autofix: true,\r\n lazy: false,\r\n overwrite: true,\r\n };\r\n\r\n /**\r\n * Resource Key für Validation Message MaxDate bei Control\r\n */\r\n @Input() public validationmessagemaxdate: string =\r\n this.validationKeyService.ValidationErrorMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate bei Control\r\n */\r\n @Input() public validationmessagemindate: string =\r\n this.validationKeyService.ValidationErrorMinDate;\r\n /**\r\n * Resource Key für Validation Message MaxDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxdate: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxDate;\r\n /**\r\n * Resource Key für Validation Message MinDate in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymindate: string =\r\n this.validationKeyService.ValidationErrorSummaryMinDate;\r\n\r\n /**\r\n * Maximaler Wert des Datums\r\n */\r\n public _maxdate: Date = null;\r\n /**\r\n * Minimaler Wert des Datums\r\n */\r\n public _mindate: Date = null;\r\n /**\r\n * Definiert ob der Date Selector angezeigt wird\r\n */\r\n public _showselector: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector, elementRef);\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Max Date\r\n */\r\n @Input()\r\n public set maxdate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._maxdate = super.getDate(date).toDate();\r\n } else {\r\n this._maxdate = null;\r\n }\r\n }\r\n\r\n /**\r\n * Min Date\r\n */\r\n @Input()\r\n public set mindate(v: string | Date | null) {\r\n const date = moment(v, [this.DATEFORMAT], true);\r\n\r\n if (date.isValid()) {\r\n this._mindate = super.getDate(date).toDate();\r\n } else {\r\n this._mindate = null;\r\n }\r\n }\r\n\r\n /**\r\n * icon for date selector button\r\n */\r\n public get IconSelector(): string {\r\n return this.iconService.DateTimeComponentSelectorIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this._showselector = false;\r\n }\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum-Format vom String\r\n */\r\n public GetDateTimeFormatString(): string {\r\n return this.DATEFORMAT;\r\n }\r\n\r\n /**\r\n * Methode modifiziert den parsed Wert des Datums\r\n */\r\n public ModifyParsedDateTimeValue(v: Moment): Moment {\r\n return v;\r\n }\r\n\r\n /**\r\n * Methode ergibt das selektierte Datum\r\n */\r\n public dateselect(v: any) {\r\n if (v.date === null) {\r\n this.setValueString('');\r\n } else {\r\n this.value = moment(v.date).utc().toDate();\r\n }\r\n\r\n this._showselector = false;\r\n }\r\n\r\n /**\r\n * DateSelector wird beim Click-Event angezeigt\r\n */\r\n public showDateSelector(): void {\r\n /**\r\n * Touch Event auslösen\r\n */\r\n this.onTouch();\r\n\r\n if (this._showselector) {\r\n this._showselector = false;\r\n } else {\r\n this._showselector = true;\r\n }\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = super.validateData(c);\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._mindate !== undefined &&\r\n this._mindate !== null\r\n ) {\r\n error = Validation.minDate(\r\n this._mindate,\r\n this.validationmessagemindate,\r\n this.validationmessagesummarymindate\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._maxdate !== undefined &&\r\n this._maxdate !== null\r\n ) {\r\n error = Validation.maxDate(\r\n this._maxdate,\r\n this.validationmessagemaxdate,\r\n this.validationmessagesummarymaxdate\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport * as IMask from 'imask';\r\nimport * as moment_ from 'moment';\r\n// Import Moment.JS\r\nimport { Moment } from 'moment';\r\nimport { SacBaseDateTimeControl } from '../../common/basedatetimecontrol';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Moment\r\n */\r\nconst moment = moment_['default'];\r\n\r\n/**\r\n * Komponente für SacTimeCommon. Extends SacBaseDateTimeControl\r\n */\r\n@Directive()\r\nexport class SacTimeCommon extends SacBaseDateTimeControl {\r\n // #region Properties\r\n\r\n /**\r\n * icon service\r\n */\r\n private iconService: ISacIconService;\r\n\r\n /**\r\n * Format des Datums\r\n */\r\n public readonly TIMEFORMAT: string = 'HH:mm';\r\n /**\r\n * Maske\r\n */\r\n public readonly imaskDate = {\r\n mask: this.TIMEFORMAT,\r\n blocks: {\r\n HH: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 23,\r\n maxLength: 2,\r\n },\r\n mm: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 59,\r\n maxLength: 2,\r\n },\r\n },\r\n placeholderChar: '_',\r\n autofix: true,\r\n lazy: false,\r\n overwrite: true,\r\n };\r\n\r\n /**\r\n * Resource Key für Validation Message MinTime bei Control\r\n */\r\n @Input() public validationmessagemaxtime: string =\r\n this.validationKeyService.ValidationErrorMaxTime;\r\n /**\r\n * Resource Key für Validation Message MinTime bei Control\r\n */\r\n @Input() public validationmessagemintime: string =\r\n this.validationKeyService.ValidationErrorMinTime;\r\n /**\r\n * Resource Key für Validation Message MinTime in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymaxtime: string =\r\n this.validationKeyService.ValidationErrorSummaryMaxTime;\r\n /**\r\n * Resource Key für Validation Message MinTime in Validation Summary\r\n */\r\n @Input() public validationmessagesummarymintime: string =\r\n this.validationKeyService.ValidationErrorSummaryMinTime;\r\n\r\n /**\r\n * Max Time\r\n */\r\n public _maxtime: Date = null;\r\n /**\r\n * Min Time\r\n */\r\n public _mintime: Date = null;\r\n /**\r\n * Definiert ob der Date Selector angezeigt wird\r\n */\r\n public _showselector: boolean = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector, elementRef);\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Max Time\r\n */\r\n @Input()\r\n public set maxtime(v: string | Date | null) {\r\n let time = moment(v, [this.TIMEFORMAT], true);\r\n\r\n time = this.ModifyParsedDateTimeValue(time);\r\n\r\n if (time.isValid()) {\r\n this._maxtime = super.getDate(time).toDate();\r\n } else {\r\n this._maxtime = null;\r\n }\r\n }\r\n\r\n /**\r\n * Min Time\r\n */\r\n @Input()\r\n public set mintime(v: string | Date | null) {\r\n let time = moment(v, [this.TIMEFORMAT], true);\r\n\r\n time = this.ModifyParsedDateTimeValue(time);\r\n\r\n if (time.isValid()) {\r\n this._mintime = super.getDate(time).toDate();\r\n } else {\r\n this._mintime = null;\r\n }\r\n }\r\n\r\n /**\r\n * icon for date selector button\r\n */\r\n public get IconSelector(): string {\r\n return this.iconService.TimeComponentSelectorIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this._showselector = false;\r\n }\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum-Format vom String\r\n */\r\n public GetDateTimeFormatString(): string {\r\n return this.TIMEFORMAT;\r\n }\r\n\r\n /**\r\n * Methode ergibt Datum - Moment\r\n */\r\n public ModifyParsedDateTimeValue(v: Moment): Moment {\r\n v.date(1);\r\n v.month(0);\r\n v.year(1900);\r\n return v;\r\n }\r\n\r\n /**\r\n * Zeigt Date Selector an\r\n */\r\n public showTimeSelector(): void {\r\n // Touch Event auslösen\r\n this.onTouch();\r\n\r\n if (this._showselector) {\r\n this._showselector = false;\r\n } else {\r\n this._showselector = true;\r\n }\r\n }\r\n\r\n /**\r\n * Time Selector\r\n */\r\n public timeselect(v: any) {\r\n if (v.date === null) {\r\n this.setValueString('');\r\n } else {\r\n this.value = moment(v.date).utc().toDate();\r\n }\r\n\r\n this._showselector = false;\r\n }\r\n\r\n /**\r\n * Validator\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n error = super.validateData(c);\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._mintime !== undefined &&\r\n this._mintime !== null\r\n ) {\r\n error = Validation.minTime(\r\n this._mintime,\r\n this.validationmessagemintime,\r\n this.validationmessagesummarymintime\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this._maxtime !== undefined &&\r\n this._maxtime !== null\r\n ) {\r\n error = Validation.maxTime(\r\n this._maxtime,\r\n this.validationmessagemaxtime,\r\n this.validationmessagesummarymaxtime\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\n\r\n/**\r\n * Common Control für Form Item Container.\r\n **/\r\n@Directive()\r\nexport class SacStaticFormContainerCommon extends SacBaseModelControl<string> {\r\n\r\n\r\n /**\r\n * Definiert den Container als Required Form Item\r\n */\r\n private _isrequired: boolean = false;\r\n\r\n /**\r\n * Text welcher als Tooltip angezeigt wird.\r\n */\r\n @Input() tooltiptext: string = '';\r\n\r\n /**\r\n * Definiert den Container als Required Form Item\r\n */\r\n get isrequired(): boolean {\r\n return this._isrequired;\r\n }\r\n /**\r\n * Definiert den Container als Required Form Item\r\n */\r\n @Input()\r\n set isrequired(v: boolean) {\r\n this._isrequired = convertToBoolean(v);\r\n }\r\n\r\n /**\r\n * Validierung des Controls\r\n *\r\n * @description Validierung wird auf dem Form Container nicht gemacht, da kein Model Binding vorhanden.\r\n * @param c Control das Validiert werden soll\r\n * @returns Fehlermeldung aus Validation oder NULL\r\n */\r\n validateData(c: AbstractControl): ValidationErrors | null {\r\n // Keine Validierung, daher immer NULL\r\n return null;\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\n\r\n/**\r\n * Common Klasse für Static Label Control\r\n **/\r\n@Directive()\r\nexport class SacStaticLabelCommon extends SacInputBase<string> {\r\n\r\n /**\r\n * Erlaubt HTML Content in der Anzeige des Wertes\r\n */\r\n @Input()\r\n allowhtml: boolean = false;\r\n\r\n /**\r\n * Validierung des Controls\r\n *\r\n * @param c Control das Validiert werden soll\r\n * @returns Fehlermeldung aus Validation oder NULL\r\n */\r\n validateData(c: AbstractControl): ValidationErrors | null {\r\n // Keine Validierung, daher immer NULL\r\n return null;\r\n }\r\n}\r\n","import { AfterContentInit, Directive, EventEmitter, Input, Output, QueryList } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { SacWizardItemCommon } from './wizarditem';\r\n\r\n/**\r\n * Base Komponente für SacWizardCommon\r\n */\r\n@Directive()\r\nexport abstract class SacWizardCommon implements AfterContentInit, ControlValueAccessor {\r\n\r\n /**\r\n * Aktueller Schritt im Wizard\r\n */\r\n private _currentstep: string;\r\n\r\n /**\r\n * Name des Controls\r\n */\r\n @Input()\r\n name: string = '';\r\n\r\n /**\r\n * Boolean Property prüft ob Navigation im Wizard disabled ist; default Wert - false\r\n */\r\n @Input()\r\n disablenavigation: boolean = false;\r\n\r\n /**\r\n * Setter und Getter für aktueller Schritt\r\n */\r\n @Input()\r\n set currentstep(v: string | null) {\r\n this.changeStep(v);\r\n this.propagateChange(this._currentstep);\r\n }\r\n get currentstep(): string | null {\r\n return this._currentstep;\r\n }\r\n /**\r\n * EventEmitter wenn der Schritt geändert wird\r\n */\r\n @Output()\r\n stepchanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\r\n /**\r\n * Abstrakte QueryList von SacWizardItemCommon\r\n */\r\n abstract wizardItems(): QueryList<SacWizardItemCommon>;\r\n\r\n private setStepInternal(step: string): void {\r\n this._currentstep = step;\r\n this.propagateChange(this._currentstep);\r\n }\r\n\r\n // #region Control initialisieren\r\n\r\n /**\r\n * AfterContentInit Event\r\n */\r\n ngAfterContentInit() {\r\n this.initSteps();\r\n }\r\n /**\r\n * Ursprünglicher Schritt wird selektiert\r\n */\r\n private initSteps(): void {\r\n const activeStep = this.wizardItems().filter((step) => step.active);\r\n\r\n if (activeStep.length === 0) {\r\n const initStep: SacWizardItemCommon = this.wizardItems().toArray()[0];\r\n this.selectStep(initStep);\r\n initStep.disabled = false;\r\n this.setStepInternal(initStep.id);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * Schritt selektieren\r\n * @param step Step welcher selektiert werden soll\r\n */\r\n selectStep(step: SacWizardItemCommon): void {\r\n\r\n // Cancel if Navigation disabled\r\n if (this.disablenavigation) {\r\n return;\r\n }\r\n\r\n this.changeStep(step.id);\r\n }\r\n\r\n /**\r\n * Auf nächsten/vorherigen Schritt gehen\r\n * @param step Step auf welchen gewechselt werden soll\r\n */\r\n changeStep(step: string | null) {\r\n if (this.wizardItems() === undefined || this.wizardItems() === null) {\r\n return;\r\n }\r\n\r\n const wizardItemsArray: SacWizardItemCommon[] = this.wizardItems().toArray();\r\n const itemsCount: number = wizardItemsArray.length;\r\n const currentItemIndex = wizardItemsArray.findIndex(itm => itm.id === step);\r\n\r\n for (let i: number = 0; i < itemsCount; i++) {\r\n const item: SacWizardItemCommon = wizardItemsArray[i];\r\n\r\n if (i < currentItemIndex) {\r\n item.iscomplete = true;\r\n } else {\r\n item.iscomplete = false;\r\n }\r\n\r\n if (i > currentItemIndex + 1) {\r\n item.disabled = true;\r\n } else {\r\n item.disabled = false;\r\n }\r\n\r\n if (i === currentItemIndex) {\r\n item.active = true;\r\n } else {\r\n item.active = false;\r\n }\r\n }\r\n\r\n this.setStepInternal(step);\r\n this.stepchanged.emit(step);\r\n }\r\n\r\n /**\r\n * Leere Implementation von 'propagateChange'. Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n propagateChange: any = () => { };\r\n /**\r\n * Leere Implementation von 'propagateTouch'. Muss gemacht werden, damit kein Fehler entsteht\r\n */\r\n propagateTouch: any = () => { };\r\n\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen im Control mitbekommen können\r\n * Zur Änderungsinfo die Methode propagateChange aufrufen.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.propagateChange = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode, damit andere Controls änderungen mitbekommen, wenn das Control aktiviert (Focus) wird.\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.propagateTouch = (obj) => fn(obj);\r\n }\r\n\r\n /**\r\n * Methode zum schreiben von Werten aus dem Model in das Control\r\n */\r\n writeValue(value: string | null) {\r\n if (value) {\r\n this.changeStep(value);\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\n/**\r\n * Basis Komponente für SacWizardItem\r\n */\r\n@Directive()\r\nexport class SacWizardItemCommon {\r\n /**\r\n * Prüft ob der aktuelle Schritt aktiv ist.\r\n */\r\n @Input()\r\n active: boolean;\r\n /**\r\n * Prüft ob der Schritt abgeschlossen wurde.\r\n */\r\n @Input()\r\n iscomplete: boolean = false;\r\n /**\r\n * Prüft ob der Schritt disabled ist.\r\n */\r\n @Input()\r\n disabled: boolean = true;\r\n /**\r\n * ID-String\r\n */\r\n @Input()\r\n id: string;\r\n /**\r\n * Label-Property, das angezeigt wird\r\n */\r\n @Input()\r\n label: string;\r\n\r\n}\r\n","import { TinyMceDialogSettingsMeta } from './tinymcedialogsettingsmeta';\r\n\r\n/**\r\n * Settings für TinyMCE Dialog\r\n */\r\nexport class TinyMceDialogSettings {\r\n /**\r\n * Konstruktor\r\n * @param init Initale Werte\r\n */\r\n constructor(init?: Partial<TinyMceDialogSettings>) {\r\n Object.assign(this, init);\r\n }\r\n\r\n /**\r\n * Callback Methode für Dialog\r\n */\r\n public callback: any;\r\n /**\r\n * Wert aus Dialog\r\n */\r\n public value: string;\r\n /**\r\n * Meta Daten zu Dialog\r\n */\r\n public meta: TinyMceDialogSettingsMeta;\r\n /**\r\n * File Type Filter\r\n */\r\n public allowedtypes: string;\r\n}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n Host,\r\n Injector,\r\n Input,\r\n NgZone,\r\n Output,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseModelControl } from '../../common/basemodelcontrol';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\nimport { SacDefaultLocalisationService } from '../../services/sac-localisation.service';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\nimport { TinyMceDialogSettings } from './tinymcedialogsettings';\r\nimport { TinyMceDialogSettingsMeta } from './tinymcedialogsettingsmeta';\r\nimport { TinyMceInstance } from './tinymceinstance';\r\n\r\n/**\r\n * Basis Komponente für TinyMCE Editor\r\n */\r\n@Directive()\r\nexport abstract class SacTinyMceCommon extends SacBaseModelControl<string> {\r\n // #region Properties\r\n\r\n /**\r\n * Default Config mit Standardwerten für TinyMCE\r\n */\r\n private baseConfig: any = {\r\n base_url: '/tinymce',\r\n suffix: '.min',\r\n branding: false,\r\n angular: this,\r\n file_picker_types: 'file media image',\r\n file_picker_callback: this.showSelectDialog,\r\n save_onsavecallback: () => {},\r\n };\r\n\r\n /**\r\n * Erlaubt im Filebrowser das löschen von Dateien\r\n */\r\n @Input()\r\n public allowfiledelete = false;\r\n /**\r\n * Erlaubt im Filebrowser das umbennen von Dateien\r\n */\r\n @Input()\r\n public allowfilerename = false;\r\n /**\r\n * Erlaubt im Filebrowser das hochladen von Files\r\n */\r\n @Input()\r\n public allowfileupload = false;\r\n /**\r\n * Erlaubt im Filebrowser das anlegen eines Ordners\r\n */\r\n @Input()\r\n public allowfoldercreate = false;\r\n /**\r\n * Erlaubt im Filebrowser das löschen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderdelete = false;\r\n /**\r\n * Erlaubt im Filebrowser das umbennen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderrename = false;\r\n /**\r\n * URL zu Filebrowser Backend\r\n */\r\n @Input()\r\n public filebrowserapiurl: string = null;\r\n /**\r\n * File Extensions für Links (Format: .xxx,.yyy,.eee)\r\n */\r\n @Input()\r\n public filetypesfiles = '';\r\n /**\r\n * File Extensions für Images (Format: .xxx,.yyy,.eee)\r\n */\r\n @Input()\r\n public filetypesimages = '.gif,.jpeg,.jpg,.png,.tif,.tiff,.bmp';\r\n /**\r\n * File Extensions für Media (Format: .xxx,.yyy,.eee)\r\n */\r\n @Input()\r\n public filetypesvideo = '.mp4,.m4v,.ogv,.webm,.mov';\r\n /**\r\n * Höhe des Editors\r\n */\r\n @Input()\r\n public height: string = undefined;\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input()\r\n public isrequired: boolean = false;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n /**\r\n * Event wenn Save Action in TinyMCE ausgelöst wird\r\n */\r\n @Output()\r\n public onsave: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * TinyMCE Config\r\n */\r\n public _config: any = {};\r\n /**\r\n * Service für Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n /**\r\n * Settings Instanz für Dialog\r\n */\r\n public selectDialogSettings: TinyMceDialogSettings;\r\n /**\r\n * Der Select Dialog wird angezeigt\r\n */\r\n public selectdialogvisible = false;\r\n /**\r\n * Instanz auf TinyMCE Settings. Wird durch TinyMCE gesetzt und wird für den Callback des Dialog benötigt\r\n */\r\n public settings: TinyMceInstance;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param ngZone ngzone for handling external javascripts\r\n */\r\n constructor(\r\n @Host() formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n protected ngZone: NgZone\r\n ) {\r\n super(formlayout, injector);\r\n\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.config = {};\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * TinyMCE Konfiguration\r\n * @link https://www.tiny.cloud/docs/configure/\r\n */\r\n @Input()\r\n public set config(v: any) {\r\n this._config = {\r\n ...this.getDynamicSettings(),\r\n ...this.baseConfig,\r\n ...this.overwriteDefaultSettings(),\r\n ...v,\r\n };\r\n }\r\n\r\n /**\r\n * TinyMCE Konfiguration\r\n */\r\n public get config(): any {\r\n return this._config;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Schliesst den Dateiauswahl Dialog\r\n */\r\n public closeSelectDialog(): void {\r\n this.selectdialogvisible = false;\r\n }\r\n\r\n /**\r\n * Löst die Speichern Action aus\r\n * @param content Content als String\r\n */\r\n public save(content: any): void {\r\n this.onsave.emit(content);\r\n }\r\n\r\n /**\r\n * Setzt das Resultat aus dem Dateiauswahl Dialog\r\n */\r\n public setSelectDialogResult(): void {\r\n if (this.selectDialogSettings.value) {\r\n if (\r\n this.selectDialogSettings.value.startsWith('/') ||\r\n this.selectDialogSettings.value.startsWith('\\\\')\r\n ) {\r\n this.selectDialogSettings.value =\r\n this.selectDialogSettings.value.substring(1);\r\n }\r\n\r\n this.selectDialogSettings.callback(this.selectDialogSettings.value);\r\n }\r\n\r\n this.closeSelectDialog();\r\n }\r\n\r\n /**\r\n * Zeigt den Dateiauswahl Dialog an\r\n * @param callback Callback Methode welche aufgerufen wird, wenn der Dialog geschlossen wird\r\n * @param value Wert aus dem Datei Dialog\r\n * @param meta Meta Daten zur Datei\r\n */\r\n public showSelectDialog(\r\n callback,\r\n value: string,\r\n meta: TinyMceDialogSettingsMeta\r\n ): void {\r\n this.settings.angular.ngZone.runOutsideAngular(() => {\r\n this.settings.angular.ngZone.run(() => {\r\n this.settings.angular.selectdialogvisible = true;\r\n\r\n // Set Dialog Settings\r\n this.settings.angular.selectDialogSettings = new TinyMceDialogSettings({\r\n callback: callback,\r\n value: value,\r\n meta: meta,\r\n allowedtypes: '',\r\n });\r\n\r\n switch (meta.filetype) {\r\n case 'image':\r\n this.settings.angular.selectDialogSettings.allowedtypes =\r\n this.settings.angular.filetypesimages;\r\n break;\r\n case 'media':\r\n this.settings.angular.selectDialogSettings.allowedtypes =\r\n this.settings.angular.filetypesvideo;\r\n break;\r\n default:\r\n this.settings.angular.selectDialogSettings.allowedtypes =\r\n this.settings.angular.filetypesfiles;\r\n break;\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Validiert das Control\r\n * @param c Control Instanz die valdidiert wird\r\n * @returns Gibt eine Fehlermeldung oder NULL zurück\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * get settings in effective implementation that overwrites the defaults. use {} for non overwrites.\r\n */\r\n public abstract overwriteDefaultSettings(): any;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Gibt die TinyMCE Settings zurück, die aus den Properties der Angular Komponenten erzeugt werden\r\n * @returns Objekt mit Settings\r\n */\r\n private getDynamicSettings(): any {\r\n let settings = {\r\n selector: '#' + this.name + '_tinymce',\r\n height: this.height,\r\n };\r\n\r\n return settings;\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\n\r\n/**\r\n *Basis Komponente für SacTreeItemAction\r\n */\r\n@Directive()\r\nexport class SacTreeItemActionCommon implements OnInit {\r\n /**\r\n * Konstruktor\r\n * @param el Element Referenz\r\n */\r\n constructor(private el: ElementRef) {}\r\n\r\n /**\r\n * lifecycle OnInit hook. Wird aufgeruren sobald das Komponent initialisiert ist.\r\n */\r\n ngOnInit() {\r\n let rootElement: HTMLElement = this.el.nativeElement;\r\n let parentElement: HTMLElement = rootElement.parentElement;\r\n\r\n while (rootElement.firstChild) {\r\n parentElement.insertBefore(rootElement.firstChild, rootElement);\r\n }\r\n\r\n parentElement.removeChild(rootElement);\r\n }\r\n\r\n /**\r\n *Input Property. Akzeptiert das Wert des Object.\r\n */\r\n @Input() item: any;\r\n\r\n /**\r\n * Input Property für Title des TreeItemAction\r\n */\r\n @Input() title: string;\r\n\r\n /**\r\n * Input Property für Styling des Icon. Deffiniert die Css Klassen des Icon\r\n */\r\n @Input() iconstyle: string;\r\n\r\n /**\r\n * Event wenn auf das Icon geclickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Die Methode erstellt die CSS Klasse des Icon. Akzeptiert ein Key-word und baut ein vollständige CSS Klasse.\r\n */\r\n transformClass(initialClass) {\r\n switch (initialClass) {\r\n case 'add':\r\n return 'jstree-icon icon icon-base-add jstree-add';\r\n case 'delete':\r\n return 'jstree-icon icon icon-base-delete jstree-delete';\r\n default:\r\n return initialClass;\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode wird das cklickaction Emitter aktivieren.\r\n */\r\n iconaction() {\r\n this.clicked.emit();\r\n }\r\n}\r\n","import {\r\n ContentChild,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Basis Komponente für SacTreeView\r\n */\r\n@Directive()\r\nexport class SacTreeViewCommon implements OnInit {\r\n /**\r\n * Das Property enthielt boolean Wert und deffiniert, ob alle Items collapsed sind. Default value: undefined/null\r\n */\r\n public _collapseAll: boolean;\r\n\r\n /**\r\n * Das Property enthielt boolean Wert und deffiniert, ob alle Items selected sind. Default value: undefined/null\r\n */\r\n private _selectAll: boolean;\r\n\r\n /**\r\n * Das Property enthielt array of nodes. Default value: empty array [].\r\n */\r\n public nodes: any[] = [];\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isCollapsed'. Es wird benutzt beim rendering. Für Expand/Collapsed Sicht des Node(Wert)\r\n */\r\n public collapseAttr = 'isCollapsed';\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isSelected'. Es wird benutzt beim Vorbereitung des Data des TreeView\r\n */\r\n public selectAttr = 'isSelected';\r\n\r\n /**\r\n * Das Property enthielt node attribute: 'isIndeterminate'. Es wird benutzt beim Vorbereitung des Data des TreeView\r\n */\r\n public inDeterminateAttr = 'isIndeterminate';\r\n\r\n /**\r\n * Providen data for tree.\r\n */\r\n private _data: any[] = [];\r\n\r\n /**\r\n * Getter für Data des TreeView\r\n */\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n /**\r\n * Input Property für Data des TreeView\r\n */\r\n @Input()\r\n set data(value: any[]) {\r\n this._data = value;\r\n this.nodes = value;\r\n\r\n // this.nodes.forEach(node => node[\"typeId\"] = \"13\")\r\n\r\n this.LoadTree();\r\n\r\n if (this._collapseAll !== undefined) {\r\n this.collapseAllNode(this._collapseAll);\r\n }\r\n }\r\n\r\n /**\r\n * Input Property für template des TreeView. Type: TemplateRef<any>.\r\n */\r\n @Input()\r\n template: TemplateRef<any>;\r\n\r\n /**\r\n * Die Directive erhält die actions für das TreeView\r\n */\r\n @ContentChild('actions', { static: true })\r\n public set treeviewTemplate(v: TemplateRef<any>) {\r\n this.template = v;\r\n }\r\n\r\n /**\r\n * Getter für das TreeView Template\r\n */\r\n public get treeviewTemplate(): TemplateRef<any> {\r\n return this.template;\r\n }\r\n\r\n /**\r\n * Input property erhält Icon für das Template\r\n */\r\n @Input()\r\n fileicontemplate: TemplateRef<any>;\r\n\r\n /**\r\n * Setter property. Deffiniert das FileIcon für das TreeView\r\n */\r\n @ContentChild('treefileicon', { static: true })\r\n public set treefileicon(v: TemplateRef<any>) {\r\n this.fileicontemplate = v;\r\n }\r\n\r\n /**\r\n * Getter property. Ergibt das FileIcon für das TreeView\r\n */\r\n public get treefileicon(): TemplateRef<any> {\r\n return this.fileicontemplate;\r\n }\r\n\r\n /**\r\n * Input property für den Namen des TreeView. Type string. Default value: \"\"\r\n */\r\n @Input()\r\n name: string = '';\r\n\r\n /**\r\n * A flag indicating data is flatten in array and prepare is required.(Default\r\n * is false).\r\n */\r\n @Input() prepareData = false;\r\n\r\n /**\r\n * Attribute for Text in Tree\r\n */\r\n @Input() textAttr = 'data';\r\n\r\n /**\r\n * Name of ID property in input data.\r\n */\r\n @Input() idAttr = 'id';\r\n\r\n /**\r\n * Name of parent property in input data.\r\n */\r\n @Input() parentAttr = 'PARENT_ID';\r\n\r\n /**\r\n * Name of children list property in input data.\r\n */\r\n @Input() childrenAttr = 'children';\r\n\r\n /**\r\n * Title des Treeview\r\n */\r\n @Input() title;\r\n\r\n // @Input(\"titleAction\") _titleAction: string\r\n\r\n /**\r\n * Collapse or expand all parent nodes.\r\n */\r\n @Input()\r\n set collapseall(value: boolean) {\r\n this._collapseAll = value;\r\n if (this.nodes && this.nodes.length && this.nodes.length > 0) {\r\n this.collapseAllNode(this._collapseAll);\r\n }\r\n\r\n // this._recursiveEdit(\r\n // this.nodes, this.childrenAttr, this.collapseAttr, this._collapseAll);\r\n\r\n // this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Getter für das collapse property. Ergibt boolean Wert, ob die Items collapsed/expand sind.\r\n */\r\n get collapseall(): boolean {\r\n return this._collapseAll;\r\n }\r\n\r\n /**\r\n * Select or deselect all nodes.\r\n */\r\n @Input()\r\n set selectall(value: boolean) {\r\n this._selectAll = value;\r\n this._recursiveEdit(this.nodes, this.childrenAttr, this.selectAttr, value);\r\n this._recursiveEdit(\r\n this.nodes,\r\n this.childrenAttr,\r\n this.inDeterminateAttr,\r\n false\r\n );\r\n }\r\n\r\n /**\r\n * Input property - setter. Deffiniert das ID des selektierten Item(node)\r\n */\r\n @Input()\r\n set selectedid(v: any) {\r\n this.selectedNode = this.findNode(this.nodes, v, this.idAttr);\r\n\r\n // if (this.selectedNode) {\r\n // this.selectedIdEmitter.emit(this.selectedNode[this.idAttr]);\r\n // this.selectedTextEmitter.emit(this.selectedNode[this.textAttr]);\r\n // }\r\n }\r\n\r\n /**\r\n * Getter. Ergibt das ID des selektierten Item(node)\r\n */\r\n get selectedId(): any {\r\n return this.selectedNode ? this.selectedNode[this.idAttr] : null;\r\n }\r\n\r\n /**\r\n * Das Property erhält das selektierte Wert(node). Default value: undefined/null\r\n */\r\n private _selectedNode;\r\n\r\n /**\r\n * Setter für das selektierte Wert(node). Wenn aufgerufen das ID und TextAttr des selected Node wird emitted\r\n */\r\n set selectedNode(v: any) {\r\n this._selectedNode = v;\r\n\r\n if (this._selectedNode) {\r\n this.selectedidchange.emit(this.selectedId);\r\n this.selectedtextchanged.emit(v[this.textAttr]);\r\n }\r\n }\r\n\r\n /**\r\n * Getter für das selektierte Wert(node). Ergibt das selektierte Wert(node).\r\n */\r\n get selectedNode(): any {\r\n return this._selectedNode;\r\n }\r\n\r\n /**\r\n * Output Emitter. Emit das ID des selected Node.\r\n */\r\n @Output()\r\n selectedidchange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n /**\r\n * Output Emitter. Emit das TextAttr des selected Node.\r\n */\r\n @Output()\r\n selectedtextchanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Output Emitter. Emit wenn ein Node selektiert wird.\r\n */\r\n @Output()\r\n selecteditem: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive.\r\n * Define an ngOnInit() method to handle any additional initialization tasks.\r\n */\r\n ngOnInit() {\r\n this.collapseAllNode(this._collapseAll);\r\n\r\n if (this.selectedId) this.openSelectedNode(this.nodes);\r\n }\r\n\r\n /**\r\n * Funktion setzt alle parent items recusiv zum selected node\r\n * auf collapsed = false\r\n */\r\n private openSelectedNode(data): boolean {\r\n let result: boolean = false;\r\n for (let i = 0; i < data.length; i++) {\r\n if (\r\n data[i][this.childrenAttr].length &&\r\n data[i][this.idAttr] != this.selectedId\r\n )\r\n result = this.openSelectedNode(data[i][this.childrenAttr]);\r\n if (result || data[i][this.idAttr] == this.selectedId) {\r\n data[i][this.collapseAttr] = false;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Die Methode vorbereitet die Daten für das TreeView. Die Funktion sollte geändert werden abhängig von dem kommenden Daten (wenn array)\r\n */\r\n private LoadTree() {\r\n //if the tree structure require array the function below should be changed\r\n const cloned = this._data.map((x) => Object.assign({}, x));\r\n\r\n // If data is flat, prepare data with recursive function.\r\n this.nodes = this.prepareData ? this._getPreparedData(cloned) : this._data;\r\n }\r\n\r\n /**\r\n * Die Methode collapse/expand den selectierten Node\r\n */\r\n onCollapseClick(node) {\r\n if (node[this.childrenAttr].length) {\r\n node[this.collapseAttr] = !node[this.collapseAttr];\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode set den selektierten Node und emit es.\r\n */\r\n onClick(node) {\r\n this.selectedNode = node;\r\n this.selecteditem.emit(this.selectedNode);\r\n // this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Die Methode wird ein event mit Meldung zu Parent emit-en.\r\n */\r\n sendMsgToParent(msg) {\r\n this.selecteditem.emit(msg);\r\n }\r\n\r\n /**\r\n * Die Methode wird alle Nodes collapse\r\n */\r\n collapseAllNode(command) {\r\n this.nodes.forEach((node) => {\r\n if (node[this.childrenAttr].length) {\r\n collapseAllHIdden(node, this.collapseAttr, command, this.childrenAttr);\r\n }\r\n });\r\n function collapseAllHIdden(node, collapseAttr, command, childrenAttr) {\r\n node[collapseAttr] = command;\r\n node.children.forEach((child: any) => {\r\n if (child[childrenAttr].length) {\r\n collapseAllHIdden(child, collapseAttr, command, childrenAttr);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Funktion gibt node aus der liste zurück, welches das Value auf dem gewünschten Attribut hat\r\n * Wenn node nicht gefunden wird, wird null zurück gegeben\r\n * @param data Liste der nodes\r\n * @param searchValue Das gesuchte value\r\n * @param attr Der namen des Attributs auf dem das value gesucht wird\r\n */\r\n private findNode(data, searchValue, attr): any {\r\n let result: any = null;\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i][attr] == searchValue) result = data[i];\r\n else {\r\n if (data[i][this.childrenAttr].length) {\r\n let recursiveResult = this.findNode(\r\n data[i][this.childrenAttr],\r\n searchValue,\r\n attr\r\n );\r\n if (recursiveResult) result = recursiveResult;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Die Methode editiert (recursive) alle eingegebene Nodes abhängig von gegebenen Attibute und Value Kriterien.\r\n */\r\n private _recursiveEdit(list, childrenAttr, attr, value) {\r\n if (Array.isArray(list)) {\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n list[i][attr] = value;\r\n if (list[i][childrenAttr].length) {\r\n this._recursiveEdit(list[i][childrenAttr], childrenAttr, attr, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Die Methode erstellt eine standarte Sicht-Liste von Nodes\r\n */\r\n private _getPreparedData(list) {\r\n const tree = [],\r\n lookup = {};\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n lookup[list[i][this.idAttr]] = list[i];\r\n list[i][this.childrenAttr] = [];\r\n list[i][this.collapseAttr] = true;\r\n list[i][this.selectAttr] = false;\r\n list[i][this.inDeterminateAttr] = false;\r\n }\r\n for (let i = 0, len = list.length; i < len; i++) {\r\n if (list[i][this.parentAttr]) {\r\n lookup[list[i][this.parentAttr]][this.childrenAttr].push(list[i]);\r\n } else {\r\n tree.push(list[i]);\r\n }\r\n }\r\n\r\n return tree;\r\n }\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { SacTreeViewCommon } from './treeview';\r\n\r\n/**\r\n * Komponente für SacTreeViewChildCommon. Extends SacTreeViewCommon \r\n */\r\n@Directive()\r\nexport class SacTreeViewChildCommon extends SacTreeViewCommon implements OnInit {\r\n /**\r\n * A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive. \r\n * Define an ngOnInit() method to handle any additional initialization tasks.\r\n */\r\n ngOnInit(){ \r\n this.collapseAllNode(this.collapseall)\r\n }\r\n}\r\n\r\n\r\n","/**\r\n * Enum für Tooltip Positionen\r\n */\r\nexport enum TooltipPosition {\r\n none = 0,\r\n // tslint:disable-next-line:no-bitwise\r\n top = 1 << 0,\r\n // tslint:disable-next-line:no-bitwise\r\n right = 1 << 1,\r\n // tslint:disable-next-line:no-bitwise\r\n bottom = 1 << 2,\r\n // tslint:disable-next-line:no-bitwise\r\n left = 1 << 3\r\n}\r\n","import { ChangeDetectorRef, Directive, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { convertToBoolean } from '../../utilities/convertion';\r\nimport { TooltipPosition } from '../../utilities/enums';\r\n\r\n/**\r\n * Tooltip Component\r\n *\r\n * Benötigt im HTML Markup folgende Identifier\r\n * - container: Container für ng-content in welchem das Element angezeigt wird, wo der Tooltip angehängt wird.\r\n * - tooltip: Container für Tooltip\r\n *\r\n * Tooltip muss in 2 Schritten angezeigt werden. In einem ersten Schritt wird der Tooltip Markup erzeugt mit (ngIf). In einem 2. Schritt\r\n * kann der Tooltip dann über die CSS visibility angezeigt werden. Wird dies nicht so gemacht, kann es bei gewissen Browsern zu einem Flacker Effekt führen.\r\n *\r\n */\r\n@Directive()\r\nexport class SacTooltipCommon implements OnInit, OnDestroy {\r\n /**\r\n * Property für Enum in Angular HTML Template\r\n */\r\n TooltipPosition = TooltipPosition;\r\n\r\n /**\r\n * Definiert ob der Tooltip sichtbar ist\r\n */\r\n private _isTooltipVisible: boolean = false;\r\n\r\n /**\r\n * Position des Tooltips oben\r\n */\r\n TopPos: number = 0;\r\n\r\n /**\r\n * Position des Tooltips links\r\n */\r\n LeftPos: number = 0;\r\n\r\n /**\r\n * Position des Tooltips. Werte: left|top|right|bottom|auto\r\n *\r\n * Wert 'auto' kann mit einem anderen Wert kombiniert werden.\r\n */\r\n @Input()\r\n position: string = 'right|auto';\r\n\r\n /**\r\n * Text für ToolTip\r\n */\r\n @Input()\r\n tooltiptext: string;\r\n\r\n /**\r\n * Inline Mode für Tooltip\r\n */\r\n private _inlinemode: boolean;\r\n\r\n /**\r\n * Definiert ob der Tooltip sichtbar sein soll\r\n */\r\n IsTooltipContentVisible: boolean = false;\r\n\r\n /**\r\n * Setter für Inline Mode für Tooltip\r\n */\r\n @Input()\r\n set inlinemode(value: boolean) {\r\n this._inlinemode = convertToBoolean(value);\r\n }\r\n /**\r\n * Getter für Inline Mode für Tooltip\r\n */\r\n get inlinemode(): boolean {\r\n return this._inlinemode;\r\n }\r\n\r\n /**\r\n * Name des Containers für Content (z.B. Icon) auf welchem der Tooltip angezeigt wird.\r\n */\r\n @ViewChild('container', { static: true }) content: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Name des Containers für den Tooltip\r\n */\r\n private tooltipcontainer: ElementRef<HTMLElement>;\r\n\r\n /**\r\n * Setter für Name des Containers für den Tooltip. Wird benötigt, da Tooltip via NGIF ausgeblendet werden kann.\r\n */\r\n @ViewChild('tooltip', { static: true })\r\n set tooltip(content: ElementRef) {\r\n if (content !== undefined) {\r\n document.body.appendChild(content.nativeElement);\r\n }\r\n\r\n this.tooltipcontainer = content;\r\n this.onContentChange();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Konstruktor\r\n * @param ref Element Referenz\r\n */\r\n constructor(private cdRef: ChangeDetectorRef, private ref: ElementRef) { }\r\n\r\n /**\r\n * Ervent wenn das Control initialisert wird\r\n */\r\n ngOnInit() {\r\n // Register Event Listener\r\n window.addEventListener('scroll', this.onContentChange, true);\r\n window.addEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.appendChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Event wenn das Control zerstört wird.\r\n */\r\n ngOnDestroy() {\r\n // Unregister Event Listener\r\n window.removeEventListener('scroll', this.onContentChange, true);\r\n window.removeEventListener('resize', this.onContentChange, true);\r\n\r\n if (this.tooltipcontainer !== undefined) {\r\n document.body.removeChild(this.tooltipcontainer.nativeElement);\r\n }\r\n }\r\n\r\n /**\r\n * Berechnet die Position des Tooltips von Oben\r\n */\r\n private getTopPosition(): number {\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: ClientRect = childItem.getBoundingClientRect();\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.TopPos = contentPosition.top - this.getToolTipHeight();\r\n return contentPosition.top - this.getToolTipHeight();\r\n case TooltipPosition.right:\r\n this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n case TooltipPosition.bottom:\r\n this.TopPos = contentPosition.top + contentPosition.height;\r\n return contentPosition.top + contentPosition.height;\r\n case TooltipPosition.left:\r\n this.TopPos = contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n return contentPosition.top + (contentPosition.height / 2) - (this.getToolTipHeight() / 2);\r\n }\r\n\r\n return childItem.clientTop + childItem.offsetTop - ((this.getToolTipHeight() / 2) - (childItem.clientHeight / 2));\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetTop;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Berechnet die Position des Tooltips von Links\r\n */\r\n private getLeftPosition(): number {\r\n\r\n if (this.content !== null && this.content !== undefined) {\r\n const item = this.content.nativeElement;\r\n\r\n if (item.children.length >= 1) {\r\n const childItem = item.firstElementChild as HTMLElement;\r\n const contentPosition: ClientRect = childItem.getBoundingClientRect();\r\n\r\n switch (this.GetTooltipPosition()) {\r\n case TooltipPosition.top:\r\n this.LeftPos = contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);\r\n return contentPosition.left + (contentPosition.width / 2) - (this.getToolTipWidth() / 2);\r\n case TooltipPosition.right:\r\n this.LeftPos = contentPosition.left + contentPosition.width;\r\n return contentPosition.left + contentPosition.width;\r\n case TooltipPosition.bottom:\r\n this.LeftPos = contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);\r\n return contentPosition.left + (childItem.clientWidth / 2) - (this.getToolTipWidth() / 2);\r\n case TooltipPosition.left:\r\n this.LeftPos = contentPosition.left - this.getToolTipWidth();\r\n return contentPosition.left - this.getToolTipWidth();\r\n }\r\n\r\n return this.content.nativeElement.offsetTop;\r\n } else {\r\n return this.content.nativeElement.offsetTop;\r\n }\r\n } else {\r\n return this.ref.nativeElement.offsetLeft;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Berechnet die Höhe des Tooltips\r\n */\r\n private getToolTipHeight(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.clientHeight;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Berechnet die Breite die Tooltips\r\n */\r\n private getToolTipWidth(): number {\r\n if (this.tooltipcontainer) {\r\n return this.tooltipcontainer.nativeElement.clientWidth;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Definiert ob der Tooltip im Markup vorhanden ist\r\n */\r\n IsTooltipVisible(): boolean {\r\n return this._isTooltipVisible;\r\n }\r\n\r\n /**\r\n * Tooltip anzeigen\r\n */\r\n ShowTooltip(): void {\r\n this._isTooltipVisible = true;\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n this.IsTooltipContentVisible = true;\r\n });\r\n }\r\n\r\n /**\r\n * Tooltip ausblenden\r\n */\r\n HideTooltip(): void {\r\n this._isTooltipVisible = false;\r\n this.IsTooltipContentVisible = false;\r\n }\r\n\r\n /**\r\n * Methode wenn Content geändert hat und Proporties im UI neu gesetzt werden müssen.\r\n */\r\n private onContentChange = (): void => {\r\n setTimeout(() => {\r\n this.getLeftPosition();\r\n this.getTopPosition();\r\n });\r\n }\r\n\r\n /**\r\n * Gibt die Position des Tooltips zurück\r\n */\r\n public GetTooltipPosition(): TooltipPosition {\r\n const validPositions: TooltipPosition = this.ValidatePositions();\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.right) && (validPositions & TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.top) && (validPositions & TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.left) && (validPositions & TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (this.HasPosition(TooltipPosition.bottom) && (validPositions & TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Get Auto Position or Default\r\n if (this.IsAutoPosition()) {\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.right) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.top) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.left) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n // tslint:disable-next-line:no-bitwise\r\n if (validPositions & TooltipPosition.bottom) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n return TooltipPosition.right;\r\n } else {\r\n return this.GetPosition();\r\n }\r\n }\r\n\r\n /**\r\n * Definiert ob AutoPosition aktiv ist\r\n */\r\n private IsAutoPosition(): boolean {\r\n const positions = this.position.split('|');\r\n return positions.indexOf('auto') >= 0;\r\n }\r\n\r\n /**\r\n * Gibt die definierte Position für den Tooltip zurück\r\n */\r\n private GetPosition(): TooltipPosition {\r\n const positions = this.position.split('|');\r\n\r\n if (this.HasPosition(TooltipPosition.left)) {\r\n return TooltipPosition.left;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.top)) {\r\n return TooltipPosition.top;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.right)) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n if (this.HasPosition(TooltipPosition.bottom)) {\r\n return TooltipPosition.bottom;\r\n }\r\n\r\n // Default Position if empty\r\n return TooltipPosition.right;\r\n }\r\n\r\n /**\r\n * Gibt zurück, ob die Position konfiguriert wurde\r\n *\r\n * @param position Position auf welche geprüft wird\r\n */\r\n private HasPosition(position: TooltipPosition): boolean {\r\n const positions = this.position.split('|');\r\n\r\n if (position === TooltipPosition.right && positions.indexOf('right') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.top && positions.indexOf('top') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.left && positions.indexOf('left') >= 0) {\r\n return true;\r\n }\r\n\r\n if (position === TooltipPosition.bottom && positions.indexOf('bottom') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Prüft ob die Position gültig ist, resp. der Tooltip auf die Position platz hat\r\n */\r\n private ValidatePositions(): TooltipPosition {\r\n // Check if Container is false\r\n if (this.tooltipcontainer === undefined) {\r\n return TooltipPosition.right;\r\n }\r\n\r\n let allowedPositions: TooltipPosition = TooltipPosition.none;\r\n const basePosition: ClientRect = this.content.nativeElement.firstElementChild.getBoundingClientRect();\r\n const tooltipRect: ClientRect = this.tooltipcontainer.nativeElement.getBoundingClientRect();\r\n\r\n const leftPosOk: boolean = basePosition.left - tooltipRect.width > 0;\r\n const rightPosOk: boolean = basePosition.right + tooltipRect.width < window.innerWidth;\r\n const topPosOk: boolean = basePosition.top - tooltipRect.height > 0;\r\n const bottomPosOk: boolean = basePosition.bottom + tooltipRect.height < window.innerHeight;\r\n\r\n const leftHalfPosOk: boolean = basePosition.left - (tooltipRect.width / 2) > 0;\r\n const rightHalfPosOk: boolean = basePosition.right + (tooltipRect.width / 2) < window.innerWidth;\r\n const topHalfPosOk: boolean = basePosition.top - (tooltipRect.height / 2) > 0;\r\n const bottomHalfPosOk: boolean = basePosition.bottom + (tooltipRect.height / 2) < window.innerHeight;\r\n\r\n if (leftPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.left;\r\n }\r\n\r\n if (rightPosOk && topHalfPosOk && bottomHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.right;\r\n }\r\n\r\n if (topPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.top;\r\n }\r\n\r\n if (bottomPosOk && leftHalfPosOk && rightHalfPosOk) {\r\n // tslint:disable-next-line:no-bitwise\r\n allowedPositions = allowedPositions | TooltipPosition.bottom;\r\n }\r\n\r\n return allowedPositions;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport {\r\n IdService,\r\n UPLOADX_AJAX,\r\n UPLOADX_FACTORY_OPTIONS,\r\n UPLOADX_OPTIONS,\r\n UploadState,\r\n UploadxOptions,\r\n UploadxService,\r\n} from 'ngx-uploadx';\r\nimport { Observable, of } from 'rxjs';\r\nimport { SacFormLayoutCommon } from '../controls/layout/formlayout';\r\nimport { ISacIconService } from '../interfaces/ISacIconService';\r\nimport { ISacLocalisationService } from '../interfaces/ISacLocalisationService';\r\nimport { IUploadControl } from '../interfaces/iuploadcontrol';\r\nimport {\r\n SACICON_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultIconService,\r\n SacDefaultValidationKeyService,\r\n} from '../services';\r\nimport {\r\n SACLOCALISATION_SERVICE,\r\n SacDefaultLocalisationService,\r\n} from '../services/sac-localisation.service';\r\nimport { Validation } from '../validation';\r\nimport { SacBaseModelControl } from './basemodelcontrol';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Klasse für Uploader Control\r\n */\r\n@Directive()\r\nexport abstract class SacUploadBase<VALUE>\r\n extends SacBaseModelControl<VALUE>\r\n implements OnInit, OnDestroy\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * File Input Control\r\n */\r\n @ViewChild('files', { static: true })\r\n private uploadInput: ElementRef;\r\n\r\n /**\r\n * Erlaubte Dateitypen\r\n */\r\n private _allowedtypes: string = '*';\r\n /**\r\n * Files automatisch hochladen\r\n */\r\n private _autoupload: boolean = false;\r\n /**\r\n * Pausieren von Uploads erlauben\r\n */\r\n private _enablepause: boolean = true;\r\n /**\r\n * API Endpoint\r\n */\r\n private _endpoint: string = null;\r\n /**\r\n * Upload Settings\r\n */\r\n private options: UploadxOptions = {};\r\n\r\n /**\r\n * icon service to receive icons for uploader\r\n */\r\n protected iconService: ISacIconService;\r\n /**\r\n * Upload Service\r\n */\r\n protected uploadService: UploadxService;\r\n\r\n /**\r\n * Definiert das Control als Required\r\n */\r\n @Input() public isrequired: boolean = false;\r\n /**\r\n * Max. Dateigrösse für Files die hochgeladen werden können. 0 deaktiviert den Filter\r\n */\r\n @Input() public maxfilesize: number = 0;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n /**\r\n * Event wenn ein Error in der Komponente ausgelöst wird.\r\n */\r\n @Output() public onfileerror = new EventEmitter<string>();\r\n\r\n /**\r\n * Handling von neuen Files im Input Control\r\n */\r\n public fileListener = () => {\r\n if (this.uploadInput.nativeElement.files) {\r\n this.uploadService.handleFiles(this.uploadInput.nativeElement.files);\r\n }\r\n };\r\n /**\r\n * Listener für Files\r\n */\r\n public listenerFn: () => void;\r\n /**\r\n * Service für Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n /**\r\n * Array von Uploads\r\n */\r\n public uploads: SacUploadFile[];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer angular rendering engine\r\n * @param ngZone ngzone for handling external scripts\r\n */\r\n constructor(\r\n formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private ngZone: NgZone\r\n ) {\r\n super(formlayout, injector);\r\n\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n\r\n this.uploads = [];\r\n\r\n this.options.allowedTypes = '*';\r\n this.options.concurrency = 1;\r\n this.options.token = 'sometoken';\r\n this.options.autoUpload = this._autoupload;\r\n this.options.withCredentials = true;\r\n this.options.chunkSize = 1024 * 16 * 8;\r\n this.options.headers = (f: File) => ({\r\n 'Content-Disposition': `filename=${encodeURI(f.name)}`,\r\n });\r\n\r\n // Init new Service Instance\r\n this.uploadService = new UploadxService();\r\n this.uploadService.init(this.options);\r\n\r\n // Subscripe Event for State changes\r\n this.uploadService.events.subscribe((ufile: UploadState) =>\r\n this.onUpload(ufile)\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Erlaubte Dateitypen für den Upload. Format: \".xxx,.yyy,.zzz\"\r\n */\r\n @Input()\r\n public set allowedtypes(types: string) {\r\n this._allowedtypes = types;\r\n this.setAllowedTypes(types);\r\n }\r\n\r\n /**\r\n * Files nach der Auswahl automatisch hochladen\r\n */\r\n @Input()\r\n public set autoupload(v: boolean) {\r\n this._autoupload = v;\r\n this.options.autoUpload = v;\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Uploads können unterbrochen werden\r\n */\r\n @Input()\r\n public set enablepause(v: boolean) {\r\n this._enablepause = v;\r\n }\r\n\r\n /**\r\n * Definiert den Registration Endpoint für Uploads.\r\n */\r\n @Input()\r\n public set endpoint(v: string) {\r\n this._endpoint = v;\r\n this.setEndpoint(v);\r\n }\r\n\r\n /**\r\n * Icon for browse button\r\n */\r\n public get IconBrowse(): string {\r\n return this.iconService.UploadComponentBrowseIcon;\r\n }\r\n\r\n /**\r\n * icon for continous buttons\r\n */\r\n public get IconContinue(): string {\r\n return this.iconService.UploadComponentContinueIcon;\r\n }\r\n\r\n /**\r\n * icon for delete buttons\r\n */\r\n public get IconDelete(): string {\r\n return this.iconService.UploadComponentDeleteIcon;\r\n }\r\n\r\n /**\r\n * icon for pause buttons\r\n */\r\n public get IconPause(): string {\r\n return this.iconService.UploadComponentPauseIcon;\r\n }\r\n\r\n /**\r\n * icon for upload button\r\n */\r\n public get IconUpload(): string {\r\n return this.iconService.UploadComponentUploadIcon;\r\n }\r\n\r\n public get allowedtypes(): string {\r\n return this._allowedtypes;\r\n }\r\n\r\n public get autoupload(): boolean {\r\n return this._autoupload;\r\n }\r\n\r\n public get enablepause(): boolean {\r\n return this._enablepause;\r\n }\r\n\r\n public get endpoint(): string {\r\n return this._endpoint;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Name der Datei die Hochgeladen wird\r\n * @returns Observable des Dateinamens.\r\n */\r\n public Filename(): Observable<string> {\r\n if (this.uploads.length > 0) {\r\n return of(this.uploads[0].name);\r\n } else {\r\n return this.lngResourceService.GetString(\r\n this.validationKeyService.UploadNoFilesSelected\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Gibt an ob Queue Elemente beinhaltet\r\n * @returns Elemente in der Queue\r\n */\r\n public HasQueueItem(): boolean {\r\n return this.uploads.length > 0;\r\n }\r\n\r\n /**\r\n * Gibt an ob ein Upload abgeschlossen ist\r\n * @returns Upload erfolgreich\r\n */\r\n public HasSuccessUpload(): boolean {\r\n if (this.uploads.length > 0) {\r\n return (\r\n this.uploads.filter((itm) => itm.status !== 'complete').length === 0\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Prüft ob ein Upload pausiert\r\n * @returns Pausierter Upload ist vorhanden\r\n */\r\n public IsPaused(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'paused').length > 0;\r\n }\r\n\r\n /**\r\n * Prüft ob in der Queue Elemente die zum Upload bereit sind vorhanden sind.\r\n * @returns Elemente für Upload vorhanden\r\n */\r\n public IsStateToUpload(): boolean {\r\n return (\r\n this.uploads.filter(\r\n (itm) => itm.status === 'added' || itm.status === 'paused'\r\n ).length > 0\r\n );\r\n }\r\n\r\n /**\r\n * Prüft ob ein Upload eines Files am laufen ist\r\n * @returns Upload ist am laufen\r\n */\r\n public IsUploading(): boolean {\r\n return this.uploads.filter((itm) => itm.status === 'uploading').length > 0;\r\n }\r\n\r\n /**\r\n * Gibt den Uploadfortschritt zurück\r\n * @returns Upload Fortschritt. Wert von 0-100\r\n */\r\n public Progress(): number {\r\n if (this.uploads.length > 0) {\r\n return this.uploads[0].progress;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Cancel single upload\r\n * @param uploadId ID of File to cancel\r\n */\r\n public cancel(uploadId) {\r\n this.uploadService.control({ action: 'cancel', uploadId: uploadId });\r\n }\r\n\r\n /**\r\n * Cancel all Uploaded files\r\n */\r\n public cancelAll() {\r\n if (this.HasQueueItem() === true) {\r\n this.uploadService.control({ action: 'cancel' });\r\n }\r\n }\r\n\r\n /**\r\n * Destroy des Controls\r\n */\r\n public ngOnDestroy() {\r\n if (this.listenerFn) {\r\n this.listenerFn();\r\n }\r\n }\r\n\r\n /**\r\n * Initialisiert das Control\r\n */\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n // Init Event Listener for Input File Control and Handling Files\r\n this.listenerFn = this.renderer.listen(\r\n this.uploadInput.nativeElement,\r\n 'change',\r\n this.fileListener\r\n );\r\n\r\n this.setAllowedTypes(this._allowedtypes);\r\n this.setEndpoint(this._endpoint);\r\n\r\n if (this._endpoint === null) {\r\n throw new Error('endpoint is not defined!');\r\n }\r\n\r\n this.uploadService.connect(this.options);\r\n }\r\n\r\n /**\r\n * Upload Event\r\n *\r\n * @param uploadsOutStream Upload Item\r\n */\r\n public onUpload(ufile: UploadState) {\r\n const index = this.uploads.findIndex((f) => f.uploadId === ufile.uploadId);\r\n\r\n if (ufile.status === 'added' || (ufile.status === 'queue' && index < 0)) {\r\n if (\r\n this.isExtensionValid(ufile.name) &&\r\n this.isFileSizeValid(ufile.size) &&\r\n this.CustomAddValidation(ufile)\r\n ) {\r\n this.uploads.push(new SacUploadFile(ufile));\r\n } else {\r\n this.cancel(ufile.uploadId);\r\n\r\n if (!this.isExtensionValid(ufile.name)) {\r\n this.onfileerror.emit('INVALID_EXTENSION');\r\n } else if (!this.isFileSizeValid(ufile.size)) {\r\n this.onfileerror.emit('INVALID_FILESIZE');\r\n }\r\n }\r\n } else if (ufile.status === 'cancelled') {\r\n if (index >= 0) {\r\n this.uploads.splice(index, 1);\r\n }\r\n\r\n this.SetUploadValue(null);\r\n } else if (ufile.status === 'complete') {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n this.SetUploadValue(ufile);\r\n } else {\r\n if (index >= 0) {\r\n this.uploads[index].progress = ufile.progress;\r\n this.uploads[index].status = ufile.status;\r\n }\r\n }\r\n\r\n this.UpdateFileCount();\r\n }\r\n\r\n /**\r\n * Cancel Single File\r\n * @param uploadId ID of File to Cancel\r\n */\r\n public pause(uploadId) {\r\n this.uploadService.control({ action: 'pause', uploadId });\r\n }\r\n\r\n /**\r\n * Pause all Uploads\r\n */\r\n public pauseAll() {\r\n if (this.IsUploading() === true) {\r\n this.uploadService.control({ action: 'pause' });\r\n }\r\n }\r\n\r\n /**\r\n * Upload Single File\r\n *\r\n * @param uploadId ID of File to Upload\r\n */\r\n public upload(uploadId) {\r\n this.uploadService.control({ action: 'upload', uploadId });\r\n }\r\n\r\n /**\r\n * Upload all queued Files\r\n */\r\n public uploadAll() {\r\n if (this.IsStateToUpload() === true) {\r\n this.uploadService.control({ action: 'upload' });\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Upload Control\r\n * @param c Control das validiert werden soll\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Methode kann für Controls verwendet werden, zusätzliche Validierungen bei hinzufügen der Files zu machen\r\n *\r\n * @param file File das hinzugefügt wurde.\r\n * @returns Valdierung ist erfolgreich\r\n */\r\n public abstract CustomAddValidation(file: UploadState): boolean;\r\n /**\r\n * Methode welche die Upload ID's in das Model setzt oder löscht\r\n *\r\n * @param file Type von File ID's\r\n */\r\n public abstract SetUploadValue(file: UploadState): void;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n private UpdateFileCount(): void {\r\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\r\n if (this.ngControl) {\r\n (this.ngControl as unknown as IUploadControl).uploadedfilecount =\r\n this.UploadedFileCount();\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of uploaded files\r\n */\r\n private UploadedFileCount(): number {\r\n return this.uploads.filter((itm) => itm.status === 'complete').length;\r\n }\r\n\r\n /**\r\n * Prüft ob die Dateierweiterung gültig ist\r\n *\r\n * @param filename Dateiname\r\n */\r\n private isExtensionValid(filename: string): boolean {\r\n if (this._allowedtypes === '*') {\r\n return true;\r\n }\r\n\r\n let isValid: boolean = false;\r\n const extensions: string[] = this._allowedtypes.split(',');\r\n\r\n extensions.forEach((itm) => {\r\n if (filename.toLowerCase().endsWith(itm.toLowerCase())) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n\r\n /**\r\n * Prüft ob das File nicht zu gross ist.\r\n *\r\n * @param filesize Max File Size in Bytes\r\n */\r\n private isFileSizeValid(filesize: number): boolean {\r\n if (this.maxfilesize === 0) {\r\n return true;\r\n }\r\n\r\n return this.maxfilesize >= filesize;\r\n }\r\n\r\n /**\r\n * Setzt die erlaubten Datentypen für den Upload\r\n *\r\n * @param types Erlaubte File Extensions\r\n */\r\n private setAllowedTypes(types: string) {\r\n // Prüfen UploadInput bereits geladen, ist NULL wenn Extension im Markup nach NgModel gesetzt wird.\r\n if (this.uploadInput && this.uploadInput.nativeElement) {\r\n this.renderer.setAttribute(\r\n this.uploadInput.nativeElement,\r\n 'accept',\r\n types\r\n );\r\n }\r\n\r\n this.options.allowedTypes = types;\r\n }\r\n\r\n /**\r\n * Setzt den Upload Endpoit\r\n * @param url Register URI\r\n */\r\n private setEndpoint(url: string) {\r\n this.options.endpoint = url;\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * Klasse für den Upload einer Datei in der Upload Component\r\n */\r\nexport class SacUploadFile {\r\n // #region Properties\r\n\r\n /**\r\n * Document ID\r\n */\r\n public documentid: string;\r\n /**\r\n * Dateiname\r\n */\r\n public name: string;\r\n /**\r\n * Upload Fortschritt\r\n */\r\n public progress: number;\r\n /**\r\n * Upload Status\r\n */\r\n public status: string;\r\n /**\r\n * Upload ID\r\n */\r\n public uploadId: string;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param ufile Upload Status\r\n */\r\n constructor(ufile: UploadState) {\r\n this.uploadId = ufile.uploadId;\r\n this.name = ufile.name;\r\n this.progress = ufile.progress;\r\n this.status = ufile.status;\r\n this.documentid = null;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n\r\n// #endregion Classes\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Upload Komponente für ein einzelnes File\r\n */\r\n@Directive()\r\nexport class SacDropzoneMultipleCommon\r\n extends SacUploadBase<string[]>\r\n implements OnInit\r\n{\r\n // #region Properties\r\n\r\n /**\r\n * Max. Anzahl Files die hochgeladen werden können\r\n */\r\n @Input()\r\n public maxfiles: number = 0;\r\n /**\r\n * Min. Anzahl Files die hochgeladen werden müssen\r\n */\r\n @Input()\r\n public minfiles: number = 0;\r\n /**\r\n * Höhe des Upload Controls\r\n */\r\n @Input()\r\n public uploadheight: string = null;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessageminfiles: string =\r\n this.validationKeyService.ValidationErrorFilesMin;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryminfiles: string =\r\n this.validationKeyService.ValidationErrorSummaryFilesMin;\r\n\r\n /**\r\n * Property wenn Drag Event aktiv ist (Maus über Zone)\r\n */\r\n public active = false;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft ob die max. Files in der Queue nicht überschritten werden\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n public CustomAddValidation(file: UploadState): boolean {\r\n if (this.maxfiles > 0 && this.uploads.length >= this.maxfiles) {\r\n this.onfileerror.emit('INVALID_MAXFILES');\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Setzt die File ID's der hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files welches hochgeladen wurde.\r\n */\r\n public SetUploadValue(file: UploadState) {\r\n let documentid: string = null;\r\n if (file === null) {\r\n documentid = null;\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n documentid = file.response.documentid;\r\n } else {\r\n documentid = file.uploadId;\r\n }\r\n\r\n // Document ID aktualisieren, damit Wert von Server in Model gesetzt werden kann.\r\n this.uploads\r\n .filter((itm) => itm !== null && itm.uploadId === file.uploadId)\r\n .forEach((itm) => {\r\n itm.documentid = documentid;\r\n });\r\n }\r\n\r\n // List of Files\r\n const fileIds: string[] = [];\r\n\r\n // Add all Items with Uploaded State to Model\r\n this.uploads\r\n .filter((itm) => itm.status === 'complete')\r\n .forEach((itm) => {\r\n if (itm.documentid !== null && itm.documentid !== undefined) {\r\n fileIds.push(itm.documentid);\r\n }\r\n });\r\n\r\n if (fileIds.length > 0) {\r\n super.setValue(fileIds);\r\n } else {\r\n super.setValue(null);\r\n }\r\n }\r\n\r\n /**\r\n * Methode für Drag and Drop von Files\r\n * @param event Drag Event\r\n */\r\n public dropHandler(event: DragEvent): void {\r\n if (\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.files.item(0)\r\n ) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = false;\r\n this.uploadService.handleFiles(event.dataTransfer.files);\r\n }\r\n }\r\n\r\n /**\r\n * Ervent wenn das Control initialisert wird\r\n */\r\n public ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.autoupload = true;\r\n }\r\n\r\n /**\r\n * Methode wenn Drag die Zone verlässt\r\n * @param event DragLeave Event\r\n */\r\n public onDragLeave(event: DragEvent): void {\r\n this.active = false;\r\n }\r\n\r\n /**\r\n * Methode wenn Drag in die Zone eintritt\r\n * @param event DragEnter Event\r\n */\r\n public onDragOver(event: DragEvent): void {\r\n if (\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.types.every((itm) => itm === 'Files') &&\r\n event.dataTransfer.types.length > 0\r\n ) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = true;\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Control\r\n *\r\n * @param c Control\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.minFiles(\r\n this.minfiles,\r\n this.validationmessageminfiles,\r\n this.validationmessagesummaryminfiles\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input, OnInit } from '@angular/core';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\n\r\n/**\r\n * Upload Komponente für ein einzelnes File\r\n */\r\n@Directive()\r\nexport class SacDropzoneSingleCommon\r\n extends SacUploadBase<string>\r\n implements OnInit\r\n{\r\n /**\r\n * Höhe der Dropzone. Wert wird mit Einheit angegeben.\r\n */\r\n @Input()\r\n public uploadheight: string = null;\r\n\r\n /**\r\n * Property wenn Drag Event aktiv ist (Maus über Zone)\r\n */\r\n public active = false;\r\n\r\n /**\r\n * Ervent wenn das Control initialisert wird\r\n */\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.autoupload = true;\r\n }\r\n\r\n /**\r\n * Methode für Drag and Drop von Files\r\n * @param event Drag Event\r\n */\r\n dropHandler(event: DragEvent): void {\r\n if (\r\n !this.HasQueueItem() &&\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.files.item(0)\r\n ) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = false;\r\n\r\n if (event.dataTransfer.files.length === 1) {\r\n this.uploadService.handleFiles(event.dataTransfer.files);\r\n } else {\r\n this.onfileerror.emit('INVALID_DRAGDROP_MAXFILES');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn Drag in die Zone eintritt\r\n * @param event DragEnter Event\r\n */\r\n onDragOver(event: DragEvent): void {\r\n if (\r\n !this.HasQueueItem() &&\r\n event.dataTransfer &&\r\n event.dataTransfer.files &&\r\n event.dataTransfer.types.every((itm) => itm === 'Files') &&\r\n event.dataTransfer.types.length > 0\r\n ) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.active = true;\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn Drag die Zone verlässt\r\n * @param event DragLeave Event\r\n */\r\n onDragLeave(event: DragEvent): void {\r\n this.active = false;\r\n }\r\n\r\n /**\r\n * Macht keine Validierung in diesem Control\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n CustomAddValidation(file: UploadState): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Setzt die File ID des hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files\r\n */\r\n SetUploadValue(file: UploadState) {\r\n if (file === null) {\r\n super.setValue(null);\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n super.setValue(file.response.documentid);\r\n } else {\r\n super.setValue(file.uploadId);\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\nimport { Validation } from '../../validation';\r\n\r\n/**\r\n * Upload Componente für mehrere Files\r\n */\r\n@Directive()\r\nexport class SacUploadMultipleCommon extends SacUploadBase<string[]> {\r\n // #region Properties\r\n\r\n /**\r\n * Label für Browse Button\r\n */\r\n @Input()\r\n public buttonbrowse: string = 'Browse';\r\n /**\r\n * Label für Upload Button\r\n */\r\n @Input()\r\n public buttonupload: string = 'Upload';\r\n /**\r\n * Max. Files die hochgeladen werden können. 0 deaktiviert das Limit\r\n */\r\n @Input()\r\n public maxfiles: number = 0;\r\n /**\r\n * Min. Files die hochgeladen werden müssen. 0 deaktiviert das Limit\r\n */\r\n @Input()\r\n public minfiles: number = 0;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessageminfiles: string =\r\n this.validationKeyService.ValidationErrorFilesMin;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryminfiles: string =\r\n this.validationKeyService.ValidationErrorSummaryFilesMin;\r\n\r\n // #endregion Properties\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft ob die max. Files in der Queue nicht überschritten werden\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n public CustomAddValidation(file: UploadState): boolean {\r\n if (this.maxfiles > 0 && this.uploads.length >= this.maxfiles) {\r\n this.onfileerror.emit('INVALID_MAXFILES');\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Setzt die File ID's der hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files welches hochgeladen wurde.\r\n */\r\n public SetUploadValue(file: UploadState) {\r\n let documentid: string = null;\r\n if (file === null) {\r\n documentid = null;\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n documentid = file.response.documentid;\r\n } else {\r\n documentid = file.uploadId;\r\n }\r\n\r\n // Document ID aktualisieren, damit Wert von Server in Model gesetzt werden kann.\r\n this.uploads\r\n .filter((itm) => itm !== null && itm.uploadId === file.uploadId)\r\n .forEach((itm) => {\r\n itm.documentid = documentid;\r\n });\r\n }\r\n\r\n // List of Files\r\n const fileIds: string[] = [];\r\n\r\n // Add all Items with Uploaded State to Model\r\n this.uploads\r\n .filter((itm) => itm.status === 'complete')\r\n .forEach((itm) => {\r\n if (itm.documentid !== null && itm.documentid !== undefined) {\r\n fileIds.push(itm.documentid);\r\n }\r\n });\r\n\r\n if (fileIds.length > 0) {\r\n super.setValue(fileIds);\r\n } else {\r\n super.setValue(null);\r\n }\r\n }\r\n\r\n /**\r\n * Validiert das Control\r\n *\r\n * @param c Control\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = super.validateData(c);\r\n\r\n if (error === null) {\r\n error = Validation.minFiles(\r\n this.minfiles,\r\n this.validationmessageminfiles,\r\n this.validationmessagesummaryminfiles\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { UploadState } from 'ngx-uploadx';\r\nimport { SacUploadBase } from '../../common/baseuploadcontrol';\r\n\r\n/**\r\n * Upload Komponente für ein einzelnes File\r\n */\r\n@Directive()\r\nexport class SacUploadSingleCommon extends SacUploadBase<string> {\r\n /**\r\n * Label für Browse Button\r\n */\r\n @Input()\r\n buttonbrowse: string = 'Browse';\r\n\r\n /**\r\n * Label für Upload Button\r\n */\r\n @Input()\r\n buttonupload: string = 'Upload';\r\n\r\n /**\r\n * Macht keine Validierung in diesem Control\r\n *\r\n * @param file File das hinzugefügt wurde\r\n */\r\n CustomAddValidation(file: UploadState): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Setzt die File ID des hochgeladen Files in das Model\r\n *\r\n * @param file ID des Files\r\n */\r\n SetUploadValue(file: UploadState) {\r\n if (file === null) {\r\n super.setValue(null);\r\n } else {\r\n if (\r\n file.response !== undefined &&\r\n file.response !== null &&\r\n file.response.documentid !== null &&\r\n file.response.documentid !== undefined\r\n ) {\r\n super.setValue(file.response.documentid);\r\n } else {\r\n super.setValue(file.uploadId);\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, Host, Injector, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { IconType } from '../../enums/IconType';\r\nimport { ISacLanguageService } from '../../interfaces/ISacLanguageService';\r\nimport { LanguageModel } from '../../models/languagemodel';\r\nimport {\r\n SACLANGUAGE_SERVICE,\r\n SacDefaultLanguageService,\r\n} from '../../services/sac-language.service';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Base Klasse für Multi Language Input Control\r\n */\r\n@Directive()\r\nexport class SacMultilanguageInputCommon extends SacInputBase<any> {\r\n // #region Properties\r\n\r\n /**\r\n * Sprache für das Control\r\n */\r\n private languages: LanguageModel[] = [];\r\n /**\r\n * Selektierte Sprace des Controls\r\n */\r\n private selectedLanguage: LanguageModel = null;\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngLanguageService: ISacLanguageService;\r\n\r\n /**\r\n * Fix breite für das Control definieren.\r\n */\r\n @Input() public controlwidth: string = null;\r\n /**\r\n * Max länge an Zeichen für Eingabefeld\r\n */\r\n @Input() public maxlength: number = null;\r\n /**\r\n * Aktiviert den Validator, das min. eine Sprache erfasst sein muss\r\n */\r\n @Input() public requiredany: boolean = false;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorMultilanguageRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern bei Control\r\n */\r\n @Input() public validationmessagerequiredany: string =\r\n this.validationKeyService.ValidationErrorMultilanguageRequiredAny;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequiredany: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(@Host() formlayout: SacFormLayoutCommon, injector: Injector) {\r\n super(formlayout, injector);\r\n\r\n this.lngLanguageService = injector.get(\r\n SACLANGUAGE_SERVICE,\r\n new SacDefaultLanguageService()\r\n );\r\n\r\n this.lngLanguageService\r\n .GetLanguages()\r\n .subscribe((result: LanguageModel[]) => {\r\n this.languages = result;\r\n\r\n if (this.languages.length > 0) {\r\n this.selectedLanguage = this.languages[0];\r\n // Control Validierung ausführen, da Wert potentiell bereits gesetzt sein kann\r\n this.UpdateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Gibt den Wert der aktuell ausgewählten Sprache zurück\r\n */\r\n public get LanguageValue(): string {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return '';\r\n }\r\n\r\n if (this.value[currentIsoCode] === undefined) {\r\n return '';\r\n } else {\r\n return this.value[currentIsoCode];\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Collection der Sprachen\r\n */\r\n public get Languages(): LanguageModel[] {\r\n return this.languages;\r\n }\r\n\r\n /**\r\n * Gibt das Icon der selektierten Sprache zurück\r\n */\r\n public get SelectedIcon(): string {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.Icon;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Gibt den Type des Icons für die selektierte Sprache zurück\r\n */\r\n public get SelectedIconType(): IconType {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.IconType;\r\n } else {\r\n return IconType.Image;\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft ob in irgendeiner Sprache kein Wert definiert wurde\r\n * @returns Leerwert ist vorhanden\r\n */\r\n public IsAnyEmpty(): boolean {\r\n let found = false;\r\n\r\n if (this.value) {\r\n this.languages.forEach((itm: LanguageModel) => {\r\n if (itm === null) {\r\n found = true;\r\n return;\r\n }\r\n\r\n if (\r\n this.value[itm.IsoCode] === undefined ||\r\n this.value[itm.IsoCode] === '' ||\r\n this.value[itm.IsoCode] === null\r\n ) {\r\n found = true;\r\n return;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n\r\n /**\r\n * Prüft ob in einer bestimmten Sprache ein Wert vorhanden ist.\r\n * @param sprache Sprache in welcher der Wert geprüft werden soll\r\n * @returns Wert ist vorhanden\r\n */\r\n public IsEmpty(sprache: LanguageModel): boolean {\r\n if (this.value) {\r\n // Fallback falls keine Selektierte Sprache\r\n if (sprache === null) {\r\n return true;\r\n }\r\n\r\n return (\r\n this.value[sprache.IsoCode] === undefined ||\r\n this.value[sprache.IsoCode] === '' ||\r\n this.value[sprache.IsoCode] === null\r\n );\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Selektiert die Sprache\r\n * @param language Sprache die selektiert werden soll\r\n */\r\n public SelectLanguage(language: LanguageModel) {\r\n this.selectedLanguage = language;\r\n }\r\n\r\n /**\r\n * Setzt den Wert für die aktuell gewählte Sprache\r\n * @param value Wert welcher gesetzt werden soll\r\n */\r\n public SetLanguageValue(value: string): void {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return;\r\n }\r\n\r\n this.value[currentIsoCode] = value;\r\n this.propagateChange(this._value);\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriterien entspricht\r\n * @param c Control das validiert wird\r\n */\r\n public validateData(c: AbstractControl): { [key: string]: any } {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.isrequired !== undefined &&\r\n this.isrequired === true\r\n ) {\r\n error = Validation.multilanguageRequired(\r\n this.languages,\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.requiredany !== undefined &&\r\n this.requiredany === true\r\n ) {\r\n error = Validation.multilanguageRequiredAny(\r\n this.languages,\r\n this.validationmessagerequiredany,\r\n this.validationmessagesummaryrequiredany\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { Directive, Host, Injector, Input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacInputBase } from '../../common/baseinputcontrol';\r\nimport { IconType } from '../../enums/IconType';\r\nimport { ISacLanguageService } from '../../interfaces/ISacLanguageService';\r\nimport { LanguageModel } from '../../models/languagemodel';\r\nimport {\r\n SACLANGUAGE_SERVICE,\r\n SacDefaultLanguageService,\r\n} from '../../services/sac-language.service';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n/**\r\n * Base Klasse für Multi Language Textarea Control\r\n */\r\n@Directive()\r\nexport class SacMultilanguageInputAreaCommon extends SacInputBase<any> {\r\n // #region Properties\r\n\r\n /**\r\n * Sprache für das Control\r\n */\r\n private languages: LanguageModel[] = [];\r\n /**\r\n * Selektierte Sprace des Controls\r\n */\r\n private selectedLanguage: LanguageModel = null;\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n protected lngLanguageService: ISacLanguageService;\r\n\r\n /**\r\n * Fix breite für das Control definieren.\r\n */\r\n @Input() public controlwidth: string = null;\r\n /**\r\n * Max länge an Zeichen für Eingabefeld\r\n */\r\n @Input() public maxlength: number = null;\r\n /**\r\n * Aktiviert den Validator, das min. eine Sprache erfasst sein muss\r\n */\r\n @Input() public requiredany: boolean = false;\r\n /**\r\n * Anzahl Rows für TextArea\r\n */\r\n @Input() public rows: number = 7;\r\n /**\r\n * Resource Key für Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern bei Control\r\n */\r\n @Input() public validationmessagerequiredany: string =\r\n this.validationKeyService.ValidationErrorMultilanguageRequiredAny;\r\n /**\r\n * Resource Key für Validation Message Required in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequired;\r\n /**\r\n * Resource Key für Validation Message Pattern in Validation Summary\r\n */\r\n @Input() public validationmessagesummaryrequiredany: string =\r\n this.validationKeyService.ValidationErrorSummaryMultilanguageRequiredAny;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n */\r\n constructor(@Host() formlayout: SacFormLayoutCommon, injector: Injector) {\r\n super(formlayout, injector);\r\n\r\n this.lngLanguageService = injector.get(\r\n SACLANGUAGE_SERVICE,\r\n new SacDefaultLanguageService()\r\n );\r\n\r\n this.lngLanguageService\r\n .GetLanguages()\r\n .subscribe((result: LanguageModel[]) => {\r\n this.languages = result;\r\n\r\n if (this.languages.length > 0) {\r\n this.selectedLanguage = this.languages[0];\r\n }\r\n // Control Validierung ausführen, da Wert potentiell bereits gesetzt sein kann\r\n this.UpdateValueAndValidity();\r\n });\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Getter welcher den Wert der Component in der gewählten Sprache zurückgibt. Wenn keine Sprache selektiert ist, wird ein leerer Wert zurückgegeben.\r\n * Ist in der Component kein Wert gespeichert wird ein leerer Wert zurückgegeben\r\n */\r\n public get LanguageValue(): string {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return '';\r\n }\r\n\r\n return this.value[currentIsoCode];\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Collection der Sprachen\r\n */\r\n public get Languages(): LanguageModel[] {\r\n return this.languages;\r\n }\r\n\r\n /**\r\n * Gibt das Icon der selektierten Sprache zurück\r\n */\r\n public get SelectedIcon(): string {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.Icon;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Gibt den Type des Icons für die selektierte Sprache zurück\r\n */\r\n public get SelectedIconType(): IconType {\r\n if (this.selectedLanguage) {\r\n return this.selectedLanguage.IconType;\r\n } else {\r\n return IconType.Image;\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Prüft, ob in einer beliebigen Sprache der Kompontente kein Wert definiert ist.\r\n * @returns Gibt an ob ein Leeres Element vorhanden ist\r\n */\r\n public IsAnyEmpty(): boolean {\r\n let found = false;\r\n\r\n if (this.value) {\r\n this.languages.forEach((itm: LanguageModel) => {\r\n if (itm === null) {\r\n found = true;\r\n return;\r\n }\r\n\r\n if (\r\n this.value[itm.IsoCode] === undefined ||\r\n this.value[itm.IsoCode] === '' ||\r\n this.value[itm.IsoCode] === null\r\n ) {\r\n found = true;\r\n return;\r\n }\r\n });\r\n }\r\n return found;\r\n }\r\n\r\n /**\r\n * Gibt an, ob in einer bestimmten Sprache ein Wert definiert ist\r\n * @param sprache Sprache in welcher der Wert geprüft werden soll\r\n * @returns Wert ist vorhanden\r\n */\r\n public IsEmpty(sprache: LanguageModel): boolean {\r\n if (this.value) {\r\n // Fallback falls keine Selektierte Sprache\r\n if (sprache === null) {\r\n return true;\r\n }\r\n\r\n return (\r\n this.value[sprache.IsoCode] === undefined ||\r\n this.value[sprache.IsoCode] === '' ||\r\n this.value[sprache.IsoCode] === null\r\n );\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Selektiert die Sprache der Komponente\r\n * @param language Sprache die selektiert werden soll\r\n */\r\n public SelectLanguage(language: LanguageModel) {\r\n this.selectedLanguage = language;\r\n }\r\n\r\n /**\r\n * Speichert einen Wert zur aktuell gewählten Sprache\r\n * @param value Wert welcher gespeichert werden soll\r\n */\r\n public SetLanguageValue(value: string) {\r\n if (this.value) {\r\n const currentIsoCode: string = this.selectedLanguage\r\n ? this.selectedLanguage.IsoCode\r\n : null;\r\n\r\n // Fallback falls keine Selektierte Sprache\r\n if (currentIsoCode === null) {\r\n return;\r\n }\r\n\r\n this.value[currentIsoCode] = value;\r\n this.propagateChange(this._value);\r\n }\r\n }\r\n\r\n /**\r\n * Methode validiert, ob der Wert den gegebenen Kriterien entspricht\r\n * @param c Controls das validiert wird\r\n */\r\n public validateData(c: AbstractControl): { [key: string]: any } {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.isrequired !== undefined &&\r\n this.isrequired === true\r\n ) {\r\n error = Validation.multilanguageRequired(\r\n this.languages,\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n\r\n if (\r\n error === null &&\r\n c.value !== null &&\r\n c.value !== undefined &&\r\n c.value !== '' &&\r\n this.requiredany !== undefined &&\r\n this.requiredany === true\r\n ) {\r\n error = Validation.multilanguageRequiredAny(\r\n this.languages,\r\n this.validationmessagerequiredany,\r\n this.validationmessagesummaryrequiredany\r\n )(c);\r\n }\r\n\r\n return error;\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n","import { EventEmitter, Input, Output, Directive } from '@angular/core';\r\nimport { IConfirmComponent } from '../../interfaces/iconfirmcomponent';\r\nimport { SacConfirmButton } from './confirm.button';\r\n\r\n/**\r\n * Basis Klasse für Confirm Dialog\r\n */\r\n@Directive()\r\nexport class SacConfirmCommon implements IConfirmComponent {\r\n\r\n //#region Input / Output Properties\r\n\r\n /**\r\n * Event wenn Dialog geschlossen wird\r\n */\r\n @Output()\r\n public onconfirm: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Dialog Titel für Confirm Dialog\r\n */\r\n @Input()\r\n public title: string = '';\r\n\r\n /**\r\n * Nachricht die auf dem Dialog angezeigt wird\r\n */\r\n @Input()\r\n public message: string = '';\r\n\r\n /**\r\n * Icon welches auf dem Dialog angezeigt wird\r\n */\r\n @Input()\r\n public image: string = '';\r\n\r\n /**\r\n * Map mit Buttons die in Dialog angezeigt werden.\r\n */\r\n @Input()\r\n public buttons: SacConfirmButton[] = [];\r\n\r\n //#endregion\r\n\r\n //#region Internal Properties and Methods\r\n\r\n /**\r\n * Definiert ob der Dialog sichtbar ist\r\n */\r\n isvisible: boolean = false;\r\n\r\n /**\r\n * Definiert, ob für den Dialog ein Image definiert wurde\r\n */\r\n hasImage(): boolean {\r\n return this.image !== '';\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Public Methods\r\n\r\n /**\r\n * Action wenn Button auf Dialog geklickt wurde. Löst den EventEmitter aus und blendet den Dialog aus.\r\n * @param action\r\n */\r\n public confirm(action: string): void {\r\n this.onconfirm.emit(action);\r\n this.isvisible = false;\r\n }\r\n\r\n /**\r\n * Zeigt den Dialog an\r\n */\r\n public show(): void {\r\n this.isvisible = true;\r\n }\r\n\r\n /**\r\n * Blendet den Dialog aus\r\n */\r\n public hide(): void {\r\n this.isvisible = false;\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import { BUTTONROLETYPE } from '../../enums/ButtonRoleType';\r\n\r\n/**\r\n * Class for button templates in Confirm Button\r\n */\r\nexport class SacConfirmButton {\r\n // #region Properties\r\n\r\n /**\r\n * Key of the button. Is returned as a result when confirming\r\n */\r\n public key: string = '';\r\n /**\r\n * Layout of the button\r\n */\r\n public role?: BUTTONROLETYPE | null = 'secondary';\r\n /**\r\n * Display text of the buttonAnzeigetext des Buttons\r\n */\r\n public text: string = '';\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param key Key for button\r\n * @param text Text for button\r\n * @param role Role type for the button. Default is ‘secondary’\r\n */\r\n constructor(\r\n key: string = '',\r\n text: string = '',\r\n role: BUTTONROLETYPE = 'default'\r\n ) {\r\n this.key = key;\r\n this.text = text;\r\n this.role = role;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactory,\r\n ComponentRef,\r\n EventEmitter,\r\n Injector,\r\n} from '@angular/core';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport { IConfirmComponent } from '../../interfaces/iconfirmcomponent';\r\nimport {\r\n SACICON_SERVICE,\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultIconService,\r\n SacDefaultLocalisationService,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\n\r\n/**\r\n * Basis Klasse für Confirm Service implementation\r\n */\r\nexport abstract class ServiceConfirmCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Referenz auf IConfirm Instanz.\r\n */\r\n protected component: ComponentRef<IConfirmComponent> = null;\r\n /**\r\n * service for default icon in dialog\r\n */\r\n protected iconService: ISacIconService;\r\n /**\r\n * service for tranlsate default text\r\n */\r\n protected localisationService: ISacLocalisationService;\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n protected validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param appRef ApplicationRef zum Anhängen des Dialogs an den Content\r\n * @param injector Injector um die Instanz zu erzeuge\r\n */\r\n constructor(private appRef: ApplicationRef, private injector: Injector) {\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.localisationService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Blendet den Dialog aus\r\n */\r\n protected CloseDialog(): void {\r\n const dialog = this.component.instance;\r\n dialog.hide();\r\n }\r\n\r\n /**\r\n * Interne Methode für die Implementation des Confirm Dialogs. Steuert die Feedbacks, die Erzeugung und Anzeige des Dialogs\r\n */\r\n protected Confirm(): EventEmitter<string> {\r\n // Dialog erzeugen\r\n this.CreateInstance();\r\n const instance: IConfirmComponent = this.OpenDialog();\r\n\r\n // Konfiguration der Dialog Instanz durch Service Implementation zulassen\r\n this.ConfigureDialog(instance);\r\n\r\n // Event Emitter für Confirmation im Service. Event Emitter Asynchron initialiseren\r\n const confirmTask: EventEmitter<string> = new EventEmitter<string>(true);\r\n\r\n // Callback wenn Dialog bestätigt wurde\r\n instance.onconfirm.subscribe(\r\n (value) => {\r\n // Dialog entfernen\r\n this.CloseDialog();\r\n\r\n // Emit auf Service auslösen\r\n confirmTask.emit(value);\r\n },\r\n (err) => {\r\n // Do nothing on Error\r\n },\r\n () => {\r\n this.DestroyInstance();\r\n }\r\n );\r\n\r\n // Confirm Emitter für Result zurückgeben\r\n return confirmTask;\r\n }\r\n\r\n /**\r\n * Erzeugt eine Instanz für den Dialog\r\n */\r\n protected CreateInstance(): void {\r\n // ComponentFactory aus Service laden\r\n const factory: ComponentFactory<IConfirmComponent> =\r\n this.GetComponentFactory();\r\n\r\n // Instanz der Komponente erzeugen und an die View anhängen\r\n this.component = factory.create(this.injector);\r\n this.appRef.attachView(this.component.hostView);\r\n }\r\n\r\n /**\r\n * Entfernt die Instanz des Dialogs\r\n */\r\n protected DestroyInstance(): void {\r\n // Dialog aus View entfernen und Komponenten löschen\r\n this.appRef.detachView(this.component.hostView);\r\n this.component.destroy();\r\n }\r\n\r\n /**\r\n * Zeigt den Dialog an\r\n */\r\n protected OpenDialog(): IConfirmComponent {\r\n const dialog = this.component.instance;\r\n dialog.show();\r\n return dialog as IConfirmComponent;\r\n }\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Protected Abstract Methods\r\n\r\n /**\r\n * Methode zur Konfiguration der Confirm Dialog Komponente\r\n * @param instance Instanz auf IConfirmComponent Komponente\r\n */\r\n protected abstract ConfigureDialog(instance: IConfirmComponent);\r\n /**\r\n * Abstrakte Methode zum erzeugen der Komponent Factory für den Dialog\r\n */\r\n protected abstract GetComponentFactory(): ComponentFactory<IConfirmComponent>;\r\n\r\n // #endregion Protected Abstract Methods\r\n}\r\n","interface ClientRect {\r\n top: number;\r\n bottom: number;\r\n left: number;\r\n right: number;\r\n height: number;\r\n width: number;\r\n}\r\n\r\n/**\r\n * Position Utility Klasse\r\n * @see https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/util/positioning.ts\r\n */\r\nexport class Positioning {\r\n /**\r\n * Get all Styles of Element\r\n * @param element HTML Element\r\n * @returns All Styles of element\r\n */\r\n private getAllStyles(element: HTMLElement) {\r\n return window.getComputedStyle(element);\r\n }\r\n\r\n /**\r\n * Get Style value of element\r\n * @param element HTML Element\r\n * @param prop Style\r\n * @returns Value of Style\r\n */\r\n private getStyle(element: HTMLElement, prop: string): string {\r\n return this.getAllStyles(element)[prop];\r\n }\r\n\r\n /**\r\n * Check if the element has an static position\r\n * @param element HTML Element\r\n * @returns Item has a static position\r\n */\r\n private isStaticPositioned(element: HTMLElement): boolean {\r\n return (this.getStyle(element, 'position') || 'static') === 'static';\r\n }\r\n\r\n /**\r\n * Get the Offset of the parent element\r\n * @param element HTML Element\r\n * @returns HTML ELement\r\n */\r\n private offsetParent(element: HTMLElement): HTMLElement {\r\n let offsetParentEl =\r\n <HTMLElement>element.offsetParent || document.documentElement;\r\n\r\n while (\r\n offsetParentEl &&\r\n offsetParentEl !== document.documentElement &&\r\n this.isStaticPositioned(offsetParentEl)\r\n ) {\r\n offsetParentEl = <HTMLElement>offsetParentEl.offsetParent;\r\n }\r\n\r\n return offsetParentEl || document.documentElement;\r\n }\r\n\r\n /**\r\n * Get Element Position\r\n * @param element HTML Element for Position\r\n * @param round Round Values\r\n * @returns Position Values\r\n */\r\n position(element: HTMLElement, round = true): ClientRect {\r\n let elPosition: ClientRect;\r\n let parentOffset: ClientRect = {\r\n width: 0,\r\n height: 0,\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n };\r\n\r\n if (this.getStyle(element, 'position') === 'fixed') {\r\n elPosition = element.getBoundingClientRect();\r\n elPosition = {\r\n top: elPosition.top,\r\n bottom: elPosition.bottom,\r\n left: elPosition.left,\r\n right: elPosition.right,\r\n height: elPosition.height,\r\n width: elPosition.width,\r\n };\r\n } else {\r\n const offsetParentEl = this.offsetParent(element);\r\n\r\n elPosition = this.offset(element, false);\r\n\r\n if (offsetParentEl !== document.documentElement) {\r\n parentOffset = this.offset(offsetParentEl, false);\r\n }\r\n\r\n parentOffset.top += offsetParentEl.clientTop;\r\n parentOffset.left += offsetParentEl.clientLeft;\r\n }\r\n\r\n elPosition.top -= parentOffset.top;\r\n elPosition.bottom -= parentOffset.top;\r\n elPosition.left -= parentOffset.left;\r\n elPosition.right -= parentOffset.left;\r\n\r\n if (round) {\r\n elPosition.top = Math.round(elPosition.top);\r\n elPosition.bottom = Math.round(elPosition.bottom);\r\n elPosition.left = Math.round(elPosition.left);\r\n elPosition.right = Math.round(elPosition.right);\r\n }\r\n\r\n return elPosition;\r\n }\r\n\r\n /**\r\n * Get Offset of Item\r\n * @param element HTML Element for Offset\r\n * @param round Round the Values\r\n * @returns Return Offset Position\r\n */\r\n offset(element: HTMLElement, round = true): ClientRect {\r\n const elBcr = element.getBoundingClientRect();\r\n const viewportOffset = {\r\n top: window.pageYOffset - document.documentElement.clientTop,\r\n left: window.pageXOffset - document.documentElement.clientLeft,\r\n };\r\n\r\n const elOffset = {\r\n height: elBcr.height || element.offsetHeight,\r\n width: elBcr.width || element.offsetWidth,\r\n top: elBcr.top + viewportOffset.top,\r\n bottom: elBcr.bottom + viewportOffset.top,\r\n left: elBcr.left + viewportOffset.left,\r\n right: elBcr.right + viewportOffset.left,\r\n };\r\n\r\n if (round) {\r\n elOffset.height = Math.round(elOffset.height);\r\n elOffset.width = Math.round(elOffset.width);\r\n elOffset.top = Math.round(elOffset.top);\r\n elOffset.bottom = Math.round(elOffset.bottom);\r\n elOffset.left = Math.round(elOffset.left);\r\n elOffset.right = Math.round(elOffset.right);\r\n }\r\n\r\n return elOffset;\r\n }\r\n\r\n /**\r\n * Return false if the element to position is outside the viewport\r\n * @returns position is inside viewport\r\n */\r\n positionElements(\r\n hostElement: HTMLElement,\r\n targetElement: HTMLElement,\r\n placement: string,\r\n appendToBody?: boolean\r\n ): boolean {\r\n const [placementPrimary = 'top', placementSecondary = 'center'] =\r\n placement.split('-');\r\n\r\n const hostElPosition = appendToBody\r\n ? this.offset(hostElement, false)\r\n : this.position(hostElement, false);\r\n const targetElStyles = this.getAllStyles(targetElement);\r\n\r\n const marginTop = parseFloat(targetElStyles.marginTop);\r\n const marginBottom = parseFloat(targetElStyles.marginBottom);\r\n const marginLeft = parseFloat(targetElStyles.marginLeft);\r\n const marginRight = parseFloat(targetElStyles.marginRight);\r\n\r\n let topPosition = 0;\r\n let leftPosition = 0;\r\n\r\n switch (placementPrimary) {\r\n case 'top':\r\n topPosition =\r\n hostElPosition.top -\r\n (targetElement.offsetHeight + marginTop + marginBottom);\r\n break;\r\n case 'bottom':\r\n topPosition = hostElPosition.top + hostElPosition.height;\r\n break;\r\n case 'left':\r\n leftPosition =\r\n hostElPosition.left -\r\n (targetElement.offsetWidth + marginLeft + marginRight);\r\n break;\r\n case 'right':\r\n leftPosition = hostElPosition.left + hostElPosition.width;\r\n break;\r\n }\r\n\r\n switch (placementSecondary) {\r\n case 'top':\r\n topPosition = hostElPosition.top;\r\n break;\r\n case 'bottom':\r\n topPosition =\r\n hostElPosition.top +\r\n hostElPosition.height -\r\n targetElement.offsetHeight;\r\n break;\r\n case 'left':\r\n leftPosition = hostElPosition.left;\r\n break;\r\n case 'right':\r\n leftPosition =\r\n hostElPosition.left +\r\n hostElPosition.width -\r\n targetElement.offsetWidth;\r\n break;\r\n case 'center':\r\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\r\n leftPosition =\r\n hostElPosition.left +\r\n hostElPosition.width / 2 -\r\n targetElement.offsetWidth / 2;\r\n } else {\r\n topPosition =\r\n hostElPosition.top +\r\n hostElPosition.height / 2 -\r\n targetElement.offsetHeight / 2;\r\n }\r\n break;\r\n }\r\n\r\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\r\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\r\n targetElement.style.transform = `translate(${Math.round(\r\n leftPosition\r\n )}px, ${Math.round(topPosition)}px)`;\r\n\r\n // Check if the targetElement is inside the viewport\r\n const targetElBCR = targetElement.getBoundingClientRect();\r\n const html = document.documentElement;\r\n const windowHeight = window.innerHeight || html.clientHeight;\r\n const windowWidth = window.innerWidth || html.clientWidth;\r\n\r\n return (\r\n targetElBCR.left >= 0 &&\r\n targetElBCR.top >= 0 &&\r\n targetElBCR.right <= windowWidth &&\r\n targetElBCR.bottom <= windowHeight\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Placement Separator Regex\r\n */\r\nconst placementSeparator = /\\s+/;\r\n/**\r\n * Global Position Service\r\n */\r\nexport const positionService = new Positioning();\r\n\r\n/**\r\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\r\n * Returns the applied placement.\r\n * In case of auto placement, placements are selected in order\r\n * 'top', 'bottom', 'left', 'right',\r\n * 'top-left', 'top-right',\r\n * 'bottom-left', 'bottom-right',\r\n * 'left-top', 'left-bottom',\r\n * 'right-top', 'right-bottom'.\r\n */\r\nexport function positionElements(\r\n hostElement: HTMLElement,\r\n targetElement: HTMLElement,\r\n placement: string | Placement | PlacementArray,\r\n appendToBody?: boolean,\r\n baseClass?: string\r\n): Placement | null {\r\n const placementVals: Array<Placement> = Array.isArray(placement)\r\n ? placement\r\n : (placement.split(placementSeparator) as Array<Placement>);\r\n\r\n const allowedPlacements = [\r\n 'top',\r\n 'bottom',\r\n 'left',\r\n 'right',\r\n 'top-left',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'left-top',\r\n 'left-bottom',\r\n 'right-top',\r\n 'right-bottom',\r\n ];\r\n\r\n const classList = targetElement.classList;\r\n const addClassesToTarget = (targetPlacement: Placement): Array<string> => {\r\n const [primary, secondary] = targetPlacement.split('-');\r\n const classes: string[] = [];\r\n if (baseClass) {\r\n classes.push(`${baseClass}-${primary}`);\r\n if (secondary) {\r\n classes.push(`${baseClass}-${primary}-${secondary}`);\r\n }\r\n\r\n classes.forEach((classname) => {\r\n classList.add(classname);\r\n });\r\n }\r\n return classes;\r\n };\r\n\r\n // Remove old placement classes to avoid issues\r\n if (baseClass) {\r\n allowedPlacements.forEach((placementToRemove) => {\r\n classList.remove(`${baseClass}-${placementToRemove}`);\r\n });\r\n }\r\n\r\n // replace auto placement with other placements\r\n let hasAuto = placementVals.findIndex((val) => val === 'auto');\r\n if (hasAuto >= 0) {\r\n allowedPlacements.forEach(function (obj) {\r\n if (placementVals.find((val) => val.search('^' + obj) !== -1) == null) {\r\n placementVals.splice(hasAuto++, 1, obj as Placement);\r\n }\r\n });\r\n }\r\n\r\n // coordinates where to position\r\n\r\n // Required for transform:\r\n const style = targetElement.style;\r\n style.position = 'absolute';\r\n style.top = '0';\r\n style.left = '0';\r\n style['will-change'] = 'transform';\r\n\r\n let testPlacement: Placement | null = null;\r\n let isInViewport = false;\r\n for (testPlacement of placementVals) {\r\n const addedClasses = addClassesToTarget(testPlacement);\r\n\r\n if (\r\n positionService.positionElements(\r\n hostElement,\r\n targetElement,\r\n testPlacement,\r\n appendToBody\r\n )\r\n ) {\r\n isInViewport = true;\r\n break;\r\n }\r\n\r\n // Remove the baseClasses for further calculation\r\n if (baseClass) {\r\n addedClasses.forEach((classname) => {\r\n classList.remove(classname);\r\n });\r\n }\r\n }\r\n\r\n if (!isInViewport) {\r\n // If nothing match, the first placement is the default one\r\n testPlacement = placementVals[0];\r\n addClassesToTarget(testPlacement);\r\n positionService.positionElements(\r\n hostElement,\r\n targetElement,\r\n testPlacement,\r\n appendToBody\r\n );\r\n }\r\n\r\n return testPlacement;\r\n}\r\n\r\n/**\r\n * Placement Typen\r\n */\r\nexport type Placement =\r\n | 'auto'\r\n | 'top'\r\n | 'bottom'\r\n | 'left'\r\n | 'right'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-right'\r\n | 'left-top'\r\n | 'left-bottom'\r\n | 'right-top'\r\n | 'right-bottom';\r\n\r\n/**\r\n * Placement Array\r\n */\r\nexport type PlacementArray = Placement | Array<Placement> | string;\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Base Context Menu Anchor Component für Open/Close Event\r\n */\r\n@Directive()\r\nexport class SacContextmenuAnchorCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Referenz auf das Native HTML Element\r\n */\r\n public nativeElement: HTMLElement;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param elementRef Refernz auf das HTML welcher als Anker für das Context Menü verwendet wird\r\n */\r\n constructor(elementRef: ElementRef<HTMLElement>) {\r\n this.nativeElement = elementRef.nativeElement;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\n/**\r\n * Common Marker Klasse für den Menü Container\r\n */\r\n@Directive()\r\nexport class SacContextMenuContrainerCommon {\r\n // #region Properties\r\n\r\n /**\r\n * Referenz auf das HTML Element des Menü Containers\r\n */\r\n public nativeElement: HTMLElement;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param elementRef Referenz auf das HTML Element mit der Marker Direktive\r\n */\r\n constructor(elementRef: ElementRef<HTMLElement>) {\r\n this.nativeElement = elementRef.nativeElement;\r\n }\r\n\r\n // #endregion Constructors\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n ContentChild,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Injector,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { SACICON_SERVICE, SacDefaultIconService } from '../../services';\r\nimport { PlacementArray, positionElements } from '../../utilities/positioning';\r\nimport { SacContextmenuAnchorCommon } from './contextmenuanchor';\r\nimport { SacContextMenuContrainerCommon } from './contextmenucontainer';\r\n\r\n/**\r\n * Base Context Menü Element. Die Logik wurde aus NG-BOOTSTRAP übernommen.\r\n */\r\n@Directive()\r\nexport class SacContextmenuCommon implements OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * Button für Open/Close Event aus Template\r\n */\r\n @ContentChild(SacContextmenuAnchorCommon, { static: false })\r\n private _anchorTemplate: SacContextmenuAnchorCommon;\r\n /**\r\n * Button für Open/Close Event\r\n */\r\n @ViewChild(SacContextmenuAnchorCommon, { static: false })\r\n private _anchor: SacContextmenuAnchorCommon;\r\n /**\r\n * Container Element für Dropdown\r\n */\r\n @ViewChild(SacContextMenuContrainerCommon, { static: false })\r\n private _menu: SacContextMenuContrainerCommon;\r\n\r\n /**\r\n * Body HTML Element\r\n */\r\n private bodyContainer: HTMLElement | null = null;\r\n /**\r\n * Zone Subscription für Postitonierung des Elements\r\n */\r\n private zoneSubscription: Subscription;\r\n\r\n /**\r\n * icon service\r\n */\r\n protected iconService: ISacIconService;\r\n\r\n /**\r\n * Custom HTML Template für Dropdown Button. Button muss den Marker \"ngContextmenuAnchor\" beinhalten, damit das Control korrekt funktioniert.\r\n */\r\n @Input()\r\n public buttontemplate: TemplateRef<any>;\r\n /**\r\n * Container an welchem die Position ausgerichtet wird. Aktuell wird nun Body Supported\r\n */\r\n @Input()\r\n public container: null | 'body' = 'body';\r\n /**\r\n * Extra CSS Klassen für das Control\r\n */\r\n @Input()\r\n public cssclass: string = '';\r\n /**\r\n * Definiert ob das Dropdown offen ist.\r\n */\r\n @Input()\r\n public isopen: boolean = false;\r\n /**\r\n * The preferred placement of the dropdown.\r\n *\r\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\r\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\r\n * `\"right-bottom\"`\r\n *\r\n * Accepts an array of strings or a string with space separated possible values.\r\n *\r\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\r\n *\r\n * Please see the [positioning overview](#/positioning) for more details.\r\n */\r\n @Input() public placement: PlacementArray = [\r\n 'bottom-left',\r\n 'bottom-right',\r\n 'top-left',\r\n 'top-right',\r\n ];\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param document HTML Document Element\r\n * @param ngZone Angular Zone Service\r\n * @param elementRef HTML Element des aktuellen Controls\r\n * @param renderer Angular Rendering Service\r\n * @param injector injector to resolve the icon service\r\n */\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private ngZone: NgZone,\r\n private elementRef: ElementRef<HTMLElement>,\r\n private renderer: Renderer2,\r\n injector: Injector\r\n ) {\r\n this.zoneSubscription = this.ngZone.onStable.subscribe(() => {\r\n this._positionMenu();\r\n });\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * icon for default context menü button\r\n */\r\n public get IconContextMenu(): string {\r\n return this.iconService.ContextMenuOpenIcon;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public onClick(targetElement) {\r\n const anchor: SacContextmenuAnchorCommon =\r\n this._anchor || this._anchorTemplate;\r\n\r\n if (\r\n this._menu &&\r\n !this._menu.nativeElement.contains(targetElement) &&\r\n !anchor.nativeElement.contains(targetElement)\r\n ) {\r\n this.close();\r\n }\r\n }\r\n\r\n /**\r\n * Schliesst das Dropdown\r\n */\r\n public close(): void {\r\n this._resetContainer();\r\n this.isopen = false;\r\n }\r\n\r\n /**\r\n * Event wenn Component entfernt wird.\r\n */\r\n public ngOnDestroy(): void {\r\n if (this.isopen) {\r\n this.close();\r\n }\r\n\r\n this.zoneSubscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Öffnet das Dropdown / Zeigt das Menü an.\r\n */\r\n public open(): void {\r\n this._applyContainer(this.container);\r\n this.isopen = true;\r\n }\r\n\r\n /**\r\n * Toggle von Dropdown\r\n */\r\n public toggle(): void {\r\n if (this.isopen) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Protected Methods\r\n\r\n /**\r\n * Setzt die Position des Menüs im Markup\r\n */\r\n protected _positionMenu() {\r\n const anchor: SacContextmenuAnchorCommon =\r\n this._anchor || this._anchorTemplate;\r\n\r\n if (anchor && this._menu) {\r\n positionElements(\r\n anchor.nativeElement,\r\n this.bodyContainer || this._menu.nativeElement,\r\n this.placement,\r\n this.container === 'body'\r\n );\r\n }\r\n }\r\n\r\n // #endregion Protected Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Setzt die Position des Menüs innerhalb der Seite. Die Ausrichtung passiert innerhalb der Seite\r\n * damit das Menü innerhalb eines Dialogs sauber funktionioniert.\r\n * @param container Definiert wo das Menü ausgerichtet wird. Im Moment nur BODY Supported\r\n */\r\n private _applyContainer(container: null | 'body' = null) {\r\n // Reset Classes on Container\r\n this._resetContainer();\r\n\r\n if (container === 'body') {\r\n const renderer = this.renderer;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n const bodyContainer = (this.bodyContainer =\r\n this.bodyContainer || renderer.createElement('div'));\r\n\r\n // Override some styles to have the positioning working\r\n renderer.setStyle(bodyContainer, 'position', 'absolute');\r\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\r\n renderer.setStyle(bodyContainer, 'z-index', '1050');\r\n\r\n renderer.appendChild(bodyContainer, dropdownMenuElement);\r\n renderer.appendChild(this.document.body, bodyContainer);\r\n }\r\n }\r\n\r\n /**\r\n * Setzt die CSS Klassen auf dem Menü Container auf den Standard zurück\r\n */\r\n private _resetContainer() {\r\n const renderer = this.renderer;\r\n if (this._menu) {\r\n const dropdownElement = this.elementRef.nativeElement;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n\r\n renderer.appendChild(dropdownElement, dropdownMenuElement);\r\n renderer.removeStyle(dropdownMenuElement, 'position');\r\n renderer.removeStyle(dropdownMenuElement, 'transform');\r\n }\r\n if (this.bodyContainer) {\r\n renderer.removeChild(this.document.body, this.bodyContainer);\r\n this.bodyContainer = null;\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * Base Context Menu Item\r\n */\r\n@Directive()\r\nexport class SacContextmenuItemCommon {}\r\n","import {\r\n Directive,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { SacContextmenuCommon } from './contextmenu';\r\nimport { SacContextmenuItemCommon } from './contextmenuitem';\r\n\r\n/**\r\n * Base Context Menu Button Item\r\n */\r\n@Directive()\r\nexport class SacContextmenuItemButtonCommon extends SacContextmenuItemCommon {\r\n /**\r\n * Constructor\r\n * @param contextmenu Instance of Context Menü.\r\n */\r\n constructor(protected contextmenu: SacContextmenuCommon) {\r\n super();\r\n }\r\n\r\n /**\r\n * Menu Item ist deaktiviert\r\n */\r\n protected _isdisabled: boolean = false;\r\n\r\n /**\r\n * Icon Column in Menü ist deaktiviert\r\n */\r\n protected _isicondisabled: boolean = false;\r\n\r\n /**\r\n * Icon für Menü\r\n */\r\n @Input()\r\n public icon: string;\r\n\r\n /**\r\n * css class for button styling\r\n */\r\n @Input()\r\n public cssclass: string = '';\r\n\r\n /**\r\n * Input Property für Styling des Buttons. Definiert die Css Klassen des Buttons\r\n */\r\n @Input()\r\n public iconstyle: string = '';\r\n\r\n /**\r\n * Image für Menü. Wird benötigt wenn das Icon für den Button ein File und nicht ein Icon Font ist.\r\n */\r\n @Input()\r\n public image: string;\r\n\r\n /**\r\n * Menu Item ist deaktiviert\r\n */\r\n @Input()\r\n public set isdisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isdisabled = v as boolean;\r\n } else {\r\n this._isdisabled = v === 'true';\r\n }\r\n }\r\n /**\r\n * Menu Item ist deaktiviert\r\n */\r\n public get isdisabled(): boolean | string {\r\n return this._isdisabled;\r\n }\r\n\r\n /**\r\n * Icon Column in Menü ist deaktiviert\r\n */\r\n @Input()\r\n public set isicondisabled(v: boolean | string) {\r\n if (v === null || v === undefined || typeof v === 'boolean') {\r\n this._isicondisabled = v as boolean;\r\n } else {\r\n this._isicondisabled = v === 'true';\r\n }\r\n }\r\n /**\r\n * Icon Column in Menü ist deaktiviert\r\n */\r\n public get isicondisabled(): boolean | string {\r\n return this._isicondisabled;\r\n }\r\n\r\n /**\r\n * Text für Menü Item.\r\n */\r\n @Input()\r\n public text: string;\r\n\r\n /**\r\n * Event wenn auf den Button geklickt wird\r\n */\r\n @Output()\r\n clicked: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /**\r\n * Die Methode wird das cklickaction Emitter aktivieren\r\n */\r\n public callaction(event: MouseEvent) {\r\n if (!this._isdisabled) {\r\n this.clicked.emit();\r\n this.contextmenu.close();\r\n }\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n Directive,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ISacFileBrowserService } from '../../interfaces/ISacFileBrowserService';\r\nimport { ISacIconService } from '../../interfaces/ISacIconService';\r\nimport { ISacLocalisationService } from '../../interfaces/ISacLocalisationService';\r\nimport { ISacValidationKeyService } from '../../interfaces/ISacValidationKeyService';\r\nimport {\r\n SACICON_SERVICE,\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacDefaultIconService,\r\n SacDefaultValidationKeyService,\r\n} from '../../services';\r\nimport {\r\n SACFILEBROWSER_SERVICE,\r\n SacDefaultFileBrowserService,\r\n} from '../../services/sac-filebrowser.service';\r\nimport { SacDefaultLocalisationService } from '../../services/sac-localisation.service';\r\nimport { IBrowserFile } from './models/browserfile';\r\nimport { IBrowserFileResponse } from './models/browserfileresponse';\r\nimport { IBrowserNode } from './models/browsernode';\r\nimport { IBrowserNodeResponse } from './models/browsernoderesponse';\r\n\r\n/**\r\n * Base Component für File Browser\r\n */\r\n@Directive()\r\nexport abstract class SacFileBrowserCommon implements OnInit {\r\n // #region Properties\r\n\r\n /**\r\n * Service für File Browser Zugriff (Backend)\r\n */\r\n private browserService: ISacFileBrowserService;\r\n /**\r\n * Icon service to receive icon classes for ui\r\n */\r\n private iconService: ISacIconService;\r\n /**\r\n * File welches beim starten des Browsers bereits selektiert ist\r\n */\r\n private preselecedfile: string | null = null;\r\n\r\n /**\r\n * Erlaubte Dateierweiterungen für Fileauswahl und Upload. Dateierweiterung mit Punkt und\r\n * getrennt durch Komma für mehr als eine Erweiterung (Example: \".jpg,.gif\")\r\n */\r\n @Input()\r\n public allowedtypes: string = '';\r\n /**\r\n * Erlaubt das löschen einer Datei\r\n */\r\n @Input()\r\n public allowfiledelete: boolean = true;\r\n /**\r\n * Erlaubt das umbenennen einer Datei\r\n */\r\n @Input()\r\n public allowfilerename: boolean = true;\r\n /**\r\n * Erlaubt den Upload von Dateien\r\n */\r\n @Input()\r\n public allowfileupload: boolean = true;\r\n /**\r\n * Erlaubt das erstellen eines neuen Ordners\r\n */\r\n @Input()\r\n public allowfoldercreate: boolean = true;\r\n /**\r\n * Erlaubt das löschen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderdelete: boolean = true;\r\n /**\r\n * Erlaubt das Umbenennen eines Ordners\r\n */\r\n @Input()\r\n public allowfolderrename: boolean = true;\r\n /**\r\n * URL für Backend API\r\n */\r\n @Input()\r\n public apiurl: string;\r\n /**\r\n * Output Emitter wenn File selektiert wird.\r\n */\r\n @Output()\r\n public file: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * Service für Error Localisation\r\n */\r\n public lngResourceService: ISacLocalisationService;\r\n /**\r\n * Root Node Item für Tree\r\n */\r\n public rootNode: IBrowserNode = {\r\n Name: '',\r\n ChildNodes: [],\r\n Files: [],\r\n IsExpanded: true,\r\n IsEditMode: false,\r\n IsNewNode: false,\r\n Path: '',\r\n };\r\n /**\r\n * Selected File Name\r\n */\r\n public selectedFile: string;\r\n /**\r\n * Selected File Item\r\n */\r\n public selectedFileItem: IBrowserFile = null;\r\n /**\r\n * Selected Node Item\r\n */\r\n public selectedNode: IBrowserNode = null;\r\n /**\r\n * Liste von Uploads\r\n */\r\n public uploads: string[] = [];\r\n /**\r\n * Service to receive standard validation message keys and texts\r\n */\r\n public validationKeyService: ISacValidationKeyService;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param httpclient Angular HTTP Client\r\n * @param injector Service Injector\r\n */\r\n constructor(httpclient: HttpClient, injector: Injector) {\r\n this.browserService = injector.get(\r\n SACFILEBROWSER_SERVICE,\r\n new SacDefaultFileBrowserService(httpclient)\r\n );\r\n this.validationKeyService = injector.get(\r\n SACVALIDATIONKEY_SERVICE,\r\n new SacDefaultValidationKeyService()\r\n );\r\n this.lngResourceService = injector.get(\r\n SACLOCALISATION_SERVICE,\r\n new SacDefaultLocalisationService(this.validationKeyService)\r\n );\r\n\r\n this.iconService = injector.get(\r\n SACICON_SERVICE,\r\n new SacDefaultIconService()\r\n );\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Setzt den Seleced Node über den Pfad\r\n */\r\n @Input()\r\n public set selectedfile(v: string | null) {\r\n const selectednode = this.findSelectedNodeByPath(this.rootNode, v);\r\n\r\n if (selectednode !== null) {\r\n this.selectNode(selectednode);\r\n }\r\n\r\n this.preselecedfile = v;\r\n }\r\n\r\n /**\r\n * CSS icon class for delete icon\r\n * @returns css class with icon\r\n */\r\n public get iconDelete(): string {\r\n return this.iconService.BrowserComponentDeleteIcon;\r\n }\r\n\r\n /**\r\n * CSS icon class for edit icon\r\n * @returns css class with icon\r\n */\r\n public get iconEdit(): string {\r\n return this.iconService.BrowserComponentEditIcon;\r\n }\r\n\r\n /**\r\n * CSS icon for folders in tree there are collabsed\r\n * @returns css class with icon\r\n */\r\n public get iconFolderCollabsed(): string {\r\n return this.iconService.BrowserComponentFolderClosedIcon;\r\n }\r\n\r\n /**\r\n * CSS icon class for folders without subfolders\r\n * @returns css class with icon\r\n */\r\n public get iconFolderEmpty(): string {\r\n return this.iconService.BrowserComponentFolderEmptyIcon;\r\n }\r\n\r\n /**\r\n * CSS icon for new folders action\r\n * @returns css class with icon\r\n */\r\n public get iconFolderNew(): string {\r\n return this.iconService.BrowserComponentFolderNewIcon;\r\n }\r\n\r\n /**\r\n * CSS icon for folders in tree there are expanded\r\n * @returns css class with icon\r\n */\r\n public get iconFolderOpen(): string {\r\n return this.iconService.BrowserComponentFolderOpenIcon;\r\n }\r\n\r\n /**\r\n * CSS icon class for refresh icon\r\n * @returns css class with icon\r\n */\r\n public get iconRefresh(): string {\r\n return this.iconService.BrowserComponentRefreshIcon;\r\n }\r\n\r\n /**\r\n * Getter für Selected File. Ist an Input Property gebunden\r\n */\r\n public get selectedfile(): string | null {\r\n if (this.selectFile && this.selectFile.length > 0) {\r\n return this.selectedFile;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * HostListener welcher den Edit Mode bei allen Files und Nodes beendet.\r\n */\r\n @HostListener('document:click', ['$event.target'])\r\n /**\r\n * Click Event\r\n */\r\n public exitEditMode(targetElement): void {\r\n if (this.selectedNode) {\r\n this.selectedNode.Files.forEach((itm) => (itm.IsEditMode = false));\r\n\r\n if (\r\n !this.selectedNode ||\r\n this.selectedNode.Name === null ||\r\n this.selectedNode.Name.length === 0\r\n ) {\r\n this.clearNewChildNodes(this.rootNode);\r\n }\r\n }\r\n\r\n this.resetNodeEditMode(null);\r\n }\r\n\r\n /**\r\n * Löscht ein File\r\n * @param file File welches gelöscht werden soll\r\n */\r\n public deleteFile(file: IBrowserFile): void {\r\n this.confirmDeleteFile(file).subscribe((confirm) => {\r\n if (confirm) {\r\n this.browserService\r\n .DeleteFile(\r\n this.apiurl,\r\n this.selectedNode.Path + '/' + file.Filename,\r\n this.allowedtypes\r\n )\r\n .subscribe((result: IBrowserFileResponse) => {\r\n this.selectedNode.Files = result.Files;\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Löscht einen Node\r\n * @param node Node welcher gelöscht werden soll\r\n */\r\n public deleteNode(node: IBrowserNode): void {\r\n this.confirmDeleteNode(node).subscribe((confirm) => {\r\n if (confirm) {\r\n this.browserService\r\n .DeleteNode(this.apiurl, node.Path)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n const parentNode = this.findParentNode(this.rootNode, node);\r\n parentNode.ChildNodes = result.Node.ChildNodes;\r\n\r\n this.rootNode.ChildNodes.forEach((itm) => {\r\n this.fillPath(itm, '');\r\n });\r\n\r\n this.selectNode(parentNode);\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Setzt ein File in den Edit Mode\r\n * @param file File welches in den Edit Mode gesetzt werden soll\r\n */\r\n public editFile(file: IBrowserFile): void {\r\n file.IsEditMode = true;\r\n }\r\n\r\n /**\r\n * Setzt einen Node in den Edit Mode\r\n * @param node Node welcher bearbeitet werden soll\r\n */\r\n public editNode(node: IBrowserNode): void {\r\n node.IsEditMode = true;\r\n }\r\n\r\n /**\r\n * Erzeugt einen neuen Node im Tree\r\n * @param node Node unter welchem ein neuer Node erstellt werden soll\r\n */\r\n public newNode(node: IBrowserNode) {\r\n const item: IBrowserNode = {\r\n ChildNodes: [],\r\n Files: [],\r\n IsEditMode: false,\r\n IsExpanded: false,\r\n Name: '',\r\n Path: node.Path,\r\n IsNewNode: true,\r\n };\r\n\r\n node.ChildNodes.push(item);\r\n this.selectNode(item);\r\n this.editNode(item);\r\n }\r\n\r\n /**\r\n * Init Event der Komponente\r\n */\r\n public ngOnInit(): void {\r\n this.browserService\r\n .GetNode(this.apiurl, '', this.allowedtypes)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n this.rootNode = {\r\n Name: result.Node.Name,\r\n Files: result.Node.Files,\r\n ChildNodes: result.Node.ChildNodes,\r\n IsExpanded: true,\r\n IsEditMode: false,\r\n IsNewNode: false,\r\n Path: '/',\r\n };\r\n\r\n this.setPathToAllNodes();\r\n this.selectedNode = this.rootNode;\r\n\r\n // Selected File erneut setzen, wenn Property gesetzt wurde bevor Daten vom Service geladen wurden.\r\n if (this.preselecedfile !== null && this.preselecedfile.length > 0) {\r\n this.selectedfile = this.preselecedfile;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Aktualisiert den Node\r\n */\r\n public refreshNode(node: IBrowserNode): void {\r\n if (!node.IsExpanded) {\r\n this.switchExpandNode(node);\r\n }\r\n\r\n this.browserService\r\n .GetNode(this.apiurl, node.Path, this.allowedtypes)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n node.ChildNodes = result.Node.ChildNodes;\r\n node.Files = result.Node.Files;\r\n\r\n this.setPathToAllNodes();\r\n });\r\n }\r\n\r\n /**\r\n * Methode wenn eine Datei umbenannt werden soll\r\n * @param file File welches umbenannt werden soll\r\n * @param newFilename Neuer Dateiname\r\n */\r\n public renameFile(file: IBrowserFile, newFilename: string): void {\r\n file.IsEditMode = false;\r\n\r\n if (!newFilename || newFilename === null || newFilename.length === 0) {\r\n // Cancel, Invalid Filename\r\n return;\r\n }\r\n\r\n if (file.Filename !== newFilename) {\r\n this.browserService\r\n .RenameFile(\r\n this.apiurl,\r\n this.selectedNode.Path + '/' + file.Filename,\r\n newFilename,\r\n this.allowedtypes\r\n )\r\n .subscribe((result: IBrowserFileResponse) => {\r\n this.selectedNode.Files = result.Files;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn ein Node umbenannt werden soll\r\n * @param node Node welcher umbenannt werden soll\r\n * @param newFoldername Neuer Ordnername\r\n */\r\n public renameNode(node: IBrowserNode, newFoldername: string): void {\r\n node.IsEditMode = false;\r\n\r\n if (!node.IsNewNode) {\r\n if (\r\n !newFoldername ||\r\n newFoldername === null ||\r\n newFoldername.length === 0\r\n ) {\r\n // Cancel Rename. Invalid Foldername\r\n return;\r\n }\r\n\r\n if (node.Name !== newFoldername) {\r\n this.browserService\r\n .RenameNode(this.apiurl, node.Path, newFoldername)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n node.Name = result.Node.Name;\r\n\r\n this.setPathToAllNodes();\r\n });\r\n }\r\n } else {\r\n if (\r\n !newFoldername ||\r\n newFoldername === null ||\r\n newFoldername.length === 0\r\n ) {\r\n this.clearNewChildNodes(this.rootNode);\r\n return;\r\n }\r\n\r\n node.Name = newFoldername;\r\n node.IsNewNode = false;\r\n this.browserService\r\n .SaveNode(this.apiurl, node.Path, newFoldername)\r\n .subscribe((result: IBrowserNodeResponse) => {\r\n node.Name = result.Node.Name;\r\n node.Files = result.Node.Files;\r\n\r\n this.setPathToAllNodes();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Methode wenn ein File selektiert wird\r\n * @param file File welches selektiert wird\r\n */\r\n public selectFile(file: IBrowserFile) {\r\n if (!file.IsEditMode) {\r\n this.selectedNode.Files.forEach((itm) => (itm.IsEditMode = false));\r\n }\r\n\r\n if (!this.selectedNode.Path.endsWith('/')) {\r\n this.selectedFile = this.selectedNode.Path + '/' + file.Filename;\r\n } else {\r\n this.selectedFile = '/' + file.Filename;\r\n }\r\n\r\n this.selectedFileItem = file;\r\n this.file.emit(this.selectedFile);\r\n }\r\n\r\n /**\r\n * Methode wenn ein Node selektiert wird\r\n * @param node Node welcher selektiert werden soll\r\n */\r\n public selectNode(node: IBrowserNode): void {\r\n if (!node.IsExpanded) {\r\n this.switchExpandNode(node);\r\n }\r\n\r\n // Reset the Edit Mode in all Nodes\r\n this.resetNodeEditMode(null);\r\n\r\n if (!node.Files) {\r\n this.browserService\r\n .GetFiles(this.apiurl, node.Path, this.allowedtypes)\r\n .subscribe((result: IBrowserFileResponse) => {\r\n node.Files = result.Files;\r\n this.selectedNode = node;\r\n\r\n if (this.preselecedfile !== null && this.preselecedfile.length > 0) {\r\n const filename = this.preselecedfile.substring(\r\n this.preselecedfile.lastIndexOf('/') + 1\r\n );\r\n const file = node.Files.find((itm) => itm.Filename === filename);\r\n if (file) {\r\n this.selectFile(file);\r\n }\r\n }\r\n });\r\n } else {\r\n this.selectedNode = node;\r\n }\r\n }\r\n\r\n /**\r\n * Expand/Collabse Methode für Nodes\r\n * @param node Node welcher geöffnet oder geschlossen werden soll\r\n */\r\n public switchExpandNode(node: IBrowserNode): void {\r\n if (node.IsExpanded) {\r\n node.IsExpanded = false;\r\n } else {\r\n node.IsExpanded = true;\r\n }\r\n }\r\n\r\n /**\r\n * Methode die Aufgerufen werden muss, wenn ein Upload beendet ist.\r\n * @param param Parameter des hochgeladenen Files\r\n */\r\n public uploadComplete(node: IBrowserNode, uploadIdList: string[]): void {\r\n if (uploadIdList !== null) {\r\n uploadIdList.forEach((element) => {\r\n if (this.uploads.indexOf(element) < 0) {\r\n this.uploads.push(element);\r\n }\r\n });\r\n }\r\n\r\n const id = this.uploads.pop();\r\n if (id) {\r\n this.browserService\r\n .SaveFile(this.apiurl, node.Path, id, this.allowedtypes)\r\n .subscribe((result: IBrowserFileResponse) => {\r\n this.selectedNode.Files = result.Files;\r\n this.uploadedFileMoved(id);\r\n });\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Public Abstract Methods\r\n\r\n /**\r\n * Abstrakte Confirm Methode welche implementiert werden muss. Methode wird aufgerufen, wenn eine\r\n * Datei gelöscht werden soll.\r\n * @param file File für welches ein Delete Confirm eingefordert werden soll\r\n */\r\n public abstract confirmDeleteFile(file: IBrowserFile): Observable<boolean>;\r\n /**\r\n * Abstrakte Confirm Methode welche implementiert werden muss. Methode wird aufgerufen, wenn ein\r\n * Ordner gelöscht werden soll.\r\n * @param folder Ordern für welchen ein Delete Confirm eingefordert werden soll.\r\n */\r\n public abstract confirmDeleteNode(folder: IBrowserNode): Observable<boolean>;\r\n /**\r\n * Abstrakte Methode die Aufgerufen wird, wenn das Hochgeladene File aus dem Temp Folder in die\r\n * Struktur verschoben wurde.\r\n * @param uploadid ID des Uploads\r\n */\r\n public abstract uploadedFileMoved(uploadid: string): void;\r\n\r\n // #endregion Public Abstract Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * Rekursive Methode welche beim Node und all seinen Childs neue Nodes entfernt\r\n * @param node Node bei welchem alle neuen Nodes entfernt werden soll.\r\n */\r\n private clearNewChildNodes(node: IBrowserNode) {\r\n node.ChildNodes.forEach((itm) => {\r\n if (itm.IsNewNode) {\r\n node.ChildNodes.splice(node.ChildNodes.indexOf(itm));\r\n }\r\n });\r\n\r\n node.ChildNodes.forEach((itm) => this.clearNewChildNodes(itm));\r\n }\r\n\r\n /**\r\n * Methode welche den Pfad für einen Node erzeugt\r\n * @param node Node für welchen der Pfad erzeugt werden soll\r\n * @param parentPath Übergeordneter Pfad\r\n */\r\n private fillPath(node: IBrowserNode, parentPath: string) {\r\n node.Path = parentPath + '/' + node.Name;\r\n node.ChildNodes.forEach((itm) => {\r\n this.fillPath(itm, node.Path);\r\n });\r\n }\r\n\r\n /**\r\n * Sucht den übergeordneten Node im Tree\r\n * @param node Aktueller Node\r\n * @param nodeToFind Node welcher gefunden werden soll\r\n * @returns Node wenn er gefunden wurde, ansonsten wird NULL zurückgegeben\r\n */\r\n private findParentNode(\r\n node: IBrowserNode,\r\n nodeToFind: IBrowserNode\r\n ): IBrowserNode {\r\n if (node.ChildNodes.indexOf(nodeToFind) >= 0) {\r\n return node;\r\n }\r\n\r\n for (const child of node.ChildNodes) {\r\n const result = this.findParentNode(child, nodeToFind);\r\n if (result !== null) {\r\n return result;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Sucht einen Node gem. einem URL Pfad\r\n * @param node Node in welchem gesucht werden soll\r\n * @param path Pfad nach welchem gesucht wird\r\n * @returns Node welcher zum gesuchten Pfad passt. Wenn kein Node gefunden wird, wird NULL zurückgegeben\r\n */\r\n private findSelectedNodeByPath(\r\n node: IBrowserNode,\r\n path: string\r\n ): IBrowserNode {\r\n // Cancel wenn Pfad nicht definiert\r\n if (path === undefined || path === null) {\r\n return null;\r\n }\r\n\r\n // Pfad in Array splitten und Root Foldername setzen\r\n const pathArray = path.split('/');\r\n pathArray[0] = this.rootNode.Name;\r\n\r\n return this.findSelectedNodeByPathArray(node, pathArray, 0);\r\n }\r\n\r\n /**\r\n * Sucht einen Node gem. einem Array von Node Namen\r\n * @param node Node in welchem gesucht werden soll\r\n * @param path Array von Node Namen, welche die Hirarchy des Pfades abbilden\r\n * @param index Aktueller Index im PATH Array\r\n * @returns Node wenn einer gefunden wurde, ansonsten NULL\r\n */\r\n private findSelectedNodeByPathArray(\r\n node: IBrowserNode,\r\n path: string[],\r\n index: number\r\n ): IBrowserNode {\r\n // Check ob Ordner korrekt. Letzer Ordner zurückgeben. Path Last Index ist der Filename\r\n if (node.Name === path[index] && path.length - 2 === index) {\r\n return node;\r\n } else if (node.Name === path[index]) {\r\n // Expand Node\r\n node.IsExpanded = true;\r\n for (const item of node.ChildNodes) {\r\n const result = this.findSelectedNodeByPathArray(item, path, index + 1);\r\n\r\n if (result !== null) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Rekursive Methode welche beim Node und all seinen Childs den Edit Mode beendet.\r\n * @param node Node bei welchem der Edit Mode beendet werden soll\r\n */\r\n private resetNodeEditMode(node: IBrowserNode): void {\r\n if (node === null) {\r\n this.resetNodeEditMode(this.rootNode);\r\n } else {\r\n node.IsEditMode = false;\r\n\r\n if (node.ChildNodes) {\r\n node.ChildNodes.forEach((itm) => this.resetNodeEditMode(itm));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Setzt den Pfad in allen Nodes\r\n */\r\n private setPathToAllNodes() {\r\n this.rootNode.ChildNodes.forEach((itm) => {\r\n this.fillPath(itm, '');\r\n });\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n","import { IconType } from '../enums/IconType';\r\n\r\n/**\r\n * Model für Sprachen\r\n */\r\nexport class LanguageModel {\r\n /**\r\n * ISO Code zu Sprache\r\n */\r\n public IsoCode: string;\r\n /**\r\n * Icon für Sprache\r\n */\r\n public Icon: string;\r\n /**\r\n * Bezeichnung für Sprache\r\n */\r\n public Text: string;\r\n /**\r\n * Typ des Icons. Default ist Image\r\n */\r\n public IconType: IconType = IconType.Image;\r\n}\r\n","/*\r\n * Public API Surface of sac-controls-common\r\n */\r\nexport { SacButtonCommon } from './controls/buttons/button';\r\nexport { SacCheckboxCommon } from './controls/checkbox/checkbox';\r\nexport { SacRadiobuttonCommon } from './controls/checkbox/radiobutton';\r\nexport { SacRadiobuttonsCommon } from './controls/checkbox/radiobuttons';\r\nexport { SacDialogCommon } from './controls/dialog/dialog';\r\nexport { SacFormCommon } from './controls/form/form';\r\nexport { SacFormLayoutCommon } from './controls/layout/formlayout';\r\nexport {\r\n SacDropdownCommon,\r\n SacDropdownOptionCommon,\r\n} from './controls/list/dropdown';\r\nexport {\r\n SacListboxCommon,\r\n SacListboxOptionCommon,\r\n} from './controls/list/listbox';\r\nexport { SacTabCommon } from './controls/tabs/tab';\r\nexport { SacTabItemCommon } from './controls/tabs/tabitem';\r\nexport { SacValidationSummaryCommon } from './controls/validation/validationsummary';\r\n\r\n// Input classes\r\nexport { SacInputCommon } from './controls/input/input';\r\nexport { SacInputAreaCommon } from './controls/input/inputarea';\r\nexport { SacInputCurrencyCommon } from './controls/input/inputcurrency';\r\nexport { SacInputDecimalCommon } from './controls/input/inputdecimal';\r\nexport { SacInputEmailCommon } from './controls/input/inputemail';\r\nexport { SacInputIntegerCommon } from './controls/input/inputinteger';\r\nexport { SacInputPasswordCommon } from './controls/input/inputpassword';\r\nexport { SacInputSearchCommon } from './controls/input/inputsearch';\r\n\r\n// Grid Classes\r\nexport { SacGridCommon } from './controls/grid/grid';\r\nexport { SacGridButtonCommon } from './controls/grid/gridbutton';\r\nexport { SacGridColumnCommon } from './controls/grid/gridcolumn';\r\nexport { SacGridColumnActionCommon } from './controls/grid/gridcolumnaction';\r\nexport { SacGridColumnBaseCommon } from './controls/grid/gridcolumnbase';\r\nexport { SacGridImageCommon } from './controls/grid/gridimage';\r\nexport * from './controls/grid/model';\r\nexport { SacPagingCommon } from './controls/grid/paging';\r\n\r\n// Datetime classes\r\nexport { SacDateCommon } from './controls/datetime/date';\r\nexport { SacDateSelectorCommon } from './controls/datetime/dateselector';\r\nexport { SacDateTimeCommon } from './controls/datetime/datetime';\r\nexport { SacTimeCommon } from './controls/datetime/time';\r\n\r\n// StaticLabel\r\nexport { SacStaticFormContainerCommon } from './controls/static/formcontainer';\r\nexport { SacStaticLabelCommon } from './controls/static/staticlabel';\r\n\r\n// Wizard\r\nexport { SacWizardCommon } from './controls/wizard/wizard';\r\nexport { SacWizardItemCommon } from './controls/wizard/wizarditem';\r\n\r\n// TinyMCE\r\nexport { SacTinyMceCommon } from './controls/tinymce/tinymce';\r\n\r\n// TreeView\r\nexport { SacTreeItemActionCommon } from './controls/treeview/ngtreeitemaction';\r\nexport { SacTreeViewCommon } from './controls/treeview/treeview';\r\nexport { SacTreeViewChildCommon } from './controls/treeview/treeviewchild';\r\n\r\n// Tooltip\r\nexport { SacTooltipCommon } from './controls/tooltip/tooltip';\r\n\r\n// Upload\r\nexport { SacUploadFile } from './common/baseuploadcontrol';\r\nexport { SacDropzoneMultipleCommon } from './controls/upload/dropzonemultiple';\r\nexport { SacDropzoneSingleCommon } from './controls/upload/dropzonesingle';\r\nexport { SacUploadMultipleCommon } from './controls/upload/uploadmultiple';\r\nexport { SacUploadSingleCommon } from './controls/upload/uploadsingle';\r\n\r\n// MultiLanguage classes\r\nexport { SacMultilanguageInputCommon } from './controls/multilanguage/multilanguageinput';\r\nexport { SacMultilanguageInputAreaCommon } from './controls/multilanguage/multilanguageinputarea';\r\n\r\n// Confirm Service\r\nexport { SacConfirmCommon } from './controls/confirm/confirm';\r\nexport { SacConfirmButton } from './controls/confirm/confirm.button';\r\nexport * from './controls/confirm/confirm.service';\r\nexport * from './interfaces/iconfirmcomponent';\r\n\r\n// Context Menu\r\nexport * from './controls/contextmenu/contextmenu';\r\nexport * from './controls/contextmenu/contextmenuanchor';\r\nexport * from './controls/contextmenu/contextmenucontainer';\r\nexport * from './controls/contextmenu/contextmenuitem';\r\nexport * from './controls/contextmenu/contextmenuitembutton';\r\n\r\n// File Browser\r\nexport { SacFileBrowserCommon } from './components/browser/browser';\r\nexport { IBrowserFile } from './components/browser/models/browserfile';\r\nexport { IBrowserNode } from './components/browser/models/browsernode';\r\n\r\n// Services\r\nexport * from './interfaces/ISacFileBrowserService';\r\nexport * from './interfaces/ISacIconService';\r\nexport * from './interfaces/ISacLanguageService';\r\nexport * from './interfaces/ISacLocalisationService';\r\nexport * from './interfaces/ISacValidationKeyService';\r\nexport {\r\n SACCONFIGURATION_SERVICE,\r\n SACFILEBROWSER_SERVICE,\r\n SACICON_SERVICE,\r\n SACLANGUAGE_SERVICE,\r\n SACLOCALISATION_SERVICE,\r\n SACVALIDATIONKEY_SERVICE,\r\n SacAbstractConfigurationService,\r\n SacAbstractFileBrowserService,\r\n SacAbstractIconService,\r\n SacAbstractLanguageService,\r\n SacAbstractLocalisationService,\r\n} from './services';\r\n\r\n// Export Interfaces\r\nexport * from './interfaces/iabstractcontrollabel';\r\nexport * from './interfaces/ISacLabelSizes';\r\n\r\n// Export Models\r\nexport * from './models/languagemodel';\r\n\r\n// Export Enums\r\nexport * from './enums/ButtonRoleType';\r\nexport * from './enums/ControlHeight';\r\nexport * from './enums/IconType';\r\n\r\n// Export Validators\r\nexport * from './validation';\r\n\r\n// Export of Modules\r\n\r\n// Export Utilities\r\nexport * from './utilities/convertion';\r\nexport * from './utilities/datatypes';\r\nexport * from './utilities/enums';\r\nexport * from './utilities/interpolation';\r\nexport * from './utilities/positioning';\r\n\r\n// Export Base Components for Developers\r\nexport * from './common/basedatetimecontrol';\r\nexport * from './common/baseinputcontrol';\r\nexport * from './common/baselistcontrol';\r\nexport * from './common/basemodelcontrol';\r\nexport * from './common/baseselectcontrol';\r\nexport * from './common/baseuploadcontrol';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SacFormLayoutCommon","moment","i1.SacRadiobuttonsCommon","i1","i1.SacFormCommon","i1.SacGridCommon","i1.SacContextmenuCommon"],"mappings":"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"}