spiderly 19.5.2 → 19.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/fesm2022/spiderly.mjs +2580 -2414
- package/fesm2022/spiderly.mjs.map +1 -1
- package/lib/components/auth/partials/auth.component.d.ts +3 -3
- package/lib/components/layout/topbar/topbar.component.d.ts +3 -3
- package/lib/components/spiderly-buttons/google-button/google-button.component.d.ts +1 -1
- package/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.d.ts +1 -1
- package/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.d.ts +2 -2
- package/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.d.ts +2 -2
- package/lib/components/spiderly-data-table/spiderly-data-table.component.d.ts +6 -6
- package/lib/components/spiderly-data-view/spiderly-data-view.component.d.ts +1 -1
- package/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.d.ts +1 -1
- package/lib/controls/spiderly-file/spiderly-file.component.d.ts +10 -2
- package/lib/entities/codebook.d.ts +1 -1
- package/lib/entities/filter-rule.d.ts +1 -1
- package/lib/entities/filter.d.ts +3 -3
- package/lib/entities/image-dimensions-validation-result.d.ts +4 -0
- package/lib/entities/init-company-auth-dialog-details.d.ts +1 -1
- package/lib/entities/init-top-bar-data.d.ts +2 -2
- package/lib/entities/is-authorized-for-save-event.d.ts +1 -1
- package/lib/entities/last-menu-icon-index-clicked.d.ts +1 -1
- package/lib/entities/lazy-load-selected-ids-result.d.ts +1 -1
- package/lib/entities/namebook.d.ts +1 -1
- package/lib/entities/primeng-option.d.ts +1 -1
- package/lib/entities/security-entities.d.ts +9 -9
- package/lib/entities/simple-save-result.d.ts +1 -1
- package/lib/interceptors/http-loading.interceptor.d.ts +1 -1
- package/lib/services/config.service.base.d.ts +1 -1
- package/lib/services/helper-functions.d.ts +8 -8
- package/lib/services/validator-abstract.service.d.ts +3 -1
- package/package.json +1 -1
- package/public-api.d.ts +26 -25
- package/styles/components/info-card/info-card.component.scss +7 -7
- package/styles/components/layout/profile-avatar/profile-avatar.component.scss +5 -5
- package/styles/components/layout/topbar/topbar.component.scss +8 -8
- package/styles/components/spiderly-data-table/spiderly-data-table.component.scss +39 -39
- package/styles/components/spiderly-data-view/spiderly-data-view.component.scss +45 -47
- package/styles/components/spiderly-panels/panel-body/panel-body.component.scss +6 -6
- package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +15 -15
- package/styles/components/spiderly-panels/spiderly-panel/spiderly-panel.component.scss +59 -59
- package/styles/controls/base-controls.scss +12 -12
- package/styles/controls/spiderly-checkbox/spiderly-checkbox.component.scss +18 -18
- package/styles/styles/layout/_content.scss +8 -8
- package/styles/styles/layout/_footer.scss +8 -8
- package/styles/styles/layout/_main.scss +18 -18
- package/styles/styles/layout/_menu.scss +116 -109
- package/styles/styles/layout/_mixins.scss +8 -8
- package/styles/styles/layout/_preloading.scss +38 -37
- package/styles/styles/layout/_responsive.scss +78 -78
- package/styles/styles/layout/_spiderly-controls.scss +1 -1
- package/styles/styles/layout/_topbar.scss +211 -206
- package/styles/styles/layout/_typography.scss +35 -30
- package/styles/styles/layout/_utils.scss +15 -15
- package/styles/styles/layout/_variables.scss +796 -705
- package/styles/styles/layout/layout.scss +2 -2
- package/styles/styles/styles.scss +1 -1
|
@@ -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/errors/spiderly-error.ts","../../../projects/spiderly/src/lib/services/spiderly-message.service.ts","../../../projects/spiderly/src/lib/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.ts","../../../projects/spiderly/src/lib/components/base-form/base-form copy.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/entities/security-entities.ts","../../../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/components/auth/partials/verification-wrapper.component.ts","../../../projects/spiderly/src/lib/components/auth/partials/verification-wrapper.component.html","../../../projects/spiderly/src/lib/entities/init-company-auth-dialog-details.ts","../../../projects/spiderly/src/lib/services/config.service.base.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/services/auth.service.base.ts","../../../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.service.base.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/namebook.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/entities/is-authorized-for-save-event.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; padding: 1px\">\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\n pTemplate=\"header\"\n let-files\n let-chooseCallback=\"chooseCallback\"\n let-clearCallback=\"clearCallback\"\n let-uploadCallback=\"uploadCallback\"\n >\n <div\n class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\"\n >\n <div class=\"flex gap-2\">\n <spiderly-button\n [disabled]=\"disabled\"\n (onClick)=\"choose($event, chooseCallback)\"\n icon=\"pi pi-upload\"\n [rounded]=\"true\"\n [outlined]=\"true\"\n />\n </div>\n </div>\n </ng-template>\n <ng-template\n pTemplate=\"content\"\n let-files\n let-removeFileCallback=\"removeFileCallback\"\n >\n <div *ngIf=\"files.length > 0\">\n <div class=\"flex justify-content-center p-0 gap-5\">\n <div\n *ngFor=\"let file of files; let index = index\"\n class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\"\n style=\"justify-content: center; overflow: hidden\"\n >\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\n class=\"pi pi-file-excel\"\n style=\"color: green; margin-right: 4px\"\n ></i>\n <span class=\"file-name\">{{ file.name }}</span>\n </div>\n </div>\n <spiderly-button\n [disabled]=\"disabled\"\n icon=\"pi pi-times\"\n (onClick)=\"fileRemoved(removeFileCallback, index)\"\n [outlined]=\"true\"\n [rounded]=\"true\"\n severity=\"danger\"\n />\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\n class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"\n ></i>\n <p class=\"mt-4 mb-0\">{{ t(\"DragAndDropFilesHereToUpload\") }}</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n</ng-container>\n","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 {}","// 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 { 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\";\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 { 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.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 { 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 { 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 { BaseEntity } from \"./base-entity\";\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\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 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 SendLoginVerificationEmailResult extends BaseEntity\n{\n static readonly typeName = 'SendLoginVerificationEmailResult' as const;\n\n message?: string;\n\n constructor(\n {\n message\n }:{\n message?: string;\n } = {}\n ) {\n super();\n\n this.message = message;\n }\n\n static readonly schema = {\n message: {\n type: 'string',\n },\n } as const;\n}","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 { 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 { 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 { HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigServiceBase\n{\n production = false;\n apiUrl: string;\n frontendUrl = 'http://localhost:4200';\n GoogleClientId: string;\n companyName = 'Company Name';\n primaryColor = '#111b2c';\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 { AuthResult, ExternalProvider, Login, RefreshTokenRequest, SendLoginVerificationEmailResult, UserBase, VerificationTokenRequest } from '../entities/security-entities';\nimport { ConfigServiceBase } from './config.service.base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiSecurityService {\n\n constructor(\n protected http: HttpClient,\n protected config: ConfigServiceBase\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<SendLoginVerificationEmailResult> => {\n return this.http.post<SendLoginVerificationEmailResult>(`${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 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","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 { ConfigServiceBase } from './config.service.base';\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 AuthServiceBase 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: ConfigServiceBase,\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 { 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 { AuthServiceBase } from '../../../services/auth.service.base';\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: AuthServiceBase, \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 { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { TranslocoDirective } from \"@jsverse/transloco\";\nimport { Subscription } from \"rxjs\";\nimport { AuthServiceBase } from \"../../../services/auth.service.base\";\nimport { ConfigServiceBase } from \"../../../services/config.service.base\";\nimport { GoogleButtonComponent } from \"../../spiderly-buttons/google-button/google-button.component\";\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 = false;\n\n companyName: string;\n image: string;\n \n constructor(\n private config: ConfigServiceBase,\n private authService: AuthServiceBase,\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=\"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 { AuthServiceBase } from '../../../services/auth.service.base';\nimport { BaseFormService } from '../../../services/base-form.service';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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: AuthServiceBase, \n private config: ConfigServiceBase\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 this.baseFormService.showInvalidFieldsMessage();\n return;\n }\n\n this.authService.sendLoginVerificationEmail(this.loginFormGroup.getRawValue()).subscribe((result)=>{\n if (result.message) {\n this.messageService.successMessage(result.message);\n }\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 <!-- We are not loading anything from the server here so we don't need defer block -->\n <form [formGroup]=\"loginFormGroup\" style=\"margin-bottom: 16px;\">\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: Add skeleton -->\n }\n</ng-container>","import { Component } from '@angular/core';\nimport { ConfigServiceBase } from '../../services/config.service.base'\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: ConfigServiceBase\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 { ConfigServiceBase } from '../../services/config.service.base';\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: ConfigServiceBase\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 { AuthServiceBase } from './auth.service.base';\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 { ConfigServiceBase } from './config.service.base';\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 LayoutServiceBase 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: ConfigServiceBase,\n protected authService: AuthServiceBase\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 { LayoutServiceBase } from '../../../services/app-layout.service.base';\nimport { AuthServiceBase } from '../../../services/auth.service.base';\nimport { ApiSecurityService } from '../../../services/api.service.security';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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: LayoutServiceBase, \n private cd: ChangeDetectorRef, \n public router: Router, \n private menuService: SidebarMenuService, \n private authService: AuthServiceBase,\n private apiService: ApiSecurityService,\n private config: ConfigServiceBase\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 { LayoutServiceBase } from '../../../services/app-layout.service.base';\nimport { AuthServiceBase } from '../../../services/auth.service.base';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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: LayoutServiceBase, \n private authService: AuthServiceBase,\n private translocoService: TranslocoService,\n private config: ConfigServiceBase\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 { LayoutServiceBase } from '../../../services/app-layout.service.base';\nimport { UserBase } from '../../../entities/security-entities';\nimport { filter, Subscription } from 'rxjs';\nimport { AuthServiceBase } from '../../../services/auth.service.base';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { BadgeModule } from 'primeng/badge';\nimport { SpiderlyButtonComponent } from \"../../spiderly-buttons/spiderly-button/spiderly-button.component\";\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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: LayoutServiceBase, \n private authService: AuthServiceBase, \n protected router: Router,\n private translocoService: TranslocoService,\n public config: ConfigServiceBase,\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 { ConfigServiceBase } from '../../../services/config.service.base';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { LayoutServiceBase } from '../../../services/app-layout.service.base';\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: LayoutServiceBase, \n protected router: Router,\n private config: ConfigServiceBase,\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 { ConfigServiceBase } from '../../../services/config.service.base';\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 { AuthServiceBase } from '../../../services/auth.service.base';\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: AuthServiceBase,\n private config: ConfigServiceBase,\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 { LayoutServiceBase } from '../../services/app-layout.service.base';\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: LayoutServiceBase, \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 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 \"../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 ","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}","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 { AuthServiceBase } from '../services/auth.service.base';\nimport { ConfigServiceBase } from '../services/config.service.base';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n private authService: AuthServiceBase, \n private router: Router,\n private config: ConfigServiceBase\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 { AuthServiceBase } from '../services/auth.service.base';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotAuthGuard implements CanActivate {\n constructor(\n private authService: AuthServiceBase, \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 { ConfigServiceBase } from '../services/config.service.base';\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: ConfigServiceBase,\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 { ConfigServiceBase } from '../services/config.service.base';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const jwtInterceptor: HttpInterceptorFn = (req, next) => {\n const config = inject(ConfigServiceBase);\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 { HttpErrorResponse, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AuthServiceBase } from '../services/auth.service.base';\nimport { ConfigServiceBase } from '../services/config.service.base';\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\n\nexport const unauthorizedInterceptor: HttpInterceptorFn = (req, next) => {\n const messageService = inject(SpiderlyMessageService);\n const translocoService = inject(TranslocoService);\n const config = inject(ConfigServiceBase);\n const authService = inject(AuthServiceBase);\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 authService.clearLocalStorage();\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 }\n \n return next(req).pipe(\n catchError((err) => {\n return handleAuthError(err, req);\n })\n );\n}\n","import { Observable, of } from 'rxjs';\nimport { AuthServiceBase } from './auth.service.base';\nimport { AuthResult } from '../entities/security-entities';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport function authInitializer(authService: AuthServiceBase, platformId): () => Observable<AuthResult> {\n if (isPlatformBrowser(platformId)) {\n return () => {\n return authService.refreshToken();\n };\n }\n return () => {\n return of();\n };\n}","import { ConfigServiceBase } from './config.service.base';\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: ConfigServiceBase,\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-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.service.base';\nexport * from './lib/services/base-form.service';\nexport * from './lib/services/config.service.base';\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.service.base';\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","i1.TranslateLabelsAbstractService","i3.SpiderlyMessageService","i2.SpiderlyMessageService","i5.BaseFormService","i7.SpiderlyTextboxComponent","i8.SpiderlyButtonComponent","i9.PanelHeaderComponent","i10.PanelBodyComponent","i11.PanelFooterComponent","i12.SpiderlyPanelComponent","i2.ConfigServiceBase","map","i1.AuthServiceBase","i1.ConfigServiceBase","i2.AuthServiceBase","i6.AuthServiceBase","i7.ConfigServiceBase","i8","i9.SpiderlyTextboxComponent","i10.SpiderlyButtonComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","i10","i11","i13","i14","i15","i4.SpiderlyButtonComponent","i7","delay","i1.ApiSecurityService","i3.AuthServiceBase","i1.LayoutServiceBase","i3.SidebarMenuService","i4.AuthServiceBase","i5.ApiSecurityService","i6.ConfigServiceBase","i8.SpiderlyAutocompleteComponent","i4.ConfigServiceBase","filter","i5.ConfigServiceBase","i3.ConfigServiceBase","i1.SpiderlyMessageService","finalize","tap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spiderly.mjs","sources":["../../../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/required/required.component.ts","../../../projects/spiderly/src/lib/components/required/required.component.html","../../../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-multiautocomplete/spiderly-multiautocomplete.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.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-textbox/spiderly-textbox.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textbox/spiderly-textbox.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-textarea/spiderly-textarea.component.ts","../../../projects/spiderly/src/lib/controls/spiderly-textarea/spiderly-textarea.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-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/services/spiderly-message.service.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/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/security-entities.ts","../../../projects/spiderly/src/lib/errors/spiderly-error.ts","../../../projects/spiderly/src/lib/services/translate-labels-abstract.service.ts","../../../projects/spiderly/src/lib/services/base-form.service.ts","../../../projects/spiderly/src/lib/components/base-form/base-form copy.ts","../../../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/services/config.service.base.ts","../../../projects/spiderly/src/lib/entities/init-company-auth-dialog-details.ts","../../../projects/spiderly/src/lib/services/api.service.security.ts","../../../projects/spiderly/src/lib/services/auth.service.base.ts","../../../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/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/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/auth/login/login.component.ts","../../../projects/spiderly/src/lib/components/auth/login/login.component.html","../../../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/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/entities/init-top-bar-data.ts","../../../projects/spiderly/src/lib/services/app-layout.service.base.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/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/codebook.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/is-authorized-for-save-event.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/namebook.ts","../../../projects/spiderly/src/lib/entities/paginated-result.ts","../../../projects/spiderly/src/lib/entities/primeng-option.ts","../../../projects/spiderly/src/lib/entities/simple-save-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, Input } 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})\nexport 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(protected translocoService: TranslocoService) {}\n\n ngOnInit() {\n if (this.control != null && this.disabled == true) this.control.disable();\n\n this.errorMessageTooltipEvent =\n window.innerWidth > 1000 ? 'hover' : 'focus';\n }\n\n ngAfterViewInit() {}\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 { Component, EventEmitter, Input, Output } 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})\nexport 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 =\n this.translocoService.translate('SelectFromTheList');\n @Output() onButtonClick: EventEmitter<null> = new EventEmitter();\n\n constructor(protected override translocoService: TranslocoService) {\n super(translocoService);\n }\n\n dropdownMarkAsDirty() {\n this.control.markAsDirty();\n }\n\n addonClick() {\n this.onButtonClick.next(null);\n }\n}\n","import { Component, EventEmitter, Output } 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})\nexport class BaseAutocompleteControl extends BaseDropdownControl {\n @Output() onTextInput: EventEmitter<AutoCompleteCompleteEvent> =\n new EventEmitter();\n}\n","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 constructor() {}\n}\n","<span style=\"color: red; margin-left: 4px\">*</span>\n","import {\n FormArray,\n FormControl,\n FormControlOptions,\n FormGroup,\n ValidatorFn,\n} 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(\n value: any,\n opts: FormControlOptions = null,\n required: boolean = false,\n ) {\n opts = opts ?? { updateOn: 'blur' };\n super(value, opts);\n this.required = required;\n }\n\n override getRawValue(): T {\n // 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]: 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 {\n // 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>>(\n formControlName: TKey,\n ): SpiderlyControlsOfType<TValue>[TKey] => {\n if (\n this.controlNamesFromHtml.findIndex((x) => x === formControlName) === -1\n )\n this.controlNamesFromHtml.push(formControlName);\n\n let formControl = this.controls[formControlName];\n if (formControl == null) {\n console.error(\n `Spiderly: The property ${formControlName} in the form group ${this.targetClass.typeName} doesn't exist`,\n );\n return null;\n }\n\n return formControl;\n };\n}\n\nexport class SpiderlyFormArray<\n TValue extends BaseEntity = any,\n> 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 {\n label: this.translocoService.translate('Remove'),\n icon: 'pi pi-minus',\n command: () => {\n this.baseFormService.removeFormControlFromTheFormArray(\n this,\n this.lastMenuIconIndexClicked,\n );\n },\n },\n {\n label: this.translocoService.translate('AddAbove'),\n icon: 'pi pi-arrow-up',\n command: () => {\n this.baseFormService.addNewFormGroupToFormArray(\n this,\n this.targetClass,\n this.formGroupInitialValues,\n this.lastMenuIconIndexClicked,\n );\n },\n },\n {\n label: this.translocoService.translate('AddBelow'),\n icon: 'pi pi-arrow-down',\n command: () => {\n this.baseFormService.addNewFormGroupToFormArray(\n this,\n this.targetClass,\n this.formGroupInitialValues,\n this.lastMenuIconIndexClicked + 1,\n );\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}\n","import { TranslocoService } from '@jsverse/transloco';\nimport { Injectable } from '@angular/core';\nimport {\n SpiderlyFormArray,\n SpiderlyFormControl,\n SpiderlyValidatorFn,\n} from '../components/spiderly-form-control/spiderly-form-control';\nimport { ValidationErrors } from '@angular/forms';\nimport { ImageDimensionsValidationResult } from '../entities/image-dimensions-validation-result';\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class ValidatorAbstractService {\n constructor(protected translocoService: TranslocoService) {}\n\n abstract setValidator(\n formControl: SpiderlyFormControl,\n className: string,\n ): SpiderlyValidatorFn;\n\n validateImageDimensions(\n file: File,\n imageWidth: number,\n imageHeight: number,\n ): Promise<ImageDimensionsValidationResult> {\n return new Promise((resolve) => {\n const img = new Image();\n const objectUrl = URL.createObjectURL(file);\n\n img.onload = () => {\n URL.revokeObjectURL(objectUrl);\n const width = img.width;\n const height = img.height;\n const errors: string[] = [];\n\n if (imageWidth > 0 && width !== imageWidth) {\n errors.push(\n this.translocoService.translate('ImageWidthMustBeExact', {\n 0: imageWidth,\n 1: width,\n }),\n );\n }\n\n if (imageHeight > 0 && height !== imageHeight) {\n errors.push(\n this.translocoService.translate('ImageHeightMustBeExact', {\n 0: imageHeight,\n 1: height,\n }),\n );\n }\n\n resolve({ isValid: errors.length === 0, errors });\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(objectUrl);\n resolve({ isValid: true, errors: [] });\n };\n\n img.src = objectUrl;\n });\n }\n\n isArrayEmpty = (control: SpiderlyFormControl): SpiderlyValidatorFn => {\n const validator: SpiderlyValidatorFn = (): ValidationErrors | null => {\n const value = control.value;\n\n const notEmptyRule =\n typeof value !== 'undefined' && value !== null && value.length !== 0;\n\n const arrayValid = notEmptyRule;\n\n return arrayValid\n ? null\n : { _: 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 =\n typeof value !== 'undefined' && value !== null && value !== '';\n\n const arrayValid = notEmptyRule;\n\n return arrayValid\n ? null\n : { _: 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 =\n typeof value !== 'undefined' && value !== null && value.length !== 0;\n\n const arrayValid = notEmptyRule;\n\n return arrayValid\n ? null\n : { _: 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 {\n AutoCompleteCompleteEvent,\n AutoCompleteModule,\n AutoCompleteSelectEvent,\n} 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\n extends BaseAutocompleteControl\n implements OnInit\n{\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, {\n updateOn: 'change',\n });\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(\n this.helperFormControl,\n this.control.parentClassName,\n );\n\n if (this.control.value != null)\n this.helperFormControl.setValue({\n displayName: this.displayName,\n id: this.control.value,\n });\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({\n displayName: selectedOption.displayName,\n id: selectedOption.id,\n });\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","<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem\">\n <div *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\">\n <!-- 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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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>\n","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(protected override translocoService: TranslocoService) {\n super(translocoService);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n setDate(event: Date) {}\n}\n","<div style=\"display: flex; flex-direction: column; gap: 0.5rem\">\n <div\n *ngIf=\"getTranslatedLabel() != '' && getTranslatedLabel() != null\"\n style=\"display: flex; align-items: center\"\n >\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\n *ngIf=\"showTooltip\"\n class=\"{{ tooltipIcon }}\"\n style=\"margin-left: 8px; cursor: pointer\"\n [pTooltip]=\"tooltipText\"\n tabindex=\"-1\"\n tooltipEvent=\"focus\"\n ></i>\n </div>\n <p-datepicker\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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(protected override translocoService: TranslocoService) {\n super(translocoService);\n }\n\n override ngOnInit() {\n if (this.initializeToFalse == true) 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\n *ngIf=\"\n inlineLabel === false &&\n getTranslatedLabel() != '' &&\n getTranslatedLabel() != null\n \"\n >\n <label>{{ getTranslatedLabel() }}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <div style=\"margin-top: 0.5rem; position: relative\">\n <!-- 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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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>\n","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\n extends BaseControl\n implements OnInit\n{\n @Input() showInputTextField: boolean = true;\n\n constructor(protected override translocoService: TranslocoService) {\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(\n 'ColorPickerPlaceholder',\n );\n\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 *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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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>\n","import { Component, OnInit } from '@angular/core';\nimport {\n AutoCompleteCompleteEvent,\n AutoCompleteModule,\n} 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\n extends BaseAutocompleteControl\n implements OnInit\n{\n constructor(protected override translocoService: TranslocoService) {\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","<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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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>\n","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(protected override translocoService: TranslocoService) {\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-password\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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, 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(protected override translocoService: TranslocoService) {\n super(translocoService);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n buttonClick() {\n this.onButtonClick.next(null);\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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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\n *ngIf=\"showButton\"\n (click)=\"buttonClick()\"\n class=\"spiderly-inputgroup-addon\"\n >\n <i class=\"{{ buttonIcon }}\"></i>\n </span>\n </div>\n</div>\n","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\n extends BaseDropdownControl\n implements OnInit\n{\n constructor(protected override translocoService: TranslocoService) {\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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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>\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 constructor(protected override translocoService: TranslocoService) {\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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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>\n","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(protected override translocoService: TranslocoService) {\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 *ngIf=\"showLabel\">\n <label>{{ getTranslatedLabel() }}</label>\n <required *ngIf=\"control?.required && showRequired\"></required>\n </div>\n <p-inputNumber\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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>\n","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\n extends BaseDropdownControl\n implements OnInit\n{\n @Input() isBooleanPicker: boolean = false;\n @Output() onChange = new EventEmitter<DropdownChangeEvent>();\n\n constructor(protected override translocoService: TranslocoService) {\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","<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 <!-- tabindex=\"-1\": Makes the element focusable, but removes it from the tab order. -->\n <i\n *ngIf=\"showTooltip\"\n class=\"{{ tooltipIcon }}\"\n style=\"margin-left: 5px; cursor: pointer\"\n [pTooltip]=\"tooltipText\"\n tabindex=\"-1\"\n tooltipEvent=\"focus\"\n ></i>\n </div>\n\n <!-- Don't support p-inputgroup -->\n <p-select\n *ngIf=\"control\"\n [pTooltip]=\"getValidationErrrorMessages()\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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</div>\n","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(protected override translocoService: TranslocoService) {\n super(translocoService);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n onClick() {\n let editableArea: HTMLElement =\n 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","<!-- 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()\"\n [tooltipEvent]=\"errorMessageTooltipEvent\"\n tooltipPosition=\"bottom\"\n [tooltipDisabled]=\"control.valid\"\n 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</div>\n","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: [CommonModule, ButtonModule, SplitButtonModule],\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:\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'help'\n | 'primary'\n | 'secondary'\n | 'contrast'\n | null\n | 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(private router: Router) {}\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 } else {\n this.clickSubject.next(event);\n }\n };\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\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: [CommonModule, ButtonModule, SplitButtonModule],\n})\nexport class SpiderlyButtonComponent extends SpiderlyButtonBaseComponent {\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>\n","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","import { HttpResponse } from '@angular/common/http';\nimport * as FileSaver from 'file-saver';\nimport 'reflect-metadata';\nimport { map, Observable } from 'rxjs';\nimport {\n Action,\n Column,\n} 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(\n value: any,\n precision: number,\n scale: number,\n ignoreTrailingZeros: boolean,\n): 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 (\n !ignoreTrailingZeros &&\n decimalPart &&\n decimalPart.replace(/0+$/, '').length > scale\n )\n 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':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n '.xls': 'application/vnd.ms-excel',\n '.xlsx':\n '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) 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>(\n funcOrClass: TObject,\n): 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',\n 'Februar',\n 'Mart',\n 'April',\n 'Maj',\n 'Jun',\n 'Jul',\n 'Avgust',\n 'Septembar',\n 'Oktobar',\n 'Novembar',\n '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>(\n array: T[],\n predicate: (item: T) => boolean,\n): 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(\n (a) => a.field === actionField,\n );\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 (\n mimeType ===\n '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(\n exportListToExcelObservableMethod: (filter: Filter) => Observable<any>,\n filter: Filter,\n) {\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(\n getDropdownListObservable: (\n parentEntityId?: number,\n ) => Observable<Namebook[]>,\n parentEntityId?: number,\n): 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(\n getDropdownListObservable: () => Observable<Codebook[]>,\n): 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(\n getAutocompleteListObservable: (\n limit: number,\n query: string,\n parentEntityId?: number,\n ) => Observable<Namebook[]>,\n limit: number,\n query: string,\n parentEntityId?: number,\n): 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(\n getAutocompleteListObservable: (\n limit: number,\n query: string,\n ) => Observable<Codebook[]>,\n limit: number,\n query: string,\n): 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 } 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 = [\n 'Namebook[]',\n 'number[]',\n 'Date[]',\n '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 {\n // 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 successMessage(\n detail: string,\n title: string = this.translocoService.translate('SuccessfulAction'),\n ) {\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(\n detail: string,\n title: string = this.translocoService.translate('Error'),\n ) {\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","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 {\n getMimeTypeForFileName,\n isExcelFileType,\n isImageFileType,\n} from '../../services/helper-functions';\nimport { SpiderlyMessageService } from '../../services/spiderly-message.service';\nimport { ValidatorAbstractService } from '../../services/validator-abstract.service';\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<\n | 'image/*'\n | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n | 'application/vnd.ms-excel'\n | '.xlsx'\n | '.xls'\n > = ['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 @Input() imageWidth: number = 0;\n @Input() imageHeight: number = 0;\n\n acceptedFileTypesCommaSeparated: string;\n @Input() files: File[] = [];\n\n constructor(\n protected override translocoService: TranslocoService,\n private messageService: SpiderlyMessageService,\n private validatorService: ValidatorAbstractService,\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 } 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 if (\n this.isImageFileType(file.type) &&\n this.hasImageDimensionConstraints()\n ) {\n this.files = [];\n this.validatorService\n .validateImageDimensions(file, this.imageWidth, this.imageHeight)\n .then((result) => {\n if (result.isValid) {\n this.files = [file];\n this.emitFileSelected(file);\n } else {\n this.messageService.errorMessage(result.errors.join('\\n'));\n }\n });\n } else {\n this.emitFileSelected(file);\n }\n }\n\n private emitFileSelected(file: File): void {\n const formData = new FormData();\n formData.append('file', file, `${this.objectId}-${file.name}`);\n\n this.onFileSelected.next(\n new SpiderlyFileSelectEvent({ file: file, formData: formData }),\n );\n }\n\n private hasImageDimensionConstraints(): boolean {\n return this.imageWidth > 0 || this.imageHeight > 0;\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(\n `Failed to fetch file from Cloudinary: ${response.statusText}`,\n );\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\nexport class SpiderlyFileSelectEvent extends BaseEntity {\n file?: File;\n formData?: FormData;\n\n constructor({\n file,\n formData,\n }: {\n file?: File;\n formData?: FormData;\n } = {}) {\n super();\n\n this.file = file;\n this.formData = formData;\n }\n\n static readonly typeName = 'SpiderlyFileSelectEvent' as const;\n}\n","<ng-container *transloco=\"let t\">\n <div style=\"display: flex; flex-direction: column; gap: 0.5rem; padding: 1px\">\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\n pTemplate=\"header\"\n let-files\n let-chooseCallback=\"chooseCallback\"\n let-clearCallback=\"clearCallback\"\n let-uploadCallback=\"uploadCallback\"\n >\n <div\n class=\"flex flex-wrap justify-content-between align-items-center flex-1 gap-2\"\n >\n <div class=\"flex gap-2\">\n <spiderly-button\n [disabled]=\"disabled\"\n (onClick)=\"choose($event, chooseCallback)\"\n icon=\"pi pi-upload\"\n [rounded]=\"true\"\n [outlined]=\"true\"\n />\n </div>\n </div>\n </ng-template>\n <ng-template\n pTemplate=\"content\"\n let-files\n let-removeFileCallback=\"removeFileCallback\"\n >\n <div *ngIf=\"files.length > 0\">\n <div class=\"flex justify-content-center p-0 gap-5\">\n <div\n *ngFor=\"let file of files; let index = index\"\n class=\"card m-0 px-3 py-3 flex flex-column align-items-center gap-3\"\n style=\"justify-content: center; overflow: hidden\"\n >\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\n class=\"pi pi-file-excel\"\n style=\"color: green; margin-right: 4px\"\n ></i>\n <span class=\"file-name\">{{ file.name }}</span>\n </div>\n </div>\n <spiderly-button\n [disabled]=\"disabled\"\n icon=\"pi pi-times\"\n (onClick)=\"fileRemoved(removeFileCallback, index)\"\n [outlined]=\"true\"\n [rounded]=\"true\"\n severity=\"danger\"\n />\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\n class=\"pi pi-cloud-upload border-2 border-circle p-5 text-8xl text-400 border-400 mt-3\"\n ></i>\n <p class=\"mt-4 mb-0\">{{ t(\"DragAndDropFilesHereToUpload\") }}</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n</ng-container>\n","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 } else {\n this.router.navigate([this.navigateUrl]);\n }\n }\n}\n","<ng-container *transloco=\"let t\">\n <spiderly-button\n (onClick)=\"onReturn()\"\n [label]=\"t('Return')\"\n icon=\"pi pi-undo\"\n [outlined]=\"true\"\n ></spiderly-button>\n</ng-container>\n","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 providers: [],\n})\nexport class SpiderlyControlsModule {}\n","import { BaseEntity } from './base-entity';\n\nexport class UserBase extends BaseEntity {\n static readonly typeName = 'UserBase' as const;\n\n id?: number;\n email?: string;\n\n constructor({\n id,\n email,\n }: {\n id?: number;\n email?: string;\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\nexport class AuthResult extends BaseEntity {\n static readonly typeName = 'AuthResult' as const;\n\n userId?: number;\n email?: string;\n accessToken?: string;\n refreshToken?: string;\n\n constructor({\n userId,\n email,\n accessToken,\n refreshToken,\n }: {\n userId?: number;\n email?: string;\n accessToken?: string;\n refreshToken?: string;\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\nexport class VerificationTokenRequest extends BaseEntity {\n static readonly typeName = 'VerificationTokenRequest' as const;\n\n verificationCode?: string;\n browserId?: string;\n email?: string;\n\n constructor({\n verificationCode,\n browserId,\n email,\n }: {\n verificationCode?: string;\n browserId?: string;\n email?: string;\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\nexport class ExternalProvider extends BaseEntity {\n static readonly typeName = 'ExternalProvider' as const;\n\n idToken?: string;\n browserId?: string;\n\n constructor({\n idToken,\n browserId,\n }: {\n idToken?: string;\n browserId?: string;\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\nexport class UserRole extends BaseEntity {\n static readonly typeName = 'UserRole' as const;\n\n roleId?: number;\n userId?: number;\n\n constructor({\n roleId,\n userId,\n }: {\n roleId?: number;\n userId?: number;\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\nexport class LoginVerificationToken extends BaseEntity {\n static readonly typeName = 'LoginVerificationToken' as const;\n\n email?: string;\n userId?: number;\n browserId?: string;\n expireAt?: Date;\n\n constructor({\n email,\n userId,\n browserId,\n expireAt,\n }: {\n email?: string;\n userId?: number;\n browserId?: string;\n expireAt?: Date;\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\nexport class Login extends BaseEntity {\n static readonly typeName = 'Login' as const;\n\n email?: string;\n browserId?: string;\n\n constructor({\n email,\n browserId,\n }: {\n email?: string;\n browserId?: string;\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\nexport class RefreshTokenRequest extends BaseEntity {\n static readonly typeName = 'RefreshTokenRequest' as const;\n\n refreshToken?: string;\n browserId?: string;\n\n constructor({\n refreshToken,\n browserId,\n }: {\n refreshToken?: string;\n browserId?: string;\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\nexport class SendLoginVerificationEmailResult extends BaseEntity {\n static readonly typeName = 'SendLoginVerificationEmailResult' as const;\n\n message?: string;\n\n constructor({\n message,\n }: {\n message?: string;\n } = {}) {\n super();\n\n this.message = message;\n }\n\n static readonly schema = {\n message: {\n type: 'string',\n },\n } as const;\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}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class TranslateLabelsAbstractService {\n constructor() {}\n\n abstract translate(name: string): string;\n}\n","import { Injectable } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport {\n SpiderlyFormArray,\n SpiderlyFormControl,\n SpiderlyFormGroup,\n} 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) throw new SpiderlyError('You need to pass targetClass.');\n\n if (!initialValues) 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(\n existingControl,\n propSchema.nestedConstructor,\n propInitialValue,\n );\n } else {\n const control = new SpiderlyFormArray<T>(\n [],\n this.translocoService,\n this,\n );\n this.initFormArray(\n control,\n propSchema.nestedConstructor,\n propInitialValue,\n );\n\n control.label = formControlName;\n control.labelForDisplay = this.getTranslatedLabel(formControlName);\n\n formGroup.setControl(formControlName, control);\n }\n } else if (\n propSchema.nestedConstructor &&\n propSchema.type !== 'Namebook[]'\n ) {\n if (existingControl instanceof SpiderlyFormGroup) {\n this.initFormGroup(\n existingControl,\n propSchema.nestedConstructor,\n propInitialValue,\n );\n } else {\n const control = new SpiderlyFormGroup({});\n this.initFormGroup(\n control,\n propSchema.nestedConstructor,\n propInitialValue,\n );\n formGroup.setControl(formControlName, control);\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 } else {\n let control: SpiderlyFormControl;\n\n if (\n 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, {\n updateOn: 'change',\n });\n } else {\n control = new SpiderlyFormControl(propInitialValue, {\n updateOn: 'blur',\n });\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(\n 0,\n 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(\n formArray: SpiderlyFormArray,\n index: number,\n ) {\n if (index == null) 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 if (!formArray)\n throw new SpiderlyError(\n 'You must pass a FormArray instance to be initialized or updated.',\n );\n\n if (!targetClass)\n throw new SpiderlyError('You did not initialize targetClass');\n\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 } 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(\n (k) => schema[k].isSaveBodyMainDTO === true,\n );\n };\n\n mapMainUIFormToSaveBody = <T extends BaseEntity>(\n mainUIFormClass: SchemaAwareConstructor<T>,\n mainUIFormValues: T,\n ) => {\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 (\n propName.startsWith('ordered') &&\n propName.endsWith('MainUIFormDTO')\n ) {\n const newKey = propName.replace('MainUIFormDTO', 'SaveBodyDTO');\n // Recursively map nested DTOs\n const relatedEntity = property.nestedConstructor;\n saveBody[newKey] =\n 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 ||\n controlNamesFromHtml?.includes(control.label))\n ) {\n control.markAsDirty();\n invalid = true;\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 } else if (control instanceof SpiderlyFormArray) {\n control.controls.forEach(\n (\n nestedControl:\n | SpiderlyFormControl\n | SpiderlyFormGroup\n | SpiderlyFormArray,\n ) => {\n if (!this.isControlValid(nestedControl)) {\n invalid = true;\n }\n },\n );\n }\n\n if (invalid) {\n return false;\n }\n\n return true;\n }\n\n //#endregion\n}\n","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 {\n SpiderlyFormArray,\n SpiderlyFormControl,\n SpiderlyFormGroup,\n} 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(\n 'SuccessfulSaveToastDescription',\n );\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 ngOnInit() {}\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\n .saveObservableMethod(this.saveBody)\n .subscribe((res) => {\n this.messageService.successMessage(\n this.successfulSaveToastDescription,\n );\n\n this.baseFormService.initFormGroup(\n this.parentFormGroup,\n this.mainUIFormClass,\n res,\n );\n\n if (reroute) {\n const saveBodyMainDTOKey =\n 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>(\n formControlName: keyof T & string,\n formArray: SpiderlyFormArray<T>,\n index: number,\n filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[],\n ): 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 } else {\n return (formArray.controls[index] as SpiderlyFormGroup<T>).controls[\n formControlName\n ] as SpiderlyFormControl;\n }\n\n return filteredFormGroups[index]?.controls[\n formControlName\n ] as SpiderlyFormControl; // FT: Don't change this. It's always possible that change detection occurs before something.\n }\n\n getFormArrayControls<T>(\n formControlName: keyof T & string,\n formArray: SpiderlyFormArray<T>,\n filter?: (formGroups: SpiderlyFormGroup<T>[]) => SpiderlyFormGroup<T>[],\n ): 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 } else {\n return (formArray.controls as SpiderlyFormGroup<T>[]).map(\n (x) => x.controls[formControlName] as SpiderlyFormControl,\n );\n }\n\n return filteredFormGroups.map(\n (x) => x.controls[formControlName] as SpiderlyFormControl,\n );\n }\n\n removeFormControlsFromTheFormArray(\n formArray: SpiderlyFormArray,\n indexes: number[],\n ) {\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","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: [ButtonModule, SpiderlyButtonComponent],\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\ndeclare global {\n interface Window {\n google: any;\n }\n}\n","<ng-container>\n <spiderly-button\n (onClick)=\"handleGoogleLogin()\"\n [label]=\"label\"\n [outlined]=\"true\"\n [style]=\"{ width: '100%' }\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"0.98em\"\n height=\"1em\"\n viewBox=\"0 0 256 262\"\n >\n <path\n fill=\"#4285f4\"\n 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\"\n />\n <path\n fill=\"#34a853\"\n 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\"\n />\n <path\n fill=\"#fbbc05\"\n 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\"\n />\n <path\n fill=\"#eb4335\"\n 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\"\n />\n </svg>\n </spiderly-button>\n</ng-container>\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigServiceBase {\n production = false;\n apiUrl: string;\n frontendUrl = 'http://localhost:4200';\n GoogleClientId: string;\n companyName = 'Company Name';\n primaryColor = '#111b2c';\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","import { BaseEntity } from './base-entity';\n\nexport class InitCompanyAuthDialogDetails extends BaseEntity {\n image?: string;\n companyName?: string;\n\n constructor({\n image,\n companyName,\n }: {\n image?: string;\n companyName?: string;\n } = {}) {\n super();\n\n this.image = image;\n this.companyName = companyName;\n }\n\n static readonly typeName = 'InitCompanyAuthDialogDetails' as const;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n AuthResult,\n ExternalProvider,\n Login,\n RefreshTokenRequest,\n SendLoginVerificationEmailResult,\n UserBase,\n VerificationTokenRequest,\n} from '../entities/security-entities';\nimport { ConfigServiceBase } from './config.service.base';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiSecurityService {\n constructor(\n protected http: HttpClient,\n protected config: ConfigServiceBase,\n ) {}\n\n //#region Authentication\n\n login = (request: VerificationTokenRequest): Observable<AuthResult> => {\n return this.http.post<AuthResult>(\n `${this.config.apiUrl}/Security/Login`,\n request,\n this.config.httpOptions,\n );\n };\n\n loginExternal = (\n externalProviderDTO: ExternalProvider,\n ): Observable<AuthResult> => {\n return this.http.post<AuthResult>(\n `${this.config.apiUrl}/Security/LoginExternal`,\n externalProviderDTO,\n this.config.httpOptions,\n );\n };\n\n sendLoginVerificationEmail = (\n loginDTO: Login,\n ): Observable<SendLoginVerificationEmailResult> => {\n return this.http.post<SendLoginVerificationEmailResult>(\n `${this.config.apiUrl}/Security/SendLoginVerificationEmail`,\n loginDTO,\n this.config.httpOptions,\n );\n };\n\n logout = (browserId: string): Observable<any> => {\n return this.http.get<any>(\n `${this.config.apiUrl}/Security/Logout?browserId=${browserId}`,\n );\n };\n\n refreshToken = (request: RefreshTokenRequest): Observable<AuthResult> => {\n return this.http.post<AuthResult>(\n `${this.config.apiUrl}/Security/RefreshToken`,\n request,\n this.config.httpOptions,\n );\n };\n\n //#endregion\n\n //#region User\n\n getCurrentUserBase = (): Observable<UserBase> => {\n return this.http.get<UserBase>(\n `${this.config.apiUrl}/Security/GetCurrentUserBase`,\n this.config.httpSkipSpinnerOptions,\n );\n };\n\n getCurrentUserPermissionCodes = (): Observable<string[]> => {\n return this.http.get<string[]>(\n `${this.config.apiUrl}/Security/GetCurrentUserPermissionCodes`,\n this.config.httpSkipSpinnerOptions,\n );\n };\n\n //#endregion\n\n //#region Notification\n\n getUnreadNotificationsCountForCurrentUser = (): Observable<number> => {\n return this.http.get<number>(\n `${this.config.apiUrl}/Notification/GetUnreadNotificationsCountForCurrentUser`,\n this.config.httpSkipSpinnerOptions,\n );\n };\n\n //#endregion\n}\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 {\n ExternalProvider,\n Login,\n VerificationTokenRequest,\n AuthResult,\n RefreshTokenRequest,\n UserBase,\n} from '../entities/security-entities';\nimport { ConfigServiceBase } from './config.service.base';\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 AuthServiceBase implements OnDestroy {\n private readonly apiUrl: string = this.config.apiUrl;\n private timer?: Subscription;\n\n protected _currentUserPermissionCodes = new BehaviorSubject<string[] | null>(\n undefined,\n );\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: ConfigServiceBase,\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>(\n `${this.apiUrl}/Security/Login`,\n body,\n );\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>(\n `${this.apiUrl}/Security/LoginExternal`,\n body,\n );\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>(\n `${this.apiUrl}/Security/RefreshToken`,\n body,\n this.config.httpSkipSpinnerOptions,\n )\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 =\n (): 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(\n 'storage',\n this.storageEventListener.bind(this),\n );\n }\n\n this.onAfterNgOnDestroy();\n }\n\n onAfterNgOnDestroy = () => {};\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { Subscription } from 'rxjs';\nimport { AuthServiceBase } from '../../../services/auth.service.base';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\nimport { GoogleButtonComponent } from '../../spiderly-buttons/google-button/google-button.component';\n\n@Component({\n selector: 'auth',\n templateUrl: './auth.component.html',\n styles: [],\n imports: [CommonModule, GoogleButtonComponent, TranslocoDirective],\n})\nexport class AuthComponent {\n private initCompanyAuthDialogDetailsSubscription: Subscription | null = null;\n\n @Output() onCompanyNameChange: EventEmitter<string> = new EventEmitter();\n @Input() showGoogleAuth: boolean = false;\n\n companyName: string;\n image: string;\n\n constructor(\n private config: ConfigServiceBase,\n private authService: AuthServiceBase,\n ) {}\n\n ngOnInit() {\n this.initCompanyDetails();\n }\n\n initCompanyDetails() {\n this.initCompanyAuthDialogDetailsSubscription = this.authService\n .initCompanyAuthDialogDetails()\n .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","<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\n class=\"w-full sm:w-30rem\"\n style=\"\n margin: auto;\n border-radius: 50px;\n padding: 0.3rem;\n background: linear-gradient(\n 180deg,\n var(--p-primary-color) 10%,\n rgba(33, 150, 243, 0) 30%\n );\n \"\n >\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\n *ngIf=\"image != null\"\n [src]=\"image\"\n alt=\"{{ companyName }} Logo\"\n title=\"{{ companyName }} Logo\"\n height=\"60\"\n />\n <i\n *ngIf=\"image == null\"\n class=\"pi pi-spin pi-spinner primary-color\"\n style=\"font-size: 2rem\"\n ></i>\n </div>\n\n <ng-content></ng-content>\n\n <div *ngIf=\"showGoogleAuth\">\n <div\n style=\"\n display: flex;\n align-items: center;\n gap: 7px;\n justify-content: center;\n margin-bottom: 16px;\n \"\n >\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\n (loginWithGoogle)=\"onGoogleSignIn($event)\"\n [label]=\"t('ContinueWithGoogle')\"\n ></google-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n","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\n class=\"panel-body\"\n [ngClass]=\"{\n 'non-grid-panel-bottom-padding': normalBottomPadding,\n }\"\n style=\"overflow: auto\"\n>\n <!-- 'card': true, -->\n <ng-content></ng-content>\n</div>\n","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 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>\n","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 `\n .p-panel-icons-end {\n font-size: 50px;\n }\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(private translocoService: TranslocoService) {}\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 label?: string;\n id?: number;\n icon?: string;\n isSelected?: boolean;\n\n constructor({\n label,\n id,\n icon,\n isSelected,\n }: {\n label?: string;\n id?: number;\n icon?: string;\n isSelected?: boolean;\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\n class=\"{{ icon }} primary-color\"\n [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"\n ></i>\n <div [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\">\n {{ title }}\n </div>\n </div>\n } @else {\n @for (tab of tabs; track $index) {\n <div\n (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 >\n <span *ngIf=\"index != null\" class=\"number-circle\">{{ index + 1 }}</span>\n <i\n class=\"{{ tab.icon }} primary-color\"\n [style]=\"showBigTitle ? 'font-size: 21px' : 'font-size: 16px;'\"\n ></i>\n <div\n [style]=\"showBigTitle ? 'font-size: 17.5px; font-weight: 500;' : ''\"\n >\n {{ tab.label }}\n </div>\n </div>\n }\n }\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} 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 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':\n isFirstMultiplePanel && !showPanelHeader,\n 'multiple-panel-first': isFirstMultiplePanel,\n 'multiple-panel-middle-without-header':\n isMiddleMultiplePanel && !showPanelHeader,\n 'multiple-panel-middle': isMiddleMultiplePanel,\n 'multiple-panel-last-without-header':\n 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\"\n expandIcon=\"pi pi-chevron-up\"\n collapseIcon=\"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\n class=\"pi pi-ellipsis-h icon-hover\"\n (click)=\"menuItemClick(index, $event)\"\n ></i>\n <!-- https://github.com/primefaces/primeng/issues/13934 -->\n <p-menu\n #menu\n [model]=\"crudMenu\"\n [popup]=\"true\"\n appendTo=\"body\"\n [tabindex]=\"undefined\"\n ></p-menu>\n </div>\n <div *ngIf=\"showRemoveIcon\" class=\"mr-2\">\n <i\n class=\"pi pi-minus icon-hover error-color-light\"\n (click)=\"removeItemClick()\"\n ></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</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: [CommonModule, MenuModule, PanelModule],\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})\nexport class SpiderlyPanelsModule {}\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n KeyValueDiffers,\n OnInit,\n Output,\n} 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\n extends BaseFormCopy\n implements OnInit\n{\n verificationTokenRequestFormGroup =\n 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(\n differs,\n http,\n messageService,\n changeDetectorRef,\n router,\n route,\n translocoService,\n baseFormService,\n );\n }\n\n override ngOnInit() {\n this.initVerificationTokenRequestFormGroup(\n new VerificationTokenRequest({ email: this.email }),\n );\n }\n\n initVerificationTokenRequestFormGroup(model: VerificationTokenRequest) {\n this.baseFormService.initFormGroup(\n this.verificationTokenRequestFormGroup,\n VerificationTokenRequest,\n model,\n ['verificationCode'],\n );\n }\n\n codeSubmit() {\n let isValid: boolean = this.baseFormService.isControlValid(\n this.verificationTokenRequestFormGroup,\n );\n\n if (isValid) {\n this.onCodeSubmit.next(\n this.verificationTokenRequestFormGroup.controls.verificationCode.getRawValue(),\n );\n }\n }\n\n resendVerificationToken() {\n this.onResendVerificationToken.next(null);\n }\n}\n","<ng-container *transloco=\"let t\">\n <div\n class=\"min-h-screen\"\n style=\"display: flex; justify-content: center; align-items: center\"\n >\n <div class=\"dialog\" style=\"padding: 0px\">\n @if (verificationTokenRequestFormGroup != null) {\n <spiderly-panel>\n <panel-header\n [title]=\"t('AccountVerificationHeader')\"\n [showBigTitle]=\"true\"\n icon=\"pi pi-envelope\"\n ></panel-header>\n\n <panel-body>\n <form class=\"grid\">\n <div class=\"col-12\">\n <div style=\"font-size: 17.5px\">\n {{ t(\"AccountVerificationTitle\") }}\n </div>\n </div>\n <div class=\"col-12\">\n {{ t(\"AccountVerificationDescription\", { email: email }) }}\n </div>\n <div class=\"col-12\">\n <spiderly-textbox\n [control]=\"\n verificationTokenRequestFormGroup.getControl(\n 'verificationCode'\n )\n \"\n ></spiderly-textbox>\n </div>\n <div class=\"col-12\">\n <spiderly-button\n (onClick)=\"codeSubmit()\"\n [label]=\"t('Submit')\"\n icon=\"pi pi-verified\"\n type=\"submit\"\n ></spiderly-button>\n </div>\n </form>\n </panel-body>\n\n <panel-footer>\n <a\n pButton\n class=\"p-button-link\"\n [label]=\"t('GoToGmail')\"\n icon=\"pi pi-external-link\"\n href=\"https://mail.google.com/mail/u/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n ></a>\n <a\n pButton\n class=\"p-button-link\"\n [label]=\"t('GoToYahoo')\"\n icon=\"pi pi-external-link\"\n href=\"https://mail.yahoo.com/d/folders/1/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n ></a>\n </panel-footer>\n <panel-footer>\n <div>\n {{ t(\"ResendVerificationCodeFirstPart\") }}\n <a class=\"link\" (click)=\"resendVerificationToken()\">{{\n t(\"ResendVerificationCodeLinkSecondPart\")\n }}</a>\n </div>\n </panel-footer>\n </spiderly-panel>\n } @else {\n <!-- TODO FT: Add skeleton -->\n }\n </div>\n </div>\n</ng-container>\n","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 { AuthServiceBase } from '../../../services/auth.service.base';\n\n@Component({\n selector: 'login-verification',\n templateUrl: './login-verification.component.html',\n imports: [VerificationWrapperComponent],\n})\nexport class LoginVerificationComponent implements OnInit {\n @Input() email: string;\n @Input() userId: number;\n\n constructor(\n private authService: AuthServiceBase,\n private messageService: SpiderlyMessageService,\n private translocoService: TranslocoService,\n ) {}\n\n ngOnInit() {}\n\n resendVerificationToken() {\n this.authService\n .sendLoginVerificationEmail({ email: this.email })\n .subscribe(() => {\n this.messageService.successMessage(\n this.translocoService.translate('SuccessfullySentVerificationCode'),\n );\n });\n }\n\n onCodeSubmit(event: string) {\n this.authService\n .login({ email: this.email, verificationCode: event })\n .subscribe(() => {\n this.messageService.successMessage(\n this.translocoService.translate(\n 'YouHaveSuccessfullyVerifiedYourAccount',\n ),\n );\n this.authService.navigateToDashboard();\n });\n }\n}\n","<verification-wrapper\n [email]=\"email\"\n (onResendVerificationToken)=\"resendVerificationToken()\"\n (onCodeSubmit)=\"onCodeSubmit($event)\"\n></verification-wrapper>\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectorRef,\n Component,\n KeyValueDiffers,\n OnInit,\n} 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 { AuthServiceBase } from '../../../services/auth.service.base';\nimport { BaseFormService } from '../../../services/base-form.service';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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: AuthServiceBase,\n private config: ConfigServiceBase,\n ) {\n super(\n differs,\n http,\n messageService,\n changeDetectorRef,\n router,\n route,\n translocoService,\n baseFormService,\n );\n }\n\n override ngOnInit() {\n this.initLoginFormGroup(new Login({}));\n }\n\n initLoginFormGroup(model: Login) {\n this.baseFormService.initFormGroup(this.loginFormGroup, Login, model, [\n 'email',\n ]);\n }\n\n companyNameChange(companyName: string) {\n this.companyName = companyName;\n }\n\n sendLoginVerificationEmail() {\n let isFormGroupValid: boolean = this.baseFormService.isControlValid(\n this.loginFormGroup,\n );\n\n if (isFormGroupValid == false) {\n this.baseFormService.showInvalidFieldsMessage();\n return;\n }\n\n this.authService\n .sendLoginVerificationEmail(this.loginFormGroup.getRawValue())\n .subscribe((result) => {\n if (result.message) {\n this.messageService.successMessage(result.message);\n }\n this.showEmailSentDialog = true;\n });\n }\n}\n","<ng-container *transloco=\"let t\">\n @if (loginFormGroup != null) {\n @if (showEmailSentDialog == false) {\n <auth (onCompanyNameChange)=\"companyNameChange($event)\">\n <!-- We are not loading anything from the server here so we don't need defer block -->\n <form [formGroup]=\"loginFormGroup\" style=\"margin-bottom: 16px\">\n <div class=\"col-12\" style=\"padding-left: 0; padding-right: 0\">\n <spiderly-textbox\n [control]=\"loginFormGroup.getControl('email')\"\n ></spiderly-textbox>\n </div>\n\n <div class=\"mb-4 gap-5\">\n <div class=\"text-center\" style=\"font-size: smaller\">\n {{ t(\"AgreementsOnRegister\") }}\n <b\n routerLink=\"/user-agreement\"\n class=\"primary-color cursor-pointer\"\n >{{ t(\"UserAgreement\") }}</b\n >\n {{ t(\"and\") }}\n <b\n routerLink=\"/privacy-policy\"\n class=\"primary-color cursor-pointer\"\n >{{ t(\"PrivacyPolicy\") }}</b\n >.\n </div>\n </div>\n\n <div style=\"display: flex; flex-direction: column; gap: 16px\">\n <spiderly-button\n [label]=\"t('Login')\"\n (onClick)=\"sendLoginVerificationEmail()\"\n [outlined]=\"true\"\n [style]=\"{ width: '100%' }\"\n type=\"submit\"\n ></spiderly-button>\n </div>\n </form>\n </auth>\n } @else {\n <login-verification\n [email]=\"loginFormGroup.controls.email.getRawValue()\"\n ></login-verification>\n }\n } @else {\n <!-- TODO: Add skeleton -->\n }\n</ng-container>\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 =\n this.height -\n (this.titleHeight +\n this.padding * 2 +\n this.titleMarginBottom +\n this.titleMarginTop);\n }\n}\n","<div\n class=\"border-round border-1 surface-border p-4 surface-card\"\n [style]=\"'height: ' + height + 'px;'\"\n>\n <div\n [style]=\"\n 'margin-bottom:' +\n titleMarginBottom +\n 'px; margin-top:' +\n titleMarginTop +\n 'px;'\n \"\n >\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>\n","import { Component } from '@angular/core';\nimport { ConfigServiceBase } from '../../services/config.service.base';\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(private config: ConfigServiceBase) {}\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: [CommonModule, SpiderlyPanelsModule],\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(protected formBuilder: FormBuilder) {}\n\n ngOnInit() {}\n\n menuIconClick(index: number) {\n this.onMenuIconClick.next(index);\n }\n\n removeIconClick() {\n this.onRemoveIconClick.next(null);\n }\n}\n","<div\n [ngClass]=\"{\n 'last-child-zero-margin': last,\n 'card-margin-bottom': true,\n }\"\n>\n <spiderly-panel\n [crudMenu]=\"crudMenu\"\n [showCrudMenu]=\"showCrudMenu\"\n (onMenuIconClick)=\"menuIconClick($event)\"\n [showRemoveIcon]=\"showRemoveIcon\"\n (onRemoveIconClick)=\"removeIconClick()\"\n [index]=\"index\"\n >\n <panel-header\n [title]=\"header\"\n [index]=\"index\"\n [showIcon]=\"false\"\n ></panel-header>\n\n <panel-body>\n <ng-content>\n <!-- Custom things below description -->\n </ng-content>\n </panel-body>\n </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: [CommonModule, SpiderlyPanelsModule],\n})\nexport class InfoCardComponent {\n @Input() header = '';\n @Input() showSmallIcon = true;\n @Input() icon = 'pi pi-info-circle';\n @Input() textColor = '';\n\n constructor(protected formBuilder: FormBuilder) {}\n\n ngOnInit() {}\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>\n","import { BaseEntity } from './base-entity';\nimport { UserBase } from './security-entities';\n\nexport class InitTopBarData extends BaseEntity {\n companyName?: string;\n userProfilePath?: string;\n unreadNotificationsCount?: number;\n showProfileIcon?: boolean;\n currentUser?: UserBase;\n\n constructor({\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 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}\n","import { AuthServiceBase } from './auth.service.base';\nimport { ApiSecurityService } from './api.service.security';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n delay,\n lastValueFrom,\n map,\n Observable,\n of,\n Subject,\n Subscription,\n withLatestFrom,\n} from 'rxjs';\nimport { InitTopBarData } from '../entities/init-top-bar-data';\nimport { ConfigServiceBase } from './config.service.base';\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 LayoutServiceBase implements OnDestroy {\n userSubscription: Subscription;\n\n protected _unreadNotificationsNumber = new BehaviorSubject<number | null>(\n null,\n );\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: ConfigServiceBase,\n protected authService: AuthServiceBase,\n ) {}\n\n initUnreadNotificationsCountForCurrentUser = () => {\n this.initUnreadNotificationsCountForCurrentUserObservable()\n .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 )\n .subscribe(([additionalObservable, user]) => {\n if (user != null && additionalObservable !== undefined) {\n this.setUnreadNotificationsCountForCurrentUser().subscribe();\n }\n });\n };\n\n initUnreadNotificationsCountForCurrentUserObservable =\n (): 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 =\n !this.state.staticMenuDesktopInactive;\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 =\n !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([\n this.authService.user$,\n this.unreadNotificationsCount$,\n ]).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 = (\n event: AutoCompleteCompleteEvent,\n ): 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 {\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n} 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 { LayoutServiceBase } from '../../../services/app-layout.service.base';\nimport { AuthServiceBase } from '../../../services/auth.service.base';\nimport { ApiSecurityService } from '../../../services/api.service.security';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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(\n 'collapsed',\n style({\n height: '0',\n }),\n ),\n state(\n 'expanded',\n style({\n height: '*',\n }),\n ),\n transition(\n 'collapsed <=> expanded',\n animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'),\n ),\n ]),\n ],\n imports: [\n CommonModule,\n RouterModule,\n TranslocoDirective,\n SpiderlyControlsModule,\n ],\n})\nexport class MenuitemComponent implements OnInit, OnDestroy {\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, {\n updateOn: 'change',\n });\n\n partnerOptions: Namebook[];\n\n constructor(\n public layoutService: LayoutServiceBase,\n private cd: ChangeDetectorRef,\n public router: Router,\n private menuService: SidebarMenuService,\n private authService: AuthServiceBase,\n private apiService: ApiSecurityService,\n private config: ConfigServiceBase,\n ) {\n this.menuSourceSubscription = this.menuService.menuSource$.subscribe(\n (value) => {\n Promise.resolve(null).then(() => {\n if (value.routeEvent) {\n this.active =\n value.key === this.key || value.key.startsWith(this.key + '-')\n ? true\n : false;\n } else {\n if (\n value.key !== this.key &&\n !value.key.startsWith(this.key + '-')\n ) {\n this.active = false;\n }\n }\n });\n },\n );\n\n this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {\n this.active = false;\n });\n\n this.router.events\n .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\n ? this.parentKey + '-' + this.index\n : String(this.index);\n\n if (this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n\n this.permissionSubscription =\n this.authService.currentUserPermissionCodes$.subscribe(\n (currentUserPermissionCodes: string[]) => {\n if (this.item && typeof this.item.hasPermission === 'function') {\n this.item.visible = this.item.hasPermission(\n currentUserPermissionCodes,\n );\n }\n },\n );\n }\n\n updateActiveStateFromRoute() {\n let activeRoute = this.router.isActive(this.item.routerLink[0], {\n paths: 'exact',\n queryParams: 'ignored',\n matrixParams: 'ignored',\n fragment: 'ignored',\n });\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(\n this.selectedPartner.value,\n );\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\">\n {{ item.label }}\n </div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible === true\"\n [attr.href]=\"item.url\"\n (click)=\"itemClick($event)\"\n [ngClass]=\"item.styleClass\"\n [attr.target]=\"item.target\"\n tabindex=\"0\"\n pRipple\n >\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label }}</span>\n <i\n class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"\n *ngIf=\"item.items\"\n ></i>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items && item.visible === true\"\n (click)=\"itemClick($event)\"\n [ngClass]=\"item.styleClass\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"\n item.routerLinkActiveOptions || {\n paths: 'exact',\n queryParams: 'ignored',\n matrixParams: 'ignored',\n fragment: 'ignored',\n }\n \"\n [fragment]=\"item.fragment\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [state]=\"item.state\"\n [queryParams]=\"item.queryParams\"\n [attr.target]=\"item.target\"\n tabindex=\"0\"\n pRipple\n >\n <i [ngClass]=\"item.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label }}</span>\n <i\n class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"\n *ngIf=\"item.items\"\n ></i>\n </a>\n\n <ul\n *ngIf=\"item.items && item.visible === true\"\n [@children]=\"submenuAnimation\"\n >\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li\n menuitem\n [item]=\"child\"\n [index]=\"i\"\n [parentKey]=\"key\"\n [class]=\"child.badgeStyleClass\"\n ></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</ng-container>\n","import { TranslocoService } from '@jsverse/transloco';\nimport { Input, OnInit } from '@angular/core';\nimport { Component } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { LayoutServiceBase } from '../../../services/app-layout.service.base';\nimport { AuthServiceBase } from '../../../services/auth.service.base';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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: [CommonModule, MenuitemComponent],\n})\nexport class SidebarMenuComponent implements OnInit {\n @Input() menu: SpiderlyMenuItem[];\n\n constructor(\n public layoutService: LayoutServiceBase,\n private authService: AuthServiceBase,\n private translocoService: TranslocoService,\n private config: ConfigServiceBase,\n ) {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {}\n}\n","<ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menu; let i = index\">\n <li\n menuitem\n *ngIf=\"!item.separator\"\n [item]=\"item\"\n [index]=\"i\"\n [root]=\"true\"\n ></li>\n <li\n *ngIf=\"item.separator\"\n class=\"gray-separator\"\n style=\"margin-top: 11px\"\n ></li>\n </ng-container>\n</ul>\n","import { Component, ElementRef, Input } from '@angular/core';\nimport {\n SidebarMenuComponent,\n SpiderlyMenuItem,\n} from './sidebar-menu.component';\n\n@Component({\n selector: 'sidebar',\n templateUrl: './sidebar.component.html',\n imports: [SidebarMenuComponent],\n})\nexport class AppSidebarComponent {\n @Input() menu: SpiderlyMenuItem[];\n\n constructor(public el: ElementRef) {}\n\n ngOnInit() {}\n}\n","<sidebar-menu [menu]=\"menu\"></sidebar-menu>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { AvatarModule } from 'primeng/avatar';\nimport { LayoutServiceBase } from '../../../services/app-layout.service.base';\nimport { UserBase } from '../../../entities/security-entities';\nimport { filter, Subscription } from 'rxjs';\nimport { AuthServiceBase } from '../../../services/auth.service.base';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { BadgeModule } from 'primeng/badge';\nimport { SpiderlyButtonComponent } from '../../spiderly-buttons/spiderly-button/spiderly-button.component';\nimport { ConfigServiceBase } from '../../../services/config.service.base';\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:\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'help'\n | 'primary'\n | 'secondary'\n | 'contrast'\n | null\n | 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 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')\n topbarProfileDropdownMenuButton!: ElementRef;\n\n constructor(\n public layoutService: LayoutServiceBase,\n private authService: AuthServiceBase,\n protected router: Router,\n private translocoService: TranslocoService,\n public config: ConfigServiceBase,\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\n .initTopBarData()\n .subscribe((initTopBarData) => {\n this.userProfilePath = initTopBarData.userProfilePath;\n this.unreadNotificationsCount = initTopBarData.unreadNotificationsCount;\n this.notificationMenuItem.showNotificationBadge =\n initTopBarData.unreadNotificationsCount > 0;\n this.showProfileIcon = initTopBarData.showProfileIcon;\n this.currentUser = initTopBarData.currentUser;\n this.avatarLabel = initTopBarData.currentUser?.email\n .charAt(0)\n .toLocaleUpperCase();\n });\n };\n\n onDocumentClick(event: any) {\n if (!this.menu.nativeElement.contains(event.target)) {\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\nexport interface ProfileAvatarModalMenuItem {\n label?: string;\n icon?: string;\n showSeparator?: boolean;\n onClick?: () => void;\n showNotificationBadge?: boolean;\n}\n","<ng-container *transloco=\"let t\">\n <div *ngIf=\"this.currentUser != null\" #topbarmenu>\n <div\n #topbarprofiledropdownmenubutton\n (click)=\"layoutService.showProfileDropdownSidebar()\"\n >\n <p-avatar\n *ngIf=\"showProfileIcon\"\n [label]=\"avatarLabel\"\n [style]=\"{\n 'background-color': 'var(--p-primary-color)',\n color: '#fff',\n cursor: 'pointer',\n width: '34px',\n height: '34px',\n 'font-size': '21px',\n }\"\n pBadge\n [badgeStyleClass]=\"'p-badge-danger'\"\n [badgeDisabled]=\"\n unreadNotificationsCount == 0 || unreadNotificationsCount == null\n \"\n [value]=\"unreadNotificationsCount\"\n />\n </div>\n <div #topbarprofiledropdownmenu (document:click)=\"onDocumentClick($event)\">\n <div\n *ngIf=\"layoutService.state.profileDropdownSidebarVisible\"\n style=\"\n width: 280px;\n position: absolute;\n padding: 15px;\n background: var(--p-content-background);\n \"\n class=\"card\"\n [ngClass]=\"{\n 'side-menu-profile-dialog': isSideMenuLayout,\n 'top-menu-profile-dialog': !isSideMenuLayout,\n }\"\n >\n <div\n style=\"\n display: flex;\n flex-direction: column;\n justify-content: center;\n text-align: center;\n gap: 10px;\n \"\n >\n <p-avatar\n [label]=\"avatarLabel\"\n size=\"xlarge\"\n [style]=\"{\n 'background-color': 'var(--p-primary-color)',\n color: '#fff',\n margin: 'auto',\n cursor: routeOnLargeProfileAvatarClick ? 'pointer' : '',\n }\"\n (click)=\"routeToUserPage()\"\n />\n <div style=\"font-size: 15px\">{{ currentUser?.email }}</div>\n </div>\n <div style=\"margin-top: 15px\">\n <div\n *ngFor=\"let item of menuItems\"\n [style]=\"item.showSeparator ? 'margin-top: 5px;' : ''\"\n >\n <div *ngIf=\"item.showSeparator\" class=\"gray-separator\"></div>\n <div\n (click)=\"item.onClick()\"\n class=\"hover-card\"\n style=\"\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 5px;\n \"\n >\n <i\n class=\"pi pi-fw {{ item.icon }}\"\n style=\"font-size: 16px; position: relative\"\n >\n <span\n *ngIf=\"\n item.showNotificationBadge && unreadNotificationsCount != 0\n \"\n class=\"badge\"\n ></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 <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>\n","import { ConfigServiceBase } from '../../../services/config.service.base';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { LayoutServiceBase } from '../../../services/app-layout.service.base';\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: LayoutServiceBase,\n protected router: Router,\n private config: ConfigServiceBase,\n private translocoService: TranslocoService,\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></spiderly-profile-avatar>\n </div>\n</div>\n","import { ConfigServiceBase } from '../../../services/config.service.base';\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 { AuthServiceBase } from '../../../services/auth.service.base';\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: AuthServiceBase,\n private config: ConfigServiceBase,\n ) {}\n\n ngOnInit() {\n this.permissionSubscription =\n this.authService.currentUserPermissionCodes$.subscribe(\n (currentUserPermissionCodes: string[]) => {\n this.hideMenuItemsBasedOnPermissions(\n this.menu,\n currentUserPermissionCodes,\n );\n },\n );\n }\n\n hideMenuItemsBasedOnPermissions = (\n menu: SpiderlyMenuItem[],\n currentUserPermissionCodes: string[],\n ) => {\n menu.forEach((menuItem) => {\n if (menuItem.items) {\n this.hideMenuItemsBasedOnPermissions(\n menuItem.items,\n currentUserPermissionCodes,\n );\n }\n if (typeof menuItem.hasPermission === 'function') {\n menuItem.visible =\n menuItem.hasPermission(currentUserPermissionCodes) ?? false;\n }\n });\n };\n\n ngOnDestroy() {\n if (this.permissionSubscription) {\n this.permissionSubscription.unsubscribe();\n }\n }\n}\n","<div class=\"topbar-wrapper\">\n <nav\n class=\"topbar {{\n showHoverBgOnRootItems ? '' : 'show-hover-bg-on-root-items'\n }}\"\n >\n <p-menubar [model]=\"menu\" [style]=\"{ border: '0' }\">\n <ng-template #start>\n <img\n style=\"margin-left: 11px; cursor: pointer\"\n width=\"45\"\n height=\"45\"\n routerLink=\"/\"\n [src]=\"logoPath\"\n alt=\"Logo\"\n />\n </ng-template>\n <ng-template #end>\n <div\n style=\"\n margin-right: 11px;\n display: flex;\n gap: 10px;\n align-items: center;\n position: relative;\n \"\n >\n <div>\n <ng-content select=\"[ACTIONS]\"></ng-content>\n </div>\n <spiderly-profile-avatar\n [isSideMenuLayout]=\"false\"\n ></spiderly-profile-avatar>\n </div>\n </ng-template>\n </p-menubar>\n </nav>\n</div>\n","import {\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Renderer2,\n ViewChild,\n} 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 { LayoutServiceBase } from '../../services/app-layout.service.base';\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: LayoutServiceBase,\n protected renderer: Renderer2,\n protected router: Router,\n ) {\n this.overlayMenuOpenSubscription =\n this.layoutService.overlayOpen$.subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen(\n 'document',\n 'click',\n (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(\n event.target,\n ) ||\n this.sidemenuTopbar?.menuButton?.nativeElement.contains(\n event.target,\n ) ||\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\n if (!this.profileMenuOutsideClickListener) {\n this.profileMenuOutsideClickListener = this.renderer.listen(\n 'document',\n 'click',\n (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\n if (this.layoutService.state.staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n\n this.router.events\n .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 } 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 } 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 } else {\n document.body.className = document.body.className.replace(\n new RegExp(\n '(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)',\n 'gi',\n ),\n ' ',\n );\n }\n }\n\n get containerClass() {\n return {\n 'layout-theme-light':\n this.layoutService.layoutConfig.colorScheme === 'light',\n 'layout-theme-dark':\n 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':\n this.layoutService.state.staticMenuDesktopInactive &&\n 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","<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\n [menu]=\"topMenu\"\n [showHoverBgOnRootItems]=\"showHoverBgOnRootTopMenuItems\"\n >\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>\n","import { Component } from '@angular/core';\nimport { ConfigServiceBase } from '../../services/config.service.base';\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: [RouterModule, ButtonModule],\n})\nexport class NotFoundComponent {\n companyName = this.config.companyName;\n logoPath: string = this.config.logoPath;\n\n constructor(private config: ConfigServiceBase) {}\n}\n","<div class=\"flex min-h-screen overflow-hidden\" style=\"padding: 20px\">\n <div class=\"flex flex-column w-full\">\n <div\n class=\"w-full sm:w-30rem\"\n style=\"\n margin: auto;\n border-radius: 50px;\n padding: 0.3rem;\n background: linear-gradient(\n 180deg,\n var(--p-primary-color) 10%,\n rgba(33, 150, 243, 0) 30%\n );\n \"\n >\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\">\n 404\n </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\n 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>\n","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: [CommonModule, ButtonModule, SplitButtonModule],\n})\nexport class SpiderlySplitButtonComponent extends SpiderlyButtonBaseComponent {\n @Input() dropdownItems: MenuItem[];\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>\n","export enum MatchModeCodes {\n StartsWith,\n Contains,\n Equals,\n LessThan,\n GreaterThan,\n In,\n}\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: [SpiderlyButtonComponent, TranslocoDirective, ConfirmDialogModule],\n providers: [ConfirmationService],\n})\nexport class SpiderlyDeleteConfirmationComponent {\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig,\n ) {}\n\n accept() {\n this.config.data\n .deleteItemFromTableObservableMethod(this.config.data.id)\n .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}\n","<ng-container *transloco=\"let t\">\n <p-confirmDialog #cd></p-confirmDialog>\n <div\n class=\"border-bottom-1 surface-border text-lg\"\n style=\"\n display: flex;\n align-items: center;\n padding-bottom: 10px;\n width: 100%;\n gap: 10px;\n \"\n >\n <i class=\"pi pi-exclamation-circle text-4xl\"></i>\n <p>{{ t(\"PleaseConfirmToProceed\") }}</p>\n </div>\n\n <div\n style=\"display: flex; gap: 12px; justify-content: right; margin-top: 28px\"\n >\n <spiderly-button\n (onClick)=\"reject()\"\n icon=\"pi pi-times\"\n [label]=\"t('Cancel')\"\n severity=\"secondary\"\n ></spiderly-button>\n <spiderly-button\n (onClick)=\"accept()\"\n icon=\"pi pi-check\"\n [label]=\"t('Confirm')\"\n styleClass=\"p-button-danger\"\n ></spiderly-button>\n </div>\n</ng-container>\n","import { CommonModule, formatDate } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n ViewChild,\n} 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 {\n Table,\n TableFilterEvent,\n TableLazyLoadEvent,\n TableModule,\n} 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 {\n exportListToExcel,\n getHtmlImgDisplayString64,\n} 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: (\n tableFilter: Filter,\n ) => Observable<PaginatedResult>;\n @Input() exportListToExcelObservableMethod: (\n tableFilter: Filter,\n ) => Observable<any>;\n @Input() deleteItemFromTableObservableMethod: (\n rowId: number,\n ) => 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> =\n new EventEmitter();\n @Input() selectedLazyLoadObservableMethod: (\n tableFilter: Filter,\n ) => 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: (\n formControlName: string,\n index: number,\n additionalIndexes?: any,\n ) => 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 {\n label: this.translocoService.translate('OnDate'),\n value: MatchModeCodes.Equals,\n },\n {\n label: this.translocoService.translate('DatesBefore'),\n value: MatchModeCodes.LessThan,\n },\n {\n label: this.translocoService.translate('DatesAfter'),\n value: MatchModeCodes.GreaterThan,\n },\n ];\n\n this.matchModeNumberOptions = [\n {\n label: this.translocoService.translate('Equals'),\n value: MatchModeCodes.Equals,\n },\n {\n label: this.translocoService.translate('LessThan'),\n value: MatchModeCodes.LessThan,\n },\n {\n label: this.translocoService.translate('MoreThan'),\n value: MatchModeCodes.GreaterThan,\n },\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 =\n await firstValueFrom(\n this.selectedLazyLoadObservableMethod(tableFilter),\n );\n\n this.currentPageSelectedItemsFromDb = [\n ...selectedRowsMethodResult.selectedIds,\n ];\n\n if (this.isFirstTimeLazyLoad == true) {\n this.rowsSelectedNumber =\n 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(\n (x) => this.unselectedItems.includes(x) == false,\n );\n this.fakeSelectedItems = [...idsToInsert]; // Only for showing checkboxes, we will not send this to the backend\n } else if (this.isAllSelected == false) {\n this.fakeSelectedItems = [...this.newlySelectedItems]; // Only for showing checkboxes, we will not send this to the backend\n } else if (this.isAllSelected == null) {\n let idsToInsert = [\n ...selectedRowsMethodResult.selectedIds,\n ...this.newlySelectedItems,\n ];\n idsToInsert = idsToInsert.filter(\n (x) => this.unselectedItems.includes(x) == false,\n );\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(\n this.additionalIndexes,\n );\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 } 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 */\n navigateToDetails(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 } 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(\n SpiderlyDeleteConfirmationComponent,\n {\n header: this.translocoService.translate('AreYouSure'),\n width: '400px',\n data: {\n deleteItemFromTableObservableMethod:\n this.deleteItemFromTableObservableMethod,\n id: rowId,\n },\n },\n );\n\n this.deleteRef.onClose.subscribe((deletedSuccessfully: boolean) => {\n if (deletedSuccessfully === true) {\n this.messageService.successMessage(\n this.translocoService.translate('SuccessfullyDeletedMessage'),\n );\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) return null;\n\n if (col.showTime)\n return formatDate(\n rowData[col.field],\n 'dd.MM.yyyy. HH:mm',\n this.locale,\n );\n else 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\n ? this.translocoService.translate('Yes')\n : 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 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(\n new AllClickEvent({\n checked: true,\n additionalIndexes: this.additionalIndexes,\n }),\n );\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 } else {\n this.isAllSelected = false;\n this.fakeIsAllSelected = false;\n this.onIsAllSelectedChange.next(\n new AllClickEvent({\n checked: false,\n additionalIndexes: this.additionalIndexes,\n }),\n );\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(\n new RowClickEvent({\n index: index,\n id: id,\n additionalIndexes: this.additionalIndexes,\n }),\n );\n } else {\n this.rowSelect(id);\n this.onRowSelect.next(\n new RowClickEvent({\n index: index,\n id: id,\n additionalIndexes: this.additionalIndexes,\n }),\n );\n }\n }\n\n isRowSelected(id: number) {\n if (this.hasLazyLoad) {\n return this.fakeSelectedItems.find((x) => x === id) != undefined;\n } else {\n return this.selectedItemIds.find((x) => x === id) != undefined;\n }\n }\n\n rowSelect(id: number) {\n if (\n this.isAllSelected == false ||\n this.currentPageSelectedItemsFromDb.includes(id) == false\n ) {\n this.newlySelectedItems.push(id);\n }\n\n if (this.hasLazyLoad) {\n this.fakeSelectedItems.push(id);\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 (\n this.isAllSelected == true ||\n this.currentPageSelectedItemsFromDb.includes(id) == true\n ) {\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(\n formControlName: string,\n index: number,\n ): SpiderlyFormControl {\n if (this.getFormControl) {\n return this.getFormControl(\n formControlName,\n index,\n 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 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 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 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 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 index,\n id,\n additionalIndexes,\n }: {\n index?: number;\n id?: number;\n additionalIndexes?: any;\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 checked,\n additionalIndexes,\n }: {\n checked?: boolean;\n additionalIndexes?: any;\n } = {}) {\n this.checked = checked;\n this.additionalIndexes = additionalIndexes;\n }\n}\n","<ng-container *transloco=\"let t\">\n <div\n [class]=\"\n showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\n \"\n >\n <p-table\n #dt\n [value]=\"items\"\n [rows]=\"rows\"\n [rowHover]=\"true\"\n [paginator]=\"showPaginator\"\n responsiveLayout=\"scroll\"\n [lazy]=\"hasLazyLoad\"\n (onLazyLoad)=\"lazyLoad($event)\"\n [totalRecords]=\"totalRecords\"\n class=\"spiderly-table\"\n [loading]=\"items === undefined || loading === true\"\n [selectionMode]=\"selectionMode\"\n dataKey=\"id\"\n (onFilter)=\"filter($event)\"\n >\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\n pButton\n [label]=\"t('ClearFilters')\"\n class=\"p-button-outlined\"\n style=\"flex: none\"\n icon=\"pi pi-filter-slash\"\n (click)=\"clear(dt)\"\n ></button>\n <button\n pButton\n *ngIf=\"showExportToExcelButton\"\n [label]=\"t('ExportToExcel')\"\n class=\"p-button-outlined\"\n style=\"flex: none\"\n icon=\"pi pi-download\"\n (click)=\"exportListToExcel()\"\n ></button>\n <button\n pButton\n *ngIf=\"showReloadTableButton\"\n [label]=\"t('Reload')\"\n class=\"p-button-outlined\"\n style=\"flex: none\"\n icon=\"pi pi-refresh\"\n (click)=\"reload()\"\n ></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\n [disabled]=\"readonly\"\n (onChange)=\"selectAll($event.checked)\"\n [(ngModel)]=\"fakeIsAllSelected\"\n [binary]=\"true\"\n ></p-checkbox>\n ({{ rowsSelectedNumber }})\n </div>\n </th>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <th [style]=\"getColHeaderWidth(col.filterType)\">\n <div\n style=\"\n display: flex;\n justify-content: space-between;\n align-items: center;\n \"\n >\n {{ col.name }}\n <p-columnFilter\n *ngIf=\"col.filterType != null && col.filterType !== 'blob'\"\n [type]=\"col.filterType\"\n [field]=\"col.filterField ?? col.field\"\n display=\"menu\"\n [placeholder]=\"col.filterPlaceholder\"\n [showOperator]=\"false\"\n [showMatchModes]=\"col.showMatchModes\"\n [showAddButton]=\"col.showAddButton\"\n [matchModeOptions]=\"getColMatchModeOptions(col.filterType)\"\n [matchMode]=\"getColMatchMode(col.filterType)\"\n >\n <ng-template\n *ngIf=\"isDropOrMulti(col.filterType)\"\n pTemplate=\"filter\"\n let-value\n let-filter=\"filterCallback\"\n >\n <p-multiSelect\n [ngModel]=\"value\"\n [options]=\"col.dropdownOrMultiselectValues\"\n [placeholder]=\"t('All')\"\n (onChange)=\"filter($event.value)\"\n optionLabel=\"label\"\n optionValue=\"code\"\n [style]=\"{ width: '240px' }\"\n >\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\n *ngIf=\"col.filterType == 'date'\"\n pTemplate=\"filter\"\n let-value\n let-filter=\"filterCallback\"\n >\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\n pTemplate=\"body\"\n let-rowData\n let-index=\"rowIndex\"\n let-editing=\"editing\"\n >\n <tr\n [class.clickable]=\"navigateOnRowClick\"\n (click)=\"onRowClick(rowData)\"\n >\n <td *ngIf=\"selectionMode == 'multiple'\">\n <p-checkbox\n [disabled]=\"readonly\"\n (onChange)=\"selectRow(rowData[idField], rowData.index)\"\n [ngModel]=\"isRowSelected(rowData[idField])\"\n [binary]=\"true\"\n ></p-checkbox>\n </td>\n <ng-container *ngFor=\"let col of cols; trackBy: colTrackByFn\">\n <td [style]=\"getStyleForBodyColumn(col)\" *ngIf=\"!col.editable\">\n <div\n style=\"\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 18px;\n \"\n >\n <ng-container\n *ngFor=\"let action of col.actions; trackBy: actionTrackByFn\"\n >\n <span\n [pTooltip]=\"action.name\"\n [class]=\"getClassForAction(action)\"\n [style]=\"getStyleForAction(action)\"\n (click)=\"getMethodForAction(action, rowData)\"\n ></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\n [control]=\"getFormArrayControlByIndex(col.field, rowData.index)\"\n [showLabel]=\"false\"\n ></spiderly-number>\n </td>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n [attr.colspan]=\"\n cols?.length + (selectionMode === 'multiple' ? 1 : 0)\n \"\n >\n {{ t(\"NoRecordsFound\") }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingbody\">\n <tr>\n <td\n [attr.colspan]=\"\n cols?.length + (selectionMode === 'multiple' ? 1 : 0)\n \"\n >\n {{ t(\"Loading\") }}...\n </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\n *ngIf=\"showAddButton\"\n [label]=\"t('AddNew')\"\n icon=\"pi pi-plus\"\n (onClick)=\"navigateToDetails(0)\"\n ></spiderly-button>\n </div>\n </ng-template>\n </p-table>\n </div>\n</ng-container>\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n Table,\n TableFilterEvent,\n TableLazyLoadEvent,\n TableModule,\n} 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: (\n filter: Filter,\n ) => 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 {\n label: this.translocoService.translate('OnDate'),\n value: MatchModeCodes.Equals,\n },\n {\n label: this.translocoService.translate('DatesBefore'),\n value: MatchModeCodes.LessThan,\n },\n {\n label: this.translocoService.translate('DatesAfter'),\n value: MatchModeCodes.GreaterThan,\n },\n ];\n\n this.matchModeNumberOptions = [\n {\n label: this.translocoService.translate('Equals'),\n value: MatchModeCodes.Equals,\n },\n {\n label: this.translocoService.translate('LessThan'),\n value: MatchModeCodes.LessThan,\n },\n {\n label: this.translocoService.translate('MoreThan'),\n value: MatchModeCodes.GreaterThan,\n },\n ];\n }\n\n lazyLoad(event: TableLazyLoadEvent) {\n this.lastLazyLoadEvent = event;\n\n const transformedFilter: {\n [K in keyof T]?: { value: any; matchMode: MatchModeCodes }[];\n } = {};\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 } else {\n transformedFilter[key] = [\n {\n value: filterMeta.value,\n matchMode: filterMeta.matchMode,\n },\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 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}\n","<ng-container *transloco=\"let t\">\n <div\n [class]=\"\n showCardWrapper ? 'card responsive-card-padding overflow-auto' : ''\n \"\n >\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\"\n 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\n style=\"\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n position: relative;\n \"\n >\n <div>\n <label>\n {{ filter.label }}\n </label>\n </div>\n\n <p-columnFilter\n *ngIf=\"filter.type != null\"\n [type]=\"filter.type\"\n [field]=\"filter.filterField ?? filter.field\"\n display=\"row\"\n [placeholder]=\"filter.placeholder\"\n [showOperator]=\"false\"\n [showMenu]=\"filter.showMatchModes\"\n [showMatchModes]=\"true\"\n [showClearButton]=\"false\"\n [matchMode]=\"getDefaultMatchMode(filter.type)\"\n [matchModeOptions]=\"getMatchModeOptions(filter.type)\"\n >\n <ng-container *ngIf=\"filter.type == 'multiselect'\">\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filter=\"filterCallback\"\n >\n <p-multiSelect\n [ngModel]=\"value\"\n [options]=\"filter.dropdownOrMultiselectValues\"\n [placeholder]=\"t('All')\"\n (onChange)=\"filter($event.value)\"\n optionLabel=\"label\"\n optionValue=\"code\"\n [style]=\"{ width: '100%' }\"\n >\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\n [label]=\"t('ApplyFilters')\"\n (onClick)=\"applyFilters()\"\n [icon]=\"applyFiltersIcon\"\n ></spiderly-button>\n <spiderly-button\n [label]=\"t('ClearFilters')\"\n (onClick)=\"clearFilters()\"\n [icon]=\"clearFiltersIcon\"\n ></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\n *ngTemplateOutlet=\"\n cardBody;\n context: { $implicit: rowData, item: rowData, index: index }\n \"\n >\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>\n","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\n style=\"display: flex; align-items: center; margin-bottom: 14px; gap: 8px\"\n >\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>\n","import { BaseEntity } from './base-entity';\n\n// FT HACK: Fake class, because of api imports\nexport class Codebook extends BaseEntity {\n code?: string;\n displayName?: string;\n\n constructor({\n code,\n displayName,\n }: {\n code?: string;\n displayName?: string;\n } = {}) {\n super();\n\n this.code = code;\n this.displayName = displayName;\n }\n\n static readonly typeName = 'Codebook' as const;\n}\n","export class FilterSortMeta {\n field: string;\n order: number;\n\n constructor({\n field,\n order,\n }: {\n field?: string;\n order?: number;\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}\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 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 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() {\n return FilterSortMeta;\n },\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}\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 matchMode: AllowedMatchModes<T>;\n value: T;\n operator?: string;\n}\n\ntype AllowedMatchModes<T> = T extends string\n ? MatchModeCodes.Contains | MatchModeCodes.StartsWith | MatchModeCodes.Equals\n : T extends boolean\n ? MatchModeCodes.Equals\n : T extends Date\n ?\n | MatchModeCodes.Equals\n | MatchModeCodes.GreaterThan\n | MatchModeCodes.LessThan\n : T extends number\n ?\n | MatchModeCodes.Equals\n | MatchModeCodes.GreaterThan\n | MatchModeCodes.LessThan\n | MatchModeCodes.In\n : MatchModeCodes;\n","import { BaseEntity } from './base-entity';\n\nexport class IsAuthorizedForSaveEvent extends BaseEntity {\n isAuthorizedForSave?: boolean;\n\n constructor({\n isAuthorizedForSave,\n }: {\n isAuthorizedForSave?: boolean;\n } = {}) {\n super();\n\n this.isAuthorizedForSave = isAuthorizedForSave;\n }\n\n static readonly typeName = 'IsAuthorizedForSaveEvent' as const;\n}\n","import { BaseEntity } from './base-entity';\n\nexport class LastMenuIconIndexClicked extends BaseEntity {\n index?: number;\n\n constructor({\n index,\n }: {\n index?: number;\n } = {}) {\n super();\n\n this.index = index;\n }\n\n static readonly typeName = 'LastMenuIconIndexClicked' as const;\n}\n","import { BaseEntity } from '../entities/base-entity';\n\nexport class LazyLoadSelectedIdsResult extends BaseEntity {\n selectedIds?: number[] = []; // FT: Only for showing checkboxes, we will not send this to the backend\n totalRecordsSelected?: number = 0;\n\n constructor({\n selectedIds,\n totalRecordsSelected,\n }: {\n selectedIds?: number[];\n totalRecordsSelected?: number;\n } = {}) {\n super();\n\n this.selectedIds = selectedIds;\n this.totalRecordsSelected = totalRecordsSelected;\n }\n\n static readonly typeName = 'LazyLoadSelectedIdsResult' as const;\n}\n","export class MenuChangeEvent {\n key: string;\n routeEvent?: boolean;\n}\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}\n","import { BaseEntity } from '../entities/base-entity';\n\nexport class Namebook extends BaseEntity {\n id?: any;\n displayName?: string;\n\n constructor({\n id,\n displayName,\n }: {\n id?: any;\n displayName?: string;\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}\n","export class PaginatedResult<T = any> {\n data?: T[];\n totalRecords: number;\n}\n","import { BaseEntity } from '../entities/base-entity';\n\nexport class PrimengOption extends BaseEntity {\n label?: string;\n code?: any; // Can't be value: https://github.com/primefaces/primeng/issues/17332#issuecomment-2922861294\n\n constructor({\n label,\n code,\n }: {\n label?: string;\n code?: any;\n } = {}) {\n super();\n\n this.label = label;\n this.code = code;\n }\n\n static readonly typeName = 'PrimengOption' as const;\n}\n","import { BaseEntity } from '../entities/base-entity';\n\n// FT HACK: Fake class, because of api imports\nexport class SimpleSaveResult extends BaseEntity {\n id?: string;\n\n constructor({\n id,\n }: {\n id?: string;\n } = {}) {\n super();\n\n this.id = id;\n }\n\n static typeName = 'SimpleSaveResult' as const;\n}\n","export enum SecurityPermissionCodes {\n ReadUser = 'ReadUser',\n UpdateUser = 'UpdateUser',\n InsertUser = 'InsertUser',\n DeleteUser = 'DeleteUser',\n ReadRole = 'ReadRole',\n UpdateRole = 'UpdateRole',\n InsertRole = 'InsertRole',\n DeleteRole = 'DeleteRole',\n ReadPermission = 'ReadPermission',\n UpdatePermission = 'UpdatePermission',\n InsertPermission = 'InsertPermission',\n DeletePermission = 'DeletePermission',\n}\n","export enum VerificationTypeCodes {\n Login = 0,\n Registration = 1,\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { Observable, map } from 'rxjs';\nimport { AuthServiceBase } from '../services/auth.service.base';\nimport { ConfigServiceBase } from '../services/config.service.base';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n private authService: AuthServiceBase,\n private router: Router,\n private config: ConfigServiceBase,\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 { AuthServiceBase } from '../services/auth.service.base';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotAuthGuard implements CanActivate {\n constructor(private authService: AuthServiceBase) {}\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 } 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 { ConfigServiceBase } from '../services/config.service.base';\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: ConfigServiceBase,\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","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) spinner.show();\n\n return next(req).pipe(\n finalize(() => {\n if (!shouldSkipSpinner) {\n spinner.hide();\n }\n }),\n ) as Observable<HttpEvent<any>>;\n};\n","import {\n HttpEvent,\n HttpResponse,\n HttpInterceptorFn,\n HttpRequest,\n HttpParams,\n} 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).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++) 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};\n","import { inject, PLATFORM_ID } from '@angular/core';\nimport { HttpInterceptorFn } from '@angular/common/http';\nimport { ConfigServiceBase } from '../services/config.service.base';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const jwtInterceptor: HttpInterceptorFn = (req, next) => {\n const config = inject(ConfigServiceBase);\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};\n","import {\n HttpErrorResponse,\n HttpInterceptorFn,\n HttpRequest,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AuthServiceBase } from '../services/auth.service.base';\nimport { ConfigServiceBase } from '../services/config.service.base';\nimport { SpiderlyMessageService } from '../services/spiderly-message.service';\n\nexport const unauthorizedInterceptor: HttpInterceptorFn = (req, next) => {\n const messageService = inject(SpiderlyMessageService);\n const translocoService = inject(TranslocoService);\n const config = inject(ConfigServiceBase);\n const authService = inject(AuthServiceBase);\n\n const handleAuthError = (\n err: HttpErrorResponse,\n request: HttpRequest<any>,\n ): Observable<any> => {\n if (!config.production) {\n console.error(err);\n }\n\n let errorResponse = err.error;\n\n if (request.responseType != 'json') errorResponse = JSON.parse(err.error);\n\n if (err.status == 0) {\n setTimeout(() => {\n // 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 } else if (err.status == 400) {\n messageService.warningMessage(\n errorResponse.message ??\n translocoService.translate('BadRequestDetails'),\n translocoService.translate('Warning'),\n );\n\n return of(err.message);\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 } else if (err.status == 403) {\n messageService.warningMessage(\n translocoService.translate('PermissionErrorDetails'),\n translocoService.translate('PermissionErrorTitle'),\n );\n return of(err.message);\n } else if (err.status == 404) {\n messageService.warningMessage(\n translocoService.translate('NotFoundDetails'),\n translocoService.translate('NotFoundTitle'),\n );\n return of(err.message);\n } else if (err.status == 419) {\n // Access token expired\n authService.clearLocalStorage();\n return of(err.message);\n } else {\n messageService.errorMessage(\n translocoService.translate('UnexpectedErrorDetails'),\n translocoService.translate('UnexpectedErrorTitle'),\n );\n\n return of(err.message);\n }\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 { AuthServiceBase } from './auth.service.base';\nimport { AuthResult } from '../entities/security-entities';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport function authInitializer(\n authService: AuthServiceBase,\n platformId,\n): () => Observable<AuthResult> {\n if (isPlatformBrowser(platformId)) {\n return () => {\n return authService.refreshToken();\n };\n }\n return () => {\n return of();\n };\n}\n","import { ConfigServiceBase } from './config.service.base';\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: ConfigServiceBase,\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","/*\n * Public API Surface of spiderly\n */\n\nexport * from './lib/controls/base-autocomplete-control';\nexport * from './lib/controls/base-control';\nexport * from './lib/controls/base-dropdown-control';\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-controls.module';\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';\n\nexport * from './lib/components/auth/login/login.component';\nexport * from './lib/components/auth/partials/login-verification.component';\nexport * from './lib/components/auth/partials/verification-wrapper.component';\nexport * from './lib/components/base-form/base-form copy';\nexport * from './lib/components/card-skeleton/card-skeleton.component';\nexport * from './lib/components/footer/footer.component';\nexport * from './lib/components/index-card/index-card.component';\nexport * from './lib/components/info-card/info-card.component';\nexport * from './lib/components/layout/layout.component';\nexport * from './lib/components/layout/profile-avatar/profile-avatar.component';\nexport * from './lib/components/layout/sidebar/menuitem.component';\nexport * from './lib/components/layout/sidebar/sidebar-menu.component';\nexport * from './lib/components/layout/sidebar/sidebar.component';\nexport * from './lib/components/layout/sidemenu-topbar/sidemenu-topbar.component';\nexport * from './lib/components/layout/topbar/topbar.component';\nexport * from './lib/components/not-found/not-found.component';\nexport * from './lib/components/required/required.component';\nexport * from './lib/components/spiderly-buttons/google-button/google-button.component';\nexport * from './lib/components/spiderly-buttons/return-button/return-button.component';\nexport * from './lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base';\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-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';\n\nexport * from './lib/entities/base-entity';\nexport * from './lib/entities/codebook';\nexport * from './lib/entities/filter';\nexport * from './lib/entities/filter-rule';\nexport * from './lib/entities/filter-sort-meta';\nexport * from './lib/entities/image-dimensions-validation-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';\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/paginated-result';\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';\n\nexport * from './lib/enums/match-mode-enum-codes';\nexport * from './lib/enums/security-enums';\nexport * from './lib/enums/verification-type-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/app-layout.service.base';\nexport * from './lib/services/auth.service.base';\nexport * from './lib/services/base-form.service';\nexport * from './lib/services/config.service.base';\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';\n\nexport * from './lib/directives/template-type.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ValidatorAbstractService","i6","i4","i5","i3","i2","i1","i2.SpiderlyMessageService","i3.ValidatorAbstractService","i1.TranslateLabelsAbstractService","i3.SpiderlyMessageService","i5.BaseFormService","i2.ConfigServiceBase","map","i1.ConfigServiceBase","i2.AuthServiceBase","i7.SpiderlyTextboxComponent","i8.SpiderlyButtonComponent","i9.PanelHeaderComponent","i10.PanelBodyComponent","i11.PanelFooterComponent","i12.SpiderlyPanelComponent","i1.AuthServiceBase","i6.AuthServiceBase","i7.ConfigServiceBase","i8","i9.SpiderlyTextboxComponent","i10.SpiderlyButtonComponent","i3.PanelHeaderComponent","i4.PanelBodyComponent","i5.SpiderlyPanelComponent","delay","i1.ApiSecurityService","i3.AuthServiceBase","i1.LayoutServiceBase","i3.SidebarMenuService","i4.AuthServiceBase","i5.ApiSecurityService","i6.ConfigServiceBase","i7","i8.SpiderlyAutocompleteComponent","i4.ConfigServiceBase","filter","i5.ConfigServiceBase","i3.ConfigServiceBase","i10","i11","i13","i14","i15","i4.SpiderlyButtonComponent","i1.SpiderlyMessageService","finalize","tap"],"mappings":"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"}
|