cloud-ide-core 2.0.170 → 2.0.172

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -33,6 +33,10 @@ declare class MenuListComponent implements OnInit {
33
33
  private fb;
34
34
  private router;
35
35
  private rightsService;
36
+ /** Refetch permissions when general master list is invalidated elsewhere. */
37
+ private readonly generalMasterInvalidationEffect;
38
+ /** Refetch menu list when menu list is invalidated elsewhere (e.g. save/delete in another tab). */
39
+ private readonly menuListInvalidationEffect;
36
40
  shared_wrapper_setup_param: {
37
41
  sypg_page_code: string;
38
42
  };
@@ -366,6 +370,8 @@ declare class MenuManagementService {
366
370
  private apiUrl;
367
371
  private menuListSubject;
368
372
  menuList$: Observable<ICoreSyme[]>;
373
+ /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */
374
+ readonly listInvalidated: _angular_core.WritableSignal<number>;
369
375
  constructor(http: HttpClient);
370
376
  /**
371
377
  * Get menu list from API
@@ -453,6 +459,7 @@ declare class CideCoreDepartmentListComponent {
453
459
  private confirmationService;
454
460
  private notificationService;
455
461
  private rightsService;
462
+ private readonly departmentListInvalidationEffect;
456
463
  departmentDetailsRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
457
464
  departmentStatusRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
458
465
  actionsDropdownRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
@@ -627,6 +634,8 @@ declare class CideCoreDepartmentManagementService {
627
634
  private http;
628
635
  private departmentListSubject;
629
636
  departmentList$: Observable<ICoreSydept[]>;
637
+ /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */
638
+ readonly listInvalidated: _angular_core.WritableSignal<number>;
630
639
  constructor(http: HttpClient);
631
640
  /**
632
641
  * Get department list from API
@@ -713,6 +722,9 @@ declare class CideCoreDesignationListComponent {
713
722
  private notificationService;
714
723
  private confirmationService;
715
724
  private rightsService;
725
+ private readonly designationListInvalidationEffect;
726
+ private readonly departmentListInvalidationEffect;
727
+ private readonly gradeLevelListInvalidationEffect;
716
728
  designationDetailsRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
717
729
  designationStatusRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
718
730
  actionsDropdownRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
@@ -961,6 +973,8 @@ declare class CideCoreDesignationManagementService {
961
973
  private apiUrl;
962
974
  private designationListSubject;
963
975
  designationList$: Observable<ICoreSydsg[]>;
976
+ /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */
977
+ readonly listInvalidated: _angular_core.WritableSignal<number>;
964
978
  constructor(http: HttpClient);
965
979
  /**
966
980
  * Get designation list from API
@@ -1031,6 +1045,7 @@ declare class CideCoreGradeLevelListComponent {
1031
1045
  private notificationService;
1032
1046
  private confirmationService;
1033
1047
  private rightsService;
1048
+ private readonly gradeLevelListInvalidationEffect;
1034
1049
  dragHandleRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
1035
1050
  gradeLevelDetailsRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
1036
1051
  gradeLevelStatusRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
@@ -1234,6 +1249,8 @@ declare class CideCoreGradeLevelManagementService {
1234
1249
  private apiUrl;
1235
1250
  private gradeLevelListSubject;
1236
1251
  gradeLevelList$: Observable<ICoreSydsgl[]>;
1252
+ /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */
1253
+ readonly listInvalidated: _angular_core.WritableSignal<number>;
1237
1254
  constructor(http: HttpClient);
1238
1255
  /**
1239
1256
  * Get grade level list from API
@@ -1627,7 +1644,7 @@ declare class CideCorePageControlsComponent implements OnInit {
1627
1644
  sype_helper_text_collapse: _angular_forms.FormControl<boolean>;
1628
1645
  sype_default: _angular_forms.FormControl<string | number | boolean>;
1629
1646
  sype_tooltip: _angular_forms.FormControl<string>;
1630
- sype_size: _angular_forms.FormControl<"lg" | "xs" | "sm" | "md" | "xl" | "3xs" | "2xs" | "xxl">;
1647
+ sype_size: _angular_forms.FormControl<"xs" | "sm" | "md" | "lg" | "xl" | "3xs" | "2xs" | "xxl">;
1631
1648
  sype_leading_icon: _angular_forms.FormControl<string>;
1632
1649
  sype_isactive: _angular_forms.FormControl<boolean>;
1633
1650
  sype_entity_id_syen: _angular_forms.FormControl<string>;
@@ -3071,6 +3088,8 @@ declare class CideCoreUserRoleFormComponent implements OnInit, OnDestroy {
3071
3088
  private readonly generalMasterService;
3072
3089
  private readonly generalMasterTypeService;
3073
3090
  private readonly floatingContainerService;
3091
+ /** Refetch permissions when general master list is invalidated elsewhere. */
3092
+ private readonly generalMasterInvalidationEffect;
3074
3093
  private readonly router;
3075
3094
  private readonly route;
3076
3095
  private readonly appState;
@@ -3350,6 +3369,8 @@ declare class CideCoreEntityCreateComponent implements OnInit, OnDestroy {
3350
3369
  private rightsService;
3351
3370
  private requestService;
3352
3371
  private educationBoardService;
3372
+ /** Refetch general-master dropdowns when general master list is invalidated elsewhere. */
3373
+ private readonly generalMasterInvalidationEffect;
3353
3374
  private destroy$;
3354
3375
  boardAffiliations: _angular_core.WritableSignal<any[]>;
3355
3376
  boardAffiliationsLoading: _angular_core.WritableSignal<boolean>;
@@ -3458,6 +3479,8 @@ declare class CideCoreEntityListComponent implements OnInit {
3458
3479
  private appState;
3459
3480
  private rightsService;
3460
3481
  private destroyRef;
3482
+ /** Refetch entity types when general master list is invalidated elsewhere (e.g. after add/update/delete). */
3483
+ private readonly generalMasterInvalidationEffect;
3461
3484
  gridComponent: _angular_core.Signal<CideEleDataGridComponent<CoreSystemEntityListResponse> | undefined>;
3462
3485
  entityDetailsRenderer: _angular_core.Signal<TemplateRef<TemplateContext<CoreSystemEntityListResponse>>>;
3463
3486
  entityTypeRenderer: _angular_core.Signal<TemplateRef<TemplateContext<CoreSystemEntityListResponse>>>;
@@ -3794,6 +3817,8 @@ declare class CideCoreGeneralMasterComponent implements OnInit {
3794
3817
  private rightsService;
3795
3818
  private notificationService;
3796
3819
  private requestService;
3820
+ /** Refetch masters when list is invalidated elsewhere (e.g. another tab or component). */
3821
+ private readonly listInvalidationEffect;
3797
3822
  masterDetailsRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
3798
3823
  masterStatusRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
3799
3824
  actionsDropdownRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
@@ -3962,6 +3987,8 @@ declare class CideCoreGeneralMasterTypeService {
3962
3987
  private http;
3963
3988
  private generalMasterTypeListSubject;
3964
3989
  generalMasterTypeList$: Observable<ICoreSygmt[]>;
3990
+ /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */
3991
+ readonly listInvalidated: _angular_core.WritableSignal<number>;
3965
3992
  constructor();
3966
3993
  /**
3967
3994
  * Get general master type list from API
@@ -4035,6 +4062,8 @@ declare class CideCoreGeneralMasterService implements IGeneralMasterService {
4035
4062
  private http;
4036
4063
  private generalMasterListSubject;
4037
4064
  generalMasterList$: Observable<ICoreSygms[]>;
4065
+ /** Signal bumped on every create/update/delete/toggle so consumers can refresh. */
4066
+ readonly listInvalidated: _angular_core.WritableSignal<number>;
4038
4067
  constructor();
4039
4068
  /**
4040
4069
  * Get general master list from API
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cloud-ide-core",
3
- "version": "2.0.170",
3
+ "version": "2.0.172",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloud-ide-core-page-form.component-CO-opyS8.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-form/page-form.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-form/page-form.component.html"],"sourcesContent":["import { Component, signal, computed, inject, OnInit, DestroyRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { CideCorePageManagementService } from '../../services/page-management.service';\nimport { MenuManagementService } from '../../../menu-management/services/menu-management.service';\nimport { AppStateHelperService, ComponentContextService, RightsService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, CideIconComponent, CideEleFileInputComponent, CideEleJsonEditorComponent, CideFormFieldErrorComponent, ConfirmationService } from 'cloud-ide-element';\nimport { ICoreSypg, ICoreSyme, MSystemPagesInsertUpdatePayload, MMenuListPayload, MCoreSymeInsertUpdatePayload, generateObjectFromString, generateStringFromObject, systemPagesByIdControllerResponse, systemPagesInsertUpdateControllerResponse, menuListControllerResponse, menuInsertUpdateControllerResponse, menuByIdControllerResponse, selectSearchType } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-page-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideEleJsonEditorComponent,\n CideFormFieldErrorComponent\n ],\n templateUrl: './page-form.component.html',\n styleUrls: ['./page-form.component.scss']\n})\nexport class CideCorePageFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private pageService = inject(CideCorePageManagementService);\n private menuService = inject(MenuManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private componentContextService = inject(ComponentContextService);\n private rightsService = inject(RightsService);\n private confirmationService = inject(ConfirmationService);\n\n loading = signal(false);\n error = signal<string | null>(null);\n success = signal<string | null>(null);\n\n // Page information\n pageId = signal<string | null>(null);\n isEditMode = signal(false);\n\n // Menu mapping\n enableMenuMapping = signal(false);\n menuMappingMode = signal<'none' | 'existing' | 'new'>('none');\n existingMenus = signal<ICoreSyme[]>([]);\n menusLoading = signal(false);\n selectedMenuId = signal<string | null>(null);\n\n // Search subject for menu search with debouncing\n private menuSearchSubject = new Subject<selectSearchType>();\n\n // New menu form\n newMenuForm = this.fb.group({\n syme_title: ['', [Validators.required, Validators.maxLength(100)]],\n syme_desc: ['', [Validators.maxLength(255)]],\n syme_type: ['menu' as 'module' | 'section' | 'menu' | 'title', [Validators.required]],\n syme_path: ['', [Validators.maxLength(255)]],\n syme_icon: ['', [Validators.maxLength(40)]],\n syme_id_syme: [''],\n syme_order_by: [1, [Validators.required, Validators.min(1)]],\n syme_isactive: [true]\n });\n\n pageForm = this.fb.group({\n sypg_title: ['', [Validators.required, Validators.maxLength(100)]],\n sypg_desc: ['', [Validators.maxLength(255)]],\n sypg_page_code: ['', [Validators.required, Validators.maxLength(40), Validators.pattern(/^[a-zA-Z0-9_]+$/)]],\n sypg_configuration: ['{}', [Validators.required]],\n sypg_isactive: [true]\n });\n\n // Menu options for dropdown\n menuOptions = computed(() => {\n return this.existingMenus().map(menu => ({\n value: menu._id || '',\n label: menu.syme_title || 'Untitled Menu'\n }));\n });\n\n constructor() {\n this.setupFormSubscriptions();\n }\n\n ngOnInit(): void {\n // Initialize rights for page management\n this.rightsService.initializeRights('core_page_management');\n // Check for page ID in query parameters\n this.checkForPageId();\n // Load menus for mapping (only in create mode)\n if (!this.isEditMode()) {\n this.loadMenus();\n }\n }\n\n // Load menus for mapping\n loadMenus(searchQuery?: string): void {\n this.menusLoading.set(true);\n const payload: MMenuListPayload = {\n pageIndex: 1,\n pageSize: 1000,\n sort: { order: 'asc', key: 'syme_order_by' },\n query: searchQuery || '',\n syme_title: searchQuery || undefined\n };\n\n this.menuService.getMenuList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: menuListControllerResponse) => {\n if (response.success && response.data) {\n this.existingMenus.set(response.data);\n }\n this.menusLoading.set(false);\n },\n error: (error: unknown) => {\n console.error('Error loading menus:', error);\n this.menusLoading.set(false);\n }\n });\n }\n\n /**\n * Handle menu search change\n */\n onMenuSearch(event: selectSearchType): void {\n this.menuSearchSubject.next(event);\n }\n\n /**\n * Perform actual menu search\n */\n private performMenuSearch(event: selectSearchType): void {\n try {\n this.menusLoading.set(true);\n const searchQuery = event?.query || '';\n\n const payload: MMenuListPayload = {\n pageIndex: 1,\n pageSize: 1000,\n sort: { order: 'asc', key: 'syme_order_by' },\n query: searchQuery,\n syme_title: searchQuery || undefined\n };\n\n this.menuService.getMenuList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: menuListControllerResponse) => {\n if (response.success && response.data) {\n this.existingMenus.set(response.data);\n } else {\n this.existingMenus.set([]);\n }\n this.menusLoading.set(false);\n },\n error: (err) => {\n console.error('Error searching menus:', err);\n this.existingMenus.set([]);\n this.menusLoading.set(false);\n }\n });\n } catch (error) {\n console.error('Error in performMenuSearch:', error);\n this.existingMenus.set([]);\n this.menusLoading.set(false);\n }\n }\n\n // Toggle menu mapping section\n toggleMenuMapping(): void {\n this.enableMenuMapping.set(!this.enableMenuMapping());\n if (this.enableMenuMapping() && this.existingMenus().length === 0) {\n this.loadMenus();\n }\n }\n\n // Handle menu mapping mode change\n onMenuMappingModeChange(mode: 'none' | 'existing' | 'new'): void {\n this.menuMappingMode.set(mode);\n if (mode === 'existing') {\n this.selectedMenuId.set(null);\n } else if (mode === 'new') {\n // Auto-fill menu title from page title\n const pageTitle = this.pageForm.get('sypg_title')?.value || '';\n this.newMenuForm.patchValue({\n syme_title: pageTitle,\n syme_path: this.pageForm.get('sypg_page_code')?.value || ''\n });\n }\n }\n\n // Handle menu selection change\n onMenuSelectionChange(value: string | number | string[] | null): void {\n // Convert the value to string or null\n if (value === null || value === undefined || value === '') {\n this.selectedMenuId.set(null);\n } else if (typeof value === 'string') {\n this.selectedMenuId.set(value);\n } else if (typeof value === 'number') {\n this.selectedMenuId.set(String(value));\n } else if (Array.isArray(value) && value.length > 0) {\n // If it's an array, take the first value and convert to string\n this.selectedMenuId.set(String(value[0]));\n } else {\n this.selectedMenuId.set(null);\n }\n }\n\n\n\n // Check for page ID in query parameters\n private checkForPageId() {\n console.log('🔍 Checking for page ID in query parameters', this.route.params);\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n console.log('🔍 Query params:', params);\n // Check for pageId, id, or page parameter\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n\n // If pageId is an object string (from generateStringFromObject), try to parse it\n const pageId = queryData.sypg_id;\n if (pageId) {\n console.log('🔍 Page ID found in query params:', pageId);\n this.pageId.set(pageId);\n this.isEditMode.set(true);\n this.loadPageData(pageId);\n } else {\n console.log('🆕 No page ID found - creating new page');\n this.isEditMode.set(false);\n this.pageId.set(null);\n }\n });\n }\n\n // Load page data for editing\n private loadPageData(pageId: string) {\n this.loading.set(true);\n this.error.set(null);\n\n console.log('📥 Loading page data for ID:', pageId);\n\n this.pageService.getPageById(pageId).pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: (response: systemPagesByIdControllerResponse) => {\n console.log('✅ Page data loaded:', response);\n\n if (response?.success && response?.data) {\n const pageData = response.data;\n if (pageData) {\n this.populateFormWithPageData(pageData);\n this.success.set('Page data loaded successfully');\n } else {\n this.error.set('Page data not found');\n console.error('❌ Page data not found in response:', response);\n }\n } else {\n this.error.set('Failed to load page data');\n console.error('❌ Page data response invalid:', response);\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error('❌ Failed to load page data:', err);\n\n let errorMessage = 'Failed to load page data.';\n\n if (err?.error?.message) {\n errorMessage = err.error.message;\n } else if (err?.message) {\n errorMessage = err.message;\n } else if (err?.status === 404) {\n errorMessage = 'Page not found.';\n } else if (err?.status === 500) {\n errorMessage = 'Server error. Please try again later.';\n }\n\n this.error.set(errorMessage);\n this.loading.set(false);\n }\n });\n }\n\n // Populate form with page data\n private populateFormWithPageData(pageData: ICoreSypg) {\n try {\n console.log('📝 Populating form with page data:', pageData);\n\n const formData = {\n sypg_title: pageData.sypg_title || '',\n sypg_desc: pageData.sypg_desc || '',\n sypg_page_code: pageData.sypg_page_code || '',\n sypg_configuration: pageData.sypg_configuration ? JSON.stringify(pageData.sypg_configuration) : '{}',\n sypg_isactive: pageData.sypg_isactive !== undefined ? pageData.sypg_isactive : true\n };\n\n // Patch the form with the page data\n this.pageForm.patchValue(formData, { emitEvent: false });\n\n console.log('✅ Form populated successfully');\n } catch (error) {\n console.error('💥 Error populating form with page data:', error);\n this.error.set('Error loading page data into form');\n }\n }\n\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.pageForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n // Computed values\n isFormDirty = computed(() => this.pageForm.dirty);\n\n // Rights computed signals\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canView = computed(() => this.rightsService.hasRight('VIEW'));\n\n // Form submission\n savePage(): void {\n if (!this.pageForm.valid) {\n this.markFormAsTouched();\n return;\n }\n\n // Validate menu mapping if enabled\n if (this.enableMenuMapping() && !this.isEditMode()) {\n if (this.menuMappingMode() === 'existing' && !this.selectedMenuId()) {\n this.error.set('Please select a menu item to map this page to');\n return;\n }\n if (this.menuMappingMode() === 'new' && !this.newMenuForm.valid) {\n this.markMenuFormAsTouched();\n this.error.set('Please fill in all required menu fields');\n return;\n }\n }\n\n const formValue = this.pageForm.getRawValue();\n\n const pageData: MSystemPagesInsertUpdatePayload = {\n _id: this.pageId() || '',\n sypg_title: formValue.sypg_title,\n sypg_desc: formValue.sypg_desc,\n sypg_page_code: formValue.sypg_page_code,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n\n this.loading.set(true);\n this.error.set(null);\n\n this.pageService.createOrUpdatePage(pageData)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: systemPagesInsertUpdateControllerResponse) => {\n if (response.success) {\n const savedPageId = response.data?._id || this.pageId();\n const savedPageData = response.data;\n this.success.set(this.isEditMode() ? 'Page updated successfully' : 'Page created successfully');\n console.log('✅ Page saved successfully');\n\n // Handle menu mapping if enabled (only in create mode)\n if (this.enableMenuMapping() && !this.isEditMode() && savedPageId) {\n this.handleMenuMapping(savedPageId, savedPageData || null);\n } else {\n // For new pages, show confirmation dialog suggesting to create theme\n if (!this.isEditMode() && savedPageId && savedPageData) {\n this.showCreateThemeConfirmation(savedPageId, savedPageData);\n } else {\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n }\n }\n this.loading.set(false);\n } else {\n this.error.set(response.message || 'Failed to save page');\n console.error('❌ Failed to save page:', response.message);\n this.loading.set(false);\n }\n },\n error: (error: unknown) => {\n console.error('❌ Error saving page:', error);\n this.error.set('Failed to save page. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n // Handle menu mapping after page creation\n private handleMenuMapping(pageId: string, pageData: ICoreSypg | null): void {\n if (this.menuMappingMode() === 'none') {\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n return;\n }\n\n if (this.menuMappingMode() === 'existing' && this.selectedMenuId()) {\n // Update existing menu to include this page\n this.menuService.getMenuItemById(this.selectedMenuId()!)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: menuByIdControllerResponse) => {\n if (response.success && response.data) {\n const menu = response.data;\n const existingPages = Array.isArray(menu.syme_pages_id_sypg)\n ? [...menu.syme_pages_id_sypg]\n : [];\n\n // Check if page ID already exists\n const pageIdStr = pageId.toString();\n if (!existingPages.some(p => p?.toString() === pageIdStr)) {\n existingPages.push(pageId as unknown as string);\n }\n\n const updatePayload: ICoreSyme = {\n ...menu,\n syme_pages_id_sypg: existingPages\n };\n\n this.menuService.updateMenuItem(this.selectedMenuId()!, updatePayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.success.set('Page created and mapped to menu successfully');\n this.loading.set(false);\n // Show theme creation confirmation after menu mapping\n if (pageData) {\n this.showCreateThemeConfirmation(pageId, pageData);\n } else {\n // Fallback to form data if pageData is not available\n const formValue = this.pageForm.getRawValue();\n const fallbackPageData: ICoreSypg = {\n _id: pageId,\n sypg_title: formValue.sypg_title,\n sypg_page_code: formValue.sypg_page_code,\n sypg_desc: formValue.sypg_desc,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n this.showCreateThemeConfirmation(pageId, fallbackPageData);\n }\n },\n error: (error: unknown) => {\n console.error('Error mapping page to menu:', error);\n this.success.set('Page created successfully, but menu mapping failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n } else {\n this.loading.set(false);\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n }\n },\n error: (error: unknown) => {\n console.error('Error fetching menu:', error);\n this.success.set('Page created successfully, but menu mapping failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n } else if (this.menuMappingMode() === 'new') {\n // Create new menu item with this page\n const menuFormValue = this.newMenuForm.getRawValue();\n const newMenuPayload: ICoreSyme = {\n syme_title: menuFormValue.syme_title,\n syme_desc: menuFormValue.syme_desc || '',\n syme_type: menuFormValue.syme_type,\n syme_path: menuFormValue.syme_path || this.pageForm.get('sypg_page_code')?.value || '',\n syme_icon: menuFormValue.syme_icon || '',\n syme_id_syme: menuFormValue.syme_id_syme || undefined,\n syme_order_by: menuFormValue.syme_order_by,\n syme_isactive: menuFormValue.syme_isactive,\n syme_pages_id_sypg: [pageId as any]\n };\n\n this.menuService.createMenuItem(newMenuPayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.success.set('Page created and new menu item created successfully');\n this.loading.set(false);\n // Show theme creation confirmation after menu creation\n if (pageData) {\n this.showCreateThemeConfirmation(pageId, pageData);\n } else {\n // Fallback to form data if pageData is not available\n const formValue = this.pageForm.getRawValue();\n const fallbackPageData: ICoreSypg = {\n _id: pageId,\n sypg_title: formValue.sypg_title,\n sypg_page_code: formValue.sypg_page_code,\n sypg_desc: formValue.sypg_desc,\n sypg_configuration: formValue.sypg_configuration,\n sypg_isactive: formValue.sypg_isactive\n };\n this.showCreateThemeConfirmation(pageId, fallbackPageData);\n }\n },\n error: (error: unknown) => {\n console.error('Error creating menu:', error);\n this.success.set('Page created successfully, but menu creation failed');\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 1500);\n this.loading.set(false);\n }\n });\n }\n }\n\n // Mark menu form as touched\n private markMenuFormAsTouched(): void {\n Object.keys(this.newMenuForm.controls).forEach(key => {\n const control = this.newMenuForm.get(key);\n control?.markAsTouched();\n });\n }\n\n // Cancel form\n cancelForm(): void {\n this.componentContextService.close(['/control-panel/page']);\n }\n\n // Go back to page list\n goBack(): void {\n this.componentContextService.close(['/control-panel/page']);\n }\n\n // Reset form - reload data in edit mode, reset to defaults in create mode\n resetForm(): void {\n if (this.isEditMode() && this.pageId()) {\n this.loadPageData(this.pageId()!);\n } else {\n this.pageForm.reset({\n sypg_isactive: true,\n sypg_configuration: '{}'\n });\n }\n }\n\n // Mark form as touched to trigger validation display\n private markFormAsTouched(): void {\n Object.keys(this.pageForm.controls).forEach(key => {\n const control = this.pageForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Show confirmation dialog suggesting to create theme after page creation\n */\n private showCreateThemeConfirmation(pageId: string, pageData: ICoreSypg): void {\n this.confirmationService.ask({\n title: 'Page Created Successfully!',\n message: `Would you like to create a theme for this page? This will set up the default theme configuration for \"${pageData.sypg_title || pageData.sypg_page_code}\".`,\n confirmText: 'Create Theme',\n cancelText: 'Skip',\n type: 'success',\n icon: 'palette'\n }).then((confirmed: boolean | string) => {\n if (confirmed) {\n // Navigate to theme page with page data\n const queryData = {\n sypg_id: pageId,\n sypg_title: pageData.sypg_title || '',\n sypg_page_code: pageData.sypg_page_code || ''\n };\n\n // Generate query string from object using utility function\n const queryString = generateStringFromObject(queryData);\n\n // Navigate to theme page with query params\n this.router.navigate(['/control-panel/page-theme', queryString]);\n } else {\n // User chose to skip - close and go to page list\n setTimeout(() => {\n this.componentContextService.close(['/control-panel/page']);\n }, 500);\n }\n });\n }\n}\n","<div class=\"page-form-wrapper\">\n <div class=\"page-form-container\">\n <form class=\"page-form\" [formGroup]=\"pageForm\" [class.loading]=\"loading()\" (ngSubmit)=\"savePage()\">\n \n <!-- Header Section -->\n <div class=\"form-header\">\n <h2 class=\"form-title\">{{ isEditMode() ? 'Edit Page' : 'Create Page' }}</h2>\n <p class=\"form-subtitle\">\n {{ isEditMode() ? 'Update page information and configuration' : 'Create a new page with configuration' }}\n </p>\n </div>\n\n <!-- Success and Error Messages -->\n <div class=\"form-messages\">\n @if (success()) {\n <div class=\"alert alert-success\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"></path>\n </svg>\n <span>{{ success() }}</span>\n </div>\n }\n @if (error()) {\n <div class=\"alert alert-error\">\n <svg class=\"alert-icon\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n <span>{{ error() }}</span>\n </div>\n }\n </div>\n\n <!-- Form Content -->\n <div class=\"form-content\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_title\"\n label=\"Page Title\" \n formControlName=\"sypg_title\"\n placeholder=\"Enter page title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n \n <div class=\"form-field\">\n <cide-ele-input \n id=\"sypg_page_code\"\n label=\"Page Code\" \n formControlName=\"sypg_page_code\"\n placeholder=\"Enter page code (alphanumeric and underscore only)\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea \n id=\"sypg_desc\"\n label=\"Page Description\" \n formControlName=\"sypg_desc\"\n placeholder=\"Enter page description\"\n [rows]=\"3\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-json-editor\n id=\"sypg_configuration\"\n label=\"Configuration JSON\"\n formControlName=\"sypg_configuration\"\n placeholder='{\"key\": \"value\"}'>\n </cide-ele-json-editor>\n </div>\n </div>\n\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"sypg_isactive\"\n type=\"checkbox\"\n formControlName=\"sypg_isactive\"\n label=\"Active Status\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Menu Mapping Section (Only in Create Mode) -->\n @if (!isEditMode()) {\n <div class=\"form-row form-row-1\">\n <div class=\"form-field menu-mapping-section\">\n <div class=\"menu-mapping-header\">\n <div class=\"menu-mapping-toggle\">\n <input\n type=\"checkbox\"\n id=\"enable_menu_mapping\"\n [checked]=\"enableMenuMapping()\"\n (change)=\"toggleMenuMapping()\"\n class=\"menu-mapping-checkbox\">\n <label for=\"enable_menu_mapping\" class=\"menu-mapping-label-checkbox\">Map to Menu</label>\n </div>\n <span class=\"menu-mapping-hint\">Optionally map this page to a menu item during creation</span>\n </div>\n\n @if (enableMenuMapping()) {\n <div class=\"menu-mapping-content\">\n <!-- Menu Mapping Mode Selection -->\n <div class=\"menu-mapping-mode\">\n <label class=\"menu-mapping-label\">Mapping Option:</label>\n <div class=\"menu-mapping-options\">\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'none'\"\n (click)=\"onMenuMappingModeChange('none')\">\n Skip Mapping\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'existing'\"\n (click)=\"onMenuMappingModeChange('existing')\">\n Map to Existing Menu\n </button>\n <button\n type=\"button\"\n class=\"menu-option-btn\"\n [class.active]=\"menuMappingMode() === 'new'\"\n (click)=\"onMenuMappingModeChange('new')\">\n Create New Menu\n </button>\n </div>\n </div>\n\n <!-- Existing Menu Selection -->\n @if (menuMappingMode() === 'existing') {\n <div class=\"menu-mapping-form\">\n <cide-ele-select\n label=\"Select Menu Item\"\n [options]=\"menuOptions()\"\n [loading]=\"menusLoading()\"\n placeholder=\"Choose a menu item to map this page to\"\n [searchable]=\"true\"\n (searchChange)=\"onMenuSearch($event)\"\n size=\"md\"\n [ngModel]=\"selectedMenuId() ?? ''\"\n (ngModelChange)=\"onMenuSelectionChange($event)\">\n </cide-ele-select>\n <p class=\"menu-mapping-help\">\n This page will be added to the selected menu item's page list.\n </p>\n </div>\n }\n\n <!-- New Menu Creation Form -->\n @if (menuMappingMode() === 'new') {\n <div class=\"menu-mapping-form\">\n <form [formGroup]=\"newMenuForm\" class=\"new-menu-form\">\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_title\"\n label=\"Menu Title\"\n formControlName=\"syme_title\"\n placeholder=\"Enter menu title\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-select\n label=\"Menu Type\"\n formControlName=\"syme_type\"\n [options]=\"[\n { value: 'menu', label: 'Menu Item' },\n { value: 'section', label: 'Section' },\n { value: 'title', label: 'Title' }\n ]\"\n placeholder=\"Select menu type\"\n size=\"md\">\n </cide-ele-select>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_path\"\n label=\"Menu Path\"\n formControlName=\"syme_path\"\n placeholder=\"e.g., /control-panel/page\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_icon\"\n label=\"Icon\"\n formControlName=\"syme_icon\"\n placeholder=\"e.g., dashboard, settings\"\n size=\"md\">\n </cide-ele-input>\n </div>\n </div>\n <div class=\"form-row form-row-1\">\n <div class=\"form-field\">\n <cide-ele-textarea\n id=\"syme_desc\"\n label=\"Menu Description\"\n formControlName=\"syme_desc\"\n placeholder=\"Enter menu description (optional)\"\n [rows]=\"2\"\n size=\"md\">\n </cide-ele-textarea>\n </div>\n </div>\n <div class=\"form-row form-row-2\">\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_order_by\"\n label=\"Order\"\n formControlName=\"syme_order_by\"\n type=\"number\"\n placeholder=\"Menu order\"\n size=\"md\">\n </cide-ele-input>\n </div>\n <div class=\"form-field\">\n <cide-ele-input\n id=\"syme_isactive\"\n type=\"checkbox\"\n formControlName=\"syme_isactive\"\n label=\"Active\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n </form>\n <p class=\"menu-mapping-help\">\n A new menu item will be created and this page will be automatically mapped to it.\n </p>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <div class=\"form-actions-content\">\n <!-- Error Message (Left Side) -->\n <div class=\"form-actions-error\">\n <cide-form-field-error [formGroup]=\"pageForm\"></cide-form-field-error>\n </div>\n \n <!-- Action Buttons (Right Side) -->\n <div class=\"form-actions-buttons\">\n @if (!isEditMode()) {\n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"resetForm()\" \n leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n }\n \n <button cideEleButton\n type=\"button\" \n variant=\"secondary\" \n (click)=\"cancelForm()\" \n leftIcon=\"close\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n \n <button cideEleButton\n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"loading() || !pageForm.valid\"\n [loading]=\"loading()\"\n leftIcon=\"save\">\n {{ isEditMode() ? 'Update Page' : 'Create Page' }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n</div>\n"],"names":[],"mappings":"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"}