spiderly 19.3.0 → 19.4.0-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -17
- package/fesm2022/spiderly.mjs +122 -85
- package/fesm2022/spiderly.mjs.map +1 -1
- package/lib/components/layout/layout.component.d.ts +5 -1
- package/lib/components/spiderly-data-table/spiderly-data-table.component.d.ts +14 -1
- package/package.json +1 -1
- package/styles/components/info-card/info-card.component.scss +60 -60
- package/styles/components/layout/profile-avatar/profile-avatar.component.scss +8 -8
- package/styles/components/layout/topbar/topbar.component.scss +38 -38
- package/styles/components/spiderly-data-table/spiderly-data-table.component.scss +48 -48
- package/styles/components/spiderly-data-view/spiderly-data-view.component.scss +55 -55
- package/styles/components/spiderly-panels/panel-body/panel-body.component.scss +8 -8
- package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +16 -16
- package/styles/components/spiderly-panels/spiderly-panel/spiderly-panel.component.scss +87 -87
- package/styles/controls/base-controls.scss +16 -16
- package/styles/controls/spiderly-checkbox/spiderly-checkbox.component.scss +22 -22
- package/styles/styles/layout/_content.scss +14 -14
- package/styles/styles/layout/_footer.scss +11 -11
- package/styles/styles/layout/_main.scss +34 -34
- package/styles/styles/layout/_menu.scss +137 -137
- package/styles/styles/layout/_mixins.scss +13 -13
- package/styles/styles/layout/_preloading.scss +47 -47
- package/styles/styles/layout/_responsive.scss +102 -102
- package/styles/styles/layout/_spiderly-controls.scss +14 -14
- package/styles/styles/layout/_topbar.scss +235 -235
- package/styles/styles/layout/_typography.scss +63 -63
- package/styles/styles/layout/_utils.scss +19 -19
- package/styles/styles/layout/_variables.scss +908 -908
- package/styles/styles/layout/layout.scss +11 -11
- package/styles/styles/shared.scss +483 -483
- package/styles/styles/styles.scss +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spiderly.mjs","sources":["../../../projects/spiderly/src/lib/components/required/required.component.ts","../../../projects/spiderly/src/lib/components/required/required.component.html","../../../projects/spiderly/src/lib/controls/base-control.ts","../../../projects/spiderly/src/lib/controls/base-dropdown-control.ts","../../../projects/spiderly/src/lib/controls/base-autocomplete-control.ts","../../../projects/spiderly/src/lib/components/spiderly-form-control/spiderly-form-control.ts","../../../projects/spiderly/src/lib/services/validator-abstract.service.ts","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.html","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.html","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.html","../../../projects/spiderly/src/lib/controls/spiderly-colorpicker/spiderly-colorpicker.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-colorpicker/spiderly-colorpicker.component.html","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.html","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.html","../../../projects/spiderly/src/lib/entities/base-entity.ts","../../../projects/spiderly/src/lib/services/helper-functions.ts","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.html","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.html","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.html","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.html","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.html","../../../projects/spiderly/src/lib/controls/spiderly-controls.module.ts","../../../projects/spiderly/src/lib/entities/is-authorized-for-save-event.ts","../../../projects/spiderly/src/lib/entities/namebook.ts","../../../projects/spiderly/src/lib/entities/security-entities.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panels.module.ts","../../../projects/spiderly/src/lib/services/config-base.service.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/errors/spiderly-error.ts","../../../projects/spiderly/src/lib/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/spiderly-message.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.ts","../../../projects/spiderly/src/lib/entities/init-company-auth-dialog-details.ts","../../../projects/spiderly/src/lib/services/auth-base.service.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.html","../../../projects/spiderly/src/lib/components/base-form/base-form copy.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.html","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.html","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.html","../../../projects/spiderly/src/lib/components/auth/login/login.component.ts","../../../projects/spiderly/src/lib/components/auth/login/login.component.html","../../../projects/spiderly/src/lib/components/footer/footer.component.ts","../../../projects/spiderly/src/lib/components/footer/footer.component.html","../../../projects/spiderly/src/lib/components/index-card/index-card.component.ts","../../../projects/spiderly/src/lib/components/index-card/index-card.component.html","../../../projects/spiderly/src/lib/components/info-card/info-card.component.ts","../../../projects/spiderly/src/lib/components/info-card/info-card.component.html","../../../projects/spiderly/src/lib/components/not-found/not-found.component.ts","../../../projects/spiderly/src/lib/components/not-found/not-found.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.html","../../../projects/spiderly/src/lib/enums/match-mode-enum-codes.ts","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.ts","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.html","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.html","../../../projects/spiderly/src/lib/components/spiderly-data-view/spiderly-data-view.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-view/spiderly-data-view.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.html","../../../projects/spiderly/src/lib/entities/init-top-bar-data.ts","../../../projects/spiderly/src/lib/services/app-layout-base.service.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.service.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.html","../../../projects/spiderly/src/lib/components/layout/profile-avatar/profile-avatar.component.ts","../../../projects/spiderly/src/lib/components/layout/profile-avatar/profile-avatar.component.html","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.html","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.html","../../../projects/spiderly/src/lib/components/layout/layout.component.ts","../../../projects/spiderly/src/lib/components/layout/layout.component.html","../../../projects/spiderly/src/lib/entities/codebook.ts","../../../projects/spiderly/src/lib/entities/last-menu-icon-index-clicked.ts","../../../projects/spiderly/src/lib/entities/lazy-load-selected-ids-result.ts","../../../projects/spiderly/src/lib/entities/menuchangeevent.ts","../../../projects/spiderly/src/lib/entities/mime-type.ts","../../../projects/spiderly/src/lib/entities/primeng-option.ts","../../../projects/spiderly/src/lib/entities/simple-save-result.ts","../../../projects/spiderly/src/lib/entities/filter-sort-meta.ts","../../../projects/spiderly/src/lib/entities/filter.ts","../../../projects/spiderly/src/lib/entities/filter-rule.ts","../../../projects/spiderly/src/lib/entities/paginated-result.ts","../../../projects/spiderly/src/lib/enums/security-enums.ts","../../../projects/spiderly/src/lib/enums/verification-type-codes.ts","../../../projects/spiderly/src/lib/guards/auth.guard.ts","../../../projects/spiderly/src/lib/guards/not-auth.guard.ts","../../../projects/spiderly/src/lib/handlers/spiderly-error-handler.ts","../../../projects/spiderly/src/lib/interceptors/http-loading.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/json-parser.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/jwt.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/unauthorized.interceptor.ts","../../../projects/spiderly/src/lib/services/app-initializer.ts","../../../projects/spiderly/src/lib/services/spiderly-transloco-loader.ts","../../../projects/spiderly/src/lib/directives/template-type.directive.ts","../../../projects/spiderly/src/public-api.ts","../../../projects/spiderly/src/spiderly.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'required',\r\n templateUrl: './required.component.html',\r\n styles: [],\r\n standalone: true,\r\n})\r\nexport class RequiredComponent {\r\n\r\n constructor() {}\r\n\r\n}","<span style=\"color: red; margin-left: 4px;\">*</span>","import {\r\n Component, Input,\r\n} from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyFormControl } from '../components/spiderly-form-control/spiderly-form-control';\r\n \r\n @Component({\r\n selector: 'base-control',\r\n template: '',\r\n styles: [],\r\n standalone: false\r\n})\r\n export class BaseControl {\r\n @Input() control: SpiderlyFormControl<any>; // If you name it formControl: https://stackoverflow.com/a/54755671/21209982\r\n @Input() disabled: boolean = false;\r\n @Input() showLabel: boolean = true;\r\n @Input() showRequired: boolean = true;\r\n @Input() label: string = null; // NgModel/Want custom translation\r\n @Input() controlValid: boolean = true; // NgModel\r\n @Input() placeholder: string = '';\r\n @Input() showTooltip: boolean = false;\r\n @Input() tooltipText: string = null;\r\n @Input() tooltipIcon: string = 'pi pi-info-circle';\r\n errorMessageTooltipEvent: 'hover' | 'focus';\r\n \r\n constructor(\r\n protected translocoService: TranslocoService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n if(this.control != null && this.disabled == true)\r\n this.control.disable();\r\n\r\n this.errorMessageTooltipEvent = window.innerWidth > 1000 ? 'hover' : 'focus'\r\n }\r\n\r\n ngAfterViewInit(){\r\n\r\n }\r\n\r\n getTranslatedLabel(): string{\r\n return this.label ?? this.control.labelForDisplay;\r\n }\r\n\r\n getValidationErrrorMessages(){\r\n if(this.control?.errors && this.control?.dirty){\r\n // It should always be one error message for single form control, \r\n // also i don't need to reassign it to null because it will be shown only when control.valid == false\r\n return this.control.errors['_'];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n }","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n } from '@angular/core';\r\nimport { BaseControl } from './base-control';\r\nimport { PrimengOption } from '../entities/primeng-option';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Namebook } from '../entities/namebook';\r\n\r\n @Component({\r\n selector: 'base-dropdown-control',\r\n template: '',\r\n styles: [],\r\n standalone: false\r\n})\r\n export class BaseDropdownControl extends BaseControl {\r\n @Input() options: Namebook[];\r\n @Input() showAddon: boolean = false;\r\n @Input() addonIcon: string = 'pi pi-ellipsis-h';\r\n @Input() override placeholder: string = this.translocoService.translate('SelectFromTheList');\r\n @Output() onButtonClick: EventEmitter<null> = new EventEmitter();\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) {\r\n super(translocoService);\r\n }\r\n \r\n dropdownMarkAsDirty(){\r\n this.control.markAsDirty();\r\n }\r\n\r\n addonClick(){\r\n this.onButtonClick.next(null);\r\n }\r\n }","import {\r\n Component,\r\n EventEmitter,\r\n Output,\r\n } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { BaseDropdownControl } from './base-dropdown-control';\r\n\r\n @Component({\n selector: 'base-autocomplete-control',\n template: '',\n styles: [],\n standalone: false\n})\r\n export class BaseAutocompleteControl extends BaseDropdownControl {\r\n @Output() onTextInput: EventEmitter<AutoCompleteCompleteEvent> = new EventEmitter();\r\n }","import { FormArray, FormControl, FormControlOptions, FormGroup, ValidatorFn } from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseEntity, SchemaAwareConstructor } from '../../entities/base-entity';\r\nimport { Namebook } from '../../entities/namebook';\r\nimport { BaseFormService } from '../../services/base-form.service';\r\n\r\nexport interface SpiderlyValidatorFn extends ValidatorFn {\r\n hasNotEmptyRule?: boolean;\r\n}\r\n\r\n// It's made like generic type because of <number>, <string> etc. not to put class like User.\r\nexport class SpiderlyFormControl<T = any> extends FormControl<T> {\r\n public label: string;\r\n public labelForDisplay: string;\r\n public required: boolean;\r\n public parentClassName: string;\r\n public type: string; // number, Date, string, Namebook[], number[]...\r\n private _spiderlyValidator: SpiderlyValidatorFn | null;\r\n\r\n constructor(value: any, opts: FormControlOptions=null, required:boolean=false) {\r\n opts = opts ?? {updateOn: 'blur'};\r\n super(value, opts);\r\n this.required = required;\r\n }\r\n\r\n override getRawValue(): T { // Doing this because .value gets only not disabled values\r\n return super.getRawValue() as T;\r\n }\r\n\r\n public override get validator(): SpiderlyValidatorFn | null {\r\n return this._spiderlyValidator;\r\n }\r\n\r\n public override set validator(validator: SpiderlyValidatorFn | null) {\r\n this._spiderlyValidator = validator;\r\n this.setValidators(validator); \r\n }\r\n}\r\n\r\ntype SpiderlyControlsOfType<TValue> = {\r\n [P in keyof TValue]:\r\n TValue[P] extends (infer U)[]\r\n ? U extends Namebook | string | number | Date | boolean\r\n ? SpiderlyFormControl<TValue[P]>\r\n : SpiderlyFormArray<U>\r\n : TValue[P] extends Date\r\n ? SpiderlyFormControl<TValue[P]>\r\n : TValue[P] extends object\r\n ? SpiderlyFormGroup<TValue[P]>\r\n : SpiderlyFormControl<TValue[P]>;\r\n};\r\n\r\nexport class SpiderlyFormGroup<TValue = any> extends FormGroup {\r\n declare controls: SpiderlyControlsOfType<TValue>;\r\n\r\n constructor(controls: SpiderlyControlsOfType<TValue>) {\r\n super(controls);\r\n }\r\n\r\n override getRawValue(): TValue { // Doing this because .value gets only not disabled values\r\n return super.getRawValue() as TValue;\r\n }\r\n\r\n public targetClass: SchemaAwareConstructor<TValue>;\r\n public trackingId: string = crypto.randomUUID();\r\n public name?: string; // Using for nested form groups\r\n public saveObservableMethod?: (saveBody: any) => Observable<any>;\r\n public initSaveBody?: () => BaseEntity = () => null;\r\n public controlNamesFromHtml?: string[] = [];\r\n\r\n public getControl = <TKey extends Extract<keyof TValue, string>>(formControlName: TKey): SpiderlyControlsOfType<TValue>[TKey] => {\r\n if(this.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n this.controlNamesFromHtml.push(formControlName);\r\n\r\n let formControl = this.controls[formControlName];\r\n if (formControl == null) {\r\n console.error(`Spiderly: The property ${formControlName} in the form group ${this.targetClass.typeName} doesn't exist`);\r\n return null;\r\n }\r\n \r\n return formControl;\r\n }\r\n}\r\n\r\nexport class SpiderlyFormArray<TValue extends BaseEntity = any> extends FormArray {\r\n constructor(\r\n controls: SpiderlyControlsOfType<TValue>[],\r\n private translocoService: TranslocoService,\r\n private baseFormService: BaseFormService\r\n ) {\r\n super(controls);\r\n }\r\n\r\n public label: string;\r\n public labelForDisplay: string;\r\n override value: TValue[]; // There is no getRawValue in FormArray\r\n public required: boolean;\r\n public formGroupInitialValues: Partial<TValue> = {};\r\n public targetClass: SchemaAwareConstructor<TValue>;\r\n public lastMenuIconIndexClicked: number;\r\n\r\n public getCrudMenuForOrderedData = () => {\r\n let crudMenuForOrderedData: MenuItem[] = [\r\n {label: this.translocoService.translate('Remove'), icon: 'pi pi-minus', command: () => {\r\n this.baseFormService.removeFormControlFromTheFormArray(this, this.lastMenuIconIndexClicked);\r\n }},\r\n {label: this.translocoService.translate('AddAbove'), icon: 'pi pi-arrow-up', command: () => {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n this, this.targetClass, this.formGroupInitialValues, this.lastMenuIconIndexClicked\r\n );\r\n }},\r\n {label: this.translocoService.translate('AddBelow'), icon: 'pi pi-arrow-down', command: () => {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n this, this.targetClass, this.formGroupInitialValues, this.lastMenuIconIndexClicked + 1\r\n );\r\n }},\r\n ];\r\n\r\n return crudMenuForOrderedData;\r\n };\r\n\r\n public addNewFormGroup = (index: number) => {\r\n this.baseFormService.addNewFormGroupToFormArray(\r\n this,\r\n this.targetClass,\r\n this.formGroupInitialValues,\r\n index\r\n );\r\n }\r\n\r\n public getFormGroups = () => {\r\n return this.controls as SpiderlyFormGroup<TValue>[]\r\n }\r\n\r\n disableAllFormControls(){\r\n this.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\r\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\r\n segmentationItemFormGroup.controls[key].disable();\r\n });\r\n });\r\n }\r\n\r\n enableAllFormControls(){\r\n this.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\r\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\r\n segmentationItemFormGroup.controls[key].enable();\r\n });\r\n });\r\n }\r\n}","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyValidatorFn } from \"../components/spiderly-form-control/spiderly-form-control\";\r\nimport { ValidationErrors } from \"@angular/forms\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class ValidatorAbstractService {\r\n\r\n constructor(\r\n protected translocoService: TranslocoService\r\n ) {\r\n }\r\n\r\n abstract setValidator (formControl: SpiderlyFormControl, className: string): SpiderlyValidatorFn;\r\n\r\n isArrayEmpty = (control: SpiderlyFormControl): SpiderlyValidatorFn => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control.value;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n return validator;\r\n }\r\n\r\n notEmpty = (control: SpiderlyFormControl): void => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control.value;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value !== '';\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n control.validator = validator;\r\n control.updateValueAndValidity();\r\n }\r\n \r\n isFormArrayEmpty = (control: SpiderlyFormArray): SpiderlyValidatorFn => {\r\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\r\n const value = control;\r\n \r\n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\r\n \r\n const arrayValid = notEmptyRule;\r\n \r\n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\r\n };\r\n validator.hasNotEmptyRule = true;\r\n control.required = true;\r\n return validator;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { AutoCompleteCompleteEvent, AutoCompleteModule, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { ValidatorAbstractService } from '../../services/validator-abstract.service';\r\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\r\nimport { SpiderlyFormControl } from '../../components/spiderly-form-control/spiderly-form-control';\r\nimport { Namebook } from '../../entities/namebook';\r\n\r\n@Component({\r\n selector: 'spiderly-autocomplete',\r\n templateUrl: './spiderly-autocomplete.component.html',\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n AutoCompleteModule,\r\n InputGroupAddonModule,\r\n InputGroupModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n @Input() appendTo: any = 'body';\r\n @Input() showClear: boolean = true;\r\n @Input() emptyMessage: string;\r\n @Input() displayName: string; // Added because when we initialize the object options are null\r\n helperFormControl = new SpiderlyFormControl<Namebook>(null, {updateOn: 'change'});\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n private validatorService: ValidatorAbstractService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n\r\n this.helperFormControl.label = this.control.label;\r\n this.validatorService.setValidator(this.helperFormControl, this.control.parentClassName);\r\n \r\n if (this.control.value != null)\r\n this.helperFormControl.setValue({displayName: this.displayName, id: this.control.value});\r\n\r\n if (this.emptyMessage == null) {\r\n this.emptyMessage = this.translocoService.translate('EmptyMessage');\r\n }\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent){\r\n this.onTextInput.next(event);\r\n }\r\n\r\n select(event: AutoCompleteSelectEvent){\r\n const selectedOption: Namebook = event.value;\r\n this.control.setValue(selectedOption.id);\r\n this.helperFormControl.setValue({displayName: selectedOption.displayName, id: selectedOption.id});\r\n }\r\n\r\n clear(){\r\n this.control.setValue(null);\r\n this.helperFormControl.setValue(null);\r\n }\r\n\r\n autocompleteMarkAsDirty(){\r\n this.dropdownMarkAsDirty();\r\n this.helperFormControl.markAsDirty();\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"> <!-- By passing an empty string we remove the label entirely -->\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n \r\n <!-- Don't support p-inputgroup -->\r\n <p-autocomplete\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"helperFormControl\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"showClear\"\r\n (onHide)=\"autocompleteMarkAsDirty()\"\r\n (onSelect)=\"select($event)\"\r\n (onClear)=\"clear()\"\r\n [completeOnFocus]=\"true\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width':'100%'}\"\r\n [appendTo]=\"appendTo\"\r\n [emptyMessage]=\"emptyMessage\"\r\n [lazy]=\"true\"\r\n optionLabel=\"displayName\"\r\n ></p-autocomplete>\r\n </div>\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-calendar',\r\n templateUrl: './spiderly-calendar.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n DatePickerModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyCalendarComponent extends BaseControl implements OnInit {\r\n @Input() showTime: boolean = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n setDate(event:Date) { \r\n \r\n }\r\n}\r\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\" style=\"display: flex; align-items: center;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 8px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n <p-datepicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n dateFormat=\"dd.mm.yy.\"\r\n iconDisplay=\"input\" \r\n [showIcon]=\"true\" \r\n [showTime]=\"showTime\"\r\n (onSelect)=\"setDate($event)\"\r\n appendTo=\"body\"\r\n [fluid]=\"true\"\r\n />\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { CheckboxChangeEvent, CheckboxModule } from 'primeng/checkbox';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-checkbox',\r\n templateUrl: './spiderly-checkbox.component.html',\r\n styleUrl: './spiderly-checkbox.component.scss',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CheckboxModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyCheckboxComponent extends BaseControl implements OnInit {\r\n @Input() fakeLabel = true;\r\n @Input() initializeToFalse = false;\r\n @Input() inlineLabel = false;\r\n @Output() onChange = new EventEmitter<CheckboxChangeEvent>();\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n if (this.initializeToFalse == true)\r\n this.control.setValue(false);\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n change = (event: CheckboxChangeEvent) => {\r\n this.onChange.next(event);\r\n }\r\n}\r\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <div style=\"margin-top: 0.5rem; position: relative;\"> <!-- The margin-top is intentional: it vertically aligns the checkbox with other input controls that have greater height. -->\r\n <p-checkbox\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [formControl]=\"control\"\r\n [value]=\"inlineLabel ? label : null\"\r\n [id]=\"label\"\r\n [binary]=\"true\"\r\n (onChange)=\"change($event)\"\r\n />\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'spiderly-colorpicker',\r\n templateUrl: './spiderly-colorpicker.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ColorPickerModule,\r\n InputTextModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyColorPickerComponent extends BaseControl implements OnInit {\r\n @Input() showInputTextField: boolean = true;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.control.valueChanges.subscribe((value) => {\r\n this.control.setValue(value, { emitEvent: false }); // Preventing infinite loop\r\n });\r\n\r\n if (this.control.value == null)\r\n this.placeholder = this.translocoService.translate('ColorPickerPlaceholder');\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <div style=\"display: flex; gap: 10px;\">\r\n <input\r\n *ngIf=\"control && showInputTextField\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [fluid]=\"true\"\r\n />\r\n <p-colorpicker\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n appendTo=\"body\"\r\n ></p-colorpicker>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { BaseDropdownControl } from '../base-dropdown-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { DropdownChangeEvent } from 'primeng/dropdown';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-dropdown',\r\n templateUrl: './spiderly-dropdown.component.html',\r\n styles: [],\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n SelectModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n ]\r\n})\r\nexport class SpiderlyDropdownComponent extends BaseDropdownControl implements OnInit {\r\n @Input() isBooleanPicker: boolean = false;\r\n @Output() onChange = new EventEmitter<DropdownChangeEvent>();\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n if (this.isBooleanPicker) {\r\n this.options = [\r\n {displayName: this.translocoService.translate('True'), id: true},\r\n {displayName: this.translocoService.translate('False'), id: false},\r\n {displayName: this.translocoService.translate('Empty'), id: null},\r\n ]\r\n }\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n change(event: DropdownChangeEvent){\r\n this.onChange.next(event);\r\n }\r\n\r\n}\r\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\r\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <p-select\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [options]=\"options\"\r\n optionLabel=\"displayName\"\r\n optionValue=\"id\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n (onChange)=\"change($event)\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n \r\n</div>","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Editor, EditorModule } from 'primeng/editor';\r\nimport { Tooltip, TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-editor',\r\n templateUrl: './spiderly-editor.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n EditorModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyEditorComponent extends BaseControl implements OnInit {\r\n @ViewChild(Editor) editor: Editor;\r\n @ViewChild(Tooltip) tooltip: Tooltip;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n onClick(){\r\n let editableArea: HTMLElement = this.editor.el.nativeElement.querySelector('.ql-editor');\r\n \r\n editableArea.onblur = () => {\r\n this.control.markAsDirty();\r\n this.tooltip.deactivate();\r\n };\r\n\r\n editableArea.onfocus = () => {\r\n if (this.errorMessageTooltipEvent == 'focus' ) {\r\n this.tooltip.activate();\r\n }\r\n };\r\n\r\n editableArea.onmouseover = () => {\r\n if (this.errorMessageTooltipEvent == 'hover' ) {\r\n this.tooltip.activate();\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n\r\n <!-- Disable doesn't work on this control -->\r\n <p-editor\r\n *ngIf=\"control\"\r\n [formControl]=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [readonly]=\"control.disabled\"\r\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\r\n [id]=\"control.label\"\r\n [placeholder]=\"placeholder\"\r\n (click)=\"onClick()\"\r\n [style]=\"{ height: '320px' }\"\r\n ></p-editor>\r\n\r\n</div>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\nimport { Subject, Subscription, throttleTime } from \"rxjs\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'spiderly-button-base',\r\n template: ``,\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ]\r\n})\r\nexport class SpiderlyButtonBaseComponent {\r\n @Input() icon: string;\r\n @Input() label: string;\r\n @Input() outlined: boolean = false;\r\n @Input() rounded: boolean = false;\r\n @Input() styleClass: string;\r\n @Input() routerLink: string;\r\n @Input() style: { [klass: string]: any; };\r\n @Input() class: string;\r\n @Input() severity: 'success' | 'info' | 'warn' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined;\r\n @Input() size: 'small' | 'large' | undefined;\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onClick = new EventEmitter<Event>();\r\n private clickSubject = new Subject<Event>(); // Internal subject to handle click events.\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private router: Router\r\n ) {\r\n \r\n }\r\n\r\n ngOnInit(){\r\n this.subscription = this.clickSubject\r\n .pipe(throttleTime(500))\r\n .subscribe((event: Event) => this.onClick.emit(event));\r\n }\r\n\r\n handleClick = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.routerLink !== undefined) {\r\n this.router.navigate([this.routerLink]);\r\n }\r\n else{\r\n this.clickSubject.next(event);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\r\n\r\n@Component({\r\n selector: 'spiderly-button',\r\n templateUrl: './spiderly-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ]\r\n})\r\nexport class SpiderlyButtonComponent extends SpiderlyButtonBaseComponent {\r\n\r\n // constructor() {\r\n // super();\r\n \r\n // }\r\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\r\n\r\n}","<p-button \r\n(onClick)=\"handleClick($event)\" \r\n[label]=\"label\" \r\n[icon]=\"icon\" \r\n[outlined]=\"outlined\" \r\n[styleClass]=\"styleClass\" \r\n[severity]=\"severity\" \r\n[rounded]=\"rounded\"\r\n[style]=\"style\"\r\n[class]=\"class\"\r\n[disabled]=\"disabled\"\r\n[size]=\"size\"\r\n[type]=\"type\"\r\n>\r\n <ng-content></ng-content>\r\n</p-button>","interface PropertySchema {\r\n type: string; // Use a string or an enum to represent the type (e.g., 'string', 'number', 'Date')\r\n nestedConstructor?: SchemaAwareConstructor<any>;\r\n isSaveBodyMainDTO?: boolean;\r\n // Add other metadata you might need (e.g., isRequired, minLength, etc.)\r\n}\r\n\r\nexport interface ClassSchema {\r\n [propertyName: string]: PropertySchema;\r\n}\r\n\r\n// A type that represents a class constructor with a static 'schema' property\r\nexport type SchemaAwareConstructor<T> = {\r\n new (...args: any[]): T;\r\n readonly schema: ClassSchema; // The static property holding the schema\r\n readonly typeName: string; // 'typeName' can't be named 'name' because of the conflict with the Function.name\r\n};\r\n\r\nexport class BaseEntity {\r\n \r\n}","import { HttpResponse } from \"@angular/common/http\";\r\nimport * as FileSaver from 'file-saver';\r\nimport 'reflect-metadata';\r\nimport { map, Observable } from 'rxjs';\r\nimport { Action, Column } from \"../components/spiderly-data-table/spiderly-data-table.component\";\r\nimport { SpiderlyTab } from \"../components/spiderly-panels/panel-header/panel-header.component\";\r\nimport { Codebook } from \"../entities/codebook\";\r\nimport { Filter } from \"../entities/filter\";\r\nimport { Namebook } from \"../entities/namebook\";\r\nimport { PrimengOption } from \"../entities/primeng-option\";\r\n\r\n// Helper function for PrecisionScale validation (to be added in the TypeScript output):\r\nexport function validatePrecisionScale(value: any, precision: number, scale: number, ignoreTrailingZeros: boolean): boolean {\r\n if (typeof value !== 'number') return false;\r\n const [integerPart, decimalPart] = value.toString().split('.');\r\n if (integerPart.length > precision - scale) return false;\r\n if (decimalPart && decimalPart.length > scale) return false;\r\n if (!ignoreTrailingZeros && decimalPart && decimalPart.replace(/0+$/, '').length > scale) return false;\r\n return true;\r\n}\r\n\r\nexport function getMimeTypeForFileName(fileName: string): string {\r\n const mimeTypes: { [key: string]: string } = {\r\n '.jpg': 'image/jpeg',\r\n '.jpeg': 'image/jpeg',\r\n '.png': 'image/png',\r\n '.webp': 'image/webp',\r\n '.gif': 'image/gif',\r\n '.pdf': 'application/pdf',\r\n '.txt': 'text/plain',\r\n '.html': 'text/html',\r\n '.css': 'text/css',\r\n '.js': 'application/javascript',\r\n '.json': 'application/json',\r\n '.csv': 'text/csv',\r\n '.xml': 'application/xml',\r\n '.zip': 'application/zip',\r\n '.mp4': 'video/mp4',\r\n '.mp3': 'audio/mpeg',\r\n '.wav': 'audio/wav',\r\n '.avi': 'video/x-msvideo',\r\n '.doc': 'application/msword',\r\n '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n '.xls': 'application/vnd.ms-excel',\r\n '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n // Add more as needed\r\n };\r\n\r\n const extension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();\r\n return mimeTypes[extension] || 'application/octet-stream'; // 'application/octet-stream' is a generic binary type\r\n}\r\n\r\nexport function adjustColor(color: string, percent: number): string {\r\n if (!/^#([0-9A-F]{3}){1,2}$/i.test(color)) {\r\n console.error('Invalid hex color format');\r\n }\r\n\r\n let r: number, g: number, b: number;\r\n if (color.length === 7) {\r\n r = parseInt(color.slice(1, 3), 16);\r\n g = parseInt(color.slice(3, 5), 16);\r\n b = parseInt(color.slice(5, 7), 16);\r\n } else {\r\n r = parseInt(color[1] + color[1], 16);\r\n g = parseInt(color[2] + color[2], 16);\r\n b = parseInt(color[3] + color[3], 16);\r\n }\r\n\r\n const adjust = (value: number, percent: number): number => {\r\n const amount = (percent / 100) * 255;\r\n const newValue = Math.min(Math.max(value + amount, 0), 255);\r\n return Math.round(newValue);\r\n };\r\n\r\n r = adjust(r, percent);\r\n g = adjust(g, percent);\r\n b = adjust(b, percent);\r\n\r\n const toHex = (value: number): string => {\r\n const hex = value.toString(16).padStart(2, '0');\r\n return hex;\r\n };\r\n\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\r\n}\r\n\r\nexport function getHtmlImgDisplayString64(base64String: string){\r\n if (base64String == null)\r\n return null;\r\n\r\n const [header, base64Content] = base64String.split(';base64,');\r\n const fileName = header.split('=')[1];\r\n const mimeType = getMimeTypeForFileName(fileName);\r\n return `data:${mimeType};base64, ${base64Content}`;\r\n}\r\n\r\nexport function nameof<TObject>(obj: TObject, key: keyof TObject): string;\r\nexport function nameof<TObject>(key: keyof TObject): string;\r\nexport function nameof(key1: any, key2?: any): any {\r\n return key2 ?? key1;\r\n}\r\nexport function nameOf<TObject extends {name:S}, S extends string>(funcOrClass: TObject): S {\r\n return funcOrClass.name;\r\n}\r\n\r\nexport function getParentUrl(currentUrl: string){\r\n const urlSegments = currentUrl.split('/');\r\n urlSegments.pop();\r\n const parentUrl = urlSegments.join('/');\r\n return parentUrl;\r\n}\r\n\r\n// export function getMonth(number: number): string {\r\n// const months: string[] = [\r\n// \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n// \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n// ];\r\n \r\n// if (number < 1 || number > 12) {\r\n// throw new Error(\"Invalid month number. It should be between 1 and 12.\");\r\n// }\r\n \r\n// return months[number - 1];\r\n// }\r\n\r\nexport function getMonth(numberOfTheMonth: number): string {\r\n const meseci: string[] = [\r\n \"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\",\r\n \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\r\n ];\r\n \r\n if (numberOfTheMonth < 1 || numberOfTheMonth > 12) {\r\n console.error(\"Nevažeći broj meseca. Broj treba biti između 1 i 12.\");\r\n }\r\n \r\n return meseci[numberOfTheMonth - 1];\r\n}\r\n\r\nexport function singleOrDefault <T>(array: T[], predicate: (item: T) => boolean): T | undefined {\r\n const filtered = array.filter(predicate);\r\n if (filtered.length > 1) {\r\n throw new Error(\"Sequence contains more than one matching element.\");\r\n }\r\n return filtered[0];\r\n};\r\n\r\nexport function pushAction(cols: Column[], action: Action){\r\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\r\n if (actionsColumn) {\r\n actionsColumn.actions = [...actionsColumn.actions, action];\r\n }\r\n}\r\n\r\nexport function deleteAction(cols: Column[], actionField: string): void {\r\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\r\n\r\n if (actionsColumn && actionsColumn.actions) {\r\n const index = actionsColumn.actions.findIndex(a => a.field === actionField);\r\n if (index !== -1) {\r\n actionsColumn.actions.splice(index, 1);\r\n }\r\n }\r\n}\r\n\r\nexport function getFileNameFromContentDisposition(\r\n resp: HttpResponse<Blob>,\r\n defaultName: string\r\n): string {\r\n let fileName;\r\n if (resp && resp.headers && resp.headers.get('Content-Disposition')) {\r\n let val = resp.headers.get('Content-Disposition');\r\n let start = val.indexOf('filename=');\r\n if (start != -1) {\r\n let end = val.indexOf(';', start);\r\n fileName =\r\n end != -1 ? val.substring(start + 9, end) : val.substring(start + 9);\r\n fileName = fileName.split('\"').join('');\r\n }\r\n }\r\n return fileName ?? defaultName;\r\n}\r\n\r\nexport function toCommaSeparatedString<T>(input: T[]): string {\r\n const stringList = input.map(item => (item?.toString() ?? ''));\r\n\r\n if (stringList.length > 1) {\r\n return `${stringList.slice(0, -1).join(', ')} and ${stringList[stringList.length - 1]}`;\r\n } else {\r\n return stringList[0] ?? '';\r\n }\r\n}\r\n\r\nexport function isImageFileType(mimeType: string): boolean {\r\n if (mimeType.startsWith('image/')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function isExcelFileType(mimeType: string): boolean {\r\n if (mimeType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n mimeType === 'application/vnd.ms-excel'\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function exportListToExcel(exportListToExcelObservableMethod: (filter: Filter) => Observable<any>, filter: Filter) {\r\n exportListToExcelObservableMethod(filter).subscribe(res => {\r\n let fileName = getFileNameFromContentDisposition(res, \"ExcelExport.xlsx\");\r\n FileSaver.saveAs(res.body, decodeURIComponent(fileName));\r\n });\r\n}\r\n\r\nexport function getPrimengDropdownNamebookOptions(getDropdownListObservable: (parentEntityId?: number) => Observable<Namebook[]>, parentEntityId?: number): Observable<PrimengOption[]>{\r\n return getDropdownListObservable(parentEntityId ?? 0).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, code: x.id }));\r\n })\r\n );\r\n}\r\n\r\nexport function getPrimengDropdownCodebookOptions(getDropdownListObservable: () => Observable<Codebook[]>): Observable<PrimengOption[]>{\r\n return getDropdownListObservable().pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, code: x.code }));\r\n })\r\n );\r\n}\r\n\r\nexport function getPrimengAutocompleteNamebookOptions(getAutocompleteListObservable: (limit: number, query: string, parentEntityId?: number) => Observable<Namebook[]>, limit: number, query: string, parentEntityId?: number): Observable<PrimengOption[]>{\r\n return getAutocompleteListObservable(limit, query, parentEntityId ?? 0).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, code: x.id }));\r\n })\r\n );\r\n}\r\n\r\nexport function getPrimengAutocompleteCodebookOptions(getAutocompleteListObservable: (limit: number, query: string) => Observable<Codebook[]>, limit: number, query: string): Observable<PrimengOption[]>{\r\n return getAutocompleteListObservable(limit, query).pipe(\r\n map(res => {\r\n return res.map(x => ({ label: x.displayName, code: x.code }));\r\n })\r\n );\r\n}\r\n\r\nexport const isNullOrEmpty = (input: string) => {\r\n if(input == null || input === ''){\r\n return true;\r\n }\r\n \r\n return false;\r\n}\r\n\r\nexport const selectedTab = (tabs: SpiderlyTab[]): number => {\r\n const tab = singleOrDefault(tabs, x => x.isSelected);\r\n\r\n if (tab) {\r\n return tab.id;\r\n }\r\n else{\r\n return null;\r\n }\r\n}\r\n\r\nexport function firstCharToUpper(input: string): string {\r\n return input.charAt(0).toUpperCase() + input.slice(1);\r\n}\r\n\r\nexport function splitPascalCase(input: string) {\r\n const regex = /($[a-z])|[A-Z][^A-Z]+/g;\r\n return input.match(regex).join(\" \");\r\n}\r\n\r\nexport function capitalizeFirstChar(str: string): string {\r\n if (!str) return str;\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function kebabToTitleCase(input: string): string {\r\n return input\r\n .split('-')\r\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(' ');\r\n}\r\n\r\n/**\r\n * Custom styling of the google button - https://medium.com/simform-engineering/implement-custom-google-sign-in-using-angular-16-9c93aeff6252\r\n*/\r\nexport function createFakeGoogleWrapper() { \r\n const googleLoginWrapper = document.createElement('div');\r\n googleLoginWrapper.style.display = 'none';\r\n googleLoginWrapper.classList.add('custom-google-button');\r\n\r\n document.body.appendChild(googleLoginWrapper);\r\n\r\n window.google.accounts.id.renderButton(googleLoginWrapper, {\r\n type: 'icon',\r\n width: '200',\r\n });\r\n\r\n const googleLoginWrapperButton = googleLoginWrapper.querySelector(\r\n 'div[role=button]'\r\n ) as HTMLElement;\r\n\r\n return {\r\n click: () => {\r\n googleLoginWrapperButton?.click();\r\n },\r\n };\r\n};\r\n\r\nexport const PROPS_KEY = Symbol('props');\r\n\r\nexport function ReflectProp (target: any, propertyKey: string) {\r\n const props = Reflect.getMetadata(PROPS_KEY, target) || [];\r\n Reflect.defineMetadata(PROPS_KEY, [...props, propertyKey], target);\r\n}\r\n\r\nexport const primitiveArrayTypes = ['Namebook[]', 'number[]', 'Date[]', 'string[]'];","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { FileSelectEvent, FileUploadModule } from 'primeng/fileupload';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { SpiderlyButtonComponent } from '../../components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { getMimeTypeForFileName, isExcelFileType, isImageFileType } from '../../services/helper-functions';\r\nimport { BaseControl } from '../base-control';\r\n\r\n@Component({\r\n selector: 'spiderly-file',\r\n templateUrl: './spiderly-file.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FileUploadModule,\r\n RequiredComponent,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective\r\n ]\r\n})\r\nexport class SpiderlyFileComponent extends BaseControl implements OnInit {\r\n @Output() onFileSelected = new EventEmitter<SpiderlyFileSelectEvent>();\r\n @Output() onFileRemoved = new EventEmitter<null>();\r\n @Input() objectId: number;\r\n @Input() fileData: string;\r\n @Input() acceptedFileTypes: Array<'image/*' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/vnd.ms-excel' | '.xlsx' | '.xls'> = ['image/*'];\r\n @Input() required: boolean; // It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl.\r\n @Input() multiple: boolean = false;\r\n @Input() isCloudinaryFileData: boolean = true;\r\n\r\n acceptedFileTypesCommaSeparated: string;\r\n @Input() files: File[] = [];\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n if (this.control?.value != null && this.fileData != null) {\r\n if (this.isCloudinaryFileData) {\r\n this.pushFileFromCloudinaryUrl(this.fileData);\r\n }\r\n else{\r\n const file = this.getFileFromBase64(this.fileData);\r\n this.files.push(file);\r\n }\r\n }\r\n\r\n if (!this.objectId) {\r\n this.objectId = 0;\r\n }\r\n\r\n this.acceptedFileTypesCommaSeparated = this.acceptedFileTypes.join(',');\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n filesSelected(event: FileSelectEvent){\r\n const file = event.files[0];\r\n\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, `${this.objectId}-${file.name}`);\r\n \r\n this.onFileSelected.next(new SpiderlyFileSelectEvent({file: file, formData: formData}));\r\n }\r\n\r\n choose(event, chooseCallback){\r\n chooseCallback();\r\n }\r\n \r\n fileRemoved(removeFileCallback, index: number){\r\n removeFileCallback(index);\r\n this.control?.setValue(null);\r\n this.onFileRemoved.next(null);\r\n }\r\n\r\n // Put inside global functions if you need it\r\n async pushFileFromCloudinaryUrl(cloudinaryUrl: string) {\r\n const response = await fetch(cloudinaryUrl);\r\n\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch file from Cloudinary: ${response.statusText}`);\r\n }\r\n\r\n const blob = await response.blob();\r\n\r\n const urlParts = cloudinaryUrl.split('/');\r\n const lastPart = urlParts[urlParts.length - 1];\r\n const fileName = lastPart.split('?')[0];\r\n\r\n const file = new File([blob], fileName, { type: blob.type });\r\n\r\n this.files = [...this.files, file]; // this.files.push(file); doesn't work\r\n\r\n return file;\r\n }\r\n\r\n // Put inside global functions if you need it\r\n getFileFromBase64(base64String: string){\r\n const [header, base64Content] = base64String.split(';base64,');\r\n const fileName = header.split('=')[1];\r\n const mimeType = getMimeTypeForFileName(fileName);\r\n\r\n const byteCharacters = atob(base64Content);\r\n const byteNumbers = new Uint8Array(byteCharacters.length);\r\n\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n\r\n const blob = new Blob([byteNumbers], { type: mimeType });\r\n const file = new File([blob], fileName, { type: mimeType });\r\n\r\n return file;\r\n }\r\n\r\n isImageFileType(mimeType: string): boolean {\r\n return isImageFileType(mimeType);\r\n }\r\n\r\n isExcelFileType(mimeType: string): boolean {\r\n return isExcelFileType(mimeType);\r\n }\r\n\r\n}\r\n\r\nexport class SpiderlyFileSelectEvent extends BaseEntity\r\n{\r\n file?: File;\r\n formData?: FormData;\r\n\r\n constructor(\r\n {\r\n file,\r\n formData,\r\n }:{\r\n file?: File;\r\n formData?: FormData;\r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.file = file;\r\n this.formData = formData;\r\n }\r\n\r\n static readonly typeName = 'SpiderlyFileSelectEvent' as const;\r\n}","<ng-container *transloco=\"let t\">\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <!-- It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\r\n <required *ngIf=\"control?.required || required\"></required>\r\n </div>\r\n\r\n <p-fileUpload \r\n [files]=\"files\" \r\n [disabled]=\"disabled\" \r\n [name]=\"control?.label ?? label\" \r\n [multiple]=\"multiple\" \r\n [accept]=\"acceptedFileTypesCommaSeparated\" \r\n [maxFileSize]=\"1000000\" \r\n (onSelect)=\"filesSelected($event)\"\r\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\r\n >\r\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\r\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\r\n <div class=\"flex gap-2\">\r\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\r\n <div *ngIf=\"files.length > 0\">\r\n <div class=\"flex justify-content-center p-0 gap-5\">\r\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\r\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\r\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\r\n </div>\r\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\r\n <div class=\"excel-details\">\r\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n </div>\r\n </div>\r\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\"> </ng-template>\r\n <ng-template pTemplate=\"empty\">\r\n <div class=\"flex align-items-center justify-content-center flex-column\">\r\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"></i>\r\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n </div>\r\n</ng-container>","import { Component, OnInit } from '@angular/core';\r\nimport { AutoCompleteCompleteEvent, AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-multiautocomplete',\r\n templateUrl: './spiderly-multiautocomplete.component.html',\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n AutoCompleteModule,\r\n TooltipModule,\r\n CommonModule,\r\n RequiredComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent){\r\n this.onTextInput.next(event);\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n\r\n <!-- Don't support p-inputgroup -->\r\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\r\n <p-autocomplete \r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"options\"\r\n (completeMethod)=\"search($event)\"\r\n [forceSelection]=\"true\"\r\n [multiple]=\"true\"\r\n [dropdown]=\"false\"\r\n [showClear]=\"true\"\r\n (onHide)=\"dropdownMarkAsDirty()\"\r\n [completeOnFocus]=\"true\"\r\n dropdownIcon=\"pi pi-plus\"\r\n [fluid]=\"true\"\r\n [style]=\"{'width': '100%'}\"\r\n appendTo=\"body\"\r\n optionLabel=\"displayName\"\r\n dataKey=\"id\"\r\n >\r\n </p-autocomplete>\r\n </div>\r\n</ng-container>","import { Component, OnInit } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { BaseDropdownControl } from '../base-dropdown-control';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-multiselect',\r\n templateUrl: './spiderly-multiselect.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MultiSelectModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyMultiSelectComponent extends BaseDropdownControl implements OnInit {\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n}\r\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <p-multiSelect\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [id]=\"label\"\r\n [formControl]=\"control\"\r\n [options]=\"options\"\r\n optionLabel=\"displayName\"\r\n optionValue=\"id\"\r\n display=\"chip\"\r\n [maxSelectedLabels]=\"20\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n appendTo=\"body\"\r\n />\r\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\r\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\r\n we need to use this and dropdown control only on the client -->\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-number',\r\n templateUrl: './spiderly-number.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n InputNumberModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyNumberComponent extends BaseControl implements OnInit {\r\n @Input() prefix: string;\r\n @Input() showButtons: boolean = true;\r\n @Input() decimal: boolean;\r\n @Input() maxFractionDigits: number = 0;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n \r\n}\r\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"showLabel\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <p-inputNumber\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (onBlur)=\"control.markAsDirty()\"\r\n [prefix]=\"prefix\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n [showButtons]=\"showButtons\"\r\n buttonLayout=\"horizontal\"\r\n [maxFractionDigits]=\"maxFractionDigits\"\r\n />\r\n </div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-password',\r\n templateUrl: './spiderly-password.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n PasswordModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyPasswordComponent extends BaseControl implements OnInit {\r\n @Input() showPasswordStrength: boolean = false;\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n}\r\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <p-password\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n [formControl]=\"control\"\r\n [id]=\"control?.label\"\r\n [toggleMask]=\"true\"\r\n [feedback]=\"showPasswordStrength\"\r\n (onBlur)=\"control?.markAsDirty()\"\r\n [style]=\"{'width':'100%'}\"\r\n [inputStyle]=\"{'width':'100%'}\"\r\n />\r\n </div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-textarea',\r\n templateUrl: './spiderly-textarea.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TextareaModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyTextareaComponent extends BaseControl implements OnInit {\r\n\r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div>\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <textarea\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pTextarea\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [autoResize]=\"true\"\r\n [class]=\"control.disabled ? 'disabled' : ''\"\r\n ></textarea>\r\n </div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { BaseControl } from '../base-control';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { RequiredComponent } from '../../components/required/required.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'spiderly-textbox',\r\n templateUrl: './spiderly-textbox.component.html',\r\n styleUrl: '../base-controls.scss',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n InputTextModule,\r\n TooltipModule,\r\n RequiredComponent\r\n ]\r\n})\r\nexport class SpiderlyTextboxComponent extends BaseControl implements OnInit {\r\n @Input() showButton: boolean = false;\r\n @Input() buttonIcon: string;\r\n @Output() onButtonClick = new EventEmitter();\r\n \r\n constructor(\r\n protected override translocoService: TranslocoService,\r\n ) { \r\n super(translocoService);\r\n }\r\n\r\n override ngOnInit(){\r\n super.ngOnInit();\r\n }\r\n\r\n \r\n buttonClick() {\r\n this.onButtonClick.next(null);\r\n }\r\n \r\n}\r\n","<!-- Can't put (onBlur) in this control -->\r\n\r\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\r\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\r\n <label>{{getTranslatedLabel()}}</label>\r\n <required *ngIf=\"control?.required && showRequired\"></required>\r\n </div>\r\n <div class=\"spiderly-inputgroup\">\r\n <input\r\n *ngIf=\"control\"\r\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\r\n pInputText\r\n [formControl]=\"control\"\r\n [id]=\"control.label\"\r\n (blur)=\"control.markAsDirty()\"\r\n [placeholder]=\"placeholder\"\r\n [fluid]=\"true\"\r\n />\r\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"spiderly-inputgroup-addon\">\r\n <i class=\"{{buttonIcon}}\"></i>\r\n </span>\r\n </div>\r\n</div>","import { Component, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { getParentUrl } from \"../../../services/helper-functions\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\r\n\r\n@Component({\n selector: 'return-button',\n templateUrl: './return-button.component.html',\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SpiderlyButtonComponent,\n TranslocoDirective,\n ]\n})\r\nexport class SpiderlyReturnButtonComponent {\r\n @Input() navigateUrl: string;\r\n\r\n constructor(private router: Router) {}\r\n\r\n onReturn(){\r\n if(this.navigateUrl == undefined){\r\n const currentUrl = this.router.url;\r\n const parentUrl: string = getParentUrl(currentUrl);\r\n this.router.navigateByUrl(parentUrl);\r\n }\r\n else{\r\n this.router.navigate([this.navigateUrl]);\r\n }\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <spiderly-button (onClick)=\"onReturn()\" [label]=\"t('Return')\" icon=\"pi pi-undo\" [outlined]=\"true\"></spiderly-button>\r\n</ng-container>","import { NgModule } from '@angular/core';\r\nimport { SpiderlyMultiAutocompleteComponent } from './spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nimport { SpiderlyPasswordComponent } from './spiderly-password/spiderly-password.component';\r\nimport { SpiderlyTextboxComponent } from './spiderly-textbox/spiderly-textbox.component';\r\nimport { SpiderlyCheckboxComponent } from './spiderly-checkbox/spiderly-checkbox.component';\r\nimport { SpiderlyMultiSelectComponent } from './spiderly-multiselect/spiderly-multiselect.component';\r\nimport { SpiderlyTextareaComponent } from './spiderly-textarea/spiderly-textarea.component';\r\nimport { SpiderlyNumberComponent } from './spiderly-number/spiderly-number.component';\r\nimport { SpiderlyDropdownComponent } from './spiderly-dropdown/spiderly-dropdown.component';\r\nimport { SpiderlyEditorComponent } from './spiderly-editor/spiderly-editor.component';\r\nimport { SpiderlyColorPickerComponent } from './spiderly-colorpicker/spiderly-colorpicker.component';\r\nimport { SpiderlyFileComponent } from './spiderly-file/spiderly-file.component';\r\nimport { SpiderlyCalendarComponent } from './spiderly-calendar/spiderly-calendar.component';\r\nimport { SpiderlyAutocompleteComponent } from './spiderly-autocomplete/spiderly-autocomplete.component';\r\nimport { SpiderlyButtonComponent } from '../components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { SpiderlyReturnButtonComponent } from '../components/spiderly-buttons/return-button/return-button.component';\r\n\r\n@NgModule({\r\n imports: [\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyCheckboxComponent,\r\n SpiderlyCalendarComponent,\r\n SpiderlyReturnButtonComponent,\r\n SpiderlyButtonComponent,\r\n SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorPickerComponent,\r\n SpiderlyFileComponent,\r\n ],\r\n exports: [\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyCheckboxComponent,\r\n SpiderlyCalendarComponent,\r\n SpiderlyReturnButtonComponent,\r\n SpiderlyButtonComponent,\r\n SpiderlyPasswordComponent,\r\n SpiderlyAutocompleteComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyNumberComponent,\r\n SpiderlyDropdownComponent,\r\n SpiderlyEditorComponent,\r\n SpiderlyColorPickerComponent,\r\n SpiderlyFileComponent\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyControlsModule {}","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class IsAuthorizedForSaveEvent extends BaseEntity\r\n{\r\n isAuthorizedForSave?: boolean;\r\n\r\n constructor(\r\n {\r\n isAuthorizedForSave,\r\n }:{\r\n isAuthorizedForSave?: boolean;\r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.isAuthorizedForSave = isAuthorizedForSave;\r\n }\r\n\r\n static readonly typeName = 'IsAuthorizedForSaveEvent' as const;\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class Namebook extends BaseEntity\r\n{\r\n id?: any;\r\n displayName?: string;\r\n \r\n constructor(\r\n {\r\n id,\r\n displayName,\r\n }:{\r\n id?: any;\r\n displayName?: string;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.id = id;\r\n this.displayName = displayName;\r\n }\r\n\r\n static schema = {\r\n id: {\r\n type: 'any',\r\n },\r\n displayName: {\r\n type: 'string',\r\n },\r\n } as const;\r\n\r\n static readonly typeName = 'Namebook' as const;\r\n}","import { BaseEntity } from \"./base-entity\";\r\nimport { Namebook } from \"./namebook\";\r\n\r\n\r\nexport class UserBase extends BaseEntity\r\n{\r\n static readonly typeName = 'UserBase' as const;\r\n\r\n id?: number;\r\n email?: string;\r\n\r\n constructor(\r\n {\r\n id,\r\n email,\r\n }:{\r\n id?: number;\r\n email?: string;\r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.id = id;\r\n this.email = email;\r\n }\r\n\r\n static readonly schema = {\r\n id: {\r\n type: 'number',\r\n },\r\n email: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RolePermission extends BaseEntity\r\n{\r\n static readonly typeName = 'RolePermission' as const;\r\n\r\n roleDisplayName?: string;\r\n roleId?: number;\r\n permissionDisplayName?: string;\r\n permissionId?: number;\r\n\r\n constructor(\r\n {\r\n roleDisplayName,\r\n roleId,\r\n permissionDisplayName,\r\n permissionId\r\n }:{\r\n roleDisplayName?: string;\r\n roleId?: number;\r\n permissionDisplayName?: string;\r\n permissionId?: number; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleDisplayName = roleDisplayName;\r\n this.roleId = roleId;\r\n this.permissionDisplayName = permissionDisplayName;\r\n this.permissionId = permissionId;\r\n }\r\n\r\n static readonly schema = {\r\n roleDisplayName: {\r\n type: 'string',\r\n },\r\n roleId: {\r\n type: 'number',\r\n },\r\n permissionDisplayName: {\r\n type: 'string',\r\n },\r\n permissionId: {\r\n type: 'number',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RolePermissionSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'RolePermissionSaveBody' as const;\r\n\r\n rolePermissionDTO?: RolePermission;\r\n\r\n constructor(\r\n {\r\n rolePermissionDTO\r\n }:{\r\n rolePermissionDTO?: RolePermission; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.rolePermissionDTO = rolePermissionDTO;\r\n }\r\n\r\n static readonly schema = {\r\n rolePermissionDTO: {\r\n type: 'RolePermission',\r\n get nestedConstructor() { return RolePermission; },\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class AuthResult extends BaseEntity\r\n{\r\n static readonly typeName = 'AuthResult' as const;\r\n\r\n userId?: number;\r\n email?: string;\r\n accessToken?: string;\r\n refreshToken?: string;\r\n\r\n constructor(\r\n {\r\n userId,\r\n email,\r\n accessToken,\r\n refreshToken\r\n }:{\r\n userId?: number;\r\n email?: string;\r\n accessToken?: string;\r\n refreshToken?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.userId = userId;\r\n this.email = email;\r\n this.accessToken = accessToken;\r\n this.refreshToken = refreshToken;\r\n }\r\n\r\n static readonly schema = {\r\n userId: {\r\n type: 'number',\r\n },\r\n email: {\r\n type: 'string',\r\n },\r\n accessToken: {\r\n type: 'string',\r\n },\r\n refreshToken: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class VerificationTokenRequest extends BaseEntity\r\n{\r\n static readonly typeName = 'VerificationTokenRequest' as const;\r\n\r\n verificationCode?: string;\r\n browserId?: string;\r\n email?: string;\r\n\r\n constructor(\r\n {\r\n verificationCode,\r\n browserId,\r\n email\r\n }:{\r\n verificationCode?: string;\r\n browserId?: string;\r\n email?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.verificationCode = verificationCode;\r\n this.browserId = browserId;\r\n this.email = email;\r\n }\r\n\r\n static readonly schema = {\r\n verificationCode: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n email: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class ExternalProvider extends BaseEntity\r\n{\r\n static readonly typeName = 'ExternalProvider' as const;\r\n\r\n idToken?: string;\r\n browserId?: string;\r\n\r\n constructor(\r\n {\r\n idToken,\r\n browserId\r\n }:{\r\n idToken?: string;\r\n browserId?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.idToken = idToken;\r\n this.browserId = browserId;\r\n }\r\n\r\n static readonly schema = {\r\n idToken: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class UserRole extends BaseEntity\r\n{\r\n static readonly typeName = 'UserRole' as const;\r\n\r\n roleId?: number;\r\n userId?: number;\r\n\r\n constructor(\r\n {\r\n roleId,\r\n userId\r\n }:{\r\n roleId?: number;\r\n userId?: number; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleId = roleId;\r\n this.userId = userId;\r\n }\r\n\r\n static readonly schema = {\r\n roleId: {\r\n type: 'number',\r\n },\r\n userId: {\r\n type: 'number',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class UserRoleSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'UserRoleSaveBody' as const;\r\n\r\n userRoleDTO?: UserRole;\r\n\r\n constructor(\r\n {\r\n userRoleDTO\r\n }:{\r\n userRoleDTO?: UserRole; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.userRoleDTO = userRoleDTO;\r\n }\r\n\r\n static readonly schema = {\r\n userRoleDTO: {\r\n type: 'UserRole',\r\n get nestedConstructor() { return UserRole; },\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class LoginVerificationToken extends BaseEntity\r\n{\r\n static readonly typeName = 'LoginVerificationToken' as const;\r\n\r\n email?: string;\r\n userId?: number;\r\n browserId?: string;\r\n expireAt?: Date;\r\n\r\n constructor(\r\n {\r\n email,\r\n userId,\r\n browserId,\r\n expireAt\r\n }:{\r\n email?: string;\r\n userId?: number;\r\n browserId?: string;\r\n expireAt?: Date; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.email = email;\r\n this.userId = userId;\r\n this.browserId = browserId;\r\n this.expireAt = expireAt;\r\n }\r\n\r\n static readonly schema = {\r\n email: {\r\n type: 'string',\r\n },\r\n userId: {\r\n type: 'number',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n expireAt: {\r\n type: 'Date',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class Login extends BaseEntity\r\n{\r\n static readonly typeName = 'Login' as const;\r\n\r\n email?: string;\r\n browserId?: string;\r\n\r\n constructor(\r\n {\r\n email,\r\n browserId\r\n }:{\r\n email?: string;\r\n browserId?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.email = email;\r\n this.browserId = browserId;\r\n }\r\n\r\n static readonly schema = {\r\n email: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RefreshTokenRequest extends BaseEntity\r\n{\r\n static readonly typeName = 'RefreshTokenRequest' as const;\r\n\r\n refreshToken?: string;\r\n browserId?: string;\r\n\r\n constructor(\r\n {\r\n refreshToken,\r\n browserId\r\n }:{\r\n refreshToken?: string;\r\n browserId?: string; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.refreshToken = refreshToken;\r\n this.browserId = browserId;\r\n }\r\n\r\n static readonly schema = {\r\n refreshToken: {\r\n type: 'string',\r\n },\r\n browserId: {\r\n type: 'string',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class Role extends BaseEntity\r\n{\r\n static readonly typeName = 'Role' as const;\r\n\r\n name?: string;\r\n description?: string;\r\n version?: number;\r\n id?: number;\r\n createdAt?: Date;\r\n modifiedAt?: Date;\r\n\r\n constructor(\r\n {\r\n name,\r\n description,\r\n version,\r\n id,\r\n createdAt,\r\n modifiedAt\r\n }:{\r\n name?: string;\r\n description?: string;\r\n version?: number;\r\n id?: number;\r\n createdAt?: Date;\r\n modifiedAt?: Date; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.name = name;\r\n this.description = description;\r\n this.version = version;\r\n this.id = id;\r\n this.createdAt = createdAt;\r\n this.modifiedAt = modifiedAt;\r\n }\r\n\r\n static readonly schema = {\r\n name: {\r\n type: 'string',\r\n },\r\n description: {\r\n type: 'string',\r\n },\r\n version: {\r\n type: 'number',\r\n },\r\n id: {\r\n type: 'number',\r\n },\r\n createdAt: {\r\n type: 'Date',\r\n },\r\n modifiedAt: {\r\n type: 'Date',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class RoleMainUIForm extends BaseEntity\r\n{\r\n static readonly typeName = 'RoleMainUIForm' as const;\r\n\r\n roleDTO?: Role;\r\n usersNamebookDTOList?: Namebook[];\r\n permissionsIds?: number[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n usersNamebookDTOList = [],\r\n permissionsIds = []\r\n }:{\r\n roleDTO?: Role;\r\n usersNamebookDTOList?: Namebook[];\r\n permissionsIds?: number[]; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleDTO = roleDTO;\r\n this.usersNamebookDTOList = usersNamebookDTOList;\r\n this.permissionsIds = permissionsIds;\r\n }\r\n\r\n static readonly schema = {\r\n roleDTO: {\r\n type: 'Role',\r\n get nestedConstructor() { return Role; },\r\n isMainDTOForMainUIFormDTO: true,\r\n },\r\n usersNamebookDTOList: {\r\n type: 'Namebook[]',\r\n get nestedConstructor() { return Namebook; },\r\n },\r\n permissionsIds: {\r\n type: 'number[]',\r\n },\r\n } as const;\r\n}\r\n\r\nexport class RoleSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'RoleSaveBody' as const;\r\n\r\n roleDTO?: Role;\r\n selectedPermissionsIds?: number[];\r\n selectedUsersIds?: number[];\r\n\r\n constructor(\r\n {\r\n roleDTO,\r\n selectedPermissionsIds = [],\r\n selectedUsersIds = []\r\n }:{\r\n roleDTO?: Role;\r\n selectedPermissionsIds?: number[];\r\n selectedUsersIds?: number[]; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.roleDTO = roleDTO;\r\n this.selectedPermissionsIds = selectedPermissionsIds;\r\n this.selectedUsersIds = selectedUsersIds;\r\n }\r\n\r\n static readonly schema = {\r\n roleDTO: {\r\n type: 'Role',\r\n get nestedConstructor() { return Role; },\r\n isSaveBodyMainDTO: true,\r\n },\r\n selectedPermissionsIds: {\r\n type: 'number[]',\r\n },\r\n selectedUsersIds: {\r\n type: 'number[]',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class Permission extends BaseEntity\r\n{\r\n static readonly typeName = 'Permission' as const;\r\n\r\n name?: string;\r\n nameLatin?: string;\r\n description?: string;\r\n descriptionLatin?: string;\r\n code?: string;\r\n id?: number;\r\n\r\n constructor(\r\n {\r\n name,\r\n nameLatin,\r\n description,\r\n descriptionLatin,\r\n code,\r\n id\r\n }:{\r\n name?: string;\r\n nameLatin?: string;\r\n description?: string;\r\n descriptionLatin?: string;\r\n code?: string;\r\n id?: number; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.name = name;\r\n this.nameLatin = nameLatin;\r\n this.description = description;\r\n this.descriptionLatin = descriptionLatin;\r\n this.code = code;\r\n this.id = id;\r\n }\r\n\r\n static readonly schema = {\r\n name: {\r\n type: 'string',\r\n },\r\n nameLatin: {\r\n type: 'string',\r\n },\r\n description: {\r\n type: 'string',\r\n },\r\n descriptionLatin: {\r\n type: 'string',\r\n },\r\n code: {\r\n type: 'string',\r\n },\r\n id: {\r\n type: 'number',\r\n },\r\n } as const;\r\n}\r\n\r\n\r\nexport class PermissionSaveBody extends BaseEntity\r\n{\r\n static readonly typeName = 'PermissionSaveBody' as const;\r\n\r\n permissionDTO?: Permission;\r\n\r\n constructor(\r\n {\r\n permissionDTO\r\n }:{\r\n permissionDTO?: Permission; \r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.permissionDTO = permissionDTO;\r\n }\r\n\r\n static readonly schema = {\r\n permissionDTO: {\r\n type: 'Permission',\r\n get nestedConstructor() { return Permission; },\r\n },\r\n } as const;\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n@Component({\n selector: 'card-skeleton',\n templateUrl: './card-skeleton.component.html',\n styles: [],\n imports: [SkeletonModule]\n})\r\nexport class CardSkeletonComponent {\r\n @Input() height: number = 400;\r\n titleHeight: number = 23;\r\n dataHeight: number;\r\n padding: number = 21;\r\n titleMarginBottom: number = 14;\r\n titleMarginTop: number = 4;\r\n\r\n ngOnInit(){\r\n this.dataHeight = this.height - (this.titleHeight + this.padding * 2 + this.titleMarginBottom + this.titleMarginTop)\r\n }\r\n}","<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\r\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\r\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\r\n </div>\r\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\r\n <p-skeleton width=\"100%\" height=\"100%\"/>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-body',\r\n templateUrl: './panel-body.component.html',\r\n styleUrl: './panel-body.component.scss',\r\n standalone: false\r\n})\r\nexport class PanelBodyComponent implements OnInit {\r\n @Input() normalBottomPadding: boolean = false; // FT: By default we set to false, when the grid is inside the body.\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<!-- this is selector, not the class -->\r\n<div class=\"panel-body\"\r\n [ngClass]=\"{\r\n 'non-grid-panel-bottom-padding': normalBottomPadding, \r\n }\"\r\n style=\"overflow: auto;\">\r\n <!-- 'card': true, -->\r\n <ng-content></ng-content>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-footer',\r\n templateUrl: './panel-footer.component.html',\r\n styleUrl: './panel-footer.component.scss',\r\n standalone: false\r\n})\r\nexport class PanelFooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<div class=\"spiderly-panel-footer\">\r\n <div class=\"buttons-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n <span class=\"p-text-secondary\">\r\n <ng-content select=\"[footerRight]\"></ng-content>\r\n </span>\r\n</div>","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'panel-header',\r\n templateUrl: './panel-header.component.html',\r\n styles: [`\r\n .p-panel-icons-end {\r\n font-size: 50px;\r\n }\r\n `],\r\n standalone: false\r\n})\r\nexport class PanelHeaderComponent implements OnInit {\r\n @Input() title: string;\r\n @Input() showBigTitle: boolean;\r\n @Input() showIcon: boolean = true;\r\n @Input() icon: string;\r\n @Input() index: number;\r\n @Input() tabs: SpiderlyTab[];\r\n\r\n constructor(\r\n private translocoService: TranslocoService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.title == null)\r\n this.title = this.translocoService.translate('Details');\r\n\r\n if (this.showIcon === true && this.icon == null)\r\n this.icon = 'pi pi-file-edit';\r\n }\r\n\r\n setTabIsSelected(tab: SpiderlyTab){\r\n this.tabs.forEach(t => {\r\n t.isSelected = false;\r\n });\r\n\r\n tab.isSelected = true;\r\n }\r\n}\r\n\r\nexport class SpiderlyTab\r\n{\r\n label?: string;\r\n id?: number;\r\n icon?: string;\r\n isSelected?: boolean;\r\n \r\n constructor(\r\n {\r\n label,\r\n id,\r\n icon,\r\n isSelected,\r\n }:{\r\n label?: string;\r\n id?: number;\r\n icon?: string;\r\n isSelected?: boolean;\r\n } = {}\r\n ) {\r\n this.label = label;\r\n this.id = id;\r\n this.icon = icon;\r\n this.isSelected = isSelected;\r\n }\r\n\r\n}","<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\r\n @if (tabs == null) {\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \r\n <div [style]=\"(showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : '')\">{{title}}</div>\r\n </div>\r\n }\r\n @else {\r\n @for (tab of tabs; track $index) {\r\n <div (click)=\"setTabIsSelected(tab)\"\r\n [style]=\"{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n cursor: 'pointer',\r\n fontWeight: tab.isSelected ? '700' : 'normal'\r\n }\">\r\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\r\n <i class=\"{{tab.icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \r\n <div [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\">{{tab.label}}</div>\r\n </div>\r\n }\r\n }\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Menu } from 'primeng/menu';\r\n\r\n@Component({\r\n selector: 'spiderly-panel',\r\n templateUrl: './spiderly-panel.component.html',\r\n styleUrl: './spiderly-panel.component.scss',\r\n standalone: false\r\n})\r\nexport class SpiderlyPanelComponent implements OnInit {\r\n @Input() isFirstMultiplePanel: boolean = false;\r\n @Input() isMiddleMultiplePanel: boolean = false;\r\n @Input() isLastMultiplePanel: boolean = false;\r\n @Input() toggleable: boolean = false;\r\n @Input() toggler: 'header' | 'icon' | null = 'icon';\r\n @Input() collapsed: boolean = false;\r\n @Input() crudMenu: MenuItem[];\r\n @Input() showCrudMenu: boolean = true;\r\n @Input() showRemoveIcon: boolean = false;\r\n @Input() index: number;\r\n @Input() showPanelHeader: boolean = true;\r\n\r\n @Output() onMenuIconClick: EventEmitter<number> = new EventEmitter();\r\n @Output() onRemoveIconClick: EventEmitter<null> = new EventEmitter();\r\n\r\n @ViewChild('menu') menu: Menu;\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n menuItemClick(index: number, event){\r\n this.menu.toggle(event);\r\n this.onMenuIconClick.next(index);\r\n }\r\n\r\n removeItemClick(){\r\n this.onRemoveIconClick.next(null);\r\n }\r\n\r\n}","<p-panel \r\n[showHeader]=\"showPanelHeader\"\r\n[ngClass]=\"{\r\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-first': isFirstMultiplePanel,\r\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-middle': isMiddleMultiplePanel,\r\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\r\n 'multiple-panel-last': isLastMultiplePanel,\r\n 'panel-border': !isFirstMultiplePanel,\r\n 'spiderly-panel': true,\r\n 'panel-header-cursor-pointer': toggler === 'header' && toggleable\r\n}\"\r\n[toggleable]=\"toggleable\"\r\n[toggler]=\"toggler\"\r\n[collapsed]=\"toggleable && collapsed\"\r\nexpandIcon=\"pi pi-chevron-up\"\r\ncollapseIcon=\"pi pi-chevron-down\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <ng-content select=\"panel-header\"></ng-content>\r\n <ng-content select=\"[panelHeader]\"></ng-content>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"icons\">\r\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\r\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\r\n <!-- https://github.com/primefaces/primeng/issues/13934 -->\r\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\" [tabindex]=\"undefined\"></p-menu>\r\n </div>\r\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\r\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"panel-body-wrapper\">\r\n <ng-content select=\"panel-body\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"panel-footer\"></ng-content>\r\n\r\n</p-panel>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PanelBodyComponent } from './panel-body/panel-body.component';\r\nimport { PanelFooterComponent } from './panel-footer/panel-footer.component';\r\nimport { PanelHeaderComponent } from './panel-header/panel-header.component';\r\nimport { SpiderlyPanelComponent } from './spiderly-panel/spiderly-panel.component';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { PanelModule } from 'primeng/panel';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MenuModule,\r\n PanelModule\r\n ],\r\n exports: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n ],\r\n declarations: [\r\n PanelHeaderComponent,\r\n PanelBodyComponent,\r\n PanelFooterComponent,\r\n SpiderlyPanelComponent,\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SpiderlyPanelsModule {}","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigBaseService\r\n{\r\n production = false;\r\n apiUrl: string;\r\n frontendUrl = 'http://localhost:4200';\r\n GoogleClientId: string;\r\n companyName = 'Company Name';\r\n primaryColor = '#111b2c';\r\n \r\n googleAuth = true;\r\n\r\n /* URLs */\r\n loginSlug = 'login';\r\n\r\n /* Local storage */\r\n accessTokenKey = 'access_token';\r\n refreshTokenKey = 'refresh_token';\r\n browserIdKey = 'browser_id';\r\n\r\n httpOptions = {};\r\n httpSkipSpinnerOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\r\n params: new HttpParams().set('X-Skip-Spinner', 'true')\r\n };\r\n\r\n logoPath = 'assets/images/logo/logo.svg';\r\n\r\n constructor(\r\n ) {\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Namebook } from '../entities/namebook';\r\nimport { Filter } from '../entities/filter';\r\nimport { Login, RefreshTokenRequest, AuthResult, Role, UserBase, ExternalProvider, VerificationTokenRequest, RoleSaveBody, RoleMainUIForm } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { PaginatedResult } from '../entities/paginated-result';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n\r\n constructor(\r\n protected http: HttpClient,\r\n protected config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n //#region Authentication\r\n\r\n login = (request: VerificationTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/Login`, request, this.config.httpOptions);\r\n }\r\n\r\n loginExternal = (externalProviderDTO: ExternalProvider): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/LoginExternal`, externalProviderDTO, this.config.httpOptions);\r\n }\r\n\r\n sendLoginVerificationEmail = (loginDTO: Login): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/SendLoginVerificationEmail`, loginDTO, this.config.httpOptions);\r\n }\r\n\r\n\r\n logout = (browserId: string): Observable<any> => { \r\n return this.http.get<any>(`${this.config.apiUrl}/Security/Logout?browserId=${browserId}`);\r\n }\r\n\r\n refreshToken = (request: RefreshTokenRequest): Observable<AuthResult> => { \r\n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/RefreshToken`, request, this.config.httpOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region User\r\n\r\n getCurrentUserBase = (): Observable<UserBase> => { \r\n return this.http.get<UserBase>(`${this.config.apiUrl}/Security/GetCurrentUserBase`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getCurrentUserPermissionCodes = (): Observable<string[]> => { \r\n return this.http.get<string[]>(`${this.config.apiUrl}/Security/GetCurrentUserPermissionCodes`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Role\r\n\r\n getPaginatedRoleList = (dto: Filter): Observable<PaginatedResult> => { \r\n return this.http.post<PaginatedResult>(`${this.config.apiUrl}/Security/GetPaginatedRoleList`, dto, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n exportRoleListToExcel = (dto: Filter): Observable<any> => { \r\n return this.http.post<any>(`${this.config.apiUrl}/Security/ExportRoleListToExcel`, dto, this.config.httpOptions);\r\n }\r\n\r\n deleteRole = (id: number): Observable<any> => { \r\n return this.http.delete<any>(`${this.config.apiUrl}/Security/DeleteRole?id=${id}`);\r\n }\r\n\r\n getRoleMainUIFormDTO = (id: number): Observable<RoleMainUIForm> => {\r\n return this.http.get<RoleMainUIForm>(`${this.config.apiUrl}/Security/GetRoleMainUIFormDTO?id=${id}`);\r\n }\r\n\r\n getRole = (id: number): Observable<Role> => {\r\n return this.http.get<Role>(`${this.config.apiUrl}/Security/GetRole?id=${id}`);\r\n }\r\n\r\n saveRole = (dto: RoleSaveBody): Observable<Role> => { \r\n return this.http.put<Role>(`${this.config.apiUrl}/Security/SaveRole`, dto, this.config.httpOptions);\r\n }\r\n\r\n getUsersNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getPermissionsDropdownListForRole = (): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsDropdownListForRole`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getPermissionsNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n getUsersAutocompleteListForRole = (limit: number, query: string): Observable<Namebook[]> => {\r\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersAutocompleteListForRole?limit=${limit}&query=${query}`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Notification\r\n\r\n getUnreadNotificationsCountForCurrentUser = (): Observable<number> => { \r\n return this.http.get<number>(`${this.config.apiUrl}/Notification/GetUnreadNotificationsCountForCurrentUser`, this.config.httpSkipSpinnerOptions);\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n\r\n","// When we call it, inside the console, it will show SpiderlyError: ...\r\nexport class SpiderlyError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class TranslateLabelsAbstractService {\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n abstract translate (name: string): string;\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SpiderlyMessageService { // TODO FT: nece da prikaze poruku ako je neki angular error koji se dogodi tek nakon api poziva\r\n constructor(\r\n private messageService: MessageService, \r\n private translocoService: TranslocoService,\r\n private ngZone: NgZone\r\n ) {\r\n \r\n }\r\n\r\n successMessage(detail: string, title: string = this.translocoService.translate('SuccessfulAction')) {\r\n this.messageService.add({\r\n severity: 'success',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }\r\n\r\n warningMessage(detail: string, title?: string, sticky?: boolean){\r\n this.messageService.add({\r\n severity: 'warn',\r\n summary: title ?? this.translocoService.translate('Warning'),\r\n detail: detail,\r\n life: 10000,\r\n sticky: sticky\r\n });\r\n }\r\n\r\n errorMessage(detail: string, title: string = this.translocoService.translate('Error')){\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: title,\r\n detail: detail,\r\n life: 10000,\r\n });\r\n }\r\n\r\n infoMessage(detail: string, title?: string, sticky?: boolean){\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: title ?? this.translocoService.translate('Info'),\r\n detail: detail,\r\n life: 10000,\r\n sticky: sticky,\r\n });\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../components/spiderly-form-control/spiderly-form-control';\r\nimport { BaseEntity, SchemaAwareConstructor } from '../entities/base-entity';\r\nimport { SpiderlyError } from '../errors/spiderly-error';\r\nimport { capitalizeFirstChar } from './helper-functions';\r\nimport { SpiderlyMessageService } from './spiderly-message.service';\r\nimport { TranslateLabelsAbstractService } from './translate-labels-abstract.service';\r\nimport { ValidatorAbstractService } from './validator-abstract.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BaseFormService {\r\n constructor(\r\n private translateLabelsService: TranslateLabelsAbstractService,\r\n private validatorService: ValidatorAbstractService,\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService\r\n ) {}\r\n\r\n initFormGroup = <T extends BaseEntity>(\r\n formGroup: SpiderlyFormGroup<T>, \r\n targetClass: SchemaAwareConstructor<T>,\r\n initialValues?: T, \r\n updateOnChangeControls?: (keyof T)[]\r\n ) => {\r\n if (!formGroup)\r\n throw new SpiderlyError('You need to instantiate the form group.')\r\n\r\n if (!targetClass)\r\n throw new SpiderlyError('You need to pass targetClass.')\r\n\r\n if (!initialValues)\r\n initialValues = {} as T;\r\n\r\n Object.keys(targetClass.schema).forEach((formControlName) => {\r\n const propSchema = targetClass.schema[formControlName];\r\n let propInitialValue = initialValues[formControlName];\r\n \r\n const existingControl = formGroup.get(formControlName);\r\n\r\n if (\r\n propSchema.type.endsWith('[]') &&\r\n propSchema.nestedConstructor &&\r\n propSchema.type !== 'Namebook[]'\r\n ) {\r\n if (existingControl instanceof SpiderlyFormArray) {\r\n this.initFormArray(existingControl, propSchema.nestedConstructor, propInitialValue);\r\n }\r\n else {\r\n const control = new SpiderlyFormArray<T>([], this.translocoService, this);\r\n this.initFormArray(control, propSchema.nestedConstructor, propInitialValue);\r\n \r\n control.label = formControlName;\r\n control.labelForDisplay = this.getTranslatedLabel(formControlName);\r\n \r\n formGroup.setControl(formControlName, control);\r\n }\r\n }\r\n else if (\r\n propSchema.nestedConstructor &&\r\n propSchema.type !== 'Namebook[]'\r\n ) {\r\n if (existingControl instanceof SpiderlyFormGroup) {\r\n this.initFormGroup(existingControl, propSchema.nestedConstructor, propInitialValue)\r\n }\r\n else{\r\n const control = new SpiderlyFormGroup({});\r\n this.initFormGroup(control, propSchema.nestedConstructor, propInitialValue)\r\n formGroup.setControl(formControlName, control);\r\n }\r\n }\r\n else {\r\n // HACK: Because on the backend id type is not nullable on generated DTOs, we need to do this, it's ugly hack and we should make it better.\r\n if (formControlName === 'id' && !propInitialValue) {\r\n propInitialValue = 0;\r\n }\r\n\r\n if (existingControl instanceof SpiderlyFormControl) {\r\n existingControl.setValue(propInitialValue); \r\n }\r\n else {\r\n let control: SpiderlyFormControl;\r\n\r\n if (updateOnChangeControls?.includes(formControlName as keyof T) ||\r\n (formControlName.endsWith('Id') && formControlName.length > 2) ||\r\n propSchema.type === 'Date' ||\r\n propSchema.type === 'Namebook[]'\r\n ){\r\n control = new SpiderlyFormControl(propInitialValue, { updateOn: 'change' });\r\n }\r\n else{\r\n control = new SpiderlyFormControl(propInitialValue, { updateOn: 'blur' });\r\n }\r\n \r\n control.label = formControlName;\r\n control.labelForDisplay = this.getTranslatedLabel(formControlName);\r\n control.parentClassName = targetClass.typeName;\r\n \r\n this.validatorService.setValidator(control, targetClass.typeName);\r\n\r\n formGroup.setControl(formControlName, control);\r\n }\r\n }\r\n });\r\n\r\n formGroup.targetClass = targetClass;\r\n\r\n return formGroup;\r\n }\r\n\r\n getTranslatedLabel(formControlName: string): string {\r\n if (formControlName.endsWith('Id') && formControlName.length > 2) {\r\n formControlName = formControlName.substring(0, formControlName.length - 2);\r\n } \r\n else if (formControlName.endsWith('DisplayName')) {\r\n formControlName = formControlName.replace('DisplayName', '');\r\n } \r\n\r\n return this.translateLabelsService.translate(formControlName);\r\n }\r\n\r\n addNewFormGroupToFormArray<T extends BaseEntity>(\r\n formArray: SpiderlyFormArray<T>, \r\n targetClass: SchemaAwareConstructor<T>,\r\n initialValues: T,\r\n index: number,\r\n ) : SpiderlyFormGroup {\r\n let helperFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, targetClass, initialValues);\r\n \r\n if (index == null) {\r\n formArray.push(helperFormGroup);\r\n }else{\r\n formArray.insert(index, helperFormGroup);\r\n }\r\n\r\n return helperFormGroup;\r\n }\r\n\r\n removeFormControlFromTheFormArray(formArray: SpiderlyFormArray, index: number) {\r\n if(index == null)\r\n throw new SpiderlyError('Can not pass null index.');\r\n\r\n formArray.removeAt(index);\r\n }\r\n\r\n initFormArray<T extends BaseEntity>(\r\n formArray: SpiderlyFormArray<T>,\r\n targetClass: SchemaAwareConstructor<T>,\r\n initialValues: T[] = [],\r\n )\r\n {\r\n if (!formArray)\r\n throw new SpiderlyError('You must pass a FormArray instance to be initialized or updated.');\r\n\r\n if (!targetClass)\r\n throw new SpiderlyError('You did not initialize targetClass');\r\n\r\n // formArray.required = required;\r\n formArray.formGroupInitialValues = {}; // When we need we can pass formGroupInitialValues to this method instead of assigning it to empty object\r\n formArray.targetClass = targetClass;\r\n\r\n initialValues.forEach((model, index) => {\r\n const existingControl = formArray.at(index);\r\n \r\n if (existingControl instanceof SpiderlyFormGroup) {\r\n this.initFormGroup(existingControl, targetClass, model);\r\n }\r\n else {\r\n let helperFormGroup: SpiderlyFormGroup = new SpiderlyFormGroup({});\r\n this.initFormGroup(helperFormGroup, targetClass, model);\r\n formArray.push(helperFormGroup);\r\n }\r\n });\r\n\r\n return formArray;\r\n }\r\n\r\n //#region Helpers\r\n\r\n showInvalidFieldsMessage = () => {\r\n this.messageService.warningMessage(\r\n this.translocoService.translate('YouHaveSomeInvalidFieldsDescription'),\r\n this.translocoService.translate('YouHaveSomeInvalidFieldsTitle'), \r\n );\r\n }\r\n\r\n generateNewNegativeId<T extends BaseEntity>(formArray: SpiderlyFormArray<T>){\r\n return -formArray.getRawValue().filter(x => x.id < 0).length - 1;\r\n }\r\n\r\n getSaveBodyMainDTOKey = (saveBodyClass: SchemaAwareConstructor<any>) => {\r\n const schema = saveBodyClass.schema;\r\n return Object.keys(schema).find(k => schema[k].isSaveBodyMainDTO === true);\r\n }\r\n\r\n mapMainUIFormToSaveBody = <T extends BaseEntity>(mainUIFormClass: SchemaAwareConstructor<T>, mainUIFormValues: T) => {\r\n let saveBody = {};\r\n\r\n Object.keys(mainUIFormClass.schema).forEach(propName => {\r\n const property = mainUIFormClass.schema[propName];\r\n const value = mainUIFormValues[propName];\r\n \r\n // Handle ordered one-to-many (e.g., \"orderedItemsMainUIFormDTO\" -> \"orderedItemsSaveBodyDTO\")\r\n if (propName.startsWith('ordered') && propName.endsWith('MainUIFormDTO')) {\r\n const newKey = propName.replace('MainUIFormDTO', 'SaveBodyDTO');\r\n // Recursively map nested DTOs\r\n const relatedEntity = property.nestedConstructor;\r\n saveBody[newKey] = value?.map(item => \r\n this.mapMainUIFormToSaveBody(relatedEntity, item)\r\n ) ?? [];\r\n }\r\n // Handle multi-select (e.g., \"itemsIds\" -> \"selectedItemsIds\")\r\n else if (propName.endsWith('Ids')) {\r\n saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];\r\n }\r\n // Handle multi-autocomplete (e.g., \"itemsNamebookDTOList\" -> \"selectedItemsIds\")\r\n else if (propName.endsWith('NamebookDTOList')) {\r\n saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];\r\n }\r\n // Handle the main DTO object (e.g., \"entityDTO\")\r\n else{\r\n saveBody[propName] = value;\r\n }\r\n });\r\n\r\n return saveBody;\r\n }\r\n\r\n isControlValid(\r\n control: SpiderlyFormControl | SpiderlyFormGroup | SpiderlyFormArray, \r\n controlNamesFromHtml?: string[]\r\n ): boolean {\r\n let invalid = false;\r\n\r\n if (control instanceof SpiderlyFormControl) {\r\n if (\r\n control.invalid &&\r\n (controlNamesFromHtml == null || controlNamesFromHtml?.includes(control.label))\r\n ) {\r\n control.markAsDirty();\r\n invalid = true;\r\n }\r\n }\r\n else if (control instanceof SpiderlyFormGroup) {\r\n Object.keys(control.controls).forEach(key => {\r\n const nestedControl = control.controls[key];\r\n if (!this.isControlValid(nestedControl, control.controlNamesFromHtml)) {\r\n invalid = true;\r\n }\r\n });\r\n }\r\n else if (control instanceof SpiderlyFormArray){\r\n control.controls.forEach((nestedControl: SpiderlyFormControl | SpiderlyFormGroup | SpiderlyFormArray) => {\r\n if (!this.isControlValid(nestedControl)) {\r\n invalid = true;\r\n }\r\n });\r\n }\r\n\r\n if (invalid) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class InitCompanyAuthDialogDetails extends BaseEntity\r\n{\r\n image?: string;\r\n companyName?: string;\r\n \r\n constructor(\r\n {\r\n image,\r\n companyName,\r\n }:{\r\n image?: string;\r\n companyName?: string;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.image = image;\r\n this.companyName = companyName;\r\n }\r\n\r\n static readonly typeName = 'InitCompanyAuthDialogDetails' as const;\r\n}","import { Inject, Injectable, OnDestroy, PLATFORM_ID } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { map, tap, delay, finalize } from 'rxjs/operators';\r\nimport { SocialUser, SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { ExternalProvider, Login, VerificationTokenRequest, AuthResult, RefreshTokenRequest, UserBase } from '../entities/security-entities';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { ApiSecurityService } from './api.service.security';\r\nimport { InitCompanyAuthDialogDetails } from '../entities/init-company-auth-dialog-details';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthBaseService implements OnDestroy {\r\n private readonly apiUrl: string = this.config.apiUrl;\r\n private timer?: Subscription;\r\n\r\n protected _currentUserPermissionCodes = new BehaviorSubject<string[] | null>(undefined);\r\n currentUserPermissionCodes$ = this._currentUserPermissionCodes.asObservable();\r\n\r\n protected _user = new BehaviorSubject<UserBase | null>(undefined);\r\n user$ = this._user.asObservable();\r\n\r\n // Google auth\r\n private authChangeSub = new Subject<boolean>();\r\n private extAuthChangeSub = new Subject<SocialUser>();\r\n public authChanged = this.authChangeSub.asObservable();\r\n public extAuthChanged = this.extAuthChangeSub.asObservable();\r\n \r\n constructor(\r\n protected router: Router,\r\n protected http: HttpClient,\r\n protected externalAuthService: SocialAuthService,\r\n protected apiService: ApiSecurityService,\r\n protected config: ConfigBaseService,\r\n @Inject(PLATFORM_ID) protected platformId: Object\r\n ) {\r\n if (isPlatformBrowser(platformId)) {\r\n window.addEventListener('storage', this.storageEventListener);\r\n }\r\n\r\n // Google auth\r\n this.externalAuthService.authState.subscribe((user) => {\r\n const externalAuth: ExternalProvider = {\r\n // provider: user.provider,\r\n idToken: user.idToken\r\n }\r\n this.loginExternal(externalAuth).subscribe(authResult => {\r\n this.onAfterLoginExternal();\r\n });\r\n this.extAuthChangeSub.next(user);\r\n });\r\n }\r\n\r\n private storageEventListener = (event: StorageEvent) => {\r\n if (event.storageArea === localStorage) {\r\n if (event.key === 'logout-event') {\r\n this.stopTokenTimer();\r\n this._user.next(null);\r\n\r\n this._currentUserPermissionCodes.next(null);\r\n }\r\n if (event.key === 'login-event') {\r\n this.stopTokenTimer();\r\n\r\n this.apiService.getCurrentUserBase().subscribe((user: UserBase) => {\r\n this._user.next({\r\n id: user.id,\r\n email: user.email\r\n });\r\n\r\n this.setCurrentUserPermissionCodes().subscribe();\r\n });\r\n }\r\n }\r\n }\r\n\r\n sendLoginVerificationEmail(body: Login): Observable<any> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n return this.apiService.sendLoginVerificationEmail(body);\r\n }\r\n\r\n login(body: VerificationTokenRequest): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/Login`, body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n loginExternal(body: ExternalProvider): Observable<Promise<AuthResult>> {\r\n const browserId = this.getBrowserId();\r\n body.browserId = browserId;\r\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/LoginExternal`, body);\r\n return this.handleLoginResult(loginResultObservable);\r\n }\r\n\r\n onAfterLoginExternal = () => {\r\n this.navigateToDashboard();\r\n }\r\n\r\n handleLoginResult(loginResultObservable: Observable<AuthResult>){\r\n return loginResultObservable.pipe(\r\n map(async (loginResult: AuthResult) => {\r\n this.setLocalStorage(loginResult);\r\n this._user.next({\r\n id: loginResult.userId,\r\n email: loginResult.email,\r\n });\r\n this.startTokenTimer();\r\n this.setCurrentUserPermissionCodes().subscribe()\r\n return loginResult;\r\n })\r\n );\r\n }\r\n\r\n logout() {\r\n const browserId = this.getBrowserId();\r\n this.http\r\n .get(`${this.apiUrl}/Security/Logout?browserId=${browserId}`)\r\n .pipe(\r\n finalize(() => {\r\n this.clearLocalStorage();\r\n this._user.next(null);\r\n this.onAfterLogout();\r\n this.stopTokenTimer();\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n onAfterLogout = () => {\r\n this._currentUserPermissionCodes.next(null);\r\n this.router.navigate([this.config.loginSlug]);\r\n }\r\n\r\n refreshToken(): Observable<AuthResult> {\r\n const refreshToken = localStorage.getItem(this.config.refreshTokenKey);\r\n\r\n if (!refreshToken) {\r\n this.clearLocalStorage();\r\n return of(null);\r\n }\r\n\r\n const browserId = this.getBrowserId();\r\n const body = new RefreshTokenRequest();\r\n body.browserId = browserId;\r\n body.refreshToken = refreshToken;\r\n \r\n return this.http\r\n .post<AuthResult>(`${this.apiUrl}/Security/RefreshToken`, body, this.config.httpSkipSpinnerOptions)\r\n .pipe(\r\n map((loginResult) => {\r\n this._user.next({\r\n id: loginResult.userId,\r\n email: loginResult.email\r\n });\r\n \r\n this.setLocalStorage(loginResult);\r\n this.startTokenTimer();\r\n this.onAfterRefreshToken();\r\n \r\n return loginResult;\r\n })\r\n );\r\n }\r\n\r\n onAfterRefreshToken = () => {\r\n this.setCurrentUserPermissionCodes().subscribe(); // FT: Needs to be after setting local storage\r\n }\r\n\r\n setLocalStorage(loginResult: AuthResult) {\r\n localStorage.setItem(this.config.accessTokenKey, loginResult.accessToken);\r\n localStorage.setItem(this.config.refreshTokenKey, loginResult.refreshToken);\r\n localStorage.setItem('login-event', 'login' + Math.random());\r\n }\r\n\r\n clearLocalStorage() {\r\n localStorage.removeItem(this.config.accessTokenKey);\r\n localStorage.removeItem(this.config.refreshTokenKey);\r\n localStorage.setItem('logout-event', 'logout' + Math.random());\r\n }\r\n\r\n getBrowserId(): string {\r\n let browserId = localStorage.getItem(this.config.browserIdKey); // FT: We don't need to remove this from the local storage ever, only if the user manuely deletes it, we will handle it\r\n if (!browserId) {\r\n browserId = crypto.randomUUID();\r\n localStorage.setItem(this.config.browserIdKey, browserId);\r\n }\r\n return browserId;\r\n }\r\n\r\n isAccessTokenExpired(): boolean {\r\n const expired = this.getTokenRemainingTime() < 5000;\r\n \r\n return expired;\r\n }\r\n\r\n getTokenRemainingTime(): number {\r\n const accessToken = this.getAccessToken();\r\n\r\n if (!accessToken) {\r\n return 0;\r\n }\r\n\r\n const jwtToken = JSON.parse(atob(accessToken.split('.')[1]));\r\n const expires = new Date(jwtToken.exp * 1000);\r\n \r\n return expires.getTime() - Date.now();\r\n }\r\n\r\n getAccessToken(): string {\r\n if (isPlatformBrowser(this.platformId)) {\r\n return localStorage.getItem(this.config.accessTokenKey);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private startTokenTimer() {\r\n const timeout = this.getTokenRemainingTime();\r\n this.timer = of(true)\r\n .pipe(\r\n delay(timeout),\r\n tap({\r\n next: () => this.refreshToken().subscribe(),\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private stopTokenTimer() {\r\n this.timer?.unsubscribe();\r\n }\r\n\r\n navigateToDashboard(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n initCompanyAuthDialogDetails = (): Observable<InitCompanyAuthDialogDetails> => {\r\n return of(\r\n new InitCompanyAuthDialogDetails ({\r\n image: this.config.logoPath, \r\n companyName: this.config.companyName,\r\n })\r\n );\r\n }\r\n\r\n setCurrentUserPermissionCodes(): Observable<string[]> {\r\n return this.apiService.getCurrentUserPermissionCodes().pipe(\r\n map(permissionCodes => {\r\n this._currentUserPermissionCodes.next(permissionCodes);\r\n return permissionCodes;\r\n }\r\n ));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n window.removeEventListener('storage', this.storageEventListener.bind(this));\r\n }\r\n \r\n this.onAfterNgOnDestroy();\r\n }\r\n\r\n onAfterNgOnDestroy = () => {};\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { firstValueFrom, forkJoin } from 'rxjs';\r\nimport { SpiderlyMultiAutocompleteComponent } from '../../controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nimport { SpiderlyMultiSelectComponent } from '../../controls/spiderly-multiselect/spiderly-multiselect.component';\r\nimport { SpiderlyTextareaComponent } from '../../controls/spiderly-textarea/spiderly-textarea.component';\r\nimport { SpiderlyTextboxComponent } from '../../controls/spiderly-textbox/spiderly-textbox.component';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { IsAuthorizedForSaveEvent } from '../../entities/is-authorized-for-save-event';\r\nimport { LastMenuIconIndexClicked } from '../../entities/last-menu-icon-index-clicked';\r\nimport { Namebook } from '../../entities/namebook';\r\nimport { RoleMainUIForm, RoleSaveBody } from '../../entities/security-entities';\r\nimport { SpiderlyButton } from '../../entities/spiderly-button';\r\nimport { ApiSecurityService } from '../../services/api.service.security';\r\nimport { AuthBaseService } from '../../services/auth-base.service';\r\nimport { BaseFormService } from '../../services/base-form.service';\r\nimport { CardSkeletonComponent } from '../card-skeleton/card-skeleton.component';\r\nimport { SpiderlyReturnButtonComponent } from '../spiderly-buttons/return-button/return-button.component';\r\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { SpiderlyFormArray, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyPanelsModule } from '../spiderly-panels/spiderly-panels.module';\r\n\r\n@Component({\r\n selector: 'role-base-details',\r\n templateUrl: 'role-base-details.component.html',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n CardSkeletonComponent,\r\n SpiderlyTextboxComponent,\r\n SpiderlyTextareaComponent,\r\n SpiderlyMultiAutocompleteComponent,\r\n SpiderlyMultiSelectComponent,\r\n SpiderlyPanelsModule,\r\n SpiderlyButtonComponent,\r\n SpiderlyReturnButtonComponent\r\n ]\r\n})\r\nexport class RoleBaseDetailsComponent { \r\n @Output() onSave = new EventEmitter<void>();\r\n @Output() onAfterFormGroupInit = new EventEmitter<void>();\r\n @Input() getCrudMenuForOrderedData: (formArray: SpiderlyFormArray, modelConstructor: BaseEntity, lastMenuIconIndexClicked: LastMenuIconIndexClicked, adjustFormArrayManually: boolean) => MenuItem[];\r\n @Input() parentFormGroup: SpiderlyFormGroup<RoleMainUIForm>;\r\n @Input() additionalButtons: SpiderlyButton[] = [];\r\n @Input() panelTitle: string;\r\n @Input() showBigPanelTitle: boolean = true;\r\n @Input() panelIcon: string;\r\n\r\n @Input() handleAdditionalSaveAuthorization: () => Promise<boolean> = () => Promise.resolve(true);\r\n isAuthorizedForSave: boolean = false;\r\n @Output() onIsAuthorizedForSaveChange = new EventEmitter<IsAuthorizedForSaveEvent>(); \r\n \r\n modelId: number;\r\n loading: boolean = true;\r\n\r\n usersForRoleOptions: Namebook[];\r\n permissionsForRoleOptions: Namebook[];\r\n\r\n constructor(\r\n private apiService: ApiSecurityService,\r\n private route: ActivatedRoute,\r\n private baseFormService: BaseFormService,\r\n private authService: AuthBaseService\r\n ) {}\r\n\r\n ngOnInit(){\r\n this.parentFormGroup.initSaveBody = () => { \r\n let saveBody = new RoleSaveBody();\r\n saveBody = this.baseFormService.mapMainUIFormToSaveBody(RoleMainUIForm, this.parentFormGroup.getRawValue());\r\n return saveBody;\r\n }\r\n\r\n this.parentFormGroup.saveObservableMethod = this.apiService.saveRole;\r\n\r\n this.route.params.subscribe(async (params) => {\r\n this.modelId = params['id'];\r\n\r\n this.apiService.getPermissionsDropdownListForRole().subscribe(po => {\r\n this.permissionsForRoleOptions = po;\r\n });\r\n\r\n if(this.modelId > 0){\r\n forkJoin({\r\n mainUIFormDTO: this.apiService.getRoleMainUIFormDTO(this.modelId)\r\n })\r\n .subscribe(async ({ mainUIFormDTO }) => {\r\n this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm, mainUIFormDTO);\r\n await this.handleAuthorizationForSave();\r\n this.loading = false;\r\n this.onAfterFormGroupInit.next();\r\n });\r\n }\r\n else{\r\n this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm);\r\n await this.handleAuthorizationForSave();\r\n this.loading = false;\r\n this.onAfterFormGroupInit.next();\r\n }\r\n });\r\n }\r\n\r\n handleAuthorizationForSave = async () => {\r\n const currentUserPermissionCodes = await firstValueFrom(this.authService.currentUserPermissionCodes$);\r\n const isAdditionallyAuthorizedForSave = await this.handleAdditionalSaveAuthorization(); \r\n\r\n this.isAuthorizedForSave =\r\n (currentUserPermissionCodes.includes('InsertRole') && this.modelId <= 0) || \r\n (currentUserPermissionCodes.includes('UpdateRole') && this.modelId > 0) ||\r\n isAdditionallyAuthorizedForSave;\r\n\r\n if (this.isAuthorizedForSave) { \r\n this.parentFormGroup.enable();\r\n }\r\n else{\r\n this.parentFormGroup.disable();\r\n }\r\n\r\n this.onIsAuthorizedForSaveChange.next(\r\n new IsAuthorizedForSaveEvent({\r\n isAuthorizedForSave: this.isAuthorizedForSave,\r\n })\r\n );\r\n };\r\n\r\n searchUsersForRole(event: AutoCompleteCompleteEvent) {\r\n this.apiService.getUsersAutocompleteListForRole(50, event?.query ?? '').subscribe(no => {\r\n this.usersForRoleOptions = no;\r\n });\r\n }\r\n\r\n save(){\r\n this.onSave.next();\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header [title]=\"panelTitle\" [showBigTitle]=\"showBigPanelTitle\" [icon]=\"panelIcon\"></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"parentFormGroup.controls.roleDTO.getControl('name')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"parentFormGroup.controls.roleDTO.getControl('description')\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"parentFormGroup.controls.usersNamebookDTOList\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"parentFormGroup.controls.permissionsIds\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { BaseEntity, SchemaAwareConstructor } from '../../entities/base-entity';\r\nimport { SpiderlyError } from '../../errors/spiderly-error';\r\nimport { getParentUrl } from '../../services/helper-functions';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\r\nimport { BaseFormService } from './../../services/base-form.service';\r\n\r\n@Component({\r\n selector: 'base-form',\r\n template: '',\r\n styles: [],\r\n standalone: false\r\n})\r\nexport class BaseFormCopy<T extends BaseEntity = any> implements OnInit { \r\n parentFormGroup = new SpiderlyFormGroup<T>({} as any);\r\n mainUIFormClass: SchemaAwareConstructor<any>;\r\n saveBodyClass: SchemaAwareConstructor<any>;\r\n saveBody: any;\r\n successfulSaveToastDescription: string = this.translocoService.translate('SuccessfulSaveToastDescription');\r\n\r\n private modelDiffer: KeyValueDiffer<string, any>;\r\n\r\n constructor(\r\n protected differs: KeyValueDiffers, \r\n protected http: HttpClient, \r\n protected messageService: SpiderlyMessageService, \r\n protected changeDetectorRef: ChangeDetectorRef,\r\n protected router: Router, \r\n protected route: ActivatedRoute,\r\n protected translocoService: TranslocoService,\r\n protected baseFormService: BaseFormService,\r\n ) {\r\n }\r\n \r\n ngOnInit(){\r\n\r\n }\r\n\r\n //#region Model\r\n\r\n // onSave method is here only because of the hooks, we should move everything except them to the BaseFromService\r\n onSave = (reroute: boolean = true) => {\r\n if (!this.saveBodyClass)\r\n throw new SpiderlyError('You did not initialize saveBodyClass');\r\n\r\n if (!this.mainUIFormClass)\r\n throw new SpiderlyError('You did not initialize mainUIFormClass');\r\n\r\n this.saveBody = this.parentFormGroup.initSaveBody();\r\n \r\n this.onBeforeSave(this.saveBody);\r\n\r\n this.saveBody = this.saveBody ?? this.parentFormGroup.getRawValue();\r\n\r\n const isValid = this.baseFormService.isControlValid(this.parentFormGroup);\r\n\r\n if(isValid){\r\n this.parentFormGroup.saveObservableMethod(this.saveBody).subscribe(res => {\r\n this.messageService.successMessage(this.successfulSaveToastDescription);\r\n\r\n this.baseFormService.initFormGroup(this.parentFormGroup, this.mainUIFormClass, res);\r\n\r\n if (reroute) {\r\n const saveBodyMainDTOKey = this.baseFormService.getSaveBodyMainDTOKey(this.saveBodyClass);\r\n const savedObjectId = res[saveBodyMainDTOKey]?.id;\r\n this.rerouteToSavedObject(savedObjectId); // You always need to have id, because of id == 0 and version change\r\n }\r\n \r\n this.onAfterSave();\r\n });\r\n \r\n this.onAfterSaveRequest();\r\n }else{\r\n this.baseFormService.showInvalidFieldsMessage();\r\n }\r\n }\r\n\r\n rerouteToSavedObject = (rerouteId: number | string): void => {\r\n if(rerouteId == null){\r\n const currentUrl = this.router.url;\r\n const parentUrl: string = getParentUrl(currentUrl);\r\n this.router.navigateByUrl(parentUrl);\r\n return;\r\n }\r\n \r\n const segments = this.router.url.split('/');\r\n segments[segments.length - 1] = rerouteId.toString();\r\n\r\n const newUrl = segments.join('/');\r\n this.router.navigateByUrl(newUrl);\r\n }\r\n\r\n onBeforeSave = (saveBody?: any) => {}\r\n onAfterSave = () => {}\r\n onAfterSaveRequest = () => {}\r\n\r\n //#endregion\r\n\r\n //#region Model List\r\n \r\n getFormArrayControlByIndex<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, index: number, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl {\r\n // if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n // formArray.controlNamesFromHtml.push(formControlName);\r\n\r\n let filteredFormGroups: SpiderlyFormGroup<T>[];\r\n\r\n if (filter) {\r\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\r\n }\r\n else{\r\n return (formArray.controls[index] as SpiderlyFormGroup<T>).controls[formControlName] as SpiderlyFormControl;\r\n }\r\n\r\n return filteredFormGroups[index]?.controls[formControlName] as SpiderlyFormControl; // FT: Don't change this. It's always possible that change detection occurs before something.\r\n }\r\n\r\n getFormArrayControls<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl[] {\r\n // if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\r\n // formArray.controlNamesFromHtml.push(formControlName);\r\n\r\n let filteredFormGroups: SpiderlyFormGroup<T>[];\r\n\r\n if (filter) {\r\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\r\n }\r\n else{\r\n return (formArray.controls as SpiderlyFormGroup<T>[]).map(x => x.controls[formControlName] as SpiderlyFormControl);\r\n }\r\n\r\n return filteredFormGroups.map(x => x.controls[formControlName] as SpiderlyFormControl);\r\n }\r\n\r\n removeFormControlsFromTheFormArray(formArray: SpiderlyFormArray, indexes: number[]) {\r\n // Sort indexes in descending order to avoid index shifts when removing controls\r\n const sortedIndexes = indexes.sort((a, b) => b - a);\r\n\r\n sortedIndexes.forEach(index => {\r\n if (index >= 0 && index < formArray.length) {\r\n formArray.removeAt(index);\r\n }\r\n });\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, KeyValueDiffers, OnInit, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { VerificationTokenRequest } from '../../../entities/security-entities';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { SpiderlyPanelsModule } from '../../spiderly-panels/spiderly-panels.module';\r\n\r\n@Component({\r\n selector: 'verification-wrapper',\r\n templateUrl: './verification-wrapper.component.html',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SpiderlyControlsModule,\r\n SpiderlyPanelsModule,\r\n ButtonModule,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class VerificationWrapperComponent extends BaseFormCopy implements OnInit {\r\n verificationTokenRequestFormGroup = new SpiderlyFormGroup<VerificationTokenRequest>({});\r\n\r\n @Input() email: string;\r\n @Output() onResendVerificationToken: EventEmitter<any> = new EventEmitter();\r\n @Output() onCodeSubmit: EventEmitter<string> = new EventEmitter();\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n ) { \r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initVerificationTokenRequestFormGroup(new VerificationTokenRequest({email: this.email}));\r\n }\r\n\r\n initVerificationTokenRequestFormGroup(model: VerificationTokenRequest){\r\n this.baseFormService.initFormGroup(this.verificationTokenRequestFormGroup, VerificationTokenRequest, model, ['verificationCode']);\r\n }\r\n\r\n codeSubmit(){\r\n let isValid: boolean = this.baseFormService.isControlValid(this.verificationTokenRequestFormGroup);\r\n \r\n if(isValid){\r\n this.onCodeSubmit.next(this.verificationTokenRequestFormGroup.controls.verificationCode.getRawValue());\r\n }\r\n }\r\n\r\n resendVerificationToken(){\r\n this.onResendVerificationToken.next(null);\r\n }\r\n\r\n}\r\n\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\r\n <div class=\"dialog\" style=\"padding: 0px;\">\r\n @if (verificationTokenRequestFormGroup != null) {\r\n <spiderly-panel>\r\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\r\n \r\n <panel-body>\r\n <form class=\"grid\">\r\n <div class=\"col-12\">\r\n <div style=\"font-size: 17.5px\">{{t('AccountVerificationTitle')}}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n {{t('AccountVerificationDescription', {email: email})}}\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"verificationTokenRequestFormGroup.getControl('verificationCode')\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\" type=\"submit\"></spiderly-button>\r\n </div>\r\n </form>\r\n </panel-body>\r\n \r\n <panel-footer>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\r\n </panel-footer>\r\n <panel-footer>\r\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\r\n </panel-footer>\r\n </spiderly-panel>\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n </div>\r\n </div>\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { VerificationWrapperComponent } from './verification-wrapper.component';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\n\r\n@Component({\n selector: 'login-verification',\n templateUrl: './login-verification.component.html',\n imports: [\n VerificationWrapperComponent\n ]\n})\r\nexport class LoginVerificationComponent implements OnInit {\r\n @Input() email: string;\r\n @Input() userId: number;\r\n\r\n constructor(\r\n private authService: AuthBaseService, \r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n \r\n resendVerificationToken(){\r\n this.authService.sendLoginVerificationEmail({email: this.email}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullySentVerificationCode'));\r\n });\r\n }\r\n\r\n onCodeSubmit(event: string){\r\n this.authService.login({email: this.email, verificationCode: event}).subscribe(() => {\r\n this.messageService.successMessage(this.translocoService.translate('YouHaveSuccessfullyVerifiedYourAccount'));\r\n this.authService.navigateToDashboard();\r\n });\r\n }\r\n}\r\n\r\n","<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\r\n\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\r\nimport { createFakeGoogleWrapper } from \"../../../services/helper-functions\";\r\n\r\n@Component({\r\n selector: 'google-button',\r\n templateUrl: './google-button.component.html',\r\n styles: [],\r\n imports: [\r\n ButtonModule,\r\n SpiderlyButtonComponent\r\n ]\r\n})\r\nexport class GoogleButtonComponent {\r\n @Input() label: string;\r\n @Output() loginWithGoogle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n handleGoogleLogin() {\r\n this.loginWithGoogle.emit(createFakeGoogleWrapper());\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n google: any;\r\n }\r\n}","<ng-container>\r\n <spiderly-button (onClick)=\"handleGoogleLogin()\" [label]=\"label\" [outlined]=\"true\" [style]=\"{width: '100%'}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0.98em\" height=\"1em\" viewBox=\"0 0 256 262\"><path fill=\"#4285f4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"/><path fill=\"#34a853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"/><path fill=\"#fbbc05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z\"/><path fill=\"#eb4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"/></svg>\r\n </spiderly-button>\r\n</ng-container>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TranslocoDirective } from \"@jsverse/transloco\";\r\nimport { GoogleButtonComponent } from \"../../spiderly-buttons/google-button/google-button.component\";\r\nimport { ConfigBaseService } from \"../../../services/config-base.service\";\r\nimport { AuthBaseService } from \"../../../services/auth-base.service\";\r\n\r\n@Component({\r\n selector: 'auth',\r\n templateUrl: './auth.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n GoogleButtonComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class AuthComponent {\r\n private initCompanyAuthDialogDetailsSubscription: Subscription | null = null;\r\n\r\n @Output() onCompanyNameChange: EventEmitter<string> = new EventEmitter();\r\n @Input() showGoogleAuth: boolean = true;\r\n\r\n hasGoogleAuth: boolean = this.config.googleAuth;\r\n companyName: string;\r\n image: string;\r\n \r\n constructor(\r\n private config: ConfigBaseService,\r\n private authService: AuthBaseService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n this.initCompanyDetails();\r\n }\r\n\r\n initCompanyDetails() {\r\n this.initCompanyAuthDialogDetailsSubscription = this.authService.initCompanyAuthDialogDetails().subscribe(initCompanyAuthDialogDetails => {\r\n if (initCompanyAuthDialogDetails != null) {\r\n this.image = initCompanyAuthDialogDetails.image;\r\n this.companyName = initCompanyAuthDialogDetails.companyName;\r\n this.onCompanyNameChange.next(this.companyName);\r\n }\r\n })\r\n }\r\n\r\n onGoogleSignIn(googleWrapper: any){\r\n googleWrapper.click();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.initCompanyAuthDialogDetailsSubscription) {\r\n this.initCompanyAuthDialogDetailsSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n\r\n","<ng-container *transloco=\"let t\">\r\n <div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\" style=\"margin-bottom: 38px;\">\r\n <img *ngIf=\"image != null\" [src]=\"image\" alt=\"{{companyName}} Logo\" title=\"{{companyName}} Logo\" height=\"60\">\r\n <i *ngIf=\"image == null\" class=\"pi pi-spin pi-spinner primary-color\" style=\"font-size: 2rem\"></i>\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n \r\n <div *ngIf=\"hasGoogleAuth && showGoogleAuth\">\r\n <div style=\"display: flex; align-items: center; gap: 7px; justify-content: center; margin-bottom: 16px;\">\r\n <div class=\"separator\"></div>\r\n <div>{{t('or')}}</div>\r\n <div class=\"separator\"></div>\r\n </div>\r\n <div>\r\n <!-- https://code-maze.com/how-to-sign-in-with-google-angular-aspnet-webapi/ -->\r\n <google-button (loginWithGoogle)=\"onGoogleSignIn($event)\" [label]=\"t('ContinueWithGoogle')\"></google-button> \r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { Login } from '../../../entities/security-entities';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { BaseFormService } from '../../../services/base-form.service';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\r\nimport { BaseFormCopy } from '../../base-form/base-form copy';\r\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { AuthComponent } from '../partials/auth.component';\r\nimport { LoginVerificationComponent } from '../partials/login-verification.component';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AuthComponent,\r\n SpiderlyControlsModule,\r\n LoginVerificationComponent,\r\n TranslocoDirective,\r\n ]\r\n})\r\nexport class LoginComponent extends BaseFormCopy implements OnInit {\r\n loginFormGroup = new SpiderlyFormGroup<Login>({});\r\n\r\n companyName: string;\r\n showEmailSentDialog: boolean = false;\r\n\r\n constructor(\r\n protected override differs: KeyValueDiffers,\r\n protected override http: HttpClient,\r\n protected override messageService: SpiderlyMessageService, \r\n protected override changeDetectorRef: ChangeDetectorRef,\r\n protected override router: Router, \r\n protected override route: ActivatedRoute,\r\n protected override translocoService: TranslocoService,\r\n protected override baseFormService: BaseFormService,\r\n private authService: AuthBaseService, \r\n private config: ConfigBaseService\r\n ) { \r\n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\r\n }\r\n\r\n override ngOnInit(){\r\n this.initLoginFormGroup(new Login({}));\r\n }\r\n \r\n initLoginFormGroup(model: Login){\r\n this.baseFormService.initFormGroup(this.loginFormGroup, Login, model, ['email']);\r\n }\r\n\r\n companyNameChange(companyName: string){\r\n this.companyName = companyName;\r\n }\r\n\r\n sendLoginVerificationEmail() {\r\n let isFormGroupValid: boolean = this.baseFormService.isControlValid(this.loginFormGroup);\r\n \r\n if (isFormGroupValid == false) \r\n return;\r\n\r\n this.authService.sendLoginVerificationEmail(this.loginFormGroup.getRawValue()).subscribe(()=>{\r\n this.showEmailSentDialog = true;\r\n });\r\n }\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n @if (loginFormGroup != null) {\r\n @if (showEmailSentDialog == false) {\r\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\r\n <form [formGroup]=\"loginFormGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\r\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\r\n <spiderly-textbox [control]=\"loginFormGroup.getControl('email')\"></spiderly-textbox>\r\n </div>\r\n \r\n <div class=\"mb-4 gap-5\">\r\n <div class=\"text-center\" style=\"font-size: smaller;\">\r\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\r\n </div>\r\n </div>\r\n\r\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\" type=\"submit\"></spiderly-button>\r\n </div>\r\n </form>\r\n </auth>\r\n }\r\n @else {\r\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\r\n }\r\n }\r\n @else {\r\n <!-- TODO FT: Add skeleton -->\r\n }\r\n</ng-container>","import { Component } from '@angular/core';\r\nimport { ConfigBaseService } from '../../services/config-base.service'\r\n\r\n@Component({\r\n selector: 'footer',\r\n templateUrl: './footer.component.html',\r\n standalone: true\r\n})\r\nexport class FooterComponent {\r\n companyName: string = this.config.companyName;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\r\n}\r\n","<div class=\"layout-footer\">\r\n <span class=\"font-medium ml-2\">{{companyName}}</span>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\r\n\r\n@Component({\r\n selector: 'index-card',\r\n templateUrl: './index-card.component.html',\r\n imports: [\r\n CommonModule,\r\n SpiderlyPanelsModule\r\n ]\r\n})\r\nexport class IndexCardComponent {\r\n @Input() last: boolean;\r\n @Input() index: number;\r\n @Input() header: string = '';\r\n @Input() description: string;\r\n @Input() showRemoveIcon: boolean;\r\n @Input() showCrudMenu: boolean = true;\r\n\r\n @Input() crudMenu: MenuItem[];\r\n\r\n @Output() onMenuIconClick = new EventEmitter<number>();\r\n @Output() onRemoveIconClick = new EventEmitter<null>();\r\n \r\n constructor(\r\n protected formBuilder: FormBuilder,\r\n ) {\r\n }\r\n \r\n ngOnInit(){\r\n }\r\n\r\n menuIconClick(index: number){\r\n this.onMenuIconClick.next(index);\r\n }\r\n\r\n removeIconClick(){\r\n this.onRemoveIconClick.next(null);\r\n }\r\n\r\n}","<div [ngClass]=\"{\r\n\t'last-child-zero-margin': last,\r\n 'card-margin-bottom': true,\r\n\t}\">\r\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\r\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\r\n\t\t\r\n\t\t<panel-body>\r\n\t\t\t<ng-content>\r\n\t\t\t\t<!-- Custom things below description -->\r\n\t\t\t</ng-content>\r\n\t\t</panel-body>\r\n\t\t\r\n\t</spiderly-panel>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\r\n\r\n@Component({\r\n selector: 'info-card',\r\n templateUrl: './info-card.component.html',\r\n styleUrl: './info-card.component.scss',\r\n imports: [\r\n CommonModule,\r\n SpiderlyPanelsModule\r\n ]\r\n})\r\nexport class InfoCardComponent {\r\n @Input() header = '';\r\n @Input() showSmallIcon = true;\r\n @Input() icon = 'pi pi-info-circle';\r\n @Input() textColor = '';\r\n \r\n constructor(\r\n protected formBuilder: FormBuilder,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(){\r\n }\r\n\r\n}","<div class=\"card responsive-card-padding info-card\">\r\n <div class=\"info-card__content\">\r\n <div>\r\n <div class=\"info-card__header\">\r\n <i *ngIf=\"showSmallIcon\" class=\"{{icon}} info-card__icon\"></i>\r\n {{header}}\r\n </div>\r\n <div class=\"info-card__body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"info-card__background-icon\">\r\n <i class=\"{{icon}}\"></i>\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\nimport { ConfigBaseService } from '../../services/config-base.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n selector: 'not-found',\r\n templateUrl: './not-found.component.html',\r\n imports: [\r\n RouterModule,\r\n ButtonModule,\r\n ]\r\n})\r\nexport class NotFoundComponent { \r\n companyName = this.config.companyName;\r\n logoPath: string = this.config.logoPath;\r\n\r\n constructor(\r\n private config: ConfigBaseService\r\n ) { \r\n\r\n }\r\n}","<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\r\n <div class=\"flex flex-column w-full\">\r\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\r\n <div class=\"text-center\">\r\n <img \r\n [src]=\"logoPath\" \r\n alt=\"{{companyName}} Logo\" \r\n title=\"{{companyName}} Logo\" \r\n height=\"60\"\r\n class=\"mb-4\"\r\n >\r\n </div>\r\n <h1 class=\"mb-4\">\r\n <div class=\"font-bold text-5xl lg:text-6xl spiderly-gradient-title\">404</div>\r\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\r\n </h1>\r\n <div class=\"text-600 text-lg mb-5\">\r\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\r\n </div>\r\n <div>\r\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { SplitButtonModule } from \"primeng/splitbutton\";\r\n\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\r\n\r\n@Component({\r\n selector: 'spiderly-split-button',\r\n templateUrl: './spiderly-split-button.component.html',\r\n styles: [],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SplitButtonModule\r\n ]\r\n})\r\nexport class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {\r\n @Input() dropdownItems: MenuItem[];\r\n\r\n\r\n\r\n}","<p-splitButton\r\n(onClick)=\"handleClick($event)\" \r\n[label]=\"label\" \r\n[icon]=\"icon\" \r\n[outlined]=\"outlined\" \r\n[styleClass]=\"styleClass\" \r\n[severity]=\"severity\" \r\n[rounded]=\"rounded\"\r\n[style]=\"style\"\r\n[class]=\"class\"\r\n[disabled]=\"disabled\"\r\n[model]=\"dropdownItems\"\r\n>\r\n <ng-content></ng-content>\r\n</p-splitButton>","export enum MatchModeCodes\r\n{\r\n StartsWith,\r\n Contains,\r\n Equals,\r\n LessThan,\r\n GreaterThan,\r\n In,\r\n}","import { ConfirmationService } from 'primeng/api';\r\nimport { Component } from \"@angular/core\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\n\r\n@Component({\r\n selector: 'spiderly-delete-confirmation',\r\n templateUrl: './spiderly-delete-confirmation.component.html',\r\n styles: [],\r\n imports: [\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n ConfirmDialogModule,\r\n ],\r\n providers: [\r\n ConfirmationService\r\n ]\r\n})\r\nexport class SpiderlyDeleteConfirmationComponent {\r\n\r\n constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) {}\r\n\r\n accept(){\r\n this.config.data.deleteItemFromTableObservableMethod(this.config.data.id).subscribe({\r\n next: () => {\r\n this.ref.close(true); // deleted succesfully\r\n },\r\n error: () => {\r\n this.ref.close(false); // not deleted succesfully\r\n },\r\n });\r\n }\r\n\r\n reject(){\r\n this.ref.close(false);\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <p-confirmDialog \r\n #cd \r\n ></p-confirmDialog>\r\n <div\r\n class=\"border-bottom-1 surface-border text-lg\"\r\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\r\n >\r\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\r\n <p>{{t('PleaseConfirmToProceed')}}</p>\r\n </div>\r\n \r\n <div style=\"display: flex; gap: 12px; justify-content: right; margin-top: 28px;\">\r\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancel')\" severity=\"secondary\"></spiderly-button>\r\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\r\n </div>\r\n</ng-container>\r\n","import { CommonModule, formatDate } from '@angular/common';\r\nimport { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { Table, TableFilterEvent, TableLazyLoadEvent, TableModule } from 'primeng/table';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { firstValueFrom, Observable } from 'rxjs';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { Filter } from '../../entities/filter';\r\nimport { LazyLoadSelectedIdsResult } from '../../entities/lazy-load-selected-ids-result';\r\nimport { PaginatedResult } from '../../entities/paginated-result';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\r\nimport { exportListToExcel, getHtmlImgDisplayString64 } from '../../services/helper-functions';\r\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\r\nimport { SpiderlyDeleteConfirmationComponent } from '../spiderly-delete-dialog/spiderly-delete-confirmation.component';\r\nimport { SpiderlyFormControl } from '../spiderly-form-control/spiderly-form-control';\r\n\r\n@Component({\r\n selector: 'spiderly-data-table',\r\n templateUrl: './spiderly-data-table.component.html',\r\n styleUrl: 'spiderly-data-table.component.scss',\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n DatePickerModule,\r\n CheckboxModule,\r\n TooltipModule,\r\n ]\r\n})\r\nexport class SpiderlyDataTableComponent implements OnInit {\r\n @ViewChild('dt') table: Table;\r\n @Input() tableTitle: string;\r\n @Input() tableIcon: string = 'pi pi-list';\r\n @Input() items: any[]; // Pass only when hasLazyLoad === false\r\n @Input() rows: number = 10;\r\n @Input() cols: Column[];\r\n @Input() showPaginator: boolean = true; // Pass only when hasLazyLoad === false\r\n @Input() showCardWrapper: boolean = false;\r\n @Input() readonly: boolean = false;\r\n @Input() idField = 'id';\r\n totalRecords: number;\r\n @Output() onTotalRecordsChange: EventEmitter<number> = new EventEmitter();\r\n \r\n @Input() getPaginatedListObservableMethod: (tableFilter: Filter) => Observable<PaginatedResult>;\r\n @Input() exportListToExcelObservableMethod: (tableFilter: Filter) => Observable<any>;\r\n @Input() deleteItemFromTableObservableMethod: (rowId: number) => Observable<any>;\r\n\r\n lastLazyLoadEvent: TableLazyLoadEvent;\r\n loading: boolean = true;\r\n \r\n @Input() newlySelectedItems: number[] = [];\r\n fakeSelectedItems: number[] = []; // Only for showing checkboxes, we will not send this to the backend\r\n currentPageSelectedItemsFromDb: number[] = []; // Made so we can add only newly selected items to the newlySelectedItems\r\n @Input() unselectedItems: number[] = [];\r\n @Input() selectionMode: 'single' | 'multiple' | undefined | null;\r\n @Output() onLazyLoad: EventEmitter<Filter> = new EventEmitter();\r\n rowsSelectedNumber: number = 0;\r\n isAllSelected: boolean = null;\r\n fakeIsAllSelected: boolean = false; // Only for showing checkboxes, we will not send this to the backend\r\n isFirstTimeLazyLoad: boolean = true;\r\n @Output() onIsAllSelectedChange: EventEmitter<AllClickEvent> = new EventEmitter();\r\n @Input() selectedLazyLoadObservableMethod: (tableFilter: Filter) => Observable<LazyLoadSelectedIdsResult>;\r\n @Input() additionalFilterIdLong: number;\r\n \r\n matchModeDateOptions: SelectItem[] = [];\r\n matchModeNumberOptions: SelectItem[] = [];\r\n @Input() showAddButton: boolean = true; \r\n @Input() showExportToExcelButton: boolean = true;\r\n @Input() showReloadTableButton: boolean = false;\r\n\r\n deleteRef: DynamicDialogRef;\r\n\r\n // Client side table\r\n // @Input() formArrayItems: any[]; // Pass this only if you have some additional logic for showing data\r\n @Input() getFormArrayItems: (additionalIndexes?: any) => any[];\r\n @Input() hasLazyLoad: boolean = true; \r\n selectedItemIds: number[] = []; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getAlreadySelectedItemIds: (additionalIndexes?: any) => number[]; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n selectedItems: any[] = []; // Pass only when hasLazyLoad === false\r\n @Input() getAlreadySelectedItems: (additionalIndexes?: any) => any[]; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\r\n @Input() getFormControl: (formControlName: string, index: number, additionalIndexes?: any) => SpiderlyFormControl;\r\n @Input() additionalIndexes: any;\r\n @Output() onRowSelect: EventEmitter<RowClickEvent> = new EventEmitter();\r\n @Output() onRowUnselect: EventEmitter<RowClickEvent> = new EventEmitter();\r\n\r\n constructor(\r\n private router: Router,\r\n private dialogService: DialogService,\r\n private route: ActivatedRoute,\r\n private messageService: SpiderlyMessageService,\r\n private translocoService: TranslocoService,\r\n @Inject(LOCALE_ID) private locale: string\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.matchModeDateOptions = [\r\n { label: this.translocoService.translate('OnDate'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n\r\n if (this.hasLazyLoad === false) {\r\n this.clientLoad();\r\n }\r\n }\r\n \r\n lazyLoad(event: TableLazyLoadEvent) {\r\n this.lastLazyLoadEvent = event;\r\n\r\n let tableFilter: Filter = event as unknown as Filter;\r\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getPaginatedListObservableMethod(tableFilter).subscribe({\r\n next: async (res) => { \r\n this.items = res.data;\r\n this.totalRecords = res.totalRecords;\r\n this.onTotalRecordsChange.next(res.totalRecords);\r\n \r\n if (this.selectedLazyLoadObservableMethod != null) {\r\n let selectedRowsMethodResult: LazyLoadSelectedIdsResult = await firstValueFrom(this.selectedLazyLoadObservableMethod(tableFilter));\r\n \r\n this.currentPageSelectedItemsFromDb = [...selectedRowsMethodResult.selectedIds];\r\n\r\n if (this.isFirstTimeLazyLoad == true) {\r\n this.rowsSelectedNumber = selectedRowsMethodResult.totalRecordsSelected;\r\n this.setFakeIsAllSelected();\r\n this.isFirstTimeLazyLoad = false;\r\n }\r\n \r\n if (this.isAllSelected == true) {\r\n let idsToInsert = [...this.items.map(x => x[this.idField])];\r\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\r\n this.fakeSelectedItems = [...idsToInsert]; // Only for showing checkboxes, we will not send this to the backend\r\n }\r\n else if (this.isAllSelected == false) {\r\n this.fakeSelectedItems = [...this.newlySelectedItems]; // Only for showing checkboxes, we will not send this to the backend\r\n }\r\n else if (this.isAllSelected == null) {\r\n let idsToInsert = [...selectedRowsMethodResult.selectedIds, ...this.newlySelectedItems];\r\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\r\n this.fakeSelectedItems = [...idsToInsert];\r\n }\r\n }\r\n\r\n this.loading = false;\r\n },\r\n error: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n clientLoad(){\r\n this.loading = false;\r\n\r\n this.loadFormArrayItems();\r\n this.totalRecords = this.items.length;\r\n this.onTotalRecordsChange.next(this.items.length);\r\n\r\n if (this.getAlreadySelectedItemIds) {\r\n this.selectedItemIds = this.getAlreadySelectedItemIds(this.additionalIndexes);\r\n }\r\n if (this.getAlreadySelectedItems) {\r\n this.selectedItems = this.getAlreadySelectedItems(this.additionalIndexes);\r\n }\r\n this.rowsSelectedNumber = this.selectedItemIds.length;\r\n this.setFakeIsAllSelected();\r\n }\r\n\r\n private clientFilterCount = 0;\r\n\r\n filter(event: TableFilterEvent){\r\n if (this.hasLazyLoad && this.selectionMode === 'multiple')\r\n this.selectAll(false); // We need to do it like this because: totalRecords: 1 -> selectedRecords from earlyer selection 2 -> unselect current -> all checkbox is set to true\r\n\r\n if (this.hasLazyLoad === false && this.selectionMode === 'multiple') {\r\n if (this.clientFilterCount === 0) {\r\n this.loadFormArrayItems();\r\n this.clientFilterCount++;\r\n }else{\r\n this.clientFilterCount--;\r\n }\r\n }\r\n }\r\n\r\n private loadFormArrayItems(){\r\n this.items = this.getFormArrayItems(this.additionalIndexes);\r\n this.items.forEach((item, index) => {\r\n item.index = index;\r\n });\r\n }\r\n \r\n getColHeaderWidth(filterType: string) {\r\n switch (filterType) {\r\n case 'text':\r\n return 'min-width: 12rem;';\r\n case 'date':\r\n return 'min-width: 10rem;';\r\n case 'multiselect':\r\n return 'min-width: 12rem;';\r\n case 'boolean':\r\n return 'min-width: 8rem;';\r\n case 'numeric':\r\n return 'min-width: 12rem;';\r\n default:\r\n return 'width: 0rem;'; // fitting content of the row like this\r\n }\r\n }\r\n\r\n getColMatchModeOptions(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return null;\r\n case 'date':\r\n return this.matchModeDateOptions;\r\n case 'multiselect':\r\n return null;\r\n case 'boolean':\r\n return null;\r\n case 'numeric':\r\n return this.matchModeNumberOptions;\r\n default:\r\n return null;\r\n }\r\n }\r\n \r\n getColMatchMode(filterType: string): any {\r\n switch (filterType) {\r\n case 'text':\r\n return MatchModeCodes.Contains;\r\n case 'date':\r\n return MatchModeCodes.Equals;\r\n case 'multiselect':\r\n return MatchModeCodes.In;\r\n case 'boolean':\r\n return MatchModeCodes.Equals;\r\n case 'numeric':\r\n return MatchModeCodes.Equals\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n isDropOrMulti(filterType: string){\r\n if (filterType == 'dropdown' || filterType == 'multiselect') {\r\n return true;\r\n } \r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n navigateToDetails(rowId: number){\r\n this.router.navigate([rowId], {relativeTo: this.route});\r\n }\r\n\r\n deleteObject(rowId: number){\r\n this.deleteRef = this.dialogService.open(SpiderlyDeleteConfirmationComponent, \r\n { \r\n header: this.translocoService.translate('AreYouSure'),\r\n width: '400px',\r\n data:{ deleteItemFromTableObservableMethod: this.deleteItemFromTableObservableMethod, id: rowId, } \r\n });\r\n\r\n this.deleteRef.onClose.subscribe((deletedSuccessfully: boolean)=>{\r\n if(deletedSuccessfully === true){\r\n this.messageService.successMessage(this.translocoService.translate('SuccessfullyDeletedMessage'));\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n reload(){\r\n this.loading = true;\r\n this.items = null;\r\n this.lazyLoad(this.lastLazyLoadEvent);\r\n }\r\n\r\n showActions(): boolean {\r\n return this.cols.some(x => x.actions?.length > 0);\r\n }\r\n\r\n getStyleForBodyColumn(col: Column<any>) {\r\n switch(col.filterType){\r\n case 'numeric':\r\n return 'text-align: right;';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getClassForAction(action: Action): string{\r\n switch(action.field){\r\n case 'Details':\r\n return 'pi pi-pencil';\r\n case 'Delete':\r\n return 'pi pi-trash';\r\n default:\r\n return `${action.icon} ${action.styleClass}`;\r\n }\r\n }\r\n\r\n getStyleForAction(action: Action): string{\r\n switch(action.field){\r\n case 'Delete':\r\n return 'cursor: pointer; color: var(--p-button-danger-background);';\r\n default:\r\n return `cursor: pointer; ${action.style}`;\r\n }\r\n }\r\n\r\n getMethodForAction(action: Action, rowData: any){\r\n switch(action.field){\r\n case 'Details':\r\n return this.navigateToDetails(rowData[this.idField]);\r\n case 'Delete':\r\n return this.deleteObject(rowData[this.idField]);\r\n default:\r\n return action.onClick(rowData[this.idField]);\r\n }\r\n }\r\n\r\n getRowData(rowData: any, col: Column): string{\r\n switch (col.filterType) {\r\n case 'text':\r\n return rowData[col.field];\r\n case 'date':\r\n if (rowData[col.field] == null)\r\n return null;\r\n \r\n if (col.showTime)\r\n return formatDate(rowData[col.field], 'dd.MM.yyyy. HH:mm', this.locale);\r\n else\r\n return formatDate(rowData[col.field], 'dd.MM.yyyy.', this.locale);\r\n case 'multiselect':\r\n return rowData[col.field];\r\n case 'boolean':\r\n return rowData[col.field] == true ? this.translocoService.translate('Yes') : this.translocoService.translate('No');\r\n case 'numeric':\r\n // TODO: make decimal pipe\r\n return rowData[col.field];\r\n case 'blob':\r\n return getHtmlImgDisplayString64(rowData[col.field]);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n colTrackByFn(index, item){\r\n return item.field;\r\n }\r\n\r\n actionTrackByFn(index, item: Action){\r\n return `${index}${item.field}`\r\n }\r\n\r\n exportListToExcel() {\r\n let filter: Filter = this.lastLazyLoadEvent as unknown as Filter;\r\n filter.additionalFilterIdLong = this.additionalFilterIdLong;\r\n\r\n exportListToExcel(this.exportListToExcelObservableMethod, filter);\r\n }\r\n\r\n clear(table: Table) {\r\n table.clear();\r\n }\r\n\r\n //#region Selection\r\n\r\n setFakeIsAllSelected(){\r\n if(this.rowsSelectedNumber == this.totalRecords)\r\n this.fakeIsAllSelected = true;\r\n else\r\n this.fakeIsAllSelected = false;\r\n }\r\n\r\n selectAll(checked: boolean){\r\n this.unselectedItems.length = 0;\r\n this.newlySelectedItems.length = 0;\r\n\r\n if (checked == true) {\r\n this.isAllSelected = true;\r\n this.fakeIsAllSelected = true;\r\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: true, additionalIndexes: this.additionalIndexes}));\r\n this.rowsSelectedNumber = this.totalRecords;\r\n this.fakeSelectedItems = [...this.items.map(x => x[this.idField])];\r\n this.selectedItemIds = [...this.items.map(x => x[this.idField])]\r\n }\r\n else{\r\n this.isAllSelected = false;\r\n this.fakeIsAllSelected = false;\r\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: false, additionalIndexes: this.additionalIndexes}));\r\n this.rowsSelectedNumber = 0;\r\n this.fakeSelectedItems = [];\r\n this.selectedItemIds = [];\r\n }\r\n }\r\n\r\n selectRow(id: number, index: number) {\r\n if (this.isRowSelected(id)) {\r\n this.rowUnselect(id);\r\n this.onRowUnselect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\r\n } else {\r\n this.rowSelect(id);\r\n this.onRowSelect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\r\n }\r\n }\r\n\r\n isRowSelected(id: number){\r\n if (this.hasLazyLoad){\r\n return this.fakeSelectedItems.find(x => x === id) != undefined;\r\n }\r\n else {\r\n return this.selectedItemIds.find(x => x === id) != undefined;\r\n }\r\n }\r\n\r\n rowSelect(id: number){\r\n if (this.isAllSelected == false || this.currentPageSelectedItemsFromDb.includes(id) == false) {\r\n this.newlySelectedItems.push(id);\r\n }\r\n\r\n if (this.hasLazyLoad){\r\n this.fakeSelectedItems.push(id);\r\n }\r\n else {\r\n this.selectedItemIds.push(id);\r\n }\r\n \r\n this.rowsSelectedNumber++;\r\n\r\n const index = this.unselectedItems.indexOf(id);\r\n if (index !== -1) {\r\n this.unselectedItems.splice(index, 1); // Splice is mutating the array\r\n }\r\n\r\n this.setFakeIsAllSelected();\r\n }\r\n \r\n rowUnselect(id: number) {\r\n if (this.isAllSelected == true || this.currentPageSelectedItemsFromDb.includes(id) == true) {\r\n this.unselectedItems.push(id);\r\n }\r\n\r\n this.rowsSelectedNumber--;\r\n\r\n const index = this.newlySelectedItems.indexOf(id);\r\n const fakeIndex = this.fakeSelectedItems.indexOf(id);\r\n const nonLazyLoadIndex = this.selectedItemIds.indexOf(id);\r\n\r\n if (index !== -1) {\r\n this.newlySelectedItems.splice(index, 1); // Splice is mutating the array\r\n }\r\n if (fakeIndex !== -1) {\r\n this.fakeSelectedItems.splice(fakeIndex, 1); // Splice is mutating the array\r\n }\r\n if (nonLazyLoadIndex !== -1) {\r\n this.selectedItemIds.splice(nonLazyLoadIndex, 1); // Splice is mutating the array\r\n }\r\n\r\n this.setFakeIsAllSelected();\r\n }\r\n //#endregion\r\n\r\n //#region Client side table\r\n\r\n // Can do it with Id also, because we are never adding the new record in the table at the same page.\r\n getFormArrayControlByIndex(formControlName: string, index: number): SpiderlyFormControl{\r\n if (this.getFormControl) {\r\n return this.getFormControl(formControlName, index, this.additionalIndexes);\r\n }\r\n else{\r\n return null;\r\n }\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\nexport class Action {\r\n name?: string;\r\n field?: string;\r\n icon?: string;\r\n style?: string;\r\n styleClass?: string;\r\n onClick?: (id: number) => void;\r\n\r\n constructor(\r\n {\r\n name,\r\n field,\r\n icon,\r\n style,\r\n styleClass,\r\n onClick,\r\n }:{\r\n name?: string;\r\n field?: string;\r\n icon?: string;\r\n style?: string;\r\n styleClass?: string;\r\n onClick?: () => void;\r\n } = {}\r\n ) {\r\n this.name = name;\r\n this.field = field;\r\n this.icon = icon;\r\n this.style = style;\r\n this.styleClass = styleClass;\r\n this.onClick = onClick;\r\n }\r\n}\r\n\r\nexport class Column<T = any> {\r\n name?: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\r\n filterPlaceholder?: string;\r\n showMatchModes?: boolean;\r\n showAddButton?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n actions?: Action[];\r\n editable?: boolean;\r\n showTime?: boolean;\r\n\r\n constructor(\r\n {\r\n name,\r\n field,\r\n filterField,\r\n filterType,\r\n filterPlaceholder,\r\n showMatchModes,\r\n showAddButton,\r\n dropdownOrMultiselectValues,\r\n actions,\r\n editable,\r\n showTime,\r\n }:{\r\n name?: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future;\r\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';\r\n filterPlaceholder?: string;\r\n showMatchModes?: boolean;\r\n showAddButton?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n actions?: Action[];\r\n editable?: boolean;\r\n showTime?: boolean;\r\n } = {}\r\n ) {\r\n this.name = name;\r\n this.field = field;\r\n this.filterField = filterField;\r\n this.filterType = filterType;\r\n this.filterPlaceholder = filterPlaceholder;\r\n this.showMatchModes = showMatchModes;\r\n this.showAddButton = showAddButton;\r\n this.dropdownOrMultiselectValues = dropdownOrMultiselectValues;\r\n this.actions = actions;\r\n this.editable = editable;\r\n this.showTime = showTime;\r\n }\r\n}\r\n\r\nexport class RowClickEvent {\r\n index?: number;\r\n id?: number;\r\n additionalIndexes?: any;\r\n\r\n constructor(\r\n {\r\n index, \r\n id, \r\n additionalIndexes\r\n }:{\r\n index?: number; \r\n id?: number; \r\n additionalIndexes?: any;\r\n } = {}\r\n ) {\r\n this.index = index;\r\n this.id = id;\r\n this.additionalIndexes = additionalIndexes;\r\n }\r\n}\r\n\r\nexport class AllClickEvent {\r\n checked?: boolean;\r\n additionalIndexes?: any;\r\n\r\n constructor(\r\n {\r\n checked, \r\n additionalIndexes\r\n }:{\r\n checked?: boolean; \r\n additionalIndexes?: any;\r\n } = {}\r\n ) {\r\n this.checked = checked;\r\n this.additionalIndexes = additionalIndexes;\r\n }\r\n}","<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\r\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"> \r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header overflow-auto\">\r\n <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n <i class=\"{{tableIcon}}\" style=\"font-size: 20px;\"></i>\r\n <div style=\"margin: 0px; font-size: 17.5px;\">{{tableTitle}}</div>\r\n </div>\r\n <div style=\"display: flex; gap: 8px;\">\r\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\r\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\r\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\r\n <div style=\"display: flex; gap: 8px;\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <th [style]=\"getColHeaderWidth(col.filterType)\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n {{col.name}}\r\n <p-columnFilter *ngIf=\"col.filterType != null && col.filterType !== 'blob'\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \r\n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\r\n [matchMode]=\"getColMatchMode(col.filterType)\"\r\n >\r\n <ng-template *ngIf=\"isDropOrMulti(col.filterType)\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n <ng-template *ngIf=\"col.filterType == 'date'\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-datepicker \r\n [ngModel]=\"value\" \r\n [showTime]=\"col.showTime\"\r\n (onSelect)=\"filter($event)\"\r\n ></p-datepicker>\r\n </ng-template>\r\n </p-columnFilter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\r\n <tr>\r\n <td *ngIf=\"selectionMode == 'multiple'\">\r\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData[idField], rowData.index)\" [ngModel]=\"isRowSelected(rowData[idField])\" [binary]=\"true\"></p-checkbox>\r\n </td>\r\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\r\n <td [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\r\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\r\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" [style]=\"getStyleForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"col.filterType === 'blob'\">\r\n <img width=\"45\" [src]=\"getRowData(rowData, col)\" alt=\"\">\r\n </ng-container>\r\n <ng-container *ngIf=\"col.filterType !== 'blob'\">\r\n {{getRowData(rowData, col)}}\r\n </ng-container>\r\n </td>\r\n <td *ngIf=\"col.editable\">\r\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr>\r\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template pTemplate=\"paginatorright\">\r\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\r\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\r\n </div>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>","import { Component, ContentChild, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { Table, TableFilterEvent, TableLazyLoadEvent, TableModule } from 'primeng/table';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\r\nimport { PaginatedResult } from '../../entities/paginated-result';\r\nimport { Filter } from '../../entities/filter';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\r\nimport { Action } from '../spiderly-data-table/spiderly-data-table.component';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { BaseEntity } from '../../entities/base-entity';\r\nimport { PrimengOption } from '../../entities/primeng-option';\r\n\r\n@Component({\r\n selector: 'spiderly-data-view',\r\n templateUrl: './spiderly-data-view.component.html',\r\n styleUrl: 'spiderly-data-view.component.scss',\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n TableModule,\r\n ButtonModule,\r\n MultiSelectModule,\r\n CheckboxModule,\r\n TooltipModule,\r\n DatePickerModule,\r\n InputTextModule,\r\n InputNumberModule,\r\n SelectModule,\r\n ]\r\n})\r\nexport class SpiderlyDataViewComponent<T> implements OnInit {\r\n @ViewChild('dt') table: Table;\r\n /**\r\n * List of items in the table.\r\n * Should be provided only when `hasLazyLoad === false`.\r\n */\r\n @Input() items: T[];\r\n @Input() rows: number = 10;\r\n @Input() filters: DataViewFilter<T>[] = [];\r\n totalRecords: number;\r\n @Output() onLazyLoad: EventEmitter<Filter> = new EventEmitter();\r\n\r\n @Input() showCardWrapper: boolean = true;\r\n /**\r\n * Whether to display additional data on the right side of the paginator.\r\n * Defaults to `false`.\r\n */\r\n @Input() showPaginatorRightData: boolean = false;\r\n @Input() showTotalRecordsNumber: boolean = false;\r\n @Input() applyFiltersIcon: string = 'pi pi-filter';\r\n @Input() clearFiltersIcon: string = 'pi pi-filter-slash';\r\n \r\n @Input() getPaginatedListObservableMethod: (filter: Filter) => Observable<PaginatedResult>;\r\n\r\n lastLazyLoadEvent: TableLazyLoadEvent;\r\n loading: boolean = true;\r\n\r\n matchModeDateOptions: SelectItem[] = [];\r\n matchModeNumberOptions: SelectItem[] = [];\r\n \r\n @ContentChild('cardBody', { read: TemplateRef }) cardBody!: TemplateRef<any>;\r\n\r\n constructor(\r\n private translocoService: TranslocoService,\r\n @Inject(LOCALE_ID) private locale: string\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.matchModeDateOptions = [\r\n { label: this.translocoService.translate('OnDate'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n\r\n this.matchModeNumberOptions = [\r\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\r\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\r\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\r\n ];\r\n }\r\n \r\n lazyLoad(event: TableLazyLoadEvent) {\r\n this.lastLazyLoadEvent = event;\r\n \r\n const transformedFilter: { [K in keyof T]?: { value: any; matchMode: MatchModeCodes }[] } = {};\r\n\r\n for (const key in event.filters) {\r\n const filterMeta = event.filters[key];\r\n\r\n if (Array.isArray(filterMeta)) {\r\n transformedFilter[key] = filterMeta;\r\n } \r\n else {\r\n transformedFilter[key] = [{\r\n value: filterMeta.value,\r\n matchMode: filterMeta.matchMode\r\n }];\r\n }\r\n }\r\n\r\n let tableFilter = event as unknown as Filter<T>;\r\n\r\n tableFilter.filters = transformedFilter;\r\n\r\n this.onLazyLoad.next(tableFilter);\r\n \r\n this.getPaginatedListObservableMethod(tableFilter).subscribe({\r\n next: async (res) => { \r\n this.items = res.data;\r\n this.totalRecords = res.totalRecords;\r\n\r\n this.loading = false;\r\n },\r\n error: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\n filter(event: TableFilterEvent){\r\n }\r\n \r\n getDefaultMatchMode(filterType: string): any {\r\n switch (filterType) {\r\n case 'text':\r\n return MatchModeCodes.Contains;\r\n case 'date':\r\n return MatchModeCodes.Equals;\r\n case 'multiselect':\r\n return MatchModeCodes.In;\r\n case 'boolean':\r\n return MatchModeCodes.Equals;\r\n case 'numeric':\r\n return MatchModeCodes.Equals\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getMatchModeOptions(filterType: string){\r\n switch (filterType) {\r\n case 'text':\r\n return [];\r\n case 'date':\r\n return this.matchModeDateOptions;\r\n case 'multiselect':\r\n return [];\r\n case 'boolean':\r\n return [];\r\n case 'numeric':\r\n return this.matchModeNumberOptions;\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n reload(){\r\n this.loading = true;\r\n this.items = null;\r\n this.lazyLoad(this.lastLazyLoadEvent);\r\n }\r\n\r\n colTrackByFn(index, item){\r\n return item.field;\r\n }\r\n\r\n actionTrackByFn(index, item: Action){\r\n return `${index}${item.field}`\r\n }\r\n\r\n applyFilters = () => {\r\n this.table._filter();\r\n }\r\n\r\n clearFilters() {\r\n this.table.clear();\r\n }\r\n}\r\n\r\nexport interface DataViewCardBody<T> {\r\n $implicit: T;\r\n item: T;\r\n index: number;\r\n}\r\n\r\nexport interface DataViewFilter<T extends BaseEntity> {\r\n label?: string;\r\n field?: string & keyof T;\r\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future\r\n type?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\r\n placeholder?: string;\r\n showMatchModes?: boolean;\r\n dropdownOrMultiselectValues?: PrimengOption[];\r\n}","<ng-container *transloco=\"let t\">\r\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\r\n <p-table \r\n #dt \r\n [value]=\"items\" \r\n [rows]=\"rows\" \r\n [rowHover]=\"false\" \r\n responsiveLayout=\"scroll\" \r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\" \r\n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \r\n [loading]=\"(items === undefined || loading === true)\" \r\n dataKey=\"id\" \r\n (onFilter)=\"filter($event)\"\r\n [filterDelay]=\"500\"\r\n [paginator]=\"true\"\r\n > \r\n <ng-template #caption>\r\n <div *ngIf=\"filters.length !== 0\">\r\n <div class=\"data-view-grid\">\r\n @for (filter of filters; track $index) {\r\n <div>\r\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\r\n <div>\r\n <label>\r\n {{filter.label}}\r\n </label>\r\n </div>\r\n\r\n <p-columnFilter *ngIf=\"filter.type != null\" [type]=\"filter.type\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.placeholder\" \r\n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.type)\" [matchModeOptions]=\"getMatchModeOptions(filter.type)\" \r\n >\r\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'100%'}\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-2\">{{ item.label }}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </ng-container>\r\n </p-columnFilter>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div style=\"display: flex; gap: 12px;\">\r\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" [icon]=\"applyFiltersIcon\"></spiderly-button>\r\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" [icon]=\"clearFiltersIcon\"></spiderly-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #body let-rowData let-index=\"rowIndex\">\r\n <tr style=\"padding: 0; margin-bottom: 0;\">\r\n <td style=\"display: block; border: 0; padding: 0;\">\r\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n {{t('NoRecordsFound')}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showTotalRecordsNumber\" pTemplate=\"paginatorleft\">\r\n {{t('TotalRecords')}}: {{totalRecords}}\r\n </ng-template>\r\n <ng-template *ngIf=\"showPaginatorRightData\" pTemplate=\"paginatorright\">\r\n <ng-content select=\"[PAGINATORRIGHT]\"></ng-content>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spiderly-card',\r\n templateUrl: './spiderly-card.component.html',\r\n styles: [],\r\n})\r\nexport class SpiderlyCardComponent implements OnInit {\r\n @Input() icon: string = 'pi pi-file-edit';\r\n @Input() title: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","<div class=\"card responsive-card-padding\">\r\n <div style=\"display: flex; align-items: center; margin-bottom: 14px; gap: 8px;\">\r\n <i style=\"font-size: 21px;\" class=\"{{icon}} primary-color\"></i>\r\n <div style=\"margin: 0; font-size: 17.5px;\">{{title}}</div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { BaseEntity } from \"./base-entity\";\r\nimport { UserBase } from \"./security-entities\";\r\n\r\nexport class InitTopBarData extends BaseEntity\r\n{\r\n companyName?: string;\r\n userProfilePath?: string;\r\n unreadNotificationsCount?: number;\r\n showProfileIcon?: boolean;\r\n currentUser?: UserBase;\r\n \r\n constructor(\r\n {\r\n companyName,\r\n userProfilePath,\r\n unreadNotificationsCount,\r\n showProfileIcon,\r\n currentUser,\r\n }:{\r\n companyName?: string,\r\n userProfilePath?: string,\r\n unreadNotificationsCount?: number,\r\n showProfileIcon?: boolean,\r\n currentUser?: UserBase,\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.companyName = companyName;\r\n this.userProfilePath = userProfilePath;\r\n this.unreadNotificationsCount = unreadNotificationsCount;\r\n this.showProfileIcon = showProfileIcon;\r\n this.currentUser = currentUser;\r\n }\r\n\r\n static readonly typeName = 'InitTopBarData' as const;\r\n}","import { AuthBaseService } from './auth-base.service';\r\nimport { ApiSecurityService } from './api.service.security';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, delay, lastValueFrom, map, Observable, of, Subject, Subscription, withLatestFrom } from 'rxjs';\r\nimport { InitTopBarData } from '../entities/init-top-bar-data';\r\nimport { ConfigBaseService } from './config-base.service';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { Namebook } from '../entities/namebook';\r\n\r\nexport interface AppConfig {\r\n inputStyle: string;\r\n colorScheme: string; \r\n theme: string;\r\n ripple: boolean;\r\n menuMode: string;\r\n scale: number;\r\n color: string;\r\n}\r\n\r\ninterface LayoutState {\r\n staticMenuDesktopInactive: boolean;\r\n overlayMenuActive: boolean;\r\n profileSidebarVisible: boolean;\r\n profileDropdownSidebarVisible:boolean;\r\n configSidebarVisible: boolean;\r\n staticMenuMobileActive: boolean;\r\n menuHoverActive: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LayoutBaseService implements OnDestroy {\r\n userSubscription: Subscription;\r\n\r\n protected _unreadNotificationsNumber = new BehaviorSubject<number | null>(null);\r\n unreadNotificationsCount$ = this._unreadNotificationsNumber.asObservable();\r\n\r\n layoutConfig: AppConfig = {\r\n ripple: false,\r\n inputStyle: 'outlined',\r\n menuMode: 'static',\r\n colorScheme: 'light',\r\n theme: 'lara-light-indigo',\r\n scale: 14,\r\n color: `var(--p-primary-color)`,\r\n };\r\n\r\n state: LayoutState = {\r\n staticMenuDesktopInactive: false,\r\n overlayMenuActive: false,\r\n profileSidebarVisible: false,\r\n profileDropdownSidebarVisible: false,\r\n configSidebarVisible: false,\r\n staticMenuMobileActive: false,\r\n menuHoverActive: false\r\n };\r\n\r\n private configUpdate = new Subject<AppConfig>();\r\n\r\n private overlayOpen = new Subject<any>();\r\n\r\n configUpdate$ = this.configUpdate.asObservable();\r\n\r\n overlayOpen$ = this.overlayOpen.asObservable();\r\n\r\n constructor(\r\n protected apiService: ApiSecurityService,\r\n protected config: ConfigBaseService,\r\n protected authService: AuthBaseService\r\n ) {\r\n }\r\n\r\n initUnreadNotificationsCountForCurrentUser = () => {\r\n this.initUnreadNotificationsCountForCurrentUserObservable().pipe(\r\n delay(1), // HACK: Adding delay so both additionalObservable and user emits single null value when logout\r\n withLatestFrom(this.authService.user$) // Triggers when unread notifications change\r\n ).subscribe(([additionalObservable, user]) => {\r\n if (user != null && additionalObservable !== undefined) {\r\n this.setUnreadNotificationsCountForCurrentUser().subscribe();\r\n }\r\n });\r\n }\r\n\r\n initUnreadNotificationsCountForCurrentUserObservable = (): Observable<any> => {\r\n return this.authService.user$;\r\n }\r\n\r\n setUnreadNotificationsCountForCurrentUser = (): Observable<any> => {\r\n return this.apiService.getUnreadNotificationsCountForCurrentUser().pipe(\r\n map((unreadNotificationsCount) => {\r\n this._unreadNotificationsNumber.next(unreadNotificationsCount);\r\n })\r\n );\r\n }\r\n\r\n onMenuToggle() {\r\n if (this.isOverlay()) {\r\n this.state.overlayMenuActive = !this.state.overlayMenuActive;\r\n if (this.state.overlayMenuActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n if (this.isDesktop()) {\r\n this.state.staticMenuDesktopInactive = !this.state.staticMenuDesktopInactive;\r\n }\r\n else {\r\n this.state.staticMenuMobileActive = !this.state.staticMenuMobileActive;\r\n\r\n if (this.state.staticMenuMobileActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n }\r\n\r\n showProfileSidebar() {\r\n this.state.profileSidebarVisible = !this.state.profileSidebarVisible;\r\n if (this.state.profileSidebarVisible) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n showProfileDropdownSidebar() {\r\n this.state.profileDropdownSidebarVisible = !this.state.profileDropdownSidebarVisible;\r\n if (this.state.profileDropdownSidebarVisible) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n showConfigSidebar() {\r\n this.state.configSidebarVisible = true;\r\n }\r\n\r\n isOverlay() {\r\n return this.layoutConfig.menuMode === 'overlay';\r\n }\r\n\r\n isDesktop() {\r\n return window.innerWidth > 991;\r\n }\r\n\r\n isMobile() {\r\n return !this.isDesktop();\r\n }\r\n\r\n onConfigUpdate() {\r\n this.configUpdate.next(this.layoutConfig);\r\n }\r\n \r\n //#region Top Bar\r\n\r\n initTopBarData = (): Observable<InitTopBarData> => {\r\n return combineLatest([this.authService.user$, this.unreadNotificationsCount$]).pipe(\r\n map(([currentUser, unreadNotificationsCount]) => {\r\n return new InitTopBarData({\r\n companyName: this.config.companyName,\r\n userProfilePath: `/administration/users/${currentUser?.id}`,\r\n unreadNotificationsCount: unreadNotificationsCount,\r\n showProfileIcon: true,\r\n currentUser: currentUser,\r\n });\r\n })\r\n );\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Side Bar\r\n\r\n searchPartners = (event: AutoCompleteCompleteEvent): Observable<Namebook[]> => {\r\n return of();\r\n }\r\n\r\n partnersAutocompleteButtonClick = (selectedPartner: Namebook) => {}\r\n\r\n //#endregion\r\n\r\n ngOnDestroy(): void {\r\n if (this.userSubscription) {\r\n this.userSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { MenuChangeEvent } from '../../../entities/menuchangeevent';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SidebarMenuService {\r\n private menuSource = new Subject<MenuChangeEvent>();\r\n private resetSource = new Subject();\r\n\r\n menuSource$ = this.menuSource.asObservable();\r\n resetSource$ = this.resetSource.asObservable();\r\n\r\n onMenuStateChange(event: MenuChangeEvent) {\r\n this.menuSource.next(event);\r\n }\r\n\r\n reset() {\r\n this.resetSource.next(true);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { SidebarMenuService } from './sidebar-menu.service';\r\nimport { SpiderlyMenuItem } from './sidebar-menu.component';\r\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { SpiderlyFormControl } from '../../spiderly-form-control/spiderly-form-control';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ApiSecurityService } from '../../../services/api.service.security';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { Namebook } from '../../../entities/namebook';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[menuitem]',\r\n templateUrl: './menuitem.component.html',\r\n animations: [\r\n trigger('children', [\r\n state('collapsed', style({\r\n height: '0'\r\n })),\r\n state('expanded', style({\r\n height: '*'\r\n })),\r\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\r\n ])\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n TranslocoDirective,\r\n SpiderlyControlsModule,\r\n ]\r\n})\r\nexport class MenuitemComponent implements OnInit, OnDestroy {\r\n\r\n @Input() item: SpiderlyMenuItem;\r\n\r\n @Input() index!: number;\r\n\r\n @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;\r\n\r\n @Input() parentKey!: string;\r\n\r\n active = false;\r\n\r\n private menuSourceSubscription: Subscription;\r\n\r\n private menuResetSubscription: Subscription;\r\n\r\n private permissionSubscription: Subscription | null = null;\r\n\r\n key: string = \"\";\r\n\r\n selectedPartner = new SpiderlyFormControl<Namebook>(null, { updateOn: 'change' });\r\n\r\n partnerOptions: Namebook[];\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private cd: ChangeDetectorRef, \r\n public router: Router, \r\n private menuService: SidebarMenuService, \r\n private authService: AuthBaseService,\r\n private apiService: ApiSecurityService,\r\n private config: ConfigBaseService\r\n ) {\r\n this.menuSourceSubscription = this.menuService.menuSource$.subscribe(value => {\r\n Promise.resolve(null).then(() => {\r\n if (value.routeEvent) {\r\n this.active = (value.key === this.key || value.key.startsWith(this.key + '-')) ? true : false;\r\n }\r\n else {\r\n if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {\r\n this.active = false;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {\r\n this.active = false;\r\n });\r\n\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(params => {\r\n if (this.item.routerLink) {\r\n this.updateActiveStateFromRoute();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.item.visible = this.item.visible ?? true;\r\n\r\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\r\n \r\n if (this.item.routerLink) {\r\n this.updateActiveStateFromRoute();\r\n }\r\n\r\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\r\n if (this.item && typeof this.item.hasPermission === 'function') {\r\n this.item.visible = this.item.hasPermission(currentUserPermissionCodes);\r\n }\r\n });\r\n }\r\n\r\n updateActiveStateFromRoute() {\r\n let activeRoute = this.router.isActive(this.item.routerLink[0], { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' });\r\n\r\n if (activeRoute) {\r\n this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });\r\n }\r\n }\r\n\r\n itemClick(event: Event) {\r\n // avoid processing disabled items\r\n if (this.item.disabled || event === null) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n // execute command\r\n if (this.item.command) {\r\n this.item.command({ originalEvent: event, item: this.item });\r\n }\r\n\r\n // toggle active state\r\n if (this.item.items) {\r\n this.active = !this.active;\r\n }\r\n \r\n this.menuService.onMenuStateChange({ key: this.key });\r\n }\r\n\r\n get submenuAnimation() {\r\n return this.root ? 'expanded' : (this.active ? 'expanded' : 'collapsed');\r\n }\r\n\r\n @HostBinding('class.active-menuitem') \r\n get activeClass() {\r\n return this.active && !this.root;\r\n }\r\n\r\n //#region HACK: Partner\r\n\r\n searchPartners(event: AutoCompleteCompleteEvent) {\r\n this.layoutService.searchPartners(event).subscribe(po => {\r\n this.partnerOptions = po; \r\n })\r\n }\r\n\r\n partnersAutocompleteButtonClick = async () => {\r\n this.layoutService.partnersAutocompleteButtonClick(this.selectedPartner.value);\r\n }\r\n\r\n //#endregion\r\n\r\n ngOnDestroy() {\r\n if (this.menuSourceSubscription) {\r\n this.menuSourceSubscription.unsubscribe();\r\n }\r\n\r\n if (this.menuResetSubscription) {\r\n this.menuResetSubscription.unsubscribe();\r\n }\r\n\r\n if (this.permissionSubscription) {\r\n this.permissionSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\r\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\r\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\r\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\r\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\r\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\r\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\r\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\r\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\r\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\r\n </a>\r\n\r\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\r\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\r\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\r\n </ng-template>\r\n </ul>\r\n\r\n <!-- Delete this in the future iterations, make link to partner in /partners page -->\r\n <spiderly-autocomplete\r\n *ngIf=\"item.showPartnerDialog\"\r\n [control]=\"selectedPartner\"\r\n [options]=\"partnerOptions\"\r\n (onTextInput)=\"searchPartners($event)\"\r\n label=\"\"\r\n [placeholder]=\"t('SelectThePartner')\"\r\n [showAddon]=\"true\"\r\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\r\n addonIcon=\"pi pi-check\"\r\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\r\n class=\"mobile-stay-open\"\r\n ></spiderly-autocomplete>\r\n \r\n</ng-container>","import { TranslocoService } from '@jsverse/transloco';\r\nimport { Input, OnInit } from '@angular/core';\r\nimport { Component } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { MenuitemComponent } from './menuitem.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface SpiderlyMenuItem extends MenuItem {\r\n hasPermission?: (permissionCodes: string[]) => boolean;\r\n showPartnerDialog?: boolean; \r\n}\r\n\r\n@Component({\r\n selector: 'sidebar-menu', // FT: Don't change selector to 'menu', because other style will apply to it\r\n templateUrl: './sidebar-menu.component.html',\r\n imports: [\r\n CommonModule,\r\n MenuitemComponent\r\n ]\r\n})\r\nexport class SidebarMenuComponent implements OnInit {\r\n @Input() menu: SpiderlyMenuItem[];\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService,\r\n private translocoService: TranslocoService,\r\n private config: ConfigBaseService\r\n ) {\r\n \r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n}\r\n","<ul class=\"layout-menu\">\r\n <ng-container *ngFor=\"let item of menu; let i = index;\">\r\n <li menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\r\n <li *ngIf=\"item.separator\" class=\"gray-separator\" style=\"margin-top: 11px;\"></li>\r\n </ng-container>\r\n</ul>\r\n","import { Component, ElementRef, Input } from '@angular/core';\r\nimport { SidebarMenuComponent, SpiderlyMenuItem } from './sidebar-menu.component';\r\n\r\n@Component({\n selector: 'sidebar',\n templateUrl: './sidebar.component.html',\n imports: [\n SidebarMenuComponent\n ]\n})\r\nexport class AppSidebarComponent {\r\n @Input() menu: SpiderlyMenuItem[];\r\n\r\n constructor(public el: ElementRef) { \r\n }\r\n\r\n ngOnInit(){\r\n }\r\n}\r\n\r\n"," <sidebar-menu [menu]=\"menu\"></sidebar-menu>\r\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { UserBase } from '../../../entities/security-entities';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { SpiderlyButtonComponent } from \"../../spiderly-buttons/spiderly-button/spiderly-button.component\";\r\nimport { ConfigBaseService } from '../../../services/config-base.service';\r\n\r\n@Component({\r\n selector: 'spiderly-profile-avatar',\r\n templateUrl: './profile-avatar.component.html',\r\n styleUrl: './profile-avatar.component.scss',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AvatarModule,\r\n BadgeModule,\r\n SpiderlyButtonComponent,\r\n TranslocoDirective,\r\n]\r\n})\r\nexport class ProfileAvatarComponent {\r\n @Input() isSideMenuLayout = true;\r\n @Input() routeOnLargeProfileAvatarClick = true;\r\n @Input() showLoginButton = true;\r\n @Input() routeToLoginPage = true;\r\n @Input() loginButtonOutlined = false;\r\n @Input() loginButtonSeverity: 'success' | 'info' | 'warn' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined = 'primary';\r\n @Input() loginButtonSize: 'small' | 'large' | undefined;\r\n @Output() onLoginButtonClick = new EventEmitter();\r\n @Input() menuItems: ProfileAvatarModalMenuItem[] = [];\r\n\r\n private initTopBarSubscription: Subscription | null = null;\r\n\r\n currentUser: UserBase;\r\n userProfilePath: string;\r\n unreadNotificationsCount: number;\r\n avatarLabel: string;\r\n showProfileIcon = false;\r\n\r\n notificationMenuItem: ProfileAvatarModalMenuItem =\r\n {\r\n label: this.translocoService.translate('Notifications'),\r\n icon: 'pi-bell',\r\n showNotificationBadge: true,\r\n onClick: () => {\r\n this.router.navigateByUrl(`/notifications`);\r\n },\r\n };\r\n\r\n @ViewChild('topbarmenu') menu!: ElementRef;\r\n\r\n @ViewChild('topbarprofiledropdownmenubutton') topbarProfileDropdownMenuButton!: ElementRef;\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n private authService: AuthBaseService, \r\n protected router: Router,\r\n private translocoService: TranslocoService,\r\n public config: ConfigBaseService,\r\n ) { \r\n }\r\n\r\n async ngOnInit(){\r\n if (this.menuItems.length === 0) {\r\n this.menuItems = [\r\n {\r\n label: this.translocoService.translate('YourProfile'),\r\n icon: 'pi-user',\r\n showSeparator: true,\r\n onClick: () => {\r\n this.routeToUserPage();\r\n }\r\n },\r\n this.notificationMenuItem,\r\n {\r\n label: this.translocoService.translate('Logout'),\r\n icon: 'pi-sign-out',\r\n showSeparator: true,\r\n onClick: () => {\r\n this.authService.logout();\r\n }\r\n }\r\n ];\r\n }\r\n\r\n this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n this.layoutService.state.profileDropdownSidebarVisible = false;\r\n });\r\n\r\n this.onAfterNgOnInit();\r\n }\r\n\r\n onAfterNgOnInit = () => {\r\n this.initTopBarSubscription = this.layoutService.initTopBarData().subscribe(initTopBarData => {\r\n this.userProfilePath = initTopBarData.userProfilePath;\r\n this.unreadNotificationsCount = initTopBarData.unreadNotificationsCount;\r\n this.notificationMenuItem.showNotificationBadge = initTopBarData.unreadNotificationsCount > 0;\r\n this.showProfileIcon = initTopBarData.showProfileIcon;\r\n this.currentUser = initTopBarData.currentUser;\r\n this.avatarLabel = initTopBarData.currentUser?.email.charAt(0).toLocaleUpperCase();\r\n });\r\n }\r\n\r\n onDocumentClick(event: any) {\r\n if (\r\n !this.menu.nativeElement.contains(event.target) \r\n ) {\r\n if (this.layoutService.state.profileDropdownSidebarVisible == true) {\r\n this.layoutService.state.profileDropdownSidebarVisible = false;\r\n }\r\n }\r\n }\r\n\r\n routeToUserPage(){\r\n if (this.routeOnLargeProfileAvatarClick) {\r\n this.router.navigateByUrl(this.userProfilePath);\r\n }\r\n }\r\n\r\n loginButtonClick() {\r\n if (this.routeToLoginPage) {\r\n this.router.navigateByUrl(this.config.loginSlug);\r\n }\r\n \r\n this.onLoginButtonClick.next(null);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.initTopBarSubscription) {\r\n this.initTopBarSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n\r\nexport interface ProfileAvatarModalMenuItem {\r\n label?: string;\r\n icon?: string;\r\n showSeparator?: boolean;\r\n onClick?: () => void;\r\n showNotificationBadge?: boolean;\r\n}","<ng-container *transloco=\"let t\">\r\n <div\r\n *ngIf=\"this.currentUser != null\"\r\n #topbarmenu\r\n >\r\n <div\r\n #topbarprofiledropdownmenubutton\r\n (click)=\"layoutService.showProfileDropdownSidebar()\"\r\n >\r\n <p-avatar\r\n *ngIf=\"showProfileIcon\"\r\n [label]=\"avatarLabel\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\r\n pBadge \r\n [badgeStyleClass]=\"'p-badge-danger'\"\r\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\r\n [value]=\"unreadNotificationsCount\"\r\n />\r\n </div>\r\n <div\r\n #topbarprofiledropdownmenu\r\n (document:click)=\"onDocumentClick($event)\"\r\n >\r\n <div \r\n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \r\n style=\"width: 280px; position: absolute; padding: 15px; background: var(--p-content-background);\" \r\n class=\"card\"\r\n [ngClass]=\"{\r\n 'side-menu-profile-dialog': isSideMenuLayout,\r\n 'top-menu-profile-dialog': !isSideMenuLayout,\r\n }\r\n \"\r\n >\r\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\r\n <p-avatar\r\n [label]=\"avatarLabel\"\r\n size=\"xlarge\"\r\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'margin': 'auto', 'cursor': routeOnLargeProfileAvatarClick ? 'pointer' : '' }\"\r\n (click)=\"routeToUserPage()\"\r\n />\r\n <div style=\"font-size: 15px;\">{{currentUser?.email}}</div>\r\n </div>\r\n <div style=\"margin-top: 15px;\">\r\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\r\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\r\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 8px; margin-top: 5px;\">\r\n <i \r\n class=\"pi pi-fw {{item.icon}}\" \r\n style=\"font-size: 16px; position: relative;\"\r\n >\r\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\r\n </i>\r\n <div style=\"font-size: 15px;\"> {{item.label}} </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"this.currentUser == null && this.showLoginButton\">\r\n <spiderly-button \r\n [label]=\"t('Login')\" \r\n (onClick)=\"loginButtonClick()\" \r\n icon=\"pi pi-sign-in\" \r\n [outlined]=\"loginButtonOutlined\" \r\n [severity]=\"loginButtonSeverity\"\r\n [size]=\"loginButtonSize\"\r\n ></spiderly-button>\r\n </div>\r\n</ng-container>","import { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { filter } from 'rxjs';\r\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ProfileAvatarComponent } from '../profile-avatar/profile-avatar.component';\r\n\r\n@Component({\r\n selector: 'spiderly-sidemenu-topbar',\r\n templateUrl: './sidemenu-topbar.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AvatarModule,\r\n BadgeModule,\r\n ProfileAvatarComponent,\r\n ]\r\n})\r\nexport class SideMenuTopBarComponent {\r\n companyName = this.config.companyName;\r\n @ViewChild('menubutton') menuButton!: ElementRef;\r\n\r\n constructor(\r\n public layoutService: LayoutBaseService, \r\n protected router: Router,\r\n private config: ConfigBaseService,\r\n private translocoService: TranslocoService,\r\n ) { \r\n }\r\n\r\n async ngOnInit(){\r\n this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe((event: NavigationEnd) => {\r\n this.layoutService.state.profileDropdownSidebarVisible = false;\r\n });\r\n }\r\n\r\n}","<div class=\"layout-topbar\">\r\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\r\n <span>{{companyName?.toLocaleUpperCase()}}</span>\r\n </a>\r\n\r\n <button\r\n #menubutton\r\n class=\"p-link layout-menu-button layout-topbar-button\"\r\n (click)=\"layoutService.onMenuToggle()\"\r\n >\r\n <i class=\"pi pi-bars\"></i>\r\n </button>\r\n\r\n <div class=\"profile-button\">\r\n <spiderly-profile-avatar\r\n ></spiderly-profile-avatar>\r\n </div>\r\n\r\n</div>\r\n ","import { ConfigBaseService } from '../../../services/config-base.service';\r\nimport { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { ProfileAvatarComponent } from \"../profile-avatar/profile-avatar.component\";\r\nimport { MenubarModule } from \"primeng/menubar\";\r\nimport { SpiderlyMenuItem } from '../sidebar/sidebar-menu.component';\r\nimport { AuthBaseService } from '../../../services/auth-base.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spiderly-topbar',\r\n templateUrl: './topbar.component.html',\r\n styleUrl: './topbar.component.scss',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n MenubarModule,\r\n AvatarModule,\r\n ProfileAvatarComponent,\r\n]\r\n})\r\nexport class TopBarComponent {\r\n @Input() menu: SpiderlyMenuItem[] = [];\r\n companyName = this.config.companyName;\r\n logoPath = this.config.logoPath;\r\n /**\r\n * Determines whether to show background color on hover\r\n * for root menu items. Defaults to `false`.\r\n */\r\n @Input() showHoverBgOnRootItems: boolean = false;\r\n\r\n private permissionSubscription: Subscription | null = null;\r\n\r\n constructor(\r\n private authService: AuthBaseService,\r\n private config: ConfigBaseService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\r\n this.hideMenuItemsBasedOnPermissions(this.menu, currentUserPermissionCodes);\r\n });\r\n }\r\n\r\n hideMenuItemsBasedOnPermissions = (menu: SpiderlyMenuItem[], currentUserPermissionCodes: string[]) => {\r\n menu.forEach(menuItem => {\r\n if (menuItem.items) {\r\n this.hideMenuItemsBasedOnPermissions(menuItem.items, currentUserPermissionCodes)\r\n }\r\n if (typeof menuItem.hasPermission === 'function') {\r\n menuItem.visible = menuItem.hasPermission(currentUserPermissionCodes) ?? false;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.permissionSubscription) {\r\n this.permissionSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"topbar-wrapper\">\r\n <nav class=\"topbar {{showHoverBgOnRootItems ? '' : 'show-hover-bg-on-root-items'}}\">\r\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\r\n <ng-template #start>\r\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\r\n </ng-template>\r\n <ng-template #end>\r\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\r\n <div>\r\n <ng-content select=\"[ACTIONS]\"></ng-content>\r\n </div>\r\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\r\n </div>\r\n </ng-template>\r\n </p-menubar>\r\n </nav>\r\n</div>","import { Component, ElementRef, Input, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AppSidebarComponent } from './sidebar/sidebar.component';\r\nimport { SideMenuTopBarComponent } from './sidemenu-topbar/sidemenu-topbar.component';\r\nimport { LayoutBaseService } from '../../services/app-layout-base.service';\r\nimport { SpiderlyMenuItem } from './sidebar/sidebar-menu.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FooterComponent } from '../footer/footer.component';\r\nimport { TopBarComponent } from './topbar/topbar.component';\r\n\r\n@Component({\r\n selector: 'spiderly-layout',\r\n templateUrl: './layout.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AppSidebarComponent,\r\n FooterComponent,\r\n SideMenuTopBarComponent,\r\n TopBarComponent,\r\n]\r\n})\r\nexport class SpiderlyLayoutComponent implements OnDestroy {\r\n @Input() menu: SpiderlyMenuItem[] = [];\r\n sideMenu: SpiderlyMenuItem[] = [];\r\n topMenu: SpiderlyMenuItem[] = [];\r\n @Input() isSideMenuLayout: boolean = true;\r\n /**\r\n * Determines whether to show background color on hover\r\n * for root top menu items. Defaults to `false`.\r\n */\r\n @Input() showHoverBgOnRootTopMenuItems: boolean = false;\r\n \r\n overlayMenuOpenSubscription: Subscription;\r\n\r\n menuOutsideClickListener: any;\r\n\r\n profileMenuOutsideClickListener: any;\r\n\r\n @ViewChild(AppSidebarComponent) appSidebar!: AppSidebarComponent;\r\n\r\n @ViewChild(SideMenuTopBarComponent) sidemenuTopbar!: SideMenuTopBarComponent;\r\n\r\n @ViewChild('topbarmenu') topbarmenu!: ElementRef;\r\n\r\n constructor(\r\n protected layoutService: LayoutBaseService, \r\n protected renderer: Renderer2, \r\n protected router: Router,\r\n ) {\r\n this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n if (!this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\r\n const isOutsideClicked = !(\r\n this.appSidebar?.el.nativeElement.isSameNode(event.target) || \r\n this.appSidebar?.el.nativeElement.contains(event.target) ||\r\n this.sidemenuTopbar?.menuButton?.nativeElement.isSameNode(event.target) || \r\n this.sidemenuTopbar?.menuButton?.nativeElement.contains(event.target) ||\r\n (event.target.closest('.p-autocomplete-items')) ||\r\n (event.target.closest('.p-autocomplete-clear-icon'))\r\n );\r\n \r\n if (isOutsideClicked) {\r\n this.hideMenu();\r\n }\r\n });\r\n }\r\n\r\n if (!this.profileMenuOutsideClickListener) {\r\n this.profileMenuOutsideClickListener = this.renderer.listen('document', 'click', event => {\r\n const isOutsideClicked = !(\r\n this.topbarmenu?.nativeElement.isSameNode(event.target) || \r\n this.topbarmenu?.nativeElement.contains(event.target)\r\n );\r\n\r\n if (isOutsideClicked) {\r\n this.hideProfileMenu();\r\n }\r\n });\r\n }\r\n\r\n if (this.layoutService.state.staticMenuMobileActive) {\r\n this.blockBodyScroll();\r\n }\r\n });\r\n\r\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this.hideMenu();\r\n this.hideProfileMenu();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.isSideMenuLayout) {\r\n this.sideMenu = [...this.menu];\r\n }\r\n else{\r\n this.topMenu = [...this.menu[0].items];\r\n }\r\n }\r\n\r\n hideMenu() {\r\n this.layoutService.state.overlayMenuActive = false;\r\n this.layoutService.state.staticMenuMobileActive = false;\r\n this.layoutService.state.menuHoverActive = false;\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n this.menuOutsideClickListener = null;\r\n }\r\n this.unblockBodyScroll();\r\n }\r\n\r\n hideProfileMenu() {\r\n this.layoutService.state.profileSidebarVisible = false;\r\n if (this.profileMenuOutsideClickListener) {\r\n this.profileMenuOutsideClickListener();\r\n this.profileMenuOutsideClickListener = null;\r\n }\r\n }\r\n\r\n blockBodyScroll(): void {\r\n if (document.body.classList) {\r\n document.body.classList.add('blocked-scroll');\r\n }\r\n else {\r\n document.body.className += ' blocked-scroll';\r\n }\r\n }\r\n\r\n unblockBodyScroll(): void {\r\n if (document.body.classList) {\r\n document.body.classList.remove('blocked-scroll');\r\n }\r\n else {\r\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' +\r\n 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n }\r\n }\r\n\r\n get containerClass() {\r\n return {\r\n 'layout-theme-light': this.layoutService.layoutConfig.colorScheme === 'light',\r\n 'layout-theme-dark': this.layoutService.layoutConfig.colorScheme === 'dark',\r\n 'layout-overlay': this.layoutService.layoutConfig.menuMode === 'overlay',\r\n 'layout-static': this.layoutService.layoutConfig.menuMode === 'static',\r\n 'layout-static-inactive': this.layoutService.state.staticMenuDesktopInactive && this.layoutService.layoutConfig.menuMode === 'static',\r\n 'layout-overlay-active': this.layoutService.state.overlayMenuActive,\r\n 'layout-mobile-active': this.layoutService.state.staticMenuMobileActive,\r\n 'p-input-filled': this.layoutService.layoutConfig.inputStyle === 'filled',\r\n 'p-ripple-disabled': !this.layoutService.layoutConfig.ripple\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.overlayMenuOpenSubscription) {\r\n this.overlayMenuOpenSubscription.unsubscribe();\r\n }\r\n\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n }\r\n\r\n this.onAfterNgDestroy();\r\n }\r\n\r\n onAfterNgDestroy = () => {}\r\n \r\n}\r\n\r\n","<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\r\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\r\n <div class=\"layout-sidebar\">\r\n <sidebar [menu]=\"sideMenu\"></sidebar>\r\n </div>\r\n <div class=\"layout-main-container\">\r\n <div class=\"layout-main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <footer></footer>\r\n </div>\r\n <div class=\"layout-mask\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"isSideMenuLayout === false\">\r\n <spiderly-topbar [menu]=\"topMenu\" [showHoverBgOnRootItems]=\"showHoverBgOnRootTopMenuItems\">\r\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\r\n </spiderly-topbar>\r\n <main style=\"max-width: 1100px; margin: auto; padding: 18px;\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n</div>","import { BaseEntity } from \"./base-entity\";\r\n\r\n// FT HACK: Fake class, because of api imports\r\nexport class Codebook extends BaseEntity\r\n{\r\n code?: string;\r\n displayName?: string;\r\n \r\n constructor(\r\n {\r\n code,\r\n displayName,\r\n }:{\r\n code?: string;\r\n displayName?: string;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.code = code;\r\n this.displayName = displayName;\r\n }\r\n\r\n static readonly typeName = 'Codebook' as const;\r\n}","import { BaseEntity } from \"./base-entity\";\r\n\r\nexport class LastMenuIconIndexClicked extends BaseEntity\r\n{\r\n index?: number;\r\n\r\n constructor(\r\n {\r\n index,\r\n }:{\r\n index?: number;\r\n } = {}\r\n ) {\r\n super(); \r\n\r\n this.index = index;\r\n }\r\n\r\n static readonly typeName = 'LastMenuIconIndexClicked' as const;\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class LazyLoadSelectedIdsResult extends BaseEntity\r\n{\r\n selectedIds?: number[] = []; // FT: Only for showing checkboxes, we will not send this to the backend\r\n totalRecordsSelected?: number = 0;\r\n\r\n constructor(\r\n {\r\n selectedIds,\r\n totalRecordsSelected,\r\n }:{\r\n selectedIds?: number[];\r\n totalRecordsSelected?: number;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.selectedIds = selectedIds;\r\n this.totalRecordsSelected = totalRecordsSelected;\r\n }\r\n\r\n static readonly typeName = 'LazyLoadSelectedIdsResult' as const;\r\n}","export class MenuChangeEvent {\r\n key: string;\r\n routeEvent?: boolean;\r\n}","export class MimeTypes {\r\n private constructor(public readonly value: string) {}\r\n\r\n static Pdf = new MimeTypes(\"application/pdf\");\r\n static Zip = new MimeTypes(\"application/zip\");\r\n\r\n static Jpeg = new MimeTypes(\"image/jpeg\");\r\n static Png = new MimeTypes(\"image/png\");\r\n static Svg = new MimeTypes(\"image/svg\");\r\n static Webp = new MimeTypes(\"image/webp\");\r\n\r\n toString() {\r\n return this.value;\r\n }\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\nexport class PrimengOption extends BaseEntity\r\n{\r\n label?: string;\r\n code?: any; // Can't be value: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294\r\n \r\n constructor(\r\n {\r\n label,\r\n code,\r\n }:{\r\n label?: string;\r\n code?: any;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.label = label;\r\n this.code = code;\r\n }\r\n\r\n static readonly typeName = 'PrimengOption' as const;\r\n}","import { BaseEntity } from \"../entities/base-entity\";\r\n\r\n// FT HACK: Fake class, because of api imports\r\nexport class SimpleSaveResult extends BaseEntity\r\n{\r\n id?: string;\r\n \r\n constructor(\r\n {\r\n id,\r\n }:{\r\n id?: string;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.id = id;\r\n }\r\n\r\n static typeName = 'SimpleSaveResult' as const;\r\n}","export class FilterSortMeta\r\n{\r\n field: string;\r\n order: number;\r\n\r\n constructor(\r\n {\r\n field,\r\n order,\r\n }: {\r\n field?: string;\r\n order?: number;\r\n } = {}\r\n ) {\r\n this.field = field as string;\r\n this.order = order as number;\r\n }\r\n\r\n static schema = {\r\n field: {\r\n type: 'string',\r\n },\r\n order: {\r\n type: 'number',\r\n },\r\n } as const;\r\n\r\n static readonly typeName = 'FilterSortMeta' as const;\r\n}","import { BaseEntity } from \"./base-entity\";\r\nimport { FilterRule } from \"./filter-rule\";\r\nimport { FilterSortMeta } from \"./filter-sort-meta\";\r\n\r\nexport class Filter<T extends BaseEntity = any> extends BaseEntity {\r\n filters?: { [K in keyof T]?: FilterRule[] };\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: FilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n\r\n constructor(\r\n {\r\n filters,\r\n first,\r\n rows,\r\n sortField,\r\n sortOrder,\r\n multiSortMeta,\r\n additionalFilterIdInt,\r\n additionalFilterIdLong,\r\n }: {\r\n filters?: { [K in keyof T]?: FilterRule[] };\r\n first?: number;\r\n rows?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n multiSortMeta?: FilterSortMeta[];\r\n additionalFilterIdInt?: number;\r\n additionalFilterIdLong?: number;\r\n } = {}\r\n ) {\r\n super();\r\n\r\n this.filters = filters;\r\n this.first = first;\r\n this.rows = rows;\r\n this.sortField = sortField;\r\n this.sortOrder = sortOrder;\r\n this.multiSortMeta = multiSortMeta;\r\n this.additionalFilterIdInt = additionalFilterIdInt;\r\n this.additionalFilterIdLong = additionalFilterIdLong;\r\n }\r\n\r\n static schema = {\r\n filters: {\r\n type: 'Object',\r\n // Note: 'filters' is a dynamic map (Dictionary), so we usually treat it as a generic Object\r\n // unless strict typing is required for the inner FilterRule[] values by the serializer.\r\n },\r\n first: {\r\n type: 'number',\r\n },\r\n rows: {\r\n type: 'number',\r\n },\r\n sortField: {\r\n type: 'string',\r\n },\r\n sortOrder: {\r\n type: 'number',\r\n },\r\n multiSortMeta: {\r\n type: 'FilterSortMeta[]',\r\n get nestedConstructor() { return FilterSortMeta; },\r\n },\r\n additionalFilterIdInt: {\r\n type: 'number',\r\n },\r\n additionalFilterIdLong: {\r\n type: 'number',\r\n },\r\n } as const;\r\n\r\n static readonly typeName = 'Filter' as const;\r\n}","import { MatchModeCodes } from \"../enums/match-mode-enum-codes\";\r\n\r\n/**\r\n * Represents a filter rule used for querying or filtering data collections.\r\n * \r\n * The `FilterRule` class is a generic structure that defines a single filtering condition,\r\n * including the match mode (comparison operator), the value to compare, and an optional logical operator.\r\n * \r\n * The allowed match modes are determined by the type parameter `T`:\r\n * - For `string`: supports `Contains`, `StartsWith`, and `Equals`.\r\n * - For `boolean`: supports `Equals`.\r\n * - For `Date`: supports `Equals`, `GreaterThan`, and `LessThan`.\r\n * - For `number`: supports `Equals`, `GreaterThan`, `LessThan`, and `In`.\r\n * - For other types: allows any value from `MatchModeCodes`.\r\n * \r\n * @template T The type of the value to filter by.\r\n */\r\nexport class FilterRule<T=any>\r\n{\r\n matchMode: AllowedMatchModes<T>;\r\n value: T;\r\n operator?: string;\r\n}\r\n\r\ntype AllowedMatchModes<T> = \r\n T extends string ? MatchModeCodes.Contains | MatchModeCodes.StartsWith | MatchModeCodes.Equals :\r\n T extends boolean ? MatchModeCodes.Equals :\r\n T extends Date ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan :\r\n T extends number ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan | MatchModeCodes.In :\r\n MatchModeCodes;","export class PaginatedResult<T = any> {\r\n data?: T[];\r\n totalRecords: number;\r\n}\r\n ","export enum SecurityPermissionCodes\r\n{\r\n\tReadUser = \"ReadUser\",\r\n\tUpdateUser = \"UpdateUser\",\r\n\tInsertUser = \"InsertUser\",\r\n\tDeleteUser = \"DeleteUser\",\r\n\tReadRole = \"ReadRole\",\r\n\tUpdateRole = \"UpdateRole\",\r\n\tInsertRole = \"InsertRole\",\r\n\tDeleteRole = \"DeleteRole\",\r\n\tReadPermission = \"ReadPermission\",\r\n\tUpdatePermission = \"UpdatePermission\",\r\n\tInsertPermission = \"InsertPermission\",\r\n\tDeletePermission = \"DeletePermission\",\r\n}\r\n","export enum VerificationTypeCodes\r\n{\r\n Login = 0,\r\n\tRegistration = 1,\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthBaseService, \r\n private router: Router,\r\n private config: ConfigBaseService\r\n ) {\r\n\r\n }\r\n\r\n canActivate(): Observable<boolean> {\r\n return this.checkAuth();\r\n }\r\n\r\n private checkAuth(): Observable<boolean> {\r\n return this.authService.user$.pipe(\r\n map((user) => {\r\n if (user) {\r\n return true;\r\n } else {\r\n // const returnUrl = this.router.getCurrentNavigation()?.extractedUrl.toString() || '/';\r\n // this.router.navigate(['login'], {\r\n // queryParams: { returnUrl },\r\n // });\r\n this.router.navigate([this.config.loginSlug]);\r\n return false;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { AuthBaseService } from '../services/auth-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NotAuthGuard implements CanActivate {\r\n constructor(\r\n private authService: AuthBaseService, \r\n ) {\r\n\r\n }\r\n\r\n canActivate(): Observable<boolean> {\r\n return this.checkAuth();\r\n }\r\n\r\n private checkAuth(): Observable<boolean> {\r\n return this.authService.user$.pipe(\r\n map((user) => {\r\n if (user) {\r\n this.authService.navigateToDashboard();\r\n return false;\r\n } \r\n else {\r\n return true;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { TranslocoService } from '@jsverse/transloco';\r\nimport { ErrorHandler, Injectable } from '@angular/core';\r\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpiderlyErrorHandler implements ErrorHandler {\r\n constructor(\r\n private messageService: SpiderlyMessageService, \r\n private translocoService: TranslocoService, \r\n private config: ConfigBaseService,\r\n ) {\r\n\r\n }\r\n\r\n handleError(error: any): void {\r\n if(this.config.production == false){\r\n console.error(error);\r\n }\r\n\r\n if(error instanceof HttpErrorResponse == false){\r\n this.messageService.errorMessage(\r\n this.translocoService.translate('UnexpectedErrorDetails'),\r\n this.translocoService.translate('UnexpectedErrorTitle'),\r\n );\r\n }\r\n\r\n }\r\n}\r\n","import { HttpEvent, HttpInterceptorFn } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { Observable, finalize } from \"rxjs\";\r\n\r\nexport const httpLoadingInterceptor: HttpInterceptorFn = (req, next) => {\r\n const spinner = inject(NgxSpinnerService);\r\n \r\n const shouldSkipSpinner = req.params.has('X-Skip-Spinner'); // Using this for multiautocomplete, autocomplete, dropdown, table etc...\r\n\r\n if (!shouldSkipSpinner)\r\n spinner.show();\r\n\r\n return next(req).pipe(\r\n finalize(() => {\r\n if (!shouldSkipSpinner){\r\n spinner.hide();\r\n }\r\n })\r\n ) as Observable<HttpEvent<any>>;\r\n}","import { HttpEvent, HttpResponse, HttpInterceptorFn, HttpRequest, HttpParams } from '@angular/common/http';\r\nimport { tap } from 'rxjs';\r\n\r\nexport const jsonHttpInterceptor: HttpInterceptorFn = (req, next) => {\r\n const cleanedBody = getCleanRequestBody(req.body);\r\n const clonedRequest: HttpRequest<any> = req.clone({\r\n body: cleanedBody\r\n });\r\n\r\n return next(clonedRequest)\r\n .pipe(\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n convertToDate(event.body);\r\n }\r\n }\r\n ));\r\n}\r\n\r\nconst getCleanRequestBody = (obj: unknown): unknown => {\r\n if (\r\n obj === null || \r\n obj === undefined ||\r\n obj instanceof FormData || \r\n obj instanceof Blob || \r\n obj instanceof File ||\r\n obj instanceof ArrayBuffer\r\n ) {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map(item => getCleanRequestBody(item));\r\n }\r\n\r\n if (obj instanceof Date) {\r\n return obj.toISOString();\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n const newObj: Record<string, unknown> = {};\r\n for (const key of Object.keys(obj)) {\r\n newObj[key] = getCleanRequestBody((obj as any)[key]);\r\n }\r\n return newObj;\r\n }\r\n\r\n return obj;\r\n};\r\n\r\n/**\r\n * @see https://stackoverflow.com/a/54733846/1306679\r\n */\r\nconst convertToDate = (\r\n object: unknown,\r\n parent?: Record<string, unknown> | unknown[],\r\n key?: number | string,\r\n) => {\r\n if (object === null) return;\r\n \r\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\r\n\r\n if (typeof object === 'string') {\r\n if (dateRegex.test(object)) {\r\n const date = new Date(object);\r\n parent[key] = date;\r\n }\r\n } else if (Array.isArray(object)) {\r\n for (let i = 0; i < object.length; i++)\r\n convertToDate(object[i], object, i);\r\n } else {\r\n for (const key of Object.keys(object as Record<string, unknown>)) {\r\n convertToDate(\r\n (object as Record<string, unknown>)[key],\r\n object as Record<string, unknown>,\r\n key,\r\n );\r\n }\r\n }\r\n}","import { inject, PLATFORM_ID } from '@angular/core';\r\nimport { HttpInterceptorFn } from '@angular/common/http';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nexport const jwtInterceptor: HttpInterceptorFn = (req, next) => {\r\n const config = inject(ConfigBaseService);\r\n const platformId = inject(PLATFORM_ID);\r\n\r\n let accessToken = null;\r\n if (isPlatformBrowser(platformId)) {\r\n accessToken = localStorage.getItem('access_token');\r\n }\r\n\r\n const isApiUrl = req.url.startsWith(config.apiUrl);\r\n\r\n if (accessToken && isApiUrl) {\r\n req = req.clone({\r\n setHeaders: { Authorization: `Bearer ${accessToken}` },\r\n });\r\n }\r\n\r\n return next(req);\r\n}","import { inject } from '@angular/core';\r\nimport { HttpRequest, HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { ConfigBaseService } from '../services/config-base.service';\r\n\r\nexport const unauthorizedInterceptor: HttpInterceptorFn = (req, next) => {\r\n const messageService = inject(SpiderlyMessageService);\r\n const translocoService = inject(TranslocoService);\r\n const config = inject(ConfigBaseService);\r\n\r\n const handleAuthError = (err: HttpErrorResponse, request: HttpRequest<any>): Observable<any> => {\r\n if (!config.production) {\r\n console.error(err);\r\n }\r\n \r\n let errorResponse = err.error;\r\n\r\n if (request.responseType != 'json')\r\n errorResponse = JSON.parse(err.error);\r\n\r\n if (err.status == 0) {\r\n setTimeout(() => { // Had problem when the server is shut down, and try to refresh token, warning message didn't appear\r\n messageService.warningMessage( \r\n translocoService.translate('ServerLostConnectionDetails'),\r\n translocoService.translate('ServerLostConnectionTitle'),\r\n );\r\n }, 100);\r\n return of(err.message);\r\n } \r\n else if (err.status == 400) {\r\n messageService.warningMessage(\r\n errorResponse.message ?? translocoService.translate('BadRequestDetails'),\r\n translocoService.translate('Warning'),\r\n );\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 401) {\r\n messageService.warningMessage(\r\n errorResponse.message ?? translocoService.translate('LoginRequired'),\r\n translocoService.translate('Warning'),\r\n );\r\n\r\n return of(err.message);\r\n } \r\n else if (err.status == 403) {\r\n messageService.warningMessage(\r\n translocoService.translate('PermissionErrorDetails'),\r\n translocoService.translate('PermissionErrorTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 404) {\r\n messageService.warningMessage(\r\n translocoService.translate('NotFoundDetails'),\r\n translocoService.translate('NotFoundTitle'),\r\n );\r\n return of(err.message);\r\n } \r\n else if (err.status == 419) { // Access token expired\r\n return of(err.message);\r\n } \r\n else {\r\n messageService.errorMessage(\r\n translocoService.translate('UnexpectedErrorDetails'),\r\n translocoService.translate('UnexpectedErrorTitle'),\r\n );\r\n\r\n return of(err.message);\r\n }\r\n\r\n return throwError(err);\r\n }\r\n \r\n return next(req).pipe(\r\n catchError((err) => {\r\n return handleAuthError(err, req);\r\n })\r\n );\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { AuthBaseService } from './auth-base.service';\r\nimport { AuthResult } from '../entities/security-entities';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nexport function authInitializer(authService: AuthBaseService, platformId): () => Observable<AuthResult> {\r\n if (isPlatformBrowser(platformId)) {\r\n return () => {\r\n return authService.refreshToken();\r\n };\r\n }\r\n return () => {\r\n return of();\r\n };\r\n}","import { ConfigBaseService } from './config-base.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslocoLoader } from '@jsverse/transloco';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({ \r\n providedIn: 'root' \r\n})\r\nexport class SpiderlyTranslocoLoader implements TranslocoLoader {\r\n constructor(\r\n private http: HttpClient,\r\n private config: ConfigBaseService,\r\n ) {}\r\n\r\n getTranslation(lang: string) {\r\n return this.http.get(`${this.config.frontendUrl}/assets/i18n/${lang}.json`);\r\n }\r\n\r\n}","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[templateType]',\r\n})\r\nexport class SpiderlyTemplateTypeDirective<T> {\r\n @Input() templateType?: T;\r\n\r\n static ngTemplateContextGuard<T>(\r\n dir: SpiderlyTemplateTypeDirective<T>,\r\n ctx: unknown\r\n ): ctx is T {\r\n return true;\r\n }\r\n}","/*\r\n * Public API Surface of spiderly\r\n */\r\n\r\nexport * from './lib/controls/spiderly-autocomplete/spiderly-autocomplete.component';\r\nexport * from './lib/controls/spiderly-calendar/spiderly-calendar.component';\r\nexport * from './lib/controls/spiderly-checkbox/spiderly-checkbox.component';\r\nexport * from './lib/controls/spiderly-colorpicker/spiderly-colorpicker.component';\r\nexport * from './lib/controls/spiderly-dropdown/spiderly-dropdown.component';\r\nexport * from './lib/controls/spiderly-editor/spiderly-editor.component';\r\nexport * from './lib/controls/spiderly-file/spiderly-file.component';\r\nexport * from './lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\r\nexport * from './lib/controls/spiderly-multiselect/spiderly-multiselect.component';\r\nexport * from './lib/controls/spiderly-number/spiderly-number.component';\r\nexport * from './lib/controls/spiderly-password/spiderly-password.component';\r\nexport * from './lib/controls/spiderly-textarea/spiderly-textarea.component';\r\nexport * from './lib/controls/spiderly-textbox/spiderly-textbox.component';\r\nexport * from './lib/controls/base-control';\r\nexport * from './lib/controls/base-autocomplete-control';\r\nexport * from './lib/controls/base-dropdown-control';\r\nexport * from './lib/controls/spiderly-controls.module';\r\n\r\nexport * from './lib/components/base-details/role-base-details.component'\r\nexport * from './lib/components/base-form/base-form copy';\r\nexport * from './lib/components/card-skeleton/card-skeleton.component';\r\nexport * from './lib/components/auth/partials/login-verification.component';\r\nexport * from './lib/components/auth/partials/verification-wrapper.component';\r\nexport * from './lib/components/auth/login/login.component';\r\nexport * from './lib/components/footer/footer.component';\r\nexport * from './lib/components/spiderly-buttons/google-button/google-button.component';\r\nexport * from './lib/components/index-card/index-card.component';\r\nexport * from './lib/components/info-card/info-card.component';\r\nexport * from './lib/components/not-found/not-found.component';\r\nexport * from './lib/components/required/required.component';\r\nexport * from './lib/components/spiderly-buttons/return-button/return-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-button/spiderly-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component';\r\nexport * from './lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base';\r\nexport * from './lib/components/spiderly-data-table/spiderly-data-table.component';\r\nexport * from './lib/components/spiderly-data-view/spiderly-data-view.component';\r\nexport * from './lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component';\r\nexport * from './lib/components/spiderly-form-control/spiderly-form-control';\r\nexport * from './lib/components/spiderly-panels/panel-body/panel-body.component';\r\nexport * from './lib/components/spiderly-panels/panel-footer/panel-footer.component';\r\nexport * from './lib/components/spiderly-panels/panel-header/panel-header.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-card/spiderly-card.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component';\r\nexport * from './lib/components/spiderly-panels/spiderly-panels.module';\r\nexport * from './lib/components/layout/sidebar/sidebar-menu.component';\r\nexport * from './lib/components/layout/sidebar/menuitem.component';\r\nexport * from './lib/components/layout/sidebar/sidebar.component';\r\nexport * from './lib/components/layout/sidemenu-topbar/sidemenu-topbar.component';\r\nexport * from './lib/components/layout/layout.component';\r\nexport * from './lib/components/layout/topbar/topbar.component';\r\nexport * from './lib/components/layout/profile-avatar/profile-avatar.component';\r\n\r\nexport * from './lib/entities/base-entity';\r\nexport * from './lib/entities/codebook';\r\nexport * from './lib/entities/last-menu-icon-index-clicked';\r\nexport * from './lib/entities/lazy-load-selected-ids-result';\r\nexport * from './lib/entities/menuchangeevent';\r\nexport * from './lib/entities/mime-type';\r\nexport * from './lib/entities/namebook';\r\nexport * from './lib/entities/primeng-option';\r\nexport * from './lib/entities/security-entities';\r\nexport * from './lib/entities/simple-save-result';\r\nexport * from './lib/entities/spiderly-button';\r\nexport * from './lib/entities/filter';\r\nexport * from './lib/entities/filter-rule';\r\nexport * from './lib/entities/filter-sort-meta';\r\nexport * from './lib/entities/paginated-result';\r\nexport * from './lib/entities/init-company-auth-dialog-details';\r\nexport * from './lib/entities/init-top-bar-data';\r\nexport * from './lib/entities/is-authorized-for-save-event';\r\n\r\nexport * from './lib/enums/security-enums';\r\nexport * from './lib/enums/verification-type-codes';\r\nexport * from './lib/enums/match-mode-enum-codes';\r\n\r\nexport * from './lib/guards/auth.guard';\r\nexport * from './lib/guards/not-auth.guard';\r\n\r\nexport * from './lib/handlers/spiderly-error-handler';\r\n\r\nexport * from './lib/interceptors/http-loading.interceptor';\r\nexport * from './lib/interceptors/json-parser.interceptor';\r\nexport * from './lib/interceptors/jwt.interceptor';\r\nexport * from './lib/interceptors/unauthorized.interceptor';\r\n\r\nexport * from './lib/services/api.service.security';\r\nexport * from './lib/services/app-initializer';\r\nexport * from './lib/services/auth-base.service';\r\nexport * from './lib/services/base-form.service';\r\nexport * from './lib/services/config-base.service';\r\nexport * from './lib/services/helper-functions';\r\nexport * from './lib/services/spiderly-message.service';\r\nexport * from './lib/services/spiderly-transloco-loader';\r\nexport * from './lib/services/translate-labels-abstract.service';\r\nexport * from './lib/services/validator-abstract.service';\r\nexport * from './lib/services/app-layout-base.service';\r\n\r\nexport * from './lib/directives/template-type.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ValidatorAbstractService","i6","i4","i5","i2","i3","i1","i2.ConfigBaseService","i1.TranslateLabelsAbstractService","i3.SpiderlyMessageService","map","i1.ApiSecurityService","i3.BaseFormService","i4.AuthBaseService","i7.PanelHeaderComponent","i8.PanelBodyComponent","i9.PanelFooterComponent","i10.SpiderlyPanelComponent","i2.SpiderlyMessageService","i5.BaseFormService","i7.SpiderlyTextboxComponent","i8.SpiderlyButtonComponent","i9.PanelHeaderComponent","i10.PanelBodyComponent","i11.PanelFooterComponent","i12.SpiderlyPanelComponent","i1.AuthBaseService","i1.ConfigBaseService","i2.AuthBaseService","i6.AuthBaseService","i7.ConfigBaseService","i8","i9.SpiderlyTextboxComponent","i10.SpiderlyButtonComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","i10","i11","i13","i14","i15","i4.SpiderlyButtonComponent","i7","delay","i3.AuthBaseService","i1.LayoutBaseService","i3.SidebarMenuService","i5.ApiSecurityService","i6.ConfigBaseService","i8.SpiderlyAutocompleteComponent","i4.ConfigBaseService","filter","i5.ConfigBaseService","i3.ConfigBaseService","i1.SpiderlyMessageService","finalize","tap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spiderly.mjs","sources":["../../../projects/spiderly/src/lib/components/required/required.component.ts","../../../projects/spiderly/src/lib/components/required/required.component.html","../../../projects/spiderly/src/lib/controls/base-control.ts","../../../projects/spiderly/src/lib/controls/base-dropdown-control.ts","../../../projects/spiderly/src/lib/controls/base-autocomplete-control.ts","../../../projects/spiderly/src/lib/components/spiderly-form-control/spiderly-form-control.ts","../../../projects/spiderly/src/lib/services/validator-abstract.service.ts","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.html","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-calendar/spiderly-calendar.component.html","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-checkbox/spiderly-checkbox.component.html","../../../projects/spiderly/src/lib/controls/spiderly-colorpicker/spiderly-colorpicker.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-colorpicker/spiderly-colorpicker.component.html","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-dropdown/spiderly-dropdown.component.html","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-editor/spiderly-editor.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.html","../../../projects/spiderly/src/lib/entities/base-entity.ts","../../../projects/spiderly/src/lib/services/helper-functions.ts","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-file/spiderly-file.component.html","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.html","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiselect/spiderly-multiselect.component.html","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-number/spiderly-number.component.html","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-password/spiderly-password.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.component.html","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/return-button/return-button.component.html","../../../projects/spiderly/src/lib/controls/spiderly-controls.module.ts","../../../projects/spiderly/src/lib/entities/is-authorized-for-save-event.ts","../../../projects/spiderly/src/lib/entities/namebook.ts","../../../projects/spiderly/src/lib/entities/security-entities.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.ts","../../../projects/spiderly/src/lib/components/card-skeleton/card-skeleton.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-body/panel-body.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-footer/panel-footer.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/panel-header/panel-header.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-panels.module.ts","../../../projects/spiderly/src/lib/services/config-base.service.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/errors/spiderly-error.ts","../../../projects/spiderly/src/lib/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/spiderly-message.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.ts","../../../projects/spiderly/src/lib/entities/init-company-auth-dialog-details.ts","../../../projects/spiderly/src/lib/services/auth-base.service.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.ts","../../../projects/spiderly/src/lib/components/base-details/role-base-details.component.html","../../../projects/spiderly/src/lib/components/base-form/base-form copy.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.html","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/login-verification.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/google-button/google-button.component.html","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/auth.component.html","../../../projects/spiderly/src/lib/components/auth/login/login.component.ts","../../../projects/spiderly/src/lib/components/auth/login/login.component.html","../../../projects/spiderly/src/lib/components/footer/footer.component.ts","../../../projects/spiderly/src/lib/components/footer/footer.component.html","../../../projects/spiderly/src/lib/components/index-card/index-card.component.ts","../../../projects/spiderly/src/lib/components/index-card/index-card.component.html","../../../projects/spiderly/src/lib/components/info-card/info-card.component.ts","../../../projects/spiderly/src/lib/components/info-card/info-card.component.html","../../../projects/spiderly/src/lib/components/not-found/not-found.component.ts","../../../projects/spiderly/src/lib/components/not-found/not-found.component.html","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.ts","../../../projects/spiderly/src/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.html","../../../projects/spiderly/src/lib/enums/match-mode-enum-codes.ts","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.ts","../../../projects/spiderly/src/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.html","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-table/spiderly-data-table.component.html","../../../projects/spiderly/src/lib/components/spiderly-data-view/spiderly-data-view.component.ts","../../../projects/spiderly/src/lib/components/spiderly-data-view/spiderly-data-view.component.html","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.ts","../../../projects/spiderly/src/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.html","../../../projects/spiderly/src/lib/entities/init-top-bar-data.ts","../../../projects/spiderly/src/lib/services/app-layout-base.service.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.service.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/menuitem.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar-menu.component.html","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidebar/sidebar.component.html","../../../projects/spiderly/src/lib/components/layout/profile-avatar/profile-avatar.component.ts","../../../projects/spiderly/src/lib/components/layout/profile-avatar/profile-avatar.component.html","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.html","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.ts","../../../projects/spiderly/src/lib/components/layout/topbar/topbar.component.html","../../../projects/spiderly/src/lib/components/layout/layout.component.ts","../../../projects/spiderly/src/lib/components/layout/layout.component.html","../../../projects/spiderly/src/lib/entities/codebook.ts","../../../projects/spiderly/src/lib/entities/last-menu-icon-index-clicked.ts","../../../projects/spiderly/src/lib/entities/lazy-load-selected-ids-result.ts","../../../projects/spiderly/src/lib/entities/menuchangeevent.ts","../../../projects/spiderly/src/lib/entities/mime-type.ts","../../../projects/spiderly/src/lib/entities/primeng-option.ts","../../../projects/spiderly/src/lib/entities/simple-save-result.ts","../../../projects/spiderly/src/lib/entities/filter-sort-meta.ts","../../../projects/spiderly/src/lib/entities/filter.ts","../../../projects/spiderly/src/lib/entities/filter-rule.ts","../../../projects/spiderly/src/lib/entities/paginated-result.ts","../../../projects/spiderly/src/lib/enums/security-enums.ts","../../../projects/spiderly/src/lib/enums/verification-type-codes.ts","../../../projects/spiderly/src/lib/guards/auth.guard.ts","../../../projects/spiderly/src/lib/guards/not-auth.guard.ts","../../../projects/spiderly/src/lib/handlers/spiderly-error-handler.ts","../../../projects/spiderly/src/lib/interceptors/http-loading.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/json-parser.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/jwt.interceptor.ts","../../../projects/spiderly/src/lib/interceptors/unauthorized.interceptor.ts","../../../projects/spiderly/src/lib/services/app-initializer.ts","../../../projects/spiderly/src/lib/services/spiderly-transloco-loader.ts","../../../projects/spiderly/src/lib/directives/template-type.directive.ts","../../../projects/spiderly/src/public-api.ts","../../../projects/spiderly/src/spiderly.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\n\n@Component({\n selector: 'required',\n templateUrl: './required.component.html',\n styles: [],\n standalone: true,\n})\nexport class RequiredComponent {\n\n constructor() {}\n\n}","<span style=\"color: red; margin-left: 4px;\">*</span>","import {\n Component, Input,\n} from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { SpiderlyFormControl } from '../components/spiderly-form-control/spiderly-form-control';\n \n @Component({\n selector: 'base-control',\n template: '',\n styles: [],\n standalone: false\n})\n export class BaseControl {\n @Input() control: SpiderlyFormControl<any>; // If you name it formControl: https://stackoverflow.com/a/54755671/21209982\n @Input() disabled: boolean = false;\n @Input() showLabel: boolean = true;\n @Input() showRequired: boolean = true;\n @Input() label: string = null; // NgModel/Want custom translation\n @Input() controlValid: boolean = true; // NgModel\n @Input() placeholder: string = '';\n @Input() showTooltip: boolean = false;\n @Input() tooltipText: string = null;\n @Input() tooltipIcon: string = 'pi pi-info-circle';\n errorMessageTooltipEvent: 'hover' | 'focus';\n \n constructor(\n protected translocoService: TranslocoService,\n ) {\n\n }\n\n ngOnInit(){\n if(this.control != null && this.disabled == true)\n this.control.disable();\n\n this.errorMessageTooltipEvent = window.innerWidth > 1000 ? 'hover' : 'focus'\n }\n\n ngAfterViewInit(){\n\n }\n\n getTranslatedLabel(): string{\n return this.label ?? this.control.labelForDisplay;\n }\n\n getValidationErrrorMessages(){\n if(this.control?.errors && this.control?.dirty){\n // It should always be one error message for single form control, \n // also i don't need to reassign it to null because it will be shown only when control.valid == false\n return this.control.errors['_'];\n }\n\n return null;\n }\n\n }","import {\n Component,\n EventEmitter,\n Input,\n Output,\n } from '@angular/core';\nimport { BaseControl } from './base-control';\nimport { PrimengOption } from '../entities/primeng-option';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { Namebook } from '../entities/namebook';\n\n @Component({\n selector: 'base-dropdown-control',\n template: '',\n styles: [],\n standalone: false\n})\n export class BaseDropdownControl extends BaseControl {\n @Input() options: Namebook[];\n @Input() showAddon: boolean = false;\n @Input() addonIcon: string = 'pi pi-ellipsis-h';\n @Input() override placeholder: string = this.translocoService.translate('SelectFromTheList');\n @Output() onButtonClick: EventEmitter<null> = new EventEmitter();\n \n constructor(\n protected override translocoService: TranslocoService,\n ) {\n super(translocoService);\n }\n \n dropdownMarkAsDirty(){\n this.control.markAsDirty();\n }\n\n addonClick(){\n this.onButtonClick.next(null);\n }\n }","import {\n Component,\n EventEmitter,\n Output,\n } from '@angular/core';\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { BaseDropdownControl } from './base-dropdown-control';\n\n @Component({\n selector: 'base-autocomplete-control',\n template: '',\n styles: [],\n standalone: false\n})\n export class BaseAutocompleteControl extends BaseDropdownControl {\n @Output() onTextInput: EventEmitter<AutoCompleteCompleteEvent> = new EventEmitter();\n }","import { FormArray, FormControl, FormControlOptions, FormGroup, ValidatorFn } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { MenuItem } from 'primeng/api';\nimport { Observable } from 'rxjs';\nimport { BaseEntity, SchemaAwareConstructor } from '../../entities/base-entity';\nimport { Namebook } from '../../entities/namebook';\nimport { BaseFormService } from '../../services/base-form.service';\n\nexport interface SpiderlyValidatorFn extends ValidatorFn {\n hasNotEmptyRule?: boolean;\n}\n\n// It's made like generic type because of <number>, <string> etc. not to put class like User.\nexport class SpiderlyFormControl<T = any> extends FormControl<T> {\n public label: string;\n public labelForDisplay: string;\n public required: boolean;\n public parentClassName: string;\n public type: string; // number, Date, string, Namebook[], number[]...\n private _spiderlyValidator: SpiderlyValidatorFn | null;\n\n constructor(value: any, opts: FormControlOptions=null, required:boolean=false) {\n opts = opts ?? {updateOn: 'blur'};\n super(value, opts);\n this.required = required;\n }\n\n override getRawValue(): T { // Doing this because .value gets only not disabled values\n return super.getRawValue() as T;\n }\n\n public override get validator(): SpiderlyValidatorFn | null {\n return this._spiderlyValidator;\n }\n\n public override set validator(validator: SpiderlyValidatorFn | null) {\n this._spiderlyValidator = validator;\n this.setValidators(validator); \n }\n}\n\ntype SpiderlyControlsOfType<TValue> = {\n [P in keyof TValue]:\n TValue[P] extends (infer U)[]\n ? U extends Namebook | string | number | Date | boolean\n ? SpiderlyFormControl<TValue[P]>\n : SpiderlyFormArray<U>\n : TValue[P] extends Date\n ? SpiderlyFormControl<TValue[P]>\n : TValue[P] extends object\n ? SpiderlyFormGroup<TValue[P]>\n : SpiderlyFormControl<TValue[P]>;\n};\n\nexport class SpiderlyFormGroup<TValue = any> extends FormGroup {\n declare controls: SpiderlyControlsOfType<TValue>;\n\n constructor(controls: SpiderlyControlsOfType<TValue>) {\n super(controls);\n }\n\n override getRawValue(): TValue { // Doing this because .value gets only not disabled values\n return super.getRawValue() as TValue;\n }\n\n public targetClass: SchemaAwareConstructor<TValue>;\n public trackingId: string = crypto.randomUUID();\n public name?: string; // Using for nested form groups\n public saveObservableMethod?: (saveBody: any) => Observable<any>;\n public initSaveBody?: () => BaseEntity = () => null;\n public controlNamesFromHtml?: string[] = [];\n\n public getControl = <TKey extends Extract<keyof TValue, string>>(formControlName: TKey): SpiderlyControlsOfType<TValue>[TKey] => {\n if(this.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\n this.controlNamesFromHtml.push(formControlName);\n\n let formControl = this.controls[formControlName];\n if (formControl == null) {\n console.error(`Spiderly: The property ${formControlName} in the form group ${this.targetClass.typeName} doesn't exist`);\n return null;\n }\n \n return formControl;\n }\n}\n\nexport class SpiderlyFormArray<TValue extends BaseEntity = any> extends FormArray {\n constructor(\n controls: SpiderlyControlsOfType<TValue>[],\n private translocoService: TranslocoService,\n private baseFormService: BaseFormService\n ) {\n super(controls);\n }\n\n public label: string;\n public labelForDisplay: string;\n override value: TValue[]; // There is no getRawValue in FormArray\n public required: boolean;\n public formGroupInitialValues: Partial<TValue> = {};\n public targetClass: SchemaAwareConstructor<TValue>;\n public lastMenuIconIndexClicked: number;\n\n public getCrudMenuForOrderedData = () => {\n let crudMenuForOrderedData: MenuItem[] = [\n {label: this.translocoService.translate('Remove'), icon: 'pi pi-minus', command: () => {\n this.baseFormService.removeFormControlFromTheFormArray(this, this.lastMenuIconIndexClicked);\n }},\n {label: this.translocoService.translate('AddAbove'), icon: 'pi pi-arrow-up', command: () => {\n this.baseFormService.addNewFormGroupToFormArray(\n this, this.targetClass, this.formGroupInitialValues, this.lastMenuIconIndexClicked\n );\n }},\n {label: this.translocoService.translate('AddBelow'), icon: 'pi pi-arrow-down', command: () => {\n this.baseFormService.addNewFormGroupToFormArray(\n this, this.targetClass, this.formGroupInitialValues, this.lastMenuIconIndexClicked + 1\n );\n }},\n ];\n\n return crudMenuForOrderedData;\n };\n\n public addNewFormGroup = (index: number) => {\n this.baseFormService.addNewFormGroupToFormArray(\n this,\n this.targetClass,\n this.formGroupInitialValues,\n index\n );\n }\n\n public getFormGroups = () => {\n return this.controls as SpiderlyFormGroup<TValue>[]\n }\n\n disableAllFormControls(){\n this.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\n segmentationItemFormGroup.controls[key].disable();\n });\n });\n }\n\n enableAllFormControls(){\n this.controls.forEach((segmentationItemFormGroup: SpiderlyFormGroup) => {\n Object.keys(segmentationItemFormGroup.controls).forEach(key => {\n segmentationItemFormGroup.controls[key].enable();\n });\n });\n }\n}","import { TranslocoService } from '@jsverse/transloco';\nimport { Injectable } from \"@angular/core\";\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyValidatorFn } from \"../components/spiderly-form-control/spiderly-form-control\";\nimport { ValidationErrors } from \"@angular/forms\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class ValidatorAbstractService {\n\n constructor(\n protected translocoService: TranslocoService\n ) {\n }\n\n abstract setValidator (formControl: SpiderlyFormControl, className: string): SpiderlyValidatorFn;\n\n isArrayEmpty = (control: SpiderlyFormControl): SpiderlyValidatorFn => {\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\n const value = control.value;\n \n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\n \n const arrayValid = notEmptyRule;\n \n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\n };\n validator.hasNotEmptyRule = true;\n control.required = true;\n return validator;\n }\n\n notEmpty = (control: SpiderlyFormControl): void => {\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\n const value = control.value;\n \n const notEmptyRule = typeof value !== 'undefined' && value !== null && value !== '';\n \n const arrayValid = notEmptyRule;\n \n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\n };\n validator.hasNotEmptyRule = true;\n control.required = true;\n control.validator = validator;\n control.updateValueAndValidity();\n }\n \n isFormArrayEmpty = (control: SpiderlyFormArray): SpiderlyValidatorFn => {\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\n const value = control;\n \n const notEmptyRule = typeof value !== 'undefined' && value !== null && value.length !== 0;\n \n const arrayValid = notEmptyRule;\n \n return arrayValid ? null : { _ : this.translocoService.translate('NotEmpty')};\n };\n validator.hasNotEmptyRule = true;\n control.required = true;\n return validator;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { AutoCompleteCompleteEvent, AutoCompleteModule, AutoCompleteSelectEvent } from 'primeng/autocomplete';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { ValidatorAbstractService } from '../../services/validator-abstract.service';\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\nimport { SpiderlyFormControl } from '../../components/spiderly-form-control/spiderly-form-control';\nimport { Namebook } from '../../entities/namebook';\n\n@Component({\n selector: 'spiderly-autocomplete',\n templateUrl: './spiderly-autocomplete.component.html',\n imports: [\n ReactiveFormsModule,\n FormsModule,\n AutoCompleteModule,\n InputGroupAddonModule,\n InputGroupModule,\n TooltipModule,\n CommonModule,\n RequiredComponent,\n TranslocoDirective,\n ]\n})\nexport class SpiderlyAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\n @Input() appendTo: any = 'body';\n @Input() showClear: boolean = true;\n @Input() emptyMessage: string;\n @Input() displayName: string; // Added because when we initialize the object options are null\n helperFormControl = new SpiderlyFormControl<Namebook>(null, {updateOn: 'change'});\n\n constructor(\n protected override translocoService: TranslocoService,\n private validatorService: ValidatorAbstractService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n\n this.helperFormControl.label = this.control.label;\n this.validatorService.setValidator(this.helperFormControl, this.control.parentClassName);\n \n if (this.control.value != null)\n this.helperFormControl.setValue({displayName: this.displayName, id: this.control.value});\n\n if (this.emptyMessage == null) {\n this.emptyMessage = this.translocoService.translate('EmptyMessage');\n }\n }\n\n search(event: AutoCompleteCompleteEvent){\n this.onTextInput.next(event);\n }\n\n select(event: AutoCompleteSelectEvent){\n const selectedOption: Namebook = event.value;\n this.control.setValue(selectedOption.id);\n this.helperFormControl.setValue({displayName: selectedOption.displayName, id: selectedOption.id});\n }\n\n clear(){\n this.control.setValue(null);\n this.helperFormControl.setValue(null);\n }\n\n autocompleteMarkAsDirty(){\n this.dropdownMarkAsDirty();\n this.helperFormControl.markAsDirty();\n }\n\n}\n","<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"> <!-- By passing an empty string we remove the label entirely -->\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n \n <!-- Don't support p-inputgroup -->\n <p-autocomplete\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"helperFormControl\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"options\"\n (completeMethod)=\"search($event)\"\n [forceSelection]=\"true\"\n [dropdown]=\"false\"\n [showClear]=\"showClear\"\n (onHide)=\"autocompleteMarkAsDirty()\"\n (onSelect)=\"select($event)\"\n (onClear)=\"clear()\"\n [completeOnFocus]=\"true\"\n [fluid]=\"true\"\n [style]=\"{'width':'100%'}\"\n [appendTo]=\"appendTo\"\n [emptyMessage]=\"emptyMessage\"\n [lazy]=\"true\"\n optionLabel=\"displayName\"\n ></p-autocomplete>\n </div>\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-calendar',\n templateUrl: './spiderly-calendar.component.html',\n styles: [],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n DatePickerModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyCalendarComponent extends BaseControl implements OnInit {\n @Input() showTime: boolean = false;\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n\n setDate(event:Date) { \n \n }\n}\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\" style=\"display: flex; align-items: center;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 8px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\n </div>\n <p-datepicker\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n (onBlur)=\"control.markAsDirty()\"\n dateFormat=\"dd.mm.yy.\"\n iconDisplay=\"input\" \n [showIcon]=\"true\" \n [showTime]=\"showTime\"\n (onSelect)=\"setDate($event)\"\n appendTo=\"body\"\n [fluid]=\"true\"\n />\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { CheckboxChangeEvent, CheckboxModule } from 'primeng/checkbox';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-checkbox',\n templateUrl: './spiderly-checkbox.component.html',\n styleUrl: './spiderly-checkbox.component.scss',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CheckboxModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyCheckboxComponent extends BaseControl implements OnInit {\n @Input() fakeLabel = true;\n @Input() initializeToFalse = false;\n @Input() inlineLabel = false;\n @Output() onChange = new EventEmitter<CheckboxChangeEvent>();\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n if (this.initializeToFalse == true)\n this.control.setValue(false);\n\n super.ngOnInit();\n }\n\n change = (event: CheckboxChangeEvent) => {\n this.onChange.next(event);\n }\n}\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"inlineLabel === false && getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div style=\"margin-top: 0.5rem; position: relative;\"> <!-- The margin-top is intentional: it vertically aligns the checkbox with other input controls that have greater height. -->\n <p-checkbox\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \n [formControl]=\"control\"\n [value]=\"inlineLabel ? label : null\"\n [id]=\"label\"\n [binary]=\"true\"\n (onChange)=\"change($event)\"\n />\n </div>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { ColorPickerModule } from 'primeng/colorpicker';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'spiderly-colorpicker',\n templateUrl: './spiderly-colorpicker.component.html',\n styles: [],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n ColorPickerModule,\n InputTextModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyColorPickerComponent extends BaseControl implements OnInit {\n @Input() showInputTextField: boolean = true;\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n this.control.valueChanges.subscribe((value) => {\n this.control.setValue(value, { emitEvent: false }); // Preventing infinite loop\n });\n\n if (this.control.value == null)\n this.placeholder = this.translocoService.translate('ColorPickerPlaceholder');\n\n super.ngOnInit();\n }\n\n}\n","<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div style=\"display: flex; gap: 10px;\">\n <input\n *ngIf=\"control && showInputTextField\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pInputText\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [fluid]=\"true\"\n />\n <p-colorpicker\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n appendTo=\"body\"\n ></p-colorpicker>\n </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { BaseDropdownControl } from '../base-dropdown-control';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { DropdownChangeEvent } from 'primeng/dropdown';\nimport { SelectModule } from 'primeng/select';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-dropdown',\n templateUrl: './spiderly-dropdown.component.html',\n styles: [],\n imports: [\n ReactiveFormsModule,\n FormsModule,\n SelectModule,\n TooltipModule,\n CommonModule,\n RequiredComponent,\n ]\n})\nexport class SpiderlyDropdownComponent extends BaseDropdownControl implements OnInit {\n @Input() isBooleanPicker: boolean = false;\n @Output() onChange = new EventEmitter<DropdownChangeEvent>();\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n if (this.isBooleanPicker) {\n this.options = [\n {displayName: this.translocoService.translate('True'), id: true},\n {displayName: this.translocoService.translate('False'), id: false},\n {displayName: this.translocoService.translate('Empty'), id: null},\n ]\n }\n\n super.ngOnInit();\n }\n\n change(event: DropdownChangeEvent){\n this.onChange.next(event);\n }\n\n}\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\n <i *ngIf=\"showTooltip\" class=\"{{tooltipIcon}}\" style=\"margin-left: 5px; cursor: pointer;\" [pTooltip]=\"tooltipText\" tabindex=\"-1\" tooltipEvent=\"focus\"></i>\n </div>\n\n <!-- Don't support p-inputgroup -->\n <p-select\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\" \n [id]=\"label\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [options]=\"options\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n [showClear]=\"true\"\n (onHide)=\"dropdownMarkAsDirty()\"\n (onChange)=\"change($event)\"\n [fluid]=\"true\"\n appendTo=\"body\"\n />\n \n</div>","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { Editor, EditorModule } from 'primeng/editor';\nimport { Tooltip, TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-editor',\n templateUrl: './spiderly-editor.component.html',\n styles: [],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n EditorModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyEditorComponent extends BaseControl implements OnInit {\n @ViewChild(Editor) editor: Editor;\n @ViewChild(Tooltip) tooltip: Tooltip;\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n\n onClick(){\n let editableArea: HTMLElement = this.editor.el.nativeElement.querySelector('.ql-editor');\n \n editableArea.onblur = () => {\n this.control.markAsDirty();\n this.tooltip.deactivate();\n };\n\n editableArea.onfocus = () => {\n if (this.errorMessageTooltipEvent == 'focus' ) {\n this.tooltip.activate();\n }\n };\n\n editableArea.onmouseover = () => {\n if (this.errorMessageTooltipEvent == 'hover' ) {\n this.tooltip.activate();\n }\n }\n }\n\n}\n","<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n\n <!-- Disable doesn't work on this control -->\n <p-editor\n *ngIf=\"control\"\n [formControl]=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [readonly]=\"control.disabled\"\n [class]=\"control.invalid && control.dirty ? 'control-error-border' : ''\"\n [id]=\"control.label\"\n [placeholder]=\"placeholder\"\n (click)=\"onClick()\"\n [style]=\"{ height: '320px' }\"\n ></p-editor>\n\n</div>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ButtonModule } from \"primeng/button\";\nimport { SplitButtonModule } from \"primeng/splitbutton\";\nimport { Subject, Subscription, throttleTime } from \"rxjs\";\nimport { Router } from \"@angular/router\";\n\n@Component({\n selector: 'spiderly-button-base',\n template: ``,\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SplitButtonModule\n ]\n})\nexport class SpiderlyButtonBaseComponent {\n @Input() icon: string;\n @Input() label: string;\n @Input() outlined: boolean = false;\n @Input() rounded: boolean = false;\n @Input() styleClass: string;\n @Input() routerLink: string;\n @Input() style: { [klass: string]: any; };\n @Input() class: string;\n @Input() severity: 'success' | 'info' | 'warn' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined;\n @Input() size: 'small' | 'large' | undefined;\n @Input() disabled: boolean = false;\n\n @Output() onClick = new EventEmitter<Event>();\n private clickSubject = new Subject<Event>(); // Internal subject to handle click events.\n private subscription: Subscription;\n\n constructor(\n private router: Router\n ) {\n \n }\n\n ngOnInit(){\n this.subscription = this.clickSubject\n .pipe(throttleTime(500))\n .subscribe((event: Event) => this.onClick.emit(event));\n }\n\n handleClick = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n if (this.routerLink !== undefined) {\n this.router.navigate([this.routerLink]);\n }\n else{\n this.clickSubject.next(event);\n }\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}","import { Component, Input } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ButtonModule } from \"primeng/button\";\nimport { SplitButtonModule } from \"primeng/splitbutton\";\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\n\n@Component({\n selector: 'spiderly-button',\n templateUrl: './spiderly-button.component.html',\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SplitButtonModule\n ]\n})\nexport class SpiderlyButtonComponent extends SpiderlyButtonBaseComponent {\n\n // constructor() {\n // super();\n \n // }\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n\n}","<p-button \n(onClick)=\"handleClick($event)\" \n[label]=\"label\" \n[icon]=\"icon\" \n[outlined]=\"outlined\" \n[styleClass]=\"styleClass\" \n[severity]=\"severity\" \n[rounded]=\"rounded\"\n[style]=\"style\"\n[class]=\"class\"\n[disabled]=\"disabled\"\n[size]=\"size\"\n[type]=\"type\"\n>\n <ng-content></ng-content>\n</p-button>","interface PropertySchema {\n type: string; // Use a string or an enum to represent the type (e.g., 'string', 'number', 'Date')\n nestedConstructor?: SchemaAwareConstructor<any>;\n isSaveBodyMainDTO?: boolean;\n // Add other metadata you might need (e.g., isRequired, minLength, etc.)\n}\n\nexport interface ClassSchema {\n [propertyName: string]: PropertySchema;\n}\n\n// A type that represents a class constructor with a static 'schema' property\nexport type SchemaAwareConstructor<T> = {\n new (...args: any[]): T;\n readonly schema: ClassSchema; // The static property holding the schema\n readonly typeName: string; // 'typeName' can't be named 'name' because of the conflict with the Function.name\n};\n\nexport class BaseEntity {\n \n}","import { HttpResponse } from \"@angular/common/http\";\nimport * as FileSaver from 'file-saver';\nimport 'reflect-metadata';\nimport { map, Observable } from 'rxjs';\nimport { Action, Column } from \"../components/spiderly-data-table/spiderly-data-table.component\";\nimport { SpiderlyTab } from \"../components/spiderly-panels/panel-header/panel-header.component\";\nimport { Codebook } from \"../entities/codebook\";\nimport { Filter } from \"../entities/filter\";\nimport { Namebook } from \"../entities/namebook\";\nimport { PrimengOption } from \"../entities/primeng-option\";\n\n// Helper function for PrecisionScale validation (to be added in the TypeScript output):\nexport function validatePrecisionScale(value: any, precision: number, scale: number, ignoreTrailingZeros: boolean): boolean {\n if (typeof value !== 'number') return false;\n const [integerPart, decimalPart] = value.toString().split('.');\n if (integerPart.length > precision - scale) return false;\n if (decimalPart && decimalPart.length > scale) return false;\n if (!ignoreTrailingZeros && decimalPart && decimalPart.replace(/0+$/, '').length > scale) return false;\n return true;\n}\n\nexport function getMimeTypeForFileName(fileName: string): string {\n const mimeTypes: { [key: string]: string } = {\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.png': 'image/png',\n '.webp': 'image/webp',\n '.gif': 'image/gif',\n '.pdf': 'application/pdf',\n '.txt': 'text/plain',\n '.html': 'text/html',\n '.css': 'text/css',\n '.js': 'application/javascript',\n '.json': 'application/json',\n '.csv': 'text/csv',\n '.xml': 'application/xml',\n '.zip': 'application/zip',\n '.mp4': 'video/mp4',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n '.avi': 'video/x-msvideo',\n '.doc': 'application/msword',\n '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n '.xls': 'application/vnd.ms-excel',\n '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n // Add more as needed\n };\n\n const extension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();\n return mimeTypes[extension] || 'application/octet-stream'; // 'application/octet-stream' is a generic binary type\n}\n\nexport function adjustColor(color: string, percent: number): string {\n if (!/^#([0-9A-F]{3}){1,2}$/i.test(color)) {\n console.error('Invalid hex color format');\n }\n\n let r: number, g: number, b: number;\n if (color.length === 7) {\n r = parseInt(color.slice(1, 3), 16);\n g = parseInt(color.slice(3, 5), 16);\n b = parseInt(color.slice(5, 7), 16);\n } else {\n r = parseInt(color[1] + color[1], 16);\n g = parseInt(color[2] + color[2], 16);\n b = parseInt(color[3] + color[3], 16);\n }\n\n const adjust = (value: number, percent: number): number => {\n const amount = (percent / 100) * 255;\n const newValue = Math.min(Math.max(value + amount, 0), 255);\n return Math.round(newValue);\n };\n\n r = adjust(r, percent);\n g = adjust(g, percent);\n b = adjust(b, percent);\n\n const toHex = (value: number): string => {\n const hex = value.toString(16).padStart(2, '0');\n return hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getHtmlImgDisplayString64(base64String: string){\n if (base64String == null)\n return null;\n\n const [header, base64Content] = base64String.split(';base64,');\n const fileName = header.split('=')[1];\n const mimeType = getMimeTypeForFileName(fileName);\n return `data:${mimeType};base64, ${base64Content}`;\n}\n\nexport function nameof<TObject>(obj: TObject, key: keyof TObject): string;\nexport function nameof<TObject>(key: keyof TObject): string;\nexport function nameof(key1: any, key2?: any): any {\n return key2 ?? key1;\n}\nexport function nameOf<TObject extends {name:S}, S extends string>(funcOrClass: TObject): S {\n return funcOrClass.name;\n}\n\nexport function getParentUrl(currentUrl: string){\n const urlSegments = currentUrl.split('/');\n urlSegments.pop();\n const parentUrl = urlSegments.join('/');\n return parentUrl;\n}\n\n// export function getMonth(number: number): string {\n// const months: string[] = [\n// \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n// \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n// ];\n \n// if (number < 1 || number > 12) {\n// throw new Error(\"Invalid month number. It should be between 1 and 12.\");\n// }\n \n// return months[number - 1];\n// }\n\nexport function getMonth(numberOfTheMonth: number): string {\n const meseci: string[] = [\n \"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\",\n \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\n ];\n \n if (numberOfTheMonth < 1 || numberOfTheMonth > 12) {\n console.error(\"Nevažeći broj meseca. Broj treba biti između 1 i 12.\");\n }\n \n return meseci[numberOfTheMonth - 1];\n}\n\nexport function singleOrDefault <T>(array: T[], predicate: (item: T) => boolean): T | undefined {\n const filtered = array.filter(predicate);\n if (filtered.length > 1) {\n throw new Error(\"Sequence contains more than one matching element.\");\n }\n return filtered[0];\n};\n\nexport function pushAction(cols: Column[], action: Action){\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\n if (actionsColumn) {\n actionsColumn.actions = [...actionsColumn.actions, action];\n }\n}\n\nexport function deleteAction(cols: Column[], actionField: string): void {\n const actionsColumn = singleOrDefault(cols, x => x.actions != null);\n\n if (actionsColumn && actionsColumn.actions) {\n const index = actionsColumn.actions.findIndex(a => a.field === actionField);\n if (index !== -1) {\n actionsColumn.actions.splice(index, 1);\n }\n }\n}\n\nexport function getFileNameFromContentDisposition(\n resp: HttpResponse<Blob>,\n defaultName: string\n): string {\n let fileName;\n if (resp && resp.headers && resp.headers.get('Content-Disposition')) {\n let val = resp.headers.get('Content-Disposition');\n let start = val.indexOf('filename=');\n if (start != -1) {\n let end = val.indexOf(';', start);\n fileName =\n end != -1 ? val.substring(start + 9, end) : val.substring(start + 9);\n fileName = fileName.split('\"').join('');\n }\n }\n return fileName ?? defaultName;\n}\n\nexport function toCommaSeparatedString<T>(input: T[]): string {\n const stringList = input.map(item => (item?.toString() ?? ''));\n\n if (stringList.length > 1) {\n return `${stringList.slice(0, -1).join(', ')} and ${stringList[stringList.length - 1]}`;\n } else {\n return stringList[0] ?? '';\n }\n}\n\nexport function isImageFileType(mimeType: string): boolean {\n if (mimeType.startsWith('image/')) {\n return true;\n }\n\n return false;\n}\n\nexport function isExcelFileType(mimeType: string): boolean {\n if (mimeType === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\n mimeType === 'application/vnd.ms-excel'\n ) {\n return true;\n }\n\n return false;\n}\n\nexport function exportListToExcel(exportListToExcelObservableMethod: (filter: Filter) => Observable<any>, filter: Filter) {\n exportListToExcelObservableMethod(filter).subscribe(res => {\n let fileName = getFileNameFromContentDisposition(res, \"ExcelExport.xlsx\");\n FileSaver.saveAs(res.body, decodeURIComponent(fileName));\n });\n}\n\nexport function getPrimengDropdownNamebookOptions(getDropdownListObservable: (parentEntityId?: number) => Observable<Namebook[]>, parentEntityId?: number): Observable<PrimengOption[]>{\n return getDropdownListObservable(parentEntityId ?? 0).pipe(\n map(res => {\n return res.map(x => ({ label: x.displayName, code: x.id }));\n })\n );\n}\n\nexport function getPrimengDropdownCodebookOptions(getDropdownListObservable: () => Observable<Codebook[]>): Observable<PrimengOption[]>{\n return getDropdownListObservable().pipe(\n map(res => {\n return res.map(x => ({ label: x.displayName, code: x.code }));\n })\n );\n}\n\nexport function getPrimengAutocompleteNamebookOptions(getAutocompleteListObservable: (limit: number, query: string, parentEntityId?: number) => Observable<Namebook[]>, limit: number, query: string, parentEntityId?: number): Observable<PrimengOption[]>{\n return getAutocompleteListObservable(limit, query, parentEntityId ?? 0).pipe(\n map(res => {\n return res.map(x => ({ label: x.displayName, code: x.id }));\n })\n );\n}\n\nexport function getPrimengAutocompleteCodebookOptions(getAutocompleteListObservable: (limit: number, query: string) => Observable<Codebook[]>, limit: number, query: string): Observable<PrimengOption[]>{\n return getAutocompleteListObservable(limit, query).pipe(\n map(res => {\n return res.map(x => ({ label: x.displayName, code: x.code }));\n })\n );\n}\n\nexport const isNullOrEmpty = (input: string) => {\n if(input == null || input === ''){\n return true;\n }\n \n return false;\n}\n\nexport const selectedTab = (tabs: SpiderlyTab[]): number => {\n const tab = singleOrDefault(tabs, x => x.isSelected);\n\n if (tab) {\n return tab.id;\n }\n else{\n return null;\n }\n}\n\nexport function firstCharToUpper(input: string): string {\n return input.charAt(0).toUpperCase() + input.slice(1);\n}\n\nexport function splitPascalCase(input: string) {\n const regex = /($[a-z])|[A-Z][^A-Z]+/g;\n return input.match(regex).join(\" \");\n}\n\nexport function capitalizeFirstChar(str: string): string {\n if (!str) return str;\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function kebabToTitleCase(input: string): string {\n return input\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\n/**\n * Custom styling of the google button - https://medium.com/simform-engineering/implement-custom-google-sign-in-using-angular-16-9c93aeff6252\n*/\nexport function createFakeGoogleWrapper() { \n const googleLoginWrapper = document.createElement('div');\n googleLoginWrapper.style.display = 'none';\n googleLoginWrapper.classList.add('custom-google-button');\n\n document.body.appendChild(googleLoginWrapper);\n\n window.google.accounts.id.renderButton(googleLoginWrapper, {\n type: 'icon',\n width: '200',\n });\n\n const googleLoginWrapperButton = googleLoginWrapper.querySelector(\n 'div[role=button]'\n ) as HTMLElement;\n\n return {\n click: () => {\n googleLoginWrapperButton?.click();\n },\n };\n};\n\nexport const PROPS_KEY = Symbol('props');\n\nexport function ReflectProp (target: any, propertyKey: string) {\n const props = Reflect.getMetadata(PROPS_KEY, target) || [];\n Reflect.defineMetadata(PROPS_KEY, [...props, propertyKey], target);\n}\n\nexport const primitiveArrayTypes = ['Namebook[]', 'number[]', 'Date[]', 'string[]'];","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { FileSelectEvent, FileUploadModule } from 'primeng/fileupload';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { SpiderlyButtonComponent } from '../../components/spiderly-buttons/spiderly-button/spiderly-button.component';\nimport { BaseEntity } from '../../entities/base-entity';\nimport { getMimeTypeForFileName, isExcelFileType, isImageFileType } from '../../services/helper-functions';\nimport { BaseControl } from '../base-control';\n\n@Component({\n selector: 'spiderly-file',\n templateUrl: './spiderly-file.component.html',\n styles: [],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n FileUploadModule,\n RequiredComponent,\n SpiderlyButtonComponent,\n TranslocoDirective\n ]\n})\nexport class SpiderlyFileComponent extends BaseControl implements OnInit {\n @Output() onFileSelected = new EventEmitter<SpiderlyFileSelectEvent>();\n @Output() onFileRemoved = new EventEmitter<null>();\n @Input() objectId: number;\n @Input() fileData: string;\n @Input() acceptedFileTypes: Array<'image/*' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/vnd.ms-excel' | '.xlsx' | '.xls'> = ['image/*'];\n @Input() required: boolean; // It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl.\n @Input() multiple: boolean = false;\n @Input() isCloudinaryFileData: boolean = true;\n\n acceptedFileTypesCommaSeparated: string;\n @Input() files: File[] = [];\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n if (this.control?.value != null && this.fileData != null) {\n if (this.isCloudinaryFileData) {\n this.pushFileFromCloudinaryUrl(this.fileData);\n }\n else{\n const file = this.getFileFromBase64(this.fileData);\n this.files.push(file);\n }\n }\n\n if (!this.objectId) {\n this.objectId = 0;\n }\n\n this.acceptedFileTypesCommaSeparated = this.acceptedFileTypes.join(',');\n\n super.ngOnInit();\n }\n\n filesSelected(event: FileSelectEvent){\n const file = event.files[0];\n\n const formData: FormData = new FormData();\n formData.append('file', file, `${this.objectId}-${file.name}`);\n \n this.onFileSelected.next(new SpiderlyFileSelectEvent({file: file, formData: formData}));\n }\n\n choose(event, chooseCallback){\n chooseCallback();\n }\n \n fileRemoved(removeFileCallback, index: number){\n removeFileCallback(index);\n this.control?.setValue(null);\n this.onFileRemoved.next(null);\n }\n\n // Put inside global functions if you need it\n async pushFileFromCloudinaryUrl(cloudinaryUrl: string) {\n const response = await fetch(cloudinaryUrl);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch file from Cloudinary: ${response.statusText}`);\n }\n\n const blob = await response.blob();\n\n const urlParts = cloudinaryUrl.split('/');\n const lastPart = urlParts[urlParts.length - 1];\n const fileName = lastPart.split('?')[0];\n\n const file = new File([blob], fileName, { type: blob.type });\n\n this.files = [...this.files, file]; // this.files.push(file); doesn't work\n\n return file;\n }\n\n // Put inside global functions if you need it\n getFileFromBase64(base64String: string){\n const [header, base64Content] = base64String.split(';base64,');\n const fileName = header.split('=')[1];\n const mimeType = getMimeTypeForFileName(fileName);\n\n const byteCharacters = atob(base64Content);\n const byteNumbers = new Uint8Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const blob = new Blob([byteNumbers], { type: mimeType });\n const file = new File([blob], fileName, { type: mimeType });\n\n return file;\n }\n\n isImageFileType(mimeType: string): boolean {\n return isImageFileType(mimeType);\n }\n\n isExcelFileType(mimeType: string): boolean {\n return isExcelFileType(mimeType);\n }\n\n}\n\nexport class SpiderlyFileSelectEvent extends BaseEntity\n{\n file?: File;\n formData?: FormData;\n\n constructor(\n {\n file,\n formData,\n }:{\n file?: File;\n formData?: FormData;\n } = {}\n ) {\n super(); \n\n this.file = file;\n this.formData = formData;\n }\n\n static readonly typeName = 'SpiderlyFileSelectEvent' as const;\n}","<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <!-- It's okay for this control, because for the custom uploads where we are not initializing the control from the backend, there is no need for formControl. -->\n <required *ngIf=\"control?.required || required\"></required>\n </div>\n\n <p-fileUpload \n [files]=\"files\" \n [disabled]=\"disabled\" \n [name]=\"control?.label ?? label\" \n [multiple]=\"multiple\" \n [accept]=\"acceptedFileTypesCommaSeparated\" \n [maxFileSize]=\"1000000\" \n (onSelect)=\"filesSelected($event)\"\n [class]=\"control?.invalid && control?.dirty ? 'control-error-border' : ''\"\n >\n <ng-template pTemplate=\"header\" let-files let-chooseCallback=\"chooseCallback\" let-clearCallback=\"clearCallback\" let-uploadCallback=\"uploadCallback\">\n <div class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\">\n <div class=\"flex gap-2\">\n <spiderly-button [disabled]=\"disabled\" (onClick)=\"choose($event, chooseCallback)\" icon=\"pi pi-upload\" [rounded]=\"true\" [outlined]=\"true\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files let-removeFileCallback=\"removeFileCallback\">\n <div *ngIf=\"files.length > 0\">\n <div class=\"flex justify-content-center p-0 gap-5\">\n <div *ngFor=\"let file of files; let index = index\" class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\" style=\"justify-content: center; overflow: hidden;\">\n <div *ngIf=\"isImageFileType(file.type)\" class=\"image-container\">\n <img role=\"presentation\" [src]=\"file.objectURL\"/>\n </div>\n <div *ngIf=\"isExcelFileType(file.type)\" class=\"excel-container\">\n <div class=\"excel-details\">\n <i class=\"pi pi-file-excel\" style=\"color: green; margin-right: 4px;\"></i>\n <span class=\"file-name\">{{ file.name }}</span>\n </div>\n </div>\n <spiderly-button [disabled]=\"disabled\" icon=\"pi pi-times\" (onClick)=\"fileRemoved(removeFileCallback, index)\" [outlined]=\"true\" [rounded]=\"true\" severity=\"danger\" />\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"file\"> </ng-template>\n <ng-template pTemplate=\"empty\">\n <div class=\"flex align-items-center justify-content-center flex-column\">\n <i class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"></i>\n <p class=\"mt-4 mb-0\">{{t('DragAndDropFilesHereToUpload')}}</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n</ng-container>","import { Component, OnInit } from '@angular/core';\nimport { AutoCompleteCompleteEvent, AutoCompleteModule } from 'primeng/autocomplete';\nimport { BaseAutocompleteControl } from '../base-autocomplete-control';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-multiautocomplete',\n templateUrl: './spiderly-multiautocomplete.component.html',\n imports: [\n ReactiveFormsModule,\n FormsModule,\n AutoCompleteModule,\n TooltipModule,\n CommonModule,\n RequiredComponent,\n TranslocoDirective,\n ]\n})\nexport class SpiderlyMultiAutocompleteComponent extends BaseAutocompleteControl implements OnInit {\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n\n search(event: AutoCompleteCompleteEvent){\n this.onTextInput.next(event);\n }\n\n}\n","<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n\n <!-- Don't support p-inputgroup -->\n <!-- Showing label fix: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294 -->\n <p-autocomplete \n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"options\"\n (completeMethod)=\"search($event)\"\n [forceSelection]=\"true\"\n [multiple]=\"true\"\n [dropdown]=\"false\"\n [showClear]=\"true\"\n (onHide)=\"dropdownMarkAsDirty()\"\n [completeOnFocus]=\"true\"\n dropdownIcon=\"pi pi-plus\"\n [fluid]=\"true\"\n [style]=\"{'width': '100%'}\"\n appendTo=\"body\"\n optionLabel=\"displayName\"\n dataKey=\"id\"\n >\n </p-autocomplete>\n </div>\n</ng-container>","import { Component, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { BaseDropdownControl } from '../base-dropdown-control';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-multiselect',\n templateUrl: './spiderly-multiselect.component.html',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n MultiSelectModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyMultiSelectComponent extends BaseDropdownControl implements OnInit {\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n}\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-multiSelect\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [id]=\"label\"\n [formControl]=\"control\"\n [options]=\"options\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n display=\"chip\"\n [maxSelectedLabels]=\"20\"\n [placeholder]=\"placeholder\"\n [fluid]=\"true\"\n appendTo=\"body\"\n />\n <!-- [virtualScroll]=\"true\" FT: I think that this is not doing anything, check -->\n <!-- (onFilter)=\"search($event)\" FT: While they don't implement lazy load like here: https://github.com/yelhouti/primeng/blob/8.0.0-rc2/src/app/components/multiselect/multiselect.ts\n we need to use this and dropdown control only on the client -->\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-number',\n templateUrl: './spiderly-number.component.html',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n InputNumberModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyNumberComponent extends BaseControl implements OnInit {\n @Input() prefix: string;\n @Input() showButtons: boolean = true;\n @Input() decimal: boolean;\n @Input() maxFractionDigits: number = 0;\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n \n}\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"showLabel\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-inputNumber\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control.label\"\n (onBlur)=\"control.markAsDirty()\"\n [prefix]=\"prefix\"\n [style]=\"{'width':'100%'}\"\n [inputStyle]=\"{'width':'100%'}\"\n [showButtons]=\"showButtons\"\n buttonLayout=\"horizontal\"\n [maxFractionDigits]=\"maxFractionDigits\"\n />\n </div>","import { Component, Input, OnInit } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { PasswordModule } from 'primeng/password';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-password',\n templateUrl: './spiderly-password.component.html',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n PasswordModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyPasswordComponent extends BaseControl implements OnInit {\n @Input() showPasswordStrength: boolean = false;\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n\n}\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-password\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n [formControl]=\"control\"\n [id]=\"control?.label\"\n [toggleMask]=\"true\"\n [feedback]=\"showPasswordStrength\"\n (onBlur)=\"control?.markAsDirty()\"\n [style]=\"{'width':'100%'}\"\n [inputStyle]=\"{'width':'100%'}\"\n />\n </div>\n","import { Component, OnInit } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { TextareaModule } from 'primeng/textarea';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-textarea',\n templateUrl: './spiderly-textarea.component.html',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n TextareaModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyTextareaComponent extends BaseControl implements OnInit {\n\n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n}\n","<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div>\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <textarea\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pTextarea\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [autoResize]=\"true\"\n [class]=\"control.disabled ? 'disabled' : ''\"\n ></textarea>\n </div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseControl } from '../base-control';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RequiredComponent } from '../../components/required/required.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'spiderly-textbox',\n templateUrl: './spiderly-textbox.component.html',\n styleUrl: '../base-controls.scss',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n InputTextModule,\n TooltipModule,\n RequiredComponent\n ]\n})\nexport class SpiderlyTextboxComponent extends BaseControl implements OnInit {\n @Input() showButton: boolean = false;\n @Input() buttonIcon: string;\n @Output() onButtonClick = new EventEmitter();\n \n constructor(\n protected override translocoService: TranslocoService,\n ) { \n super(translocoService);\n }\n\n override ngOnInit(){\n super.ngOnInit();\n }\n\n \n buttonClick() {\n this.onButtonClick.next(null);\n }\n \n}\n","<!-- Can't put (onBlur) in this control -->\n\n<div style=\"display: flex; flex-direction: column; gap: 0.5rem;\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <label>{{getTranslatedLabel()}}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div class=\"spiderly-inputgroup\">\n <input\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\" [tooltipEvent]=\"errorMessageTooltipEvent\" tooltipPosition=\"bottom\" [tooltipDisabled]=\"control.valid\" tooltipStyleClass=\"spiderly-tooltip-invalid\"\n pInputText\n [formControl]=\"control\"\n [id]=\"control.label\"\n (blur)=\"control.markAsDirty()\"\n [placeholder]=\"placeholder\"\n [fluid]=\"true\"\n />\n <span *ngIf=\"showButton\" (click)=\"buttonClick()\" class=\"spiderly-inputgroup-addon\">\n <i class=\"{{buttonIcon}}\"></i>\n </span>\n </div>\n</div>","import { Component, Input } from \"@angular/core\";\nimport { Router } from '@angular/router';\nimport { CommonModule } from \"@angular/common\";\nimport { getParentUrl } from \"../../../services/helper-functions\";\nimport { TranslocoDirective } from \"@jsverse/transloco\";\nimport { ButtonModule } from \"primeng/button\";\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\n\n@Component({\n selector: 'return-button',\n templateUrl: './return-button.component.html',\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SpiderlyButtonComponent,\n TranslocoDirective,\n ]\n})\nexport class SpiderlyReturnButtonComponent {\n @Input() navigateUrl: string;\n\n constructor(private router: Router) {}\n\n onReturn(){\n if(this.navigateUrl == undefined){\n const currentUrl = this.router.url;\n const parentUrl: string = getParentUrl(currentUrl);\n this.router.navigateByUrl(parentUrl);\n }\n else{\n this.router.navigate([this.navigateUrl]);\n }\n }\n}","<ng-container *transloco=\"let t\">\n <spiderly-button (onClick)=\"onReturn()\" [label]=\"t('Return')\" icon=\"pi pi-undo\" [outlined]=\"true\"></spiderly-button>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { SpiderlyMultiAutocompleteComponent } from './spiderly-multiautocomplete/spiderly-multiautocomplete.component';\nimport { SpiderlyPasswordComponent } from './spiderly-password/spiderly-password.component';\nimport { SpiderlyTextboxComponent } from './spiderly-textbox/spiderly-textbox.component';\nimport { SpiderlyCheckboxComponent } from './spiderly-checkbox/spiderly-checkbox.component';\nimport { SpiderlyMultiSelectComponent } from './spiderly-multiselect/spiderly-multiselect.component';\nimport { SpiderlyTextareaComponent } from './spiderly-textarea/spiderly-textarea.component';\nimport { SpiderlyNumberComponent } from './spiderly-number/spiderly-number.component';\nimport { SpiderlyDropdownComponent } from './spiderly-dropdown/spiderly-dropdown.component';\nimport { SpiderlyEditorComponent } from './spiderly-editor/spiderly-editor.component';\nimport { SpiderlyColorPickerComponent } from './spiderly-colorpicker/spiderly-colorpicker.component';\nimport { SpiderlyFileComponent } from './spiderly-file/spiderly-file.component';\nimport { SpiderlyCalendarComponent } from './spiderly-calendar/spiderly-calendar.component';\nimport { SpiderlyAutocompleteComponent } from './spiderly-autocomplete/spiderly-autocomplete.component';\nimport { SpiderlyButtonComponent } from '../components/spiderly-buttons/spiderly-button/spiderly-button.component';\nimport { SpiderlyReturnButtonComponent } from '../components/spiderly-buttons/return-button/return-button.component';\n\n@NgModule({\n imports: [\n SpiderlyTextboxComponent,\n SpiderlyTextareaComponent,\n SpiderlyCheckboxComponent,\n SpiderlyCalendarComponent,\n SpiderlyReturnButtonComponent,\n SpiderlyButtonComponent,\n SpiderlyPasswordComponent,\n SpiderlyAutocompleteComponent,\n SpiderlyMultiAutocompleteComponent,\n SpiderlyMultiSelectComponent,\n SpiderlyNumberComponent,\n SpiderlyDropdownComponent,\n SpiderlyEditorComponent,\n SpiderlyColorPickerComponent,\n SpiderlyFileComponent,\n ],\n exports: [\n SpiderlyTextboxComponent,\n SpiderlyTextareaComponent,\n SpiderlyCheckboxComponent,\n SpiderlyCalendarComponent,\n SpiderlyReturnButtonComponent,\n SpiderlyButtonComponent,\n SpiderlyPasswordComponent,\n SpiderlyAutocompleteComponent,\n SpiderlyMultiAutocompleteComponent,\n SpiderlyMultiSelectComponent,\n SpiderlyNumberComponent,\n SpiderlyDropdownComponent,\n SpiderlyEditorComponent,\n SpiderlyColorPickerComponent,\n SpiderlyFileComponent\n ],\n declarations: [\n ],\n providers: [\n ]\n})\nexport class SpiderlyControlsModule {}","import { BaseEntity } from \"./base-entity\";\n\nexport class IsAuthorizedForSaveEvent extends BaseEntity\n{\n isAuthorizedForSave?: boolean;\n\n constructor(\n {\n isAuthorizedForSave,\n }:{\n isAuthorizedForSave?: boolean;\n } = {}\n ) {\n super(); \n\n this.isAuthorizedForSave = isAuthorizedForSave;\n }\n\n static readonly typeName = 'IsAuthorizedForSaveEvent' as const;\n}","import { BaseEntity } from \"../entities/base-entity\";\n\nexport class Namebook extends BaseEntity\n{\n id?: any;\n displayName?: string;\n \n constructor(\n {\n id,\n displayName,\n }:{\n id?: any;\n displayName?: string;\n } = {}\n ) {\n super();\n\n this.id = id;\n this.displayName = displayName;\n }\n\n static schema = {\n id: {\n type: 'any',\n },\n displayName: {\n type: 'string',\n },\n } as const;\n\n static readonly typeName = 'Namebook' as const;\n}","import { BaseEntity } from \"./base-entity\";\nimport { Namebook } from \"./namebook\";\n\n\nexport class UserBase extends BaseEntity\n{\n static readonly typeName = 'UserBase' as const;\n\n id?: number;\n email?: string;\n\n constructor(\n {\n id,\n email,\n }:{\n id?: number;\n email?: string;\n } = {}\n ) {\n super(); \n\n this.id = id;\n this.email = email;\n }\n\n static readonly schema = {\n id: {\n type: 'number',\n },\n email: {\n type: 'string',\n },\n } as const;\n}\n\n\nexport class RolePermission extends BaseEntity\n{\n static readonly typeName = 'RolePermission' as const;\n\n roleDisplayName?: string;\n roleId?: number;\n permissionDisplayName?: string;\n permissionId?: number;\n\n constructor(\n {\n roleDisplayName,\n roleId,\n permissionDisplayName,\n permissionId\n }:{\n roleDisplayName?: string;\n roleId?: number;\n permissionDisplayName?: string;\n permissionId?: number; \n } = {}\n ) {\n super(); \n\n this.roleDisplayName = roleDisplayName;\n this.roleId = roleId;\n this.permissionDisplayName = permissionDisplayName;\n this.permissionId = permissionId;\n }\n\n static readonly schema = {\n roleDisplayName: {\n type: 'string',\n },\n roleId: {\n type: 'number',\n },\n permissionDisplayName: {\n type: 'string',\n },\n permissionId: {\n type: 'number',\n },\n } as const;\n}\n\n\nexport class RolePermissionSaveBody extends BaseEntity\n{\n static readonly typeName = 'RolePermissionSaveBody' as const;\n\n rolePermissionDTO?: RolePermission;\n\n constructor(\n {\n rolePermissionDTO\n }:{\n rolePermissionDTO?: RolePermission; \n } = {}\n ) {\n super(); \n\n this.rolePermissionDTO = rolePermissionDTO;\n }\n\n static readonly schema = {\n rolePermissionDTO: {\n type: 'RolePermission',\n get nestedConstructor() { return RolePermission; },\n },\n } as const;\n}\n\n\nexport class AuthResult extends BaseEntity\n{\n static readonly typeName = 'AuthResult' as const;\n\n userId?: number;\n email?: string;\n accessToken?: string;\n refreshToken?: string;\n\n constructor(\n {\n userId,\n email,\n accessToken,\n refreshToken\n }:{\n userId?: number;\n email?: string;\n accessToken?: string;\n refreshToken?: string; \n } = {}\n ) {\n super(); \n\n this.userId = userId;\n this.email = email;\n this.accessToken = accessToken;\n this.refreshToken = refreshToken;\n }\n\n static readonly schema = {\n userId: {\n type: 'number',\n },\n email: {\n type: 'string',\n },\n accessToken: {\n type: 'string',\n },\n refreshToken: {\n type: 'string',\n },\n } as const;\n}\n\n\nexport class VerificationTokenRequest extends BaseEntity\n{\n static readonly typeName = 'VerificationTokenRequest' as const;\n\n verificationCode?: string;\n browserId?: string;\n email?: string;\n\n constructor(\n {\n verificationCode,\n browserId,\n email\n }:{\n verificationCode?: string;\n browserId?: string;\n email?: string; \n } = {}\n ) {\n super(); \n\n this.verificationCode = verificationCode;\n this.browserId = browserId;\n this.email = email;\n }\n\n static readonly schema = {\n verificationCode: {\n type: 'string',\n },\n browserId: {\n type: 'string',\n },\n email: {\n type: 'string',\n },\n } as const;\n}\n\n\nexport class ExternalProvider extends BaseEntity\n{\n static readonly typeName = 'ExternalProvider' as const;\n\n idToken?: string;\n browserId?: string;\n\n constructor(\n {\n idToken,\n browserId\n }:{\n idToken?: string;\n browserId?: string; \n } = {}\n ) {\n super(); \n\n this.idToken = idToken;\n this.browserId = browserId;\n }\n\n static readonly schema = {\n idToken: {\n type: 'string',\n },\n browserId: {\n type: 'string',\n },\n } as const;\n}\n\n\nexport class UserRole extends BaseEntity\n{\n static readonly typeName = 'UserRole' as const;\n\n roleId?: number;\n userId?: number;\n\n constructor(\n {\n roleId,\n userId\n }:{\n roleId?: number;\n userId?: number; \n } = {}\n ) {\n super(); \n\n this.roleId = roleId;\n this.userId = userId;\n }\n\n static readonly schema = {\n roleId: {\n type: 'number',\n },\n userId: {\n type: 'number',\n },\n } as const;\n}\n\n\nexport class UserRoleSaveBody extends BaseEntity\n{\n static readonly typeName = 'UserRoleSaveBody' as const;\n\n userRoleDTO?: UserRole;\n\n constructor(\n {\n userRoleDTO\n }:{\n userRoleDTO?: UserRole; \n } = {}\n ) {\n super(); \n\n this.userRoleDTO = userRoleDTO;\n }\n\n static readonly schema = {\n userRoleDTO: {\n type: 'UserRole',\n get nestedConstructor() { return UserRole; },\n },\n } as const;\n}\n\n\nexport class LoginVerificationToken extends BaseEntity\n{\n static readonly typeName = 'LoginVerificationToken' as const;\n\n email?: string;\n userId?: number;\n browserId?: string;\n expireAt?: Date;\n\n constructor(\n {\n email,\n userId,\n browserId,\n expireAt\n }:{\n email?: string;\n userId?: number;\n browserId?: string;\n expireAt?: Date; \n } = {}\n ) {\n super(); \n\n this.email = email;\n this.userId = userId;\n this.browserId = browserId;\n this.expireAt = expireAt;\n }\n\n static readonly schema = {\n email: {\n type: 'string',\n },\n userId: {\n type: 'number',\n },\n browserId: {\n type: 'string',\n },\n expireAt: {\n type: 'Date',\n },\n } as const;\n}\n\n\nexport class Login extends BaseEntity\n{\n static readonly typeName = 'Login' as const;\n\n email?: string;\n browserId?: string;\n\n constructor(\n {\n email,\n browserId\n }:{\n email?: string;\n browserId?: string; \n } = {}\n ) {\n super(); \n\n this.email = email;\n this.browserId = browserId;\n }\n\n static readonly schema = {\n email: {\n type: 'string',\n },\n browserId: {\n type: 'string',\n },\n } as const;\n}\n\n\nexport class RefreshTokenRequest extends BaseEntity\n{\n static readonly typeName = 'RefreshTokenRequest' as const;\n\n refreshToken?: string;\n browserId?: string;\n\n constructor(\n {\n refreshToken,\n browserId\n }:{\n refreshToken?: string;\n browserId?: string; \n } = {}\n ) {\n super(); \n\n this.refreshToken = refreshToken;\n this.browserId = browserId;\n }\n\n static readonly schema = {\n refreshToken: {\n type: 'string',\n },\n browserId: {\n type: 'string',\n },\n } as const;\n}\n\n\nexport class Role extends BaseEntity\n{\n static readonly typeName = 'Role' as const;\n\n name?: string;\n description?: string;\n version?: number;\n id?: number;\n createdAt?: Date;\n modifiedAt?: Date;\n\n constructor(\n {\n name,\n description,\n version,\n id,\n createdAt,\n modifiedAt\n }:{\n name?: string;\n description?: string;\n version?: number;\n id?: number;\n createdAt?: Date;\n modifiedAt?: Date; \n } = {}\n ) {\n super(); \n\n this.name = name;\n this.description = description;\n this.version = version;\n this.id = id;\n this.createdAt = createdAt;\n this.modifiedAt = modifiedAt;\n }\n\n static readonly schema = {\n name: {\n type: 'string',\n },\n description: {\n type: 'string',\n },\n version: {\n type: 'number',\n },\n id: {\n type: 'number',\n },\n createdAt: {\n type: 'Date',\n },\n modifiedAt: {\n type: 'Date',\n },\n } as const;\n}\n\n\nexport class RoleMainUIForm extends BaseEntity\n{\n static readonly typeName = 'RoleMainUIForm' as const;\n\n roleDTO?: Role;\n usersNamebookDTOList?: Namebook[];\n permissionsIds?: number[];\n\n constructor(\n {\n roleDTO,\n usersNamebookDTOList = [],\n permissionsIds = []\n }:{\n roleDTO?: Role;\n usersNamebookDTOList?: Namebook[];\n permissionsIds?: number[]; \n } = {}\n ) {\n super(); \n\n this.roleDTO = roleDTO;\n this.usersNamebookDTOList = usersNamebookDTOList;\n this.permissionsIds = permissionsIds;\n }\n\n static readonly schema = {\n roleDTO: {\n type: 'Role',\n get nestedConstructor() { return Role; },\n isMainDTOForMainUIFormDTO: true,\n },\n usersNamebookDTOList: {\n type: 'Namebook[]',\n get nestedConstructor() { return Namebook; },\n },\n permissionsIds: {\n type: 'number[]',\n },\n } as const;\n}\n\nexport class RoleSaveBody extends BaseEntity\n{\n static readonly typeName = 'RoleSaveBody' as const;\n\n roleDTO?: Role;\n selectedPermissionsIds?: number[];\n selectedUsersIds?: number[];\n\n constructor(\n {\n roleDTO,\n selectedPermissionsIds = [],\n selectedUsersIds = []\n }:{\n roleDTO?: Role;\n selectedPermissionsIds?: number[];\n selectedUsersIds?: number[]; \n } = {}\n ) {\n super(); \n\n this.roleDTO = roleDTO;\n this.selectedPermissionsIds = selectedPermissionsIds;\n this.selectedUsersIds = selectedUsersIds;\n }\n\n static readonly schema = {\n roleDTO: {\n type: 'Role',\n get nestedConstructor() { return Role; },\n isSaveBodyMainDTO: true,\n },\n selectedPermissionsIds: {\n type: 'number[]',\n },\n selectedUsersIds: {\n type: 'number[]',\n },\n } as const;\n}\n\n\nexport class Permission extends BaseEntity\n{\n static readonly typeName = 'Permission' as const;\n\n name?: string;\n nameLatin?: string;\n description?: string;\n descriptionLatin?: string;\n code?: string;\n id?: number;\n\n constructor(\n {\n name,\n nameLatin,\n description,\n descriptionLatin,\n code,\n id\n }:{\n name?: string;\n nameLatin?: string;\n description?: string;\n descriptionLatin?: string;\n code?: string;\n id?: number; \n } = {}\n ) {\n super(); \n\n this.name = name;\n this.nameLatin = nameLatin;\n this.description = description;\n this.descriptionLatin = descriptionLatin;\n this.code = code;\n this.id = id;\n }\n\n static readonly schema = {\n name: {\n type: 'string',\n },\n nameLatin: {\n type: 'string',\n },\n description: {\n type: 'string',\n },\n descriptionLatin: {\n type: 'string',\n },\n code: {\n type: 'string',\n },\n id: {\n type: 'number',\n },\n } as const;\n}\n\n\nexport class PermissionSaveBody extends BaseEntity\n{\n static readonly typeName = 'PermissionSaveBody' as const;\n\n permissionDTO?: Permission;\n\n constructor(\n {\n permissionDTO\n }:{\n permissionDTO?: Permission; \n } = {}\n ) {\n super(); \n\n this.permissionDTO = permissionDTO;\n }\n\n static readonly schema = {\n permissionDTO: {\n type: 'Permission',\n get nestedConstructor() { return Permission; },\n },\n } as const;\n}","import { Component, Input } from \"@angular/core\";\nimport { SkeletonModule } from 'primeng/skeleton';\n\n@Component({\n selector: 'card-skeleton',\n templateUrl: './card-skeleton.component.html',\n styles: [],\n imports: [SkeletonModule]\n})\nexport class CardSkeletonComponent {\n @Input() height: number = 400;\n titleHeight: number = 23;\n dataHeight: number;\n padding: number = 21;\n titleMarginBottom: number = 14;\n titleMarginTop: number = 4;\n\n ngOnInit(){\n this.dataHeight = this.height - (this.titleHeight + this.padding * 2 + this.titleMarginBottom + this.titleMarginTop)\n }\n}","<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\n </div>\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\n <p-skeleton width=\"100%\" height=\"100%\"/>\n </div>\n</div>","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'panel-body',\n templateUrl: './panel-body.component.html',\n styleUrl: './panel-body.component.scss',\n standalone: false\n})\nexport class PanelBodyComponent implements OnInit {\n @Input() normalBottomPadding: boolean = false; // FT: By default we set to false, when the grid is inside the body.\n\n constructor() { }\n\n ngOnInit(): void {\n }\n}","<!-- this is selector, not the class -->\n<div class=\"panel-body\"\n [ngClass]=\"{\n 'non-grid-panel-bottom-padding': normalBottomPadding, \n }\"\n style=\"overflow: auto;\">\n <!-- 'card': true, -->\n <ng-content></ng-content>\n</div>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'panel-footer',\n templateUrl: './panel-footer.component.html',\n styleUrl: './panel-footer.component.scss',\n standalone: false\n})\nexport class PanelFooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n}","<div class=\"spiderly-panel-footer\">\n <div class=\"buttons-wrapper\">\n <ng-content></ng-content>\n </div>\n <span class=\"p-text-secondary\">\n <ng-content select=\"[footerRight]\"></ng-content>\n </span>\n</div>","import { TranslocoService } from '@jsverse/transloco';\nimport { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'panel-header',\n templateUrl: './panel-header.component.html',\n styles: [`\n .p-panel-icons-end {\n font-size: 50px;\n }\n `],\n standalone: false\n})\nexport class PanelHeaderComponent implements OnInit {\n @Input() title: string;\n @Input() showBigTitle: boolean;\n @Input() showIcon: boolean = true;\n @Input() icon: string;\n @Input() index: number;\n @Input() tabs: SpiderlyTab[];\n\n constructor(\n private translocoService: TranslocoService\n ) { }\n\n ngOnInit(): void {\n if (this.title == null)\n this.title = this.translocoService.translate('Details');\n\n if (this.showIcon === true && this.icon == null)\n this.icon = 'pi pi-file-edit';\n }\n\n setTabIsSelected(tab: SpiderlyTab){\n this.tabs.forEach(t => {\n t.isSelected = false;\n });\n\n tab.isSelected = true;\n }\n}\n\nexport class SpiderlyTab\n{\n label?: string;\n id?: number;\n icon?: string;\n isSelected?: boolean;\n \n constructor(\n {\n label,\n id,\n icon,\n isSelected,\n }:{\n label?: string;\n id?: number;\n icon?: string;\n isSelected?: boolean;\n } = {}\n ) {\n this.label = label;\n this.id = id;\n this.icon = icon;\n this.isSelected = isSelected;\n }\n\n}","<div style=\"display: flex; align-items: center; gap: 24px; flex-wrap: wrap;\">\n @if (tabs == null) {\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\n <i class=\"{{icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \n <div [style]=\"(showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : '')\">{{title}}</div>\n </div>\n }\n @else {\n @for (tab of tabs; track $index) {\n <div (click)=\"setTabIsSelected(tab)\"\n [style]=\"{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n cursor: 'pointer',\n fontWeight: tab.isSelected ? '700' : 'normal'\n }\">\n <span *ngIf=\"index != null\" class=\"number-circle\">{{index + 1}}</span>\n <i class=\"{{tab.icon}} primary-color\" [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"></i> \n <div [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\">{{tab.label}}</div>\n </div>\n }\n }\n</div>","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { Menu } from 'primeng/menu';\n\n@Component({\n selector: 'spiderly-panel',\n templateUrl: './spiderly-panel.component.html',\n styleUrl: './spiderly-panel.component.scss',\n standalone: false\n})\nexport class SpiderlyPanelComponent implements OnInit {\n @Input() isFirstMultiplePanel: boolean = false;\n @Input() isMiddleMultiplePanel: boolean = false;\n @Input() isLastMultiplePanel: boolean = false;\n @Input() toggleable: boolean = false;\n @Input() toggler: 'header' | 'icon' | null = 'icon';\n @Input() collapsed: boolean = false;\n @Input() crudMenu: MenuItem[];\n @Input() showCrudMenu: boolean = true;\n @Input() showRemoveIcon: boolean = false;\n @Input() index: number;\n @Input() showPanelHeader: boolean = true;\n\n @Output() onMenuIconClick: EventEmitter<number> = new EventEmitter();\n @Output() onRemoveIconClick: EventEmitter<null> = new EventEmitter();\n\n @ViewChild('menu') menu: Menu;\n \n constructor() { }\n\n ngOnInit(): void {\n }\n\n menuItemClick(index: number, event){\n this.menu.toggle(event);\n this.onMenuIconClick.next(index);\n }\n\n removeItemClick(){\n this.onRemoveIconClick.next(null);\n }\n\n}","<p-panel \n[showHeader]=\"showPanelHeader\"\n[ngClass]=\"{\n 'multiple-panel-first-without-header': isFirstMultiplePanel && !showPanelHeader,\n 'multiple-panel-first': isFirstMultiplePanel,\n 'multiple-panel-middle-without-header': isMiddleMultiplePanel && !showPanelHeader,\n 'multiple-panel-middle': isMiddleMultiplePanel,\n 'multiple-panel-last-without-header': isLastMultiplePanel && !showPanelHeader,\n 'multiple-panel-last': isLastMultiplePanel,\n 'panel-border': !isFirstMultiplePanel,\n 'spiderly-panel': true,\n 'panel-header-cursor-pointer': toggler === 'header' && toggleable\n}\"\n[toggleable]=\"toggleable\"\n[toggler]=\"toggler\"\n[collapsed]=\"toggleable && collapsed\"\nexpandIcon=\"pi pi-chevron-up\"\ncollapseIcon=\"pi pi-chevron-down\"\n>\n <ng-template pTemplate=\"header\">\n <div>\n <ng-content select=\"panel-header\"></ng-content>\n <ng-content select=\"[panelHeader]\"></ng-content>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"icons\">\n <div *ngIf=\"showCrudMenu && crudMenu\" class=\"mr-2\">\n <i class=\"pi pi-ellipsis-h icon-hover\" (click)=\"menuItemClick(index, $event)\"></i>\n <!-- https://github.com/primefaces/primeng/issues/13934 -->\n <p-menu #menu [model]=\"crudMenu\" [popup]=\"true\" appendTo=\"body\" [tabindex]=\"undefined\"></p-menu>\n </div>\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\n <i class=\"pi pi-minus icon-hover error-color-light\" (click)=\"removeItemClick()\"></i>\n </div>\n </ng-template>\n\n <div class=\"panel-body-wrapper\">\n <ng-content select=\"panel-body\"></ng-content>\n </div>\n\n <ng-content select=\"panel-footer\"></ng-content>\n\n</p-panel>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PanelBodyComponent } from './panel-body/panel-body.component';\nimport { PanelFooterComponent } from './panel-footer/panel-footer.component';\nimport { PanelHeaderComponent } from './panel-header/panel-header.component';\nimport { SpiderlyPanelComponent } from './spiderly-panel/spiderly-panel.component';\nimport { MenuModule } from 'primeng/menu';\nimport { PanelModule } from 'primeng/panel';\n\n@NgModule({\n imports: [\n CommonModule,\n MenuModule,\n PanelModule\n ],\n exports: [\n PanelHeaderComponent,\n PanelBodyComponent,\n PanelFooterComponent,\n SpiderlyPanelComponent,\n ],\n declarations: [\n PanelHeaderComponent,\n PanelBodyComponent,\n PanelFooterComponent,\n SpiderlyPanelComponent,\n ],\n providers: [\n ]\n})\nexport class SpiderlyPanelsModule {}","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigBaseService\n{\n production = false;\n apiUrl: string;\n frontendUrl = 'http://localhost:4200';\n GoogleClientId: string;\n companyName = 'Company Name';\n primaryColor = '#111b2c';\n \n googleAuth = true;\n\n /* URLs */\n loginSlug = 'login';\n\n /* Local storage */\n accessTokenKey = 'access_token';\n refreshTokenKey = 'refresh_token';\n browserIdKey = 'browser_id';\n\n httpOptions = {};\n httpSkipSpinnerOptions = {\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\n params: new HttpParams().set('X-Skip-Spinner', 'true')\n };\n\n logoPath = 'assets/images/logo/logo.svg';\n\n constructor(\n ) {\n }\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Namebook } from '../entities/namebook';\nimport { Filter } from '../entities/filter';\nimport { Login, RefreshTokenRequest, AuthResult, Role, UserBase, ExternalProvider, VerificationTokenRequest, RoleSaveBody, RoleMainUIForm } from '../entities/security-entities';\nimport { ConfigBaseService } from './config-base.service';\nimport { PaginatedResult } from '../entities/paginated-result';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiSecurityService {\n\n constructor(\n protected http: HttpClient,\n protected config: ConfigBaseService\n ) {\n \n }\n\n //#region Authentication\n\n login = (request: VerificationTokenRequest): Observable<AuthResult> => { \n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/Login`, request, this.config.httpOptions);\n }\n\n loginExternal = (externalProviderDTO: ExternalProvider): Observable<AuthResult> => { \n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/LoginExternal`, externalProviderDTO, this.config.httpOptions);\n }\n\n sendLoginVerificationEmail = (loginDTO: Login): Observable<any> => { \n return this.http.post<any>(`${this.config.apiUrl}/Security/SendLoginVerificationEmail`, loginDTO, this.config.httpOptions);\n }\n\n\n logout = (browserId: string): Observable<any> => { \n return this.http.get<any>(`${this.config.apiUrl}/Security/Logout?browserId=${browserId}`);\n }\n\n refreshToken = (request: RefreshTokenRequest): Observable<AuthResult> => { \n return this.http.post<AuthResult>(`${this.config.apiUrl}/Security/RefreshToken`, request, this.config.httpOptions);\n }\n\n //#endregion\n\n //#region User\n\n getCurrentUserBase = (): Observable<UserBase> => { \n return this.http.get<UserBase>(`${this.config.apiUrl}/Security/GetCurrentUserBase`, this.config.httpSkipSpinnerOptions);\n }\n\n getCurrentUserPermissionCodes = (): Observable<string[]> => { \n return this.http.get<string[]>(`${this.config.apiUrl}/Security/GetCurrentUserPermissionCodes`, this.config.httpSkipSpinnerOptions);\n }\n\n //#endregion\n\n //#region Role\n\n getPaginatedRoleList = (dto: Filter): Observable<PaginatedResult> => { \n return this.http.post<PaginatedResult>(`${this.config.apiUrl}/Security/GetPaginatedRoleList`, dto, this.config.httpSkipSpinnerOptions);\n }\n\n exportRoleListToExcel = (dto: Filter): Observable<any> => { \n return this.http.post<any>(`${this.config.apiUrl}/Security/ExportRoleListToExcel`, dto, this.config.httpOptions);\n }\n\n deleteRole = (id: number): Observable<any> => { \n return this.http.delete<any>(`${this.config.apiUrl}/Security/DeleteRole?id=${id}`);\n }\n\n getRoleMainUIFormDTO = (id: number): Observable<RoleMainUIForm> => {\n return this.http.get<RoleMainUIForm>(`${this.config.apiUrl}/Security/GetRoleMainUIFormDTO?id=${id}`);\n }\n\n getRole = (id: number): Observable<Role> => {\n return this.http.get<Role>(`${this.config.apiUrl}/Security/GetRole?id=${id}`);\n }\n\n saveRole = (dto: RoleSaveBody): Observable<Role> => { \n return this.http.put<Role>(`${this.config.apiUrl}/Security/SaveRole`, dto, this.config.httpOptions);\n }\n\n getUsersNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\n }\n\n getPermissionsDropdownListForRole = (): Observable<Namebook[]> => {\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsDropdownListForRole`, this.config.httpSkipSpinnerOptions);\n }\n\n getPermissionsNamebookListForRole = (roleId: number): Observable<Namebook[]> => {\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetPermissionsNamebookListForRole?roleId=${roleId}`, this.config.httpSkipSpinnerOptions);\n }\n\n getUsersAutocompleteListForRole = (limit: number, query: string): Observable<Namebook[]> => {\n return this.http.get<Namebook[]>(`${this.config.apiUrl}/Security/GetUsersAutocompleteListForRole?limit=${limit}&query=${query}`, this.config.httpSkipSpinnerOptions);\n }\n\n //#endregion\n\n //#region Notification\n\n getUnreadNotificationsCountForCurrentUser = (): Observable<number> => { \n return this.http.get<number>(`${this.config.apiUrl}/Notification/GetUnreadNotificationsCountForCurrentUser`, this.config.httpSkipSpinnerOptions);\n }\n\n //#endregion\n\n}\n\n","// When we call it, inside the console, it will show SpiderlyError: ...\nexport class SpiderlyError extends Error {\n constructor(message: string) {\n super(message);\n }\n}","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class TranslateLabelsAbstractService {\n\n constructor(\n ) {\n }\n\n abstract translate (name: string): string;\n}\n","import { TranslocoService } from '@jsverse/transloco';\nimport { Injectable, NgZone } from '@angular/core';\nimport { MessageService } from 'primeng/api';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SpiderlyMessageService { // TODO FT: nece da prikaze poruku ako je neki angular error koji se dogodi tek nakon api poziva\n constructor(\n private messageService: MessageService, \n private translocoService: TranslocoService,\n private ngZone: NgZone\n ) {\n \n }\n\n successMessage(detail: string, title: string = this.translocoService.translate('SuccessfulAction')) {\n this.messageService.add({\n severity: 'success',\n summary: title,\n detail: detail,\n life: 10000,\n });\n }\n\n warningMessage(detail: string, title?: string, sticky?: boolean){\n this.messageService.add({\n severity: 'warn',\n summary: title ?? this.translocoService.translate('Warning'),\n detail: detail,\n life: 10000,\n sticky: sticky\n });\n }\n\n errorMessage(detail: string, title: string = this.translocoService.translate('Error')){\n this.messageService.add({\n severity: 'error',\n summary: title,\n detail: detail,\n life: 10000,\n });\n }\n\n infoMessage(detail: string, title?: string, sticky?: boolean){\n this.messageService.add({\n severity: 'info',\n summary: title ?? this.translocoService.translate('Info'),\n detail: detail,\n life: 10000,\n sticky: sticky,\n });\n }\n \n}\n","import { Injectable } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../components/spiderly-form-control/spiderly-form-control';\nimport { BaseEntity, SchemaAwareConstructor } from '../entities/base-entity';\nimport { SpiderlyError } from '../errors/spiderly-error';\nimport { capitalizeFirstChar } from './helper-functions';\nimport { SpiderlyMessageService } from './spiderly-message.service';\nimport { TranslateLabelsAbstractService } from './translate-labels-abstract.service';\nimport { ValidatorAbstractService } from './validator-abstract.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseFormService {\n constructor(\n private translateLabelsService: TranslateLabelsAbstractService,\n private validatorService: ValidatorAbstractService,\n private messageService: SpiderlyMessageService,\n private translocoService: TranslocoService\n ) {}\n\n initFormGroup = <T extends BaseEntity>(\n formGroup: SpiderlyFormGroup<T>, \n targetClass: SchemaAwareConstructor<T>,\n initialValues?: T, \n updateOnChangeControls?: (keyof T)[]\n ) => {\n if (!formGroup)\n throw new SpiderlyError('You need to instantiate the form group.')\n\n if (!targetClass)\n throw new SpiderlyError('You need to pass targetClass.')\n\n if (!initialValues)\n initialValues = {} as T;\n\n Object.keys(targetClass.schema).forEach((formControlName) => {\n const propSchema = targetClass.schema[formControlName];\n let propInitialValue = initialValues[formControlName];\n \n const existingControl = formGroup.get(formControlName);\n\n if (\n propSchema.type.endsWith('[]') &&\n propSchema.nestedConstructor &&\n propSchema.type !== 'Namebook[]'\n ) {\n if (existingControl instanceof SpiderlyFormArray) {\n this.initFormArray(existingControl, propSchema.nestedConstructor, propInitialValue);\n }\n else {\n const control = new SpiderlyFormArray<T>([], this.translocoService, this);\n this.initFormArray(control, propSchema.nestedConstructor, propInitialValue);\n \n control.label = formControlName;\n control.labelForDisplay = this.getTranslatedLabel(formControlName);\n \n formGroup.setControl(formControlName, control);\n }\n }\n else if (\n propSchema.nestedConstructor &&\n propSchema.type !== 'Namebook[]'\n ) {\n if (existingControl instanceof SpiderlyFormGroup) {\n this.initFormGroup(existingControl, propSchema.nestedConstructor, propInitialValue)\n }\n else{\n const control = new SpiderlyFormGroup({});\n this.initFormGroup(control, propSchema.nestedConstructor, propInitialValue)\n formGroup.setControl(formControlName, control);\n }\n }\n else {\n // HACK: Because on the backend id type is not nullable on generated DTOs, we need to do this, it's ugly hack and we should make it better.\n if (formControlName === 'id' && !propInitialValue) {\n propInitialValue = 0;\n }\n\n if (existingControl instanceof SpiderlyFormControl) {\n existingControl.setValue(propInitialValue); \n }\n else {\n let control: SpiderlyFormControl;\n\n if (updateOnChangeControls?.includes(formControlName as keyof T) ||\n (formControlName.endsWith('Id') && formControlName.length > 2) ||\n propSchema.type === 'Date' ||\n propSchema.type === 'Namebook[]'\n ){\n control = new SpiderlyFormControl(propInitialValue, { updateOn: 'change' });\n }\n else{\n control = new SpiderlyFormControl(propInitialValue, { updateOn: 'blur' });\n }\n \n control.label = formControlName;\n control.labelForDisplay = this.getTranslatedLabel(formControlName);\n control.parentClassName = targetClass.typeName;\n \n this.validatorService.setValidator(control, targetClass.typeName);\n\n formGroup.setControl(formControlName, control);\n }\n }\n });\n\n formGroup.targetClass = targetClass;\n\n return formGroup;\n }\n\n getTranslatedLabel(formControlName: string): string {\n if (formControlName.endsWith('Id') && formControlName.length > 2) {\n formControlName = formControlName.substring(0, formControlName.length - 2);\n } \n else if (formControlName.endsWith('DisplayName')) {\n formControlName = formControlName.replace('DisplayName', '');\n } \n\n return this.translateLabelsService.translate(formControlName);\n }\n\n addNewFormGroupToFormArray<T extends BaseEntity>(\n formArray: SpiderlyFormArray<T>, \n targetClass: SchemaAwareConstructor<T>,\n initialValues: T,\n index: number,\n ) : SpiderlyFormGroup {\n let helperFormGroup = new SpiderlyFormGroup({});\n this.initFormGroup(helperFormGroup, targetClass, initialValues);\n \n if (index == null) {\n formArray.push(helperFormGroup);\n }else{\n formArray.insert(index, helperFormGroup);\n }\n\n return helperFormGroup;\n }\n\n removeFormControlFromTheFormArray(formArray: SpiderlyFormArray, index: number) {\n if(index == null)\n throw new SpiderlyError('Can not pass null index.');\n\n formArray.removeAt(index);\n }\n\n initFormArray<T extends BaseEntity>(\n formArray: SpiderlyFormArray<T>,\n targetClass: SchemaAwareConstructor<T>,\n initialValues: T[] = [],\n )\n {\n if (!formArray)\n throw new SpiderlyError('You must pass a FormArray instance to be initialized or updated.');\n\n if (!targetClass)\n throw new SpiderlyError('You did not initialize targetClass');\n\n // formArray.required = required;\n formArray.formGroupInitialValues = {}; // When we need we can pass formGroupInitialValues to this method instead of assigning it to empty object\n formArray.targetClass = targetClass;\n\n initialValues.forEach((model, index) => {\n const existingControl = formArray.at(index);\n \n if (existingControl instanceof SpiderlyFormGroup) {\n this.initFormGroup(existingControl, targetClass, model);\n }\n else {\n let helperFormGroup: SpiderlyFormGroup = new SpiderlyFormGroup({});\n this.initFormGroup(helperFormGroup, targetClass, model);\n formArray.push(helperFormGroup);\n }\n });\n\n return formArray;\n }\n\n //#region Helpers\n\n showInvalidFieldsMessage = () => {\n this.messageService.warningMessage(\n this.translocoService.translate('YouHaveSomeInvalidFieldsDescription'),\n this.translocoService.translate('YouHaveSomeInvalidFieldsTitle'), \n );\n }\n\n generateNewNegativeId<T extends BaseEntity>(formArray: SpiderlyFormArray<T>){\n return -formArray.getRawValue().filter(x => x.id < 0).length - 1;\n }\n\n getSaveBodyMainDTOKey = (saveBodyClass: SchemaAwareConstructor<any>) => {\n const schema = saveBodyClass.schema;\n return Object.keys(schema).find(k => schema[k].isSaveBodyMainDTO === true);\n }\n\n mapMainUIFormToSaveBody = <T extends BaseEntity>(mainUIFormClass: SchemaAwareConstructor<T>, mainUIFormValues: T) => {\n let saveBody = {};\n\n Object.keys(mainUIFormClass.schema).forEach(propName => {\n const property = mainUIFormClass.schema[propName];\n const value = mainUIFormValues[propName];\n \n // Handle ordered one-to-many (e.g., \"orderedItemsMainUIFormDTO\" -> \"orderedItemsSaveBodyDTO\")\n if (propName.startsWith('ordered') && propName.endsWith('MainUIFormDTO')) {\n const newKey = propName.replace('MainUIFormDTO', 'SaveBodyDTO');\n // Recursively map nested DTOs\n const relatedEntity = property.nestedConstructor;\n saveBody[newKey] = value?.map(item => \n this.mapMainUIFormToSaveBody(relatedEntity, item)\n ) ?? [];\n }\n // Handle multi-select (e.g., \"itemsIds\" -> \"selectedItemsIds\")\n else if (propName.endsWith('Ids')) {\n saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];\n }\n // Handle multi-autocomplete (e.g., \"itemsNamebookDTOList\" -> \"selectedItemsIds\")\n else if (propName.endsWith('NamebookDTOList')) {\n saveBody[`selected${capitalizeFirstChar(propName)}`] = value ?? [];\n }\n // Handle the main DTO object (e.g., \"entityDTO\")\n else{\n saveBody[propName] = value;\n }\n });\n\n return saveBody;\n }\n\n isControlValid(\n control: SpiderlyFormControl | SpiderlyFormGroup | SpiderlyFormArray, \n controlNamesFromHtml?: string[]\n ): boolean {\n let invalid = false;\n\n if (control instanceof SpiderlyFormControl) {\n if (\n control.invalid &&\n (controlNamesFromHtml == null || controlNamesFromHtml?.includes(control.label))\n ) {\n control.markAsDirty();\n invalid = true;\n }\n }\n else if (control instanceof SpiderlyFormGroup) {\n Object.keys(control.controls).forEach(key => {\n const nestedControl = control.controls[key];\n if (!this.isControlValid(nestedControl, control.controlNamesFromHtml)) {\n invalid = true;\n }\n });\n }\n else if (control instanceof SpiderlyFormArray){\n control.controls.forEach((nestedControl: SpiderlyFormControl | SpiderlyFormGroup | SpiderlyFormArray) => {\n if (!this.isControlValid(nestedControl)) {\n invalid = true;\n }\n });\n }\n\n if (invalid) {\n return false;\n }\n\n return true;\n }\n\n //#endregion\n\n}\n","import { BaseEntity } from \"./base-entity\";\n\nexport class InitCompanyAuthDialogDetails extends BaseEntity\n{\n image?: string;\n companyName?: string;\n \n constructor(\n {\n image,\n companyName,\n }:{\n image?: string;\n companyName?: string;\n } = {}\n ) {\n super();\n\n this.image = image;\n this.companyName = companyName;\n }\n\n static readonly typeName = 'InitCompanyAuthDialogDetails' as const;\n}","import { Inject, Injectable, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, Observable, of, Subject, Subscription } from 'rxjs';\nimport { map, tap, delay, finalize } from 'rxjs/operators';\nimport { SocialUser, SocialAuthService } from '@abacritt/angularx-social-login';\nimport { ExternalProvider, Login, VerificationTokenRequest, AuthResult, RefreshTokenRequest, UserBase } from '../entities/security-entities';\nimport { ConfigBaseService } from './config-base.service';\nimport { ApiSecurityService } from './api.service.security';\nimport { InitCompanyAuthDialogDetails } from '../entities/init-company-auth-dialog-details';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthBaseService implements OnDestroy {\n private readonly apiUrl: string = this.config.apiUrl;\n private timer?: Subscription;\n\n protected _currentUserPermissionCodes = new BehaviorSubject<string[] | null>(undefined);\n currentUserPermissionCodes$ = this._currentUserPermissionCodes.asObservable();\n\n protected _user = new BehaviorSubject<UserBase | null>(undefined);\n user$ = this._user.asObservable();\n\n // Google auth\n private authChangeSub = new Subject<boolean>();\n private extAuthChangeSub = new Subject<SocialUser>();\n public authChanged = this.authChangeSub.asObservable();\n public extAuthChanged = this.extAuthChangeSub.asObservable();\n \n constructor(\n protected router: Router,\n protected http: HttpClient,\n protected externalAuthService: SocialAuthService,\n protected apiService: ApiSecurityService,\n protected config: ConfigBaseService,\n @Inject(PLATFORM_ID) protected platformId: Object\n ) {\n if (isPlatformBrowser(platformId)) {\n window.addEventListener('storage', this.storageEventListener);\n }\n\n // Google auth\n this.externalAuthService.authState.subscribe((user) => {\n const externalAuth: ExternalProvider = {\n // provider: user.provider,\n idToken: user.idToken\n }\n this.loginExternal(externalAuth).subscribe(authResult => {\n this.onAfterLoginExternal();\n });\n this.extAuthChangeSub.next(user);\n });\n }\n\n private storageEventListener = (event: StorageEvent) => {\n if (event.storageArea === localStorage) {\n if (event.key === 'logout-event') {\n this.stopTokenTimer();\n this._user.next(null);\n\n this._currentUserPermissionCodes.next(null);\n }\n if (event.key === 'login-event') {\n this.stopTokenTimer();\n\n this.apiService.getCurrentUserBase().subscribe((user: UserBase) => {\n this._user.next({\n id: user.id,\n email: user.email\n });\n\n this.setCurrentUserPermissionCodes().subscribe();\n });\n }\n }\n }\n\n sendLoginVerificationEmail(body: Login): Observable<any> {\n const browserId = this.getBrowserId();\n body.browserId = browserId;\n return this.apiService.sendLoginVerificationEmail(body);\n }\n\n login(body: VerificationTokenRequest): Observable<Promise<AuthResult>> {\n const browserId = this.getBrowserId();\n body.browserId = browserId;\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/Login`, body);\n return this.handleLoginResult(loginResultObservable);\n }\n\n loginExternal(body: ExternalProvider): Observable<Promise<AuthResult>> {\n const browserId = this.getBrowserId();\n body.browserId = browserId;\n const loginResultObservable = this.http.post<AuthResult>(`${this.apiUrl}/Security/LoginExternal`, body);\n return this.handleLoginResult(loginResultObservable);\n }\n\n onAfterLoginExternal = () => {\n this.navigateToDashboard();\n }\n\n handleLoginResult(loginResultObservable: Observable<AuthResult>){\n return loginResultObservable.pipe(\n map(async (loginResult: AuthResult) => {\n this.setLocalStorage(loginResult);\n this._user.next({\n id: loginResult.userId,\n email: loginResult.email,\n });\n this.startTokenTimer();\n this.setCurrentUserPermissionCodes().subscribe()\n return loginResult;\n })\n );\n }\n\n logout() {\n const browserId = this.getBrowserId();\n this.http\n .get(`${this.apiUrl}/Security/Logout?browserId=${browserId}`)\n .pipe(\n finalize(() => {\n this.clearLocalStorage();\n this._user.next(null);\n this.onAfterLogout();\n this.stopTokenTimer();\n })\n )\n .subscribe();\n }\n\n onAfterLogout = () => {\n this._currentUserPermissionCodes.next(null);\n this.router.navigate([this.config.loginSlug]);\n }\n\n refreshToken(): Observable<AuthResult> {\n const refreshToken = localStorage.getItem(this.config.refreshTokenKey);\n\n if (!refreshToken) {\n this.clearLocalStorage();\n return of(null);\n }\n\n const browserId = this.getBrowserId();\n const body = new RefreshTokenRequest();\n body.browserId = browserId;\n body.refreshToken = refreshToken;\n \n return this.http\n .post<AuthResult>(`${this.apiUrl}/Security/RefreshToken`, body, this.config.httpSkipSpinnerOptions)\n .pipe(\n map((loginResult) => {\n this._user.next({\n id: loginResult.userId,\n email: loginResult.email\n });\n \n this.setLocalStorage(loginResult);\n this.startTokenTimer();\n this.onAfterRefreshToken();\n \n return loginResult;\n })\n );\n }\n\n onAfterRefreshToken = () => {\n this.setCurrentUserPermissionCodes().subscribe(); // FT: Needs to be after setting local storage\n }\n\n setLocalStorage(loginResult: AuthResult) {\n localStorage.setItem(this.config.accessTokenKey, loginResult.accessToken);\n localStorage.setItem(this.config.refreshTokenKey, loginResult.refreshToken);\n localStorage.setItem('login-event', 'login' + Math.random());\n }\n\n clearLocalStorage() {\n localStorage.removeItem(this.config.accessTokenKey);\n localStorage.removeItem(this.config.refreshTokenKey);\n localStorage.setItem('logout-event', 'logout' + Math.random());\n }\n\n getBrowserId(): string {\n let browserId = localStorage.getItem(this.config.browserIdKey); // FT: We don't need to remove this from the local storage ever, only if the user manuely deletes it, we will handle it\n if (!browserId) {\n browserId = crypto.randomUUID();\n localStorage.setItem(this.config.browserIdKey, browserId);\n }\n return browserId;\n }\n\n isAccessTokenExpired(): boolean {\n const expired = this.getTokenRemainingTime() < 5000;\n \n return expired;\n }\n\n getTokenRemainingTime(): number {\n const accessToken = this.getAccessToken();\n\n if (!accessToken) {\n return 0;\n }\n\n const jwtToken = JSON.parse(atob(accessToken.split('.')[1]));\n const expires = new Date(jwtToken.exp * 1000);\n \n return expires.getTime() - Date.now();\n }\n\n getAccessToken(): string {\n if (isPlatformBrowser(this.platformId)) {\n return localStorage.getItem(this.config.accessTokenKey);\n }\n\n return null;\n }\n\n private startTokenTimer() {\n const timeout = this.getTokenRemainingTime();\n this.timer = of(true)\n .pipe(\n delay(timeout),\n tap({\n next: () => this.refreshToken().subscribe(),\n })\n )\n .subscribe();\n }\n\n private stopTokenTimer() {\n this.timer?.unsubscribe();\n }\n\n navigateToDashboard(){\n this.router.navigate(['/']);\n }\n\n initCompanyAuthDialogDetails = (): Observable<InitCompanyAuthDialogDetails> => {\n return of(\n new InitCompanyAuthDialogDetails ({\n image: this.config.logoPath, \n companyName: this.config.companyName,\n })\n );\n }\n\n setCurrentUserPermissionCodes(): Observable<string[]> {\n return this.apiService.getCurrentUserPermissionCodes().pipe(\n map(permissionCodes => {\n this._currentUserPermissionCodes.next(permissionCodes);\n return permissionCodes;\n }\n ));\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformId)) {\n window.removeEventListener('storage', this.storageEventListener.bind(this));\n }\n \n this.onAfterNgOnDestroy();\n }\n\n onAfterNgOnDestroy = () => {};\n}","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { MenuItem } from 'primeng/api';\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { firstValueFrom, forkJoin } from 'rxjs';\nimport { SpiderlyMultiAutocompleteComponent } from '../../controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\nimport { SpiderlyMultiSelectComponent } from '../../controls/spiderly-multiselect/spiderly-multiselect.component';\nimport { SpiderlyTextareaComponent } from '../../controls/spiderly-textarea/spiderly-textarea.component';\nimport { SpiderlyTextboxComponent } from '../../controls/spiderly-textbox/spiderly-textbox.component';\nimport { BaseEntity } from '../../entities/base-entity';\nimport { IsAuthorizedForSaveEvent } from '../../entities/is-authorized-for-save-event';\nimport { LastMenuIconIndexClicked } from '../../entities/last-menu-icon-index-clicked';\nimport { Namebook } from '../../entities/namebook';\nimport { RoleMainUIForm, RoleSaveBody } from '../../entities/security-entities';\nimport { SpiderlyButton } from '../../entities/spiderly-button';\nimport { ApiSecurityService } from '../../services/api.service.security';\nimport { AuthBaseService } from '../../services/auth-base.service';\nimport { BaseFormService } from '../../services/base-form.service';\nimport { CardSkeletonComponent } from '../card-skeleton/card-skeleton.component';\nimport { SpiderlyReturnButtonComponent } from '../spiderly-buttons/return-button/return-button.component';\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\nimport { SpiderlyFormArray, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\nimport { SpiderlyPanelsModule } from '../spiderly-panels/spiderly-panels.module';\n\n@Component({\n selector: 'role-base-details',\n templateUrl: 'role-base-details.component.html',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslocoDirective,\n CardSkeletonComponent,\n SpiderlyTextboxComponent,\n SpiderlyTextareaComponent,\n SpiderlyMultiAutocompleteComponent,\n SpiderlyMultiSelectComponent,\n SpiderlyPanelsModule,\n SpiderlyButtonComponent,\n SpiderlyReturnButtonComponent\n ]\n})\nexport class RoleBaseDetailsComponent { \n @Output() onSave = new EventEmitter<void>();\n @Output() onAfterFormGroupInit = new EventEmitter<void>();\n @Input() getCrudMenuForOrderedData: (formArray: SpiderlyFormArray, modelConstructor: BaseEntity, lastMenuIconIndexClicked: LastMenuIconIndexClicked, adjustFormArrayManually: boolean) => MenuItem[];\n @Input() parentFormGroup: SpiderlyFormGroup<RoleMainUIForm>;\n @Input() additionalButtons: SpiderlyButton[] = [];\n @Input() panelTitle: string;\n @Input() showBigPanelTitle: boolean = true;\n @Input() panelIcon: string;\n\n @Input() handleAdditionalSaveAuthorization: () => Promise<boolean> = () => Promise.resolve(true);\n isAuthorizedForSave: boolean = false;\n @Output() onIsAuthorizedForSaveChange = new EventEmitter<IsAuthorizedForSaveEvent>(); \n \n modelId: number;\n loading: boolean = true;\n\n usersForRoleOptions: Namebook[];\n permissionsForRoleOptions: Namebook[];\n\n constructor(\n private apiService: ApiSecurityService,\n private route: ActivatedRoute,\n private baseFormService: BaseFormService,\n private authService: AuthBaseService\n ) {}\n\n ngOnInit(){\n this.parentFormGroup.initSaveBody = () => { \n let saveBody = new RoleSaveBody();\n saveBody = this.baseFormService.mapMainUIFormToSaveBody(RoleMainUIForm, this.parentFormGroup.getRawValue());\n return saveBody;\n }\n\n this.parentFormGroup.saveObservableMethod = this.apiService.saveRole;\n\n this.route.params.subscribe(async (params) => {\n this.modelId = params['id'];\n\n this.apiService.getPermissionsDropdownListForRole().subscribe(po => {\n this.permissionsForRoleOptions = po;\n });\n\n if(this.modelId > 0){\n forkJoin({\n mainUIFormDTO: this.apiService.getRoleMainUIFormDTO(this.modelId)\n })\n .subscribe(async ({ mainUIFormDTO }) => {\n this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm, mainUIFormDTO);\n await this.handleAuthorizationForSave();\n this.loading = false;\n this.onAfterFormGroupInit.next();\n });\n }\n else{\n this.baseFormService.initFormGroup(this.parentFormGroup, RoleMainUIForm);\n await this.handleAuthorizationForSave();\n this.loading = false;\n this.onAfterFormGroupInit.next();\n }\n });\n }\n\n handleAuthorizationForSave = async () => {\n const currentUserPermissionCodes = await firstValueFrom(this.authService.currentUserPermissionCodes$);\n const isAdditionallyAuthorizedForSave = await this.handleAdditionalSaveAuthorization(); \n\n this.isAuthorizedForSave =\n (currentUserPermissionCodes.includes('InsertRole') && this.modelId <= 0) || \n (currentUserPermissionCodes.includes('UpdateRole') && this.modelId > 0) ||\n isAdditionallyAuthorizedForSave;\n\n if (this.isAuthorizedForSave) { \n this.parentFormGroup.enable();\n }\n else{\n this.parentFormGroup.disable();\n }\n\n this.onIsAuthorizedForSaveChange.next(\n new IsAuthorizedForSaveEvent({\n isAuthorizedForSave: this.isAuthorizedForSave,\n })\n );\n };\n\n searchUsersForRole(event: AutoCompleteCompleteEvent) {\n this.apiService.getUsersAutocompleteListForRole(50, event?.query ?? '').subscribe(no => {\n this.usersForRoleOptions = no;\n });\n }\n\n save(){\n this.onSave.next();\n }\n\n}\n","<ng-container *transloco=\"let t\">\n <spiderly-panel>\n <panel-header [title]=\"panelTitle\" [showBigTitle]=\"showBigPanelTitle\" [icon]=\"panelIcon\"></panel-header>\n\n <panel-body>\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\n <div class=\"col-12\">\n <spiderly-textbox [control]=\"parentFormGroup.controls.roleDTO.getControl('name')\"></spiderly-textbox>\n </div>\n <div class=\"col-12\">\n <spiderly-textarea [control]=\"parentFormGroup.controls.roleDTO.getControl('description')\"></spiderly-textarea>\n </div>\n <div class=\"col-12\">\n <spiderly-multiautocomplete [control]=\"parentFormGroup.controls.usersNamebookDTOList\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\n </div>\n <div class=\"col-12\">\n <spiderly-multiselect [control]=\"parentFormGroup.controls.permissionsIds\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\n </div>\n </form>\n\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\n\n </panel-body>\n\n <panel-footer>\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\n @for (button of additionalButtons; track button.label) {\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\n }\n <return-button></return-button>\n </panel-footer>\n </spiderly-panel>\n</ng-container>","import { HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectorRef,\n Component,\n KeyValueDiffer,\n KeyValueDiffers,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { BaseEntity, SchemaAwareConstructor } from '../../entities/base-entity';\nimport { SpiderlyError } from '../../errors/spiderly-error';\nimport { getParentUrl } from '../../services/helper-functions';\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\nimport { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';\nimport { BaseFormService } from './../../services/base-form.service';\n\n@Component({\n selector: 'base-form',\n template: '',\n styles: [],\n standalone: false\n})\nexport class BaseFormCopy<T extends BaseEntity = any> implements OnInit { \n parentFormGroup = new SpiderlyFormGroup<T>({} as any);\n mainUIFormClass: SchemaAwareConstructor<any>;\n saveBodyClass: SchemaAwareConstructor<any>;\n saveBody: any;\n successfulSaveToastDescription: string = this.translocoService.translate('SuccessfulSaveToastDescription');\n\n private modelDiffer: KeyValueDiffer<string, any>;\n\n constructor(\n protected differs: KeyValueDiffers, \n protected http: HttpClient, \n protected messageService: SpiderlyMessageService, \n protected changeDetectorRef: ChangeDetectorRef,\n protected router: Router, \n protected route: ActivatedRoute,\n protected translocoService: TranslocoService,\n protected baseFormService: BaseFormService,\n ) {\n }\n \n ngOnInit(){\n\n }\n\n //#region Model\n\n // onSave method is here only because of the hooks, we should move everything except them to the BaseFromService\n onSave = (reroute: boolean = true) => {\n if (!this.saveBodyClass)\n throw new SpiderlyError('You did not initialize saveBodyClass');\n\n if (!this.mainUIFormClass)\n throw new SpiderlyError('You did not initialize mainUIFormClass');\n\n this.saveBody = this.parentFormGroup.initSaveBody();\n \n this.onBeforeSave(this.saveBody);\n\n this.saveBody = this.saveBody ?? this.parentFormGroup.getRawValue();\n\n const isValid = this.baseFormService.isControlValid(this.parentFormGroup);\n\n if(isValid){\n this.parentFormGroup.saveObservableMethod(this.saveBody).subscribe(res => {\n this.messageService.successMessage(this.successfulSaveToastDescription);\n\n this.baseFormService.initFormGroup(this.parentFormGroup, this.mainUIFormClass, res);\n\n if (reroute) {\n const saveBodyMainDTOKey = this.baseFormService.getSaveBodyMainDTOKey(this.saveBodyClass);\n const savedObjectId = res[saveBodyMainDTOKey]?.id;\n this.rerouteToSavedObject(savedObjectId); // You always need to have id, because of id == 0 and version change\n }\n \n this.onAfterSave();\n });\n \n this.onAfterSaveRequest();\n }else{\n this.baseFormService.showInvalidFieldsMessage();\n }\n }\n\n rerouteToSavedObject = (rerouteId: number | string): void => {\n if(rerouteId == null){\n const currentUrl = this.router.url;\n const parentUrl: string = getParentUrl(currentUrl);\n this.router.navigateByUrl(parentUrl);\n return;\n }\n \n const segments = this.router.url.split('/');\n segments[segments.length - 1] = rerouteId.toString();\n\n const newUrl = segments.join('/');\n this.router.navigateByUrl(newUrl);\n }\n\n onBeforeSave = (saveBody?: any) => {}\n onAfterSave = () => {}\n onAfterSaveRequest = () => {}\n\n //#endregion\n\n //#region Model List\n \n getFormArrayControlByIndex<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, index: number, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl {\n // if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\n // formArray.controlNamesFromHtml.push(formControlName);\n\n let filteredFormGroups: SpiderlyFormGroup<T>[];\n\n if (filter) {\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\n }\n else{\n return (formArray.controls[index] as SpiderlyFormGroup<T>).controls[formControlName] as SpiderlyFormControl;\n }\n\n return filteredFormGroups[index]?.controls[formControlName] as SpiderlyFormControl; // FT: Don't change this. It's always possible that change detection occurs before something.\n }\n\n getFormArrayControls<T>(formControlName: keyof T & string, formArray: SpiderlyFormArray<T>, filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[]): SpiderlyFormControl[] {\n // if(formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)\n // formArray.controlNamesFromHtml.push(formControlName);\n\n let filteredFormGroups: SpiderlyFormGroup<T>[];\n\n if (filter) {\n filteredFormGroups = filter(formArray.controls as SpiderlyFormGroup<T>[]);\n }\n else{\n return (formArray.controls as SpiderlyFormGroup<T>[]).map(x => x.controls[formControlName] as SpiderlyFormControl);\n }\n\n return filteredFormGroups.map(x => x.controls[formControlName] as SpiderlyFormControl);\n }\n\n removeFormControlsFromTheFormArray(formArray: SpiderlyFormArray, indexes: number[]) {\n // Sort indexes in descending order to avoid index shifts when removing controls\n const sortedIndexes = indexes.sort((a, b) => b - a);\n\n sortedIndexes.forEach(index => {\n if (index >= 0 && index < formArray.length) {\n formArray.removeAt(index);\n }\n });\n }\n\n //#endregion\n\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { ChangeDetectorRef, Component, EventEmitter, Input, KeyValueDiffers, OnInit, Output } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { ButtonModule } from 'primeng/button';\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\nimport { VerificationTokenRequest } from '../../../entities/security-entities';\nimport { BaseFormService } from '../../../services/base-form.service';\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\nimport { BaseFormCopy } from '../../base-form/base-form copy';\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\nimport { SpiderlyPanelsModule } from '../../spiderly-panels/spiderly-panels.module';\n\n@Component({\n selector: 'verification-wrapper',\n templateUrl: './verification-wrapper.component.html',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SpiderlyControlsModule,\n SpiderlyPanelsModule,\n ButtonModule,\n TranslocoDirective,\n ]\n})\nexport class VerificationWrapperComponent extends BaseFormCopy implements OnInit {\n verificationTokenRequestFormGroup = new SpiderlyFormGroup<VerificationTokenRequest>({});\n\n @Input() email: string;\n @Output() onResendVerificationToken: EventEmitter<any> = new EventEmitter();\n @Output() onCodeSubmit: EventEmitter<string> = new EventEmitter();\n\n constructor(\n protected override differs: KeyValueDiffers,\n protected override http: HttpClient,\n protected override messageService: SpiderlyMessageService, \n protected override changeDetectorRef: ChangeDetectorRef,\n protected override router: Router, \n protected override route: ActivatedRoute,\n protected override translocoService: TranslocoService,\n protected override baseFormService: BaseFormService,\n ) { \n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\n }\n\n override ngOnInit(){\n this.initVerificationTokenRequestFormGroup(new VerificationTokenRequest({email: this.email}));\n }\n\n initVerificationTokenRequestFormGroup(model: VerificationTokenRequest){\n this.baseFormService.initFormGroup(this.verificationTokenRequestFormGroup, VerificationTokenRequest, model, ['verificationCode']);\n }\n\n codeSubmit(){\n let isValid: boolean = this.baseFormService.isControlValid(this.verificationTokenRequestFormGroup);\n \n if(isValid){\n this.onCodeSubmit.next(this.verificationTokenRequestFormGroup.controls.verificationCode.getRawValue());\n }\n }\n\n resendVerificationToken(){\n this.onResendVerificationToken.next(null);\n }\n\n}\n\n","<ng-container *transloco=\"let t\">\n <div class=\"min-h-screen\" style=\"display: flex; justify-content: center; align-items: center;\">\n <div class=\"dialog\" style=\"padding: 0px;\">\n @if (verificationTokenRequestFormGroup != null) {\n <spiderly-panel>\n <panel-header [title]=\"t('AccountVerificationHeader')\" [showBigTitle]=\"true\" icon=\"pi pi-envelope\"></panel-header>\n \n <panel-body>\n <form class=\"grid\">\n <div class=\"col-12\">\n <div style=\"font-size: 17.5px\">{{t('AccountVerificationTitle')}}</div>\n </div>\n <div class=\"col-12\">\n {{t('AccountVerificationDescription', {email: email})}}\n </div>\n <div class=\"col-12\">\n <spiderly-textbox [control]=\"verificationTokenRequestFormGroup.getControl('verificationCode')\"></spiderly-textbox>\n </div>\n <div class=\"col-12\">\n <spiderly-button (onClick)=\"codeSubmit()\" [label]=\"t('Submit')\" icon=\"pi pi-verified\" type=\"submit\"></spiderly-button>\n </div>\n </form>\n </panel-body>\n \n <panel-footer>\n <a pButton class=\"p-button-link\" [label]=\"t('GoToGmail')\" icon=\"pi pi-external-link\" href=\"https://mail.google.com/mail/u/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\n <a pButton class=\"p-button-link\" [label]=\"t('GoToYahoo')\" icon=\"pi pi-external-link\" href=\"https://mail.yahoo.com/d/folders/1/\" target=\"_blank\" rel=\"noopener noreferrer\"></a>\n </panel-footer>\n <panel-footer>\n <div>{{t('ResendVerificationCodeFirstPart')}} <a class=\"link\" (click)=\"resendVerificationToken()\">{{t('ResendVerificationCodeLinkSecondPart')}}</a></div>\n </panel-footer>\n </spiderly-panel>\n }\n @else {\n <!-- TODO FT: Add skeleton -->\n }\n </div>\n </div>\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\nimport { VerificationWrapperComponent } from './verification-wrapper.component';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\nimport { AuthBaseService } from '../../../services/auth-base.service';\n\n@Component({\n selector: 'login-verification',\n templateUrl: './login-verification.component.html',\n imports: [\n VerificationWrapperComponent\n ]\n})\nexport class LoginVerificationComponent implements OnInit {\n @Input() email: string;\n @Input() userId: number;\n\n constructor(\n private authService: AuthBaseService, \n private messageService: SpiderlyMessageService,\n private translocoService: TranslocoService,\n ) { \n }\n\n ngOnInit(){\n }\n \n resendVerificationToken(){\n this.authService.sendLoginVerificationEmail({email: this.email}).subscribe(() => {\n this.messageService.successMessage(this.translocoService.translate('SuccessfullySentVerificationCode'));\n });\n }\n\n onCodeSubmit(event: string){\n this.authService.login({email: this.email, verificationCode: event}).subscribe(() => {\n this.messageService.successMessage(this.translocoService.translate('YouHaveSuccessfullyVerifiedYourAccount'));\n this.authService.navigateToDashboard();\n });\n }\n}\n\n","<verification-wrapper [email]=\"email\" (onResendVerificationToken)=\"resendVerificationToken()\" (onCodeSubmit)=\"onCodeSubmit($event)\"></verification-wrapper>\n\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { ButtonModule } from \"primeng/button\";\nimport { SpiderlyButtonComponent } from \"../spiderly-button/spiderly-button.component\";\nimport { createFakeGoogleWrapper } from \"../../../services/helper-functions\";\n\n@Component({\n selector: 'google-button',\n templateUrl: './google-button.component.html',\n styles: [],\n imports: [\n ButtonModule,\n SpiderlyButtonComponent\n ]\n})\nexport class GoogleButtonComponent {\n @Input() label: string;\n @Output() loginWithGoogle: EventEmitter<any> = new EventEmitter<any>();\n\n handleGoogleLogin() {\n this.loginWithGoogle.emit(createFakeGoogleWrapper());\n }\n\n}\n\ndeclare global {\n interface Window {\n google: any;\n }\n}","<ng-container>\n <spiderly-button (onClick)=\"handleGoogleLogin()\" [label]=\"label\" [outlined]=\"true\" [style]=\"{width: '100%'}\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0.98em\" height=\"1em\" viewBox=\"0 0 256 262\"><path fill=\"#4285f4\" d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"/><path fill=\"#34a853\" d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"/><path fill=\"#fbbc05\" d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z\"/><path fill=\"#eb4335\" d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"/></svg>\n </spiderly-button>\n</ng-container>","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Subscription } from \"rxjs\";\nimport { TranslocoDirective } from \"@jsverse/transloco\";\nimport { GoogleButtonComponent } from \"../../spiderly-buttons/google-button/google-button.component\";\nimport { ConfigBaseService } from \"../../../services/config-base.service\";\nimport { AuthBaseService } from \"../../../services/auth-base.service\";\n\n@Component({\n selector: 'auth',\n templateUrl: './auth.component.html',\n styles: [],\n imports: [\n CommonModule,\n GoogleButtonComponent,\n TranslocoDirective,\n ]\n})\nexport class AuthComponent {\n private initCompanyAuthDialogDetailsSubscription: Subscription | null = null;\n\n @Output() onCompanyNameChange: EventEmitter<string> = new EventEmitter();\n @Input() showGoogleAuth: boolean = true;\n\n hasGoogleAuth: boolean = this.config.googleAuth;\n companyName: string;\n image: string;\n \n constructor(\n private config: ConfigBaseService,\n private authService: AuthBaseService,\n ) {\n\n }\n\n ngOnInit(){\n this.initCompanyDetails();\n }\n\n initCompanyDetails() {\n this.initCompanyAuthDialogDetailsSubscription = this.authService.initCompanyAuthDialogDetails().subscribe(initCompanyAuthDialogDetails => {\n if (initCompanyAuthDialogDetails != null) {\n this.image = initCompanyAuthDialogDetails.image;\n this.companyName = initCompanyAuthDialogDetails.companyName;\n this.onCompanyNameChange.next(this.companyName);\n }\n })\n }\n\n onGoogleSignIn(googleWrapper: any){\n googleWrapper.click();\n }\n\n ngOnDestroy(): void {\n if (this.initCompanyAuthDialogDetailsSubscription) {\n this.initCompanyAuthDialogDetailsSubscription.unsubscribe();\n }\n }\n}\n\n","<ng-container *transloco=\"let t\">\n <div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\n <div class=\"flex flex-column w-full\">\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\n <div class=\"text-center\" style=\"margin-bottom: 38px;\">\n <img *ngIf=\"image != null\" [src]=\"image\" alt=\"{{companyName}} Logo\" title=\"{{companyName}} Logo\" height=\"60\">\n <i *ngIf=\"image == null\" class=\"pi pi-spin pi-spinner primary-color\" style=\"font-size: 2rem\"></i>\n </div>\n\n <ng-content></ng-content>\n \n <div *ngIf=\"hasGoogleAuth && showGoogleAuth\">\n <div style=\"display: flex; align-items: center; gap: 7px; justify-content: center; margin-bottom: 16px;\">\n <div class=\"separator\"></div>\n <div>{{t('or')}}</div>\n <div class=\"separator\"></div>\n </div>\n <div>\n <!-- https://code-maze.com/how-to-sign-in-with-google-angular-aspnet-webapi/ -->\n <google-button (loginWithGoogle)=\"onGoogleSignIn($event)\" [label]=\"t('ContinueWithGoogle')\"></google-button> \n </div>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n</ng-container>","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { ChangeDetectorRef, Component, KeyValueDiffers, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\nimport { Login } from '../../../entities/security-entities';\nimport { AuthBaseService } from '../../../services/auth-base.service';\nimport { BaseFormService } from '../../../services/base-form.service';\nimport { ConfigBaseService } from '../../../services/config-base.service';\nimport { SpiderlyMessageService } from '../../../services/spiderly-message.service';\nimport { BaseFormCopy } from '../../base-form/base-form copy';\nimport { SpiderlyFormGroup } from '../../spiderly-form-control/spiderly-form-control';\nimport { AuthComponent } from '../partials/auth.component';\nimport { LoginVerificationComponent } from '../partials/login-verification.component';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n imports: [\n CommonModule,\n ReactiveFormsModule,\n AuthComponent,\n SpiderlyControlsModule,\n LoginVerificationComponent,\n TranslocoDirective,\n ]\n})\nexport class LoginComponent extends BaseFormCopy implements OnInit {\n loginFormGroup = new SpiderlyFormGroup<Login>({});\n\n companyName: string;\n showEmailSentDialog: boolean = false;\n\n constructor(\n protected override differs: KeyValueDiffers,\n protected override http: HttpClient,\n protected override messageService: SpiderlyMessageService, \n protected override changeDetectorRef: ChangeDetectorRef,\n protected override router: Router, \n protected override route: ActivatedRoute,\n protected override translocoService: TranslocoService,\n protected override baseFormService: BaseFormService,\n private authService: AuthBaseService, \n private config: ConfigBaseService\n ) { \n super(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService);\n }\n\n override ngOnInit(){\n this.initLoginFormGroup(new Login({}));\n }\n \n initLoginFormGroup(model: Login){\n this.baseFormService.initFormGroup(this.loginFormGroup, Login, model, ['email']);\n }\n\n companyNameChange(companyName: string){\n this.companyName = companyName;\n }\n\n sendLoginVerificationEmail() {\n let isFormGroupValid: boolean = this.baseFormService.isControlValid(this.loginFormGroup);\n \n if (isFormGroupValid == false) \n return;\n\n this.authService.sendLoginVerificationEmail(this.loginFormGroup.getRawValue()).subscribe(()=>{\n this.showEmailSentDialog = true;\n });\n }\n\n}\n","<ng-container *transloco=\"let t\">\n @if (loginFormGroup != null) {\n @if (showEmailSentDialog == false) {\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\n <form [formGroup]=\"loginFormGroup\" style=\"margin-bottom: 16px;\"> <!-- FT: We are not loading anything from the server here so we don't need defer block -->\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0;\">\n <spiderly-textbox [control]=\"loginFormGroup.getControl('email')\"></spiderly-textbox>\n </div>\n \n <div class=\"mb-4 gap-5\">\n <div class=\"text-center\" style=\"font-size: smaller;\">\n {{t('AgreementsOnRegister')}} <b routerLink=\"/user-agreement\" class=\"primary-color cursor-pointer\">{{t('UserAgreement')}}</b> {{t('and')}} <b routerLink=\"/privacy-policy\" class=\"primary-color cursor-pointer\">{{t('PrivacyPolicy')}}</b>.\n </div>\n </div>\n\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\n <spiderly-button [label]=\"t('Login')\" (onClick)=\"sendLoginVerificationEmail()\" [outlined]=\"true\" [style]=\"{width: '100%'}\" type=\"submit\"></spiderly-button>\n </div>\n </form>\n </auth>\n }\n @else {\n <login-verification [email]=\"loginFormGroup.controls.email.getRawValue()\"></login-verification>\n }\n }\n @else {\n <!-- TODO FT: Add skeleton -->\n }\n</ng-container>","import { Component } from '@angular/core';\nimport { ConfigBaseService } from '../../services/config-base.service'\n\n@Component({\n selector: 'footer',\n templateUrl: './footer.component.html',\n standalone: true\n})\nexport class FooterComponent {\n companyName: string = this.config.companyName;\n\n constructor(\n private config: ConfigBaseService\n ) { \n\n }\n}\n","<div class=\"layout-footer\">\n <span class=\"font-medium ml-2\">{{companyName}}</span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { MenuItem } from 'primeng/api';\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\n\n@Component({\n selector: 'index-card',\n templateUrl: './index-card.component.html',\n imports: [\n CommonModule,\n SpiderlyPanelsModule\n ]\n})\nexport class IndexCardComponent {\n @Input() last: boolean;\n @Input() index: number;\n @Input() header: string = '';\n @Input() description: string;\n @Input() showRemoveIcon: boolean;\n @Input() showCrudMenu: boolean = true;\n\n @Input() crudMenu: MenuItem[];\n\n @Output() onMenuIconClick = new EventEmitter<number>();\n @Output() onRemoveIconClick = new EventEmitter<null>();\n \n constructor(\n protected formBuilder: FormBuilder,\n ) {\n }\n \n ngOnInit(){\n }\n\n menuIconClick(index: number){\n this.onMenuIconClick.next(index);\n }\n\n removeIconClick(){\n this.onRemoveIconClick.next(null);\n }\n\n}","<div [ngClass]=\"{\n\t'last-child-zero-margin': last,\n 'card-margin-bottom': true,\n\t}\">\n\t<spiderly-panel [crudMenu]=\"crudMenu\" [showCrudMenu]=\"showCrudMenu\" (onMenuIconClick)=\"menuIconClick($event)\" [showRemoveIcon]=\"showRemoveIcon\" (onRemoveIconClick)=\"removeIconClick()\" [index]=\"index\">\n\t\t<panel-header [title]=\"header\" [index]=\"index\" [showIcon]=\"false\"></panel-header>\n\t\t\n\t\t<panel-body>\n\t\t\t<ng-content>\n\t\t\t\t<!-- Custom things below description -->\n\t\t\t</ng-content>\n\t\t</panel-body>\n\t\t\n\t</spiderly-panel>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { SpiderlyPanelsModule } from \"../spiderly-panels/spiderly-panels.module\";\n\n@Component({\n selector: 'info-card',\n templateUrl: './info-card.component.html',\n styleUrl: './info-card.component.scss',\n imports: [\n CommonModule,\n SpiderlyPanelsModule\n ]\n})\nexport class InfoCardComponent {\n @Input() header = '';\n @Input() showSmallIcon = true;\n @Input() icon = 'pi pi-info-circle';\n @Input() textColor = '';\n \n constructor(\n protected formBuilder: FormBuilder,\n ) {\n\n }\n\n ngOnInit(){\n }\n\n}","<div class=\"card responsive-card-padding info-card\">\n <div class=\"info-card__content\">\n <div>\n <div class=\"info-card__header\">\n <i *ngIf=\"showSmallIcon\" class=\"{{icon}} info-card__icon\"></i>\n {{header}}\n </div>\n <div class=\"info-card__body\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n\n <div class=\"info-card__background-icon\">\n <i class=\"{{icon}}\"></i>\n </div>\n</div>","import { Component } from '@angular/core';\nimport { ConfigBaseService } from '../../services/config-base.service';\nimport { RouterModule } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'not-found',\n templateUrl: './not-found.component.html',\n imports: [\n RouterModule,\n ButtonModule,\n ]\n})\nexport class NotFoundComponent { \n companyName = this.config.companyName;\n logoPath: string = this.config.logoPath;\n\n constructor(\n private config: ConfigBaseService\n ) { \n\n }\n}","<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px;\">\n <div class=\"flex flex-column w-full\">\n <div class=\"w-full sm:w-30rem\" style=\"margin: auto; border-radius:50px; padding:0.3rem; background: linear-gradient(180deg, var(--p-primary-color) 10%, rgba(33, 150, 243, 0) 30%);\">\n <div class=\"surface-card py-6 px-5 sm:px-6\" style=\"border-radius:45px;\">\n <div class=\"text-center\">\n <img \n [src]=\"logoPath\" \n alt=\"{{companyName}} Logo\" \n title=\"{{companyName}} Logo\" \n height=\"60\"\n class=\"mb-4\"\n >\n </div>\n <h1 class=\"mb-4\">\n <div class=\"font-bold text-5xl lg:text-6xl spiderly-gradient-title\">404</div>\n <div class=\"font-bold text-5xl lg:text-6xl\">Page Not Found</div>\n </h1>\n <div class=\"text-600 text-lg mb-5\">\n The page you're looking for doesn't exist or has been moved. Let's get you back on track.\n </div>\n <div>\n <p-button [routerLink]=\"['/']\" label=\"Go to Homepage\"></p-button>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, Input } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ButtonModule } from \"primeng/button\";\nimport { SplitButtonModule } from \"primeng/splitbutton\";\n\nimport { MenuItem } from \"primeng/api\";\nimport { SpiderlyButtonBaseComponent } from \"../spiderly-button-base/spiderly-button-base\";\n\n@Component({\n selector: 'spiderly-split-button',\n templateUrl: './spiderly-split-button.component.html',\n styles: [],\n imports: [\n CommonModule,\n ButtonModule,\n SplitButtonModule\n ]\n})\nexport class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {\n @Input() dropdownItems: MenuItem[];\n\n\n\n}","<p-splitButton\n(onClick)=\"handleClick($event)\" \n[label]=\"label\" \n[icon]=\"icon\" \n[outlined]=\"outlined\" \n[styleClass]=\"styleClass\" \n[severity]=\"severity\" \n[rounded]=\"rounded\"\n[style]=\"style\"\n[class]=\"class\"\n[disabled]=\"disabled\"\n[model]=\"dropdownItems\"\n>\n <ng-content></ng-content>\n</p-splitButton>","export enum MatchModeCodes\n{\n StartsWith,\n Contains,\n Equals,\n LessThan,\n GreaterThan,\n In,\n}","import { ConfirmationService } from 'primeng/api';\nimport { Component } from \"@angular/core\";\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\n\n@Component({\n selector: 'spiderly-delete-confirmation',\n templateUrl: './spiderly-delete-confirmation.component.html',\n styles: [],\n imports: [\n SpiderlyButtonComponent,\n TranslocoDirective,\n ConfirmDialogModule,\n ],\n providers: [\n ConfirmationService\n ]\n})\nexport class SpiderlyDeleteConfirmationComponent {\n\n constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) {}\n\n accept(){\n this.config.data.deleteItemFromTableObservableMethod(this.config.data.id).subscribe({\n next: () => {\n this.ref.close(true); // deleted succesfully\n },\n error: () => {\n this.ref.close(false); // not deleted succesfully\n },\n });\n }\n\n reject(){\n this.ref.close(false);\n }\n}","<ng-container *transloco=\"let t\">\n <p-confirmDialog \n #cd \n ></p-confirmDialog>\n <div\n class=\"border-bottom-1 surface-border text-lg\"\n style=\"display: flex; align-items: center; padding-bottom: 10px; width: 100%; gap: 10px;\"\n >\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\n <p>{{t('PleaseConfirmToProceed')}}</p>\n </div>\n \n <div style=\"display: flex; gap: 12px; justify-content: right; margin-top: 28px;\">\n <spiderly-button (onClick)=\"reject()\" icon=\"pi pi-times\" [label]=\"t('Cancel')\" severity=\"secondary\"></spiderly-button>\n <spiderly-button (onClick)=\"accept()\" icon=\"pi pi-check\" [label]=\"t('Confirm')\" styleClass=\"p-button-danger\"></spiderly-button>\n </div>\n</ng-container>\n","import { CommonModule, formatDate } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { SelectItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { Table, TableFilterEvent, TableLazyLoadEvent, TableModule } from 'primeng/table';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { firstValueFrom, Observable } from 'rxjs';\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\nimport { Filter } from '../../entities/filter';\nimport { LazyLoadSelectedIdsResult } from '../../entities/lazy-load-selected-ids-result';\nimport { PaginatedResult } from '../../entities/paginated-result';\nimport { PrimengOption } from '../../entities/primeng-option';\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\nimport { exportListToExcel, getHtmlImgDisplayString64 } from '../../services/helper-functions';\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\nimport { SpiderlyDeleteConfirmationComponent } from '../spiderly-delete-dialog/spiderly-delete-confirmation.component';\nimport { SpiderlyFormControl } from '../spiderly-form-control/spiderly-form-control';\n\n@Component({\n selector: 'spiderly-data-table',\n templateUrl: './spiderly-data-table.component.html',\n styleUrl: 'spiderly-data-table.component.scss',\n imports: [\n FormsModule,\n CommonModule,\n TranslocoDirective,\n SpiderlyControlsModule,\n TableModule,\n ButtonModule,\n MultiSelectModule,\n DatePickerModule,\n CheckboxModule,\n TooltipModule,\n ]\n})\nexport class SpiderlyDataTableComponent implements OnInit {\n @ViewChild('dt') table: Table;\n @Input() tableTitle: string;\n @Input() tableIcon: string = 'pi pi-list';\n @Input() items: any[]; // Pass only when hasLazyLoad === false\n @Input() rows: number = 10;\n @Input() cols: Column[];\n @Input() showPaginator: boolean = true; // Pass only when hasLazyLoad === false\n @Input() showCardWrapper: boolean = false;\n @Input() readonly: boolean = false;\n @Input() idField = 'id';\n totalRecords: number;\n @Output() onTotalRecordsChange: EventEmitter<number> = new EventEmitter();\n \n @Input() getPaginatedListObservableMethod: (tableFilter: Filter) => Observable<PaginatedResult>;\n @Input() exportListToExcelObservableMethod: (tableFilter: Filter) => Observable<any>;\n @Input() deleteItemFromTableObservableMethod: (rowId: number) => Observable<any>;\n\n lastLazyLoadEvent: TableLazyLoadEvent;\n loading: boolean = true;\n \n @Input() newlySelectedItems: number[] = [];\n fakeSelectedItems: number[] = []; // Only for showing checkboxes, we will not send this to the backend\n currentPageSelectedItemsFromDb: number[] = []; // Made so we can add only newly selected items to the newlySelectedItems\n @Input() unselectedItems: number[] = [];\n @Input() selectionMode: 'single' | 'multiple' | undefined | null;\n @Output() onLazyLoad: EventEmitter<Filter> = new EventEmitter();\n rowsSelectedNumber: number = 0;\n isAllSelected: boolean = null;\n fakeIsAllSelected: boolean = false; // Only for showing checkboxes, we will not send this to the backend\n isFirstTimeLazyLoad: boolean = true;\n @Output() onIsAllSelectedChange: EventEmitter<AllClickEvent> = new EventEmitter();\n @Input() selectedLazyLoadObservableMethod: (tableFilter: Filter) => Observable<LazyLoadSelectedIdsResult>;\n @Input() additionalFilterIdLong: number;\n \n matchModeDateOptions: SelectItem[] = [];\n matchModeNumberOptions: SelectItem[] = [];\n @Input() showAddButton: boolean = true; \n @Input() showExportToExcelButton: boolean = true;\n @Input() showReloadTableButton: boolean = false;\n\n deleteRef: DynamicDialogRef;\n\n // Client side table\n // @Input() formArrayItems: any[]; // Pass this only if you have some additional logic for showing data\n @Input() getFormArrayItems: (additionalIndexes?: any) => any[];\n @Input() hasLazyLoad: boolean = true; \n selectedItemIds: number[] = []; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\n @Input() getAlreadySelectedItemIds: (additionalIndexes?: any) => number[]; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\n selectedItems: any[] = []; // Pass only when hasLazyLoad === false\n @Input() getAlreadySelectedItems: (additionalIndexes?: any) => any[]; // Pass only when hasLazyLoad === false, it's enough if the M2M association hasn't additional fields\n @Input() getFormControl: (formControlName: string, index: number, additionalIndexes?: any) => SpiderlyFormControl;\n @Input() additionalIndexes: any;\n @Output() onRowSelect: EventEmitter<RowClickEvent> = new EventEmitter();\n @Output() onRowUnselect: EventEmitter<RowClickEvent> = new EventEmitter();\n /**\n * if true, clicking a row will navigate to the details page.\n * Set to false to disable row navigation.\n * Default is false.\n */\n @Input() navigateOnRowClick: boolean = false;\n\n /**\n * Path to navigate to when clicking a row.\n * If not provided, it will use the current route with the row ID.\n * Example: 'details' will navigate to '/details/{rowId}'.\n */\n @Input() rowNavigationPath: string;\n\n constructor(\n private router: Router,\n private dialogService: DialogService,\n private route: ActivatedRoute,\n private messageService: SpiderlyMessageService,\n private translocoService: TranslocoService,\n @Inject(LOCALE_ID) private locale: string\n ) {}\n\n ngOnInit(): void {\n this.matchModeDateOptions = [\n { label: this.translocoService.translate('OnDate'), value: MatchModeCodes.Equals },\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\n ];\n\n this.matchModeNumberOptions = [\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\n ];\n\n if (this.hasLazyLoad === false) {\n this.clientLoad();\n }\n }\n \n lazyLoad(event: TableLazyLoadEvent) {\n this.lastLazyLoadEvent = event;\n\n let tableFilter: Filter = event as unknown as Filter;\n tableFilter.additionalFilterIdLong = this.additionalFilterIdLong;\n\n this.onLazyLoad.next(tableFilter);\n \n this.getPaginatedListObservableMethod(tableFilter).subscribe({\n next: async (res) => { \n this.items = res.data;\n this.totalRecords = res.totalRecords;\n this.onTotalRecordsChange.next(res.totalRecords);\n \n if (this.selectedLazyLoadObservableMethod != null) {\n let selectedRowsMethodResult: LazyLoadSelectedIdsResult = await firstValueFrom(this.selectedLazyLoadObservableMethod(tableFilter));\n \n this.currentPageSelectedItemsFromDb = [...selectedRowsMethodResult.selectedIds];\n\n if (this.isFirstTimeLazyLoad == true) {\n this.rowsSelectedNumber = selectedRowsMethodResult.totalRecordsSelected;\n this.setFakeIsAllSelected();\n this.isFirstTimeLazyLoad = false;\n }\n \n if (this.isAllSelected == true) {\n let idsToInsert = [...this.items.map(x => x[this.idField])];\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\n this.fakeSelectedItems = [...idsToInsert]; // Only for showing checkboxes, we will not send this to the backend\n }\n else if (this.isAllSelected == false) {\n this.fakeSelectedItems = [...this.newlySelectedItems]; // Only for showing checkboxes, we will not send this to the backend\n }\n else if (this.isAllSelected == null) {\n let idsToInsert = [...selectedRowsMethodResult.selectedIds, ...this.newlySelectedItems];\n idsToInsert = idsToInsert.filter(x => this.unselectedItems.includes(x) == false);\n this.fakeSelectedItems = [...idsToInsert];\n }\n }\n\n this.loading = false;\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n\n clientLoad(){\n this.loading = false;\n\n this.loadFormArrayItems();\n this.totalRecords = this.items.length;\n this.onTotalRecordsChange.next(this.items.length);\n\n if (this.getAlreadySelectedItemIds) {\n this.selectedItemIds = this.getAlreadySelectedItemIds(this.additionalIndexes);\n }\n if (this.getAlreadySelectedItems) {\n this.selectedItems = this.getAlreadySelectedItems(this.additionalIndexes);\n }\n this.rowsSelectedNumber = this.selectedItemIds.length;\n this.setFakeIsAllSelected();\n }\n\n private clientFilterCount = 0;\n\n filter(event: TableFilterEvent){\n if (this.hasLazyLoad && this.selectionMode === 'multiple')\n this.selectAll(false); // We need to do it like this because: totalRecords: 1 -> selectedRecords from earlyer selection 2 -> unselect current -> all checkbox is set to true\n\n if (this.hasLazyLoad === false && this.selectionMode === 'multiple') {\n if (this.clientFilterCount === 0) {\n this.loadFormArrayItems();\n this.clientFilterCount++;\n }else{\n this.clientFilterCount--;\n }\n }\n }\n\n private loadFormArrayItems(){\n this.items = this.getFormArrayItems(this.additionalIndexes);\n this.items.forEach((item, index) => {\n item.index = index;\n });\n }\n \n getColHeaderWidth(filterType: string) {\n switch (filterType) {\n case 'text':\n return 'min-width: 12rem;';\n case 'date':\n return 'min-width: 10rem;';\n case 'multiselect':\n return 'min-width: 12rem;';\n case 'boolean':\n return 'min-width: 8rem;';\n case 'numeric':\n return 'min-width: 12rem;';\n default:\n return 'width: 0rem;'; // fitting content of the row like this\n }\n }\n\n getColMatchModeOptions(filterType: string){\n switch (filterType) {\n case 'text':\n return null;\n case 'date':\n return this.matchModeDateOptions;\n case 'multiselect':\n return null;\n case 'boolean':\n return null;\n case 'numeric':\n return this.matchModeNumberOptions;\n default:\n return null;\n }\n }\n \n getColMatchMode(filterType: string): any {\n switch (filterType) {\n case 'text':\n return MatchModeCodes.Contains;\n case 'date':\n return MatchModeCodes.Equals;\n case 'multiselect':\n return MatchModeCodes.In;\n case 'boolean':\n return MatchModeCodes.Equals;\n case 'numeric':\n return MatchModeCodes.Equals\n default:\n return null;\n }\n }\n\n isDropOrMulti(filterType: string){\n if (filterType == 'dropdown' || filterType == 'multiselect') {\n return true;\n } \n else {\n return false;\n }\n }\n\n/*\n * Navigate to details page based on rowId and rowNavigationPath.\n * If rowNavigationPath is provided, it will navigate to that path with the rowId.\n * If not, it will navigate to the current route with the rowId.\n*/\nnavigateToDetails(rowId: number): void{\n if (rowId == null) return;\n\n if (this.rowNavigationPath){\n const cleanPath = this.rowNavigationPath.replace(/^\\/|\\/$/g, ''); // Remove leading and trailing slashes\n \n this.router.navigateByUrl(`/${cleanPath}/${rowId}`);\n }\n else {\n this.router.navigate([rowId], { relativeTo: this.route });\n }\n }\n\n /* \n * Handle row click event.\n */\n onRowClick(row: any): void {\n if (!this.navigateOnRowClick || !row?.id) return;\n this.navigateToDetails(row.id);\n }\n\n deleteObject(rowId: number){\n this.deleteRef = this.dialogService.open(SpiderlyDeleteConfirmationComponent, \n { \n header: this.translocoService.translate('AreYouSure'),\n width: '400px',\n data:{ deleteItemFromTableObservableMethod: this.deleteItemFromTableObservableMethod, id: rowId, } \n });\n\n this.deleteRef.onClose.subscribe((deletedSuccessfully: boolean)=>{\n if(deletedSuccessfully === true){\n this.messageService.successMessage(this.translocoService.translate('SuccessfullyDeletedMessage'));\n this.reload();\n }\n });\n }\n\n reload(){\n this.loading = true;\n this.items = null;\n this.lazyLoad(this.lastLazyLoadEvent);\n }\n\n showActions(): boolean {\n return this.cols.some(x => x.actions?.length > 0);\n }\n\n getStyleForBodyColumn(col: Column<any>) {\n switch(col.filterType){\n case 'numeric':\n return 'text-align: right;';\n default:\n return null;\n }\n }\n\n getClassForAction(action: Action): string{\n switch(action.field){\n case 'Details':\n return 'pi pi-pencil';\n case 'Delete':\n return 'pi pi-trash';\n default:\n return `${action.icon} ${action.styleClass}`;\n }\n }\n\n getStyleForAction(action: Action): string{\n switch(action.field){\n case 'Delete':\n return 'cursor: pointer; color: var(--p-button-danger-background);';\n default:\n return `cursor: pointer; ${action.style}`;\n }\n }\n\n getMethodForAction(action: Action, rowData: any){\n switch(action.field){\n case 'Details':\n return this.navigateToDetails(rowData[this.idField]);\n case 'Delete':\n return this.deleteObject(rowData[this.idField]);\n default:\n return action.onClick(rowData[this.idField]);\n }\n }\n\n getRowData(rowData: any, col: Column): string{\n switch (col.filterType) {\n case 'text':\n return rowData[col.field];\n case 'date':\n if (rowData[col.field] == null)\n return null;\n \n if (col.showTime)\n return formatDate(rowData[col.field], 'dd.MM.yyyy. HH:mm', this.locale);\n else\n return formatDate(rowData[col.field], 'dd.MM.yyyy.', this.locale);\n case 'multiselect':\n return rowData[col.field];\n case 'boolean':\n return rowData[col.field] == true ? this.translocoService.translate('Yes') : this.translocoService.translate('No');\n case 'numeric':\n // TODO: make decimal pipe\n return rowData[col.field];\n case 'blob':\n return getHtmlImgDisplayString64(rowData[col.field]);\n default:\n return null;\n }\n }\n\n colTrackByFn(index, item){\n return item.field;\n }\n\n actionTrackByFn(index, item: Action){\n return `${index}${item.field}`\n }\n\n exportListToExcel() {\n let filter: Filter = this.lastLazyLoadEvent as unknown as Filter;\n filter.additionalFilterIdLong = this.additionalFilterIdLong;\n\n exportListToExcel(this.exportListToExcelObservableMethod, filter);\n }\n\n clear(table: Table) {\n table.clear();\n }\n\n //#region Selection\n\n setFakeIsAllSelected(){\n if(this.rowsSelectedNumber == this.totalRecords)\n this.fakeIsAllSelected = true;\n else\n this.fakeIsAllSelected = false;\n }\n\n selectAll(checked: boolean){\n this.unselectedItems.length = 0;\n this.newlySelectedItems.length = 0;\n\n if (checked == true) {\n this.isAllSelected = true;\n this.fakeIsAllSelected = true;\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: true, additionalIndexes: this.additionalIndexes}));\n this.rowsSelectedNumber = this.totalRecords;\n this.fakeSelectedItems = [...this.items.map(x => x[this.idField])];\n this.selectedItemIds = [...this.items.map(x => x[this.idField])]\n }\n else{\n this.isAllSelected = false;\n this.fakeIsAllSelected = false;\n this.onIsAllSelectedChange.next(new AllClickEvent({checked: false, additionalIndexes: this.additionalIndexes}));\n this.rowsSelectedNumber = 0;\n this.fakeSelectedItems = [];\n this.selectedItemIds = [];\n }\n }\n\n selectRow(id: number, index: number) {\n if (this.isRowSelected(id)) {\n this.rowUnselect(id);\n this.onRowUnselect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\n } else {\n this.rowSelect(id);\n this.onRowSelect.next(new RowClickEvent({ index: index, id: id, additionalIndexes: this.additionalIndexes }));\n }\n }\n\n isRowSelected(id: number){\n if (this.hasLazyLoad){\n return this.fakeSelectedItems.find(x => x === id) != undefined;\n }\n else {\n return this.selectedItemIds.find(x => x === id) != undefined;\n }\n }\n\n rowSelect(id: number){\n if (this.isAllSelected == false || this.currentPageSelectedItemsFromDb.includes(id) == false) {\n this.newlySelectedItems.push(id);\n }\n\n if (this.hasLazyLoad){\n this.fakeSelectedItems.push(id);\n }\n else {\n this.selectedItemIds.push(id);\n }\n \n this.rowsSelectedNumber++;\n\n const index = this.unselectedItems.indexOf(id);\n if (index !== -1) {\n this.unselectedItems.splice(index, 1); // Splice is mutating the array\n }\n\n this.setFakeIsAllSelected();\n }\n \n rowUnselect(id: number) {\n if (this.isAllSelected == true || this.currentPageSelectedItemsFromDb.includes(id) == true) {\n this.unselectedItems.push(id);\n }\n\n this.rowsSelectedNumber--;\n\n const index = this.newlySelectedItems.indexOf(id);\n const fakeIndex = this.fakeSelectedItems.indexOf(id);\n const nonLazyLoadIndex = this.selectedItemIds.indexOf(id);\n\n if (index !== -1) {\n this.newlySelectedItems.splice(index, 1); // Splice is mutating the array\n }\n if (fakeIndex !== -1) {\n this.fakeSelectedItems.splice(fakeIndex, 1); // Splice is mutating the array\n }\n if (nonLazyLoadIndex !== -1) {\n this.selectedItemIds.splice(nonLazyLoadIndex, 1); // Splice is mutating the array\n }\n\n this.setFakeIsAllSelected();\n }\n //#endregion\n\n //#region Client side table\n\n // Can do it with Id also, because we are never adding the new record in the table at the same page.\n getFormArrayControlByIndex(formControlName: string, index: number): SpiderlyFormControl{\n if (this.getFormControl) {\n return this.getFormControl(formControlName, index, this.additionalIndexes);\n }\n else{\n return null;\n }\n }\n\n //#endregion\n}\n\nexport class Action {\n name?: string;\n field?: string;\n icon?: string;\n style?: string;\n styleClass?: string;\n onClick?: (id: number) => void;\n\n constructor(\n {\n name,\n field,\n icon,\n style,\n styleClass,\n onClick,\n }:{\n name?: string;\n field?: string;\n icon?: string;\n style?: string;\n styleClass?: string;\n onClick?: () => void;\n } = {}\n ) {\n this.name = name;\n this.field = field;\n this.icon = icon;\n this.style = style;\n this.styleClass = styleClass;\n this.onClick = onClick;\n }\n}\n\nexport class Column<T = any> {\n name?: string;\n field?: string & keyof T;\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\n filterPlaceholder?: string;\n showMatchModes?: boolean;\n showAddButton?: boolean;\n dropdownOrMultiselectValues?: PrimengOption[];\n actions?: Action[];\n editable?: boolean;\n showTime?: boolean;\n\n constructor(\n {\n name,\n field,\n filterField,\n filterType,\n filterPlaceholder,\n showMatchModes,\n showAddButton,\n dropdownOrMultiselectValues,\n actions,\n editable,\n showTime,\n }:{\n name?: string;\n field?: string & keyof T;\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future;\n filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';\n filterPlaceholder?: string;\n showMatchModes?: boolean;\n showAddButton?: boolean;\n dropdownOrMultiselectValues?: PrimengOption[];\n actions?: Action[];\n editable?: boolean;\n showTime?: boolean;\n } = {}\n ) {\n this.name = name;\n this.field = field;\n this.filterField = filterField;\n this.filterType = filterType;\n this.filterPlaceholder = filterPlaceholder;\n this.showMatchModes = showMatchModes;\n this.showAddButton = showAddButton;\n this.dropdownOrMultiselectValues = dropdownOrMultiselectValues;\n this.actions = actions;\n this.editable = editable;\n this.showTime = showTime;\n }\n}\n\nexport class RowClickEvent {\n index?: number;\n id?: number;\n additionalIndexes?: any;\n\n constructor(\n {\n index, \n id, \n additionalIndexes\n }:{\n index?: number; \n id?: number; \n additionalIndexes?: any;\n } = {}\n ) {\n this.index = index;\n this.id = id;\n this.additionalIndexes = additionalIndexes;\n }\n}\n\nexport class AllClickEvent {\n checked?: boolean;\n additionalIndexes?: any;\n\n constructor(\n {\n checked, \n additionalIndexes\n }:{\n checked?: boolean; \n additionalIndexes?: any;\n } = {}\n ) {\n this.checked = checked;\n this.additionalIndexes = additionalIndexes;\n }\n}","<ng-container *transloco=\"let t\">\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\n <p-table #dt [value]=\"items\" [rows]=\"rows\" [rowHover]=\"true\" [paginator]=\"showPaginator\" responsiveLayout=\"scroll\" [lazy]=\"hasLazyLoad\"\n (onLazyLoad)=\"lazyLoad($event)\" [totalRecords]=\"totalRecords\" class=\"spiderly-table\" [loading]=\"(items === undefined || loading === true)\" [selectionMode]=\"selectionMode\" dataKey=\"id\" \n (onFilter)=\"filter($event)\"> \n <ng-template pTemplate=\"caption\">\n <div class=\"table-header overflow-auto\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <i class=\"{{tableIcon}}\" style=\"font-size: 20px;\"></i>\n <div style=\"margin: 0px; font-size: 17.5px;\">{{tableTitle}}</div>\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button pButton [label]=\"t('ClearFilters')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-filter-slash\" (click)=\"clear(dt)\"></button>\n <button pButton *ngIf=\"showExportToExcelButton\" [label]=\"t('ExportToExcel')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-download\" (click)=\"exportListToExcel()\"></button>\n <button pButton *ngIf=\"showReloadTableButton\" [label]=\"t('Reload')\" class=\"p-button-outlined\" style=\"flex: none;\" icon=\"pi pi-refresh\" (click)=\"reload()\"></button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th style=\"width: 0rem;\" *ngIf=\"selectionMode == 'multiple'\">\n <div style=\"display: flex; gap: 8px;\">\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectAll($event.checked)\" [(ngModel)]=\"fakeIsAllSelected\" [binary]=\"true\"></p-checkbox> ({{rowsSelectedNumber}})\n </div>\n </th>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <th [style]=\"getColHeaderWidth(col.filterType)\">\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\n {{col.name}}\n <p-columnFilter *ngIf=\"col.filterType != null && col.filterType !== 'blob'\" [type]=\"col.filterType\" [field]=\"col.filterField ?? col.field\" display=\"menu\" [placeholder]=\"col.filterPlaceholder\" \n [showOperator]=\"false\" [showMatchModes]=\"col.showMatchModes\" [showAddButton]=\"col.showAddButton\" [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\n [matchMode]=\"getColMatchMode(col.filterType)\"\n >\n <ng-template *ngIf=\"isDropOrMulti(col.filterType)\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"value\" [options]=\"col.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'240px'}\">\n <ng-template let-item pTemplate=\"item\">\n <div class=\"p-multiselect-representative-option\">\n <span class=\"ml-2\">{{ item.label }}</span>\n </div>\n </ng-template>\n </p-multiSelect>\n </ng-template>\n <ng-template *ngIf=\"col.filterType == 'date'\" pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-datepicker \n [ngModel]=\"value\" \n [showTime]=\"col.showTime\"\n (onSelect)=\"filter($event)\"\n ></p-datepicker>\n </ng-template>\n </p-columnFilter>\n </div>\n </th>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData let-index=\"rowIndex\" let-editing=\"editing\">\n <tr [class.clickable]=\" navigateOnRowClick\"\n (click)=\"onRowClick(rowData)\">\n <td *ngIf=\"selectionMode == 'multiple'\">\n <p-checkbox [disabled]=\"readonly\" (onChange)=\"selectRow(rowData[idField], rowData.index)\" [ngModel]=\"isRowSelected(rowData[idField])\" [binary]=\"true\"></p-checkbox>\n </td>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <td [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 18px;\">\n <ng-container *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\" >\n <span [pTooltip]=\"action.name\" [class]=\"getClassForAction(action)\" [style]=\"getStyleForAction(action)\" (click)=\"getMethodForAction(action, rowData)\"></span>\n </ng-container>\n </div>\n <ng-container *ngIf=\"col.filterType === 'blob'\">\n <img width=\"45\" [src]=\"getRowData(rowData, col)\" alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"col.filterType !== 'blob'\">\n {{getRowData(rowData, col)}}\n </ng-container>\n </td>\n <td *ngIf=\"col.editable\">\n <spiderly-number [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\" [showLabel]=\"false\"></spiderly-number>\n </td>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('NoRecordsFound')}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingbody\">\n <tr>\n <td [attr.colspan]=\"cols?.length + (selectionMode === 'multiple' ? 1 : 0)\">{{t('Loading')}}...</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n {{t('TotalRecords')}}: {{totalRecords}}\n </ng-template>\n <ng-template pTemplate=\"paginatorright\">\n <div style=\"display: flex; justify-content: end; gap: 10px;\">\n <spiderly-button *ngIf=\"showAddButton\" [label]=\"t('AddNew')\" icon=\"pi pi-plus\" (onClick)=\"navigateToDetails(0)\"></spiderly-button>\n </div>\n </ng-template>\n </p-table>\n </div>\n</ng-container>","import { Component, ContentChild, EventEmitter, Inject, Input, LOCALE_ID, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { Table, TableFilterEvent, TableLazyLoadEvent, TableModule } from 'primeng/table';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { SpiderlyControlsModule } from '../../controls/spiderly-controls.module';\nimport { PaginatedResult } from '../../entities/paginated-result';\nimport { Filter } from '../../entities/filter';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ButtonModule } from 'primeng/button';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { MatchModeCodes } from '../../enums/match-mode-enum-codes';\nimport { Action } from '../spiderly-data-table/spiderly-data-table.component';\nimport { SelectItem } from 'primeng/api';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { SelectModule } from 'primeng/select';\nimport { BaseEntity } from '../../entities/base-entity';\nimport { PrimengOption } from '../../entities/primeng-option';\n\n@Component({\n selector: 'spiderly-data-view',\n templateUrl: './spiderly-data-view.component.html',\n styleUrl: 'spiderly-data-view.component.scss',\n imports: [\n FormsModule,\n CommonModule,\n TranslocoDirective,\n SpiderlyControlsModule,\n TableModule,\n ButtonModule,\n MultiSelectModule,\n CheckboxModule,\n TooltipModule,\n DatePickerModule,\n InputTextModule,\n InputNumberModule,\n SelectModule,\n ]\n})\nexport class SpiderlyDataViewComponent<T> implements OnInit {\n @ViewChild('dt') table: Table;\n /**\n * List of items in the table.\n * Should be provided only when `hasLazyLoad === false`.\n */\n @Input() items: T[];\n @Input() rows: number = 10;\n @Input() filters: DataViewFilter<T>[] = [];\n totalRecords: number;\n @Output() onLazyLoad: EventEmitter<Filter> = new EventEmitter();\n\n @Input() showCardWrapper: boolean = true;\n /**\n * Whether to display additional data on the right side of the paginator.\n * Defaults to `false`.\n */\n @Input() showPaginatorRightData: boolean = false;\n @Input() showTotalRecordsNumber: boolean = false;\n @Input() applyFiltersIcon: string = 'pi pi-filter';\n @Input() clearFiltersIcon: string = 'pi pi-filter-slash';\n \n @Input() getPaginatedListObservableMethod: (filter: Filter) => Observable<PaginatedResult>;\n\n lastLazyLoadEvent: TableLazyLoadEvent;\n loading: boolean = true;\n\n matchModeDateOptions: SelectItem[] = [];\n matchModeNumberOptions: SelectItem[] = [];\n \n @ContentChild('cardBody', { read: TemplateRef }) cardBody!: TemplateRef<any>;\n\n constructor(\n private translocoService: TranslocoService,\n @Inject(LOCALE_ID) private locale: string\n ) {}\n\n ngOnInit(): void {\n this.matchModeDateOptions = [\n { label: this.translocoService.translate('OnDate'), value: MatchModeCodes.Equals },\n { label: this.translocoService.translate('DatesBefore'), value: MatchModeCodes.LessThan },\n { label: this.translocoService.translate('DatesAfter'), value: MatchModeCodes.GreaterThan },\n ];\n\n this.matchModeNumberOptions = [\n { label: this.translocoService.translate('Equals'), value: MatchModeCodes.Equals },\n { label: this.translocoService.translate('LessThan'), value: MatchModeCodes.LessThan },\n { label: this.translocoService.translate('MoreThan'), value: MatchModeCodes.GreaterThan },\n ];\n }\n \n lazyLoad(event: TableLazyLoadEvent) {\n this.lastLazyLoadEvent = event;\n \n const transformedFilter: { [K in keyof T]?: { value: any; matchMode: MatchModeCodes }[] } = {};\n\n for (const key in event.filters) {\n const filterMeta = event.filters[key];\n\n if (Array.isArray(filterMeta)) {\n transformedFilter[key] = filterMeta;\n } \n else {\n transformedFilter[key] = [{\n value: filterMeta.value,\n matchMode: filterMeta.matchMode\n }];\n }\n }\n\n let tableFilter = event as unknown as Filter<T>;\n\n tableFilter.filters = transformedFilter;\n\n this.onLazyLoad.next(tableFilter);\n \n this.getPaginatedListObservableMethod(tableFilter).subscribe({\n next: async (res) => { \n this.items = res.data;\n this.totalRecords = res.totalRecords;\n\n this.loading = false;\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n\n filter(event: TableFilterEvent){\n }\n \n getDefaultMatchMode(filterType: string): any {\n switch (filterType) {\n case 'text':\n return MatchModeCodes.Contains;\n case 'date':\n return MatchModeCodes.Equals;\n case 'multiselect':\n return MatchModeCodes.In;\n case 'boolean':\n return MatchModeCodes.Equals;\n case 'numeric':\n return MatchModeCodes.Equals\n default:\n return null;\n }\n }\n\n getMatchModeOptions(filterType: string){\n switch (filterType) {\n case 'text':\n return [];\n case 'date':\n return this.matchModeDateOptions;\n case 'multiselect':\n return [];\n case 'boolean':\n return [];\n case 'numeric':\n return this.matchModeNumberOptions;\n default:\n return [];\n }\n }\n\n reload(){\n this.loading = true;\n this.items = null;\n this.lazyLoad(this.lastLazyLoadEvent);\n }\n\n colTrackByFn(index, item){\n return item.field;\n }\n\n actionTrackByFn(index, item: Action){\n return `${index}${item.field}`\n }\n\n applyFilters = () => {\n this.table._filter();\n }\n\n clearFilters() {\n this.table.clear();\n }\n}\n\nexport interface DataViewCardBody<T> {\n $implicit: T;\n item: T;\n index: number;\n}\n\nexport interface DataViewFilter<T extends BaseEntity> {\n label?: string;\n field?: string & keyof T;\n filterField?: string & keyof T; // Made specificaly for multiautocomplete, maybe for something more in the future\n type?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric' | 'blob';\n placeholder?: string;\n showMatchModes?: boolean;\n dropdownOrMultiselectValues?: PrimengOption[];\n}","<ng-container *transloco=\"let t\">\n <div [class]=\"showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\">\n <p-table \n #dt \n [value]=\"items\" \n [rows]=\"rows\" \n [rowHover]=\"false\" \n responsiveLayout=\"scroll\" \n [lazy]=\"true\"\n (onLazyLoad)=\"lazyLoad($event)\" \n [totalRecords]=\"totalRecords\" class=\"spiderly-table\" \n [loading]=\"(items === undefined || loading === true)\" \n dataKey=\"id\" \n (onFilter)=\"filter($event)\"\n [filterDelay]=\"500\"\n [paginator]=\"true\"\n > \n <ng-template #caption>\n <div *ngIf=\"filters.length !== 0\">\n <div class=\"data-view-grid\">\n @for (filter of filters; track $index) {\n <div>\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; position: relative;\">\n <div>\n <label>\n {{filter.label}}\n </label>\n </div>\n\n <p-columnFilter *ngIf=\"filter.type != null\" [type]=\"filter.type\" [field]=\"filter.filterField ?? filter.field\" display=\"row\" [placeholder]=\"filter.placeholder\" \n [showOperator]=\"false\" [showMenu]=\"filter.showMatchModes\" [showMatchModes]=\"true\" [showClearButton]=\"false\" [matchMode]=\"getDefaultMatchMode(filter.type)\" [matchModeOptions]=\"getMatchModeOptions(filter.type)\" \n >\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect [ngModel]=\"value\" [options]=\"filter.dropdownOrMultiselectValues\" [placeholder]=\"t('All')\" (onChange)=\"filter($event.value)\" optionLabel=\"label\" optionValue=\"code\" [style]=\"{'width':'100%'}\">\n <ng-template let-item pTemplate=\"item\">\n <div class=\"p-multiselect-representative-option\">\n <span class=\"ml-2\">{{ item.label }}</span>\n </div>\n </ng-template>\n </p-multiSelect>\n </ng-template>\n </ng-container>\n </p-columnFilter>\n </div>\n </div>\n }\n </div>\n <div style=\"display: flex; gap: 12px;\">\n <spiderly-button [label]=\"t('ApplyFilters')\" (onClick)=\"applyFilters()\" [icon]=\"applyFiltersIcon\"></spiderly-button>\n <spiderly-button [label]=\"t('ClearFilters')\" (onClick)=\"clearFilters()\" [icon]=\"clearFiltersIcon\"></spiderly-button>\n </div>\n </div>\n </ng-template>\n <ng-template #body let-rowData let-index=\"rowIndex\">\n <tr style=\"padding: 0; margin-bottom: 0;\">\n <td style=\"display: block; border: 0; padding: 0;\">\n <ng-container *ngTemplateOutlet=\"cardBody; context: { $implicit: rowData, item: rowData, index: index }\">\n </ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n {{t('NoRecordsFound')}}\n </ng-template>\n <ng-template *ngIf=\"showTotalRecordsNumber\" pTemplate=\"paginatorleft\">\n {{t('TotalRecords')}}: {{totalRecords}}\n </ng-template>\n <ng-template *ngIf=\"showPaginatorRightData\" pTemplate=\"paginatorright\">\n <ng-content select=\"[PAGINATORRIGHT]\"></ng-content>\n </ng-template>\n </p-table>\n </div>\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spiderly-card',\n templateUrl: './spiderly-card.component.html',\n styles: [],\n})\nexport class SpiderlyCardComponent implements OnInit {\n @Input() icon: string = 'pi pi-file-edit';\n @Input() title: string;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n}","<div class=\"card responsive-card-padding\">\n <div style=\"display: flex; align-items: center; margin-bottom: 14px; gap: 8px;\">\n <i style=\"font-size: 21px;\" class=\"{{icon}} primary-color\"></i>\n <div style=\"margin: 0; font-size: 17.5px;\">{{title}}</div>\n </div>\n <ng-content></ng-content>\n</div>","import { BaseEntity } from \"./base-entity\";\nimport { UserBase } from \"./security-entities\";\n\nexport class InitTopBarData extends BaseEntity\n{\n companyName?: string;\n userProfilePath?: string;\n unreadNotificationsCount?: number;\n showProfileIcon?: boolean;\n currentUser?: UserBase;\n \n constructor(\n {\n companyName,\n userProfilePath,\n unreadNotificationsCount,\n showProfileIcon,\n currentUser,\n }:{\n companyName?: string,\n userProfilePath?: string,\n unreadNotificationsCount?: number,\n showProfileIcon?: boolean,\n currentUser?: UserBase,\n } = {}\n ) {\n super();\n\n this.companyName = companyName;\n this.userProfilePath = userProfilePath;\n this.unreadNotificationsCount = unreadNotificationsCount;\n this.showProfileIcon = showProfileIcon;\n this.currentUser = currentUser;\n }\n\n static readonly typeName = 'InitTopBarData' as const;\n}","import { AuthBaseService } from './auth-base.service';\nimport { ApiSecurityService } from './api.service.security';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, combineLatest, delay, lastValueFrom, map, Observable, of, Subject, Subscription, withLatestFrom } from 'rxjs';\nimport { InitTopBarData } from '../entities/init-top-bar-data';\nimport { ConfigBaseService } from './config-base.service';\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { Namebook } from '../entities/namebook';\n\nexport interface AppConfig {\n inputStyle: string;\n colorScheme: string; \n theme: string;\n ripple: boolean;\n menuMode: string;\n scale: number;\n color: string;\n}\n\ninterface LayoutState {\n staticMenuDesktopInactive: boolean;\n overlayMenuActive: boolean;\n profileSidebarVisible: boolean;\n profileDropdownSidebarVisible:boolean;\n configSidebarVisible: boolean;\n staticMenuMobileActive: boolean;\n menuHoverActive: boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LayoutBaseService implements OnDestroy {\n userSubscription: Subscription;\n\n protected _unreadNotificationsNumber = new BehaviorSubject<number | null>(null);\n unreadNotificationsCount$ = this._unreadNotificationsNumber.asObservable();\n\n layoutConfig: AppConfig = {\n ripple: false,\n inputStyle: 'outlined',\n menuMode: 'static',\n colorScheme: 'light',\n theme: 'lara-light-indigo',\n scale: 14,\n color: `var(--p-primary-color)`,\n };\n\n state: LayoutState = {\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n profileSidebarVisible: false,\n profileDropdownSidebarVisible: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n };\n\n private configUpdate = new Subject<AppConfig>();\n\n private overlayOpen = new Subject<any>();\n\n configUpdate$ = this.configUpdate.asObservable();\n\n overlayOpen$ = this.overlayOpen.asObservable();\n\n constructor(\n protected apiService: ApiSecurityService,\n protected config: ConfigBaseService,\n protected authService: AuthBaseService\n ) {\n }\n\n initUnreadNotificationsCountForCurrentUser = () => {\n this.initUnreadNotificationsCountForCurrentUserObservable().pipe(\n delay(1), // HACK: Adding delay so both additionalObservable and user emits single null value when logout\n withLatestFrom(this.authService.user$) // Triggers when unread notifications change\n ).subscribe(([additionalObservable, user]) => {\n if (user != null && additionalObservable !== undefined) {\n this.setUnreadNotificationsCountForCurrentUser().subscribe();\n }\n });\n }\n\n initUnreadNotificationsCountForCurrentUserObservable = (): Observable<any> => {\n return this.authService.user$;\n }\n\n setUnreadNotificationsCountForCurrentUser = (): Observable<any> => {\n return this.apiService.getUnreadNotificationsCountForCurrentUser().pipe(\n map((unreadNotificationsCount) => {\n this._unreadNotificationsNumber.next(unreadNotificationsCount);\n })\n );\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.overlayMenuActive = !this.state.overlayMenuActive;\n if (this.state.overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.staticMenuDesktopInactive = !this.state.staticMenuDesktopInactive;\n }\n else {\n this.state.staticMenuMobileActive = !this.state.staticMenuMobileActive;\n\n if (this.state.staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n showProfileSidebar() {\n this.state.profileSidebarVisible = !this.state.profileSidebarVisible;\n if (this.state.profileSidebarVisible) {\n this.overlayOpen.next(null);\n }\n }\n\n showProfileDropdownSidebar() {\n this.state.profileDropdownSidebarVisible = !this.state.profileDropdownSidebarVisible;\n if (this.state.profileDropdownSidebarVisible) {\n this.overlayOpen.next(null);\n }\n }\n\n showConfigSidebar() {\n this.state.configSidebarVisible = true;\n }\n\n isOverlay() {\n return this.layoutConfig.menuMode === 'overlay';\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n onConfigUpdate() {\n this.configUpdate.next(this.layoutConfig);\n }\n \n //#region Top Bar\n\n initTopBarData = (): Observable<InitTopBarData> => {\n return combineLatest([this.authService.user$, this.unreadNotificationsCount$]).pipe(\n map(([currentUser, unreadNotificationsCount]) => {\n return new InitTopBarData({\n companyName: this.config.companyName,\n userProfilePath: `/administration/users/${currentUser?.id}`,\n unreadNotificationsCount: unreadNotificationsCount,\n showProfileIcon: true,\n currentUser: currentUser,\n });\n })\n );\n }\n\n //#endregion\n\n //#region Side Bar\n\n searchPartners = (event: AutoCompleteCompleteEvent): Observable<Namebook[]> => {\n return of();\n }\n\n partnersAutocompleteButtonClick = (selectedPartner: Namebook) => {}\n\n //#endregion\n\n ngOnDestroy(): void {\n if (this.userSubscription) {\n this.userSubscription.unsubscribe();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { MenuChangeEvent } from '../../../entities/menuchangeevent';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SidebarMenuService {\n private menuSource = new Subject<MenuChangeEvent>();\n private resetSource = new Subject();\n\n menuSource$ = this.menuSource.asObservable();\n resetSource$ = this.resetSource.asObservable();\n\n onMenuStateChange(event: MenuChangeEvent) {\n this.menuSource.next(event);\n }\n\n reset() {\n this.resetSource.next(true);\n }\n}\n","import { ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { SidebarMenuService } from './sidebar-menu.service';\nimport { SpiderlyMenuItem } from './sidebar-menu.component';\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { SpiderlyFormControl } from '../../spiderly-form-control/spiderly-form-control';\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\nimport { AuthBaseService } from '../../../services/auth-base.service';\nimport { ApiSecurityService } from '../../../services/api.service.security';\nimport { ConfigBaseService } from '../../../services/config-base.service';\nimport { CommonModule } from '@angular/common';\nimport { SpiderlyControlsModule } from '../../../controls/spiderly-controls.module';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { Namebook } from '../../../entities/namebook';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[menuitem]',\n templateUrl: './menuitem.component.html',\n animations: [\n trigger('children', [\n state('collapsed', style({\n height: '0'\n })),\n state('expanded', style({\n height: '*'\n })),\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ],\n imports: [\n CommonModule,\n RouterModule,\n TranslocoDirective,\n SpiderlyControlsModule,\n ]\n})\nexport class MenuitemComponent implements OnInit, OnDestroy {\n\n @Input() item: SpiderlyMenuItem;\n\n @Input() index!: number;\n\n @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;\n\n @Input() parentKey!: string;\n\n active = false;\n\n private menuSourceSubscription: Subscription;\n\n private menuResetSubscription: Subscription;\n\n private permissionSubscription: Subscription | null = null;\n\n key: string = \"\";\n\n selectedPartner = new SpiderlyFormControl<Namebook>(null, { updateOn: 'change' });\n\n partnerOptions: Namebook[];\n\n constructor(\n public layoutService: LayoutBaseService, \n private cd: ChangeDetectorRef, \n public router: Router, \n private menuService: SidebarMenuService, \n private authService: AuthBaseService,\n private apiService: ApiSecurityService,\n private config: ConfigBaseService\n ) {\n this.menuSourceSubscription = this.menuService.menuSource$.subscribe(value => {\n Promise.resolve(null).then(() => {\n if (value.routeEvent) {\n this.active = (value.key === this.key || value.key.startsWith(this.key + '-')) ? true : false;\n }\n else {\n if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {\n this.active = false;\n }\n }\n });\n });\n\n this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {\n this.active = false;\n });\n\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(params => {\n if (this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n });\n }\n\n ngOnInit() {\n this.item.visible = this.item.visible ?? true;\n\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n \n if (this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\n if (this.item && typeof this.item.hasPermission === 'function') {\n this.item.visible = this.item.hasPermission(currentUserPermissionCodes);\n }\n });\n }\n\n updateActiveStateFromRoute() {\n let activeRoute = this.router.isActive(this.item.routerLink[0], { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' });\n\n if (activeRoute) {\n this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });\n }\n }\n\n itemClick(event: Event) {\n // avoid processing disabled items\n if (this.item.disabled || event === null) {\n event.preventDefault();\n return;\n }\n\n // execute command\n if (this.item.command) {\n this.item.command({ originalEvent: event, item: this.item });\n }\n\n // toggle active state\n if (this.item.items) {\n this.active = !this.active;\n }\n \n this.menuService.onMenuStateChange({ key: this.key });\n }\n\n get submenuAnimation() {\n return this.root ? 'expanded' : (this.active ? 'expanded' : 'collapsed');\n }\n\n @HostBinding('class.active-menuitem') \n get activeClass() {\n return this.active && !this.root;\n }\n\n //#region HACK: Partner\n\n searchPartners(event: AutoCompleteCompleteEvent) {\n this.layoutService.searchPartners(event).subscribe(po => {\n this.partnerOptions = po; \n })\n }\n\n partnersAutocompleteButtonClick = async () => {\n this.layoutService.partnersAutocompleteButtonClick(this.selectedPartner.value);\n }\n\n //#endregion\n\n ngOnDestroy() {\n if (this.menuSourceSubscription) {\n this.menuSourceSubscription.unsubscribe();\n }\n\n if (this.menuResetSubscription) {\n this.menuResetSubscription.unsubscribe();\n }\n\n if (this.permissionSubscription) {\n this.permissionSubscription.unsubscribe();\n }\n }\n}\n","<ng-container *transloco=\"let t\">\n <div *ngIf=\"root && item.visible === true\" class=\"layout-menuitem-root-text\">{{item.label}}</div>\n <a *ngIf=\"(!item.routerLink || item.items) && item.visible === true\" [attr.href]=\"item.url\" (click)=\"itemClick($event)\"\n [ngClass]=\"item.styleClass\" [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n </a>\n <a *ngIf=\"(item.routerLink && !item.items) && item.visible === true\" (click)=\"itemClick($event)\" [ngClass]=\"item.styleClass\"\n [routerLink]=\"item.routerLink\" routerLinkActive=\"active-route\" [routerLinkActiveOptions]=\"item.routerLinkActiveOptions||{ paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\n [fragment]=\"item.fragment\" [queryParamsHandling]=\"item.queryParamsHandling\" [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\" [replaceUrl]=\"item.replaceUrl\" [state]=\"item.state\" [queryParams]=\"item.queryParams\"\n [attr.target]=\"item.target\" tabindex=\"0\" pRipple>\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{item.label}}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n </a>\n\n <ul *ngIf=\"item.items && item.visible === true\" [@children]=\"submenuAnimation\">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeStyleClass\"></li>\n </ng-template>\n </ul>\n\n <!-- Delete this in the future iterations, make link to partner in /partners page -->\n <spiderly-autocomplete\n *ngIf=\"item.showPartnerDialog\"\n [control]=\"selectedPartner\"\n [options]=\"partnerOptions\"\n (onTextInput)=\"searchPartners($event)\"\n label=\"\"\n [placeholder]=\"t('SelectThePartner')\"\n [showAddon]=\"true\"\n (onButtonClick)=\"partnersAutocompleteButtonClick()\"\n addonIcon=\"pi pi-check\"\n [emptyMessage]=\"t('LeftCornerPartnersEmptyMessage')\"\n class=\"mobile-stay-open\"\n ></spiderly-autocomplete>\n \n</ng-container>","import { TranslocoService } from '@jsverse/transloco';\nimport { Input, OnInit } from '@angular/core';\nimport { Component } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\nimport { AuthBaseService } from '../../../services/auth-base.service';\nimport { ConfigBaseService } from '../../../services/config-base.service';\nimport { MenuitemComponent } from './menuitem.component';\nimport { CommonModule } from '@angular/common';\n\nexport interface SpiderlyMenuItem extends MenuItem {\n hasPermission?: (permissionCodes: string[]) => boolean;\n showPartnerDialog?: boolean; \n}\n\n@Component({\n selector: 'sidebar-menu', // FT: Don't change selector to 'menu', because other style will apply to it\n templateUrl: './sidebar-menu.component.html',\n imports: [\n CommonModule,\n MenuitemComponent\n ]\n})\nexport class SidebarMenuComponent implements OnInit {\n @Input() menu: SpiderlyMenuItem[];\n\n constructor(\n public layoutService: LayoutBaseService, \n private authService: AuthBaseService,\n private translocoService: TranslocoService,\n private config: ConfigBaseService\n ) {\n \n }\n\n ngOnInit() {\n }\n\n\n ngOnDestroy(): void {\n\n }\n\n}\n","<ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menu; let i = index;\">\n <li menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"gray-separator\" style=\"margin-top: 11px;\"></li>\n </ng-container>\n</ul>\n","import { Component, ElementRef, Input } from '@angular/core';\nimport { SidebarMenuComponent, SpiderlyMenuItem } from './sidebar-menu.component';\n\n@Component({\n selector: 'sidebar',\n templateUrl: './sidebar.component.html',\n imports: [\n SidebarMenuComponent\n ]\n})\nexport class AppSidebarComponent {\n @Input() menu: SpiderlyMenuItem[];\n\n constructor(public el: ElementRef) { \n }\n\n ngOnInit(){\n }\n}\n\n"," <sidebar-menu [menu]=\"menu\"></sidebar-menu>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { AvatarModule } from 'primeng/avatar';\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\nimport { UserBase } from '../../../entities/security-entities';\nimport { filter, Subscription } from 'rxjs';\nimport { AuthBaseService } from '../../../services/auth-base.service';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { BadgeModule } from 'primeng/badge';\nimport { SpiderlyButtonComponent } from \"../../spiderly-buttons/spiderly-button/spiderly-button.component\";\nimport { ConfigBaseService } from '../../../services/config-base.service';\n\n@Component({\n selector: 'spiderly-profile-avatar',\n templateUrl: './profile-avatar.component.html',\n styleUrl: './profile-avatar.component.scss',\n imports: [\n CommonModule,\n RouterModule,\n AvatarModule,\n BadgeModule,\n SpiderlyButtonComponent,\n TranslocoDirective,\n]\n})\nexport class ProfileAvatarComponent {\n @Input() isSideMenuLayout = true;\n @Input() routeOnLargeProfileAvatarClick = true;\n @Input() showLoginButton = true;\n @Input() routeToLoginPage = true;\n @Input() loginButtonOutlined = false;\n @Input() loginButtonSeverity: 'success' | 'info' | 'warn' | 'danger' | 'help' | 'primary' | 'secondary' | 'contrast' | null | undefined = 'primary';\n @Input() loginButtonSize: 'small' | 'large' | undefined;\n @Output() onLoginButtonClick = new EventEmitter();\n @Input() menuItems: ProfileAvatarModalMenuItem[] = [];\n\n private initTopBarSubscription: Subscription | null = null;\n\n currentUser: UserBase;\n userProfilePath: string;\n unreadNotificationsCount: number;\n avatarLabel: string;\n showProfileIcon = false;\n\n notificationMenuItem: ProfileAvatarModalMenuItem =\n {\n label: this.translocoService.translate('Notifications'),\n icon: 'pi-bell',\n showNotificationBadge: true,\n onClick: () => {\n this.router.navigateByUrl(`/notifications`);\n },\n };\n\n @ViewChild('topbarmenu') menu!: ElementRef;\n\n @ViewChild('topbarprofiledropdownmenubutton') topbarProfileDropdownMenuButton!: ElementRef;\n\n constructor(\n public layoutService: LayoutBaseService, \n private authService: AuthBaseService, \n protected router: Router,\n private translocoService: TranslocoService,\n public config: ConfigBaseService,\n ) { \n }\n\n async ngOnInit(){\n if (this.menuItems.length === 0) {\n this.menuItems = [\n {\n label: this.translocoService.translate('YourProfile'),\n icon: 'pi-user',\n showSeparator: true,\n onClick: () => {\n this.routeToUserPage();\n }\n },\n this.notificationMenuItem,\n {\n label: this.translocoService.translate('Logout'),\n icon: 'pi-sign-out',\n showSeparator: true,\n onClick: () => {\n this.authService.logout();\n }\n }\n ];\n }\n\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.layoutService.state.profileDropdownSidebarVisible = false;\n });\n\n this.onAfterNgOnInit();\n }\n\n onAfterNgOnInit = () => {\n this.initTopBarSubscription = this.layoutService.initTopBarData().subscribe(initTopBarData => {\n this.userProfilePath = initTopBarData.userProfilePath;\n this.unreadNotificationsCount = initTopBarData.unreadNotificationsCount;\n this.notificationMenuItem.showNotificationBadge = initTopBarData.unreadNotificationsCount > 0;\n this.showProfileIcon = initTopBarData.showProfileIcon;\n this.currentUser = initTopBarData.currentUser;\n this.avatarLabel = initTopBarData.currentUser?.email.charAt(0).toLocaleUpperCase();\n });\n }\n\n onDocumentClick(event: any) {\n if (\n !this.menu.nativeElement.contains(event.target) \n ) {\n if (this.layoutService.state.profileDropdownSidebarVisible == true) {\n this.layoutService.state.profileDropdownSidebarVisible = false;\n }\n }\n }\n\n routeToUserPage(){\n if (this.routeOnLargeProfileAvatarClick) {\n this.router.navigateByUrl(this.userProfilePath);\n }\n }\n\n loginButtonClick() {\n if (this.routeToLoginPage) {\n this.router.navigateByUrl(this.config.loginSlug);\n }\n \n this.onLoginButtonClick.next(null);\n }\n\n ngOnDestroy(): void {\n if (this.initTopBarSubscription) {\n this.initTopBarSubscription.unsubscribe();\n }\n }\n\n}\n\nexport interface ProfileAvatarModalMenuItem {\n label?: string;\n icon?: string;\n showSeparator?: boolean;\n onClick?: () => void;\n showNotificationBadge?: boolean;\n}","<ng-container *transloco=\"let t\">\n <div\n *ngIf=\"this.currentUser != null\"\n #topbarmenu\n >\n <div\n #topbarprofiledropdownmenubutton\n (click)=\"layoutService.showProfileDropdownSidebar()\"\n >\n <p-avatar\n *ngIf=\"showProfileIcon\"\n [label]=\"avatarLabel\"\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'cursor': 'pointer', 'width': '34px', 'height': '34px', 'font-size': '21px' }\"\n pBadge \n [badgeStyleClass]=\"'p-badge-danger'\"\n [badgeDisabled]=\"unreadNotificationsCount == 0 || unreadNotificationsCount == null\"\n [value]=\"unreadNotificationsCount\"\n />\n </div>\n <div\n #topbarprofiledropdownmenu\n (document:click)=\"onDocumentClick($event)\"\n >\n <div \n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\" \n style=\"width: 280px; position: absolute; padding: 15px; background: var(--p-content-background);\" \n class=\"card\"\n [ngClass]=\"{\n 'side-menu-profile-dialog': isSideMenuLayout,\n 'top-menu-profile-dialog': !isSideMenuLayout,\n }\n \"\n >\n <div style=\"display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 10px;\">\n <p-avatar\n [label]=\"avatarLabel\"\n size=\"xlarge\"\n [style]=\"{ 'background-color': 'var(--p-primary-color)', 'color': '#fff', 'margin': 'auto', 'cursor': routeOnLargeProfileAvatarClick ? 'pointer' : '' }\"\n (click)=\"routeToUserPage()\"\n />\n <div style=\"font-size: 15px;\">{{currentUser?.email}}</div>\n </div>\n <div style=\"margin-top: 15px;\">\n <div *ngFor=\"let item of menuItems\" [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\">\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\n <div (click)=\"item.onClick()\" class=\"hover-card\" style=\"display: flex; align-items: center; gap: 8px; margin-top: 5px;\">\n <i \n class=\"pi pi-fw {{item.icon}}\" \n style=\"font-size: 16px; position: relative;\"\n >\n <span *ngIf=\"item.showNotificationBadge && unreadNotificationsCount != 0\" class=\"badge\"></span>\n </i>\n <div style=\"font-size: 15px;\"> {{item.label}} </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div *ngIf=\"this.currentUser == null && this.showLoginButton\">\n <spiderly-button \n [label]=\"t('Login')\" \n (onClick)=\"loginButtonClick()\" \n icon=\"pi pi-sign-in\" \n [outlined]=\"loginButtonOutlined\" \n [severity]=\"loginButtonSeverity\"\n [size]=\"loginButtonSize\"\n ></spiderly-button>\n </div>\n</ng-container>","import { ConfigBaseService } from '../../../services/config-base.service';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { LayoutBaseService } from '../../../services/app-layout-base.service';\nimport { CommonModule } from '@angular/common';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { ProfileAvatarComponent } from '../profile-avatar/profile-avatar.component';\n\n@Component({\n selector: 'spiderly-sidemenu-topbar',\n templateUrl: './sidemenu-topbar.component.html',\n imports: [\n CommonModule,\n RouterModule,\n AvatarModule,\n BadgeModule,\n ProfileAvatarComponent,\n ]\n})\nexport class SideMenuTopBarComponent {\n companyName = this.config.companyName;\n @ViewChild('menubutton') menuButton!: ElementRef;\n\n constructor(\n public layoutService: LayoutBaseService, \n protected router: Router,\n private config: ConfigBaseService,\n private translocoService: TranslocoService,\n ) { \n }\n\n async ngOnInit(){\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.layoutService.state.profileDropdownSidebarVisible = false;\n });\n }\n\n}","<div class=\"layout-topbar\">\n <a class=\"layout-topbar-logo\" routerLink=\"/\">\n <span>{{companyName?.toLocaleUpperCase()}}</span>\n </a>\n\n <button\n #menubutton\n class=\"p-link layout-menu-button layout-topbar-button\"\n (click)=\"layoutService.onMenuToggle()\"\n >\n <i class=\"pi pi-bars\"></i>\n </button>\n\n <div class=\"profile-button\">\n <spiderly-profile-avatar\n ></spiderly-profile-avatar>\n </div>\n\n</div>\n ","import { ConfigBaseService } from '../../../services/config-base.service';\nimport { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { AvatarModule } from 'primeng/avatar';\nimport { ProfileAvatarComponent } from \"../profile-avatar/profile-avatar.component\";\nimport { MenubarModule } from \"primeng/menubar\";\nimport { SpiderlyMenuItem } from '../sidebar/sidebar-menu.component';\nimport { AuthBaseService } from '../../../services/auth-base.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'spiderly-topbar',\n templateUrl: './topbar.component.html',\n styleUrl: './topbar.component.scss',\n imports: [\n CommonModule,\n RouterModule,\n MenubarModule,\n AvatarModule,\n ProfileAvatarComponent,\n]\n})\nexport class TopBarComponent {\n @Input() menu: SpiderlyMenuItem[] = [];\n companyName = this.config.companyName;\n logoPath = this.config.logoPath;\n /**\n * Determines whether to show background color on hover\n * for root menu items. Defaults to `false`.\n */\n @Input() showHoverBgOnRootItems: boolean = false;\n\n private permissionSubscription: Subscription | null = null;\n\n constructor(\n private authService: AuthBaseService,\n private config: ConfigBaseService,\n ) {\n\n }\n\n ngOnInit() {\n this.permissionSubscription = this.authService.currentUserPermissionCodes$.subscribe((currentUserPermissionCodes: string[]) => {\n this.hideMenuItemsBasedOnPermissions(this.menu, currentUserPermissionCodes);\n });\n }\n\n hideMenuItemsBasedOnPermissions = (menu: SpiderlyMenuItem[], currentUserPermissionCodes: string[]) => {\n menu.forEach(menuItem => {\n if (menuItem.items) {\n this.hideMenuItemsBasedOnPermissions(menuItem.items, currentUserPermissionCodes)\n }\n if (typeof menuItem.hasPermission === 'function') {\n menuItem.visible = menuItem.hasPermission(currentUserPermissionCodes) ?? false;\n }\n });\n }\n\n ngOnDestroy() {\n if (this.permissionSubscription) {\n this.permissionSubscription.unsubscribe();\n }\n }\n\n}\n","<div class=\"topbar-wrapper\">\n <nav class=\"topbar {{showHoverBgOnRootItems ? '' : 'show-hover-bg-on-root-items'}}\">\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\n <ng-template #start>\n <img style=\"margin-left: 11px; cursor: pointer;\" width=\"45\" height=\"45\" routerLink=\"/\" [src]=\"logoPath\" alt=\"Logo\">\n </ng-template>\n <ng-template #end>\n <div style=\"margin-right: 11px; display: flex; gap: 10px; align-items: center; position: relative;\">\n <div>\n <ng-content select=\"[ACTIONS]\"></ng-content>\n </div>\n <spiderly-profile-avatar [isSideMenuLayout]=\"false\"></spiderly-profile-avatar>\n </div>\n </ng-template>\n </p-menubar>\n </nav>\n</div>","import { Component, ElementRef, Input, OnDestroy, Renderer2, ViewChild } from '@angular/core';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, Subscription } from 'rxjs';\nimport { AppSidebarComponent } from './sidebar/sidebar.component';\nimport { SideMenuTopBarComponent } from './sidemenu-topbar/sidemenu-topbar.component';\nimport { LayoutBaseService } from '../../services/app-layout-base.service';\nimport { SpiderlyMenuItem } from './sidebar/sidebar-menu.component';\nimport { CommonModule } from '@angular/common';\nimport { FooterComponent } from '../footer/footer.component';\nimport { TopBarComponent } from './topbar/topbar.component';\n\n@Component({\n selector: 'spiderly-layout',\n templateUrl: './layout.component.html',\n imports: [\n CommonModule,\n RouterModule,\n AppSidebarComponent,\n FooterComponent,\n SideMenuTopBarComponent,\n TopBarComponent,\n]\n})\nexport class SpiderlyLayoutComponent implements OnDestroy {\n @Input() menu: SpiderlyMenuItem[] = [];\n sideMenu: SpiderlyMenuItem[] = [];\n topMenu: SpiderlyMenuItem[] = [];\n @Input() isSideMenuLayout: boolean = true;\n /**\n * Determines whether to show background color on hover\n * for root top menu items. Defaults to `false`.\n */\n @Input() showHoverBgOnRootTopMenuItems: boolean = false;\n\n /**\n * default max-width for the main content area.\n */\n \n @Input() maxWidth: string = '1100px';\n \n overlayMenuOpenSubscription: Subscription;\n\n menuOutsideClickListener: any;\n\n profileMenuOutsideClickListener: any;\n\n @ViewChild(AppSidebarComponent) appSidebar!: AppSidebarComponent;\n\n @ViewChild(SideMenuTopBarComponent) sidemenuTopbar!: SideMenuTopBarComponent;\n\n @ViewChild('topbarmenu') topbarmenu!: ElementRef;\n\n constructor(\n protected layoutService: LayoutBaseService, \n protected renderer: Renderer2, \n protected router: Router,\n ) {\n this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(\n this.appSidebar?.el.nativeElement.isSameNode(event.target) || \n this.appSidebar?.el.nativeElement.contains(event.target) ||\n this.sidemenuTopbar?.menuButton?.nativeElement.isSameNode(event.target) || \n this.sidemenuTopbar?.menuButton?.nativeElement.contains(event.target) ||\n (event.target.closest('.p-autocomplete-items')) ||\n (event.target.closest('.p-autocomplete-clear-icon'))\n );\n \n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n\n if (!this.profileMenuOutsideClickListener) {\n this.profileMenuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(\n this.topbarmenu?.nativeElement.isSameNode(event.target) || \n this.topbarmenu?.nativeElement.contains(event.target)\n );\n\n if (isOutsideClicked) {\n this.hideProfileMenu();\n }\n });\n }\n\n if (this.layoutService.state.staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n\n this.router.events.pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this.hideMenu();\n this.hideProfileMenu();\n });\n }\n\n ngOnInit() {\n if (this.isSideMenuLayout) {\n this.sideMenu = [...this.menu];\n }\n else{\n this.topMenu = [...this.menu[0].items];\n }\n }\n\n hideMenu() {\n this.layoutService.state.overlayMenuActive = false;\n this.layoutService.state.staticMenuMobileActive = false;\n this.layoutService.state.menuHoverActive = false;\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n hideProfileMenu() {\n this.layoutService.state.profileSidebarVisible = false;\n if (this.profileMenuOutsideClickListener) {\n this.profileMenuOutsideClickListener();\n this.profileMenuOutsideClickListener = null;\n }\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n }\n else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n }\n else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' +\n 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n get containerClass() {\n return {\n 'layout-theme-light': this.layoutService.layoutConfig.colorScheme === 'light',\n 'layout-theme-dark': this.layoutService.layoutConfig.colorScheme === 'dark',\n 'layout-overlay': this.layoutService.layoutConfig.menuMode === 'overlay',\n 'layout-static': this.layoutService.layoutConfig.menuMode === 'static',\n 'layout-static-inactive': this.layoutService.state.staticMenuDesktopInactive && this.layoutService.layoutConfig.menuMode === 'static',\n 'layout-overlay-active': this.layoutService.state.overlayMenuActive,\n 'layout-mobile-active': this.layoutService.state.staticMenuMobileActive,\n 'p-input-filled': this.layoutService.layoutConfig.inputStyle === 'filled',\n 'p-ripple-disabled': !this.layoutService.layoutConfig.ripple\n }\n }\n\n ngOnDestroy() {\n if (this.overlayMenuOpenSubscription) {\n this.overlayMenuOpenSubscription.unsubscribe();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n\n this.onAfterNgDestroy();\n }\n\n onAfterNgDestroy = () => {}\n \n}\n\n","<div *ngIf=\"isSideMenuLayout\" class=\"layout-wrapper\" [ngClass]=\"containerClass\">\n <spiderly-sidemenu-topbar></spiderly-sidemenu-topbar>\n <div class=\"layout-sidebar\">\n <sidebar [menu]=\"sideMenu\"></sidebar>\n </div>\n <div class=\"layout-main-container\">\n <div class=\"layout-main\">\n <router-outlet></router-outlet>\n </div>\n <footer></footer>\n </div>\n <div class=\"layout-mask\"></div>\n</div>\n\n<div *ngIf=\"isSideMenuLayout === false\">\n <spiderly-topbar [menu]=\"topMenu\" [showHoverBgOnRootItems]=\"showHoverBgOnRootTopMenuItems\">\n <ng-content ACTIONS select=\"[ACTIONS]\"></ng-content>\n </spiderly-topbar>\n <main [style.max-width]=\"maxWidth\" style=\"margin: auto; padding: 18px;\">\n <router-outlet></router-outlet>\n </main>\n</div>","import { BaseEntity } from \"./base-entity\";\n\n// FT HACK: Fake class, because of api imports\nexport class Codebook extends BaseEntity\n{\n code?: string;\n displayName?: string;\n \n constructor(\n {\n code,\n displayName,\n }:{\n code?: string;\n displayName?: string;\n } = {}\n ) {\n super();\n\n this.code = code;\n this.displayName = displayName;\n }\n\n static readonly typeName = 'Codebook' as const;\n}","import { BaseEntity } from \"./base-entity\";\n\nexport class LastMenuIconIndexClicked extends BaseEntity\n{\n index?: number;\n\n constructor(\n {\n index,\n }:{\n index?: number;\n } = {}\n ) {\n super(); \n\n this.index = index;\n }\n\n static readonly typeName = 'LastMenuIconIndexClicked' as const;\n}","import { BaseEntity } from \"../entities/base-entity\";\n\nexport class LazyLoadSelectedIdsResult extends BaseEntity\n{\n selectedIds?: number[] = []; // FT: Only for showing checkboxes, we will not send this to the backend\n totalRecordsSelected?: number = 0;\n\n constructor(\n {\n selectedIds,\n totalRecordsSelected,\n }:{\n selectedIds?: number[];\n totalRecordsSelected?: number;\n } = {}\n ) {\n super();\n\n this.selectedIds = selectedIds;\n this.totalRecordsSelected = totalRecordsSelected;\n }\n\n static readonly typeName = 'LazyLoadSelectedIdsResult' as const;\n}","export class MenuChangeEvent {\n key: string;\n routeEvent?: boolean;\n}","export class MimeTypes {\n private constructor(public readonly value: string) {}\n\n static Pdf = new MimeTypes(\"application/pdf\");\n static Zip = new MimeTypes(\"application/zip\");\n\n static Jpeg = new MimeTypes(\"image/jpeg\");\n static Png = new MimeTypes(\"image/png\");\n static Svg = new MimeTypes(\"image/svg\");\n static Webp = new MimeTypes(\"image/webp\");\n\n toString() {\n return this.value;\n }\n}","import { BaseEntity } from \"../entities/base-entity\";\n\nexport class PrimengOption extends BaseEntity\n{\n label?: string;\n code?: any; // Can't be value: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294\n \n constructor(\n {\n label,\n code,\n }:{\n label?: string;\n code?: any;\n } = {}\n ) {\n super();\n\n this.label = label;\n this.code = code;\n }\n\n static readonly typeName = 'PrimengOption' as const;\n}","import { BaseEntity } from \"../entities/base-entity\";\n\n// FT HACK: Fake class, because of api imports\nexport class SimpleSaveResult extends BaseEntity\n{\n id?: string;\n \n constructor(\n {\n id,\n }:{\n id?: string;\n } = {}\n ) {\n super();\n\n this.id = id;\n }\n\n static typeName = 'SimpleSaveResult' as const;\n}","export class FilterSortMeta\n{\n field: string;\n order: number;\n\n constructor(\n {\n field,\n order,\n }: {\n field?: string;\n order?: number;\n } = {}\n ) {\n this.field = field as string;\n this.order = order as number;\n }\n\n static schema = {\n field: {\n type: 'string',\n },\n order: {\n type: 'number',\n },\n } as const;\n\n static readonly typeName = 'FilterSortMeta' as const;\n}","import { BaseEntity } from \"./base-entity\";\nimport { FilterRule } from \"./filter-rule\";\nimport { FilterSortMeta } from \"./filter-sort-meta\";\n\nexport class Filter<T extends BaseEntity = any> extends BaseEntity {\n filters?: { [K in keyof T]?: FilterRule[] };\n first?: number;\n rows?: number;\n sortField?: string;\n sortOrder?: number;\n multiSortMeta?: FilterSortMeta[];\n additionalFilterIdInt?: number;\n additionalFilterIdLong?: number;\n\n constructor(\n {\n filters,\n first,\n rows,\n sortField,\n sortOrder,\n multiSortMeta,\n additionalFilterIdInt,\n additionalFilterIdLong,\n }: {\n filters?: { [K in keyof T]?: FilterRule[] };\n first?: number;\n rows?: number;\n sortField?: string;\n sortOrder?: number;\n multiSortMeta?: FilterSortMeta[];\n additionalFilterIdInt?: number;\n additionalFilterIdLong?: number;\n } = {}\n ) {\n super();\n\n this.filters = filters;\n this.first = first;\n this.rows = rows;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n this.multiSortMeta = multiSortMeta;\n this.additionalFilterIdInt = additionalFilterIdInt;\n this.additionalFilterIdLong = additionalFilterIdLong;\n }\n\n static schema = {\n filters: {\n type: 'Object',\n // Note: 'filters' is a dynamic map (Dictionary), so we usually treat it as a generic Object\n // unless strict typing is required for the inner FilterRule[] values by the serializer.\n },\n first: {\n type: 'number',\n },\n rows: {\n type: 'number',\n },\n sortField: {\n type: 'string',\n },\n sortOrder: {\n type: 'number',\n },\n multiSortMeta: {\n type: 'FilterSortMeta[]',\n get nestedConstructor() { return FilterSortMeta; },\n },\n additionalFilterIdInt: {\n type: 'number',\n },\n additionalFilterIdLong: {\n type: 'number',\n },\n } as const;\n\n static readonly typeName = 'Filter' as const;\n}","import { MatchModeCodes } from \"../enums/match-mode-enum-codes\";\n\n/**\n * Represents a filter rule used for querying or filtering data collections.\n * \n * The `FilterRule` class is a generic structure that defines a single filtering condition,\n * including the match mode (comparison operator), the value to compare, and an optional logical operator.\n * \n * The allowed match modes are determined by the type parameter `T`:\n * - For `string`: supports `Contains`, `StartsWith`, and `Equals`.\n * - For `boolean`: supports `Equals`.\n * - For `Date`: supports `Equals`, `GreaterThan`, and `LessThan`.\n * - For `number`: supports `Equals`, `GreaterThan`, `LessThan`, and `In`.\n * - For other types: allows any value from `MatchModeCodes`.\n * \n * @template T The type of the value to filter by.\n */\nexport class FilterRule<T=any>\n{\n matchMode: AllowedMatchModes<T>;\n value: T;\n operator?: string;\n}\n\ntype AllowedMatchModes<T> = \n T extends string ? MatchModeCodes.Contains | MatchModeCodes.StartsWith | MatchModeCodes.Equals :\n T extends boolean ? MatchModeCodes.Equals :\n T extends Date ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan :\n T extends number ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan | MatchModeCodes.In :\n MatchModeCodes;","export class PaginatedResult<T = any> {\n data?: T[];\n totalRecords: number;\n}\n ","export enum SecurityPermissionCodes\n{\n\tReadUser = \"ReadUser\",\n\tUpdateUser = \"UpdateUser\",\n\tInsertUser = \"InsertUser\",\n\tDeleteUser = \"DeleteUser\",\n\tReadRole = \"ReadRole\",\n\tUpdateRole = \"UpdateRole\",\n\tInsertRole = \"InsertRole\",\n\tDeleteRole = \"DeleteRole\",\n\tReadPermission = \"ReadPermission\",\n\tUpdatePermission = \"UpdatePermission\",\n\tInsertPermission = \"InsertPermission\",\n\tDeletePermission = \"DeletePermission\",\n}\n","export enum VerificationTypeCodes\n{\n Login = 0,\n\tRegistration = 1,\n}","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { Observable, map } from 'rxjs';\nimport { AuthBaseService } from '../services/auth-base.service';\nimport { ConfigBaseService } from '../services/config-base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n private authService: AuthBaseService, \n private router: Router,\n private config: ConfigBaseService\n ) {\n\n }\n\n canActivate(): Observable<boolean> {\n return this.checkAuth();\n }\n\n private checkAuth(): Observable<boolean> {\n return this.authService.user$.pipe(\n map((user) => {\n if (user) {\n return true;\n } else {\n // const returnUrl = this.router.getCurrentNavigation()?.extractedUrl.toString() || '/';\n // this.router.navigate(['login'], {\n // queryParams: { returnUrl },\n // });\n this.router.navigate([this.config.loginSlug]);\n return false;\n }\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { Observable, map } from 'rxjs';\nimport { AuthBaseService } from '../services/auth-base.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotAuthGuard implements CanActivate {\n constructor(\n private authService: AuthBaseService, \n ) {\n\n }\n\n canActivate(): Observable<boolean> {\n return this.checkAuth();\n }\n\n private checkAuth(): Observable<boolean> {\n return this.authService.user$.pipe(\n map((user) => {\n if (user) {\n this.authService.navigateToDashboard();\n return false;\n } \n else {\n return true;\n }\n })\n );\n }\n}\n","import { TranslocoService } from '@jsverse/transloco';\nimport { ErrorHandler, Injectable } from '@angular/core';\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ConfigBaseService } from '../services/config-base.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SpiderlyErrorHandler implements ErrorHandler {\n constructor(\n private messageService: SpiderlyMessageService, \n private translocoService: TranslocoService, \n private config: ConfigBaseService,\n ) {\n\n }\n\n handleError(error: any): void {\n if(this.config.production == false){\n console.error(error);\n }\n\n if(error instanceof HttpErrorResponse == false){\n this.messageService.errorMessage(\n this.translocoService.translate('UnexpectedErrorDetails'),\n this.translocoService.translate('UnexpectedErrorTitle'),\n );\n }\n\n }\n}\n","import { HttpEvent, HttpInterceptorFn } from \"@angular/common/http\";\nimport { inject } from \"@angular/core\";\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport { Observable, finalize } from \"rxjs\";\n\nexport const httpLoadingInterceptor: HttpInterceptorFn = (req, next) => {\n const spinner = inject(NgxSpinnerService);\n \n const shouldSkipSpinner = req.params.has('X-Skip-Spinner'); // Using this for multiautocomplete, autocomplete, dropdown, table etc...\n\n if (!shouldSkipSpinner)\n spinner.show();\n\n return next(req).pipe(\n finalize(() => {\n if (!shouldSkipSpinner){\n spinner.hide();\n }\n })\n ) as Observable<HttpEvent<any>>;\n}","import { HttpEvent, HttpResponse, HttpInterceptorFn, HttpRequest, HttpParams } from '@angular/common/http';\nimport { tap } from 'rxjs';\n\nexport const jsonHttpInterceptor: HttpInterceptorFn = (req, next) => {\n const cleanedBody = getCleanRequestBody(req.body);\n const clonedRequest: HttpRequest<any> = req.clone({\n body: cleanedBody\n });\n\n return next(clonedRequest)\n .pipe(\n tap((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n convertToDate(event.body);\n }\n }\n ));\n}\n\nconst getCleanRequestBody = (obj: unknown): unknown => {\n if (\n obj === null || \n obj === undefined ||\n obj instanceof FormData || \n obj instanceof Blob || \n obj instanceof File ||\n obj instanceof ArrayBuffer\n ) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(item => getCleanRequestBody(item));\n }\n\n if (obj instanceof Date) {\n return obj.toISOString();\n }\n\n if (typeof obj === 'object') {\n const newObj: Record<string, unknown> = {};\n for (const key of Object.keys(obj)) {\n newObj[key] = getCleanRequestBody((obj as any)[key]);\n }\n return newObj;\n }\n\n return obj;\n};\n\n/**\n * @see https://stackoverflow.com/a/54733846/1306679\n */\nconst convertToDate = (\n object: unknown,\n parent?: Record<string, unknown> | unknown[],\n key?: number | string,\n) => {\n if (object === null) return;\n \n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n\n if (typeof object === 'string') {\n if (dateRegex.test(object)) {\n const date = new Date(object);\n parent[key] = date;\n }\n } else if (Array.isArray(object)) {\n for (let i = 0; i < object.length; i++)\n convertToDate(object[i], object, i);\n } else {\n for (const key of Object.keys(object as Record<string, unknown>)) {\n convertToDate(\n (object as Record<string, unknown>)[key],\n object as Record<string, unknown>,\n key,\n );\n }\n }\n}","import { inject, PLATFORM_ID } from '@angular/core';\nimport { HttpInterceptorFn } from '@angular/common/http';\nimport { ConfigBaseService } from '../services/config-base.service';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const jwtInterceptor: HttpInterceptorFn = (req, next) => {\n const config = inject(ConfigBaseService);\n const platformId = inject(PLATFORM_ID);\n\n let accessToken = null;\n if (isPlatformBrowser(platformId)) {\n accessToken = localStorage.getItem('access_token');\n }\n\n const isApiUrl = req.url.startsWith(config.apiUrl);\n\n if (accessToken && isApiUrl) {\n req = req.clone({\n setHeaders: { Authorization: `Bearer ${accessToken}` },\n });\n }\n\n return next(req);\n}","import { inject } from '@angular/core';\nimport { HttpRequest, HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { ConfigBaseService } from '../services/config-base.service';\n\nexport const unauthorizedInterceptor: HttpInterceptorFn = (req, next) => {\n const messageService = inject(SpiderlyMessageService);\n const translocoService = inject(TranslocoService);\n const config = inject(ConfigBaseService);\n\n const handleAuthError = (err: HttpErrorResponse, request: HttpRequest<any>): Observable<any> => {\n if (!config.production) {\n console.error(err);\n }\n \n let errorResponse = err.error;\n\n if (request.responseType != 'json')\n errorResponse = JSON.parse(err.error);\n\n if (err.status == 0) {\n setTimeout(() => { // Had problem when the server is shut down, and try to refresh token, warning message didn't appear\n messageService.warningMessage( \n translocoService.translate('ServerLostConnectionDetails'),\n translocoService.translate('ServerLostConnectionTitle'),\n );\n }, 100);\n return of(err.message);\n } \n else if (err.status == 400) {\n messageService.warningMessage(\n errorResponse.message ?? translocoService.translate('BadRequestDetails'),\n translocoService.translate('Warning'),\n );\n\n return of(err.message);\n } \n else if (err.status == 401) {\n messageService.warningMessage(\n errorResponse.message ?? translocoService.translate('LoginRequired'),\n translocoService.translate('Warning'),\n );\n\n return of(err.message);\n } \n else if (err.status == 403) {\n messageService.warningMessage(\n translocoService.translate('PermissionErrorDetails'),\n translocoService.translate('PermissionErrorTitle'),\n );\n return of(err.message);\n } \n else if (err.status == 404) {\n messageService.warningMessage(\n translocoService.translate('NotFoundDetails'),\n translocoService.translate('NotFoundTitle'),\n );\n return of(err.message);\n } \n else if (err.status == 419) { // Access token expired\n return of(err.message);\n } \n else {\n messageService.errorMessage(\n translocoService.translate('UnexpectedErrorDetails'),\n translocoService.translate('UnexpectedErrorTitle'),\n );\n\n return of(err.message);\n }\n\n return throwError(err);\n }\n \n return next(req).pipe(\n catchError((err) => {\n return handleAuthError(err, req);\n })\n );\n}\n","import { Observable, of } from 'rxjs';\nimport { AuthBaseService } from './auth-base.service';\nimport { AuthResult } from '../entities/security-entities';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport function authInitializer(authService: AuthBaseService, platformId): () => Observable<AuthResult> {\n if (isPlatformBrowser(platformId)) {\n return () => {\n return authService.refreshToken();\n };\n }\n return () => {\n return of();\n };\n}","import { ConfigBaseService } from './config-base.service';\nimport { Injectable } from '@angular/core';\nimport { TranslocoLoader } from '@jsverse/transloco';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({ \n providedIn: 'root' \n})\nexport class SpiderlyTranslocoLoader implements TranslocoLoader {\n constructor(\n private http: HttpClient,\n private config: ConfigBaseService,\n ) {}\n\n getTranslation(lang: string) {\n return this.http.get(`${this.config.frontendUrl}/assets/i18n/${lang}.json`);\n }\n\n}","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: '[templateType]',\n})\nexport class SpiderlyTemplateTypeDirective<T> {\n @Input() templateType?: T;\n\n static ngTemplateContextGuard<T>(\n dir: SpiderlyTemplateTypeDirective<T>,\n ctx: unknown\n ): ctx is T {\n return true;\n }\n}","/*\n * Public API Surface of spiderly\n */\n\nexport * from './lib/controls/spiderly-autocomplete/spiderly-autocomplete.component';\nexport * from './lib/controls/spiderly-calendar/spiderly-calendar.component';\nexport * from './lib/controls/spiderly-checkbox/spiderly-checkbox.component';\nexport * from './lib/controls/spiderly-colorpicker/spiderly-colorpicker.component';\nexport * from './lib/controls/spiderly-dropdown/spiderly-dropdown.component';\nexport * from './lib/controls/spiderly-editor/spiderly-editor.component';\nexport * from './lib/controls/spiderly-file/spiderly-file.component';\nexport * from './lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';\nexport * from './lib/controls/spiderly-multiselect/spiderly-multiselect.component';\nexport * from './lib/controls/spiderly-number/spiderly-number.component';\nexport * from './lib/controls/spiderly-password/spiderly-password.component';\nexport * from './lib/controls/spiderly-textarea/spiderly-textarea.component';\nexport * from './lib/controls/spiderly-textbox/spiderly-textbox.component';\nexport * from './lib/controls/base-control';\nexport * from './lib/controls/base-autocomplete-control';\nexport * from './lib/controls/base-dropdown-control';\nexport * from './lib/controls/spiderly-controls.module';\n\nexport * from './lib/components/base-details/role-base-details.component'\nexport * from './lib/components/base-form/base-form copy';\nexport * from './lib/components/card-skeleton/card-skeleton.component';\nexport * from './lib/components/auth/partials/login-verification.component';\nexport * from './lib/components/auth/partials/verification-wrapper.component';\nexport * from './lib/components/auth/login/login.component';\nexport * from './lib/components/footer/footer.component';\nexport * from './lib/components/spiderly-buttons/google-button/google-button.component';\nexport * from './lib/components/index-card/index-card.component';\nexport * from './lib/components/info-card/info-card.component';\nexport * from './lib/components/not-found/not-found.component';\nexport * from './lib/components/required/required.component';\nexport * from './lib/components/spiderly-buttons/return-button/return-button.component';\nexport * from './lib/components/spiderly-buttons/spiderly-button/spiderly-button.component';\nexport * from './lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component';\nexport * from './lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base';\nexport * from './lib/components/spiderly-data-table/spiderly-data-table.component';\nexport * from './lib/components/spiderly-data-view/spiderly-data-view.component';\nexport * from './lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component';\nexport * from './lib/components/spiderly-form-control/spiderly-form-control';\nexport * from './lib/components/spiderly-panels/panel-body/panel-body.component';\nexport * from './lib/components/spiderly-panels/panel-footer/panel-footer.component';\nexport * from './lib/components/spiderly-panels/panel-header/panel-header.component';\nexport * from './lib/components/spiderly-panels/spiderly-card/spiderly-card.component';\nexport * from './lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component';\nexport * from './lib/components/spiderly-panels/spiderly-panels.module';\nexport * from './lib/components/layout/sidebar/sidebar-menu.component';\nexport * from './lib/components/layout/sidebar/menuitem.component';\nexport * from './lib/components/layout/sidebar/sidebar.component';\nexport * from './lib/components/layout/sidemenu-topbar/sidemenu-topbar.component';\nexport * from './lib/components/layout/layout.component';\nexport * from './lib/components/layout/topbar/topbar.component';\nexport * from './lib/components/layout/profile-avatar/profile-avatar.component';\n\nexport * from './lib/entities/base-entity';\nexport * from './lib/entities/codebook';\nexport * from './lib/entities/last-menu-icon-index-clicked';\nexport * from './lib/entities/lazy-load-selected-ids-result';\nexport * from './lib/entities/menuchangeevent';\nexport * from './lib/entities/mime-type';\nexport * from './lib/entities/namebook';\nexport * from './lib/entities/primeng-option';\nexport * from './lib/entities/security-entities';\nexport * from './lib/entities/simple-save-result';\nexport * from './lib/entities/spiderly-button';\nexport * from './lib/entities/filter';\nexport * from './lib/entities/filter-rule';\nexport * from './lib/entities/filter-sort-meta';\nexport * from './lib/entities/paginated-result';\nexport * from './lib/entities/init-company-auth-dialog-details';\nexport * from './lib/entities/init-top-bar-data';\nexport * from './lib/entities/is-authorized-for-save-event';\n\nexport * from './lib/enums/security-enums';\nexport * from './lib/enums/verification-type-codes';\nexport * from './lib/enums/match-mode-enum-codes';\n\nexport * from './lib/guards/auth.guard';\nexport * from './lib/guards/not-auth.guard';\n\nexport * from './lib/handlers/spiderly-error-handler';\n\nexport * from './lib/interceptors/http-loading.interceptor';\nexport * from './lib/interceptors/json-parser.interceptor';\nexport * from './lib/interceptors/jwt.interceptor';\nexport * from './lib/interceptors/unauthorized.interceptor';\n\nexport * from './lib/services/api.service.security';\nexport * from './lib/services/app-initializer';\nexport * from './lib/services/auth-base.service';\nexport * from './lib/services/base-form.service';\nexport * from './lib/services/config-base.service';\nexport * from './lib/services/helper-functions';\nexport * from './lib/services/spiderly-message.service';\nexport * from './lib/services/spiderly-transloco-loader';\nexport * from './lib/services/translate-labels-abstract.service';\nexport * from './lib/services/validator-abstract.service';\nexport * from './lib/services/app-layout-base.service';\n\nexport * from './lib/directives/template-type.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ValidatorAbstractService","i6","i4","i5","i2","i3","i1","i2.ConfigBaseService","i1.TranslateLabelsAbstractService","i3.SpiderlyMessageService","map","i1.ApiSecurityService","i3.BaseFormService","i4.AuthBaseService","i7.PanelHeaderComponent","i8.PanelBodyComponent","i9.PanelFooterComponent","i10.SpiderlyPanelComponent","i2.SpiderlyMessageService","i5.BaseFormService","i7.SpiderlyTextboxComponent","i8.SpiderlyButtonComponent","i9.PanelHeaderComponent","i10.PanelBodyComponent","i11.PanelFooterComponent","i12.SpiderlyPanelComponent","i1.AuthBaseService","i1.ConfigBaseService","i2.AuthBaseService","i6.AuthBaseService","i7.ConfigBaseService","i8","i9.SpiderlyTextboxComponent","i10.SpiderlyButtonComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","i10","i11","i13","i14","i15","i4.SpiderlyButtonComponent","i7","delay","i3.AuthBaseService","i1.LayoutBaseService","i3.SidebarMenuService","i5.ApiSecurityService","i6.ConfigBaseService","i8.SpiderlyAutocompleteComponent","i4.ConfigBaseService","filter","i5.ConfigBaseService","i3.ConfigBaseService","i1.SpiderlyMessageService","finalize","tap"],"mappings":"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"}
|