{"version":3,"file":"cloud-ide-core-page-form.component-BN-qZVPF.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, effect } 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  private readonly menuListInvalidationEffect = effect(() => {\n    if (this.menuService.listInvalidated() > 0) this.loadMenus();\n  });\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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"}