import { Route, Router, ActivatedRoute } from '@angular/router'; import * as _angular_core from '@angular/core'; import { OnInit, TemplateRef, AfterViewInit, OnDestroy } from '@angular/core'; import * as _angular_forms from '@angular/forms'; import { FormGroup, FormArray } from '@angular/forms'; import { ICoreSyme, ICoreSygms, ICoreSypg, MMenuListPayload, menuListControllerResponse, menuByIdControllerResponse, menuDeleteControllerResponse, MMenuChangeSequencePayload, menuChangeSequenceControllerResponse, ICoreSydept, MDepartment, departmentControllerResponse, departmentByIdControllerResponse, departmentDeleteControllerResponse, MDepartmentToggleStatusPayload, departmentToggleStatusControllerResponse, ICoreSydsg, ICoreSydsgl, MDesignation, designationControllerResponse, designationInsertUpdateControllerResponse, designationByIdControllerResponse, designationDeleteControllerResponse, designationToggleStatusControllerResponse, MGradeLevel, gradeLevelControllerResponse, MGradeLevelGetByIdPayload, gradeLevelByIdControllerResponse, gradeLevelDeleteControllerResponse, gradeLevelToggleStatusControllerResponse, MGradeLevelChangeSequencePayload, gradeLevelChangeSequenceControllerResponse, ICoreSytm, ICoreSythDrawer, ICoreSype, MSystemPages, systemPagesControllerResponse, MSystemPagesInsertUpdatePayload, systemPagesInsertUpdateControllerResponse, systemPagesByIdControllerResponse, systemPagesDeleteControllerResponse, MSystemPagesToggleStatusPayload, systemPagesToggleStatusControllerResponse, MSystemPagesCheckCodeExistsPayload, systemPagesCheckCodeExistsControllerResponse, MSystemPagesTheme, systemPagesThemeControllerResponse, MSystemPagesThemeInsertUpdatePayload, systemPagesThemeInsertUpdateControllerResponse, systemPagesThemeByIdControllerResponse, systemPagesThemeByPageIdControllerResponse, systemPagesThemeDeleteControllerResponse, MSystemPagesThemeToggleStatusPayload, systemPagesThemeToggleStatusControllerResponse, MPageElements, pageElementsControllerResponse, MPageElementsInsertUpdatePayload, pageElementsInsertUpdateControllerResponse, pageElementsByIdControllerResponse, pageElementsByPageIdControllerResponse, pageElementsMappingByPageIdControllerResponse, MPageElementsMappingInsertUpdatePayload, pageElementsMappingInsertUpdateControllerResponse, pageElementsMappingDeleteControllerResponse, pageElementsDeleteControllerResponse, MPageElementsToggleStatusPayload, pageElementsToggleStatusControllerResponse, AuthUserCoreUserContactAddresses, AuthUserCoreUserDocuments, AuthUserCoreUserFamilyDetails, AuthUserCoreEntityMapping, CoreUserTypeMapping, CoreUserRoleExceptions, AuthUserMst, selectSearchType, CoreSystemEntityListResponse, CoreUserRoleResponse, pinCodeSelectResponseData, ICoreSyctr, inputType, AuthUserMstListPayload, authUserMstListControllerResponse, MUserRole, userRoleControllerResponse, MUserRoleGetByIdPayload, userRoleByIdControllerResponse, MUserRoleWithRightsPayload, userRoleInsertUpdateControllerResponse, MUserRoleDeletePayload, userRoleDeleteControllerResponse, MUserRoleToggleStatusPayload, userRoleToggleStatusControllerResponse, CoreSystemEntitySaveUpdatePayload, entityControllerResponse, entityByIdControllerResponse, MEntity, controllerResponse, ICoreSygmt, MGeneralMasterType, generalMasterTypeListControllerResponse, generalMasterTypeInsertUpdateControllerResponse, generalMasterTypeByIdControllerResponse, generalMasterTypeDeleteControllerResponse, MGeneralMasterTypeToggleStatusPayload, generalMasterTypeToggleStatusControllerResponse, IGeneralMasterListRequest, generalMasterListControllerResponse, generalMasterInsertUpdateControllerResponse, generalMasterByIdControllerResponse, generalMasterDeleteControllerResponse, generalMasterToggleStatusControllerResponse, MPinCodeSelect, pinCodeSelectControllerResponse, MSyctrList, countryListControllerResponse, CoreNationalityListPayload, nationalityListControllerResponse, MClassProgramMaster, classProgramMasterControllerResponse, MSycrList, currencyListControllerResponse } from 'cloud-ide-lms-model'; import { TemplateContext, GridConfiguration, GridEvent, DropdownItem, FileUploadData, TabItem, mongooseObjectIdCreateControllerResponse, CideEleDataGridComponent, DropdownConfig } from 'cloud-ide-element'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { AppStateHelperService, CideLytSharedService } from 'cloud-ide-layout'; import { IEntityService, IGeneralMasterService, IClassProgramMasterService, ICurrencyService } from 'cloud-ide-shared'; declare const coreRoutes: Route[]; declare class CloudIdeCoreService { constructor(); static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CloudIdeCoreComponent { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MenuListComponent implements OnInit { private destroyRef; private menuService; private generalMasterService; private generalMasterTypeService; private pageService; private notificationService; private fb; private router; private rightsService; /** Refetch permissions when general master list is invalidated elsewhere. */ private readonly generalMasterInvalidationEffect; /** Refetch menu list when menu list is invalidated elsewhere (e.g. save/delete in another tab). */ private readonly menuListInvalidationEffect; shared_wrapper_setup_param: { sypg_page_code: string; }; menuDetailsRendererTemplate: _angular_core.Signal>>; menuTypeRendererTemplate: _angular_core.Signal>>; permissionsRendererTemplate: _angular_core.Signal>>; actionsDropdownRendererTemplate: _angular_core.Signal>>; Math: Math; menuItems: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; permissions: _angular_core.WritableSignal; pages: _angular_core.WritableSignal; pagesLoading: _angular_core.WritableSignal; userRightsTypeId: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; selectedParentItem: _angular_core.WritableSignal; retrievedMenuItem: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; originalOrder: _angular_core.WritableSignal; hasOrderChanged: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; quickAddForm: _angular_forms.FormGroup<{ syme_title: _angular_forms.FormControl; syme_desc: _angular_forms.FormControl; syme_type: _angular_forms.FormControl<"module" | "section" | "menu" | "title" | "internal">; syme_id_syme: _angular_forms.FormControl; syme_path: _angular_forms.FormControl; syme_icon: _angular_forms.FormControl; syme_link: _angular_forms.FormControl; syme_isactive: _angular_forms.FormControl; syme_order_by: _angular_forms.FormControl; syme_permissions_id_sygms: _angular_forms.FormControl; syme_pages_id_sypg: _angular_forms.FormControl; }>; menuTypeOptions: _angular_core.Signal<{ value: string; label: string; }[]>; permissionOptions: _angular_core.Signal<{ value: string; label: string; }[]>; pageOptions: _angular_core.Signal<{ value: string; label: string; }[]>; gridConfig: _angular_core.WritableSignal>; templateRenderers: _angular_core.Signal>>>; /** * Get template renderers for data grid * These templates are available for enhanced data grid components */ getTemplateRenderers(): Record>>; customRenderers: _angular_core.Signal<{ [x: string]: TemplateRef>; }>; /** * Get custom renderers adapted for current data grid compatibility * Uses template-based renderers converted to string functions */ getCustomRenderers(): Record string>; actionHandlers: { onEditMenuItem: (row: ICoreSyme) => void; onToggleMenuItem: (row: ICoreSyme) => void; onDeleteMenuItem: (row: ICoreSyme) => void; onMenuItemRowClick: (row: ICoreSyme) => void; onMenuItemRefresh: () => void; onAddChild: (row: ICoreSyme) => void; resetOrder: () => void; saveOrder: () => void; }; hasSelection: _angular_core.Signal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; totalPages: _angular_core.Signal; hasNextPage: _angular_core.Signal; hasPreviousPage: _angular_core.Signal; constructor(); ngOnInit(): void; /** * Initialize component with modern patterns */ private initializeComponent; /** * Setup event listeners for dropdown interactions */ private setupEventListeners; /** * Cleanup event listeners */ private cleanupEventListeners; /** * Expose global functions for dropdown interactions */ private exposeGlobalFunctions; /** * Get default type based on parent selection (computed for reactivity) */ private getDefaultType; /** * Load menu items from service */ loadMenuItems(): void; /** * Load pages from service */ loadPages(): void; /** * Handle click outside dropdown */ private handleClickOutside; /** * Handle dropdown action clicks */ private handleDropdownAction; /** * Update grid data */ private updateGridData; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Handle menu item search */ /** * Handle menu item refresh */ onMenuItemRefresh(): void; /** * Handle menu item row click */ onMenuItemRowClick(menuItem: ICoreSyme): void; /** * Handle row reorder event */ onRowReorder(data: { sourceIndex: number; targetIndex: number; newOrder: ICoreSyme[]; allOrders?: ICoreSyme[]; }): void; /** * Update grid data after reordering */ private updateGridDataAfterReorder; /** * Save menu order using the change sequence API * This method is called by the data grid when save-order action is triggered * Handles both single-level and multi-level (hierarchical) menu structures */ saveMenuOrder(): void; /** * Get all menu items including children from the current data structure * This handles both hierarchical and flat menu structures */ private getAllMenuItemsIncludingChildren; /** * Check if the data structure is flat (no children property) or hierarchical */ private isFlatDataStructure; /** * Reset drag order to original state */ resetDragOrder(): void; /** * Check if order has changed */ hasOrderChanges(): boolean; /** * Toggle item selection */ toggleItemSelection(itemId: string): void; /** * Select all items on current page */ selectAllOnPage(): void; /** * Clear all selections */ clearSelection(): void; /** * Navigate to edit menu form */ editMenuItem(itemId: string): void; /** * Get menu item by ID using the API * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse */ getMenuItemById(itemId: string): void; /** * Populate form with menu item data for editing */ populateFormForEdit(menuItem: ICoreSyme): void; /** * Delete menu item */ deleteMenuItem(itemId: string): void; /** * Delete multiple selected items */ deleteSelectedItems(): void; /** * Toggle menu item status */ toggleItemStatus(itemId: string): void; /** * Update search term */ onSearchChange(event: Event): void; /** * Navigate to specific page */ goToPage(): void; /** * Get menu type display name */ getMenuTypeDisplay(type: string): string; /** * Get status display */ getStatusDisplay(isActive: boolean): string; /** * Get status class for styling */ getStatusClass(isActive: boolean): string; /** * Get menu type class for styling */ getMenuTypeClass(type: string): string; /** * Check if item is selected */ isItemSelected(itemId: string): boolean; /** * Check if all items on current page are selected */ isAllSelectedOnPage(): boolean; /** * Get pagination range */ getPaginationRange(): number[]; /** * Track by function for ngFor */ trackByItemId(index: number, item: ICoreSyme): string; /** * Quick add or update menu item using reactive form */ quickAddMenuItem(): void; /** * Reset the quick add form to default values */ resetQuickAddForm(): void; /** * Handle add child button click from row action */ onAddChild(parentItem: ICoreSyme): void; /** * Handle row reorder event */ /** * Toggle dropdown visibility */ toggleDropdown(itemId: string): void; /** * Handle menu action clicks */ handleMenuAction(action: string, itemId: string): void; /** * Add child menu item - sets parent and scrolls to form */ addChildMenuItem(parentId: string, parentItem: ICoreSyme): void; /** * Clear selected parent */ clearSelectedParent(): void; /** * Helper methods for templates */ getMenuTypeLabel(type: string): string; /** * Test method to load sample data for debugging */ loadTestData(): void; /** * Load user rights type ID from general master types */ private loadUserRightsTypeId; /** * Load permissions from general master */ private loadPermissions; /** * Get permission names from permission IDs */ getPermissionNames(permissionIds: string[]): string; /** * Get permission by ID */ getPermissionById(permissionId: string): ICoreSygms | undefined; /** * Get all permission names for tooltip */ getAllPermissionNames(permissionIds: string[]): string; /** * Handle menu type change - clear permissions for non-menu and non-internal types */ onMenuTypeChange(): void; /** * Get dropdown items for menu actions */ getDropdownItems(menuItem: ICoreSyme): DropdownItem[]; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, menuItem: ICoreSyme): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class MenuManagementService { private http; private apiUrl; private menuListSubject; menuList$: Observable; /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */ readonly listInvalidated: _angular_core.WritableSignal; constructor(http: HttpClient); /** * Get menu list from API */ getMenuList(body: MMenuListPayload): Observable; /** * Get menu list from cache (if available) */ getMenuListFromCache(): ICoreSyme[]; /** * Create new menu item * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse */ createMenuItem(menuItem: ICoreSyme): Observable; /** * Update existing menu item * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse */ updateMenuItem(id: string, menuItem: ICoreSyme): Observable; /** * Get menu item by ID * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse * TODO: Update to use MCoreSymeGetByIdPayload and menuByIdControllerResponse when available */ getMenuItemById(id: string): Observable; /** * Delete menu item * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available */ deleteMenuItem(id: string): Observable; /** * Delete multiple menu items * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available */ deleteMultipleMenuItems(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown; }>; /** * Toggle menu item active status */ toggleMenuItemStatus(id: string): Observable; /** * Change menu sequence * PATCH ${coreRoutesUrl?.menu}/change-sequence - payload: menu sequence data, response: menuChangeSequenceControllerResponse */ changeMenuSequence(payload: MMenuChangeSequencePayload): Observable; /** * Get available menu types */ getMenuTypes(): Observable; /** * Get available icons */ getAvailableIcons(): Observable; /** * Find menu item by ID (including nested items) */ findMenuItemById(id: string, items?: ICoreSyme[]): ICoreSyme | null; /** * Get parent menu items for dropdown selection */ getParentMenuItems(excludeId?: string): ICoreSyme[]; /** * Refresh menu list from server */ private refreshMenuList; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCoreDepartmentListComponent { private destroyRef; private departmentService; private appState; private fb; private router; private confirmationService; private notificationService; private rightsService; private readonly departmentListInvalidationEffect; departmentDetailsRendererTemplate: _angular_core.Signal>>>; departmentStatusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; Math: Math; departments: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; selectedParentDepartment: _angular_core.WritableSignal; retrievedDepartment: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; quickAddForm: _angular_forms.FormGroup<{ sydept_code: _angular_forms.FormControl; sydept_name: _angular_forms.FormControl; sydept_description: _angular_forms.FormControl; sydept_isactive: _angular_forms.FormControl; sydept_department_id_sydept: _angular_forms.FormControl; sydept_entity_id_syen: _angular_forms.FormControl; }>; gridConfig: _angular_core.WritableSignal>; templateRenderers: _angular_core.Signal>>>>; /** * Get template renderers for data grid */ getTemplateRenderers(): Record>; customRenderers: _angular_core.Signal<{ [x: string]: TemplateRef>>; }>; /** * Get custom renderers adapted for current data grid compatibility */ getCustomRenderers(): Record string>; actionHandlers: { onEditDepartment: (row: ICoreSydept) => void; onToggleDepartment: (row: ICoreSydept) => void; onDeleteDepartment: (row: ICoreSydept) => Promise; onDepartmentRowClick: (row: ICoreSydept) => void; onDepartmentRefresh: () => void; onAddChild: (row: ICoreSydept) => void; }; filteredItems: _angular_core.Signal; hasSelection: _angular_core.Signal; totalPages: _angular_core.Signal; hasNextPage: _angular_core.Signal; hasPreviousPage: _angular_core.Signal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; constructor(); /** * Initialize component with modern patterns */ private initializeComponent; /** * Setup event listeners for dropdown interactions */ private setupEventListeners; /** * Cleanup event listeners */ private cleanupEventListeners; /** * Expose global functions for dropdown interactions */ private exposeGlobalFunctions; /** * Load departments from service */ loadDepartments(): void; /** * Update grid data */ private updateGridData; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Handle department refresh */ onDepartmentRefresh(): void; /** * Handle department row click */ onDepartmentRowClick(department: ICoreSydept): void; /** * Navigate to edit department form */ editDepartment(itemId: string): void; /** * Get department by ID using the API */ getDepartmentById(itemId: string): void; /** * Populate form with department data for editing */ populateFormForEdit(department: ICoreSydept): void; /** * Delete department */ deleteDepartment(itemId: string): Promise; /** * Toggle department status */ toggleDepartmentStatus(itemId: string): void; /** * Quick add or update department using reactive form */ quickAddDepartment(): void; /** * Reset the quick add form to default values */ resetQuickAddForm(): void; /** * Handle adding a child department */ onAddChild(parentItem: ICoreSydept): void; /** * Clear selected parent department */ clearSelectedParent(): void; /** * Handle click outside dropdown */ private handleClickOutside; /** * Handle dropdown action clicks */ private handleDropdownAction; /** * Toggle dropdown visibility */ toggleDropdown(itemId: string): void; /** * Handle department action clicks */ handleDepartmentAction(action: string, itemId: string): void; /** * Get status display */ getStatusDisplay(isActive: boolean): string; /** * Get status class for styling */ getStatusClass(isActive: boolean): string; /** * Generate dropdown items for department actions */ getDropdownItems(row: ICoreSydept): DropdownItem[]; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, row: ICoreSydept): void; /** * Close all dropdowns */ private closeAllDropdowns; /** * Track by function for ngFor */ trackByItemId(index: number, item: ICoreSydept): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreDepartmentManagementService { private http; private departmentListSubject; departmentList$: Observable; /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */ readonly listInvalidated: _angular_core.WritableSignal; constructor(http: HttpClient); /** * Get department list from API */ getDepartmentList(body: MDepartment): Observable; /** * Get department list from cache (if available) */ getDepartmentListFromCache(): ICoreSydept[]; /** * Create new department * POST ${coreRoutesUrl?.department} - payload: MDepartmentInsertUpdatePayload, response: departmentInsertUpdateControllerResponse */ createDepartment(department: ICoreSydept): Observable; /** * Update existing department * POST ${coreRoutesUrl?.department} - payload: MDepartmentInsertUpdatePayload, response: departmentInsertUpdateControllerResponse */ updateDepartment(id: string, department: ICoreSydept): Observable; /** * Get department by ID * GET ${coreRoutesUrl?.department}/byId/:query - payload: MDepartmentGetByIdPayload, response: departmentByIdControllerResponse */ getDepartmentById(id: string): Observable; /** * Delete department * DELETE ${coreRoutesUrl?.department}/:query - payload: MDepartmentDeletePayload, response: departmentDeleteControllerResponse */ deleteDepartment(id: string): Observable; /** * Delete multiple departments */ deleteMultipleDepartments(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown; }>; /** * Toggle department active status */ toggleDepartmentStatus(payload: MDepartmentToggleStatusPayload): Observable; /** * Find department by ID */ findDepartmentById(id: string, items?: ICoreSydept[]): ICoreSydept | null; /** * Get parent departments for dropdown selection */ getParentDepartments(excludeId?: string): ICoreSydept[]; /** * Refresh department list from server */ private refreshDepartmentList; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } interface HierarchicalNode { _id: string; name: string; code: string; description: string; type: 'department' | 'designation'; level: number; expanded: boolean; hasChildren: boolean; children: HierarchicalNode[]; status: boolean; grade_level: string; parentId: string | null; } declare class CideCoreDesignationListComponent { private destroyRef; private designationService; private gradeLevelService; private departmentService; private appState; private fb; private router; private notificationService; private confirmationService; private rightsService; private readonly designationListInvalidationEffect; private readonly departmentListInvalidationEffect; private readonly gradeLevelListInvalidationEffect; designationDetailsRendererTemplate: _angular_core.Signal>>>; designationStatusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; Math: Math; designations: _angular_core.WritableSignal; departments: _angular_core.WritableSignal; gradeLevels: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; selectedParentDesignation: _angular_core.WritableSignal; selectedParentDepartment: _angular_core.WritableSignal; retrievedDesignation: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; quickAddForm: _angular_forms.FormGroup<{ sydsg_name: _angular_forms.FormControl; sydsg_code: _angular_forms.FormControl; sydsg_description: _angular_forms.FormControl; sydsg_prent_id_desg: _angular_forms.FormControl; sydsg_department_id_sydpt: _angular_forms.FormControl; sydsg_grade_level_id_sydsgl: _angular_forms.FormControl; sydsg_isactive: _angular_forms.FormControl; desg_entity_id_syen: _angular_forms.FormControl; }>; gridConfig: _angular_core.WritableSignal>; templateRenderers: _angular_core.Signal>>>>; /** * Get template renderers for data grid */ getTemplateRenderers(): Record>; customRenderers: _angular_core.Signal<{ [x: string]: TemplateRef>>; }>; /** * Get custom renderers adapted for current data grid compatibility */ getCustomRenderers(): Record string>; actionHandlers: { onEditDesignation: (row: ICoreSydsg) => void; onToggleDesignation: (row: ICoreSydsg) => void; onDeleteDesignation: (row: ICoreSydsg) => Promise; onDesignationRowClick: (row: ICoreSydsg) => void; onDesignationRefresh: () => void; onAddChild: (row: ICoreSydsg) => void; }; filteredItems: _angular_core.Signal; hasSelection: _angular_core.Signal; totalPages: _angular_core.Signal; hasNextPage: _angular_core.Signal; hasPreviousPage: _angular_core.Signal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; gradeLevelOptions: _angular_core.Signal<{ value: string; label: string; }[]>; departmentOptions: _angular_core.Signal<{ value: string; label: string; }[]>; constructor(); /** * Initialize component with modern patterns */ private initializeComponent; /** * Setup event listeners for dropdown interactions */ private setupEventListeners; /** * Cleanup event listeners */ private cleanupEventListeners; /** * Expose global functions for dropdown interactions */ private exposeGlobalFunctions; /** * Load designations from service */ loadDesignations(): void; /** * Load departments from service */ loadDepartments(): void; /** * Load grade levels from service */ loadGradeLevels(): void; /** * Build hierarchical tree structure from departments and designations * Based on FK relationships: _id (PK) -> sydsg_prent_id_desg (FK) OR sydsg_department_id_sydpt (FK) */ private buildHierarchicalData; /** * Extract unique departments from designation data (since department data is populated in API response) */ private extractDepartmentsFromDesignations; /** * Build and add designation hierarchy to department hierarchy * This method handles the complete designation hierarchy and adds it to the appropriate departments */ private buildAndAddDesignationHierarchy; /** * Build designation hierarchy based on FK relationships * PK: _id, FK: sydsg_prent_id_desg (if set) OR sydsg_department_id_sydpt (if no parent designation) */ private buildDesignationHierarchy; /** * Build department hierarchy with parent-child relationships */ private buildDepartmentHierarchy; /** * Add designation hierarchy to department hierarchy * Designations with department as parent (sydsg_department_id_sydpt) will be added to departments */ private addDesignationHierarchyToDepartments; /** * Recursively add children designations to a parent designation */ private addDesignationChildren; /** * Get grade level name by ID or from designation data */ private getGradeLevelName; /** * Update grid data with hierarchical structure based on FK relationships */ private updateGridData; /** * Flatten hierarchical data for grid display */ private flattenHierarchicalData; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Handle designation refresh */ onDesignationRefresh(): void; /** * Handle designation row click */ onDesignationRowClick(designation: ICoreSydsg): void; /** * Navigate to edit designation form */ editDesignation(itemId: string): void; /** * Get designation by ID using the API */ getDesignationById(itemId: string): void; /** * Populate form with designation data for editing */ populateFormForEdit(designation: ICoreSydsg): void; /** * Delete designation with confirmation modal */ deleteDesignation(itemId: string): Promise; /** * Toggle designation status */ toggleDesignationStatus(itemId: string): void; /** * Rename designation */ renameDesignation(itemId: string, currentName: string): void; /** * Quick add or update designation using reactive form */ quickAddDesignation(): void; /** * Reset the quick add form to default values */ resetQuickAddForm(): void; /** * Handle adding a child designation */ onAddChild(parentItem: ICoreSydsg): void; /** * Clear selected parent designation */ clearSelectedParent(): void; /** * Clear selected parent department */ clearSelectedParentDepartment(): void; /** * Handle department selection */ onDepartmentSelect(department: ICoreSydept): void; /** * Handle click outside dropdown */ private handleClickOutside; /** * Handle dropdown action clicks */ private handleDropdownAction; /** * Toggle dropdown visibility */ toggleDropdown(itemId: string): void; /** * Handle designation action clicks */ handleDesignationAction(action: string, itemId: string): void; /** * Get status display */ getStatusDisplay(isActive: boolean): string; /** * Get status class for styling */ getStatusClass(isActive: boolean): string; /** * Generate dropdown items for designation actions */ getDropdownItems(row: HierarchicalNode): DropdownItem[]; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, row: HierarchicalNode): void; /** * Close all dropdowns */ private closeAllDropdowns; /** * Track by function for ngFor */ trackByItemId(index: number, item: ICoreSydsg): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreDesignationManagementService { private http; private apiUrl; private designationListSubject; designationList$: Observable; /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */ readonly listInvalidated: _angular_core.WritableSignal; constructor(http: HttpClient); /** * Get designation list from API */ getDesignationList(body: MDesignation): Observable; /** * Get designation list from cache (if available) */ getDesignationListFromCache(): ICoreSydsg[]; /** * Create new designation * POST ${coreRoutesUrl?.designation} - payload: MDesignationInsertUpdatePayload, response: designationInsertUpdateControllerResponse */ createDesignation(designation: ICoreSydsg): Observable; /** * Update existing designation * POST ${coreRoutesUrl?.designation} - payload: MDesignationInsertUpdatePayload, response: designationInsertUpdateControllerResponse */ updateDesignation(id: string, designation: ICoreSydsg): Observable; /** * Get designation by ID * GET ${coreRoutesUrl?.designation}/byId/:query - payload: MDesignationGetByIdPayload, response: designationByIdControllerResponse */ getDesignationById(id: string): Observable; /** * Delete designation * DELETE ${coreRoutesUrl?.designation}/:query - payload: MDesignationDeletePayload, response: designationDeleteControllerResponse */ deleteDesignation(id: string): Observable; /** * Delete multiple designations */ deleteMultipleDesignations(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown; }>; /** * Toggle designation active status */ toggleDesignationStatus(id: string): Observable; /** * Find designation by ID */ findDesignationById(id: string, items?: ICoreSydsg[]): ICoreSydsg | null; /** * Get parent designations for dropdown selection */ getParentDesignations(excludeId?: string): ICoreSydsg[]; /** * Refresh designation list from server */ private refreshDesignationList; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCoreGradeLevelListComponent { private destroyRef; private gradeLevelService; private appState; private fb; private router; private notificationService; private confirmationService; private rightsService; private readonly gradeLevelListInvalidationEffect; dragHandleRendererTemplate: _angular_core.Signal>>>; gradeLevelDetailsRendererTemplate: _angular_core.Signal>>>; gradeLevelStatusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; Math: Math; gradeLevels: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; retrievedGradeLevel: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; hasOrderChanged: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; quickAddForm: _angular_forms.FormGroup<{ sydsgl_name: _angular_forms.FormControl; sydsgl_description: _angular_forms.FormControl; sydsgl_order: _angular_forms.FormControl; sydsgl_isactive: _angular_forms.FormControl; sydsgl_entity_id_syen: _angular_forms.FormControl; }>; gridConfig: _angular_core.WritableSignal>; templateRenderers: _angular_core.Signal>>>>; /** * Get template renderers for data grid */ getTemplateRenderers(): Record>; customRenderers: _angular_core.Signal<{ [x: string]: TemplateRef>>; }>; /** * Get custom renderers adapted for current data grid compatibility */ getCustomRenderers(): Record string>; actionHandlers: { onEditGradeLevel: (row: ICoreSydsgl) => void; onToggleGradeLevel: (row: ICoreSydsgl) => void; onDeleteGradeLevel: (row: ICoreSydsgl) => Promise; onGradeLevelRowClick: (row: ICoreSydsgl) => void; onGradeLevelRefresh: () => void; resetOrder: () => void; saveOrder: () => void; }; filteredItems: _angular_core.Signal; hasSelection: _angular_core.Signal; totalPages: _angular_core.Signal; hasNextPage: _angular_core.Signal; hasPreviousPage: _angular_core.Signal; nextOrder: _angular_core.Signal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; constructor(); /** * Initialize component with modern patterns */ private initializeComponent; /** * Setup event listeners for dropdown interactions */ private setupEventListeners; /** * Cleanup event listeners */ private cleanupEventListeners; /** * Expose global functions for dropdown interactions */ private exposeGlobalFunctions; /** * Load grade levels from service */ loadGradeLevels(): void; /** * Update grid data */ private updateGridData; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Handle grade level refresh */ onGradeLevelRefresh(): void; /** * Handle grade level reorder via drag and drop */ onGradeLevelReorder(data: { sourceIndex: number; targetIndex: number; newOrder: ICoreSydsgl[]; allOrders?: ICoreSydsgl[]; }): void; /** * Update grid data after reordering */ private updateGridDataAfterReorder; /** * Save grade level order using the change sequence API * This method is called by the data grid when save-order action is triggered */ saveGradeLevelOrder(): void; /** * Reset drag order to original state */ resetDragOrder(): void; /** * Check if order has changed */ hasOrderChanges(): boolean; /** * Handle grade level row click */ onGradeLevelRowClick(gradeLevel: ICoreSydsgl): void; /** * Navigate to edit grade level form */ editGradeLevel(itemId: string): void; /** * Get grade level by ID using the API */ getGradeLevelById(itemId: string): void; /** * Populate form with grade level data for editing */ populateFormForEdit(gradeLevel: ICoreSydsgl): void; /** * Delete grade level with confirmation dialog */ deleteGradeLevel(itemId: string): Promise; /** * Delete multiple grade levels with confirmation dialog */ deleteMultipleGradeLevels(): Promise; /** * Toggle grade level status */ toggleGradeLevelStatus(itemId: string): void; /** * Quick add or update grade level using reactive form */ quickAddGradeLevel(): void; /** * Calculate the highest order from existing grade levels */ private calculateNextOrder; /** * Reset the quick add form to default values */ resetQuickAddForm(): void; /** * Handle click outside dropdown */ private handleClickOutside; /** * Handle dropdown action clicks */ private handleDropdownAction; /** * Toggle dropdown visibility */ toggleDropdown(itemId: string): void; /** * Handle grade level action clicks */ handleGradeLevelAction(action: string, itemId: string): void; /** * Get status display */ getStatusDisplay(isActive: boolean): string; /** * Get status class for styling */ getStatusClass(isActive: boolean): string; /** * Generate dropdown items for grade level actions */ getDropdownItems(row: ICoreSydsgl): DropdownItem[]; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, row: ICoreSydsgl): void; /** * Close all dropdowns */ private closeAllDropdowns; /** * Track by function for ngFor */ trackByItemId(index: number, item: ICoreSydsgl): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreGradeLevelManagementService { private http; private apiUrl; private gradeLevelListSubject; gradeLevelList$: Observable; /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */ readonly listInvalidated: _angular_core.WritableSignal; constructor(http: HttpClient); /** * Get grade level list from API */ getGradeLevelList(body: MGradeLevel): Observable; /** * Get grade level list from cache (if available) */ getGradeLevelListFromCache(): ICoreSydsgl[]; /** * Create new grade level * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse */ createGradeLevel(gradeLevel: ICoreSydsgl): Observable; /** * Update existing grade level * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse */ updateGradeLevel(id: string, gradeLevel: ICoreSydsgl): Observable; /** * Get grade level by ID * GET ${coreRoutesUrl?.gradeLevel}/byId/:query - payload: { id }, response: gradeLevelByIdControllerResponse */ getGradeLevelById(payload: MGradeLevelGetByIdPayload): Observable; /** * Delete grade level * DELETE ${coreRoutesUrl?.gradeLevel}/:query - payload: { id }, response: { success: boolean } */ deleteGradeLevel(id: string): Observable; /** * Delete multiple grade levels */ deleteMultipleGradeLevels(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown; }>; /** * Toggle grade level active status * PATCH ${coreRoutesUrl?.gradeLevel}/toggle-status - payload: { id }, response: gradeLevelToggleStatusControllerResponse */ toggleGradeLevelStatus(id: string): Observable; /** * Change grade level sequence * PATCH ${coreRoutesUrl?.gradeLevel}/change-sequence - payload: MGradeLevelChangeSequencePayload, response: gradeLevelChangeSequenceControllerResponse */ changeGradeLevelSequence(payload: MGradeLevelChangeSequencePayload): Observable; /** * Find grade level by ID */ findGradeLevelById(id: string, items?: ICoreSydsgl[]): ICoreSydsgl | null; /** * Refresh grade level list from server */ private refreshGradeLevelList; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCorePageListComponent implements OnInit { shared_wrapper_setup_param: { sypg_page_code: string; }; private destroyRef; private pageService; private appState; private router; private rightsService; pageDetailsRendererTemplate: _angular_core.Signal>>>; pageStatusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; Math: Math; pages: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; canManageThemes: _angular_core.Signal; canManageControls: _angular_core.Signal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; gridConfig: _angular_core.WritableSignal>; actionHandlers: { onEdit: (item: ICoreSypg) => void; onDelete: (item: ICoreSypg) => void; onToggleStatus: (item: ICoreSypg) => void; onManageThemes: (item: ICoreSypg) => void; onManageControls: (item: ICoreSypg) => void; }; constructor(); ngOnInit(): void; /** * Initialize component */ private initializeComponent; /** * Load pages from API */ private loadPages; /** * Update grid data */ private updateGridData; /** * Get template renderers for grid */ getTemplateRenderers(): Record>; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Navigate to create page */ createPage(): void; /** * Edit page - navigate to edit page */ editPage(page: ICoreSypg): void; /** * Delete page */ deletePage(page: ICoreSypg): void; /** * Toggle page status */ togglePageStatus(page: ICoreSypg): void; /** * Manage themes for a page */ manageThemes(page: ICoreSypg): void; /** * Manage controls for a page */ manageControls(page: ICoreSypg): void; /** * Get dropdown items for actions */ getActionDropdownItems(page: ICoreSypg): DropdownItem[]; /** * Handle dropdown item click * This method handles clicks on dropdown menu items in the actions column */ onDropdownItemClick(item: DropdownItem, row: ICoreSypg): void; /** * Close all dropdowns */ private closeAllDropdowns; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCorePageThemeComponent implements OnInit { private destroyRef; private themeService; private appState; private fb; private router; private route; private confirmationService; themeDetailsRendererTemplate: _angular_core.Signal>>>; themeStatusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; Math: Math; themes: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; filteredThemes: _angular_core.Signal; onGallerySearchInput(event: Event): void; pageId: _angular_core.WritableSignal; pageTitle: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; editingThemeId: _angular_core.WritableSignal; retrievedTheme: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; themeForm: FormGroup<{ sytm_title: _angular_forms.FormControl; sytm_desc: _angular_forms.FormControl; sytm_theme_code: _angular_forms.FormControl; sytm_preview_id_fm: _angular_forms.FormControl; sytm_sub_title: _angular_forms.FormControl; sytm_configuration: _angular_forms.FormControl; sytm_entity_id_syen: _angular_forms.FormControl; sytm_isselected: _angular_forms.FormControl; sytm_layout: FormGroup<{ sytm_layout_sidebar: FormGroup<{ status: _angular_forms.FormControl; }>; sytm_layout_header: FormGroup<{ status: _angular_forms.FormControl; }>; sytm_layout_footer: FormGroup<{ status: _angular_forms.FormControl; }>; sytm_layout_breadcrumb: FormGroup<{ status: _angular_forms.FormControl; }>; sytm_layout_console: FormGroup<{ status: _angular_forms.FormControl; }>; sytm_layout_request: FormGroup<{ status: _angular_forms.FormControl; }>; sytm_layout_drawer: FormArray<_angular_forms.FormControl>; }>; sytm_isactive: _angular_forms.FormControl; }>; isFormDirty: _angular_core.Signal; layoutOptions: readonly [{ readonly value: "sidebar"; readonly label: "Sidebar"; }, { readonly value: "header"; readonly label: "Header"; }, { readonly value: "footer"; readonly label: "Footer"; }, { readonly value: "breadcrumb"; readonly label: "Breadcrumb"; }, { readonly value: "console"; readonly label: "Console"; }, { readonly value: "request"; readonly label: "Request"; }]; enabledLayoutSelections(): string[]; onEnabledLayoutChange(values: string[]): void; gridConfig: _angular_core.WritableSignal>; actionHandlers: { onEdit: (item: ICoreSytm) => void; onDelete: (item: ICoreSytm) => void; onToggleStatus: (item: ICoreSytm) => void; }; ngOnInit(): void; /** * Initialize component */ private initializeComponent; /** * Load themes from API */ private loadThemes; /** * Setup form subscriptions */ private setupFormSubscriptions; /** * Update grid data */ private updateGridData; /** * Get custom renderers for grid */ /** * Get template renderers for grid */ getTemplateRenderers(): Record>; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Create new theme */ createTheme(): void; /** * Update existing theme */ updateTheme(): void; /** * Edit theme */ editTheme(theme: ICoreSytm): void; /** * Delete theme */ deleteTheme(theme: ICoreSytm): void; /** * Toggle theme status */ toggleThemeStatus(theme: ICoreSytm): void; /** * Save theme (create or update) */ saveTheme(): void; /** * Cancel form */ cancelForm(): void; /** * Go back to page list */ goBack(): void; /** * Reset form */ private resetForm; /** * Mark form as touched to trigger validation display */ private markFormAsTouched; /** * Get dropdown items for actions */ getActionDropdownItems(theme: ICoreSytm): DropdownItem[]; /** * Handle dropdown item click * This method handles clicks on dropdown menu items in the actions column */ onDropdownItemClick(item: DropdownItem, row: ICoreSytm): void; /** * Close all dropdowns */ private closeAllDropdowns; drawerConfigOptions: { value: string; label: string; }[]; get drawerArray(): FormArray; private createDrawerGroup; addDrawer(): void; removeDrawer(index: number): void; /** Parse syth_config_json string to object/array for API payload. */ private normalizeDrawerPayload; /** * Set selected theme (only one can be selected per page) */ setSelectedTheme(theme: ICoreSytm): void; getPreviewImageUploadData(): FileUploadData; onPreviewImageUploadSuccess(fileId: string): void; onPreviewImageUploadError(error: string): void; onPreviewImageUploadProgress(progress: number): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCorePageControlsComponent implements OnInit { private destroyRef; private controlsService; private appState; private fb; private router; private route; Math: Math; controls: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; pageId: _angular_core.WritableSignal; pageTitle: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; editingControlId: _angular_core.WritableSignal; retrievedControl: _angular_core.WritableSignal; selectedControlId: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; controlForm: _angular_forms.FormGroup<{ sype_key: _angular_forms.FormControl; sype_label: _angular_forms.FormControl; sype_label_hide: _angular_forms.FormControl; sype_auto_complete: _angular_forms.FormControl; sype_hide_helper_and_error_text: _angular_forms.FormControl; sype_type: _angular_forms.FormControl; sype_option_key: _angular_forms.FormControl; sype_placeholder: _angular_forms.FormControl; sype_min_length: _angular_forms.FormControl; sype_max_length: _angular_forms.FormControl; sype_regex: _angular_forms.FormControl; sype_required: _angular_forms.FormControl; sype_disabled: _angular_forms.FormControl; sype_width: _angular_forms.FormControl; sype_height: _angular_forms.FormControl; sype_label_placement: _angular_forms.FormControl<"fixed" | "floating">; sype_helper_text_collapse: _angular_forms.FormControl; sype_default: _angular_forms.FormControl; sype_tooltip: _angular_forms.FormControl; sype_size: _angular_forms.FormControl<"xs" | "sm" | "md" | "lg" | "xl" | "3xs" | "2xs" | "xxl">; sype_leading_icon: _angular_forms.FormControl; sype_isactive: _angular_forms.FormControl; sype_entity_id_syen: _angular_forms.FormControl; }>; isFormDirty: _angular_core.Signal; ngOnInit(): void; /** * Initialize component */ private initializeComponent; /** * Set entity ID from app state - auto-assigned internally */ private setEntityIdFromAppState; /** * Load controls from API */ private loadControls; /** * Setup form subscriptions */ private setupFormSubscriptions; /** * Create new control */ createControl(): void; /** * Update existing control */ updateControl(): void; /** * Edit control */ editControl(control: ICoreSype): void; /** * Delete control */ deleteControl(control: ICoreSype): void; /** * Toggle control status */ toggleControlStatus(control: ICoreSype): void; /** * Save control (create or update) */ saveControl(): void; /** * Cancel form */ cancelForm(): void; /** * Go back to page list */ goBack(): void; /** * Reset form */ private resetForm; /** * Mark form as touched to trigger validation display */ private markFormAsTouched; /** * Get dropdown items for actions */ getActionDropdownItems(control: ICoreSype): DropdownItem[]; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, control: ICoreSype): void; /** * Close all dropdowns */ closeAllDropdowns(): void; selectControl(control: ICoreSype): void; trackByControlId(index: number, control: ICoreSype): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCorePageManagementService { private http; constructor(http: HttpClient); /** * Get page list from API */ getPageList(body: MSystemPages): Observable; /** * Create or update page using single API endpoint */ createOrUpdatePage(payload: MSystemPagesInsertUpdatePayload): Observable; /** * Get page by ID */ getPageById(id: string): Observable; /** * Delete page */ deletePage(id: string): Observable; /** * Toggle page active status */ togglePageStatus(payload: MSystemPagesToggleStatusPayload): Observable; /** * Find page by ID using API */ findPageById(payload: MSystemPagesCheckCodeExistsPayload): Observable; /** * Check if page code already exists */ checkPageCodeExists(payload: MSystemPagesCheckCodeExistsPayload): Observable; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCorePageThemeService { private http; private apiUrl; constructor(http: HttpClient); /** * Get theme list from API */ getThemeList(body: MSystemPagesTheme): Observable; /** * Create new theme */ createTheme(payload: MSystemPagesThemeInsertUpdatePayload): Observable; /** * Update existing theme */ updateTheme(payload: MSystemPagesThemeInsertUpdatePayload): Observable; /** * Get theme by ID */ getThemeById(id: string): Observable; /** * Get themes by page ID */ getThemesByPageId(pageId: string): Observable; /** * Delete theme */ deleteTheme(id: string): Observable; /** * Toggle theme active status */ toggleThemeStatus(payload: MSystemPagesThemeToggleStatusPayload): Observable; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCorePageControlsService { private http; constructor(http: HttpClient); /** * Get control list from API */ getControlList(body: MPageElements): Observable; /** * Create new control */ createControl(payload: MPageElementsInsertUpdatePayload): Observable; /** * Update existing control */ updateControl(payload: MPageElementsInsertUpdatePayload): Observable; /** * Get control by ID */ getControlById(id: string): Observable; /** * Get controls by page ID */ getControlsByPageId(pageId: string): Observable; /** * Get control mappings by page ID */ getControlMappingsByPageId(pageId: string): Observable; /** * Create control mapping */ createControlMapping(payload: MPageElementsMappingInsertUpdatePayload): Observable; /** * Delete control mapping */ deleteControlMapping(id: string): Observable; /** * Delete control */ deleteControl(id: string): Observable; /** * Toggle control active status */ toggleControlStatus(payload: MPageElementsToggleStatusPayload): Observable; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } interface EntityMappingForCopy { entityId: string; entityName: string; entityCode?: string; roleId?: string; roleName?: string; } interface CoreUserRoleExceptionsWithTracking extends CoreUserRoleExceptions { _isUserAdded?: boolean; _isUserRemoved?: boolean; _changeType?: string; } declare class CideCoreUserCreateComponent { private destroyRef; private fb; private cdr; private userMasterService; private entityService; private designationService; private departmentService; private CideCoreGeneralMasterService; private generalMasterTypeService; private pinCodeService; private countryService; private userRoleService; private menuService; private router; private route; private appState; private floatingFeaturesService; private floatingContainerService; private fileManagerService; private sharedObjectIdService; private entityRightsService; private notificationService; private rightsService; userMasterForm: FormGroup; activeTab: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; userId: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; showPasswordFields: _angular_core.WritableSignal; isViewingOwnProfile: _angular_core.Signal; userType: _angular_core.WritableSignal; typeSpecificId: _angular_core.WritableSignal; userTypeFromQueryParams: _angular_core.WritableSignal; showTypeSpecificId: _angular_core.Signal; userTypeOptions: { value: string; label: string; }[]; pageCode: _angular_core.Signal<"academics_teacher_create" | "academics_student_create" | "core_user_management_create">; breadcrumbData: _angular_core.Signal<{ id: string; label: string; icon?: string; url?: string; }[]>; profilePhotoPreview: _angular_core.WritableSignal; contactAddresses: _angular_core.WritableSignal; documents: _angular_core.WritableSignal; familyDetails: _angular_core.WritableSignal; entityMappings: _angular_core.WritableSignal; menuRightsMap: _angular_core.WritableSignal<{ [mappingIndex: string]: MenuWithPermissions[]; }>; allUserTypeMappings: _angular_core.WritableSignal; targetMappingIndexForCopy: _angular_core.WritableSignal; private rolePermissionsCache; private loadedMappingData; selectedEntityForMapping: _angular_core.WritableSignal; userRightsTypeId: _angular_core.WritableSignal; permissions: _angular_core.WritableSignal; Object: ObjectConstructor; /** * Get address type label for header display */ getAddressTypeLabel(addressIndex: number): string; /** * Handle address type change to update header */ onAddressTypeChange(addressIndex: number): void; /** * Share address using floating entity rights sharing service */ shareAddress(addressIndex: number): void; /** * Get document type label for header display */ getDocumentTypeLabel(documentIndex: number): string; /** * Handle document type change to update header */ onDocumentTypeChange(documentIndex: number): void; /** * Check if user is owner for address sharing */ isAddressOwner(addressIndex: number): boolean; /** * Check if user has edit rights for contact address */ hasContactAddressEditRights(addressIndex: number): boolean; /** * Check if user has edit rights for document at given index */ hasDocumentEditRights(documentIndex: number): boolean; /** * Check if user has edit rights for family detail at given index */ hasFamilyDetailEditRights(familyIndex: number): boolean; /** * Check if user has edit rights for adding new contact addresses * This checks if the user has core_entity_access_pass_management with syepm_can_edit true */ hasAddContactAddressRights(): boolean; /** * Check if user has edit rights for adding new documents */ hasAddDocumentRights(): boolean; /** * Check if user has edit rights for adding new family details */ hasAddFamilyDetailRights(): boolean; /** * Share document rights using floating entity rights sharing component */ shareDocumentRights(documentIndex: number): void; /** * Share family detail rights using floating entity rights sharing component */ shareFamilyDetailRights(familyIndex: number): void; /** * Find existing exception by combination of user, mapping, permission, and menu */ private findExistingException; /** * Process exceptions for each entity mapping based on modified vs actual permissions * This method should be called during save to create/update/delete core_user_role_exceptions * * Logic: * - If modified !== actual: create/update exception * - If modified === actual BUT exception exists in DB: delete exception * - If modified === actual AND no exception exists: do nothing * - Also process all existing exceptions from DB to ensure nothing is missed */ processRoleExceptions(): CoreUserRoleExceptions[]; /** * Get exceptions for a specific entity mapping */ getExceptionsForMapping(mappingIndex: number): CoreUserRoleExceptions[]; private applyContactAddressAccessControl; /** * Apply access control to document FormArray * This method disables/enables form controls based on user permissions */ private applyDocumentAccessControl; /** * Apply access control to family detail FormArray * This method disables/enables form controls based on user permissions */ private applyFamilyDetailAccessControl; /** * Handle document files selection */ onDocumentFilesSelected(event: Event, documentIndex: number): void; /** * Get document group ID */ getDocumentGroupId(documentIndex: number): string; /** * Get uploaded files for a document (legacy method for backward compatibility) */ getDocumentFiles(documentIndex: number): File[]; /** * Remove a file from document (legacy method for backward compatibility) */ removeDocumentFile(documentIndex: number, fileName: string): void; constructor(); get entityMappingsFormArray(): FormArray; get contactAddressesFormArray(): FormArray; get documentsFormArray(): FormArray; get familyDetailsFormArray(): FormArray; userSearchResults: _angular_core.WritableSignal<{ [familyIndex: number]: AuthUserMst[]; }>; userSearchLoading: _angular_core.WritableSignal<{ [familyIndex: number]: boolean; }>; private searchDebounceTimers; private createEntityMappingFormGroup; private createContactAddressFormGroup; private createDocumentFormGroup; private createFamilyDetailFormGroup; userTabs(): { id: string; label: string; icon: string; }[]; searchUsers(query?: string, familyIndex?: number): void; userOptions(familyIndex?: number): AuthUserMst[]; onUserSearchChange(searchEvent: selectSearchType, familyIndex: number): void; loadInitialUsers(): void; onUserSelectionChange(event: AuthUserMst, familyIndex: number): void; entityOptions: _angular_core.WritableSignal; roleOptions: _angular_core.WritableSignal<{ [entityId: string]: CoreUserRoleResponse[]; }>; designationOptions: _angular_core.WritableSignal<{ [entityId: string]: ICoreSydsg[]; }>; departmentOptions: _angular_core.WritableSignal<{ [entityId: string]: ICoreSydept[]; }>; menuOptions: _angular_core.WritableSignal; rolePermissionsGridConfig: _angular_core.WritableSignal>; selectedRoleId: _angular_core.WritableSignal; selectedEntityIndex: _angular_core.WritableSignal; menuDetailsRendererTemplate: _angular_core.Signal>> | undefined>; permissionsCheckboxRendererTemplate: _angular_core.Signal>> | undefined>; menuTypeRendererTemplate: _angular_core.Signal>> | undefined>; menuRightsPermissionsRendererTemplate: _angular_core.Signal>> | undefined>; permissionsRendererTemplate: _angular_core.Signal>> | undefined>; addressTypeOptions: _angular_core.WritableSignal; documentTypeOptions: _angular_core.WritableSignal; photoGroupOptions: _angular_core.WritableSignal; documentVerificationStatusOptions: _angular_core.WritableSignal; documentKycStatusOptions: _angular_core.WritableSignal; bloodGroupOptions: _angular_core.WritableSignal; relationshipOptionsData: _angular_core.WritableSignal; addressPostalCodes: _angular_core.WritableSignal<{ [addressIndex: number]: pinCodeSelectResponseData[]; }>; addressCountries: _angular_core.WritableSignal<{ [addressIndex: number]: ICoreSyctr[]; }>; addressPostalCodesLoading: _angular_core.WritableSignal<{ [addressIndex: number]: boolean; }>; addressCountriesLoading: _angular_core.WritableSignal<{ [addressIndex: number]: boolean; }>; postalCodeDataCache: _angular_core.WritableSignal<{ [addressIndex: number]: pinCodeSelectResponseData[]; }>; ngOnInit(): void; /** * Initialize component */ private initializeComponent; /** * Setup floating uploader with current user ID */ private setupFloatingUploader; /** * Setup form subscriptions */ private setupFormSubscriptions; /** * Set entity ID from app state for new user creation */ private setEntityIdFromAppState; /** * Cleanup when component is destroyed */ ngOnDestroy(): void; /** * Update password validation based on create/edit mode */ private updatePasswordValidation; /** * Custom validator for password confirmation */ private passwordMatchValidator; /** * Check if password update is required (edit mode with password fields filled or triggered) */ isPasswordUpdateRequired(): boolean; /** * Add default entity mapping with active entity */ private addDefaultEntityMapping; /** * Load user data for edit mode */ private loadUserData; /** * Populate form with user data */ private populateFormWithUserData; private loadDropdownOptions; relationshipOptions(): ICoreSygms[]; onTabChange(tab: TabItem): void; addEntityMapping(): void; /** * Get available entities for selection (excluding already mapped ones) */ getAvailableEntitiesForSelection(): CoreSystemEntityListResponse[]; /** * Show entity selection in floating drawer */ showEntitySelectionDrawer(): void; /** * Close entity selection drawer */ closeEntitySelectionDrawer(): void; /** * Select entity for mapping from drawer */ selectEntityForMapping(entityId: string): void; /** * Create entity mapping with pre-selected entity */ addEntityMappingWithEntity(entityId: string): void; /** * Show copy role from entity drawer * @param targetMappingIndex Index of the mapping to copy TO */ showCopyRoleFromEntityDrawer(targetMappingIndex: number): void; /** * Get available entity mappings for copying (excluding the target mapping) * @param excludeIndex Index of mapping to exclude */ getAvailableMappingsForCopy(excludeIndex: number): EntityMappingForCopy[]; /** * Copy role, department, designation, and menu rights from one entity mapping to another * @param sourceEntityId Entity ID of the source mapping to copy FROM */ copyRoleFromEntityMapping(sourceEntityId: string): void; /** * Close copy role from entity drawer */ closeCopyRoleFromEntityDrawer(): void; /** * Handle entity mapping card state change (expand/collapse) * Load data lazily when card is expanded */ onEntityMappingCardStateChange(state: string, mappingIndex: number): void; removeEntityMapping(index: number): void; onEntityChange(mappingIndex: number, event: string | CoreSystemEntityListResponse | AuthUserCoreEntityMapping): void; /** * Trigger update of entity dropdowns to reflect changes in selected entities */ private triggerEntityDropdownUpdate; onDepartmentChange(event: ICoreSydept): void; getRoleOptionsForEntity(mappingIndex: number): CoreUserRoleResponse[]; /** * Get filtered entity options with disabled state for already selected entities in other mappings * @param currentMappingIndex The index of the current mapping being edited * @returns Entity options with disabled state for already selected entities */ getFilteredEntityOptions(currentMappingIndex: number): (CoreSystemEntityListResponse & { disabled?: boolean; })[]; /** * Check if all entities are already selected in other mappings * @param currentMappingIndex The index of the current mapping being edited * @returns True if all entities are already selected */ isAllEntitiesSelected(currentMappingIndex: number): boolean; /** * Check if all entities are already mapped (for disabling Add Entity Mapping button) * @returns True if all entities are already mapped */ isAllEntitiesMapped(): boolean; /** * Clear department selection for a specific mapping */ private clearDepartmentForMapping; /** * Clear role selection for a specific mapping */ private clearRoleForMapping; /** * Load departments for a specific entity */ private loadDepartmentsForEntity; /** * Load roles for a specific entity */ private loadRolesForEntity; /** * Get department options for a specific entity mapping */ getDepartmentOptionsForEntity(mappingIndex: number): ICoreSydept[]; getDesignationOptionsForEntity(mappingIndex: number): ICoreSydsg[]; /** * Initialize role permissions grid configuration */ private initializeRolePermissionsGrid; /** * Handle role selection change */ onRoleChange(mappingIndex: number, role: CoreUserRoleResponse): void; /** * Load role permissions from API (with caching) */ private loadRolePermissions; /** * Update permission values for a specific menu row */ updateMenuPermissionValues(mappingIndex: number, menuId: string): void; /** * Store role permissions for simple lookup */ private storeRolePermissions; /** * Clear role permissions */ private clearRolePermissions; /** * Find mapping index by entity mapping ID */ private findMappingIndexByEntityMappingId; /** * Handle grid events for role permissions */ onRolePermissionsGridEvent(event: GridEvent): void; /** * Get template renderers for role permissions grid */ get templateRenderers(): { menuDetailsRenderer: TemplateRef>> | undefined; permissionsCheckboxRenderer: TemplateRef>> | undefined; menuTypeRenderer: TemplateRef>> | undefined; }; /** * Get permission by ID */ getPermissionById(permissionId: string): ICoreSygms | undefined; /** * Check if permission is available in the selected role for a specific menu */ isPermissionInRole(permissionId: string, mappingIndex: number, menuId?: string): boolean; /** * Get form control value for a permission */ getFormControlValue(row: ICoreSyme, permissionId: string): boolean; /** * Handle permission change with type safety */ onPermissionChangeSafe(checked: inputType, row: ICoreSyme, permissionId: string): void; /** * Handle permission change */ onPermissionChange(checked: boolean, row: ICoreSyme, permissionId: string): void; /** * Update the modified value for a specific permission */ private updatePermissionModifiedValue; /** * Handle permission change for specific mapping */ onPermissionChangeForMapping(checked: boolean, row: ICoreSyme, permissionId: string, mappingIndex: number): void; /** * Get current mapping index (helper method) */ private getCurrentMappingIndex; /** * Add role exception */ addRoleException(mappingIndex: number, menuId: string, permissionId: string): void; /** * Remove role exception */ removeRoleException(mappingIndex: number, menuId: string, permissionId: string): void; /** * Collect only changed role exceptions from entity mappings */ collectRoleExceptions(): Array<{ syusrex_user_entity_mapping_id_syenm: string; syusrex_role_id_syusrol: string; syusrex_role_permissions_id_sygms: string; syusrex_menu_id_syme: string; syusrex_isactive: boolean; _changeType: string; }>; /** * Check if permission is selected for a menu */ isPermissionSelected(menuId: string, permissionId: string): boolean; /** * Handle permission checkbox change (read-only in this context) */ onPermissionCheckboxChange(menuId: string, permissionId: string, isSelected: boolean): void; /** * Check if a menu has child menus with permissions */ hasChildMenusWithPermissions(menuId: string): boolean; /** * Update menu rights grid data to force refresh */ updateMenuRightsGridData(mappingIndex: number): void; /** * Get menu rights grid configuration for a specific mapping */ getMenuRightsGridConfig(mappingIndex: number): GridConfiguration; /** * Get template renderers for menu rights grid */ getMenuRightsTemplateRenderers(mappingIndex: number): { menuDetailsRenderer: TemplateRef>> | undefined; menuTypeRenderer: TemplateRef>> | undefined; permissionsRenderer: TemplateRef>> | undefined; }; /** * Handle menu rights grid events */ onMenuRightsGridEvent(event: GridEvent, mappingIndex: number): void; addPermissionException(mappingIndex: number): void; removePermissionException(mappingIndex: number, exceptionIndex: number): void; private removePermissionExceptionControls; getPermissionExceptions(mappingIndex: number): CoreUserRoleExceptionsWithTracking[]; getMenuRightsForMapping(mappingIndex: number): MenuWithPermissions[]; loadMenuRights(mappingIndex: number): void; refreshMenuRights(mappingIndex: number): void; clearMenuRightsForMapping(mappingIndex: number): void; /** * Load user rights type ID from general master types */ private loadUserRightsTypeId; /** * Load permissions from general master */ private loadPermissions; hasRoleRight(menuRight: MenuRight, permission: string): boolean; canOverrideRight(menuRight: MenuRight, permission: string): boolean; hasExceptionForMenu(mappingIndex: number, menuId: string): boolean; onDefaultEntityChange(mappingIndex: number, event: EventWithQuery | Event): void; onActiveMappingChange(mappingIndex: number, event: Event): void; getDefaultEntityName(): string; hasDefaultEntity(): boolean; getUserFullName(): string; generateFullName(): void; onNameFieldChange(): void; getUserUsername(): string; getUserEmail(): string; getUserMobile(): string; getUserActivePeriod(): string; getUserActiveStatus(): boolean; getUserPhoto(): string | null; getEntityMappingCount(): number; /** * Get entity ID from a mapping form group by index * @param mappingIndex - Index of the entity mapping * @returns Entity ID string or undefined */ /** * Get role ID from mapping by index */ getRoleIdFromMapping(mappingIndex: number): string | undefined; getEntityIdFromMapping(mappingIndex: number): string | undefined; /** * Get entity name from mapping for display purposes */ getEntityNameFromMapping(mappingIndex: number): string; /** * Check if a user type mapping belongs to a specific entity * @param typeMapping - User type mapping to check * @param entityId - Entity ID to compare against * @returns True if the mapping belongs to the entity */ isUserTypeMappingForEntity(typeMapping: CoreUserTypeMapping, entityId: string | undefined): boolean; /** * Get user type mappings for a specific entity * @param entityId - Entity ID to filter mappings (can be string or object with _id property) * @returns Array of user type mappings for the entity */ getUserTypeMappingsForEntity(entityId: string | { _id?: string; } | undefined): CoreUserTypeMapping[]; /** * Get user type label for display */ getUserTypeLabel(userTypeOverride?: string): string; /** * Handle profile photo upload success */ onProfilePhotoUploadSuccess(fileId: string): void; /** * Handle profile photo upload error */ onProfilePhotoUploadError(error: string): void; /** * Handle profile photo upload progress */ onProfilePhotoUploadProgress(progress: number): void; /** * Get upload data for profile photo */ getProfilePhotoUploadData(): { altText: string; userId: string; permissions: string[]; tags: string[]; uploadType: string; }; /** * Get upload data for document files with group ID */ getDocumentUploadData(documentIndex: number): { altText: string; userId: string; groupId: any; permissions: string[]; tags: string[]; uploadType: string; documentIndex: number; documentType: any; documentNumber: any; }; /** * Handle document upload success * For multiple file upload, uploadResponse is the group ID */ onDocumentUploadSuccess(groupId: string, documentIndex: number): void; /** * Handle document upload error */ onDocumentUploadError(error: Error | string, documentIndex: number): void; /** * Handle document upload progress */ onDocumentUploadProgress(progress: number, documentIndex: number): void; /** * Load profile photo preview for existing photos */ private loadProfilePhotoPreview; addContactAddress(): void; removeContactAddress(index: number): void; addDocument(): void; removeDocument(index: number): void; addFamilyDetail(): void; removeFamilyDetail(index: number): void; onSubmit(): void; resetForm(): void; /** * Go back to user list */ goBackToUserList(): void; /** * Cancel form and optionally navigate back */ cancelForm(): void; /** * Get page title based on mode */ getPageTitle(): string; /** * Check if password fields should be shown in the UI */ shouldShowPasswordFields(): boolean; /** * Get password field label based on mode */ getPasswordFieldLabel(): string; /** * Get password confirmation field label based on mode */ getPasswordConfirmLabel(): string; /** * Get password validation error message */ getPasswordError(): string | null; /** * Get confirm password validation error message */ getConfirmPasswordError(): string | null; /** * Check if password field has error */ hasPasswordError(): boolean; /** * Check if confirm password field has error */ hasConfirmPasswordError(): boolean; /** * Check if password fields have any input */ hasPasswordInput(): boolean; /** * Trigger password update mode (for edit mode) */ triggerPasswordUpdate(): void; /** * Cancel password update mode (for edit mode) */ cancelPasswordUpdate(): void; /** * Load countries for a specific address dropdown */ loadCountriesForAddress(addressIndex: number): void; /** * Search countries with filter for a specific address */ onCountrySearch(event: EventWithQuery | selectSearchType, addressIndex: number): void; /** * Search postal codes for a specific address */ onPostalCodeSearch(event: EventWithQuery | selectSearchType, addressIndex: number): void; /** * Handle postal code selection to auto-fill city, state, country */ onPostalCodeSelection(event: pinCodeSelectResponseData, addressIndex: number): void; /** * Check if a country is already in the dropdown for a specific address */ private isCountryInDropdown; /** * Load a specific country for postal code auto-fill */ private loadCountryForPostalCode; /** * Get postal code data from the API response cache */ private getPostalCodeDataFromResponse; /** * Load address types from general master service (async, non-blocking) */ private loadAddressTypes; /** * Load document types from general master service (async, non-blocking) */ private loadDocumentTypes; /** * Load document verification status from general master service (async, non-blocking) */ private loadDocumentVerificationStatus; /** * Load document KYC status from general master service (async, non-blocking) */ private loadDocumentKycStatus; /** * Load blood groups from general master service (async, non-blocking) */ private loadBloodGroups; /** * Load relationship options from general master service (async, non-blocking) */ private loadRelationshipOptions; /** * Load menu options from API */ private loadMenuOptions; /** * Load dropdown data for existing addresses in edit mode */ private loadDropdownDataForExistingAddresses; /** * Generate Object ID for new user creation * Uses the shared object ID service to generate a unique ObjectId * @returns Promise - The generated ObjectId */ generateObjectId(): Promise; /** * Generate Object ID for user-related entities (addresses, documents, family details) * Uses the shared object ID service for consistency * @returns Promise - The generated ObjectId */ generateEntityObjectId(): Promise; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface PermissionValue { checked: boolean; permission: ICoreSygms; actual: boolean; modified: boolean; } interface PermissionValues { [permissionId: string]: PermissionValue; } interface MenuWithPermissions extends ICoreSyme { _permissionValues?: PermissionValues; _rolePermissions?: Array<{ _id: string; sygms_title: string; menu_id?: string; }>; [key: string]: unknown; } interface MenuRight { role_rights: string[]; [key: string]: unknown; } interface EventWithQuery { query?: string; value?: string; target?: { checked?: boolean; }; checked?: boolean; [key: string]: unknown; } type AuthUserMstCreatePayload = any; type AuthUserMstGetByIdPayload = any; type authUserMstCreateControllerResponse = any; type authUserMstGetByIdControllerResponse = any; declare class CideCoreUserMasterService { private http; /** * Save or update user master data using proper API endpoint * @param data - User master data to save (either form data or AuthUserMstCreatePayload) * @returns Observable of the save response */ saveUpdateUserMaster(data: AuthUserMstCreatePayload): Observable; /** * Get user master by ID * @returns Observable of user master data */ getUserMasterById(payload: AuthUserMstGetByIdPayload): Observable; /** * Delete user master * @param userId - User ID to delete * @returns Observable of the delete response */ deleteUserMaster(userId: string): Observable; /** * Get list of users using the proper API endpoint * @param payload - AuthUserMstListPayload for filtering/pagination * @returns Observable of response */ getUserList(payload: AuthUserMstListPayload): Observable; /** * Toggle user status * @param userId - User ID to toggle status * @returns Observable of response */ toggleUserStatus(userId: string): Observable; /** * Delete user * @param userId - User ID to delete * @returns Observable of response */ deleteUser(userId: string): Observable; /** * Generate Object ID for new user creation * Calls the backend API to generate a unique ObjectId for new users * @returns Observable with the generated ObjectId */ generateObjectId(): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCoreUserListComponent implements OnInit, AfterViewInit { router: Router; route: ActivatedRoute; userMasterService: CideCoreUserMasterService; appState: AppStateHelperService; sharedService: CideLytSharedService; private notificationService; private rightsService; private destroyRef; gridComponent: CideEleDataGridComponent; actionsTemplate: TemplateRef; userDetailsTemplate: TemplateRef; contactInfoTemplate: TemplateRef; organizationTemplate: TemplateRef; validityTemplate: TemplateRef; statusTemplate: TemplateRef; users: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; totalPages: _angular_core.WritableSignal; pageTitle: _angular_core.WritableSignal; pageSubtitle: _angular_core.WritableSignal; pageCode: _angular_core.Signal<"academics_teacher_list" | "academics_student_list" | "auth_user_mst">; shared_wrapper_setup_param: _angular_core.Signal<{ sypg_page_code: string; }>; constructor(); searchQuery: _angular_core.WritableSignal; sortColumn: _angular_core.WritableSignal; sortDirection: _angular_core.WritableSignal<"asc" | "desc">; userType: _angular_core.WritableSignal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; gridConfig: _angular_core.WritableSignal>; templateRenderers: Record>; ngOnInit(): void; ngAfterViewInit(): void; onGridEvent(event: GridEvent): void; onUserRowClick(user: any): void; onUserRefresh(): void; onUserSearch(query: string): void; onUserPageChange(page: number): void; onPageSizeChange(pageSize: number): void; onUserSort(sortData: { column: string; direction: 'asc' | 'desc'; }): void; onDeleteUserConfirmed(userId: string): void; private updateGridData; loadUsersFromServer(isRefresh?: boolean): void; onViewUser(user: any): void; onEditUser(user: any): void; onManageAddresses(user: any): void; onManageDocuments(user: any): void; onManageFamily(user: any): void; onResetPassword(user: any): void; onToggleUserStatus(user: any): void; onDeleteUser(user: any): void; onAddUser(): void; formatDate(dateString: string | undefined): string; isDateExpired(dateString: string | undefined): boolean; getValidityEndText(dateString: string | undefined): string; getUserInitials(firstName: string, lastName: string): string; getPasswordChangeText(requiresChange: boolean): string; private getUserTypeFromRow; getDropdownItems(user: AuthUserMst): DropdownItem[]; onDropdownItemClick(item: DropdownItem, user: AuthUserMst): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreRoleSelectService { private http; /** * Get role options for user master form * @returns Observable of role options */ getRoleOptions(): Observable; /** * Get role list with default parameters * @returns Observable of role list */ getAllRoles(): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCoreUserAttributesComponent implements OnInit { private fb; private route; private router; isEditMode: _angular_core.WritableSignal; isSubmitting: _angular_core.WritableSignal; attributeForm: FormGroup; ngOnInit(): void; private initializeForm; private checkEditMode; private loadAttribute; onSubmit(): void; private markFormGroupTouched; goBack(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreUserContactAddressesComponent implements OnInit { private fb; private route; private router; isEditMode: _angular_core.WritableSignal; isSubmitting: _angular_core.WritableSignal; contactAddressForm: FormGroup; ngOnInit(): void; private initializeForm; private checkEditMode; private loadContactAddress; onSubmit(): void; private markFormGroupTouched; goBack(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreUserDocumentsComponent implements OnInit { private fb; private route; private router; isEditMode: _angular_core.WritableSignal; isSubmitting: _angular_core.WritableSignal; documentForm: FormGroup; ngOnInit(): void; private initializeForm; private checkEditMode; private loadDocument; onSubmit(): void; private markFormGroupTouched; goBack(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreUserEntityAccessComponent implements OnInit { private fb; private route; private router; isEditMode: _angular_core.WritableSignal; isSubmitting: _angular_core.WritableSignal; accessForm: FormGroup; ngOnInit(): void; private initializeForm; private checkEditMode; private loadAccess; onSubmit(): void; private markFormGroupTouched; goBack(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreUserFamilyDetailsComponent implements OnInit { private fb; private route; private router; isEditMode: _angular_core.WritableSignal; isSubmitting: _angular_core.WritableSignal; familyForm: FormGroup; ngOnInit(): void; private initializeForm; private checkEditMode; private loadFamilyMember; onSubmit(): void; private markFormGroupTouched; goBack(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreUserRoleService { private readonly http; /** * Get list of user roles * @param payload - Query parameters for filtering/pagination * @returns Observable of user role list response */ getUserRoleList(payload: MUserRole): Observable; /** * Get user role by ID * @param payload - User role ID payload * @returns Observable of user role data */ getUserRoleById(payload: MUserRoleGetByIdPayload): Observable; /** * Create or update user role * @param data - User role data to save * @returns Observable of the save response */ saveUpdateUserRole(data: MUserRoleWithRightsPayload): Observable; /** * Delete user role * @param payload - User role ID payload * @returns Observable of the delete response */ deleteUserRole(payload: MUserRoleDeletePayload): Observable; /** * Toggle user role status * @param payload - User role ID payload * @returns Observable of the toggle response */ toggleUserRoleStatus(payload: MUserRoleToggleStatusPayload): Observable; /** * Get roles by entity ID * @param entityId - Entity ID to filter roles * @returns Observable of user role list response */ getRolesByEntity(entityId: string): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } interface UserRole { _id?: string; syusrol_role_name?: string; syusrol_role_description?: string; syusrol_role_entity_id_syen?: string | Entity; syusrol_isactive?: boolean; syusrol_islocked?: boolean; syusrol_created_by?: string; syusrol_created_at?: string | Date; syusrol_updated_by?: string; syusrol_updated_at?: string | Date; __v?: number; } interface UserRoleRight { _id?: string; syusrgt_role_id_syusrol?: string | UserRole; syusrgt_menu_id_syme?: string | Menu; syusrgt_role_permissions_id_sygms?: string | Permission; syusrgt_isactive?: boolean; syusrgt_created_by?: string; syusrgt_created_at?: string | Date; syusrgt_updated_by?: string; syusrgt_updated_at?: string | Date; __v?: number; } interface Entity { _id?: string; syen_name?: string; syen_code?: string; syen_description?: string; syen_isactive?: boolean; } interface Menu { _id?: string; syme_title?: string; syme_menu_name?: string; syme_menu_code?: string; syme_menu_description?: string; syme_desc?: string; syme_menu_url?: string; syme_path?: string; syme_icon?: string; syme_parent_id?: string; syme_isactive?: boolean; } interface Permission { _id?: string; sygms_name?: string; sygms_code?: string; sygms_description?: string; sygms_isactive?: boolean; } interface ApiResponse { success: boolean; code: number; data: T; total?: number; pageIndex?: number; pageSize?: number; message?: string; } interface UserRoleWithRights { core_user_role: UserRole; core_user_role_rights: UserRoleRight[]; } interface UserRoleListResponse { success: boolean; code: number; data: UserRole[]; total: number; message: string; } interface UserRoleWithRightsResponse { success: boolean; code: number; data: UserRoleWithRights; message: string; } declare class CideCoreUserRoleListComponent implements OnInit, OnDestroy { private readonly destroyRef; private readonly userRoleService; private readonly router; private readonly appState; private readonly notificationService; private readonly confirmationService; private readonly rightsService; userRoleDetailsRendererTemplate: _angular_core.Signal>>>; statusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; userRoles: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; totalPages: _angular_core.WritableSignal; searchQuery: _angular_core.WritableSignal; sortColumn: _angular_core.WritableSignal; sortDirection: _angular_core.WritableSignal<"asc" | "desc">; selectedStatusFilter: _angular_core.WritableSignal; get selectedStatusFilterValue(): string; set selectedStatusFilterValue(value: string); statusFilterOptions: _angular_core.WritableSignal<{ value: string; label: string; }[]>; gridConfig: _angular_core.WritableSignal>; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; canToggleStatus: _angular_core.Signal; ngOnInit(): void; ngOnDestroy(): void; /** * Load user roles from API */ loadUserRoles(): void; /** * Update grid data */ private updateGridData; templateRenderers: _angular_core.Signal>>>>; /** * Handle grid events */ onGridEvent(event: GridEvent): void; onStatusFilterChange(): void; clearFilters(): void; createUserRole(): void; viewUserRole(userRole: UserRole): void; editUserRole(userRole: UserRole): void; deleteUserRole(userRole: UserRole): void; toggleUserRoleStatus(userRole: UserRole): void; /** * Get dropdown configuration */ getDropdownConfig(): DropdownConfig; /** * Get action dropdown items */ getActionDropdownItems(userRole: UserRole): DropdownItem[]; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, userRole: UserRole): void; private handleExport; formatDate(date: string | Date): string; getStatusBadgeClass(userRole: UserRole): string; getStatusText(userRole: UserRole): string; getEntityName(entity: any): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreUserRoleFormComponent implements OnInit, OnDestroy { private readonly destroyRef; private readonly userRoleService; private readonly menuService; private readonly generalMasterService; private readonly generalMasterTypeService; private readonly floatingContainerService; /** Refetch permissions when general master list is invalidated elsewhere. */ private readonly generalMasterInvalidationEffect; private readonly router; private readonly route; private readonly appState; private readonly notificationService; private readonly confirmationService; private readonly fb; private readonly cdr; private readonly rightsService; private destroy$; userRoleForm: FormGroup; roleRightsForm: FormGroup; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; isViewMode: _angular_core.WritableSignal; userRoleId: _angular_core.WritableSignal; entities: _angular_core.WritableSignal; menus: _angular_core.WritableSignal; permissions: _angular_core.WritableSignal; originalRights: _angular_core.WritableSignal; userRightsTypeId: _angular_core.WritableSignal; viewPermissionId: _angular_core.WritableSignal; menuDetailsRendererTemplate: _angular_core.Signal>> | undefined>; permissionsCheckboxRendererTemplate: _angular_core.Signal>> | undefined>; get formTitle(): string; get submitButtonText(): string; roleRightsGridConfig: _angular_core.WritableSignal>; templateRenderers: _angular_core.Signal>>>>; ngOnInit(): void; ngOnDestroy(): void; /** * Initialize the forms */ private initializeForm; /** * Check for user role ID in query parameters */ private checkForUserRoleId; /** * Load master data (menus, permissions) */ private loadMasterData; /** * Load menus from API using the same service as menu listing */ private loadMenusFromAPI; /** * Load user rights type ID from general master type service */ private loadUserRightsTypeId; /** * Load permissions from general master service */ private loadPermissions; /** * Load user role data */ private loadUserRoleData; /** * Populate role rights form array */ private populateRoleRights; /** * Create role right form group */ private createRoleRightFormGroup; /** * Get role rights form array */ get roleRightsArray(): FormArray; /** * Add new role right */ addRoleRight(): void; /** * Remove role right */ removeRoleRight(index: number): void; /** * Get entity name by ID */ getEntityName(entityId: string): string; /** * Get menu name by ID */ getMenuName(menuId: string): string; /** * Get permission name by ID */ getPermissionName(permissionId: string): string; /** * Get permission names by IDs */ getPermissionNames(permissionIds: string[]): string; /** * Edit role right (focus on the form row) */ editRoleRight(index: number): void; /** * Toggle role right status */ toggleRoleRightStatus(index: number): void; /** * Handle grid events */ onRoleRightsGridEvent(event: GridEvent): void; /** * Handle form submission */ onSubmit(): void; /** * Get deleted rights IDs */ private getDeletedRightsIds; /** * Save user role */ private saveUserRole; /** * Handle cancel */ onCancel(): void; /** * Handle permission checkbox change */ onPermissionCheckboxChange(menuId: string, permissionId: string, isChecked: any): void; /** * Add a role right record for a specific permission */ private addRoleRightForPermission; /** * Remove a role right record for a specific permission */ private removeRoleRightForPermission; /** * Check if a permission is selected for a menu */ isPermissionSelected(menuId: string, permissionId: string): boolean; /** * Get permission by ID */ getPermissionById(permissionId: string): Permission | undefined; /** * Check if a parent menu has view right automatically set */ hasParentViewRight(menuId: string): boolean; /** * Test method to manually trigger parent view right (for debugging) */ testParentViewRight(menuId: string): void; /** * Get selected permissions for a menu (for debugging) */ getSelectedPermissionsForMenu(menuId: string): string; /** * Initialize role rights for all menu items * Note: We don't create role rights upfront - they are created only when permissions are selected */ private initializeRoleRightsForAllMenus; /** * Check if the form has any role rights with permissions */ hasAnyRoleRightsWithPermissions(): boolean; /** * Check if the form is ready to save */ get isFormReadyToSave(): boolean; /** * Check if a parent menu has any child menus with assigned permissions */ hasChildMenusWithPermissions(parentMenuId: string): boolean; /** * Show notification with proper change detection */ private showNotification; /** * Check if a menu is a child of a parent menu (including grandparent, great-grandparent, etc.) */ private isChildMenuOfParent; /** * Find parent menu for a given child menu */ private findParentMenu; /** * Find all parent menus in the hierarchy chain for a given child menu */ private findAllParentMenus; /** * Auto-check parent's view right when any child menu right is checked * This method now recursively checks all parent levels in the hierarchy */ private autoCheckParentViewRight; /** * Open copy role drawer using floating container service */ openCopyRoleDialog(): void; /** * Handle role selection from drawer */ private onRoleSelected; /** * Perform the actual role copy operation */ private performRoleCopy; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface DropdownOption { value: string; label: string; } interface UserEntityMappingWithDisplay extends AuthUserCoreEntityMapping { _displayUserName?: string; } declare class CideCoreEntityCreateComponent implements OnInit, OnDestroy { breadcrumbData: _angular_core.WritableSignal<{ id: string; label: string; icon?: string; url?: string; }[]>; entityForm: FormGroup; generatedEntityId: string | null; entityTypes: _angular_core.WritableSignal; currencies: _angular_core.WritableSignal; users: _angular_core.WritableSignal; postalCodes: _angular_core.WritableSignal; corporateCountries: _angular_core.WritableSignal; registeredCountries: _angular_core.WritableSignal; private pinCodeDataMap; private logoFile?; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; success: _angular_core.WritableSignal; postalCodesLoading: _angular_core.WritableSignal; usersLoading: _angular_core.WritableSignal; registeredCountriesLoading: _angular_core.WritableSignal; corporateCountriesLoading: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; entityId: _angular_core.WritableSignal; parentEntityId: _angular_core.WritableSignal; parentEntityName: _angular_core.WritableSignal; parentEntityLoading: _angular_core.WritableSignal; userEntityMappings: _angular_core.WritableSignal; userEntityMappingsLoading: _angular_core.WritableSignal; availableUsers: _angular_core.WritableSignal; availableUsersLoading: _angular_core.WritableSignal; userMappingForm: FormGroup; userMappingsGridConfig: GridConfiguration; userCellRendererTemplate: _angular_core.Signal> | undefined>; actionsCellRendererTemplate: _angular_core.Signal> | undefined>; /** * Get template renderers for user entity mappings grid */ getUserMappingsTemplateRenderers(): { userCell: TemplateRef> | undefined; actionsCell: TemplateRef> | undefined; }; activeTab: _angular_core.WritableSignal; entityTabs: _angular_core.WritableSignal; /** When true, Registered Address tab shows the form; when false, shows a click-to-reveal placeholder. */ registeredTabContentVisible: _angular_core.WritableSignal; private entityService; private CideCoreGeneralMasterService; private pinCodeService; private userService; private currencyService; private countryService; private appState; private notificationService; private fb; private route; private router; private fileManagerService; private sharedObjectIdService; private rightsService; private requestService; private educationBoardService; /** Refetch general-master dropdowns when general master list is invalidated elsewhere. */ private readonly generalMasterInvalidationEffect; private destroy$; boardAffiliations: _angular_core.WritableSignal; boardAffiliationsLoading: _angular_core.WritableSignal; educationBoards: _angular_core.WritableSignal; educationBoardsLoading: _angular_core.WritableSignal; boardAffiliationStatuses: _angular_core.WritableSignal; boardAffiliationStatusesLoading: _angular_core.WritableSignal; boardAffiliationLevels: _angular_core.WritableSignal; boardAffiliationLevelsLoading: _angular_core.WritableSignal; boardMappingForm: FormGroup; boardAffiliationsGridConfig: GridConfiguration; boardActionsCellRendererTemplate: _angular_core.Signal> | undefined>; getBoardMappingsTemplateRenderers(): { boardActionsCell: TemplateRef> | undefined; }; private globalErrorHandler?; private globalRejectionHandler?; private postalCodeSearchSubject; private userSearchSubject; private corporateCountrySearchSubject; private registeredCountrySearchSubject; constructor(); ngOnInit(): void; ngOnDestroy(): void; loadEducationBoards(): void; loadBoardAffiliationStatuses(): void; loadBoardAffiliationLevels(): void; loadBoardAffiliations(): void; addBoardAffiliation(): void; private checkForEntityId; private loadEntityData; private updateBreadcrumbForEditMode; updateBreadcrumbWithFormData(): void; private loadParentEntityData; private buildBreadcrumbItems; private buildDefaultBreadcrumbItems; private initializeTabs; loadUserEntityMappings(): void; loadAvailableUsers(): void; /** * Generate entity ID during form initialization * This ID will be used for the entity and its mappings */ private generateEntityId; addUserMapping(): void; removeUserMapping(mappingId: string): void; updateUserMapping(mappingId: string, updates: Partial): void; private populateFormWithEntityData; private setupPostalCodeListeners; private setupCountryListeners; private populateAddressFromPinCode; loadDropdowns(): void; private transformGeneralMasterToDropdown; private transformCurrencyToDropdown; private transformUserToDropdown; private transformPinCodeToDropdown; private transformCountryToDropdown; private loadCountryUsingExistingSearch; getControl(controlName: string): _angular_forms.AbstractControl | null; private setupDebouncedSearch; onPostalCodeSearch(event: selectSearchType): void; private performPostalCodeSearch; onUserSearch(event: selectSearchType): void; private performUserSearch; onCorporateCountrySearch(event: selectSearchType): void; private performCorporateCountrySearch; onRegisteredCountrySearch(event: selectSearchType): void; private performRegisteredCountrySearch; onPostalCodeSelection(event: Event | string): void; get isFormValid(): boolean; get currentMode(): string; get currentEntityId(): string | null; get pageTitle(): string; get pageSubtitle(): string; onFileChange(event: FileList | null): void; onTabChange(tab: TabItem): void; /** Show Registered Address form (called when user clicks the placeholder in that tab). */ showRegisteredAddressContent(): void; onSubmit(): void; onReset(): void; onImageUploadSuccess(uploadedId: string): void; onImageUploadError(error: string): void; onImageUploadProgress(progress: number): void; getUploadData(): { altText: string; userId: string; permissions: string[]; tags: string[]; uploadType: string; }; /** * Navigate back to the previous page */ onBack(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreEntityListComponent implements OnInit { shared_wrapper_setup_param: { sypg_page_code: string; }; router: Router; private entityService; private generalMasterService; private appState; private rightsService; private destroyRef; /** Refetch entity types when general master list is invalidated elsewhere (e.g. after add/update/delete). */ private readonly generalMasterInvalidationEffect; gridComponent: _angular_core.Signal | undefined>; entityDetailsRenderer: _angular_core.Signal>>; entityTypeRenderer: _angular_core.Signal>>; actionsDropdownRenderer: _angular_core.Signal>>; entities: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; searchQuery: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; entityTypeMap: _angular_core.WritableSignal>; entityTypesLoading: _angular_core.WritableSignal; totalPages: _angular_core.WritableSignal; hasNextPage: _angular_core.WritableSignal; hasPreviousPage: _angular_core.WritableSignal; jumpToPage: number; loadStartTime: number; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; gridConfig: _angular_core.WritableSignal>; templateRenderers: _angular_core.Signal>>>; getEntityTypeName(row: CoreSystemEntityListResponse): string; $any: (value: any) => any; getDropdownConfig(): {}; getDropdownItems(entity: CoreSystemEntityListResponse): DropdownItem[]; onDropdownItemClick(item: DropdownItem, entity: CoreSystemEntityListResponse): void; private editEntity; private addChildEntity; private toggleEntityStatus; private deleteEntity; actionHandlers: {}; ngOnInit(): void; loadEntityTypes(): void; onGridEvent(event: GridEvent): void; private onEntityRowClick; private onEntityRefresh; private onEntitySearch; private onEntityPageChange; private onDeleteEntityConfirmed; private updateGridData; loadEntities(isRefresh?: boolean): void; private updatePaginationState; onSearch(): void; onFilterChange(): void; onPageChange(page: number | string): void; onPageSizeChange(): void; onRefresh(): void; onAddEntity(): void; onEditEntity(entity: CoreSystemEntityListResponse): void; onViewEntity(entity: CoreSystemEntityListResponse): void; onDeleteEntity(entity: CoreSystemEntityListResponse): void; getStatusClass(isActive: boolean): string; getStatusText(isActive: boolean): string; formatDate(date: Date | string | undefined): string; getPageNumbers(): number[]; getItemRangeText(): string; trackByEntityId(index: number, entity: CoreSystemEntityListResponse): string; /** * Get enhanced page numbers with ellipsis for better navigation */ getEnhancedPageNumbers(): (number | string)[]; /** * Calculate progress percentage based on current position */ getProgressPercentage(): number; /** * Jump to specific page functionality */ onJumpToPage(): void; /** * Get simulated load time for performance display */ getLoadTime(): number; /** * Get total data size for display */ getTotalDataSize(): number; /** * Export current page entities */ onExportCurrentPage(): void; /** * Export all entities */ onExportAll(): void; /** * Navigate to organization structure page */ onOrgStructure(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreOrgStructureComponent implements OnInit { allowSwitching: _angular_core.InputSignal; showActions: _angular_core.InputSignal; mode: _angular_core.InputSignal<"view" | "selection">; entityClick: _angular_core.OutputEmitterRef; entitySelect: _angular_core.OutputEmitterRef; entityView: _angular_core.OutputEmitterRef; private entityService; router: Router; ngOnInit(): void; /** * Navigate back to entity list */ onBack(): void; /** * Handle entity click event from shared org structure */ onEntityClick(entity: CoreSystemEntityListResponse): void; /** * Handle entity select event from shared org structure */ onEntitySelect(entity: CoreSystemEntityListResponse): void; /** * Handle entity view event from shared org structure */ onEntityView(entity: CoreSystemEntityListResponse): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Entity Management Service for Core Project * * This service handles all entity management operations directly without dependencies on admin services. */ declare class CideCoreEntityManagementService implements IEntityService { private http; /** * Save or update entity data using coreRoutesUrl?.entity endpoint * @param data - Entity data to save/update * @returns Observable of the save response */ saveUpdateEntity(data: CoreSystemEntitySaveUpdatePayload): Observable; /** * Get entity by ID * @param entityId - ID of the entity to retrieve * @returns Observable of the entity data */ getEntityById(entityId: string): Observable; /** * Get list of entities using the proper API endpoint * @param body - MEntity payload for filtering/pagination * @returns Observable of entityControllerResponse */ getEntityList(body: MEntity): Observable; /** * Delete entity by ID * @param entityId - ID of the entity to delete * @returns Observable of the delete response */ deleteEntity(entityId: string): Observable; /** * Get School Board Affiliations for an Entity * @param entityId - ID of the entity * @returns Observable of controllerResponse */ getSchoolBoardAffiliations(entityId: string): Observable; /** * Save School Board Affiliation * @param payload - Affiliation data * @returns Observable of controllerResponse */ saveSchoolBoardAffiliation(payload: any): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCoreGeneralMasterTypeComponent implements OnInit { private destroyRef; private typeService; private fb; private router; private confirmationService; private notificationService; private rightsService; typeDetailsRendererTemplate: _angular_core.Signal>>>; typeStatusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; Math: Math; types: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; editingTypeId: _angular_core.WritableSignal; retrievedType: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; typeForm: _angular_forms.FormGroup<{ sygmt_code: _angular_forms.FormControl; sygmt_title: _angular_forms.FormControl; sygmt_desc: _angular_forms.FormControl; sygmt_configuration: _angular_forms.FormControl; sygmt_isactive: _angular_forms.FormControl; sygmt_id_sygmt: _angular_forms.FormControl; }>; isFormDirty: _angular_core.Signal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canView: _angular_core.Signal; isFormDisabled: _angular_core.WritableSignal; private updateDisabledState; gridConfig: _angular_core.WritableSignal>; actionHandlers: { onEdit: (item: ICoreSygmt) => void; onDelete: (item: ICoreSygmt) => void; onToggleStatus: (item: ICoreSygmt) => void; }; ngOnInit(): void; /** * Initialize component */ private initializeComponent; /** * Load types from API */ loadTypes(): void; /** * Setup form subscriptions */ private setupFormSubscriptions; /** * Update grid data */ private updateGridData; templateRenderers: _angular_core.Signal>>>>; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Create new type */ createType(): void; /** * Update existing type */ updateType(): void; /** * Edit type */ editType(type: ICoreSygmt): void; /** * Delete type */ deleteType(type: ICoreSygmt): void; /** * Toggle type status */ toggleTypeStatus(type: ICoreSygmt): void; /** * Navigate to general master management for this type */ navigateToGeneralMaster(type: ICoreSygmt): void; /** * Handle form submission event */ onSubmit(event: Event): void; /** * Save type (create or update) */ saveType(): void; /** * Cancel form (reset to defaults and exit edit mode) */ cancelForm(): void; /** * Mark form as touched to trigger validation display */ private markFormAsTouched; /** * Clear parent type relationship */ clearParentType(): void; /** * Get dropdown configuration with portal support */ getDropdownConfig(): { triggerIcon: string; triggerSize: "sm"; }; /** * Get dropdown items for actions */ getActionDropdownItems(type: ICoreSygmt): DropdownItem[]; /** * Get parent type display name */ getParentTypeDisplay(): string; /** * Handle adding a child type */ onAddChild(parentType: ICoreSygmt): void; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, row: ICoreSygmt): void; /** * Close all dropdowns */ private closeAllDropdowns; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * General Master Component * * Note: This component now uses the new IGeneralMasterListRequest interface * which only supports: * - sygms_id_sygmt: Filter by master type * - sygms_entity_id_syen: Filter by entity (with hierarchical lookup) * * Features like search, pagination, and parent filtering are not supported * in the current interface and would need backend implementation. */ declare class CideCoreGeneralMasterComponent implements OnInit { private destroyRef; private masterService; private typeService; private fb; private router; private route; private appState; private rightsService; private notificationService; private requestService; /** Refetch masters when list is invalidated elsewhere (e.g. another tab or component). */ private readonly listInvalidationEffect; masterDetailsRendererTemplate: _angular_core.Signal>>>; masterStatusRendererTemplate: _angular_core.Signal>>>; actionsDropdownRendererTemplate: _angular_core.Signal>>>; Math: Math; masters: _angular_core.WritableSignal; loading: _angular_core.WritableSignal; error: _angular_core.WritableSignal; selectedItems: _angular_core.WritableSignal; searchTerm: _angular_core.WritableSignal; selectedParentMaster: _angular_core.WritableSignal; typeId: _angular_core.WritableSignal; typeTitle: _angular_core.WritableSignal; currentType: _angular_core.WritableSignal; isEditMode: _angular_core.WritableSignal; editingMasterId: _angular_core.WritableSignal; retrievedMaster: _angular_core.WritableSignal; currentPage: _angular_core.WritableSignal; pageSize: _angular_core.WritableSignal; totalItems: _angular_core.WritableSignal; masterForm: _angular_forms.FormGroup<{ sygms_code: _angular_forms.FormControl; sygms_title: _angular_forms.FormControl; sygms_desc: _angular_forms.FormControl; sygms_configuration: _angular_forms.FormControl; sygms_id_sygms: _angular_forms.FormControl; sygms_entity_id_syen: _angular_forms.FormControl; sygms_isactive: _angular_forms.FormControl; }>; isFormDirty: _angular_core.Signal; canCreate: _angular_core.Signal; canEdit: _angular_core.Signal; canDelete: _angular_core.Signal; canToggleStatus: _angular_core.Signal; canResetToParent: _angular_core.Signal; canPerformActions: _angular_core.Signal; parentMasterOptions: _angular_core.WritableSignal<{ value: string; label: string; }[]>; gridConfig: _angular_core.Signal>; actionHandlers: { onEdit: (item: ICoreSygms) => void; onDelete: (item: ICoreSygms) => void; onToggleStatus: (item: ICoreSygms) => void; }; ngOnInit(): void; /** * Initialize component */ private initializeComponent; /** * Load type details */ private loadTypeDetails; /** * Load masters from API */ loadMasters(): void; /** * Load masters by entity ID */ loadMastersByEntity(entityId: string): void; /** * Load parent master options for dropdown */ private loadParentMasterOptions; /** * Setup form subscriptions */ private setupFormSubscriptions; /** * Normalize parent field to string ID for tree view */ private normalizeParentField; /** * Update grid data */ private normalizedMasters; private updateGridData; templateRenderers: _angular_core.Signal>>>>; /** * Handle grid events */ onGridEvent(event: GridEvent): void; /** * Create new master */ createMaster(): void; /** * Update existing master */ updateMaster(): void; /** * Edit master */ editMaster(master: ICoreSygms): void; /** * Copy master - opens form with same data for creating a new record */ copyMaster(master: ICoreSygms): void; /** * Delete master */ deleteMaster(master: ICoreSygms): void; /** * Toggle master status */ toggleMasterStatus(master: ICoreSygms): void; /** * Reset to parent (delete entity-specific override) */ resetToParent(master: ICoreSygms): void; /** * Save master (create or update) */ saveMaster(): void; /** * Cancel form */ cancelForm(): void; /** * Go back to type list */ goBack(): void; /** * Reset form */ resetForm(): void; /** * Mark form as touched to trigger validation display */ private markFormAsTouched; /** * Get dropdown configuration with portal support */ getDropdownConfig(): {}; /** * Get dropdown items for actions */ getActionDropdownItems(master: ICoreSygms): DropdownItem[]; /** * Handle dropdown item click */ onDropdownItemClick(item: DropdownItem, row: ICoreSygms): void; /** * Add child master */ onAddChild(parentMaster: ICoreSygms): void; /** * Get parent master display name */ getParentMasterDisplay(): string; /** * Clear parent master from form */ clearParentMaster(): void; /** * Close all dropdowns */ private closeAllDropdowns; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class CideCoreGeneralMasterTypeService { private http; private generalMasterTypeListSubject; generalMasterTypeList$: Observable; /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */ readonly listInvalidated: _angular_core.WritableSignal; constructor(); /** * Get general master type list from API */ getTypeList(body: MGeneralMasterType): Observable; /** * Get general master type list from cache (if available) */ getTypeListFromCache(): ICoreSygmt[]; /** * Create or update general master type * POST ${coreRoutesUrl?.generalMasterType} - payload: IGeneralMasterTypeCreateUpdatePayload, response: generalMasterTypeInsertUpdateControllerResponse * If type._id exists, it will update; otherwise, it will create a new type */ saveType(type: ICoreSygmt): Observable; /** * Get general master type by ID * GET ${coreRoutesUrl?.generalMasterType}/byId/:query - payload: { sygmt_id: string }, response: generalMasterTypeByIdControllerResponse */ getTypeById(id: string): Observable; /** * Delete general master type * DELETE ${coreRoutesUrl?.generalMasterType}/:query - payload: { sygmt_id: string }, response: generalMasterTypeDeleteControllerResponse */ deleteType(id: string): Observable; /** * Delete multiple general master types */ deleteMultipleTypes(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown; }>; /** * Toggle general master type active status */ toggleTypeStatus(payload: MGeneralMasterTypeToggleStatusPayload): Observable; /** * Check if type code exists */ checkTypeCodeExists(code: string, excludeId?: string): Observable<{ success: boolean; message: string; exists: boolean; }>; /** * Get hierarchical tree structure */ getTypeTree(): Observable; /** * Find general master type by ID */ findTypeById(id: string, items?: ICoreSygmt[]): ICoreSygmt | null; /** * Get parent general master types for dropdown selection */ getParentTypes(excludeId?: string): ICoreSygmt[]; /** * Refresh general master type list from server */ private refreshTypeList; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class CideCoreGeneralMasterService implements IGeneralMasterService { private http; private generalMasterListSubject; generalMasterList$: Observable; /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */ readonly listInvalidated: _angular_core.WritableSignal; constructor(); /** * Get general master list from API */ getMasterList(payload: IGeneralMasterListRequest): Observable; /** * Get general master list from cache (if available) */ getMasterListFromCache(): ICoreSygms[]; /** * Save general master (create or update) * POST ${coreRoutesUrl?.generalMaster} - payload: ICoreSygms, response: generalMasterInsertUpdateControllerResponse */ saveMaster(master: ICoreSygms): Observable; /** * Create new general master (backward compatibility) */ createMaster(master: ICoreSygms): Observable; /** * Update existing general master (backward compatibility) */ updateMaster(id: string, master: ICoreSygms): Observable; /** * Get general master by ID * GET ${coreRoutesUrl?.generalMaster}/byId/:query - payload: { sygms_id: string }, response: generalMasterByIdControllerResponse */ getMasterById(id: string): Observable; /** * Delete general master * DELETE ${coreRoutesUrl?.generalMaster}/:query - payload: { sygms_id: string }, response: generalMasterDeleteControllerResponse */ deleteMaster(id: string): Observable; /** * Toggle general master active status */ toggleMasterStatus(id: string): Observable; /** * Check if master code exists */ checkMasterCodeExists(code: string, typeId: string, excludeId?: string): Observable<{ success: boolean; message: string; exists: boolean; }>; /** * Refresh general master list from server */ private refreshMasterList; /** * Handle errors */ private handleError; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * @description Data service for pin code (postal code) operations * Handles API calls for retrieving pin code and location data */ declare class CideCorePinCodeService { private http; /** * Get pin code data from API * @param body - MPinCodeSelect payload with sypin_pincode * @returns Observable of pin code select response */ getPinCodeData(body: MPinCodeSelect): Observable; /** * Get pin code data by specific pin code * @param pincode - The pin code to search for * @returns Observable of pin code data */ getPinCodeByCode(pincode: string): Observable; /** * Get all postal codes with default parameters * @returns Observable of all postal codes */ getAllPostalCodes(): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * @description Data service for country-related operations * Handles API calls for retrieving country data */ declare class CideCoreCountryService { private http; /** * Get all countries from API * @param body - MSyctrList payload for filtering * @returns Observable of country list response */ getAllCountries(body: Partial): Observable; /** * Get countries with default parameters * @returns Observable of country list response */ getCountries(): Observable; /** * Search countries with specific filters * @param filters - Search criteria for countries * @returns Observable of filtered country list */ searchCountries(filters: Partial): Observable; /** * Get country by ID * @param countryId - ID of the country to retrieve * @returns Observable of country data */ getCountryById(countryId: string): Observable; /** * Get countries by region * @param region - Region code to filter countries * @returns Observable of countries in the specified region */ getCountriesByRegion(region: string): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * @description Data service for nationality-related operations * Handles API calls for retrieving nationality data */ declare class CideCoreNationalityService { private http; /** * Get all nationalities from API * @param body - CoreNationalityListPayload for filtering * @returns Observable of nationality list response */ getAllNationalities(body: Partial): Observable; /** * Get nationalities with default parameters * @returns Observable of nationality list response */ getNationalities(): Observable; /** * Search nationalities with specific filters * @param filters - Search criteria for nationalities * @returns Observable of filtered nationality list */ searchNationalities(filters: Partial): Observable; /** * Get nationality by ID * @param nationalityId - ID of the nationality to retrieve * @returns Observable of nationality data */ getNationalityById(nationalityId: string): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Service for managing class program master operations * Provides methods to interact with the class program master API */ declare class CideCoreClassProgramMasterService implements IClassProgramMasterService { private http; /** * Get all class program masters from API * @param body - MClassProgramMaster for filtering * @returns Observable of class program master list response */ getClassProgramMasterList(body: Partial): Observable; /** * Get class program masters with default parameters (active only) * @returns Observable of class program master list response */ getClassProgramMasters(): Observable; /** * Search class program masters with specific filters * @param filters - Search criteria for class program masters * @returns Observable of filtered class program master list */ searchClassProgramMasters(filters: Partial): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * @description Data service for currency-related operations * Handles API calls for retrieving currency data */ declare class CideCoreCurrencyService implements ICurrencyService { private http; /** * Get all currencies from API * @param body - MSycrList payload for filtering * @returns Observable of currency list response */ getAllCurrencies(body: Partial): Observable; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } export { CideCoreClassProgramMasterService, CideCoreCountryService, CideCoreCurrencyService, CideCoreDepartmentListComponent, CideCoreDepartmentManagementService, CideCoreDesignationListComponent, CideCoreDesignationManagementService, CideCoreEntityCreateComponent, CideCoreEntityListComponent, CideCoreEntityManagementService, CideCoreGeneralMasterComponent, CideCoreGeneralMasterService, CideCoreGeneralMasterTypeComponent, CideCoreGeneralMasterTypeService, CideCoreGradeLevelListComponent, CideCoreGradeLevelManagementService, CideCoreNationalityService, CideCoreOrgStructureComponent, CideCorePageControlsComponent, CideCorePageControlsService, CideCorePageListComponent, CideCorePageManagementService, CideCorePageThemeComponent, CideCorePageThemeService, CideCorePinCodeService, CideCoreRoleSelectService, CideCoreUserAttributesComponent, CideCoreUserContactAddressesComponent, CideCoreUserCreateComponent, CideCoreUserDocumentsComponent, CideCoreUserEntityAccessComponent, CideCoreUserFamilyDetailsComponent, CideCoreUserListComponent, CideCoreUserMasterService, CideCoreUserRoleFormComponent, CideCoreUserRoleListComponent, CideCoreUserRoleService, CloudIdeCoreComponent, CloudIdeCoreService, MenuListComponent, MenuManagementService, coreRoutes }; export type { ApiResponse, Entity, Menu, Permission, UserRole, UserRoleListResponse, UserRoleRight, UserRoleWithRights, UserRoleWithRightsResponse };