cloud-ide-core 1.0.1 → 1.0.2
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/README.md +49 -10
- package/fesm2022/{cloud-ide-core-general-master-type.component-B26auJZw.mjs → cloud-ide-core-general-master-type.component-BNYoP_bS.mjs} +132 -134
- package/fesm2022/{cloud-ide-core-general-master-type.component-B26auJZw.mjs.map → cloud-ide-core-general-master-type.component-BNYoP_bS.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-core-general-master-type.service-Ab64Jjps.mjs → cloud-ide-core-general-master-type.service-8JWTVijZ.mjs} +7 -7
- package/fesm2022/{cloud-ide-core-general-master-type.service-Ab64Jjps.mjs.map → cloud-ide-core-general-master-type.service-8JWTVijZ.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-core-general-master.component-B6llTVoV.mjs → cloud-ide-core-general-master.component-CFGGHinl.mjs} +152 -154
- package/fesm2022/{cloud-ide-core-general-master.component-B6llTVoV.mjs.map → cloud-ide-core-general-master.component-CFGGHinl.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-core-page-form.component-CaEca3mB.mjs → cloud-ide-core-page-form.component-vfE-LkTS.mjs} +25 -25
- package/fesm2022/{cloud-ide-core-page-form.component-CaEca3mB.mjs.map → cloud-ide-core-page-form.component-vfE-LkTS.mjs.map} +1 -1
- package/fesm2022/cloud-ide-core.mjs +1113 -1110
- package/fesm2022/cloud-ide-core.mjs.map +1 -1
- package/index.d.ts +1736 -3
- package/package.json +3 -5
- package/esm2022/cloud-ide-core.mjs +0 -5
- package/esm2022/lib/cloud-ide-core.component.mjs +0 -19
- package/esm2022/lib/cloud-ide-core.routes.mjs +0 -137
- package/esm2022/lib/cloud-ide-core.service.mjs +0 -14
- package/esm2022/lib/core/department-management/components/department-list/department-list.component.mjs +0 -768
- package/esm2022/lib/core/department-management/index.mjs +0 -5
- package/esm2022/lib/core/department-management/services/department-management.service.mjs +0 -187
- package/esm2022/lib/core/designation-management/components/designation-list/designation-list.component.mjs +0 -1122
- package/esm2022/lib/core/designation-management/index.mjs +0 -5
- package/esm2022/lib/core/designation-management/services/designation-management.service.mjs +0 -194
- package/esm2022/lib/core/general-master-management/components/general-master/general-master.component.mjs +0 -738
- package/esm2022/lib/core/general-master-management/components/general-master-type/general-master-type.component.mjs +0 -608
- package/esm2022/lib/core/general-master-management/services/general-master-type.service.mjs +0 -203
- package/esm2022/lib/core/general-master-management/services/general-master.service.mjs +0 -166
- package/esm2022/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.mjs +0 -794
- package/esm2022/lib/core/grade-level-management/index.mjs +0 -5
- package/esm2022/lib/core/grade-level-management/services/grade-level-management.service.mjs +0 -172
- package/esm2022/lib/core/menu-management/components/menu-list/menu-list.component.mjs +0 -1135
- package/esm2022/lib/core/menu-management/index.mjs +0 -10
- package/esm2022/lib/core/menu-management/interfaces/menu-item.interface.mjs +0 -11
- package/esm2022/lib/core/menu-management/mock-data/menu-items.json +0 -311
- package/esm2022/lib/core/menu-management/services/menu-management.service.mjs +0 -230
- package/esm2022/lib/core/page-management/components/page-controls/page-controls.component.mjs +0 -483
- package/esm2022/lib/core/page-management/components/page-form/page-form.component.mjs +0 -212
- package/esm2022/lib/core/page-management/components/page-list/page-list.component.mjs +0 -393
- package/esm2022/lib/core/page-management/components/page-theme/page-theme.component.mjs +0 -767
- package/esm2022/lib/core/page-management/index.mjs +0 -10
- package/esm2022/lib/core/page-management/services/page-controls.service.mjs +0 -136
- package/esm2022/lib/core/page-management/services/page-management.service.mjs +0 -98
- package/esm2022/lib/core/page-management/services/page-theme.service.mjs +0 -107
- package/esm2022/public-api.mjs +0 -17
- package/lib/cloud-ide-core.component.d.ts +0 -5
- package/lib/cloud-ide-core.routes.d.ts +0 -2
- package/lib/cloud-ide-core.service.d.ts +0 -6
- package/lib/core/department-management/components/department-list/department-list.component.d.ts +0 -178
- package/lib/core/department-management/index.d.ts +0 -2
- package/lib/core/department-management/services/department-management.service.d.ts +0 -68
- package/lib/core/designation-management/components/designation-list/designation-list.component.d.ts +0 -242
- package/lib/core/designation-management/index.d.ts +0 -2
- package/lib/core/designation-management/services/designation-management.service.d.ts +0 -69
- package/lib/core/general-master-management/components/general-master/general-master.component.d.ts +0 -167
- package/lib/core/general-master-management/components/general-master-type/general-master-type.component.d.ts +0 -129
- package/lib/core/general-master-management/services/general-master-type.service.d.ts +0 -75
- package/lib/core/general-master-management/services/general-master.service.d.ts +0 -62
- package/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.d.ts +0 -199
- package/lib/core/grade-level-management/index.d.ts +0 -2
- package/lib/core/grade-level-management/services/grade-level-management.service.d.ts +0 -69
- package/lib/core/menu-management/components/menu-list/menu-list.component.d.ts +0 -278
- package/lib/core/menu-management/index.d.ts +0 -3
- package/lib/core/menu-management/interfaces/menu-item.interface.d.ts +0 -30
- package/lib/core/menu-management/services/menu-management.service.d.ts +0 -85
- package/lib/core/page-management/components/page-controls/page-controls.component.d.ts +0 -126
- package/lib/core/page-management/components/page-form/page-form.component.d.ts +0 -35
- package/lib/core/page-management/components/page-list/page-list.component.d.ts +0 -91
- package/lib/core/page-management/components/page-theme/page-theme.component.d.ts +0 -189
- package/lib/core/page-management/index.d.ts +0 -6
- package/lib/core/page-management/services/page-controls.service.d.ts +0 -54
- package/lib/core/page-management/services/page-management.service.d.ts +0 -42
- package/lib/core/page-management/services/page-theme.service.d.ts +0 -43
- package/public-api.d.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-core-general-master.component-B6llTVoV.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/general-master-management/services/general-master.service.ts","../../../projects/cloud-ide-core/src/lib/core/general-master-management/components/general-master/general-master.component.ts","../../../projects/cloud-ide-core/src/lib/core/general-master-management/components/general-master/general-master.component.html"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { \n cidePath,\n coreRoutesUrl,\n generateStringFromObject,\n hostManagerRoutesUrl,\n generalMasterListControllerResponse,\n generalMasterByIdControllerResponse,\n generalMasterInsertUpdateControllerResponse,\n generalMasterDeleteControllerResponse,\n generalMasterToggleStatusControllerResponse,\n ICoreSygms,\n IGeneralMasterListRequest,\n} from 'cloud-ide-lms-model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GeneralMasterService {\n private http = inject(HttpClient);\n private generalMasterListSubject = new BehaviorSubject<ICoreSygms[]>([]);\n public generalMasterList$ = this.generalMasterListSubject.asObservable();\n\n constructor() {\n console.log('GeneralMasterService initialized - using real API');\n }\n\n /**\n * Get general master list from API\n */\n getMasterList(payload: IGeneralMasterListRequest): Observable<generalMasterListControllerResponse> {\n const query = generateStringFromObject(payload);\n return this.http?.get<generalMasterListControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]))\n .pipe(\n tap((response: generalMasterListControllerResponse) => {\n if (response?.success) {\n this.generalMasterListSubject.next(response?.data || []);\n }\n }),\n catchError(error => {\n console.error('GeneralMasterService API error:', error);\n return this.handleError(error);\n })\n );\n }\n\n /**\n * Get general master list from cache (if available)\n */\n getMasterListFromCache(): ICoreSygms[] {\n return this.generalMasterListSubject.value;\n }\n\n /**\n * Save general master (create or update)\n * POST ${coreRoutesUrl?.generalMaster} - payload: ICoreSygms, response: generalMasterInsertUpdateControllerResponse\n */\n saveMaster(master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n const isUpdate = !!master._id;\n console.log(`${isUpdate ? 'Updating' : 'Creating'} general master:`, master);\n \n // Create proper payload\n const payload: ICoreSygms = {\n ...(master._id && { _id: master._id }), // Only include _id if it exists\n sygms_code: master.sygms_code,\n sygms_id_sygmt: master.sygms_id_sygmt,\n sygms_title: master.sygms_title,\n sygms_desc: master.sygms_desc,\n sygms_isactive: master.sygms_isactive,\n sygms_id_sygms: master.sygms_id_sygms,\n sygms_configuration: master.sygms_configuration,\n sygms_entity_id_syen: master.sygms_entity_id_syen\n };\n \n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster]);\n return this.http.post<generalMasterInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: generalMasterInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Create new general master (backward compatibility)\n */\n createMaster(master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n return this.saveMaster(master);\n }\n\n /**\n * Update existing general master (backward compatibility)\n */\n updateMaster(id: string, master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n return this.saveMaster({ ...master, _id: id });\n }\n\n /**\n * Get general master by ID\n * GET ${coreRoutesUrl?.generalMaster}/byId/:query - payload: { sygms_id: string }, response: generalMasterByIdControllerResponse\n */\n getMasterById(id: string): Observable<generalMasterByIdControllerResponse> {\n console.log('Getting general master by ID:', id);\n const payload = { sygms_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, 'byId', query]);\n return this.http.get<generalMasterByIdControllerResponse>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete general master\n * DELETE ${coreRoutesUrl?.generalMaster}/:query - payload: { sygms_id: string }, response: generalMasterDeleteControllerResponse\n */\n deleteMaster(id: string): Observable<generalMasterDeleteControllerResponse> {\n const payload = { sygms_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]);\n return this.http.delete<generalMasterDeleteControllerResponse>(url)\n .pipe(\n tap((response: generalMasterDeleteControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Toggle general master active status\n */\n toggleMasterStatus(id: string): Observable<generalMasterToggleStatusControllerResponse> {\n console.log('Toggling general master status:', id);\n const payload = { id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]);\n return this.http.put<generalMasterToggleStatusControllerResponse>(url, {})\n .pipe(\n tap((response: generalMasterToggleStatusControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Check if master code exists\n */\n checkMasterCodeExists(code: string, typeId: string, excludeId?: string): Observable<{ success: boolean; message: string; exists: boolean }> {\n const payload: Record<string, string> = { code, typeId };\n if (excludeId) {\n payload['excludeId'] = excludeId;\n }\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, 'checkCodeExists', query]);\n return this.http.get<{ success: boolean; message: string; exists: boolean }>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Refresh general master list from server\n */\n private refreshMasterList(): void {\n const defaultPayload: IGeneralMasterListRequest = {};\n this.getMasterList(defaultPayload).subscribe({\n next: () => {\n console.log('General master list refreshed successfully');\n },\n error: (error) => {\n console.error('Error refreshing general master list:', error);\n }\n });\n }\n\n /**\n * Handle errors\n */\n private handleError(error: unknown): Observable<never> {\n let errorMessage = 'An error occurred';\n\n if (error instanceof Error) {\n errorMessage = error.message;\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n console.error('General Master Service Error:', errorMessage);\n return throwError(() => new Error(errorMessage));\n }\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject, OnInit } 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 { GeneralMasterService } from '../../services/general-master.service';\nimport { GeneralMasterTypeService } from '../../services/general-master-type.service';\nimport { CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, CideEleJsonEditorComponent, CideEleButtonComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\nimport { generateObjectFromString, ICoreSygms, IGeneralMasterListRequest } from 'cloud-ide-lms-model';\nimport { AppStateHelperService } from 'cloud-ide-layout';\n\n/**\n * General Master Component\n * \n * Note: This component now uses the new IGeneralMasterListRequest interface\n * which only supports:\n * - sygms_id_sygmt: Filter by master type\n * - sygms_entity_id_syen: Filter by entity (with hierarchical lookup)\n * \n * Features like search, pagination, and parent filtering are not supported\n * in the current interface and would need backend implementation.\n */\n@Component({\n selector: 'cide-core-app-general-master',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleButtonComponent,\n CideEleDataGridComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleJsonEditorComponent\n ],\n templateUrl: './general-master.component.html',\n styleUrls: []\n})\nexport class GeneralMasterComponent implements OnInit {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private masterService = inject(GeneralMasterService);\n private typeService = inject(GeneralMasterTypeService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private appState = inject(AppStateHelperService);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n masterDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('masterDetailsRendererTemplate');\n masterStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('masterStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n masters = signal<ICoreSygms[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n selectedParentMaster = signal<string>('');\n\n // Type information\n typeId = signal<string>('');\n typeTitle = signal<string>('');\n currentType = signal<ICoreSygms | null>(null);\n\n // Form state\n isEditMode = signal(false);\n editingMasterId = signal<string | null>(null);\n retrievedMaster = signal<ICoreSygms | null>(null);\n\n // Pagination signals\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive forms with signals\n masterForm = this.fb.group({\n sygms_code: ['', [Validators.required, Validators.maxLength(40)]],\n sygms_title: ['', [Validators.required, Validators.maxLength(150)]],\n sygms_desc: ['', [Validators.maxLength(500)]],\n sygms_configuration: ['{}', [Validators.required]],\n sygms_id_sygms: [''],\n sygms_isactive: [true]\n });\n\n // Computed values\n\n isFormDirty = computed(() => this.masterForm.dirty);\n\n // Parent master options for dropdown\n parentMasterOptions = signal<{ value: string; label: string }[]>([]);\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSygms>>({\n id: 'master-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Master Details',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'masterDetailsRenderer'\n },\n {\n key: 'sygms_code',\n header: 'Master Code',\n type: 'text',\n width: '150px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sygms_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'masterStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '150px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search masters...',\n searchableColumns: ['sygms_title', 'sygms_desc', 'sygms_code'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'sygms_id_sygms',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'expanded',\n hasChildrenKey: 'hasChildren'\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none'\n });\n\n // Action handlers for grid\n actionHandlers = {\n onEdit: (item: ICoreSygms) => this.editMaster(item),\n onDelete: (item: ICoreSygms) => this.deleteMaster(item),\n onToggleStatus: (item: ICoreSygms) => this.toggleMasterStatus(item)\n };\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n /**\n * Initialize component\n */\n private initializeComponent(): void {\n // Get type information from route\n this.route.params.subscribe(params => {\n const payload = generateObjectFromString(params['query'] || '');\n this.typeId.set(payload.sygmt_id || '');\n this.typeTitle.set(payload.sygmt_title || '');\n\n if (this.typeId()) {\n this.loadTypeDetails();\n this.loadMasters();\n this.loadParentMasterOptions();\n this.setupFormSubscriptions();\n } else {\n this.error.set('No type ID provided');\n }\n });\n }\n\n /**\n * Load type details\n */\n private loadTypeDetails(): void {\n this.typeService.getTypeById(this.typeId())\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.currentType.set(response.data as ICoreSygms);\n }\n },\n error: (error) => {\n console.error('Error loading type details:', error);\n }\n });\n }\n\n /**\n * Load masters from API\n */\n loadMasters(): void {\n this.loading.set(true);\n this.error.set(null);\n\n const payload: IGeneralMasterListRequest = {\n ...(this.typeId() && { sygms_id_sygmt: this.typeId() })\n // Note: search, pagination, and parent_id are not supported in the new interface\n // These would need to be implemented in the backend if needed\n };\n\n this.masterService.getMasterList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.masters.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load masters');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading masters:', error);\n this.error.set('Failed to load masters. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Load masters by entity ID\n */\n loadMastersByEntity(entityId: string): void {\n this.loading.set(true);\n this.error.set(null);\n\n const payload: IGeneralMasterListRequest = {\n sygms_entity_id_syen: entityId,\n ...(this.typeId() && { sygms_id_sygmt: this.typeId() })\n };\n\n this.masterService.getMasterList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.masters.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load masters');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading masters by entity:', error);\n this.error.set('Failed to load masters. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Load parent master options for dropdown\n */\n private loadParentMasterOptions(): void {\n const payload: IGeneralMasterListRequest = {\n ...(this.typeId() && { sygms_id_sygmt: this.typeId() })\n };\n\n this.masterService.getMasterList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n const options = [\n { value: '', label: '-- Select Parent Master --' },\n ...(response.data || []).map(master => ({\n value: master._id || \"\",\n label: master.sygms_title || \"\"\n }))\n ];\n this.parentMasterOptions.set(options);\n }\n },\n error: (error) => {\n console.error('Error loading parent master options:', error);\n }\n });\n }\n\n /**\n * Setup form subscriptions\n */\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.masterForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(): void {\n this.gridConfig.update(config => ({\n ...config,\n data: this.masters()\n }));\n }\n\n\n\n // Computed template renderers for grid\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n masterDetailsRenderer: this.masterDetailsRendererTemplate(),\n masterStatusRenderer: this.masterStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSygms>): void {\n switch (event.type) {\n case 'pageChange':\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data && 'pageSize' in event.data) {\n this.currentPage.set(event.data['pageIndex'] as number);\n this.pageSize.set(event.data['pageSize'] as number);\n this.loadMasters();\n }\n break;\n case 'search':\n if (event.data && typeof event.data === 'string') {\n this.searchTerm.set(event.data);\n this.currentPage.set(1);\n this.loadMasters();\n }\n break;\n case 'refresh':\n this.loadMasters();\n break;\n case 'action':\n // Handle action events if needed\n console.log('Action event:', event);\n break;\n case 'rowClick':\n // Handle row click events if needed\n console.log('Row click event:', event);\n break;\n case 'sort':\n // Handle sort events if needed\n console.log('Sort event:', event);\n break;\n case 'export':\n // Handle export events if needed\n console.log('Export event:', event);\n break;\n case 'rowReorder':\n // Handle row reorder events if needed\n console.log('Row reorder event:', event);\n break;\n }\n }\n\n /**\n * Create new master\n */\n createMaster(): void {\n if (!this.masterForm.valid) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.masterForm.getRawValue();\n const newMaster: ICoreSygms = {\n _id: '',\n sygms_code: formValue.sygms_code,\n sygms_id_sygmt: this.typeId(),\n sygms_title: formValue.sygms_title,\n sygms_desc: formValue.sygms_desc,\n sygms_configuration: JSON.parse(formValue.sygms_configuration),\n sygms_id_sygms: formValue.sygms_id_sygms || undefined,\n sygms_entity_id_syen: this.appState.getActiveEntityId() || undefined,\n sygms_isactive: formValue.sygms_isactive\n };\n\n this.loading.set(true);\n this.masterService.createMaster(newMaster)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadMasters();\n this.loadParentMasterOptions();\n console.log('✅ Master created successfully');\n } else {\n console.error('❌ Failed to create master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error creating master:', error);\n console.error('❌ Failed to create master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update existing master\n */\n updateMaster(): void {\n if (!this.masterForm.valid || !this.editingMasterId()) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.masterForm.getRawValue();\n const updatedMaster: ICoreSygms = {\n _id: this.editingMasterId()!,\n sygms_code: formValue.sygms_code,\n sygms_id_sygmt: this.typeId(),\n sygms_title: formValue.sygms_title,\n sygms_desc: formValue.sygms_desc,\n sygms_configuration: JSON.parse(formValue.sygms_configuration),\n sygms_id_sygms: formValue.sygms_id_sygms || undefined,\n sygms_entity_id_syen: this.appState.getActiveEntityId() || undefined,\n sygms_isactive: formValue.sygms_isactive\n };\n\n this.loading.set(true);\n this.masterService.updateMaster(this.editingMasterId()!, updatedMaster)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadMasters();\n this.loadParentMasterOptions();\n console.log('✅ Master updated successfully');\n } else {\n console.error('❌ Failed to update master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error updating master:', error);\n console.error('❌ Failed to update master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Edit master\n */\n editMaster(master: ICoreSygms): void {\n this.isEditMode.set(true);\n this.editingMasterId.set(master._id || \"\");\n this.retrievedMaster.set(master);\n\n this.masterForm.patchValue({\n sygms_code: master.sygms_code,\n sygms_title: master.sygms_title,\n sygms_desc: master.sygms_desc,\n sygms_configuration: JSON.stringify(master.sygms_configuration, null, 2),\n sygms_id_sygms: master.sygms_id_sygms || '',\n sygms_isactive: master.sygms_isactive\n });\n\n this.masterForm.markAsPristine();\n }\n\n /**\n * Delete master\n */\n deleteMaster(master: ICoreSygms): void {\n if (confirm(`Are you sure you want to delete the master \"${master.sygms_title}\"?`)) {\n this.loading.set(true);\n this.masterService.deleteMaster(master._id || \"\")\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMasters();\n this.loadParentMasterOptions();\n console.log('✅ Master deleted successfully');\n } else {\n console.error('❌ Failed to delete master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error deleting master:', error);\n console.error('❌ Failed to delete master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle master status\n */\n toggleMasterStatus(master: ICoreSygms): void {\n this.loading.set(true);\n this.masterService.toggleMasterStatus(master._id || \"\")\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMasters();\n console.log(`✅ Master ${master.sygms_isactive ? 'deactivated' : 'activated'} successfully`);\n } else {\n console.error('❌ Failed to toggle master status:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error toggling master status:', error);\n console.error('❌ Failed to toggle master status. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Reset to parent (delete entity-specific override)\n */\n resetToParent(master: ICoreSygms): void {\n if (confirm(`Are you sure you want to reset \"${master.sygms_title}\" to parent values?`)) {\n this.loading.set(true);\n this.masterService.deleteMaster(master._id || \"\")\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMasters();\n console.log('✅ Master reset to parent successfully');\n } else {\n console.error('❌ Failed to reset master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error resetting master:', error);\n console.error('❌ Failed to reset master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Save master (create or update)\n */\n saveMaster(): void {\n if (this.isEditMode()) {\n this.updateMaster();\n } else {\n this.createMaster();\n }\n }\n\n /**\n * Cancel form\n */\n cancelForm(): void {\n this.resetForm();\n }\n\n /**\n * Go back to type list\n */\n goBack(): void {\n this.router.navigate(['/control-panel/general-master-type']);\n }\n\n /**\n * Reset form\n */\n resetForm(): void {\n this.masterForm.reset({\n sygms_code: '',\n sygms_title: '',\n sygms_desc: '',\n sygms_configuration: '{}',\n sygms_id_sygms: '',\n sygms_isactive: true\n });\n this.isEditMode.set(false);\n this.editingMasterId.set(null);\n this.retrievedMaster.set(null);\n this.masterForm.markAsPristine();\n this.masterForm.markAsUntouched();\n }\n\n /**\n * Mark form as touched to trigger validation display\n */\n private markFormAsTouched(): void {\n Object.keys(this.masterForm.controls).forEach(key => {\n const control = this.masterForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Get dropdown items for actions\n */\n getActionDropdownItems(master: ICoreSygms): DropdownItem[] {\n const items: DropdownItem[] = [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n disabled: false\n },\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n disabled: false\n },\n {\n id: 'toggle',\n label: master.sygms_isactive ? 'Deactivate' : 'Activate',\n icon: master.sygms_isactive ? 'block' : 'check_circle',\n disabled: false\n }\n ];\n\n // Add reset to parent option if entity-specific\n if (master.sygms_entity_id_syen) {\n items.push({\n id: 'reset',\n label: 'Reset to Parent',\n icon: 'restore',\n disabled: false\n });\n }\n\n items.push({\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n disabled: false\n });\n\n return items;\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSygms): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n console.log('🔵 Calling editMaster with:', row);\n this.editMaster(row);\n break;\n case 'addChild':\n console.log('🔵 Calling onAddChild with:', row);\n this.onAddChild(row);\n break;\n case 'toggle':\n console.log('🔵 Calling toggleMasterStatus with:', row);\n this.toggleMasterStatus(row);\n break;\n case 'reset':\n console.log('🔵 Calling resetToParent with:', row);\n this.resetToParent(row);\n break;\n case 'delete':\n console.log('🔵 Calling deleteMaster with:', row);\n this.deleteMaster(row);\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n // Close all dropdowns after action\n this.closeAllDropdowns();\n }\n\n /**\n * Add child master\n */\n onAddChild(parentMaster: ICoreSygms): void {\n console.log('🔵 onAddChild called with:', parentMaster);\n console.log('🔵 Parent title:', parentMaster.sygms_title);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.editingMasterId.set(null);\n this.retrievedMaster.set(null);\n\n // Reset form and pre-fill with parent context\n this.masterForm.patchValue({\n sygms_code: '',\n sygms_title: '',\n sygms_desc: '',\n sygms_configuration: '{}',\n sygms_id_sygms: parentMaster._id, // Set parent master ID\n sygms_isactive: true\n });\n\n // Store the parent master for reference (you can display this in the UI)\n console.log('🔵 Ready to add child master for parent:', parentMaster.sygms_title);\n }\n\n /**\n * Get parent master display name\n */\n getParentMasterDisplay(): string {\n const parentId = this.masterForm.get('sygms_id_sygms')?.value;\n if (!parentId) return 'Unknown Parent';\n \n const parentMaster = this.masters().find(master => master._id === parentId);\n return parentMaster?.sygms_title || 'Unknown Parent';\n }\n\n /**\n * Clear parent master from form\n */\n clearParentMaster(): void {\n this.masterForm.patchValue({\n sygms_id_sygms: ''\n });\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n // Close all dropdowns by clicking outside\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n} ","<!-- General Master Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-4 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-0\">\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-mb-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Master' : 'Quick Add Master' }}</h6>\n </div>\n \n <!-- Parent Master Info Box -->\n @if (masterForm.get('sygms_id_sygms')?.value) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <span class=\"tw-text-sm tw-font-medium tw-text-blue-800\">Adding Child</span>\n <span class=\"tw-text-xs tw-text-blue-700\">\n Parent: <span class=\"tw-font-medium\">{{ getParentMasterDisplay() }}</span>\n </span>\n <button \n type=\"button\"\n (click)=\"clearParentMaster()\"\n class=\"tw-text-sm tw-text-blue-600 hover:tw-text-blue-800 hover:tw-bg-blue-100 tw-rounded tw-px-1\">\n ×\n </button>\n </div>\n }\n </div>\n \n <form [formGroup]=\"masterForm\" class=\"tw-space-y-2\">\n \n <!-- First Row - Basic fields -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-6 tw-gap-2\">\n <!-- Master Code -->\n <div class=\"lg:tw-col-span-1\">\n <cide-ele-input \n formControlName=\"sygms_code\" \n label=\"Master Code*\" \n placeholder=\"Enter master code\"\n size=\"sm\"\n [required]=\"true\" \n [maxlength]=\"40\">\n </cide-ele-input>\n </div>\n \n <!-- Master Title -->\n <div class=\"lg:tw-col-span-3\">\n <cide-ele-input \n formControlName=\"sygms_title\" \n label=\"Master Title*\" \n placeholder=\"Enter master title\"\n size=\"sm\"\n [required]=\"true\" \n [maxlength]=\"150\">\n </cide-ele-input>\n </div>\n \n <!-- Active Status -->\n <div class=\"lg:tw-col-span-1 tw-flex tw-items-center tw-pt-0\">\n <cide-ele-input \n formControlName=\"sygms_isactive\"\n type=\"checkbox\"\n label=\"Active\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Third Row - JSON Configuration and Description/Save side by side -->\n <div class=\"tw-flex tw-gap-4\">\n <!-- JSON Configuration (60% width) -->\n <div class=\"tw-w-3/5\">\n <cide-ele-json-editor \n formControlName=\"sygms_configuration\" \n label=\"Configuration*\" \n size=\"sm\"\n [required]=\"true\">\n </cide-ele-json-editor>\n </div>\n \n <!-- Description and Save Button (40% width) -->\n <div class=\"tw-w-2/5 tw-flex tw-flex-col tw-space-y-4\">\n <!-- Description -->\n <div class=\"tw-flex-1\">\n <cide-ele-textarea \n formControlName=\"sygms_desc\" \n label=\"Description\" \n placeholder=\"Enter description\"\n size=\"sm\"\n [maxlength]=\"500\" \n [rows]=\"4\">\n </cide-ele-textarea>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-justify-end tw-space-x-2\">\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\" \n (click)=\"resetForm()\"\n [disabled]=\"loading()\"\n class=\"tw-px-4 tw-py-2\">\n Reset\n </button>\n @if (isEditMode()) {\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\" \n (click)=\"cancelForm()\"\n [disabled]=\"loading()\"\n class=\"tw-px-4 tw-py-2\">\n Cancel\n </button>\n }\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n (click)=\"saveMaster()\"\n [disabled]=\"!masterForm.valid || loading()\"\n class=\"tw-px-4 tw-py-2\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Save' }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-4 tw-py-2 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-2 sm:tw-space-y-0\">\n \n <!-- Title and Back Button -->\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n @if (typeTitle()) {\n <div>\n <p class=\"tw-text-xs tw-text-gray-500 tw-m-0\">Type: {{ typeTitle() }}</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-2 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Actions can be added here in the future -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-3 tw-p-3 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-4 tw-h-4 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"templateRenderers()\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Template Renderers -->\n<ng-template #masterDetailsRendererTemplate let-row=\"row\">\n <div class=\"tw-flex tw-flex-col tw-w-full\">\n <div class=\"tw-font-medium tw-text-gray-900\">{{ row.sygms_title || 'N/A' }}</div>\n <div class=\"tw-text-sm tw-text-gray-500 tw-truncate\">{{ row.sygms_desc || 'No description' }}</div>\n </div>\n</ng-template>\n\n<ng-template #masterStatusRendererTemplate let-row=\"row\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium\"\n [class.tw-bg-green-100]=\"row.sygms_isactive\"\n [class.tw-text-green-800]=\"row.sygms_isactive\"\n [class.tw-bg-red-100]=\"!row.sygms_isactive\"\n [class.tw-text-red-800]=\"!row.sygms_isactive\">\n {{ row.sygms_isactive ? 'Active' : 'Inactive' }}\n </span>\n</ng-template>\n\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\">\n <cide-ele-dropdown\n [items]=\"getActionDropdownItems(row)\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template> "],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-core-general-master.component-CFGGHinl.mjs","sources":["../../../projects/cloud-ide-core/src/lib/core/general-master-management/services/general-master.service.ts","../../../projects/cloud-ide-core/src/lib/core/general-master-management/components/general-master/general-master.component.ts","../../../projects/cloud-ide-core/src/lib/core/general-master-management/components/general-master/general-master.component.html"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { \n cidePath,\n coreRoutesUrl,\n generateStringFromObject,\n hostManagerRoutesUrl,\n generalMasterListControllerResponse,\n generalMasterByIdControllerResponse,\n generalMasterInsertUpdateControllerResponse,\n generalMasterDeleteControllerResponse,\n generalMasterToggleStatusControllerResponse,\n ICoreSygms,\n IGeneralMasterListRequest,\n} from 'cloud-ide-lms-model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GeneralMasterService {\n private http = inject(HttpClient);\n private generalMasterListSubject = new BehaviorSubject<ICoreSygms[]>([]);\n public generalMasterList$ = this.generalMasterListSubject.asObservable();\n\n constructor() {\n console.log('GeneralMasterService initialized - using real API');\n }\n\n /**\n * Get general master list from API\n */\n getMasterList(payload: IGeneralMasterListRequest): Observable<generalMasterListControllerResponse> {\n const query = generateStringFromObject(payload);\n return this.http?.get<generalMasterListControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]))\n .pipe(\n tap((response: generalMasterListControllerResponse) => {\n if (response?.success) {\n this.generalMasterListSubject.next(response?.data || []);\n }\n }),\n catchError(error => {\n console.error('GeneralMasterService API error:', error);\n return this.handleError(error);\n })\n );\n }\n\n /**\n * Get general master list from cache (if available)\n */\n getMasterListFromCache(): ICoreSygms[] {\n return this.generalMasterListSubject.value;\n }\n\n /**\n * Save general master (create or update)\n * POST ${coreRoutesUrl?.generalMaster} - payload: ICoreSygms, response: generalMasterInsertUpdateControllerResponse\n */\n saveMaster(master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n const isUpdate = !!master._id;\n console.log(`${isUpdate ? 'Updating' : 'Creating'} general master:`, master);\n \n // Create proper payload\n const payload: ICoreSygms = {\n ...(master._id && { _id: master._id }), // Only include _id if it exists\n sygms_code: master.sygms_code,\n sygms_id_sygmt: master.sygms_id_sygmt,\n sygms_title: master.sygms_title,\n sygms_desc: master.sygms_desc,\n sygms_isactive: master.sygms_isactive,\n sygms_id_sygms: master.sygms_id_sygms,\n sygms_configuration: master.sygms_configuration,\n sygms_entity_id_syen: master.sygms_entity_id_syen\n };\n \n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster]);\n return this.http.post<generalMasterInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: generalMasterInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Create new general master (backward compatibility)\n */\n createMaster(master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n return this.saveMaster(master);\n }\n\n /**\n * Update existing general master (backward compatibility)\n */\n updateMaster(id: string, master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n return this.saveMaster({ ...master, _id: id });\n }\n\n /**\n * Get general master by ID\n * GET ${coreRoutesUrl?.generalMaster}/byId/:query - payload: { sygms_id: string }, response: generalMasterByIdControllerResponse\n */\n getMasterById(id: string): Observable<generalMasterByIdControllerResponse> {\n console.log('Getting general master by ID:', id);\n const payload = { sygms_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, 'byId', query]);\n return this.http.get<generalMasterByIdControllerResponse>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete general master\n * DELETE ${coreRoutesUrl?.generalMaster}/:query - payload: { sygms_id: string }, response: generalMasterDeleteControllerResponse\n */\n deleteMaster(id: string): Observable<generalMasterDeleteControllerResponse> {\n const payload = { sygms_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]);\n return this.http.delete<generalMasterDeleteControllerResponse>(url)\n .pipe(\n tap((response: generalMasterDeleteControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Toggle general master active status\n */\n toggleMasterStatus(id: string): Observable<generalMasterToggleStatusControllerResponse> {\n console.log('Toggling general master status:', id);\n const payload = { id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]);\n return this.http.put<generalMasterToggleStatusControllerResponse>(url, {})\n .pipe(\n tap((response: generalMasterToggleStatusControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Check if master code exists\n */\n checkMasterCodeExists(code: string, typeId: string, excludeId?: string): Observable<{ success: boolean; message: string; exists: boolean }> {\n const payload: Record<string, string> = { code, typeId };\n if (excludeId) {\n payload['excludeId'] = excludeId;\n }\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, 'checkCodeExists', query]);\n return this.http.get<{ success: boolean; message: string; exists: boolean }>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Refresh general master list from server\n */\n private refreshMasterList(): void {\n const defaultPayload: IGeneralMasterListRequest = {};\n this.getMasterList(defaultPayload).subscribe({\n next: () => {\n console.log('General master list refreshed successfully');\n },\n error: (error) => {\n console.error('Error refreshing general master list:', error);\n }\n });\n }\n\n /**\n * Handle errors\n */\n private handleError(error: unknown): Observable<never> {\n let errorMessage = 'An error occurred';\n\n if (error instanceof Error) {\n errorMessage = error.message;\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n console.error('General Master Service Error:', errorMessage);\n return throwError(() => new Error(errorMessage));\n }\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject, OnInit } 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 { GeneralMasterService } from '../../services/general-master.service';\nimport { GeneralMasterTypeService } from '../../services/general-master-type.service';\nimport { CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, CideEleJsonEditorComponent, CideEleButtonComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\nimport { generateObjectFromString, ICoreSygms, IGeneralMasterListRequest } from 'cloud-ide-lms-model';\nimport { AppStateHelperService } from 'cloud-ide-layout';\n\n/**\n * General Master Component\n * \n * Note: This component now uses the new IGeneralMasterListRequest interface\n * which only supports:\n * - sygms_id_sygmt: Filter by master type\n * - sygms_entity_id_syen: Filter by entity (with hierarchical lookup)\n * \n * Features like search, pagination, and parent filtering are not supported\n * in the current interface and would need backend implementation.\n */\n@Component({\n selector: 'cide-core-app-general-master',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleButtonComponent,\n CideEleDataGridComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleJsonEditorComponent\n ],\n templateUrl: './general-master.component.html',\n styleUrls: []\n})\nexport class GeneralMasterComponent implements OnInit {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private masterService = inject(GeneralMasterService);\n private typeService = inject(GeneralMasterTypeService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private appState = inject(AppStateHelperService);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n masterDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('masterDetailsRendererTemplate');\n masterStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('masterStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n masters = signal<ICoreSygms[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n selectedParentMaster = signal<string>('');\n\n // Type information\n typeId = signal<string>('');\n typeTitle = signal<string>('');\n currentType = signal<ICoreSygms | null>(null);\n\n // Form state\n isEditMode = signal(false);\n editingMasterId = signal<string | null>(null);\n retrievedMaster = signal<ICoreSygms | null>(null);\n\n // Pagination signals\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive forms with signals\n masterForm = this.fb.group({\n sygms_code: ['', [Validators.required, Validators.maxLength(40)]],\n sygms_title: ['', [Validators.required, Validators.maxLength(150)]],\n sygms_desc: ['', [Validators.maxLength(500)]],\n sygms_configuration: ['{}', [Validators.required]],\n sygms_id_sygms: [''],\n sygms_isactive: [true]\n });\n\n // Computed values\n\n isFormDirty = computed(() => this.masterForm.dirty);\n\n // Parent master options for dropdown\n parentMasterOptions = signal<{ value: string; label: string }[]>([]);\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSygms>>({\n id: 'master-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Master Details',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'masterDetailsRenderer'\n },\n {\n key: 'sygms_code',\n header: 'Master Code',\n type: 'text',\n width: '150px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sygms_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'masterStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '150px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search masters...',\n searchableColumns: ['sygms_title', 'sygms_desc', 'sygms_code'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'sygms_id_sygms',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'expanded',\n hasChildrenKey: 'hasChildren'\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none'\n });\n\n // Action handlers for grid\n actionHandlers = {\n onEdit: (item: ICoreSygms) => this.editMaster(item),\n onDelete: (item: ICoreSygms) => this.deleteMaster(item),\n onToggleStatus: (item: ICoreSygms) => this.toggleMasterStatus(item)\n };\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n /**\n * Initialize component\n */\n private initializeComponent(): void {\n // Get type information from route\n this.route.params.subscribe(params => {\n const payload = generateObjectFromString(params['query'] || '');\n this.typeId.set(payload.sygmt_id || '');\n this.typeTitle.set(payload.sygmt_title || '');\n\n if (this.typeId()) {\n this.loadTypeDetails();\n this.loadMasters();\n this.loadParentMasterOptions();\n this.setupFormSubscriptions();\n } else {\n this.error.set('No type ID provided');\n }\n });\n }\n\n /**\n * Load type details\n */\n private loadTypeDetails(): void {\n this.typeService.getTypeById(this.typeId())\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.currentType.set(response.data as ICoreSygms);\n }\n },\n error: (error) => {\n console.error('Error loading type details:', error);\n }\n });\n }\n\n /**\n * Load masters from API\n */\n loadMasters(): void {\n this.loading.set(true);\n this.error.set(null);\n\n const payload: IGeneralMasterListRequest = {\n ...(this.typeId() && { sygms_id_sygmt: this.typeId() })\n // Note: search, pagination, and parent_id are not supported in the new interface\n // These would need to be implemented in the backend if needed\n };\n\n this.masterService.getMasterList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.masters.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load masters');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading masters:', error);\n this.error.set('Failed to load masters. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Load masters by entity ID\n */\n loadMastersByEntity(entityId: string): void {\n this.loading.set(true);\n this.error.set(null);\n\n const payload: IGeneralMasterListRequest = {\n sygms_entity_id_syen: entityId,\n ...(this.typeId() && { sygms_id_sygmt: this.typeId() })\n };\n\n this.masterService.getMasterList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.masters.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load masters');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading masters by entity:', error);\n this.error.set('Failed to load masters. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Load parent master options for dropdown\n */\n private loadParentMasterOptions(): void {\n const payload: IGeneralMasterListRequest = {\n ...(this.typeId() && { sygms_id_sygmt: this.typeId() })\n };\n\n this.masterService.getMasterList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n const options = [\n { value: '', label: '-- Select Parent Master --' },\n ...(response.data || []).map(master => ({\n value: master._id || \"\",\n label: master.sygms_title || \"\"\n }))\n ];\n this.parentMasterOptions.set(options);\n }\n },\n error: (error) => {\n console.error('Error loading parent master options:', error);\n }\n });\n }\n\n /**\n * Setup form subscriptions\n */\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.masterForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(): void {\n this.gridConfig.update(config => ({\n ...config,\n data: this.masters()\n }));\n }\n\n\n\n // Computed template renderers for grid\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n masterDetailsRenderer: this.masterDetailsRendererTemplate(),\n masterStatusRenderer: this.masterStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSygms>): void {\n switch (event.type) {\n case 'pageChange':\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data && 'pageSize' in event.data) {\n this.currentPage.set(event.data['pageIndex'] as number);\n this.pageSize.set(event.data['pageSize'] as number);\n this.loadMasters();\n }\n break;\n case 'search':\n if (event.data && typeof event.data === 'string') {\n this.searchTerm.set(event.data);\n this.currentPage.set(1);\n this.loadMasters();\n }\n break;\n case 'refresh':\n this.loadMasters();\n break;\n case 'action':\n // Handle action events if needed\n console.log('Action event:', event);\n break;\n case 'rowClick':\n // Handle row click events if needed\n console.log('Row click event:', event);\n break;\n case 'sort':\n // Handle sort events if needed\n console.log('Sort event:', event);\n break;\n case 'export':\n // Handle export events if needed\n console.log('Export event:', event);\n break;\n case 'rowReorder':\n // Handle row reorder events if needed\n console.log('Row reorder event:', event);\n break;\n }\n }\n\n /**\n * Create new master\n */\n createMaster(): void {\n if (!this.masterForm.valid) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.masterForm.getRawValue();\n const newMaster: ICoreSygms = {\n _id: '',\n sygms_code: formValue.sygms_code,\n sygms_id_sygmt: this.typeId(),\n sygms_title: formValue.sygms_title,\n sygms_desc: formValue.sygms_desc,\n sygms_configuration: JSON.parse(formValue.sygms_configuration),\n sygms_id_sygms: formValue.sygms_id_sygms || undefined,\n sygms_entity_id_syen: this.appState.getActiveEntityId() || undefined,\n sygms_isactive: formValue.sygms_isactive\n };\n\n this.loading.set(true);\n this.masterService.createMaster(newMaster)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadMasters();\n this.loadParentMasterOptions();\n console.log('✅ Master created successfully');\n } else {\n console.error('❌ Failed to create master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error creating master:', error);\n console.error('❌ Failed to create master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update existing master\n */\n updateMaster(): void {\n if (!this.masterForm.valid || !this.editingMasterId()) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.masterForm.getRawValue();\n const updatedMaster: ICoreSygms = {\n _id: this.editingMasterId()!,\n sygms_code: formValue.sygms_code,\n sygms_id_sygmt: this.typeId(),\n sygms_title: formValue.sygms_title,\n sygms_desc: formValue.sygms_desc,\n sygms_configuration: JSON.parse(formValue.sygms_configuration),\n sygms_id_sygms: formValue.sygms_id_sygms || undefined,\n sygms_entity_id_syen: this.appState.getActiveEntityId() || undefined,\n sygms_isactive: formValue.sygms_isactive\n };\n\n this.loading.set(true);\n this.masterService.updateMaster(this.editingMasterId()!, updatedMaster)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadMasters();\n this.loadParentMasterOptions();\n console.log('✅ Master updated successfully');\n } else {\n console.error('❌ Failed to update master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error updating master:', error);\n console.error('❌ Failed to update master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Edit master\n */\n editMaster(master: ICoreSygms): void {\n this.isEditMode.set(true);\n this.editingMasterId.set(master._id || \"\");\n this.retrievedMaster.set(master);\n\n this.masterForm.patchValue({\n sygms_code: master.sygms_code,\n sygms_title: master.sygms_title,\n sygms_desc: master.sygms_desc,\n sygms_configuration: JSON.stringify(master.sygms_configuration, null, 2),\n sygms_id_sygms: master.sygms_id_sygms || '',\n sygms_isactive: master.sygms_isactive\n });\n\n this.masterForm.markAsPristine();\n }\n\n /**\n * Delete master\n */\n deleteMaster(master: ICoreSygms): void {\n if (confirm(`Are you sure you want to delete the master \"${master.sygms_title}\"?`)) {\n this.loading.set(true);\n this.masterService.deleteMaster(master._id || \"\")\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMasters();\n this.loadParentMasterOptions();\n console.log('✅ Master deleted successfully');\n } else {\n console.error('❌ Failed to delete master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error deleting master:', error);\n console.error('❌ Failed to delete master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle master status\n */\n toggleMasterStatus(master: ICoreSygms): void {\n this.loading.set(true);\n this.masterService.toggleMasterStatus(master._id || \"\")\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMasters();\n console.log(`✅ Master ${master.sygms_isactive ? 'deactivated' : 'activated'} successfully`);\n } else {\n console.error('❌ Failed to toggle master status:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error toggling master status:', error);\n console.error('❌ Failed to toggle master status. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Reset to parent (delete entity-specific override)\n */\n resetToParent(master: ICoreSygms): void {\n if (confirm(`Are you sure you want to reset \"${master.sygms_title}\" to parent values?`)) {\n this.loading.set(true);\n this.masterService.deleteMaster(master._id || \"\")\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMasters();\n console.log('✅ Master reset to parent successfully');\n } else {\n console.error('❌ Failed to reset master:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error resetting master:', error);\n console.error('❌ Failed to reset master. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Save master (create or update)\n */\n saveMaster(): void {\n if (this.isEditMode()) {\n this.updateMaster();\n } else {\n this.createMaster();\n }\n }\n\n /**\n * Cancel form\n */\n cancelForm(): void {\n this.resetForm();\n }\n\n /**\n * Go back to type list\n */\n goBack(): void {\n this.router.navigate(['/control-panel/general-master-type']);\n }\n\n /**\n * Reset form\n */\n resetForm(): void {\n this.masterForm.reset({\n sygms_code: '',\n sygms_title: '',\n sygms_desc: '',\n sygms_configuration: '{}',\n sygms_id_sygms: '',\n sygms_isactive: true\n });\n this.isEditMode.set(false);\n this.editingMasterId.set(null);\n this.retrievedMaster.set(null);\n this.masterForm.markAsPristine();\n this.masterForm.markAsUntouched();\n }\n\n /**\n * Mark form as touched to trigger validation display\n */\n private markFormAsTouched(): void {\n Object.keys(this.masterForm.controls).forEach(key => {\n const control = this.masterForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Get dropdown items for actions\n */\n getActionDropdownItems(master: ICoreSygms): DropdownItem[] {\n const items: DropdownItem[] = [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n disabled: false\n },\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n disabled: false\n },\n {\n id: 'toggle',\n label: master.sygms_isactive ? 'Deactivate' : 'Activate',\n icon: master.sygms_isactive ? 'block' : 'check_circle',\n disabled: false\n }\n ];\n\n // Add reset to parent option if entity-specific\n if (master.sygms_entity_id_syen) {\n items.push({\n id: 'reset',\n label: 'Reset to Parent',\n icon: 'restore',\n disabled: false\n });\n }\n\n items.push({\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n disabled: false\n });\n\n return items;\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSygms): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n console.log('🔵 Calling editMaster with:', row);\n this.editMaster(row);\n break;\n case 'addChild':\n console.log('🔵 Calling onAddChild with:', row);\n this.onAddChild(row);\n break;\n case 'toggle':\n console.log('🔵 Calling toggleMasterStatus with:', row);\n this.toggleMasterStatus(row);\n break;\n case 'reset':\n console.log('🔵 Calling resetToParent with:', row);\n this.resetToParent(row);\n break;\n case 'delete':\n console.log('🔵 Calling deleteMaster with:', row);\n this.deleteMaster(row);\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n // Close all dropdowns after action\n this.closeAllDropdowns();\n }\n\n /**\n * Add child master\n */\n onAddChild(parentMaster: ICoreSygms): void {\n console.log('🔵 onAddChild called with:', parentMaster);\n console.log('🔵 Parent title:', parentMaster.sygms_title);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.editingMasterId.set(null);\n this.retrievedMaster.set(null);\n\n // Reset form and pre-fill with parent context\n this.masterForm.patchValue({\n sygms_code: '',\n sygms_title: '',\n sygms_desc: '',\n sygms_configuration: '{}',\n sygms_id_sygms: parentMaster._id, // Set parent master ID\n sygms_isactive: true\n });\n\n // Store the parent master for reference (you can display this in the UI)\n console.log('🔵 Ready to add child master for parent:', parentMaster.sygms_title);\n }\n\n /**\n * Get parent master display name\n */\n getParentMasterDisplay(): string {\n const parentId = this.masterForm.get('sygms_id_sygms')?.value;\n if (!parentId) return 'Unknown Parent';\n \n const parentMaster = this.masters().find(master => master._id === parentId);\n return parentMaster?.sygms_title || 'Unknown Parent';\n }\n\n /**\n * Clear parent master from form\n */\n clearParentMaster(): void {\n this.masterForm.patchValue({\n sygms_id_sygms: ''\n });\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n // Close all dropdowns by clicking outside\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n} ","<!-- General Master Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-4 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-0\">\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-mb-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Master' : 'Quick Add Master' }}</h6>\n </div>\n \n <!-- Parent Master Info Box -->\n @if (masterForm.get('sygms_id_sygms')?.value) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <span class=\"tw-text-sm tw-font-medium tw-text-blue-800\">Adding Child</span>\n <span class=\"tw-text-xs tw-text-blue-700\">\n Parent: <span class=\"tw-font-medium\">{{ getParentMasterDisplay() }}</span>\n </span>\n <button \n type=\"button\"\n (click)=\"clearParentMaster()\"\n class=\"tw-text-sm tw-text-blue-600 hover:tw-text-blue-800 hover:tw-bg-blue-100 tw-rounded tw-px-1\">\n ×\n </button>\n </div>\n }\n </div>\n \n <form [formGroup]=\"masterForm\" class=\"tw-space-y-2\">\n \n <!-- First Row - Basic fields -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-6 tw-gap-2\">\n <!-- Master Code -->\n <div class=\"lg:tw-col-span-1\">\n <cide-ele-input \n formControlName=\"sygms_code\" \n label=\"Master Code*\" \n placeholder=\"Enter master code\"\n size=\"sm\"\n [required]=\"true\" \n [maxlength]=\"40\">\n </cide-ele-input>\n </div>\n \n <!-- Master Title -->\n <div class=\"lg:tw-col-span-3\">\n <cide-ele-input \n formControlName=\"sygms_title\" \n label=\"Master Title*\" \n placeholder=\"Enter master title\"\n size=\"sm\"\n [required]=\"true\" \n [maxlength]=\"150\">\n </cide-ele-input>\n </div>\n \n <!-- Active Status -->\n <div class=\"lg:tw-col-span-1 tw-flex tw-items-center tw-pt-0\">\n <cide-ele-input \n formControlName=\"sygms_isactive\"\n type=\"checkbox\"\n label=\"Active\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Third Row - JSON Configuration and Description/Save side by side -->\n <div class=\"tw-flex tw-gap-4\">\n <!-- JSON Configuration (60% width) -->\n <div class=\"tw-w-3/5\">\n <cide-ele-json-editor \n formControlName=\"sygms_configuration\" \n label=\"Configuration*\" \n size=\"sm\"\n [required]=\"true\">\n </cide-ele-json-editor>\n </div>\n \n <!-- Description and Save Button (40% width) -->\n <div class=\"tw-w-2/5 tw-flex tw-flex-col tw-space-y-4\">\n <!-- Description -->\n <div class=\"tw-flex-1\">\n <cide-ele-textarea \n formControlName=\"sygms_desc\" \n label=\"Description\" \n placeholder=\"Enter description\"\n size=\"sm\"\n [maxlength]=\"500\" \n [rows]=\"4\">\n </cide-ele-textarea>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-justify-end tw-space-x-2\">\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\" \n (click)=\"resetForm()\"\n [disabled]=\"loading()\"\n class=\"tw-px-4 tw-py-2\">\n Reset\n </button>\n @if (isEditMode()) {\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\" \n (click)=\"cancelForm()\"\n [disabled]=\"loading()\"\n class=\"tw-px-4 tw-py-2\">\n Cancel\n </button>\n }\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n (click)=\"saveMaster()\"\n [disabled]=\"!masterForm.valid || loading()\"\n class=\"tw-px-4 tw-py-2\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Save' }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-4 tw-py-2 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-2 sm:tw-space-y-0\">\n \n <!-- Title and Back Button -->\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n @if (typeTitle()) {\n <div>\n <p class=\"tw-text-xs tw-text-gray-500 tw-m-0\">Type: {{ typeTitle() }}</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-2 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Actions can be added here in the future -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-3 tw-p-3 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-4 tw-h-4 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"templateRenderers()\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Template Renderers -->\n<ng-template #masterDetailsRendererTemplate let-row=\"row\">\n <div class=\"tw-flex tw-flex-col tw-w-full\">\n <div class=\"tw-font-medium tw-text-gray-900\">{{ row.sygms_title || 'N/A' }}</div>\n <div class=\"tw-text-sm tw-text-gray-500 tw-truncate\">{{ row.sygms_desc || 'No description' }}</div>\n </div>\n</ng-template>\n\n<ng-template #masterStatusRendererTemplate let-row=\"row\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium\"\n [class.tw-bg-green-100]=\"row.sygms_isactive\"\n [class.tw-text-green-800]=\"row.sygms_isactive\"\n [class.tw-bg-red-100]=\"!row.sygms_isactive\"\n [class.tw-text-red-800]=\"!row.sygms_isactive\">\n {{ row.sygms_isactive ? 'Active' : 'Inactive' }}\n </span>\n</ng-template>\n\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\">\n <cide-ele-dropdown\n [items]=\"getActionDropdownItems(row)\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template> "],"names":["i1"],"mappings":"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"}
|
|
@@ -11,28 +11,26 @@ import { CideEleButtonComponent, CideInputComponent, CideTextareaComponent, Cide
|
|
|
11
11
|
import { generateObjectFromString } from 'cloud-ide-lms-model';
|
|
12
12
|
|
|
13
13
|
class PageFormComponent {
|
|
14
|
+
destroyRef = inject(DestroyRef);
|
|
15
|
+
pageService = inject(PageManagementService);
|
|
16
|
+
appState = inject(AppStateHelperService);
|
|
17
|
+
fb = inject(NonNullableFormBuilder);
|
|
18
|
+
router = inject(Router);
|
|
19
|
+
route = inject(ActivatedRoute);
|
|
20
|
+
loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
21
|
+
error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
22
|
+
success = signal(null, ...(ngDevMode ? [{ debugName: "success" }] : []));
|
|
23
|
+
// Page information
|
|
24
|
+
pageId = signal(null, ...(ngDevMode ? [{ debugName: "pageId" }] : []));
|
|
25
|
+
isEditMode = signal(false, ...(ngDevMode ? [{ debugName: "isEditMode" }] : []));
|
|
26
|
+
pageForm = this.fb.group({
|
|
27
|
+
sypg_title: ['', [Validators.required, Validators.maxLength(100)]],
|
|
28
|
+
sypg_desc: ['', [Validators.maxLength(255)]],
|
|
29
|
+
sypg_page_code: ['', [Validators.required, Validators.maxLength(40), Validators.pattern(/^[a-zA-Z0-9_]+$/)]],
|
|
30
|
+
sypg_configuration: ['{}', [Validators.required]],
|
|
31
|
+
sypg_isactive: [true]
|
|
32
|
+
});
|
|
14
33
|
constructor() {
|
|
15
|
-
this.destroyRef = inject(DestroyRef);
|
|
16
|
-
this.pageService = inject(PageManagementService);
|
|
17
|
-
this.appState = inject(AppStateHelperService);
|
|
18
|
-
this.fb = inject(NonNullableFormBuilder);
|
|
19
|
-
this.router = inject(Router);
|
|
20
|
-
this.route = inject(ActivatedRoute);
|
|
21
|
-
this.loading = signal(false);
|
|
22
|
-
this.error = signal(null);
|
|
23
|
-
this.success = signal(null);
|
|
24
|
-
// Page information
|
|
25
|
-
this.pageId = signal(null);
|
|
26
|
-
this.isEditMode = signal(false);
|
|
27
|
-
this.pageForm = this.fb.group({
|
|
28
|
-
sypg_title: ['', [Validators.required, Validators.maxLength(100)]],
|
|
29
|
-
sypg_desc: ['', [Validators.maxLength(255)]],
|
|
30
|
-
sypg_page_code: ['', [Validators.required, Validators.maxLength(40), Validators.pattern(/^[a-zA-Z0-9_]+$/)]],
|
|
31
|
-
sypg_configuration: ['{}', [Validators.required]],
|
|
32
|
-
sypg_isactive: [true]
|
|
33
|
-
});
|
|
34
|
-
// Computed values
|
|
35
|
-
this.isFormDirty = computed(() => this.pageForm.dirty);
|
|
36
34
|
this.setupFormSubscriptions();
|
|
37
35
|
}
|
|
38
36
|
ngOnInit() {
|
|
@@ -135,6 +133,8 @@ class PageFormComponent {
|
|
|
135
133
|
// Form validation is handled by computed signals
|
|
136
134
|
});
|
|
137
135
|
}
|
|
136
|
+
// Computed values
|
|
137
|
+
isFormDirty = computed(() => this.pageForm.dirty, ...(ngDevMode ? [{ debugName: "isFormDirty" }] : []));
|
|
138
138
|
// Form submission
|
|
139
139
|
savePage() {
|
|
140
140
|
if (!this.pageForm.valid) {
|
|
@@ -192,10 +192,10 @@ class PageFormComponent {
|
|
|
192
192
|
control?.markAsTouched();
|
|
193
193
|
});
|
|
194
194
|
}
|
|
195
|
-
static
|
|
196
|
-
static
|
|
195
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PageFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: PageFormComponent, isStandalone: true, selector: "cide-core-page-form", ngImport: i0, template: "<div class=\"page-form-fullscreen\">\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 @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 {{ success() }}\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 {{ error() }}\n </div>\n }\n\n <!-- Form Content -->\n <div class=\"form-section\">\n <div class=\"grid grid-2 gap-md lg-grid-2 md-grid-1\">\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 \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\n <div class=\"grid grid-1 gap-md\">\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\n <div class=\"grid grid-1 gap-md\">\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\n <div class=\"grid grid-1 gap-sm\">\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 <!-- Form Actions -->\n <div class=\"form-actions\">\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 </form>\n </div>\n</div>\n", styles: [".page-form-container{background:transparent;padding:1rem;width:100%;box-sizing:border-box}.page-form{max-width:1200px;margin:0 auto;background:transparent;border:none;box-shadow:none;width:100%}.page-form.loading{opacity:.6;pointer-events:none}.form-header{background:transparent;color:#1f2937;padding:1.25rem 0;text-align:left}.form-header .form-title{font-size:1.5rem;font-weight:700;margin:0 0 .25rem;color:#1f2937}.form-header .form-subtitle{font-size:.95rem;opacity:.7;margin:0;font-weight:400;color:#6b7280}.form-section{padding:1.25rem 0;border-bottom:none;margin-bottom:1.5rem}.form-section:last-of-type{margin-bottom:0}.grid{display:grid;gap:1rem;margin-bottom:.75rem;transition:all .3s ease}.grid:last-child{margin-bottom:0}.grid.grid-1{grid-template-columns:1fr}.grid.grid-2{grid-template-columns:repeat(2,1fr)}.grid.grid-3{grid-template-columns:repeat(3,1fr)}.grid.grid-4{grid-template-columns:repeat(4,1fr)}.grid.gap-sm{gap:.5rem}.grid.gap-md{gap:1rem}.grid.gap-lg{gap:1.5rem}.grid.gap-xl{gap:2rem}@media (max-width: 1199px) and (min-width: 992px){.grid.lg-grid-1{grid-template-columns:1fr}.grid.lg-grid-2{grid-template-columns:repeat(2,1fr)}.grid.lg-grid-3{grid-template-columns:repeat(3,1fr)}}@media (max-width: 991px) and (min-width: 768px){.grid.md-grid-1{grid-template-columns:1fr}.grid.md-grid-2{grid-template-columns:repeat(2,1fr)}.grid.md-grid-3{grid-template-columns:repeat(3,1fr)}}@media (max-width: 1024px){.grid.grid-4:not([class*=lg-grid]):not([class*=md-grid]){grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.grid{gap:.75rem}.grid.grid-2:not([class*=sm-grid]):not([class*=xs-grid]),.grid.grid-3:not([class*=sm-grid]):not([class*=xs-grid]),.grid.grid-4:not([class*=sm-grid]):not([class*=xs-grid]){grid-template-columns:1fr}.grid.gap-lg{gap:1rem}.grid.gap-xl{gap:1.25rem}}@media (max-width: 480px){.grid{gap:.5rem}.grid:not([class*=xs-grid]){grid-template-columns:1fr!important}.grid.gap-md{gap:.75rem}.grid.gap-lg,.grid.gap-xl{gap:1rem}}.checkbox-field{margin:.25rem 0}.checkbox-label{display:flex;flex-direction:column;gap:.25rem;cursor:pointer;padding:.75rem 0;background:transparent;border:none;border-radius:0;transition:all .2s ease}.checkbox-label:hover{background:#667eea05}.checkbox-label .checkbox-input{width:1rem;height:1rem;accent-color:#667eea;border-radius:3px;margin-bottom:.125rem}.checkbox-label .checkbox-text{font-weight:600;color:#374151;font-size:.875rem}.checkbox-label .checkbox-description{font-size:.75rem;color:#6b7280;margin-top:.125rem}.alert{display:flex;align-items:center;gap:.5rem;padding:.75rem 0;margin:1rem 0;border-radius:0;font-weight:500;font-size:.875rem;border-left:3px solid}.alert .alert-icon{width:1rem;height:1rem;flex-shrink:0}.alert.alert-success{background:#dcfce74d;border-left-color:#22c55e;color:#166534}.alert.alert-error{background:#fef2f24d;border-left-color:#ef4444;color:#dc2626}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 0;background:#fff;border-top:1px solid #e5e7eb;margin-top:2rem;position:sticky;bottom:0}@media (max-width: 640px){.form-actions{flex-direction:column-reverse}}cide-ele-input,cide-ele-select,cide-ele-textarea,cide-ele-json-editor{transition:all .2s ease}@media (max-width: 768px){.page-form-container{padding:.75rem}.form-header{padding:1rem 0}.form-header .form-title{font-size:1.25rem}.form-header .form-subtitle{font-size:.875rem}.form-section{padding:1rem 0}.form-actions{padding:1rem 0;margin-top:1.5rem}}@media (max-width: 480px){.page-form-container{padding:.25rem}.form-header,.form-section{padding:.75rem 0}.form-actions{padding:.75rem 0;margin-top:1rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton]", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideTextareaComponent, selector: "cide-ele-textarea", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "minlength", "maxlength", "rows", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput"], outputs: ["ngModelChange"] }, { kind: "component", type: CideEleJsonEditorComponent, selector: "cide-ele-json-editor", inputs: ["label", "helperText", "required", "disabled", "showCharacterCount", "config"], outputs: ["valueChange", "objectChange", "errorsChange", "validChange"] }] });
|
|
197
197
|
}
|
|
198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PageFormComponent, decorators: [{
|
|
199
199
|
type: Component,
|
|
200
200
|
args: [{ selector: 'cide-core-page-form', standalone: true, imports: [
|
|
201
201
|
CommonModule,
|
|
@@ -212,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
212
212
|
}], ctorParameters: () => [] });
|
|
213
213
|
|
|
214
214
|
export { PageFormComponent };
|
|
215
|
-
//# sourceMappingURL=cloud-ide-core-page-form.component-
|
|
215
|
+
//# sourceMappingURL=cloud-ide-core-page-form.component-vfE-LkTS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-core-page-form.component-CaEca3mB.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';\n\nimport { PageManagementService } from '../../services/page-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, CideIconComponent, CideEleFileInputComponent, CideEleJsonEditorComponent } from 'cloud-ide-element';\nimport { ICoreSypg, MSystemPagesInsertUpdatePayload, generateObjectFromString, systemPagesByIdControllerResponse, systemPagesInsertUpdateControllerResponse } 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 CideIconComponent,\n CideEleFileInputComponent,\n CideEleJsonEditorComponent\n ],\n templateUrl: './page-form.component.html',\n styleUrls: ['./page-form.component.scss']\n})\nexport class PageFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private pageService = inject(PageManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\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 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 constructor() {\n this.setupFormSubscriptions();\n }\n\n ngOnInit(): void {\n // Check for page ID in query parameters\n this.checkForPageId();\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\n isFormDirty = computed(() => this.pageForm.dirty);\n\n // Form submission\n savePage(): void {\n if (!this.pageForm.valid) {\n this.markFormAsTouched();\n return;\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 this.success.set(this.isEditMode() ? 'Page updated successfully' : 'Page created successfully');\n console.log('✅ Page saved successfully');\n // Navigate back to page list after a short delay\n setTimeout(() => {\n this.router.navigate(['/control-panel/page']);\n }, 1500);\n } else {\n this.error.set(response.message || 'Failed to save page');\n console.error('❌ Failed to save page:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\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 // Cancel form\n cancelForm(): void {\n this.router.navigate(['/control-panel/page']);\n }\n\n // Go back to page list\n goBack(): void {\n this.router.navigate(['/control-panel/page']);\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","<div class=\"page-form-fullscreen\">\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 @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 {{ success() }}\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 {{ error() }}\n </div>\n }\n\n <!-- Form Content -->\n <div class=\"form-section\">\n <div class=\"grid grid-2 gap-md lg-grid-2 md-grid-1\">\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 \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\n <div class=\"grid grid-1 gap-md\">\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\n <div class=\"grid grid-1 gap-md\">\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\n <div class=\"grid grid-1 gap-sm\">\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 <!-- Form Actions -->\n <div class=\"form-actions\">\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 </form>\n </div>\n</div>\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-core-page-form.component-vfE-LkTS.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';\n\nimport { PageManagementService } from '../../services/page-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, CideIconComponent, CideEleFileInputComponent, CideEleJsonEditorComponent } from 'cloud-ide-element';\nimport { ICoreSypg, MSystemPagesInsertUpdatePayload, generateObjectFromString, systemPagesByIdControllerResponse, systemPagesInsertUpdateControllerResponse } 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 CideIconComponent,\n CideEleFileInputComponent,\n CideEleJsonEditorComponent\n ],\n templateUrl: './page-form.component.html',\n styleUrls: ['./page-form.component.scss']\n})\nexport class PageFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private pageService = inject(PageManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\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 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 constructor() {\n this.setupFormSubscriptions();\n }\n\n ngOnInit(): void {\n // Check for page ID in query parameters\n this.checkForPageId();\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\n isFormDirty = computed(() => this.pageForm.dirty);\n\n // Form submission\n savePage(): void {\n if (!this.pageForm.valid) {\n this.markFormAsTouched();\n return;\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 this.success.set(this.isEditMode() ? 'Page updated successfully' : 'Page created successfully');\n console.log('✅ Page saved successfully');\n // Navigate back to page list after a short delay\n setTimeout(() => {\n this.router.navigate(['/control-panel/page']);\n }, 1500);\n } else {\n this.error.set(response.message || 'Failed to save page');\n console.error('❌ Failed to save page:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\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 // Cancel form\n cancelForm(): void {\n this.router.navigate(['/control-panel/page']);\n }\n\n // Go back to page list\n goBack(): void {\n this.router.navigate(['/control-panel/page']);\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","<div class=\"page-form-fullscreen\">\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 @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 {{ success() }}\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 {{ error() }}\n </div>\n }\n\n <!-- Form Content -->\n <div class=\"form-section\">\n <div class=\"grid grid-2 gap-md lg-grid-2 md-grid-1\">\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 \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\n <div class=\"grid grid-1 gap-md\">\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\n <div class=\"grid grid-1 gap-md\">\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\n <div class=\"grid grid-1 gap-sm\">\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 <!-- Form Actions -->\n <div class=\"form-actions\">\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 </form>\n </div>\n</div>\n"],"names":["i1"],"mappings":"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"}
|