@codex-ts/core-lib 1.0.5 → 1.0.7
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.
|
@@ -1422,12 +1422,7 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1422
1422
|
currentFormData;
|
|
1423
1423
|
originalFormData = null;
|
|
1424
1424
|
hasChanges = false;
|
|
1425
|
-
debug
|
|
1426
|
-
// Only log in development
|
|
1427
|
-
if (process.env['NODE_ENV'] !== 'production') {
|
|
1428
|
-
console.log(`[BaseTabbedFormComponent] ${message}`, ...args);
|
|
1429
|
-
}
|
|
1430
|
-
}
|
|
1425
|
+
// debug method removed
|
|
1431
1426
|
constructor(route, router, notificationService, utilsService) {
|
|
1432
1427
|
super(utilsService, notificationService);
|
|
1433
1428
|
this.route = route;
|
|
@@ -1455,10 +1450,10 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1455
1450
|
}
|
|
1456
1451
|
}
|
|
1457
1452
|
initializeFormData() {
|
|
1458
|
-
|
|
1459
|
-
|
|
1453
|
+
console.log('[BaseTabbedFormComponent] Initializing form data');
|
|
1454
|
+
console.log('[BaseTabbedFormComponent] Current mode:', this.mode);
|
|
1460
1455
|
if (this.mode === AppConstants.PAGE_MODE.CREATE) {
|
|
1461
|
-
|
|
1456
|
+
console.log('[BaseTabbedFormComponent] Create mode, using defaults');
|
|
1462
1457
|
this.loadDefaultTab();
|
|
1463
1458
|
return;
|
|
1464
1459
|
}
|
|
@@ -1466,14 +1461,14 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1466
1461
|
...this.router.getCurrentNavigation()?.extras?.state,
|
|
1467
1462
|
...window.history.state
|
|
1468
1463
|
};
|
|
1469
|
-
|
|
1464
|
+
console.log('[BaseTabbedFormComponent] Combined state:', state);
|
|
1470
1465
|
if (state?.formData) {
|
|
1471
|
-
|
|
1466
|
+
console.log('[BaseTabbedFormComponent] Found form data in state:', state.formData);
|
|
1472
1467
|
this.patchFormData(state.formData);
|
|
1473
1468
|
this.loadDefaultTab();
|
|
1474
1469
|
}
|
|
1475
1470
|
else {
|
|
1476
|
-
|
|
1471
|
+
console.log('[BaseTabbedFormComponent] No form data, loading from UUID');
|
|
1477
1472
|
this.loadFromUuid();
|
|
1478
1473
|
}
|
|
1479
1474
|
}
|
|
@@ -1494,7 +1489,6 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1494
1489
|
});
|
|
1495
1490
|
}
|
|
1496
1491
|
initializeForm(params) {
|
|
1497
|
-
// Remove debug logging for production
|
|
1498
1492
|
const routeMode = params[AppConstants.FORM.MODE];
|
|
1499
1493
|
try {
|
|
1500
1494
|
this.initializeFormMode(routeMode);
|
|
@@ -1503,6 +1497,7 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1503
1497
|
this.initializeListForm(params);
|
|
1504
1498
|
}
|
|
1505
1499
|
else {
|
|
1500
|
+
// Existing logic for STANDARD form type
|
|
1506
1501
|
this.initializeFormData();
|
|
1507
1502
|
}
|
|
1508
1503
|
}
|
|
@@ -1531,9 +1526,9 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1531
1526
|
this.mode = routeMode;
|
|
1532
1527
|
}
|
|
1533
1528
|
setupFormState() {
|
|
1534
|
-
|
|
1529
|
+
console.log('[BaseTabbedFormComponent] Setting up form state, mode:', this.mode);
|
|
1535
1530
|
if (this.mode === AppConstants.PAGE_MODE.CREATE) {
|
|
1536
|
-
|
|
1531
|
+
console.log('[BaseTabbedFormComponent] Create mode setup');
|
|
1537
1532
|
this.isNew = true;
|
|
1538
1533
|
this.loading = false;
|
|
1539
1534
|
this.originalFormData = null;
|
|
@@ -1548,12 +1543,12 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1548
1543
|
this.originalFormData = data;
|
|
1549
1544
|
this.currentFormData = { ...data };
|
|
1550
1545
|
this.loading = false;
|
|
1551
|
-
|
|
1552
|
-
|
|
1546
|
+
console.log('[BaseTabbedFormComponent] Original data loaded:', this.originalFormData);
|
|
1547
|
+
console.log('[BaseTabbedFormComponent] Form data updated:', this.currentFormData);
|
|
1553
1548
|
this.loadDefaultTab();
|
|
1554
1549
|
},
|
|
1555
1550
|
error: (error) => {
|
|
1556
|
-
|
|
1551
|
+
console.log('[BaseTabbedFormComponent] Error loading entity:', error);
|
|
1557
1552
|
this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);
|
|
1558
1553
|
this.loading = false;
|
|
1559
1554
|
}
|
|
@@ -1563,7 +1558,7 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1563
1558
|
return this.tabs.find(tab => tab.value === value);
|
|
1564
1559
|
}
|
|
1565
1560
|
loadDefaultTab() {
|
|
1566
|
-
|
|
1561
|
+
console.log('[BaseTabbedFormComponent] Loading default tab');
|
|
1567
1562
|
const defaultTab = this.tabs.find(tab => tab.isParentModel) || this.tabs[0];
|
|
1568
1563
|
if (!defaultTab)
|
|
1569
1564
|
return;
|
|
@@ -1580,7 +1575,20 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1580
1575
|
}
|
|
1581
1576
|
});
|
|
1582
1577
|
}
|
|
1578
|
+
else if (this.formType === TabbedFormType.STANDARD) {
|
|
1579
|
+
// For STANDARD type, just navigate to the tab route with the parent form data
|
|
1580
|
+
this.router.navigate([defaultTab.value], {
|
|
1581
|
+
relativeTo: this.route,
|
|
1582
|
+
queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)
|
|
1583
|
+
state: {
|
|
1584
|
+
formData: defaultTab.isParentModel ? this.currentFormData : null,
|
|
1585
|
+
parentFormData: this.currentFormData, // Pass the parent form data for child forms
|
|
1586
|
+
context: ComponentContext.TABBED
|
|
1587
|
+
}
|
|
1588
|
+
});
|
|
1589
|
+
}
|
|
1583
1590
|
else {
|
|
1591
|
+
// Default behavior for other form types
|
|
1584
1592
|
this.router.navigate([defaultTab.value], {
|
|
1585
1593
|
relativeTo: this.route,
|
|
1586
1594
|
queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)
|
|
@@ -1607,22 +1615,28 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1607
1615
|
if (!formDataList?.length) {
|
|
1608
1616
|
throw new Error('formDataList is required in state for LIST type');
|
|
1609
1617
|
}
|
|
1610
|
-
|
|
1611
|
-
//
|
|
1612
|
-
this.
|
|
1618
|
+
this.tabs = this.createTabsFromFormDataList(formDataList);
|
|
1619
|
+
// Select the first tab by default
|
|
1620
|
+
this.activeTab = this.tabs[0].value;
|
|
1621
|
+
// Set current form data from the first item in the list
|
|
1622
|
+
this.currentFormData = formDataList[0];
|
|
1623
|
+
this.originalFormData = formDataList[0];
|
|
1624
|
+
// Navigate to the first tab
|
|
1625
|
+
this.router.navigate([this.activeTab], {
|
|
1626
|
+
relativeTo: this.route,
|
|
1627
|
+
state: {
|
|
1628
|
+
formData: this.currentFormData,
|
|
1629
|
+
formDataList: formDataList,
|
|
1630
|
+
context: ComponentContext.TABBED
|
|
1631
|
+
}
|
|
1632
|
+
});
|
|
1633
|
+
}
|
|
1634
|
+
createTabsFromFormDataList(formDataList) {
|
|
1635
|
+
return formDataList.map((data) => ({
|
|
1613
1636
|
value: data.uuid,
|
|
1614
|
-
title: data
|
|
1637
|
+
title: this.getTabTitle(data),
|
|
1615
1638
|
isParentModel: true
|
|
1616
1639
|
}));
|
|
1617
|
-
// Select tab based on UUID in params or first tab
|
|
1618
|
-
const uuid = params[AppConstants.FORM.UUID];
|
|
1619
|
-
this.activeTab = uuid && this.tabs.find(t => t.value === uuid)
|
|
1620
|
-
? uuid
|
|
1621
|
-
: this.tabs[0].value;
|
|
1622
|
-
// Set current form data from list
|
|
1623
|
-
const selectedData = formDataList.find((d) => d.uuid === this.activeTab);
|
|
1624
|
-
this.currentFormData = selectedData;
|
|
1625
|
-
this.originalFormData = selectedData;
|
|
1626
1640
|
}
|
|
1627
1641
|
onTabChange(value) {
|
|
1628
1642
|
const tabConfig = this.findTabByValue(value);
|
|
@@ -1647,7 +1661,20 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
1647
1661
|
}
|
|
1648
1662
|
});
|
|
1649
1663
|
}
|
|
1664
|
+
else if (this.formType === TabbedFormType.STANDARD) {
|
|
1665
|
+
// For STANDARD type, navigate to the tab route with the parent form data
|
|
1666
|
+
this.router.navigate([this.activeTab], {
|
|
1667
|
+
relativeTo: this.route,
|
|
1668
|
+
queryParamsHandling: 'preserve',
|
|
1669
|
+
state: {
|
|
1670
|
+
formData: tabConfig.isParentModel ? this.currentFormData : null,
|
|
1671
|
+
parentFormData: this.currentFormData,
|
|
1672
|
+
context: ComponentContext.TABBED
|
|
1673
|
+
}
|
|
1674
|
+
});
|
|
1675
|
+
}
|
|
1650
1676
|
else {
|
|
1677
|
+
// Default behavior for other form types
|
|
1651
1678
|
const formData = this.getTabFormData(tabConfig);
|
|
1652
1679
|
this.router.navigate([this.activeTab], {
|
|
1653
1680
|
relativeTo: this.route,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-ts-core-lib.mjs","sources":["../../../../angular/core-lib/src/lib/services/utils.service.ts","../../../../angular/core-lib/src/lib/services/enum-registry.service.ts","../../../../angular/core-lib/src/lib/services/formly-config.service.ts","../../../../angular/core-lib/src/lib/services/notification.service.ts","../../../../angular/core-lib/src/lib/services/http-utility.service.ts","../../../../angular/core-lib/src/lib/services/reference-data-provider.service.ts","../../../../angular/core-lib/src/lib/services/entity-registry.service.ts","../../../../angular/core-lib/src/lib/services/base-crud.service.ts","../../../../angular/core-lib/src/lib/enums/component-context.enum.ts","../../../../angular/core-lib/src/lib/enums/tabbed-form-type.enum.ts","../../../../angular/core-lib/src/lib/components/base-page.component.ts","../../../../angular/core-lib/src/lib/constants/app.messages.ts","../../../../angular/core-lib/src/lib/constants/app.constants.ts","../../../../angular/core-lib/src/lib/components/base-form.component.ts","../../../../angular/core-lib/src/lib/components/base-list-page.component.ts","../../../../angular/core-lib/src/lib/components/base-tabbed-form.component.ts","../../../../angular/core-lib/src/lib/pipes/indian-date.pipe.ts","../../../../angular/core-lib/src/lib/components/formly/types/text-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/select.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/radio.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/numeric-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/multiselect.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/date.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/checkbox.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/textarea.type.ts","../../../../angular/core-lib/src/lib/components/formly/form-field.wrapper.ts","../../../../angular/core-lib/src/lib/components/formly/formly.constants.ts","../../../../angular/core-lib/src/lib/components/formly/core-formly.module.ts","../../../../angular/core-lib/src/index.ts","../../../../angular/core-lib/src/codex-ts-core-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A utility service that provides common reusable functionality\r\n * such as UUID validation and error message display\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n /**\r\n * Validates if a string is a valid UUID\r\n * @param uuid The string to validate\r\n * @returns boolean indicating if the string is a valid UUID\r\n */\r\n isValidUUID(uuid: string): boolean {\r\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\r\n return uuidRegex.test(uuid);\r\n }\r\n\r\n /**\r\n * Shows an error message using PrimeNG's MessageService\r\n * @param message The error message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showError(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shows a success message using PrimeNG's MessageService\r\n * @param message The success message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showSuccess(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the display value for an enum key or array of enum keys\r\n * @param enumType The enum type\r\n * @param key The enum key or array of enum keys\r\n * @returns The display value for the enum key or comma-separated list of display values for array of keys\r\n */\r\n getEnumValue<T>(enumType: T, key: string | string[]): string {\r\n if (!key) return '';\r\n \r\n if (Array.isArray(key)) {\r\n // Handle array of keys - map each to its display value and join with comma\r\n return key.map(k => (enumType as any)[k] || k).join(', ');\r\n }\r\n \r\n // Handle single key\r\n return (enumType as any)[key] || key;\r\n }\r\n\r\n /**\r\n * Gets all values from an enum type for use in formly select fields\r\n * @param enumType The enum type to get values from\r\n * @returns Array of {label, value} pairs for formly select options\r\n */\r\n getEnumValues<T extends { [key: string]: string | number }>(enumType: T): Array<{label: string, value: string}> {\r\n return Object.entries(enumType)\r\n .filter(([key]) => isNaN(Number(key))) // Filter out reverse mappings\r\n .map(([key, value]) => ({\r\n value: key, // enum key as the value\r\n label: value as string // enum value as the label\r\n }));\r\n }\r\n\r\n /**\r\n * Converts a camelCase string to Title Case with spaces\r\n * @param camelCase The camelCase string to convert\r\n * @returns The Title Case string\r\n */\r\n camelCaseToTitleCase(camelCase: string): string {\r\n if (!camelCase) return '';\r\n const spacedString = camelCase.replace(/([a-z])([A-Z])/g, '$1 $2');\r\n return spacedString.charAt(0).toUpperCase() + spacedString.slice(1);\r\n }\r\n\r\n /**\r\n * Converts a string to kebab-case\r\n * @param input The string to convert\r\n * @returns The kebab-case string\r\n */\r\n toKebabCase(input: string): string {\r\n return input\r\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\r\n .replace(/([A-Z])([A-Z])(?=[a-z])/g, '$1-$2')\r\n .toLowerCase();\r\n }\r\n\r\n /**\r\n * Converts a string to camelCase.\r\n * Example: \"loan-application\" becomes \"loanApplication\"\r\n * @param input The string to convert\r\n * @returns The camelCase string\r\n */\r\n toCamelCase(input: string): string {\r\n if (!input) return '';\r\n \r\n // Split by non-alphanumeric chars\r\n const words = input.split(/[^a-zA-Z0-9]/);\r\n const result = [words[0].toLowerCase()];\r\n \r\n // Capitalize first letter of remaining words\r\n for (let i = 1; i < words.length; i++) {\r\n const word = words[i];\r\n if (word) {\r\n result.push(word.charAt(0).toUpperCase() + word.substring(1).toLowerCase());\r\n }\r\n }\r\n \r\n return result.join('');\r\n }\r\n\r\n /**\r\n * Removes double forward slashes from an endpoint string while preserving the protocol\r\n * e.g. \"http://localhost:8080//api//v1//users\" -> \"http://localhost:8080/api/v1/users\"\r\n * @param endpoint The endpoint string to clean\r\n * @returns The cleaned endpoint string without double slashes\r\n */\r\n removeDoubleSlashes(endpoint: string): string {\r\n if (!endpoint) return '';\r\n \r\n // Split the URL into protocol and the rest to preserve protocol slashes\r\n const [protocol, ...rest] = endpoint.split('://');\r\n \r\n if (!rest.length) {\r\n // If no protocol is present, just clean the entire string\r\n return endpoint.replace(/\\/+/g, '/');\r\n }\r\n \r\n // Clean the path part (after protocol) and reconstruct the URL\r\n const cleanPath = rest.join('://').replace(/\\/+/g, '/');\r\n return `${protocol}://${cleanPath}`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UtilsService } from './utils.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnumRegistryService {\r\n private enumMap = new Map<string, any>();\r\n\r\n constructor(private utilsService: UtilsService) {}\r\n\r\n /**\r\n * Initialize global enums\r\n */\r\n static registerGlobalEnums(enums: Record<string, any>) {\r\n return {\r\n provide: EnumRegistryService,\r\n useFactory: (utilsService: UtilsService) => {\r\n const service = new EnumRegistryService(utilsService);\r\n Object.entries(enums).forEach(([name, enumType]) => {\r\n service.register(name, enumType);\r\n });\r\n return service;\r\n },\r\n deps: [UtilsService]\r\n };\r\n }\r\n \r\n /**\r\n * Register an enum type with the service\r\n * @param name Name to register the enum under\r\n * @param enumType The enum type to register\r\n */\r\n register(name: string, enumType: any) {\r\n this.enumMap.set(name, enumType);\r\n }\r\n \r\n /**\r\n * Get formly-compatible options array for a registered enum\r\n * @param name Name of the registered enum\r\n * @returns Array of {label, value} pairs suitable for formly select fields\r\n */\r\n getEnumValues(name: string) {\r\n const enumType = this.enumMap.get(name);\r\n if (!enumType) {\r\n console.warn(`Enum type \"${name}\" not found in registry`);\r\n return [];\r\n }\r\n return this.utilsService.getEnumValues(enumType);\r\n }\r\n\r\n /**\r\n * Check if an enum type is registered\r\n * @param name Name of the enum to check\r\n */\r\n hasEnum(name: string): boolean {\r\n return this.enumMap.has(name);\r\n }\r\n\r\n /**\r\n * Clear all registered enums\r\n */\r\n clear() {\r\n this.enumMap.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { PageMode } from '../constants/app.constants';\r\nimport { EnumRegistryService } from './enum-registry.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormlyConfigService {\r\n constructor(private enumRegistry: EnumRegistryService) {}\r\n\r\n getFormConfig(\r\n fields: FormlyFieldConfig[], \r\n mode: PageMode,\r\n dynamicOptions?: Record<string, any>\r\n ): FormlyFieldConfig[] {\r\n const commonConfig = {\r\n props: {\r\n disabled: mode === 'view'\r\n }\r\n };\r\n\r\n return fields.map((field: FormlyFieldConfig) => {\r\n // Apply dynamic options from child component\r\n if (dynamicOptions && field.key && typeof field.key === 'string') {\r\n const fieldOptions = dynamicOptions[field.key];\r\n if (fieldOptions) {\r\n field.props = {\r\n ...field.props,\r\n ...fieldOptions\r\n };\r\n }\r\n }\r\n\r\n // Handle field groups recursively\r\n if (field.fieldGroup) {\r\n field.fieldGroup = this.getFormConfig(field.fieldGroup, mode, dynamicOptions);\r\n }\r\n\r\n return {\r\n ...field,\r\n ...commonConfig,\r\n props: {\r\n ...field.props,\r\n ...commonConfig.props\r\n }\r\n };\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NotificationService {\r\n private messageSubject = new BehaviorSubject<any>(null);\r\n message$ = this.messageSubject.asObservable();\r\n\r\n constructor(private messageService: MessageService) {}\r\n\r\n showSuccess(message: string) {\r\n const msgObj = {\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n showError(message: string) {\r\n const msgObj = {\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n clearMessage() {\r\n this.messageSubject.next(null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse, HttpEvent } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject, finalize, forkJoin } from 'rxjs';\r\nimport { catchError, retry, timeout } from 'rxjs/operators';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A general-purpose HTTP utility service that provides enhanced HTTP operations\r\n * beyond the standard Angular HttpClient. This service includes features such as:\r\n * - Loading state management\r\n * - Standardized error handling\r\n * - Request timeouts and retries\r\n * - File upload capabilities\r\n * - Batch request handling\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpUtilityService {\r\n private loading = new BehaviorSubject<boolean>(false);\r\n loading$ = this.loading.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService?: MessageService\r\n ) {}\r\n\r\n /**\r\n * Perform a GET request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n get<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a POST request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n post<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.post<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a PUT request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n put<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.put<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a DELETE request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n delete<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.delete<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Upload a file with optional additional data\r\n * @param url The upload endpoint URL\r\n * @param file The file to upload\r\n * @param additionalData Additional form data to include\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n uploadFile<T>(url: string, file: File, additionalData?: Record<string, any>, options?: {\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number,\r\n onProgress?: (percentage: number) => void\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n \r\n if (additionalData) {\r\n Object.keys(additionalData).forEach(key => {\r\n formData.append(key, additionalData[key]);\r\n });\r\n }\r\n \r\n let httpOptions: any = {\r\n headers: options?.headers,\r\n withCredentials: options?.withCredentials\r\n };\r\n \r\n // If progress tracking is requested\r\n if (options?.onProgress) {\r\n httpOptions.reportProgress = true;\r\n httpOptions.observe = 'events';\r\n }\r\n \r\n // Create the request\r\n let request$ = this.http.post<any>(url, formData, httpOptions);\r\n \r\n // Add retries if specified\r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n // Add timeout if specified\r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n // Track progress if a callback is provided\r\n if (options?.onProgress) {\r\n return new Observable<T>(observer => {\r\n request$.subscribe({\r\n next: (event: HttpEvent<any>) => {\r\n if (event.type === 1 && event.total) { // HttpEventType.UploadProgress\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n options.onProgress!(percentDone);\r\n } else if (event.type === 4) { // HttpEventType.Response\r\n observer.next(event.body);\r\n observer.complete();\r\n }\r\n },\r\n error: (error) => {\r\n observer.error(this.handleError(error));\r\n this.loading.next(false);\r\n },\r\n complete: () => {\r\n this.loading.next(false);\r\n }\r\n });\r\n });\r\n }\r\n \r\n // Standard request without progress tracking\r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n ) as Observable<T>;\r\n }\r\n\r\n /**\r\n * Execute multiple HTTP requests in parallel\r\n * @param requests Array of HTTP request observables\r\n * @returns An observable that emits when all requests complete\r\n */\r\n batchRequests<T>(requests: Observable<T>[]): Observable<T[]> {\r\n this.loading.next(true);\r\n return forkJoin(requests).pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Download a file from the server\r\n * @param url The file URL\r\n * @param filename Optional filename to save as\r\n * @param options Additional request options\r\n */\r\n downloadFile(url: string, filename?: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n timeoutMs?: number\r\n }): Observable<Blob> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: 'blob',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Create parameter string from an object\r\n * @param params Object containing parameters\r\n * @returns HttpParams object\r\n */\r\n createParams(params: Record<string, any>): HttpParams {\r\n let httpParams = new HttpParams();\r\n \r\n Object.keys(params).forEach(key => {\r\n const value = params[key];\r\n if (value !== undefined && value !== null) {\r\n httpParams = httpParams.append(key, value.toString());\r\n }\r\n });\r\n \r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Standardized error handler for HTTP requests\r\n * @param error The HTTP error\r\n * @returns An observable that errors with the processed error object\r\n */\r\n private handleError(error: HttpErrorResponse) {\r\n console.error('An HTTP error occurred:', error);\r\n \r\n let errorMessage = 'An error occurred';\r\n let errorCode: string | undefined;\r\n \r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side error\r\n errorMessage = error.error.message;\r\n } else {\r\n // Server-side error\r\n errorCode = error.status.toString();\r\n \r\n switch (error.status) {\r\n case 400:\r\n errorMessage = error.error?.message || 'Bad request';\r\n break;\r\n case 401:\r\n errorMessage = 'Unauthorized';\r\n break;\r\n case 403:\r\n errorMessage = 'Access denied';\r\n break;\r\n case 404:\r\n errorMessage = 'Resource not found';\r\n break;\r\n case 408:\r\n errorMessage = 'Request timeout';\r\n break;\r\n case 500:\r\n errorMessage = 'Server error';\r\n break;\r\n case 503:\r\n errorMessage = 'Service unavailable';\r\n break;\r\n default:\r\n errorMessage = error.error?.message || `Error ${error.status}`;\r\n break;\r\n }\r\n }\r\n\r\n this.showError(errorMessage);\r\n return throwError(() => ({\r\n error,\r\n message: errorMessage,\r\n code: errorCode\r\n }));\r\n }\r\n\r\n /**\r\n * Display an error message using the message service\r\n * @param message Error message to display\r\n */\r\n private showError(message: string) {\r\n if (this.messageService) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReferenceDataProviderService {\r\n\r\n private endpoints: Record<string, string> = {};\r\n\r\n // Method to set/update endpoints\r\n setEndpoints(endpoints: Record<string, string>) {\r\n this.endpoints = { ...this.endpoints, ...endpoints };\r\n }\r\n\r\n getReferenceEndpoint(entityName: string): string | null {\r\n console.log('getReferenceEndpoint', entityName, this.endpoints);\r\n let endpoint = this.endpoints[entityName];\r\n if (endpoint != null && endpoint.length > 0) {\r\n if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {\r\n return endpoint; // Absolute URL\r\n } else {\r\n // Relative URL, assume it's within the application's base context\r\n return endpoint;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { ReferenceDataProviderService } from './reference-data-provider.service';\r\n\r\nexport interface ReferenceDto {\r\n key: string;\r\n displayLabel: string;\r\n data?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityRegistryService {\r\n constructor(\r\n private httpUtility: HttpUtilityService,\r\n private dataProvider: ReferenceDataProviderService\r\n ) {}\r\n\r\n /**\r\n * Gets reference options for an entity, suitable for select/dropdown components\r\n * @param entityName The name of the entity (e.g., 'customers', 'departments')\r\n * @returns Observable of options array with label/value pairs\r\n */\r\n getEntityOptions(entityName: string): Observable<{ label: string; value: string; data?: any; }[]> {\r\n console.log('getEntityOptions', entityName);\r\n const url = this.dataProvider.getReferenceEndpoint(entityName);\r\n\r\n if (!url) {\r\n console.warn(`No endpoint configured for entity: ${entityName}`);\r\n return new Observable(subscriber => {\r\n subscriber.next([]);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n return this.httpUtility.get<ReferenceDto[]>(url, {\r\n retries: 1,\r\n timeoutMs: 10000,\r\n }).pipe(\r\n map((items) =>\r\n items?.map((item) => ({\r\n label: item.displayLabel,\r\n value: item.key,\r\n data: item.data,\r\n })) || []\r\n )\r\n );\r\n }\r\n}\r\n","import { HttpParams, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { UtilsService } from './utils.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { EntityService } from './entity.service';\r\n\r\nexport abstract class BaseCrudService<T extends { uuid: string }> implements EntityService<T> {\r\n // Use the loading state from HttpUtilityService\r\n get loading$() {\r\n return this.httpUtility.loading$;\r\n }\r\n\r\n protected apiUrl: string;\r\n\r\n /**\r\n * Creates an instance of BaseCrudService.\r\n * @param httpUtility - Service for making HTTP requests\r\n * @param utilsService - Utility service for common operations\r\n * @param resourcePath - API resource path (e.g., 'customers', 'products')\r\n * @param backendBaseUrl - Base URL for the backend API\r\n * @param messageService - Optional service for showing messages\r\n */\r\n protected constructor(\r\n protected httpUtility: HttpUtilityService,\r\n protected utilsService: UtilsService,\r\n protected resourcePath: string,\r\n protected backendBaseUrl: string,\r\n protected messageService: MessageService | undefined\r\n ) {\r\n this.apiUrl = this.joinUrls(backendBaseUrl, resourcePath);\r\n }\r\n\r\n /**\r\n * Joins URL parts ensuring no double slashes\r\n */\r\n private joinUrls(...parts: string[]): string {\r\n return parts.map(part => part.replace(/^\\/+|\\/+$/g, '')).join('/');\r\n }\r\n\r\n getAll(pageRequest?: PageRequest): Observable<Page<T>> {\r\n if (pageRequest) {\r\n return this.httpUtility.post<Page<T>>(`${this.apiUrl}/page`, pageRequest);\r\n } else {\r\n return this.httpUtility.get<Page<T>>(this.apiUrl);\r\n }\r\n }\r\n\r\n getById(uuid: string): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.get<T>(`${this.apiUrl}/${uuid}`);\r\n }\r\n\r\n create(entity: Omit<T, 'uuid'>): Observable<T> {\r\n return this.httpUtility.post<T>(this.apiUrl, entity);\r\n }\r\n\r\n update(uuid: string, entity: Omit<T, 'uuid'>): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.put<T>(`${this.apiUrl}/${uuid}`, entity);\r\n }\r\n\r\n delete(uuid: string): Observable<void> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.delete<void>(`${this.apiUrl}/${uuid}`);\r\n }\r\n}\r\n","export enum ComponentContext {\r\n STANDALONE = 'STANDALONE',\r\n TABBED = 'TABBED',\r\n MODAL = 'MODAL',\r\n EMBEDDED = 'EMBEDDED'\r\n}\r\n","export enum TabbedFormType {\r\n STANDARD = 'STANDARD',\r\n LIST = 'LIST'\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\n\r\n/**\r\n * Base component for all page components in the application.\r\n * Provides common functionality like loading state and message display.\r\n */\r\n@Directive()\r\nexport abstract class BasePageComponent {\r\n protected loading: boolean = false;\r\n \r\n constructor(\r\n protected utilsService: UtilsService,\r\n protected notificationService: NotificationService\r\n ) {}\r\n\r\n /**\r\n * Display an error message to the user\r\n * @param detail The error message to display\r\n */\r\n protected showError(detail: string): void {\r\n this.notificationService.showError(detail);\r\n }\r\n\r\n /**\r\n * Display a success message to the user\r\n * @param detail The success message to display\r\n */\r\n protected showSuccess(detail: string): void {\r\n this.notificationService.showSuccess(detail);\r\n }\r\n}\r\n","export const AppMessages = {\r\n COMMON: {\r\n ERROR: {\r\n GENERAL: 'An error occurred',\r\n INVALID_INPUT: 'Invalid input provided',\r\n REQUIRED_FIELD: 'This field is required'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully',\r\n UPDATE: 'updated successfully',\r\n DELETE: 'deleted successfully'\r\n }\r\n },\r\n FORM: {\r\n ERROR: {\r\n INIT: 'Failed to initialize form',\r\n SAVE: 'Failed to save',\r\n LOAD: 'Failed to load',\r\n VALIDATION: 'Please fill in all required fields correctly'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully'\r\n }\r\n },\r\n LIST: {\r\n ERROR: {\r\n LOAD: 'Failed to load',\r\n DELETE: 'Failed to delete',\r\n NAVIGATION: 'Navigation failed',\r\n INVALID_ID: 'Cannot perform action without ID'\r\n },\r\n SUCCESS: {\r\n DELETE: 'deleted successfully'\r\n }\r\n }\r\n} as const;\r\n","export class AppConstants {\r\n static readonly FORM = {\r\n MODE: 'mode',\r\n UUID: 'uuid',\r\n NEW: 'new'\r\n } as const;\r\n\r\n static readonly PAGE_MODE = {\r\n CREATE: 'create',\r\n EDIT: 'edit',\r\n VIEW: 'view'\r\n } as const;\r\n}\r\n\r\nexport type PageMode = typeof AppConstants.PAGE_MODE[keyof typeof AppConstants.PAGE_MODE];\r\n","import { Component, OnInit, Injectable, Input } from '@angular/core';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, filter, take } from 'rxjs';\r\nimport { FormlyConfigService } from '../services/formly-config.service';\r\nimport { EntityService } from '../services/entity.service';\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n form = new FormGroup({});\r\n fields: FormlyFieldConfig[] = [];\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData: any = {};\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n @Input() context: ComponentContext = ComponentContext.STANDALONE;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected formlyConfigService: FormlyConfigService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n this.form.valueChanges.subscribe(() => {\r\n console.log('[BaseFormComponent] Form value changed:', this.form.value);\r\n this.currentFormData = { ...this.form.value };\r\n this.hasChanges = this.hasFormChanges(this.currentFormData);\r\n });\r\n\r\n // Use queryParams instead of params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n private initializeFormData() {\r\n console.log('[BaseFormComponent] Initializing form data');\r\n console.log('[BaseFormComponent] Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode, using defaults');\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state,\r\n ...this.route.snapshot.data\r\n };\r\n console.log('[BaseFormComponent] Combined state:', state);\r\n console.log('[BaseFormComponent] Final state being used:', state);\r\n \r\n if (state && 'formData' in state) {\r\n console.log('[BaseFormComponent] Found form data in state:', state['formData']);\r\n this.patchFormData(state['formData']);\r\n } else {\r\n console.log('[BaseFormComponent] No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n this.route.queryParams.pipe(take(1)).subscribe(params => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n this.loadEntity(uuid);\r\n });\r\n }\r\n\r\n private initializeForm(params: any) {\r\n console.log('[BaseFormComponent] Initializing form with params:', params);\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n // Check for context in router state\r\n const state = window.history.state;\r\n if (state?.context) {\r\n this.context = state.context;\r\n console.log('[BaseFormComponent] Context set from router state:', this.context);\r\n }\r\n\r\n this.initializeFormData();\r\n }\r\n\r\n protected patchFormData(data: any) {\r\n console.log('[BaseFormComponent] Patching form data:', data);\r\n if (data) {\r\n if (!this.fields || this.fields.length === 0) {\r\n console.warn('[BaseFormComponent] Fields not initialized yet, reinitializing');\r\n this.fields = this.getFormlyFieldConfig();\r\n }\r\n this.currentFormData = { ...data };\r\n this.originalFormData = data;\r\n this.isNew = false;\r\n \r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n console.log('[BaseFormComponent] Fields available:', this.fields);\r\n \r\n setTimeout(() => {\r\n if (!this.form.valid) {\r\n console.warn('[BaseFormComponent] Form validation issues after data patch');\r\n }\r\n console.log('[BaseFormComponent] Form state after sync:', {\r\n valid: this.form.valid,\r\n values: this.form.value,\r\n currentData: this.currentFormData\r\n });\r\n }, 100);\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n } else if (this.isValidPageMode(routeMode)) {\r\n this.mode = routeMode;\r\n } else {\r\n throw new Error(`Invalid page mode: ${routeMode}`);\r\n }\r\n }\r\n\r\n private setupFormState() {\r\n console.log('[BaseFormComponent] Setting up form state, mode:', this.mode);\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.VIEW) {\r\n console.log('[BaseFormComponent] View mode setup');\r\n this.form.disable();\r\n }\r\n }\r\n\r\n protected getFormlyFieldConfig(): FormlyFieldConfig[] {\r\n return this.formlyConfigService.getFormConfig(\r\n this.getJsonFields(),\r\n this.mode,\r\n this.getDropdownOptions()\r\n );\r\n }\r\n\r\n protected onSubmitRoute(): string[] {\r\n return [`/${this.getEntityName().toLowerCase()}s`];\r\n }\r\n\r\n protected getEntityOperations(): {\r\n create: (data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n update: (uuid: string, data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n getById: (uuid: string) => Observable<T>;\r\n } {\r\n const entityService = this.getEntityService();\r\n return {\r\n create: (data) => entityService.create(data),\r\n update: (uuid, data) => entityService.update(uuid, { ...data, uuid } as T),\r\n getById: (uuid) => entityService.getById(uuid)\r\n };\r\n }\r\n\r\n protected onSubmit() {\r\n console.log('[BaseFormComponent] Form submission:', {\r\n formValid: this.form.valid,\r\n formData: this.currentFormData,\r\n formState: this.form.value\r\n });\r\n\r\n if (!this.currentFormData || Object.keys(this.currentFormData).length === 0) {\r\n this.notificationService.showError('No data to save');\r\n return;\r\n }\r\n\r\n if (this.form.valid) {\r\n if (this.isNew) {\r\n console.log('[BaseFormComponent] Saving new entity');\r\n this.saveEntity();\r\n return;\r\n }\r\n\r\n const hasChanges = this.hasFormChanges(this.currentFormData);\r\n console.log('[BaseFormComponent] Change detection:', {\r\n hasChanges,\r\n currentData: this.currentFormData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n if (!hasChanges) {\r\n this.notificationService.showSuccess('No changes to save');\r\n return;\r\n }\r\n\r\n console.log('[BaseFormComponent] Saving changes');\r\n this.saveEntity();\r\n } else {\r\n console.warn('[BaseFormComponent] Form validation failed:', this.form.errors);\r\n this.notificationService.showError('Please check form errors');\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: any): boolean {\r\n if (!this.originalFormData || this.isNew) {\r\n return true;\r\n }\r\n\r\n console.log('[BaseFormComponent] Checking for changes:', {\r\n currentData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n const hasChanges = Object.keys(currentData).some(key => {\r\n const currentValue = currentData[key];\r\n const originalValue = (this.originalFormData as any)[key];\r\n const changed = currentValue !== originalValue;\r\n \r\n if (changed) {\r\n console.log(`[BaseFormComponent] Field '${key}' changed:`, {\r\n from: originalValue,\r\n to: currentValue\r\n });\r\n }\r\n \r\n return changed;\r\n });\r\n\r\n console.log('[BaseFormComponent] Changes detected:', hasChanges);\r\n return hasChanges;\r\n }\r\n\r\n protected saveEntity() {\r\n this.loading = true;\r\n const formData = this.currentFormData as Omit<T, typeof AppConstants.FORM.UUID>;\r\n const entityName = this.getEntityName();\r\n const entityOperations = this.getEntityOperations();\r\n\r\n const request$ = this.isNew\r\n ? entityOperations.create(formData)\r\n : entityOperations.update(this.originalFormData!.uuid, formData);\r\n\r\n request$.subscribe({\r\n next: () => {\r\n this.loading = false;\r\n this.notificationService.showSuccess(`${entityName} ${AppMessages.FORM.SUCCESS.SAVE}`);\r\n this.router.navigate(this.onSubmitRoute());\r\n },\r\n error: (error: any) => {\r\n const errorMessage = error.error?.message || `${AppMessages.FORM.ERROR.SAVE} ${entityName}`;\r\n this.showError(errorMessage);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityOperations().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n console.log('[BaseFormComponent] Original data loaded:', this.originalFormData);\r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n },\r\n error: () => {\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected abstract getEntityService(): EntityService<T>;\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n protected getDropdownOptions(): Record<string, any> {\r\n return {};\r\n }\r\n\r\n protected abstract getJsonFields(): any;\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Checks if the component is running in a specific context\r\n * @param contextType The context type to check against\r\n */\r\n protected isInContext(contextType: ComponentContext): boolean {\r\n return this.context === contextType;\r\n }\r\n}\r\n","import { OnInit, OnDestroy, ViewChild, Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Table, TableLazyLoadEvent } from 'primeng/table';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { Subscription, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { FilterCriteria, FilterOperator } from '../models/pagination/filter-criteria.interface';\r\nimport { SortCriteria } from '../models/pagination/sort-criteria.interface';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { AppConstants } from '../constants/app.constants';\r\n\r\n/**\r\n * Base component for all list page components in the application.\r\n * Provides common functionality for list operations like loading data,\r\n * pagination, sorting, and CRUD operations.\r\n */\r\n@Directive()\r\nexport abstract class BaseListPageComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('dt') table!: Table;\r\n items: T[] = [];\r\n actionLoading: boolean = false;\r\n rows: number = 10;\r\n totalRecords: number = 0;\r\n filters: FilterCriteria[] = [];\r\n protected subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected confirmationService: ConfirmationService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n /**\r\n * Initialize the component, subscribe to loading state if available,\r\n * and load initial data.\r\n */\r\n ngOnInit() {\r\n // Subscribe to loading state if available\r\n const loadingObservable = this.getLoadingObservable();\r\n if (loadingObservable) {\r\n this.subscriptions.push(\r\n loadingObservable.subscribe(\r\n isLoading => this.loading = isLoading\r\n )\r\n );\r\n }\r\n this.loadData();\r\n }\r\n\r\n /**\r\n * Clean up any subscriptions when the component is destroyed\r\n */\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n /**\r\n * Handle search event from the UI\r\n * @param event The search event\r\n */\r\n onSearch(event: Event): void {\r\n const element = event.target as HTMLInputElement;\r\n if (this.table) {\r\n this.table.filterGlobal(element.value, 'contains');\r\n }\r\n }\r\n\r\n /**\r\n * Load data with pagination and sorting\r\n * @param event The lazy load event from PrimeNG table\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filters to backend format with proper operator mapping\r\n */\r\n protected convertFilters(filters: { [key: string]: any }): FilterCriteria[] {\r\n const backendFilters: FilterCriteria[] = [];\r\n if (!filters) return backendFilters;\r\n\r\n console.log('Raw PrimeNG filters:', filters);\r\n\r\n Object.entries(filters).forEach(([key, filterMeta]) => {\r\n console.log(`Processing filter for ${key}:`, filterMeta);\r\n\r\n // Handle array of filter metadata (multiple filters for same column)\r\n if (Array.isArray(filterMeta)) {\r\n const validFilters = filterMeta\r\n .filter(meta => meta.value !== null && meta.value !== undefined && meta.value !== '')\r\n .map(meta => ({\r\n field: key,\r\n value: this.transformFilterValue(String(meta.value)),\r\n operator: this.transformOperator(meta.matchMode)\r\n }));\r\n backendFilters.push(...validFilters);\r\n }\r\n // Handle single filter metadata\r\n else if (filterMeta?.value !== null && filterMeta?.value !== undefined && filterMeta?.value !== '') {\r\n backendFilters.push({\r\n field: key,\r\n value: this.transformFilterValue(String(filterMeta.value)),\r\n operator: this.transformOperator(filterMeta.matchMode)\r\n });\r\n }\r\n });\r\n\r\n console.log('Converted filters:', backendFilters);\r\n return backendFilters;\r\n }\r\n\r\n /**\r\n * Transform filter value based on backend requirements - all values must be strings\r\n */\r\n protected transformFilterValue(value: any): string {\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n if (typeof value === 'string') {\r\n return value.trim();\r\n }\r\n if (Array.isArray(value)) {\r\n return value.join(',');\r\n }\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return value.toString();\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Map PrimeNG operators to backend operators\r\n */\r\n protected transformOperator(operator: string): FilterOperator {\r\n const operatorMap: { [key: string]: FilterOperator } = {\r\n 'contains': 'CONTAINS',\r\n 'startsWith': 'STARTS_WITH',\r\n 'endsWith': 'ENDS_WITH',\r\n 'equals': 'EQUALS',\r\n 'notEquals': 'NOT_EQUALS',\r\n 'gt': 'GREATER_THAN',\r\n 'gte': 'GREATER_THAN_EQUALS',\r\n 'lt': 'LESS_THAN',\r\n 'lte': 'LESS_THAN_EQUALS'\r\n };\r\n return operatorMap[operator] || 'EQUALS'; // Default to EQUALS if operator not found\r\n }\r\n\r\n loadData(event?: TableLazyLoadEvent) {\r\n console.log('LoadData called with event:', event);\r\n this.loading = true;\r\n\r\n // Create page request with default values\r\n const pageRequest: PageRequest = {\r\n page: 0,\r\n size: 10,\r\n sorts: [],\r\n filters: []\r\n };\r\n\r\n if (event) {\r\n // Handle pagination\r\n if (event.first !== undefined && event.rows) {\r\n pageRequest.page = Math.floor(event.first / event.rows);\r\n pageRequest.size = event.rows;\r\n }\r\n\r\n // Handle sorting\r\n if (event.sortField) {\r\n pageRequest.sorts = [{\r\n field: Array.isArray(event.sortField) ? event.sortField[0] : event.sortField,\r\n direction: event.sortOrder === 1 ? 'asc' : 'desc'\r\n }];\r\n }\r\n\r\n // Handle filtering\r\n if (event.filters) {\r\n const convertedFilters = this.convertFilters(event.filters);\r\n console.log('Converted filters:', convertedFilters);\r\n pageRequest.filters = convertedFilters;\r\n }\r\n }\r\n\r\n console.log('Sending page request:', pageRequest);\r\n\r\n this.getEntityService().getAll(pageRequest)\r\n .pipe(finalize(() => this.loading = false))\r\n .subscribe({\r\n next: (response: Page<T>) => {\r\n this.items = [...response.content];\r\n this.totalRecords = response.page.totalElements;\r\n },\r\n error: (error) => {\r\n console.error('Failed to load data:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.LOAD} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Navigate to create a new entity\r\n */\r\n public onCreate(): void {\r\n // Navigate to the form route and pass the mode as a query parameter\r\n this.navigateTo([this.getFormRoute()], { [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.CREATE });\r\n }\r\n\r\n /**\r\n * Navigate to view an entity\r\n * @param item The entity to view\r\n */\r\n onView(item: T) {\r\n if (!this.validateItemUuid(item, 'view')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.VIEW, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n\r\n /**\r\n * Navigate to edit an entity\r\n * @param item The entity to edit\r\n */\r\n onEdit(item: T) {\r\n if (!this.validateItemUuid(item, 'edit')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.EDIT, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n \r\n /**\r\n * Navigate to a route with error handling\r\n * @param path The route path\r\n * @param matrixParams Optional matrix parameters\r\n */\r\n protected navigateTo(path: any[], matrixParams?: { [key: string]: any }): void {\r\n this.router.navigate(path, { queryParams: matrixParams })\r\n .catch(error => {\r\n console.error('Navigation error:', error);\r\n this.showError(AppMessages.LIST.ERROR.NAVIGATION);\r\n });\r\n }\r\n\r\n /**\r\n * Delete an entity with confirmation\r\n * @param item The entity to delete\r\n */\r\n onDelete(item: T) {\r\n if (!this.validateItemUuid(item, 'delete')) return;\r\n\r\n this.confirmationService.confirm({\r\n message: `Are you sure you want to delete this ${this.getEntityName()}?`,\r\n header: 'Confirm Deletion',\r\n icon: 'pi pi-exclamation-triangle',\r\n accept: () => {\r\n this.actionLoading = true;\r\n this.getEntityService().delete(item.uuid)\r\n .pipe(finalize(() => this.actionLoading = false))\r\n .subscribe({\r\n next: () => {\r\n this.showSuccess(`${this.getEntityName()} ${AppMessages.LIST.SUCCESS.DELETE}`);\r\n this.loadData();\r\n },\r\n error: (error) => {\r\n console.error('Delete failed:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.DELETE} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Validate that an entity has a UUID\r\n * @param item The entity to validate\r\n * @param action The action being performed\r\n * @returns true if valid, false otherwise\r\n */\r\n protected validateItemUuid(item: T, action: string): boolean {\r\n if (!item?.uuid) {\r\n this.showError(`${AppMessages.LIST.ERROR.INVALID_ID} ${action}`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Get an observable for loading state from the entity service\r\n * @returns An observable of loading state if available, null otherwise\r\n */\r\n protected getLoadingObservable(): Observable<boolean> | null {\r\n const service = this.getEntityService() as any;\r\n return service.loading$ || null;\r\n }\r\n\r\n /**\r\n * Get the entity service for data operations\r\n */\r\n protected abstract getEntityService(): { \r\n getAll: (pageRequest?: PageRequest) => Observable<Page<T>>;\r\n delete: (uuid: string) => Observable<any>;\r\n };\r\n\r\n /**\r\n * Get the entity name for display in messages\r\n */\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Get the route to the entity form\r\n */\r\n protected abstract getFormRoute(): string;\r\n}\r\n","import { Component, OnInit, Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, take, map } from 'rxjs';\r\nimport { EntityService } from '../services/entity.service';\r\nimport { TabbedFormType } from '../enums/tabbed-form-type.enum';\r\n\r\nexport interface TabConfig {\r\n value: string;\r\n title: string;\r\n isParentModel?: boolean;\r\n}\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseTabbedFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n // Tab specific properties\r\n activeTab: string = '';\r\n tabs: TabConfig[] = [];\r\n formType = '';\r\n\r\n // Form properties\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData!: T;\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n\r\n private debug(message: string, ...args: any[]): void {\r\n // Only log in development\r\n if (process.env['NODE_ENV'] !== 'production') {\r\n console.log(`[BaseTabbedFormComponent] ${message}`, ...args);\r\n }\r\n }\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n // Initialize tabs\r\n this.tabs = this.getTabs();\r\n this.activeTab = this.tabs[0]?.value || '';\r\n\r\n // Initialize form using query params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n\r\n private initializeFormData() {\r\n this.debug('Initializing form data');\r\n this.debug('Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n this.debug('Create mode, using defaults');\r\n this.loadDefaultTab();\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state\r\n } as { formData?: T };\r\n\r\n this.debug('Combined state:', state);\r\n\r\n if (state?.formData) {\r\n this.debug('Found form data in state:', state.formData);\r\n this.patchFormData(state.formData);\r\n this.loadDefaultTab();\r\n } else {\r\n this.debug('No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n // Flatten nested subscriptions using RxJS operators\r\n this.route.queryParams.pipe(\r\n take(1),\r\n map((params: { [key: string]: string }) => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n return uuid;\r\n })\r\n ).subscribe({\r\n next: (uuid: string) => this.loadEntity(uuid),\r\n error: (error: Error) => {\r\n console.error('Error loading UUID:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} UUID`);\r\n }\r\n });\r\n }\r\n\r\n private initializeForm(params: any) {\r\n // Remove debug logging for production\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n \r\n try {\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n this.initializeListForm(params);\r\n } else {\r\n this.initializeFormData();\r\n }\r\n } catch (error) {\r\n console.error('Error initializing form:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.INIT}: ${error instanceof Error ? error.message : 'Unknown error'}`);\r\n }\r\n }\r\n\r\n protected patchFormData(data: T | null) {\r\n if (data) {\r\n this.currentFormData = { ...data };\r\n this.originalFormData = { ...data }; // Create a deep copy to avoid reference issues\r\n this.isNew = false;\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n return;\r\n }\r\n\r\n // Validate mode more explicitly\r\n if (!this.isValidPageMode(routeMode)) {\r\n const validModes = Object.values(AppConstants.PAGE_MODE).join(', ');\r\n throw new Error(`Invalid page mode: ${routeMode}. Valid modes are: ${validModes}`);\r\n }\r\n \r\n this.mode = routeMode;\r\n }\r\n\r\n private setupFormState() {\r\n this.debug('Setting up form state, mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n this.debug('Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityService().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n this.debug('Original data loaded:', this.originalFormData);\r\n this.debug('Form data updated:', this.currentFormData);\r\n this.loadDefaultTab();\r\n },\r\n error: (error: Error) => {\r\n this.debug('Error loading entity:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected findTabByValue(value: string): TabConfig | undefined {\r\n return this.tabs.find(tab => tab.value === value);\r\n }\r\n\r\n protected loadDefaultTab() {\r\n this.debug('Loading default tab');\r\n const defaultTab = this.tabs.find(tab => tab.isParentModel) || this.tabs[0];\r\n\r\n if (!defaultTab) return;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === defaultTab.value);\r\n\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)\r\n state: {\r\n formData: this.currentFormData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected getTabFormData(tabConfig: TabConfig): T | null {\r\n if (!tabConfig) return null;\r\n\r\n if (tabConfig.isParentModel) {\r\n return this.currentFormData;\r\n }\r\n\r\n const fieldName = this.utilsService.toCamelCase(tabConfig.value);\r\n // Use type assertion since we know this is a valid field\r\n return (this.currentFormData as any)[fieldName] as T;\r\n }\r\n\r\n private initializeListForm(params: any) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList;\r\n \r\n if (!formDataList?.length) {\r\n throw new Error('formDataList is required in state for LIST type');\r\n }\r\n \r\n // Create tabs from list in state\r\n // Use data.uuid as title since getTabTitle is removed\r\n this.tabs = formDataList.map((data: T) => ({\r\n value: data.uuid,\r\n title: data.uuid, // Use uuid as the default title for LIST type\r\n isParentModel: true\r\n }));\r\n \r\n // Select tab based on UUID in params or first tab\r\n const uuid = params[AppConstants.FORM.UUID];\r\n this.activeTab = uuid && this.tabs.find(t => t.value === uuid) \r\n ? uuid \r\n : this.tabs[0].value;\r\n \r\n // Set current form data from list\r\n const selectedData = formDataList.find((d: T) => d.uuid === this.activeTab);\r\n this.currentFormData = selectedData;\r\n this.originalFormData = selectedData;\r\n }\r\n\r\n protected onTabChange(value: string | number): void {\r\n const tabConfig = this.findTabByValue(value as string);\r\n if (!tabConfig) {\r\n console.warn(`Tab not found: ${value}`);\r\n return;\r\n }\r\n\r\n this.activeTab = tabConfig.value;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === value);\r\n\r\n // Update current form data\r\n this.currentFormData = selectedData;\r\n this.originalFormData = selectedData;\r\n\r\n this.router.navigate([value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n const formData = this.getTabFormData(tabConfig);\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n state: {\r\n formData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: T): boolean {\r\n // For new forms or no original data, consider it changed\r\n if (this.isNew || !this.originalFormData) {\r\n return true;\r\n }\r\n\r\n // Deep comparison of objects\r\n return !this.isEqual(currentData, this.originalFormData);\r\n }\r\n\r\n private isEqual<V extends Record<string, any>>(obj1: V, obj2: V): boolean {\r\n if (obj1 === obj2) return true;\r\n if (typeof obj1 !== 'object' || obj1 === null || \r\n typeof obj2 !== 'object' || obj2 === null) return false;\r\n\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n\r\n if (keys1.length !== keys2.length) return false;\r\n\r\n return keys1.every(key => \r\n Object.prototype.hasOwnProperty.call(obj2, key) && \r\n this.isEqual(obj1[key], obj2[key])\r\n );\r\n }\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n // Abstract methods that must be implemented by child classes\r\n protected abstract getTabs(): TabConfig[];\r\n protected abstract getEntityService(): EntityService<T>;\r\n protected abstract getEntityName(): string;\r\n // getTabTitle method removed\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\ntype DateFormat = 'default' | 'short' | 'medium';\r\n\r\n@Pipe({\r\n name: 'indianDate',\r\n standalone: true\r\n})\r\nexport class IndianDatePipe implements PipeTransform {\r\n constructor(private datePipe: DatePipe) {}\r\n\r\n transform(value: string | null, format: DateFormat = 'default'): string | null {\r\n if (!value) return null;\r\n\r\n // First validate dd-MM-yyyy format\r\n const dateRegex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\\d{4}$/;\r\n if (!dateRegex.test(value)) {\r\n throw new Error(`Invalid date format: ${value}. Expected format: dd-MM-yyyy`);\r\n }\r\n\r\n // Validate real date\r\n const [day, month, year] = value.split('-').map(Number);\r\n const date = new Date(year, month - 1, day);\r\n if (\r\n date.getFullYear() !== year ||\r\n date.getMonth() !== month - 1 ||\r\n date.getDate() !== day\r\n ) {\r\n throw new Error(`Invalid date: ${value}`);\r\n }\r\n\r\n // Apply requested format\r\n switch (format) {\r\n case 'short':\r\n // Pad with leading zeros for consistent format\r\n const paddedDay = day.toString().padStart(2, '0');\r\n const paddedMonth = month.toString().padStart(2, '0');\r\n return `${paddedDay}-${paddedMonth}-${year}`; // 10-03-2025\r\n case 'medium':\r\n return this.datePipe.transform(date, 'dd MMM yyyy'); // 10 Jan 2019\r\n default:\r\n return value; // original dd-MM-yyyy\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'formly-field-text-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputTextModule\r\n ],\r\n template: `\r\n <input pInputText\r\n [type]=\"props['type'] || 'text'\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [attr.aria-label]=\"props['label'] || props['placeholder'] || ''\"\r\n class=\"w-full\"/>\r\n `\r\n})\r\nexport class TextInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n type: 'text',\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { Observable, of, isObservable } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any; // For additional properties\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-select',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n SelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-select\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [virtualScroll]=\"false\"\r\n [showClear]=\"false\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </ng-container>\r\n `\r\n})\r\nexport class SelectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n showClear: false,\r\n filter: false,\r\n virtualScroll: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule, FieldType } from '@ngx-formly/core';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface RadioOption {\r\n value: any;\r\n label: string;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-radio',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n RadioButtonModule\r\n ],\r\n template: `\r\n <div class=\"flex flex-column gap-1\">\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <div *ngFor=\"let option of options; let i = index\" class=\"flex align-items-center gap-2\">\r\n <p-radioButton\r\n [name]=\"field.name || ''\"\r\n [value]=\"option.value\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [size]=\"'small'\"\r\n [inputId]=\"field.key + '_' + i\">\r\n </p-radioButton>\r\n <label [for]=\"field.key + '_' + i\" class=\"p-radio-label cursor-pointer\">\r\n {{option.label}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n `\r\n})\r\nexport class RadioType extends FieldType {\r\n get options$(): Observable<RadioOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\n\r\n@Component({\r\n selector: 'formly-field-numeric-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputNumberModule\r\n ],\r\n template: `\r\n <p-inputNumber\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [min]=\"props['min'] || 0\"\r\n [max]=\"props['max']\"\r\n [minFractionDigits]=\"props['minFractionDigits'] || 0\"\r\n [maxFractionDigits]=\"props['maxFractionDigits'] || 0\"\r\n [prefix]=\"props['prefix'] || ''\"\r\n [suffix]=\"props['suffix'] || ''\"\r\n [useGrouping]=\"props['useGrouping'] ?? true\"\r\n [showButtons]=\"true\"\r\n class=\"w-full\">\r\n </p-inputNumber>\r\n `\r\n})\r\nexport class NumericInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n min: undefined,\r\n max: undefined,\r\n minFractionDigits: 0,\r\n maxFractionDigits: 0,\r\n prefix: '',\r\n suffix: '',\r\n useGrouping: true\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-multiselect',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n MultiSelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-multiSelect\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [optionLabel]=\"props['optionLabel'] || 'label'\"\r\n [optionValue]=\"props['optionValue'] || 'value'\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n [filter]=\"props['filter'] || true\"\r\n [filterBy]=\"props['filterBy'] || 'label'\"\r\n [maxSelectedLabels]=\"props['maxSelectedLabels'] || 2\"\r\n [showToggleAll]=\"props['showToggleAll'] || true\"\r\n [virtualScroll]=\"props['virtualScroll'] || false\"\r\n [display]=\"props['display'] || 'chip'\"\r\n styleClass=\"w-full\">\r\n </p-multiSelect>\r\n </ng-container>\r\n `\r\n})\r\nexport class MultiselectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [] as SelectOption[],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n filter: false,\r\n maxSelectedLabels: 3,\r\n showToggleAll: true,\r\n virtualScroll: false\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'formly-field-date',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n DatePickerModule\r\n ],\r\n template: `\r\n <p-datepicker\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"props['dateFormat'] || 'dd-mm-yy'\"\r\n [showTime]=\"props['showTime'] || false\"\r\n [touchUI]=\"props['touchUI'] || false\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [minDate]=\"props['minDate']\"\r\n [maxDate]=\"props['maxDate']\"\r\n [showOnFocus]=\"false\"\r\n [todayButtonStyleClass]=\"'p-button-secondary'\"\r\n [clearButtonStyleClass]=\"'p-button-secondary'\"\r\n styleClass=\"w-full\"\r\n (onSelect)=\"onDateSelect($event)\"\r\n (onInput)=\"onDateInput($event)\">\r\n </p-datepicker>\r\n `\r\n})\r\nexport class DateType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n dateFormat: 'dd-mm-yy',\r\n showTime: false,\r\n touchUI: false,\r\n placeholder: '',\r\n showButtonBar: true,\r\n }\r\n };\r\n\r\n onDateSelect(event: Date): void {\r\n this.formatAndSetDate(event);\r\n }\r\n\r\n onDateInput(event: any): void {\r\n const inputValue = event.target.value.trim();\r\n if (this.isValidDateInput(inputValue, this.props['dateFormat'] || 'dd-mm-yy')) {\r\n const parsedDate = this.parseDate(inputValue, this.props['dateFormat'] || 'dd-mm-yy');\r\n if (parsedDate) {\r\n this.formatAndSetDate(parsedDate);\r\n }\r\n } else {\r\n this.formControl?.setErrors({ invalidDate: true });\r\n }\r\n }\r\n\r\n private formatAndSetDate(date: Date): void {\r\n if (this.formControl) {\r\n const formattedDate = formatDate(date, 'dd-MM-yyyy', 'en-US');\r\n this.formControl.setValue(formattedDate);\r\n }\r\n }\r\n\r\n private parseDate(value: string, format: string): Date | null {\r\n const parts = value.split(/[-/]/); // Split by common delimiters\r\n if (parts.length === 3) {\r\n const [day, month, year] = format === 'dd-mm-yy'\r\n ? [parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)]\r\n : [parseInt(parts[1], 10), parseInt(parts[0], 10) - 1, parseInt(parts[2], 10)];\r\n return new Date(year, month, day);\r\n }\r\n return null;\r\n }\r\n\r\n private isValidDateInput(value: string, format: string): boolean {\r\n const dateRegex = format === 'dd-mm-yy'\r\n ? /^\\d{2}-\\d{2}-\\d{4}$/\r\n : /^\\d{2}\\/\\d{2}\\/\\d{4}$/;\r\n return dateRegex.test(value);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\n\r\n@Component({\r\n selector: 'formly-field-checkbox',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n CheckboxModule\r\n ],\r\n template: `\r\n <div class=\"checkbox-container\">\r\n <p-checkbox\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [binary]=\"!props['options']\"\r\n [trueValue]=\"props['trueValue']\"\r\n [falseValue]=\"props['falseValue']\">\r\n {{props['checkboxLabel'] || ''}}\r\n </p-checkbox>\r\n </div>\r\n `,\r\n styles: [`\r\n .checkbox-container {\r\n display: flex;\r\n align-items: center;\r\n height: 40px;\r\n }\r\n `]\r\n})\r\nexport class CheckboxType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n trueValue: true,\r\n falseValue: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { Textarea } from 'primeng/inputtextarea';\r\n\r\n@Component({\r\n selector: 'formly-field-textarea',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n Textarea\r\n ],\r\n template: `\r\n <textarea pInputTextarea\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [rows]=\"props['rows'] || 3\"\r\n [cols]=\"props['cols']\"\r\n [autoResize]=\"props['autoResize']\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n class=\"w-full\">\r\n </textarea>\r\n `\r\n})\r\nexport class TextareaType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n rows: 3,\r\n cols: undefined,\r\n autoResize: true,\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FieldWrapper, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\ninterface FormlyValidationMessage {\r\n [key: string]: string;\r\n}\r\n\r\ninterface FormlyFieldProps {\r\n label?: string;\r\n required?: boolean;\r\n tooltip?: string;\r\n description?: string;\r\n validation?: {\r\n messages?: FormlyValidationMessage;\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'formly-wrapper-form-field',\r\n standalone: true,\r\n imports: [CommonModule, TooltipModule],\r\n template: `\r\n <div class=\"field mb-4\">\r\n <label *ngIf=\"props.label\" [for]=\"id\" class=\"font-medium\">\r\n {{ props.label }}\r\n <span class=\"required-star\" *ngIf=\"props.required\">*</span>\r\n <i *ngIf=\"props.tooltip\" \r\n class=\"pi pi-info-circle ml-2\" \r\n [pTooltip]=\"props.tooltip\">\r\n </i>\r\n </label>\r\n \r\n <div [class.p-input-error]=\"showError\">\r\n <ng-container #fieldComponent></ng-container>\r\n </div>\r\n \r\n <small *ngIf=\"props.description\" class=\"block mt-1\">\r\n {{ props.description }}\r\n </small>\r\n \r\n <small *ngIf=\"showError\" class=\"p-error block\">\r\n <i class=\"pi pi-exclamation-circle mr-2\"></i>\r\n {{ errorMessage }}\r\n </small>\r\n </div>\r\n `,\r\n styles: [`\r\n :host ::ng-deep {\r\n .required-star {\r\n color: var(--red-500);\r\n margin-left: 0.25rem;\r\n }\r\n \r\n .p-input-error :where(input, .p-inputtext) {\r\n border-color: var(--red-500);\r\n }\r\n\r\n .p-input-error :where(input:enabled:focus, .p-inputtext:enabled:focus) {\r\n border-color: var(--red-500);\r\n box-shadow: 0 0 0 1px var(--red-500);\r\n }\r\n\r\n .p-error {\r\n color: var(--red-500);\r\n margin-top: 0.5rem;\r\n }\r\n\r\n small {\r\n color: var(--text-color-secondary);\r\n }\r\n }\r\n `]\r\n})\r\nexport class FormFieldWrapper extends FieldWrapper<FormlyFieldConfig<FormlyFieldProps>> {\r\n get errorMessage(): string {\r\n if (!this.field.formControl?.errors) {\r\n return '';\r\n }\r\n \r\n const firstErrorKey = Object.keys(this.field.formControl.errors)[0];\r\n return this.props.validation?.messages?.[firstErrorKey] || 'This field is required';\r\n }\r\n\r\n override get showError(): boolean {\r\n if (!this.field.formControl) {\r\n return false;\r\n }\r\n \r\n const { touched, dirty, invalid } = this.field.formControl;\r\n return invalid && (touched || dirty);\r\n }\r\n}","export const FORMLY_TYPES = {\r\n TEXT: 'text',\r\n NUMBER: 'number',\r\n DATE: 'date',\r\n CHECKBOX: 'checkbox',\r\n RADIO: 'radio',\r\n SELECT: 'select',\r\n MULTISELECT: 'multiselect',\r\n TEXTAREA: 'textarea'\r\n};\r\n\r\nexport const FORMLY_WRAPPERS = {\r\n FORM_FIELD: 'form-field'\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { TextInputType } from './types/text-input.type';\r\nimport { SelectType } from './types/select.type';\r\nimport { RadioType } from './types/radio.type';\r\nimport { NumericInputType } from './types/numeric-input.type';\r\nimport { MultiselectType } from './types/multiselect.type';\r\nimport { DateType } from './types/date.type';\r\nimport { CheckboxType } from './types/checkbox.type';\r\nimport { TextareaType } from './types/textarea.type'; // Added import\r\nimport { FormFieldWrapper } from './form-field.wrapper';\r\nimport { FORMLY_TYPES, FORMLY_WRAPPERS } from './formly.constants'; // Added import\r\n\r\n@NgModule({\r\n imports: [\r\n FormlyModule.forRoot({\r\n types: [\r\n { name: FORMLY_TYPES.TEXT, component: TextInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.NUMBER, component: NumericInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.DATE, component: DateType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.CHECKBOX, component: CheckboxType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.RADIO, component: RadioType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.SELECT, component: SelectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.MULTISELECT, component: MultiselectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.TEXTAREA, component: TextareaType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] }, // Added textarea type\r\n ],\r\n wrappers: [\r\n { name: FORMLY_WRAPPERS.FORM_FIELD, component: FormFieldWrapper }\r\n ]\r\n })\r\n ],\r\n exports: [FormlyModule]\r\n})\r\nexport class CoreFormlyModule { }\r\n","// Config\r\n\r\n// Services\r\nexport * from './lib/services/formly-config.service';\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/services/notification.service';\r\nexport * from './lib/services/enum-registry.service';\r\nexport * from './lib/services/entity-registry.service';\r\nexport * from './lib/services/reference-data-provider.service';\r\nexport * from './lib/services/base-crud.service';\r\nexport * from './lib/services/http-utility.service';\r\nexport * from './lib/services/entity.service';\r\n\r\n// Enums\r\nexport * from './lib/enums/component-context.enum';\r\nexport * from './lib/enums/tabbed-form-type.enum';\r\n\r\n// Components\r\nexport * from './lib/components/base-form.component';\r\nexport * from './lib/components/base-page.component';\r\nexport * from './lib/components/base-list-page.component';\r\nexport * from './lib/components/base-tabbed-form.component';\r\n\r\n// Constants\r\nexport * from './lib/constants/app.constants';\r\nexport * from './lib/constants/app.messages';\r\n\r\n// Models\r\nexport * from './lib/models/pagination/page.interface';\r\nexport * from './lib/models/pagination/page-request.interface';\r\n\r\n// Pipes\r\nexport * from './lib/pipes/indian-date.pipe';\r\n\r\n// Formly Components\r\nexport * from './lib/components/formly/core-formly.module';\r\nexport * from './lib/components/formly/form-field.wrapper';\r\nexport * from './lib/components/formly/types/text-input.type';\r\nexport * from './lib/components/formly/types/select.type';\r\nexport * from './lib/components/formly/types/radio.type';\r\nexport * from './lib/components/formly/types/numeric-input.type';\r\nexport * from './lib/components/formly/types/multiselect.type';\r\nexport * from './lib/components/formly/types/date.type';\r\nexport * from './lib/components/formly/types/checkbox.type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UtilsService","i1.EnumRegistryService","i1","i2","i1.HttpUtilityService","i2.ReferenceDataProviderService","i2.NotificationService","i3.UtilsService","i4.FormlyConfigService","finalize","i4","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-ts-core-lib.mjs","sources":["../../../../angular/core-lib/src/lib/services/utils.service.ts","../../../../angular/core-lib/src/lib/services/enum-registry.service.ts","../../../../angular/core-lib/src/lib/services/formly-config.service.ts","../../../../angular/core-lib/src/lib/services/notification.service.ts","../../../../angular/core-lib/src/lib/services/http-utility.service.ts","../../../../angular/core-lib/src/lib/services/reference-data-provider.service.ts","../../../../angular/core-lib/src/lib/services/entity-registry.service.ts","../../../../angular/core-lib/src/lib/services/base-crud.service.ts","../../../../angular/core-lib/src/lib/enums/component-context.enum.ts","../../../../angular/core-lib/src/lib/enums/tabbed-form-type.enum.ts","../../../../angular/core-lib/src/lib/components/base-page.component.ts","../../../../angular/core-lib/src/lib/constants/app.messages.ts","../../../../angular/core-lib/src/lib/constants/app.constants.ts","../../../../angular/core-lib/src/lib/components/base-form.component.ts","../../../../angular/core-lib/src/lib/components/base-list-page.component.ts","../../../../angular/core-lib/src/lib/components/base-tabbed-form.component.ts","../../../../angular/core-lib/src/lib/pipes/indian-date.pipe.ts","../../../../angular/core-lib/src/lib/components/formly/types/text-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/select.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/radio.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/numeric-input.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/multiselect.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/date.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/checkbox.type.ts","../../../../angular/core-lib/src/lib/components/formly/types/textarea.type.ts","../../../../angular/core-lib/src/lib/components/formly/form-field.wrapper.ts","../../../../angular/core-lib/src/lib/components/formly/formly.constants.ts","../../../../angular/core-lib/src/lib/components/formly/core-formly.module.ts","../../../../angular/core-lib/src/index.ts","../../../../angular/core-lib/src/codex-ts-core-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A utility service that provides common reusable functionality\r\n * such as UUID validation and error message display\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n /**\r\n * Validates if a string is a valid UUID\r\n * @param uuid The string to validate\r\n * @returns boolean indicating if the string is a valid UUID\r\n */\r\n isValidUUID(uuid: string): boolean {\r\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\r\n return uuidRegex.test(uuid);\r\n }\r\n\r\n /**\r\n * Shows an error message using PrimeNG's MessageService\r\n * @param message The error message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showError(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shows a success message using PrimeNG's MessageService\r\n * @param message The success message to display\r\n * @param messageService The MessageService instance to use\r\n */\r\n showSuccess(message: string, messageService?: MessageService) {\r\n if (messageService) {\r\n messageService.add({\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the display value for an enum key or array of enum keys\r\n * @param enumType The enum type\r\n * @param key The enum key or array of enum keys\r\n * @returns The display value for the enum key or comma-separated list of display values for array of keys\r\n */\r\n getEnumValue<T>(enumType: T, key: string | string[]): string {\r\n if (!key) return '';\r\n \r\n if (Array.isArray(key)) {\r\n // Handle array of keys - map each to its display value and join with comma\r\n return key.map(k => (enumType as any)[k] || k).join(', ');\r\n }\r\n \r\n // Handle single key\r\n return (enumType as any)[key] || key;\r\n }\r\n\r\n /**\r\n * Gets all values from an enum type for use in formly select fields\r\n * @param enumType The enum type to get values from\r\n * @returns Array of {label, value} pairs for formly select options\r\n */\r\n getEnumValues<T extends { [key: string]: string | number }>(enumType: T): Array<{label: string, value: string}> {\r\n return Object.entries(enumType)\r\n .filter(([key]) => isNaN(Number(key))) // Filter out reverse mappings\r\n .map(([key, value]) => ({\r\n value: key, // enum key as the value\r\n label: value as string // enum value as the label\r\n }));\r\n }\r\n\r\n /**\r\n * Converts a camelCase string to Title Case with spaces\r\n * @param camelCase The camelCase string to convert\r\n * @returns The Title Case string\r\n */\r\n camelCaseToTitleCase(camelCase: string): string {\r\n if (!camelCase) return '';\r\n const spacedString = camelCase.replace(/([a-z])([A-Z])/g, '$1 $2');\r\n return spacedString.charAt(0).toUpperCase() + spacedString.slice(1);\r\n }\r\n\r\n /**\r\n * Converts a string to kebab-case\r\n * @param input The string to convert\r\n * @returns The kebab-case string\r\n */\r\n toKebabCase(input: string): string {\r\n return input\r\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\r\n .replace(/([A-Z])([A-Z])(?=[a-z])/g, '$1-$2')\r\n .toLowerCase();\r\n }\r\n\r\n /**\r\n * Converts a string to camelCase.\r\n * Example: \"loan-application\" becomes \"loanApplication\"\r\n * @param input The string to convert\r\n * @returns The camelCase string\r\n */\r\n toCamelCase(input: string): string {\r\n if (!input) return '';\r\n \r\n // Split by non-alphanumeric chars\r\n const words = input.split(/[^a-zA-Z0-9]/);\r\n const result = [words[0].toLowerCase()];\r\n \r\n // Capitalize first letter of remaining words\r\n for (let i = 1; i < words.length; i++) {\r\n const word = words[i];\r\n if (word) {\r\n result.push(word.charAt(0).toUpperCase() + word.substring(1).toLowerCase());\r\n }\r\n }\r\n \r\n return result.join('');\r\n }\r\n\r\n /**\r\n * Removes double forward slashes from an endpoint string while preserving the protocol\r\n * e.g. \"http://localhost:8080//api//v1//users\" -> \"http://localhost:8080/api/v1/users\"\r\n * @param endpoint The endpoint string to clean\r\n * @returns The cleaned endpoint string without double slashes\r\n */\r\n removeDoubleSlashes(endpoint: string): string {\r\n if (!endpoint) return '';\r\n \r\n // Split the URL into protocol and the rest to preserve protocol slashes\r\n const [protocol, ...rest] = endpoint.split('://');\r\n \r\n if (!rest.length) {\r\n // If no protocol is present, just clean the entire string\r\n return endpoint.replace(/\\/+/g, '/');\r\n }\r\n \r\n // Clean the path part (after protocol) and reconstruct the URL\r\n const cleanPath = rest.join('://').replace(/\\/+/g, '/');\r\n return `${protocol}://${cleanPath}`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UtilsService } from './utils.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnumRegistryService {\r\n private enumMap = new Map<string, any>();\r\n\r\n constructor(private utilsService: UtilsService) {}\r\n\r\n /**\r\n * Initialize global enums\r\n */\r\n static registerGlobalEnums(enums: Record<string, any>) {\r\n return {\r\n provide: EnumRegistryService,\r\n useFactory: (utilsService: UtilsService) => {\r\n const service = new EnumRegistryService(utilsService);\r\n Object.entries(enums).forEach(([name, enumType]) => {\r\n service.register(name, enumType);\r\n });\r\n return service;\r\n },\r\n deps: [UtilsService]\r\n };\r\n }\r\n \r\n /**\r\n * Register an enum type with the service\r\n * @param name Name to register the enum under\r\n * @param enumType The enum type to register\r\n */\r\n register(name: string, enumType: any) {\r\n this.enumMap.set(name, enumType);\r\n }\r\n \r\n /**\r\n * Get formly-compatible options array for a registered enum\r\n * @param name Name of the registered enum\r\n * @returns Array of {label, value} pairs suitable for formly select fields\r\n */\r\n getEnumValues(name: string) {\r\n const enumType = this.enumMap.get(name);\r\n if (!enumType) {\r\n console.warn(`Enum type \"${name}\" not found in registry`);\r\n return [];\r\n }\r\n return this.utilsService.getEnumValues(enumType);\r\n }\r\n\r\n /**\r\n * Check if an enum type is registered\r\n * @param name Name of the enum to check\r\n */\r\n hasEnum(name: string): boolean {\r\n return this.enumMap.has(name);\r\n }\r\n\r\n /**\r\n * Clear all registered enums\r\n */\r\n clear() {\r\n this.enumMap.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { PageMode } from '../constants/app.constants';\r\nimport { EnumRegistryService } from './enum-registry.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormlyConfigService {\r\n constructor(private enumRegistry: EnumRegistryService) {}\r\n\r\n getFormConfig(\r\n fields: FormlyFieldConfig[], \r\n mode: PageMode,\r\n dynamicOptions?: Record<string, any>\r\n ): FormlyFieldConfig[] {\r\n const commonConfig = {\r\n props: {\r\n disabled: mode === 'view'\r\n }\r\n };\r\n\r\n return fields.map((field: FormlyFieldConfig) => {\r\n // Apply dynamic options from child component\r\n if (dynamicOptions && field.key && typeof field.key === 'string') {\r\n const fieldOptions = dynamicOptions[field.key];\r\n if (fieldOptions) {\r\n field.props = {\r\n ...field.props,\r\n ...fieldOptions\r\n };\r\n }\r\n }\r\n\r\n // Handle field groups recursively\r\n if (field.fieldGroup) {\r\n field.fieldGroup = this.getFormConfig(field.fieldGroup, mode, dynamicOptions);\r\n }\r\n\r\n return {\r\n ...field,\r\n ...commonConfig,\r\n props: {\r\n ...field.props,\r\n ...commonConfig.props\r\n }\r\n };\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NotificationService {\r\n private messageSubject = new BehaviorSubject<any>(null);\r\n message$ = this.messageSubject.asObservable();\r\n\r\n constructor(private messageService: MessageService) {}\r\n\r\n showSuccess(message: string) {\r\n const msgObj = {\r\n severity: 'success',\r\n summary: 'Success',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n showError(message: string) {\r\n const msgObj = {\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n };\r\n this.messageSubject.next(msgObj);\r\n }\r\n\r\n clearMessage() {\r\n this.messageSubject.next(null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse, HttpEvent } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject, finalize, forkJoin } from 'rxjs';\r\nimport { catchError, retry, timeout } from 'rxjs/operators';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n/**\r\n * A general-purpose HTTP utility service that provides enhanced HTTP operations\r\n * beyond the standard Angular HttpClient. This service includes features such as:\r\n * - Loading state management\r\n * - Standardized error handling\r\n * - Request timeouts and retries\r\n * - File upload capabilities\r\n * - Batch request handling\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpUtilityService {\r\n private loading = new BehaviorSubject<boolean>(false);\r\n loading$ = this.loading.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private messageService?: MessageService\r\n ) {}\r\n\r\n /**\r\n * Perform a GET request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n get<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a POST request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n post<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.post<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a PUT request with enhanced options\r\n * @param url The endpoint URL\r\n * @param body The request payload\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n put<T>(url: string, body: any, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.put<T>(url, body, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Perform a DELETE request with enhanced options\r\n * @param url The endpoint URL\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n delete<T>(url: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n responseType?: 'json',\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.delete<T>(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: options?.responseType as 'json',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Upload a file with optional additional data\r\n * @param url The upload endpoint URL\r\n * @param file The file to upload\r\n * @param additionalData Additional form data to include\r\n * @param options Additional request options\r\n * @returns An observable of the response\r\n */\r\n uploadFile<T>(url: string, file: File, additionalData?: Record<string, any>, options?: {\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n retries?: number,\r\n timeoutMs?: number,\r\n onProgress?: (percentage: number) => void\r\n }): Observable<T> {\r\n this.loading.next(true);\r\n \r\n const formData = new FormData();\r\n formData.append('file', file, file.name);\r\n \r\n if (additionalData) {\r\n Object.keys(additionalData).forEach(key => {\r\n formData.append(key, additionalData[key]);\r\n });\r\n }\r\n \r\n let httpOptions: any = {\r\n headers: options?.headers,\r\n withCredentials: options?.withCredentials\r\n };\r\n \r\n // If progress tracking is requested\r\n if (options?.onProgress) {\r\n httpOptions.reportProgress = true;\r\n httpOptions.observe = 'events';\r\n }\r\n \r\n // Create the request\r\n let request$ = this.http.post<any>(url, formData, httpOptions);\r\n \r\n // Add retries if specified\r\n if (options?.retries) {\r\n request$ = request$.pipe(retry(options.retries));\r\n }\r\n \r\n // Add timeout if specified\r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n // Track progress if a callback is provided\r\n if (options?.onProgress) {\r\n return new Observable<T>(observer => {\r\n request$.subscribe({\r\n next: (event: HttpEvent<any>) => {\r\n if (event.type === 1 && event.total) { // HttpEventType.UploadProgress\r\n const percentDone = Math.round(100 * event.loaded / event.total);\r\n options.onProgress!(percentDone);\r\n } else if (event.type === 4) { // HttpEventType.Response\r\n observer.next(event.body);\r\n observer.complete();\r\n }\r\n },\r\n error: (error) => {\r\n observer.error(this.handleError(error));\r\n this.loading.next(false);\r\n },\r\n complete: () => {\r\n this.loading.next(false);\r\n }\r\n });\r\n });\r\n }\r\n \r\n // Standard request without progress tracking\r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n ) as Observable<T>;\r\n }\r\n\r\n /**\r\n * Execute multiple HTTP requests in parallel\r\n * @param requests Array of HTTP request observables\r\n * @returns An observable that emits when all requests complete\r\n */\r\n batchRequests<T>(requests: Observable<T>[]): Observable<T[]> {\r\n this.loading.next(true);\r\n return forkJoin(requests).pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n \r\n /**\r\n * Download a file from the server\r\n * @param url The file URL\r\n * @param filename Optional filename to save as\r\n * @param options Additional request options\r\n */\r\n downloadFile(url: string, filename?: string, options?: {\r\n params?: HttpParams | Record<string, string | number | boolean | readonly (string | number | boolean)[]>,\r\n headers?: HttpHeaders | Record<string, string | string[]>,\r\n withCredentials?: boolean,\r\n timeoutMs?: number\r\n }): Observable<Blob> {\r\n this.loading.next(true);\r\n \r\n let request$ = this.http.get(url, {\r\n params: options?.params,\r\n headers: options?.headers,\r\n responseType: 'blob',\r\n withCredentials: options?.withCredentials\r\n });\r\n \r\n if (options?.timeoutMs) {\r\n request$ = request$.pipe(timeout(options.timeoutMs));\r\n }\r\n \r\n return request$.pipe(\r\n catchError(this.handleError.bind(this)),\r\n finalize(() => this.loading.next(false))\r\n );\r\n }\r\n\r\n /**\r\n * Create parameter string from an object\r\n * @param params Object containing parameters\r\n * @returns HttpParams object\r\n */\r\n createParams(params: Record<string, any>): HttpParams {\r\n let httpParams = new HttpParams();\r\n \r\n Object.keys(params).forEach(key => {\r\n const value = params[key];\r\n if (value !== undefined && value !== null) {\r\n httpParams = httpParams.append(key, value.toString());\r\n }\r\n });\r\n \r\n return httpParams;\r\n }\r\n\r\n /**\r\n * Standardized error handler for HTTP requests\r\n * @param error The HTTP error\r\n * @returns An observable that errors with the processed error object\r\n */\r\n private handleError(error: HttpErrorResponse) {\r\n console.error('An HTTP error occurred:', error);\r\n \r\n let errorMessage = 'An error occurred';\r\n let errorCode: string | undefined;\r\n \r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side error\r\n errorMessage = error.error.message;\r\n } else {\r\n // Server-side error\r\n errorCode = error.status.toString();\r\n \r\n switch (error.status) {\r\n case 400:\r\n errorMessage = error.error?.message || 'Bad request';\r\n break;\r\n case 401:\r\n errorMessage = 'Unauthorized';\r\n break;\r\n case 403:\r\n errorMessage = 'Access denied';\r\n break;\r\n case 404:\r\n errorMessage = 'Resource not found';\r\n break;\r\n case 408:\r\n errorMessage = 'Request timeout';\r\n break;\r\n case 500:\r\n errorMessage = 'Server error';\r\n break;\r\n case 503:\r\n errorMessage = 'Service unavailable';\r\n break;\r\n default:\r\n errorMessage = error.error?.message || `Error ${error.status}`;\r\n break;\r\n }\r\n }\r\n\r\n this.showError(errorMessage);\r\n return throwError(() => ({\r\n error,\r\n message: errorMessage,\r\n code: errorCode\r\n }));\r\n }\r\n\r\n /**\r\n * Display an error message using the message service\r\n * @param message Error message to display\r\n */\r\n private showError(message: string) {\r\n if (this.messageService) {\r\n this.messageService.add({\r\n severity: 'error',\r\n summary: 'Error',\r\n detail: message,\r\n life: 3000\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReferenceDataProviderService {\r\n\r\n private endpoints: Record<string, string> = {};\r\n\r\n // Method to set/update endpoints\r\n setEndpoints(endpoints: Record<string, string>) {\r\n this.endpoints = { ...this.endpoints, ...endpoints };\r\n }\r\n\r\n getReferenceEndpoint(entityName: string): string | null {\r\n console.log('getReferenceEndpoint', entityName, this.endpoints);\r\n let endpoint = this.endpoints[entityName];\r\n if (endpoint != null && endpoint.length > 0) {\r\n if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {\r\n return endpoint; // Absolute URL\r\n } else {\r\n // Relative URL, assume it's within the application's base context\r\n return endpoint;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { ReferenceDataProviderService } from './reference-data-provider.service';\r\n\r\nexport interface ReferenceDto {\r\n key: string;\r\n displayLabel: string;\r\n data?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityRegistryService {\r\n constructor(\r\n private httpUtility: HttpUtilityService,\r\n private dataProvider: ReferenceDataProviderService\r\n ) {}\r\n\r\n /**\r\n * Gets reference options for an entity, suitable for select/dropdown components\r\n * @param entityName The name of the entity (e.g., 'customers', 'departments')\r\n * @returns Observable of options array with label/value pairs\r\n */\r\n getEntityOptions(entityName: string): Observable<{ label: string; value: string; data?: any; }[]> {\r\n console.log('getEntityOptions', entityName);\r\n const url = this.dataProvider.getReferenceEndpoint(entityName);\r\n\r\n if (!url) {\r\n console.warn(`No endpoint configured for entity: ${entityName}`);\r\n return new Observable(subscriber => {\r\n subscriber.next([]);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n return this.httpUtility.get<ReferenceDto[]>(url, {\r\n retries: 1,\r\n timeoutMs: 10000,\r\n }).pipe(\r\n map((items) =>\r\n items?.map((item) => ({\r\n label: item.displayLabel,\r\n value: item.key,\r\n data: item.data,\r\n })) || []\r\n )\r\n );\r\n }\r\n}\r\n","import { HttpParams, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { HttpUtilityService } from './http-utility.service';\r\nimport { UtilsService } from './utils.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { EntityService } from './entity.service';\r\n\r\nexport abstract class BaseCrudService<T extends { uuid: string }> implements EntityService<T> {\r\n // Use the loading state from HttpUtilityService\r\n get loading$() {\r\n return this.httpUtility.loading$;\r\n }\r\n\r\n protected apiUrl: string;\r\n\r\n /**\r\n * Creates an instance of BaseCrudService.\r\n * @param httpUtility - Service for making HTTP requests\r\n * @param utilsService - Utility service for common operations\r\n * @param resourcePath - API resource path (e.g., 'customers', 'products')\r\n * @param backendBaseUrl - Base URL for the backend API\r\n * @param messageService - Optional service for showing messages\r\n */\r\n protected constructor(\r\n protected httpUtility: HttpUtilityService,\r\n protected utilsService: UtilsService,\r\n protected resourcePath: string,\r\n protected backendBaseUrl: string,\r\n protected messageService: MessageService | undefined\r\n ) {\r\n this.apiUrl = this.joinUrls(backendBaseUrl, resourcePath);\r\n }\r\n\r\n /**\r\n * Joins URL parts ensuring no double slashes\r\n */\r\n private joinUrls(...parts: string[]): string {\r\n return parts.map(part => part.replace(/^\\/+|\\/+$/g, '')).join('/');\r\n }\r\n\r\n getAll(pageRequest?: PageRequest): Observable<Page<T>> {\r\n if (pageRequest) {\r\n return this.httpUtility.post<Page<T>>(`${this.apiUrl}/page`, pageRequest);\r\n } else {\r\n return this.httpUtility.get<Page<T>>(this.apiUrl);\r\n }\r\n }\r\n\r\n getById(uuid: string): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.get<T>(`${this.apiUrl}/${uuid}`);\r\n }\r\n\r\n create(entity: Omit<T, 'uuid'>): Observable<T> {\r\n return this.httpUtility.post<T>(this.apiUrl, entity);\r\n }\r\n\r\n update(uuid: string, entity: Omit<T, 'uuid'>): Observable<T> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.put<T>(`${this.apiUrl}/${uuid}`, entity);\r\n }\r\n\r\n delete(uuid: string): Observable<void> {\r\n if (!this.utilsService.isValidUUID(uuid)) {\r\n this.utilsService.showError('Invalid UUID format', this.messageService);\r\n return throwError(() => new Error('Invalid UUID format'));\r\n }\r\n\r\n return this.httpUtility.delete<void>(`${this.apiUrl}/${uuid}`);\r\n }\r\n}\r\n","export enum ComponentContext {\r\n STANDALONE = 'STANDALONE',\r\n TABBED = 'TABBED',\r\n MODAL = 'MODAL',\r\n EMBEDDED = 'EMBEDDED'\r\n}\r\n","export enum TabbedFormType {\r\n STANDARD = 'STANDARD',\r\n LIST = 'LIST'\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\n\r\n/**\r\n * Base component for all page components in the application.\r\n * Provides common functionality like loading state and message display.\r\n */\r\n@Directive()\r\nexport abstract class BasePageComponent {\r\n protected loading: boolean = false;\r\n \r\n constructor(\r\n protected utilsService: UtilsService,\r\n protected notificationService: NotificationService\r\n ) {}\r\n\r\n /**\r\n * Display an error message to the user\r\n * @param detail The error message to display\r\n */\r\n protected showError(detail: string): void {\r\n this.notificationService.showError(detail);\r\n }\r\n\r\n /**\r\n * Display a success message to the user\r\n * @param detail The success message to display\r\n */\r\n protected showSuccess(detail: string): void {\r\n this.notificationService.showSuccess(detail);\r\n }\r\n}\r\n","export const AppMessages = {\r\n COMMON: {\r\n ERROR: {\r\n GENERAL: 'An error occurred',\r\n INVALID_INPUT: 'Invalid input provided',\r\n REQUIRED_FIELD: 'This field is required'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully',\r\n UPDATE: 'updated successfully',\r\n DELETE: 'deleted successfully'\r\n }\r\n },\r\n FORM: {\r\n ERROR: {\r\n INIT: 'Failed to initialize form',\r\n SAVE: 'Failed to save',\r\n LOAD: 'Failed to load',\r\n VALIDATION: 'Please fill in all required fields correctly'\r\n },\r\n SUCCESS: {\r\n SAVE: 'saved successfully'\r\n }\r\n },\r\n LIST: {\r\n ERROR: {\r\n LOAD: 'Failed to load',\r\n DELETE: 'Failed to delete',\r\n NAVIGATION: 'Navigation failed',\r\n INVALID_ID: 'Cannot perform action without ID'\r\n },\r\n SUCCESS: {\r\n DELETE: 'deleted successfully'\r\n }\r\n }\r\n} as const;\r\n","export class AppConstants {\r\n static readonly FORM = {\r\n MODE: 'mode',\r\n UUID: 'uuid',\r\n NEW: 'new'\r\n } as const;\r\n\r\n static readonly PAGE_MODE = {\r\n CREATE: 'create',\r\n EDIT: 'edit',\r\n VIEW: 'view'\r\n } as const;\r\n}\r\n\r\nexport type PageMode = typeof AppConstants.PAGE_MODE[keyof typeof AppConstants.PAGE_MODE];\r\n","import { Component, OnInit, Injectable, Input } from '@angular/core';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, filter, take } from 'rxjs';\r\nimport { FormlyConfigService } from '../services/formly-config.service';\r\nimport { EntityService } from '../services/entity.service';\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n form = new FormGroup({});\r\n fields: FormlyFieldConfig[] = [];\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData: any = {};\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n @Input() context: ComponentContext = ComponentContext.STANDALONE;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected formlyConfigService: FormlyConfigService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n this.form.valueChanges.subscribe(() => {\r\n console.log('[BaseFormComponent] Form value changed:', this.form.value);\r\n this.currentFormData = { ...this.form.value };\r\n this.hasChanges = this.hasFormChanges(this.currentFormData);\r\n });\r\n\r\n // Use queryParams instead of params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n private initializeFormData() {\r\n console.log('[BaseFormComponent] Initializing form data');\r\n console.log('[BaseFormComponent] Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode, using defaults');\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state,\r\n ...this.route.snapshot.data\r\n };\r\n console.log('[BaseFormComponent] Combined state:', state);\r\n console.log('[BaseFormComponent] Final state being used:', state);\r\n \r\n if (state && 'formData' in state) {\r\n console.log('[BaseFormComponent] Found form data in state:', state['formData']);\r\n this.patchFormData(state['formData']);\r\n } else {\r\n console.log('[BaseFormComponent] No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n this.route.queryParams.pipe(take(1)).subscribe(params => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n this.loadEntity(uuid);\r\n });\r\n }\r\n\r\n private initializeForm(params: any) {\r\n console.log('[BaseFormComponent] Initializing form with params:', params);\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n // Check for context in router state\r\n const state = window.history.state;\r\n if (state?.context) {\r\n this.context = state.context;\r\n console.log('[BaseFormComponent] Context set from router state:', this.context);\r\n }\r\n\r\n this.initializeFormData();\r\n }\r\n\r\n protected patchFormData(data: any) {\r\n console.log('[BaseFormComponent] Patching form data:', data);\r\n if (data) {\r\n if (!this.fields || this.fields.length === 0) {\r\n console.warn('[BaseFormComponent] Fields not initialized yet, reinitializing');\r\n this.fields = this.getFormlyFieldConfig();\r\n }\r\n this.currentFormData = { ...data };\r\n this.originalFormData = data;\r\n this.isNew = false;\r\n \r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n console.log('[BaseFormComponent] Fields available:', this.fields);\r\n \r\n setTimeout(() => {\r\n if (!this.form.valid) {\r\n console.warn('[BaseFormComponent] Form validation issues after data patch');\r\n }\r\n console.log('[BaseFormComponent] Form state after sync:', {\r\n valid: this.form.valid,\r\n values: this.form.value,\r\n currentData: this.currentFormData\r\n });\r\n }, 100);\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n } else if (this.isValidPageMode(routeMode)) {\r\n this.mode = routeMode;\r\n } else {\r\n throw new Error(`Invalid page mode: ${routeMode}`);\r\n }\r\n }\r\n\r\n private setupFormState() {\r\n console.log('[BaseFormComponent] Setting up form state, mode:', this.mode);\r\n this.fields = this.getFormlyFieldConfig();\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseFormComponent] Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.VIEW) {\r\n console.log('[BaseFormComponent] View mode setup');\r\n this.form.disable();\r\n }\r\n }\r\n\r\n protected getFormlyFieldConfig(): FormlyFieldConfig[] {\r\n return this.formlyConfigService.getFormConfig(\r\n this.getJsonFields(),\r\n this.mode,\r\n this.getDropdownOptions()\r\n );\r\n }\r\n\r\n protected onSubmitRoute(): string[] {\r\n return [`/${this.getEntityName().toLowerCase()}s`];\r\n }\r\n\r\n protected getEntityOperations(): {\r\n create: (data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n update: (uuid: string, data: Omit<T, typeof AppConstants.FORM.UUID>) => Observable<T>;\r\n getById: (uuid: string) => Observable<T>;\r\n } {\r\n const entityService = this.getEntityService();\r\n return {\r\n create: (data) => entityService.create(data),\r\n update: (uuid, data) => entityService.update(uuid, { ...data, uuid } as T),\r\n getById: (uuid) => entityService.getById(uuid)\r\n };\r\n }\r\n\r\n protected onSubmit() {\r\n console.log('[BaseFormComponent] Form submission:', {\r\n formValid: this.form.valid,\r\n formData: this.currentFormData,\r\n formState: this.form.value\r\n });\r\n\r\n if (!this.currentFormData || Object.keys(this.currentFormData).length === 0) {\r\n this.notificationService.showError('No data to save');\r\n return;\r\n }\r\n\r\n if (this.form.valid) {\r\n if (this.isNew) {\r\n console.log('[BaseFormComponent] Saving new entity');\r\n this.saveEntity();\r\n return;\r\n }\r\n\r\n const hasChanges = this.hasFormChanges(this.currentFormData);\r\n console.log('[BaseFormComponent] Change detection:', {\r\n hasChanges,\r\n currentData: this.currentFormData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n if (!hasChanges) {\r\n this.notificationService.showSuccess('No changes to save');\r\n return;\r\n }\r\n\r\n console.log('[BaseFormComponent] Saving changes');\r\n this.saveEntity();\r\n } else {\r\n console.warn('[BaseFormComponent] Form validation failed:', this.form.errors);\r\n this.notificationService.showError('Please check form errors');\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: any): boolean {\r\n if (!this.originalFormData || this.isNew) {\r\n return true;\r\n }\r\n\r\n console.log('[BaseFormComponent] Checking for changes:', {\r\n currentData,\r\n originalData: this.originalFormData\r\n });\r\n\r\n const hasChanges = Object.keys(currentData).some(key => {\r\n const currentValue = currentData[key];\r\n const originalValue = (this.originalFormData as any)[key];\r\n const changed = currentValue !== originalValue;\r\n \r\n if (changed) {\r\n console.log(`[BaseFormComponent] Field '${key}' changed:`, {\r\n from: originalValue,\r\n to: currentValue\r\n });\r\n }\r\n \r\n return changed;\r\n });\r\n\r\n console.log('[BaseFormComponent] Changes detected:', hasChanges);\r\n return hasChanges;\r\n }\r\n\r\n protected saveEntity() {\r\n this.loading = true;\r\n const formData = this.currentFormData as Omit<T, typeof AppConstants.FORM.UUID>;\r\n const entityName = this.getEntityName();\r\n const entityOperations = this.getEntityOperations();\r\n\r\n const request$ = this.isNew\r\n ? entityOperations.create(formData)\r\n : entityOperations.update(this.originalFormData!.uuid, formData);\r\n\r\n request$.subscribe({\r\n next: () => {\r\n this.loading = false;\r\n this.notificationService.showSuccess(`${entityName} ${AppMessages.FORM.SUCCESS.SAVE}`);\r\n this.router.navigate(this.onSubmitRoute());\r\n },\r\n error: (error: any) => {\r\n const errorMessage = error.error?.message || `${AppMessages.FORM.ERROR.SAVE} ${entityName}`;\r\n this.showError(errorMessage);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityOperations().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n console.log('[BaseFormComponent] Original data loaded:', this.originalFormData);\r\n console.log('[BaseFormComponent] Form data updated:', this.currentFormData);\r\n },\r\n error: () => {\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected abstract getEntityService(): EntityService<T>;\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n protected getDropdownOptions(): Record<string, any> {\r\n return {};\r\n }\r\n\r\n protected abstract getJsonFields(): any;\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Checks if the component is running in a specific context\r\n * @param contextType The context type to check against\r\n */\r\n protected isInContext(contextType: ComponentContext): boolean {\r\n return this.context === contextType;\r\n }\r\n}\r\n","import { OnInit, OnDestroy, ViewChild, Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Table, TableLazyLoadEvent } from 'primeng/table';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { Subscription, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Page } from '../models/pagination/page.interface';\r\nimport { PageRequest } from '../models/pagination/page-request.interface';\r\nimport { FilterCriteria, FilterOperator } from '../models/pagination/filter-criteria.interface';\r\nimport { SortCriteria } from '../models/pagination/sort-criteria.interface';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { AppConstants } from '../constants/app.constants';\r\n\r\n/**\r\n * Base component for all list page components in the application.\r\n * Provides common functionality for list operations like loading data,\r\n * pagination, sorting, and CRUD operations.\r\n */\r\n@Directive()\r\nexport abstract class BaseListPageComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('dt') table!: Table;\r\n items: T[] = [];\r\n actionLoading: boolean = false;\r\n rows: number = 10;\r\n totalRecords: number = 0;\r\n filters: FilterCriteria[] = [];\r\n protected subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService,\r\n protected confirmationService: ConfirmationService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n /**\r\n * Initialize the component, subscribe to loading state if available,\r\n * and load initial data.\r\n */\r\n ngOnInit() {\r\n // Subscribe to loading state if available\r\n const loadingObservable = this.getLoadingObservable();\r\n if (loadingObservable) {\r\n this.subscriptions.push(\r\n loadingObservable.subscribe(\r\n isLoading => this.loading = isLoading\r\n )\r\n );\r\n }\r\n this.loadData();\r\n }\r\n\r\n /**\r\n * Clean up any subscriptions when the component is destroyed\r\n */\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n /**\r\n * Handle search event from the UI\r\n * @param event The search event\r\n */\r\n onSearch(event: Event): void {\r\n const element = event.target as HTMLInputElement;\r\n if (this.table) {\r\n this.table.filterGlobal(element.value, 'contains');\r\n }\r\n }\r\n\r\n /**\r\n * Load data with pagination and sorting\r\n * @param event The lazy load event from PrimeNG table\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filter format to backend format\r\n * @param filters The PrimeNG filters object\r\n * @returns Converted filters object for backend\r\n */\r\n /**\r\n * Convert PrimeNG filters to backend format with proper operator mapping\r\n */\r\n protected convertFilters(filters: { [key: string]: any }): FilterCriteria[] {\r\n const backendFilters: FilterCriteria[] = [];\r\n if (!filters) return backendFilters;\r\n\r\n console.log('Raw PrimeNG filters:', filters);\r\n\r\n Object.entries(filters).forEach(([key, filterMeta]) => {\r\n console.log(`Processing filter for ${key}:`, filterMeta);\r\n\r\n // Handle array of filter metadata (multiple filters for same column)\r\n if (Array.isArray(filterMeta)) {\r\n const validFilters = filterMeta\r\n .filter(meta => meta.value !== null && meta.value !== undefined && meta.value !== '')\r\n .map(meta => ({\r\n field: key,\r\n value: this.transformFilterValue(String(meta.value)),\r\n operator: this.transformOperator(meta.matchMode)\r\n }));\r\n backendFilters.push(...validFilters);\r\n }\r\n // Handle single filter metadata\r\n else if (filterMeta?.value !== null && filterMeta?.value !== undefined && filterMeta?.value !== '') {\r\n backendFilters.push({\r\n field: key,\r\n value: this.transformFilterValue(String(filterMeta.value)),\r\n operator: this.transformOperator(filterMeta.matchMode)\r\n });\r\n }\r\n });\r\n\r\n console.log('Converted filters:', backendFilters);\r\n return backendFilters;\r\n }\r\n\r\n /**\r\n * Transform filter value based on backend requirements - all values must be strings\r\n */\r\n protected transformFilterValue(value: any): string {\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n if (typeof value === 'string') {\r\n return value.trim();\r\n }\r\n if (Array.isArray(value)) {\r\n return value.join(',');\r\n }\r\n if (value instanceof Date) {\r\n return value.toISOString();\r\n }\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return value.toString();\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Map PrimeNG operators to backend operators\r\n */\r\n protected transformOperator(operator: string): FilterOperator {\r\n const operatorMap: { [key: string]: FilterOperator } = {\r\n 'contains': 'CONTAINS',\r\n 'startsWith': 'STARTS_WITH',\r\n 'endsWith': 'ENDS_WITH',\r\n 'equals': 'EQUALS',\r\n 'notEquals': 'NOT_EQUALS',\r\n 'gt': 'GREATER_THAN',\r\n 'gte': 'GREATER_THAN_EQUALS',\r\n 'lt': 'LESS_THAN',\r\n 'lte': 'LESS_THAN_EQUALS'\r\n };\r\n return operatorMap[operator] || 'EQUALS'; // Default to EQUALS if operator not found\r\n }\r\n\r\n loadData(event?: TableLazyLoadEvent) {\r\n console.log('LoadData called with event:', event);\r\n this.loading = true;\r\n\r\n // Create page request with default values\r\n const pageRequest: PageRequest = {\r\n page: 0,\r\n size: 10,\r\n sorts: [],\r\n filters: []\r\n };\r\n\r\n if (event) {\r\n // Handle pagination\r\n if (event.first !== undefined && event.rows) {\r\n pageRequest.page = Math.floor(event.first / event.rows);\r\n pageRequest.size = event.rows;\r\n }\r\n\r\n // Handle sorting\r\n if (event.sortField) {\r\n pageRequest.sorts = [{\r\n field: Array.isArray(event.sortField) ? event.sortField[0] : event.sortField,\r\n direction: event.sortOrder === 1 ? 'asc' : 'desc'\r\n }];\r\n }\r\n\r\n // Handle filtering\r\n if (event.filters) {\r\n const convertedFilters = this.convertFilters(event.filters);\r\n console.log('Converted filters:', convertedFilters);\r\n pageRequest.filters = convertedFilters;\r\n }\r\n }\r\n\r\n console.log('Sending page request:', pageRequest);\r\n\r\n this.getEntityService().getAll(pageRequest)\r\n .pipe(finalize(() => this.loading = false))\r\n .subscribe({\r\n next: (response: Page<T>) => {\r\n this.items = [...response.content];\r\n this.totalRecords = response.page.totalElements;\r\n },\r\n error: (error) => {\r\n console.error('Failed to load data:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.LOAD} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Navigate to create a new entity\r\n */\r\n public onCreate(): void {\r\n // Navigate to the form route and pass the mode as a query parameter\r\n this.navigateTo([this.getFormRoute()], { [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.CREATE });\r\n }\r\n\r\n /**\r\n * Navigate to view an entity\r\n * @param item The entity to view\r\n */\r\n onView(item: T) {\r\n if (!this.validateItemUuid(item, 'view')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.VIEW, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n\r\n /**\r\n * Navigate to edit an entity\r\n * @param item The entity to edit\r\n */\r\n onEdit(item: T) {\r\n if (!this.validateItemUuid(item, 'edit')) return;\r\n // Correct: Navigate to form route, pass mode and uuid as query params\r\n this.navigateTo([this.getFormRoute()], { \r\n [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.EDIT, \r\n [AppConstants.FORM.UUID]: item.uuid \r\n });\r\n }\r\n \r\n /**\r\n * Navigate to a route with error handling\r\n * @param path The route path\r\n * @param matrixParams Optional matrix parameters\r\n */\r\n protected navigateTo(path: any[], matrixParams?: { [key: string]: any }): void {\r\n this.router.navigate(path, { queryParams: matrixParams })\r\n .catch(error => {\r\n console.error('Navigation error:', error);\r\n this.showError(AppMessages.LIST.ERROR.NAVIGATION);\r\n });\r\n }\r\n\r\n /**\r\n * Delete an entity with confirmation\r\n * @param item The entity to delete\r\n */\r\n onDelete(item: T) {\r\n if (!this.validateItemUuid(item, 'delete')) return;\r\n\r\n this.confirmationService.confirm({\r\n message: `Are you sure you want to delete this ${this.getEntityName()}?`,\r\n header: 'Confirm Deletion',\r\n icon: 'pi pi-exclamation-triangle',\r\n accept: () => {\r\n this.actionLoading = true;\r\n this.getEntityService().delete(item.uuid)\r\n .pipe(finalize(() => this.actionLoading = false))\r\n .subscribe({\r\n next: () => {\r\n this.showSuccess(`${this.getEntityName()} ${AppMessages.LIST.SUCCESS.DELETE}`);\r\n this.loadData();\r\n },\r\n error: (error) => {\r\n console.error('Delete failed:', error);\r\n this.showError(`${AppMessages.LIST.ERROR.DELETE} ${this.getEntityName()}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Validate that an entity has a UUID\r\n * @param item The entity to validate\r\n * @param action The action being performed\r\n * @returns true if valid, false otherwise\r\n */\r\n protected validateItemUuid(item: T, action: string): boolean {\r\n if (!item?.uuid) {\r\n this.showError(`${AppMessages.LIST.ERROR.INVALID_ID} ${action}`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Get an observable for loading state from the entity service\r\n * @returns An observable of loading state if available, null otherwise\r\n */\r\n protected getLoadingObservable(): Observable<boolean> | null {\r\n const service = this.getEntityService() as any;\r\n return service.loading$ || null;\r\n }\r\n\r\n /**\r\n * Get the entity service for data operations\r\n */\r\n protected abstract getEntityService(): { \r\n getAll: (pageRequest?: PageRequest) => Observable<Page<T>>;\r\n delete: (uuid: string) => Observable<any>;\r\n };\r\n\r\n /**\r\n * Get the entity name for display in messages\r\n */\r\n protected abstract getEntityName(): string;\r\n\r\n /**\r\n * Get the route to the entity form\r\n */\r\n protected abstract getFormRoute(): string;\r\n}\r\n","import { Component, OnInit, Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ComponentContext } from '../enums/component-context.enum';\r\nimport { BasePageComponent } from './base-page.component';\r\nimport { UtilsService } from '../services/utils.service';\r\nimport { NotificationService } from '../services/notification.service';\r\nimport { AppMessages } from '../constants/app.messages';\r\nimport { AppConstants, PageMode } from '../constants/app.constants';\r\nimport { Observable, take, map } from 'rxjs';\r\nimport { EntityService } from '../services/entity.service';\r\nimport { TabbedFormType } from '../enums/tabbed-form-type.enum';\r\n\r\nexport interface TabConfig {\r\n value: string;\r\n title: string;\r\n isParentModel?: boolean;\r\n}\r\n\r\n@Injectable()\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseTabbedFormComponent<T extends { uuid: string }>\r\n extends BasePageComponent implements OnInit {\r\n\r\n // Tab specific properties\r\n activeTab: string = '';\r\n tabs: TabConfig[] = [];\r\n formType = '';\r\n\r\n // Form properties\r\n isNew = true;\r\n mode: PageMode = AppConstants.PAGE_MODE.CREATE;\r\n currentFormData!: T;\r\n protected originalFormData: T | null = null;\r\n protected hasChanges: boolean = false;\r\n\r\n // debug method removed\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected override notificationService: NotificationService,\r\n protected override utilsService: UtilsService\r\n ) {\r\n super(utilsService, notificationService);\r\n }\r\n\r\n ngOnInit() {\r\n try {\r\n // Initialize tabs\r\n this.tabs = this.getTabs();\r\n this.activeTab = this.tabs[0]?.value || '';\r\n\r\n // Initialize form using query params\r\n this.route.queryParams.pipe(take(1)).subscribe({\r\n next: params => this.initializeForm(params),\r\n error: error => {\r\n console.error('Error initializing form:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error in ngOnInit:', error);\r\n this.showError(AppMessages.FORM.ERROR.INIT);\r\n }\r\n }\r\n\r\n\r\n private initializeFormData() {\r\n console.log('[BaseTabbedFormComponent] Initializing form data');\r\n console.log('[BaseTabbedFormComponent] Current mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseTabbedFormComponent] Create mode, using defaults');\r\n this.loadDefaultTab();\r\n return;\r\n }\r\n\r\n const state = {\r\n ...this.router.getCurrentNavigation()?.extras?.state,\r\n ...window.history.state\r\n } as { formData?: T };\r\n\r\n console.log('[BaseTabbedFormComponent] Combined state:', state);\r\n\r\n if (state?.formData) {\r\n console.log('[BaseTabbedFormComponent] Found form data in state:', state.formData);\r\n this.patchFormData(state.formData);\r\n this.loadDefaultTab();\r\n } else {\r\n console.log('[BaseTabbedFormComponent] No form data, loading from UUID');\r\n this.loadFromUuid();\r\n }\r\n }\r\n\r\n private loadFromUuid() {\r\n // Flatten nested subscriptions using RxJS operators\r\n this.route.queryParams.pipe(\r\n take(1),\r\n map((params: { [key: string]: string }) => {\r\n const uuid = params[AppConstants.FORM.UUID];\r\n if (!uuid) {\r\n throw new Error(`UUID is required for ${this.mode} mode when no formData is provided`);\r\n }\r\n return uuid;\r\n })\r\n ).subscribe({\r\n next: (uuid: string) => this.loadEntity(uuid),\r\n error: (error: Error) => {\r\n console.error('Error loading UUID:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} UUID`);\r\n }\r\n });\r\n }\r\n\r\nprivate initializeForm(params: any) {\r\n const routeMode = params[AppConstants.FORM.MODE];\r\n \r\n try {\r\n this.initializeFormMode(routeMode);\r\n this.setupFormState();\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n this.initializeListForm(params);\r\n } else {\r\n // Existing logic for STANDARD form type\r\n this.initializeFormData();\r\n }\r\n } catch (error) {\r\n console.error('Error initializing form:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.INIT}: ${error instanceof Error ? error.message : 'Unknown error'}`);\r\n }\r\n }\r\n\r\n protected patchFormData(data: T | null) {\r\n if (data) {\r\n this.currentFormData = { ...data };\r\n this.originalFormData = { ...data }; // Create a deep copy to avoid reference issues\r\n this.isNew = false;\r\n }\r\n }\r\n\r\n private initializeFormMode(routeMode: string | undefined) {\r\n if (!routeMode) {\r\n this.mode = AppConstants.PAGE_MODE.CREATE;\r\n return;\r\n }\r\n\r\n // Validate mode more explicitly\r\n if (!this.isValidPageMode(routeMode)) {\r\n const validModes = Object.values(AppConstants.PAGE_MODE).join(', ');\r\n throw new Error(`Invalid page mode: ${routeMode}. Valid modes are: ${validModes}`);\r\n }\r\n \r\n this.mode = routeMode;\r\n }\r\n\r\n private setupFormState() {\r\n console.log('[BaseTabbedFormComponent] Setting up form state, mode:', this.mode);\r\n\r\n if (this.mode === AppConstants.PAGE_MODE.CREATE) {\r\n console.log('[BaseTabbedFormComponent] Create mode setup');\r\n this.isNew = true;\r\n this.loading = false;\r\n this.originalFormData = null;\r\n }\r\n }\r\n\r\n protected loadEntity(uuid: string) {\r\n this.loading = true;\r\n this.isNew = false;\r\n const entityName = this.getEntityName();\r\n\r\n this.getEntityService().getById(uuid).subscribe({\r\n next: (data: T) => {\r\n this.originalFormData = data;\r\n this.currentFormData = { ...data };\r\n this.loading = false;\r\n console.log('[BaseTabbedFormComponent] Original data loaded:', this.originalFormData);\r\n console.log('[BaseTabbedFormComponent] Form data updated:', this.currentFormData);\r\n this.loadDefaultTab();\r\n },\r\n error: (error: Error) => {\r\n console.log('[BaseTabbedFormComponent] Error loading entity:', error);\r\n this.showError(`${AppMessages.FORM.ERROR.LOAD} ${entityName}`);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n protected findTabByValue(value: string): TabConfig | undefined {\r\n return this.tabs.find(tab => tab.value === value);\r\n }\r\n\r\n protected loadDefaultTab() {\r\n console.log('[BaseTabbedFormComponent] Loading default tab');\r\n const defaultTab = this.tabs.find(tab => tab.isParentModel) || this.tabs[0];\r\n\r\n if (!defaultTab) return;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === defaultTab.value);\r\n\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else if (this.formType === TabbedFormType.STANDARD) {\r\n // For STANDARD type, just navigate to the tab route with the parent form data\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)\r\n state: {\r\n formData: defaultTab.isParentModel ? this.currentFormData : null,\r\n parentFormData: this.currentFormData, // Pass the parent form data for child forms\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n // Default behavior for other form types\r\n this.router.navigate([defaultTab.value], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve', // Keep existing query params (mode & uuid)\r\n state: {\r\n formData: this.currentFormData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected getTabFormData(tabConfig: TabConfig): T | null {\r\n if (!tabConfig) return null;\r\n\r\n if (tabConfig.isParentModel) {\r\n return this.currentFormData;\r\n }\r\n\r\n const fieldName = this.utilsService.toCamelCase(tabConfig.value);\r\n // Use type assertion since we know this is a valid field\r\n return (this.currentFormData as any)[fieldName] as T;\r\n }\r\n\r\nprivate initializeListForm(params: any) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList;\r\n \r\n if (!formDataList?.length) {\r\n throw new Error('formDataList is required in state for LIST type');\r\n }\r\n \r\n this.tabs = this.createTabsFromFormDataList(formDataList);\r\n \r\n // Select the first tab by default\r\n this.activeTab = this.tabs[0].value;\r\n \r\n // Set current form data from the first item in the list\r\n this.currentFormData = formDataList[0];\r\n this.originalFormData = formDataList[0];\r\n \r\n // Navigate to the first tab\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: this.currentFormData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n\r\n private createTabsFromFormDataList(formDataList: T[]): TabConfig[] {\r\n return formDataList.map((data: T) => ({\r\n value: data.uuid,\r\n title: this.getTabTitle(data),\r\n isParentModel: true\r\n }));\r\n }\r\n\r\n protected abstract getTabTitle(data: T): string;\r\n\r\n protected onTabChange(value: string | number): void {\r\n const tabConfig = this.findTabByValue(value as string);\r\n if (!tabConfig) {\r\n console.warn(`Tab not found: ${value}`);\r\n return;\r\n }\r\n\r\n this.activeTab = tabConfig.value;\r\n\r\n if (this.formType === TabbedFormType.LIST) {\r\n const state = this.router.getCurrentNavigation()?.extras?.state || window.history.state;\r\n const formDataList = state?.formDataList || [];\r\n const selectedData = formDataList.find((data: T) => data.uuid === value);\r\n\r\n // Update current form data\r\n this.currentFormData = selectedData;\r\n this.originalFormData = selectedData;\r\n\r\n this.router.navigate([value], {\r\n relativeTo: this.route,\r\n state: {\r\n formData: selectedData,\r\n formDataList: formDataList,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else if (this.formType === TabbedFormType.STANDARD) {\r\n // For STANDARD type, navigate to the tab route with the parent form data\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n state: {\r\n formData: tabConfig.isParentModel ? this.currentFormData : null,\r\n parentFormData: this.currentFormData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n } else {\r\n // Default behavior for other form types\r\n const formData = this.getTabFormData(tabConfig);\r\n this.router.navigate([this.activeTab], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n state: {\r\n formData,\r\n context: ComponentContext.TABBED\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected hasFormChanges(currentData: T): boolean {\r\n // For new forms or no original data, consider it changed\r\n if (this.isNew || !this.originalFormData) {\r\n return true;\r\n }\r\n\r\n // Deep comparison of objects\r\n return !this.isEqual(currentData, this.originalFormData);\r\n }\r\n\r\n private isEqual<V extends Record<string, any>>(obj1: V, obj2: V): boolean {\r\n if (obj1 === obj2) return true;\r\n if (typeof obj1 !== 'object' || obj1 === null || \r\n typeof obj2 !== 'object' || obj2 === null) return false;\r\n\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n\r\n if (keys1.length !== keys2.length) return false;\r\n\r\n return keys1.every(key => \r\n Object.prototype.hasOwnProperty.call(obj2, key) && \r\n this.isEqual(obj1[key], obj2[key])\r\n );\r\n }\r\n\r\n private isValidPageMode(mode: string): mode is PageMode {\r\n return Object.values(AppConstants.PAGE_MODE).includes(mode as PageMode);\r\n }\r\n\r\n // Abstract methods that must be implemented by child classes\r\n protected abstract getTabs(): TabConfig[];\r\n protected abstract getEntityService(): EntityService<T>;\r\n protected abstract getEntityName(): string;\r\n // getTabTitle method removed\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\n\r\ntype DateFormat = 'default' | 'short' | 'medium';\r\n\r\n@Pipe({\r\n name: 'indianDate',\r\n standalone: true\r\n})\r\nexport class IndianDatePipe implements PipeTransform {\r\n constructor(private datePipe: DatePipe) {}\r\n\r\n transform(value: string | null, format: DateFormat = 'default'): string | null {\r\n if (!value) return null;\r\n\r\n // First validate dd-MM-yyyy format\r\n const dateRegex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\\d{4}$/;\r\n if (!dateRegex.test(value)) {\r\n throw new Error(`Invalid date format: ${value}. Expected format: dd-MM-yyyy`);\r\n }\r\n\r\n // Validate real date\r\n const [day, month, year] = value.split('-').map(Number);\r\n const date = new Date(year, month - 1, day);\r\n if (\r\n date.getFullYear() !== year ||\r\n date.getMonth() !== month - 1 ||\r\n date.getDate() !== day\r\n ) {\r\n throw new Error(`Invalid date: ${value}`);\r\n }\r\n\r\n // Apply requested format\r\n switch (format) {\r\n case 'short':\r\n // Pad with leading zeros for consistent format\r\n const paddedDay = day.toString().padStart(2, '0');\r\n const paddedMonth = month.toString().padStart(2, '0');\r\n return `${paddedDay}-${paddedMonth}-${year}`; // 10-03-2025\r\n case 'medium':\r\n return this.datePipe.transform(date, 'dd MMM yyyy'); // 10 Jan 2019\r\n default:\r\n return value; // original dd-MM-yyyy\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'formly-field-text-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputTextModule\r\n ],\r\n template: `\r\n <input pInputText\r\n [type]=\"props['type'] || 'text'\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [attr.aria-label]=\"props['label'] || props['placeholder'] || ''\"\r\n class=\"w-full\"/>\r\n `\r\n})\r\nexport class TextInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n type: 'text',\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { Observable, of, isObservable } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any; // For additional properties\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-select',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n SelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-select\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [virtualScroll]=\"false\"\r\n [showClear]=\"false\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </ng-container>\r\n `\r\n})\r\nexport class SelectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n showClear: false,\r\n filter: false,\r\n virtualScroll: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule, FieldType } from '@ngx-formly/core';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface RadioOption {\r\n value: any;\r\n label: string;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-radio',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n RadioButtonModule\r\n ],\r\n template: `\r\n <div class=\"flex flex-column gap-1\">\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <div *ngFor=\"let option of options; let i = index\" class=\"flex align-items-center gap-2\">\r\n <p-radioButton\r\n [name]=\"field.name || ''\"\r\n [value]=\"option.value\"\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [size]=\"'small'\"\r\n [inputId]=\"field.key + '_' + i\">\r\n </p-radioButton>\r\n <label [for]=\"field.key + '_' + i\" class=\"p-radio-label cursor-pointer\">\r\n {{option.label}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </div>\r\n `\r\n})\r\nexport class RadioType extends FieldType {\r\n get options$(): Observable<RadioOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\n\r\n@Component({\r\n selector: 'formly-field-numeric-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n InputNumberModule\r\n ],\r\n template: `\r\n <p-inputNumber\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [min]=\"props['min'] || 0\"\r\n [max]=\"props['max']\"\r\n [minFractionDigits]=\"props['minFractionDigits'] || 0\"\r\n [maxFractionDigits]=\"props['maxFractionDigits'] || 0\"\r\n [prefix]=\"props['prefix'] || ''\"\r\n [suffix]=\"props['suffix'] || ''\"\r\n [useGrouping]=\"props['useGrouping'] ?? true\"\r\n [showButtons]=\"true\"\r\n class=\"w-full\">\r\n </p-inputNumber>\r\n `\r\n})\r\nexport class NumericInputType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n min: undefined,\r\n max: undefined,\r\n minFractionDigits: 0,\r\n maxFractionDigits: 0,\r\n prefix: '',\r\n suffix: '',\r\n useGrouping: true\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { Observable, isObservable, of } from 'rxjs';\r\n\r\ninterface SelectOption {\r\n value: any;\r\n label: string;\r\n [key: string]: any;\r\n}\r\n\r\n@Component({\r\n selector: 'formly-field-multiselect',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n MultiSelectModule\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"options$ | async as options\">\r\n <p-multiSelect\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [options]=\"options\"\r\n [optionLabel]=\"props['optionLabel'] || 'label'\"\r\n [optionValue]=\"props['optionValue'] || 'value'\"\r\n [placeholder]=\"props['placeholder'] || 'Select'\"\r\n [filter]=\"props['filter'] || true\"\r\n [filterBy]=\"props['filterBy'] || 'label'\"\r\n [maxSelectedLabels]=\"props['maxSelectedLabels'] || 2\"\r\n [showToggleAll]=\"props['showToggleAll'] || true\"\r\n [virtualScroll]=\"props['virtualScroll'] || false\"\r\n [display]=\"props['display'] || 'chip'\"\r\n styleClass=\"w-full\">\r\n </p-multiSelect>\r\n </ng-container>\r\n `\r\n})\r\nexport class MultiselectType extends FieldType {\r\n get options$(): Observable<SelectOption[]> {\r\n const options = this.props['options'];\r\n return isObservable(options) ? options : of(options || []);\r\n }\r\n\r\n override defaultOptions = {\r\n props: {\r\n options: [] as SelectOption[],\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n placeholder: 'Select',\r\n filter: false,\r\n maxSelectedLabels: 3,\r\n showToggleAll: true,\r\n virtualScroll: false\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'formly-field-date',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n DatePickerModule\r\n ],\r\n template: `\r\n <p-datepicker\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [showIcon]=\"true\"\r\n [dateFormat]=\"props['dateFormat'] || 'dd-mm-yy'\"\r\n [showTime]=\"props['showTime'] || false\"\r\n [touchUI]=\"props['touchUI'] || false\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n [minDate]=\"props['minDate']\"\r\n [maxDate]=\"props['maxDate']\"\r\n [showOnFocus]=\"false\"\r\n [todayButtonStyleClass]=\"'p-button-secondary'\"\r\n [clearButtonStyleClass]=\"'p-button-secondary'\"\r\n styleClass=\"w-full\"\r\n (onSelect)=\"onDateSelect($event)\"\r\n (onInput)=\"onDateInput($event)\">\r\n </p-datepicker>\r\n `\r\n})\r\nexport class DateType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n dateFormat: 'dd-mm-yy',\r\n showTime: false,\r\n touchUI: false,\r\n placeholder: '',\r\n showButtonBar: true,\r\n }\r\n };\r\n\r\n onDateSelect(event: Date): void {\r\n this.formatAndSetDate(event);\r\n }\r\n\r\n onDateInput(event: any): void {\r\n const inputValue = event.target.value.trim();\r\n if (this.isValidDateInput(inputValue, this.props['dateFormat'] || 'dd-mm-yy')) {\r\n const parsedDate = this.parseDate(inputValue, this.props['dateFormat'] || 'dd-mm-yy');\r\n if (parsedDate) {\r\n this.formatAndSetDate(parsedDate);\r\n }\r\n } else {\r\n this.formControl?.setErrors({ invalidDate: true });\r\n }\r\n }\r\n\r\n private formatAndSetDate(date: Date): void {\r\n if (this.formControl) {\r\n const formattedDate = formatDate(date, 'dd-MM-yyyy', 'en-US');\r\n this.formControl.setValue(formattedDate);\r\n }\r\n }\r\n\r\n private parseDate(value: string, format: string): Date | null {\r\n const parts = value.split(/[-/]/); // Split by common delimiters\r\n if (parts.length === 3) {\r\n const [day, month, year] = format === 'dd-mm-yy'\r\n ? [parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)]\r\n : [parseInt(parts[1], 10), parseInt(parts[0], 10) - 1, parseInt(parts[2], 10)];\r\n return new Date(year, month, day);\r\n }\r\n return null;\r\n }\r\n\r\n private isValidDateInput(value: string, format: string): boolean {\r\n const dateRegex = format === 'dd-mm-yy'\r\n ? /^\\d{2}-\\d{2}-\\d{4}$/\r\n : /^\\d{2}\\/\\d{2}\\/\\d{4}$/;\r\n return dateRegex.test(value);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\n\r\n@Component({\r\n selector: 'formly-field-checkbox',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n CheckboxModule\r\n ],\r\n template: `\r\n <div class=\"checkbox-container\">\r\n <p-checkbox\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [binary]=\"!props['options']\"\r\n [trueValue]=\"props['trueValue']\"\r\n [falseValue]=\"props['falseValue']\">\r\n {{props['checkboxLabel'] || ''}}\r\n </p-checkbox>\r\n </div>\r\n `,\r\n styles: [`\r\n .checkbox-container {\r\n display: flex;\r\n align-items: center;\r\n height: 40px;\r\n }\r\n `]\r\n})\r\nexport class CheckboxType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n trueValue: true,\r\n falseValue: false\r\n }\r\n };\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldType, FormlyModule } from '@ngx-formly/core';\r\nimport { Textarea } from 'primeng/inputtextarea';\r\n\r\n@Component({\r\n selector: 'formly-field-textarea',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n Textarea\r\n ],\r\n template: `\r\n <textarea pInputTextarea\r\n [formControl]=\"$any(formControl)\"\r\n [formlyAttributes]=\"field\"\r\n [rows]=\"props['rows'] || 3\"\r\n [cols]=\"props['cols']\"\r\n [autoResize]=\"props['autoResize']\"\r\n [placeholder]=\"props['placeholder'] || ''\"\r\n class=\"w-full\">\r\n </textarea>\r\n `\r\n})\r\nexport class TextareaType extends FieldType {\r\n override defaultOptions = {\r\n props: {\r\n rows: 3,\r\n cols: undefined,\r\n autoResize: true,\r\n placeholder: ''\r\n }\r\n };\r\n}","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FieldWrapper, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\ninterface FormlyValidationMessage {\r\n [key: string]: string;\r\n}\r\n\r\ninterface FormlyFieldProps {\r\n label?: string;\r\n required?: boolean;\r\n tooltip?: string;\r\n description?: string;\r\n validation?: {\r\n messages?: FormlyValidationMessage;\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'formly-wrapper-form-field',\r\n standalone: true,\r\n imports: [CommonModule, TooltipModule],\r\n template: `\r\n <div class=\"field mb-4\">\r\n <label *ngIf=\"props.label\" [for]=\"id\" class=\"font-medium\">\r\n {{ props.label }}\r\n <span class=\"required-star\" *ngIf=\"props.required\">*</span>\r\n <i *ngIf=\"props.tooltip\" \r\n class=\"pi pi-info-circle ml-2\" \r\n [pTooltip]=\"props.tooltip\">\r\n </i>\r\n </label>\r\n \r\n <div [class.p-input-error]=\"showError\">\r\n <ng-container #fieldComponent></ng-container>\r\n </div>\r\n \r\n <small *ngIf=\"props.description\" class=\"block mt-1\">\r\n {{ props.description }}\r\n </small>\r\n \r\n <small *ngIf=\"showError\" class=\"p-error block\">\r\n <i class=\"pi pi-exclamation-circle mr-2\"></i>\r\n {{ errorMessage }}\r\n </small>\r\n </div>\r\n `,\r\n styles: [`\r\n :host ::ng-deep {\r\n .required-star {\r\n color: var(--red-500);\r\n margin-left: 0.25rem;\r\n }\r\n \r\n .p-input-error :where(input, .p-inputtext) {\r\n border-color: var(--red-500);\r\n }\r\n\r\n .p-input-error :where(input:enabled:focus, .p-inputtext:enabled:focus) {\r\n border-color: var(--red-500);\r\n box-shadow: 0 0 0 1px var(--red-500);\r\n }\r\n\r\n .p-error {\r\n color: var(--red-500);\r\n margin-top: 0.5rem;\r\n }\r\n\r\n small {\r\n color: var(--text-color-secondary);\r\n }\r\n }\r\n `]\r\n})\r\nexport class FormFieldWrapper extends FieldWrapper<FormlyFieldConfig<FormlyFieldProps>> {\r\n get errorMessage(): string {\r\n if (!this.field.formControl?.errors) {\r\n return '';\r\n }\r\n \r\n const firstErrorKey = Object.keys(this.field.formControl.errors)[0];\r\n return this.props.validation?.messages?.[firstErrorKey] || 'This field is required';\r\n }\r\n\r\n override get showError(): boolean {\r\n if (!this.field.formControl) {\r\n return false;\r\n }\r\n \r\n const { touched, dirty, invalid } = this.field.formControl;\r\n return invalid && (touched || dirty);\r\n }\r\n}","export const FORMLY_TYPES = {\r\n TEXT: 'text',\r\n NUMBER: 'number',\r\n DATE: 'date',\r\n CHECKBOX: 'checkbox',\r\n RADIO: 'radio',\r\n SELECT: 'select',\r\n MULTISELECT: 'multiselect',\r\n TEXTAREA: 'textarea'\r\n};\r\n\r\nexport const FORMLY_WRAPPERS = {\r\n FORM_FIELD: 'form-field'\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { TextInputType } from './types/text-input.type';\r\nimport { SelectType } from './types/select.type';\r\nimport { RadioType } from './types/radio.type';\r\nimport { NumericInputType } from './types/numeric-input.type';\r\nimport { MultiselectType } from './types/multiselect.type';\r\nimport { DateType } from './types/date.type';\r\nimport { CheckboxType } from './types/checkbox.type';\r\nimport { TextareaType } from './types/textarea.type'; // Added import\r\nimport { FormFieldWrapper } from './form-field.wrapper';\r\nimport { FORMLY_TYPES, FORMLY_WRAPPERS } from './formly.constants'; // Added import\r\n\r\n@NgModule({\r\n imports: [\r\n FormlyModule.forRoot({\r\n types: [\r\n { name: FORMLY_TYPES.TEXT, component: TextInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.NUMBER, component: NumericInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.DATE, component: DateType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.CHECKBOX, component: CheckboxType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.RADIO, component: RadioType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.SELECT, component: SelectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.MULTISELECT, component: MultiselectType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },\r\n { name: FORMLY_TYPES.TEXTAREA, component: TextareaType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] }, // Added textarea type\r\n ],\r\n wrappers: [\r\n { name: FORMLY_WRAPPERS.FORM_FIELD, component: FormFieldWrapper }\r\n ]\r\n })\r\n ],\r\n exports: [FormlyModule]\r\n})\r\nexport class CoreFormlyModule { }\r\n","// Config\r\n\r\n// Services\r\nexport * from './lib/services/formly-config.service';\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/services/notification.service';\r\nexport * from './lib/services/enum-registry.service';\r\nexport * from './lib/services/entity-registry.service';\r\nexport * from './lib/services/reference-data-provider.service';\r\nexport * from './lib/services/base-crud.service';\r\nexport * from './lib/services/http-utility.service';\r\nexport * from './lib/services/entity.service';\r\n\r\n// Enums\r\nexport * from './lib/enums/component-context.enum';\r\nexport * from './lib/enums/tabbed-form-type.enum';\r\n\r\n// Components\r\nexport * from './lib/components/base-form.component';\r\nexport * from './lib/components/base-page.component';\r\nexport * from './lib/components/base-list-page.component';\r\nexport * from './lib/components/base-tabbed-form.component';\r\n\r\n// Constants\r\nexport * from './lib/constants/app.constants';\r\nexport * from './lib/constants/app.messages';\r\n\r\n// Models\r\nexport * from './lib/models/pagination/page.interface';\r\nexport * from './lib/models/pagination/page-request.interface';\r\n\r\n// Pipes\r\nexport * from './lib/pipes/indian-date.pipe';\r\n\r\n// Formly Components\r\nexport * from './lib/components/formly/core-formly.module';\r\nexport * from './lib/components/formly/form-field.wrapper';\r\nexport * from './lib/components/formly/types/text-input.type';\r\nexport * from './lib/components/formly/types/select.type';\r\nexport * from './lib/components/formly/types/radio.type';\r\nexport * from './lib/components/formly/types/numeric-input.type';\r\nexport * from './lib/components/formly/types/multiselect.type';\r\nexport * from './lib/components/formly/types/date.type';\r\nexport * from './lib/components/formly/types/checkbox.type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.UtilsService","i1.EnumRegistryService","i1","i2","i1.HttpUtilityService","i2.ReferenceDataProviderService","i2.NotificationService","i3.UtilsService","i4.FormlyConfigService","finalize","i4","i3"],"mappings":"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"}
|
|
@@ -26,7 +26,6 @@ export declare abstract class BaseTabbedFormComponent<T extends {
|
|
|
26
26
|
currentFormData: T;
|
|
27
27
|
protected originalFormData: T | null;
|
|
28
28
|
protected hasChanges: boolean;
|
|
29
|
-
private debug;
|
|
30
29
|
constructor(route: ActivatedRoute, router: Router, notificationService: NotificationService, utilsService: UtilsService);
|
|
31
30
|
ngOnInit(): void;
|
|
32
31
|
private initializeFormData;
|
|
@@ -40,6 +39,8 @@ export declare abstract class BaseTabbedFormComponent<T extends {
|
|
|
40
39
|
protected loadDefaultTab(): void;
|
|
41
40
|
protected getTabFormData(tabConfig: TabConfig): T | null;
|
|
42
41
|
private initializeListForm;
|
|
42
|
+
private createTabsFromFormDataList;
|
|
43
|
+
protected abstract getTabTitle(data: T): string;
|
|
43
44
|
protected onTabChange(value: string | number): void;
|
|
44
45
|
protected hasFormChanges(currentData: T): boolean;
|
|
45
46
|
private isEqual;
|