aril 1.1.75 → 1.1.76

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.
@@ -1 +1 @@
1
- {"version":3,"file":"aril-theme-layout.mjs","sources":["../../projects/aril/theme/layout/app/profileSidebar/profile.service.ts","../../projects/aril/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.ts","../../projects/aril/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.html","../../projects/aril/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.ts","../../projects/aril/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.html","../../projects/aril/theme/layout/service/app.layout.service.ts","../../projects/aril/theme/layout/app/profileSidebar/app.profilesidebar.component.ts","../../projects/aril/theme/layout/app/profileSidebar/app.profilesidebar.component.html","../../projects/aril/theme/layout/app/history/history.service.ts","../../projects/aril/theme/layout/app/history/history-sidebar.component.ts","../../projects/aril/theme/layout/app/history/history-sidebar.component.html","../../projects/aril/theme/layout/app/site-map/site-map-sidebar.component.ts","../../projects/aril/theme/layout/app/site-map/site-map-sidebar.component.html","../../projects/aril/theme/layout/app/favorite-pages/favorite-pages.service.ts","../../projects/aril/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.ts","../../projects/aril/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.html","../../projects/aril/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.ts","../../projects/aril/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.html","../../projects/aril/theme/layout/service/interfaces/enum.ts","../../projects/aril/theme/layout/app/general-search/models.ts","../../projects/aril/theme/layout/app/general-search/helpers.ts","../../projects/aril/theme/layout/service/search.service.ts","../../projects/aril/theme/layout/app/general-search/general-search.component.ts","../../projects/aril/theme/layout/app/general-search/general-search.component.html","../../projects/aril/theme/layout/app/topbar/app.topbar.component.ts","../../projects/aril/theme/layout/app/topbar/app.topbar.component.html","../../projects/aril/theme/layout/app/chatbot/app.chatbot.component.ts","../../projects/aril/theme/layout/app/chatbot/app.chatbot.component.html","../../projects/aril/theme/layout/service/app.menu.service.ts","../../projects/aril/theme/layout/app/expandableMenu/expandable-menu.component.ts","../../projects/aril/theme/layout/app/expandableMenu/expandable-menu.component.html","../../projects/aril/theme/layout/app/static-sidebar/static-sidebar.component.ts","../../projects/aril/theme/layout/app/static-sidebar/static-sidebar.component.html","../../projects/aril/theme/layout/service/notifications.service.ts","../../projects/aril/theme/layout/app/notifications/notifications-sidebar.component.ts","../../projects/aril/theme/layout/app/notifications/notifications-sidebar.component.html","../../projects/aril/theme/layout/app/layout/app.layout.component.ts","../../projects/aril/theme/layout/app/layout/app.layout.component.html","../../projects/aril/theme/layout/service/breadcrumb.service.ts","../../projects/aril/theme/layout/app/breadcrumb/app.breadcrumb.component.ts","../../projects/aril/theme/layout/app/breadcrumb/app.breadcrumb.component.html","../../projects/aril/theme/layout/app/layout/mfe.layout.component.ts","../../projects/aril/theme/layout/service/selection-group.service.ts","../../projects/aril/theme/layout/aril-theme-layout.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nimport {\r\n\tAuthorityTreeResponseDTO,\r\n\tClientResponseDTO,\r\n\tGetAllClientRequestDTO,\r\n\tGetRoleRequestDTO\r\n} from '../../service/interfaces/interfaces';\r\n\r\nexport interface GetUserRequestDTO {\r\n\tid: string;\r\n}\r\n\r\nexport interface UpdateUserRequestDTO {\r\n\tid: string;\r\n\tfirstName?: string;\r\n\tlastName?: string;\r\n\temail?: string;\r\n\tenabled?: boolean;\r\n\temailVerified?: boolean;\r\n\tphone?: string[];\r\n\ttckn?: string[];\r\n\tregions?: Array<{\r\n\t\tstartLevel: string;\r\n\t\tendLevel: string;\r\n\t}>;\r\n\tphotoUrl?: string[];\r\n\tnotes?: string[];\r\n\tuserTypeId?: string;\r\n\tclientOfSystemUser?: string;\r\n\tsystemUser?: boolean;\r\n\tpassword?: string | null;\r\n}\r\n\r\nexport interface ResetPasswordRequestDTO {\r\n\tuserId: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface UserResponseDTO {\r\n\tid: string;\r\n\tuserName: string;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tenabled: boolean;\r\n\tphone?: string | string[];\r\n\troles?: string[];\r\n\tuserTypes?: string[];\r\n\tphotoUrl?: string | string[];\r\n\tcreatedTimestamp?: number;\r\n\temailVerified?: boolean;\r\n\tlastSession?: number;\r\n\ttckn?: string | string[];\r\n\tnotes?: string | string[];\r\n\tsystemUser?: boolean;\r\n\tclientOfSystemUser?: string;\r\n\tuserTypeId?: string;\r\n\tregions?:\r\n\t\t| string[]\r\n\t\t| Array<{\r\n\t\t\t\tstartLevel: string;\r\n\t\t\t\tendLevel: string;\r\n\t\t }>;\r\n}\r\n\r\nexport const profileEndpoints = {\r\n\tgetUser: 'user-management/users/get',\r\n\tupdateUser: 'user-management/users/update',\r\n\tresetPassword: 'user-management/users/reset-password'\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ProfileService extends RestClient {\r\n\toverride states: ServiceCallStateMap<ProfileService> = {};\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, profileEndpoints.getUser, {}, Apps.MW)\r\n\tgetUser(post: GetUserRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<UserResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, profileEndpoints.updateUser, {}, Apps.MW)\r\n\tupdateUser(post: UpdateUserRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<UserResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, profileEndpoints.resetPassword, {}, Apps.MW)\r\n\tresetPassword(post: ResetPasswordRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<any>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ServerSide, 'user-management/clients', {}, Apps.MW)\r\n\tgetAllClientsList(post: GetAllClientRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<ClientResponseDTO[]>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'user-management/groups', {}, Apps.MW)\r\n\tgetAllUserType(post: GetRoleRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<UserResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.GET, ProxyTypes.Native, 'authority-tree', {}, Apps.MW)\r\n\tgetAuthorityTree(request: number) {\r\n\t\treturn new Observable<ServiceResponse<AuthorityTreeResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'user-management/clients', {}, Apps.MW)\r\n\tgetAllApp(post: any) {\r\n\t\treturn new Observable<ServiceResponse<any>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, effect } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport {\r\n\tAbstractControl,\r\n\tFormBuilder,\r\n\tFormControl,\r\n\tFormGroup,\r\n\tFormsModule,\r\n\tReactiveFormsModule,\r\n\tValidationErrors\r\n} from '@angular/forms';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { FieldComponent } from 'aril/ui/field';\r\nimport { ARiLFormModule } from 'aril/ui/form';\r\n\r\nimport { ProfileService, ResetPasswordRequestDTO } from '../../profile.service';\r\n\r\nexport class PasswordValidators {\r\n\tstatic passwordMatchValidator = (passwordFormGroup: FormGroup) => {\r\n\t\treturn (control: AbstractControl): ValidationErrors | null => {\r\n\t\t\tif (!control.value || !passwordFormGroup) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tconst passwordControl = passwordFormGroup.get('newPassword');\r\n\t\t\tconst confirmPasswordValue = control.value;\r\n\r\n\t\t\tif (!passwordControl || !confirmPasswordValue) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tconst passwordsMatch = passwordControl.value === confirmPasswordValue;\r\n\t\t\treturn passwordsMatch ? null : (\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpasswordMismatch: 'Şifreler eşleşmiyor. Lütfen aynı şifreyi giriniz.'\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t};\r\n\t};\r\n\r\n\tstatic minLength(length: number) {\r\n\t\treturn (control: AbstractControl): ValidationErrors | null => {\r\n\t\t\tif (!control.value || control.value.length >= length) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\treturn { minlength: `Şifre en az ${length} karakter olmalıdır.` };\r\n\t\t};\r\n\t}\r\n\r\n\tstatic required(control: AbstractControl): ValidationErrors | null {\r\n\t\tif (!control.value || control.value.trim() === '') {\r\n\t\t\treturn { required: 'Bu alan zorunludur.' };\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tFormsModule,\r\n\t\tARiLFormModule,\r\n\t\tFieldComponent,\r\n\t\tButtonComponent,\r\n\t\tPasswordModule,\r\n\t\tTooltipModule,\r\n\t\tTranslocoModule\r\n\t],\r\n\ttemplateUrl: './change-password-modal.component.html',\r\n\tstyleUrls: ['./change-password-modal.component.scss']\r\n})\r\nexport class ChangePasswordModalComponent {\r\n\tpasswordForm!: FormGroup;\r\n\tuserId: string;\r\n\r\n\tprivate subjects = {\r\n\t\tresetPassword: new Subject<ResetPasswordRequestDTO>()\r\n\t};\r\n\r\n\tresetPasswordService = toSignal(\r\n\t\tthis.subjects.resetPassword.pipe(switchMap((data) => this.profileService.resetPassword(data)))\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tprivate readonly formBuilder: FormBuilder,\r\n\t\tprivate readonly dialogRef: DynamicDialogRef,\r\n\t\tprivate readonly dialogConfig: DynamicDialogConfig,\r\n\t\tprivate readonly profileService: ProfileService,\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly messageService: MessageService\r\n\t) {\r\n\t\tthis.userId = this.dialogConfig.data?.userId;\r\n\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.resetPasswordService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('profileSidebar.changePasswordSuccess'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('profileSidebar.changePasswordSuccessDetail'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success' });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\tthis.initializeForm();\r\n\r\n\t\tif (!this.userId) {\r\n\t\t\tthis.dialogRef.close('error');\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeForm(): void {\r\n\t\tthis.passwordForm = this.formBuilder.group({\r\n\t\t\tnewPassword: new FormControl('', [PasswordValidators.required, PasswordValidators.minLength(6)]),\r\n\t\t\tconfirmPassword: new FormControl('', [PasswordValidators.required])\r\n\t\t});\r\n\r\n\t\tconst confirmPasswordControl = this.passwordForm.get('confirmPassword');\r\n\t\tif (confirmPasswordControl) {\r\n\t\t\tconfirmPasswordControl.setValidators([\r\n\t\t\t\tPasswordValidators.required,\r\n\t\t\t\tPasswordValidators.passwordMatchValidator(this.passwordForm)\r\n\t\t\t]);\r\n\t\t}\r\n\r\n\t\tthis.passwordForm.get('newPassword')?.valueChanges.subscribe(() => {\r\n\t\t\tconfirmPasswordControl?.updateValueAndValidity({ emitEvent: false });\r\n\t\t});\r\n\t}\r\n\r\n\tgetErrorMessage(controlName: string): string {\r\n\t\tconst control = this.passwordForm.get(controlName);\r\n\t\tif (control?.errors) {\r\n\t\t\tconst errors = control.errors;\r\n\t\t\tconst errorKeys = Object.keys(errors);\r\n\t\t\tif (errorKeys.length > 0) {\r\n\t\t\t\treturn errors[errorKeys[0]];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tsubmit(): void {\r\n\t\tif (this.passwordForm.invalid) {\r\n\t\t\tthis.passwordForm.markAllAsTouched();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst formValue = this.passwordForm.value;\r\n\t\tconst resetRequest: ResetPasswordRequestDTO = {\r\n\t\t\tuserId: this.userId,\r\n\t\t\tpassword: formValue.newPassword\r\n\t\t};\r\n\r\n\t\tthis.subjects.resetPassword.next(resetRequest);\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.dialogRef.close('cancel');\r\n\t}\r\n}\r\n","<div class=\"change-password-modal\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"passwordForm\">\r\n\t\t<aril-field [label]=\"t('newPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"newPassword\"\r\n\t\t\t\t[placeholder]=\"t('newPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('newPassword')?.invalid && passwordForm.get('newPassword')?.touched ? getErrorMessage('newPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('confirmPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"confirmPassword\"\r\n\t\t\t\t[placeholder]=\"t('confirmPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('confirmPassword')?.invalid && passwordForm.get('confirmPassword')?.touched ? getErrorMessage('confirmPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\t[raised]=\"false\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t(clickEvent)=\"submit()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { TreeSelectModule } from 'primeng/treeselect';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { CheckboxComponent } from 'aril/ui/checkbox';\r\nimport { FieldComponent } from 'aril/ui/field';\r\nimport { ARiLFormModule } from 'aril/ui/form';\r\nimport { MaskComponent } from 'aril/ui/mask';\r\nimport { PasswordComponent } from 'aril/ui/password';\r\nimport { SelectBoxComponent } from 'aril/ui/selectBox';\r\nimport { TextComponent } from 'aril/ui/text';\r\nimport { TextAreaComponent } from 'aril/ui/textArea';\r\nimport { TreeSelectComponent } from 'aril/ui/treeSelect';\r\n\r\nimport { ClientResponseDTO, GetAllClientRequestDTO } from '../../../../service/interfaces/interfaces';\r\nimport { ProfileService, UpdateUserRequestDTO, UserResponseDTO } from '../../profile.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tARiLFormModule,\r\n\t\tTranslocoModule,\r\n\t\tTreeSelectModule,\r\n\t\tReactiveFormsModule,\r\n\t\tTextComponent,\r\n\t\tMaskComponent,\r\n\t\tFieldComponent,\r\n\t\tButtonComponent,\r\n\t\tTextAreaComponent,\r\n\t\tCheckboxComponent,\r\n\t\tPasswordComponent,\r\n\t\tSelectBoxComponent,\r\n\t\tTreeSelectComponent\r\n\t],\r\n\ttemplateUrl: './edit-profile-modal.component.html'\r\n})\r\nexport class EditProfileModalComponent implements OnInit {\r\n\tconstructor(\r\n\t\tprivate readonly formBuilder: FormBuilder,\r\n\t\tprivate readonly dialogRef: DynamicDialogRef,\r\n\t\tprivate readonly messageService: MessageService,\r\n\t\tprivate readonly profileService: ProfileService,\r\n\t\tprivate readonly dialogConfig: DynamicDialogConfig,\r\n\t\tprivate readonly translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.userProfile = this.dialogConfig.data?.userProfile;\r\n\r\n\t\tthis.initializeEffects();\r\n\t\tthis.initializeForm();\r\n\t}\r\n\r\n\tprivate initializeEffects() {\r\n\t\tthis.subjects.getTree.next(0);\r\n\t\tthis.subjects.getUserType.next({ first: 0, max: 100 });\r\n\t\tthis.subjects.getClientList.next({ first: 0, max: 100 });\r\n\r\n\t\tif (this.dialogConfig?.data?.item?.id) {\r\n\t\t\tthis.subjects.getUserDetails.next({ id: this.dialogConfig.data.item.id });\r\n\t\t}\r\n\r\n\t\teffect(() => {\r\n\t\t\t\tconst service = this.updateUserService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('profileSidebar.updateSuccess'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('profileSidebar.updateSuccessDetail'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success', data: service.response });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getClientListService()?.response) {\r\n\t\t\t\tthis.prepareClientListDropdown(this.getClientListService()?.response as ClientResponseDTO[]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getUserTypeService()?.response) {\r\n\t\t\t\tthis.userTypeDatas = this.getUserTypeService()?.response;\r\n\t\t\t\tthis.userTypeItems = this.userTypeDatas.map((item: { name: string; id: string }) => ({\r\n\t\t\t\t\ttext: item.name,\r\n\t\t\t\t\tkey: item.id\r\n\t\t\t\t}));\r\n\t\t\t\tthis.initializeForm();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getUserDetailService()?.response) {\r\n\t\t\t\tthis.updateUserData = this.getUserDetailService()?.response;\r\n\t\t\t\tthis.initializeForm();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getAuthorityTreeService()?.response) {\r\n\t\t\t\tthis.treeData = this.getAuthorityTreeService()?.response;\r\n\t\t\t\tthis.treeItems = this.mapTreeData(this.treeData);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate subjects = {\r\n\t\tgetTree: new Subject<number>(),\r\n\t\tgetUserType: new Subject<any>(),\r\n\t\tgetUserDetails: new Subject<{ id: string }>(),\r\n\t\tupdateUser: new Subject<UpdateUserRequestDTO>(),\r\n\t\tgetClientList: new Subject<GetAllClientRequestDTO>()\r\n\t};\r\n\r\n\ttreeData: any;\r\n\ttreeItems: any;\r\n\tpageEdit = false;\r\n\tuserTypeItems: any;\r\n\tuserTypeDatas: any;\r\n\tupdateUserData: any;\r\n\tclientList: { key: string; text: string }[] = [];\r\n\tlevelPairs: Array<{ startLevel: string; endLevel: string }> = [];\r\n\r\n\tprofileForm!: FormGroup;\r\n\tuserProfile: UserResponseDTO;\r\n\tselectedUserTypeIds: string[] = [];\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.userProfile) {\r\n\t\t\tthis.dialogRef.close('error');\r\n\t\t}\r\n\t}\r\n\r\n\tupdateUserService = toSignal(\r\n\t\tthis.subjects.updateUser.pipe(switchMap((data) => this.profileService.updateUser(data)))\r\n\t);\r\n\r\n\tgetClientListService = toSignal(\r\n\t\tthis.subjects.getClientList.pipe(switchMap((data) => this.profileService.getAllClientsList(data)))\r\n\t);\r\n\r\n\tgetUserDetailService = toSignal(\r\n\t\tthis.subjects.getUserDetails.pipe(switchMap((data) => this.profileService.getUser(data)))\r\n\t);\r\n\r\n\tgetUserTypeService = toSignal(\r\n\t\tthis.subjects.getUserType.pipe(switchMap((data) => this.profileService.getAllUserType(data)))\r\n\t);\r\n\r\n\tgetAuthorityTreeService = toSignal(\r\n\t\tthis.subjects.getTree.pipe(switchMap((data) => this.profileService.getAuthorityTree(data)))\r\n\t);\r\n\r\n\tprivate initializeForm(): void {\r\n\t\tthis.updateUserData = this.getUserDetailService()?.response;\r\n\r\n\t\tconst userTypesFromResponse: string[] = this.userProfile?.userTypes || [];\r\n\t\tconst userTypeDatas = this.userTypeDatas || [];\r\n\r\n\t\tthis.selectedUserTypeIds = userTypeDatas\r\n\t\t\t.filter((type: { name: string }) => userTypesFromResponse.includes(type.name))\r\n\t\t\t.map((type: { id: any }) => type.id);\r\n\r\n\t\tthis.userTypeItems = userTypeDatas.map((type: { name: any; id: any }) => ({\r\n\t\t\tlabel: type.name,\r\n\t\t\tvalue: type.id\r\n\t\t}));\r\n\r\n\t\tthis.profileForm = this.formBuilder.group({\r\n\t\t\tid: new FormControl(this.userProfile?.id || null),\r\n\t\t\tsystemUser: new FormControl({ value: this.userProfile?.systemUser ?? true, disabled: false }),\r\n\t\t\tclientOfSystemUser: new FormControl({ value: this.userProfile?.clientOfSystemUser || '', disabled: false }),\r\n\t\t\tuserTypeId: new FormControl({ value: this.selectedUserTypeIds[0], disabled: false }),\r\n\t\t\tregions: new FormControl({ value: this.userProfile?.regions || '', disabled: false }),\r\n\t\t\tuserName: new FormControl({ value: this.userProfile?.userName || '', disabled: true }, [Validators.required]),\r\n\t\t\tfirstName: new FormControl(this.userProfile?.firstName || '', [Validators.required]),\r\n\t\t\tlastName: new FormControl(this.userProfile?.lastName || ''),\r\n\t\t\temail: new FormControl(this.userProfile?.email || '', [Validators.email, Validators.required]),\r\n\t\t\tphone: new FormControl(Array.isArray(this.userProfile?.phone) ? this.userProfile.phone[0] || '' : this.userProfile?.phone || ''),\r\n\t\t\ttckn: new FormControl(Array.isArray(this.userProfile?.tckn) ? this.userProfile.tckn[0] || '' : '', [Validators.required]),\r\n\t\t\tphotoUrl: new FormControl(this.userProfile?.photoUrl || ''),\r\n\t\t\tenabled: new FormControl({ value: this.userProfile?.enabled ?? true, disabled: false }),\r\n\t\t\temailVerified: new FormControl({ value: this.userProfile?.emailVerified ?? true, disabled: false }),\r\n\t\t\tnotes: new FormControl(this.userProfile?.notes || ''),\r\n\t\t\tpassword: new FormControl(null)\r\n\t\t});\r\n\t}\r\n\r\n\tsubmit(): void {\r\n\t\tconst rawValue = this.profileForm.getRawValue();\r\n\t\tconst updateRequest: UpdateUserRequestDTO = {\r\n\t\t\t...rawValue,\r\n\t\t\tid: this.userProfile.id,\r\n\t\t\tphone: Array.isArray(rawValue.phone) ? rawValue.phone : [rawValue.phone],\r\n\t\t\ttckn: Array.isArray(rawValue.tckn) ? rawValue.tckn : [rawValue.tckn],\r\n\t\t\tregions: this.levelPairs,\r\n\t\t\tphotoUrl: Array.isArray(rawValue.photoUrl) ? rawValue.photoUrl : [rawValue.photoUrl],\r\n\t\t\tnotes: Array.isArray(rawValue.notes) ? rawValue.notes : [rawValue.notes]\r\n\t\t};\r\n\r\n\t\tthis.subjects.updateUser.next(updateRequest);\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.dialogRef.close('cancel');\r\n\t}\r\n\r\n\tprepareClientListDropdown(clientListParam: ClientResponseDTO[]) {\r\n\t\tthis.clientList = clientListParam.map((clientItem) => ({\r\n\t\t\tkey: clientItem.clientReferenceKey,\r\n\t\t\ttext: clientItem.name\r\n\t\t}));\r\n\t}\r\n\r\n\tmapTreeData(treeData: any) {\r\n\t\treturn treeData.map((item: any) => ({\r\n\t\t\tkey: item.startLevel,\r\n\t\t\tlabel: item.name,\r\n\t\t\tvalue: item.id,\r\n\t\t\tchildren: item.children ? this.mapTreeData(item.children) : []\r\n\t\t}));\r\n\t}\r\n\r\n\tnodeSelect(event: any) {\r\n\t\tconst { startLevel, endLevel } = event.node.data;\r\n\t\tconst index = this.levelPairs.findIndex((pair) => pair.startLevel === startLevel && pair.endLevel === endLevel);\r\n\t\tindex === -1 ? this.levelPairs.push({ startLevel, endLevel }) : this.levelPairs.splice(index, 1);\r\n\t}\r\n\r\n\tnodeUnselect(event: any) {\r\n\t\tconst { startLevel, endLevel } = event.node.data;\r\n\t\tconst index = this.levelPairs.findIndex((pair) => pair.startLevel === startLevel && pair.endLevel === endLevel);\r\n\t\tif (index !== -1) this.levelPairs.splice(index, 1);\r\n\t}\r\n\r\n\tclear() {\r\n\t\tthis.levelPairs = [];\r\n\t}\r\n}\r\n","<div *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"profileForm\">\r\n\t\t<aril-field [label]=\"t('userStatus')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"enabled\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUser')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"systemUser\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userType')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-select-box formControlName=\"userTypeId\" [items]=\"userTypeItems\" itemKey=\"value\" itemText=\"label\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUserApp')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-select-box formControlName=\"clientOfSystemUser\" [items]=\"clientList\" itemText=\"text\" itemKey=\"key\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('username')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"userName\" [disabled]=\"true\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userPassword')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-password formControlName=\"password\" [placeholder]=\"'&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;'\"></aril-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('firstName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"firstName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('lastName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"lastName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('email')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"email\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('phone')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-mask mask=\"(999) 999 99 99\" [placeholder]=\"t('phoneExample')\" formControlName=\"phone\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('tcNumber')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-mask mask=\"99999999999\" formControlName=\"tckn\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('responsibleRegions')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-treeSelect\r\n\t\t\t\t[options]=\"treeItems\"\r\n\t\t\t\tformControlName=\"regions\"\r\n\t\t\t\t[placeholder]=\"t('select')\"\r\n\t\t\t\t(nodeSelect)=\"nodeSelect($event)\"\r\n\t\t\t\t(nodeUnselect)=\"nodeUnselect($event)\"\r\n\t\t\t\t(cleared)=\"clear()\">\r\n\t\t\t</aril-treeSelect>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('notes')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text-area [rows]=\"3\" [cols]=\"40\" formControlName=\"notes\"></aril-text-area>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('photoUrl')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"photoUrl\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-3 gap-1\">\r\n\t\t\t<aril-button color=\"danger\" [label]=\"t('cancel')\" [outlined]=\"true\" icon=\"TIMES\" (clickEvent)=\"cancel()\"></aril-button>\r\n\t\t\t<aril-form-submit [label]=\"t('save')\" color=\"success\" icon=\"CHECK\" [formGroup]=\"profileForm\" (validEvent)=\"submit()\"></aril-form-submit>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n","import { Injectable, effect, signal } from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type MenuMode = 'static' | 'expandable';\r\n\r\nexport type ColorScheme = 'light' | 'dark' | 'dim';\r\n\r\nexport type MenuColorScheme = 'colorScheme' | 'primaryColor' | 'transparent';\r\n\r\nexport interface AppConfig {\r\n\tinputStyle: string;\r\n\tcolorScheme: ColorScheme;\r\n\ttheme: string;\r\n\tripple: boolean;\r\n\tmenuMode: MenuMode;\r\n\tscale: number;\r\n\tmenuTheme: MenuColorScheme;\r\n}\r\n\r\ninterface LayoutState {\r\n\t// Static sidebar states\r\n\tstaticSidebarVisible: boolean;\r\n\tstaticSidebarCollapsed: boolean;\r\n\tstaticMenuMobileActive: boolean;\r\n\t\r\n\t// Expandable menu states\r\n\tselectedMainItem: number | null;\r\n\tsecondarySidebarExpanded: boolean;\r\n\t\r\n\t// Other sidebar states\r\n\tprofileSidebarVisible: boolean;\r\n\thistorySidebarVisible: boolean;\r\n\tsiteMapSidebarVisible: boolean;\r\n\tfavoritePagesSidebarVisible: boolean;\r\n\tnotificationsSidebarVisible: boolean;\r\n\t\r\n\t// Notifications\r\n\tunreadNotificationCount: number;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LayoutService {\r\n\r\n\t_config: AppConfig = {\r\n\t\tripple: false,\r\n\t\tinputStyle: 'outlined',\r\n\t\tmenuMode: localStorage.getItem('menu-mode') as MenuMode || 'static',\r\n\t\tcolorScheme: 'light',\r\n\t\ttheme: 'indigo',\r\n\t\tscale: 12,\r\n\t\tmenuTheme: 'colorScheme'\r\n\t};\r\n\r\n\t// TODO: Set User Config\r\n\tconfig = signal<AppConfig>(this._config);\r\n\r\n\tstate: LayoutState = {\r\n\t\t// Static sidebar states\r\n\t\tstaticSidebarVisible: true,\r\n\t\tstaticSidebarCollapsed: false,\r\n\t\tstaticMenuMobileActive: false,\r\n\t\t\r\n\t\t// Expandable menu states\r\n\t\tselectedMainItem: null,\r\n\t\tsecondarySidebarExpanded: false,\r\n\t\t\r\n\t\t// Other sidebar states\r\n\t\tprofileSidebarVisible: false,\r\n\t\thistorySidebarVisible: false,\r\n\t\tsiteMapSidebarVisible: false,\r\n\t\tfavoritePagesSidebarVisible: false,\r\n\t\tnotificationsSidebarVisible: false,\r\n\t\t\r\n\t\t// Notifications\r\n\t\tunreadNotificationCount: 0\r\n\t};\r\n\r\n\tprivate configUpdate = new Subject<AppConfig>();\r\n\tprivate overlayOpen = new Subject<any>();\r\n\r\n\tconfigUpdate$ = this.configUpdate.asObservable();\r\n\toverlayOpen$ = this.overlayOpen.asObservable();\r\n\r\n\tmfeAppItemClicked = signal<boolean>(false);\r\n\r\n\t// Breakpoint for mobile/tablet detection\r\n\tprivate readonly MOBILE_BREAKPOINT = 992;\r\n\r\n\tconstructor() {\r\n\t\teffect(() => {\r\n\t\t\tconst config = this.config();\r\n\t\t\tif (this.updateStyle(config)) {\r\n\t\t\t\tthis.changeTheme();\r\n\t\t\t}\r\n\t\t\tthis.changeScale(config.scale);\r\n\t\t\tthis.onConfigUpdate();\r\n\t\t});\r\n\r\n\t\tthis.initializeResponsiveBehavior();\r\n\t\t\t\t\r\n\t\t// Set initial state based on menu mode\r\n\t\tif (this.config().menuMode === 'expandable') {\r\n\t\t\tthis.state.staticSidebarVisible = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initializeResponsiveBehavior() {\r\n\t\t// Listen for window resize events\r\n\t\twindow.addEventListener('resize', () => this.handleResize());\r\n\t\t\tthis.handleResize();\r\n\t}\r\n\r\n\tprivate handleResize() {\r\n\t\tconst wasMobile = this.isMobile();\r\n\t\t\r\n\t\t// Recalculate mobile state\r\n\t\tconst isMobileNow = window.innerWidth <= this.MOBILE_BREAKPOINT;\r\n\t\t\r\n\t\t// If switching from mobile to desktop or vice versa\r\n\t\tif (wasMobile !== isMobileNow) {\r\n\t\t\tif (isMobileNow) {\r\n\t\t\t\t// Switching to mobile: close any open desktop menus\r\n\t\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\t\tthis.state.staticMenuMobileActive = false;\r\n\t\t\t\t// For expandable menu, keep secondary sidebar state but handle mobile behavior\r\n\t\t\t} else {\r\n\t\t\t\t// Switching to desktop: ensure proper desktop state\r\n\t\t\t\tthis.state.staticMenuMobileActive = false;\r\n\t\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateStyle(config: AppConfig) {\r\n\t\treturn config.theme !== this._config.theme || config.colorScheme !== this._config.colorScheme;\r\n\t}\r\n\r\n\tonMenuToggle() {\r\n\t\tif (this.isMobile()) {\r\n\t\t\tthis.state.staticMenuMobileActive = !this.state.staticMenuMobileActive;\r\n\t\t\t\r\n\t\t\tif (this.state.staticMenuMobileActive) {\r\n\t\t\t\tthis.overlayOpen.next(null);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this.config().menuMode === 'static') {\r\n\t\t\t\tif (this.state.staticSidebarVisible && !this.state.staticSidebarCollapsed) {\r\n\t\t\t\t\tthis.state.staticSidebarCollapsed = true;\r\n\t\t\t\t} else if (this.state.staticSidebarVisible && this.state.staticSidebarCollapsed) {\r\n\t\t\t\t\tthis.state.staticSidebarCollapsed = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\t\t\tthis.state.staticSidebarCollapsed = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// For expandable mode, the toggle is handled by the expandable component itself\r\n\t\t}\r\n\t}\r\n\r\n\tonOverlaySubmenuOpen() {\r\n\t\tthis.overlayOpen.next(null);\r\n\t}\r\n\r\n\t// Expandable menu methods\r\n\tsetSelectedMainItem(index: number | null) {\r\n\t\tthis.state.selectedMainItem = index;\r\n\t}\r\n\r\n\ttoggleSecondarySidebar() {\r\n\t\tthis.state.secondarySidebarExpanded = !this.state.secondarySidebarExpanded;\r\n\t}\r\n\r\n\tsetSecondarySidebarExpanded(expanded: boolean) {\r\n\t\tthis.state.secondarySidebarExpanded = expanded;\r\n\t}\r\n\r\n\t// Sidebar show methods\r\n\tshowProfileSidebar() {\r\n\t\tthis.state.profileSidebarVisible = true;\r\n\t}\r\n\r\n\tshowHistorySidebar() {\r\n\t\tthis.state.historySidebarVisible = true;\r\n\t}\r\n\r\n\tshowSiteMapSidebar() {\r\n\t\tthis.state.siteMapSidebarVisible = true;\r\n\t}\r\n\r\n\tshowFavoritePagesSidebar() {\r\n\t\tthis.state.favoritePagesSidebarVisible = true;\r\n\t}\r\n\r\n\tshowNotificationsSidebar() {\r\n\t\tthis.state.notificationsSidebarVisible = true;\r\n\t}\r\n\r\n\tsetUnreadNotificationCount(count: number) {\r\n\t\tthis.state.unreadNotificationCount = count;\r\n\t}\r\n\r\n\tgetUnreadNotificationCount(): number {\r\n\t\treturn this.state.unreadNotificationCount;\r\n\t}\r\n\r\n\tisDesktop() {\r\n\t\treturn window.innerWidth > this.MOBILE_BREAKPOINT;\r\n\t}\r\n\r\n\tisMobile() {\r\n\t\treturn window.innerWidth <= this.MOBILE_BREAKPOINT;\r\n\t}\r\n\r\n\tisStatic() {\r\n\t\treturn this.config().menuMode === 'static';\r\n\t}\r\n\r\n\tisExpandable() {\r\n\t\treturn this.config().menuMode === 'expandable';\r\n\t}\r\n\r\n\t// Helper method to determine if static sidebar should be shown\r\n\tshouldShowStaticSidebar(): boolean {\r\n\t\tif (this.config().menuMode !== 'static') return false;\r\n\t\t\r\n\t\tif (this.isDesktop()) {\r\n\t\t\treturn this.state.staticSidebarVisible;\r\n\t\t} else {\r\n\t\t\treturn this.state.staticMenuMobileActive;\r\n\t\t}\r\n\t}\r\n\r\n\tisStaticSidebarCollapsed(): boolean {\r\n\t\treturn this.state.staticSidebarCollapsed;\r\n\t}\r\n\r\n\tshouldShowExpandableMenu(): boolean {\r\n\t\treturn this.config().menuMode === 'expandable';\r\n\t}\r\n\r\n\tcloseMobileMenu() {\r\n\t\tthis.state.staticMenuMobileActive = false;\r\n\t}\r\n\r\n\t// Change menu mode programmatically\r\n\tchangeMenuMode(mode: MenuMode) {\r\n\t\tthis.config.update((config) => ({\r\n\t\t\t...config,\r\n\t\t\tmenuMode: mode\r\n\t\t}));\r\n\r\n\t\t// Update states based on new mode\r\n\t\tif (mode === 'static') {\r\n\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\tthis.state.selectedMainItem = null;\r\n\t\t\tthis.state.secondarySidebarExpanded = false;\r\n\t\t} else if (mode === 'expandable') {\r\n\t\t\tthis.state.staticSidebarVisible = false;\r\n\t\t\tthis.state.selectedMainItem = null;\r\n\t\t\tthis.state.secondarySidebarExpanded = false;\r\n\t\t}\r\n\r\n\t\tthis.state.staticMenuMobileActive = false;\r\n\t}\r\n\r\n\tonConfigUpdate() {\r\n\t\tthis._config = { ...this.config() };\r\n\t\tthis.configUpdate.next(this.config());\r\n\t}\r\n\r\n\tchangeTheme() {\r\n\t\tconst config = this.config();\r\n\t\tconst themeLink = <HTMLLinkElement>document.getElementById('theme-link');\r\n\t\tconst themeLinkHref = themeLink.getAttribute('href')!;\r\n\t\tconst newHref = themeLinkHref\r\n\t\t\t.split('/')\r\n\t\t\t.map((el) =>\r\n\t\t\t\tel == this._config.theme ? (el = config.theme)\r\n\t\t\t\t: el == `theme-${this._config.colorScheme}` ? (el = `theme-${config.colorScheme}`)\r\n\t\t\t\t: el\r\n\t\t\t)\r\n\t\t\t.join('/');\r\n\r\n\t\tthis.replaceThemeLink(newHref);\r\n\t}\r\n\r\n\treplaceThemeLink(href: string) {\r\n\t\tconst id = 'theme-link';\r\n\t\tlet themeLink = <HTMLLinkElement>document.getElementById(id);\r\n\t\tconst cloneLinkElement = <HTMLLinkElement>themeLink.cloneNode(true);\r\n\r\n\t\tcloneLinkElement.setAttribute('href', href);\r\n\t\tcloneLinkElement.setAttribute('id', id + '-clone');\r\n\r\n\t\tthemeLink.parentNode!.insertBefore(cloneLinkElement, themeLink.nextSibling);\r\n\t\tcloneLinkElement.addEventListener('load', () => {\r\n\t\t\tthemeLink.remove();\r\n\t\t\tcloneLinkElement.setAttribute('id', id);\r\n\t\t});\r\n\t}\r\n\r\n\tchangeScale(value: number) {\r\n\t\tdocument.documentElement.style.fontSize = `${value}px`;\r\n\t}\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { TagModule } from 'primeng/tag';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { ChangePasswordModalComponent } from './modals/change-password-modal/change-password-modal.component';\r\nimport { EditProfileModalComponent } from './modals/edit-profile-modal/edit-profile-modal.component';\r\nimport { GetUserRequestDTO, ProfileService, UserResponseDTO } from './profile.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-profilemenu',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSidebarModule,\r\n\t\tTagModule,\r\n\t\tButtonModule,\r\n\t\tSkeletonModule,\r\n\t\tAvatarModule,\r\n\t\tChipModule,\r\n\t\tTranslocoModule,\r\n\t\tButtonComponent\r\n\t],\r\n\ttemplateUrl: './app.profilesidebar.component.html',\r\n\tstyleUrls: ['./app.profilesidebar.component.scss'],\r\n\tproviders: [DialogService]\r\n})\r\nexport class AppProfileSidebarComponent implements OnInit {\r\n\tusername: string;\r\n\tuserProfile = signal<UserResponseDTO | null>(null);\r\n\r\n\tprivate subjects = {\r\n\t\tgetUser: new Subject<GetUserRequestDTO>()\r\n\t};\r\n\r\n\tgetUserService = toSignal(this.subjects.getUser.pipe(switchMap((data) => this.profileService.getUser(data))));\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate readonly keycloak: KeycloakService,\r\n\t\tprivate readonly profileService: ProfileService,\r\n\t\tprivate readonly dialogService: DialogService,\r\n\t\tprivate readonly translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.username = this.keycloak.getUsername();\r\n\t\tthis.initializeEffects();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadUserProfile();\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.getUserService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.userProfile.set(service.response);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t}\r\n\r\n\tprivate loadUserProfile(): void {\r\n\t\tconst userId = this.keycloak.getKeycloakInstance().idTokenParsed?.sub;\r\n\t\tif (userId) {\r\n\t\t\tthis.subjects.getUser.next({ id: userId });\r\n\t\t}\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.profileSidebarVisible;\r\n\t}\r\n\r\n\tset visible(_val: boolean) {\r\n\t\tthis.layoutService.state.profileSidebarVisible = _val;\r\n\t\tif (_val && !this.userProfile()) {\r\n\t\t\tthis.loadUserProfile();\r\n\t\t}\r\n\t}\r\n\r\n\tlogout(): void {\r\n\t\tthis.keycloak.logout();\r\n\t}\r\n\r\n\teditProfile(): void {\r\n\t\tif (!this.userProfile()) return;\r\n\r\n\t\tconst ref = this.dialogService.open(EditProfileModalComponent, {\r\n\t\t\theader: this.translocoService.translate('profileSidebar.editProfile'),\r\n\t\t\twidth: '40%',\r\n\t\t\theight: 'auto',\r\n\t\t\tmodal: true,\r\n\t\t\tmaximizable: false,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tuserProfile: this.userProfile()\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe((result) => {\r\n\t\t\tif (result?.status === 'success') {\r\n\t\t\t\tthis.loadUserProfile();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tchangePassword(): void {\r\n\t\tconst userId = this.keycloak.getKeycloakInstance().idTokenParsed?.sub;\r\n\t\tif (!userId) return;\r\n\r\n\t\tconst ref = this.dialogService.open(ChangePasswordModalComponent, {\r\n\t\t\theader: this.translocoService.translate('profileSidebar.changePassword'),\r\n\t\t\twidth: '500px',\r\n\t\t\theight: 'auto',\r\n\t\t\tmodal: true,\r\n\t\t\tmaximizable: false,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tuserId: userId\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe();\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-profile-sidebar w-full sm:w-30rem\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center gap-2\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t\t<span class=\"font-bold\">{{ t('personalInfo') }}</span>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t@if (userProfile()) {\r\n\t\t<div class=\"profile-content\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t\t<!-- Personal Information -->\r\n\t\t\t<div class=\"info-section\">\r\n\t\t\t\t<div class=\"info-items\">\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-user info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('fullName') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.firstName }} {{ userProfile()?.lastName }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-id-card info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('tcNumber') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.tckn || '' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-envelope info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('email') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.email || '' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-phone info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('phone') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.phone || '' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-at info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('username') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.userName }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-check-circle info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('accountStatus') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value status\" [class.active]=\"userProfile()?.enabled\">\r\n\t\t\t\t\t\t\t\t{{ userProfile()?.enabled ? t('active') : t('inactive') }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-user info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('systemUser') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value status\" [class.active]=\"userProfile()?.systemUser\">\r\n\t\t\t\t\t\t\t\t{{ userProfile()?.systemUser ? t('yes') : t('no') }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-building info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('clientSystemUser') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.clientOfSystemUser }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<!-- Fixed Action Buttons -->\r\n\t@if (userProfile()) {\r\n\t\t<div class=\"action-buttons-container grid p-fluid\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t\t<div class=\"col-12 flex justify-content-between align-items-center\">\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('editProfile')\"\r\n\t\t\t\t\ticon=\"USER_EDIT\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\tclass=\"col-6\"\r\n\t\t\t\t\t(clickEvent)=\"editProfile()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('changePassword')\"\r\n\t\t\t\t\ticon=\"KEY\"\r\n\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\tclass=\"col-6\"\r\n\t\t\t\t\t(clickEvent)=\"changePassword()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t</div>\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('logout')\"\r\n\t\t\t\ticon=\"SIGN_OUT\"\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[outlined]=\"false\"\r\n\t\t\t\tsize=\"sm\"\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t(clickEvent)=\"logout()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t}\r\n</p-sidebar>\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nexport interface HistoryItem {\r\n\tid: string;\r\n\ttitle: string;\r\n\tmultiLanguageTitle?: {\r\n\t\ttr?: string;\r\n\t\ten?: string;\r\n\t};\r\n\turl: string;\r\n\ttimestamp: number;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class HistoryService {\r\n\tprivate readonly STORAGE_KEY = 'page_history';\r\n\tprivate readonly MAX_HISTORY_SIZE = 20;\r\n\r\n\tprivate historySubject = new BehaviorSubject<HistoryItem[]>([]);\r\n\tpublic history$: Observable<HistoryItem[]> = this.historySubject.asObservable();;\r\n\r\n\t// Excluded paths that shouldn't be tracked\r\n\tprivate excludedPaths = ['/login'];\r\n\r\n\tprivate router = inject(Router);\r\n\tprivate translocoService = inject(TranslocoService);\r\n\tprivate pubSubService = inject(PubSubService);\r\n\tprivate titleService = inject(Title);\r\n\r\n\tconstructor() {\r\n\t\tthis.loadHistoryFromStorage();\r\n\t\tthis.initializeBreadcrumbListener();\r\n\t}\r\n\r\n\tprivate initializeBreadcrumbListener(): void {\r\n\t\t// Listen for breadcrumb updates to track navigation history\r\n\t\tthis.pubSubService.subscribe('breadcrumbUpdated', (data) => {\r\n\t\t\tconst url = data?.path;\r\n\t\t\tconst pageTitle = data?.custom?.pageTitle;\r\n\t\t\t\r\n\t\t\tif (url && pageTitle && pageTitle !== '...') {\r\n\t\t\t\tthis.addToHistory(url, pageTitle);\r\n\t\t\t\tthis.titleService.setTitle(pageTitle);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate addToHistory(url: string, pageTitle?: string): void {\r\n\t\tif (this.shouldExcludeUrl(url)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst multiLanguageTitle: { tr?: string; en?: string } = {};\r\n\r\n\t\t if (pageTitle) {\r\n\t\t\tmultiLanguageTitle.tr = pageTitle;\r\n\t\t\tmultiLanguageTitle.en = pageTitle;\r\n\t\t} else {\r\n\t\t\tconst globalPageTitle = (<any>globalThis).__ARIL_PAGE_TITLE__?.();\r\n\t\t\tif (globalPageTitle) {\r\n\t\t\t\tmultiLanguageTitle.tr = globalPageTitle;\r\n\t\t\t\tmultiLanguageTitle.en = globalPageTitle;\r\n\t\t\t} else {\r\n\t\t\t\t// Fallback for pages not in menu and no global title\r\n\t\t\t\tmultiLanguageTitle.tr = 'Bilinmeyen Sayfa';\r\n\t\t\t\tmultiLanguageTitle.en = 'Unknown Page';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst currentLang = this.translocoService.getActiveLang() as 'tr' | 'en';\r\n\t\tconst title = multiLanguageTitle[currentLang] || multiLanguageTitle.tr || 'Unknown Page';\r\n\t\tconst timestamp = Date.now();\r\n\t\tconst id = this.generateId(url, timestamp);\r\n\r\n\t\tconst newItem: HistoryItem = {\r\n\t\t\tid,\r\n\t\t\ttitle,\r\n\t\t\tmultiLanguageTitle,\r\n\t\t\turl,\r\n\t\t\ttimestamp\r\n\t\t};\r\n\r\n\t\tlet history = this.getHistoryFromStorage();\r\n\t\thistory = history.filter((item) => item.url !== url);\r\n\t\thistory.unshift(newItem);\r\n\r\n\t\t// Limit history size\r\n\t\tif (history.length > this.MAX_HISTORY_SIZE) {\r\n\t\t\thistory = history.slice(0, this.MAX_HISTORY_SIZE);\r\n\t\t}\r\n\r\n\t\tthis.saveHistoryToStorage(history);\r\n\t\tthis.historySubject.next(history);\r\n\t}\r\n\r\n\tprivate shouldExcludeUrl(url: string): boolean {\r\n\t\treturn this.excludedPaths.some((excludedPath) => url.startsWith(excludedPath));\r\n\t}\r\n\r\n\tprivate generateId(url: string, timestamp: number): string {\r\n\t\treturn `${url.replace(/[^a-zA-Z0-9]/g, '_')}_${timestamp}`;\r\n\t}\r\n\r\n\tprivate loadHistoryFromStorage(): void {\r\n\t\tconst history = this.getHistoryFromStorage();\r\n\t\tthis.historySubject.next(history);\r\n\t}\r\n\r\n\tprivate saveHistoryToStorage(history: HistoryItem[]): void {\r\n\t\ttry {\r\n\t\t\tlocalStorage.setItem(this.STORAGE_KEY, JSON.stringify(history));\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save navigation history to localStorage:', error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clearHistory(): void {\r\n\t\tlocalStorage.removeItem(this.STORAGE_KEY);\r\n\t\tthis.historySubject.next([]);\r\n\t}\r\n\r\n\tpublic navigateToHistoryItem(item: HistoryItem): void {\r\n\t\tthis.router.navigate([item.url]);\r\n\t}\r\n\r\n\tprivate getHistoryFromStorage(): HistoryItem[] {\r\n\t\ttry {\r\n\t\t\tconst stored = localStorage.getItem(this.STORAGE_KEY);\r\n\t\t\treturn stored ? JSON.parse(stored) : [];\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to load navigation history from localStorage:', error);\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getHistoryItemsBySearchTerm(searchTerm: string): HistoryItem[] {\r\n\t\tconst history = this.getHistoryFromStorage();\r\n\t\tconst lowerSearchTerm = searchTerm.toLowerCase();\r\n\t\tconst currentLang = this.translocoService.getActiveLang() as 'tr' | 'en';\r\n\r\n\t\treturn history.filter((item) => {\r\n\t\t\t// Search in current language title\r\n\t\t\tconst currentTitle = item.multiLanguageTitle?.[currentLang] || item.title;\r\n\t\t\treturn currentTitle.toLowerCase().includes(lowerSearchTerm) || item.url.toLowerCase().includes(lowerSearchTerm);\r\n\t\t});\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { TextComponent } from 'aril/ui/text';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { HistoryItem, HistoryService } from './history.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { solidIcons } from 'aril/util/lib';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-history-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tSidebarModule,\r\n\t\tButtonComponent,\r\n\t\tInputTextModule,\r\n\t\tScrollPanelModule,\r\n\t\tConfirmDialogModule,\r\n\t\tTooltipModule,\r\n\t\tBadgeModule,\r\n\t\tTranslocoModule,\r\n\t\tTextComponent,\r\n\t\tFontAwesomeModule\r\n\t],\r\n\ttemplateUrl: './history-sidebar.component.html',\r\n\tstyleUrls: ['./history-sidebar.component.scss'],\r\n\tproviders: [ConfirmationService]\r\n})\r\nexport class HistorySidebarComponent implements OnInit, OnDestroy {\r\n\thistory = signal<HistoryItem[]>([]);\r\n\tfilteredHistory = signal<HistoryItem[]>([]);\r\n\tsearchTerm = signal<string>('');\r\n\tsolidIcons = solidIcons;\r\n\t\r\n\tprivate destroy$ = new Subject<void>();\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate historyService: HistoryService,\r\n\t\tprivate confirmationService: ConfirmationService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.historyService.history$.pipe(takeUntil(this.destroy$)).subscribe((history) => {\r\n\t\t\tthis.history.set(history);\r\n\t\t\tthis.applyFilter();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.destroy$.next();\r\n\t\tthis.destroy$.complete();\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.historySidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.historySidebarVisible = value;\r\n\t}\r\n\r\n\tonSearchChange(): void {\r\n\t\tthis.applyFilter();\r\n\t}\r\n\r\n\tprivate applyFilter(): void {\r\n\t\tconst searchTerm = this.searchTerm();\r\n\t\tif (!searchTerm.trim()) {\r\n\t\t\tthis.filteredHistory.set(this.history());\r\n\t\t} else {\r\n\t\t\tconst filtered = this.historyService.getHistoryItemsBySearchTerm(searchTerm);\r\n\t\t\tthis.filteredHistory.set(filtered);\r\n\t\t}\r\n\t}\r\n\r\n\tnavigateToItem(item: HistoryItem): void {\r\n\t\tthis.historyService.navigateToHistoryItem(item);\r\n\t\tthis.visible = false;\r\n\t}\r\n\r\n\tclearAllHistory(event: Event): void {\r\n\t\tthis.confirmationService.confirm({\r\n\t\t\ttarget: event.target as EventTarget,\r\n\t\t\tmessage: this.translocoService.translate('history.confirmClearAllMessage'),\r\n\t\t\theader: this.translocoService.translate('history.deleteConfirmation'),\r\n\t\t\ticon: 'pi pi-info-circle',\r\n\t\t\tacceptLabel: this.translocoService.translate('history.acceptButtonLabel'),\r\n\t\t\trejectLabel: this.translocoService.translate('history.rejectButtonLabel'),\r\n\t\t\tacceptButtonStyleClass: 'p-button-success',\r\n\t\t\trejectButtonStyleClass: 'p-button-danger',\r\n\t\t\taccept: () => {\r\n\t\t\t\tthis.historyService.clearHistory();\r\n\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\tsummary: this.translocoService.translate('history.acceptButtonLabel'),\r\n\t\t\t\t\tdetail: this.translocoService.translate('history.clearAll')\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\ttrackByItemId(index: number, item: HistoryItem) {\r\n\t\treturn item.id || index;\r\n\t}\r\n\r\n\tgetLocalizedTitle(item: HistoryItem): string {\r\n\t\tconst currentLang = this.translocoService.getActiveLang() as 'tr' | 'en';\r\n\r\n\t\t// Use multiLanguageTitle if available\r\n\t\tif (item.multiLanguageTitle) {\r\n\t\t\tconst localizedTitle = item.multiLanguageTitle[currentLang];\r\n\t\t\tif (localizedTitle) {\r\n\t\t\t\treturn localizedTitle;\r\n\t\t\t}\r\n\t\t\t// Fallback to Turkish if current language not available\r\n\t\t\tif (item.multiLanguageTitle.tr) {\r\n\t\t\t\treturn item.multiLanguageTitle.tr;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fallback to original title\r\n\t\treturn item.title;\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-history-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'history'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-history text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('pageHistory') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"history-content\">\r\n\t\t@if (history().length > 0) {\r\n\t\t\t<div class=\"search-section\">\r\n\t\t\t\t<div class=\"flex justify-content-center align-items-center grid p-fluid m-0\">\r\n\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\tclass=\"col-10\"\r\n\t\t\t\t\t\t[placeholder]=\"t('searchHistory')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\">\r\n\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('confirmClearAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"clearAllHistory($event)\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t@if (filteredHistory().length > 0) {\r\n\t\t\t<div class=\"history-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"history-items\">\r\n\t\t\t\t\t\t@for (item of filteredHistory(); track trackByItemId($index, item)) {\r\n\t\t\t\t\t\t\t<div class=\"history-item\" (click)=\"navigateToItem(item)\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"title-info\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ getLocalizedTitle(item) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"route-text\">{{ item.url }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-history empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noHistory') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : t('startBrowsing') }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { TextComponent } from 'aril/ui/text';\r\nimport { TranslateJsonPipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { solidIcons } from 'aril/util/lib';\r\n\r\ninterface MenuNode {\r\n\tkey: string;\r\n\tlabel: string | object;\r\n\ticon?: string;\r\n\trouterLink?: string;\r\n\tchildren?: MenuNode[];\r\n\texpanded?: boolean;\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-site-map-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tRouterModule,\r\n\t\tSidebarModule,\r\n\t\tScrollPanelModule,\r\n\t\tTooltipModule,\r\n\t\tButtonComponent,\r\n\t\tTextComponent,\r\n\t\tTranslocoModule,\r\n\t\tTranslateJsonPipe,\r\n\t\tFontAwesomeModule\r\n\t],\r\n\ttemplateUrl: './site-map-sidebar.component.html',\r\n\tstyleUrls: ['./site-map-sidebar.component.scss']\r\n})\r\nexport class SiteMapSidebarComponent implements OnInit {\r\n\tsiteMapNodes = signal<MenuNode[]>([]);\r\n\tfilteredNodes = signal<MenuNode[]>([]);\r\n\tsearchTerm = signal<string>('');\r\n\ttotalPages = signal<number>(0);\r\n solidIcons = solidIcons;\r\n\t\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadSiteMap();\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.siteMapSidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.siteMapSidebarVisible = value;\r\n\t}\r\n\r\n\tprivate loadSiteMap(): void {\r\n\t\tconst menuItems = (<any>globalThis).hostMenuItems?.() || [];\r\n\t\tconst nodes = this.buildSiteMapNodes(menuItems);\r\n\t\tconst totalCount = this.countTotalPages(nodes);\r\n\r\n\t\tthis.siteMapNodes.set(nodes);\r\n\t\tthis.filteredNodes.set(nodes);\r\n\t\tthis.totalPages.set(totalCount);\r\n\t}\r\n\r\n\tprivate buildSiteMapNodes(items: any[], parentKey = ''): MenuNode[] {\r\n\t\treturn items\r\n\t\t\t.filter((item) => {\r\n\t\t\t\t// Keep the home page route (\"/\") and any non-empty routes\r\n\t\t\t\treturn !item.routerLink || item.routerLink === '/' || item.routerLink.trim() !== '';\r\n\t\t\t})\r\n\t\t\t.map((item, index) => {\r\n\t\t\t\tconst key = parentKey ? `${parentKey}-${index}` : `${index}`;\r\n\r\n\t\t\t\tlet label: string | object;\r\n\t\t\t\tif (item.routerLink === '/') {\r\n\t\t\t\t\tlabel = { tr: 'Anasayfa', en: 'Home' };\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel = item.label || { tr: 'Bilinmeyen', en: 'Unknown' };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst node: MenuNode = {\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\tlabel,\r\n\t\t\t\t\ticon: item.icon,\r\n\t\t\t\t\trouterLink: item.routerLink,\r\n\t\t\t\t\texpanded: false\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (item.items && item.items.length > 0) {\r\n\t\t\t\t\tnode.children = this.buildSiteMapNodes(item.items, key);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn node;\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate countTotalPages(nodes: MenuNode[]): number {\r\n\t\tlet count = 0;\r\n\t\tfor (const node of nodes) {\r\n\t\t\tif (node.routerLink) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t\tif (node.children) {\r\n\t\t\t\tcount += this.countTotalPages(node.children);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\tonSearchChange(): void {\r\n\t\tconst searchTerm = this.searchTerm()?.toLowerCase()?.trim();\r\n\t\tif (!searchTerm) {\r\n\t\t\tthis.filteredNodes.set(this.siteMapNodes());\r\n\t\t} else {\r\n\t\t\tconst filtered = this.filterNodes(this.siteMapNodes(), searchTerm);\r\n\t\t\tthis.filteredNodes.set(filtered);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate filterNodes(nodes: MenuNode[], searchTerm: string): MenuNode[] {\r\n\t\tconst filtered: MenuNode[] = [];\r\n\t\tconst currentLang = this.translocoService.getActiveLang();\r\n\r\n\t\tfor (const node of nodes) {\r\n\t\t\t// Convert label to string for search based on active language\r\n\t\t\tconst labelText =\r\n\t\t\t\ttypeof node.label === 'string' ?\r\n\t\t\t\t\tnode.label\r\n\t\t\t\t:\t(node.label as any)?.[currentLang] || (node.label as any)?.tr || (node.label as any)?.en || '';\r\n\r\n\t\t\tconst matches = labelText.toLowerCase().includes(searchTerm);\r\n\t\t\tlet filteredChildren: MenuNode[] = [];\r\n\r\n\t\t\tif (node.children) {\r\n\t\t\t\tfilteredChildren = this.filterNodes(node.children, searchTerm);\r\n\t\t\t}\r\n\r\n\t\t\tif (matches || filteredChildren.length > 0) {\r\n\t\t\t\tfiltered.push({\r\n\t\t\t\t\t...node,\r\n\t\t\t\t\tchildren: filteredChildren.length > 0 ? filteredChildren : node.children,\r\n\t\t\t\t\texpanded: filteredChildren.length > 0\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filtered;\r\n\t}\r\n\r\n\texpandAll(): void {\r\n\t\tconst expanded = this.expandNodes(this.filteredNodes(), true);\r\n\t\tthis.filteredNodes.set([...expanded]);\r\n\t}\r\n\r\n\tcollapseAll(): void {\r\n\t\tconst collapsed = this.expandNodes(this.filteredNodes(), false);\r\n\t\tthis.filteredNodes.set([...collapsed]);\r\n\t}\r\n\r\n\tprivate expandNodes(nodes: MenuNode[], expanded: boolean): MenuNode[] {\r\n\t\treturn nodes.map((node) => ({\r\n\t\t\t...node,\r\n\t\t\texpanded,\r\n\t\t\tchildren: node.children ? this.expandNodes(node.children, expanded) : undefined\r\n\t\t}));\r\n\t}\r\n\r\n\ttoggleNode(node: MenuNode): void {\r\n\t\tnode.expanded = !node.expanded;\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t}\r\n\r\n\ttrackByKey(index: number, node: MenuNode): string {\r\n\t\treturn node.key || `${index}`;\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nexport interface FavoritePageResponseDTO {\r\n\tid: number;\r\n\tcreator: string;\r\n\tcreated: number;\r\n\tupdater: string;\r\n\tupdated: number;\r\n\tversion: number;\r\n\tusername: string;\r\n\turl: string;\r\n\tlabel: string;\r\n}\r\n\r\nexport interface FavoritePageSaveRequestDTO {\r\n\turl: string;\r\n\tlabel: string;\r\n}\r\n\r\nexport interface FavoritePageUpdateRequestDTO {\r\n\tlabel: string;\r\n\tversion: number;\r\n}\r\n\r\nexport interface FavoritePageFilterRequestDTO {\r\n\tpageSize?: number;\r\n\tpageNumber?: number;\r\n\tsortFieldName?: string;\r\n\tsortDirection?: number; // 1=ASC, 2=DESC\r\n}\r\n\r\nexport interface SearchResultDTO<T> {\r\n\tresultInfo: {\r\n\t\ttotalPage: number;\r\n\t\ttotalItem: number;\r\n\t};\r\n\tresult: T[];\r\n\tsearchAfterValues: any[];\r\n}\r\n\r\n// API Endpoints\r\nexport const favoritePageEndpoints = {\r\n\tfilter: 'favorite-pages/filter',\r\n\tfavorite: 'favorite-pages'\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FavoritePagesService extends RestClient {\r\n\toverride states: ServiceCallStateMap<FavoritePagesService> = {};\r\n\tallFavoritePages = signal<FavoritePageResponseDTO[]>([]);\r\n\r\n\tconstructor(private router: Router) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tgetCurrentRoutePath(): string {\r\n\t\treturn this.router.url;\r\n\t}\r\n\r\n\tnavigateToFavoritePage(favorite: FavoritePageResponseDTO): void {\r\n\t\tthis.router.navigate([favorite.url]);\r\n\t}\r\n\r\n\tgetFullUrl(url: string): string {\r\n\t\tconst baseUrl = window.location.origin;\r\n\t\treturn `${baseUrl}${window.location.pathname}${\"#\"}${url}`;\r\n\t}\r\n\r\n\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, favoritePageEndpoints.filter)\r\n\tfilterFavoritePages(post: FavoritePageFilterRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<SearchResultDTO<FavoritePageResponseDTO>>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)\r\n\tsaveFavoritePage(post: FavoritePageSaveRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<FavoritePageResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.PUT, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)\r\n\tupdateFavoritePage(id: number, post: FavoritePageUpdateRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<FavoritePageResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.DELETE, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)\r\n\tdeleteFavoritePage(id: number) {\r\n\t\treturn new Observable<ServiceResponse<boolean>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { FieldComponent } from 'aril/ui/field';\r\nimport { ARiLFormModule } from 'aril/ui/form';\r\nimport { TextComponent } from 'aril/ui/text';\r\n\r\nimport {\r\n\tFavoritePageResponseDTO,\r\n\tFavoritePageSaveRequestDTO,\r\n\tFavoritePageUpdateRequestDTO,\r\n\tFavoritePagesService\r\n} from '../../favorite-pages.service';\r\n\r\ninterface ModalData {\r\n\tmode: 'add' | 'edit';\r\n\turl?: string; // For add mode\r\n\tfavorite?: FavoritePageResponseDTO; // For edit mode\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tFormsModule,\r\n\t\tARiLFormModule,\r\n\t\tFieldComponent,\r\n\t\tTextComponent,\r\n\t\tButtonComponent,\r\n\t\tTranslocoModule\r\n\t],\r\n\ttemplateUrl: './add-edit-favorite-modal.component.html'\r\n})\r\nexport class AddEditFavoriteModalComponent implements OnInit {\r\n\tfavoriteForm!: FormGroup;\r\n\tmodalData: ModalData;\r\n\r\n\tprivate subjects = {\r\n\t\tsaveFavorite: new Subject<FavoritePageSaveRequestDTO>(),\r\n\t\tupdateFavorite: new Subject<FavoritePageUpdateRequestDTO>()\r\n\t};\r\n\r\n\tsaveFavoriteService = toSignal(\r\n\t\tthis.subjects.saveFavorite.pipe(switchMap((data) => this.favoritePagesService.saveFavoritePage(data)))\r\n\t);\r\n\r\n\tupdateFavoriteService = toSignal(\r\n\t\tthis.subjects.updateFavorite.pipe(\r\n\t\t\tswitchMap((data) => this.favoritePagesService.updateFavoritePage(this.modalData.favorite?.id as number, data))\r\n\t\t)\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tprivate readonly formBuilder: FormBuilder,\r\n\t\tprivate readonly dialogRef: DynamicDialogRef,\r\n\t\tprivate readonly dialogConfig: DynamicDialogConfig,\r\n\t\tprivate readonly favoritePagesService: FavoritePagesService,\r\n\t\tprivate readonly messageService: MessageService,\r\n\t\tprivate readonly translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.modalData = this.dialogConfig.data;\r\n\t\tthis.initializeEffects();\r\n\t\tthis.initializeForm();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tif (!this.modalData || !['add', 'edit'].includes(this.modalData.mode)) {\r\n\t\t\tthis.dialogRef.close('error');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\t// Save favorite effect\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.saveFavoriteService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('favoritePages.success'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('favoritePages.saveSuccessfully'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success', data: service.response });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\t// Update favorite effect\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.updateFavoriteService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('favoritePages.success'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('favoritePages.updatedSuccessfully'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success', data: service.response });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t}\r\n\r\n\tprivate initializeForm(): void {\r\n\t\tif (this.modalData.mode === 'add') {\r\n\t\t\tthis.favoriteForm = this.formBuilder.group({\r\n\t\t\t\tlabel: ['', [Validators.required, Validators.minLength(1), Validators.maxLength(100)]],\r\n\t\t\t\turl: [{ value: this.modalData.url || '', disabled: true }]\r\n\t\t\t});\r\n\t\t} else if (this.modalData.mode === 'edit' && this.modalData.favorite) {\r\n\t\t\tthis.favoriteForm = this.formBuilder.group({\r\n\t\t\t\tlabel: [\r\n\t\t\t\t\tthis.modalData.favorite.label,\r\n\t\t\t\t\t[Validators.required, Validators.minLength(1), Validators.maxLength(100)]\r\n\t\t\t\t],\r\n\t\t\t\turl: [{ value: this.modalData.favorite.url, disabled: true }]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget isAddMode(): boolean {\r\n\t\treturn this.modalData.mode === 'add';\r\n\t}\r\n\r\n\tget isEditMode(): boolean {\r\n\t\treturn this.modalData.mode === 'edit';\r\n\t}\r\n\r\n\tsubmit(): void {\r\n\t\tconst formValue = this.favoriteForm.value;\r\n\r\n\t\tif (this.isAddMode) {\r\n\t\t\tconst saveRequest: FavoritePageSaveRequestDTO = {\r\n\t\t\t\turl: this.modalData.url!,\r\n\t\t\t\tlabel: formValue.label.trim()\r\n\t\t\t};\r\n\t\t\tthis.subjects.saveFavorite.next(saveRequest);\r\n\t\t} else if (this.isEditMode && this.modalData.favorite) {\r\n\t\t\tconst updateRequest: any = {\r\n\t\t\t\tlabel: formValue.label.trim(),\r\n\t\t\t\turl: this.modalData.url!,\r\n\t\t\t\tversion: this.modalData.favorite.version\r\n\t\t\t};\r\n\t\t\tthis.subjects.updateFavorite.next(updateRequest);\r\n\t\t}\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.dialogRef.close('cancel');\r\n\t}\r\n}\r\n","<div *transloco=\"let t; read: 'favoritePages'\">\r\n\t<aril-form [formGroup]=\"favoriteForm\">\r\n\t\t<aril-field [label]=\"t('label')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"label\" [placeholder]=\"t('labelPlaceholder')\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('path')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"url\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-form-submit\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t[formGroup]=\"favoriteForm\"\r\n\t\t\t\t(validEvent)=\"submit()\" />\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect, signal, computed } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { DialogService, DynamicDialogModule } from 'primeng/dynamicdialog';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { FavoritePageResponseDTO, FavoritePagesService } from './favorite-pages.service';\r\nimport { AddEditFavoriteModalComponent } from './modals/add-edit-favorite-modal/add-edit-favorite-modal.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { solidIcons } from 'aril/util/lib';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-favorite-pages-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSidebarModule,\r\n\t\tScrollPanelModule,\r\n\t\tConfirmDialogModule,\r\n\t\tPaginatorModule,\r\n\t\tDynamicDialogModule,\r\n\t\tButtonComponent,\r\n\t\tTranslocoModule,\r\n\t\tTooltipModule,\r\n\t\tFontAwesomeModule\r\n\t],\r\n\ttemplateUrl: './favorite-pages-sidebar.component.html',\r\n\tstyleUrls: ['./favorite-pages-sidebar.component.scss'],\r\n\tproviders: [ConfirmationService, DialogService]\r\n})\r\nexport class FavoritePagesSidebarComponent implements OnInit {\r\n\tfavoritePages = signal<FavoritePageResponseDTO[]>([]);\r\n\tisCurrentPageFavorited = signal<boolean>(false);\r\n\tsolidIcons = solidIcons;\r\n\tcurrentPage = signal<number>(1);\r\n\tpageSize = signal<number>(10);\r\n\ttotalItems = signal<number>(0);\r\n\ttotalPages = signal<number>(0);\r\n\tallFavoritePages = computed(() => this.favoritePagesService.allFavoritePages());\r\n\r\n\tprivate subjects = {\r\n\t\tloadAllFavorites: new Subject<void>(),\r\n\t\tdeleteFavorite: new Subject<number>()\r\n\t};\r\n\r\n\tloadAllFavoritesService = toSignal(\r\n\t\tthis.subjects.loadAllFavorites.pipe(\r\n\t\t\tswitchMap(() =>\r\n\t\t\t\tthis.favoritePagesService.filterFavoritePages({\r\n\t\t\t\t\tpageSize: 1000,\r\n\t\t\t\t\tpageNumber: 1\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t)\r\n\t);\r\n\r\n\tdeleteFavoriteService = toSignal(\r\n\t\tthis.subjects.deleteFavorite.pipe(switchMap((id) => this.favoritePagesService.deleteFavoritePage(id)))\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate favoritePagesService: FavoritePagesService,\r\n\t\tprivate confirmationService: ConfirmationService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.initializeEffects();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadFavoritePages();\r\n\t\tthis.checkCurrentPageStatus();\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.loadAllFavoritesService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.favoritePagesService.allFavoritePages.set(service.response.result);\r\n\t\t\t\t\tthis.totalItems.set(service.response.result.length);\r\n\t\t\t\t\tthis.updateClientSidePagination();\r\n\t\t\t\t\tthis.checkCurrentPageStatus();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.deleteFavoriteService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.loadFavoritePages();\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('favoritePages.success'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('favoritePages.deletedSuccessfully'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.favoritePagesSidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.favoritePagesSidebarVisible = value;\r\n\t\tif (value) {\r\n\t\t\tthis.checkCurrentPageStatus();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate loadFavoritePages(): void {\r\n\t\tthis.subjects.loadAllFavorites.next();\r\n\t}\r\n\r\n\tprivate updateClientSidePagination(): void {\r\n\t\tconst allFavorites = this.allFavoritePages();\r\n\t\tconst totalItems = allFavorites.length;\r\n\t\tconst pageSize = this.pageSize();\r\n\t\tconst currentPage = this.currentPage();\r\n\r\n\t\tconst totalPages = Math.ceil(totalItems / pageSize);\r\n\t\tthis.totalPages.set(totalPages);\r\n\r\n\t\tconst startIndex = (currentPage - 1) * pageSize;\r\n\t\tconst endIndex = Math.min(startIndex + pageSize, totalItems);\r\n\r\n\t\tconst currentPageData = allFavorites.slice(startIndex, endIndex);\r\n\t\tthis.favoritePages.set(currentPageData);\r\n\t}\r\n\r\n\tprivate checkCurrentPageStatus(): void {\r\n\t\tconst currentPath = this.favoritePagesService.getCurrentRoutePath();\r\n\t\tconst allFavorites = this.allFavoritePages();\r\n\t\tconst isFound = allFavorites.some((fav) => fav.url === currentPath);\r\n\r\n\t\tthis.isCurrentPageFavorited.set(isFound);\r\n\t}\r\n\r\n\taddCurrentPageToFavorites(): void {\r\n\t\tconst currentPath = this.favoritePagesService.getCurrentRoutePath();\r\n\r\n\t\tconst ref = this.dialogService.open(AddEditFavoriteModalComponent, {\r\n\t\t\theader: this.translocoService.translate('favoritePages.addToFavorites'),\r\n\t\t\twidth: '500px',\r\n\t\t\tmodal: true,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tmode: 'add',\r\n\t\t\t\turl: currentPath\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe((result) => {\r\n\t\t\tif (result?.status === 'success') {\r\n\t\t\t\tthis.loadFavoritePages();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tremoveCurrentPageFromFavorites(): void {\r\n\t\tconst currentPath = this.favoritePagesService.getCurrentRoutePath();\r\n\t\tconst favorites = this.favoritePages();\r\n\t\tconst currentFavorite = favorites.find((fav) => fav.url === currentPath);\r\n\r\n\t\tif (currentFavorite) {\r\n\t\t\tthis.confirmationService.confirm({\r\n\t\t\t\tmessage: `'${currentFavorite.label}' ` + this.translocoService.translate('favoritePages.confirmDelete'),\r\n\t\t\t\theader: this.translocoService.translate('favoritePages.deleteConfirmTitle'),\r\n\t\t\t\ticon: 'pi pi-info-circle',\r\n\t\t\t\tacceptLabel: this.translocoService.translate('acceptButtonLabel'),\r\n\t\t\t\trejectLabel: this.translocoService.translate('rejectButtonLabel'),\r\n\t\t\t\tacceptButtonStyleClass: 'p-button-success',\r\n\t\t\t\trejectButtonStyleClass: 'p-button-danger',\r\n\t\t\t\taccept: () => {\r\n\t\t\t\t\tthis.subjects.deleteFavorite.next(currentFavorite.id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\teditFavorite(favorite: FavoritePageResponseDTO, event: Event): void {\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tconst ref = this.dialogService.open(AddEditFavoriteModalComponent, {\r\n\t\t\theader: this.translocoService.translate('favoritePages.editFavorite'),\r\n\t\t\twidth: '500px',\r\n\t\t\tmodal: true,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tmode: 'edit',\r\n\t\t\t\tfavorite: favorite\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe((result) => {\r\n\t\t\tif (result?.status === 'success') {\r\n\t\t\t\tthis.loadFavoritePages();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteFavorite(favorite: FavoritePageResponseDTO, event: Event): void {\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tthis.confirmationService.confirm({\r\n\t\t\ttarget: event.target as EventTarget,\r\n\t\t\tmessage: `'${favorite.label}' ` + this.translocoService.translate('favoritePages.confirmDelete'),\r\n\t\t\theader: this.translocoService.translate('favoritePages.deleteConfirmTitle'),\r\n\t\t\ticon: 'pi pi-info-circle',\r\n\t\t\tacceptLabel: this.translocoService.translate('acceptButtonLabel'),\r\n\t\t\trejectLabel: this.translocoService.translate('rejectButtonLabel'),\r\n\t\t\tacceptButtonStyleClass: 'p-button-success',\r\n\t\t\trejectButtonStyleClass: 'p-button-danger',\r\n\t\t\taccept: () => {\r\n\t\t\t\tthis.subjects.deleteFavorite.next(favorite.id);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tnavigateToFavorite(favorite: FavoritePageResponseDTO): void {\r\n\t\tthis.favoritePagesService.navigateToFavoritePage(favorite);\r\n\t\tthis.visible = false;\r\n\t}\r\n\r\n\ttrackByFavoriteId(index: number, favorite: FavoritePageResponseDTO): number {\r\n\t\treturn favorite.id;\r\n\t}\r\n\r\n\tonPageChange(event: any): void {\r\n\t\tthis.currentPage.set(event.page + 1);\r\n\t\tthis.pageSize.set(event.rows);\r\n\t\tthis.updateClientSidePagination(); // Update pagination client-side, no API call\r\n\t}\r\n\r\n\tgetFullUrl(url: string): string {\r\n\t\treturn this.favoritePagesService.getFullUrl(url);\r\n\t}\r\n\r\n\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"favorite-item\"\r\n\t\t\t\t\t\t\t\t[class.default-item]=\"favorite.id < 0\"\r\n\t\t\t\t\t\t\t\t(click)=\"navigateToFavorite(favorite)\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"getFullUrl(favorite.url)\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faPenToSquare\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--yellow-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"editFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n","export enum LanguageCode {\r\n\tTR = 'tr',\r\n\tEN = 'en'\r\n}\r\n\r\nexport enum ActivityTypesEnum {\r\n\tSMS = 'SMS',\r\n\tEMAIL = 'MAIL'\r\n}\r\n\r\nexport enum DetailNotificationTypeEnum {\r\n\tTODO_ITEM = 'TODO_ITEM',\r\n\tBATCH_JOB = 'BATCH_JOB'\r\n}","import { PrimeIcons } from 'primeng/api';\r\n\r\nexport interface SuggestionsGroupDTO {\r\n\tkey: number | string | null;\r\n\ttext: string;\r\n\tattributes?: AttributeElement[];\r\n\tassetDefinitionCode?: string;\r\n\titems: SuggestionsDTO[];\r\n}\r\nexport interface SuggestionsDTO {\r\n\tkey: number | string | null;\r\n\ttext: string;\r\n\tattributes?: AttributeElement[];\r\n}\r\n\r\nexport interface DefaultSearchAggregateAssetAggregate {\r\n\t[key: string]: AdditionalProp;\r\n}\r\n\r\nexport interface AdditionalProp {\r\n\tresultInfo: ResultInfo;\r\n\tresult: AssetAggregate[];\r\n}\r\n\r\nexport interface ResultInfo {\r\n\ttotalPage: number;\r\n\ttotalItem: number;\r\n}\r\n\r\nexport interface AssetAggregate {\r\n\tid: number;\r\n\tassetDefinitionId: number;\r\n\tassetDefinitionCode: string;\r\n\tassetDefinitionName: string;\r\n\tuniqueIdentifier: string;\r\n\tauthorityGroup: string;\r\n\tcreateDate: number;\r\n\tupdateDate: number;\r\n\tupdateUser: string;\r\n\tcreateUser: string;\r\n\tassets: Asset[];\r\n\tattributes: AttributeElement[];\r\n\tkey?: number;\r\n\ttext?: string;\r\n}\r\n\r\nexport interface Asset {\r\n\talias: string;\r\n\tassetDefinitionID: number;\r\n\tassetDefinitionCode: string;\r\n\tassetDefinitionName: string;\r\n\tassetId: number;\r\n}\r\n\r\nexport interface AttributeElement {\r\n\tid: number;\r\n\tattribute: AttributeAttribute;\r\n\tvalue: Value;\r\n\tstartDate: number;\r\n\tvalueDesc: string;\r\n}\r\n\r\nexport interface AttributeAttribute {\r\n\talias: string;\r\n\tattributeCode: string;\r\n\tattributeName: string;\r\n\tattributeId: number;\r\n\tattributeType: string;\r\n\treferringAsset?: {\r\n\t\tdetailPageUrl?: string;\r\n\t};\r\n}\r\n\r\nexport interface Value {}\r\n\r\nexport interface PagerDTO {\r\n\tpageSize: number;\r\n\tpageNumber: number;\r\n}\r\nexport interface CacheSearchRequestDTO {\r\n\tassetDefinitionCodes: string[];\r\n\tsearchText?: string;\r\n\tmql?: string;\r\n\tpager: PagerDTO;\r\n}\r\n\r\nexport enum AssetCodes {\r\n\tMasterData = 'MasterData',\r\n\tLightingFacility = 'LightingFacility',\r\n\tConnectionPoint = 'ConnectionPoint',\r\n\tPremise = 'Premise',\r\n\tServicePoint = 'ServicePoint',\r\n\tServicePointGroup = 'ServicePointGroup',\r\n\tDistributionConnectionAgreement = 'DistributionConnectionAgreement',\r\n\tContract = 'Contract',\r\n\tBusinessPartner = 'BusinessPartner',\r\n\tAccount = 'Account',\r\n\tWarehouse = 'Warehouse',\r\n\tTeam = 'Team',\r\n\tDevice = 'Device',\r\n\tLocation = 'Location',\r\n\tMaterial = 'Material',\r\n\tSerializedMaterial = 'SerializedMaterial',\r\n\tLegalEntityBusinessPartner = 'LegalEntityBusinessPartner',\r\n\tOrganization = 'Organization',\r\n\tFieldStaff = 'FieldStaff',\r\n\tSSB = 'SSB',\r\n\tProducerServicePoint = 'ProducerServicePoint',\r\n\tUnlicensedProducerServicePoint = 'UnlicensedProducerServicePoint',\r\n\tLicensedProducerServicePoint = 'LicensedProducerServicePoint',\r\n\tGeneralLightingServicePoint = 'GeneralLightingServicePoint',\r\n\tConsumerServicePoint = 'ConsumerServicePoint',\r\n\tGeneralLightingContract = 'GeneralLightingContract',\r\n\tUnmeteredContract = 'UnmeteredContract',\r\n\tProducerContract = 'ProducerContract',\r\n\tUnlicensedProducerContract = 'UnlicensedProducerContract',\r\n\tLicensedProducerContract = 'LicensedProducerContract',\r\n\tConsumerContract = 'ConsumerContract',\r\n\tHumanBusinessPartner = 'HumanBusinessPartner',\r\n\tMeter = 'Meter',\r\n\tSeal = 'Seal',\r\n\tSimCard = 'SimCard',\r\n\tTransformer = 'Transformer',\r\n\tMeasurementTransformer = 'MeasurementTransformer',\r\n\tPowerTransformer = 'PowerTransformer',\r\n\tGateway = 'Gateway',\r\n\tNonSerializedMaterial = 'NonSerializedMaterial',\r\n\tMaterialClass = 'MaterialClass',\r\n\tGatewayMaterialClass = 'GatewayMaterialClass',\r\n\tMeterMaterialClass = 'MeterMaterialClass',\r\n\tTransformerMaterialClass = 'TransformerMaterialClass',\r\n\tPowerTransformerMaterialClass = 'PowerTransformerMaterialClass',\r\n\tMeasurementTransformerMaterialClass = 'MeasurementTransformerMaterialClass'\r\n}\r\n\r\nexport type PresentableData = {\r\n\ttitle: string;\r\n\ticon: PrimeIcons;\r\n\tsubtitle: string;\r\n\tassetId: string;\r\n\turl: string;\r\n};\r\n","import { AssetAggregate, AssetCodes, PresentableData } from './models';\r\n\r\nimport { DefaultSearchAggregateAssetAggregate } from './models';\r\n\r\nimport { PrimeIcons } from 'primeng/api';\r\n\r\ntype MappedIcon = PrimeIcons;\r\n\r\nexport function getIcon(key: string): MappedIcon {\r\n\tswitch (key) {\r\n\t\tcase AssetCodes.Account:\r\n\t\t\treturn PrimeIcons.USER;\r\n\t\tcase AssetCodes.HumanBusinessPartner:\r\n\t\t\treturn PrimeIcons.USER;\r\n\t\tcase AssetCodes.Contract:\r\n\t\t\treturn PrimeIcons.FILE_EDIT;\r\n\t\tcase AssetCodes.ConnectionPoint:\r\n\t\t\treturn PrimeIcons.BUILDING;\r\n\t\tcase AssetCodes.Warehouse:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.Team:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.Premise:\r\n\t\t\treturn PrimeIcons.BUILDING;\r\n\t\tcase AssetCodes.PowerTransformer:\r\n\t\t\treturn PrimeIcons.BOLT;\r\n\t\tcase AssetCodes.Gateway:\r\n\t\t\treturn PrimeIcons.SERVER;\r\n\t\tcase AssetCodes.Seal:\r\n\t\t\treturn PrimeIcons.TICKET;\r\n\t\tcase AssetCodes.Meter:\r\n\t\t\treturn PrimeIcons.COMPASS;\r\n\t\tcase AssetCodes.SimCard:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MeasurementTransformer:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.GatewayMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MeterMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.PowerTransformerMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MeasurementTransformerMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.BusinessPartner:\r\n\t\t\treturn PrimeIcons.USER;\r\n\t\tcase AssetCodes.LegalEntityBusinessPartner:\r\n\t\t\treturn PrimeIcons.BUILDING;\r\n\t\tcase AssetCodes.Organization:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.FieldStaff:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.SSB:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.ServicePoint:\r\n\t\t\treturn PrimeIcons.COG;\r\n\t\tcase AssetCodes.ServicePointGroup:\r\n\t\t\treturn PrimeIcons.SITEMAP;\r\n\t\tcase AssetCodes.Device:\r\n\t\t\treturn PrimeIcons.PHONE;\r\n\t\tdefault:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t}\r\n}\r\n\r\nexport const getPresentableData = (items: DefaultSearchAggregateAssetAggregate, key: string): PresentableData[] => {\r\n\tconst transformToPresentableDataFor = (k: string) => (item: AssetAggregate) => {\r\n\t\tconst attributes = item?.attributes ?? [];\r\n\r\n\t\tconst assetNumberAttr = attributes.find((a) => a?.attribute?.attributeCode === 'AssetNumber');\r\n\t\tconst assetNameAttr = attributes.find((a) => a?.attribute?.attributeCode === 'AssetDefinitionName');\r\n\r\n\t\tconst number = assetNumberAttr?.valueDesc ?? 'N/A';\r\n\r\n\t\tconst subtitle = attributes\r\n\t\t\t.filter((a) => a?.attribute?.attributeCode !== 'AssetNumber')\r\n\t\t\t.map((a) => a?.valueDesc)\r\n\t\t\t.filter((v) => v != null && v !== '')\r\n\t\t\t.map(String)\r\n\t\t\t.join(' - ');\r\n\r\n\t\tconst assetIdAttr = attributes.find((a) => a?.attribute?.attributeCode === 'AssetId');\r\n\t\tconst id = assetIdAttr?.valueDesc ?? '';\r\n\t\tconst icon = getIcon(k);\r\n\t\tconst url =\r\n\t\t\tassetNumberAttr?.attribute?.referringAsset?.detailPageUrl ?\r\n\t\t\t\t`${assetNumberAttr.attribute.referringAsset.detailPageUrl}/${id}`\r\n\t\t\t:\t'';\r\n\r\n\t\treturn {\r\n\t\t\ttitle: `${assetNameAttr?.valueDesc ?? 'N/A'} #${number}`,\r\n\t\t\tsubtitle,\r\n\t\t\ticon,\r\n\t\t\turl: url,\r\n\t\t\tassetId: id\r\n\t\t};\r\n\t};\r\n\r\n\tif (key === 'all') {\r\n\t\treturn Object.keys(items).flatMap((k) => (items[k]?.result ?? []).map(transformToPresentableDataFor(k)));\r\n\t}\r\n\r\n\treturn (items[key]?.result ?? []).map(transformToPresentableDataFor(key));\r\n};\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nimport { CacheSearchRequestDTO, DefaultSearchAggregateAssetAggregate } from '../app/general-search/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SearchService extends RestClient {\r\n\toverride states: ServiceCallStateMap<SearchService> = {};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'master-data/cache-search', {}, Apps.MNG)\r\n\tsearchForAssets(post: CacheSearchRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<DefaultSearchAggregateAssetAggregate>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, effect, signal } from '@angular/core';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { AutoCompleteModule, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\n\r\nimport { TranslocoModule } from '@ngneat/transloco';\r\nimport { of, startWith } from 'rxjs';\r\nimport { catchError, distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\nimport { SearchService } from '../../service/search.service';\r\nimport { getPresentableData } from './helpers';\r\nimport { CacheSearchRequestDTO, DefaultSearchAggregateAssetAggregate, PresentableData } from './models';\r\n\r\n@Component({\r\n\tselector: 'app-general-search',\r\n\tstandalone: true,\r\n\timports: [CommonModule, FormsModule, TranslocoModule, AutoCompleteModule],\r\n\ttemplateUrl: './general-search.component.html',\r\n\tstyleUrls: ['./general-search.component.scss']\r\n})\r\nexport class GeneralSearchComponent {\r\n\tquery = '';\r\n\tactiveTab = 'all';\r\n\tdata: DefaultSearchAggregateAssetAggregate = {};\r\n\tpresentableData: PresentableData[] = [];\r\n\tquerySig = signal<string>('');\r\n\tresultsSig = toSignal<DefaultSearchAggregateAssetAggregate | null>(\r\n\t\ttoObservable(this.querySig).pipe(\r\n\t\t\tmap((q) => q.trim()),\r\n\t\t\tfilter((q) => q.length > 2),\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\tswitchMap((q) => {\r\n\t\t\t\tconst payload: CacheSearchRequestDTO = {\r\n\t\t\t\t\tsearchText: q,\r\n\t\t\t\t\tassetDefinitionCodes: [],\r\n\t\t\t\t\tpager: { pageSize: 5, pageNumber: 1 }\r\n\t\t\t\t};\r\n\t\t\t\treturn this.searchService.searchForAssets(payload).pipe(\r\n\t\t\t\t\tmap((res) => res.response),\r\n\t\t\t\t\tcatchError(() => {\r\n\t\t\t\t\t\treturn of({} as DefaultSearchAggregateAssetAggregate);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstartWith(null)\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t),\r\n\t\t{ initialValue: null }\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly searchService: SearchService\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tconst results = this.resultsSig();\r\n\t\t\tif (results) {\r\n\t\t\t\tthis.data = results;\r\n\t\t\t\tthis.presentableData = getPresentableData(results, this.activeTab);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsearch(query: string) {\r\n\t\tthis.query = (query ?? '').trim();\r\n\t\tthis.querySig.set(this.query);\r\n\t}\r\n\r\n\tsetTab(tab: string) {\r\n\t\tthis.activeTab = tab;\r\n\t\tthis.presentableData = getPresentableData(this.data, tab);\r\n\t}\r\n\r\n\tgoToDetail(item: PresentableData) {\r\n\t\tconst isHostYeap = (<any>globalThis).activeHost === Apps.YEAP;\r\n\r\n\t\tif (isHostYeap) {\r\n\t\t\tthis.router.navigate(['mng/master-data/view-md-data'], {\r\n\t\t\t\tqueryParams: { assetId: item.assetId }\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.router.navigate([item.url]);\r\n\t\t}\r\n\t}\r\n\r\n\tonResultClick(item: AutoCompleteSelectEvent) {\r\n\t\tthis.goToDetail(item.value);\r\n\t}\r\n}\r\n","<ng-container *transloco=\"let g\">\r\n\t<ng-container *transloco=\"let t; read: 'generalSearch'\">\r\n\t\t<div class=\"global-search\">\r\n\t\t\t<p-autoComplete\r\n\t\t\t\t[(ngModel)]=\"query\"\r\n\t\t\t\toptionLabel=\"title\"\r\n\t\t\t\tminLength=\"3\"\r\n\t\t\t\t[delay]=\"500\"\r\n\t\t\t\t(completeMethod)=\"search($event.query)\"\r\n\t\t\t\t[suggestions]=\"presentableData\"\r\n\t\t\t\t[placeholder]=\"t('placeholder')\"\r\n\t\t\t\t(onSelect)=\"onResultClick($event)\">\r\n\t\t\t\t<ng-template pTemplate=\"empty\">\r\n\t\t\t\t\t<div class=\"px-3\">\r\n\t\t\t\t\t\t{{ t('noResults') }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<div class=\"tabs flex gap-2 overflow-x-auto white-space-nowrap p-2 border-bottom-1 border-gray-200\">\r\n\t\t\t\t\t\t<span (click)=\"setTab('all')\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === 'all'\">\r\n\t\t\t\t\t\t\t{{ t('all') }}\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t@for (tab of data | keyvalue; track tab) {\r\n\t\t\t\t\t\t\t<span (click)=\"setTab(tab.key)\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === tab.key\">\r\n\t\t\t\t\t\t\t\t{{ data[tab.key].result[0].assetDefinitionName }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template let-result pTemplate=\"item\">\r\n\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t<div class=\"result-icon\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ result.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"result-text\">\r\n\t\t\t\t\t\t\t<div class=\"title mb-2\">{{ result.title }}</div>\r\n\t\t\t\t\t\t\t@if (result.subtitle) {\r\n\t\t\t\t\t\t\t\t<div class=\"subtitle\">{{ result.subtitle }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t@if (result.url) {\r\n\t\t\t\t\t\t\t<div class=\"open-btn ml-auto align-self-center\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t\t\t<div class=\"px-3 py-3 border-top-1 border-gray-200\">\r\n\t\t\t\t\t\t<span>{{ presentableData.length }} {{ t('results') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-autoComplete>\r\n\t\t</div>\r\n\t</ng-container>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { MenubarModule } from 'primeng/menubar';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { LanguageCode } from '../../service/interfaces/enum';\r\nimport { Language, LanguageChangeEvent } from '../../service/interfaces/interfaces';\r\nimport { GeneralSearchComponent } from '../general-search/general-search.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-topbar',\r\n\timports: [\r\n\t\tButtonModule,\r\n\t\tUpperCasePipe,\r\n\t\tFormsModule,\r\n\t\tDividerModule,\r\n\t\tBadgeModule,\r\n\t\tMenubarModule,\r\n\t\tDropdownModule,\r\n\t\tTranslocoModule,\r\n\t\tGeneralSearchComponent\r\n\t],\r\n\ttemplateUrl: './app.topbar.component.html',\r\n\tstyleUrls: ['./app.topbar.component.scss']\r\n})\r\nexport class AppTopbarComponent {\r\n\t@ViewChild('menubutton') menuButton!: ElementRef;\r\n\r\n\tusername!: string;\r\n\tlayoutService = inject(LayoutService);\r\n\tsearch: string = '';\r\n\r\n\tlogoPath: string = '';\r\n\tcurrentFlagPath: string = '';\r\n\tcurrentLang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) || LanguageCode.TR;\r\n\r\n\tlanguages: Language[] = [\r\n\t\t{ name: 'TR', code: LanguageCode.TR, flag: 'assets/images/flags/tr.svg' },\r\n\t\t{ name: 'EN', code: LanguageCode.EN, flag: 'assets/images/flags/gb.svg' }\r\n\t];\r\n\r\n\tconstructor(\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly pubSubService: PubSubService,\r\n\t\tprivate readonly keycloak: KeycloakService\r\n\t) {\r\n\t\tthis.translocoService.setActiveLang(this.currentLang);\r\n\t\tthis.publishLanguageChange(this.currentLang);\r\n\t\tthis.setFlagPath(this.currentLang);\r\n\t\tthis.setLogoPath();\r\n\r\n\t\tthis.username = this.keycloak.getUsername();\r\n\t}\r\n\r\n\tget unreadCount(): number {\r\n\t\treturn this.layoutService.getUnreadNotificationCount();\r\n\t}\r\n\r\n\tonMenuButtonClick(): void {\r\n\t\tthis.layoutService.onMenuToggle();\r\n\t}\r\n\r\n\tonProfileButtonClick(): void {\r\n\t\tthis.layoutService.showProfileSidebar();\r\n\t}\r\n\r\n\tonHistoryButtonClick(): void {\r\n\t\tthis.layoutService.showHistorySidebar();\r\n\t}\r\n\r\n\tonSiteMapButtonClick(): void {\r\n\t\tthis.layoutService.showSiteMapSidebar();\r\n\t}\r\n\r\n\tonFavoritePagesButtonClick(): void {\r\n\t\tthis.layoutService.showFavoritePagesSidebar();\r\n\t}\r\n\r\n\tonNotificationsButtonClick(): void {\r\n\t\tthis.layoutService.showNotificationsSidebar();\r\n\t}\r\n\r\n\tonLanguageChange(): void {\r\n\t\tlocalStorage.setItem('lang', this.currentLang);\r\n\r\n\t\tthis.translocoService.setActiveLang(this.currentLang);\r\n\r\n\t\twindow.location.reload();\r\n\r\n\t\tthis.publishLanguageChange(this.currentLang);\r\n\t}\r\n\r\n\tprivate publishLanguageChange(language: LanguageCode): void {\r\n\t\tconst event: LanguageChangeEvent = {\r\n\t\t\tname: 'languageChanged',\r\n\t\t\tdata: {\r\n\t\t\t\tpath: '',\r\n\t\t\t\tcustom: {\r\n\t\t\t\t\tlanguage\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.pubSubService.publish(event);\r\n\t}\r\n\r\n\tsetFlagPath(lang: LanguageCode) {\r\n\t\tswitch (lang) {\r\n\t\t\tcase LanguageCode.TR:\r\n\t\t\t\tthis.currentFlagPath = 'assets/images/flags/tr.svg';\r\n\t\t\t\tbreak;\r\n\t\t\tcase LanguageCode.EN:\r\n\t\t\t\tthis.currentFlagPath = 'assets/images/flags/gb.svg';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.currentFlagPath = 'assets/images/flags/tr.svg';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetLogoPath() {\r\n\t\tif ((<any>globalThis).activeHost) {\r\n\t\t\tswitch ((<any>globalThis).activeHost) {\r\n\t\t\t\tcase Apps.YEAP:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo-dark.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.THOR:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/thor-logo-dark.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.LENA:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/lena-logo-dark.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo-dark.png';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tswitch ((<any>globalThis).activeMF) {\r\n\t\t\t\tcase Apps.HES:\r\n\t\t\t\tcase Apps.CTS:\r\n\t\t\t\tcase Apps.SIS:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/lena-logo.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.CRM:\r\n\t\t\t\tcase Apps.BILLING:\r\n\t\t\t\tcase Apps.PAYMENT:\r\n\t\t\t\tcase Apps.WDM:\r\n\t\t\t\tcase Apps.MNG:\r\n\t\t\t\tcase Apps.DMS:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/thor-logo.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.MW:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo.png';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n<!-- <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb> -->\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { InputIconModule } from 'primeng/inputicon';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { RatingModule } from 'primeng/rating';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\n\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { BehaviorSubject, firstValueFrom } from 'rxjs';\r\n\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { TextAreaComponent } from 'aril/ui/textArea';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-chatbot',\r\n\timports: [\r\n\t\tButtonModule,\r\n\t\tSidebarModule,\r\n\t\tRadioButtonModule,\r\n\t\tFormsModule,\r\n\t\tInputIconModule,\r\n\t\tIconFieldModule,\r\n\t\tInputTextModule,\r\n\t\tMessagesModule,\r\n\t\tTextAreaComponent,\r\n\t\tRatingModule,\r\n\t\tButtonComponent\r\n\t],\r\n\ttemplateUrl: './app.chatbot.component.html',\r\n\tstyleUrl: './app.chatbot.component.scss'\r\n})\r\nexport class AppChatbotComponent {\r\n\tchatbotVisible = false;\r\n\tprojectName!: string;\r\n\tquestionQuery!: string;\r\n\tqueryList: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\r\n\terror!: string;\r\n\thistoryList: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\r\n\tisTyping = false;\r\n\ttypingInterval: any;\r\n\ttypingText = '.';\r\n\tusername: string;\r\n\tvisibleGiveFeedback = false;\r\n\tfeedbackComments = '';\r\n\tfeedbackRating = 0;\r\n\tfeedBackResult!: string;\r\n\tbaseUrl = API_CONFIGS.aiApi;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly http: HttpClient,\r\n\t\tprivate readonly keycloak: KeycloakService\r\n\t) {\r\n\t\tthis.username = this.keycloak.getUsername();\r\n\t}\r\n\r\n\tsendRequest() {\r\n\t\tthis.fetchData();\r\n\t}\r\n\r\n\tasync getHistory() {\r\n\t\ttry {\r\n\t\t\tawait this.http\r\n\t\t\t\t.get<any[]>(this.baseUrl + 'history?project=CRM' + '&user_name=' + this.username)\r\n\t\t\t\t.subscribe((response) => {\r\n\t\t\t\t\tthis.historyList.next(response);\r\n\t\t\t\t});\r\n\t\t} catch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t}\r\n\t}\r\n\r\n\tasync fetchData() {\r\n\t\tthis.startTyping();\r\n\t\tconst request = {\r\n\t\t\tproject: 'CRM',\r\n\t\t\tuser_name: this.username,\r\n\t\t\tquery: this.questionQuery\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await firstValueFrom(this.http.post<any>(this.baseUrl + 'chat', request));\r\n\t\t\tif (result && result.answer) {\r\n\t\t\t\tthis.queryList.next([...this.queryList.value, { question: this.questionQuery, answer: result.answer }]);\r\n\t\t\t}\r\n\t\t} catch (error: any) {\r\n\t\t\tthis.error = error;\r\n\t\t} finally {\r\n\t\t\tthis.questionQuery = '';\r\n\t\t\tthis.stopTyping();\r\n\t\t}\r\n\t}\r\n\tonVisible() {\r\n\t\tthis.getHistory();\r\n\t\tthis.chatbotVisible = true;\r\n\t}\r\n\r\n\tstartTyping() {\r\n\t\tthis.isTyping = true;\r\n\t\tlet dots = 0;\r\n\r\n\t\tthis.typingInterval = setInterval(() => {\r\n\t\t\tdots = (dots + 1) % 4;\r\n\t\t\tthis.typingText = '.'.repeat(dots);\r\n\t\t}, 300);\r\n\t}\r\n\r\n\tstopTyping() {\r\n\t\tclearInterval(this.typingInterval);\r\n\t\tthis.isTyping = false;\r\n\t}\r\n\r\n\tgiveFeedback() {\r\n\t\tthis.visibleGiveFeedback = true;\r\n\t}\r\n\tasync sendFeedback() {\r\n\t\tconst request = {\r\n\t\t\tproject: 'CRM',\r\n\t\t\tuser_name: this.username,\r\n\t\t\trating: this.feedbackRating,\r\n\t\t\tcomments: this.feedbackComments\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst result = await firstValueFrom(this.http.post<any>(this.baseUrl + 'feedback', request));\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.feedBackResult = result.message;\r\n\t\t\t}\r\n\t\t} catch (error: any) {\r\n\t\t\tthis.error = error;\r\n\t\t} finally {\r\n\t\t\tthis.visibleGiveFeedback = false;\r\n\t\t\tthis.feedbackComments = '';\r\n\t\t\tthis.feedbackRating = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tcancelFeedback() {\r\n\t\tthis.visibleGiveFeedback = false;\r\n\t\tthis.feedbackComments = '';\r\n\t\tthis.feedbackRating = 0;\r\n\t}\r\n}\r\n","<button class=\"layout-config-button p-link\" type=\"button\" (click)=\"chatbotVisible=true\">\r\n\t<i class=\"pi pi-comments\"></i>\r\n</button>\r\n\r\n<p-sidebar\r\n\t[(visible)]=\"chatbotVisible\"\r\n\tposition=\"right\"\r\n\tstyleClass=\"w-30rem flex flex-column\"\r\n\t[style]=\"{ height: '100%' }\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"custom-sidebar-header\">\r\n\t\t\t<span class=\"header-title\">THOR Asistan</span>\r\n\t\t\t<i class=\"pi pi-thumbs-up custom-icon\" (click)=\"giveFeedback()\" (keypress)=\"giveFeedback()\"></i>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"flex flex-column flex-1\">\r\n\t\t<p-messages severity=\"info\">\r\n\t\t\t<ng-template pTemplate>\r\n\t\t\t\t<i class=\"pi pi-info-circle text-xl\"></i>\r\n\t\t\t\t<div class=\"ml-2\">Sorularının cevabına buradan ulaşabilirsin.</div>\r\n\t\t\t</ng-template>\r\n\t\t</p-messages>\r\n\t</div>\r\n\r\n\t<div class=\"flex flex-column flex-1 query-details\" style=\"height: 85%; position: relative\">\r\n\t\t<div class=\"query-history\" style=\"flex: 1; max-height: 85%; overflow-y: auto; padding-right: 0.5rem\">\r\n\t\t\t@if (historyList.getValue().length > 0) {\r\n\t\t\t\t@for (historyItem of historyList.getValue(); track $index) {\r\n\t\t\t\t\t<div class=\"flex flex-column mb-2\">\r\n\t\t\t\t\t\t<div class=\"card shadow-none flex-1 flex align-items-center\" style=\"background-color: #e2e4e5\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-user text-xl\"></i>\r\n\t\t\t\t\t\t\t<div class=\"ml-4\">{{ historyItem.query }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"flex flex-column mb-2\">\r\n\t\t\t\t\t\t<div class=\"card shadow-none flex-1 flex align-items-center ml-5\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-comment text-xl\"></i>\r\n\t\t\t\t\t\t\t<div class=\"ml-4\">{{ historyItem.answer }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t@if (queryList.getValue().length > 0) {\r\n\t\t\t\t@for (item of queryList.getValue(); track $index) {\r\n\t\t\t\t\t<div class=\"flex flex-column mb-2\">\r\n\t\t\t\t\t\t<div class=\"card shadow-none flex-1 flex align-items-center\" style=\"background-color: #e2e4e5\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-user text-xl\"></i>\r\n\t\t\t\t\t\t\t<div class=\"ml-4 text-lg\">{{ item.question }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"flex flex-column\">\r\n\t\t\t\t\t\t<div class=\"card shadow-none flex-1 flex align-items-center ml-5\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-comment text-xl\"></i>\r\n\t\t\t\t\t\t\t<div class=\"ml-4 text-lg\">{{ item.answer }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t@if (visibleGiveFeedback) {\r\n\t\t\t\t<div class=\"flex mb-2\">\r\n\t\t\t\t\t<div class=\"card custom-card\" style=\"background-color: #e2e4e5\">\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<span>Geri bildirimlerinizi buradan gönderebilirsiniz.</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<p-rating [(ngModel)]=\"feedbackRating\" [stars]=\"5\" />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"text-lg\">\r\n\t\t\t\t\t\t\t<aril-text-area [rows]=\"5\" [cols]=\"30\" pTextarea [(ngModel)]=\"feedbackComments\"></aril-text-area>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div>\r\n <aril-button label=\"Gönder\" color=\"danger\" icon=\"SEND\" [outlined]=\"true\" (clickEvent)=\"sendFeedback()\">\r\n </aril-button>\r\n\t\t\t\t\t\t\t<aril-button label=\"Vazgeç\" color=\"danger\" icon=\"TIMES\" [outlined]=\"true\" (clickEvent)=\"cancelFeedback()\">\r\n </aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (isTyping) {\r\n\t\t\t<div\r\n\t\t\t\tclass=\"typing-indicator\"\r\n\t\t\t\tstyle=\"font-size: 16px; font-weight: 900; padding: 6px; width: 10%; text-align: center\">\r\n\t\t\t\t{{ typingText }}\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"search-container\" style=\"position: absolute; bottom: 0; width: 100%; background: white\">\r\n\t\t\t<div class=\"search-box\" style=\"display: flex; align-items: center; gap: 0.5rem\">\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\tstyle=\"flex: 1; width: 100%\"\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tplaceholder=\"Sorunu yaz...\"\r\n\t\t\t\t\t\t[(ngModel)]=\"questionQuery\"\r\n\t\t\t\t\t\tclass=\"flex-1\"\r\n\t\t\t\t\t\tmaxlength=\"500\" />\r\n\t\t\t\t<aril-button label=\"Gönder\" color=\"danger\" icon=\"SEND\" [outlined]=\"true\" (clickEvent)=\"sendRequest()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</p-sidebar>\r\n","import { Injectable, computed, signal } from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { PluginMenuItem } from 'aril/boot/config/apps';\r\n\r\nimport { MenuChangeEvent } from './menuchangeevent';\r\n\r\ninterface MenuConfig {\r\n\titems: PluginMenuItem[];\r\n\tprefix?: string;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AppMenuService {\r\n\tprivate menuSource = new Subject<MenuChangeEvent>();\r\n\tprivate resetSource = new Subject();\r\n\r\n\tpublic menuConfig = signal<MenuConfig>({ items: [], prefix: undefined });\r\n\tpublic activeRootMenuItemKey = signal<string | undefined>(undefined);\r\n\r\n\tpublic menuItems = computed(() => {\r\n\t\tconst config = this.menuConfig();\r\n\t\t// config.items.unshift({ root: true, label: 'Home', icon: 'pi pi-fw pi-home', routerLink: '' });\r\n\r\n\t\tif (config.prefix) return config.items.map((item) => this.addPrefix(item, config.prefix));\r\n\t\telse return config.items;\r\n\t});\r\n\r\n\tmenuSource$ = this.menuSource.asObservable();\r\n\tresetSource$ = this.resetSource.asObservable();\r\n\r\n\taddPrefix(menuItem: PluginMenuItem, appPrefix: string | undefined) {\r\n\t\tif (menuItem.items) {\r\n\t\t\tmenuItem.items = menuItem.items.map((item) => this.addPrefix(item, appPrefix));\r\n\t\t} else {\r\n\t\t\tconst url = menuItem['root'] ? `/${appPrefix}` : `/${appPrefix}/${menuItem.routerLink}`;\r\n\r\n\t\t\tmenuItem.routerLink = url;\r\n\t\t}\r\n\t\treturn menuItem;\r\n\t}\r\n\r\n\tonMenuStateChange(event: MenuChangeEvent) {\r\n\t\tthis.menuSource.next(event);\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.resetSource.next(true);\r\n\t}\r\n}\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, HostListener, OnDestroy, OnInit, Signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router, RouterLink } from '@angular/router';\r\n\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { Subscription, filter } from 'rxjs';\r\n\r\nimport { PluginMenuItem } from 'aril/boot/config/apps';\r\nimport { TranslateJsonPipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { AppMenuService } from '../../service/app.menu.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-expandable-menu',\r\n\timports: [RouterLink, NgClass, TooltipModule],\r\n\ttemplateUrl: 'expandable-menu.component.html',\r\n\tproviders: [TranslateJsonPipe]\r\n})\r\nexport class ExpandableMenuComponent implements OnInit, OnDestroy {\r\n\tactiveLang: Signal<string>;\r\n\toverlayMenuOpenSubscription: Subscription | null = null;\r\n\trouterSubscription: Subscription | null = null;\r\n\tusername: string;\r\n\r\n\tisHostMode = (<any>globalThis).isHostMode;\r\n\thostMenuItems = (<any>globalThis).hostMenuItems;\r\n\tcachedMenuItems: PluginMenuItem[] = [];\r\n\r\n\tselectedMainMenuItem: PluginMenuItem | null = null;\r\n\r\n\tget sidebarExpanded(): boolean {\r\n\t\treturn this.layoutService.state.secondarySidebarExpanded;\r\n\t}\r\n\r\n\tset sidebarExpanded(value: boolean) {\r\n\t\tthis.layoutService.setSecondarySidebarExpanded(value);\r\n\t}\r\n\r\n\ttooltipText = {\r\n\t\ttoggleButton: {\r\n\t\t\texpanded: {\r\n\t\t\t\ttr: 'Menüyü Gizle',\r\n\t\t\t\ten: 'Hide Menu'\r\n\t\t\t},\r\n\t\t\tcollapsed: {\r\n\t\t\t\ttr: 'Menüyü Göster',\r\n\t\t\t\ten: 'Show Menu'\r\n\t\t\t}\r\n\t\t},\r\n\t\tlockButton: {\r\n\t\t\tlocked: {\r\n\t\t\t\ttr: 'Otomatik Kapanmayı Aç',\r\n\t\t\t\ten: 'Enable Auto-Close'\r\n\t\t\t},\r\n\t\t\tunlocked: {\r\n\t\t\t\ttr: 'Menüyü Kilitle',\r\n\t\t\t\ten: 'Lock Menu'\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate readonly MAX_LENGTH = {\r\n\t\tmain: 8,\r\n\t\tsecondary: 20,\r\n\t\ttertiary: 20\r\n\t};\r\n\r\n\tconstructor(\r\n\t\tprivate translateJsonPipe: TranslateJsonPipe,\r\n\t\tprivate menuService: AppMenuService,\r\n\t\tprivate router: Router,\r\n\t\tprivate keycloak: KeycloakService,\r\n\t\tprivate translocoService: TranslocoService,\r\n\t\tprivate layoutService: LayoutService\r\n\t) {\r\n\t\tthis.activeLang = toSignal(this.translocoService.langChanges$, { initialValue: 'tr' });\r\n\t\tthis.username = this.keycloak.getUsername().charAt(0).toUpperCase();\r\n\t}\r\n\r\n\t// Getter for layout service states\r\n\tget selectedMainItem(): number | null {\r\n\t\treturn this.layoutService.state.selectedMainItem;\r\n\t}\r\n\r\n\tget secondarySidebarExpanded(): boolean {\r\n\t\treturn this.layoutService.state.secondarySidebarExpanded;\r\n\t}\r\n\r\n\t// Check if text is truncated and needs tooltip\r\n\tisTextTruncated(\r\n\t\tlabel: any,\r\n\t\tlang: string | null,\r\n\t\tmenuType: 'main' | 'secondary' | 'tertiary' | 'nested' = 'secondary'\r\n\t): boolean {\r\n\t\tif (!label || !lang || !label[lang]) return false;\r\n\r\n\t\tconst text = label[lang];\r\n\t\tconst textLength = text.length;\r\n\t\tconst maxLength = menuType === 'nested' ? this.MAX_LENGTH.tertiary : this.MAX_LENGTH[menuType];\r\n\t\treturn textLength > maxLength;\r\n\t}\r\n\r\n\t// Recursively check if a menu item or its children match the current route\r\n\tisActiveRoute(menuItem: PluginMenuItem): boolean {\r\n\t\tif (!menuItem || !menuItem.routerLink) return false;\r\n\r\n\t\t// Get current URL path after the hash\r\n\t\tconst currentUrl = this.router.url;\r\n\t\tconst hashUrl = currentUrl.indexOf('#') > -1 ? currentUrl.split('#')[1] : currentUrl;\r\n\r\n\t\t// Check for exact match first\r\n\t\tif (hashUrl === menuItem.routerLink || hashUrl === '/' + menuItem.routerLink) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Check if current URL starts with the routerLink (handles child routes)\r\n\t\tif (\r\n\t\t\tmenuItem.routerLink !== '/' &&\r\n\t\t\t(hashUrl.startsWith(menuItem.routerLink + '/') || hashUrl.startsWith('/' + menuItem.routerLink + '/'))\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Check child items if they exist\r\n\t\tif (menuItem.items && menuItem.items.length > 0) {\r\n\t\t\treturn menuItem.items.some((childItem) => this.isActiveRoute(childItem));\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.updateMenuItems();\r\n\t\tthis.initializeMenu();\r\n\t\tthis.updateActiveMenuFromCurrentRoute();\r\n\r\n\t\t// Subscribe to route changes to handle secondary sidebar closing\r\n\t\tthis.routerSubscription = this.router.events\r\n\t\t\t.pipe(filter((event) => event instanceof NavigationEnd))\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\t// Update active menu based on the new route\r\n\t\t\t\tthis.updateActiveMenuFromCurrentRoute();\r\n\t\t\t});\r\n\r\n\t\t// Subscribe to overlay menu open notifications\r\n\t\tthis.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n\t\t\tif (this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.overlayMenuOpenSubscription) {\r\n\t\t\tthis.overlayMenuOpenSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\tif (this.routerSubscription) {\r\n\t\t\tthis.routerSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\t// Initialize the menu with proper active state\r\n\tinitializeMenu() {\r\n\t\tthis.layoutService.setSelectedMainItem(null);\r\n\t\tthis.selectedMainMenuItem = null;\r\n\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\tthis.updateMenuItems();\r\n\t}\r\n\r\n\tupdateMenuFromRootKey(index: number): void {\r\n\t\tthis.updateMenuItems();\r\n\t\tconst menuItems = this.getMenuItems();\r\n\r\n\t\tif (index >= 0 && index < menuItems.length) {\r\n\t\t\tconst item = menuItems[index];\r\n\t\t\tif (!item.separator) {\r\n\t\t\t\tthis.layoutService.setSelectedMainItem(index);\r\n\t\t\t\tthis.selectedMainMenuItem = item;\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateMenuItems(): void {\r\n\t\tthis.cachedMenuItems = this.isHostMode ? this.hostMenuItems() : this.menuService.menuItems();\r\n\t}\r\n\r\n\tgetMenuItems(): PluginMenuItem[] {\r\n\t\treturn this.cachedMenuItems;\r\n\t}\r\n\r\n\tselectMainItem(index: number, item: PluginMenuItem): void {\r\n\t\tif (item.routerLink && (!item.items || item.items.length === 0)) {\r\n\t\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\t\tthis.layoutService.setSelectedMainItem(index);\r\n\t\t\tthis.selectedMainMenuItem = item;\r\n\t\t\tthis.router.navigate([item.routerLink]);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Handle regular menu items with submenu\r\n\t\tif (this.selectedMainItem === index) {\r\n\t\t\tthis.layoutService.toggleSecondarySidebar();\r\n\t\t} else {\r\n\t\t\tthis.layoutService.setSelectedMainItem(index);\r\n\t\t\tthis.selectedMainMenuItem = item;\r\n\r\n\t\t\tif (item.items && item.items.length > 0) {\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// For mobile devices, ensure the menu stays open\r\n\t\tif (this.isMobile()) {\r\n\t\t\tthis.layoutService.state.staticMenuMobileActive = true;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleSecondarySidebar(): void {\r\n\t\tthis.layoutService.toggleSecondarySidebar();\r\n\t}\r\n\r\n\tisMobile(): boolean {\r\n\t\treturn this.layoutService.isMobile();\r\n\t}\r\n\r\n\t// Listen for resize events - now handled more efficiently by layout service\r\n\t@HostListener('window:resize')\r\n\tonResize() {\r\n\t\tif (!this.isMobile() && this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\tthis.layoutService.closeMobileMenu();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateActiveMenuFromCurrentRoute(): void {\r\n\t\tconst menuItems = this.getMenuItems();\r\n\r\n\t\tfor (let i = 0; i < menuItems.length; i++) {\r\n\t\t\tconst menuItem = menuItems[i];\r\n\t\t\tif (this.isActiveRoute(menuItem)) {\r\n\t\t\t\tthis.layoutService.setSelectedMainItem(i);\r\n\t\t\t\tthis.selectedMainMenuItem = menuItem;\r\n\r\n\t\t\t\tif (menuItem.items && menuItem.items.length > 0) {\r\n\t\t\t\t\tif (!this.isMobile() && !this.secondarySidebarExpanded && !this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisHaveSelectedChildItem(item: PluginMenuItem): boolean {\r\n\t\tif (!item || !item.items || item.items.length === 0) return false;\r\n\r\n\t\tfor (const child of item.items) {\r\n\t\t\tif (this.isActiveRoute(child)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (child.items && child.items.length > 0) {\r\n\t\t\t\tif (this.isHaveSelectedChildItem(child)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetLocalText(text: any): string {\r\n\t\treturn this.translateJsonPipe.transform(text);\r\n\t}\r\n\r\n\ttoggleSidebar() {\r\n\t\t// Eğer seçili bir ana menü öğesi varsa ve alt menüleri varsa toggle yapabiliriz\r\n\t\tif (this.selectedMainMenuItem && this.selectedMainMenuItem.items && this.selectedMainMenuItem.items.length > 0) {\r\n\t\t\tthis.sidebarExpanded = !this.sidebarExpanded;\r\n\t\t} else if (this.sidebarExpanded) {\r\n\t\t\tthis.sidebarExpanded = false;\r\n\t\t}\r\n\t}\r\n}\r\n","<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Create menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, Signal, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { NavigationEnd } from '@angular/router';\r\n\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subscription, filter } from 'rxjs';\r\n\r\nimport { PluginMenuItem } from 'aril/boot/config/apps';\r\nimport { TranslateJsonPipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { AppMenuService } from '../../service/app.menu.service';\r\n\r\ninterface MenuNode {\r\n\tkey: string;\r\n\tlabel: any;\r\n\ticon?: string;\r\n\trouterLink?: string;\r\n\tchildren?: MenuNode[];\r\n\texpanded: boolean;\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-static-sidebar',\r\n\timports: [RouterLink, NgClass, NgTemplateOutlet, ScrollPanelModule, TooltipModule, FormsModule, TranslocoModule],\r\n\ttemplateUrl: './static-sidebar.component.html',\r\n\tstyleUrl: './static-sidebar.component.scss',\r\n\tproviders: [TranslateJsonPipe]\r\n})\r\nexport class StaticSidebarComponent implements OnInit, OnDestroy {\r\n\tactiveLang: Signal<string>;\r\n\tmenuNodes = signal<MenuNode[]>([]);\r\n\tfilteredNodes = signal<MenuNode[]>([]);\r\n\tsearchTerm = signal<string>('');\r\n\r\n\tprivate routerSubscription: Subscription | null = null;\r\n\r\n\tprivate readonly MAX_LENGTH = { level0: 25, level1: 20, level2: 16, level3: 13 };\r\n\r\n\tconstructor(\r\n\t\tprivate menuService: AppMenuService,\r\n\t\tprivate router: Router,\r\n\t\tprivate layoutService: LayoutService,\r\n\t\tprivate translateJsonPipe: TranslateJsonPipe,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.activeLang = toSignal(this.translocoService.langChanges$, { initialValue: 'tr' });\r\n\t}\r\n\r\n\tget isCollapsed(): boolean {\r\n\t\treturn this.layoutService.isStaticSidebarCollapsed();\r\n\t}\r\n\r\n\tget topLevelNodes(): MenuNode[] {\r\n\t\treturn this.menuNodes();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildMenuTree();\r\n\t\tthis.routerSubscription = this.router.events\r\n\t\t\t.pipe(filter((event) => event instanceof NavigationEnd))\r\n\t\t\t.subscribe(() => this.buildMenuTree());\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.routerSubscription?.unsubscribe();\r\n\t}\r\n\r\n\tisTextTruncated(label: any, lang: string | null, level = 0): boolean {\r\n\t\tif (!label || !lang || !label[lang]) return false;\r\n\t\tconst text = label[lang];\r\n\t\tconst len = text.length;\r\n\t\tconst limits = [this.MAX_LENGTH.level0, this.MAX_LENGTH.level1, this.MAX_LENGTH.level2, this.MAX_LENGTH.level3];\r\n\t\treturn len > limits[Math.min(level, 3)];\r\n\t}\r\n\r\n\tisMobile(): boolean {\r\n\t\treturn this.layoutService.isMobile();\r\n\t}\r\n\r\n\tbuildMenuTree() {\r\n\t\tconst menuItems = this.getMenuItems();\r\n\t\tconst nodes = this.convertToMenuNodes(menuItems);\r\n\t\tthis.menuNodes.set(nodes);\r\n\t\tthis.filteredNodes.set([...nodes]);\r\n\t\tthis.expandActiveMenu();\r\n\t}\r\n\r\n\tprivate expandActiveMenu() {\r\n\t\tconst nodes = this.menuNodes();\r\n\t\tthis.findAndExpandActiveNode(nodes);\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t}\r\n\r\n\tprivate findAndExpandActiveNode(nodes: MenuNode[]): MenuNode | null {\r\n\t\tfor (const node of nodes) {\r\n\t\t\tif (this.isActiveRouteForNode(node)) {\r\n\t\t\t\treturn node;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (node.children && node.children.length > 0) {\r\n\t\t\t\tconst activeChild = this.findAndExpandActiveNode(node.children);\r\n\t\t\t\tif (activeChild) {\r\n\t\t\t\t\t// we find active child and then opened its parent nodes\r\n\t\t\t\t\tnode.expanded = true;\r\n\t\t\t\t\treturn activeChild;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconvertToMenuNodes(items: PluginMenuItem[], parentKey = ''): MenuNode[] {\r\n\t\treturn items\r\n\t\t\t.filter((item) => !item.separator)\r\n\t\t\t.map((item, index) => {\r\n\t\t\t\tconst key = parentKey ? `${parentKey}-${index}` : `${index}`;\r\n\t\t\t\tconst node: MenuNode = {\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\tlabel: item.label,\r\n\t\t\t\t\ticon: item.icon,\r\n\t\t\t\t\trouterLink: item.routerLink,\r\n\t\t\t\t\texpanded: false\r\n\t\t\t\t};\r\n\t\t\t\tif (item.items && item.items.length > 0) {\r\n\t\t\t\t\tnode.children = this.convertToMenuNodes(item.items, key);\r\n\t\t\t\t}\r\n\t\t\t\treturn node;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetMenuItems(): PluginMenuItem[] {\r\n\t\tconst isHostMode = (<any>globalThis).isHostMode;\r\n\t\tconst hostMenuItems = (<any>globalThis).hostMenuItems;\r\n\t\treturn isHostMode ? hostMenuItems() : this.menuService.menuItems();\r\n\t}\r\n\r\n\tgetLocalText(text: any): string {\r\n\t\treturn this.translateJsonPipe.transform(text);\r\n\t}\r\n\r\n\tisActiveRouteForNode(node: MenuNode): boolean {\r\n\t\tif (!node.routerLink) return false;\r\n\t\tconst currentUrl = this.router.url;\r\n\t\tconst hashUrl = currentUrl.indexOf('#') > -1 ? currentUrl.split('#')[1] : currentUrl;\r\n\t\tif (hashUrl === node.routerLink || hashUrl === '/' + node.routerLink) return true;\r\n\t\treturn (\r\n\t\t\tnode.routerLink !== '/' &&\r\n\t\t\t(hashUrl.startsWith(node.routerLink + '/') || hashUrl.startsWith('/' + node.routerLink + '/'))\r\n\t\t);\r\n\t}\r\n\r\n\t// use on collapsed mode\r\n\tisNodeOrChildActive(node: MenuNode): boolean {\r\n\t\tif (this.isActiveRouteForNode(node)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (node.children && node.children.length > 0) {\r\n\t\t\treturn node.children.some(child => this.isNodeOrChildActive(child));\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisTopLevelNodeActive(node: MenuNode): boolean {\r\n\t\treturn this.isNodeOrChildActive(node);\r\n\t}\r\n\r\n\tisChildNodeActive(node: MenuNode): boolean {\r\n\t\treturn this.isActiveRouteForNode(node);\r\n\t}\r\n\r\n\ttoggleNode(node: MenuNode, level = 0) {\r\n\t\tconst wasExpanded = node.expanded;\r\n\t\tif (level === 0) {\r\n\t\t\t// Diğer ana menüleri kapat\r\n\t\t\tthis.closeOtherTopLevelNodes(node);\r\n\t\t}\r\n\t\tnode.expanded = !wasExpanded;\r\n\t\t\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t}\r\n\r\n\tprivate closeOtherTopLevelNodes(exceptNode: MenuNode) {\r\n\t\tconst nodes = this.menuNodes();\r\n\t\tnodes.forEach(node => {\r\n\t\t\tif (node !== exceptNode) {\r\n\t\t\t\tnode.expanded = false;\r\n\t\t\t\tthis.closeAllChildNodes(node);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate closeAllChildNodes(node: MenuNode) {\r\n\t\tif (node.children) {\r\n\t\t\tnode.children.forEach(child => {\r\n\t\t\t\tchild.expanded = false;\r\n\t\t\t\tthis.closeAllChildNodes(child);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\ttrackByKey(index: number, node: MenuNode): any {\r\n\t\treturn node.key;\r\n\t}\r\n\r\n\tonMenuItemClick() {\r\n\t\tif (this.isMobile()) {\r\n\t\t\tthis.layoutService.closeMobileMenu();\r\n\t\t}\r\n\r\n\t\tthis.searchTerm.set('');\r\n\t\tthis.filteredNodes.set(this.menuNodes() || []);\r\n\t}\r\n\r\n\tonCollapsedItemClick(node: MenuNode) {\r\n\t\tif (this.isCollapsed) {\r\n\t\t\tthis.layoutService.onMenuToggle();\r\n\t\t}\r\n\t\tthis.closeOtherTopLevelNodes(node);\r\n\t\tif (node.children && node.children.length > 0) {\r\n\t\t\tnode.expanded = true;\r\n\t\t}\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t\tif (node.routerLink) {\r\n\t\t\tthis.onMenuItemClick();\r\n\t\t}\r\n\t}\r\n\r\n\tonSearchChange(): void {\r\n\t\tconst currentSearchTerm = this.searchTerm()?.toLowerCase()?.trim();\r\n\t\tif (!currentSearchTerm) {\r\n\t\t\tthis.filteredNodes.set(this.menuNodes() || []);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.filteredNodes.set(this.filterNodes(this.menuNodes(), currentSearchTerm));\r\n\t}\r\n\r\n\t\tprivate filterNodes(nodes: MenuNode[], searchTerm: string): MenuNode[] {\r\n\t\tconst filtered: MenuNode[] = [];\r\n\t\tconst currentLang = this.translocoService.getActiveLang();\r\n\r\n\t\tfor (const node of nodes) {\r\n\t\t\t// Convert label to string for search based on active language\r\n\t\t\tconst labelText =\r\n\t\t\t\ttypeof node.label === 'string' ?\r\n\t\t\t\t\tnode.label\r\n\t\t\t\t:\t(node.label as any)?.[currentLang] || (node.label as any)?.tr || (node.label as any)?.en || '';\r\n\r\n\t\t\tconst matches = labelText.toLowerCase().includes(searchTerm);\r\n\t\t\tlet filteredChildren: MenuNode[] = [];\r\n\r\n\t\t\tif (node.children) {\r\n\t\t\t\tfilteredChildren = this.filterNodes(node.children, searchTerm);\r\n\t\t\t}\r\n\r\n\t\t\tif (matches || filteredChildren.length > 0) {\r\n\t\t\t\tfiltered.push({\r\n\t\t\t\t\t...node,\r\n\t\t\t\t\tchildren: filteredChildren.length > 0 ? filteredChildren : node.children,\r\n\t\t\t\t\texpanded: filteredChildren.length > 0\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filtered;\r\n\t}\r\n\r\n}\r\n","<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track trackByKey($index, node)) {\r\n\t\t\t\t\t@if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onMenuItemClick()\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div> ","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nimport * as Interfaces from './interfaces/interfaces';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NotificationsService extends RestClient {\r\n\toverride states: ServiceCallStateMap<NotificationsService> = {};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'audits/search')\r\n\tgetNotifications(post: Interfaces.SmsEmailAuditRequestDto) {\r\n\t\treturn new Observable<ServiceResponse<Interfaces.Response<Interfaces.SmsEmailAuditResponseDTO>>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.PUTBYDYNAMICPATH, ProxyTypes.ClientSide, 'audits/$/read')\r\n\tmarkAsReadNotification(pluginId: string) {\r\n\t\treturn new Observable<ServiceResponse<boolean>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { regularIcons, solidIcons } from 'aril/util/lib';\r\nimport { SafePipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { ActivityTypesEnum, DetailNotificationTypeEnum } from '../../service/interfaces/enum';\r\nimport { SmsEmailAuditResponseDTO } from '../../service/interfaces/interfaces';\r\nimport { NotificationsService } from '../../service/notifications.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-notifications-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSidebarModule,\r\n\t\tScrollPanelModule,\r\n\t\tConfirmDialogModule,\r\n\t\tPaginatorModule,\r\n\t\tButtonComponent,\r\n\t\tTranslocoModule,\r\n\t\tTooltipModule,\r\n\t\tBadgeModule,\r\n\t\tFontAwesomeModule,\r\n\t\tSafePipe\r\n\t],\r\n\ttemplateUrl: './notifications-sidebar.component.html',\r\n\tstyleUrls: ['./notifications-sidebar.component.scss']\r\n})\r\nexport class NotificationsSidebarComponent implements OnInit {\r\n\tnotifications = signal<SmsEmailAuditResponseDTO[]>([]);\r\n\tselectedNotification: SmsEmailAuditResponseDTO | null = null;\r\n\r\n\tActivityTypesEnum = ActivityTypesEnum;\r\n\tDetailNotificationTypeEnum = DetailNotificationTypeEnum;\r\n\r\n\tregularIcons = regularIcons;\r\n\tsolidIcons = solidIcons;\r\n\r\n\toneMonthAgo = new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000);\r\n\r\n\tprivate subjects = {\r\n\t\tmarkAsRead: new Subject<string>(),\r\n\t\tloadNotifications: new Subject<void>()\r\n\t};\r\n\r\n\tmarkAsReadService = toSignal(\r\n\t\tthis.subjects.markAsRead.pipe(switchMap((id) => this.notificationsService.markAsReadNotification(id)))\r\n\t);\r\n\r\n\tget getUserPhones(): string[] {\r\n\t\tconst phones = this.keycloak.getKeycloakInstance().profile?.attributes?.['phone'];\r\n\t\tif (phones && Array.isArray(phones)) {\r\n\t\t\treturn phones;\r\n\t\t} else if (phones && typeof phones === 'string') {\r\n\t\t\treturn [phones];\r\n\t\t}\r\n\t\treturn [];\r\n\t}\r\n\r\n\tget getUserMail() {\r\n\t\treturn this.keycloak.getKeycloakInstance().profile?.email as string;\r\n\t}\r\n\r\n\tloadNotificationsService = toSignal(\r\n\t\tthis.subjects.loadNotifications.pipe(\r\n\t\t\tswitchMap(() =>\r\n\t\t\t\tthis.notificationsService.getNotifications({\r\n\t\t\t\t\tpager: {\r\n\t\t\t\t\t\tpageSize: 10,\r\n\t\t\t\t\t\tpageNumber: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstartDate: this.oneMonthAgo.dateToLong('time') || 0,\r\n\t\t\t\t\tendDate: new Date().dateToLong('time') || 0,\r\n\t\t\t\t\tread: false,\r\n\t\t\t\t\ttoList: [this.getUserMail, ...this.getUserPhones],\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t)\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate readonly notificationsService: NotificationsService,\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly keycloak: KeycloakService\r\n\t) {\r\n\t\tthis.initializeEffects();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadNotifications();\r\n\t}\r\n\r\n\tprivate loadNotifications(): void {\r\n\t\tthis.subjects.loadNotifications.next();\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.loadNotificationsService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.notifications.set(service.response.result);\r\n\t\t\t\t\t// Update unread count in layoutService\r\n\t\t\t\t\tthis.layoutService.setUnreadNotificationCount(service?.response.resultInfo.totalItem || 0);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t\teffect(() => {\r\n\t\t\tconst service = this.markAsReadService();\r\n\t\t\tif (service?.response) {\r\n\t\t\t\tthis.loadNotifications();\r\n\r\n\t\t\t\tif (this.selectedNotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\tthis.router.navigate([`mng/todo-tasks/detail/${this.selectedNotification?.referenceId}`]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.notificationsSidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.notificationsSidebarVisible = value;\r\n\t}\r\n\r\n\tmarkNotificationAsRead(notification: SmsEmailAuditResponseDTO): void {\r\n\t\tthis.selectedNotification = notification;\r\n\t\tthis.subjects.markAsRead.next(notification.id);\r\n\t\tthis.visible = false;\r\n\r\n\t\tif (notification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\tthis.router.navigate([`mng/todo-tasks/detail/${notification?.referenceId}`]);\r\n\t\t} else if (notification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\tthis.router.navigate([`mng/bulk-operations/${notification?.referenceId}`]);\r\n\t\t}\r\n\t}\r\n\r\n\tmarkNotificationAsReadOnDotIcon(notification: SmsEmailAuditResponseDTO): void {\r\n\t\tif (!notification.read) {\r\n\t\t\tthis.subjects.markAsRead.next(notification.id);\r\n\t\t}\r\n\t}\r\n\r\n\ttrackByNotificationId(index: number, notification: SmsEmailAuditResponseDTO): string {\r\n\t\treturn notification.id;\r\n\t}\r\n\r\n\tgetNotificationTitle(notification: SmsEmailAuditResponseDTO): string {\r\n\t\treturn notification.templateTitle || notification.templateCode || '';\r\n\t}\r\n\r\n\tgetNotificationContent(notification: SmsEmailAuditResponseDTO): string {\r\n\t\tconst truncated =\r\n\t\t\tnotification.content?.length! > 200 ? notification.content?.substring(0, 200) + '...' : notification.content;\r\n\t\treturn truncated || '';\r\n\t}\r\n\r\n\tformatNotificationDate(startDate: number | undefined): string {\r\n\t\tif (!startDate) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tconst dateStr = startDate.toString();\r\n\t\tconst year = parseInt(dateStr.substring(0, 4));\r\n\t\tconst month = parseInt(dateStr.substring(4, 6)) - 1;\r\n\t\tconst day = parseInt(dateStr.substring(6, 8));\r\n\t\tconst hour = parseInt(dateStr.substring(8, 10));\r\n\t\tconst minute = parseInt(dateStr.substring(10, 12));\r\n\t\tconst second = parseInt(dateStr.substring(12, 14));\r\n\r\n\t\tconst notificationDate = new Date(year, month, day, hour, minute, second);\r\n\t\tconst now = new Date();\r\n\t\tconst diffMs = now.getTime() - notificationDate.getTime();\r\n\r\n\t\tconst diffMinutes = Math.floor(diffMs / (1000 * 60));\r\n\t\tconst diffHours = Math.floor(diffMs / (1000 * 60 * 60));\r\n\t\tconst diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\r\n\t\tconst diffWeeks = Math.floor(diffDays / 7);\r\n\t\tconst diffMonths = Math.floor(diffDays / 30);\r\n\r\n\t\tif (diffMinutes < 1) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.justNow');\r\n\t\t} else if (diffMinutes < 60) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.minutesAgo', { count: diffMinutes });\r\n\t\t} else if (diffHours < 24) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.hoursAgo', { count: diffHours });\r\n\t\t} else if (diffDays < 7) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.daysAgo', { count: diffDays });\r\n\t\t} else if (diffWeeks < 4) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.weeksAgo', { count: diffWeeks });\r\n\t\t} else {\r\n\t\t\treturn this.translocoService.translate('notifications.time.monthsAgo', { count: diffMonths });\r\n\t\t}\r\n\t}\r\n\r\n\tnavigateToAllNotifications(): void {\r\n\t\tthis.router.navigate(['mng/control-management/sms-email-audit']);\r\n\t\tthis.visible = false;\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { NavigationEnd, Router, RouterOutlet } from '@angular/router';\r\n\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { Subscription, filter } from 'rxjs';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { AppMenuService } from '../../service/app.menu.service';\r\nimport { AppProfileSidebarComponent } from '../profileSidebar/app.profilesidebar.component';\r\nimport { HistorySidebarComponent } from '../history/history-sidebar.component';\r\nimport { SiteMapSidebarComponent } from '../site-map/site-map-sidebar.component';\r\nimport { FavoritePagesSidebarComponent } from '../favorite-pages/favorite-pages-sidebar.component';\r\nimport { AppTopbarComponent } from '../topbar/app.topbar.component';\r\nimport { AppChatbotComponent } from '../chatbot/app.chatbot.component';\r\nimport { ExpandableMenuComponent } from '../expandableMenu/expandable-menu.component';\r\nimport { StaticSidebarComponent } from '../static-sidebar/static-sidebar.component';\r\nimport { NotificationsSidebarComponent } from '../notifications/notifications-sidebar.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-layout',\r\n\timports: [\r\n\t\tNgClass,\r\n\t\tRouterOutlet,\r\n\t\tConfirmDialogModule,\r\n\t\tConfirmPopupModule,\r\n\t\tDialogModule,\r\n\t\tMessagesModule,\r\n\t\tToastModule,\r\n\t\tAppTopbarComponent,\r\n\t\tAppProfileSidebarComponent,\r\n\t\tHistorySidebarComponent,\r\n\t\tSiteMapSidebarComponent,\r\n\t\tFavoritePagesSidebarComponent,\r\n\t\tAppChatbotComponent,\r\n\t\tExpandableMenuComponent,\r\n\t\tStaticSidebarComponent,\r\n\t\tNotificationsSidebarComponent\r\n\t],\r\n\ttemplateUrl: './app.layout.component.html'\r\n})\r\nexport class AppLayoutComponent implements OnDestroy {\r\n\toverlayMenuOpenSubscription: Subscription;\r\n\tmenuOutsideClickListener: any;\r\n\tmenuScrollListener: any;\r\n\tglobalThis: any = globalThis;\r\n\r\n\t@ViewChild(ExpandableMenuComponent) expandableMenuComponent!: ExpandableMenuComponent;\r\n\t@ViewChild(StaticSidebarComponent) staticSidebarComponent!: StaticSidebarComponent;\r\n\t@ViewChild(AppTopbarComponent) appTopbar!: AppTopbarComponent;\r\n\r\n\tconstructor(\r\n\t\tprivate menuService: AppMenuService,\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tpublic renderer: Renderer2,\r\n\t\tpublic router: Router\r\n\t) {\r\n\t\tthis.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n\t\t\tif (!this.menuOutsideClickListener) {\r\n\t\t\t\tthis.menuOutsideClickListener = this.renderer.listen('document', 'click', (event) => {\r\n\t\t\t\t\tconst isOutsideClicked = !(\r\n\t\t\t\t\t\tthis.appTopbar.menuButton.nativeElement.isSameNode(event.target) ||\r\n\t\t\t\t\t\tthis.appTopbar.menuButton.nativeElement.contains(event.target) ||\r\n\t\t\t\t\t\t(this.expandableMenuComponent && this.isElementInside(event.target, 'app-expandable-menu')) ||\r\n\t\t\t\t\t\t(this.staticSidebarComponent && this.isElementInside(event.target, 'app-static-sidebar'))\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (isOutsideClicked) {\r\n\t\t\t\t\t\tthis.hideMenu();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\t\tthis.blockBodyScroll();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\r\n\t\t\tif (!this.layoutService.mfeAppItemClicked()) this.hideMenu();\r\n\t\t});\r\n\t}\r\n\r\n\tblockBodyScroll(): void {\r\n\t\tif (document.body.classList) {\r\n\t\t\tdocument.body.classList.add('blocked-scroll');\r\n\t\t} else {\r\n\t\t\tdocument.body.className += ' blocked-scroll';\r\n\t\t}\r\n\t}\r\n\r\n\tunblockBodyScroll(): void {\r\n\t\tif (document.body.classList) {\r\n\t\t\tdocument.body.classList.remove('blocked-scroll');\r\n\t\t} else {\r\n\t\t\tdocument.body.className = document.body.className.replace(\r\n\t\t\t\tnew RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'),\r\n\t\t\t\t' '\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t// Helper method to check if element is inside a specific component\r\n\tprivate isElementInside(element: any, selector: string): boolean {\r\n\t\tif (!element) return false;\r\n\t\t\r\n\t\tlet currentElement = element;\r\n\t\twhile (currentElement && currentElement !== document) {\r\n\t\t\tif (currentElement.tagName && currentElement.tagName.toLowerCase() === selector) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tcurrentElement = currentElement.parentElement;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\thideMenu() {\r\n\t\tthis.layoutService.state.staticMenuMobileActive = false;\r\n\t\tthis.menuService.reset();\r\n\r\n\t\tif (this.menuOutsideClickListener) {\r\n\t\t\tthis.menuOutsideClickListener();\r\n\t\t\tthis.menuOutsideClickListener = null;\r\n\t\t}\r\n\r\n\t\tif (this.menuScrollListener) {\r\n\t\t\tthis.menuScrollListener();\r\n\t\t\tthis.menuScrollListener = null;\r\n\t\t}\r\n\r\n\t\tthis.unblockBodyScroll();\r\n\t}\r\n\r\n\tget containerClass() {\r\n\t\treturn {\r\n\t\t\t'layout-light': this.layoutService.config().colorScheme === 'light',\r\n\t\t\t'layout-dim': this.layoutService.config().colorScheme === 'dim',\r\n\t\t\t'layout-dark': this.layoutService.config().colorScheme === 'dark',\r\n\t\t\t'layout-colorscheme-menu': this.layoutService.config().menuTheme === 'colorScheme',\r\n\t\t\t'layout-primarycolor-menu': this.layoutService.config().menuTheme === 'primaryColor',\r\n\t\t\t'layout-transparent-menu': this.layoutService.config().menuTheme === 'transparent',\r\n\t\t\t'layout-static': this.layoutService.config().menuMode === 'static',\r\n\t\t\t'layout-expandable': this.layoutService.config().menuMode === 'expandable',\r\n\t\t\t'layout-static-inactive': \r\n\t\t\t\tthis.layoutService.config().menuMode === 'static' && \r\n\t\t\t\t!this.layoutService.shouldShowStaticSidebar(),\r\n\t\t\t'layout-static-collapsed': \r\n\t\t\t\tthis.layoutService.config().menuMode === 'static' && \r\n\t\t\t\tthis.layoutService.isStaticSidebarCollapsed(),\r\n\t\t\t'layout-mobile-active': this.layoutService.state.staticMenuMobileActive,\r\n\t\t\t'p-input-filled': this.layoutService.config().inputStyle === 'filled',\r\n\t\t\t'p-ripple-disabled': !this.layoutService.config().ripple,\r\n\t\t\t'new-sidebar-layout': this.layoutService.config().menuMode === 'expandable',\r\n\t\t\t'secondary-expanded': this.layoutService.state.secondarySidebarExpanded\r\n\t\t};\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.overlayMenuOpenSubscription) {\r\n\t\t\tthis.overlayMenuOpenSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\tif (this.menuOutsideClickListener) {\r\n\t\t\tthis.menuOutsideClickListener();\r\n\t\t}\r\n\t}\r\n}","<div class=\"layout-container\" [ngClass]=\"containerClass\">\r\n\t@if (layoutService.shouldShowStaticSidebar()) {\r\n\t\t<app-static-sidebar />\r\n\t} @else if (layoutService.shouldShowExpandableMenu()) {\r\n\t\t<app-expandable-menu />\r\n\t}\r\n\t<div class=\"layout-content-wrapper\">\r\n\t\t<app-topbar />\r\n\t\t<div class=\"layout-content\">\r\n\t\t\t<router-outlet />\r\n\t\t</div>\r\n\t</div>\r\n\t<app-profilemenu />\r\n\t<app-history-sidebar />\r\n\t<app-site-map-sidebar />\r\n\t<app-favorite-pages-sidebar />\r\n\t<app-notifications-sidebar />\r\n\t<!--<app-config></app-config>-->\r\n\t<app-chatbot></app-chatbot>\r\n\t<div class=\"layout-mask\" (click)=\"hideMenu()\"></div>\r\n</div>\r\n\r\n<p-toast key=\"toast-root\" />\r\n<p-dialog key=\"dialog-root\" />\r\n<p-messages key=\"messages-root\" />\r\n<p-confirmPopup key=\"confirmPopup-root\" />\r\n<p-confirmDialog key=\"confirmDialog-root\" />\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BreadcrumbService {\r\n\tkeyValues = signal<{ [key: string]: string }>({});\r\n\r\n\tset(key: string, value: string): void {\r\n\t\tthis.keyValues.update((obj) => ({ ...obj, [key]: value }));\r\n\t}\r\n\r\n\tgetValue(key: string): string {\r\n\t\treturn this.keyValues()[key];\r\n\t}\r\n}\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, effect } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, RouterLink } from '@angular/router';\r\n\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\nimport { BreadcrumbService } from '../../service/breadcrumb.service';\r\n\r\ninterface Breadcrumb {\r\n\tlabel: string;\r\n\turl?: string;\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-breadcrumb',\r\n\timports: [RouterLink, BreadcrumbModule, NgClass],\r\n\ttemplateUrl: './app.breadcrumb.component.html'\r\n})\r\nexport class AppBreadcrumbComponent {\r\n\tprivate readonly _breadcrumbs$ = new BehaviorSubject<Breadcrumb[]>([]);\r\n\tprivate breadcrumbsSubscription!: Subscription;\r\n\r\n\treadonly breadcrumbs$ = this._breadcrumbs$.asObservable();\r\n\tbreadcrumbs: MenuItem[] = [];\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate breadcrumbService: BreadcrumbService,\r\n\t\tprivate pubSubService: PubSubService\r\n\t) {\r\n\t\tthis.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {\r\n\t\t\tconst root = this.router.routerState.snapshot.root;\r\n\t\t\tconst breadcrumbs: Breadcrumb[] = [];\r\n\r\n\t\t\tthis.addBreadcrumb(root, [], breadcrumbs);\r\n\r\n\t\t\tthis._breadcrumbs$.next(breadcrumbs);\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.breadcrumbService.keyValues()) {\r\n\t\t\t\tconst root = this.router.routerState.snapshot.root;\r\n\t\t\t\tconst breadcrumbs: Breadcrumb[] = [];\r\n\r\n\t\t\t\tthis.addBreadcrumb(root, [], breadcrumbs);\r\n\r\n\t\t\t\tthis._breadcrumbs$.next(breadcrumbs);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.breadcrumbsSubscription = this.breadcrumbs$.subscribe((breadcrumbs) => {\r\n\t\t\tthis.breadcrumbs = breadcrumbs.map((breadcrumb) => ({\r\n\t\t\t\tlabel: breadcrumb.label,\r\n\t\t\t\turl: breadcrumb.url\r\n\t\t\t}));\r\n\t\t\tthis.breadcrumbs.unshift({ icon: 'pi pi-home', url: '/' });\r\n\t\t\t\r\n\t\t\t// Update global page title signal with the last breadcrumb label\r\n\t\t\tconst pageTitle = (<any>globalThis).__ARIL_PAGE_TITLE__?.();\r\n\t\t\tif (pageTitle) {\r\n\t\t\t\t\tconst lastBreadcrumb = breadcrumbs[breadcrumbs.length - 1];\r\n\t\t\t\t\tpageTitle.set(lastBreadcrumb?.label || '');\r\n\t\t\t}\r\n\r\n\t\t\tconst currentUrl = this.router.url;\r\n\t\t\tthis.pubSubService.publish({\r\n\t\t\t\tname: 'breadcrumbUpdated',\r\n\t\t\t\tdata: { \r\n\t\t\t\t\tpath: currentUrl,\r\n\t\t\t\t\tcustom: {\r\n\t\t\t\t\t\tbreadcrumbs: breadcrumbs,\r\n\t\t\t\t\t\tpageTitle: breadcrumbs.length > 0 ? breadcrumbs[breadcrumbs.length - 1].label : ''\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.breadcrumbsSubscription) {\r\n\t\t\tthis.breadcrumbsSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addBreadcrumb(route: ActivatedRouteSnapshot, parentUrl: string[], breadcrumbs: Breadcrumb[]) {\r\n\t\tconst routeUrl = parentUrl.concat(route.url.map((url) => url.path));\r\n\t\tconst breadcrumb = route.data['breadcrumb'];\r\n\t\tconst parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;\r\n\r\n\t\tif (breadcrumb && breadcrumb !== parentBreadcrumb) {\r\n\t\t\tconst keyRegex = new RegExp('(?<=\\\\{)([^}]+)(?=\\\\})');\r\n\t\t\tconst key = (keyRegex.exec(route.data['breadcrumb']) || [])[0]!;\r\n\t\t\tconst value = this.breadcrumbService.getValue(key);\r\n\r\n\t\t\tif (key && value) {\r\n\t\t\t\tbreadcrumbs.push({\r\n\t\t\t\t\tlabel: (route.data['breadcrumb'] as string).replace(`{${key}}`, value),\r\n\t\t\t\t\turl: '/' + routeUrl.join('/')\r\n\t\t\t\t});\r\n\t\t\t} else if (key && !value) {\r\n\t\t\t\t// Key exists but value not loaded yet - show loading placeholder\r\n\t\t\t\tbreadcrumbs.push({\r\n\t\t\t\t\tlabel: '...',\r\n\t\t\t\t\turl: '/' + routeUrl.join('/')\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tbreadcrumbs.push({\r\n\t\t\t\t\tlabel: route.data['breadcrumb'],\r\n\t\t\t\t\turl: '/' + routeUrl.join('/')\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (route.firstChild) {\r\n\t\t\tthis.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\r\n\t\t}\r\n\t}\r\n}\r\n","<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n","import { Component, Signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport {\r\n\tNavigationCancel,\r\n\tNavigationEnd,\r\n\tNavigationError,\r\n\tNavigationSkipped,\r\n\tRouter,\r\n\tRouterOutlet\r\n} from '@angular/router';\r\n\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { map } from 'rxjs';\r\nimport { AppBreadcrumbComponent } from '../breadcrumb/app.breadcrumb.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'mfe-layout',\r\n\ttemplate: `\r\n\t <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb>\r\n\t\t@if (!loading()) {\r\n\t\t\t<router-outlet />\r\n\t\t}\r\n\r\n\t\t<p-toast key=\"toast-root\"></p-toast>\r\n\t\t<p-dialog key=\"dialog-root\"></p-dialog>\r\n\t\t<p-messages key=\"messages-root\"></p-messages>\r\n\t\t<p-confirmPopup key=\"confirmPopup-root\"></p-confirmPopup>\r\n\t\t<p-confirmDialog key=\"confirmDialog-root\"></p-confirmDialog>\r\n\t`,\r\n\timports: [RouterOutlet, ConfirmDialogModule, ConfirmPopupModule, DialogModule, MessagesModule, ToastModule, AppBreadcrumbComponent]\r\n})\r\nexport class MFELayoutComponent {\r\n\tloading: Signal<boolean>;\r\n\r\n\tconstructor(private router: Router) {\r\n\t\tthis.loading = toSignal(\r\n\t\tthis.router.events.pipe(\r\n\t\t\tmap((event) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\tevent instanceof NavigationEnd ||\r\n\t\t\t\t\tevent instanceof NavigationCancel ||\r\n\t\t\t\t\tevent instanceof NavigationError ||\r\n\t\t\t\t\tevent instanceof NavigationSkipped\r\n\t\t\t\t)\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t})\r\n\t\t),\r\n\t\t{ initialValue: true }\r\n\t);\r\n\t}\r\n\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, effect, signal } from '@angular/core';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\n\r\nimport { SelectionGroupDTO, SelectionRequestDTO } from './interfaces/interfaces';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SelectionGroupService {\r\n\tselectionGroups = signal<{ [key: string]: SelectionGroupDTO | null }>({});\r\n\r\n\tprivate loading = new Map<string, boolean>();\r\n\tprivate loaded = new Map<string, boolean>();\r\n\r\n\tconstructor(private http: HttpClient) {\r\n\t\tthis.loadStatesFromLocalStorage();\r\n\r\n\t\teffect(() => {\r\n\t\t\tconst encodedData = btoa(encodeURI(JSON.stringify(this.selectionGroups())));\r\n\t\t\tlocalStorage.setItem('selection-groups', encodedData);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async loadStatesFromLocalStorage() {\r\n\t\tconst selectionGroups = localStorage.getItem('selection-groups');\r\n\r\n\t\tif (selectionGroups) {\r\n\t\t\ttry {\r\n\t\t\t\tconst decodedData = decodeURI(atob(selectionGroups));\r\n\t\t\t\tthis.selectionGroups.set(JSON.parse(decodedData));\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfetchEnum(groupName: string, parentSelectionKey: string = 'ALL') {\r\n\t\tconst key = groupName + '~' + parentSelectionKey;\r\n\r\n\t\tif (this.loaded.get(key) || this.loading.get(key)) return;\r\n\r\n\t\tconst payload: SelectionRequestDTO = {\r\n\t\t\tgroupName,\r\n\t\t\tparentSelectionKey\r\n\t\t};\r\n\r\n\t\tthis.loading.set(key, true);\r\n\t\tthis.loaded.set(key, false);\r\n\r\n\t\tconst hostApi = API_CONFIGS.api.replace(/\\/[^\\/]+\\/v1$/, `/host/v1`);\r\n\r\n\t\tthis.http\r\n\t\t\t.post<SelectionGroupDTO>(hostApi + '/selection-group/load', payload)\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe((selectionGroup) => {\r\n\t\t\t\tthis.loading.set(key, false);\r\n\t\t\t\tthis.loaded.set(key, true);\r\n\r\n\t\t\t\tthis.selectionGroups.update((groups) => ({\r\n\t\t\t\t\t...groups,\r\n\t\t\t\t\t[key]: selectionGroup\r\n\t\t\t\t}));\r\n\t\t\t});\r\n\t}\r\n\r\n\tisLoading(groupName: string): boolean {\r\n\t\treturn this.loading.get(groupName) ?? false;\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.ProfileService","i4","i5","i4.ProfileService","i1.LayoutService","i2","i6","i7","i2.HistoryService","i8","i1","i3.FavoritePagesService","i2.FavoritePagesService","i9","i10","i11","switchMap","i2.SearchService","i3","filter","i2.AppMenuService","i6.LayoutService","i1.AppMenuService","i3.LayoutService","i2.NotificationsService","i2.LayoutService","i2.BreadcrumbService","map"],"mappings":"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"}
1
+ {"version":3,"file":"aril-theme-layout.mjs","sources":["../../projects/aril/theme/layout/app/profileSidebar/profile.service.ts","../../projects/aril/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.ts","../../projects/aril/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.html","../../projects/aril/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.ts","../../projects/aril/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.html","../../projects/aril/theme/layout/service/app.layout.service.ts","../../projects/aril/theme/layout/app/profileSidebar/app.profilesidebar.component.ts","../../projects/aril/theme/layout/app/profileSidebar/app.profilesidebar.component.html","../../projects/aril/theme/layout/app/history/history.service.ts","../../projects/aril/theme/layout/app/history/history-sidebar.component.ts","../../projects/aril/theme/layout/app/history/history-sidebar.component.html","../../projects/aril/theme/layout/app/site-map/site-map-sidebar.component.ts","../../projects/aril/theme/layout/app/site-map/site-map-sidebar.component.html","../../projects/aril/theme/layout/app/favorite-pages/favorite-pages.service.ts","../../projects/aril/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.ts","../../projects/aril/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.html","../../projects/aril/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.ts","../../projects/aril/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.html","../../projects/aril/theme/layout/service/interfaces/enum.ts","../../projects/aril/theme/layout/app/general-search/models.ts","../../projects/aril/theme/layout/app/general-search/helpers.ts","../../projects/aril/theme/layout/service/search.service.ts","../../projects/aril/theme/layout/app/general-search/general-search.component.ts","../../projects/aril/theme/layout/app/general-search/general-search.component.html","../../projects/aril/theme/layout/app/topbar/app.topbar.component.ts","../../projects/aril/theme/layout/app/topbar/app.topbar.component.html","../../projects/aril/theme/layout/service/app.menu.service.ts","../../projects/aril/theme/layout/app/expandableMenu/expandable-menu.component.ts","../../projects/aril/theme/layout/app/expandableMenu/expandable-menu.component.html","../../projects/aril/theme/layout/app/static-sidebar/static-sidebar.component.ts","../../projects/aril/theme/layout/app/static-sidebar/static-sidebar.component.html","../../projects/aril/theme/layout/service/notifications.service.ts","../../projects/aril/theme/layout/app/notifications/notifications-sidebar.component.ts","../../projects/aril/theme/layout/app/notifications/notifications-sidebar.component.html","../../projects/aril/theme/layout/app/layout/app.layout.component.ts","../../projects/aril/theme/layout/app/layout/app.layout.component.html","../../projects/aril/theme/layout/service/breadcrumb.service.ts","../../projects/aril/theme/layout/app/breadcrumb/app.breadcrumb.component.ts","../../projects/aril/theme/layout/app/breadcrumb/app.breadcrumb.component.html","../../projects/aril/theme/layout/app/layout/mfe.layout.component.ts","../../projects/aril/theme/layout/service/selection-group.service.ts","../../projects/aril/theme/layout/aril-theme-layout.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nimport {\r\n\tAuthorityTreeResponseDTO,\r\n\tClientResponseDTO,\r\n\tGetAllClientRequestDTO,\r\n\tGetRoleRequestDTO\r\n} from '../../service/interfaces/interfaces';\r\n\r\nexport interface GetUserRequestDTO {\r\n\tid: string;\r\n}\r\n\r\nexport interface UpdateUserRequestDTO {\r\n\tid: string;\r\n\tfirstName?: string;\r\n\tlastName?: string;\r\n\temail?: string;\r\n\tenabled?: boolean;\r\n\temailVerified?: boolean;\r\n\tphone?: string[];\r\n\ttckn?: string[];\r\n\tregions?: Array<{\r\n\t\tstartLevel: string;\r\n\t\tendLevel: string;\r\n\t}>;\r\n\tphotoUrl?: string[];\r\n\tnotes?: string[];\r\n\tuserTypeId?: string;\r\n\tclientOfSystemUser?: string;\r\n\tsystemUser?: boolean;\r\n\tpassword?: string | null;\r\n}\r\n\r\nexport interface ResetPasswordRequestDTO {\r\n\tuserId: string;\r\n\tpassword: string;\r\n}\r\n\r\nexport interface UserResponseDTO {\r\n\tid: string;\r\n\tuserName: string;\r\n\temail: string;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tenabled: boolean;\r\n\tphone?: string | string[];\r\n\troles?: string[];\r\n\tuserTypes?: string[];\r\n\tphotoUrl?: string | string[];\r\n\tcreatedTimestamp?: number;\r\n\temailVerified?: boolean;\r\n\tlastSession?: number;\r\n\ttckn?: string | string[];\r\n\tnotes?: string | string[];\r\n\tsystemUser?: boolean;\r\n\tclientOfSystemUser?: string;\r\n\tuserTypeId?: string;\r\n\tregions?:\r\n\t\t| string[]\r\n\t\t| Array<{\r\n\t\t\t\tstartLevel: string;\r\n\t\t\t\tendLevel: string;\r\n\t\t }>;\r\n}\r\n\r\nexport const profileEndpoints = {\r\n\tgetUser: 'user-management/users/get',\r\n\tupdateUser: 'user-management/users/update',\r\n\tresetPassword: 'user-management/users/reset-password'\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ProfileService extends RestClient {\r\n\toverride states: ServiceCallStateMap<ProfileService> = {};\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, profileEndpoints.getUser, {}, Apps.MW)\r\n\tgetUser(post: GetUserRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<UserResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, profileEndpoints.updateUser, {}, Apps.MW)\r\n\tupdateUser(post: UpdateUserRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<UserResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, profileEndpoints.resetPassword, {}, Apps.MW)\r\n\tresetPassword(post: ResetPasswordRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<any>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ServerSide, 'user-management/clients', {}, Apps.MW)\r\n\tgetAllClientsList(post: GetAllClientRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<ClientResponseDTO[]>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'user-management/groups', {}, Apps.MW)\r\n\tgetAllUserType(post: GetRoleRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<UserResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.GET, ProxyTypes.Native, 'authority-tree', {}, Apps.MW)\r\n\tgetAuthorityTree(request: number) {\r\n\t\treturn new Observable<ServiceResponse<AuthorityTreeResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'user-management/clients', {}, Apps.MW)\r\n\tgetAllApp(post: any) {\r\n\t\treturn new Observable<ServiceResponse<any>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, effect } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport {\r\n\tAbstractControl,\r\n\tFormBuilder,\r\n\tFormControl,\r\n\tFormGroup,\r\n\tFormsModule,\r\n\tReactiveFormsModule,\r\n\tValidationErrors\r\n} from '@angular/forms';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { FieldComponent } from 'aril/ui/field';\r\nimport { ARiLFormModule } from 'aril/ui/form';\r\n\r\nimport { ProfileService, ResetPasswordRequestDTO } from '../../profile.service';\r\n\r\nexport class PasswordValidators {\r\n\tstatic passwordMatchValidator = (passwordFormGroup: FormGroup) => {\r\n\t\treturn (control: AbstractControl): ValidationErrors | null => {\r\n\t\t\tif (!control.value || !passwordFormGroup) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tconst passwordControl = passwordFormGroup.get('newPassword');\r\n\t\t\tconst confirmPasswordValue = control.value;\r\n\r\n\t\t\tif (!passwordControl || !confirmPasswordValue) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tconst passwordsMatch = passwordControl.value === confirmPasswordValue;\r\n\t\t\treturn passwordsMatch ? null : (\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpasswordMismatch: 'Şifreler eşleşmiyor. Lütfen aynı şifreyi giriniz.'\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t};\r\n\t};\r\n\r\n\tstatic minLength(length: number) {\r\n\t\treturn (control: AbstractControl): ValidationErrors | null => {\r\n\t\t\tif (!control.value || control.value.length >= length) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\treturn { minlength: `Şifre en az ${length} karakter olmalıdır.` };\r\n\t\t};\r\n\t}\r\n\r\n\tstatic required(control: AbstractControl): ValidationErrors | null {\r\n\t\tif (!control.value || control.value.trim() === '') {\r\n\t\t\treturn { required: 'Bu alan zorunludur.' };\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tFormsModule,\r\n\t\tARiLFormModule,\r\n\t\tFieldComponent,\r\n\t\tButtonComponent,\r\n\t\tPasswordModule,\r\n\t\tTooltipModule,\r\n\t\tTranslocoModule\r\n\t],\r\n\ttemplateUrl: './change-password-modal.component.html',\r\n\tstyleUrls: ['./change-password-modal.component.scss']\r\n})\r\nexport class ChangePasswordModalComponent {\r\n\tpasswordForm!: FormGroup;\r\n\tuserId: string;\r\n\r\n\tprivate subjects = {\r\n\t\tresetPassword: new Subject<ResetPasswordRequestDTO>()\r\n\t};\r\n\r\n\tresetPasswordService = toSignal(\r\n\t\tthis.subjects.resetPassword.pipe(switchMap((data) => this.profileService.resetPassword(data)))\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tprivate readonly formBuilder: FormBuilder,\r\n\t\tprivate readonly dialogRef: DynamicDialogRef,\r\n\t\tprivate readonly dialogConfig: DynamicDialogConfig,\r\n\t\tprivate readonly profileService: ProfileService,\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly messageService: MessageService\r\n\t) {\r\n\t\tthis.userId = this.dialogConfig.data?.userId;\r\n\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.resetPasswordService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('profileSidebar.changePasswordSuccess'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('profileSidebar.changePasswordSuccessDetail'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success' });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\tthis.initializeForm();\r\n\r\n\t\tif (!this.userId) {\r\n\t\t\tthis.dialogRef.close('error');\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeForm(): void {\r\n\t\tthis.passwordForm = this.formBuilder.group({\r\n\t\t\tnewPassword: new FormControl('', [PasswordValidators.required, PasswordValidators.minLength(6)]),\r\n\t\t\tconfirmPassword: new FormControl('', [PasswordValidators.required])\r\n\t\t});\r\n\r\n\t\tconst confirmPasswordControl = this.passwordForm.get('confirmPassword');\r\n\t\tif (confirmPasswordControl) {\r\n\t\t\tconfirmPasswordControl.setValidators([\r\n\t\t\t\tPasswordValidators.required,\r\n\t\t\t\tPasswordValidators.passwordMatchValidator(this.passwordForm)\r\n\t\t\t]);\r\n\t\t}\r\n\r\n\t\tthis.passwordForm.get('newPassword')?.valueChanges.subscribe(() => {\r\n\t\t\tconfirmPasswordControl?.updateValueAndValidity({ emitEvent: false });\r\n\t\t});\r\n\t}\r\n\r\n\tgetErrorMessage(controlName: string): string {\r\n\t\tconst control = this.passwordForm.get(controlName);\r\n\t\tif (control?.errors) {\r\n\t\t\tconst errors = control.errors;\r\n\t\t\tconst errorKeys = Object.keys(errors);\r\n\t\t\tif (errorKeys.length > 0) {\r\n\t\t\t\treturn errors[errorKeys[0]];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tsubmit(): void {\r\n\t\tif (this.passwordForm.invalid) {\r\n\t\t\tthis.passwordForm.markAllAsTouched();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst formValue = this.passwordForm.value;\r\n\t\tconst resetRequest: ResetPasswordRequestDTO = {\r\n\t\t\tuserId: this.userId,\r\n\t\t\tpassword: formValue.newPassword\r\n\t\t};\r\n\r\n\t\tthis.subjects.resetPassword.next(resetRequest);\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.dialogRef.close('cancel');\r\n\t}\r\n}\r\n","<div class=\"change-password-modal\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"passwordForm\">\r\n\t\t<aril-field [label]=\"t('newPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"newPassword\"\r\n\t\t\t\t[placeholder]=\"t('newPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('newPassword')?.invalid && passwordForm.get('newPassword')?.touched ? getErrorMessage('newPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('confirmPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"confirmPassword\"\r\n\t\t\t\t[placeholder]=\"t('confirmPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('confirmPassword')?.invalid && passwordForm.get('confirmPassword')?.touched ? getErrorMessage('confirmPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\t[raised]=\"false\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t(clickEvent)=\"submit()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { TreeSelectModule } from 'primeng/treeselect';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { CheckboxComponent } from 'aril/ui/checkbox';\r\nimport { FieldComponent } from 'aril/ui/field';\r\nimport { ARiLFormModule } from 'aril/ui/form';\r\nimport { MaskComponent } from 'aril/ui/mask';\r\nimport { PasswordComponent } from 'aril/ui/password';\r\nimport { SelectBoxComponent } from 'aril/ui/selectBox';\r\nimport { TextComponent } from 'aril/ui/text';\r\nimport { TextAreaComponent } from 'aril/ui/textArea';\r\nimport { TreeSelectComponent } from 'aril/ui/treeSelect';\r\n\r\nimport { ClientResponseDTO, GetAllClientRequestDTO } from '../../../../service/interfaces/interfaces';\r\nimport { ProfileService, UpdateUserRequestDTO, UserResponseDTO } from '../../profile.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tARiLFormModule,\r\n\t\tTranslocoModule,\r\n\t\tTreeSelectModule,\r\n\t\tReactiveFormsModule,\r\n\t\tTextComponent,\r\n\t\tMaskComponent,\r\n\t\tFieldComponent,\r\n\t\tButtonComponent,\r\n\t\tTextAreaComponent,\r\n\t\tCheckboxComponent,\r\n\t\tPasswordComponent,\r\n\t\tSelectBoxComponent,\r\n\t\tTreeSelectComponent\r\n\t],\r\n\ttemplateUrl: './edit-profile-modal.component.html'\r\n})\r\nexport class EditProfileModalComponent implements OnInit {\r\n\tconstructor(\r\n\t\tprivate readonly formBuilder: FormBuilder,\r\n\t\tprivate readonly dialogRef: DynamicDialogRef,\r\n\t\tprivate readonly messageService: MessageService,\r\n\t\tprivate readonly profileService: ProfileService,\r\n\t\tprivate readonly dialogConfig: DynamicDialogConfig,\r\n\t\tprivate readonly translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.userProfile = this.dialogConfig.data?.userProfile;\r\n\r\n\t\tthis.initializeEffects();\r\n\t\tthis.initializeForm();\r\n\t}\r\n\r\n\tprivate initializeEffects() {\r\n\t\tthis.subjects.getTree.next(0);\r\n\t\tthis.subjects.getUserType.next({ first: 0, max: 100 });\r\n\t\tthis.subjects.getClientList.next({ first: 0, max: 100 });\r\n\r\n\t\tif (this.dialogConfig?.data?.item?.id) {\r\n\t\t\tthis.subjects.getUserDetails.next({ id: this.dialogConfig.data.item.id });\r\n\t\t}\r\n\r\n\t\teffect(() => {\r\n\t\t\t\tconst service = this.updateUserService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('profileSidebar.updateSuccess'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('profileSidebar.updateSuccessDetail'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success', data: service.response });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getClientListService()?.response) {\r\n\t\t\t\tthis.prepareClientListDropdown(this.getClientListService()?.response as ClientResponseDTO[]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getUserTypeService()?.response) {\r\n\t\t\t\tthis.userTypeDatas = this.getUserTypeService()?.response;\r\n\t\t\t\tthis.userTypeItems = this.userTypeDatas.map((item: { name: string; id: string }) => ({\r\n\t\t\t\t\ttext: item.name,\r\n\t\t\t\t\tkey: item.id\r\n\t\t\t\t}));\r\n\t\t\t\tthis.initializeForm();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getUserDetailService()?.response) {\r\n\t\t\t\tthis.updateUserData = this.getUserDetailService()?.response;\r\n\t\t\t\tthis.initializeForm();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.getAuthorityTreeService()?.response) {\r\n\t\t\t\tthis.treeData = this.getAuthorityTreeService()?.response;\r\n\t\t\t\tthis.treeItems = this.mapTreeData(this.treeData);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate subjects = {\r\n\t\tgetTree: new Subject<number>(),\r\n\t\tgetUserType: new Subject<any>(),\r\n\t\tgetUserDetails: new Subject<{ id: string }>(),\r\n\t\tupdateUser: new Subject<UpdateUserRequestDTO>(),\r\n\t\tgetClientList: new Subject<GetAllClientRequestDTO>()\r\n\t};\r\n\r\n\ttreeData: any;\r\n\ttreeItems: any;\r\n\tpageEdit = false;\r\n\tuserTypeItems: any;\r\n\tuserTypeDatas: any;\r\n\tupdateUserData: any;\r\n\tclientList: { key: string; text: string }[] = [];\r\n\tlevelPairs: Array<{ startLevel: string; endLevel: string }> = [];\r\n\r\n\tprofileForm!: FormGroup;\r\n\tuserProfile: UserResponseDTO;\r\n\tselectedUserTypeIds: string[] = [];\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.userProfile) {\r\n\t\t\tthis.dialogRef.close('error');\r\n\t\t}\r\n\t}\r\n\r\n\tupdateUserService = toSignal(\r\n\t\tthis.subjects.updateUser.pipe(switchMap((data) => this.profileService.updateUser(data)))\r\n\t);\r\n\r\n\tgetClientListService = toSignal(\r\n\t\tthis.subjects.getClientList.pipe(switchMap((data) => this.profileService.getAllClientsList(data)))\r\n\t);\r\n\r\n\tgetUserDetailService = toSignal(\r\n\t\tthis.subjects.getUserDetails.pipe(switchMap((data) => this.profileService.getUser(data)))\r\n\t);\r\n\r\n\tgetUserTypeService = toSignal(\r\n\t\tthis.subjects.getUserType.pipe(switchMap((data) => this.profileService.getAllUserType(data)))\r\n\t);\r\n\r\n\tgetAuthorityTreeService = toSignal(\r\n\t\tthis.subjects.getTree.pipe(switchMap((data) => this.profileService.getAuthorityTree(data)))\r\n\t);\r\n\r\n\tprivate initializeForm(): void {\r\n\t\tthis.updateUserData = this.getUserDetailService()?.response;\r\n\r\n\t\tconst userTypesFromResponse: string[] = this.userProfile?.userTypes || [];\r\n\t\tconst userTypeDatas = this.userTypeDatas || [];\r\n\r\n\t\tthis.selectedUserTypeIds = userTypeDatas\r\n\t\t\t.filter((type: { name: string }) => userTypesFromResponse.includes(type.name))\r\n\t\t\t.map((type: { id: any }) => type.id);\r\n\r\n\t\tthis.userTypeItems = userTypeDatas.map((type: { name: any; id: any }) => ({\r\n\t\t\tlabel: type.name,\r\n\t\t\tvalue: type.id\r\n\t\t}));\r\n\r\n\t\tthis.profileForm = this.formBuilder.group({\r\n\t\t\tid: new FormControl(this.userProfile?.id || null),\r\n\t\t\tsystemUser: new FormControl({ value: this.userProfile?.systemUser ?? true, disabled: false }),\r\n\t\t\tclientOfSystemUser: new FormControl({ value: this.userProfile?.clientOfSystemUser || '', disabled: false }),\r\n\t\t\tuserTypeId: new FormControl({ value: this.selectedUserTypeIds[0], disabled: false }),\r\n\t\t\tregions: new FormControl({ value: this.userProfile?.regions || '', disabled: false }),\r\n\t\t\tuserName: new FormControl({ value: this.userProfile?.userName || '', disabled: true }, [Validators.required]),\r\n\t\t\tfirstName: new FormControl(this.userProfile?.firstName || '', [Validators.required]),\r\n\t\t\tlastName: new FormControl(this.userProfile?.lastName || ''),\r\n\t\t\temail: new FormControl(this.userProfile?.email || '', [Validators.email, Validators.required]),\r\n\t\t\tphone: new FormControl(Array.isArray(this.userProfile?.phone) ? this.userProfile.phone[0] || '' : this.userProfile?.phone || ''),\r\n\t\t\ttckn: new FormControl(Array.isArray(this.userProfile?.tckn) ? this.userProfile.tckn[0] || '' : '', [Validators.required]),\r\n\t\t\tphotoUrl: new FormControl(this.userProfile?.photoUrl || ''),\r\n\t\t\tenabled: new FormControl({ value: this.userProfile?.enabled ?? true, disabled: false }),\r\n\t\t\temailVerified: new FormControl({ value: this.userProfile?.emailVerified ?? true, disabled: false }),\r\n\t\t\tnotes: new FormControl(this.userProfile?.notes || ''),\r\n\t\t\tpassword: new FormControl(null)\r\n\t\t});\r\n\t}\r\n\r\n\tsubmit(): void {\r\n\t\tconst rawValue = this.profileForm.getRawValue();\r\n\t\tconst updateRequest: UpdateUserRequestDTO = {\r\n\t\t\t...rawValue,\r\n\t\t\tid: this.userProfile.id,\r\n\t\t\tphone: Array.isArray(rawValue.phone) ? rawValue.phone : [rawValue.phone],\r\n\t\t\ttckn: Array.isArray(rawValue.tckn) ? rawValue.tckn : [rawValue.tckn],\r\n\t\t\tregions: this.levelPairs,\r\n\t\t\tphotoUrl: Array.isArray(rawValue.photoUrl) ? rawValue.photoUrl : [rawValue.photoUrl],\r\n\t\t\tnotes: Array.isArray(rawValue.notes) ? rawValue.notes : [rawValue.notes]\r\n\t\t};\r\n\r\n\t\tthis.subjects.updateUser.next(updateRequest);\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.dialogRef.close('cancel');\r\n\t}\r\n\r\n\tprepareClientListDropdown(clientListParam: ClientResponseDTO[]) {\r\n\t\tthis.clientList = clientListParam.map((clientItem) => ({\r\n\t\t\tkey: clientItem.clientReferenceKey,\r\n\t\t\ttext: clientItem.name\r\n\t\t}));\r\n\t}\r\n\r\n\tmapTreeData(treeData: any) {\r\n\t\treturn treeData.map((item: any) => ({\r\n\t\t\tkey: item.startLevel,\r\n\t\t\tlabel: item.name,\r\n\t\t\tvalue: item.id,\r\n\t\t\tchildren: item.children ? this.mapTreeData(item.children) : []\r\n\t\t}));\r\n\t}\r\n\r\n\tnodeSelect(event: any) {\r\n\t\tconst { startLevel, endLevel } = event.node.data;\r\n\t\tconst index = this.levelPairs.findIndex((pair) => pair.startLevel === startLevel && pair.endLevel === endLevel);\r\n\t\tindex === -1 ? this.levelPairs.push({ startLevel, endLevel }) : this.levelPairs.splice(index, 1);\r\n\t}\r\n\r\n\tnodeUnselect(event: any) {\r\n\t\tconst { startLevel, endLevel } = event.node.data;\r\n\t\tconst index = this.levelPairs.findIndex((pair) => pair.startLevel === startLevel && pair.endLevel === endLevel);\r\n\t\tif (index !== -1) this.levelPairs.splice(index, 1);\r\n\t}\r\n\r\n\tclear() {\r\n\t\tthis.levelPairs = [];\r\n\t}\r\n}\r\n","<div *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"profileForm\">\r\n\t\t<aril-field [label]=\"t('userStatus')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"enabled\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUser')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"systemUser\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userType')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-select-box formControlName=\"userTypeId\" [items]=\"userTypeItems\" itemKey=\"value\" itemText=\"label\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUserApp')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-select-box formControlName=\"clientOfSystemUser\" [items]=\"clientList\" itemText=\"text\" itemKey=\"key\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('username')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"userName\" [disabled]=\"true\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userPassword')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-password formControlName=\"password\" [placeholder]=\"'&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;'\"></aril-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('firstName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"firstName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('lastName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"lastName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('email')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"email\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('phone')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-mask mask=\"(999) 999 99 99\" [placeholder]=\"t('phoneExample')\" formControlName=\"phone\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('tcNumber')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-mask mask=\"99999999999\" formControlName=\"tckn\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('responsibleRegions')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-treeSelect\r\n\t\t\t\t[options]=\"treeItems\"\r\n\t\t\t\tformControlName=\"regions\"\r\n\t\t\t\t[placeholder]=\"t('select')\"\r\n\t\t\t\t(nodeSelect)=\"nodeSelect($event)\"\r\n\t\t\t\t(nodeUnselect)=\"nodeUnselect($event)\"\r\n\t\t\t\t(cleared)=\"clear()\">\r\n\t\t\t</aril-treeSelect>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('notes')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text-area [rows]=\"3\" [cols]=\"40\" formControlName=\"notes\"></aril-text-area>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('photoUrl')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"photoUrl\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-3 gap-1\">\r\n\t\t\t<aril-button color=\"danger\" [label]=\"t('cancel')\" [outlined]=\"true\" icon=\"TIMES\" (clickEvent)=\"cancel()\"></aril-button>\r\n\t\t\t<aril-form-submit [label]=\"t('save')\" color=\"success\" icon=\"CHECK\" [formGroup]=\"profileForm\" (validEvent)=\"submit()\"></aril-form-submit>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n","import { Injectable, effect, signal } from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type MenuMode = 'static' | 'expandable';\r\n\r\nexport type ColorScheme = 'light' | 'dark' | 'dim';\r\n\r\nexport type MenuColorScheme = 'colorScheme' | 'primaryColor' | 'transparent';\r\n\r\nexport interface AppConfig {\r\n\tinputStyle: string;\r\n\tcolorScheme: ColorScheme;\r\n\ttheme: string;\r\n\tripple: boolean;\r\n\tmenuMode: MenuMode;\r\n\tscale: number;\r\n\tmenuTheme: MenuColorScheme;\r\n}\r\n\r\ninterface LayoutState {\r\n\t// Static sidebar states\r\n\tstaticSidebarVisible: boolean;\r\n\tstaticSidebarCollapsed: boolean;\r\n\tstaticMenuMobileActive: boolean;\r\n\t\r\n\t// Expandable menu states\r\n\tselectedMainItem: number | null;\r\n\tsecondarySidebarExpanded: boolean;\r\n\t\r\n\t// Other sidebar states\r\n\tprofileSidebarVisible: boolean;\r\n\thistorySidebarVisible: boolean;\r\n\tsiteMapSidebarVisible: boolean;\r\n\tfavoritePagesSidebarVisible: boolean;\r\n\tnotificationsSidebarVisible: boolean;\r\n\t\r\n\t// Notifications\r\n\tunreadNotificationCount: number;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LayoutService {\r\n\r\n\t_config: AppConfig = {\r\n\t\tripple: false,\r\n\t\tinputStyle: 'outlined',\r\n\t\tmenuMode: localStorage.getItem('menu-mode') as MenuMode || 'static',\r\n\t\tcolorScheme: 'light',\r\n\t\ttheme: 'indigo',\r\n\t\tscale: 12,\r\n\t\tmenuTheme: 'colorScheme'\r\n\t};\r\n\r\n\t// TODO: Set User Config\r\n\tconfig = signal<AppConfig>(this._config);\r\n\r\n\tstate: LayoutState = {\r\n\t\t// Static sidebar states\r\n\t\tstaticSidebarVisible: true,\r\n\t\tstaticSidebarCollapsed: false,\r\n\t\tstaticMenuMobileActive: false,\r\n\t\t\r\n\t\t// Expandable menu states\r\n\t\tselectedMainItem: null,\r\n\t\tsecondarySidebarExpanded: false,\r\n\t\t\r\n\t\t// Other sidebar states\r\n\t\tprofileSidebarVisible: false,\r\n\t\thistorySidebarVisible: false,\r\n\t\tsiteMapSidebarVisible: false,\r\n\t\tfavoritePagesSidebarVisible: false,\r\n\t\tnotificationsSidebarVisible: false,\r\n\t\t\r\n\t\t// Notifications\r\n\t\tunreadNotificationCount: 0\r\n\t};\r\n\r\n\tprivate configUpdate = new Subject<AppConfig>();\r\n\tprivate overlayOpen = new Subject<any>();\r\n\r\n\tconfigUpdate$ = this.configUpdate.asObservable();\r\n\toverlayOpen$ = this.overlayOpen.asObservable();\r\n\r\n\tmfeAppItemClicked = signal<boolean>(false);\r\n\r\n\t// Breakpoint for mobile/tablet detection\r\n\tprivate readonly MOBILE_BREAKPOINT = 992;\r\n\r\n\tconstructor() {\r\n\t\teffect(() => {\r\n\t\t\tconst config = this.config();\r\n\t\t\tif (this.updateStyle(config)) {\r\n\t\t\t\tthis.changeTheme();\r\n\t\t\t}\r\n\t\t\tthis.changeScale(config.scale);\r\n\t\t\tthis.onConfigUpdate();\r\n\t\t});\r\n\r\n\t\tthis.initializeResponsiveBehavior();\r\n\t\t\t\t\r\n\t\t// Set initial state based on menu mode\r\n\t\tif (this.config().menuMode === 'expandable') {\r\n\t\t\tthis.state.staticSidebarVisible = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initializeResponsiveBehavior() {\r\n\t\t// Listen for window resize events\r\n\t\twindow.addEventListener('resize', () => this.handleResize());\r\n\t\t\tthis.handleResize();\r\n\t}\r\n\r\n\tprivate handleResize() {\r\n\t\tconst wasMobile = this.isMobile();\r\n\t\t\r\n\t\t// Recalculate mobile state\r\n\t\tconst isMobileNow = window.innerWidth <= this.MOBILE_BREAKPOINT;\r\n\t\t\r\n\t\t// If switching from mobile to desktop or vice versa\r\n\t\tif (wasMobile !== isMobileNow) {\r\n\t\t\tif (isMobileNow) {\r\n\t\t\t\t// Switching to mobile: close any open desktop menus\r\n\t\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\t\tthis.state.staticMenuMobileActive = false;\r\n\t\t\t\t// For expandable menu, keep secondary sidebar state but handle mobile behavior\r\n\t\t\t} else {\r\n\t\t\t\t// Switching to desktop: ensure proper desktop state\r\n\t\t\t\tthis.state.staticMenuMobileActive = false;\r\n\t\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateStyle(config: AppConfig) {\r\n\t\treturn config.theme !== this._config.theme || config.colorScheme !== this._config.colorScheme;\r\n\t}\r\n\r\n\tonMenuToggle() {\r\n\t\tif (this.isMobile()) {\r\n\t\t\tthis.state.staticMenuMobileActive = !this.state.staticMenuMobileActive;\r\n\t\t\t\r\n\t\t\tif (this.state.staticMenuMobileActive) {\r\n\t\t\t\tthis.overlayOpen.next(null);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this.config().menuMode === 'static') {\r\n\t\t\t\tif (this.state.staticSidebarVisible && !this.state.staticSidebarCollapsed) {\r\n\t\t\t\t\tthis.state.staticSidebarCollapsed = true;\r\n\t\t\t\t} else if (this.state.staticSidebarVisible && this.state.staticSidebarCollapsed) {\r\n\t\t\t\t\tthis.state.staticSidebarCollapsed = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\t\t\tthis.state.staticSidebarCollapsed = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// For expandable mode, the toggle is handled by the expandable component itself\r\n\t\t}\r\n\t}\r\n\r\n\tonOverlaySubmenuOpen() {\r\n\t\tthis.overlayOpen.next(null);\r\n\t}\r\n\r\n\t// Expandable menu methods\r\n\tsetSelectedMainItem(index: number | null) {\r\n\t\tthis.state.selectedMainItem = index;\r\n\t}\r\n\r\n\ttoggleSecondarySidebar() {\r\n\t\tthis.state.secondarySidebarExpanded = !this.state.secondarySidebarExpanded;\r\n\t}\r\n\r\n\tsetSecondarySidebarExpanded(expanded: boolean) {\r\n\t\tthis.state.secondarySidebarExpanded = expanded;\r\n\t}\r\n\r\n\t// Sidebar show methods\r\n\tshowProfileSidebar() {\r\n\t\tthis.state.profileSidebarVisible = true;\r\n\t}\r\n\r\n\tshowHistorySidebar() {\r\n\t\tthis.state.historySidebarVisible = true;\r\n\t}\r\n\r\n\tshowSiteMapSidebar() {\r\n\t\tthis.state.siteMapSidebarVisible = true;\r\n\t}\r\n\r\n\tshowFavoritePagesSidebar() {\r\n\t\tthis.state.favoritePagesSidebarVisible = true;\r\n\t}\r\n\r\n\tshowNotificationsSidebar() {\r\n\t\tthis.state.notificationsSidebarVisible = true;\r\n\t}\r\n\r\n\tsetUnreadNotificationCount(count: number) {\r\n\t\tthis.state.unreadNotificationCount = count;\r\n\t}\r\n\r\n\tgetUnreadNotificationCount(): number {\r\n\t\treturn this.state.unreadNotificationCount;\r\n\t}\r\n\r\n\tisDesktop() {\r\n\t\treturn window.innerWidth > this.MOBILE_BREAKPOINT;\r\n\t}\r\n\r\n\tisMobile() {\r\n\t\treturn window.innerWidth <= this.MOBILE_BREAKPOINT;\r\n\t}\r\n\r\n\tisStatic() {\r\n\t\treturn this.config().menuMode === 'static';\r\n\t}\r\n\r\n\tisExpandable() {\r\n\t\treturn this.config().menuMode === 'expandable';\r\n\t}\r\n\r\n\t// Helper method to determine if static sidebar should be shown\r\n\tshouldShowStaticSidebar(): boolean {\r\n\t\tif (this.config().menuMode !== 'static') return false;\r\n\t\t\r\n\t\tif (this.isDesktop()) {\r\n\t\t\treturn this.state.staticSidebarVisible;\r\n\t\t} else {\r\n\t\t\treturn this.state.staticMenuMobileActive;\r\n\t\t}\r\n\t}\r\n\r\n\tisStaticSidebarCollapsed(): boolean {\r\n\t\treturn this.state.staticSidebarCollapsed;\r\n\t}\r\n\r\n\tshouldShowExpandableMenu(): boolean {\r\n\t\treturn this.config().menuMode === 'expandable';\r\n\t}\r\n\r\n\tcloseMobileMenu() {\r\n\t\tthis.state.staticMenuMobileActive = false;\r\n\t}\r\n\r\n\t// Change menu mode programmatically\r\n\tchangeMenuMode(mode: MenuMode) {\r\n\t\tthis.config.update((config) => ({\r\n\t\t\t...config,\r\n\t\t\tmenuMode: mode\r\n\t\t}));\r\n\r\n\t\t// Update states based on new mode\r\n\t\tif (mode === 'static') {\r\n\t\t\tthis.state.staticSidebarVisible = true;\r\n\t\t\tthis.state.selectedMainItem = null;\r\n\t\t\tthis.state.secondarySidebarExpanded = false;\r\n\t\t} else if (mode === 'expandable') {\r\n\t\t\tthis.state.staticSidebarVisible = false;\r\n\t\t\tthis.state.selectedMainItem = null;\r\n\t\t\tthis.state.secondarySidebarExpanded = false;\r\n\t\t}\r\n\r\n\t\tthis.state.staticMenuMobileActive = false;\r\n\t}\r\n\r\n\tonConfigUpdate() {\r\n\t\tthis._config = { ...this.config() };\r\n\t\tthis.configUpdate.next(this.config());\r\n\t}\r\n\r\n\tchangeTheme() {\r\n\t\tconst config = this.config();\r\n\t\tconst themeLink = <HTMLLinkElement>document.getElementById('theme-link');\r\n\t\tconst themeLinkHref = themeLink.getAttribute('href')!;\r\n\t\tconst newHref = themeLinkHref\r\n\t\t\t.split('/')\r\n\t\t\t.map((el) =>\r\n\t\t\t\tel == this._config.theme ? (el = config.theme)\r\n\t\t\t\t: el == `theme-${this._config.colorScheme}` ? (el = `theme-${config.colorScheme}`)\r\n\t\t\t\t: el\r\n\t\t\t)\r\n\t\t\t.join('/');\r\n\r\n\t\tthis.replaceThemeLink(newHref);\r\n\t}\r\n\r\n\treplaceThemeLink(href: string) {\r\n\t\tconst id = 'theme-link';\r\n\t\tlet themeLink = <HTMLLinkElement>document.getElementById(id);\r\n\t\tconst cloneLinkElement = <HTMLLinkElement>themeLink.cloneNode(true);\r\n\r\n\t\tcloneLinkElement.setAttribute('href', href);\r\n\t\tcloneLinkElement.setAttribute('id', id + '-clone');\r\n\r\n\t\tthemeLink.parentNode!.insertBefore(cloneLinkElement, themeLink.nextSibling);\r\n\t\tcloneLinkElement.addEventListener('load', () => {\r\n\t\t\tthemeLink.remove();\r\n\t\t\tcloneLinkElement.setAttribute('id', id);\r\n\t\t});\r\n\t}\r\n\r\n\tchangeScale(value: number) {\r\n\t\tdocument.documentElement.style.fontSize = `${value}px`;\r\n\t}\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { TagModule } from 'primeng/tag';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { ChangePasswordModalComponent } from './modals/change-password-modal/change-password-modal.component';\r\nimport { EditProfileModalComponent } from './modals/edit-profile-modal/edit-profile-modal.component';\r\nimport { GetUserRequestDTO, ProfileService, UserResponseDTO } from './profile.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-profilemenu',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSidebarModule,\r\n\t\tTagModule,\r\n\t\tButtonModule,\r\n\t\tSkeletonModule,\r\n\t\tAvatarModule,\r\n\t\tChipModule,\r\n\t\tTranslocoModule,\r\n\t\tButtonComponent\r\n\t],\r\n\ttemplateUrl: './app.profilesidebar.component.html',\r\n\tstyleUrls: ['./app.profilesidebar.component.scss'],\r\n\tproviders: [DialogService]\r\n})\r\nexport class AppProfileSidebarComponent implements OnInit {\r\n\tusername: string;\r\n\tuserProfile = signal<UserResponseDTO | null>(null);\r\n\r\n\tprivate subjects = {\r\n\t\tgetUser: new Subject<GetUserRequestDTO>()\r\n\t};\r\n\r\n\tgetUserService = toSignal(this.subjects.getUser.pipe(switchMap((data) => this.profileService.getUser(data))));\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate readonly keycloak: KeycloakService,\r\n\t\tprivate readonly profileService: ProfileService,\r\n\t\tprivate readonly dialogService: DialogService,\r\n\t\tprivate readonly translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.username = this.keycloak.getUsername();\r\n\t\tthis.initializeEffects();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadUserProfile();\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.getUserService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.userProfile.set(service.response);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t}\r\n\r\n\tprivate loadUserProfile(): void {\r\n\t\tconst userId = this.keycloak.getKeycloakInstance().idTokenParsed?.sub;\r\n\t\tif (userId) {\r\n\t\t\tthis.subjects.getUser.next({ id: userId });\r\n\t\t}\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.profileSidebarVisible;\r\n\t}\r\n\r\n\tset visible(_val: boolean) {\r\n\t\tthis.layoutService.state.profileSidebarVisible = _val;\r\n\t\tif (_val && !this.userProfile()) {\r\n\t\t\tthis.loadUserProfile();\r\n\t\t}\r\n\t}\r\n\r\n\tlogout(): void {\r\n\t\tthis.keycloak.logout();\r\n\t}\r\n\r\n\teditProfile(): void {\r\n\t\tif (!this.userProfile()) return;\r\n\r\n\t\tconst ref = this.dialogService.open(EditProfileModalComponent, {\r\n\t\t\theader: this.translocoService.translate('profileSidebar.editProfile'),\r\n\t\t\twidth: '40%',\r\n\t\t\theight: 'auto',\r\n\t\t\tmodal: true,\r\n\t\t\tmaximizable: false,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tuserProfile: this.userProfile()\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe((result) => {\r\n\t\t\tif (result?.status === 'success') {\r\n\t\t\t\tthis.loadUserProfile();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tchangePassword(): void {\r\n\t\tconst userId = this.keycloak.getKeycloakInstance().idTokenParsed?.sub;\r\n\t\tif (!userId) return;\r\n\r\n\t\tconst ref = this.dialogService.open(ChangePasswordModalComponent, {\r\n\t\t\theader: this.translocoService.translate('profileSidebar.changePassword'),\r\n\t\t\twidth: '500px',\r\n\t\t\theight: 'auto',\r\n\t\t\tmodal: true,\r\n\t\t\tmaximizable: false,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tuserId: userId\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe();\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-profile-sidebar w-full sm:w-30rem\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center gap-2\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t\t<span class=\"font-bold\">{{ t('personalInfo') }}</span>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t@if (userProfile()) {\r\n\t\t<div class=\"profile-content\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t\t<!-- Personal Information -->\r\n\t\t\t<div class=\"info-section\">\r\n\t\t\t\t<div class=\"info-items\">\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-user info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('fullName') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.firstName }} {{ userProfile()?.lastName }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-id-card info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('tcNumber') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.tckn || '' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-envelope info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('email') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.email || '' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-phone info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('phone') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.phone || '' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-at info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('username') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.userName }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-check-circle info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('accountStatus') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value status\" [class.active]=\"userProfile()?.enabled\">\r\n\t\t\t\t\t\t\t\t{{ userProfile()?.enabled ? t('active') : t('inactive') }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-user info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('systemUser') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value status\" [class.active]=\"userProfile()?.systemUser\">\r\n\t\t\t\t\t\t\t\t{{ userProfile()?.systemUser ? t('yes') : t('no') }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"info-item\">\r\n\t\t\t\t\t\t<i class=\"pi pi-building info-icon\"></i>\r\n\t\t\t\t\t\t<div class=\"info-content\">\r\n\t\t\t\t\t\t\t<span class=\"info-label\">{{ t('clientSystemUser') }}</span>\r\n\t\t\t\t\t\t\t<span class=\"info-value\">{{ userProfile()?.clientOfSystemUser }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<!-- Fixed Action Buttons -->\r\n\t@if (userProfile()) {\r\n\t\t<div class=\"action-buttons-container grid p-fluid\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t\t<div class=\"col-12 flex justify-content-between align-items-center\">\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('editProfile')\"\r\n\t\t\t\t\ticon=\"USER_EDIT\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\tclass=\"col-6\"\r\n\t\t\t\t\t(clickEvent)=\"editProfile()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('changePassword')\"\r\n\t\t\t\t\ticon=\"KEY\"\r\n\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\tclass=\"col-6\"\r\n\t\t\t\t\t(clickEvent)=\"changePassword()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t</div>\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('logout')\"\r\n\t\t\t\ticon=\"SIGN_OUT\"\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[outlined]=\"false\"\r\n\t\t\t\tsize=\"sm\"\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t(clickEvent)=\"logout()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t}\r\n</p-sidebar>\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nexport interface HistoryItem {\r\n\tid: string;\r\n\ttitle: string;\r\n\tmultiLanguageTitle?: {\r\n\t\ttr?: string;\r\n\t\ten?: string;\r\n\t};\r\n\turl: string;\r\n\ttimestamp: number;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class HistoryService {\r\n\tprivate readonly STORAGE_KEY = 'page_history';\r\n\tprivate readonly MAX_HISTORY_SIZE = 20;\r\n\r\n\tprivate historySubject = new BehaviorSubject<HistoryItem[]>([]);\r\n\tpublic history$: Observable<HistoryItem[]> = this.historySubject.asObservable();;\r\n\r\n\t// Excluded paths that shouldn't be tracked\r\n\tprivate excludedPaths = ['/login'];\r\n\r\n\tprivate router = inject(Router);\r\n\tprivate translocoService = inject(TranslocoService);\r\n\tprivate pubSubService = inject(PubSubService);\r\n\tprivate titleService = inject(Title);\r\n\r\n\tconstructor() {\r\n\t\tthis.loadHistoryFromStorage();\r\n\t\tthis.initializeBreadcrumbListener();\r\n\t}\r\n\r\n\tprivate initializeBreadcrumbListener(): void {\r\n\t\t// Listen for breadcrumb updates to track navigation history\r\n\t\tthis.pubSubService.subscribe('breadcrumbUpdated', (data) => {\r\n\t\t\tconst url = data?.path;\r\n\t\t\tconst pageTitle = data?.custom?.pageTitle;\r\n\t\t\t\r\n\t\t\tif (url && pageTitle && pageTitle !== '...') {\r\n\t\t\t\tthis.addToHistory(url, pageTitle);\r\n\t\t\t\tthis.titleService.setTitle(pageTitle);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate addToHistory(url: string, pageTitle?: string): void {\r\n\t\tif (this.shouldExcludeUrl(url)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst multiLanguageTitle: { tr?: string; en?: string } = {};\r\n\r\n\t\t if (pageTitle) {\r\n\t\t\tmultiLanguageTitle.tr = pageTitle;\r\n\t\t\tmultiLanguageTitle.en = pageTitle;\r\n\t\t} else {\r\n\t\t\tconst globalPageTitle = (<any>globalThis).__ARIL_PAGE_TITLE__?.();\r\n\t\t\tif (globalPageTitle) {\r\n\t\t\t\tmultiLanguageTitle.tr = globalPageTitle;\r\n\t\t\t\tmultiLanguageTitle.en = globalPageTitle;\r\n\t\t\t} else {\r\n\t\t\t\t// Fallback for pages not in menu and no global title\r\n\t\t\t\tmultiLanguageTitle.tr = 'Bilinmeyen Sayfa';\r\n\t\t\t\tmultiLanguageTitle.en = 'Unknown Page';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst currentLang = this.translocoService.getActiveLang() as 'tr' | 'en';\r\n\t\tconst title = multiLanguageTitle[currentLang] || multiLanguageTitle.tr || 'Unknown Page';\r\n\t\tconst timestamp = Date.now();\r\n\t\tconst id = this.generateId(url, timestamp);\r\n\r\n\t\tconst newItem: HistoryItem = {\r\n\t\t\tid,\r\n\t\t\ttitle,\r\n\t\t\tmultiLanguageTitle,\r\n\t\t\turl,\r\n\t\t\ttimestamp\r\n\t\t};\r\n\r\n\t\tlet history = this.getHistoryFromStorage();\r\n\t\thistory = history.filter((item) => item.url !== url);\r\n\t\thistory.unshift(newItem);\r\n\r\n\t\t// Limit history size\r\n\t\tif (history.length > this.MAX_HISTORY_SIZE) {\r\n\t\t\thistory = history.slice(0, this.MAX_HISTORY_SIZE);\r\n\t\t}\r\n\r\n\t\tthis.saveHistoryToStorage(history);\r\n\t\tthis.historySubject.next(history);\r\n\t}\r\n\r\n\tprivate shouldExcludeUrl(url: string): boolean {\r\n\t\treturn this.excludedPaths.some((excludedPath) => url.startsWith(excludedPath));\r\n\t}\r\n\r\n\tprivate generateId(url: string, timestamp: number): string {\r\n\t\treturn `${url.replace(/[^a-zA-Z0-9]/g, '_')}_${timestamp}`;\r\n\t}\r\n\r\n\tprivate loadHistoryFromStorage(): void {\r\n\t\tconst history = this.getHistoryFromStorage();\r\n\t\tthis.historySubject.next(history);\r\n\t}\r\n\r\n\tprivate saveHistoryToStorage(history: HistoryItem[]): void {\r\n\t\ttry {\r\n\t\t\tlocalStorage.setItem(this.STORAGE_KEY, JSON.stringify(history));\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save navigation history to localStorage:', error);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clearHistory(): void {\r\n\t\tlocalStorage.removeItem(this.STORAGE_KEY);\r\n\t\tthis.historySubject.next([]);\r\n\t}\r\n\r\n\tpublic navigateToHistoryItem(item: HistoryItem): void {\r\n\t\tthis.router.navigate([item.url]);\r\n\t}\r\n\r\n\tprivate getHistoryFromStorage(): HistoryItem[] {\r\n\t\ttry {\r\n\t\t\tconst stored = localStorage.getItem(this.STORAGE_KEY);\r\n\t\t\treturn stored ? JSON.parse(stored) : [];\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to load navigation history from localStorage:', error);\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getHistoryItemsBySearchTerm(searchTerm: string): HistoryItem[] {\r\n\t\tconst history = this.getHistoryFromStorage();\r\n\t\tconst lowerSearchTerm = searchTerm.toLowerCase();\r\n\t\tconst currentLang = this.translocoService.getActiveLang() as 'tr' | 'en';\r\n\r\n\t\treturn history.filter((item) => {\r\n\t\t\t// Search in current language title\r\n\t\t\tconst currentTitle = item.multiLanguageTitle?.[currentLang] || item.title;\r\n\t\t\treturn currentTitle.toLowerCase().includes(lowerSearchTerm) || item.url.toLowerCase().includes(lowerSearchTerm);\r\n\t\t});\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { TextComponent } from 'aril/ui/text';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { HistoryItem, HistoryService } from './history.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { solidIcons } from 'aril/util/lib';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-history-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tSidebarModule,\r\n\t\tButtonComponent,\r\n\t\tInputTextModule,\r\n\t\tScrollPanelModule,\r\n\t\tConfirmDialogModule,\r\n\t\tTooltipModule,\r\n\t\tBadgeModule,\r\n\t\tTranslocoModule,\r\n\t\tTextComponent,\r\n\t\tFontAwesomeModule\r\n\t],\r\n\ttemplateUrl: './history-sidebar.component.html',\r\n\tstyleUrls: ['./history-sidebar.component.scss'],\r\n\tproviders: [ConfirmationService]\r\n})\r\nexport class HistorySidebarComponent implements OnInit, OnDestroy {\r\n\thistory = signal<HistoryItem[]>([]);\r\n\tfilteredHistory = signal<HistoryItem[]>([]);\r\n\tsearchTerm = signal<string>('');\r\n\tsolidIcons = solidIcons;\r\n\t\r\n\tprivate destroy$ = new Subject<void>();\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate historyService: HistoryService,\r\n\t\tprivate confirmationService: ConfirmationService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.historyService.history$.pipe(takeUntil(this.destroy$)).subscribe((history) => {\r\n\t\t\tthis.history.set(history);\r\n\t\t\tthis.applyFilter();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.destroy$.next();\r\n\t\tthis.destroy$.complete();\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.historySidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.historySidebarVisible = value;\r\n\t}\r\n\r\n\tonSearchChange(): void {\r\n\t\tthis.applyFilter();\r\n\t}\r\n\r\n\tprivate applyFilter(): void {\r\n\t\tconst searchTerm = this.searchTerm();\r\n\t\tif (!searchTerm.trim()) {\r\n\t\t\tthis.filteredHistory.set(this.history());\r\n\t\t} else {\r\n\t\t\tconst filtered = this.historyService.getHistoryItemsBySearchTerm(searchTerm);\r\n\t\t\tthis.filteredHistory.set(filtered);\r\n\t\t}\r\n\t}\r\n\r\n\tnavigateToItem(item: HistoryItem): void {\r\n\t\tthis.historyService.navigateToHistoryItem(item);\r\n\t\tthis.visible = false;\r\n\t}\r\n\r\n\tclearAllHistory(event: Event): void {\r\n\t\tthis.confirmationService.confirm({\r\n\t\t\ttarget: event.target as EventTarget,\r\n\t\t\tmessage: this.translocoService.translate('history.confirmClearAllMessage'),\r\n\t\t\theader: this.translocoService.translate('history.deleteConfirmation'),\r\n\t\t\ticon: 'pi pi-info-circle',\r\n\t\t\tacceptLabel: this.translocoService.translate('history.acceptButtonLabel'),\r\n\t\t\trejectLabel: this.translocoService.translate('history.rejectButtonLabel'),\r\n\t\t\tacceptButtonStyleClass: 'p-button-success',\r\n\t\t\trejectButtonStyleClass: 'p-button-danger',\r\n\t\t\taccept: () => {\r\n\t\t\t\tthis.historyService.clearHistory();\r\n\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\tsummary: this.translocoService.translate('history.acceptButtonLabel'),\r\n\t\t\t\t\tdetail: this.translocoService.translate('history.clearAll')\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\ttrackByItemId(index: number, item: HistoryItem) {\r\n\t\treturn item.id || index;\r\n\t}\r\n\r\n\tgetLocalizedTitle(item: HistoryItem): string {\r\n\t\tconst currentLang = this.translocoService.getActiveLang() as 'tr' | 'en';\r\n\r\n\t\t// Use multiLanguageTitle if available\r\n\t\tif (item.multiLanguageTitle) {\r\n\t\t\tconst localizedTitle = item.multiLanguageTitle[currentLang];\r\n\t\t\tif (localizedTitle) {\r\n\t\t\t\treturn localizedTitle;\r\n\t\t\t}\r\n\t\t\t// Fallback to Turkish if current language not available\r\n\t\t\tif (item.multiLanguageTitle.tr) {\r\n\t\t\t\treturn item.multiLanguageTitle.tr;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fallback to original title\r\n\t\treturn item.title;\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-history-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'history'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-history text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('pageHistory') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"history-content\">\r\n\t\t@if (history().length > 0) {\r\n\t\t\t<div class=\"search-section\">\r\n\t\t\t\t<div class=\"flex justify-content-center align-items-center grid p-fluid m-0\">\r\n\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\tclass=\"col-10\"\r\n\t\t\t\t\t\t[placeholder]=\"t('searchHistory')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\">\r\n\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('confirmClearAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"clearAllHistory($event)\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t@if (filteredHistory().length > 0) {\r\n\t\t\t<div class=\"history-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"history-items\">\r\n\t\t\t\t\t\t@for (item of filteredHistory(); track trackByItemId($index, item)) {\r\n\t\t\t\t\t\t\t<div class=\"history-item\" (click)=\"navigateToItem(item)\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"title-info\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ getLocalizedTitle(item) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"route-text\">{{ item.url }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-history empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noHistory') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : t('startBrowsing') }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { TextComponent } from 'aril/ui/text';\r\nimport { TranslateJsonPipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { solidIcons } from 'aril/util/lib';\r\n\r\ninterface MenuNode {\r\n\tkey: string;\r\n\tlabel: string | object;\r\n\ticon?: string;\r\n\trouterLink?: string;\r\n\tchildren?: MenuNode[];\r\n\texpanded?: boolean;\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-site-map-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tRouterModule,\r\n\t\tSidebarModule,\r\n\t\tScrollPanelModule,\r\n\t\tTooltipModule,\r\n\t\tButtonComponent,\r\n\t\tTextComponent,\r\n\t\tTranslocoModule,\r\n\t\tTranslateJsonPipe,\r\n\t\tFontAwesomeModule\r\n\t],\r\n\ttemplateUrl: './site-map-sidebar.component.html',\r\n\tstyleUrls: ['./site-map-sidebar.component.scss']\r\n})\r\nexport class SiteMapSidebarComponent implements OnInit {\r\n\tsiteMapNodes = signal<MenuNode[]>([]);\r\n\tfilteredNodes = signal<MenuNode[]>([]);\r\n\tsearchTerm = signal<string>('');\r\n\ttotalPages = signal<number>(0);\r\n solidIcons = solidIcons;\r\n\t\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadSiteMap();\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.siteMapSidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.siteMapSidebarVisible = value;\r\n\t}\r\n\r\n\tprivate loadSiteMap(): void {\r\n\t\tconst menuItems = (<any>globalThis).hostMenuItems?.() || [];\r\n\t\tconst nodes = this.buildSiteMapNodes(menuItems);\r\n\t\tconst totalCount = this.countTotalPages(nodes);\r\n\r\n\t\tthis.siteMapNodes.set(nodes);\r\n\t\tthis.filteredNodes.set(nodes);\r\n\t\tthis.totalPages.set(totalCount);\r\n\t}\r\n\r\n\tprivate buildSiteMapNodes(items: any[], parentKey = ''): MenuNode[] {\r\n\t\treturn items\r\n\t\t\t.filter((item) => {\r\n\t\t\t\t// Keep the home page route (\"/\") and any non-empty routes\r\n\t\t\t\treturn !item.routerLink || item.routerLink === '/' || item.routerLink.trim() !== '';\r\n\t\t\t})\r\n\t\t\t.map((item, index) => {\r\n\t\t\t\tconst key = parentKey ? `${parentKey}-${index}` : `${index}`;\r\n\r\n\t\t\t\tlet label: string | object;\r\n\t\t\t\tif (item.routerLink === '/') {\r\n\t\t\t\t\tlabel = { tr: 'Anasayfa', en: 'Home' };\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel = item.label || { tr: 'Bilinmeyen', en: 'Unknown' };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst node: MenuNode = {\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\tlabel,\r\n\t\t\t\t\ticon: item.icon,\r\n\t\t\t\t\trouterLink: item.routerLink,\r\n\t\t\t\t\texpanded: false\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (item.items && item.items.length > 0) {\r\n\t\t\t\t\tnode.children = this.buildSiteMapNodes(item.items, key);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn node;\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate countTotalPages(nodes: MenuNode[]): number {\r\n\t\tlet count = 0;\r\n\t\tfor (const node of nodes) {\r\n\t\t\tif (node.routerLink) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t\tif (node.children) {\r\n\t\t\t\tcount += this.countTotalPages(node.children);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\tonSearchChange(): void {\r\n\t\tconst searchTerm = this.searchTerm()?.toLowerCase()?.trim();\r\n\t\tif (!searchTerm) {\r\n\t\t\tthis.filteredNodes.set(this.siteMapNodes());\r\n\t\t} else {\r\n\t\t\tconst filtered = this.filterNodes(this.siteMapNodes(), searchTerm);\r\n\t\t\tthis.filteredNodes.set(filtered);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate filterNodes(nodes: MenuNode[], searchTerm: string): MenuNode[] {\r\n\t\tconst filtered: MenuNode[] = [];\r\n\t\tconst currentLang = this.translocoService.getActiveLang();\r\n\r\n\t\tfor (const node of nodes) {\r\n\t\t\t// Convert label to string for search based on active language\r\n\t\t\tconst labelText =\r\n\t\t\t\ttypeof node.label === 'string' ?\r\n\t\t\t\t\tnode.label\r\n\t\t\t\t:\t(node.label as any)?.[currentLang] || (node.label as any)?.tr || (node.label as any)?.en || '';\r\n\r\n\t\t\tconst matches = labelText.toLowerCase().includes(searchTerm);\r\n\t\t\tlet filteredChildren: MenuNode[] = [];\r\n\r\n\t\t\tif (node.children) {\r\n\t\t\t\tfilteredChildren = this.filterNodes(node.children, searchTerm);\r\n\t\t\t}\r\n\r\n\t\t\tif (matches || filteredChildren.length > 0) {\r\n\t\t\t\tfiltered.push({\r\n\t\t\t\t\t...node,\r\n\t\t\t\t\tchildren: filteredChildren.length > 0 ? filteredChildren : node.children,\r\n\t\t\t\t\texpanded: filteredChildren.length > 0\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filtered;\r\n\t}\r\n\r\n\texpandAll(): void {\r\n\t\tconst expanded = this.expandNodes(this.filteredNodes(), true);\r\n\t\tthis.filteredNodes.set([...expanded]);\r\n\t}\r\n\r\n\tcollapseAll(): void {\r\n\t\tconst collapsed = this.expandNodes(this.filteredNodes(), false);\r\n\t\tthis.filteredNodes.set([...collapsed]);\r\n\t}\r\n\r\n\tprivate expandNodes(nodes: MenuNode[], expanded: boolean): MenuNode[] {\r\n\t\treturn nodes.map((node) => ({\r\n\t\t\t...node,\r\n\t\t\texpanded,\r\n\t\t\tchildren: node.children ? this.expandNodes(node.children, expanded) : undefined\r\n\t\t}));\r\n\t}\r\n\r\n\ttoggleNode(node: MenuNode): void {\r\n\t\tnode.expanded = !node.expanded;\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t}\r\n\r\n\ttrackByKey(index: number, node: MenuNode): string {\r\n\t\treturn node.key || `${index}`;\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nexport interface FavoritePageResponseDTO {\r\n\tid: number;\r\n\tcreator: string;\r\n\tcreated: number;\r\n\tupdater: string;\r\n\tupdated: number;\r\n\tversion: number;\r\n\tusername: string;\r\n\turl: string;\r\n\tlabel: string;\r\n}\r\n\r\nexport interface FavoritePageSaveRequestDTO {\r\n\turl: string;\r\n\tlabel: string;\r\n}\r\n\r\nexport interface FavoritePageUpdateRequestDTO {\r\n\tlabel: string;\r\n\tversion: number;\r\n}\r\n\r\nexport interface FavoritePageFilterRequestDTO {\r\n\tpageSize?: number;\r\n\tpageNumber?: number;\r\n\tsortFieldName?: string;\r\n\tsortDirection?: number; // 1=ASC, 2=DESC\r\n}\r\n\r\nexport interface SearchResultDTO<T> {\r\n\tresultInfo: {\r\n\t\ttotalPage: number;\r\n\t\ttotalItem: number;\r\n\t};\r\n\tresult: T[];\r\n\tsearchAfterValues: any[];\r\n}\r\n\r\n// API Endpoints\r\nexport const favoritePageEndpoints = {\r\n\tfilter: 'favorite-pages/filter',\r\n\tfavorite: 'favorite-pages'\r\n};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FavoritePagesService extends RestClient {\r\n\toverride states: ServiceCallStateMap<FavoritePagesService> = {};\r\n\tallFavoritePages = signal<FavoritePageResponseDTO[]>([]);\r\n\r\n\tconstructor(private router: Router) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tgetCurrentRoutePath(): string {\r\n\t\treturn this.router.url;\r\n\t}\r\n\r\n\tnavigateToFavoritePage(favorite: FavoritePageResponseDTO): void {\r\n\t\tthis.router.navigate([favorite.url]);\r\n\t}\r\n\r\n\tgetFullUrl(url: string): string {\r\n\t\tconst baseUrl = window.location.origin;\r\n\t\treturn `${baseUrl}${window.location.pathname}${\"#\"}${url}`;\r\n\t}\r\n\r\n\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, favoritePageEndpoints.filter)\r\n\tfilterFavoritePages(post: FavoritePageFilterRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<SearchResultDTO<FavoritePageResponseDTO>>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)\r\n\tsaveFavoritePage(post: FavoritePageSaveRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<FavoritePageResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.PUT, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)\r\n\tupdateFavoritePage(id: number, post: FavoritePageUpdateRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<FavoritePageResponseDTO>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.DELETE, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)\r\n\tdeleteFavoritePage(id: number) {\r\n\t\treturn new Observable<ServiceResponse<boolean>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { FieldComponent } from 'aril/ui/field';\r\nimport { ARiLFormModule } from 'aril/ui/form';\r\nimport { TextComponent } from 'aril/ui/text';\r\n\r\nimport {\r\n\tFavoritePageResponseDTO,\r\n\tFavoritePageSaveRequestDTO,\r\n\tFavoritePageUpdateRequestDTO,\r\n\tFavoritePagesService\r\n} from '../../favorite-pages.service';\r\n\r\ninterface ModalData {\r\n\tmode: 'add' | 'edit';\r\n\turl?: string; // For add mode\r\n\tfavorite?: FavoritePageResponseDTO; // For edit mode\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tFormsModule,\r\n\t\tARiLFormModule,\r\n\t\tFieldComponent,\r\n\t\tTextComponent,\r\n\t\tButtonComponent,\r\n\t\tTranslocoModule\r\n\t],\r\n\ttemplateUrl: './add-edit-favorite-modal.component.html'\r\n})\r\nexport class AddEditFavoriteModalComponent implements OnInit {\r\n\tfavoriteForm!: FormGroup;\r\n\tmodalData: ModalData;\r\n\r\n\tprivate subjects = {\r\n\t\tsaveFavorite: new Subject<FavoritePageSaveRequestDTO>(),\r\n\t\tupdateFavorite: new Subject<FavoritePageUpdateRequestDTO>()\r\n\t};\r\n\r\n\tsaveFavoriteService = toSignal(\r\n\t\tthis.subjects.saveFavorite.pipe(switchMap((data) => this.favoritePagesService.saveFavoritePage(data)))\r\n\t);\r\n\r\n\tupdateFavoriteService = toSignal(\r\n\t\tthis.subjects.updateFavorite.pipe(\r\n\t\t\tswitchMap((data) => this.favoritePagesService.updateFavoritePage(this.modalData.favorite?.id as number, data))\r\n\t\t)\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tprivate readonly formBuilder: FormBuilder,\r\n\t\tprivate readonly dialogRef: DynamicDialogRef,\r\n\t\tprivate readonly dialogConfig: DynamicDialogConfig,\r\n\t\tprivate readonly favoritePagesService: FavoritePagesService,\r\n\t\tprivate readonly messageService: MessageService,\r\n\t\tprivate readonly translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.modalData = this.dialogConfig.data;\r\n\t\tthis.initializeEffects();\r\n\t\tthis.initializeForm();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tif (!this.modalData || !['add', 'edit'].includes(this.modalData.mode)) {\r\n\t\t\tthis.dialogRef.close('error');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\t// Save favorite effect\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.saveFavoriteService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('favoritePages.success'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('favoritePages.saveSuccessfully'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success', data: service.response });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\t// Update favorite effect\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.updateFavoriteService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('favoritePages.success'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('favoritePages.updatedSuccessfully'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.dialogRef.close({ status: 'success', data: service.response });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t}\r\n\r\n\tprivate initializeForm(): void {\r\n\t\tif (this.modalData.mode === 'add') {\r\n\t\t\tthis.favoriteForm = this.formBuilder.group({\r\n\t\t\t\tlabel: ['', [Validators.required, Validators.minLength(1), Validators.maxLength(100)]],\r\n\t\t\t\turl: [{ value: this.modalData.url || '', disabled: true }]\r\n\t\t\t});\r\n\t\t} else if (this.modalData.mode === 'edit' && this.modalData.favorite) {\r\n\t\t\tthis.favoriteForm = this.formBuilder.group({\r\n\t\t\t\tlabel: [\r\n\t\t\t\t\tthis.modalData.favorite.label,\r\n\t\t\t\t\t[Validators.required, Validators.minLength(1), Validators.maxLength(100)]\r\n\t\t\t\t],\r\n\t\t\t\turl: [{ value: this.modalData.favorite.url, disabled: true }]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget isAddMode(): boolean {\r\n\t\treturn this.modalData.mode === 'add';\r\n\t}\r\n\r\n\tget isEditMode(): boolean {\r\n\t\treturn this.modalData.mode === 'edit';\r\n\t}\r\n\r\n\tsubmit(): void {\r\n\t\tconst formValue = this.favoriteForm.value;\r\n\r\n\t\tif (this.isAddMode) {\r\n\t\t\tconst saveRequest: FavoritePageSaveRequestDTO = {\r\n\t\t\t\turl: this.modalData.url!,\r\n\t\t\t\tlabel: formValue.label.trim()\r\n\t\t\t};\r\n\t\t\tthis.subjects.saveFavorite.next(saveRequest);\r\n\t\t} else if (this.isEditMode && this.modalData.favorite) {\r\n\t\t\tconst updateRequest: any = {\r\n\t\t\t\tlabel: formValue.label.trim(),\r\n\t\t\t\turl: this.modalData.url!,\r\n\t\t\t\tversion: this.modalData.favorite.version\r\n\t\t\t};\r\n\t\t\tthis.subjects.updateFavorite.next(updateRequest);\r\n\t\t}\r\n\t}\r\n\r\n\tcancel(): void {\r\n\t\tthis.dialogRef.close('cancel');\r\n\t}\r\n}\r\n","<div *transloco=\"let t; read: 'favoritePages'\">\r\n\t<aril-form [formGroup]=\"favoriteForm\">\r\n\t\t<aril-field [label]=\"t('label')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"label\" [placeholder]=\"t('labelPlaceholder')\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('path')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"url\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-form-submit\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t[formGroup]=\"favoriteForm\"\r\n\t\t\t\t(validEvent)=\"submit()\" />\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect, signal, computed } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { DialogService, DynamicDialogModule } from 'primeng/dynamicdialog';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { FavoritePageResponseDTO, FavoritePagesService } from './favorite-pages.service';\r\nimport { AddEditFavoriteModalComponent } from './modals/add-edit-favorite-modal/add-edit-favorite-modal.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { solidIcons } from 'aril/util/lib';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-favorite-pages-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSidebarModule,\r\n\t\tScrollPanelModule,\r\n\t\tConfirmDialogModule,\r\n\t\tPaginatorModule,\r\n\t\tDynamicDialogModule,\r\n\t\tButtonComponent,\r\n\t\tTranslocoModule,\r\n\t\tTooltipModule,\r\n\t\tFontAwesomeModule\r\n\t],\r\n\ttemplateUrl: './favorite-pages-sidebar.component.html',\r\n\tstyleUrls: ['./favorite-pages-sidebar.component.scss'],\r\n\tproviders: [ConfirmationService, DialogService]\r\n})\r\nexport class FavoritePagesSidebarComponent implements OnInit {\r\n\tfavoritePages = signal<FavoritePageResponseDTO[]>([]);\r\n\tisCurrentPageFavorited = signal<boolean>(false);\r\n\tsolidIcons = solidIcons;\r\n\tcurrentPage = signal<number>(1);\r\n\tpageSize = signal<number>(10);\r\n\ttotalItems = signal<number>(0);\r\n\ttotalPages = signal<number>(0);\r\n\tallFavoritePages = computed(() => this.favoritePagesService.allFavoritePages());\r\n\r\n\tprivate subjects = {\r\n\t\tloadAllFavorites: new Subject<void>(),\r\n\t\tdeleteFavorite: new Subject<number>()\r\n\t};\r\n\r\n\tloadAllFavoritesService = toSignal(\r\n\t\tthis.subjects.loadAllFavorites.pipe(\r\n\t\t\tswitchMap(() =>\r\n\t\t\t\tthis.favoritePagesService.filterFavoritePages({\r\n\t\t\t\t\tpageSize: 1000,\r\n\t\t\t\t\tpageNumber: 1\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t)\r\n\t);\r\n\r\n\tdeleteFavoriteService = toSignal(\r\n\t\tthis.subjects.deleteFavorite.pipe(switchMap((id) => this.favoritePagesService.deleteFavoritePage(id)))\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate favoritePagesService: FavoritePagesService,\r\n\t\tprivate confirmationService: ConfirmationService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.initializeEffects();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadFavoritePages();\r\n\t\tthis.checkCurrentPageStatus();\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.loadAllFavoritesService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.favoritePagesService.allFavoritePages.set(service.response.result);\r\n\t\t\t\t\tthis.totalItems.set(service.response.result.length);\r\n\t\t\t\t\tthis.updateClientSidePagination();\r\n\t\t\t\t\tthis.checkCurrentPageStatus();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.deleteFavoriteService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.loadFavoritePages();\r\n\t\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\tsummary: this.translocoService.translate('favoritePages.success'),\r\n\t\t\t\t\t\tdetail: this.translocoService.translate('favoritePages.deletedSuccessfully'),\r\n\t\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.favoritePagesSidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.favoritePagesSidebarVisible = value;\r\n\t\tif (value) {\r\n\t\t\tthis.checkCurrentPageStatus();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate loadFavoritePages(): void {\r\n\t\tthis.subjects.loadAllFavorites.next();\r\n\t}\r\n\r\n\tprivate updateClientSidePagination(): void {\r\n\t\tconst allFavorites = this.allFavoritePages();\r\n\t\tconst totalItems = allFavorites.length;\r\n\t\tconst pageSize = this.pageSize();\r\n\t\tconst currentPage = this.currentPage();\r\n\r\n\t\tconst totalPages = Math.ceil(totalItems / pageSize);\r\n\t\tthis.totalPages.set(totalPages);\r\n\r\n\t\tconst startIndex = (currentPage - 1) * pageSize;\r\n\t\tconst endIndex = Math.min(startIndex + pageSize, totalItems);\r\n\r\n\t\tconst currentPageData = allFavorites.slice(startIndex, endIndex);\r\n\t\tthis.favoritePages.set(currentPageData);\r\n\t}\r\n\r\n\tprivate checkCurrentPageStatus(): void {\r\n\t\tconst currentPath = this.favoritePagesService.getCurrentRoutePath();\r\n\t\tconst allFavorites = this.allFavoritePages();\r\n\t\tconst isFound = allFavorites.some((fav) => fav.url === currentPath);\r\n\r\n\t\tthis.isCurrentPageFavorited.set(isFound);\r\n\t}\r\n\r\n\taddCurrentPageToFavorites(): void {\r\n\t\tconst currentPath = this.favoritePagesService.getCurrentRoutePath();\r\n\r\n\t\tconst ref = this.dialogService.open(AddEditFavoriteModalComponent, {\r\n\t\t\theader: this.translocoService.translate('favoritePages.addToFavorites'),\r\n\t\t\twidth: '500px',\r\n\t\t\tmodal: true,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tmode: 'add',\r\n\t\t\t\turl: currentPath\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe((result) => {\r\n\t\t\tif (result?.status === 'success') {\r\n\t\t\t\tthis.loadFavoritePages();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tremoveCurrentPageFromFavorites(): void {\r\n\t\tconst currentPath = this.favoritePagesService.getCurrentRoutePath();\r\n\t\tconst favorites = this.favoritePages();\r\n\t\tconst currentFavorite = favorites.find((fav) => fav.url === currentPath);\r\n\r\n\t\tif (currentFavorite) {\r\n\t\t\tthis.confirmationService.confirm({\r\n\t\t\t\tmessage: `'${currentFavorite.label}' ` + this.translocoService.translate('favoritePages.confirmDelete'),\r\n\t\t\t\theader: this.translocoService.translate('favoritePages.deleteConfirmTitle'),\r\n\t\t\t\ticon: 'pi pi-info-circle',\r\n\t\t\t\tacceptLabel: this.translocoService.translate('acceptButtonLabel'),\r\n\t\t\t\trejectLabel: this.translocoService.translate('rejectButtonLabel'),\r\n\t\t\t\tacceptButtonStyleClass: 'p-button-success',\r\n\t\t\t\trejectButtonStyleClass: 'p-button-danger',\r\n\t\t\t\taccept: () => {\r\n\t\t\t\t\tthis.subjects.deleteFavorite.next(currentFavorite.id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\teditFavorite(favorite: FavoritePageResponseDTO, event: Event): void {\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tconst ref = this.dialogService.open(AddEditFavoriteModalComponent, {\r\n\t\t\theader: this.translocoService.translate('favoritePages.editFavorite'),\r\n\t\t\twidth: '500px',\r\n\t\t\tmodal: true,\r\n\t\t\tclosable: true,\r\n\t\t\tdata: {\r\n\t\t\t\tmode: 'edit',\r\n\t\t\t\tfavorite: favorite\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tref.onClose.subscribe((result) => {\r\n\t\t\tif (result?.status === 'success') {\r\n\t\t\t\tthis.loadFavoritePages();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteFavorite(favorite: FavoritePageResponseDTO, event: Event): void {\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tthis.confirmationService.confirm({\r\n\t\t\ttarget: event.target as EventTarget,\r\n\t\t\tmessage: `'${favorite.label}' ` + this.translocoService.translate('favoritePages.confirmDelete'),\r\n\t\t\theader: this.translocoService.translate('favoritePages.deleteConfirmTitle'),\r\n\t\t\ticon: 'pi pi-info-circle',\r\n\t\t\tacceptLabel: this.translocoService.translate('acceptButtonLabel'),\r\n\t\t\trejectLabel: this.translocoService.translate('rejectButtonLabel'),\r\n\t\t\tacceptButtonStyleClass: 'p-button-success',\r\n\t\t\trejectButtonStyleClass: 'p-button-danger',\r\n\t\t\taccept: () => {\r\n\t\t\t\tthis.subjects.deleteFavorite.next(favorite.id);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tnavigateToFavorite(favorite: FavoritePageResponseDTO): void {\r\n\t\tthis.favoritePagesService.navigateToFavoritePage(favorite);\r\n\t\tthis.visible = false;\r\n\t}\r\n\r\n\ttrackByFavoriteId(index: number, favorite: FavoritePageResponseDTO): number {\r\n\t\treturn favorite.id;\r\n\t}\r\n\r\n\tonPageChange(event: any): void {\r\n\t\tthis.currentPage.set(event.page + 1);\r\n\t\tthis.pageSize.set(event.rows);\r\n\t\tthis.updateClientSidePagination(); // Update pagination client-side, no API call\r\n\t}\r\n\r\n\tgetFullUrl(url: string): string {\r\n\t\treturn this.favoritePagesService.getFullUrl(url);\r\n\t}\r\n\r\n\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"favorite-item\"\r\n\t\t\t\t\t\t\t\t[class.default-item]=\"favorite.id < 0\"\r\n\t\t\t\t\t\t\t\t(click)=\"navigateToFavorite(favorite)\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"getFullUrl(favorite.url)\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faPenToSquare\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--yellow-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"editFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n","export enum LanguageCode {\r\n\tTR = 'tr',\r\n\tEN = 'en'\r\n}\r\n\r\nexport enum ActivityTypesEnum {\r\n\tSMS = 'SMS',\r\n\tEMAIL = 'MAIL'\r\n}\r\n\r\nexport enum DetailNotificationTypeEnum {\r\n\tTODO_ITEM = 'TODO_ITEM',\r\n\tBATCH_JOB = 'BATCH_JOB'\r\n}","import { PrimeIcons } from 'primeng/api';\r\n\r\nexport interface SuggestionsGroupDTO {\r\n\tkey: number | string | null;\r\n\ttext: string;\r\n\tattributes?: AttributeElement[];\r\n\tassetDefinitionCode?: string;\r\n\titems: SuggestionsDTO[];\r\n}\r\nexport interface SuggestionsDTO {\r\n\tkey: number | string | null;\r\n\ttext: string;\r\n\tattributes?: AttributeElement[];\r\n}\r\n\r\nexport interface DefaultSearchAggregateAssetAggregate {\r\n\t[key: string]: AdditionalProp;\r\n}\r\n\r\nexport interface AdditionalProp {\r\n\tresultInfo: ResultInfo;\r\n\tresult: AssetAggregate[];\r\n}\r\n\r\nexport interface ResultInfo {\r\n\ttotalPage: number;\r\n\ttotalItem: number;\r\n}\r\n\r\nexport interface AssetAggregate {\r\n\tid: number;\r\n\tassetDefinitionId: number;\r\n\tassetDefinitionCode: string;\r\n\tassetDefinitionName: string;\r\n\tuniqueIdentifier: string;\r\n\tauthorityGroup: string;\r\n\tcreateDate: number;\r\n\tupdateDate: number;\r\n\tupdateUser: string;\r\n\tcreateUser: string;\r\n\tassets: Asset[];\r\n\tattributes: AttributeElement[];\r\n\tkey?: number;\r\n\ttext?: string;\r\n}\r\n\r\nexport interface Asset {\r\n\talias: string;\r\n\tassetDefinitionID: number;\r\n\tassetDefinitionCode: string;\r\n\tassetDefinitionName: string;\r\n\tassetId: number;\r\n}\r\n\r\nexport interface AttributeElement {\r\n\tid: number;\r\n\tattribute: AttributeAttribute;\r\n\tvalue: Value;\r\n\tstartDate: number;\r\n\tvalueDesc: string;\r\n}\r\n\r\nexport interface AttributeAttribute {\r\n\talias: string;\r\n\tattributeCode: string;\r\n\tattributeName: string;\r\n\tattributeId: number;\r\n\tattributeType: string;\r\n\treferringAsset?: {\r\n\t\tdetailPageUrl?: string;\r\n\t};\r\n}\r\n\r\nexport interface Value {}\r\n\r\nexport interface PagerDTO {\r\n\tpageSize: number;\r\n\tpageNumber: number;\r\n}\r\nexport interface CacheSearchRequestDTO {\r\n\tassetDefinitionCodes: string[];\r\n\tsearchText?: string;\r\n\tmql?: string;\r\n\tpager: PagerDTO;\r\n}\r\n\r\nexport enum AssetCodes {\r\n\tMasterData = 'MasterData',\r\n\tLightingFacility = 'LightingFacility',\r\n\tConnectionPoint = 'ConnectionPoint',\r\n\tPremise = 'Premise',\r\n\tServicePoint = 'ServicePoint',\r\n\tServicePointGroup = 'ServicePointGroup',\r\n\tDistributionConnectionAgreement = 'DistributionConnectionAgreement',\r\n\tContract = 'Contract',\r\n\tBusinessPartner = 'BusinessPartner',\r\n\tAccount = 'Account',\r\n\tWarehouse = 'Warehouse',\r\n\tTeam = 'Team',\r\n\tDevice = 'Device',\r\n\tLocation = 'Location',\r\n\tMaterial = 'Material',\r\n\tSerializedMaterial = 'SerializedMaterial',\r\n\tLegalEntityBusinessPartner = 'LegalEntityBusinessPartner',\r\n\tOrganization = 'Organization',\r\n\tFieldStaff = 'FieldStaff',\r\n\tSSB = 'SSB',\r\n\tProducerServicePoint = 'ProducerServicePoint',\r\n\tUnlicensedProducerServicePoint = 'UnlicensedProducerServicePoint',\r\n\tLicensedProducerServicePoint = 'LicensedProducerServicePoint',\r\n\tGeneralLightingServicePoint = 'GeneralLightingServicePoint',\r\n\tConsumerServicePoint = 'ConsumerServicePoint',\r\n\tGeneralLightingContract = 'GeneralLightingContract',\r\n\tUnmeteredContract = 'UnmeteredContract',\r\n\tProducerContract = 'ProducerContract',\r\n\tUnlicensedProducerContract = 'UnlicensedProducerContract',\r\n\tLicensedProducerContract = 'LicensedProducerContract',\r\n\tConsumerContract = 'ConsumerContract',\r\n\tHumanBusinessPartner = 'HumanBusinessPartner',\r\n\tMeter = 'Meter',\r\n\tSeal = 'Seal',\r\n\tSimCard = 'SimCard',\r\n\tTransformer = 'Transformer',\r\n\tMeasurementTransformer = 'MeasurementTransformer',\r\n\tPowerTransformer = 'PowerTransformer',\r\n\tGateway = 'Gateway',\r\n\tNonSerializedMaterial = 'NonSerializedMaterial',\r\n\tMaterialClass = 'MaterialClass',\r\n\tGatewayMaterialClass = 'GatewayMaterialClass',\r\n\tMeterMaterialClass = 'MeterMaterialClass',\r\n\tTransformerMaterialClass = 'TransformerMaterialClass',\r\n\tPowerTransformerMaterialClass = 'PowerTransformerMaterialClass',\r\n\tMeasurementTransformerMaterialClass = 'MeasurementTransformerMaterialClass'\r\n}\r\n\r\nexport type PresentableData = {\r\n\ttitle: string;\r\n\ticon: PrimeIcons;\r\n\tsubtitle: string;\r\n\tassetId: string;\r\n\turl: string;\r\n};\r\n","import { AssetAggregate, AssetCodes, PresentableData } from './models';\r\n\r\nimport { DefaultSearchAggregateAssetAggregate } from './models';\r\n\r\nimport { PrimeIcons } from 'primeng/api';\r\n\r\ntype MappedIcon = PrimeIcons;\r\n\r\nexport function getIcon(key: string): MappedIcon {\r\n\tswitch (key) {\r\n\t\tcase AssetCodes.Account:\r\n\t\t\treturn PrimeIcons.USER;\r\n\t\tcase AssetCodes.HumanBusinessPartner:\r\n\t\t\treturn PrimeIcons.USER;\r\n\t\tcase AssetCodes.Contract:\r\n\t\t\treturn PrimeIcons.FILE_EDIT;\r\n\t\tcase AssetCodes.ConnectionPoint:\r\n\t\t\treturn PrimeIcons.BUILDING;\r\n\t\tcase AssetCodes.Warehouse:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.Team:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.Premise:\r\n\t\t\treturn PrimeIcons.BUILDING;\r\n\t\tcase AssetCodes.PowerTransformer:\r\n\t\t\treturn PrimeIcons.BOLT;\r\n\t\tcase AssetCodes.Gateway:\r\n\t\t\treturn PrimeIcons.SERVER;\r\n\t\tcase AssetCodes.Seal:\r\n\t\t\treturn PrimeIcons.TICKET;\r\n\t\tcase AssetCodes.Meter:\r\n\t\t\treturn PrimeIcons.COMPASS;\r\n\t\tcase AssetCodes.SimCard:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MeasurementTransformer:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.GatewayMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MeterMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.PowerTransformerMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.MeasurementTransformerMaterialClass:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.BusinessPartner:\r\n\t\t\treturn PrimeIcons.USER;\r\n\t\tcase AssetCodes.LegalEntityBusinessPartner:\r\n\t\t\treturn PrimeIcons.BUILDING;\r\n\t\tcase AssetCodes.Organization:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.FieldStaff:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.SSB:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t\tcase AssetCodes.ServicePoint:\r\n\t\t\treturn PrimeIcons.COG;\r\n\t\tcase AssetCodes.ServicePointGroup:\r\n\t\t\treturn PrimeIcons.SITEMAP;\r\n\t\tcase AssetCodes.Device:\r\n\t\t\treturn PrimeIcons.PHONE;\r\n\t\tdefault:\r\n\t\t\treturn PrimeIcons.LIST;\r\n\t}\r\n}\r\n\r\nexport const getPresentableData = (items: DefaultSearchAggregateAssetAggregate, key: string): PresentableData[] => {\r\n\tconst transformToPresentableDataFor = (k: string) => (item: AssetAggregate) => {\r\n\t\tconst attributes = item?.attributes ?? [];\r\n\r\n\t\tconst assetNumberAttr = attributes.find((a) => a?.attribute?.attributeCode === 'AssetNumber');\r\n\t\tconst assetNameAttr = attributes.find((a) => a?.attribute?.attributeCode === 'AssetDefinitionName');\r\n\r\n\t\tconst number = assetNumberAttr?.valueDesc ?? 'N/A';\r\n\r\n\t\tconst subtitle = attributes\r\n\t\t\t.filter((a) => a?.attribute?.attributeCode !== 'AssetNumber')\r\n\t\t\t.map((a) => a?.valueDesc)\r\n\t\t\t.filter((v) => v != null && v !== '')\r\n\t\t\t.map(String)\r\n\t\t\t.join(' - ');\r\n\r\n\t\tconst assetIdAttr = attributes.find((a) => a?.attribute?.attributeCode === 'AssetId');\r\n\t\tconst id = assetIdAttr?.valueDesc ?? '';\r\n\t\tconst icon = getIcon(k);\r\n\t\tconst url =\r\n\t\t\tassetNumberAttr?.attribute?.referringAsset?.detailPageUrl ?\r\n\t\t\t\t`${assetNumberAttr.attribute.referringAsset.detailPageUrl}/${id}`\r\n\t\t\t:\t'';\r\n\r\n\t\treturn {\r\n\t\t\ttitle: `${assetNameAttr?.valueDesc ?? 'N/A'} #${number}`,\r\n\t\t\tsubtitle,\r\n\t\t\ticon,\r\n\t\t\turl: url,\r\n\t\t\tassetId: id\r\n\t\t};\r\n\t};\r\n\r\n\tif (key === 'all') {\r\n\t\treturn Object.keys(items).flatMap((k) => (items[k]?.result ?? []).map(transformToPresentableDataFor(k)));\r\n\t}\r\n\r\n\treturn (items[key]?.result ?? []).map(transformToPresentableDataFor(key));\r\n};\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nimport { CacheSearchRequestDTO, DefaultSearchAggregateAssetAggregate } from '../app/general-search/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SearchService extends RestClient {\r\n\toverride states: ServiceCallStateMap<SearchService> = {};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'master-data/cache-search', {}, Apps.MNG)\r\n\tsearchForAssets(post: CacheSearchRequestDTO) {\r\n\t\treturn new Observable<ServiceResponse<DefaultSearchAggregateAssetAggregate>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, effect, signal } from '@angular/core';\r\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { AutoCompleteModule, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\n\r\nimport { TranslocoModule } from '@ngneat/transloco';\r\nimport { of, startWith } from 'rxjs';\r\nimport { catchError, distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\nimport { SearchService } from '../../service/search.service';\r\nimport { getPresentableData } from './helpers';\r\nimport { CacheSearchRequestDTO, DefaultSearchAggregateAssetAggregate, PresentableData } from './models';\r\n\r\n@Component({\r\n\tselector: 'app-general-search',\r\n\tstandalone: true,\r\n\timports: [CommonModule, FormsModule, TranslocoModule, AutoCompleteModule],\r\n\ttemplateUrl: './general-search.component.html',\r\n\tstyleUrls: ['./general-search.component.scss']\r\n})\r\nexport class GeneralSearchComponent {\r\n\tquery = '';\r\n\tactiveTab = 'all';\r\n\tdata: DefaultSearchAggregateAssetAggregate = {};\r\n\tpresentableData: PresentableData[] = [];\r\n\tquerySig = signal<string>('');\r\n\tresultsSig = toSignal<DefaultSearchAggregateAssetAggregate | null>(\r\n\t\ttoObservable(this.querySig).pipe(\r\n\t\t\tmap((q) => q.trim()),\r\n\t\t\tfilter((q) => q.length > 2),\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\tswitchMap((q) => {\r\n\t\t\t\tconst payload: CacheSearchRequestDTO = {\r\n\t\t\t\t\tsearchText: q,\r\n\t\t\t\t\tassetDefinitionCodes: [],\r\n\t\t\t\t\tpager: { pageSize: 5, pageNumber: 1 }\r\n\t\t\t\t};\r\n\t\t\t\treturn this.searchService.searchForAssets(payload).pipe(\r\n\t\t\t\t\tmap((res) => res.response),\r\n\t\t\t\t\tcatchError(() => {\r\n\t\t\t\t\t\treturn of({} as DefaultSearchAggregateAssetAggregate);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstartWith(null)\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t),\r\n\t\t{ initialValue: null }\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly searchService: SearchService\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tconst results = this.resultsSig();\r\n\t\t\tif (results) {\r\n\t\t\t\tthis.data = results;\r\n\t\t\t\tthis.presentableData = getPresentableData(results, this.activeTab);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsearch(query: string) {\r\n\t\tthis.query = (query ?? '').trim();\r\n\t\tthis.querySig.set(this.query);\r\n\t}\r\n\r\n\tsetTab(tab: string) {\r\n\t\tthis.activeTab = tab;\r\n\t\tthis.presentableData = getPresentableData(this.data, tab);\r\n\t}\r\n\r\n\tgoToDetail(item: PresentableData) {\r\n\t\tconst isHostYeap = (<any>globalThis).activeHost === Apps.YEAP;\r\n\r\n\t\tif (isHostYeap) {\r\n\t\t\tthis.router.navigate(['mng/master-data/view-md-data'], {\r\n\t\t\t\tqueryParams: { assetId: item.assetId }\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.router.navigate([item.url]);\r\n\t\t}\r\n\t}\r\n\r\n\tonResultClick(item: AutoCompleteSelectEvent) {\r\n\t\tthis.goToDetail(item.value);\r\n\t}\r\n}\r\n","<ng-container *transloco=\"let g\">\r\n\t<ng-container *transloco=\"let t; read: 'generalSearch'\">\r\n\t\t<div class=\"global-search\">\r\n\t\t\t<p-autoComplete\r\n\t\t\t\t[(ngModel)]=\"query\"\r\n\t\t\t\toptionLabel=\"title\"\r\n\t\t\t\tminLength=\"3\"\r\n\t\t\t\t[delay]=\"500\"\r\n\t\t\t\t(completeMethod)=\"search($event.query)\"\r\n\t\t\t\t[suggestions]=\"presentableData\"\r\n\t\t\t\t[placeholder]=\"t('placeholder')\"\r\n\t\t\t\t(onSelect)=\"onResultClick($event)\">\r\n\t\t\t\t<ng-template pTemplate=\"empty\">\r\n\t\t\t\t\t<div class=\"px-3\">\r\n\t\t\t\t\t\t{{ t('noResults') }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<div class=\"tabs flex gap-2 overflow-x-auto white-space-nowrap p-2 border-bottom-1 border-gray-200\">\r\n\t\t\t\t\t\t<span (click)=\"setTab('all')\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === 'all'\">\r\n\t\t\t\t\t\t\t{{ t('all') }}\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t@for (tab of data | keyvalue; track tab) {\r\n\t\t\t\t\t\t\t<span (click)=\"setTab(tab.key)\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === tab.key\">\r\n\t\t\t\t\t\t\t\t{{ data[tab.key].result[0].assetDefinitionName }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template let-result pTemplate=\"item\">\r\n\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t<div class=\"result-icon\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ result.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"result-text\">\r\n\t\t\t\t\t\t\t<div class=\"title mb-2\">{{ result.title }}</div>\r\n\t\t\t\t\t\t\t@if (result.subtitle) {\r\n\t\t\t\t\t\t\t\t<div class=\"subtitle\">{{ result.subtitle }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t@if (result.url) {\r\n\t\t\t\t\t\t\t<div class=\"open-btn ml-auto align-self-center\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t\t\t<div class=\"px-3 py-3 border-top-1 border-gray-200\">\r\n\t\t\t\t\t\t<span>{{ presentableData.length }} {{ t('results') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-autoComplete>\r\n\t\t</div>\r\n\t</ng-container>\r\n</ng-container>\r\n","import { UpperCasePipe } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { MenubarModule } from 'primeng/menubar';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { LanguageCode } from '../../service/interfaces/enum';\r\nimport { Language, LanguageChangeEvent } from '../../service/interfaces/interfaces';\r\nimport { GeneralSearchComponent } from '../general-search/general-search.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-topbar',\r\n\timports: [\r\n\t\tButtonModule,\r\n\t\tUpperCasePipe,\r\n\t\tFormsModule,\r\n\t\tDividerModule,\r\n\t\tBadgeModule,\r\n\t\tMenubarModule,\r\n\t\tDropdownModule,\r\n\t\tTranslocoModule,\r\n\t\tGeneralSearchComponent\r\n\t],\r\n\ttemplateUrl: './app.topbar.component.html',\r\n\tstyleUrls: ['./app.topbar.component.scss']\r\n})\r\nexport class AppTopbarComponent {\r\n\t@ViewChild('menubutton') menuButton!: ElementRef;\r\n\r\n\tusername!: string;\r\n\tlayoutService = inject(LayoutService);\r\n\tsearch: string = '';\r\n\r\n\tlogoPath: string = '';\r\n\tcurrentFlagPath: string = '';\r\n\tcurrentLang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) || LanguageCode.TR;\r\n\r\n\tlanguages: Language[] = [\r\n\t\t{ name: 'TR', code: LanguageCode.TR, flag: 'assets/images/flags/tr.svg' },\r\n\t\t{ name: 'EN', code: LanguageCode.EN, flag: 'assets/images/flags/gb.svg' }\r\n\t];\r\n\r\n\tconstructor(\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly pubSubService: PubSubService,\r\n\t\tprivate readonly keycloak: KeycloakService\r\n\t) {\r\n\t\tthis.translocoService.setActiveLang(this.currentLang);\r\n\t\tthis.publishLanguageChange(this.currentLang);\r\n\t\tthis.setFlagPath(this.currentLang);\r\n\t\tthis.setLogoPath();\r\n\r\n\t\tthis.username = this.keycloak.getUsername();\r\n\t}\r\n\r\n\tget unreadCount(): number {\r\n\t\treturn this.layoutService.getUnreadNotificationCount();\r\n\t}\r\n\r\n\tonMenuButtonClick(): void {\r\n\t\tthis.layoutService.onMenuToggle();\r\n\t}\r\n\r\n\tonProfileButtonClick(): void {\r\n\t\tthis.layoutService.showProfileSidebar();\r\n\t}\r\n\r\n\tonHistoryButtonClick(): void {\r\n\t\tthis.layoutService.showHistorySidebar();\r\n\t}\r\n\r\n\tonSiteMapButtonClick(): void {\r\n\t\tthis.layoutService.showSiteMapSidebar();\r\n\t}\r\n\r\n\tonFavoritePagesButtonClick(): void {\r\n\t\tthis.layoutService.showFavoritePagesSidebar();\r\n\t}\r\n\r\n\tonNotificationsButtonClick(): void {\r\n\t\tthis.layoutService.showNotificationsSidebar();\r\n\t}\r\n\r\n\tonLanguageChange(): void {\r\n\t\tlocalStorage.setItem('lang', this.currentLang);\r\n\r\n\t\tthis.translocoService.setActiveLang(this.currentLang);\r\n\r\n\t\twindow.location.reload();\r\n\r\n\t\tthis.publishLanguageChange(this.currentLang);\r\n\t}\r\n\r\n\tprivate publishLanguageChange(language: LanguageCode): void {\r\n\t\tconst event: LanguageChangeEvent = {\r\n\t\t\tname: 'languageChanged',\r\n\t\t\tdata: {\r\n\t\t\t\tpath: '',\r\n\t\t\t\tcustom: {\r\n\t\t\t\t\tlanguage\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.pubSubService.publish(event);\r\n\t}\r\n\r\n\tsetFlagPath(lang: LanguageCode) {\r\n\t\tswitch (lang) {\r\n\t\t\tcase LanguageCode.TR:\r\n\t\t\t\tthis.currentFlagPath = 'assets/images/flags/tr.svg';\r\n\t\t\t\tbreak;\r\n\t\t\tcase LanguageCode.EN:\r\n\t\t\t\tthis.currentFlagPath = 'assets/images/flags/gb.svg';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.currentFlagPath = 'assets/images/flags/tr.svg';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetLogoPath() {\r\n\t\tif ((<any>globalThis).activeHost) {\r\n\t\t\tswitch ((<any>globalThis).activeHost) {\r\n\t\t\t\tcase Apps.YEAP:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo-dark.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.THOR:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/thor-logo-dark.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.LENA:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/lena-logo-dark.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo-dark.png';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tswitch ((<any>globalThis).activeMF) {\r\n\t\t\t\tcase Apps.HES:\r\n\t\t\t\tcase Apps.CTS:\r\n\t\t\t\tcase Apps.SIS:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/lena-logo.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.CRM:\r\n\t\t\t\tcase Apps.BILLING:\r\n\t\t\t\tcase Apps.PAYMENT:\r\n\t\t\t\tcase Apps.WDM:\r\n\t\t\t\tcase Apps.MNG:\r\n\t\t\t\tcase Apps.DMS:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/thor-logo.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase Apps.MW:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo.png';\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.logoPath = 'assets/images/yeap-logo.png';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n<!-- <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb> -->\r\n","import { Injectable, computed, signal } from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { PluginMenuItem } from 'aril/boot/config/apps';\r\n\r\nimport { MenuChangeEvent } from './menuchangeevent';\r\n\r\ninterface MenuConfig {\r\n\titems: PluginMenuItem[];\r\n\tprefix?: string;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AppMenuService {\r\n\tprivate menuSource = new Subject<MenuChangeEvent>();\r\n\tprivate resetSource = new Subject();\r\n\r\n\tpublic menuConfig = signal<MenuConfig>({ items: [], prefix: undefined });\r\n\tpublic activeRootMenuItemKey = signal<string | undefined>(undefined);\r\n\r\n\tpublic menuItems = computed(() => {\r\n\t\tconst config = this.menuConfig();\r\n\t\t// config.items.unshift({ root: true, label: 'Home', icon: 'pi pi-fw pi-home', routerLink: '' });\r\n\r\n\t\tif (config.prefix) return config.items.map((item) => this.addPrefix(item, config.prefix));\r\n\t\telse return config.items;\r\n\t});\r\n\r\n\tmenuSource$ = this.menuSource.asObservable();\r\n\tresetSource$ = this.resetSource.asObservable();\r\n\r\n\taddPrefix(menuItem: PluginMenuItem, appPrefix: string | undefined) {\r\n\t\tif (menuItem.items) {\r\n\t\t\tmenuItem.items = menuItem.items.map((item) => this.addPrefix(item, appPrefix));\r\n\t\t} else {\r\n\t\t\tconst url = menuItem['root'] ? `/${appPrefix}` : `/${appPrefix}/${menuItem.routerLink}`;\r\n\r\n\t\t\tmenuItem.routerLink = url;\r\n\t\t}\r\n\t\treturn menuItem;\r\n\t}\r\n\r\n\tonMenuStateChange(event: MenuChangeEvent) {\r\n\t\tthis.menuSource.next(event);\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.resetSource.next(true);\r\n\t}\r\n}\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, HostListener, OnDestroy, OnInit, Signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router, RouterLink } from '@angular/router';\r\n\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { Subscription, filter } from 'rxjs';\r\n\r\nimport { PluginMenuItem } from 'aril/boot/config/apps';\r\nimport { TranslateJsonPipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { AppMenuService } from '../../service/app.menu.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-expandable-menu',\r\n\timports: [RouterLink, NgClass, TooltipModule],\r\n\ttemplateUrl: 'expandable-menu.component.html',\r\n\tproviders: [TranslateJsonPipe]\r\n})\r\nexport class ExpandableMenuComponent implements OnInit, OnDestroy {\r\n\tactiveLang: Signal<string>;\r\n\toverlayMenuOpenSubscription: Subscription | null = null;\r\n\trouterSubscription: Subscription | null = null;\r\n\tusername: string;\r\n\r\n\tisHostMode = (<any>globalThis).isHostMode;\r\n\thostMenuItems = (<any>globalThis).hostMenuItems;\r\n\tcachedMenuItems: PluginMenuItem[] = [];\r\n\r\n\tselectedMainMenuItem: PluginMenuItem | null = null;\r\n\r\n\tget sidebarExpanded(): boolean {\r\n\t\treturn this.layoutService.state.secondarySidebarExpanded;\r\n\t}\r\n\r\n\tset sidebarExpanded(value: boolean) {\r\n\t\tthis.layoutService.setSecondarySidebarExpanded(value);\r\n\t}\r\n\r\n\ttooltipText = {\r\n\t\ttoggleButton: {\r\n\t\t\texpanded: {\r\n\t\t\t\ttr: 'Menüyü Gizle',\r\n\t\t\t\ten: 'Hide Menu'\r\n\t\t\t},\r\n\t\t\tcollapsed: {\r\n\t\t\t\ttr: 'Menüyü Göster',\r\n\t\t\t\ten: 'Show Menu'\r\n\t\t\t}\r\n\t\t},\r\n\t\tlockButton: {\r\n\t\t\tlocked: {\r\n\t\t\t\ttr: 'Otomatik Kapanmayı Aç',\r\n\t\t\t\ten: 'Enable Auto-Close'\r\n\t\t\t},\r\n\t\t\tunlocked: {\r\n\t\t\t\ttr: 'Menüyü Kilitle',\r\n\t\t\t\ten: 'Lock Menu'\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate readonly MAX_LENGTH = {\r\n\t\tmain: 8,\r\n\t\tsecondary: 20,\r\n\t\ttertiary: 20\r\n\t};\r\n\r\n\tconstructor(\r\n\t\tprivate translateJsonPipe: TranslateJsonPipe,\r\n\t\tprivate menuService: AppMenuService,\r\n\t\tprivate router: Router,\r\n\t\tprivate keycloak: KeycloakService,\r\n\t\tprivate translocoService: TranslocoService,\r\n\t\tprivate layoutService: LayoutService\r\n\t) {\r\n\t\tthis.activeLang = toSignal(this.translocoService.langChanges$, { initialValue: 'tr' });\r\n\t\tthis.username = this.keycloak.getUsername().charAt(0).toUpperCase();\r\n\t}\r\n\r\n\t// Getter for layout service states\r\n\tget selectedMainItem(): number | null {\r\n\t\treturn this.layoutService.state.selectedMainItem;\r\n\t}\r\n\r\n\tget secondarySidebarExpanded(): boolean {\r\n\t\treturn this.layoutService.state.secondarySidebarExpanded;\r\n\t}\r\n\r\n\t// Check if text is truncated and needs tooltip\r\n\tisTextTruncated(\r\n\t\tlabel: any,\r\n\t\tlang: string | null,\r\n\t\tmenuType: 'main' | 'secondary' | 'tertiary' | 'nested' = 'secondary'\r\n\t): boolean {\r\n\t\tif (!label || !lang || !label[lang]) return false;\r\n\r\n\t\tconst text = label[lang];\r\n\t\tconst textLength = text.length;\r\n\t\tconst maxLength = menuType === 'nested' ? this.MAX_LENGTH.tertiary : this.MAX_LENGTH[menuType];\r\n\t\treturn textLength > maxLength;\r\n\t}\r\n\r\n\t// Recursively check if a menu item or its children match the current route\r\n\tisActiveRoute(menuItem: PluginMenuItem): boolean {\r\n\t\tif (!menuItem || !menuItem.routerLink) return false;\r\n\r\n\t\t// Get current URL path after the hash\r\n\t\tconst currentUrl = this.router.url;\r\n\t\tconst hashUrl = currentUrl.indexOf('#') > -1 ? currentUrl.split('#')[1] : currentUrl;\r\n\r\n\t\t// Check for exact match first\r\n\t\tif (hashUrl === menuItem.routerLink || hashUrl === '/' + menuItem.routerLink) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Check if current URL starts with the routerLink (handles child routes)\r\n\t\tif (\r\n\t\t\tmenuItem.routerLink !== '/' &&\r\n\t\t\t(hashUrl.startsWith(menuItem.routerLink + '/') || hashUrl.startsWith('/' + menuItem.routerLink + '/'))\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Check child items if they exist\r\n\t\tif (menuItem.items && menuItem.items.length > 0) {\r\n\t\t\treturn menuItem.items.some((childItem) => this.isActiveRoute(childItem));\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.updateMenuItems();\r\n\t\tthis.initializeMenu();\r\n\t\tthis.updateActiveMenuFromCurrentRoute();\r\n\r\n\t\t// Subscribe to route changes to handle secondary sidebar closing\r\n\t\tthis.routerSubscription = this.router.events\r\n\t\t\t.pipe(filter((event) => event instanceof NavigationEnd))\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\t// Update active menu based on the new route\r\n\t\t\t\tthis.updateActiveMenuFromCurrentRoute();\r\n\t\t\t});\r\n\r\n\t\t// Subscribe to overlay menu open notifications\r\n\t\tthis.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n\t\t\tif (this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.overlayMenuOpenSubscription) {\r\n\t\t\tthis.overlayMenuOpenSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\tif (this.routerSubscription) {\r\n\t\t\tthis.routerSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\t// Initialize the menu with proper active state\r\n\tinitializeMenu() {\r\n\t\tthis.layoutService.setSelectedMainItem(null);\r\n\t\tthis.selectedMainMenuItem = null;\r\n\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\tthis.updateMenuItems();\r\n\t}\r\n\r\n\tupdateMenuFromRootKey(index: number): void {\r\n\t\tthis.updateMenuItems();\r\n\t\tconst menuItems = this.getMenuItems();\r\n\r\n\t\tif (index >= 0 && index < menuItems.length) {\r\n\t\t\tconst item = menuItems[index];\r\n\t\t\tif (!item.separator) {\r\n\t\t\t\tthis.layoutService.setSelectedMainItem(index);\r\n\t\t\t\tthis.selectedMainMenuItem = item;\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateMenuItems(): void {\r\n\t\tthis.cachedMenuItems = this.isHostMode ? this.hostMenuItems() : this.menuService.menuItems();\r\n\t}\r\n\r\n\tgetMenuItems(): PluginMenuItem[] {\r\n\t\treturn this.cachedMenuItems;\r\n\t}\r\n\r\n\tselectMainItem(index: number, item: PluginMenuItem): void {\r\n\t\tif (item.routerLink && (!item.items || item.items.length === 0)) {\r\n\t\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\t\tthis.layoutService.setSelectedMainItem(index);\r\n\t\t\tthis.selectedMainMenuItem = item;\r\n\t\t\tthis.router.navigate([item.routerLink]);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Handle regular menu items with submenu\r\n\t\tif (this.selectedMainItem === index) {\r\n\t\t\tthis.layoutService.toggleSecondarySidebar();\r\n\t\t} else {\r\n\t\t\tthis.layoutService.setSelectedMainItem(index);\r\n\t\t\tthis.selectedMainMenuItem = item;\r\n\r\n\t\t\tif (item.items && item.items.length > 0) {\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// For mobile devices, ensure the menu stays open\r\n\t\tif (this.isMobile()) {\r\n\t\t\tthis.layoutService.state.staticMenuMobileActive = true;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleSecondarySidebar(): void {\r\n\t\tthis.layoutService.toggleSecondarySidebar();\r\n\t}\r\n\r\n\tisMobile(): boolean {\r\n\t\treturn this.layoutService.isMobile();\r\n\t}\r\n\r\n\t// Listen for resize events - now handled more efficiently by layout service\r\n\t@HostListener('window:resize')\r\n\tonResize() {\r\n\t\tif (!this.isMobile() && this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\tthis.layoutService.closeMobileMenu();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateActiveMenuFromCurrentRoute(): void {\r\n\t\tconst menuItems = this.getMenuItems();\r\n\r\n\t\tfor (let i = 0; i < menuItems.length; i++) {\r\n\t\t\tconst menuItem = menuItems[i];\r\n\t\t\tif (this.isActiveRoute(menuItem)) {\r\n\t\t\t\tthis.layoutService.setSelectedMainItem(i);\r\n\t\t\t\tthis.selectedMainMenuItem = menuItem;\r\n\r\n\t\t\t\tif (menuItem.items && menuItem.items.length > 0) {\r\n\t\t\t\t\tif (!this.isMobile() && !this.secondarySidebarExpanded && !this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.layoutService.setSecondarySidebarExpanded(false);\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisHaveSelectedChildItem(item: PluginMenuItem): boolean {\r\n\t\tif (!item || !item.items || item.items.length === 0) return false;\r\n\r\n\t\tfor (const child of item.items) {\r\n\t\t\tif (this.isActiveRoute(child)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (child.items && child.items.length > 0) {\r\n\t\t\t\tif (this.isHaveSelectedChildItem(child)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetLocalText(text: any): string {\r\n\t\treturn this.translateJsonPipe.transform(text);\r\n\t}\r\n\r\n\ttoggleSidebar() {\r\n\t\t// Eğer seçili bir ana menü öğesi varsa ve alt menüleri varsa toggle yapabiliriz\r\n\t\tif (this.selectedMainMenuItem && this.selectedMainMenuItem.items && this.selectedMainMenuItem.items.length > 0) {\r\n\t\t\tthis.sidebarExpanded = !this.sidebarExpanded;\r\n\t\t} else if (this.sidebarExpanded) {\r\n\t\t\tthis.sidebarExpanded = false;\r\n\t\t}\r\n\t}\r\n}\r\n","<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Create menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { Component, OnDestroy, OnInit, Signal, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { NavigationEnd } from '@angular/router';\r\n\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { Subscription, filter } from 'rxjs';\r\n\r\nimport { PluginMenuItem } from 'aril/boot/config/apps';\r\nimport { TranslateJsonPipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { AppMenuService } from '../../service/app.menu.service';\r\n\r\ninterface MenuNode {\r\n\tkey: string;\r\n\tlabel: any;\r\n\ticon?: string;\r\n\trouterLink?: string;\r\n\tchildren?: MenuNode[];\r\n\texpanded: boolean;\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-static-sidebar',\r\n\timports: [RouterLink, NgClass, NgTemplateOutlet, ScrollPanelModule, TooltipModule, FormsModule, TranslocoModule],\r\n\ttemplateUrl: './static-sidebar.component.html',\r\n\tstyleUrl: './static-sidebar.component.scss',\r\n\tproviders: [TranslateJsonPipe]\r\n})\r\nexport class StaticSidebarComponent implements OnInit, OnDestroy {\r\n\tactiveLang: Signal<string>;\r\n\tmenuNodes = signal<MenuNode[]>([]);\r\n\tfilteredNodes = signal<MenuNode[]>([]);\r\n\tsearchTerm = signal<string>('');\r\n\r\n\tprivate routerSubscription: Subscription | null = null;\r\n\r\n\tprivate readonly MAX_LENGTH = { level0: 25, level1: 20, level2: 16, level3: 13 };\r\n\r\n\tconstructor(\r\n\t\tprivate menuService: AppMenuService,\r\n\t\tprivate router: Router,\r\n\t\tprivate layoutService: LayoutService,\r\n\t\tprivate translateJsonPipe: TranslateJsonPipe,\r\n\t\tprivate translocoService: TranslocoService\r\n\t) {\r\n\t\tthis.activeLang = toSignal(this.translocoService.langChanges$, { initialValue: 'tr' });\r\n\t}\r\n\r\n\tget isCollapsed(): boolean {\r\n\t\treturn this.layoutService.isStaticSidebarCollapsed();\r\n\t}\r\n\r\n\tget topLevelNodes(): MenuNode[] {\r\n\t\treturn this.menuNodes();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.buildMenuTree();\r\n\t\tthis.routerSubscription = this.router.events\r\n\t\t\t.pipe(filter((event) => event instanceof NavigationEnd))\r\n\t\t\t.subscribe(() => this.buildMenuTree());\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.routerSubscription?.unsubscribe();\r\n\t}\r\n\r\n\tisTextTruncated(label: any, lang: string | null, level = 0): boolean {\r\n\t\tif (!label || !lang || !label[lang]) return false;\r\n\t\tconst text = label[lang];\r\n\t\tconst len = text.length;\r\n\t\tconst limits = [this.MAX_LENGTH.level0, this.MAX_LENGTH.level1, this.MAX_LENGTH.level2, this.MAX_LENGTH.level3];\r\n\t\treturn len > limits[Math.min(level, 3)];\r\n\t}\r\n\r\n\tisMobile(): boolean {\r\n\t\treturn this.layoutService.isMobile();\r\n\t}\r\n\r\n\tbuildMenuTree() {\r\n\t\tconst menuItems = this.getMenuItems();\r\n\t\tconst nodes = this.convertToMenuNodes(menuItems);\r\n\t\tthis.menuNodes.set(nodes);\r\n\t\tthis.filteredNodes.set([...nodes]);\r\n\t\tthis.expandActiveMenu();\r\n\t}\r\n\r\n\tprivate expandActiveMenu() {\r\n\t\tconst nodes = this.menuNodes();\r\n\t\tthis.findAndExpandActiveNode(nodes);\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t}\r\n\r\n\tprivate findAndExpandActiveNode(nodes: MenuNode[]): MenuNode | null {\r\n\t\tfor (const node of nodes) {\r\n\t\t\tif (this.isActiveRouteForNode(node)) {\r\n\t\t\t\treturn node;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (node.children && node.children.length > 0) {\r\n\t\t\t\tconst activeChild = this.findAndExpandActiveNode(node.children);\r\n\t\t\t\tif (activeChild) {\r\n\t\t\t\t\t// we find active child and then opened its parent nodes\r\n\t\t\t\t\tnode.expanded = true;\r\n\t\t\t\t\treturn activeChild;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconvertToMenuNodes(items: PluginMenuItem[], parentKey = ''): MenuNode[] {\r\n\t\treturn items\r\n\t\t\t.filter((item) => !item.separator)\r\n\t\t\t.map((item, index) => {\r\n\t\t\t\tconst key = parentKey ? `${parentKey}-${index}` : `${index}`;\r\n\t\t\t\tconst node: MenuNode = {\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\tlabel: item.label,\r\n\t\t\t\t\ticon: item.icon,\r\n\t\t\t\t\trouterLink: item.routerLink,\r\n\t\t\t\t\texpanded: false\r\n\t\t\t\t};\r\n\t\t\t\tif (item.items && item.items.length > 0) {\r\n\t\t\t\t\tnode.children = this.convertToMenuNodes(item.items, key);\r\n\t\t\t\t}\r\n\t\t\t\treturn node;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetMenuItems(): PluginMenuItem[] {\r\n\t\tconst isHostMode = (<any>globalThis).isHostMode;\r\n\t\tconst hostMenuItems = (<any>globalThis).hostMenuItems;\r\n\t\treturn isHostMode ? hostMenuItems() : this.menuService.menuItems();\r\n\t}\r\n\r\n\tgetLocalText(text: any): string {\r\n\t\treturn this.translateJsonPipe.transform(text);\r\n\t}\r\n\r\n\tisActiveRouteForNode(node: MenuNode): boolean {\r\n\t\tif (!node.routerLink) return false;\r\n\t\tconst currentUrl = this.router.url;\r\n\t\tconst hashUrl = currentUrl.indexOf('#') > -1 ? currentUrl.split('#')[1] : currentUrl;\r\n\t\tif (hashUrl === node.routerLink || hashUrl === '/' + node.routerLink) return true;\r\n\t\treturn (\r\n\t\t\tnode.routerLink !== '/' &&\r\n\t\t\t(hashUrl.startsWith(node.routerLink + '/') || hashUrl.startsWith('/' + node.routerLink + '/'))\r\n\t\t);\r\n\t}\r\n\r\n\t// use on collapsed mode\r\n\tisNodeOrChildActive(node: MenuNode): boolean {\r\n\t\tif (this.isActiveRouteForNode(node)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (node.children && node.children.length > 0) {\r\n\t\t\treturn node.children.some(child => this.isNodeOrChildActive(child));\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisTopLevelNodeActive(node: MenuNode): boolean {\r\n\t\treturn this.isNodeOrChildActive(node);\r\n\t}\r\n\r\n\tisChildNodeActive(node: MenuNode): boolean {\r\n\t\treturn this.isActiveRouteForNode(node);\r\n\t}\r\n\r\n\ttoggleNode(node: MenuNode, level = 0) {\r\n\t\tconst wasExpanded = node.expanded;\r\n\t\tif (level === 0) {\r\n\t\t\t// Diğer ana menüleri kapat\r\n\t\t\tthis.closeOtherTopLevelNodes(node);\r\n\t\t}\r\n\t\tnode.expanded = !wasExpanded;\r\n\t\t\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t}\r\n\r\n\tprivate closeOtherTopLevelNodes(exceptNode: MenuNode) {\r\n\t\tconst nodes = this.menuNodes();\r\n\t\tnodes.forEach(node => {\r\n\t\t\tif (node !== exceptNode) {\r\n\t\t\t\tnode.expanded = false;\r\n\t\t\t\tthis.closeAllChildNodes(node);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate closeAllChildNodes(node: MenuNode) {\r\n\t\tif (node.children) {\r\n\t\t\tnode.children.forEach(child => {\r\n\t\t\t\tchild.expanded = false;\r\n\t\t\t\tthis.closeAllChildNodes(child);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\ttrackByKey(index: number, node: MenuNode): any {\r\n\t\treturn node.key;\r\n\t}\r\n\r\n\tonMenuItemClick() {\r\n\t\tif (this.isMobile()) {\r\n\t\t\tthis.layoutService.closeMobileMenu();\r\n\t\t}\r\n\r\n\t\tthis.searchTerm.set('');\r\n\t\tthis.filteredNodes.set(this.menuNodes() || []);\r\n\t}\r\n\r\n\tonCollapsedItemClick(node: MenuNode) {\r\n\t\tif (this.isCollapsed) {\r\n\t\t\tthis.layoutService.onMenuToggle();\r\n\t\t}\r\n\t\tthis.closeOtherTopLevelNodes(node);\r\n\t\tif (node.children && node.children.length > 0) {\r\n\t\t\tnode.expanded = true;\r\n\t\t}\r\n\t\tthis.filteredNodes.set([...this.filteredNodes()]);\r\n\t\tif (node.routerLink) {\r\n\t\t\tthis.onMenuItemClick();\r\n\t\t}\r\n\t}\r\n\r\n\tonSearchChange(): void {\r\n\t\tconst currentSearchTerm = this.searchTerm()?.toLowerCase()?.trim();\r\n\t\tif (!currentSearchTerm) {\r\n\t\t\tthis.filteredNodes.set(this.menuNodes() || []);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.filteredNodes.set(this.filterNodes(this.menuNodes(), currentSearchTerm));\r\n\t}\r\n\r\n\t\tprivate filterNodes(nodes: MenuNode[], searchTerm: string): MenuNode[] {\r\n\t\tconst filtered: MenuNode[] = [];\r\n\t\tconst currentLang = this.translocoService.getActiveLang();\r\n\r\n\t\tfor (const node of nodes) {\r\n\t\t\t// Convert label to string for search based on active language\r\n\t\t\tconst labelText =\r\n\t\t\t\ttypeof node.label === 'string' ?\r\n\t\t\t\t\tnode.label\r\n\t\t\t\t:\t(node.label as any)?.[currentLang] || (node.label as any)?.tr || (node.label as any)?.en || '';\r\n\r\n\t\t\tconst matches = labelText.toLowerCase().includes(searchTerm);\r\n\t\t\tlet filteredChildren: MenuNode[] = [];\r\n\r\n\t\t\tif (node.children) {\r\n\t\t\t\tfilteredChildren = this.filterNodes(node.children, searchTerm);\r\n\t\t\t}\r\n\r\n\t\t\tif (matches || filteredChildren.length > 0) {\r\n\t\t\t\tfiltered.push({\r\n\t\t\t\t\t...node,\r\n\t\t\t\t\tchildren: filteredChildren.length > 0 ? filteredChildren : node.children,\r\n\t\t\t\t\texpanded: filteredChildren.length > 0\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn filtered;\r\n\t}\r\n\r\n}\r\n","<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track trackByKey($index, node)) {\r\n\t\t\t\t\t@if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div \r\n\t\t\t\t\t\t\tclass=\"collapsed-item\" \r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\" \r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onMenuItemClick()\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\"\r\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div> ","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HTTPMethods, ProxyTypes, RestClient, ServiceCall, ServiceCallStateMap, ServiceResponse } from 'aril/http';\r\n\r\nimport * as Interfaces from './interfaces/interfaces';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NotificationsService extends RestClient {\r\n\toverride states: ServiceCallStateMap<NotificationsService> = {};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'audits/search')\r\n\tgetNotifications(post: Interfaces.SmsEmailAuditRequestDto) {\r\n\t\treturn new Observable<ServiceResponse<Interfaces.Response<Interfaces.SmsEmailAuditResponseDTO>>>();\r\n\t}\r\n\r\n\t@ServiceCall(HTTPMethods.PUTBYDYNAMICPATH, ProxyTypes.ClientSide, 'audits/$/read')\r\n\tmarkAsReadNotification(pluginId: string) {\r\n\t\treturn new Observable<ServiceResponse<boolean>>();\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, effect, signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { Subject, switchMap } from 'rxjs';\r\n\r\nimport { ButtonComponent } from 'aril/ui/button';\r\nimport { regularIcons, solidIcons } from 'aril/util/lib';\r\nimport { SafePipe } from 'aril/util/pipes';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { ActivityTypesEnum, DetailNotificationTypeEnum } from '../../service/interfaces/enum';\r\nimport { SmsEmailAuditResponseDTO } from '../../service/interfaces/interfaces';\r\nimport { NotificationsService } from '../../service/notifications.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-notifications-sidebar',\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tSidebarModule,\r\n\t\tScrollPanelModule,\r\n\t\tConfirmDialogModule,\r\n\t\tPaginatorModule,\r\n\t\tButtonComponent,\r\n\t\tTranslocoModule,\r\n\t\tTooltipModule,\r\n\t\tBadgeModule,\r\n\t\tFontAwesomeModule,\r\n\t\tSafePipe\r\n\t],\r\n\ttemplateUrl: './notifications-sidebar.component.html',\r\n\tstyleUrls: ['./notifications-sidebar.component.scss']\r\n})\r\nexport class NotificationsSidebarComponent implements OnInit {\r\n\tnotifications = signal<SmsEmailAuditResponseDTO[]>([]);\r\n\tselectedNotification: SmsEmailAuditResponseDTO | null = null;\r\n\r\n\tActivityTypesEnum = ActivityTypesEnum;\r\n\tDetailNotificationTypeEnum = DetailNotificationTypeEnum;\r\n\r\n\tregularIcons = regularIcons;\r\n\tsolidIcons = solidIcons;\r\n\r\n\toneMonthAgo = new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000);\r\n\r\n\tprivate subjects = {\r\n\t\tmarkAsRead: new Subject<string>(),\r\n\t\tloadNotifications: new Subject<void>()\r\n\t};\r\n\r\n\tmarkAsReadService = toSignal(\r\n\t\tthis.subjects.markAsRead.pipe(switchMap((id) => this.notificationsService.markAsReadNotification(id)))\r\n\t);\r\n\r\n\tget getUserPhones(): string[] {\r\n\t\tconst phones = this.keycloak.getKeycloakInstance().profile?.attributes?.['phone'];\r\n\t\tif (phones && Array.isArray(phones)) {\r\n\t\t\treturn phones;\r\n\t\t} else if (phones && typeof phones === 'string') {\r\n\t\t\treturn [phones];\r\n\t\t}\r\n\t\treturn [];\r\n\t}\r\n\r\n\tget getUserMail() {\r\n\t\treturn this.keycloak.getKeycloakInstance().profile?.email as string;\r\n\t}\r\n\r\n\tloadNotificationsService = toSignal(\r\n\t\tthis.subjects.loadNotifications.pipe(\r\n\t\t\tswitchMap(() =>\r\n\t\t\t\tthis.notificationsService.getNotifications({\r\n\t\t\t\t\tpager: {\r\n\t\t\t\t\t\tpageSize: 10,\r\n\t\t\t\t\t\tpageNumber: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstartDate: this.oneMonthAgo.dateToLong('time') || 0,\r\n\t\t\t\t\tendDate: new Date().dateToLong('time') || 0,\r\n\t\t\t\t\tread: false,\r\n\t\t\t\t\ttoList: [this.getUserMail, ...this.getUserPhones],\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t)\r\n\t);\r\n\r\n\tconstructor(\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tprivate readonly notificationsService: NotificationsService,\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly keycloak: KeycloakService\r\n\t) {\r\n\t\tthis.initializeEffects();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadNotifications();\r\n\t}\r\n\r\n\tprivate loadNotifications(): void {\r\n\t\tthis.subjects.loadNotifications.next();\r\n\t}\r\n\r\n\tprivate initializeEffects(): void {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst service = this.loadNotificationsService();\r\n\t\t\t\tif (service?.response) {\r\n\t\t\t\t\tthis.notifications.set(service.response.result);\r\n\t\t\t\t\t// Update unread count in layoutService\r\n\t\t\t\t\tthis.layoutService.setUnreadNotificationCount(service?.response.resultInfo.totalItem || 0);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\t\teffect(() => {\r\n\t\t\tconst service = this.markAsReadService();\r\n\t\t\tif (service?.response) {\r\n\t\t\t\tthis.loadNotifications();\r\n\r\n\t\t\t\tif (this.selectedNotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\tthis.router.navigate([`mng/todo-tasks/detail/${this.selectedNotification?.referenceId}`]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(): boolean {\r\n\t\treturn this.layoutService.state.notificationsSidebarVisible;\r\n\t}\r\n\r\n\tset visible(value: boolean) {\r\n\t\tthis.layoutService.state.notificationsSidebarVisible = value;\r\n\t}\r\n\r\n\tmarkNotificationAsRead(notification: SmsEmailAuditResponseDTO): void {\r\n\t\tthis.selectedNotification = notification;\r\n\t\tthis.subjects.markAsRead.next(notification.id);\r\n\t\tthis.visible = false;\r\n\r\n\t\tif (notification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\tthis.router.navigate([`mng/todo-tasks/detail/${notification?.referenceId}`]);\r\n\t\t} else if (notification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\tthis.router.navigate([`mng/bulk-operations/${notification?.referenceId}`]);\r\n\t\t}\r\n\t}\r\n\r\n\tmarkNotificationAsReadOnDotIcon(notification: SmsEmailAuditResponseDTO): void {\r\n\t\tif (!notification.read) {\r\n\t\t\tthis.subjects.markAsRead.next(notification.id);\r\n\t\t}\r\n\t}\r\n\r\n\ttrackByNotificationId(index: number, notification: SmsEmailAuditResponseDTO): string {\r\n\t\treturn notification.id;\r\n\t}\r\n\r\n\tgetNotificationTitle(notification: SmsEmailAuditResponseDTO): string {\r\n\t\treturn notification.templateTitle || notification.templateCode || '';\r\n\t}\r\n\r\n\tgetNotificationContent(notification: SmsEmailAuditResponseDTO): string {\r\n\t\tconst truncated =\r\n\t\t\tnotification.content?.length! > 200 ? notification.content?.substring(0, 200) + '...' : notification.content;\r\n\t\treturn truncated || '';\r\n\t}\r\n\r\n\tformatNotificationDate(startDate: number | undefined): string {\r\n\t\tif (!startDate) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tconst dateStr = startDate.toString();\r\n\t\tconst year = parseInt(dateStr.substring(0, 4));\r\n\t\tconst month = parseInt(dateStr.substring(4, 6)) - 1;\r\n\t\tconst day = parseInt(dateStr.substring(6, 8));\r\n\t\tconst hour = parseInt(dateStr.substring(8, 10));\r\n\t\tconst minute = parseInt(dateStr.substring(10, 12));\r\n\t\tconst second = parseInt(dateStr.substring(12, 14));\r\n\r\n\t\tconst notificationDate = new Date(year, month, day, hour, minute, second);\r\n\t\tconst now = new Date();\r\n\t\tconst diffMs = now.getTime() - notificationDate.getTime();\r\n\r\n\t\tconst diffMinutes = Math.floor(diffMs / (1000 * 60));\r\n\t\tconst diffHours = Math.floor(diffMs / (1000 * 60 * 60));\r\n\t\tconst diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\r\n\t\tconst diffWeeks = Math.floor(diffDays / 7);\r\n\t\tconst diffMonths = Math.floor(diffDays / 30);\r\n\r\n\t\tif (diffMinutes < 1) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.justNow');\r\n\t\t} else if (diffMinutes < 60) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.minutesAgo', { count: diffMinutes });\r\n\t\t} else if (diffHours < 24) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.hoursAgo', { count: diffHours });\r\n\t\t} else if (diffDays < 7) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.daysAgo', { count: diffDays });\r\n\t\t} else if (diffWeeks < 4) {\r\n\t\t\treturn this.translocoService.translate('notifications.time.weeksAgo', { count: diffWeeks });\r\n\t\t} else {\r\n\t\t\treturn this.translocoService.translate('notifications.time.monthsAgo', { count: diffMonths });\r\n\t\t}\r\n\t}\r\n\r\n\tnavigateToAllNotifications(): void {\r\n\t\tthis.router.navigate(['mng/control-management/sms-email-audit']);\r\n\t\tthis.visible = false;\r\n\t}\r\n}\r\n","<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, OnDestroy, Renderer2, ViewChild } from '@angular/core';\r\nimport { NavigationEnd, Router, RouterOutlet } from '@angular/router';\r\n\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { Subscription, filter } from 'rxjs';\r\n\r\nimport { LayoutService } from '../../service/app.layout.service';\r\nimport { AppMenuService } from '../../service/app.menu.service';\r\nimport { AppProfileSidebarComponent } from '../profileSidebar/app.profilesidebar.component';\r\nimport { HistorySidebarComponent } from '../history/history-sidebar.component';\r\nimport { SiteMapSidebarComponent } from '../site-map/site-map-sidebar.component';\r\nimport { FavoritePagesSidebarComponent } from '../favorite-pages/favorite-pages-sidebar.component';\r\nimport { AppTopbarComponent } from '../topbar/app.topbar.component';\r\nimport { ExpandableMenuComponent } from '../expandableMenu/expandable-menu.component';\r\nimport { StaticSidebarComponent } from '../static-sidebar/static-sidebar.component';\r\nimport { NotificationsSidebarComponent } from '../notifications/notifications-sidebar.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-layout',\r\n\timports: [\r\n\t\tNgClass,\r\n\t\tRouterOutlet,\r\n\t\tConfirmDialogModule,\r\n\t\tConfirmPopupModule,\r\n\t\tDialogModule,\r\n\t\tMessagesModule,\r\n\t\tToastModule,\r\n\t\tAppTopbarComponent,\r\n\t\tAppProfileSidebarComponent,\r\n\t\tHistorySidebarComponent,\r\n\t\tSiteMapSidebarComponent,\r\n\t\tFavoritePagesSidebarComponent,\r\n\t\tExpandableMenuComponent,\r\n\t\tStaticSidebarComponent,\r\n\t\tNotificationsSidebarComponent\r\n\t],\r\n\ttemplateUrl: './app.layout.component.html'\r\n})\r\nexport class AppLayoutComponent implements OnDestroy {\r\n\toverlayMenuOpenSubscription: Subscription;\r\n\tmenuOutsideClickListener: any;\r\n\tmenuScrollListener: any;\r\n\tglobalThis: any = globalThis;\r\n\r\n\t@ViewChild(ExpandableMenuComponent) expandableMenuComponent!: ExpandableMenuComponent;\r\n\t@ViewChild(StaticSidebarComponent) staticSidebarComponent!: StaticSidebarComponent;\r\n\t@ViewChild(AppTopbarComponent) appTopbar!: AppTopbarComponent;\r\n\r\n\tconstructor(\r\n\t\tprivate menuService: AppMenuService,\r\n\t\tpublic layoutService: LayoutService,\r\n\t\tpublic renderer: Renderer2,\r\n\t\tpublic router: Router\r\n\t) {\r\n\t\tthis.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n\t\t\tif (!this.menuOutsideClickListener) {\r\n\t\t\t\tthis.menuOutsideClickListener = this.renderer.listen('document', 'click', (event) => {\r\n\t\t\t\t\tconst isOutsideClicked = !(\r\n\t\t\t\t\t\tthis.appTopbar.menuButton.nativeElement.isSameNode(event.target) ||\r\n\t\t\t\t\t\tthis.appTopbar.menuButton.nativeElement.contains(event.target) ||\r\n\t\t\t\t\t\t(this.expandableMenuComponent && this.isElementInside(event.target, 'app-expandable-menu')) ||\r\n\t\t\t\t\t\t(this.staticSidebarComponent && this.isElementInside(event.target, 'app-static-sidebar'))\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (isOutsideClicked) {\r\n\t\t\t\t\t\tthis.hideMenu();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.layoutService.state.staticMenuMobileActive) {\r\n\t\t\t\tthis.blockBodyScroll();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\r\n\t\t\tif (!this.layoutService.mfeAppItemClicked()) this.hideMenu();\r\n\t\t});\r\n\t}\r\n\r\n\tblockBodyScroll(): void {\r\n\t\tif (document.body.classList) {\r\n\t\t\tdocument.body.classList.add('blocked-scroll');\r\n\t\t} else {\r\n\t\t\tdocument.body.className += ' blocked-scroll';\r\n\t\t}\r\n\t}\r\n\r\n\tunblockBodyScroll(): void {\r\n\t\tif (document.body.classList) {\r\n\t\t\tdocument.body.classList.remove('blocked-scroll');\r\n\t\t} else {\r\n\t\t\tdocument.body.className = document.body.className.replace(\r\n\t\t\t\tnew RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'),\r\n\t\t\t\t' '\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t// Helper method to check if element is inside a specific component\r\n\tprivate isElementInside(element: any, selector: string): boolean {\r\n\t\tif (!element) return false;\r\n\t\t\r\n\t\tlet currentElement = element;\r\n\t\twhile (currentElement && currentElement !== document) {\r\n\t\t\tif (currentElement.tagName && currentElement.tagName.toLowerCase() === selector) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tcurrentElement = currentElement.parentElement;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\thideMenu() {\r\n\t\tthis.layoutService.state.staticMenuMobileActive = false;\r\n\t\tthis.menuService.reset();\r\n\r\n\t\tif (this.menuOutsideClickListener) {\r\n\t\t\tthis.menuOutsideClickListener();\r\n\t\t\tthis.menuOutsideClickListener = null;\r\n\t\t}\r\n\r\n\t\tif (this.menuScrollListener) {\r\n\t\t\tthis.menuScrollListener();\r\n\t\t\tthis.menuScrollListener = null;\r\n\t\t}\r\n\r\n\t\tthis.unblockBodyScroll();\r\n\t}\r\n\r\n\tget containerClass() {\r\n\t\treturn {\r\n\t\t\t'layout-light': this.layoutService.config().colorScheme === 'light',\r\n\t\t\t'layout-dim': this.layoutService.config().colorScheme === 'dim',\r\n\t\t\t'layout-dark': this.layoutService.config().colorScheme === 'dark',\r\n\t\t\t'layout-colorscheme-menu': this.layoutService.config().menuTheme === 'colorScheme',\r\n\t\t\t'layout-primarycolor-menu': this.layoutService.config().menuTheme === 'primaryColor',\r\n\t\t\t'layout-transparent-menu': this.layoutService.config().menuTheme === 'transparent',\r\n\t\t\t'layout-static': this.layoutService.config().menuMode === 'static',\r\n\t\t\t'layout-expandable': this.layoutService.config().menuMode === 'expandable',\r\n\t\t\t'layout-static-inactive': \r\n\t\t\t\tthis.layoutService.config().menuMode === 'static' && \r\n\t\t\t\t!this.layoutService.shouldShowStaticSidebar(),\r\n\t\t\t'layout-static-collapsed': \r\n\t\t\t\tthis.layoutService.config().menuMode === 'static' && \r\n\t\t\t\tthis.layoutService.isStaticSidebarCollapsed(),\r\n\t\t\t'layout-mobile-active': this.layoutService.state.staticMenuMobileActive,\r\n\t\t\t'p-input-filled': this.layoutService.config().inputStyle === 'filled',\r\n\t\t\t'p-ripple-disabled': !this.layoutService.config().ripple,\r\n\t\t\t'new-sidebar-layout': this.layoutService.config().menuMode === 'expandable',\r\n\t\t\t'secondary-expanded': this.layoutService.state.secondarySidebarExpanded\r\n\t\t};\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.overlayMenuOpenSubscription) {\r\n\t\t\tthis.overlayMenuOpenSubscription.unsubscribe();\r\n\t\t}\r\n\r\n\t\tif (this.menuOutsideClickListener) {\r\n\t\t\tthis.menuOutsideClickListener();\r\n\t\t}\r\n\t}\r\n}","<div class=\"layout-container\" [ngClass]=\"containerClass\">\r\n\t@if (layoutService.shouldShowStaticSidebar()) {\r\n\t\t<app-static-sidebar />\r\n\t} @else if (layoutService.shouldShowExpandableMenu()) {\r\n\t\t<app-expandable-menu />\r\n\t}\r\n\t<div class=\"layout-content-wrapper\">\r\n\t\t<app-topbar />\r\n\t\t<div class=\"layout-content\">\r\n\t\t\t<router-outlet />\r\n\t\t</div>\r\n\t</div>\r\n\t<app-profilemenu />\r\n\t<app-history-sidebar />\r\n\t<app-site-map-sidebar />\r\n\t<app-favorite-pages-sidebar />\r\n\t<app-notifications-sidebar />\r\n\t<!--<app-config></app-config>-->\r\n\t<div class=\"layout-mask\" (click)=\"hideMenu()\"></div>\r\n</div>\r\n\r\n<p-toast key=\"toast-root\" />\r\n<p-dialog key=\"dialog-root\" />\r\n<p-messages key=\"messages-root\" />\r\n<p-confirmPopup key=\"confirmPopup-root\" />\r\n<p-confirmDialog key=\"confirmDialog-root\" />\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class BreadcrumbService {\r\n\tkeyValues = signal<{ [key: string]: string }>({});\r\n\r\n\tset(key: string, value: string): void {\r\n\t\tthis.keyValues.update((obj) => ({ ...obj, [key]: value }));\r\n\t}\r\n\r\n\tgetValue(key: string): string {\r\n\t\treturn this.keyValues()[key];\r\n\t}\r\n}\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, effect } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, RouterLink } from '@angular/router';\r\n\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\n\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\nimport { BreadcrumbService } from '../../service/breadcrumb.service';\r\n\r\ninterface Breadcrumb {\r\n\tlabel: string;\r\n\turl?: string;\r\n}\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'app-breadcrumb',\r\n\timports: [RouterLink, BreadcrumbModule, NgClass],\r\n\ttemplateUrl: './app.breadcrumb.component.html'\r\n})\r\nexport class AppBreadcrumbComponent {\r\n\tprivate readonly _breadcrumbs$ = new BehaviorSubject<Breadcrumb[]>([]);\r\n\tprivate breadcrumbsSubscription!: Subscription;\r\n\r\n\treadonly breadcrumbs$ = this._breadcrumbs$.asObservable();\r\n\tbreadcrumbs: MenuItem[] = [];\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate breadcrumbService: BreadcrumbService,\r\n\t\tprivate pubSubService: PubSubService\r\n\t) {\r\n\t\tthis.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {\r\n\t\t\tconst root = this.router.routerState.snapshot.root;\r\n\t\t\tconst breadcrumbs: Breadcrumb[] = [];\r\n\r\n\t\t\tthis.addBreadcrumb(root, [], breadcrumbs);\r\n\r\n\t\t\tthis._breadcrumbs$.next(breadcrumbs);\r\n\t\t});\r\n\r\n\t\teffect(() => {\r\n\t\t\tif (this.breadcrumbService.keyValues()) {\r\n\t\t\t\tconst root = this.router.routerState.snapshot.root;\r\n\t\t\t\tconst breadcrumbs: Breadcrumb[] = [];\r\n\r\n\t\t\t\tthis.addBreadcrumb(root, [], breadcrumbs);\r\n\r\n\t\t\t\tthis._breadcrumbs$.next(breadcrumbs);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.breadcrumbsSubscription = this.breadcrumbs$.subscribe((breadcrumbs) => {\r\n\t\t\tthis.breadcrumbs = breadcrumbs.map((breadcrumb) => ({\r\n\t\t\t\tlabel: breadcrumb.label,\r\n\t\t\t\turl: breadcrumb.url\r\n\t\t\t}));\r\n\t\t\tthis.breadcrumbs.unshift({ icon: 'pi pi-home', url: '/' });\r\n\t\t\t\r\n\t\t\t// Update global page title signal with the last breadcrumb label\r\n\t\t\tconst pageTitle = (<any>globalThis).__ARIL_PAGE_TITLE__?.();\r\n\t\t\tif (pageTitle) {\r\n\t\t\t\t\tconst lastBreadcrumb = breadcrumbs[breadcrumbs.length - 1];\r\n\t\t\t\t\tpageTitle.set(lastBreadcrumb?.label || '');\r\n\t\t\t}\r\n\r\n\t\t\tconst currentUrl = this.router.url;\r\n\t\t\tthis.pubSubService.publish({\r\n\t\t\t\tname: 'breadcrumbUpdated',\r\n\t\t\t\tdata: { \r\n\t\t\t\t\tpath: currentUrl,\r\n\t\t\t\t\tcustom: {\r\n\t\t\t\t\t\tbreadcrumbs: breadcrumbs,\r\n\t\t\t\t\t\tpageTitle: breadcrumbs.length > 0 ? breadcrumbs[breadcrumbs.length - 1].label : ''\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.breadcrumbsSubscription) {\r\n\t\t\tthis.breadcrumbsSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addBreadcrumb(route: ActivatedRouteSnapshot, parentUrl: string[], breadcrumbs: Breadcrumb[]) {\r\n\t\tconst routeUrl = parentUrl.concat(route.url.map((url) => url.path));\r\n\t\tconst breadcrumb = route.data['breadcrumb'];\r\n\t\tconst parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;\r\n\r\n\t\tif (breadcrumb && breadcrumb !== parentBreadcrumb) {\r\n\t\t\tconst keyRegex = new RegExp('(?<=\\\\{)([^}]+)(?=\\\\})');\r\n\t\t\tconst key = (keyRegex.exec(route.data['breadcrumb']) || [])[0]!;\r\n\t\t\tconst value = this.breadcrumbService.getValue(key);\r\n\r\n\t\t\tif (key && value) {\r\n\t\t\t\tbreadcrumbs.push({\r\n\t\t\t\t\tlabel: (route.data['breadcrumb'] as string).replace(`{${key}}`, value),\r\n\t\t\t\t\turl: '/' + routeUrl.join('/')\r\n\t\t\t\t});\r\n\t\t\t} else if (key && !value) {\r\n\t\t\t\t// Key exists but value not loaded yet - show loading placeholder\r\n\t\t\t\tbreadcrumbs.push({\r\n\t\t\t\t\tlabel: '...',\r\n\t\t\t\t\turl: '/' + routeUrl.join('/')\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tbreadcrumbs.push({\r\n\t\t\t\t\tlabel: route.data['breadcrumb'],\r\n\t\t\t\t\turl: '/' + routeUrl.join('/')\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (route.firstChild) {\r\n\t\t\tthis.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\r\n\t\t}\r\n\t}\r\n}\r\n","<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n","import { Component, Signal } from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport {\r\n\tNavigationCancel,\r\n\tNavigationEnd,\r\n\tNavigationError,\r\n\tNavigationSkipped,\r\n\tRouter,\r\n\tRouterOutlet\r\n} from '@angular/router';\r\n\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { map } from 'rxjs';\r\nimport { AppBreadcrumbComponent } from '../breadcrumb/app.breadcrumb.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'mfe-layout',\r\n\ttemplate: `\r\n\t <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb>\r\n\t\t@if (!loading()) {\r\n\t\t\t<router-outlet />\r\n\t\t}\r\n\r\n\t\t<p-toast key=\"toast-root\"></p-toast>\r\n\t\t<p-dialog key=\"dialog-root\"></p-dialog>\r\n\t\t<p-messages key=\"messages-root\"></p-messages>\r\n\t\t<p-confirmPopup key=\"confirmPopup-root\"></p-confirmPopup>\r\n\t\t<p-confirmDialog key=\"confirmDialog-root\"></p-confirmDialog>\r\n\t`,\r\n\timports: [RouterOutlet, ConfirmDialogModule, ConfirmPopupModule, DialogModule, MessagesModule, ToastModule, AppBreadcrumbComponent]\r\n})\r\nexport class MFELayoutComponent {\r\n\tloading: Signal<boolean>;\r\n\r\n\tconstructor(private router: Router) {\r\n\t\tthis.loading = toSignal(\r\n\t\tthis.router.events.pipe(\r\n\t\t\tmap((event) => {\r\n\t\t\t\tif (\r\n\t\t\t\t\tevent instanceof NavigationEnd ||\r\n\t\t\t\t\tevent instanceof NavigationCancel ||\r\n\t\t\t\t\tevent instanceof NavigationError ||\r\n\t\t\t\t\tevent instanceof NavigationSkipped\r\n\t\t\t\t)\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t})\r\n\t\t),\r\n\t\t{ initialValue: true }\r\n\t);\r\n\t}\r\n\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, effect, signal } from '@angular/core';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\n\r\nimport { SelectionGroupDTO, SelectionRequestDTO } from './interfaces/interfaces';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SelectionGroupService {\r\n\tselectionGroups = signal<{ [key: string]: SelectionGroupDTO | null }>({});\r\n\r\n\tprivate loading = new Map<string, boolean>();\r\n\tprivate loaded = new Map<string, boolean>();\r\n\r\n\tconstructor(private http: HttpClient) {\r\n\t\tthis.loadStatesFromLocalStorage();\r\n\r\n\t\teffect(() => {\r\n\t\t\tconst encodedData = btoa(encodeURI(JSON.stringify(this.selectionGroups())));\r\n\t\t\tlocalStorage.setItem('selection-groups', encodedData);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async loadStatesFromLocalStorage() {\r\n\t\tconst selectionGroups = localStorage.getItem('selection-groups');\r\n\r\n\t\tif (selectionGroups) {\r\n\t\t\ttry {\r\n\t\t\t\tconst decodedData = decodeURI(atob(selectionGroups));\r\n\t\t\t\tthis.selectionGroups.set(JSON.parse(decodedData));\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfetchEnum(groupName: string, parentSelectionKey: string = 'ALL') {\r\n\t\tconst key = groupName + '~' + parentSelectionKey;\r\n\r\n\t\tif (this.loaded.get(key) || this.loading.get(key)) return;\r\n\r\n\t\tconst payload: SelectionRequestDTO = {\r\n\t\t\tgroupName,\r\n\t\t\tparentSelectionKey\r\n\t\t};\r\n\r\n\t\tthis.loading.set(key, true);\r\n\t\tthis.loaded.set(key, false);\r\n\r\n\t\tconst hostApi = API_CONFIGS.api.replace(/\\/[^\\/]+\\/v1$/, `/host/v1`);\r\n\r\n\t\tthis.http\r\n\t\t\t.post<SelectionGroupDTO>(hostApi + '/selection-group/load', payload)\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe((selectionGroup) => {\r\n\t\t\t\tthis.loading.set(key, false);\r\n\t\t\t\tthis.loaded.set(key, true);\r\n\r\n\t\t\t\tthis.selectionGroups.update((groups) => ({\r\n\t\t\t\t\t...groups,\r\n\t\t\t\t\t[key]: selectionGroup\r\n\t\t\t\t}));\r\n\t\t\t});\r\n\t}\r\n\r\n\tisLoading(groupName: string): boolean {\r\n\t\treturn this.loading.get(groupName) ?? false;\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.ProfileService","i4","i5","i4.ProfileService","i1.LayoutService","i2","i6","i7","i2.HistoryService","i8","i1","i3.FavoritePagesService","i2.FavoritePagesService","i9","i10","i11","switchMap","i2.SearchService","i3","filter","i2.AppMenuService","i6.LayoutService","i1.AppMenuService","i3.LayoutService","i2.NotificationsService","i2.LayoutService","i2.BreadcrumbService","map"],"mappings":"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"}