cloud-ide-core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +24 -0
  2. package/esm2022/cloud-ide-core.mjs +5 -0
  3. package/esm2022/lib/cloud-ide-core.component.mjs +19 -0
  4. package/esm2022/lib/cloud-ide-core.service.mjs +14 -0
  5. package/esm2022/lib/core/department-management/components/department-list/department-list.component.mjs +768 -0
  6. package/esm2022/lib/core/department-management/index.mjs +5 -0
  7. package/esm2022/lib/core/department-management/services/department-management.service.mjs +187 -0
  8. package/esm2022/lib/core/designation-management/components/designation-list/designation-list.component.mjs +1122 -0
  9. package/esm2022/lib/core/designation-management/index.mjs +5 -0
  10. package/esm2022/lib/core/designation-management/services/designation-management.service.mjs +194 -0
  11. package/esm2022/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.mjs +794 -0
  12. package/esm2022/lib/core/grade-level-management/index.mjs +5 -0
  13. package/esm2022/lib/core/grade-level-management/services/grade-level-management.service.mjs +172 -0
  14. package/esm2022/lib/core/menu-management/components/menu-list/menu-list.component.mjs +1135 -0
  15. package/esm2022/lib/core/menu-management/index.mjs +10 -0
  16. package/esm2022/lib/core/menu-management/interfaces/menu-item.interface.mjs +11 -0
  17. package/esm2022/lib/core/menu-management/mock-data/menu-items.json +311 -0
  18. package/esm2022/lib/core/menu-management/services/menu-management.service.mjs +230 -0
  19. package/esm2022/lib/core/page-management/components/page-controls/page-controls.component.mjs +483 -0
  20. package/esm2022/lib/core/page-management/components/page-list/page-list.component.mjs +393 -0
  21. package/esm2022/lib/core/page-management/components/page-theme/page-theme.component.mjs +767 -0
  22. package/esm2022/lib/core/page-management/index.mjs +10 -0
  23. package/esm2022/lib/core/page-management/services/page-controls.service.mjs +136 -0
  24. package/esm2022/lib/core/page-management/services/page-management.service.mjs +98 -0
  25. package/esm2022/lib/core/page-management/services/page-theme.service.mjs +107 -0
  26. package/esm2022/public-api.mjs +16 -0
  27. package/fesm2022/cloud-ide-core.mjs +6859 -0
  28. package/fesm2022/cloud-ide-core.mjs.map +1 -0
  29. package/index.d.ts +5 -0
  30. package/lib/cloud-ide-core.component.d.ts +5 -0
  31. package/lib/cloud-ide-core.service.d.ts +6 -0
  32. package/lib/core/department-management/components/department-list/department-list.component.d.ts +178 -0
  33. package/lib/core/department-management/index.d.ts +2 -0
  34. package/lib/core/department-management/services/department-management.service.d.ts +68 -0
  35. package/lib/core/designation-management/components/designation-list/designation-list.component.d.ts +242 -0
  36. package/lib/core/designation-management/index.d.ts +2 -0
  37. package/lib/core/designation-management/services/designation-management.service.d.ts +69 -0
  38. package/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.d.ts +199 -0
  39. package/lib/core/grade-level-management/index.d.ts +2 -0
  40. package/lib/core/grade-level-management/services/grade-level-management.service.d.ts +69 -0
  41. package/lib/core/menu-management/components/menu-list/menu-list.component.d.ts +278 -0
  42. package/lib/core/menu-management/index.d.ts +3 -0
  43. package/lib/core/menu-management/interfaces/menu-item.interface.d.ts +30 -0
  44. package/lib/core/menu-management/services/menu-management.service.d.ts +85 -0
  45. package/lib/core/page-management/components/page-controls/page-controls.component.d.ts +126 -0
  46. package/lib/core/page-management/components/page-list/page-list.component.d.ts +91 -0
  47. package/lib/core/page-management/components/page-theme/page-theme.component.d.ts +189 -0
  48. package/lib/core/page-management/index.d.ts +6 -0
  49. package/lib/core/page-management/services/page-controls.service.d.ts +54 -0
  50. package/lib/core/page-management/services/page-management.service.d.ts +42 -0
  51. package/lib/core/page-management/services/page-theme.service.d.ts +43 -0
  52. package/package.json +25 -0
  53. package/public-api.d.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-ide-core.mjs","sources":["../../../projects/cloud-ide-core/src/lib/cloud-ide-core.service.ts","../../../projects/cloud-ide-core/src/lib/cloud-ide-core.component.ts","../../../projects/cloud-ide-core/src/lib/core/menu-management/services/menu-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/menu-management/components/menu-list/menu-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/menu-management/components/menu-list/menu-list.component.html","../../../projects/cloud-ide-core/src/lib/core/menu-management/interfaces/menu-item.interface.ts","../../../projects/cloud-ide-core/src/lib/core/menu-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/department-management/services/department-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/department-management/components/department-list/department-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/department-management/components/department-list/department-list.component.html","../../../projects/cloud-ide-core/src/lib/core/department-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/designation-management/services/designation-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/services/grade-level-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/designation-management/components/designation-list/designation-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/designation-management/components/designation-list/designation-list.component.html","../../../projects/cloud-ide-core/src/lib/core/designation-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.html","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/services/page-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-list/page-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-list/page-list.component.html","../../../projects/cloud-ide-core/src/lib/core/page-management/services/page-theme.service.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-theme/page-theme.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-theme/page-theme.component.html","../../../projects/cloud-ide-core/src/lib/core/page-management/services/page-controls.service.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-controls/page-controls.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-controls/page-controls.component.html","../../../projects/cloud-ide-core/src/lib/core/page-management/index.ts","../../../projects/cloud-ide-core/src/public-api.ts","../../../projects/cloud-ide-core/src/cloud-ide-core.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CloudIdeCoreService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cide-core',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n cloud-ide-core works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class CloudIdeCoreComponent {\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject, of } from 'rxjs';\r\nimport { catchError, tap, map } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl, \r\n ICoreSyme, \r\n MCoreSymeDeletePayload, \r\n MCoreSymeGetByIdPayload, \r\n menuByIdControllerResponse, \r\n menuDeleteControllerResponse, \r\n menuListControllerResponse, \r\n MMenuListPayload\r\n} from 'cloud-ide-lms-model';\r\nimport mockMenuData from '../mock-data/menu-items.json';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MenuManagementService {\r\n private apiUrl = `${coreRoutesUrl?.getSidebarMenues}`;\r\n private menuListSubject = new BehaviorSubject<ICoreSyme[]>([]);\r\n public menuList$ = this.menuListSubject.asObservable();\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('MenuManagementService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get menu list from API\r\n */\r\n getMenuList(body: MMenuListPayload): Observable<menuListControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<menuListControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]))\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response?.success) {\r\n this.menuListSubject.next(response?.data || []);\r\n }\r\n }),\r\n catchError(error => {\r\n console.error('MenuManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get menu list using mock data\r\n */\r\n getMenuListWithMockData(): Observable<menuListControllerResponse> {\r\n console.log('Using mock data for menu list');\r\n // Convert mock data to match ICoreSyme interface\r\n const mockData = {\r\n ...mockMenuData,\r\n data: mockMenuData.data.map((item: Record<string, unknown>) => ({\r\n ...item,\r\n syme_link: (item['syme_link'] as boolean) ? '1' : '0' // Convert boolean to string\r\n }))\r\n };\r\n return of(mockData as menuListControllerResponse).pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response?.success) {\r\n this.menuListSubject.next(response?.data || []);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get menu list from cache (if available)\r\n */\r\n getMenuListFromCache(): ICoreSyme[] {\r\n return this.menuListSubject.value;\r\n }\r\n\r\n /**\r\n * Create new menu item\r\n * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse\r\n */\r\n createMenuItem(menuItem: ICoreSyme): Observable<menuListControllerResponse> {\r\n console.log('Creating menu item:', menuItem);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu]);\r\n return this.http.post<menuListControllerResponse>(url, menuItem)\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing menu item\r\n * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse\r\n */\r\n updateMenuItem(id: string, menuItem: ICoreSyme): Observable<menuListControllerResponse> {\r\n console.log('Updating menu item:', id, menuItem);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu]);\r\n return this.http.post<menuListControllerResponse>(url, menuItem)\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get menu item by ID\r\n * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse\r\n * TODO: Update to use MCoreSymeGetByIdPayload and menuByIdControllerResponse when available\r\n */\r\n getMenuItemById(id: string): Observable<menuByIdControllerResponse> {\r\n console.log('Getting menu item by ID:', id);\r\n const payload: MCoreSymeGetByIdPayload = { syme_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, 'byId', query]);\r\n return this.http.get<menuByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete menu item\r\n * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse\r\n * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available\r\n */\r\n deleteMenuItem(id: string): Observable<menuDeleteControllerResponse> {\r\n const payload: MCoreSymeDeletePayload = { syme_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]);\r\n return this.http.delete<menuDeleteControllerResponse>(url)\r\n .pipe(\r\n tap((response: menuDeleteControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete multiple menu items\r\n * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse\r\n * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available\r\n */\r\n deleteMultipleMenuItems(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\r\n console.log('Deleting multiple menu items:', ids);\r\n const payload = { ids };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]);\r\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\r\n .pipe(\r\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle menu item active status\r\n */\r\n toggleMenuItemStatus(id: string): Observable<menuListControllerResponse> {\r\n console.log('Toggling menu item status:', id);\r\n const payload = { id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]);\r\n return this.http.put<menuListControllerResponse>(url, {})\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get available menu types\r\n */\r\n getMenuTypes(): Observable<string[]> {\r\n return this.http.get<{ data: string[] }>('/api/menu/types')\r\n .pipe(\r\n map((response: { data: string[] }) => response.data),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get available icons\r\n */\r\n getAvailableIcons(): Observable<string[]> {\r\n return this.http.get<{ data: string[] }>('/api/menu/icons')\r\n .pipe(\r\n map((response: { data: string[] }) => response.data),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find menu item by ID (including nested items)\r\n */\r\n findMenuItemById(id: string, items: ICoreSyme[] = this.menuListSubject.value): ICoreSyme | null {\r\n // Local search in current menu list\r\n for (const item of items) {\r\n if (item._id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Get parent menu items for dropdown selection\r\n */\r\n getParentMenuItems(excludeId?: string): ICoreSyme[] {\r\n const allItems: ICoreSyme[] = [];\r\n\r\n const flattenItems = (items: ICoreSyme[], level: number = 0) => {\r\n items.forEach(item => {\r\n if (item._id !== excludeId) {\r\n allItems.push({\r\n ...item,\r\n syme_title: ' '.repeat(level) + item.syme_title\r\n });\r\n }\r\n });\r\n };\r\n\r\n flattenItems(this.menuListSubject.value);\r\n return allItems;\r\n }\r\n\r\n /**\r\n * Refresh menu list from server\r\n */\r\n private refreshMenuList(): void {\r\n // Create a default body for getting all menu items\r\n const defaultBody: MMenuListPayload = {\r\n pageIndex: 1,\r\n pageSize: 10\r\n };\r\n this.getMenuList(defaultBody).subscribe({\r\n next: () => {\r\n console.log('Menu list refreshed successfully');\r\n },\r\n error: (error) => {\r\n console.error('Error refreshing menu list:', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Menu Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ICoreSyme, MMenuListPayload } from 'cloud-ide-lms-model';\nimport { MenuManagementService } from '../../services/menu-management.service';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\n\n\n\n@Component({\n selector: 'cide-core-app-menu-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n templateUrl: './menu-list.component.html',\n styleUrls: []\n})\nexport class MenuListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private menuService = inject(MenuManagementService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n menuDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<ICoreSyme>>>('menuDetailsRendererTemplate');\n menuTypeRendererTemplate = viewChild.required<TemplateRef<TemplateContext<ICoreSyme>>>('menuTypeRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<ICoreSyme>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n menuItems = signal<ICoreSyme[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Modern reactive forms with signals\n selectedParentItem = signal<ICoreSyme | null>(null);\n\n // Retrieved menu item data\n retrievedMenuItem = signal<ICoreSyme | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Drag order management\n originalOrder = signal<ICoreSyme[]>([]);\n hasOrderChanged = signal(false);\n \n\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n syme_title: this.fb.control('', [Validators.required, Validators.minLength(2), Validators.maxLength(100)]),\n syme_desc: this.fb.control('', [Validators.maxLength(255)]),\n syme_type: this.fb.control<'module' | 'section' | 'menu' | 'title'>('module', [Validators.required]),\n syme_id_syme: this.fb.control(''),\n syme_path: this.fb.control('', [Validators.maxLength(255)]),\n syme_icon: this.fb.control('', [Validators.maxLength(50)]),\n syme_link: this.fb.control('', [Validators.maxLength(255)]),\n syme_isactive: this.fb.control(true, [Validators.required]),\n syme_order_by: this.fb.control(1, [Validators.required, Validators.min(1)])\n });\n\n\n\n // Menu type options for quick add - dynamic based on parent selection\n menuTypeOptions = computed(() => {\n if (this.selectedParentItem()) {\n // When parent is selected, allow creating child types only\n return [\n { value: 'section', label: 'Section' },\n { value: 'menu', label: 'Menu Item' },\n { value: 'title', label: 'Title' }\n ];\n } else {\n // When no parent is selected, only allow module creation\n return [\n { value: 'module', label: 'Module' }\n ];\n }\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSyme>>({\n id: 'menu-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Menu Item',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'menuDetailsRenderer'\n },\n {\n key: 'syme_type',\n header: 'Type',\n type: 'custom',\n width: '120px',\n truncate: false,\n align: 'center',\n renderer: 'menuTypeRenderer'\n },\n {\n key: 'syme_path',\n header: 'Path',\n type: 'text',\n width: '200px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'syme_order_by',\n header: 'Order',\n type: 'order',\n width: '80px',\n truncate: false,\n align: 'center'\n },\n {\n key: 'syme_isactive',\n header: 'Status',\n type: 'status',\n width: '100px',\n truncate: false,\n align: 'center',\n statusConfig: {\n activeValue: true,\n activeLabel: 'Active',\n inactiveLabel: 'Inactive',\n activeClass: 'tw-bg-green-100 tw-text-green-800',\n inactiveClass: 'tw-bg-red-100 tw-text-red-800'\n }\n },\n\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n\n search: {\n enabled: true,\n placeholder: 'Search menu items...',\n searchableColumns: ['syme_title', 'syme_desc', 'syme_path'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n\n dragDrop: {\n enabled: true,\n orderField: 'syme_order_by',\n dragClass: 'tw-opacity-50 tw-bg-blue-50',\n dropClass: 'tw-bg-green-50'\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onMenuItemRefresh',\n onRowReorder: 'onRowReorder',\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'syme_id_syme',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'isExpanded',\n hasChildrenKey: 'hasChildren'\n }\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext<ICoreSyme>>> => ({\n menuDetailsRenderer: this.menuDetailsRendererTemplate(),\n menuTypeRenderer: this.menuTypeRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n * These templates are available for enhanced data grid components\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext<ICoreSyme>>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n * Uses template-based renderers converted to string functions\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSyme) => string> {\n // This method is no longer needed since we're using templates directly\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditMenuItem: (row: ICoreSyme) => this.editMenuItem(row._id || ''),\n onToggleMenuItem: (row: ICoreSyme) => this.toggleItemStatus(row._id || ''),\n onDeleteMenuItem: (row: ICoreSyme) => this.deleteMenuItem(row._id || ''),\n onMenuItemRowClick: (row: ICoreSyme) => this.onMenuItemRowClick(row),\n onMenuItemRefresh: () => this.onMenuItemRefresh(),\n onAddChild: (row: ICoreSyme) => this.onAddChild(row),\n resetOrder: () => this.resetDragOrder(),\n saveOrder: () => this.saveMenuOrder()\n };\n\n\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Modern constructor with effects for initialization\n constructor() {\n // Initialize component once on construction\n this.initializeComponent();\n\n // Cleanup effect for event listeners\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('MenuListComponent initialized with modern Angular patterns');\n console.log('Grid config initial:', this.gridConfig());\n this.loadMenuItems();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleMenuAction: (action: string, id: string) => void }).handleMenuAction = this.handleMenuAction.bind(this);\n\n }\n }\n\n /**\n * Get default type based on parent selection (computed for reactivity)\n */\n private getDefaultType = computed(() => {\n return this.selectedParentItem() ? 'section' : 'module';\n });\n\n /**\n * Load menu items from service\n */\n loadMenuItems(): void {\n console.log('🚀 MenuListComponent.loadMenuItems() called');\n this.loading.set(true);\n this.error.set(null);\n\n console.log('📞 Calling menuService.getMenuList()...');\n const requestBody: MMenuListPayload = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm(),\n sort: { order: 'asc', key: 'syme_order_by' }\n };\n console.log('📋 Request body:', requestBody);\n\n // Check if service exists\n if (!this.menuService) {\n console.error('❌ MenuService is not available');\n this.error.set('Menu service is not available');\n this.loading.set(false);\n return;\n }\n\n this.menuService.getMenuList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 MenuListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting menu items:', response.data);\n console.log('📊 Total items:', response.total);\n const menuData = response?.data || [];\n this.menuItems.set(menuData);\n this.totalItems.set(response.total || 0);\n\n // Save original order for drag reset functionality\n if (this.originalOrder().length === 0) {\n this.originalOrder.set([...menuData]);\n console.log('💾 Original order saved for drag reset');\n }\n\n this.updateGridData(menuData);\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load menu items');\n }\n },\n error: (err) => {\n console.error('❌ MenuListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading menu items');\n },\n complete: () => {\n console.log('MenuListComponent loadMenuItems completed');\n this.loading.set(false);\n }\n });\n }\n\n\n\n\n\n\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n // Check if click is outside any dropdown\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n // Close all dropdowns\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n // Reset all button states\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n // Close the dropdown\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n // Handle the action\n switch (action) {\n case 'edit':\n this.editMenuItem(itemId);\n break;\n case 'toggle':\n this.toggleItemStatus(itemId);\n break;\n case 'delete':\n this.deleteMenuItem(itemId);\n break;\n }\n }\n }\n }\n\n\n\n \n\n /**\n * Update grid data\n */\n private updateGridData(menuItems: ICoreSyme[]): void {\n console.log('🔄 updateGridData called with:', menuItems);\n console.log('🔄 Number of items:', menuItems.length);\n \n this.gridConfig.update(config => {\n const newConfig = {\n ...config,\n data: menuItems\n };\n console.log('⚙️ Updated grid config with menu items');\n return newConfig;\n });\n \n console.log('✅ Grid config after update');\n }\n\n\n\n\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSyme>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadMenuItems();\n break;\n case 'pageChange': {\n // Handle pagination from data grid\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadMenuItems();\n } else {\n // Handle simple page number\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadMenuItems();\n }\n }\n break;\n }\n case 'refresh':\n this.onMenuItemRefresh();\n break;\n case 'rowClick':\n this.onMenuItemRowClick(event.data as ICoreSyme);\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editMenuItem(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleItemStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteMenuItem(event.data as string);\n }\n break;\n case 'rowReorder': {\n this.onRowReorder(event.data as { sourceIndex: number; targetIndex: number; newOrder: ICoreSyme[] });\n break;\n }\n }\n }\n\n /**\n * Handle menu item search\n */\n\n\n\n\n /**\n * Handle menu item refresh\n */\n onMenuItemRefresh(): void {\n this.loadMenuItems();\n }\n\n /**\n * Handle menu item row click\n */\n onMenuItemRowClick(menuItem: ICoreSyme): void {\n // Navigate to edit page or show details\n this.editMenuItem(menuItem._id || '');\n }\n\n /**\n * Handle row reorder event\n */\n onRowReorder(data: { sourceIndex: number; targetIndex: number; newOrder: ICoreSyme[] }) {\n console.log('🔄 Row reorder event:', data);\n\n // Save original order if not already saved\n if (this.originalOrder().length === 0) {\n this.originalOrder.set([...this.menuItems()]);\n }\n\n // Update the displayed data with new order\n this.menuItems.set(data.newOrder);\n\n // Mark that order has changed\n this.hasOrderChanged.set(true);\n\n // Update grid data\n this.updateGridDataAfterReorder();\n console.log('Updated menuItems:', this.menuItems());\n }\n\n /**\n * Update grid data after reordering\n */\n private updateGridDataAfterReorder() {\n const currentConfig = this.gridConfig();\n this.gridConfig.set({\n ...currentConfig,\n data: this.menuItems()\n });\n }\n\n /**\n * Save menu order\n */\n saveMenuOrder() {\n console.log('💾 Saving menu order...');\n // Here you would typically call the API to save the new order\n // For now, we'll just update the original order and reset the change flag\n this.originalOrder.set([...this.menuItems()]);\n this.hasOrderChanged.set(false);\n console.log('✅ Menu order saved successfully');\n }\n\n /**\n * Reset drag order to original state\n */\n resetDragOrder() {\n console.log('🔄 Resetting drag order to original state');\n\n // Restore the original order\n const originalItems = this.originalOrder();\n if (originalItems.length > 0) {\n this.menuItems.set([...originalItems]);\n this.updateGridDataAfterReorder();\n }\n\n // Reset the change flag\n this.hasOrderChanged.set(false);\n\n console.log('✅ Drag order reset successfully');\n }\n\n /**\n * Check if order has changed\n */\n hasOrderChanges(): boolean {\n return this.hasOrderChanged();\n }\n\n /**\n * Toggle item selection\n */\n toggleItemSelection(itemId: string): void {\n const current = this.selectedItems();\n const index = current.indexOf(itemId);\n\n if (index > -1) {\n current.splice(index, 1);\n } else {\n current.push(itemId);\n }\n\n this.selectedItems.set([...current]);\n }\n\n /**\n * Select all items on current page\n */\n selectAllOnPage(): void {\n // This method is no longer needed with data grid\n // Data grid handles selection internally\n }\n\n /**\n * Clear all selections\n */\n clearSelection(): void {\n this.selectedItems.set([]);\n }\n\n /**\n * Navigate to edit menu form\n */\n editMenuItem(itemId: string): void {\n console.log('🔵 editMenuItem called with:', itemId);\n // Set edit mode and get the menu item by ID\n this.isEditMode.set(true);\n this.getMenuItemById(itemId);\n }\n\n /**\n * Get menu item by ID using the API\n * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse\n */\n getMenuItemById(itemId: string): void {\n console.log('🔵 getMenuItemById called with:', itemId);\n this.loading.set(true);\n\n this.menuService.getMenuItemById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Menu item retrieved successfully:', response.data);\n // Store the retrieved menu item data in the signal\n // Handle both single item and array responses\n let menuItem: ICoreSyme | null = null;\n menuItem = response.data || null;\n\n this.retrievedMenuItem.set(menuItem);\n\n // If in edit mode, populate the form with the retrieved data\n if (this.isEditMode() && menuItem) {\n this.populateFormForEdit(menuItem);\n }\n } else {\n this.error.set('Failed to retrieve menu item');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the menu item');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with menu item data for editing\n */\n populateFormForEdit(menuItem: ICoreSyme): void {\n console.log('🔵 populateFormForEdit called with:', menuItem);\n\n // Populate the form with the menu item data\n this.quickAddForm.patchValue({\n syme_title: menuItem.syme_title || '',\n syme_desc: menuItem.syme_desc || '',\n syme_type: (menuItem.syme_type as 'module' | 'section' | 'menu' | 'title') || 'module',\n syme_id_syme: menuItem.syme_id_syme || '',\n syme_path: menuItem.syme_path || '',\n syme_icon: menuItem.syme_icon || '',\n syme_link: menuItem.syme_link || '',\n syme_isactive: menuItem.syme_isactive ?? true,\n syme_order_by: menuItem.syme_order_by || 1\n });\n\n // Set the selected parent if this item has a parent\n if (menuItem.syme_id_syme) {\n // Find the parent item in the current menu items\n const parentItem = this.menuItems().find(item => item._id === menuItem.syme_id_syme);\n if (parentItem) {\n this.selectedParentItem.set(parentItem);\n }\n }\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete menu item\n */\n deleteMenuItem(itemId: string): void {\n console.log('🔵 deleteMenuItem called with:', itemId);\n if (confirm('Are you sure you want to delete this menu item?')) {\n this.loading.set(true);\n\n this.menuService.deleteMenuItem(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMenuItems(); // Reload the list\n } else {\n this.error.set('Failed to delete menu item');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting the menu item');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Delete multiple selected items\n */\n deleteSelectedItems(): void {\n const selected = this.selectedItems();\n\n if (selected.length === 0) {\n return;\n }\n\n if (confirm(`Are you sure you want to delete ${selected.length} selected menu item(s)?`)) {\n this.loading.set(true);\n\n // Use bulk delete service method\n this.menuService.deleteMultipleMenuItems(selected)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Multiple menu items deleted successfully');\n this.loadMenuItems(); // Reload the list\n this.clearSelection();\n } else {\n this.error.set('Failed to delete some menu items');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting menu items');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle menu item status\n */\n toggleItemStatus(itemId: string): void {\n console.log('🔵 toggleItemStatus called with:', itemId);\n this.loading.set(true);\n\n this.menuService.toggleMenuItemStatus(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMenuItems(); // Reload the list\n } else {\n this.error.set('Failed to toggle menu item status');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update search term\n */\n onSearchChange(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchTerm.set(value);\n }\n\n /**\n * Navigate to specific page\n */\n goToPage(): void {\n // Data grid handles pagination internally\n }\n\n /**\n * Get menu type display name\n */\n getMenuTypeDisplay(type: string): string {\n const typeMap: Record<string, string> = {\n 'module': 'Module',\n 'section': 'Section',\n 'menu': 'Menu Item',\n 'title': 'Title'\n };\n return typeMap[type] || type;\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Get menu type class for styling\n */\n getMenuTypeClass(type: string): string {\n switch (type) {\n case 'module': return 'tw-bg-purple-100 tw-text-purple-800';\n case 'section': return 'tw-bg-blue-100 tw-text-blue-800';\n case 'menu': return 'tw-bg-green-100 tw-text-green-800';\n case 'title': return 'tw-bg-gray-100 tw-text-gray-800';\n default: return 'tw-bg-gray-100 tw-text-gray-800';\n }\n }\n\n\n\n /**\n * Check if item is selected\n */\n isItemSelected(itemId: string): boolean {\n return this.selectedItems().includes(itemId);\n }\n\n /**\n * Check if all items on current page are selected\n */\n isAllSelectedOnPage(): boolean {\n // This method is no longer needed with data grid\n // Data grid handles selection internally\n return false;\n }\n\n /**\n * Get pagination range\n */\n getPaginationRange(): number[] {\n // This method is no longer needed with data grid\n // Data grid handles pagination internally\n return [];\n }\n\n\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSyme): string {\n return item._id || '';\n }\n\n\n\n /**\n * Quick add or update menu item using reactive form\n */\n quickAddMenuItem() {\n if (this.quickAddForm.invalid) return;\n\n const formValue = this.quickAddForm.value;\n\n // Prepare the menu item using ICoreSyme model structure\n const menuItem: Partial<ICoreSyme> = {\n _id: this.retrievedMenuItem()?._id || '',\n syme_title: formValue.syme_title,\n syme_desc: formValue.syme_desc || '',\n syme_type: formValue.syme_type,\n syme_id_syme: formValue.syme_id_syme || undefined,\n syme_path: formValue.syme_path || '',\n syme_icon: formValue.syme_icon || '',\n syme_link: formValue.syme_link || '',\n syme_order_by: formValue.syme_order_by,\n syme_isactive: formValue.syme_isactive\n };\n\n // Check if we're in edit mode\n if (this.isEditMode() && this.retrievedMenuItem()) {\n // Update existing menu item\n const itemId = this.retrievedMenuItem()?._id;\n if (itemId) {\n console.log('🔵 Updating menu item:', itemId);\n this.menuService.updateMenuItem(itemId, menuItem).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Menu item updated successfully');\n // Reset form and exit edit mode\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n // Reload menu items\n this.loadMenuItems();\n }\n },\n error: () => {\n this.error.set('Failed to update menu item');\n }\n });\n }\n } else {\n // Create new menu item\n console.log('🔵 Creating new menu item');\n this.menuService.createMenuItem(menuItem).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Menu item created successfully');\n // Reset reactive form with default values\n this.resetQuickAddForm();\n // Reload menu items\n this.loadMenuItems();\n }\n },\n error: () => {\n this.error.set('Failed to create menu item');\n }\n });\n }\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n // Clear selected parent to return to module creation mode\n this.selectedParentItem.set(null);\n\n // Clear edit mode and retrieved item\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n\n this.quickAddForm.reset({\n syme_title: '',\n syme_desc: '',\n syme_type: 'module', // Always default to module on reset\n syme_id_syme: '',\n syme_path: '',\n syme_icon: '',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1\n });\n }\n\n /**\n * Handle add child button click from row action\n */\n onAddChild(parentItem: ICoreSyme): void {\n console.log('🔵 onAddChild called with:', parentItem);\n console.log('🔵 Parent title:', parentItem.syme_title);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n\n // Set the selected parent item first using signal\n this.selectedParentItem.set(parentItem);\n console.log('🔵 selectedParentItem set to:', this.selectedParentItem());\n\n // Update form with parent context (don't call resetQuickAddForm as it clears the parent)\n this.quickAddForm.patchValue({\n syme_title: '',\n syme_desc: '',\n syme_type: 'section', // Default to section for child items\n syme_id_syme: parentItem._id,\n syme_path: '',\n syme_icon: '',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1\n });\n\n console.log('🔵 Form updated, parent should be visible:', this.selectedParentItem()?.syme_title);\n }\n\n /**\n * Handle row reorder event\n */\n\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n // Close all other dropdowns first\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n // Toggle the clicked dropdown\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle menu action clicks\n */\n handleMenuAction(action: string, itemId: string) {\n const item = this.menuItems().find(item => item._id === itemId);\n if (!item) return;\n\n // Close the dropdown\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n // Handle the action\n switch (action) {\n case 'addChild':\n this.addChildMenuItem(itemId, item);\n break;\n case 'edit':\n this.editMenuItem(itemId);\n break;\n case 'toggle':\n this.toggleItemStatus(itemId);\n break;\n case 'delete':\n this.deleteMenuItem(itemId);\n break;\n }\n }\n\n /**\n * Add child menu item - sets parent and scrolls to form\n */\n addChildMenuItem(parentId: string, parentItem: ICoreSyme) {\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n\n // Set the parent ID in the form\n this.quickAddForm.patchValue({\n syme_id_syme: parentId\n });\n\n // Update UI to show which parent is selected\n this.selectedParentItem.set(parentItem);\n\n // Scroll to the form\n const formElement = document.querySelector('.tw-px-6.tw-py-4.tw-border-b');\n if (formElement) {\n formElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n\n // Focus on the title input\n setTimeout(() => {\n const titleInput = document.getElementById('syme_title');\n if (titleInput) {\n titleInput.focus();\n }\n }, 300);\n }\n\n /**\n * Clear selected parent\n */\n clearSelectedParent() {\n this.selectedParentItem.set(null);\n this.quickAddForm.patchValue({\n syme_id_syme: '',\n syme_type: 'module' // Reset to module when no parent\n });\n }\n\n /**\n * Helper methods for templates\n */\n getMenuTypeLabel(type: string): string {\n const typeMap: { [key: string]: string } = {\n 'module': 'Module',\n 'section': 'Section',\n 'menu': 'Menu Item',\n 'title': 'Title'\n };\n return typeMap[type] || 'Unknown';\n }\n\n\n\n\n /**\n * Generate dropdown items for menu actions\n */\n getDropdownItems(row: ICoreSyme): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n iconColor: 'tw-text-blue-400',\n textColor: 'tw-text-blue-600',\n hoverBgColor: 'hover:tw-bg-blue-50'\n },\n {\n id: 'toggle',\n label: row.syme_isactive ? 'Deactivate' : 'Activate',\n icon: 'power_settings_new',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n iconColor: 'tw-text-red-400',\n textColor: 'tw-text-red-600',\n hoverBgColor: 'hover:tw-bg-red-50'\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSyme): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n console.log('🔵 Calling editMenuItem with:', row._id);\n this.editMenuItem(row._id || '');\n break;\n case 'addChild':\n console.log('🔵 Calling onAddChild with:', row);\n this.onAddChild(row);\n break;\n case 'toggle':\n console.log('🔵 Calling toggleItemStatus with:', row._id);\n this.toggleItemStatus(row._id || '');\n break;\n case 'delete':\n console.log('🔵 Calling deleteMenuItem with:', row._id);\n this.deleteMenuItem(row._id || '');\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n // Close all dropdowns after action\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n // Close all dropdowns by clicking outside\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n\n\n /**\n * Test method to load sample data for debugging\n */\n loadTestData(): void {\n console.log('🧪 Loading test data manually...');\n const testData: ICoreSyme[] = [\n {\n _id: 'test-1',\n syme_title: 'Dashboard',\n syme_desc: 'Main dashboard module',\n syme_type: 'module' as 'module' | 'section' | 'menu' | 'title',\n syme_path: '/dashboard',\n syme_icon: 'dashboard',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1,\n syme_id_syme: ''\n },\n {\n _id: 'test-2',\n syme_title: 'User Management',\n syme_desc: 'Manage users and permissions',\n syme_type: 'section' as 'module' | 'section' | 'menu' | 'title',\n syme_path: '/users',\n syme_icon: 'people',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1,\n syme_id_syme: 'test-1'\n },\n {\n _id: 'test-3',\n syme_title: 'Settings',\n syme_desc: 'Application settings',\n syme_type: 'menu' as 'module' | 'section' | 'menu' | 'title',\n syme_path: '/settings',\n syme_icon: 'settings',\n syme_link: '/settings',\n syme_isactive: true,\n syme_order_by: 2,\n syme_id_syme: 'test-1'\n }\n ];\n\n this.loading.set(false);\n this.error.set(null);\n this.menuItems.set(testData);\n this.totalItems.set(testData.length);\n\n\n\n this.updateGridData(testData);\n console.log('✅ Test data loaded successfully');\n }\n\n} ","<!-- Menu List Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-3\">\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Menu Item' : 'Quick Add Menu Item' }}</h6>\n </div>\n @if (selectedParentItem()) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-2 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-blue-600 tw-font-medium\">{{ isEditMode() ? 'Parent:' : 'Creating child under:' }}</span>\n <span class=\"tw-text-sm tw-text-blue-800 tw-font-semibold\">{{ selectedParentItem()?.syme_title }}</span>\n </div>\n <button \n cideEleButton \n variant=\"ghost\" \n size=\"xs\" \n type=\"button\" \n (click)=\"clearSelectedParent()\" \n class=\"tw-text-blue-400 hover:tw-text-blue-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n </div>\n }\n </div>\n \n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddMenuItem()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-mb-3\">\n <!-- Menu Title -->\n <div>\n <cide-ele-input \n id=\"syme_title\" \n label=\"Title\" \n formControlName=\"syme_title\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Menu Type -->\n <div>\n <cide-ele-select \n label=\"Type*\" \n [options]=\"menuTypeOptions()\" \n formControlName=\"syme_type\"\n placeholder=\"Select type\"\n size=\"sm\">\n </cide-ele-select>\n </div>\n \n <!-- Icon -->\n <div>\n <cide-ele-input \n id=\"quickIcon\" \n type=\"text\"\n label=\"Icon\" \n formControlName=\"syme_icon\"\n placeholder=\"Icon name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Active Status -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <cide-ele-input \n id=\"quickIsActive\"\n type=\"checkbox\"\n label=\"Active\"\n formControlName=\"syme_isactive\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea \n id=\"syme_desc\" \n label=\"Description\" \n formControlName=\"syme_desc\"\n placeholder=\"Menu description\"\n rows=\"2\"\n size=\"sm\">\n </cide-ele-textarea>\n </div>\n \n <!-- Path -->\n <div>\n <cide-ele-input \n id=\"quickPath\" \n type=\"text\"\n label=\"Path\" \n formControlName=\"syme_path\"\n placeholder=\"/path/to/route\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Link -->\n <div>\n <cide-ele-input \n id=\"quickLink\" \n type=\"text\"\n label=\"Link\" \n formControlName=\"syme_link\"\n placeholder=\"External link\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-space-x-2\">\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\"\n (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">menu</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Menu Management</h5>\n </div>\n\n <!-- Actions -->\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Actions can be added here if needed -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n\n <!-- Debug Information: Uncomment for development -->\n <!--\n <div class=\"tw-p-2 tw-bg-yellow-100 tw-text-xs tw-border-b tw-flex tw-justify-between tw-items-center\">\n <span>Debug: Loading: {{ loading() }} | Items Count: {{ menuItems().length }} | Total: {{ totalItems() }} | Error: {{ error() }}</span>\n <button cideEleButton variant=\"outline\" size=\"xs\" (click)=\"loadTestData()\" class=\"tw-ml-2\">\n Load Test Data\n </button>\n </div>\n -->\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n \n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\" \n [totalServerItems]=\"totalItems()\" \n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\" \n [dragDropEnabled]=\"true\" \n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n\n </div>\n </div>\n\n</div>\n\n<!-- \n Angular Template References for Grid Renderers (Best Practice)\n \n These ng-template elements represent the Angular best practice for custom rendering.\n They provide:\n - Type safety with template context\n - Component lifecycle integration\n - Change detection optimization\n - Proper event handling\n - Accessibility features\n \n Note: Current data grid uses string renderers for compatibility.\n Templates are maintained for future component enhancement.\n-->\n\n\n\n<!-- Menu Details Renderer Template -->\n<ng-template #menuDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Menu Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon \n class=\"tw-text-gray-400\" \n size=\"xs\">\n {{ row.syme_icon || 'folder_open' }}\n </cide-ele-icon>\n </div>\n \n <!-- Menu Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-xs tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.syme_title\">\n {{ row.syme_title || 'Untitled' }}\n </div>\n @if (row.syme_desc) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.syme_desc\">\n {{ row.syme_desc }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Menu Type Renderer Template -->\n<ng-template #menuTypeRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getMenuTypeClass(row.syme_type)\">\n {{ getMenuTypeLabel(row.syme_type) }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown \n [items]=\"getDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template>\n\n","import { MMenu } from \"cloud-ide-lms-model\";\r\n\r\n\r\n/**\r\n * Menu Reorder Request\r\n * Used for reordering menu items\r\n */\r\nexport interface MenuReorderRequest {\r\n items: MMenu[];\r\n}\r\n\r\n/**\r\n * Menu Type Options\r\n * Available menu types for selection\r\n */\r\nexport const MENU_TYPES = [\r\n { value: 'module', label: 'Module' },\r\n { value: 'section', label: 'Section' },\r\n { value: 'menu', label: 'Menu Item' },\r\n { value: 'title', label: 'Title' }\r\n] as const;\r\n\r\n/**\r\n * Menu Type\r\n * Type definition for menu types\r\n */\r\nexport type MenuType = 'menu' | 'section' | 'title' | 'module';","/*\r\n * Menu Management Module Exports\r\n */\r\n\r\n// Components\r\nexport * from './components/menu-list/menu-list.component';\r\n\r\n// Services\r\nexport * from './services/menu-management.service';\r\n\r\n// Interfaces\r\nexport * from './interfaces/menu-item.interface'; ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl, \r\n ICoreSydept, \r\n MDepartmentDeletePayload, \r\n MDepartmentGetByIdPayload, \r\n departmentByIdControllerResponse, \r\n departmentDeleteControllerResponse, \r\n departmentControllerResponse,\r\n MDepartment,\r\n MDepartmentToggleStatusPayload,\r\n departmentToggleStatusControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DepartmentManagementService {\r\n private departmentListSubject = new BehaviorSubject<ICoreSydept[]>([]);\r\n public departmentList$ = this.departmentListSubject.asObservable();\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('DepartmentManagementService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get department list from API\r\n */\r\n getDepartmentList(body: MDepartment): Observable<departmentControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<departmentControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, query]))\r\n .pipe(\r\n tap((response: departmentControllerResponse) => {\r\n if (response?.success) {\r\n this.departmentListSubject.next(response?.data || []);\r\n }\r\n }),\r\n catchError(error => {\r\n console.error('DepartmentManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get department list from cache (if available)\r\n */\r\n getDepartmentListFromCache(): ICoreSydept[] {\r\n return this.departmentListSubject.value;\r\n }\r\n\r\n /**\r\n * Create new department\r\n * POST ${coreRoutesUrl?.department} - payload: MDepartmentInsertUpdatePayload, response: departmentInsertUpdateControllerResponse\r\n */\r\n createDepartment(department: ICoreSydept): Observable<departmentControllerResponse> {\r\n console.log('Creating department:', department);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department]);\r\n return this.http.post<departmentControllerResponse>(url, department)\r\n .pipe(\r\n tap((response: departmentControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing department\r\n * POST ${coreRoutesUrl?.department} - payload: MDepartmentInsertUpdatePayload, response: departmentInsertUpdateControllerResponse\r\n */\r\n updateDepartment(id: string, department: ICoreSydept): Observable<departmentControllerResponse> {\r\n console.log('Updating department:', id, department);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department]);\r\n return this.http.post<departmentControllerResponse>(url, department)\r\n .pipe(\r\n tap((response: departmentControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get department by ID\r\n * GET ${coreRoutesUrl?.department}/byId/:query - payload: MDepartmentGetByIdPayload, response: departmentByIdControllerResponse\r\n */\r\n getDepartmentById(id: string): Observable<departmentByIdControllerResponse> {\r\n console.log('Getting department by ID:', id);\r\n const payload: MDepartmentGetByIdPayload = { sydept_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, 'byId', query]);\r\n return this.http.get<departmentByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete department\r\n * DELETE ${coreRoutesUrl?.department}/:query - payload: MDepartmentDeletePayload, response: departmentDeleteControllerResponse\r\n */\r\n deleteDepartment(id: string): Observable<departmentDeleteControllerResponse> {\r\n const payload: MDepartmentDeletePayload = { sydept_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, query]);\r\n return this.http.delete<departmentDeleteControllerResponse>(url)\r\n .pipe(\r\n tap((response: departmentDeleteControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete multiple departments\r\n */\r\n deleteMultipleDepartments(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\r\n console.log('Deleting multiple departments:', ids);\r\n const payload = { ids };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, query]);\r\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\r\n .pipe(\r\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle department active status\r\n */\r\n toggleDepartmentStatus(payload: MDepartmentToggleStatusPayload): Observable<departmentToggleStatusControllerResponse> {\r\n const query = generateStringFromObject(payload); \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, 'toggleStatus', query]);\r\n return this.http.put<departmentToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n tap((response: departmentToggleStatusControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find department by ID\r\n */\r\n findDepartmentById(id: string, items: ICoreSydept[] = this.departmentListSubject.value): ICoreSydept | null {\r\n for (const item of items) {\r\n if (item._id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Get parent departments for dropdown selection\r\n */\r\n getParentDepartments(excludeId?: string): ICoreSydept[] {\r\n const allItems: ICoreSydept[] = [];\r\n\r\n const flattenItems = (items: ICoreSydept[], level: number = 0) => {\r\n items.forEach(item => {\r\n if (item._id !== excludeId) {\r\n allItems.push({\r\n ...item,\r\n sydept_name: ' '.repeat(level) + item.sydept_name\r\n });\r\n }\r\n });\r\n };\r\n\r\n flattenItems(this.departmentListSubject.value);\r\n return allItems;\r\n }\r\n\r\n /**\r\n * Refresh department list from server\r\n */\r\n private refreshDepartmentList(): void {\r\n const defaultBody = {\r\n pageIndex: 1,\r\n pageSize: 10\r\n };\r\n this.getDepartmentList(defaultBody).subscribe({\r\n next: () => {\r\n console.log('Department list refreshed successfully');\r\n },\r\n error: (error) => {\r\n console.error('Error refreshing department list:', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Department Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ICoreSydept } from 'cloud-ide-lms-model';\nimport { DepartmentManagementService } from '../../services/department-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, ConfirmationService, NotificationService, CideEleGlobalNotificationsComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\n\n@Component({\n selector: 'cide-core-app-department-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleGlobalNotificationsComponent\n ],\n templateUrl: './department-list.component.html',\n styleUrls: []\n})\nexport class DepartmentListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private departmentService = inject(DepartmentManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private confirmationService = inject(ConfirmationService);\n private notificationService = inject(NotificationService);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n departmentDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('departmentDetailsRendererTemplate');\n departmentStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('departmentStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n departments = signal<ICoreSydept[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Modern reactive forms with signals\n selectedParentDepartment = signal<ICoreSydept | null>(null);\n\n // Retrieved department data\n retrievedDepartment = signal<ICoreSydept | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n sydept_code: this.fb.control('', []),\n sydept_name: this.fb.control('', []),\n sydept_description: this.fb.control('', []),\n sydept_isactive: this.fb.control(true, []),\n sydept_department_id_sydept: this.fb.control(''),\n sydept_entity_id_syen: this.fb.control(this.appState.getActiveEntityId() || '', [])\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSydept>>({\n id: 'department-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Department',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'departmentDetailsRenderer'\n },\n {\n key: 'sydept_code',\n header: 'Code',\n type: 'text',\n width: '120px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sydept_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'departmentStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'sydept_department_id_sydept',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'expanded',\n hasChildrenKey: 'hasChildren'\n },\n trackBy: '_id',\n pagination: {\n enabled: false,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search departments...',\n searchableColumns: ['sydept_name', 'sydept_code', 'sydept_description'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onDepartmentRefresh'\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n departmentDetailsRenderer: this.departmentDetailsRendererTemplate(),\n departmentStatusRenderer: this.departmentStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSydept) => string> {\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditDepartment: (row: ICoreSydept) => this.editDepartment(row._id || ''),\n onToggleDepartment: (row: ICoreSydept) => this.toggleDepartmentStatus(row._id || ''),\n onDeleteDepartment: (row: ICoreSydept) => this.deleteDepartment(row._id || ''),\n onDepartmentRowClick: (row: ICoreSydept) => this.onDepartmentRowClick(row),\n onDepartmentRefresh: () => this.onDepartmentRefresh(),\n onAddChild: (row: ICoreSydept) => this.onAddChild(row)\n };\n\n // Computed properties\n filteredItems = computed(() => {\n const items = this.departments();\n const search = this.searchTerm()?.toLowerCase();\n\n if (!search) return items;\n\n return items.filter(item => {\n return item.sydept_name?.toLowerCase().includes(search) ||\n item.sydept_code?.toLowerCase().includes(search) ||\n item.sydept_description?.toLowerCase().includes(search);\n });\n });\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Modern constructor with effects for initialization\n constructor() {\n this.initializeComponent();\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('DepartmentListComponent initialized with modern Angular patterns');\n this.loadDepartments();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleDepartmentAction: (action: string, id: string) => void }).handleDepartmentAction = this.handleDepartmentAction.bind(this);\n }\n }\n\n /**\n * Load departments from service\n */\n loadDepartments(): void {\n console.log('🚀 DepartmentListComponent.loadDepartments() called');\n this.loading.set(true);\n this.error.set(null);\n\n const requestBody = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm()\n };\n console.log('📋 Request body:', requestBody);\n\n if (!this.departmentService) {\n console.error('❌ DepartmentService is not available');\n this.error.set('Department service is not available');\n this.loading.set(false);\n return;\n }\n\n this.departmentService.getDepartmentList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 DepartmentListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting departments:', response.data);\n const departmentData = response?.data || [];\n this.departments.set(departmentData);\n this.totalItems.set(response.total || 0);\n this.updateGridData(departmentData);\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load departments');\n }\n },\n error: (err) => {\n console.error('❌ DepartmentListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading departments');\n },\n complete: () => {\n console.log('DepartmentListComponent loadDepartments completed');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(departments: ICoreSydept[]): void {\n console.log('🔄 updateGridData called with:', departments);\n \n this.gridConfig.update(config => {\n const newConfig = {\n ...config,\n data: departments\n };\n console.log('⚙️ Updated grid config with departments');\n return newConfig;\n });\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSydept>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadDepartments();\n break;\n case 'pageChange': {\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadDepartments();\n } else {\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadDepartments();\n }\n }\n break;\n }\n case 'refresh':\n this.onDepartmentRefresh();\n break;\n case 'rowClick':\n this.onDepartmentRowClick(event.data as ICoreSydept);\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editDepartment(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleDepartmentStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteDepartment(event.data as string);\n }\n break;\n }\n }\n\n /**\n * Handle department refresh\n */\n onDepartmentRefresh(): void {\n this.loadDepartments();\n }\n\n /**\n * Handle department row click\n */\n onDepartmentRowClick(department: ICoreSydept): void {\n this.editDepartment(department._id || '');\n }\n\n /**\n * Navigate to edit department form\n */\n editDepartment(itemId: string): void {\n console.log('🔵 editDepartment called with:', itemId);\n this.isEditMode.set(true);\n this.getDepartmentById(itemId);\n }\n\n /**\n * Get department by ID using the API\n */\n getDepartmentById(itemId: string): void {\n console.log('🔵 getDepartmentById called with:', itemId);\n this.loading.set(true);\n\n this.departmentService.getDepartmentById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Department retrieved successfully:', response.data);\n let department: ICoreSydept | null = null;\n department = response.data || null;\n\n this.retrievedDepartment.set(department);\n\n if (this.isEditMode() && department) {\n this.populateFormForEdit(department);\n }\n } else {\n this.error.set('Failed to retrieve department');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the department');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with department data for editing\n */\n populateFormForEdit(department: ICoreSydept): void {\n console.log('🔵 populateFormForEdit called with:', department);\n\n this.quickAddForm.patchValue({\n sydept_code: department.sydept_code || '',\n sydept_name: department.sydept_name || '',\n sydept_description: department.sydept_description || '',\n sydept_isactive: department.sydept_isactive ?? true,\n sydept_department_id_sydept: department.sydept_department_id_sydept || '',\n sydept_entity_id_syen: department.sydept_entity_id_syen || ''\n });\n\n if (department.sydept_department_id_sydept) {\n const parentDepartment = this.departments().find(item => item._id === department.sydept_department_id_sydept);\n if (parentDepartment) {\n this.selectedParentDepartment.set(parentDepartment);\n }\n }\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete department\n */\n async deleteDepartment(itemId: string): Promise<void> {\n console.log('🔵 deleteDepartment called with:', itemId);\n \n // Find the department name for better confirmation message\n const department = this.departments().find(d => d._id === itemId);\n const departmentName = department?.sydept_name || 'this department';\n \n try {\n const confirmed = await this.confirmationService.confirmDelete(departmentName);\n \n if (confirmed) {\n this.loading.set(true);\n\n this.departmentService.deleteDepartment(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success(`Department \"${departmentName}\" deleted successfully`);\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to delete department');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'An error occurred while deleting the department');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n } catch (error) {\n console.log('User cancelled deletion');\n }\n }\n\n /**\n * Toggle department status\n */\n toggleDepartmentStatus(itemId: string): void {\n console.log('🔵 toggleDepartmentStatus called with:', itemId);\n \n // Find the department for better notification message\n const department = this.departments().find(d => d._id === itemId);\n const departmentName = department?.sydept_name || 'department';\n const newStatus = department?.sydept_isactive ? 'inactive' : 'active';\n \n this.loading.set(true);\n\n this.departmentService.toggleDepartmentStatus({ sydept_id: itemId })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success(`Department \"${departmentName}\" ${newStatus} successfully`);\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to toggle department status');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Quick add or update department using reactive form\n */\n quickAddDepartment() {\n if (this.quickAddForm.invalid) return;\n\n const formValue = this.quickAddForm.value;\n\n const department: Partial<ICoreSydept> = {\n _id: this.retrievedDepartment()?._id || '',\n sydept_code: formValue.sydept_code,\n sydept_name: formValue.sydept_name,\n sydept_description: formValue.sydept_description || '',\n sydept_isactive: formValue.sydept_isactive,\n sydept_department_id_sydept: formValue.sydept_department_id_sydept || undefined,\n sydept_entity_id_syen: formValue.sydept_entity_id_syen\n };\n\n if (this.isEditMode() && this.retrievedDepartment()) {\n const itemId = this.retrievedDepartment()?._id;\n if (itemId) {\n console.log('🔵 Updating department:', itemId);\n this.departmentService.updateDepartment(itemId, department).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Department updated successfully');\n this.notificationService.success(`Department \"${department.sydept_name}\" updated successfully`);\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedDepartment.set(null);\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to update department');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'Failed to update department');\n }\n });\n }\n } else {\n console.log('🔵 Creating new department');\n this.departmentService.createDepartment(department).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Department created successfully');\n this.notificationService.success(`Department \"${department.sydept_name}\" created successfully`);\n this.resetQuickAddForm();\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to create department');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'Failed to create department');\n }\n });\n }\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n this.selectedParentDepartment.set(null);\n this.isEditMode.set(false);\n this.retrievedDepartment.set(null);\n\n this.quickAddForm.reset({\n sydept_code: '',\n sydept_name: '',\n sydept_description: '',\n sydept_isactive: true,\n sydept_department_id_sydept: '',\n sydept_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n }\n\n /**\n * Handle adding a child department\n */\n onAddChild(parentItem: ICoreSydept): void {\n console.log('🔵 onAddChild called with:', parentItem);\n console.log('🔵 Parent name:', parentItem.sydept_name);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedDepartment.set(null);\n\n // Set the selected parent item first using signal\n this.selectedParentDepartment.set(parentItem);\n console.log('🔵 selectedParentDepartment set to:', this.selectedParentDepartment());\n\n // Update form with parent context (don't call resetQuickAddForm as it clears the parent)\n this.quickAddForm.patchValue({\n sydept_code: '',\n sydept_name: '',\n sydept_description: '',\n sydept_isactive: true,\n sydept_department_id_sydept: parentItem._id,\n sydept_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n\n console.log('🔵 Form updated, parent should be visible:', this.selectedParentDepartment()?.sydept_name);\n }\n\n /**\n * Clear selected parent department\n */\n clearSelectedParent() {\n this.selectedParentDepartment.set(null);\n this.quickAddForm.patchValue({\n sydept_department_id_sydept: ''\n });\n }\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDepartment(itemId);\n break;\n case 'toggle':\n this.toggleDepartmentStatus(itemId);\n break;\n case 'delete':\n this.deleteDepartment(itemId);\n break;\n }\n }\n }\n }\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle department action clicks\n */\n handleDepartmentAction(action: string, itemId: string) {\n const item = this.departments().find(item => item._id === itemId);\n if (!item) return;\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDepartment(itemId);\n break;\n case 'toggle':\n this.toggleDepartmentStatus(itemId);\n break;\n case 'delete':\n this.deleteDepartment(itemId);\n break;\n }\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Generate dropdown items for department actions\n */\n getDropdownItems(row: ICoreSydept): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n iconColor: 'tw-text-blue-400',\n textColor: 'tw-text-blue-600',\n hoverBgColor: 'hover:tw-bg-blue-50'\n },\n {\n id: 'toggle',\n label: row.sydept_isactive ? 'Deactivate' : 'Activate',\n icon: 'power_settings_new',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n iconColor: 'tw-text-red-400',\n textColor: 'tw-text-red-600',\n hoverBgColor: 'hover:tw-bg-red-50'\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSydept): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n this.editDepartment(row._id || '');\n break;\n case 'addChild':\n this.onAddChild(row);\n break;\n case 'toggle':\n this.toggleDepartmentStatus(row._id || '');\n break;\n case 'delete':\n this.deleteDepartment(row._id || '');\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSydept): string {\n return item._id || '';\n }\n} ","<!-- Department List Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n<!-- Global Notifications -->\n<cide-ele-global-notifications></cide-ele-global-notifications>\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-0\">\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-mb-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Department' : 'Quick Add Department' }}</h6>\n </div>\n @if (selectedParentDepartment()) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-blue-600 tw-font-medium\">{{ isEditMode() ? 'Parent:' : 'Creating child under:' }}</span>\n <span class=\"tw-text-sm tw-text-blue-800 tw-font-semibold\">{{ selectedParentDepartment()?.sydept_name }}</span>\n </div>\n <button \n cideEleButton \n variant=\"ghost\" \n size=\"xs\" \n type=\"button\" \n (click)=\"clearSelectedParent()\" \n class=\"tw-text-blue-400 hover:tw-text-blue-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n </div>\n }\n </div>\n \n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddDepartment()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-mb-3\">\n <!-- Department Code -->\n <div>\n <cide-ele-input \n id=\"sydept_code\" \n label=\"Code*\" \n formControlName=\"sydept_code\"\n placeholder=\"DEPT001\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Department Name -->\n <div>\n <cide-ele-input \n id=\"sydept_name\" \n label=\"Name*\" \n formControlName=\"sydept_name\"\n placeholder=\"Department name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n\n \n <!-- Active Status -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <cide-ele-input \n id=\"sydept_isactive\"\n type=\"checkbox\"\n label=\"Active\"\n formControlName=\"sydept_isactive\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea \n id=\"sydept_description\" \n label=\"Description\" \n formControlName=\"sydept_description\"\n placeholder=\"Department description\"\n rows=\"2\"\n size=\"sm\">\n </cide-ele-textarea>\n </div>\n \n\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-space-x-2\">\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\"\n (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">business</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Department Management</h5>\n </div>\n\n <!-- Actions -->\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Search functionality is handled by the data grid -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n \n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\" \n [totalServerItems]=\"totalItems()\" \n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\" \n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Department Details Renderer Template -->\n<ng-template #departmentDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Department Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon \n class=\"tw-text-gray-400\" \n size=\"xs\">\n business\n </cide-ele-icon>\n </div>\n \n <!-- Department Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.sydept_name\">\n {{ row.sydept_name || 'Untitled' }}\n </div>\n @if (row.sydept_description) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.sydept_description\">\n {{ row.sydept_description }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Department Status Renderer Template -->\n<ng-template #departmentStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getStatusClass(row.sydept_isactive)\">\n {{ getStatusDisplay(row.sydept_isactive) }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown \n [items]=\"getDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template> ","// Department Management Components\r\nexport * from './components/department-list/department-list.component';\r\n\r\n// Department Management Services\r\nexport * from './services/department-management.service'; ","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { \n cidePath, \n coreRoutesUrl, \n generateStringFromObject, \n hostManagerRoutesUrl, \n ICoreSydsg, \n MDesignationDeletePayload, \n MDesignationGetByIdPayload, \n MDesignationInsertUpdatePayload,\n designationByIdControllerResponse, \n designationDeleteControllerResponse, \n designationControllerResponse,\n designationInsertUpdateControllerResponse,\n MDesignation,\n} from 'cloud-ide-lms-model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DesignationManagementService {\n private apiUrl = `${coreRoutesUrl?.designation}`;\n private designationListSubject = new BehaviorSubject<ICoreSydsg[]>([]);\n public designationList$ = this.designationListSubject.asObservable();\n\n constructor(private http: HttpClient) {\n console.log('DesignationManagementService initialized - using real API');\n }\n\n /**\n * Get designation list from API\n */\n getDesignationList(body: MDesignation): Observable<designationControllerResponse> {\n const query = generateStringFromObject(body);\n return this.http?.get<designationControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, query]))\n .pipe(\n tap((response: designationControllerResponse) => {\n if (response?.success) {\n this.designationListSubject.next(response?.data || []);\n }\n }),\n catchError(error => {\n console.error('DesignationManagementService API error:', error);\n return this.handleError(error);\n })\n );\n }\n\n /**\n * Get designation list from cache (if available)\n */\n getDesignationListFromCache(): ICoreSydsg[] {\n return this.designationListSubject.value;\n }\n\n /**\n * Create new designation\n * POST ${coreRoutesUrl?.designation} - payload: MDesignationInsertUpdatePayload, response: designationInsertUpdateControllerResponse\n */\n createDesignation(designation: ICoreSydsg): Observable<designationInsertUpdateControllerResponse> {\n console.log('Creating designation:', designation);\n \n // Create proper payload using MDesignationInsertUpdatePayload\n const payload = new MDesignationInsertUpdatePayload(designation);\n \n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation]);\n return this.http.post<designationInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: designationInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Update existing designation\n * POST ${coreRoutesUrl?.designation} - payload: MDesignationInsertUpdatePayload, response: designationInsertUpdateControllerResponse\n */\n updateDesignation(id: string, designation: ICoreSydsg): Observable<designationInsertUpdateControllerResponse> {\n console.log('Updating designation:', id, designation);\n \n // Create proper payload using MDesignationInsertUpdatePayload\n const payload = new MDesignationInsertUpdatePayload(designation);\n \n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation]);\n return this.http.post<designationInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: designationInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Get designation by ID\n * GET ${coreRoutesUrl?.designation}/byId/:query - payload: MDesignationGetByIdPayload, response: designationByIdControllerResponse\n */\n getDesignationById(id: string): Observable<designationByIdControllerResponse> {\n console.log('Getting designation by ID:', id);\n const payload: MDesignationGetByIdPayload = { sydsg_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, 'byId', query]);\n return this.http.get<designationByIdControllerResponse>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete designation\n * DELETE ${coreRoutesUrl?.designation}/:query - payload: MDesignationDeletePayload, response: designationDeleteControllerResponse\n */\n deleteDesignation(id: string): Observable<designationDeleteControllerResponse> {\n const payload: MDesignationDeletePayload = { sydsg_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, query]);\n return this.http.delete<designationDeleteControllerResponse>(url)\n .pipe(\n tap((response: designationDeleteControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete multiple designations\n */\n deleteMultipleDesignations(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\n console.log('Deleting multiple designations:', ids);\n const payload = { ids };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, query]);\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\n .pipe(\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Toggle designation active status\n */\n toggleDesignationStatus(id: string): Observable<designationControllerResponse> {\n console.log('Toggling designation status:', id);\n const payload = { id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, query]);\n return this.http.put<designationControllerResponse>(url, {})\n .pipe(\n tap((response: designationControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Find designation by ID\n */\n findDesignationById(id: string, items: ICoreSydsg[] = this.designationListSubject.value): ICoreSydsg | null {\n for (const item of items) {\n if (item._id === id) {\n return item;\n }\n }\n return null;\n }\n\n /**\n * Get parent designations for dropdown selection\n */\n getParentDesignations(excludeId?: string): ICoreSydsg[] {\n const allItems: ICoreSydsg[] = [];\n\n const flattenItems = (items: ICoreSydsg[], level: number = 0) => {\n items.forEach(item => {\n if (item._id !== excludeId) {\n allItems.push({\n ...item,\n sydsg_name: ' '.repeat(level) + item.sydsg_name\n });\n }\n });\n };\n\n flattenItems(this.designationListSubject.value);\n return allItems;\n }\n\n /**\n * Refresh designation list from server\n */\n private refreshDesignationList(): void {\n const defaultBody = {\n pageIndex: 1,\n pageSize: 10\n };\n this.getDesignationList(defaultBody).subscribe({\n next: () => {\n console.log('Designation list refreshed successfully');\n },\n error: (error) => {\n console.error('Error refreshing designation list:', error);\n }\n });\n }\n\n /**\n * Handle errors\n */\n private handleError(error: unknown): Observable<never> {\n let errorMessage = 'An error occurred';\n\n if (error instanceof Error) {\n errorMessage = error.message;\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n console.error('Designation Management Service Error:', errorMessage);\n return throwError(() => new Error(errorMessage));\n }\n} ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl, \r\n ICoreSydsgl, \r\n gradeLevelControllerResponse, \r\n gradeLevelByIdControllerResponse,\r\n MGradeLevel\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GradeLevelManagementService {\r\n private apiUrl = `${coreRoutesUrl?.gradeLevel}`;\r\n private gradeLevelListSubject = new BehaviorSubject<ICoreSydsgl[]>([]);\r\n public gradeLevelList$ = this.gradeLevelListSubject.asObservable();\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('GradeLevelManagementService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get grade level list from API\r\n */\r\n getGradeLevelList(body: MGradeLevel): Observable<gradeLevelControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<gradeLevelControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, query]))\r\n .pipe(\r\n tap((response: gradeLevelControllerResponse) => {\r\n if (response?.success) {\r\n this.gradeLevelListSubject.next(response?.data || []);\r\n }\r\n }),\r\n catchError(error => {\r\n console.error('GradeLevelManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get grade level list from cache (if available)\r\n */\r\n getGradeLevelListFromCache(): ICoreSydsgl[] {\r\n return this.gradeLevelListSubject.value;\r\n }\r\n\r\n /**\r\n * Create new grade level\r\n * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse\r\n */\r\n createGradeLevel(gradeLevel: ICoreSydsgl): Observable<gradeLevelControllerResponse> {\r\n console.log('Creating grade level:', gradeLevel);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel]);\r\n return this.http.post<gradeLevelControllerResponse>(url, gradeLevel)\r\n .pipe(\r\n tap((response: gradeLevelControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing grade level\r\n * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse\r\n */\r\n updateGradeLevel(id: string, gradeLevel: ICoreSydsgl): Observable<gradeLevelControllerResponse> {\r\n console.log('Updating grade level:', id, gradeLevel);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel]);\r\n return this.http.post<gradeLevelControllerResponse>(url, gradeLevel)\r\n .pipe(\r\n tap((response: gradeLevelControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get grade level by ID\r\n * GET ${coreRoutesUrl?.gradeLevel}/byId/:query - payload: { id }, response: gradeLevelByIdControllerResponse\r\n */\r\n getGradeLevelById(id: string): Observable<gradeLevelByIdControllerResponse> {\r\n console.log('Getting grade level by ID:', id);\r\n const payload = { id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, 'byId', query]);\r\n return this.http.get<gradeLevelByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete grade level\r\n * DELETE ${coreRoutesUrl?.gradeLevel}/:query - payload: { id }, response: { success: boolean }\r\n */\r\n deleteGradeLevel(id: string): Observable<{ success: boolean; message?: string; data?: unknown }> {\r\n const payload = { id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, query]);\r\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\r\n .pipe(\r\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete multiple grade levels\r\n */\r\n deleteMultipleGradeLevels(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\r\n console.log('Deleting multiple grade levels:', ids);\r\n const payload = { ids };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, query]);\r\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\r\n .pipe(\r\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle grade level active status\r\n */\r\n toggleGradeLevelStatus(id: string): Observable<gradeLevelControllerResponse> {\r\n console.log('Toggling grade level status:', id);\r\n const payload = { id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, query]);\r\n return this.http.put<gradeLevelControllerResponse>(url, {})\r\n .pipe(\r\n tap((response: gradeLevelControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find grade level by ID\r\n */\r\n findGradeLevelById(id: string, items: ICoreSydsgl[] = this.gradeLevelListSubject.value): ICoreSydsgl | null {\r\n for (const item of items) {\r\n if (item._id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Refresh grade level list from server\r\n */\r\n private refreshGradeLevelList(): void {\r\n const defaultBody = {\r\n pageIndex: 1,\r\n pageSize: 10\r\n };\r\n this.getGradeLevelList(defaultBody).subscribe({\r\n next: () => {\r\n console.log('Grade level list refreshed successfully');\r\n },\r\n error: (error) => {\r\n console.error('Error refreshing grade level list:', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Grade Level Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ICoreSydsg, ICoreSydsgl, ICoreSydept } from 'cloud-ide-lms-model';\nimport { DesignationManagementService } from '../../services/designation-management.service';\nimport { GradeLevelManagementService } from '../../../grade-level-management/services/grade-level-management.service';\nimport { DepartmentManagementService } from '../../../department-management/services/department-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\n\ninterface HierarchicalNode {\n _id: string;\n name: string;\n code: string;\n description: string;\n type: 'department' | 'designation';\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n children: HierarchicalNode[];\n status: boolean;\n grade_level: string;\n parentId: string | null;\n}\n\n@Component({\n selector: 'cide-core-app-designation-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n templateUrl: './designation-list.component.html',\n styleUrls: []\n})\nexport class DesignationListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private designationService = inject(DesignationManagementService);\n private gradeLevelService = inject(GradeLevelManagementService);\n private departmentService = inject(DepartmentManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n designationDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('designationDetailsRendererTemplate');\n designationStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('designationStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n designations = signal<ICoreSydsg[]>([]);\n departments = signal<ICoreSydept[]>([]);\n gradeLevels = signal<ICoreSydsgl[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Modern reactive forms with signals\n selectedParentDesignation = signal<ICoreSydsg | null>(null);\n selectedParentDepartment = signal<ICoreSydept | null>(null);\n\n // Retrieved designation data\n retrievedDesignation = signal<ICoreSydsg | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n sydsg_name: this.fb.control('', [Validators.required, Validators.minLength(1), Validators.maxLength(100)]),\n sydsg_code: this.fb.control('', [Validators.required, Validators.minLength(1), Validators.maxLength(20)]),\n sydsg_description: this.fb.control('', [Validators.maxLength(400)]),\n sydsg_prent_id_desg: this.fb.control(''),\n sydsg_department_id_sydpt: this.fb.control('', [Validators.required]),\n sydsg_grade_level_id_sydsgl: this.fb.control('', [Validators.required]),\n sydsg_isactive: this.fb.control(true, [Validators.required]),\n desg_entity_id_syen: this.fb.control(this.appState.getActiveEntityId() || '', [Validators.required])\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSydsg>>({\n id: 'designation-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Department/Designation',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'designationDetailsRenderer'\n },\n {\n key: 'code',\n header: 'Code',\n type: 'text',\n width: '120px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'grade_level',\n header: 'Grade Level',\n type: 'text',\n width: '120px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'status',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'designationStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'parentId',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'expanded',\n hasChildrenKey: 'hasChildren'\n },\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search departments and designations...',\n searchableColumns: ['name', 'code', 'description'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onDesignationRefresh'\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n designationDetailsRenderer: this.designationDetailsRendererTemplate(),\n designationStatusRenderer: this.designationStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSydsg) => string> {\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditDesignation: (row: ICoreSydsg) => this.editDesignation(row._id || ''),\n onToggleDesignation: (row: ICoreSydsg) => this.toggleDesignationStatus(row._id || ''),\n onDeleteDesignation: (row: ICoreSydsg) => this.deleteDesignation(row._id || ''),\n onDesignationRowClick: (row: ICoreSydsg) => this.onDesignationRowClick(row),\n onDesignationRefresh: () => this.onDesignationRefresh(),\n onAddChild: (row: ICoreSydsg) => this.onAddChild(row)\n };\n\n // Computed properties\n filteredItems = computed(() => {\n const items = this.designations();\n const search = this.searchTerm()?.toLowerCase();\n\n if (!search) return items;\n\n return items.filter(item => {\n return item.sydsg_name?.toLowerCase().includes(search) ||\n item.sydsg_code?.toLowerCase().includes(search) ||\n item.sydsg_description?.toLowerCase().includes(search);\n });\n });\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Grade level options for dropdown\n gradeLevelOptions = computed(() => {\n return this.gradeLevels().map(gradeLevel => ({\n value: gradeLevel._id || '',\n label: gradeLevel.sydsgl_name || 'Unknown'\n }));\n });\n\n // Department options for dropdown\n departmentOptions = computed(() => {\n return this.departments().map(department => ({\n value: department._id || '',\n label: department.sydept_name || 'Unknown'\n }));\n });\n\n // Modern constructor with effects for initialization\n constructor() {\n this.initializeComponent();\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('DesignationListComponent initialized with modern Angular patterns');\n this.loadDepartments();\n this.loadGradeLevels();\n this.loadDesignations();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleDesignationAction: (action: string, id: string) => void }).handleDesignationAction = this.handleDesignationAction.bind(this);\n }\n }\n\n /**\n * Load designations from service\n */\n loadDesignations(): void {\n console.log('🚀 DesignationListComponent.loadDesignations() called');\n this.loading.set(true);\n this.error.set(null);\n\n const requestBody = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm()\n };\n console.log('📋 Request body:', requestBody);\n\n if (!this.designationService) {\n console.error('❌ DesignationService is not available');\n this.error.set('Designation service is not available');\n this.loading.set(false);\n return;\n }\n\n this.designationService.getDesignationList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 DesignationListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting designations:', response.data);\n const designationData = response?.data || [];\n this.designations.set(designationData);\n this.totalItems.set(response.total || 0);\n // Update grid data with hierarchical structure\n this.updateGridData(designationData);\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load designations');\n }\n },\n error: (err) => {\n console.error('❌ DesignationListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading designations');\n },\n complete: () => {\n console.log('DesignationListComponent loadDesignations completed');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Load departments from service\n */\n loadDepartments(): void {\n console.log('🚀 DesignationListComponent.loadDepartments() called');\n\n if (!this.departmentService) {\n console.error('❌ DepartmentService is not available');\n return;\n }\n\n const requestBody = {\n total: 0,\n pageIndex: 1,\n pageSize: 1000, // Load all departments\n query: ''\n };\n\n this.departmentService.getDepartmentList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 DesignationListComponent received departments response:', response);\n if (response?.success) {\n console.log('✅ Departments loaded successfully:', response.data);\n const departmentData = response?.data || [];\n this.departments.set(departmentData);\n // Update grid data after loading departments\n this.updateGridData(this.designations());\n } else {\n console.error('❌ Failed to load departments:', response);\n }\n },\n error: (err) => {\n console.error('❌ Error loading departments:', err);\n }\n });\n }\n\n /**\n * Load grade levels from service\n */\n loadGradeLevels(): void {\n console.log('🚀 DesignationListComponent.loadGradeLevels() called');\n\n if (!this.gradeLevelService) {\n console.error('❌ GradeLevelService is not available');\n return;\n }\n\n const requestBody = {\n pageIndex: 1,\n pageSize: 100 // Load all grade levels for dropdown\n };\n\n this.gradeLevelService.getGradeLevelList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 Grade levels response:', response);\n if (response?.success) {\n console.log('✅ Grade levels loaded successfully:', response.data);\n const gradeLevelData = response?.data || [];\n this.gradeLevels.set(gradeLevelData);\n // Update grid data if designations are already loaded\n if (this.designations().length > 0) {\n this.updateGridData(this.designations());\n }\n } else {\n console.error('❌ Failed to load grade levels:', response);\n }\n },\n error: (err) => {\n console.error('❌ Error loading grade levels:', err);\n }\n });\n }\n\n /**\n * Build hierarchical tree structure from departments and designations\n */\n private buildHierarchicalData(): HierarchicalNode[] {\n const departments = this.departments();\n const designations = this.designations();\n \n console.log('🔍 Building hierarchical data with:', {\n departments: departments.length,\n designations: designations.length\n });\n \n // First, build department hierarchy\n const departmentNodes = this.buildDepartmentHierarchy(departments);\n \n // Then, add designations under their respective departments\n this.addDesignationsToDepartments(departmentNodes, designations);\n \n // Add orphaned designations at root level\n const orphanedDesignations = designations.filter(designation => \n !departments.some(dept => dept._id === designation.sydsg_department_id_sydpt)\n );\n \n console.log(`🏷️ Found ${orphanedDesignations.length} orphaned designations`);\n \n orphanedDesignations.forEach(designation => {\n console.log(`👔 Adding orphaned designation: ${designation.sydsg_name}`);\n \n const designationNode: HierarchicalNode = {\n _id: designation._id || '',\n name: designation.sydsg_name || '',\n code: designation.sydsg_code || '',\n description: designation.sydsg_description || '',\n type: 'designation',\n level: 0,\n expanded: false,\n hasChildren: false,\n children: [],\n status: designation.sydsg_isactive ?? true,\n grade_level: this.getGradeLevelName(designation.sydsg_grade_level_id_sydsgl || ''),\n parentId: null\n };\n \n departmentNodes.push(designationNode);\n });\n \n console.log('✅ Final hierarchical data:', departmentNodes);\n return departmentNodes;\n }\n\n /**\n * Build department hierarchy with parent-child relationships\n */\n private buildDepartmentHierarchy(departments: ICoreSydept[]): HierarchicalNode[] {\n const departmentMap = new Map<string, HierarchicalNode>();\n const rootDepartments: HierarchicalNode[] = [];\n \n // First pass: create all department nodes\n departments.forEach(department => {\n console.log(`🏢 Creating department node: ${department.sydept_name} (${department._id})`);\n \n const departmentNode: HierarchicalNode = {\n _id: `dept_${department._id || ''}`,\n name: department.sydept_name || '',\n code: department.sydept_code || '',\n description: department.sydept_description || '',\n type: 'department',\n level: 0, // Will be updated based on hierarchy\n expanded: true,\n hasChildren: false,\n children: [],\n status: department.sydept_isactive ?? true,\n grade_level: 'N/A',\n parentId: department.sydept_department_id_sydept ? `dept_${department.sydept_department_id_sydept}` : null\n };\n \n departmentMap.set(departmentNode._id, departmentNode);\n });\n \n // Second pass: build parent-child relationships\n departments.forEach(department => {\n const departmentNode = departmentMap.get(`dept_${department._id || ''}`);\n if (!departmentNode) return;\n \n if (department.sydept_department_id_sydept) {\n // This department has a parent\n const parentNode = departmentMap.get(`dept_${department.sydept_department_id_sydept}`);\n if (parentNode) {\n parentNode.children.push(departmentNode);\n parentNode.hasChildren = true;\n departmentNode.level = parentNode.level + 1;\n console.log(`📁 Added ${department.sydept_name} as child of ${parentNode.name} (level ${departmentNode.level})`);\n } else {\n // Parent not found, treat as root\n rootDepartments.push(departmentNode);\n console.log(`🏢 Added ${department.sydept_name} as root (parent not found)`);\n }\n } else {\n // This is a root department\n rootDepartments.push(departmentNode);\n console.log(`🏢 Added ${department.sydept_name} as root department`);\n }\n });\n \n console.log(`✅ Built department hierarchy with ${rootDepartments.length} root departments`);\n return rootDepartments;\n }\n\n /**\n * Add designations to their respective departments in the hierarchy\n */\n private addDesignationsToDepartments(departmentNodes: HierarchicalNode[], designations: ICoreSydsg[]): void {\n const addDesignationsToNode = (node: HierarchicalNode) => {\n // Find designations for this department\n const departmentId = node._id.replace('dept_', '');\n const departmentDesignations = designations.filter(designation => \n designation.sydsg_department_id_sydpt === departmentId\n );\n \n console.log(`📋 Found ${departmentDesignations.length} designations for department ${node.name}`);\n \n if (departmentDesignations.length > 0) {\n node.hasChildren = true;\n \n // Add designations as children\n departmentDesignations.forEach(designation => {\n console.log(`👔 Adding designation: ${designation.sydsg_name} under ${node.name}`);\n \n const designationNode: HierarchicalNode = {\n _id: designation._id || '',\n name: designation.sydsg_name || '',\n code: designation.sydsg_code || '',\n description: designation.sydsg_description || '',\n type: 'designation',\n level: node.level + 1,\n expanded: false,\n hasChildren: false,\n children: [],\n status: designation.sydsg_isactive ?? true,\n grade_level: this.getGradeLevelName(designation.sydsg_grade_level_id_sydsgl || ''),\n parentId: node._id\n };\n \n node.children.push(designationNode);\n });\n }\n \n // Recursively process child departments\n node.children.forEach(child => {\n if (child.type === 'department') {\n addDesignationsToNode(child);\n }\n });\n };\n \n // Process all root departments\n departmentNodes.forEach(node => {\n if (node.type === 'department') {\n addDesignationsToNode(node);\n }\n });\n }\n\n /**\n * Get grade level name by ID\n */\n private getGradeLevelName(gradeLevelId: string): string {\n console.log('🔍 getGradeLevelName called with ID:', gradeLevelId);\n console.log('📚 Available grade levels:', this.gradeLevels());\n \n const gradeLevel = this.gradeLevels().find(gl => gl._id === gradeLevelId);\n console.log('🎯 Found grade level:', gradeLevel);\n \n const result = gradeLevel ? (gradeLevel.sydsgl_name || 'N/A') : 'N/A';\n console.log('✅ Returning grade level name:', result);\n return result;\n }\n\n /**\n * Update grid data with hierarchical structure\n */\n private updateGridData(designations: ICoreSydsg[]): void {\n console.log('🔄 updateGridData called with:', designations);\n console.log('📚 Current grade levels:', this.gradeLevels());\n console.log('🏢 Current departments:', this.departments());\n \n const hierarchicalData = this.buildHierarchicalData();\n \n // Flatten the hierarchical data for the grid component\n const flattenedData = this.flattenHierarchicalData(hierarchicalData);\n \n console.log('📊 Flattened data for grid:', flattenedData);\n \n this.gridConfig.update(config => {\n const newConfig = {\n ...config,\n data: flattenedData\n };\n console.log('⚙️ Updated grid config with flattened data:', flattenedData);\n return newConfig;\n });\n }\n\n /**\n * Flatten hierarchical data for grid display\n */\n private flattenHierarchicalData(nodes: HierarchicalNode[]): HierarchicalNode[] {\n const flattened: HierarchicalNode[] = [];\n \n const flattenNode = (node: HierarchicalNode) => {\n flattened.push(node);\n if (node.children && node.children.length > 0) {\n node.children.forEach(child => flattenNode(child));\n }\n };\n \n nodes.forEach(node => flattenNode(node));\n return flattened;\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSydsg>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadDesignations();\n break;\n case 'pageChange': {\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadDesignations();\n } else {\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadDesignations();\n }\n }\n break;\n }\n case 'refresh':\n this.onDesignationRefresh();\n break;\n case 'rowClick':\n this.onDesignationRowClick(event.data as ICoreSydsg);\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editDesignation(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleDesignationStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteDesignation(event.data as string);\n }\n break;\n }\n }\n\n /**\n * Handle designation refresh\n */\n onDesignationRefresh(): void {\n this.loadDesignations();\n }\n\n /**\n * Handle designation row click\n */\n onDesignationRowClick(designation: ICoreSydsg): void {\n this.editDesignation(designation._id || '');\n }\n\n /**\n * Navigate to edit designation form\n */\n editDesignation(itemId: string): void {\n console.log('🔵 editDesignation called with:', itemId);\n this.isEditMode.set(true);\n this.getDesignationById(itemId);\n }\n\n /**\n * Get designation by ID using the API\n */\n getDesignationById(itemId: string): void {\n console.log('🔵 getDesignationById called with:', itemId);\n this.loading.set(true);\n\n this.designationService.getDesignationById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Designation retrieved successfully:', response.data);\n let designation: ICoreSydsg | null = null;\n designation = response.data || null;\n\n this.retrievedDesignation.set(designation);\n\n if (this.isEditMode() && designation) {\n this.populateFormForEdit(designation);\n }\n } else {\n this.error.set('Failed to retrieve designation');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the designation');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with designation data for editing\n */\n populateFormForEdit(designation: ICoreSydsg): void {\n console.log('🔵 populateFormForEdit called with:', designation);\n\n this.quickAddForm.patchValue({\n sydsg_name: designation.sydsg_name || '',\n sydsg_code: designation.sydsg_code || '',\n sydsg_description: designation.sydsg_description || '',\n sydsg_prent_id_desg: designation.sydsg_prent_id_desg || '',\n sydsg_department_id_sydpt: designation.sydsg_department_id_sydpt || '',\n sydsg_grade_level_id_sydsgl: designation.sydsg_grade_level_id_sydsgl || '',\n sydsg_isactive: designation.sydsg_isactive ?? true,\n desg_entity_id_syen: designation.desg_entity_id_syen || ''\n });\n\n if (designation.sydsg_prent_id_desg) {\n const parentDesignation = this.designations().find(item => item._id === designation.sydsg_prent_id_desg);\n if (parentDesignation) {\n this.selectedParentDesignation.set(parentDesignation);\n }\n }\n\n if (designation.sydsg_department_id_sydpt) {\n const parentDepartment = this.departments().find(item => item._id === designation.sydsg_department_id_sydpt);\n if (parentDepartment) {\n this.selectedParentDepartment.set(parentDepartment);\n }\n }\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete designation\n */\n deleteDesignation(itemId: string): void {\n console.log('🔵 deleteDesignation called with:', itemId);\n if (confirm('Are you sure you want to delete this designation?')) {\n this.loading.set(true);\n\n this.designationService.deleteDesignation(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadDesignations();\n } else {\n this.error.set('Failed to delete designation');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting the designation');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle designation status\n */\n toggleDesignationStatus(itemId: string): void {\n console.log('🔵 toggleDesignationStatus called with:', itemId);\n this.loading.set(true);\n\n this.designationService.toggleDesignationStatus(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadDesignations();\n } else {\n this.error.set('Failed to toggle designation status');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Quick add or update designation using reactive form\n */\n quickAddDesignation() {\n if (this.quickAddForm.invalid) {\n console.log('❌ Form is invalid:', this.quickAddForm.errors);\n return;\n }\n\n const formValue = this.quickAddForm.value;\n\n // Create payload according to MDesignationInsertUpdatePayload model\n const designation: Partial<ICoreSydsg> = {\n _id: this.retrievedDesignation()?._id || '',\n sydsg_name: formValue.sydsg_name,\n sydsg_code: formValue.sydsg_code,\n sydsg_description: formValue.sydsg_description || '',\n sydsg_prent_id_desg: formValue.sydsg_prent_id_desg || undefined,\n sydsg_department_id_sydpt: formValue.sydsg_department_id_sydpt,\n sydsg_grade_level_id_sydsgl: formValue.sydsg_grade_level_id_sydsgl,\n sydsg_isactive: formValue.sydsg_isactive,\n desg_entity_id_syen: formValue.desg_entity_id_syen\n };\n\n // Validate required fields according to model\n if (!designation.sydsg_name || !designation.sydsg_code || !designation.sydsg_department_id_sydpt || \n !designation.sydsg_grade_level_id_sydsgl || !designation.desg_entity_id_syen) {\n this.error.set('Please fill in all required fields');\n return;\n }\n\n if (this.isEditMode() && this.retrievedDesignation()) {\n const itemId = this.retrievedDesignation()?._id;\n if (itemId) {\n console.log('🔵 Updating designation:', itemId, designation);\n this.designationService.updateDesignation(itemId, designation).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Designation updated successfully');\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n this.loadDesignations();\n } else {\n this.error.set(response.message || 'Failed to update designation');\n }\n },\n error: (err) => {\n console.error('❌ Error updating designation:', err);\n this.error.set(err.message || 'Failed to update designation');\n }\n });\n }\n } else {\n console.log('🔵 Creating new designation:', designation);\n this.designationService.createDesignation(designation).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Designation created successfully');\n this.resetQuickAddForm();\n this.loadDesignations();\n } else {\n this.error.set(response.message || 'Failed to create designation');\n }\n },\n error: (err) => {\n console.error('❌ Error creating designation:', err);\n this.error.set(err.message || 'Failed to create designation');\n }\n });\n }\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n this.selectedParentDesignation.set(null);\n this.selectedParentDepartment.set(null);\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n\n this.quickAddForm.reset({\n sydsg_name: '',\n sydsg_code: '',\n sydsg_description: '',\n sydsg_prent_id_desg: '',\n sydsg_department_id_sydpt: '',\n sydsg_grade_level_id_sydsgl: '',\n sydsg_isactive: true,\n desg_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n\n // Clear any previous errors\n this.error.set(null);\n }\n\n /**\n * Handle adding a child designation\n */\n onAddChild(parentItem: ICoreSydsg): void {\n console.log('🔵 onAddChild called with:', parentItem);\n console.log('🔵 Parent name:', parentItem.sydsg_name);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n\n // Set the selected parent item first using signal\n this.selectedParentDesignation.set(parentItem);\n console.log('🔵 selectedParentDesignation set to:', this.selectedParentDesignation());\n\n // Update form with parent context (don't call resetQuickAddForm as it clears the parent)\n this.quickAddForm.patchValue({\n sydsg_name: '',\n sydsg_code: '',\n sydsg_description: '',\n sydsg_prent_id_desg: parentItem._id,\n sydsg_department_id_sydpt: parentItem.sydsg_department_id_sydpt || '', // Inherit department from parent\n sydsg_grade_level_id_sydsgl: '',\n sydsg_isactive: true,\n desg_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n\n // If parent has a department, set it as selected\n if (parentItem.sydsg_department_id_sydpt) {\n const parentDepartment = this.departments().find(d => d._id === parentItem.sydsg_department_id_sydpt);\n if (parentDepartment) {\n this.selectedParentDepartment.set(parentDepartment);\n }\n }\n\n console.log('🔵 Form updated, parent should be visible:', this.selectedParentDesignation()?.sydsg_name);\n }\n\n /**\n * Clear selected parent designation\n */\n clearSelectedParent() {\n this.selectedParentDesignation.set(null);\n this.quickAddForm.patchValue({\n sydsg_prent_id_desg: ''\n });\n }\n\n /**\n * Clear selected parent department\n */\n clearSelectedParentDepartment() {\n this.selectedParentDepartment.set(null);\n this.quickAddForm.patchValue({\n sydsg_department_id_sydpt: ''\n });\n }\n\n /**\n * Handle department selection\n */\n onDepartmentSelect(department: ICoreSydept): void {\n console.log('🔵 onDepartmentSelect called with:', department);\n this.selectedParentDepartment.set(department);\n this.quickAddForm.patchValue({\n sydsg_department_id_sydpt: department._id\n });\n }\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDesignation(itemId);\n break;\n case 'toggle':\n this.toggleDesignationStatus(itemId);\n break;\n case 'delete':\n this.deleteDesignation(itemId);\n break;\n }\n }\n }\n }\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle designation action clicks\n */\n handleDesignationAction(action: string, itemId: string) {\n const item = this.designations().find(item => item._id === itemId);\n if (!item) return;\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDesignation(itemId);\n break;\n case 'toggle':\n this.toggleDesignationStatus(itemId);\n break;\n case 'delete':\n this.deleteDesignation(itemId);\n break;\n }\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Generate dropdown items for designation actions\n */\n getDropdownItems(row: HierarchicalNode): DropdownItem[] {\n // Handle hierarchical data structure\n if (row.type === 'department') {\n return [\n {\n id: 'addDesignation',\n label: 'Add Designation',\n icon: 'add',\n iconColor: 'tw-text-blue-400',\n textColor: 'tw-text-blue-600',\n hoverBgColor: 'hover:tw-bg-blue-50'\n }\n ];\n } else {\n // For designations\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n iconColor: 'tw-text-blue-400',\n textColor: 'tw-text-blue-600',\n hoverBgColor: 'hover:tw-bg-blue-50'\n },\n {\n id: 'toggle',\n label: row.status ? 'Deactivate' : 'Activate',\n icon: 'power_settings_new',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n iconColor: 'tw-text-red-400',\n textColor: 'tw-text-red-600',\n hoverBgColor: 'hover:tw-bg-red-50'\n }\n ];\n }\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: HierarchicalNode): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n if (row.type === 'designation') {\n this.editDesignation(row._id);\n }\n break;\n case 'addChild':\n if (row.type === 'designation') {\n // Find the original designation object\n const designation = this.designations().find(d => d._id === row._id);\n if (designation) {\n this.onAddChild(designation);\n }\n }\n break;\n case 'addDesignation':\n if (row.type === 'department') {\n // Extract department ID from the prefixed ID\n const departmentId = row._id.replace('dept_', '');\n const department = this.departments().find(d => d._id === departmentId);\n if (department) {\n console.log('🔵 Adding designation to department:', department.sydept_name);\n this.onDepartmentSelect(department);\n // Reset form to add mode\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n this.selectedParentDesignation.set(null);\n this.resetQuickAddForm();\n }\n }\n break;\n case 'toggle':\n if (row.type === 'designation') {\n this.toggleDesignationStatus(row._id);\n }\n break;\n case 'delete':\n if (row.type === 'designation') {\n this.deleteDesignation(row._id);\n }\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSydsg): string {\n return item._id || '';\n }\n} ","<!-- Designation List Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-0\">\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-mb-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Designation' : 'Quick Add Designation' }}</h6>\n </div>\n @if (selectedParentDesignation()) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-blue-600 tw-font-medium\">{{ isEditMode() ? 'Parent:' : 'Creating child under:' }}</span>\n <span class=\"tw-text-sm tw-text-blue-800 tw-font-semibold\">{{ selectedParentDesignation()?.sydsg_name }}</span>\n </div>\n <button \n cideEleButton \n variant=\"ghost\" \n size=\"xs\" \n type=\"button\" \n (click)=\"clearSelectedParent()\" \n class=\"tw-text-blue-400 hover:tw-text-blue-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n </div>\n }\n @if (selectedParentDepartment()) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-green-50 tw-border tw-border-green-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-green-600 tw-w-4 tw-h-4\">business</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-green-600 tw-font-medium\">{{ isEditMode() ? 'Department:' : 'Department:' }}</span>\n <span class=\"tw-text-sm tw-text-green-800 tw-font-semibold\">{{ selectedParentDepartment()?.sydept_name }}</span>\n </div>\n <button \n cideEleButton \n variant=\"ghost\" \n size=\"xs\" \n type=\"button\" \n (click)=\"clearSelectedParentDepartment()\" \n class=\"tw-text-green-400 hover:tw-text-green-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n </div>\n }\n </div>\n \n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddDesignation()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-5 tw-gap-3 tw-mb-3\">\n <!-- Designation Name -->\n <div>\n <cide-ele-input \n id=\"sydsg_name\" \n label=\"Name*\" \n formControlName=\"sydsg_name\"\n placeholder=\"Designation name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Designation Code -->\n <div>\n <cide-ele-input \n id=\"sydsg_code\" \n label=\"Code*\" \n formControlName=\"sydsg_code\"\n placeholder=\"DESG001\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Grade Level -->\n <div>\n <cide-ele-select \n id=\"sydsg_grade_level_id_sydsgl\"\n label=\"Grade Level*\" \n [options]=\"gradeLevelOptions()\" \n formControlName=\"sydsg_grade_level_id_sydsgl\"\n placeholder=\"Select grade level\"\n size=\"sm\">\n </cide-ele-select>\n </div>\n \n <!-- Department -->\n <div>\n <cide-ele-select \n id=\"sydsg_department_id_sydpt\"\n label=\"Department*\" \n [options]=\"departmentOptions()\" \n formControlName=\"sydsg_department_id_sydpt\"\n placeholder=\"Select department\"\n size=\"sm\">\n </cide-ele-select>\n </div>\n \n <!-- Active Status -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <cide-ele-input \n id=\"sydsg_isactive\"\n type=\"checkbox\"\n label=\"Active\"\n formControlName=\"sydsg_isactive\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea \n id=\"sydsg_description\" \n label=\"Description\" \n formControlName=\"sydsg_description\"\n placeholder=\"Designation description\"\n rows=\"2\"\n size=\"sm\">\n </cide-ele-textarea>\n </div>\n \n <!-- Entity ID (Hidden) -->\n <div class=\"tw-hidden\">\n <cide-ele-input \n id=\"desg_entity_id_syen\" \n label=\"Entity ID*\" \n formControlName=\"desg_entity_id_syen\"\n placeholder=\"Entity ID\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-space-x-2\">\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\"\n (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">work</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Designation Management</h5>\n </div>\n\n <!-- Actions -->\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Search functionality is handled by the data grid -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n \n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\" \n [totalServerItems]=\"totalItems()\" \n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\" \n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Designation Details Renderer Template -->\n<ng-template #designationDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Dynamic Icon based on type -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon \n [class]=\"row.type === 'department' ? 'tw-text-green-500' : 'tw-text-blue-500'\" \n size=\"xs\">\n {{ row.type === 'department' ? 'business' : 'work' }}\n </cide-ele-icon>\n </div>\n \n <!-- Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.name\">\n {{ row.name || 'Untitled' }}\n </div>\n @if (row.type === 'department') {\n <span class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800\">\n Department\n </span>\n }\n </div>\n @if (row.description) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.description\">\n {{ row.description }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Designation Status Renderer Template -->\n<ng-template #designationStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getStatusClass(row.status)\">\n {{ getStatusDisplay(row.status) }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown \n [items]=\"getDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template> ","// Designation Management Components\r\nexport * from './components/designation-list/designation-list.component';\r\n\r\n// Designation Management Services\r\nexport * from './services/designation-management.service'; ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ICoreSydsgl } from 'cloud-ide-lms-model';\nimport { GradeLevelManagementService } from '../../services/grade-level-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\n\n@Component({\n selector: 'cide-core-app-grade-level-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n templateUrl: './grade-level-list.component.html',\n styleUrls: []\n})\nexport class GradeLevelListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private gradeLevelService = inject(GradeLevelManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n dragHandleRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('dragHandleRendererTemplate');\n gradeLevelDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('gradeLevelDetailsRendererTemplate');\n gradeLevelStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('gradeLevelStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n gradeLevels = signal<ICoreSydsgl[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Retrieved grade level data\n retrievedGradeLevel = signal<ICoreSydsgl | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Drag order management\n originalOrder = signal<ICoreSydsgl[]>([]);\n hasOrderChanged = signal(false);\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n sydsgl_name: this.fb.control('', [Validators.required, Validators.minLength(1), Validators.maxLength(20)]),\n sydsgl_description: this.fb.control('', [Validators.maxLength(400)]),\n sydsgl_order: this.fb.control(1, [Validators.required, Validators.min(1), Validators.max(100)]),\n sydsgl_isactive: this.fb.control(true, [Validators.required]),\n sydsgl_entity_id_syen: this.fb.control(this.appState.getActiveEntityId() || '', [Validators.required])\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSydsgl>>({\n id: 'grade-level-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'dragHandle',\n header: '',\n type: 'custom',\n width: '40px',\n truncate: false,\n align: 'center',\n renderer: 'dragHandleRenderer'\n },\n {\n key: 'details',\n header: 'Grade Level',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'gradeLevelDetailsRenderer'\n },\n {\n key: 'sydsgl_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'gradeLevelStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n dragDrop: {\n enabled: true,\n orderField: 'sydsgl_order',\n dragClass: 'tw-opacity-50 tw-bg-blue-50',\n dropClass: 'tw-bg-green-50'\n },\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search grade levels...',\n searchableColumns: ['sydsgl_name', 'sydsgl_description'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onGradeLevelRefresh'\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n dragHandleRenderer: this.dragHandleRendererTemplate(),\n gradeLevelDetailsRenderer: this.gradeLevelDetailsRendererTemplate(),\n gradeLevelStatusRenderer: this.gradeLevelStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSydsgl) => string> {\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditGradeLevel: (row: ICoreSydsgl) => this.editGradeLevel(row._id || ''),\n onToggleGradeLevel: (row: ICoreSydsgl) => this.toggleGradeLevelStatus(row._id || ''),\n onDeleteGradeLevel: (row: ICoreSydsgl) => this.deleteGradeLevel(row._id || ''),\n onGradeLevelRowClick: (row: ICoreSydsgl) => this.onGradeLevelRowClick(row),\n onGradeLevelRefresh: () => this.onGradeLevelRefresh(),\n resetOrder: () => this.resetDragOrder(),\n saveOrder: () => this.saveGradeLevelOrder()\n };\n\n // Computed properties\n filteredItems = computed(() => {\n const items = this.gradeLevels();\n const search = this.searchTerm()?.toLowerCase();\n\n if (!search) return items;\n\n return items.filter(item => {\n return item.sydsgl_name?.toLowerCase().includes(search) ||\n item.sydsgl_description?.toLowerCase().includes(search);\n });\n });\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Computed property for next order\n nextOrder = computed(() => this.calculateNextOrder());\n\n // Modern constructor with effects for initialization\n constructor() {\n this.initializeComponent();\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('GradeLevelListComponent initialized with modern Angular patterns');\n this.loadGradeLevels();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleGradeLevelAction: (action: string, id: string) => void }).handleGradeLevelAction = this.handleGradeLevelAction.bind(this);\n }\n }\n\n /**\n * Load grade levels from service\n */\n loadGradeLevels(): void {\n console.log('🚀 GradeLevelListComponent.loadGradeLevels() called');\n this.loading.set(true);\n this.error.set(null);\n\n const requestBody = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm()\n };\n console.log('📋 Request body:', requestBody);\n\n if (!this.gradeLevelService) {\n console.error('❌ GradeLevelService is not available');\n this.error.set('Grade level service is not available');\n this.loading.set(false);\n return;\n }\n\n this.gradeLevelService.getGradeLevelList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 GradeLevelListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting grade levels:', response.data);\n const gradeLevelData = response?.data || [];\n this.gradeLevels.set(gradeLevelData);\n this.totalItems.set(response.total || 0);\n this.updateGridData(gradeLevelData);\n \n // Update the order field in the form if not in edit mode\n if (!this.isEditMode()) {\n const nextOrder = this.calculateNextOrder();\n this.quickAddForm.patchValue({ sydsgl_order: nextOrder });\n }\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load grade levels');\n }\n },\n error: (err) => {\n console.error('❌ GradeLevelListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading grade levels');\n },\n complete: () => {\n console.log('GradeLevelListComponent loadGradeLevels completed');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(gradeLevels: ICoreSydsgl[]): void {\n console.log('🔄 updateGridData called with:', gradeLevels);\n \n this.gridConfig.update(config => {\n const newConfig = {\n ...config,\n data: gradeLevels\n };\n console.log('⚙️ Updated grid config with grade levels');\n return newConfig;\n });\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSydsgl>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadGradeLevels();\n break;\n case 'pageChange': {\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadGradeLevels();\n } else {\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadGradeLevels();\n }\n }\n break;\n }\n case 'refresh':\n this.onGradeLevelRefresh();\n break;\n case 'rowClick':\n this.onGradeLevelRowClick(event.data as ICoreSydsgl);\n break;\n case 'rowReorder':\n this.onGradeLevelReorder(event.data as { sourceIndex: number; targetIndex: number; newOrder: ICoreSydsgl[] });\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editGradeLevel(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleGradeLevelStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteGradeLevel(event.data as string);\n }\n break;\n }\n }\n\n /**\n * Handle grade level refresh\n */\n onGradeLevelRefresh(): void {\n this.loadGradeLevels();\n }\n\n /**\n * Handle grade level reorder via drag and drop\n */\n onGradeLevelReorder(data: { sourceIndex: number; targetIndex: number; newOrder: ICoreSydsgl[] }): void {\n console.log('🔄 Grade level reorder event:', data);\n\n // Save original order if not already saved\n if (this.originalOrder().length === 0) {\n this.originalOrder.set([...this.gradeLevels()]);\n }\n\n // Update the displayed data with new order\n const updatedItems = data.newOrder.map((item, index) => ({\n ...item,\n sydsgl_order: index + 1\n }));\n \n this.gradeLevels.set(updatedItems);\n\n // Mark that order has changed\n this.hasOrderChanged.set(true);\n\n // Update grid data\n this.updateGridDataAfterReorder();\n console.log('Updated gradeLevels:', this.gradeLevels());\n }\n\n /**\n * Update grid data after reordering\n */\n private updateGridDataAfterReorder() {\n const currentConfig = this.gridConfig();\n this.gridConfig.set({\n ...currentConfig,\n data: this.gradeLevels()\n });\n }\n\n /**\n * Save grade level order\n */\n saveGradeLevelOrder() {\n console.log('💾 Saving grade level order...');\n \n // Send updates to the server for each item that changed order\n const promises = this.gradeLevels().map(item => {\n return this.gradeLevelService.updateGradeLevel(item._id || '', {\n sydsgl_order: item.sydsgl_order\n }).toPromise();\n });\n\n // Wait for all updates to complete\n Promise.all(promises)\n .then(() => {\n console.log('✅ All grade level orders updated successfully');\n // Update original order and reset change flag\n this.originalOrder.set([...this.gradeLevels()]);\n this.hasOrderChanged.set(false);\n })\n .catch((error) => {\n console.error('❌ Error updating grade level orders:', error);\n this.error.set('Failed to update grade level order');\n });\n }\n\n /**\n * Reset drag order to original state\n */\n resetDragOrder() {\n console.log('🔄 Resetting drag order to original state');\n\n // Restore the original order\n const originalItems = this.originalOrder();\n if (originalItems.length > 0) {\n this.gradeLevels.set([...originalItems]);\n this.updateGridDataAfterReorder();\n }\n\n // Reset the change flag\n this.hasOrderChanged.set(false);\n\n console.log('✅ Drag order reset successfully');\n }\n\n /**\n * Check if order has changed\n */\n hasOrderChanges(): boolean {\n return this.hasOrderChanged();\n }\n\n /**\n * Handle grade level row click\n */\n onGradeLevelRowClick(gradeLevel: ICoreSydsgl): void {\n this.editGradeLevel(gradeLevel._id || '');\n }\n\n /**\n * Navigate to edit grade level form\n */\n editGradeLevel(itemId: string): void {\n console.log('🔵 editGradeLevel called with:', itemId);\n this.isEditMode.set(true);\n this.getGradeLevelById(itemId);\n }\n\n /**\n * Get grade level by ID using the API\n */\n getGradeLevelById(itemId: string): void {\n console.log('🔵 getGradeLevelById called with:', itemId);\n this.loading.set(true);\n\n this.gradeLevelService.getGradeLevelById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Grade level retrieved successfully:', response.data);\n let gradeLevel: ICoreSydsgl | null = null;\n gradeLevel = response.data || null;\n\n this.retrievedGradeLevel.set(gradeLevel);\n\n if (this.isEditMode() && gradeLevel) {\n this.populateFormForEdit(gradeLevel);\n }\n } else {\n this.error.set('Failed to retrieve grade level');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the grade level');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with grade level data for editing\n */\n populateFormForEdit(gradeLevel: ICoreSydsgl): void {\n console.log('🔵 populateFormForEdit called with:', gradeLevel);\n\n this.quickAddForm.patchValue({\n sydsgl_name: gradeLevel.sydsgl_name || '',\n sydsgl_description: gradeLevel.sydsgl_description || '',\n sydsgl_order: gradeLevel.sydsgl_order || 1,\n sydsgl_isactive: gradeLevel.sydsgl_isactive ?? true,\n sydsgl_entity_id_syen: gradeLevel.sydsgl_entity_id_syen || ''\n });\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete grade level\n */\n deleteGradeLevel(itemId: string): void {\n console.log('🔵 deleteGradeLevel called with:', itemId);\n if (confirm('Are you sure you want to delete this grade level?')) {\n this.loading.set(true);\n\n this.gradeLevelService.deleteGradeLevel(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadGradeLevels();\n } else {\n this.error.set('Failed to delete grade level');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting the grade level');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle grade level status\n */\n toggleGradeLevelStatus(itemId: string): void {\n console.log('🔵 toggleGradeLevelStatus called with:', itemId);\n this.loading.set(true);\n\n this.gradeLevelService.toggleGradeLevelStatus(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadGradeLevels();\n } else {\n this.error.set('Failed to toggle grade level status');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Quick add or update grade level using reactive form\n */\n quickAddGradeLevel() {\n if (this.quickAddForm.invalid) return;\n\n const formValue = this.quickAddForm.value;\n\n // For new grade levels, ensure the order is set to the calculated next order\n let order = formValue.sydsgl_order;\n if (!this.isEditMode()) {\n order = this.calculateNextOrder();\n }\n\n const gradeLevel: Partial<ICoreSydsgl> = {\n _id: this.retrievedGradeLevel()?._id || '',\n sydsgl_name: formValue.sydsgl_name,\n sydsgl_description: formValue.sydsgl_description || '',\n sydsgl_order: order,\n sydsgl_isactive: formValue.sydsgl_isactive,\n sydsgl_entity_id_syen: formValue.sydsgl_entity_id_syen\n };\n\n if (this.isEditMode() && this.retrievedGradeLevel()) {\n const itemId = this.retrievedGradeLevel()?._id;\n if (itemId) {\n console.log('🔵 Updating grade level:', itemId);\n this.gradeLevelService.updateGradeLevel(itemId, gradeLevel).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Grade level updated successfully');\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedGradeLevel.set(null);\n this.loadGradeLevels();\n }\n },\n error: () => {\n this.error.set('Failed to update grade level');\n }\n });\n }\n } else {\n console.log('🔵 Creating new grade level');\n this.gradeLevelService.createGradeLevel(gradeLevel).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Grade level created successfully');\n this.resetQuickAddForm();\n this.loadGradeLevels();\n }\n },\n error: () => {\n this.error.set('Failed to create grade level');\n }\n });\n }\n }\n\n /**\n * Calculate the highest order from existing grade levels\n */\n private calculateNextOrder(): number {\n const currentGradeLevels = this.gradeLevels();\n if (currentGradeLevels.length === 0) {\n return 1;\n }\n \n const maxOrder = Math.max(...currentGradeLevels.map(level => level.sydsgl_order || 0));\n return maxOrder + 1;\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n this.isEditMode.set(false);\n this.retrievedGradeLevel.set(null);\n\n // Calculate the next order automatically\n const nextOrder = this.calculateNextOrder();\n\n this.quickAddForm.reset({\n sydsgl_name: '',\n sydsgl_description: '',\n sydsgl_order: nextOrder,\n sydsgl_isactive: true,\n sydsgl_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n }\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editGradeLevel(itemId);\n break;\n case 'toggle':\n this.toggleGradeLevelStatus(itemId);\n break;\n case 'delete':\n this.deleteGradeLevel(itemId);\n break;\n }\n }\n }\n }\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle grade level action clicks\n */\n handleGradeLevelAction(action: string, itemId: string) {\n const item = this.gradeLevels().find(item => item._id === itemId);\n if (!item) return;\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editGradeLevel(itemId);\n break;\n case 'toggle':\n this.toggleGradeLevelStatus(itemId);\n break;\n case 'delete':\n this.deleteGradeLevel(itemId);\n break;\n }\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Generate dropdown items for grade level actions\n */\n getDropdownItems(row: ICoreSydsgl): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'toggle',\n label: row.sydsgl_isactive ? 'Deactivate' : 'Activate',\n icon: 'power_settings_new',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n iconColor: 'tw-text-red-400',\n textColor: 'tw-text-red-600',\n hoverBgColor: 'hover:tw-bg-red-50'\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSydsgl): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n this.editGradeLevel(row._id || '');\n break;\n case 'toggle':\n this.toggleGradeLevelStatus(row._id || '');\n break;\n case 'delete':\n this.deleteGradeLevel(row._id || '');\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSydsgl): string {\n return item._id || '';\n }\n} ","<!-- Grade Level List Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-3\">\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Grade Level' : 'Quick Add Grade Level' }}</h6>\n </div>\n </div>\n \n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddGradeLevel()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-mb-3\">\n <!-- Grade Level Name -->\n <div>\n <cide-ele-input \n id=\"sydsgl_name\" \n label=\"Name*\" \n formControlName=\"sydsgl_name\"\n placeholder=\"Grade level name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Active Status -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <cide-ele-input \n id=\"sydsgl_isactive\"\n type=\"checkbox\"\n label=\"Active\"\n formControlName=\"sydsgl_isactive\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea \n id=\"sydsgl_description\" \n label=\"Description\" \n formControlName=\"sydsgl_description\"\n placeholder=\"Grade level description\"\n rows=\"2\"\n size=\"sm\">\n </cide-ele-textarea>\n </div>\n \n <!-- Entity ID (Hidden) -->\n <div class=\"tw-hidden\">\n <cide-ele-input \n id=\"sydsgl_entity_id_syen\" \n label=\"Entity ID*\" \n formControlName=\"sydsgl_entity_id_syen\"\n placeholder=\"Entity ID\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-space-x-2\">\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\"\n (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">school</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Grade Level Management</h5>\n </div>\n\n <!-- Actions -->\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Search functionality is handled by the data grid -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n \n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\" \n [totalServerItems]=\"totalItems()\" \n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\" \n [dragDropEnabled]=\"true\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Drag Handle Renderer Template -->\n<ng-template #dragHandleRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-justify-center tw-w-full tw-h-full tw-cursor-move drag-handle\">\n <cide-ele-icon \n class=\"tw-text-gray-400 hover:tw-text-gray-600 tw-transition-colors\" \n size=\"xs\">\n drag_indicator\n </cide-ele-icon>\n </div>\n</ng-template>\n\n<!-- Grade Level Details Renderer Template -->\n<ng-template #gradeLevelDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Grade Level Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon \n class=\"tw-text-gray-400\" \n size=\"xs\">\n school\n </cide-ele-icon>\n </div>\n \n <!-- Grade Level Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.sydsgl_name\">\n {{ row.sydsgl_name || 'Untitled' }}\n </div>\n @if (row.sydsgl_description) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.sydsgl_description\">\n {{ row.sydsgl_description }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Grade Level Status Renderer Template -->\n<ng-template #gradeLevelStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getStatusClass(row.sydsgl_isactive)\">\n {{ getStatusDisplay(row.sydsgl_isactive) }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown \n [items]=\"getDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template> ","// Grade Level Management Components\r\nexport * from './components/grade-level-list/grade-level-list.component';\r\n\r\n// Grade Level Management Services\r\nexport * from './services/grade-level-management.service'; ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport {\r\n cidePath,\r\n coreRoutesUrl,\r\n generateStringFromObject,\r\n hostManagerRoutesUrl,\r\n MSystemPages,\r\n MSystemPagesCheckCodeExistsPayload,\r\n MSystemPagesDeletePayload,\r\n MSystemPagesGetByIdPayload,\r\n MSystemPagesInsertUpdatePayload,\r\n MSystemPagesToggleStatusPayload,\r\n systemPagesByIdControllerResponse,\r\n systemPagesCheckCodeExistsControllerResponse,\r\n systemPagesControllerResponse,\r\n systemPagesDeleteControllerResponse,\r\n systemPagesInsertUpdateControllerResponse,\r\n systemPagesToggleStatusControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageManagementService {\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Get page list from API\r\n */\r\n getPageList(body: MSystemPages): Observable<systemPagesControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<systemPagesControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, query]))\r\n .pipe(\r\n catchError(error => {\r\n console.error('PageManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Create or update page using single API endpoint\r\n */\r\n createOrUpdatePage(payload: MSystemPagesInsertUpdatePayload): Observable<systemPagesInsertUpdateControllerResponse> {\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page]);\r\n return this.http.post<systemPagesInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Get page by ID\r\n */\r\n getPageById(id: string): Observable<systemPagesByIdControllerResponse> {\r\n console.log('Getting page by ID:', id);\r\n const payload: MSystemPagesGetByIdPayload = { sypg_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, 'byId', query]);\r\n return this.http.get<systemPagesByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete page\r\n */\r\n deletePage(id: string): Observable<systemPagesDeleteControllerResponse> {\r\n const payload: MSystemPagesDeletePayload = { sypg_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, query]);\r\n return this.http.delete<systemPagesDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Toggle page active status\r\n */\r\n togglePageStatus(payload: MSystemPagesToggleStatusPayload): Observable<systemPagesToggleStatusControllerResponse> {\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, query]);\r\n return this.http.put<systemPagesToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find page by ID using API\r\n */\r\n findPageById(payload: MSystemPagesCheckCodeExistsPayload): Observable<systemPagesCheckCodeExistsControllerResponse> {\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, 'checkCodeExists', query]);\r\n return this.http.get<systemPagesCheckCodeExistsControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Check if page code already exists\r\n */\r\n checkPageCodeExists(payload: MSystemPagesCheckCodeExistsPayload): Observable<boolean> {\r\n return this.findPageById(payload).pipe(\r\n map((response: systemPagesCheckCodeExistsControllerResponse) => response.success || false)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Page Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { PageManagementService } from '../../services/page-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\nimport { ICoreSypg, systemPagesControllerResponse, generateStringFromObject } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-app-page-list',\n standalone: true,\n imports: [\n CommonModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n templateUrl: './page-list.component.html'\n})\nexport class PageListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private pageService = inject(PageManagementService);\n private appState = inject(AppStateHelperService);\n private router = inject(Router);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n pageDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('pageDetailsRendererTemplate');\n pageStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('pageStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n pages = signal<ICoreSypg[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Pagination signals\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSypg>>({\n id: 'page-list-grid',\n columns: [\n {\n key: 'details',\n header: 'Page Details',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'pageDetailsRenderer'\n },\n {\n key: 'sypg_page_code',\n header: 'Page Code',\n type: 'text',\n width: '150px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sypg_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'pageStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '120px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search pages...',\n searchableColumns: ['sypg_title', 'sypg_desc', 'sypg_page_code'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false\n });\n\n // Action handlers for grid\n actionHandlers = {\n onEdit: (item: ICoreSypg) => this.editPage(item),\n onDelete: (item: ICoreSypg) => this.deletePage(item),\n onToggleStatus: (item: ICoreSypg) => this.togglePageStatus(item),\n onManageThemes: (item: ICoreSypg) => this.manageThemes(item),\n onManageControls: (item: ICoreSypg) => this.manageControls(item)\n };\n\n constructor() {\n this.initializeComponent();\n }\n\n /**\n * Initialize component\n */\n private initializeComponent(): void {\n this.loadPages();\n }\n\n /**\n * Load pages from API\n */\n private loadPages(): void {\n this.loading.set(true);\n this.error.set(null);\n\n const request = {\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n search: this.searchTerm() || undefined\n };\n\n this.pageService.getPageList(request)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: systemPagesControllerResponse) => {\n if (response.success) {\n this.pages.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load pages');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading pages:', error);\n this.error.set('Failed to load pages. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(): void {\n this.gridConfig.update(config => ({\n ...config,\n data: this.pages()\n }));\n }\n\n /**\n * Get template renderers for grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return {\n pageDetailsRenderer: this.pageDetailsRendererTemplate(),\n pageStatusRenderer: this.pageStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n };\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSypg>): void {\n switch (event.type) {\n case 'pageChange':\n console.log('🔵 Page change event:', event);\n if (event.data && typeof event.data === 'object' && 'page' in event.data && 'pageSize' in event.data) {\n this.currentPage.set(event.data['page'] as number);\n this.pageSize.set(event.data['pageSize'] as number);\n this.loadPages();\n }\n break;\n case 'search':\n if (event.data && typeof event.data === 'string') {\n this.searchTerm.set(event.data);\n this.currentPage.set(1);\n this.loadPages();\n }\n break;\n case 'refresh':\n this.loadPages();\n break;\n case 'action':\n // Handle action events if needed\n console.log('Action event:', event);\n break;\n case 'rowClick':\n // Handle row click events if needed\n console.log('Row click event:', event);\n break;\n case 'sort':\n // Handle sort events if needed\n console.log('Sort event:', event);\n break;\n case 'export':\n // Handle export events if needed\n console.log('Export event:', event);\n break;\n case 'rowReorder':\n // Handle row reorder events if needed\n console.log('Row reorder event:', event);\n break;\n }\n }\n\n /**\n * Navigate to create page\n */\n createPage(): void {\n this.router.navigate(['/control-panel/page-form']);\n }\n\n /**\n * Edit page - navigate to edit page\n */\n editPage(page: ICoreSypg): void {\n const query: string = generateStringFromObject({\n sypg_id: page._id,\n sypg_title: page.sypg_title\n });\n this.router.navigate(['/control-panel/page-form', query]);\n }\n\n /**\n * Delete page\n */\n deletePage(page: ICoreSypg): void {\n if (confirm(`Are you sure you want to delete the page \"${page.sypg_title}\"?`)) {\n this.loading.set(true);\n this.pageService.deletePage(page._id || '')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadPages();\n console.log('✅ Page deleted successfully');\n } else {\n console.error('❌ Failed to delete page:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error deleting page:', error);\n console.error('❌ Failed to delete page. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle page status\n */\n togglePageStatus(page: ICoreSypg): void {\n this.loading.set(true);\n this.pageService.togglePageStatus({ sypg_id: page._id || '', sypg_isactive: !page.sypg_isactive })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadPages();\n console.log(`✅ Page ${page.sypg_isactive ? 'deactivated' : 'activated'} successfully`);\n } else {\n console.error('❌ Failed to toggle page status:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error toggling page status:', error);\n console.error('❌ Failed to toggle page status. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Manage themes for a page\n */\n manageThemes(page: ICoreSypg): void {\n const query: string = generateStringFromObject({ sypg_id: page._id, sypg_title: page.sypg_title })\n this.router.navigate(['control-panel', 'page-theme', query]);\n }\n\n /**\n * Manage controls for a page\n */\n manageControls(page: ICoreSypg): void {\n const query: string = generateStringFromObject({ sypg_id: page._id, sypg_title: page.sypg_title })\n this.router.navigate(['control-panel', 'page-controls', query]);\n }\n\n /**\n * Get dropdown items for actions\n */\n getActionDropdownItems(page: ICoreSypg): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n disabled: false\n },\n {\n id: 'themes',\n label: 'Manage Themes',\n icon: 'palette',\n disabled: false\n },\n {\n id: 'controls',\n label: 'Manage Controls',\n icon: 'settings',\n disabled: false\n },\n {\n id: 'toggle',\n label: page.sypg_isactive ? 'Deactivate' : 'Activate',\n icon: page.sypg_isactive ? 'block' : 'check_circle',\n disabled: false\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n disabled: false\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n * This method handles clicks on dropdown menu items in the actions column\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSypg): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n console.log('🔵 Calling editPage with:', row);\n this.editPage(row);\n break;\n case 'themes':\n console.log('🔵 Calling manageThemes with:', row);\n this.manageThemes(row);\n break;\n case 'controls':\n console.log('🔵 Calling manageControls with:', row);\n this.manageControls(row);\n break;\n case 'toggle':\n console.log('🔵 Calling togglePageStatus with:', row);\n this.togglePageStatus(row);\n break;\n case 'delete':\n console.log('🔵 Calling deletePage with:', row);\n this.deletePage(row);\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n // Close all dropdowns after action\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n // Close all dropdowns by clicking outside\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n} ","<!-- Page List Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">web</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Page Management</h5>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Add Page Button -->\n <button\n cideEleButton\n variant=\"primary\"\n size=\"sm\"\n (click)=\"createPage()\"\n leftIcon=\"add\"\n class=\"tw-whitespace-nowrap tw-flex tw-items-center tw-gap-2\">\n Create New Page\n </button>\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\">error</cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\"\n [totalServerItems]=\"totalItems()\"\n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Page Details Renderer Template -->\n<ng-template #pageDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Page Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon class=\"tw-text-gray-400 tw-w-4 tw-h-4\">web</cide-ele-icon>\n </div>\n \n <!-- Page Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.sypg_title\">\n {{ row.sypg_title || 'Untitled' }}\n </div>\n @if (row.sypg_desc) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.sypg_desc\">\n {{ row.sypg_desc }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Page Status Renderer Template -->\n<ng-template #pageStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"row.sypg_isactive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800'\">\n {{ row.sypg_isactive ? 'Active' : 'Inactive' }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown\n [items]=\"getActionDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template> ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl,\r\n MSystemPagesTheme,\r\n MSystemPagesThemeGetByIdPayload,\r\n MSystemPagesThemeDeletePayload,\r\n MSystemPagesThemeInsertUpdatePayload,\r\n MSystemPagesThemeToggleStatusPayload,\r\n MSystemPagesThemeByPageIdPayload,\r\n systemPagesThemeControllerResponse,\r\n systemPagesThemeByIdControllerResponse,\r\n systemPagesThemeInsertUpdateControllerResponse,\r\n systemPagesThemeDeleteControllerResponse,\r\n systemPagesThemeToggleStatusControllerResponse,\r\n systemPagesThemeByPageIdControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageThemeService {\r\n private apiUrl = `${coreRoutesUrl?.pageTheme}`;\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('PageThemeService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get theme list from API\r\n */\r\n getThemeList(body: MSystemPagesTheme): Observable<systemPagesThemeControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<systemPagesThemeControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, query]))\r\n .pipe(\r\n catchError(error => {\r\n console.error('PageThemeService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Create new theme\r\n */\r\n createTheme(payload: MSystemPagesThemeInsertUpdatePayload): Observable<systemPagesThemeInsertUpdateControllerResponse> {\r\n console.log('Creating theme:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme]);\r\n return this.http.post<systemPagesThemeInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing theme\r\n */\r\n updateTheme(payload: MSystemPagesThemeInsertUpdatePayload): Observable<systemPagesThemeInsertUpdateControllerResponse> {\r\n console.log('Updating theme:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme]);\r\n return this.http.post<systemPagesThemeInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get theme by ID\r\n */\r\n getThemeById(id: string): Observable<systemPagesThemeByIdControllerResponse> {\r\n console.log('Getting theme by ID:', id);\r\n const payload: MSystemPagesThemeGetByIdPayload = { sytm_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, 'byId', query]);\r\n return this.http.get<systemPagesThemeByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get themes by page ID\r\n */\r\n getThemesByPageId(pageId: string): Observable<systemPagesThemeByPageIdControllerResponse> {\r\n console.log('Getting themes by page ID:', pageId);\r\n const payload: MSystemPagesThemeByPageIdPayload = { sytm_page_id_sypg: pageId };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, 'byPage', query]);\r\n return this.http.get<systemPagesThemeByPageIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete theme\r\n */\r\n deleteTheme(id: string): Observable<systemPagesThemeDeleteControllerResponse> {\r\n const payload: MSystemPagesThemeDeletePayload = { sytm_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, query]);\r\n return this.http.delete<systemPagesThemeDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle theme active status\r\n */\r\n toggleThemeStatus(payload: MSystemPagesThemeToggleStatusPayload): Observable<systemPagesThemeToggleStatusControllerResponse> {\r\n console.log('Toggling theme status:', payload);\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, query]);\r\n return this.http.put<systemPagesThemeToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Page Theme Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule, FormArray, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { PageThemeService } from '../../services/page-theme.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, CideEleJsonEditorComponent, CideSelectOptionComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\nimport { ICoreSytm, MSystemPagesThemeInsertUpdatePayload, ICoreSythDrawer, MSystemPagesTheme, generateObjectFromString } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-app-page-theme',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleJsonEditorComponent,\n CideSelectOptionComponent\n],\n templateUrl: './page-theme.component.html',\n styleUrls: []\n})\nexport class PageThemeComponent implements OnInit {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private themeService = inject(PageThemeService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n themeDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('themeDetailsRendererTemplate');\n themeStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('themeStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n themes = signal<ICoreSytm[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Derived list filtered by searchTerm\n filteredThemes = computed(() => {\n const q = (this.searchTerm() || '').toLowerCase().trim();\n const items = this.themes() || [];\n if (!q) return items;\n return items.filter(t => {\n const title = (t.sytm_title || '').toLowerCase();\n const code = (t.sytm_theme_code || '').toLowerCase();\n const desc = (t.sytm_desc || '').toLowerCase();\n return title.includes(q) || code.includes(q) || desc.includes(q);\n });\n });\n\n // Helper to resolve preview image URL safely\n getPreviewUrl(theme: ICoreSytm): string {\n const id = theme?.sytm_preview_id_fm || '';\n if (!id) return '';\n\n type WithPreviewUrl = { getPreviewUrl: (pid: string) => string };\n const svcUnknown: unknown = this.themeService;\n\n const hasGetPreviewUrl = (svc: unknown): svc is WithPreviewUrl =>\n typeof svc === 'object' && svc !== null &&\n 'getPreviewUrl' in (svc as Record<string, unknown>) &&\n typeof (svc as Record<string, unknown>)['getPreviewUrl'] === 'function';\n\n if (hasGetPreviewUrl(svcUnknown)) {\n return svcUnknown.getPreviewUrl(id);\n }\n return '';\n }\n\n // Input handler to avoid $any casts in template\n onGallerySearchInput(event: Event): void {\n const target = event.target as HTMLInputElement | null;\n this.searchTerm.set(target?.value ?? '');\n }\n\n // Page information\n pageId = signal<string>('');\n pageTitle = signal<string>('');\n\n // Form state\n isEditMode = signal(false);\n editingThemeId = signal<string | null>(null);\n retrievedTheme = signal<ICoreSytm | null>(null);\n\n // Pagination signals\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive forms with signals\n themeForm = this.fb.group({\n sytm_title: ['', [Validators.required]],\n sytm_desc: [''],\n sytm_theme_code: ['', [Validators.required]],\n sytm_preview_id_fm: [''],\n sytm_sub_title: [''],\n sytm_configuration: ['{}'],\n sytm_entity_id_syen: [''],\n sytm_isselected: [false],\n sytm_layout: this.fb.group({\n sytm_layout_sidebar: this.fb.group({ status: [true] }),\n sytm_layout_header: this.fb.group({ status: [true] }),\n sytm_layout_footer: this.fb.group({ status: [false] }),\n sytm_layout_breadcrumb: this.fb.group({ status: [true] }),\n sytm_layout_console: this.fb.group({ status: [false] }),\n sytm_layout_request: this.fb.group({ status: [false] }),\n sytm_layout_drawer: this.fb.array([] as ICoreSythDrawer[])\n }),\n sytm_isactive: [true]\n });\n\n // Computed values\n isFormDirty = computed(() => this.themeForm.dirty);\n\n // Multi-select options for layout sections\n layoutOptions = [\n { value: 'sidebar', label: 'Sidebar' },\n { value: 'header', label: 'Header' },\n { value: 'footer', label: 'Footer' },\n { value: 'breadcrumb', label: 'Breadcrumb' },\n { value: 'console', label: 'Console' },\n { value: 'request', label: 'Request' }\n ] as const;\n\n // Read enabled selections from form values\n enabledLayoutSelections(): string[] {\n const layout = this.themeForm.get('sytm_layout');\n if (!layout) return [];\n const selections: string[] = [];\n\n const getBool = (path: string) => Boolean(this.themeForm.get(path)?.value);\n\n if (getBool('sytm_layout.sytm_layout_sidebar.status')) selections.push('sidebar');\n if (getBool('sytm_layout.sytm_layout_header.status')) selections.push('header');\n if (getBool('sytm_layout.sytm_layout_footer.status')) selections.push('footer');\n if (getBool('sytm_layout.sytm_layout_breadcrumb.status')) selections.push('breadcrumb');\n if (getBool('sytm_layout.sytm_layout_console.status')) selections.push('console');\n if (getBool('sytm_layout.sytm_layout_request.status')) selections.push('request');\n\n return selections;\n }\n\n // Update form booleans from multi-select change\n onEnabledLayoutChange(values: string[]): void {\n const setBool = (path: string, val: boolean) => this.themeForm.get(path)?.setValue(val);\n\n const selected = new Set(values);\n setBool('sytm_layout.sytm_layout_sidebar.status', selected.has('sidebar'));\n setBool('sytm_layout.sytm_layout_header.status', selected.has('header'));\n setBool('sytm_layout.sytm_layout_footer.status', selected.has('footer'));\n setBool('sytm_layout.sytm_layout_breadcrumb.status', selected.has('breadcrumb'));\n setBool('sytm_layout.sytm_layout_console.status', selected.has('console'));\n setBool('sytm_layout.sytm_layout_request.status', selected.has('request'));\n }\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSytm>>({\n id: 'theme-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Theme Details',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'themeDetailsRenderer'\n },\n {\n key: 'sytm_theme_code',\n header: 'Theme Code',\n type: 'text',\n width: '150px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sytm_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'themeStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '120px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search themes...',\n searchableColumns: ['sytm_title', 'sytm_desc', 'sytm_theme_code'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none'\n });\n\n // Action handlers for grid\n actionHandlers = {\n onEdit: (item: ICoreSytm) => this.editTheme(item),\n onDelete: (item: ICoreSytm) => this.deleteTheme(item),\n onToggleStatus: (item: ICoreSytm) => this.toggleThemeStatus(item)\n };\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n /**\n * Initialize component\n */\n private initializeComponent(): void {\n // Get page information from route\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n console.log('🔍 Query params:', params);\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n\n this.pageId.set(queryData?.sypg_id || '');\n this.pageTitle.set(queryData?.sypg_title || '');\n\n if (this.pageId()) {\n this.loadThemes();\n this.setupFormSubscriptions();\n } else {\n this.error.set('No page ID provided');\n }\n });\n }\n\n /**\n * Load themes from API\n */\n private loadThemes(): void {\n this.loading.set(true);\n this.error.set(null);\n\n const request: MSystemPagesTheme = {\n sytm_page_id_sypg: this.pageId()\n };\n\n this.themeService.getThemeList(request)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.themes.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load themes');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading themes:', error);\n this.error.set('Failed to load themes. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Setup form subscriptions\n */\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.themeForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(): void {\n this.gridConfig.update(config => ({\n ...config,\n data: this.themes()\n }));\n }\n\n /**\n * Get custom renderers for grid\n */\n\n\n /**\n * Get template renderers for grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return {\n themeDetailsRenderer: this.themeDetailsRendererTemplate(),\n themeStatusRenderer: this.themeStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n };\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSytm>): void {\n switch (event.type) {\n case 'pageChange':\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data && 'pageSize' in event.data) {\n this.currentPage.set(event.data['pageIndex'] as number);\n this.pageSize.set(event.data['pageSize'] as number);\n this.loadThemes();\n }\n break;\n case 'search':\n if (event.data && typeof event.data === 'string') {\n this.searchTerm.set(event.data);\n this.currentPage.set(1);\n this.loadThemes();\n }\n break;\n case 'refresh':\n this.loadThemes();\n break;\n case 'action':\n // Handle action events if needed\n console.log('Action event:', event);\n break;\n case 'rowClick':\n // Handle row click events if needed\n console.log('Row click event:', event);\n break;\n case 'sort':\n // Handle sort events if needed\n console.log('Sort event:', event);\n break;\n case 'export':\n // Handle export events if needed\n console.log('Export event:', event);\n break;\n case 'rowReorder':\n // Handle row reorder events if needed\n console.log('Row reorder event:', event);\n break;\n }\n }\n\n /**\n * Create new theme\n */\n createTheme(): void {\n if (!this.themeForm.valid) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.themeForm.getRawValue();\n const newTheme: MSystemPagesThemeInsertUpdatePayload = {\n sytm_title: formValue.sytm_title,\n sytm_desc: formValue.sytm_desc,\n sytm_theme_code: formValue.sytm_theme_code,\n sytm_preview_id_fm: formValue.sytm_preview_id_fm,\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: JSON.parse(formValue.sytm_configuration),\n sytm_sub_title: formValue.sytm_sub_title,\n sytm_entity_id_syen: formValue.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: Boolean(formValue.sytm_isselected),\n sytm_layout: {\n sytm_layout_sidebar: { status: Boolean(formValue.sytm_layout.sytm_layout_sidebar.status) },\n sytm_layout_header: { status: Boolean(formValue.sytm_layout.sytm_layout_header.status) },\n sytm_layout_footer: { status: Boolean(formValue.sytm_layout.sytm_layout_footer.status) },\n sytm_layout_breadcrumb: { status: Boolean(formValue.sytm_layout.sytm_layout_breadcrumb.status) },\n sytm_layout_console: { status: Boolean(formValue.sytm_layout.sytm_layout_console.status) },\n sytm_layout_request: { status: Boolean(formValue.sytm_layout.sytm_layout_request.status) },\n sytm_layout_drawer: formValue.sytm_layout.sytm_layout_drawer as ICoreSythDrawer[]\n },\n sytm_isactive: formValue.sytm_isactive\n };\n\n this.loading.set(true);\n this.themeService.createTheme(newTheme)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadThemes();\n console.log('✅ Theme created successfully');\n } else {\n console.error('❌ Failed to create theme:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error creating theme:', error);\n console.error('❌ Failed to create theme. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update existing theme\n */\n updateTheme(): void {\n if (!this.themeForm.valid || !this.editingThemeId()) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.themeForm.getRawValue();\n const updatedTheme: MSystemPagesThemeInsertUpdatePayload = {\n _id: this.editingThemeId() || '',\n sytm_title: formValue.sytm_title,\n sytm_desc: formValue.sytm_desc,\n sytm_theme_code: formValue.sytm_theme_code,\n sytm_preview_id_fm: formValue.sytm_preview_id_fm,\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: JSON.parse(formValue.sytm_configuration),\n sytm_sub_title: formValue.sytm_sub_title,\n sytm_entity_id_syen: formValue.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: Boolean(formValue.sytm_isselected),\n sytm_layout: {\n sytm_layout_sidebar: { status: Boolean(formValue.sytm_layout.sytm_layout_sidebar.status) },\n sytm_layout_header: { status: Boolean(formValue.sytm_layout.sytm_layout_header.status) },\n sytm_layout_footer: { status: Boolean(formValue.sytm_layout.sytm_layout_footer.status) },\n sytm_layout_breadcrumb: { status: Boolean(formValue.sytm_layout.sytm_layout_breadcrumb.status) },\n sytm_layout_console: { status: Boolean(formValue.sytm_layout.sytm_layout_console.status) },\n sytm_layout_request: { status: Boolean(formValue.sytm_layout.sytm_layout_request.status) },\n sytm_layout_drawer: formValue.sytm_layout.sytm_layout_drawer as ICoreSythDrawer[]\n },\n sytm_isactive: formValue.sytm_isactive\n };\n\n this.loading.set(true);\n this.themeService.updateTheme(updatedTheme)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadThemes();\n console.log('✅ Theme updated successfully');\n } else {\n console.error('❌ Failed to update theme:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error updating theme:', error);\n console.error('❌ Failed to update theme. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Edit theme\n */\n editTheme(theme: ICoreSytm): void {\n this.isEditMode.set(true);\n this.editingThemeId.set(theme._id || null);\n this.retrievedTheme.set(theme);\n\n this.themeForm.patchValue({\n sytm_title: theme.sytm_title || '',\n sytm_desc: theme.sytm_desc || '',\n sytm_theme_code: theme.sytm_theme_code || '',\n sytm_preview_id_fm: theme.sytm_preview_id_fm || '',\n sytm_sub_title: theme.sytm_sub_title || '',\n sytm_configuration: JSON.stringify(theme.sytm_configuration || {}, null, 2),\n sytm_entity_id_syen: theme.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: theme.sytm_isselected ?? false,\n sytm_layout: {\n sytm_layout_sidebar: { status: theme.sytm_layout?.sytm_layout_sidebar?.status ?? true },\n sytm_layout_header: { status: theme.sytm_layout?.sytm_layout_header?.status ?? true },\n sytm_layout_footer: { status: theme.sytm_layout?.sytm_layout_footer?.status ?? false },\n sytm_layout_breadcrumb: { status: theme.sytm_layout?.sytm_layout_breadcrumb?.status ?? true },\n sytm_layout_console: { status: theme.sytm_layout?.sytm_layout_console?.status ?? false },\n sytm_layout_request: { status: theme.sytm_layout?.sytm_layout_request?.status ?? false },\n sytm_layout_drawer: theme.sytm_layout?.sytm_layout_drawer || []\n },\n sytm_isactive: theme.sytm_isactive ?? true\n });\n\n // Rebuild drawer array controls from data\n while (this.drawerArray.length) {\n this.drawerArray.removeAt(0);\n }\n (theme.sytm_layout?.sytm_layout_drawer || []).forEach(d => {\n this.drawerArray.push(this.createDrawerGroup({\n syth_status: d?.syth_status ?? true,\n syth_config_syco_for: d?.syth_config_syco_for ?? 'drawer_notes'\n }));\n });\n\n this.themeForm.markAsPristine();\n }\n\n /**\n * Delete theme\n */\n deleteTheme(theme: ICoreSytm): void {\n if (confirm(`Are you sure you want to delete the theme \"${theme.sytm_title}\"?`)) {\n this.loading.set(true);\n this.themeService.deleteTheme(theme._id || '')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadThemes();\n console.log('✅ Theme deleted successfully');\n } else {\n console.error('❌ Failed to delete theme:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error deleting theme:', error);\n console.error('❌ Failed to delete theme. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle theme status\n */\n toggleThemeStatus(theme: ICoreSytm): void {\n this.loading.set(true);\n this.themeService.toggleThemeStatus({ sytm_id: theme._id || '', sytm_isactive: !theme.sytm_isactive })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadThemes();\n console.log(`✅ Theme ${theme.sytm_isactive ? 'deactivated' : 'activated'} successfully`);\n } else {\n console.error('❌ Failed to toggle theme status:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error toggling theme status:', error);\n console.error('❌ Failed to toggle theme status. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Save theme (create or update)\n */\n saveTheme(): void {\n if (this.isEditMode()) {\n this.updateTheme();\n } else {\n this.createTheme();\n }\n }\n\n /**\n * Cancel form\n */\n cancelForm(): void {\n this.resetForm();\n }\n\n /**\n * Go back to page list\n */\n goBack(): void {\n this.router.navigate(['/core/page']);\n }\n\n /**\n * Reset form\n */\n private resetForm(): void {\n this.themeForm.reset({\n sytm_title: '',\n sytm_desc: '',\n sytm_theme_code: '',\n sytm_preview_id_fm: '',\n sytm_sub_title: '',\n sytm_configuration: '{}',\n sytm_entity_id_syen: '',\n sytm_isselected: false,\n sytm_layout: {\n sytm_layout_sidebar: { status: true },\n sytm_layout_header: { status: true },\n sytm_layout_footer: { status: false },\n sytm_layout_breadcrumb: { status: true },\n sytm_layout_console: { status: false },\n sytm_layout_request: { status: false },\n sytm_layout_drawer: [] as ICoreSythDrawer[]\n },\n sytm_isactive: true\n });\n\n // Explicitly clear the FormArray for drawers\n while (this.drawerArray.length) {\n this.drawerArray.removeAt(0);\n }\n\n this.isEditMode.set(false);\n this.editingThemeId.set(null);\n this.retrievedTheme.set(null);\n this.themeForm.markAsPristine();\n this.themeForm.markAsUntouched();\n }\n\n /**\n * Mark form as touched to trigger validation display\n */\n private markFormAsTouched(): void {\n Object.keys(this.themeForm.controls).forEach(key => {\n const control = this.themeForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Get dropdown items for actions\n */\n getActionDropdownItems(theme: ICoreSytm): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n disabled: false\n },\n {\n id: 'toggle',\n label: theme.sytm_isactive ? 'Deactivate' : 'Activate',\n icon: theme.sytm_isactive ? 'block' : 'check_circle',\n disabled: false\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n disabled: false\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n * This method handles clicks on dropdown menu items in the actions column\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSytm): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n console.log('🔵 Calling editTheme with:', row);\n this.editTheme(row);\n break;\n case 'toggle':\n console.log('🔵 Calling toggleThemeStatus with:', row);\n this.toggleThemeStatus(row);\n break;\n case 'delete':\n console.log('🔵 Calling deleteTheme with:', row);\n this.deleteTheme(row);\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n // Close all dropdowns after action\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n // Close all dropdowns by clicking outside\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n // ===== Drawer (sytm_layout_drawer) helpers =====\n drawerConfigOptions = [\n { value: 'drawer_notes', label: 'Drawer Notes' },\n { value: 'drawer_theme', label: 'Drawer Theme' }\n ];\n\n get drawerArray(): FormArray<FormGroup> {\n return this.themeForm.get('sytm_layout.sytm_layout_drawer') as unknown as FormArray<FormGroup>;\n }\n\n private createDrawerGroup(drawer?: Partial<ICoreSythDrawer>): FormGroup {\n return this.fb.group({\n syth_status: [drawer?.syth_status ?? true],\n syth_config_syco_for: [drawer?.syth_config_syco_for ?? 'drawer_notes']\n }) as unknown as FormGroup;\n }\n\n addDrawer(): void {\n this.drawerArray.push(this.createDrawerGroup());\n this.themeForm.markAsDirty();\n }\n\n removeDrawer(index: number): void {\n if (index >= 0 && index < this.drawerArray.length) {\n this.drawerArray.removeAt(index);\n this.themeForm.markAsDirty();\n }\n }\n\n /**\n * Set selected theme (only one can be selected per page)\n */\n setSelectedTheme(theme: ICoreSytm): void {\n if (!theme || theme.sytm_isselected) return; // already selected\n\n const previouslySelected = this.themes().find(t => t.sytm_isselected && t._id !== theme._id);\n\n // Disable previous selection (best-effort)\n if (previouslySelected) {\n const disablePayload: MSystemPagesThemeInsertUpdatePayload = {\n _id: previouslySelected._id || '',\n sytm_title: previouslySelected.sytm_title || '',\n sytm_desc: previouslySelected.sytm_desc || '',\n sytm_theme_code: previouslySelected.sytm_theme_code || '',\n sytm_preview_id_fm: previouslySelected.sytm_preview_id_fm || '',\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: previouslySelected.sytm_configuration || {},\n sytm_sub_title: previouslySelected.sytm_sub_title || '',\n sytm_entity_id_syen: previouslySelected.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: false,\n sytm_layout: previouslySelected.sytm_layout,\n sytm_isactive: previouslySelected.sytm_isactive ?? true\n };\n this.themeService.updateTheme(disablePayload).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({ next: () => {}, error: () => {} });\n }\n\n // Enable current selection\n const enablePayload: MSystemPagesThemeInsertUpdatePayload = {\n _id: theme._id || '',\n sytm_title: theme.sytm_title || '',\n sytm_desc: theme.sytm_desc || '',\n sytm_theme_code: theme.sytm_theme_code || '',\n sytm_preview_id_fm: theme.sytm_preview_id_fm || '',\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: theme.sytm_configuration || {},\n sytm_sub_title: theme.sytm_sub_title || '',\n sytm_entity_id_syen: theme.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: true,\n sytm_layout: theme.sytm_layout,\n sytm_isactive: theme.sytm_isactive ?? true\n };\n\n this.loading.set(true);\n this.themeService.updateTheme(enablePayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => { this.loadThemes(); this.loading.set(false); },\n error: () => { this.loading.set(false); }\n });\n }\n}","<!-- Page Theme Container -->\r\n<div class=\"tw-flex tw-h-full tw-w-full\">\r\n \r\n <!-- Left: Form and header (60%) -->\r\n <div class=\"tw-w-full lg:tw-w-3/5 tw-flex tw-flex-col tw-border-r tw-border-gray-200\">\r\n\r\n <!-- Header Section -->\r\n <div class=\"tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\r\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\r\n\r\n <!-- Title and Back Button -->\r\n <div class=\"tw-flex tw-items-center tw-space-x-4\">\r\n <button cideEleButton variant=\"ghost\" size=\"sm\" (click)=\"goBack()\" class=\"tw-text-gray-600 hover:tw-text-gray-900\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">arrow_back</cide-ele-icon>\r\n </button>\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">palette</cide-ele-icon>\r\n <div>\r\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Theme Management</h5>\r\n <p class=\"tw-text-sm tw-text-gray-500 tw-m-0\">Page: {{ pageTitle() }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Error Message -->\r\n @if (error()) {\r\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\r\n <div class=\"tw-flex tw-items-start\">\r\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\r\n <div class=\"tw-ml-3\">\r\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\r\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Quick Add/Edit Form Section -->\r\n <div class=\"tw-px-6 tw-py-4 tw-bg-white tw-overflow-auto\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-3\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\r\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Theme' : 'Quick Add Theme' }}</h6>\r\n </div>\r\n </div>\r\n\r\n <!-- Form (kept as-is) -->\r\n <form [formGroup]=\"themeForm\" (ngSubmit)=\"saveTheme()\" class=\"tw-space-y-4\">\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3 tw-gap-4\">\r\n <!-- Theme Title -->\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input id=\"sytm_title\" formControlName=\"sytm_title\" placeholder=\"Enter theme title\" label=\"Theme Title*\" size=\"sm\"></cide-ele-input>\r\n </div>\r\n <!-- Theme Code -->\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input id=\"sytm_theme_code\" formControlName=\"sytm_theme_code\" placeholder=\"Enter theme code\" label=\"Theme Code*\" size=\"sm\"></cide-ele-input>\r\n </div>\r\n <!-- Status -->\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input\r\n id=\"sytm_isactive_cb\"\r\n type=\"checkbox\"\r\n label=\"Active\"\r\n size=\"sm\"\r\n formControlName=\"sytm_isactive\">\r\n </cide-ele-input>\r\n </div>\r\n <!-- Sub Title -->\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input id=\"sytm_sub_title\" formControlName=\"sytm_sub_title\" placeholder=\"Enter sub title\" label=\"Sub Title\" size=\"sm\"></cide-ele-input>\r\n </div>\r\n <!-- Preview ID -->\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input id=\"sytm_preview_id_fm\" formControlName=\"sytm_preview_id_fm\" placeholder=\"Enter preview image ID\" label=\"Preview Image ID\" size=\"sm\"></cide-ele-input>\r\n </div>\r\n <!-- Description -->\r\n <div class=\"tw-space-y-2 md:tw-col-span-2\">\r\n <cide-ele-textarea id=\"sytm_desc\" formControlName=\"sytm_desc\" placeholder=\"Enter theme description\" rows=\"2\" label=\"Description\" size=\"sm\"></cide-ele-textarea>\r\n </div>\r\n <!-- Configuration JSON -->\r\n <div class=\"tw-space-y-2 md:tw-col-span-3\">\r\n <cide-ele-json-editor label=\"Configuration JSON\" formControlName=\"sytm_configuration\" [required]=\"true\" [config]=\"{\r\n showLineNumbers: true,\r\n autoFormat: true,\r\n validateOnChange: true,\r\n minHeight: 150,\r\n maxHeight: 300,\r\n placeholder: 'Enter theme configuration JSON...'\r\n }\" helperText=\"Enter valid JSON configuration for the theme\"></cide-ele-json-editor>\r\n </div>\r\n <!-- Layout Configuration + Selection: right-side checkbox list -->\r\n <div class=\"lg:tw-col-span-1 tw-space-y-2\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Layout & Selection</div>\r\n <!-- Selected toggle -->\r\n <div class=\"tw-bg-white tw-border tw-border-gray-200 tw-rounded-md tw-px-3 tw-py-2\">\r\n <cide-ele-input\r\n id=\"sytm_isselected\"\r\n type=\"checkbox\"\r\n label=\"Selected (Default)\"\r\n size=\"sm\"\r\n formControlName=\"sytm_isselected\">\r\n </cide-ele-input>\r\n </div>\r\n <div formGroupName=\"sytm_layout\" class=\"tw-bg-white tw-border tw-border-gray-200 tw-rounded-md tw-divide-y tw-overflow-hidden\">\r\n <!-- Sidebar -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_sidebar\">\r\n <cide-ele-input id=\"layout_sidebar_status\" type=\"checkbox\" label=\"Sidebar\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Header -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_header\">\r\n <cide-ele-input id=\"layout_header_status\" type=\"checkbox\" label=\"Header\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Footer -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_footer\">\r\n <cide-ele-input id=\"layout_footer_status\" type=\"checkbox\" label=\"Footer\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Breadcrumb -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_breadcrumb\">\r\n <cide-ele-input id=\"layout_breadcrumb_status\" type=\"checkbox\" label=\"Breadcrumb\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Console -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_console\">\r\n <cide-ele-input id=\"layout_console_status\" type=\"checkbox\" label=\"Console\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Request -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_request\">\r\n <cide-ele-input id=\"layout_request_status\" type=\"checkbox\" label=\"Request\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n </div>\r\n <p class=\"tw-text-xs tw-text-gray-500 tw-pt-1\">Toggle active sections. Only one theme can be selected as default. More options can be added here later.</p>\r\n </div>\r\n <!-- Drawer Configuration -->\r\n <div class=\"tw-space-y-2 md:tw-col-span-3\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Drawers</div>\r\n <button cideEleButton type=\"button\" size=\"xs\" variant=\"outline\" (click)=\"addDrawer()\">\r\n Add Drawer\r\n </button>\r\n </div>\r\n\r\n <div formGroupName=\"sytm_layout\">\r\n <div class=\"tw-space-y-2\" formArrayName=\"sytm_layout_drawer\">\r\n <div *ngFor=\"let drawerGrp of drawerArray.controls; let i = index\" [formGroupName]=\"i\" class=\"tw-border tw-border-gray-200 tw-rounded-md tw-p-3 tw-flex tw-items-center tw-gap-3\">\r\n <cide-ele-input id=\"drawer_active_{{i}}\" type=\"checkbox\" label=\"Active\" size=\"sm\" formControlName=\"syth_status\"></cide-ele-input>\r\n <div class=\"tw-flex-1\">\r\n <cide-ele-select\r\n id=\"drawer_config_{{i}}\"\r\n label=\"Drawer For\"\r\n size=\"sm\"\r\n [options]=\"drawerConfigOptions\"\r\n formControlName=\"syth_config_syco_for\">\r\n </cide-ele-select>\r\n </div>\r\n <button cideEleButton type=\"button\" size=\"xs\" variant=\"ghost\" (click)=\"removeDrawer(i)\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">delete</cide-ele-icon>\r\n </button>\r\n </div>\r\n <p class=\"tw-text-xs tw-text-gray-500\">Configure multiple drawers as needed.</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Form Actions -->\r\n <div class=\"tw-flex tw-flex-col tw-gap-2 tw-pt-4 tw-border-t tw-border-gray-200\">\r\n <div class=\"tw-flex tw-items-center tw-justify-end tw-space-x-3\">\r\n <button cideEleButton type=\"button\" variant=\"outline\" (click)=\"cancelForm()\" [disabled]=\"loading()\">Cancel</button>\r\n <button cideEleButton type=\"submit\" variant=\"primary\" leftIcon=\"add\" [disabled]=\"!themeForm.valid || loading()\" [loading]=\"loading()\">\r\n {{ isEditMode() ? 'Update Theme' : 'Create Theme' }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: Theme gallery (40%) -->\r\n <div class=\"tw-hidden lg:tw-flex tw-w-2/5 tw-flex-col\">\r\n <!-- (Header consolidated above) -->\r\n\r\n <!-- Gallery list -->\r\n <div class=\"tw-flex-1 tw-overflow-auto tw-bg-gray-50\">\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-3 tw-p-4\">\r\n @for (theme of filteredThemes(); track theme._id) {\r\n <div class=\"tw-rounded-md tw-transition tw-cursor-pointer tw-relative\"\r\n [ngClass]=\"theme.sytm_isselected\r\n ? 'tw-border tw-border-blue-500 tw-ring-2 tw-ring-blue-200 tw-bg-blue-50/50'\r\n : 'tw-bg-white tw-border tw-border-gray-200 hover:tw-shadow-sm'\"\r\n (click)=\"editTheme(theme)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-selected]=\"theme.sytm_isselected ? 'true' : 'false'\"\r\n [attr.aria-label]=\"'Edit theme ' + (theme.sytm_title || theme.sytm_theme_code)\"\r\n (keydown.enter)=\"editTheme(theme)\"\r\n (keydown.space)=\"$event.preventDefault(); editTheme(theme)\">\r\n\r\n <!-- Selected badge -->\r\n <div *ngIf=\"theme.sytm_isselected\"\r\n class=\"tw-absolute tw-top-2 tw-right-2 tw-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-full tw-bg-blue-600 tw-text-white\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">check</cide-ele-icon>\r\n </div>\r\n \r\n <div class=\"tw-aspect-[16/9] tw-bg-gray-100 tw-rounded-t-md tw-overflow-hidden tw-flex tw-items-center tw-justify-center\">\r\n @if (getPreviewUrl(theme)) {\r\n <img [src]=\"getPreviewUrl(theme)\" class=\"tw-w-full tw-h-full tw-object-cover\" alt=\"Preview\" />\r\n } @else {\r\n <div class=\"tw-text-gray-400 tw-text-xs\">No preview</div>\r\n }\r\n </div>\r\n <div class=\"tw-p-3 tw-space-y-1\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" [title]=\"theme.sytm_title\">{{ theme.sytm_title || 'Untitled Theme' }}</div>\r\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" [title]=\"theme.sytm_theme_code\">{{ theme.sytm_theme_code }}</div>\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-pt-1\">\r\n <span class=\"tw-inline-flex tw-items-center tw-gap-1 tw-text-xs\" [ngClass]=\"theme.sytm_isactive ? 'tw-text-green-700' : 'tw-text-red-700'\">\r\n <span class=\"tw-w-1.5 tw-h-1.5 tw-rounded-full\" [ngClass]=\"theme.sytm_isactive ? 'tw-bg-green-500' : 'tw-bg-red-500'\"></span>\r\n {{ theme.sytm_isactive ? 'Active' : 'Inactive' }}\r\n </span>\r\n <div class=\"tw-flex tw-items-center tw-gap-1\">\r\n <!-- Set Selected Button - Clear and Simple -->\r\n @if (theme.sytm_isselected) {\r\n <span class=\"tw-inline-flex tw-items-center tw-gap-1 tw-px-2 tw-py-1 tw-bg-green-100 tw-text-green-800 tw-rounded-md tw-text-xs tw-font-medium\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3\">check</cide-ele-icon>\r\n Selected\r\n </span>\r\n } @else {\r\n <button cideEleButton \r\n variant=\"outline\" \r\n size=\"xs\"\r\n (click)=\"$event.stopPropagation(); setSelectedTheme(theme)\"\r\n [attr.aria-label]=\"'Select ' + (theme.sytm_title || theme.sytm_theme_code) + ' theme'\"\r\n class=\"tw-text-xs\">\r\n Select\r\n </button>\r\n }\r\n <button cideEleButton variant=\"ghost\" size=\"xs\" (click)=\"$event.stopPropagation(); editTheme(theme)\"\r\n [attr.aria-label]=\"'Edit theme ' + (theme.sytm_title || theme.sytm_theme_code)\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">edit</cide-ele-icon>\r\n </button>\r\n <button cideEleButton variant=\"ghost\" size=\"xs\" (click)=\"$event.stopPropagation(); deleteTheme(theme)\"\r\n [attr.aria-label]=\"'Delete theme ' + (theme.sytm_title || theme.sytm_theme_code)\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">delete</cide-ele-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!loading() && filteredThemes().length === 0) {\r\n <div class=\"tw-col-span-full tw-text-center tw-text-xs tw-text-gray-500 tw-py-8\">No themes found</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- \r\n Angular Template References for Grid Renderers (Best Practice)\r\n \r\n These ng-template elements represent the Angular best practice for custom rendering.\r\n They provide:\r\n - Type safety with template context\r\n - Component lifecycle integration\r\n - Change detection optimization\r\n - Proper event handling\r\n - Accessibility features\r\n \r\n Note: Current data grid uses string renderers for compatibility.\r\n Templates are maintained for future component enhancement.\r\n-->\r\n\r\n<!-- Theme Details Renderer Template -->\r\n<ng-template #themeDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\r\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\r\n <!-- Theme Icon -->\r\n <div class=\"tw-flex-shrink-0\">\r\n <cide-ele-icon \r\n class=\"tw-text-purple-600\" \r\n size=\"xs\">\r\n palette\r\n </cide-ele-icon>\r\n </div>\r\n \r\n <!-- Theme Details -->\r\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \r\n [title]=\"row.sytm_title\">\r\n {{ row.sytm_title || 'Untitled' }}\r\n </div>\r\n @if (row.sytm_desc) {\r\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \r\n [title]=\"row.sytm_desc\">\r\n {{ row.sytm_desc }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Theme Status Renderer Template -->\r\n<ng-template #themeStatusRendererTemplate let-row=\"row\" let-value=\"value\">\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\r\n [ngClass]=\"row.sytm_isactive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800'\">\r\n {{ row.sytm_isactive ? 'Active' : 'Inactive' }}\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Actions Dropdown Renderer Template -->\r\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\r\n <cide-ele-dropdown \r\n [items]=\"getActionDropdownItems(row)\"\r\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\r\n (itemClick)=\"onDropdownItemClick($event, row)\">\r\n </cide-ele-dropdown>\r\n</ng-template> ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl,\r\n MPageElements,\r\n MPageElementsGetByIdPayload,\r\n MPageElementsDeletePayload,\r\n MPageElementsInsertUpdatePayload,\r\n MPageElementsToggleStatusPayload,\r\n MPageElementsByPageIdPayload,\r\n MPageElementsMappingDeletePayload,\r\n MPageElementsMappingInsertUpdatePayload,\r\n MPageElementsMappingByPageIdPayload,\r\n pageElementsControllerResponse,\r\n pageElementsByIdControllerResponse,\r\n pageElementsInsertUpdateControllerResponse,\r\n pageElementsDeleteControllerResponse,\r\n pageElementsToggleStatusControllerResponse,\r\n pageElementsByPageIdControllerResponse,\r\n pageElementsMappingInsertUpdateControllerResponse,\r\n pageElementsMappingDeleteControllerResponse,\r\n pageElementsMappingByPageIdControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageControlsService {\r\n constructor(private http: HttpClient) {\r\n console.log('PageControlsService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get control list from API\r\n */\r\n getControlList(body: MPageElements): Observable<pageElementsControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<pageElementsControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, query]))\r\n .pipe(\r\n catchError(error => {\r\n console.error('PageControlsService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Create new control\r\n */\r\n createControl(payload: MPageElementsInsertUpdatePayload): Observable<pageElementsInsertUpdateControllerResponse> {\r\n console.log('Creating control:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl]);\r\n return this.http.post<pageElementsInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing control\r\n */\r\n updateControl(payload: MPageElementsInsertUpdatePayload): Observable<pageElementsInsertUpdateControllerResponse> {\r\n console.log('Updating control:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl]);\r\n return this.http.post<pageElementsInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get control by ID\r\n */\r\n getControlById(id: string): Observable<pageElementsByIdControllerResponse> {\r\n console.log('Getting control by ID:', id);\r\n const payload: MPageElementsGetByIdPayload = { sype_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, 'byId', query]);\r\n return this.http.get<pageElementsByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get controls by page ID\r\n */\r\n getControlsByPageId(pageId: string): Observable<pageElementsByPageIdControllerResponse> {\r\n console.log('Getting controls by page ID:', pageId);\r\n const payload: MPageElementsByPageIdPayload = { sype_page_id_sypg: pageId };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, 'byPage', query]);\r\n return this.http.get<pageElementsByPageIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get control mappings by page ID\r\n */\r\n getControlMappingsByPageId(pageId: string): Observable<pageElementsMappingByPageIdControllerResponse> {\r\n console.log('Getting control mappings by page ID:', pageId);\r\n const payload: MPageElementsMappingByPageIdPayload = { sypem_id_sypg: pageId };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControlMapping, query]);\r\n return this.http.get<pageElementsMappingByPageIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Create control mapping\r\n */\r\n createControlMapping(payload: MPageElementsMappingInsertUpdatePayload): Observable<pageElementsMappingInsertUpdateControllerResponse> {\r\n console.log('Creating control mapping:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControlMapping]);\r\n return this.http.post<pageElementsMappingInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete control mapping\r\n */\r\n deleteControlMapping(id: string): Observable<pageElementsMappingDeleteControllerResponse> {\r\n const payload: MPageElementsMappingDeletePayload = { sypem_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControlMapping, query]);\r\n return this.http.delete<pageElementsMappingDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete control\r\n */\r\n deleteControl(id: string): Observable<pageElementsDeleteControllerResponse> {\r\n const payload: MPageElementsDeletePayload = { sype_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, query]);\r\n return this.http.delete<pageElementsDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle control active status\r\n */\r\n toggleControlStatus(payload: MPageElementsToggleStatusPayload): Observable<pageElementsToggleStatusControllerResponse> {\r\n console.log('Toggling control status:', payload);\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, query]);\r\n return this.http.put<pageElementsToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Page Controls Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, DestroyRef, inject, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { PageControlsService } from '../../services/page-controls.service';\r\nimport { AppStateHelperService } from 'cloud-ide-layout';\r\nimport { CideEleButtonComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideEleDropdownComponent, DropdownItem } from 'cloud-ide-element';\r\nimport { controlType, generateObjectFromString, ICoreSype, MPageElements, MPageElementsInsertUpdatePayload, themeSize } from 'cloud-ide-lms-model';\r\n\r\n@Component({\r\n selector: 'cide-core-app-page-controls',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CideEleButtonComponent,\r\n CideInputComponent,\r\n CideSelectComponent,\r\n CideIconComponent,\r\n CideEleDropdownComponent\r\n ],\r\n templateUrl: './page-controls.component.html',\r\n styleUrls: ['./page-controls.component.scss']\r\n})\r\nexport class PageControlsComponent implements OnInit {\r\n // Dependency injection\r\n private destroyRef = inject(DestroyRef);\r\n private controlsService = inject(PageControlsService);\r\n private appState = inject(AppStateHelperService);\r\n private fb = inject(NonNullableFormBuilder);\r\n private router = inject(Router);\r\n private route = inject(ActivatedRoute);\r\n\r\n\r\n\r\n // Make Math available in template\r\n Math = Math;\r\n\r\n // Signals for reactive state management\r\n controls = signal<ICoreSype[]>([]);\r\n loading = signal(false);\r\n error = signal<string | null>(null);\r\n selectedItems = signal<string[]>([]);\r\n searchTerm = signal('');\r\n\r\n // Page information\r\n pageId = signal<string>('');\r\n pageTitle = signal<string>('');\r\n\r\n // Form state\r\n isEditMode = signal(false);\r\n editingControlId = signal<string | null>(null);\r\n retrievedControl = signal<ICoreSype | null>(null);\r\n\r\n // Control selection for new layout\r\n selectedControlId = signal<string | null>(null);\r\n\r\n // Pagination signals\r\n currentPage = signal(1);\r\n pageSize = signal(10);\r\n totalItems = signal(0);\r\n\r\n // Modern reactive forms with signals - No validators for simplicity\r\n controlForm = this.fb.group({\r\n sype_key: [''],\r\n sype_label: [''],\r\n sype_label_hide: [false],\r\n sype_auto_complete: [false], // Changed to boolean for checkbox\r\n sype_hide_helper_and_error_text: [false],\r\n sype_type: [''], // controlType\r\n sype_option_key: [''],\r\n sype_placeholder: [''],\r\n sype_min_length: [0],\r\n sype_max_length: [20],\r\n sype_regex: [''],\r\n sype_required: [false],\r\n sype_disabled: [false],\r\n sype_width: [''], // Changed to string for px values like \"20px\"\r\n sype_height: [''], // Changed to string for px values like \"20px\"\r\n sype_label_placement: ['left' as 'floating' | 'fixed'],\r\n sype_helper_text_collapse: [false],\r\n sype_default: ['' as string | number | boolean],\r\n sype_tooltip: [''],\r\n sype_size: ['sm' as themeSize], // Changed default to small\r\n sype_leading_icon: [''],\r\n sype_isactive: [true],\r\n sype_entity_id_syen: ['']\r\n });\r\n\r\n // Computed values\r\n isFormDirty = computed(() => this.controlForm.dirty);\r\n\r\n\r\n\r\n ngOnInit(): void {\r\n this.initializeComponent();\r\n }\r\n\r\n /**\r\n * Initialize component\r\n */\r\n private initializeComponent(): void {\r\n // Get page information from route\r\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\r\n const queryParams = params['query'];\r\n const queryData = generateObjectFromString(queryParams);\r\n this.pageId.set(queryData?.sypg_id || '');\r\n this.pageTitle.set(queryData?.sypg_title || '');\r\n\r\n if (this.pageId()) {\r\n this.loadControls();\r\n this.setupFormSubscriptions();\r\n this.setEntityIdFromAppState();\r\n } else {\r\n this.error.set('No page ID provided');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Set entity ID from app state - auto-assigned internally\r\n */\r\n private setEntityIdFromAppState(): void {\r\n const entityId = this.appState.getActiveEntityId();\r\n if (entityId) {\r\n this.controlForm.patchValue({\r\n sype_entity_id_syen: entityId\r\n });\r\n // Disable the entity field since it's auto-assigned\r\n this.controlForm.get('sype_entity_id_syen')?.disable();\r\n }\r\n }\r\n\r\n /**\r\n * Load controls from API\r\n */\r\n private loadControls(): void {\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n const request: MPageElements = {\r\n sype_page_id_sypg: this.pageId()\r\n };\r\n\r\n this.controlsService.getControlList(request)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response.success) {\r\n this.controls.set(response.data || []);\r\n this.totalItems.set(response.total || 0);\r\n } else {\r\n this.error.set(response.message || 'Failed to load controls');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error loading controls:', error);\r\n this.error.set('Failed to load controls. Please try again.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Setup form subscriptions\r\n */\r\n private setupFormSubscriptions(): void {\r\n // Watch for form changes to enable/disable save button\r\n this.controlForm.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n // Form validation is handled by computed signals\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Create new control\r\n */\r\n createControl(): void {\r\n\r\n const formValue = this.controlForm.getRawValue();\r\n const entityId = this.appState.getActiveEntityId();\r\n\r\n const newControl: MPageElementsInsertUpdatePayload = {\r\n _id: '',\r\n sype_key: formValue.sype_key,\r\n sype_page_id_sypg: this.pageId(),\r\n sype_label: formValue.sype_label,\r\n sype_label_hide: formValue.sype_label_hide,\r\n sype_auto_complete: formValue.sype_auto_complete,\r\n sype_hide_helper_and_error_text: formValue.sype_hide_helper_and_error_text,\r\n sype_type: formValue.sype_type as controlType,\r\n sype_option_key: formValue.sype_option_key,\r\n sype_placeholder: formValue.sype_placeholder,\r\n sype_min_length: formValue.sype_min_length,\r\n sype_max_length: formValue.sype_max_length,\r\n sype_regex: formValue.sype_regex,\r\n sype_required: formValue.sype_required,\r\n sype_disabled: formValue.sype_disabled,\r\n sype_width: formValue.sype_width,\r\n sype_height: formValue.sype_height,\r\n sype_label_placement: formValue.sype_label_placement,\r\n sype_helper_text_collapse: formValue.sype_helper_text_collapse,\r\n sype_default: formValue.sype_default,\r\n sype_tooltip: formValue.sype_tooltip,\r\n sype_size: formValue.sype_size,\r\n sype_leading_icon: formValue.sype_leading_icon,\r\n sype_isactive: formValue.sype_isactive,\r\n sype_entity_id_syen: entityId || formValue.sype_entity_id_syen\r\n };\r\n\r\n this.loading.set(true);\r\n this.controlsService.createControl(newControl)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response.success) {\r\n this.resetForm();\r\n this.loadControls();\r\n console.log('Control created successfully');\r\n } else {\r\n console.error(response.message || 'Failed to create control');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error creating control:', error);\r\n console.error('Failed to create control. Please try again.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Update existing control\r\n */\r\n updateControl(): void {\r\n if (!this.editingControlId()) {\r\n return;\r\n }\r\n\r\n const formValue = this.controlForm.getRawValue();\r\n const entityId = this.appState.getActiveEntityId();\r\n\r\n const updatedControl: MPageElementsInsertUpdatePayload = {\r\n _id: this.editingControlId()!,\r\n sype_key: formValue.sype_key,\r\n sype_page_id_sypg: this.pageId(),\r\n sype_label: formValue.sype_label,\r\n sype_label_hide: formValue.sype_label_hide,\r\n sype_auto_complete: Boolean(formValue.sype_auto_complete),\r\n sype_hide_helper_and_error_text: formValue.sype_hide_helper_and_error_text,\r\n sype_type: formValue.sype_type as controlType,\r\n sype_option_key: formValue.sype_option_key,\r\n sype_placeholder: formValue.sype_placeholder,\r\n sype_min_length: formValue.sype_min_length,\r\n sype_max_length: formValue.sype_max_length,\r\n sype_regex: formValue.sype_regex,\r\n sype_required: formValue.sype_required,\r\n sype_disabled: formValue.sype_disabled,\r\n sype_width: formValue.sype_width,\r\n sype_height: formValue.sype_height,\r\n sype_label_placement: formValue.sype_label_placement,\r\n sype_helper_text_collapse: formValue.sype_helper_text_collapse,\r\n sype_default: formValue.sype_default,\r\n sype_tooltip: formValue.sype_tooltip,\r\n sype_size: formValue.sype_size,\r\n sype_leading_icon: formValue.sype_leading_icon,\r\n sype_isactive: formValue.sype_isactive,\r\n sype_entity_id_syen: entityId || formValue.sype_entity_id_syen\r\n };\r\n\r\n this.loading.set(true);\r\n this.controlsService.updateControl(updatedControl)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response.success) {\r\n this.resetForm();\r\n this.loadControls();\r\n console.log('Control updated successfully');\r\n } else {\r\n console.error(response.message || 'Failed to update control');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error updating control:', error);\r\n console.error('Failed to update control. Please try again.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Edit control\r\n */\r\n editControl(control: ICoreSype): void {\r\n this.isEditMode.set(true);\r\n this.editingControlId.set(control._id || null);\r\n this.retrievedControl.set(control);\r\n\r\n this.controlForm.patchValue({\r\n sype_key: control.sype_key,\r\n sype_label: control.sype_label,\r\n sype_label_hide: control.sype_label_hide,\r\n sype_auto_complete: control.sype_auto_complete ? true : false,\r\n sype_hide_helper_and_error_text: control.sype_hide_helper_and_error_text,\r\n sype_type: control.sype_type,\r\n sype_option_key: control.sype_option_key,\r\n sype_placeholder: control.sype_placeholder,\r\n sype_min_length: control.sype_min_length,\r\n sype_max_length: control.sype_max_length,\r\n sype_regex: control.sype_regex,\r\n sype_required: control.sype_required,\r\n sype_disabled: control.sype_disabled,\r\n sype_width: control.sype_width?.toString() || '',\r\n sype_height: control.sype_height?.toString() || '',\r\n sype_label_placement: control.sype_label_placement,\r\n sype_helper_text_collapse: control.sype_helper_text_collapse,\r\n sype_default: control.sype_default as string | number | boolean,\r\n sype_tooltip: control.sype_tooltip,\r\n sype_size: control.sype_size as themeSize,\r\n sype_leading_icon: control.sype_leading_icon,\r\n sype_isactive: control.sype_isactive,\r\n sype_entity_id_syen: String(control.sype_entity_id_syen || '')\r\n });\r\n\r\n this.controlForm.markAsPristine();\r\n }\r\n\r\n /**\r\n * Delete control\r\n */\r\n deleteControl(control: ICoreSype): void {\r\n if (confirm(`Are you sure you want to delete the control \"${control.sype_label}\"?`)) {\r\n this.loading.set(true);\r\n this.controlsService.deleteControl(control._id || '')\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response.success) {\r\n this.loadControls();\r\n console.log('Control deleted successfully');\r\n } else {\r\n console.error(response.message || 'Failed to delete control');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error deleting control:', error);\r\n console.error('Failed to delete control. Please try again.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Toggle control status\r\n */\r\n toggleControlStatus(control: ICoreSype): void {\r\n this.loading.set(true);\r\n this.controlsService.toggleControlStatus({ sype_id: control._id || '', sype_isactive: !control.sype_isactive })\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response.success) {\r\n this.loadControls();\r\n console.log(`Control ${control.sype_isactive ? 'deactivated' : 'activated'} successfully`);\r\n } else {\r\n console.error(response.message || 'Failed to toggle control status');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error toggling control status:', error);\r\n console.error('Failed to toggle control status. Please try again.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Save control (create or update)\r\n */\r\n saveControl(): void {\r\n if (this.isEditMode()) {\r\n this.updateControl();\r\n } else {\r\n this.createControl();\r\n }\r\n }\r\n\r\n /**\r\n * Cancel form\r\n */\r\n cancelForm(): void {\r\n this.resetForm();\r\n }\r\n\r\n /**\r\n * Go back to page list\r\n */\r\n goBack(): void {\r\n this.router.navigate(['/core/page']);\r\n }\r\n\r\n /**\r\n * Reset form\r\n */\r\n private resetForm(): void {\r\n const entityId = this.appState.getActiveEntityId();\r\n\r\n this.controlForm.reset({\r\n sype_key: '',\r\n sype_label: '',\r\n sype_label_hide: false,\r\n sype_auto_complete: false,\r\n sype_hide_helper_and_error_text: false,\r\n sype_type: '',\r\n sype_option_key: '',\r\n sype_placeholder: '',\r\n sype_min_length: 0,\r\n sype_max_length: 20,\r\n sype_regex: '',\r\n sype_required: false,\r\n sype_disabled: false,\r\n sype_width: '',\r\n sype_height: '',\r\n sype_label_placement: 'floating',\r\n sype_helper_text_collapse: false,\r\n sype_default: '' as string | number | boolean,\r\n sype_tooltip: '',\r\n sype_size: 'md',\r\n sype_leading_icon: '',\r\n sype_isactive: true,\r\n sype_entity_id_syen: entityId || ''\r\n });\r\n this.isEditMode.set(false);\r\n this.editingControlId.set(null);\r\n this.retrievedControl.set(null);\r\n this.controlForm.markAsPristine();\r\n this.controlForm.markAsUntouched();\r\n }\r\n\r\n /**\r\n * Mark form as touched to trigger validation display\r\n */\r\n private markFormAsTouched(): void {\r\n Object.keys(this.controlForm.controls).forEach(key => {\r\n const control = this.controlForm.get(key);\r\n control?.markAsTouched();\r\n });\r\n }\r\n\r\n /**\r\n * Get dropdown items for actions\r\n */\r\n getActionDropdownItems(control: ICoreSype): DropdownItem[] {\r\n return [\r\n {\r\n id: 'edit',\r\n label: 'Edit',\r\n icon: 'edit'\r\n },\r\n {\r\n id: 'toggle',\r\n label: control.sype_isactive ? 'Deactivate' : 'Activate',\r\n icon: control.sype_isactive ? 'block' : 'check_circle'\r\n },\r\n {\r\n id: 'delete',\r\n label: 'Delete',\r\n icon: 'delete'\r\n }\r\n ];\r\n }\r\n\r\n /**\r\n * Handle dropdown item click\r\n */\r\n onDropdownItemClick(item: DropdownItem, control: ICoreSype): void {\r\n switch (item.id) {\r\n case 'edit':\r\n this.editControl(control);\r\n break;\r\n case 'toggle':\r\n this.toggleControlStatus(control);\r\n break;\r\n case 'delete':\r\n this.deleteControl(control);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Close all dropdowns\r\n */\r\n closeAllDropdowns(): void {\r\n // This method can be used to close dropdowns if needed\r\n }\r\n\r\n // New methods for the vertical layout\r\n selectControl(control: ICoreSype): void {\r\n this.selectedControlId.set(control._id || null);\r\n console.log('Selected control:', control);\r\n }\r\n\r\n trackByControlId(index: number, control: ICoreSype): string {\r\n return control._id || '';\r\n }\r\n} ","<!-- Page Controls Container -->\n<div class=\"page-controls-container\">\n <!-- Header Section -->\n <div class=\"header\">\n <div class=\"header-content\">\n <div class=\"header-left\">\n <button \n cideEleButton\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"goBack()\"\n class=\"back-button\">\n <cide-ele-icon>arrow_back</cide-ele-icon>\n </button>\n <div class=\"title-section\">\n <cide-ele-icon class=\"title-icon\">settings</cide-ele-icon>\n <div>\n <h1 class=\"title\">Control Management</h1>\n <p class=\"subtitle\">Page: {{ pageTitle() }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Error Message -->\n <div class=\"error-message\" *ngIf=\"error()\">\n <cide-ele-icon>error</cide-ele-icon>\n <div>\n <h3>Error</h3>\n <p>{{ error() }}</p>\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Form Section -->\n <div class=\"form-section\">\n <div class=\"form-header\">\n <cide-ele-icon>{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h3>{{ isEditMode() ? 'Edit Control' : 'Quick Add Control' }}</h3>\n </div>\n\n <!-- Form -->\n <form [formGroup]=\"controlForm\" (ngSubmit)=\"saveControl()\" class=\"control-form tw-overflow-y-auto\">\n <div class=\"form-grid\">\n \n <!-- Basic Information Section -->\n <!-- Control Key -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_key\"\n formControlName=\"sype_key\"\n placeholder=\"Enter control key\"\n label=\"Control Key\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Control Label -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_label\"\n formControlName=\"sype_label\"\n placeholder=\"Enter control label\"\n label=\"Control Label\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Control Type -->\n <div class=\"form-group\">\n <cide-ele-select\n id=\"sype_type\"\n formControlName=\"sype_type\"\n [options]=\"[\n { value: 'text', label: 'Text Input' },\n { value: 'textarea', label: 'Text Area' },\n { value: 'select', label: 'Select' },\n { value: 'checkbox', label: 'Checkbox' },\n { value: 'radio', label: 'Radio' },\n { value: 'date', label: 'Date' },\n { value: 'number', label: 'Number' },\n { value: 'email', label: 'Email' },\n { value: 'password', label: 'Password' },\n { value: 'file', label: 'File Upload' }\n ]\"\n label=\"Control Type\"\n size=\"sm\">\n </cide-ele-select>\n </div>\n\n <!-- Status - Checkbox aligned properly -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_isactive\"\n type=\"checkbox\"\n formControlName=\"sype_isactive\"\n label=\"Active Status\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Placeholder -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_placeholder\"\n formControlName=\"sype_placeholder\"\n placeholder=\"Enter placeholder text\"\n label=\"Placeholder\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Auto Complete - Checkbox aligned properly -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_auto_complete\"\n type=\"checkbox\"\n formControlName=\"sype_auto_complete\"\n label=\"Auto Complete\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Tooltip -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_tooltip\"\n formControlName=\"sype_tooltip\"\n placeholder=\"Enter tooltip text\"\n label=\"Tooltip\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Validation & Sizing Section -->\n <!-- Min/Max Length - Side by side -->\n <div class=\"form-group form-group-row\">\n <div class=\"form-group-half\">\n <cide-ele-input\n id=\"sype_min_length\"\n type=\"number\"\n formControlName=\"sype_min_length\"\n placeholder=\"0\"\n label=\"Min Length\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n <div class=\"form-group-half\">\n <cide-ele-input\n id=\"sype_max_length\"\n type=\"number\"\n formControlName=\"sype_max_length\"\n placeholder=\"20\"\n label=\"Max Length\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Size & Label Placement - Side by side -->\n <div class=\"form-group form-group-row\">\n <div class=\"form-group-half\">\n <cide-ele-select\n id=\"sype_size\"\n formControlName=\"sype_size\"\n label=\"Size\"\n size=\"xs\"\n [options]=\"[\n { value: 'xs', label: 'XS' },\n { value: 'sm', label: 'SM' },\n { value: 'md', label: 'MD' },\n { value: 'lg', label: 'LG' },\n { value: 'xl', label: 'XL' },\n { value: 'xxl', label: 'XXL' }\n ]\">\n </cide-ele-select>\n </div>\n <div class=\"form-group-half\">\n <cide-ele-select\n id=\"sype_label_placement\"\n formControlName=\"sype_label_placement\"\n label=\"Label Placement\"\n size=\"xs\"\n [options]=\"[\n { value: 'left', label: 'Left' },\n { value: 'floating', label: 'Floating' },\n { value: 'fixed', label: 'Fixed' }\n ]\">\n </cide-ele-select>\n </div>\n </div>\n\n <!-- Width & Height - Side by side -->\n <div class=\"form-group form-group-row\">\n <div class=\"form-group-half\">\n <cide-ele-input\n id=\"sype_width\"\n type=\"text\"\n formControlName=\"sype_width\"\n placeholder=\"20px\"\n label=\"Width\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n <div class=\"form-group-half\">\n <cide-ele-input\n id=\"sype_height\"\n type=\"text\"\n formControlName=\"sype_height\"\n placeholder=\"20px\"\n label=\"Height\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Leading Icon -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_leading_icon\"\n formControlName=\"sype_leading_icon\"\n placeholder=\"Enter icon name\"\n label=\"Leading Icon\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Default Value -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_default\"\n formControlName=\"sype_default\"\n placeholder=\"Enter default value\"\n label=\"Default Value\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Regex Pattern -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_regex\"\n formControlName=\"sype_regex\"\n placeholder=\"Enter regex pattern\"\n label=\"Regex Pattern\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Option Key -->\n <div class=\"form-group\">\n <cide-ele-input\n id=\"sype_option_key\"\n formControlName=\"sype_option_key\"\n placeholder=\"Enter option key\"\n label=\"Option Key\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Entity ID (Auto-assigned from AppState) - Hidden -->\n <div class=\"form-group\" style=\"display: none;\">\n <cide-ele-input\n id=\"sype_entity_id_syen\"\n formControlName=\"sype_entity_id_syen\"\n placeholder=\"Auto-assigned from system\"\n label=\"Entity ID (Auto-assigned)\"\n size=\"sm\"\n readonly>\n </cide-ele-input>\n </div>\n\n <!-- Control Options -->\n <div class=\"form-group full-width\">\n <h6 class=\"options-title\">Control Options</h6>\n <div class=\"options-grid\">\n \n <!-- Required -->\n <div class=\"option-item\">\n <cide-ele-input\n id=\"sype_required\"\n type=\"checkbox\"\n formControlName=\"sype_required\"\n label=\"Required\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Disabled -->\n <div class=\"option-item\">\n <cide-ele-input\n id=\"sype_disabled\"\n type=\"checkbox\"\n formControlName=\"sype_disabled\"\n label=\"Disabled\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Hide Label -->\n <div class=\"option-item\">\n <cide-ele-input\n id=\"sype_label_hide\"\n type=\"checkbox\"\n formControlName=\"sype_label_hide\"\n label=\"Hide Label\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Hide Helper Text -->\n <div class=\"option-item\">\n <cide-ele-input\n id=\"sype_hide_helper_and_error_text\"\n type=\"checkbox\"\n formControlName=\"sype_hide_helper_and_error_text\"\n label=\"Hide Helper Text\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Helper Text Collapse -->\n <div class=\"option-item\">\n <cide-ele-input\n id=\"sype_helper_text_collapse\"\n type=\"checkbox\"\n formControlName=\"sype_helper_text_collapse\"\n label=\"Collapse Helper\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n </div>\n </div>\n\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <button \n cideEleButton\n type=\"button\"\n variant=\"outline\"\n (click)=\"cancelForm()\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n <button \n cideEleButton\n type=\"submit\"\n variant=\"primary\"\n [disabled]=\"loading()\">\n {{ isEditMode() ? 'Update Control' : 'Create Control' }}\n </button>\n </div>\n </form>\n </div>\n\n <!-- Controls List Section -->\n <div class=\"controls-list-section\">\n <div class=\"controls-header\">\n <h3>Page Controls</h3>\n <p>Controls connected to this page</p>\n </div>\n \n <div class=\"controls-list\" *ngIf=\"!loading() && controls().length > 0\">\n <div \n class=\"control-item\" \n *ngFor=\"let control of controls(); trackBy: trackByControlId\"\n [class.selected]=\"selectedControlId() === control._id\"\n (click)=\"selectControl(control)\"\n (keyup.enter)=\"selectControl(control)\"\n (keyup.space)=\"selectControl(control)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"'Select control ' + (control.sype_label || control.sype_key)\">\n <div class=\"control-header\">\n <div class=\"control-icon\">\n <cide-ele-icon>settings_input_component</cide-ele-icon>\n </div>\n <div class=\"control-info\">\n <h4>{{ control.sype_label || control.sype_key }}</h4>\n <p>{{ control.sype_tooltip || 'No tooltip' }}</p>\n <div class=\"control-meta\">\n <span class=\"control-type\">{{ control.sype_type }}</span>\n <span class=\"control-status\" [class.active]=\"control.sype_isactive\">\n {{ control.sype_isactive ? 'Active' : 'Inactive' }}\n </span>\n </div>\n </div>\n <div class=\"control-actions\">\n <button \n cideEleButton\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"editControl(control); $event.stopPropagation()\">\n <cide-ele-icon>edit</cide-ele-icon>\n </button>\n <button \n cideEleButton\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"deleteControl(control); $event.stopPropagation()\">\n <cide-ele-icon>delete</cide-ele-icon>\n </button>\n </div>\n </div>\n \n \n </div>\n </div>\n\n <div class=\"controls-list-empty\" *ngIf=\"!loading() && controls().length === 0\">\n <cide-ele-icon>settings_input_component</cide-ele-icon>\n <p>No controls available</p>\n <small>Create controls using the form on the left</small>\n </div>\n\n <div class=\"controls-list-loading\" *ngIf=\"loading()\">\n <cide-ele-icon class=\"spinning\">refresh</cide-ele-icon>\n <p>Loading controls...</p>\n </div>\n </div>\n </div>\n</div>\n\n ","// Page Management Components\r\nexport * from './components/page-list/page-list.component';\r\nexport * from './components/page-theme/page-theme.component';\r\nexport * from './components/page-controls/page-controls.component';\r\n\r\n// Page Management Services\r\nexport * from './services/page-management.service';\r\nexport * from './services/page-theme.service';\r\nexport * from './services/page-controls.service';\r\n\r\n// Page Management Interfaces - Now using model interfaces from cloud-ide-lms-model ","/*\n * Public API Surface of cloud-ide-core\n */\n\nexport * from './lib/cloud-ide-core.service';\nexport * from './lib/cloud-ide-core.component';\n\n// Menu Management Module\nexport * from './lib/core/menu-management';\n\n// Department Management Module\nexport * from './lib/core/department-management';\n\n// Designation Management Module\nexport * from './lib/core/designation-management';\n\n// Grade Level Management Module\nexport * from './lib/core/grade-level-management';\n\n// Page Management Components\nexport * from './lib/core/page-management';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}