@es.framework/ng.ui.theme 2.0.59 → 2.0.61
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":"es.framework-ng.ui.theme.mjs","sources":["../../../../libs/ng.ui.theme/src/lib/services/layout.service.ts","../../../../libs/ng.ui.theme/src/lib/components/nav-items/languages.component.ts","../../../../libs/ng.ui.theme/src/lib/components/nav-items/app.configurator.ts","../../../../libs/ng.ui.theme/src/lib/components/nav-items/nav-items.component.ts","../../../../libs/ng.ui.theme/src/lib/components/routes/routes.component.ts","../../../../libs/ng.ui.theme/src/lib/components/routes/routes.component.html","../../../../libs/ng.ui.theme/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts","../../../../libs/ng.ui.theme/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.html","../../../../libs/ng.ui.theme/src/lib/components/account-layout/account-layout.component.ts","../../../../libs/ng.ui.theme/src/lib/components/account-layout/account-layout.component.html","../../../../libs/ng.ui.theme/src/lib/components/application-layout/application-layout.component.ts","../../../../libs/ng.ui.theme/src/lib/components/application-layout/application-layout.component.html","../../../../libs/ng.ui.theme/src/lib/components/empty-layout/empty-layout.component.ts","../../../../libs/ng.ui.theme/src/lib/components/index.ts","../../../../libs/ng.ui.theme/src/lib/providers/nav-item.provider.ts","../../../../libs/ng.ui.theme/src/lib/providers/styles.provider.ts","../../../../libs/ng.ui.theme/src/lib/providers/user-menu.provider.ts","../../../../libs/ng.ui.theme/src/lib/providers/theme-basic-config.provider.ts","../../../../libs/ng.ui.theme/src/lib/tokens/lazy-styles.token.ts","../../../../libs/ng.ui.theme/src/lib/index.ts","../../../../libs/ng.ui.theme/src/es.framework-ng.ui.theme.ts"],"sourcesContent":["import { Injectable, effect, signal, computed } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { eThemeBasicComponents } from '../enums';\n\nexport interface layoutConfig {\n preset?: string;\n primary?: string;\n surface?: string | undefined | null;\n darkTheme?: boolean;\n menuMode?: string;\n}\n\ninterface LayoutState {\n staticMenuDesktopInactive?: boolean;\n overlayMenuActive?: boolean;\n configSidebarVisible?: boolean;\n staticMenuMobileActive?: boolean;\n menuHoverActive?: boolean;\n}\n\ninterface MenuChangeEvent {\n key: string;\n routeEvent?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n smallScreen=false;\n logoComponentKey = eThemeBasicComponents.Logo;\n routesComponentKey = eThemeBasicComponents.Routes;\n navItemsComponentKey = eThemeBasicComponents.NavItems;\n _config: layoutConfig = {\n preset: 'Aura',\n primary: 'blue',\n surface: null,\n darkTheme: false,\n menuMode: 'static'\n };\n\n _state: LayoutState = {\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n };\n\n layoutConfig = signal<layoutConfig>(this._config);\n\n layoutState = signal<LayoutState>(this._state);\n\n private configUpdate = new Subject<layoutConfig>();\n\n private overlayOpen = new Subject<any>();\n\n private menuSource = new Subject<MenuChangeEvent>();\n\n private resetSource = new Subject();\n\n menuSource$ = this.menuSource.asObservable();\n\n resetSource$ = this.resetSource.asObservable();\n\n configUpdate$ = this.configUpdate.asObservable();\n\n overlayOpen$ = this.overlayOpen.asObservable();\n\n theme = computed(() => (this.layoutConfig()?.darkTheme ? 'light' : 'dark'));\n\n isSidebarActive = computed(() => this.layoutState().overlayMenuActive || this.layoutState().staticMenuMobileActive);\n\n isDarkTheme = computed(() => this.layoutConfig().darkTheme);\n\n getPrimary = computed(() => this.layoutConfig().primary);\n\n getSurface = computed(() => this.layoutConfig().surface);\n\n isOverlay = computed(() => this.layoutConfig().menuMode === 'overlay');\n\n transitionComplete = signal<boolean>(false);\n\n private initialized = false;\n\n constructor() {\n effect(() => {\n const config = this.layoutConfig();\n if (config) {\n this.onConfigUpdate();\n }\n });\n\n effect(() => {\n const config = this.layoutConfig();\n\n if (!this.initialized || !config) {\n this.initialized = true;\n return;\n }\n\n this.handleDarkModeTransition(config);\n });\n }\n\n private handleDarkModeTransition(config: layoutConfig): void {\n if ((document as any).startViewTransition) {\n this.startViewTransition(config);\n } else {\n this.toggleDarkMode(config);\n this.onTransitionEnd();\n }\n }\n\n private startViewTransition(config: layoutConfig): void {\n const transition = (document as any).startViewTransition(() => {\n this.toggleDarkMode(config);\n });\n\n transition.ready\n .then(() => {\n this.onTransitionEnd();\n })\n .catch(() => {});\n }\n\n toggleDarkMode(config?: layoutConfig): void {\n const _config = config || this.layoutConfig();\n if (_config.darkTheme) {\n document.documentElement.classList.add('app-dark');\n } else {\n document.documentElement.classList.remove('app-dark');\n }\n }\n\n private onTransitionEnd() {\n this.transitionComplete.set(true);\n setTimeout(() => {\n this.transitionComplete.set(false);\n });\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.layoutState.update((prev) => ({ ...prev, overlayMenuActive: !this.layoutState().overlayMenuActive }));\n\n if (this.layoutState().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.layoutState.update((prev) => ({ ...prev, staticMenuDesktopInactive: !this.layoutState().staticMenuDesktopInactive }));\n } else {\n this.layoutState.update((prev) => ({ ...prev, staticMenuMobileActive: !this.layoutState().staticMenuMobileActive }));\n\n if (this.layoutState().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n onConfigUpdate() {\n this._config = { ...this.layoutConfig() };\n this.configUpdate.next(this.layoutConfig());\n }\n\n onMenuStateChange(event: MenuChangeEvent) {\n this.menuSource.next(event);\n }\n\n reset() {\n this.resetSource.next(true);\n }\n}\n","import { Component, inject, Signal, signal, effect, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ConfigStateService, LocalizationService, LocalStorageService } from '@es.framework/ng.core/services';\nimport { SessionStateService } from '@es.framework/ng.core/services';\nimport { LanguageInfo } from '@es.framework/ng.core/models';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { SelectModule } from 'primeng/select';\nimport { PopoverModule } from 'primeng/popover';\nimport { TranslateService } from '@ngx-translate/core';\n\n\n\n@Component({\n selector: 'abp-languages',\n standalone: true,\n imports: [SelectModule, FormsModule, PopoverModule, ButtonModule],\n template: `\n @if (languages(); as langs) {\n <div>\n <!-- -->\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-globe\"\n class=\"p-button-text\"\n [title]=\"'اختر اللغة'\"\n (click)=\"overlay.toggle($event)\"\n ></button>\n <p-popover #overlay >\n <ul class=\"w-48\">\n @for (lang of langs; track lang) {\n <li\n class=\"flex items-center justify-between px-3 py-2 cursor-pointer hover:bg-gray-100\"\n (click)=\"onSelectLanguage(lang.cultureName ?? ''); overlay.hide()\"\n >\n <span>{{ lang.displayName }}</span>\n @if (lang.cultureName === selectedLang()) {\n <i class=\"pi pi-check text-green-500\"></i>\n }\n </li>\n }\n </ul>\n </p-popover>\n </div>\n }\n \n `\n})\nexport class LanguagesComponent {\n private configState = inject(ConfigStateService);\n private sessionState = inject(SessionStateService);\n private translate = inject(LocalizationService);\n private localStorageService = inject(LocalStorageService);\n private in18Translate = inject(TranslateService);\n\n // Convert observable to signal\n private languages$ = this.configState.getDeep$('localization.languages');\n readonly languages: Signal<LanguageInfo[]> = toSignal(this.languages$, { initialValue: [] });\n// selectedLangValue = this.sessionState.getLanguage();\n readonly selectedLang = signal(this.sessionState.getLanguage());\n\n constructor() {\n // Update signal when language is changed from external source (optional)\n effect(() => {\n this.selectedLang.set(this.sessionState.getLanguage());\n });\n }\nonSelectLanguage(cultureName: string): void {\n\n\n try {\n this.in18Translate.use(cultureName).subscribe(() => {\n\n });\n this.localStorageService.setItem('language', cultureName);\n this.sessionState.setLanguage(cultureName);\n this.selectedLang.set(cultureName);\n\n } catch (error) {\n\n }\n\n this.updateHtmlDirection(cultureName);\n}\nprivate updateHtmlDirection(languageCode: string): void {\n const htmlElement = document.documentElement;\n if (languageCode === 'ar' || languageCode.includes('ar-')) {\n htmlElement.setAttribute('dir', 'rtl');\n htmlElement.classList.add('rtl');\n } else {\n htmlElement.setAttribute('dir', 'ltr');\n htmlElement.classList.remove('rtl');\n }\n }\n\n\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Component, computed, inject, PLATFORM_ID, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { $t, updatePreset, updateSurfacePalette } from '@primeng/themes';\nimport Aura from '@primeng/themes/aura';\nimport Lara from '@primeng/themes/lara';\nimport Nora from '@primeng/themes/nora';\nimport { PrimeNG } from 'primeng/config';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { LayoutService } from '../../services';\n\nconst presets = {\n Aura,\n Lara,\n Nora\n} as const;\n\ndeclare type KeyOfType<T> = keyof T extends infer U ? U : never;\n\ndeclare type SurfacesType = {\n name?: string;\n palette?: {\n 0?: string;\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n 950?: string;\n };\n};\n\n@Component({\n selector: 'app-configurator',\n standalone: true,\n imports: [CommonModule, FormsModule, SelectButtonModule],\n template: `\n <div class=\"flex flex-col gap-4\">\n <div>\n <span class=\"text-sm text-muted-color font-semibold\">Primary</span>\n <div class=\"pt-2 flex gap-2 flex-wrap justify-start\">\n @for (primaryColor of primaryColors(); track primaryColor.name) {\n <button\n type=\"button\"\n [title]=\"primaryColor.name\"\n (click)=\"updateColors($event, 'primary', primaryColor)\"\n [ngClass]=\"{ 'outline-primary': primaryColor.name === selectedPrimaryColor() }\"\n class=\"border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1\"\n [style]=\"{\n 'background-color': primaryColor?.name === 'noir' ? 'var(--text-color)' : primaryColor?.palette?.['500']\n }\"\n ></button>\n }\n </div>\n </div>\n <div>\n <span class=\"text-sm text-muted-color font-semibold\">Surface</span>\n <div class=\"pt-2 flex gap-2 flex-wrap justify-start\">\n @for (surface of surfaces; track surface.name) {\n <button\n type=\"button\"\n [title]=\"surface.name\"\n (click)=\"updateColors($event, 'surface', surface)\"\n [ngClass]=\"{ 'outline-primary': selectedSurfaceColor() ? selectedSurfaceColor() === surface.name : layoutService.layoutConfig().darkTheme ? surface.name === 'zinc' : surface.name === 'slate' }\"\n class=\"border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1\"\n [style]=\"{\n 'background-color': surface?.name === 'noir' ? 'var(--text-color)' : surface?.palette?.['500']\n }\"\n ></button>\n }\n </div>\n </div>\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-sm text-muted-color font-semibold\">Presets</span>\n <p-selectbutton [options]=\"presets\" [ngModel]=\"selectedPreset()\" (ngModelChange)=\"onPresetChange($event)\" [allowEmpty]=\"false\" size=\"small\" />\n </div>\n @if (showMenuModeButton()) {\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-sm text-muted-color font-semibold\">Menu Mode</span>\n <p-selectbutton [ngModel]=\"menuMode()\" (ngModelChange)=\"onMenuModeChange($event)\" [options]=\"menuModeOptions\" [allowEmpty]=\"false\" size=\"small\" />\n </div>\n }\n </div>\n `,\n\n})\nexport class AppConfigurator {\n router = inject(Router);\n\n config: PrimeNG = inject(PrimeNG);\n\n layoutService: LayoutService = inject(LayoutService);\n\n platformId = inject(PLATFORM_ID);\n\n primeng = inject(PrimeNG);\n\n presets = Object.keys(presets);\n\n showMenuModeButton = signal(!this.router.url.includes('auth'));\n\n menuModeOptions = [\n { label: 'Static', value: 'static' },\n { label: 'Overlay', value: 'overlay' }\n ];\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n const preset = this.layoutService.layoutConfig().preset as 'Aura' | 'Lara' | 'Nora';\n this.onPresetChange(preset ?? \"Aura\");\n }\n}\n\n surfaces: SurfacesType[] = [\n {\n name: 'slate',\n palette: {\n 0: '#ffffff',\n 50: '#f8fafc',\n 100: '#f1f5f9',\n 200: '#e2e8f0',\n 300: '#cbd5e1',\n 400: '#94a3b8',\n 500: '#64748b',\n 600: '#475569',\n 700: '#334155',\n 800: '#1e293b',\n 900: '#0f172a',\n 950: '#020617'\n }\n },\n {\n name: 'gray',\n palette: {\n 0: '#ffffff',\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#030712'\n }\n },\n {\n name: 'zinc',\n palette: {\n 0: '#ffffff',\n 50: '#fafafa',\n 100: '#f4f4f5',\n 200: '#e4e4e7',\n 300: '#d4d4d8',\n 400: '#a1a1aa',\n 500: '#71717a',\n 600: '#52525b',\n 700: '#3f3f46',\n 800: '#27272a',\n 900: '#18181b',\n 950: '#09090b'\n }\n },\n {\n name: 'neutral',\n palette: {\n 0: '#ffffff',\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#e5e5e5',\n 300: '#d4d4d4',\n 400: '#a3a3a3',\n 500: '#737373',\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#171717',\n 950: '#0a0a0a'\n }\n },\n {\n name: 'stone',\n palette: {\n 0: '#ffffff',\n 50: '#fafaf9',\n 100: '#f5f5f4',\n 200: '#e7e5e4',\n 300: '#d6d3d1',\n 400: '#a8a29e',\n 500: '#78716c',\n 600: '#57534e',\n 700: '#44403c',\n 800: '#292524',\n 900: '#1c1917',\n 950: '#0c0a09'\n }\n },\n {\n name: 'soho',\n palette: {\n 0: '#ffffff',\n 50: '#ececec',\n 100: '#dedfdf',\n 200: '#c4c4c6',\n 300: '#adaeb0',\n 400: '#97979b',\n 500: '#7f8084',\n 600: '#6a6b70',\n 700: '#55565b',\n 800: '#3f4046',\n 900: '#2c2c34',\n 950: '#16161d'\n }\n },\n {\n name: 'viva',\n palette: {\n 0: '#ffffff',\n 50: '#f3f3f3',\n 100: '#e7e7e8',\n 200: '#cfd0d0',\n 300: '#b7b8b9',\n 400: '#9fa1a1',\n 500: '#87898a',\n 600: '#6e7173',\n 700: '#565a5b',\n 800: '#3e4244',\n 900: '#262b2c',\n 950: '#0e1315'\n }\n },\n {\n name: 'ocean',\n palette: {\n 0: '#ffffff',\n 50: '#fbfcfc',\n 100: '#F7F9F8',\n 200: '#EFF3F2',\n 300: '#DADEDD',\n 400: '#B1B7B6',\n 500: '#828787',\n 600: '#5F7274',\n 700: '#415B61',\n 800: '#29444E',\n 900: '#183240',\n 950: '#0c1920'\n }\n }\n ];\n\n selectedPrimaryColor = computed(() => {\n return this.layoutService.layoutConfig().primary;\n });\n\n selectedSurfaceColor = computed(() => this.layoutService.layoutConfig().surface);\n\n selectedPreset = computed(() => this.layoutService.layoutConfig().preset);\n\n menuMode = computed(() => this.layoutService.layoutConfig().menuMode);\n\n primaryColors = computed<SurfacesType[]>(() => {\n const presetPalette = presets[this.layoutService.layoutConfig().preset as KeyOfType<typeof presets>].primitive;\n const colors = ['blue', 'green', 'lime', 'orange', 'amber', 'yellow', 'teal', 'cyan', 'sky', 'emerald', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose'];\n const palettes: SurfacesType[] = [{ name: 'noir', palette: {} }];\n\n colors.forEach((color) => {\n palettes.push({\n name: color,\n palette: presetPalette?.[color as KeyOfType<typeof presetPalette>] as SurfacesType['palette']\n });\n });\n\n return palettes;\n });\n\n getPresetExt() {\n const color: SurfacesType = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()) || {};\n const preset = this.layoutService.layoutConfig().preset;\n\n if (color.name === 'noir') {\n return {\n semantic: {\n primary: {\n 50: '{surface.50}',\n 100: '{surface.100}',\n 200: '{surface.200}',\n 300: '{surface.300}',\n 400: '{surface.400}',\n 500: '{surface.500}',\n 600: '{surface.600}',\n 700: '{surface.700}',\n 800: '{surface.800}',\n 900: '{surface.900}',\n 950: '{surface.950}'\n },\n colorScheme: {\n light: {\n primary: {\n color: '{primary.950}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.800}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.950}',\n focusBackground: '{primary.700}',\n color: '#ffffff',\n focusColor: '#ffffff'\n }\n },\n dark: {\n primary: {\n color: '{primary.50}',\n contrastColor: '{primary.950}',\n hoverColor: '{primary.200}',\n activeColor: '{primary.300}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.300}',\n color: '{primary.950}',\n focusColor: '{primary.950}'\n }\n }\n }\n }\n };\n } else {\n if (preset === 'Nora') {\n return {\n semantic: {\n primary: color.palette,\n colorScheme: {\n light: {\n primary: {\n color: '{primary.600}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.700}',\n activeColor: '{primary.800}'\n },\n highlight: {\n background: '{primary.600}',\n focusBackground: '{primary.700}',\n color: '#ffffff',\n focusColor: '#ffffff'\n }\n },\n dark: {\n primary: {\n color: '{primary.500}',\n contrastColor: '{surface.900}',\n hoverColor: '{primary.400}',\n activeColor: '{primary.300}'\n },\n highlight: {\n background: '{primary.500}',\n focusBackground: '{primary.400}',\n color: '{surface.900}',\n focusColor: '{surface.900}'\n }\n }\n }\n }\n };\n } else {\n return {\n semantic: {\n primary: color.palette,\n colorScheme: {\n light: {\n primary: {\n color: '{primary.500}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.600}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.100}',\n color: '{primary.700}',\n focusColor: '{primary.800}'\n }\n },\n dark: {\n primary: {\n color: '{primary.400}',\n contrastColor: '{surface.900}',\n hoverColor: '{primary.300}',\n activeColor: '{primary.200}'\n },\n highlight: {\n background: 'color-mix(in srgb, {primary.400}, transparent 84%)',\n focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)',\n color: 'rgba(255,255,255,.87)',\n focusColor: 'rgba(255,255,255,.87)'\n }\n }\n }\n }\n };\n }\n }\n }\n\n updateColors(event: any, type: 'primary' | 'surface', color: SurfacesType) {\n if (type === 'primary') {\n this.layoutService.layoutConfig.update(state => ({ ...state, primary: color.name }));\n this.applyPalette('primary', color.palette || {});\n } else if (type === 'surface') {\n this.layoutService.layoutConfig.update(state => ({ ...state, surface: color.name }));\n this.applyPalette('surface', color.palette || {});\n }\n\n event.stopPropagation();\n}\n\n applyTheme(type: string, color: any) {\n if (type === 'primary') {\n updatePreset(this.getPresetExt());\n } else if (type === 'surface') {\n\n updateSurfacePalette(color.palette);\n }\n }\nprivate applyPalette(type: 'primary' | 'surface', palette: Record<string,string> = {}) {\n if (!isPlatformBrowser(this.platformId)) return; // SSR-safe\n const root = document.documentElement;\n\n Object.entries(palette).forEach(([key, value]) => {\n if (type === 'primary') {\n root.style.setProperty(`--p-primary-${key}`, value);\n } else if (type === 'surface') {\n root.style.setProperty(`--surface-${key}`, value);\n }\n });\n}\n onPresetChange(presetName: keyof typeof presets) {\n this.layoutService.layoutConfig.update(state => ({ ...state, preset: presetName }));\n const preset = presets[presetName];\n\n // اختر اللون الحالي\n const surfacePalette = this.surfaces.find(s => s.name === this.selectedSurfaceColor())?.palette;\n\n // تطبيق primary + surface\n const primaryPalette = this.primaryColors().find(c => c.name === this.selectedPrimaryColor())?.palette;\n this.applyPalette('primary', primaryPalette || {});\n this.applyPalette('surface', surfacePalette || {});\n}\n\n onMenuModeChange(event: string) {\n this.layoutService.layoutConfig.update((prev) => ({ ...prev, menuMode: event }));\n }\n}\n","import { lastValueFrom, Observable } from 'rxjs';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { StyleClassModule } from 'primeng/styleclass';\nimport { AvatarModule } from 'primeng/avatar';\nimport { MenuModule } from 'primeng/menu';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayModule } from 'primeng/overlay';\n\nimport { VisibleDirective } from '@es.framework/ng.core/directives';\nimport { HasPermissionDirective } from '@es.framework/ng.core/directives';\nimport { ToInjectorPipe, TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { NavItemsService, UserMenuService, ConfigStateService, SessionStateService, LocalizationService } from '@es.framework/ng.core/services';\nimport { UserMenu, CurrentUserDto } from '@es.framework/ng.core/models';\nimport { LanguagesComponent } from './languages.component';\nimport { AppConfigurator } from './app.configurator';\nimport { LayoutService } from '../../services';\nimport { AuthService } from '@es.framework/ng.core/abstracts';\nimport { MenuItem } from 'primeng/api';\nimport { PopoverModule } from 'primeng/popover';\n\n@Component({\n selector: 'app-nav-items',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n StyleClassModule,\n AppConfigurator,\n LanguagesComponent,\n AvatarModule,\n MenuModule,\n ButtonModule,\n OverlayModule,\n TranslatePipe,\n VisibleDirective,\n HasPermissionDirective,\n ToInjectorPipe,\n PopoverModule\n ],\n template: `\n <header class=\"flex items-center justify-between px-6 h-16 bg-white shadow sticky top-0 z-9\">\n <!-- Left: Logo / Title -->\n <div class=\"flex items-center space-x-3 rtl:space-x-reverse\">\n <img src=\"assets/logo.png\" alt=\"Logo\" class=\"h-8 w-8\" />\n <span class=\"text-lg font-semibold text-gray-800\">{{ '' | translate }}</span>\n </div>\n \n <!-- Center: Nav Items -->\n <div class=\"flex items-center space-x-4 rtl:space-x-reverse\">\n <ul class=\"flex space-x-4\">\n @for (item of navItems.items$ | async; track item.id) {\n @if (!item.visible || item.visible(item)) {\n <ng-container *frameworkVisible=\"!item.visible || item.visible(item)\">\n <li class=\"flex items-center\">\n @if (item.component) {\n <ng-container\n [ngComponentOutlet]=\"item.component\"\n [ngComponentOutletInjector]=\"item | toInjector\"\n ></ng-container>\n } @else {\n <button\n pButton\n type=\"button\"\n class=\"p-button-text hover:bg-gray-100 focus:outline-none flex items-center\"\n (click)=\"item.action?.()\"\n >\n <span [innerHTML]=\"item.html\"></span>\n </button>\n }\n </li>\n </ng-container>\n }\n }\n </ul>\n </div>\n \n <!-- Right: Actions -->\n <div class=\"flex items-center rtl:space-x-reverse\">\n <!-- Configurator -->\n \n <div>\n <!-- -->\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-palette\"\n class=\"p-button-text\"\n [title]=\"''\"\n (click)=\"overlay.toggle($event)\"\n >\n </button>\n \n <p-popover #overlay >\n <app-configurator />\n </p-popover>\n </div>\n \n \n <!-- Dark Mode Toggle -->\n <button\n pButton\n type=\"button\"\n [icon]=\"layoutService.isDarkTheme() ?'pi pi-moon': 'pi pi-sun'\"\n class=\"p-button-text\"\n (click)=\"toggleDarkMode()\">\n </button>\n \n <!-- Language Switcher -->\n <abp-languages></abp-languages>\n \n <!-- User Menu -->\n <div class=\"relative\">\n <button\n class=\"p-link p-2\"\n (click)=\"menu.toggle($event)\"\n aria-label=\"User menu\"\n >\n <p-avatar\n [label]=\"loading ? '' : userName\"\n [icon]=\"loading ? 'pi pi-spinner' : ''\"\n [class]=\"{'pi-spin': loading}\"\n shape=\"circle\"\n class=\"bg-blue-600 text-white cursor-pointer\"\n [title]=\"(currentUser$ | async)?.name || ''\"\n ></p-avatar>\n </button>\n \n <p-menu\n #menu\n [model]=\"userMenuItems\"\n [popup]=\"true\"\n [appendTo]=\"'body'\"\n styleClass=\"w-64 sm:w-72 shadow-lg rounded-md\"\n >\n <ng-template pTemplate=\"start\">\n <div class=\"px-5 py-4 border-b border-gray-200 bg-gray-50 flex flex-col items-center text-center\">\n <p-avatar\n [label]=\"userName\"\n shape=\"circle\"\n size=\"xlarge\"\n styleClass=\"bg-blue-600 text-white mb-3 shadow-lg\"\n [title]=\"(currentUser$ | async)?.name || ''\"\n ></p-avatar>\n <h5 class=\"text-xl font-semibold text-gray-800 leading-tight\">\n {{ (currentUser$ | async)?.name || 'اسم المستخدم' }}\n </h5>\n <p class=\"text-sm text-gray-600 truncate max-w-full\">\n {{ (currentUser$ | async)?.email || 'لا يوجد بريد إلكتروني' }}\n </p>\n @if ((selectedTenant$ | async); as tenant) {\n <span\n class=\"inline-block mt-2 px-3 py-1 text-xs rounded-full font-semibold\"\n [ngClass]=\"{\n 'bg-green-100 text-green-800': true\n }\"\n >\n {{ tenant?.name || '_' }}\n </span>\n }\n </div>\n </ng-template>\n \n <ng-template pTemplate=\"item\" let-item>\n <!-- *frameworkVisible=\"!item.visible || item.visible(item)\" -->\n <ng-container >\n <!-- *hasPermission=\"item.requiredPolicy\" -->\n <a\n \n class=\"p-menuitem-link flex items-center space-x-3 rtl:space-x-reverse px-5 py-2 hover:bg-gray-100 rounded-md\"\n [ngClass]=\"item.styleClass || ''\"\n (click)=\"item.command ? item.command() : null\"\n [routerLink]=\"item.routerLink ? item.routerLink : null\"\n tabindex=\"0\"\n >\n @if (item.component) {\n <ng-container\n [ngComponentOutlet]=\"item.component\"\n [ngComponentOutletInjector]=\"item | toInjector\"\n ></ng-container>\n } @else {\n <i [class]=\"item.icon + ' text-lg text-gray-600'\"></i>\n <span class=\"text-gray-700\">{{ item.label | translate }}</span>\n }\n </a>\n </ng-container>\n </ng-template>\n </p-menu>\n </div>\n \n <!-- Logout Button (separate from menu) -->\n <!-- <button\n type=\"button\"\n class=\"layout-topbar-action\"\n (click)=\"logout()\"\n title=\"تسجيل الخروج\"\n >\n <i class=\"pi pi-sign-out\"></i>\n </button> -->\n </div>\n </header>\n `\n})\nexport class NavItemsComponent implements OnInit {\n private translate = inject(LocalizationService);\n private authService = inject(AuthService);\n private configState = inject(ConfigStateService);\n private sessionState = inject(SessionStateService);\n public readonly navItems = inject(NavItemsService);\n public readonly userMenu = inject(UserMenuService);\n public readonly layoutService = inject(LayoutService);\n\n loading = false;\n currentUser$!: Observable<CurrentUserDto>;\n selectedTenant$!: Observable<any>;\n userMenuItems: MenuItem[] = [];\n\n constructor() {\n this.currentUser$ = this.configState.getOne$('currentUser');\n this.selectedTenant$ = this.sessionState.getTenant$();\n }\n\n ngOnInit() {\n // Get user menu items from the service and convert to PrimeNG format\n this.userMenu.items$.subscribe(async items => {\n this.userMenuItems = await this.convertToPrimeMenuItems(items);\n\n });\n }\n private async convertToPrimeMenuItems(userMenus: UserMenu[]): Promise<MenuItem[]> {\n const primeItems: MenuItem[] = [];\n\n for (const userMenu of userMenus) {\n // Check visibility if defined\n let isVisible = true;\n if (userMenu.visible) {\n const visibilityResult = userMenu.visible(userMenu);\n if (visibilityResult instanceof Promise) {\n isVisible = await visibilityResult;\n } else if (visibilityResult instanceof Observable) {\n isVisible = await lastValueFrom(visibilityResult);\n } else {\n isVisible = !!visibilityResult;\n }\n }\n\n if (!isVisible) continue;\n\n\n // Create PrimeNG menu item\n const primeItem: MenuItem = {\n id: userMenu.id?.toString(),\n label: userMenu.textTemplate?.text || '',\n icon: userMenu.textTemplate?.icon || '',\n // routerLink: userMenu.component ? undefined : ['#'],\n routerLink: null,\n command: userMenu.action ? (event) => {\n if (userMenu.action) {\n userMenu.action();\n // if (this.menu) {\n // this.menu.hide();\n // }\n }\n } : undefined,\n visible: isVisible,\n data: {\n $implicit: userMenu // Pass the original userMenu as data\n }\n };\n\n // If it has a component, set it up\n if (userMenu.component) {\n // primeItem.data = {\n // ...primeItem.data,\n // component: userMenu.component\n // };\n }\n\n // Handle badge\n if (userMenu.badge) {\n primeItem.badge = userMenu.badge.count?.toString() || '';\n primeItem.badgeStyleClass = `p-badge p-badge-${userMenu.badge.color || 'danger'}`;\n }\n\n primeItems.push(primeItem);\n }\n\n return primeItems;\n }\n toggleDarkMode() {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n darkTheme: !state.darkTheme\n }));\n }\n\n get userName(): string {\n // This will be updated when currentUser$ emits\n let name = '?';\n this.currentUser$.subscribe(user => {\n if (user?.name) {\n const names = user.name.split(' ');\n if (names.length >= 2) {\n name = `${names[0][0]}`;\n } else if (names[0]) {\n name = names[0][0];\n }\n }\n });\n return name;\n }\n\n get userStatus(): string {\n let status = this.translate.instant('UNKNOWN');\n this.currentUser$.subscribe(user => {\n if (!user) return;\n this.translate.instant('ACTIVE');\n });\n return status;\n }\n\n onProfileSettings() {\n // Navigate to profile settings\n console.log('Profile settings clicked');\n }\n\n onChangePassword() {\n // Navigate to change password\n console.log('Change password clicked');\n }\n\n logout() {\n this.authService.logout().subscribe();\n }\n\n get smallScreen(): boolean {\n return window.innerWidth < 992;\n }\n\n navigateToLogin() {\n this.authService.navigateToLogin();\n }\n}\n","import { Component, HostListener, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, RouterModule } from '@angular/router';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\nimport { StyleClassModule } from 'primeng/styleclass';\nimport { ConfigStateService, LocalizationService } from '@es.framework/ng.core/services';\nimport { RoutesService } from '@es.framework/ng.core/services';\nimport { Route } from '@es.framework/ng.core/models';\nimport { LayoutService } from '../../services/layout.service';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'app-routes',\n standalone: true,\n imports: [CommonModule, RouterModule, TooltipModule, TranslatePipe, StyleClassModule],\n styleUrls: ['./routes.component.scss'],\n templateUrl:'./routes.component.html'\n})\nexport class RoutesComponent {\n subSidebarVisible = false;\n sidebarVisible = true;\n isMobile = false;\n\n private router = inject(Router);\n public localization = inject(LocalizationService);\n public readonly layoutService = inject(LayoutService);\n public readonly routesService = inject(RoutesService);\n configState = inject(ConfigStateService);\n\n secondToLastLevel$!: Observable<MenuItem[]>;\n private _menuItemsSubject = new BehaviorSubject<MenuItem[]>([]);\n\n // menuItems$!: Observable<MenuItem[]>;\npublic menuItems$ = this._menuItemsSubject.asObservable();\n\n constructor() {\n // this.menuItems$ = this.routesService.visible$.pipe(\n // map(routes => this.buildItems(routes).map(item => ({ ...item, expanded: true })))\n // );\n\n this.routesService.visible$.pipe(\n map(routes => this.buildItems(routes).map(item => ({ ...item, expanded: true })))\n ).subscribe(items => this._menuItemsSubject.next(items));\n }\n\n ngOnInit() {\n this.checkViewport();\n this.secondToLastLevel$ = this.menuItems$.pipe(\n map(items => {\n const result: MenuItem[] = [];\n for (const item of items) {\n if (item.items && item.items.length > 0) {\n // إضافة جميع الأبناء المباشرين (المستوى الثاني)\n result.push(...item.items);\n }\n }\n return result;\n })\n);\n // this.secondToLastLevel$ = this.menuItems$.pipe(\n // map(items => this.getSecondToLastLevel(items))\n // );\n\n\n }\n\ngetSecondToLastLevel(items: MenuItem[]): MenuItem[] {\n const result: MenuItem[] = [];\n\n const traverse = (nodes: MenuItem[]) => {\n for (const node of nodes) {\n if (node.items && node.items.length > 0) {\n // Check if any child has its own children\n const hasGrandChildren = node.items.some(c => c.items && c.items.length > 0);\n if (!hasGrandChildren) {\n // Node is right before the last level\n result.push(node);\n } else {\n traverse(node.items);\n }\n }\n }\n };\n\n traverse(items);\n return result;\n}\n\n onParentClick(item: any) {\n // toggle expand\n item.expanded = !item.expanded;\n\n // TODO: Navigate to shell route if needed\n // if (item.items?.length) {\n // // Navigate to shell route\n // // Split the path into segments for Angular\n // const pathSegments = item.routerLink\n // ? (Array.isArray(item.routerLink) ? item.routerLink : item.routerLink.split('/').filter(Boolean))\n // : [];\n\n // this.router.navigate(pathSegments);\n // } else if (item.routerLink) {\n // const pathSegments = Array.isArray(item.routerLink) ? item.routerLink : item.routerLink.split('/').filter(Boolean);\n // this.router.navigate(pathSegments);\n // }\n\n // this.subSidebarVisible = true;\n}\n\n\n\n @HostListener('window:resize')\n onResize() { this.checkViewport(); }\n\n checkViewport() {\n this.isMobile = window.innerWidth < 1024;\n if (this.isMobile) {\n this.sidebarVisible = false;\n this.subSidebarVisible = false;\n } else {\n this.sidebarVisible = true;\n this.subSidebarVisible = true;\n }\n }\n\n toggleAll() {\n if (this.isMobile) {\n this.sidebarVisible = !this.sidebarVisible;\n this.subSidebarVisible = this.sidebarVisible;\n } else {\n this.subSidebarVisible = !this.subSidebarVisible;\n }\n }\n\n openMenu() {\n this.sidebarVisible = true;\n this.subSidebarVisible = true;\n }\n\n\nexpandPath(items: MenuItem[], target: MenuItem): boolean {\n for (const item of items) {\n if (item === target) return true;\n\n if (item.items && item.items.length > 0) {\n const found = this.expandPath(item.items, target);\n if (found) {\n item.expanded = true; // expand parent\n return true;\n }\n }\n }\n return false;\n}\n\nonMainClick(target: MenuItem) {\n const items = this._menuItemsSubject.value;\n const isExternal = (target as any).isExternal ?? false;\n\n if (!target.items?.length) {\n if (isExternal && target.url) {\n window.open(target.url, '_blank', 'noopener,noreferrer');\n\n if (this.isMobile) this.closeMenu();\n\n this.expandPath(items, target);\n this._menuItemsSubject.next([...items]);\n return;\n }\n\n if (target.routerLink) {\n const currentUrl = this.router.url;\n const targetUrl = Array.isArray(target.routerLink)\n ? target.routerLink[0]\n : target.routerLink;\n\n if (currentUrl !== targetUrl) {\n this.router.navigate(\n Array.isArray(target.routerLink) ? target.routerLink : [target.routerLink]\n );\n }\n\n if (this.isMobile) this.closeMenu();\n\n this.expandPath(items, target);\n this._menuItemsSubject.next([...items]);\n return;\n }\n }\n\n target.expanded = !target.expanded;\n this.subSidebarVisible = target.expanded;\n this._menuItemsSubject.next([...items]);\n}\n\n toggleExpand(item: any) {\n item.expanded = !item.expanded;\n }\n\n closeMenu() {\n this.subSidebarVisible = false;\n this.sidebarVisible = false;\n // this.menuItems$.subscribe(items => {\n // items.forEach(item => item.expanded = false);\n // });\n }\n\n // @HostListener('document:keydown.escape')\n // onEsc() {\n // this.closeMenu();\n // }\n\n onNavigate() {\n if (this.isMobile) {\n this.closeMenu();\n }\n }\n\n private buildItems(routes: Route[]): MenuItem[] {\n return routes\n .filter(r => !r.requiredPolicy || this.hasPermission(r.requiredPolicy))\n .map(r => this.createItem(r));\n }\n\n private createItem(route: Route): MenuItem {\n const item: MenuItem = {\n label: route.name,\n icon: route.iconClass,\n // routerLink: route.path ? [route.path] : undefined,\n title: route.name,\n expanded: false\n };\n\n if (route.isExternal) {\n item.url = route.path;\n item.target = '_blank';\n } else if (route.path) {\n item.routerLink = [route.path];\n }\n (item as any).isExternal = route.isExternal ?? false;\n (item as any).addRoute = route.addRoute ?? '';\n\n if (this.routesService.hasChildren(route.name)) {\n item.items = this.buildItems(route.children ?? []);\n }\n else{\n // TODO: check if grant permission\n // if(){\n // item['actionButtons']= [\n // {\n // icon: 'pi pi-plus',\n // tooltip: 'ADD',\n // click: (item:any, event:any) => {\n // this.router.navigate([route.path,'add']);\n // },\n // visible: (item:any) => true\n // }\n // ];\n // }\n }\n return item;\n }\n\n private hasPermission(policy: string): boolean {\n // implement using permission service\n return true;\n }\n\ngetLinkProps(item: any) {\n const isExternal = item.isExternal ?? false;\n\n return {\n isExternal,\n href: isExternal ? item.url ?? null : null,\n routerLink: !isExternal ? item.routerLink ?? null : null,\n addRoute: item.addRoute ?? ''\n };\n}\n\n}\n","<aside class=\"flex h-screen bg-white dark:bg-gray-900 transition-all duration-300\"\n [ngClass]=\"{ 'w-0 overflow-hidden': !sidebarVisible && isMobile }\">\n\n <!-- 🎨 الشريط الجانبي الرئيسي -->\n <div\n class=\"flex flex-col justify-between pt-4 pb-2 w-16 border-l shadow-xl\n bg-gradient-to-b from-primary-500 via-primary-600 to-primary-700\n text-white rounded-r-3xl\">\n\n <!-- 🔝 الأعلى -->\n <div class=\"flex flex-col items-center gap-4\">\n <img src=\"/assets/logo.png\" alt=\"Logo\"\n class=\"w-9 h-9 mt-1 rounded-lg shadow-sm\"/>\n\n <!-- زر القائمة -->\n <!-- [pTooltip]=\"'TOGGLE_MENU' | translate\" -->\n <button (click)=\"toggleAll()\"\n tooltipPosition=\"right\"\n class=\"text-white hover:scale-110 transition-transform duration-200\">\n <i class=\"pi pi-bars text-lg\"></i>\n </button>\n\n <!-- أيقونات -->\n @for (item of secondToLastLevel$ | async; track item) {\n <div class=\"relative flex flex-col items-center\">\n <!-- الأيقونة -->\n <div (click)=\"onMainClick(item)\"\n [pTooltip]=\"item.label | translate\"\n tooltipPosition=\"right\"\n class=\"relative flex items-center justify-center w-10 h-10 rounded-xl cursor-pointer\n hover:bg-white/20 transition-all duration-200\"\n [ngClass]=\"{ 'bg-white/30 scale-105 shadow-inner': item.expanded }\">\n <i [class]=\"item.icon + ' text-xl'\"></i>\n </div>\n </div>\n }\n </div>\n\n <!-- ⚙️ الأسفل -->\n <div class=\"flex flex-col items-center pb-3 text-white/80\">\n <i class=\"pi pi-cog text-lg hover:text-white cursor-pointer transition\"></i>\n </div>\n </div>\n\n <!-- 📋 القائمة الفرعية -->\n @if (subSidebarVisible) {\n <div\n class=\"w-[290px] max-w-[290px] min-w-[260px] border-l border-gray-200 dark:border-gray-700 glass-bg animate-slideIn\n shadow-2xl rounded-l-3xl p-4 rtl:text-right overflow-y-auto overflow-x-hidden transition-all duration-300\"\n [ngClass]=\"{ 'absolute top-0 right-16 h-full z-40': isMobile }\">\n <!-- زر رجوع -->\n <button (click)=\"closeMenu()\"\n class=\"flex items-center gap-2 mb-4 text-gray-500 dark:text-gray-300 hover:text-primary-600 transition\">\n <i class=\"pi\" [ngClass]=\"isMobile ? 'pi-angle-right' : 'pi-angle-right'\"></i>\n <span>{{ 'back' | translate }}</span>\n </button>\n <!-- Recursive rendering -->\n @if (menuItems$ | async; as menuItems) {\n <ng-container *ngTemplateOutlet=\"renderMenu; context:{ $implicit: menuItems, level: 1 }\"></ng-container>\n}\n\n<ng-template #renderMenu let-items let-level=\"level\">\n @for (item of items; track item) {\n\n @if (!item.items?.length) {\n @let link = getLinkProps(item);\n <div class=\"mb-1\">\n @if (link.isExternal) {\n <a [href]=\"link.href\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n class=\"flex items-center gap-2 px-3 py-2 rounded-lg transition-all hover:bg-primary-50 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-200\">\n <i [class]=\"item.icon + ' text-base'\"></i>\n <span class=\"min-w-0 break-words whitespace-normal\">{{ item.label | translate }}</span>\n <i class=\"pi pi-external-link text-[10px] opacity-50\"></i>\n </a>\n } @else {\n <div class=\"flex items-center gap-2\">\n <a [routerLink]=\"link.routerLink\"\n (click)=\"onNavigate()\"\n routerLinkActive=\"active-link\"\n class=\"flex-1 min-w-0 flex items-center gap-2 px-2 py-1 rounded-lg transition-all hover:bg-primary-50 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-200\">\n <i [class]=\"item.icon + ' text-base'\"></i>\n <span class=\"min-w-0 break-words whitespace-normal\">\n {{ item.label | translate }}</span>\n </a>\n\n@if (link.addRoute) {\n <a\n [routerLink]=\"[link.addRoute]\"\n (click)=\"$event.stopPropagation(); onNavigate()\"\n class=\"shrink-0 inline-flex items-center justify-center w-7 h-7 rounded-full text-gray-400 hover:text-primary-500 hover:bg-primary-50 dark:text-gray-500 dark:hover:text-primary-400 dark:hover:bg-primary-900/20 transition-all duration-200\"\n [pTooltip]=\"'ADD' | translate\"\n tooltipPosition=\"top\">\n <i class=\"pi pi-plus text-xs\"></i>\n </a>\n}\n </div>\n }\n</div>\n}\n\n @if (item.items?.length) {\n <div class=\"mb-1\">\n\n <div\n (click)=\"onParentClick(item)\"\n [style.font-size.rem]=\"1.1 - (level * 0.05)\"\n [ngClass]=\"{\n 'font-bold': level === 1,\n 'font-semibold': level === 2,\n 'font-medium': level >= 3,\n 'bg-primary-50 text-primary-700 border-r-4 border-primary-500': item.expanded\n }\"\n class=\"flex justify-between items-center py-2 px-3 rounded-lg cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 transition text-gray-800 dark:text-gray-200\">\n\n <div class=\"flex items-center gap-2\">\n\n <i [class]=\"item.icon + ' text-base'\"></i>\n\n <span>\n {{ item.label | translate }}\n </span>\n\n </div>\n\n <i\n class=\"pi\"\n [ngClass]=\"item.expanded ? 'pi-chevron-down' : 'pi-chevron-left'\"\n style=\"font-size:0.6rem;\">\n </i>\n\n </div>\n\n @if (item.expanded) {\n <div class=\"mr-4 border-r border-gray-200 dark:border-gray-700 pr-2 mt-1\">\n\n <ng-container\n *ngTemplateOutlet=\"renderMenu; context:{ $implicit: item.items, level: level + 1 }\">\n </ng-container>\n\n </div>\n }\n\n </div>\n }\n\n }\n</ng-template>\n\n </div>\n}\n\n</aside>\n\n<!-- 🌟 الزر العائم الحديث -->\n@if (isMobile && !sidebarVisible) {\n <button\n class=\"floating-btn\"\n (click)=\"openMenu()\"\n pTooltip=\"{{ 'MENU.OPEN' | translate }}\"\n tooltipPosition=\"top\">\n <img src=\"/assets/logo.png\" alt=\"App Icon\" />\n </button>\n}\n","\n\nimport { Component } from '@angular/core';\n\n@Component({\n standalone: true,\n imports: [],\n selector: 'abp-auth-wrapper',\n templateUrl: './auth-wrapper.component.html',\n // providers: [AuthWrapperService], // in account_core\n})\nexport class AuthWrapperComponent {\n constructor(/* public service: AuthWrapperService */) {}\n}\n"," <ng-content></ng-content>\n\n\n<!-- <div class=\"row\">\n <div class=\"mx-auto col col-md-5\">\n @if ((service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible) {\n <abp-tenant-box\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\n ></abp-tenant-box>\n }\n\n <div class=\"abp-account-container\">\n @if (service.enableLocalLogin$ | async) {\n <div class=\"card mt-3 shadow-sm rounded\">\n <div class=\"card-body p-5\">\n <ng-content></ng-content>\n </div>\n </div>\n } @else {\n <div class=\"alert alert-warning\">\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | localize }}</strong>\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | localize }}\n </div>\n }\n </div>\n </div>\n</div> -->\n","import { AfterViewInit, Component } from '@angular/core';\nimport { LayoutService } from '../../services/layout.service';\nimport { SubscriptionService } from '@es.framework/ng.core/services';\nimport { eLayoutType } from '@es.framework/ng.core/models';\n\nimport { RouterOutlet } from '@angular/router';\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\nimport { RoutesComponent } from '../routes/routes.component';\nimport { AuthWrapperComponent } from './auth-wrapper/auth-wrapper.component';\nimport { ReplaceableTemplateDirective } from \"@es.framework/ng.core/directives\";\n\n@Component({\n standalone: true,\n imports: [RoutesComponent, NavItemsComponent, RouterOutlet, AuthWrapperComponent, ReplaceableTemplateDirective],\n selector: 'abp-layout-account',\n templateUrl: './account-layout.component.html',\n providers: [LayoutService, SubscriptionService],\n})\nexport class AccountLayoutComponent implements AfterViewInit {\n // required for dynamic component\n static type = eLayoutType.account;\n\n authWrapperKey = 'Account.AuthWrapperComponent';\n\n constructor(public service: LayoutService) {}\n\n ngAfterViewInit() {\n // this.service.subscribeWindowSize();\n }\n}\n"," <abp-auth-wrapper\n *abpReplaceableTemplate=\"{\n componentKey: authWrapperKey\n }\"\n >\n <router-outlet #outlet=\"outlet\"></router-outlet>\n </abp-auth-wrapper>\n","\nimport { AfterViewInit, Component, Inject, inject, Injector, NgZone, PLATFORM_ID, Renderer2 } from '@angular/core';\nimport { LayoutService } from '../../services/layout.service';\nimport { SessionStateService, SubscriptionService } from '@es.framework/ng.core/services';\nimport { eLayoutType } from '@es.framework/ng.core/models';\nimport { isPlatformBrowser } from '@angular/common';\nimport { RoutesComponent } from '../routes/routes.component';\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\nimport { NavigationEnd, Router, RouterOutlet } from '@angular/router';\nimport { LocalizationService } from '@es.framework/ng.core/services';\nimport { ReplaceableTemplateDirective } from '@es.framework/ng.core/directives';\n// import { StyleLoaderService } from '@es.framework/ng.ui.shared/services';\nimport Swal from 'sweetalert2';\nimport { filter, Subscription } from 'rxjs';\n\n@Component({\n standalone: true,\n imports: [RoutesComponent, NavItemsComponent, RouterOutlet, ReplaceableTemplateDirective],\n selector: 'abp-layout-application',\n templateUrl: './application-layout.component.html',\n animations: [/* slideFromBottom, */ /* appModuleAnimation() */],\n providers: [LayoutService, SubscriptionService],\n})\nexport class ApplicationLayoutComponent implements AfterViewInit {\n public readonly localization = inject(LocalizationService);\n public readonly service = inject(LayoutService);\n public readonly platformId = inject(PLATFORM_ID);\n\n // required for dynamic component\n static type = eLayoutType.application;\n overlayMenuOpenSubscription: Subscription;\n// @Input() showTopbar= true;\n menuOutsideClickListener: any;\n private sessionState = inject(SessionStateService);\n constructor(\n public layoutService: LayoutService,\n public renderer: Renderer2,\n public router: Router,\n public _zone: NgZone,\n // private _signalRService:SignalRService,\n private translate: LocalizationService,\n ) {\n\n var isBrowser = isPlatformBrowser(this.platformId);\n\n if (isBrowser) {\n var currentLanguage = 'ar';\n const savedLanguage = localStorage.getItem('language');\n var lang = this.sessionState.getLanguage()\n\n if (savedLanguage) {\n currentLanguage = savedLanguage;\n }\n if (lang) {\n currentLanguage = lang;\n }\n try {\n // this.translate.use(currentLanguage).subscribe(() => {\n // this.sessionState.setLanguage(currentLanguage);\n // });\n this.sessionState.setLanguage(currentLanguage);\n\n } catch (error) {\n\n }\n this.updateHtmlDirection(currentLanguage);\n\n const saved = localStorage.getItem('darkTheme');\nthis.layoutService.layoutConfig.update((state) => ({ ...state, darkTheme:saved === 'true' }));\n }\n this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', (event) => {\n if (this.isOutsideClicked(event)) {\n this.hideMenu();\n }\n });\n }\n\n if (this.layoutService.layoutState().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.hideMenu();\n });\n }\n\n private updateHtmlDirection(languageCode: string): void {\n const htmlElement = document.documentElement;\n if (languageCode === 'ar' || languageCode.includes('ar-')) {\n htmlElement.setAttribute('dir', 'rtl');\n htmlElement.classList.add('rtl');\n } else {\n //TODO\n htmlElement.setAttribute('dir', 'ltr');\n htmlElement.classList.remove('rtl');\n }\n }\n isOutsideClicked(event: MouseEvent) {\n if (typeof document === 'undefined') return;\n const sidebarEl = document.querySelector('.layout-sidebar');\n const topbarEl = document.querySelector('.layout-menu-button');\n const eventTarget = event.target as Node;\n\n return !(sidebarEl?.isSameNode(eventTarget) || sidebarEl?.contains(eventTarget) || topbarEl?.isSameNode(eventTarget) || topbarEl?.contains(eventTarget));\n }\n\n hideMenu() {\n this.layoutService.layoutState.update((prev) => ({ ...prev, overlayMenuActive: false, staticMenuMobileActive: false, menuHoverActive: false }));\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n blockBodyScroll(): void {\n if (typeof document === 'undefined') return;\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (typeof document === 'undefined') return;\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n get containerClass() {\n return {\n 'layout-overlay': this.layoutService.layoutConfig().menuMode === 'overlay',\n 'layout-static': this.layoutService.layoutConfig().menuMode === 'static',\n 'layout-static-inactive': this.layoutService.layoutState().staticMenuDesktopInactive && this.layoutService.layoutConfig().menuMode === 'static',\n 'layout-overlay-active': this.layoutService.layoutState().overlayMenuActive,\n 'layout-mobile-active': this.layoutService.layoutState().staticMenuMobileActive\n };\n }\n\n ngOnInit(): void {\n }\n ngOnDestroy() {\n if (this.overlayMenuOpenSubscription) {\n this.overlayMenuOpenSubscription.unsubscribe();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n ngAfterViewInit() {\n // this.service.subscribeWindowSize();\n try {\n var mainColor = \"hsl(195,64.7%,26.2%\";\n document.body.style.setProperty('--main-theme-color', mainColor);\n // document.documentElement.style.setProperty('--main-theme-color', this.apptheme.mainColor);\n // Find the <meta> tag with the name \"theme-color\"\n var metaTag = document.querySelector('meta[name=\"theme-color\"]');\n\n // Check if the <meta> tag exists\n if (metaTag) {\n // Update the value of the content attribute\n metaTag.setAttribute('content', mainColor);\n }\n\n var metaTag1 = document.querySelector('meta[name=\"apple-mobile-web-status-bar\"]');\n\n // Check if the <meta> tag exists\n if (metaTag1) {\n // Update the value of the content attribute\n metaTag1.setAttribute('content', mainColor);\n }\n } catch (error) {\n\n }\n\n try {\n Swal.close();\n } catch (error) {\n\n }\n try {\n // new StyleLoaderService()\n // .load(\n // \"https://site-assets.fontawesome.com/releases/v6.7.2/css/all.css\",\n // \"https://cdn.jsdelivr.net/npm/primeicons@7.0.0/primeicons.min.css\",\n // // \"/assets/filepond.min.css\",\n // // \"/assets/bootstrap-datepicker.min.css\",\n // // \"/assets/activereports/styles/ar-js-viewer.css\",\n // // \"/assets/activereports/styles/ar-js-ui.css\",\n\n\n // )\n // .then(() => {\n\n // });\n } catch (error) {\n\n }\n }\n}\n","\n\n<div class=\"flex h-screen overflow-hidden\">\n\n <!-- Sidebar stays fixed -->\n\n <app-routes\n *abpReplaceableTemplate=\"{\n componentKey: service.routesComponentKey,\n inputs: { smallScreen: { value: service.smallScreen } }\n }\"\n class=\"mb-2 md:mb-0\"\n ></app-routes>\n\n <!-- Main content scrolls -->\n <main class=\"flex-1 flex flex-col overflow-hidden\">\n\n <!-- Optional Topbar -->\n <!-- @if (showTopbar) { -->\n\n <app-nav-items\n *abpReplaceableTemplate=\"{\n componentKey: service.navItemsComponentKey\n }\"\n ></app-nav-items>\n\n <!-- p-6 space-y-6 -->\n <div class=\"flex-1 overflow-y-auto\">\n <router-outlet #outlet=\"outlet\"></router-outlet>\n </div>\n\n <!-- <app-footer></app-footer> -->\n\n </main>\n\n </div>\n\n","import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { eLayoutType } from '@es.framework/ng.core/models';\n\n@Component({\n standalone: true,\n imports:[RouterModule],\n selector: 'abp-layout-empty',\n template: ` <router-outlet></router-outlet> `,\n})\nexport class EmptyLayoutComponent {\n static type = eLayoutType.empty;\n}\n","export * from './account-layout/account-layout.component';\nexport * from './account-layout/auth-wrapper/auth-wrapper.component';\nexport * from './application-layout/application-layout.component';\nexport * from './empty-layout/empty-layout.component';\n// export * from './nav-items/languages.component';\nexport * from './nav-items/nav-items.component';\nexport * from './routes/routes.component';\n// export * from './validation-error/validation-error.component';\n","import { NavItemsService } from '@es.framework/ng.core/services';\n\nimport { inject, provideAppInitializer } from '@angular/core';\nimport { eThemeBasicComponents } from '../enums/components';\nimport { LanguagesComponent } from '../components/nav-items/languages.component';\n\nexport const BASIC_THEME_NAV_ITEM_PROVIDERS = [\n provideAppInitializer(() => {\n configureNavItems();\n }),\n];\n\n\nexport function configureNavItems() {\n const navItems = inject(NavItemsService);\n navItems.addItems([\n // {\n // id: eThemeBasicComponents.Languages,\n // order: 100,\n // component: LanguagesComponent,\n // },\n // {\n // id: eThemeBasicComponents.CurrentUser,\n // order: 100,\n // component: CurrentUserComponent,\n // },\n ]);\n}\n","\nimport { APP_INITIALIZER, inject, provideAppInitializer, Provider } from '@angular/core';\nimport { AccountLayoutComponent } from '../components/account-layout/account-layout.component';\nimport { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';\nimport { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';\nimport { eThemeBasicComponents } from '../enums/components';\nimport { ReplaceableComponentsService } from '@es.framework/ng.core/services';\n\nexport const BASIC_THEME_STYLES_PROVIDERS = [\n provideAppInitializer(() => {\n const initializerFn = configureStyles(\n // inject(DomInsertionService),\n inject(ReplaceableComponentsService),\n );\n\n return initializerFn();\n }),\n\n];\n\nexport function configureStyles(\n // domInsertion: DomInsertionService,\n replaceableComponents: ReplaceableComponentsService,\n) {\n return () => {\n // domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));\n\n initLayouts(replaceableComponents);\n };\n}\n\nfunction initLayouts(replaceableComponents: ReplaceableComponentsService) {\n replaceableComponents.add({\n key: eThemeBasicComponents.ApplicationLayout,\n component: ApplicationLayoutComponent,\n });\n replaceableComponents.add({\n key: eThemeBasicComponents.AccountLayout,\n component: AccountLayoutComponent,\n });\n replaceableComponents.add({\n key: eThemeBasicComponents.EmptyLayout,\n component: EmptyLayoutComponent,\n });\n}\n","\n\nimport { Injector, inject, provideAppInitializer } from '@angular/core';\nimport { eUserMenuItems } from '../enums/user-menu-items';\nimport { AuthService } from '@es.framework/ng.core/abstracts';\nimport { NAVIGATE_TO_MANAGE_PROFILE } from '@es.framework/ng.core/tokens';\nimport { UserMenuService,SessionStateService, SsrCookieService } from '@es.framework/ng.core/services';\nimport { NavItem } from '@es.framework/ng.core/models';\n\nexport const BASIC_THEME_USER_MENU_PROVIDERS = [\n provideAppInitializer(() => {\n const initializerFn = configureUserMenu(inject(Injector));\n return initializerFn();\n }),\n];\n\n\nexport function configureUserMenu(injector: Injector) {\n const sessionService = injector.get(SessionStateService);\n const userMenu = injector.get(UserMenuService);\n const authService = injector.get(AuthService);\n const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);\n\n\n return () => {\n userMenu.addItems(\n [\n // // Only show when impersonated\n // ...(sessionService.impersonatorUserId\n // ? [{\n // id: eUserMenuItems.BackToMyAccount,\n // order: 0,\n // textTemplate: { text: 'BackToMyAccount', icon: 'pi pi-user-undo' },\n // action: () => {\n // // this.backToMyAccount()\n // },\n // }]\n // : [])\n // ,\n\n // {\n // id: eUserMenuItems.ChangePassword,\n // order: 1,\n // textTemplate: {\n // text: 'ChangePassword',\n // icon: 'pi pi-lock',\n // },\n // action: () => {\n // // this.changePassword()\n // },\n // },\n\n // {\n // id: eUserMenuItems.LoginAttempts,\n // order: 2,\n // textTemplate: {\n // text: 'LoginAttempts',\n // icon: 'pi pi-history',\n // },\n // action: () => {\n // // this.showLoginAttempts()\n // },\n // },\n\n // {\n // id: eUserMenuItems.MySettings,\n // order: 3,\n // textTemplate: {\n // text: 'MySettings',\n // icon: 'pi pi-cog',\n // },\n // // action: () => this.changeMySettings(),\n // },\n\n\n // // your existing high-order items\n // {\n // id: eUserMenuItems.MyAccount,\n // order: 100,\n // textTemplate: {\n // text: 'Account::MyAccount',\n // icon: 'pi pi-user-cog',\n // },\n // action: () => navigateToManageProfile(),\n // },\n {\n id: eUserMenuItems.Logout,\n order: 101,\n visible:(item:any) => true,\n textTemplate: {\n // text: 'تسجيل الخروج',\n text: 'Logout',\n icon: 'pi pi-sign-out',\n },\n action: () =>{\n\n try {\n var cc = document.cookie.split(\";\");\n for (let index = 0; index < cc.length; index++) {\n const c = cc[index];\n document.cookie = c.replace(/^ +/, \"\").replace(/=.*/, \"=;expires=\" + new Date().toUTCString() + \";path=/\");\n }\n } catch (error) {\n \n }\n // authService.logout().subscribe();\n try {\n location.href = '/account/login';\n } catch (error) {\n\n }\n },\n },\n ]\n // filter out any nulls (e.g. when not impersonated)\n\n );\n};\n\n}\n\n","import { makeEnvironmentProviders, inject } from '@angular/core';\n\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './nav-item.provider';\nimport { BASIC_THEME_USER_MENU_PROVIDERS } from './user-menu.provider';\nimport { BASIC_THEME_STYLES_PROVIDERS } from './styles.provider';\n\nexport function provideThemeBasicConfig() {\n return makeEnvironmentProviders([\n // BrowserAnimationsModule\n BASIC_THEME_NAV_ITEM_PROVIDERS,\n BASIC_THEME_USER_MENU_PROVIDERS,\n BASIC_THEME_STYLES_PROVIDERS,\n // {\n // provide: VALIDATION_ERROR_TEMPLATE,\n // useValue: ValidationErrorComponent,\n // },\n // {\n // provide: VALIDATION_TARGET_SELECTOR,\n // useValue: '.form-group',\n // },\n // {\n // provide: VALIDATION_INVALID_CLASSES,\n // useValue: 'is-invalid',\n // },\n // LazyStyleHandler,\n // provideAppInitializer(() => {\n // inject(LazyStyleHandler);\n // }),\n ]);\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LAZY_STYLES = new InjectionToken<string[]>('LAZY_STYLES');\n","export * from './components';\nexport * from './enums';\nexport * from './models';\nexport * from './providers';\nexport * from './services';\nexport * from './tokens';\n// export * from './constants';\n// export * from './handlers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i6","i7","i1.LayoutService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"es.framework-ng.ui.theme.mjs","sources":["../../../../libs/ng.ui.theme/src/lib/services/layout.service.ts","../../../../libs/ng.ui.theme/src/lib/components/nav-items/languages.component.ts","../../../../libs/ng.ui.theme/src/lib/components/nav-items/app.configurator.ts","../../../../libs/ng.ui.theme/src/lib/components/nav-items/nav-items.component.ts","../../../../libs/ng.ui.theme/src/lib/components/routes/routes-menu.service.ts","../../../../libs/ng.ui.theme/src/lib/components/routes/routes-search.component.ts","../../../../libs/ng.ui.theme/src/lib/components/routes/routes-search.component.html","../../../../libs/ng.ui.theme/src/lib/components/routes/routes.component.ts","../../../../libs/ng.ui.theme/src/lib/components/routes/routes.component.html","../../../../libs/ng.ui.theme/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts","../../../../libs/ng.ui.theme/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.html","../../../../libs/ng.ui.theme/src/lib/components/account-layout/account-layout.component.ts","../../../../libs/ng.ui.theme/src/lib/components/account-layout/account-layout.component.html","../../../../libs/ng.ui.theme/src/lib/components/application-layout/application-layout.component.ts","../../../../libs/ng.ui.theme/src/lib/components/application-layout/application-layout.component.html","../../../../libs/ng.ui.theme/src/lib/components/empty-layout/empty-layout.component.ts","../../../../libs/ng.ui.theme/src/lib/components/index.ts","../../../../libs/ng.ui.theme/src/lib/providers/nav-item.provider.ts","../../../../libs/ng.ui.theme/src/lib/providers/styles.provider.ts","../../../../libs/ng.ui.theme/src/lib/providers/user-menu.provider.ts","../../../../libs/ng.ui.theme/src/lib/providers/theme-basic-config.provider.ts","../../../../libs/ng.ui.theme/src/lib/tokens/lazy-styles.token.ts","../../../../libs/ng.ui.theme/src/lib/index.ts","../../../../libs/ng.ui.theme/src/es.framework-ng.ui.theme.ts"],"sourcesContent":["import { Injectable, effect, signal, computed } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { eThemeBasicComponents } from '../enums';\r\n\r\nexport interface layoutConfig {\r\n preset?: string;\r\n primary?: string;\r\n surface?: string | undefined | null;\r\n darkTheme?: boolean;\r\n menuMode?: string;\r\n}\r\n\r\ninterface LayoutState {\r\n staticMenuDesktopInactive?: boolean;\r\n overlayMenuActive?: boolean;\r\n configSidebarVisible?: boolean;\r\n staticMenuMobileActive?: boolean;\r\n menuHoverActive?: boolean;\r\n}\r\n\r\ninterface MenuChangeEvent {\r\n key: string;\r\n routeEvent?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LayoutService {\r\n smallScreen=false;\r\n logoComponentKey = eThemeBasicComponents.Logo;\r\n routesComponentKey = eThemeBasicComponents.Routes;\r\n navItemsComponentKey = eThemeBasicComponents.NavItems;\r\n _config: layoutConfig = {\r\n preset: 'Aura',\r\n primary: 'blue',\r\n surface: null,\r\n darkTheme: false,\r\n menuMode: 'static'\r\n };\r\n\r\n _state: LayoutState = {\r\n staticMenuDesktopInactive: false,\r\n overlayMenuActive: false,\r\n configSidebarVisible: false,\r\n staticMenuMobileActive: false,\r\n menuHoverActive: false\r\n };\r\n\r\n layoutConfig = signal<layoutConfig>(this._config);\r\n\r\n layoutState = signal<LayoutState>(this._state);\r\n\r\n private configUpdate = new Subject<layoutConfig>();\r\n\r\n private overlayOpen = new Subject<any>();\r\n\r\n private menuSource = new Subject<MenuChangeEvent>();\r\n\r\n private resetSource = new Subject();\r\n\r\n menuSource$ = this.menuSource.asObservable();\r\n\r\n resetSource$ = this.resetSource.asObservable();\r\n\r\n configUpdate$ = this.configUpdate.asObservable();\r\n\r\n overlayOpen$ = this.overlayOpen.asObservable();\r\n\r\n theme = computed(() => (this.layoutConfig()?.darkTheme ? 'light' : 'dark'));\r\n\r\n isSidebarActive = computed(() => this.layoutState().overlayMenuActive || this.layoutState().staticMenuMobileActive);\r\n\r\n isDarkTheme = computed(() => this.layoutConfig().darkTheme);\r\n\r\n getPrimary = computed(() => this.layoutConfig().primary);\r\n\r\n getSurface = computed(() => this.layoutConfig().surface);\r\n\r\n isOverlay = computed(() => this.layoutConfig().menuMode === 'overlay');\r\n\r\n transitionComplete = signal<boolean>(false);\r\n\r\n private initialized = false;\r\n\r\n constructor() {\r\n effect(() => {\r\n const config = this.layoutConfig();\r\n if (config) {\r\n this.onConfigUpdate();\r\n }\r\n });\r\n\r\n effect(() => {\r\n const config = this.layoutConfig();\r\n\r\n if (!this.initialized || !config) {\r\n this.initialized = true;\r\n return;\r\n }\r\n\r\n this.handleDarkModeTransition(config);\r\n });\r\n }\r\n\r\n private handleDarkModeTransition(config: layoutConfig): void {\r\n if ((document as any).startViewTransition) {\r\n this.startViewTransition(config);\r\n } else {\r\n this.toggleDarkMode(config);\r\n this.onTransitionEnd();\r\n }\r\n }\r\n\r\n private startViewTransition(config: layoutConfig): void {\r\n const transition = (document as any).startViewTransition(() => {\r\n this.toggleDarkMode(config);\r\n });\r\n\r\n transition.ready\r\n .then(() => {\r\n this.onTransitionEnd();\r\n })\r\n .catch(() => {});\r\n }\r\n\r\n toggleDarkMode(config?: layoutConfig): void {\r\n const _config = config || this.layoutConfig();\r\n if (_config.darkTheme) {\r\n document.documentElement.classList.add('app-dark');\r\n } else {\r\n document.documentElement.classList.remove('app-dark');\r\n }\r\n }\r\n\r\n private onTransitionEnd() {\r\n this.transitionComplete.set(true);\r\n setTimeout(() => {\r\n this.transitionComplete.set(false);\r\n });\r\n }\r\n\r\n onMenuToggle() {\r\n if (this.isOverlay()) {\r\n this.layoutState.update((prev) => ({ ...prev, overlayMenuActive: !this.layoutState().overlayMenuActive }));\r\n\r\n if (this.layoutState().overlayMenuActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n\r\n if (this.isDesktop()) {\r\n this.layoutState.update((prev) => ({ ...prev, staticMenuDesktopInactive: !this.layoutState().staticMenuDesktopInactive }));\r\n } else {\r\n this.layoutState.update((prev) => ({ ...prev, staticMenuMobileActive: !this.layoutState().staticMenuMobileActive }));\r\n\r\n if (this.layoutState().staticMenuMobileActive) {\r\n this.overlayOpen.next(null);\r\n }\r\n }\r\n }\r\n\r\n isDesktop() {\r\n return window.innerWidth > 991;\r\n }\r\n\r\n isMobile() {\r\n return !this.isDesktop();\r\n }\r\n\r\n onConfigUpdate() {\r\n this._config = { ...this.layoutConfig() };\r\n this.configUpdate.next(this.layoutConfig());\r\n }\r\n\r\n onMenuStateChange(event: MenuChangeEvent) {\r\n this.menuSource.next(event);\r\n }\r\n\r\n reset() {\r\n this.resetSource.next(true);\r\n }\r\n}\r\n","import { Component, inject, Signal, signal, effect, Inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { ConfigStateService, LocalizationService, LocalStorageService } from '@es.framework/ng.core/services';\r\nimport { SessionStateService } from '@es.framework/ng.core/services';\r\nimport { LanguageInfo } from '@es.framework/ng.core/models';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { PopoverModule } from 'primeng/popover';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'abp-languages',\r\n standalone: true,\r\n imports: [SelectModule, FormsModule, PopoverModule, ButtonModule],\r\n template: `\r\n @if (languages(); as langs) {\r\n <div>\r\n <!-- -->\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-globe\"\r\n class=\"p-button-text\"\r\n [title]=\"'اختر اللغة'\"\r\n (click)=\"overlay.toggle($event)\"\r\n ></button>\r\n <p-popover #overlay >\r\n <ul class=\"w-48\">\r\n @for (lang of langs; track lang) {\r\n <li\r\n class=\"flex items-center justify-between px-3 py-2 cursor-pointer hover:bg-gray-100\"\r\n (click)=\"onSelectLanguage(lang.cultureName ?? ''); overlay.hide()\"\r\n >\r\n <span>{{ lang.displayName }}</span>\r\n @if (lang.cultureName === selectedLang()) {\r\n <i class=\"pi pi-check text-green-500\"></i>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </p-popover>\r\n </div>\r\n }\r\n \r\n `\r\n})\r\nexport class LanguagesComponent {\r\n private configState = inject(ConfigStateService);\r\n private sessionState = inject(SessionStateService);\r\n private translate = inject(LocalizationService);\r\n private localStorageService = inject(LocalStorageService);\r\n private in18Translate = inject(TranslateService);\r\n\r\n // Convert observable to signal\r\n private languages$ = this.configState.getDeep$('localization.languages');\r\n readonly languages: Signal<LanguageInfo[]> = toSignal(this.languages$, { initialValue: [] });\r\n// selectedLangValue = this.sessionState.getLanguage();\r\n readonly selectedLang = signal(this.sessionState.getLanguage());\r\n\r\n constructor() {\r\n // Update signal when language is changed from external source (optional)\r\n effect(() => {\r\n this.selectedLang.set(this.sessionState.getLanguage());\r\n });\r\n }\r\nonSelectLanguage(cultureName: string): void {\r\n\r\n\r\n try {\r\n this.in18Translate.use(cultureName).subscribe(() => {\r\n\r\n });\r\n this.localStorageService.setItem('language', cultureName);\r\n this.sessionState.setLanguage(cultureName);\r\n this.selectedLang.set(cultureName);\r\n\r\n } catch (error) {\r\n\r\n }\r\n\r\n this.updateHtmlDirection(cultureName);\r\n}\r\nprivate updateHtmlDirection(languageCode: string): void {\r\n const htmlElement = document.documentElement;\r\n if (languageCode === 'ar' || languageCode.includes('ar-')) {\r\n htmlElement.setAttribute('dir', 'rtl');\r\n htmlElement.classList.add('rtl');\r\n } else {\r\n htmlElement.setAttribute('dir', 'ltr');\r\n htmlElement.classList.remove('rtl');\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\r\nimport { Component, computed, inject, PLATFORM_ID, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { $t, updatePreset, updateSurfacePalette } from '@primeng/themes';\r\nimport Aura from '@primeng/themes/aura';\r\nimport Lara from '@primeng/themes/lara';\r\nimport Nora from '@primeng/themes/nora';\r\nimport { PrimeNG } from 'primeng/config';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { LayoutService } from '../../services';\r\n\r\nconst presets = {\r\n Aura,\r\n Lara,\r\n Nora\r\n} as const;\r\n\r\ndeclare type KeyOfType<T> = keyof T extends infer U ? U : never;\r\n\r\ndeclare type SurfacesType = {\r\n name?: string;\r\n palette?: {\r\n 0?: string;\r\n 50?: string;\r\n 100?: string;\r\n 200?: string;\r\n 300?: string;\r\n 400?: string;\r\n 500?: string;\r\n 600?: string;\r\n 700?: string;\r\n 800?: string;\r\n 900?: string;\r\n 950?: string;\r\n };\r\n};\r\n\r\n@Component({\r\n selector: 'app-configurator',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, SelectButtonModule],\r\n template: `\r\n <div class=\"flex flex-col gap-4\">\r\n <div>\r\n <span class=\"text-sm text-muted-color font-semibold\">Primary</span>\r\n <div class=\"pt-2 flex gap-2 flex-wrap justify-start\">\r\n @for (primaryColor of primaryColors(); track primaryColor.name) {\r\n <button\r\n type=\"button\"\r\n [title]=\"primaryColor.name\"\r\n (click)=\"updateColors($event, 'primary', primaryColor)\"\r\n [ngClass]=\"{ 'outline-primary': primaryColor.name === selectedPrimaryColor() }\"\r\n class=\"border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1\"\r\n [style]=\"{\r\n 'background-color': primaryColor?.name === 'noir' ? 'var(--text-color)' : primaryColor?.palette?.['500']\r\n }\"\r\n ></button>\r\n }\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"text-sm text-muted-color font-semibold\">Surface</span>\r\n <div class=\"pt-2 flex gap-2 flex-wrap justify-start\">\r\n @for (surface of surfaces; track surface.name) {\r\n <button\r\n type=\"button\"\r\n [title]=\"surface.name\"\r\n (click)=\"updateColors($event, 'surface', surface)\"\r\n [ngClass]=\"{ 'outline-primary': selectedSurfaceColor() ? selectedSurfaceColor() === surface.name : layoutService.layoutConfig().darkTheme ? surface.name === 'zinc' : surface.name === 'slate' }\"\r\n class=\"border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1\"\r\n [style]=\"{\r\n 'background-color': surface?.name === 'noir' ? 'var(--text-color)' : surface?.palette?.['500']\r\n }\"\r\n ></button>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"flex flex-col gap-2\">\r\n <span class=\"text-sm text-muted-color font-semibold\">Presets</span>\r\n <p-selectbutton [options]=\"presets\" [ngModel]=\"selectedPreset()\" (ngModelChange)=\"onPresetChange($event)\" [allowEmpty]=\"false\" size=\"small\" />\r\n </div>\r\n @if (showMenuModeButton()) {\r\n <div class=\"flex flex-col gap-2\">\r\n <span class=\"text-sm text-muted-color font-semibold\">Menu Mode</span>\r\n <p-selectbutton [ngModel]=\"menuMode()\" (ngModelChange)=\"onMenuModeChange($event)\" [options]=\"menuModeOptions\" [allowEmpty]=\"false\" size=\"small\" />\r\n </div>\r\n }\r\n </div>\r\n `,\r\n\r\n})\r\nexport class AppConfigurator {\r\n router = inject(Router);\r\n\r\n config: PrimeNG = inject(PrimeNG);\r\n\r\n layoutService: LayoutService = inject(LayoutService);\r\n\r\n platformId = inject(PLATFORM_ID);\r\n\r\n primeng = inject(PrimeNG);\r\n\r\n presets = Object.keys(presets);\r\n\r\n showMenuModeButton = signal(!this.router.url.includes('auth'));\r\n\r\n menuModeOptions = [\r\n { label: 'Static', value: 'static' },\r\n { label: 'Overlay', value: 'overlay' }\r\n ];\r\n\r\n ngOnInit() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const preset = this.layoutService.layoutConfig().preset as 'Aura' | 'Lara' | 'Nora';\r\n this.onPresetChange(preset ?? \"Aura\");\r\n }\r\n}\r\n\r\n surfaces: SurfacesType[] = [\r\n {\r\n name: 'slate',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#f8fafc',\r\n 100: '#f1f5f9',\r\n 200: '#e2e8f0',\r\n 300: '#cbd5e1',\r\n 400: '#94a3b8',\r\n 500: '#64748b',\r\n 600: '#475569',\r\n 700: '#334155',\r\n 800: '#1e293b',\r\n 900: '#0f172a',\r\n 950: '#020617'\r\n }\r\n },\r\n {\r\n name: 'gray',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#f9fafb',\r\n 100: '#f3f4f6',\r\n 200: '#e5e7eb',\r\n 300: '#d1d5db',\r\n 400: '#9ca3af',\r\n 500: '#6b7280',\r\n 600: '#4b5563',\r\n 700: '#374151',\r\n 800: '#1f2937',\r\n 900: '#111827',\r\n 950: '#030712'\r\n }\r\n },\r\n {\r\n name: 'zinc',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#fafafa',\r\n 100: '#f4f4f5',\r\n 200: '#e4e4e7',\r\n 300: '#d4d4d8',\r\n 400: '#a1a1aa',\r\n 500: '#71717a',\r\n 600: '#52525b',\r\n 700: '#3f3f46',\r\n 800: '#27272a',\r\n 900: '#18181b',\r\n 950: '#09090b'\r\n }\r\n },\r\n {\r\n name: 'neutral',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#fafafa',\r\n 100: '#f5f5f5',\r\n 200: '#e5e5e5',\r\n 300: '#d4d4d4',\r\n 400: '#a3a3a3',\r\n 500: '#737373',\r\n 600: '#525252',\r\n 700: '#404040',\r\n 800: '#262626',\r\n 900: '#171717',\r\n 950: '#0a0a0a'\r\n }\r\n },\r\n {\r\n name: 'stone',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#fafaf9',\r\n 100: '#f5f5f4',\r\n 200: '#e7e5e4',\r\n 300: '#d6d3d1',\r\n 400: '#a8a29e',\r\n 500: '#78716c',\r\n 600: '#57534e',\r\n 700: '#44403c',\r\n 800: '#292524',\r\n 900: '#1c1917',\r\n 950: '#0c0a09'\r\n }\r\n },\r\n {\r\n name: 'soho',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#ececec',\r\n 100: '#dedfdf',\r\n 200: '#c4c4c6',\r\n 300: '#adaeb0',\r\n 400: '#97979b',\r\n 500: '#7f8084',\r\n 600: '#6a6b70',\r\n 700: '#55565b',\r\n 800: '#3f4046',\r\n 900: '#2c2c34',\r\n 950: '#16161d'\r\n }\r\n },\r\n {\r\n name: 'viva',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#f3f3f3',\r\n 100: '#e7e7e8',\r\n 200: '#cfd0d0',\r\n 300: '#b7b8b9',\r\n 400: '#9fa1a1',\r\n 500: '#87898a',\r\n 600: '#6e7173',\r\n 700: '#565a5b',\r\n 800: '#3e4244',\r\n 900: '#262b2c',\r\n 950: '#0e1315'\r\n }\r\n },\r\n {\r\n name: 'ocean',\r\n palette: {\r\n 0: '#ffffff',\r\n 50: '#fbfcfc',\r\n 100: '#F7F9F8',\r\n 200: '#EFF3F2',\r\n 300: '#DADEDD',\r\n 400: '#B1B7B6',\r\n 500: '#828787',\r\n 600: '#5F7274',\r\n 700: '#415B61',\r\n 800: '#29444E',\r\n 900: '#183240',\r\n 950: '#0c1920'\r\n }\r\n }\r\n ];\r\n\r\n selectedPrimaryColor = computed(() => {\r\n return this.layoutService.layoutConfig().primary;\r\n });\r\n\r\n selectedSurfaceColor = computed(() => this.layoutService.layoutConfig().surface);\r\n\r\n selectedPreset = computed(() => this.layoutService.layoutConfig().preset);\r\n\r\n menuMode = computed(() => this.layoutService.layoutConfig().menuMode);\r\n\r\n primaryColors = computed<SurfacesType[]>(() => {\r\n const presetPalette = presets[this.layoutService.layoutConfig().preset as KeyOfType<typeof presets>].primitive;\r\n const colors = ['blue', 'green', 'lime', 'orange', 'amber', 'yellow', 'teal', 'cyan', 'sky', 'emerald', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose'];\r\n const customColors: SurfacesType[] = [\r\n {\r\n name: 'ghazali',\r\n palette: {\r\n 50: '#fbf7f2',\r\n 100: '#f4eadf',\r\n 200: '#e8d3bf',\r\n 300: '#d8b596',\r\n 400: '#c99572',\r\n 500: '#b97855',\r\n 600: '#a45f3f',\r\n 700: '#884a34',\r\n 800: '#713d2f',\r\n 900: '#5e342b',\r\n 950: '#351914'\r\n }\r\n },\r\n {\r\n name: 'brown',\r\n palette: {\r\n 50: '#faf6f3',\r\n 100: '#f1e5dc',\r\n 200: '#e2c9b8',\r\n 300: '#cea58a',\r\n 400: '#b97e5d',\r\n 500: '#9f6244',\r\n 600: '#814a34',\r\n 700: '#6a3d2e',\r\n 800: '#59342a',\r\n 900: '#4c2e27',\r\n 950: '#2b1712'\r\n }\r\n },\r\n\r\n ];\r\n // const palettes: SurfacesType[] = [{ name: 'noir', palette: {} }];\r\n const palettes: SurfacesType[] = [\r\n { name: 'noir', palette: {} },\r\n ...customColors\r\n ];\r\n\r\n\r\n colors.forEach((color) => {\r\n palettes.push({\r\n name: color,\r\n palette: presetPalette?.[color as KeyOfType<typeof presetPalette>] as SurfacesType['palette']\r\n });\r\n });\r\n\r\n return palettes;\r\n });\r\n\r\n getPresetExt() {\r\n const color: SurfacesType = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()) || {};\r\n const preset = this.layoutService.layoutConfig().preset;\r\n\r\n if (color.name === 'noir') {\r\n return {\r\n semantic: {\r\n primary: {\r\n 50: '{surface.50}',\r\n 100: '{surface.100}',\r\n 200: '{surface.200}',\r\n 300: '{surface.300}',\r\n 400: '{surface.400}',\r\n 500: '{surface.500}',\r\n 600: '{surface.600}',\r\n 700: '{surface.700}',\r\n 800: '{surface.800}',\r\n 900: '{surface.900}',\r\n 950: '{surface.950}'\r\n },\r\n colorScheme: {\r\n light: {\r\n primary: {\r\n color: '{primary.950}',\r\n contrastColor: '#ffffff',\r\n hoverColor: '{primary.800}',\r\n activeColor: '{primary.700}'\r\n },\r\n highlight: {\r\n background: '{primary.950}',\r\n focusBackground: '{primary.700}',\r\n color: '#ffffff',\r\n focusColor: '#ffffff'\r\n }\r\n },\r\n dark: {\r\n primary: {\r\n color: '{primary.50}',\r\n contrastColor: '{primary.950}',\r\n hoverColor: '{primary.200}',\r\n activeColor: '{primary.300}'\r\n },\r\n highlight: {\r\n background: '{primary.50}',\r\n focusBackground: '{primary.300}',\r\n color: '{primary.950}',\r\n focusColor: '{primary.950}'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n } else {\r\n if (preset === 'Nora') {\r\n return {\r\n semantic: {\r\n primary: color.palette,\r\n colorScheme: {\r\n light: {\r\n primary: {\r\n color: '{primary.600}',\r\n contrastColor: '#ffffff',\r\n hoverColor: '{primary.700}',\r\n activeColor: '{primary.800}'\r\n },\r\n highlight: {\r\n background: '{primary.600}',\r\n focusBackground: '{primary.700}',\r\n color: '#ffffff',\r\n focusColor: '#ffffff'\r\n }\r\n },\r\n dark: {\r\n primary: {\r\n color: '{primary.500}',\r\n contrastColor: '{surface.900}',\r\n hoverColor: '{primary.400}',\r\n activeColor: '{primary.300}'\r\n },\r\n highlight: {\r\n background: '{primary.500}',\r\n focusBackground: '{primary.400}',\r\n color: '{surface.900}',\r\n focusColor: '{surface.900}'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n } else {\r\n return {\r\n semantic: {\r\n primary: color.palette,\r\n colorScheme: {\r\n light: {\r\n primary: {\r\n color: '{primary.500}',\r\n contrastColor: '#ffffff',\r\n hoverColor: '{primary.600}',\r\n activeColor: '{primary.700}'\r\n },\r\n highlight: {\r\n background: '{primary.50}',\r\n focusBackground: '{primary.100}',\r\n color: '{primary.700}',\r\n focusColor: '{primary.800}'\r\n }\r\n },\r\n dark: {\r\n primary: {\r\n color: '{primary.400}',\r\n contrastColor: '{surface.900}',\r\n hoverColor: '{primary.300}',\r\n activeColor: '{primary.200}'\r\n },\r\n highlight: {\r\n background: 'color-mix(in srgb, {primary.400}, transparent 84%)',\r\n focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)',\r\n color: 'rgba(255,255,255,.87)',\r\n focusColor: 'rgba(255,255,255,.87)'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }\r\n }\r\n\r\n updateColors(event: any, type: 'primary' | 'surface', color: SurfacesType) {\r\n if (type === 'primary') {\r\n this.layoutService.layoutConfig.update(state => ({ ...state, primary: color.name }));\r\n this.applyPalette('primary', color.palette || {});\r\n } else if (type === 'surface') {\r\n this.layoutService.layoutConfig.update(state => ({ ...state, surface: color.name }));\r\n this.applyPalette('surface', color.palette || {});\r\n }\r\n\r\n event.stopPropagation();\r\n}\r\n\r\n applyTheme(type: string, color: any) {\r\n if (type === 'primary') {\r\n updatePreset(this.getPresetExt());\r\n } else if (type === 'surface') {\r\n\r\n updateSurfacePalette(color.palette);\r\n }\r\n }\r\nprivate applyPalette(type: 'primary' | 'surface', palette: Record<string,string> = {}) {\r\n if (!isPlatformBrowser(this.platformId)) return; // SSR-safe\r\n const root = document.documentElement;\r\n\r\n Object.entries(palette).forEach(([key, value]) => {\r\n if (type === 'primary') {\r\n root.style.setProperty(`--p-primary-${key}`, value);\r\n } else if (type === 'surface') {\r\n root.style.setProperty(`--surface-${key}`, value);\r\n }\r\n });\r\n}\r\n onPresetChange(presetName: keyof typeof presets) {\r\n this.layoutService.layoutConfig.update(state => ({ ...state, preset: presetName }));\r\n const preset = presets[presetName];\r\n\r\n // اختر اللون الحالي\r\n const surfacePalette = this.surfaces.find(s => s.name === this.selectedSurfaceColor())?.palette;\r\n\r\n // تطبيق primary + surface\r\n const primaryPalette = this.primaryColors().find(c => c.name === this.selectedPrimaryColor())?.palette;\r\n this.applyPalette('primary', primaryPalette || {});\r\n this.applyPalette('surface', surfacePalette || {});\r\n}\r\n\r\n onMenuModeChange(event: string) {\r\n this.layoutService.layoutConfig.update((prev) => ({ ...prev, menuMode: event }));\r\n }\r\n}\r\n","import { lastValueFrom, Observable } from 'rxjs';\r\nimport { Component, inject, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { StyleClassModule } from 'primeng/styleclass';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { OverlayModule } from 'primeng/overlay';\r\n\r\nimport { VisibleDirective } from '@es.framework/ng.core/directives';\r\nimport { HasPermissionDirective } from '@es.framework/ng.core/directives';\r\nimport { ToInjectorPipe, TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { NavItemsService, UserMenuService, ConfigStateService, SessionStateService, LocalizationService } from '@es.framework/ng.core/services';\r\nimport { UserMenu, CurrentUserDto } from '@es.framework/ng.core/models';\r\nimport { LanguagesComponent } from './languages.component';\r\nimport { AppConfigurator } from './app.configurator';\r\nimport { LayoutService } from '../../services';\r\nimport { AuthService } from '@es.framework/ng.core/abstracts';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { PopoverModule } from 'primeng/popover';\r\n\r\n@Component({\r\n selector: 'app-nav-items',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n StyleClassModule,\r\n AppConfigurator,\r\n LanguagesComponent,\r\n AvatarModule,\r\n MenuModule,\r\n ButtonModule,\r\n OverlayModule,\r\n TranslatePipe,\r\n VisibleDirective,\r\n HasPermissionDirective,\r\n ToInjectorPipe,\r\n PopoverModule\r\n ],\r\n template: `\r\n <header class=\"flex items-center justify-between px-6 h-16 bg-white shadow sticky top-0 z-9\">\r\n <!-- Left: Logo / Title -->\r\n <div class=\"flex items-center space-x-3 rtl:space-x-reverse\">\r\n <img src=\"assets/logo.png\" alt=\"Logo\" class=\"h-8 w-8\" />\r\n <span class=\"text-lg font-semibold text-gray-800\">{{ '' | translate }}</span>\r\n </div>\r\n \r\n <!-- Center: Nav Items -->\r\n <div class=\"flex items-center space-x-4 rtl:space-x-reverse\">\r\n <ul class=\"flex space-x-4\">\r\n @for (item of navItems.items$ | async; track item.id) {\r\n @if (!item.visible || item.visible(item)) {\r\n <ng-container *frameworkVisible=\"!item.visible || item.visible(item)\">\r\n <li class=\"flex items-center\">\r\n @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n <button\r\n pButton\r\n type=\"button\"\r\n class=\"p-button-text hover:bg-gray-100 focus:outline-none flex items-center\"\r\n (click)=\"item.action?.()\"\r\n >\r\n <span [innerHTML]=\"item.html\"></span>\r\n </button>\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n }\r\n </ul>\r\n </div>\r\n \r\n <!-- Right: Actions -->\r\n <div class=\"flex items-center rtl:space-x-reverse\">\r\n <!-- Configurator -->\r\n \r\n <div>\r\n <!-- -->\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-palette\"\r\n class=\"p-button-text\"\r\n [title]=\"''\"\r\n (click)=\"overlay.toggle($event)\"\r\n >\r\n </button>\r\n \r\n <p-popover #overlay >\r\n <app-configurator />\r\n </p-popover>\r\n </div>\r\n \r\n \r\n <!-- Dark Mode Toggle -->\r\n <button\r\n pButton\r\n type=\"button\"\r\n [icon]=\"layoutService.isDarkTheme() ?'pi pi-moon': 'pi pi-sun'\"\r\n class=\"p-button-text\"\r\n (click)=\"toggleDarkMode()\">\r\n </button>\r\n \r\n <!-- Language Switcher -->\r\n <abp-languages></abp-languages>\r\n \r\n <!-- User Menu -->\r\n <div class=\"relative\">\r\n <button\r\n class=\"p-link p-2\"\r\n (click)=\"menu.toggle($event)\"\r\n aria-label=\"User menu\"\r\n >\r\n <p-avatar\r\n [label]=\"loading ? '' : userName\"\r\n [icon]=\"loading ? 'pi pi-spinner' : ''\"\r\n [class]=\"{'pi-spin': loading}\"\r\n shape=\"circle\"\r\n class=\"bg-blue-600 text-white cursor-pointer\"\r\n [title]=\"(currentUser$ | async)?.name || ''\"\r\n ></p-avatar>\r\n </button>\r\n \r\n <p-menu\r\n #menu\r\n [model]=\"userMenuItems\"\r\n [popup]=\"true\"\r\n [appendTo]=\"'body'\"\r\n styleClass=\"w-64 sm:w-72 shadow-lg rounded-md\"\r\n >\r\n <ng-template pTemplate=\"start\">\r\n <div class=\"px-5 py-4 border-b border-gray-200 bg-gray-50 flex flex-col items-center text-center\">\r\n <p-avatar\r\n [label]=\"userName\"\r\n shape=\"circle\"\r\n size=\"xlarge\"\r\n styleClass=\"bg-blue-600 text-white mb-3 shadow-lg\"\r\n [title]=\"(currentUser$ | async)?.name || ''\"\r\n ></p-avatar>\r\n <h5 class=\"text-xl font-semibold text-gray-800 leading-tight\">\r\n {{ (currentUser$ | async)?.name || 'اسم المستخدم' }}\r\n </h5>\r\n <p class=\"text-sm text-gray-600 truncate max-w-full\">\r\n {{ (currentUser$ | async)?.email || 'لا يوجد بريد إلكتروني' }}\r\n </p>\r\n @if ((selectedTenant$ | async); as tenant) {\r\n <span\r\n class=\"inline-block mt-2 px-3 py-1 text-xs rounded-full font-semibold\"\r\n [ngClass]=\"{\r\n 'bg-green-100 text-green-800': true\r\n }\"\r\n >\r\n {{ tenant?.name || '_' }}\r\n </span>\r\n }\r\n </div>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"item\" let-item>\r\n <!-- *frameworkVisible=\"!item.visible || item.visible(item)\" -->\r\n <ng-container >\r\n <!-- *hasPermission=\"item.requiredPolicy\" -->\r\n <a\r\n \r\n class=\"p-menuitem-link flex items-center space-x-3 rtl:space-x-reverse px-5 py-2 hover:bg-gray-100 rounded-md\"\r\n [ngClass]=\"item.styleClass || ''\"\r\n (click)=\"item.command ? item.command() : null\"\r\n [routerLink]=\"item.routerLink ? item.routerLink : null\"\r\n tabindex=\"0\"\r\n >\r\n @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n <i [class]=\"item.icon + ' text-lg text-gray-600'\"></i>\r\n <span class=\"text-gray-700\">{{ item.label | translate }}</span>\r\n }\r\n </a>\r\n </ng-container>\r\n </ng-template>\r\n </p-menu>\r\n </div>\r\n \r\n <!-- Logout Button (separate from menu) -->\r\n <!-- <button\r\n type=\"button\"\r\n class=\"layout-topbar-action\"\r\n (click)=\"logout()\"\r\n title=\"تسجيل الخروج\"\r\n >\r\n <i class=\"pi pi-sign-out\"></i>\r\n </button> -->\r\n </div>\r\n </header>\r\n `\r\n})\r\nexport class NavItemsComponent implements OnInit {\r\n private translate = inject(LocalizationService);\r\n private authService = inject(AuthService);\r\n private configState = inject(ConfigStateService);\r\n private sessionState = inject(SessionStateService);\r\n public readonly navItems = inject(NavItemsService);\r\n public readonly userMenu = inject(UserMenuService);\r\n public readonly layoutService = inject(LayoutService);\r\n\r\n loading = false;\r\n currentUser$!: Observable<CurrentUserDto>;\r\n selectedTenant$!: Observable<any>;\r\n userMenuItems: MenuItem[] = [];\r\n\r\n constructor() {\r\n this.currentUser$ = this.configState.getOne$('currentUser');\r\n this.selectedTenant$ = this.sessionState.getTenant$();\r\n }\r\n\r\n ngOnInit() {\r\n // Get user menu items from the service and convert to PrimeNG format\r\n this.userMenu.items$.subscribe(async items => {\r\n this.userMenuItems = await this.convertToPrimeMenuItems(items);\r\n\r\n });\r\n }\r\n private async convertToPrimeMenuItems(userMenus: UserMenu[]): Promise<MenuItem[]> {\r\n const primeItems: MenuItem[] = [];\r\n\r\n for (const userMenu of userMenus) {\r\n // Check visibility if defined\r\n let isVisible = true;\r\n if (userMenu.visible) {\r\n const visibilityResult = userMenu.visible(userMenu);\r\n if (visibilityResult instanceof Promise) {\r\n isVisible = await visibilityResult;\r\n } else if (visibilityResult instanceof Observable) {\r\n isVisible = await lastValueFrom(visibilityResult);\r\n } else {\r\n isVisible = !!visibilityResult;\r\n }\r\n }\r\n\r\n if (!isVisible) continue;\r\n\r\n\r\n // Create PrimeNG menu item\r\n const primeItem: MenuItem = {\r\n id: userMenu.id?.toString(),\r\n label: userMenu.textTemplate?.text || '',\r\n icon: userMenu.textTemplate?.icon || '',\r\n // routerLink: userMenu.component ? undefined : ['#'],\r\n routerLink: null,\r\n command: userMenu.action ? (event) => {\r\n if (userMenu.action) {\r\n userMenu.action();\r\n // if (this.menu) {\r\n // this.menu.hide();\r\n // }\r\n }\r\n } : undefined,\r\n visible: isVisible,\r\n data: {\r\n $implicit: userMenu // Pass the original userMenu as data\r\n }\r\n };\r\n\r\n // If it has a component, set it up\r\n if (userMenu.component) {\r\n // primeItem.data = {\r\n // ...primeItem.data,\r\n // component: userMenu.component\r\n // };\r\n }\r\n\r\n // Handle badge\r\n if (userMenu.badge) {\r\n primeItem.badge = userMenu.badge.count?.toString() || '';\r\n primeItem.badgeStyleClass = `p-badge p-badge-${userMenu.badge.color || 'danger'}`;\r\n }\r\n\r\n primeItems.push(primeItem);\r\n }\r\n\r\n return primeItems;\r\n }\r\n toggleDarkMode() {\r\n this.layoutService.layoutConfig.update((state) => ({\r\n ...state,\r\n darkTheme: !state.darkTheme\r\n }));\r\n }\r\n\r\n get userName(): string {\r\n // This will be updated when currentUser$ emits\r\n let name = '?';\r\n this.currentUser$.subscribe(user => {\r\n if (user?.name) {\r\n const names = user.name.split(' ');\r\n if (names.length >= 2) {\r\n name = `${names[0][0]}`;\r\n } else if (names[0]) {\r\n name = names[0][0];\r\n }\r\n }\r\n });\r\n return name;\r\n }\r\n\r\n get userStatus(): string {\r\n let status = this.translate.instant('UNKNOWN');\r\n this.currentUser$.subscribe(user => {\r\n if (!user) return;\r\n this.translate.instant('ACTIVE');\r\n });\r\n return status;\r\n }\r\n\r\n onProfileSettings() {\r\n // Navigate to profile settings\r\n console.log('Profile settings clicked');\r\n }\r\n\r\n onChangePassword() {\r\n // Navigate to change password\r\n console.log('Change password clicked');\r\n }\r\n\r\n logout() {\r\n this.authService.logout().subscribe();\r\n }\r\n\r\n get smallScreen(): boolean {\r\n return window.innerWidth < 992;\r\n }\r\n\r\n navigateToLogin() {\r\n this.authService.navigateToLogin();\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Route } from '@es.framework/ng.core/models';\r\nimport { RoutesService } from '@es.framework/ng.core/services';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BehaviorSubject, map } from 'rxjs';\r\nimport { LayoutService } from '../../services';\r\n\r\n@Injectable()\r\nexport class RoutesMenuService {\r\n private readonly router = inject(Router);\r\n private readonly routesService = inject(RoutesService);\r\n readonly layoutService = inject(LayoutService);\r\n\r\n sidebarVisible = true;\r\n subSidebarVisible = false;\r\n isMobile = false;\r\n showTreeSearch = false;\r\n searchText = '';\r\n\r\n private _menuItemsSubject = new BehaviorSubject<MenuItem[]>([]);\r\n private expandedStateBeforeSearch: WeakMap<MenuItem, boolean> | null = null;\r\n\r\n readonly menuItems$ = this._menuItemsSubject.asObservable();\r\n readonly secondToLastLevel$ = this.menuItems$.pipe(\r\n map((items) => {\r\n const result: MenuItem[] = [];\r\n\r\n for (const item of items) {\r\n if (item.items?.length) {\r\n result.push(...item.items);\r\n }\r\n }\r\n\r\n return result;\r\n }),\r\n );\r\n\r\n constructor() {\r\n this.routesService.visible$\r\n .pipe(\r\n map((routes) => this.buildItems(routes)),\r\n takeUntilDestroyed(),\r\n )\r\n .subscribe((items) => this.setItems(items));\r\n }\r\n\r\n get items(): MenuItem[] {\r\n return this._menuItemsSubject.value;\r\n }\r\n\r\n setItems(items: MenuItem[]): void {\r\n this.setExpandedByLevel(items);\r\n this._menuItemsSubject.next(items);\r\n }\r\n\r\n refresh(): void {\r\n this._menuItemsSubject.next([...this.items]);\r\n }\r\n\r\n expandAll(): void {\r\n this.setExpandedRecursive(this.items, true);\r\n this.subSidebarVisible = true;\r\n this.refresh();\r\n }\r\n\r\n collapseAll(): void {\r\n this.setExpandedRecursive(this.items, false);\r\n this.refresh();\r\n }\r\n\r\n search(keyword: string): void {\r\n if (!this.expandedStateBeforeSearch) {\r\n this.expandedStateBeforeSearch = this.captureExpandedState(this.items);\r\n }\r\n\r\n this.searchText = keyword;\r\n\r\n if (!this.searchText.trim()) {\r\n this.restoreExpandedStateBeforeSearch();\r\n this.refresh();\r\n return;\r\n }\r\n\r\n this.expandMatchedParents(this.items, this.searchText);\r\n this.refresh();\r\n }\r\n\r\n clearSearch(): void {\r\n this.searchText = '';\r\n this.restoreExpandedStateBeforeSearch();\r\n this.refresh();\r\n }\r\n\r\n toggleSearch(): void {\r\n this.showTreeSearch = !this.showTreeSearch;\r\n\r\n if (!this.showTreeSearch) {\r\n this.clearSearch();\r\n }\r\n }\r\n\r\n isSearchMatch(item: MenuItem): boolean {\r\n const term = this.searchText.trim().toLowerCase();\r\n\r\n if (!term) return false;\r\n\r\n const label = String(item.label ?? '').toLowerCase();\r\n const title = String(item.title ?? '').toLowerCase();\r\n\r\n return label.includes(term) || title.includes(term);\r\n }\r\n\r\n closeMenu(): void {\r\n this.subSidebarVisible = false;\r\n this.sidebarVisible = false;\r\n }\r\n\r\n openMenu(): void {\r\n this.sidebarVisible = true;\r\n this.subSidebarVisible = true;\r\n }\r\n\r\n syncViewport(): void {\r\n this.isMobile = window.innerWidth < 1024;\r\n this.layoutService.smallScreen = this.isMobile;\r\n\r\n if (this.isMobile) {\r\n this.sidebarVisible = false;\r\n this.subSidebarVisible = false;\r\n return;\r\n }\r\n\r\n this.sidebarVisible = true;\r\n this.subSidebarVisible = true;\r\n }\r\n\r\n toggleSidebar(): void {\r\n if (this.isMobile) {\r\n this.sidebarVisible = !this.sidebarVisible;\r\n this.subSidebarVisible = this.sidebarVisible;\r\n\r\n return;\r\n }\r\n\r\n this.subSidebarVisible = !this.subSidebarVisible;\r\n }\r\n\r\n activateItem(target: MenuItem): void {\r\n const isExternal = (target as any).isExternal ?? false;\r\n\r\n if (!target.items?.length) {\r\n if (isExternal && target.url) {\r\n window.open(target.url, '_blank', 'noopener,noreferrer');\r\n this.afterNavigate(target);\r\n return;\r\n }\r\n\r\n if (target.routerLink) {\r\n const currentUrl = this.router.url;\r\n const targetUrl = Array.isArray(target.routerLink)\r\n ? target.routerLink[0]\r\n : target.routerLink;\r\n\r\n if (currentUrl !== targetUrl) {\r\n this.router.navigate(\r\n Array.isArray(target.routerLink)\r\n ? target.routerLink\r\n : [target.routerLink],\r\n );\r\n }\r\n\r\n this.afterNavigate(target);\r\n return;\r\n }\r\n }\r\n\r\n target.expanded = !target.expanded;\r\n this.subSidebarVisible = true;\r\n this.refresh();\r\n }\r\n\r\n closeAfterNavigate(): void {\r\n if (this.isMobile) {\r\n this.closeMenu();\r\n }\r\n }\r\n\r\n getLinkProps(item: any) {\r\n const isExternal = item.isExternal ?? false;\r\n\r\n return {\r\n isExternal,\r\n href: isExternal ? (item.url ?? null) : null,\r\n routerLink: !isExternal ? (item.routerLink ?? null) : null,\r\n addRoute: item.addRoute ?? '',\r\n };\r\n }\r\n\r\n expandPath(target: MenuItem): boolean {\r\n const found = this.expandPathRecursive(this.items, target);\r\n this.refresh();\r\n return found;\r\n }\r\n\r\n toggleItem(item: MenuItem): void {\r\n item.expanded = !item.expanded;\r\n this.refresh();\r\n }\r\n\r\n private setExpandedByLevel(items: MenuItem[], level = 1): void {\r\n for (const item of items) {\r\n item.expanded = level === 1;\r\n\r\n if (item.items?.length) {\r\n this.setExpandedByLevel(item.items, level + 1);\r\n }\r\n }\r\n }\r\n\r\n private captureExpandedState(items: MenuItem[]): WeakMap<MenuItem, boolean> {\r\n const state = new WeakMap<MenuItem, boolean>();\r\n\r\n const traverse = (nodes: MenuItem[]) => {\r\n for (const node of nodes) {\r\n state.set(node, node.expanded === true);\r\n\r\n if (node.items?.length) {\r\n traverse(node.items);\r\n }\r\n }\r\n };\r\n\r\n traverse(items);\r\n return state;\r\n }\r\n\r\n private restoreExpandedStateBeforeSearch(): void {\r\n if (!this.expandedStateBeforeSearch) return;\r\n\r\n const traverse = (nodes: MenuItem[]) => {\r\n for (const node of nodes) {\r\n node.expanded = this.expandedStateBeforeSearch?.get(node) ?? false;\r\n\r\n if (node.items?.length) {\r\n traverse(node.items);\r\n }\r\n }\r\n };\r\n\r\n traverse(this.items);\r\n this.expandedStateBeforeSearch = null;\r\n }\r\n\r\n private afterNavigate(target: MenuItem): void {\r\n if (this.isMobile) {\r\n this.closeMenu();\r\n }\r\n\r\n this.expandPath(target);\r\n }\r\n\r\n private buildItems(routes: Route[]): MenuItem[] {\r\n return routes\r\n .filter(\r\n (route) =>\r\n !route.requiredPolicy || this.hasPermission(route.requiredPolicy),\r\n )\r\n .map((route) => this.createItem(route));\r\n }\r\n\r\n private createItem(route: Route): MenuItem {\r\n const item: MenuItem = {\r\n label: route.name,\r\n icon: route.iconClass,\r\n title: route.name,\r\n expanded: false,\r\n };\r\n\r\n if (route.isExternal) {\r\n item.url = route.path;\r\n item.target = '_blank';\r\n } else if (route.path) {\r\n item.routerLink = [route.path];\r\n }\r\n\r\n (item as any).isExternal = route.isExternal ?? false;\r\n (item as any).addRoute = route.addRoute ?? '';\r\n\r\n if (this.routesService.hasChildren(route.name)) {\r\n item.items = this.buildItems(route.children ?? []);\r\n }\r\n\r\n return item;\r\n }\r\n\r\n private hasPermission(policy: string): boolean {\r\n return true;\r\n }\r\n\r\n private setExpandedRecursive(items: MenuItem[], expanded: boolean): void {\r\n for (const item of items) {\r\n item.expanded = expanded;\r\n\r\n if (item.items?.length) {\r\n this.setExpandedRecursive(item.items, expanded);\r\n }\r\n }\r\n }\r\n\r\n private expandMatchedParents(items: MenuItem[], keyword: string): boolean {\r\n const term = keyword.trim().toLowerCase();\r\n let hasMatch = false;\r\n\r\n for (const item of items) {\r\n const label = String(item.label ?? '').toLowerCase();\r\n const title = String(item.title ?? '').toLowerCase();\r\n\r\n const selfMatch = label.includes(term) || title.includes(term);\r\n const childMatch = item.items?.length\r\n ? this.expandMatchedParents(item.items, keyword)\r\n : false;\r\n\r\n item.expanded = !!childMatch || !!selfMatch;\r\n\r\n if (selfMatch || childMatch) {\r\n hasMatch = true;\r\n }\r\n }\r\n\r\n return hasMatch;\r\n }\r\n\r\n private expandPathRecursive(items: MenuItem[], target: MenuItem): boolean {\r\n for (const item of items) {\r\n if (item === target) return true;\r\n\r\n if (item.items?.length) {\r\n const found = this.expandPathRecursive(item.items, target);\r\n\r\n if (found) {\r\n item.expanded = true;\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { RoutesMenuService } from './routes-menu.service';\r\n\r\n@Component({\r\n selector: 'app-routes-search',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, TooltipModule, TranslatePipe],\r\n templateUrl: './routes-search.component.html',\r\n})\r\nexport class RoutesSearchComponent {\r\n readonly menu = inject(RoutesMenuService);\r\n\r\n closeMenu(): void {\r\n this.menu.closeMenu();\r\n }\r\n\r\n expandAll(): void {\r\n this.menu.expandAll();\r\n }\r\n\r\n collapseAll(): void {\r\n this.menu.collapseAll();\r\n }\r\n\r\n toggleSearch(): void {\r\n this.menu.toggleSearch();\r\n }\r\n\r\n onSearchTextChange(value: string): void {\r\n this.menu.search(value);\r\n }\r\n\r\n clearSearch(): void {\r\n this.menu.clearSearch();\r\n }\r\n}\r\n","<div class=\"mb-4 space-y-3\">\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <button\r\n type=\"button\"\r\n (click)=\"closeMenu()\"\r\n class=\"inline-flex h-9 items-center gap-1.5 rounded-full px-2 ps-1.5 pe-3 text-sm font-bold text-slate-500 transition hover:bg-primary-50 hover:text-primary-600 dark:text-slate-300 dark:hover:bg-primary-500/10 dark:hover:text-primary-300\"\r\n >\r\n <i class=\"pi pi-angle-right text-sm\"></i>\r\n <span>{{ 'back' | translate }}</span>\r\n </button>\r\n\r\n <div class=\"inline-flex items-center gap-1\">\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-xl border border-slate-300/25 bg-slate-50/85 text-slate-500 transition hover:-translate-y-px hover:border-primary-500/25 hover:bg-primary-50 hover:text-primary-600 dark:border-slate-400/15 dark:bg-gray-800/75 dark:text-slate-300 dark:hover:bg-primary-500/10 dark:hover:text-primary-300\"\r\n (click)=\"expandAll()\"\r\n pTooltip=\"فتح الشجرة كاملة\"\r\n tooltipPosition=\"top\"\r\n >\r\n <i class=\"pi pi-plus text-xs\"></i>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-xl border border-slate-300/25 bg-slate-50/85 text-slate-500 transition hover:-translate-y-px hover:border-primary-500/25 hover:bg-primary-50 hover:text-primary-600 dark:border-slate-400/15 dark:bg-gray-800/75 dark:text-slate-300 dark:hover:bg-primary-500/10 dark:hover:text-primary-300\"\r\n (click)=\"collapseAll()\"\r\n pTooltip=\"إغلاق الشجرة كاملة\"\r\n tooltipPosition=\"top\"\r\n >\r\n <i class=\"pi pi-minus text-xs\"></i>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex h-8 w-8 items-center justify-center rounded-xl border transition hover:-translate-y-px\"\r\n [ngClass]=\"\r\n menu.showTreeSearch\r\n ? 'border-transparent bg-primary-600 text-white shadow-lg shadow-primary-500/20'\r\n : 'border-primary-500/20 bg-primary-500/10 text-primary-600 hover:bg-primary-50 dark:text-primary-300 dark:hover:bg-primary-500/10'\r\n \"\r\n (click)=\"toggleSearch()\"\r\n pTooltip=\"بحث داخل الشاشات\"\r\n tooltipPosition=\"top\"\r\n >\r\n <i class=\"pi pi-search text-xs\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n @if (menu.showTreeSearch) {\r\n <div\r\n class=\"animate-slideIn rounded-2xl border border-white/45 bg-white/60 p-2 shadow-lg shadow-slate-900/10 backdrop-blur-xl dark:border-white/10 dark:bg-gray-900/70\"\r\n >\r\n <div class=\"relative flex items-center\">\r\n <i\r\n class=\"pi pi-search pointer-events-none absolute right-3 text-sm text-primary-500 dark:text-primary-300\"\r\n ></i>\r\n\r\n <input\r\n type=\"text\"\r\n [ngModel]=\"menu.searchText\"\r\n (ngModelChange)=\"onSearchTextChange($event)\"\r\n placeholder=\"بحث داخل الشاشات...\"\r\n class=\"h-10 w-full rounded-2xl border border-slate-300/30 bg-slate-50/85 py-0 pl-9 pr-10 text-sm text-slate-700 outline-none transition placeholder:text-slate-400 focus:border-primary-500/50 focus:bg-white focus:ring-4 focus:ring-primary-500/10 dark:border-slate-400/20 dark:bg-gray-800/80 dark:text-gray-100 dark:placeholder:text-slate-500 dark:focus:bg-gray-900\"\r\n />\r\n\r\n @if (menu.searchText) {\r\n <button\r\n type=\"button\"\r\n class=\"absolute left-2 inline-flex h-7 w-7 items-center justify-center rounded-full text-slate-400 transition hover:bg-primary-50 hover:text-primary-600 dark:text-slate-300 dark:hover:bg-primary-500/10 dark:hover:text-primary-300\"\r\n (click)=\"clearSearch()\"\r\n >\r\n <i class=\"pi pi-times text-xs\"></i>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, HostListener, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { RoutesMenuService } from './routes-menu.service';\r\nimport { RoutesSearchComponent } from './routes-search.component';\r\n\r\n@Component({\r\n selector: 'app-routes',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n TooltipModule,\r\n TranslatePipe,\r\n RoutesSearchComponent,\r\n ],\r\n providers: [RoutesMenuService],\r\n styleUrls: ['./routes.component.scss'],\r\n templateUrl: './routes.component.html',\r\n})\r\nexport class RoutesComponent {\r\n readonly menu = inject(RoutesMenuService);\r\n\r\n ngOnInit() {\r\n this.checkViewport();\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.checkViewport();\r\n }\r\n\r\n checkViewport() {\r\n this.menu.syncViewport();\r\n }\r\n}\r\n","<aside\r\n class=\"flex h-screen bg-white dark:bg-gray-900 transition-all duration-300\"\r\n [ngClass]=\"{ 'w-0 overflow-hidden': !menu.sidebarVisible && menu.isMobile }\"\r\n>\r\n <div\r\n class=\"flex flex-col justify-between pt-4 pb-2 w-16 border-l shadow-xl bg-gradient-to-b from-primary-500 via-primary-600 to-primary-700 text-white rounded-r-3xl\"\r\n >\r\n <div class=\"flex flex-col items-center gap-4\">\r\n <img\r\n src=\"/assets/logo.png\"\r\n alt=\"Logo\"\r\n class=\"w-9 h-9 mt-1 rounded-lg shadow-sm\"\r\n />\r\n\r\n <button\r\n (click)=\"menu.toggleSidebar()\"\r\n tooltipPosition=\"right\"\r\n class=\"text-white hover:scale-110 transition-transform duration-200\"\r\n >\r\n <i class=\"pi pi-bars text-lg\"></i>\r\n </button>\r\n @for (item of menu.secondToLastLevel$ | async; track item) {\r\n <div class=\"relative flex flex-col items-center\">\r\n <div\r\n (click)=\"menu.activateItem(item)\"\r\n [pTooltip]=\"item.label | translate\"\r\n tooltipPosition=\"right\"\r\n class=\"relative flex items-center justify-center w-10 h-10 rounded-xl cursor-pointer hover:bg-white/20 transition-all duration-200\"\r\n [ngClass]=\"{ 'bg-white/30 scale-105 shadow-inner': item.expanded }\"\r\n >\r\n <i [class]=\"item.icon + ' text-xl'\"></i>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"flex flex-col items-center pb-3 text-white/80\">\r\n <i\r\n class=\"pi pi-cog text-lg hover:text-white cursor-pointer transition\"\r\n ></i>\r\n </div>\r\n </div>\r\n @if (menu.subSidebarVisible) {\r\n <div\r\n class=\"w-[290px] max-w-[290px] min-w-[260px] border-l border-gray-200 dark:border-gray-700 glass-bg animate-slideIn shadow-2xl rounded-l-3xl p-4 rtl:text-right overflow-y-auto overflow-x-hidden transition-all duration-300\"\r\n [ngClass]=\"{ 'absolute top-0 right-16 h-full z-40': menu.isMobile }\"\r\n >\r\n <app-routes-search></app-routes-search>\r\n\r\n <!-- Recursive rendering -->\r\n @if (menu.menuItems$ | async; as menuItems) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderMenu;\r\n context: { $implicit: menuItems, level: 1 }\r\n \"\r\n ></ng-container>\r\n }\r\n\r\n <ng-template #renderMenu let-items let-level=\"level\">\r\n @for (item of items; track item) {\r\n @if (!item.items?.length) {\r\n @let link = menu.getLinkProps(item);\r\n <div class=\"mb-1\">\r\n @if (link.isExternal) {\r\n <a\r\n [href]=\"link.href\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n (click)=\"$event.stopPropagation()\"\r\n class=\"flex items-center gap-2 px-3 py-2 rounded-lg transition-all hover:bg-primary-50 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-200\"\r\n >\r\n <i [class]=\"item.icon + ' text-base'\"></i>\r\n <span class=\"min-w-0 break-words whitespace-normal\">{{\r\n item.label | translate\r\n }}</span>\r\n <i class=\"pi pi-external-link text-[10px] opacity-50\"></i>\r\n </a>\r\n } @else {\r\n <div class=\"flex items-center gap-2\">\r\n <a\r\n [routerLink]=\"link.routerLink\"\r\n (click)=\"menu.closeAfterNavigate()\"\r\n routerLinkActive=\"active-link\"\r\n [ngClass]=\"{ 'search-match': menu.isSearchMatch(item) }\"\r\n class=\"flex-1 min-w-0 flex items-center gap-2 px-2 py-1 rounded-lg transition-all hover:bg-primary-50 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-200\"\r\n >\r\n <i [class]=\"item.icon + ' text-base'\"></i>\r\n <span class=\"min-w-0 break-words whitespace-normal\">\r\n {{ item.label | translate }}</span\r\n >\r\n </a>\r\n\r\n @if (link.addRoute) {\r\n <a\r\n [routerLink]=\"[link.addRoute]\"\r\n (click)=\"\r\n $event.stopPropagation(); menu.closeAfterNavigate()\r\n \"\r\n class=\"shrink-0 inline-flex items-center justify-center w-7 h-7 rounded-full text-gray-400 hover:text-primary-500 hover:bg-primary-50 dark:text-gray-500 dark:hover:text-primary-400 dark:hover:bg-primary-900/20 transition-all duration-200\"\r\n [pTooltip]=\"'ADD' | translate\"\r\n tooltipPosition=\"top\"\r\n >\r\n <i class=\"pi pi-plus text-xs\"></i>\r\n </a>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if (item.items?.length) {\r\n <div class=\"mb-1\">\r\n <div\r\n (click)=\"menu.toggleItem(item)\"\r\n [style.font-size.rem]=\"1.1 - level * 0.05\"\r\n [ngClass]=\"{\r\n 'font-bold': level === 1,\r\n 'font-semibold': level === 2,\r\n 'font-medium': level >= 3,\r\n 'bg-primary-50 text-primary-700 border-r-4 border-primary-500':\r\n item.expanded,\r\n 'search-match': menu.isSearchMatch(item),\r\n }\"\r\n class=\"flex justify-between items-center py-2 px-3 rounded-lg cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 transition text-gray-800 dark:text-gray-200\"\r\n >\r\n <div class=\"flex items-center gap-2\">\r\n <i [class]=\"item.icon + ' text-base'\"></i>\r\n\r\n <span>\r\n {{ item.label | translate }}\r\n </span>\r\n </div>\r\n\r\n <i\r\n class=\"pi\"\r\n [ngClass]=\"\r\n item.expanded ? 'pi-chevron-down' : 'pi-chevron-left'\r\n \"\r\n style=\"font-size: 0.6rem\"\r\n >\r\n </i>\r\n </div>\r\n\r\n @if (item.expanded) {\r\n <div\r\n class=\"mr-4 border-r border-gray-200 dark:border-gray-700 pr-2 mt-1\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderMenu;\r\n context: { $implicit: item.items, level: level + 1 }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </ng-template>\r\n </div>\r\n }\r\n</aside>\r\n@if (menu.isMobile && !menu.sidebarVisible) {\r\n <button\r\n class=\"floating-btn\"\r\n (click)=\"menu.openMenu()\"\r\n pTooltip=\"{{ 'MENU.OPEN' | translate }}\"\r\n tooltipPosition=\"top\"\r\n >\r\n <img src=\"/assets/logo.png\" alt=\"App Icon\" />\r\n </button>\r\n}\r\n","\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [],\r\n selector: 'abp-auth-wrapper',\r\n templateUrl: './auth-wrapper.component.html',\r\n // providers: [AuthWrapperService], // in account_core\r\n})\r\nexport class AuthWrapperComponent {\r\n constructor(/* public service: AuthWrapperService */) {}\r\n}\r\n"," <ng-content></ng-content>\r\n\r\n\r\n<!-- <div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if ((service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible) {\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n }\r\n\r\n <div class=\"abp-account-container\">\r\n @if (service.enableLocalLogin$ | async) {\r\n <div class=\"card mt-3 shadow-sm rounded\">\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | localize }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | localize }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div> -->\r\n","import { AfterViewInit, Component } from '@angular/core';\r\nimport { LayoutService } from '../../services/layout.service';\r\nimport { SubscriptionService } from '@es.framework/ng.core/services';\r\nimport { eLayoutType } from '@es.framework/ng.core/models';\r\n\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\r\nimport { RoutesComponent } from '../routes/routes.component';\r\nimport { AuthWrapperComponent } from './auth-wrapper/auth-wrapper.component';\r\nimport { ReplaceableTemplateDirective } from \"@es.framework/ng.core/directives\";\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [RoutesComponent, NavItemsComponent, RouterOutlet, AuthWrapperComponent, ReplaceableTemplateDirective],\r\n selector: 'abp-layout-account',\r\n templateUrl: './account-layout.component.html',\r\n providers: [LayoutService, SubscriptionService],\r\n})\r\nexport class AccountLayoutComponent implements AfterViewInit {\r\n // required for dynamic component\r\n static type = eLayoutType.account;\r\n\r\n authWrapperKey = 'Account.AuthWrapperComponent';\r\n\r\n constructor(public service: LayoutService) {}\r\n\r\n ngAfterViewInit() {\r\n // this.service.subscribeWindowSize();\r\n }\r\n}\r\n"," <abp-auth-wrapper\r\n *abpReplaceableTemplate=\"{\r\n componentKey: authWrapperKey\r\n }\"\r\n >\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n </abp-auth-wrapper>\r\n","\r\nimport { AfterViewInit, Component, Inject, inject, Injector, NgZone, PLATFORM_ID, Renderer2 } from '@angular/core';\r\nimport { LayoutService } from '../../services/layout.service';\r\nimport { SessionStateService, SubscriptionService } from '@es.framework/ng.core/services';\r\nimport { eLayoutType } from '@es.framework/ng.core/models';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { RoutesComponent } from '../routes/routes.component';\r\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\r\nimport { NavigationEnd, Router, RouterOutlet } from '@angular/router';\r\nimport { LocalizationService } from '@es.framework/ng.core/services';\r\nimport { ReplaceableTemplateDirective } from '@es.framework/ng.core/directives';\r\n// import { StyleLoaderService } from '@es.framework/ng.ui.shared/services';\r\nimport Swal from 'sweetalert2';\r\nimport { filter, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [RoutesComponent, NavItemsComponent, RouterOutlet, ReplaceableTemplateDirective],\r\n selector: 'abp-layout-application',\r\n templateUrl: './application-layout.component.html',\r\n animations: [/* slideFromBottom, */ /* appModuleAnimation() */],\r\n providers: [LayoutService, SubscriptionService],\r\n})\r\nexport class ApplicationLayoutComponent implements AfterViewInit {\r\n public readonly localization = inject(LocalizationService);\r\n public readonly service = inject(LayoutService);\r\n public readonly platformId = inject(PLATFORM_ID);\r\n\r\n // required for dynamic component\r\n static type = eLayoutType.application;\r\n overlayMenuOpenSubscription: Subscription;\r\n// @Input() showTopbar= true;\r\n menuOutsideClickListener: any;\r\n private sessionState = inject(SessionStateService);\r\n constructor(\r\n public layoutService: LayoutService,\r\n public renderer: Renderer2,\r\n public router: Router,\r\n public _zone: NgZone,\r\n // private _signalRService:SignalRService,\r\n private translate: LocalizationService,\r\n ) {\r\n\r\n var isBrowser = isPlatformBrowser(this.platformId);\r\n\r\n if (isBrowser) {\r\n var currentLanguage = 'ar';\r\n const savedLanguage = localStorage.getItem('language');\r\n var lang = this.sessionState.getLanguage()\r\n\r\n if (savedLanguage) {\r\n currentLanguage = savedLanguage;\r\n }\r\n if (lang) {\r\n currentLanguage = lang;\r\n }\r\n try {\r\n // this.translate.use(currentLanguage).subscribe(() => {\r\n // this.sessionState.setLanguage(currentLanguage);\r\n // });\r\n this.sessionState.setLanguage(currentLanguage);\r\n\r\n } catch (error) {\r\n\r\n }\r\n this.updateHtmlDirection(currentLanguage);\r\n\r\n const saved = localStorage.getItem('darkTheme');\r\nthis.layoutService.layoutConfig.update((state) => ({ ...state, darkTheme:saved === 'true' }));\r\n }\r\n this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\r\n if (!this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', (event) => {\r\n if (this.isOutsideClicked(event)) {\r\n this.hideMenu();\r\n }\r\n });\r\n }\r\n\r\n if (this.layoutService.layoutState().staticMenuMobileActive) {\r\n this.blockBodyScroll();\r\n }\r\n });\r\n\r\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\r\n this.hideMenu();\r\n });\r\n }\r\n\r\n private updateHtmlDirection(languageCode: string): void {\r\n const htmlElement = document.documentElement;\r\n if (languageCode === 'ar' || languageCode.includes('ar-')) {\r\n htmlElement.setAttribute('dir', 'rtl');\r\n htmlElement.classList.add('rtl');\r\n } else {\r\n //TODO\r\n htmlElement.setAttribute('dir', 'ltr');\r\n htmlElement.classList.remove('rtl');\r\n }\r\n }\r\n isOutsideClicked(event: MouseEvent) {\r\n if (typeof document === 'undefined') return;\r\n const sidebarEl = document.querySelector('.layout-sidebar');\r\n const topbarEl = document.querySelector('.layout-menu-button');\r\n const eventTarget = event.target as Node;\r\n\r\n return !(sidebarEl?.isSameNode(eventTarget) || sidebarEl?.contains(eventTarget) || topbarEl?.isSameNode(eventTarget) || topbarEl?.contains(eventTarget));\r\n }\r\n\r\n hideMenu() {\r\n this.layoutService.layoutState.update((prev) => ({ ...prev, overlayMenuActive: false, staticMenuMobileActive: false, menuHoverActive: false }));\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n this.menuOutsideClickListener = null;\r\n }\r\n this.unblockBodyScroll();\r\n }\r\n\r\n blockBodyScroll(): void {\r\n if (typeof document === 'undefined') return;\r\n if (document.body.classList) {\r\n document.body.classList.add('blocked-scroll');\r\n } else {\r\n document.body.className += ' blocked-scroll';\r\n }\r\n }\r\n\r\n unblockBodyScroll(): void {\r\n if (typeof document === 'undefined') return;\r\n if (document.body.classList) {\r\n document.body.classList.remove('blocked-scroll');\r\n } else {\r\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\r\n }\r\n }\r\n\r\n get containerClass() {\r\n return {\r\n 'layout-overlay': this.layoutService.layoutConfig().menuMode === 'overlay',\r\n 'layout-static': this.layoutService.layoutConfig().menuMode === 'static',\r\n 'layout-static-inactive': this.layoutService.layoutState().staticMenuDesktopInactive && this.layoutService.layoutConfig().menuMode === 'static',\r\n 'layout-overlay-active': this.layoutService.layoutState().overlayMenuActive,\r\n 'layout-mobile-active': this.layoutService.layoutState().staticMenuMobileActive\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n ngOnDestroy() {\r\n if (this.overlayMenuOpenSubscription) {\r\n this.overlayMenuOpenSubscription.unsubscribe();\r\n }\r\n\r\n if (this.menuOutsideClickListener) {\r\n this.menuOutsideClickListener();\r\n }\r\n }\r\n ngAfterViewInit() {\r\n // this.service.subscribeWindowSize();\r\n try {\r\n var mainColor = \"hsl(195,64.7%,26.2%\";\r\n document.body.style.setProperty('--main-theme-color', mainColor);\r\n // document.documentElement.style.setProperty('--main-theme-color', this.apptheme.mainColor);\r\n // Find the <meta> tag with the name \"theme-color\"\r\n var metaTag = document.querySelector('meta[name=\"theme-color\"]');\r\n\r\n // Check if the <meta> tag exists\r\n if (metaTag) {\r\n // Update the value of the content attribute\r\n metaTag.setAttribute('content', mainColor);\r\n }\r\n\r\n var metaTag1 = document.querySelector('meta[name=\"apple-mobile-web-status-bar\"]');\r\n\r\n // Check if the <meta> tag exists\r\n if (metaTag1) {\r\n // Update the value of the content attribute\r\n metaTag1.setAttribute('content', mainColor);\r\n }\r\n } catch (error) {\r\n\r\n }\r\n\r\n try {\r\n Swal.close();\r\n } catch (error) {\r\n\r\n }\r\n try {\r\n // new StyleLoaderService()\r\n // .load(\r\n // \"https://site-assets.fontawesome.com/releases/v6.7.2/css/all.css\",\r\n // \"https://cdn.jsdelivr.net/npm/primeicons@7.0.0/primeicons.min.css\",\r\n // // \"/assets/filepond.min.css\",\r\n // // \"/assets/bootstrap-datepicker.min.css\",\r\n // // \"/assets/activereports/styles/ar-js-viewer.css\",\r\n // // \"/assets/activereports/styles/ar-js-ui.css\",\r\n\r\n\r\n // )\r\n // .then(() => {\r\n\r\n // });\r\n } catch (error) {\r\n\r\n }\r\n }\r\n}\r\n","\r\n\r\n<div class=\"flex h-screen overflow-hidden\">\r\n\r\n <!-- Sidebar stays fixed -->\r\n\r\n <app-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.routesComponentKey,\r\n inputs: { smallScreen: { value: service.smallScreen } }\r\n }\"\r\n class=\"mb-2 md:mb-0\"\r\n ></app-routes>\r\n\r\n <!-- Main content scrolls -->\r\n <main class=\"flex-1 flex flex-col overflow-hidden\">\r\n\r\n <!-- Optional Topbar -->\r\n <!-- @if (showTopbar) { -->\r\n\r\n <app-nav-items\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.navItemsComponentKey\r\n }\"\r\n ></app-nav-items>\r\n\r\n <!-- p-6 space-y-6 -->\r\n <div class=\"flex-1 overflow-y-auto\">\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n </div>\r\n\r\n <!-- <app-footer></app-footer> -->\r\n\r\n </main>\r\n\r\n </div>\r\n\r\n","import { Component } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { eLayoutType } from '@es.framework/ng.core/models';\r\n\r\n@Component({\r\n standalone: true,\r\n imports:[RouterModule],\r\n selector: 'abp-layout-empty',\r\n template: ` <router-outlet></router-outlet> `,\r\n})\r\nexport class EmptyLayoutComponent {\r\n static type = eLayoutType.empty;\r\n}\r\n","export * from './account-layout/account-layout.component';\r\nexport * from './account-layout/auth-wrapper/auth-wrapper.component';\r\nexport * from './application-layout/application-layout.component';\r\nexport * from './empty-layout/empty-layout.component';\r\n// export * from './nav-items/languages.component';\r\nexport * from './nav-items/nav-items.component';\r\nexport * from './routes/routes.component';\r\n// export * from './validation-error/validation-error.component';\r\n","import { NavItemsService } from '@es.framework/ng.core/services';\r\n\r\nimport { inject, provideAppInitializer } from '@angular/core';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\nimport { LanguagesComponent } from '../components/nav-items/languages.component';\r\n\r\nexport const BASIC_THEME_NAV_ITEM_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n configureNavItems();\r\n }),\r\n];\r\n\r\n\r\nexport function configureNavItems() {\r\n const navItems = inject(NavItemsService);\r\n navItems.addItems([\r\n // {\r\n // id: eThemeBasicComponents.Languages,\r\n // order: 100,\r\n // component: LanguagesComponent,\r\n // },\r\n // {\r\n // id: eThemeBasicComponents.CurrentUser,\r\n // order: 100,\r\n // component: CurrentUserComponent,\r\n // },\r\n ]);\r\n}\r\n","\r\nimport { APP_INITIALIZER, inject, provideAppInitializer, Provider } from '@angular/core';\r\nimport { AccountLayoutComponent } from '../components/account-layout/account-layout.component';\r\nimport { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';\r\nimport { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\nimport { ReplaceableComponentsService } from '@es.framework/ng.core/services';\r\n\r\nexport const BASIC_THEME_STYLES_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n const initializerFn = configureStyles(\r\n // inject(DomInsertionService),\r\n inject(ReplaceableComponentsService),\r\n );\r\n\r\n return initializerFn();\r\n }),\r\n\r\n];\r\n\r\nexport function configureStyles(\r\n // domInsertion: DomInsertionService,\r\n replaceableComponents: ReplaceableComponentsService,\r\n) {\r\n return () => {\r\n // domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));\r\n\r\n initLayouts(replaceableComponents);\r\n };\r\n}\r\n\r\nfunction initLayouts(replaceableComponents: ReplaceableComponentsService) {\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.ApplicationLayout,\r\n component: ApplicationLayoutComponent,\r\n });\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.AccountLayout,\r\n component: AccountLayoutComponent,\r\n });\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.EmptyLayout,\r\n component: EmptyLayoutComponent,\r\n });\r\n}\r\n","\r\n\r\nimport { Injector, inject, provideAppInitializer } from '@angular/core';\r\nimport { eUserMenuItems } from '../enums/user-menu-items';\r\nimport { AuthService } from '@es.framework/ng.core/abstracts';\r\nimport { NAVIGATE_TO_MANAGE_PROFILE } from '@es.framework/ng.core/tokens';\r\nimport { UserMenuService,SessionStateService, SsrCookieService } from '@es.framework/ng.core/services';\r\nimport { NavItem } from '@es.framework/ng.core/models';\r\n\r\nexport const BASIC_THEME_USER_MENU_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n const initializerFn = configureUserMenu(inject(Injector));\r\n return initializerFn();\r\n }),\r\n];\r\n\r\n\r\nexport function configureUserMenu(injector: Injector) {\r\n const sessionService = injector.get(SessionStateService);\r\n const userMenu = injector.get(UserMenuService);\r\n const authService = injector.get(AuthService);\r\n const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);\r\n\r\n\r\n return () => {\r\n userMenu.addItems(\r\n [\r\n // // Only show when impersonated\r\n // ...(sessionService.impersonatorUserId\r\n // ? [{\r\n // id: eUserMenuItems.BackToMyAccount,\r\n // order: 0,\r\n // textTemplate: { text: 'BackToMyAccount', icon: 'pi pi-user-undo' },\r\n // action: () => {\r\n // // this.backToMyAccount()\r\n // },\r\n // }]\r\n // : [])\r\n // ,\r\n\r\n // {\r\n // id: eUserMenuItems.ChangePassword,\r\n // order: 1,\r\n // textTemplate: {\r\n // text: 'ChangePassword',\r\n // icon: 'pi pi-lock',\r\n // },\r\n // action: () => {\r\n // // this.changePassword()\r\n // },\r\n // },\r\n\r\n // {\r\n // id: eUserMenuItems.LoginAttempts,\r\n // order: 2,\r\n // textTemplate: {\r\n // text: 'LoginAttempts',\r\n // icon: 'pi pi-history',\r\n // },\r\n // action: () => {\r\n // // this.showLoginAttempts()\r\n // },\r\n // },\r\n\r\n // {\r\n // id: eUserMenuItems.MySettings,\r\n // order: 3,\r\n // textTemplate: {\r\n // text: 'MySettings',\r\n // icon: 'pi pi-cog',\r\n // },\r\n // // action: () => this.changeMySettings(),\r\n // },\r\n\r\n\r\n // // your existing high-order items\r\n // {\r\n // id: eUserMenuItems.MyAccount,\r\n // order: 100,\r\n // textTemplate: {\r\n // text: 'Account::MyAccount',\r\n // icon: 'pi pi-user-cog',\r\n // },\r\n // action: () => navigateToManageProfile(),\r\n // },\r\n {\r\n id: eUserMenuItems.Logout,\r\n order: 101,\r\n visible:(item:any) => true,\r\n textTemplate: {\r\n // text: 'تسجيل الخروج',\r\n text: 'Logout',\r\n icon: 'pi pi-sign-out',\r\n },\r\n action: () =>{\r\n\r\n try {\r\n var cc = document.cookie.split(\";\");\r\n for (let index = 0; index < cc.length; index++) {\r\n const c = cc[index];\r\n document.cookie = c.replace(/^ +/, \"\").replace(/=.*/, \"=;expires=\" + new Date().toUTCString() + \";path=/\");\r\n }\r\n } catch (error) {\r\n \r\n }\r\n // authService.logout().subscribe();\r\n try {\r\n location.href = '/account/login';\r\n } catch (error) {\r\n\r\n }\r\n },\r\n },\r\n ]\r\n // filter out any nulls (e.g. when not impersonated)\r\n\r\n );\r\n};\r\n\r\n}\r\n\r\n","import { makeEnvironmentProviders, inject } from '@angular/core';\r\n\r\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './nav-item.provider';\r\nimport { BASIC_THEME_USER_MENU_PROVIDERS } from './user-menu.provider';\r\nimport { BASIC_THEME_STYLES_PROVIDERS } from './styles.provider';\r\n\r\nexport function provideThemeBasicConfig() {\r\n return makeEnvironmentProviders([\r\n // BrowserAnimationsModule\r\n BASIC_THEME_NAV_ITEM_PROVIDERS,\r\n BASIC_THEME_USER_MENU_PROVIDERS,\r\n BASIC_THEME_STYLES_PROVIDERS,\r\n // {\r\n // provide: VALIDATION_ERROR_TEMPLATE,\r\n // useValue: ValidationErrorComponent,\r\n // },\r\n // {\r\n // provide: VALIDATION_TARGET_SELECTOR,\r\n // useValue: '.form-group',\r\n // },\r\n // {\r\n // provide: VALIDATION_INVALID_CLASSES,\r\n // useValue: 'is-invalid',\r\n // },\r\n // LazyStyleHandler,\r\n // provideAppInitializer(() => {\r\n // inject(LazyStyleHandler);\r\n // }),\r\n ]);\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LAZY_STYLES = new InjectionToken<string[]>('LAZY_STYLES');\r\n","export * from './components';\r\nexport * from './enums';\r\nexport * from './models';\r\nexport * from './providers';\r\nexport * from './services';\r\nexport * from './tokens';\r\n// export * from './constants';\r\n// export * from './handlers';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i6","i7","i1.LayoutService"],"mappings":"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"}
|