@decaf-ts/for-angular 0.0.37 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ElementRef, Type, Injector, EnvironmentInjector, ComponentMirror, ViewContainerRef, ComponentRef, TemplateRef, OnChanges, ChangeDetectorRef, Renderer2, EventEmitter, SimpleChanges, AfterViewInit, OnInit, OnDestroy, InjectionToken, Provider, ModuleWithProviders } from '@angular/core';
2
+ import { ElementRef, Type, Injector, EnvironmentInjector, ComponentMirror, ViewContainerRef, ComponentRef, TemplateRef, OnChanges, ChangeDetectorRef, Renderer2, EventEmitter, SimpleChanges, AfterViewInit, OnInit, OnDestroy, NgZone, InjectionToken, Provider, ModuleWithProviders } from '@angular/core';
3
3
  import * as i2 from '@angular/forms';
4
4
  import { FormGroup, FormArray, FormControl, ControlValueAccessor, AbstractControl } from '@angular/forms';
5
5
  import { Repository, Adapter, OrderDirection, EventIds, Paginator, Condition } from '@decaf-ts/core';
@@ -17,7 +17,7 @@ import * as i3 from '@ngx-translate/core';
17
17
  import { TranslateService, TranslateLoader, TranslationObject, TranslateParser, RootTranslateServiceConfig } from '@ngx-translate/core';
18
18
  import { Title, SafeHtml } from '@angular/platform-browser';
19
19
  import { IonAccordionGroup, ItemReorderEventDetail } from '@ionic/angular/standalone';
20
- import { Subscription, Observable } from 'rxjs';
20
+ import { Observable, Subscription } from 'rxjs';
21
21
  import { InjectablesRegistry } from '@decaf-ts/injectable-decorators';
22
22
  import { HttpClient } from '@angular/common/http';
23
23
 
@@ -100,7 +100,7 @@ type FieldUpdateMode = 'change' | 'blur' | 'submit';
100
100
  * @typedef {('checkbox'|'radio'|'select'|TextFieldTypes|'textarea')} PossibleInputTypes
101
101
  * @memberOf module:engine
102
102
  */
103
- type PossibleInputTypes = 'checkbox' | 'radio' | 'select' | TextFieldTypes | 'textarea';
103
+ type PossibleInputTypes = 'checkbox' | 'radio' | 'select' | TextFieldTypes | 'file' | 'textarea';
104
104
  /**
105
105
  * @description Field definition for Angular components
106
106
  * @summary A comprehensive type that combines properties from various Ionic components
@@ -193,6 +193,7 @@ type FormParent = FormGroup | FormArray;
193
193
  */
194
194
  type FormParentGroup = [FormParent, string];
195
195
  type I18nResourceConfigType = I18nResourceConfig | I18nResourceConfig[];
196
+ type WindowColorScheme = 'dark' | 'light' | unknown;
196
197
 
197
198
  /**
198
199
  * @module lib/engine/interfaces
@@ -475,6 +476,10 @@ interface IBaseCustomEvent {
475
476
  data?: unknown;
476
477
  target?: HTMLElement;
477
478
  }
479
+ interface IModelPageCustomEvent extends IBaseCustomEvent {
480
+ success: boolean;
481
+ message?: string;
482
+ }
478
483
  /**
479
484
  * @description Configuration for internationalization (i18n) resource file paths
480
485
  * @summary Defines the structure for configuring i18n resource file paths with prefix and suffix.
@@ -600,6 +605,10 @@ interface IListEmptyOptions {
600
605
  link: string;
601
606
  icon: string;
602
607
  }
608
+ interface IWindowResizeEvent {
609
+ width: number;
610
+ height: number;
611
+ }
603
612
 
604
613
  /**
605
614
  * @description Angular engine key constants.
@@ -1198,12 +1207,12 @@ declare class NgxRenderingEngine extends RenderingEngine<AngularFieldDefinition,
1198
1207
  }
1199
1208
 
1200
1209
  /**
1201
- * @module lib/engine/NgxDecafComponentDirective
1210
+ * @module lib/engine/NgxComponentDirective
1202
1211
  * @description Base decaf component abstraction providing shared inputs and utilities.
1203
- * @summary NgxDecafComponentDirective is the abstract foundation for Decaf components and provides common
1212
+ * @summary NgxComponentDirective is the abstract foundation for Decaf components and provides common
1204
1213
  * inputs (model, mapper, pk, props), logging, repository resolution, and event dispatch helpers.
1205
1214
  * It centralizes shared behavior for child components and simplifies integration with the rendering engine.
1206
- * @link {@link NgxDecafComponentDirective}
1215
+ * @link {@link NgxComponentDirective}
1207
1216
  */
1208
1217
 
1209
1218
  /**
@@ -1214,12 +1223,12 @@ declare class NgxRenderingEngine extends RenderingEngine<AngularFieldDefinition,
1214
1223
  * internationalization support. It implements OnChanges to respond to input property changes
1215
1224
  * and includes utilities for navigation, localization, and dynamic property binding. All Decaf
1216
1225
  * components should extend this directive to inherit its foundational capabilities.
1217
- * @class NgxDecafComponentDirective
1226
+ * @class NgxComponentDirective
1218
1227
  * @extends {LoggedClass}
1219
1228
  * @implements {OnChanges}
1220
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1229
+ * @memberOf module:lib/engine/NgxComponentDirective
1221
1230
  */
1222
- declare abstract class NgxDecafComponentDirective extends LoggedClass implements OnChanges {
1231
+ declare abstract class NgxComponentDirective extends LoggedClass implements OnChanges {
1223
1232
  /**
1224
1233
  * @description Reference to the component's native DOM element.
1225
1234
  * @summary Provides direct access to the native DOM element of the component through Angular's
@@ -1227,7 +1236,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1227
1236
  * apply custom styles, or access native element properties and methods. The element is
1228
1237
  * identified by the 'component' template reference variable.
1229
1238
  * @type {ElementRef}
1230
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1239
+ * @memberOf module:lib/engine/NgxComponentDirective
1231
1240
  */
1232
1241
  component: ElementRef;
1233
1242
  /**
@@ -1237,7 +1246,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1237
1246
  * component instances within a larger application structure. It serves as a human-readable
1238
1247
  * identifier that helps distinguish between multiple instances of the same component type.
1239
1248
  * @type {string}
1240
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1249
+ * @memberOf module:lib/engine/NgxComponentDirective
1241
1250
  */
1242
1251
  name: string;
1243
1252
  /**
@@ -1247,7 +1256,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1247
1256
  * proper nesting and organization of components within a layout. It can be used to track
1248
1257
  * component dependencies and establish component hierarchies for rendering and event propagation.
1249
1258
  * @type {string | undefined}
1250
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1259
+ * @memberOf module:lib/engine/NgxComponentDirective
1251
1260
  */
1252
1261
  childOf: string | undefined;
1253
1262
  /**
@@ -1257,7 +1266,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1257
1266
  * By default, it generates a random 16-character value, but it can be explicitly set via input.
1258
1267
  * @type {string | number}
1259
1268
  * @default generateRandomValue(16)
1260
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1269
+ * @memberOf module:lib/engine/NgxComponentDirective
1261
1270
  */
1262
1271
  uid: string | number;
1263
1272
  /**
@@ -1267,7 +1276,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1267
1276
  * When set, this property provides the component with access to the model's schema, validation rules,
1268
1277
  * and metadata needed for rendering and data operations.
1269
1278
  * @type {Model | string | undefined}
1270
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1279
+ * @memberOf module:lib/engine/NgxComponentDirective
1271
1280
  */
1272
1281
  model: Model | string | undefined;
1273
1282
  /**
@@ -1277,7 +1286,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1277
1286
  * specific records, such as read, update, and delete operations. The value corresponds to
1278
1287
  * the field designated as the primary key in the model definition.
1279
1288
  * @type {EventIds}
1280
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1289
+ * @memberOf module:lib/engine/NgxComponentDirective
1281
1290
  */
1282
1291
  modelId?: EventIds;
1283
1292
  /**
@@ -1287,7 +1296,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1287
1296
  * If not explicitly set, it defaults to the repository's configured primary key or 'id'.
1288
1297
  * @type {string}
1289
1298
  * @default 'id'
1290
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1299
+ * @memberOf module:lib/engine/NgxComponentDirective
1291
1300
  */
1292
1301
  pk: string;
1293
1302
  /**
@@ -1297,7 +1306,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1297
1306
  * provided as a static object mapping or as a function for dynamic mapping transformations.
1298
1307
  * @type {Record<string, string> | FunctionLike}
1299
1308
  * @default {}
1300
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1309
+ * @memberOf module:lib/engine/NgxComponentDirective
1301
1310
  */
1302
1311
  mapper: Record<string, string> | FunctionLike;
1303
1312
  /**
@@ -1307,7 +1316,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1307
1316
  * which operation buttons are displayed in the UI. By default, only READ operations are enabled.
1308
1317
  * @type {CrudOperations[]}
1309
1318
  * @default [OperationKeys.READ]
1310
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1319
+ * @memberOf module:lib/engine/NgxComponentDirective
1311
1320
  */
1312
1321
  operations: CrudOperations[];
1313
1322
  /**
@@ -1329,7 +1338,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1329
1338
  * establish the component's vertical placement within the grid structure.
1330
1339
  * @type {number}
1331
1340
  * @default 1
1332
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1341
+ * @memberOf module:lib/engine/NgxComponentDirective
1333
1342
  */
1334
1343
  row: number;
1335
1344
  /**
@@ -1339,7 +1348,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1339
1348
  * establish the component's horizontal placement within the grid structure.
1340
1349
  * @type {number}
1341
1350
  * @default 1
1342
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1351
+ * @memberOf module:lib/engine/NgxComponentDirective
1343
1352
  */
1344
1353
  col: number;
1345
1354
  /**
@@ -1350,7 +1359,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1350
1359
  * This provides a way to customize the component's appearance beyond the built-in styling options.
1351
1360
  * @type {string}
1352
1361
  * @default ""
1353
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1362
+ * @memberOf module:lib/engine/NgxComponentDirective
1354
1363
  */
1355
1364
  className: string;
1356
1365
  /**
@@ -1361,7 +1370,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1361
1370
  * data model and provides methods for querying and filtering data based on specific criteria.
1362
1371
  * @type {DecafRepository<Model>}
1363
1372
  * @private
1364
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1373
+ * @memberOf module:lib/engine/NgxComponentDirective
1365
1374
  */
1366
1375
  protected _repository?: DecafRepository<Model>;
1367
1376
  /**
@@ -1372,7 +1381,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1372
1381
  * and layout features that require menu interaction.
1373
1382
  * @protected
1374
1383
  * @type {MenuController}
1375
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1384
+ * @memberOf module:lib/engine/NgxComponentDirective
1376
1385
  */
1377
1386
  protected menuController: MenuController;
1378
1387
  /**
@@ -1383,7 +1392,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1383
1392
  * view updates when modifications occur outside the normal Angular change detection flow.
1384
1393
  * @protected
1385
1394
  * @type {ChangeDetectorRef}
1386
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1395
+ * @memberOf module:lib/engine/NgxComponentDirective
1387
1396
  */
1388
1397
  protected changeDetectorRef: ChangeDetectorRef;
1389
1398
  /**
@@ -1393,7 +1402,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1393
1402
  * including server-side rendering and web workers, without direct DOM access.
1394
1403
  * @protected
1395
1404
  * @type {Renderer2}
1396
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1405
+ * @memberOf module:lib/engine/NgxComponentDirective
1397
1406
  */
1398
1407
  protected renderer: Renderer2;
1399
1408
  /**
@@ -1403,7 +1412,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1403
1412
  * on the current locale setting, enabling multilingual support throughout the application.
1404
1413
  * @protected
1405
1414
  * @type {TranslateService}
1406
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1415
+ * @memberOf module:lib/engine/NgxComponentDirective
1407
1416
  */
1408
1417
  protected translateService: TranslateService;
1409
1418
  /**
@@ -1414,7 +1423,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1414
1423
  * The logger is used throughout the component to record important events, debug information,
1415
1424
  * and potential issues, facilitating easier debugging and maintenance.
1416
1425
  * @type {Logger}
1417
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1426
+ * @memberOf module:lib/engine/NgxComponentDirective
1418
1427
  */
1419
1428
  logger: Logger;
1420
1429
  /**
@@ -1424,7 +1433,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1424
1433
  * state changes. Events are passed up the component hierarchy to enable coordinated
1425
1434
  * behavior across the application.
1426
1435
  * @type {EventEmitter<IBaseCustomEvent>}
1427
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1436
+ * @memberOf module:lib/engine/NgxComponentDirective
1428
1437
  */
1429
1438
  listenEvent: EventEmitter<IBaseCustomEvent>;
1430
1439
  /**
@@ -1434,7 +1443,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1434
1443
  * handles route parameters, and manages the browser's navigation history.
1435
1444
  * @protected
1436
1445
  * @type {Router}
1437
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1446
+ * @memberOf module:lib/engine/NgxComponentDirective
1438
1447
  */
1439
1448
  protected router: Router;
1440
1449
  /**
@@ -1444,7 +1453,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1444
1453
  * the default application locale for this specific component instance, enabling per-component
1445
1454
  * localization when needed.
1446
1455
  * @type {string | undefined}
1447
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1456
+ * @memberOf module:lib/engine/NgxComponentDirective
1448
1457
  */
1449
1458
  locale?: string;
1450
1459
  /**
@@ -1456,7 +1465,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1456
1465
  * Additional properties can be included to customize the rendering behavior.
1457
1466
  * @type {Record<string, unknown>}
1458
1467
  * @default {tag: ""}
1459
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1468
+ * @memberOf module:lib/engine/NgxComponentDirective
1460
1469
  */
1461
1470
  item: Record<string, unknown>;
1462
1471
  /**
@@ -1468,7 +1477,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1468
1477
  * enabling customizable component behavior based on external configuration.
1469
1478
  * @type {Record<string, unknown>}
1470
1479
  * @default {}
1471
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1480
+ * @memberOf module:lib/engine/NgxComponentDirective
1472
1481
  */
1473
1482
  props: Record<string, unknown>;
1474
1483
  /**
@@ -1478,7 +1487,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1478
1487
  * different operations or views. The route helps establish the component's position in the
1479
1488
  * application's routing hierarchy.
1480
1489
  * @type {string}
1481
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1490
+ * @memberOf module:lib/engine/NgxComponentDirective
1482
1491
  */
1483
1492
  route: string;
1484
1493
  /**
@@ -1488,17 +1497,17 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1488
1497
  * certain operations that require initialization can be performed.
1489
1498
  * @type {boolean}
1490
1499
  * @default false
1491
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1500
+ * @memberOf module:lib/engine/NgxComponentDirective
1492
1501
  */
1493
1502
  initialized: boolean;
1494
1503
  /**
1495
1504
  * @description Component name identifier for logging and localization contexts.
1496
1505
  * @summary Stores the component's name which is used as a key for logging contexts
1497
1506
  * and as a base for locale resolution. Can be injected via the CPTKN token or defaults
1498
- * to "NgxDecafComponentDirective" if not provided.
1507
+ * to "NgxComponentDirective" if not provided.
1499
1508
  * @protected
1500
1509
  * @type {string | undefined}
1501
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1510
+ * @memberOf module:lib/engine/NgxComponentDirective
1502
1511
  */
1503
1512
  protected componentName?: string;
1504
1513
  /**
@@ -1508,7 +1517,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1508
1517
  * load appropriate translation resources and locale-specific configurations.
1509
1518
  * @protected
1510
1519
  * @type {string | undefined}
1511
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1520
+ * @memberOf module:lib/engine/NgxComponentDirective
1512
1521
  */
1513
1522
  protected localeRoot?: string;
1514
1523
  /**
@@ -1519,7 +1528,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1519
1528
  * while maintaining encapsulation and preventing accidental modification.
1520
1529
  * @protected
1521
1530
  * @readonly
1522
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1531
+ * @memberOf module:lib/engine/NgxComponentDirective
1523
1532
  */
1524
1533
  protected readonly OperationKeys: typeof OperationKeys;
1525
1534
  /**
@@ -1533,14 +1542,14 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1533
1542
  */
1534
1543
  protected location: Location;
1535
1544
  /**
1536
- * @description Constructor for NgxDecafComponentDirective.
1545
+ * @description Constructor for NgxComponentDirective.
1537
1546
  * @summary Initializes the directive by setting up the component name, locale root,
1538
1547
  * and logger. Calls the parent LoggedClass constructor and configures localization
1539
1548
  * context. The component name and locale root can be optionally injected via the
1540
1549
  * CPTKN token, otherwise defaults are used.
1541
1550
  * @param {string} [componentName] - Optional component name for identification and logging
1542
1551
  * @param {string} [localeRoot] - Optional locale root key for internationalization
1543
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1552
+ * @memberOf module:lib/engine/NgxComponentDirective
1544
1553
  */
1545
1554
  constructor(componentName?: string, localeRoot?: string);
1546
1555
  /**
@@ -1548,7 +1557,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1548
1557
  * @summary Returns the current locale identifier by calling the getLocale method.
1549
1558
  * This property provides convenient access to the component's active locale setting.
1550
1559
  * @returns {string} The current locale identifier
1551
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1560
+ * @memberOf module:lib/engine/NgxComponentDirective
1552
1561
  */
1553
1562
  get localeContext(): string;
1554
1563
  /**
@@ -1559,7 +1568,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1559
1568
  * @protected
1560
1569
  * @returns {DecafRepository<Model>} The repository instance for the current model
1561
1570
  * @throws {InternalError} If repository initialization fails
1562
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1571
+ * @memberOf module:lib/engine/NgxComponentDirective
1563
1572
  */
1564
1573
  protected get repository(): DecafRepository<Model>;
1565
1574
  /**
@@ -1570,7 +1579,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1570
1579
  * it updates the component's locale setting accordingly.
1571
1580
  * @param {SimpleChanges} changes - Object containing the changed properties with their previous and current values
1572
1581
  * @return {void}
1573
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1582
+ * @memberOf module:lib/engine/NgxComponentDirective
1574
1583
  */
1575
1584
  ngOnChanges(changes: SimpleChanges): void;
1576
1585
  /**
@@ -1583,7 +1592,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1583
1592
  * @param {string | string[]} phrase - The translation key or array of keys to translate
1584
1593
  * @param {object | string} [params] - Optional parameters for interpolation in translated text
1585
1594
  * @return {Promise<string>} A promise that resolves to the translated text
1586
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1595
+ * @memberOf module:lib/engine/NgxComponentDirective
1587
1596
  */
1588
1597
  protected translate(phrase: string | string[], params?: object | string): Promise<string>;
1589
1598
  /**
@@ -1595,7 +1604,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1595
1604
  * @protected
1596
1605
  * @param {...unknown[]} args - Variable number of arguments that can be used by child implementations
1597
1606
  * @return {Promise<void>} A promise that resolves when initialization is complete
1598
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1607
+ * @memberOf module:lib/engine/NgxComponentDirective
1599
1608
  */
1600
1609
  protected initialize(...args: unknown[]): Promise<void>;
1601
1610
  /**
@@ -1606,7 +1615,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1606
1615
  * @protected
1607
1616
  * @param {string} [locale] - Optional locale identifier to set
1608
1617
  * @return {string} The current locale identifier
1609
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1618
+ * @memberOf module:lib/engine/NgxComponentDirective
1610
1619
  */
1611
1620
  protected getLocale(locale?: string): string;
1612
1621
  /**
@@ -1616,7 +1625,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1616
1625
  * class name using the pattern `/model/{ModelName}`. Returns an empty string if neither
1617
1626
  * a route nor a model is available.
1618
1627
  * @return {string} The route path for this component
1619
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1628
+ * @memberOf module:lib/engine/NgxComponentDirective
1620
1629
  */
1621
1630
  getRoute(): string;
1622
1631
  /**
@@ -1628,7 +1637,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1628
1637
  * @template M - The model type extending from Model
1629
1638
  * @param {string | Model | ModelConstructor<M>} model - The model to resolve and initialize
1630
1639
  * @return {void}
1631
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1640
+ * @memberOf module:lib/engine/NgxComponentDirective
1632
1641
  */
1633
1642
  getModel<M extends Model>(model: string | Model | ModelConstructor<M>): void;
1634
1643
  /**
@@ -1640,7 +1649,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1640
1649
  * decorator metadata with the component's runtime configuration.
1641
1650
  * @param {Model} model - The model instance to extract definitions from
1642
1651
  * @return {void}
1643
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1652
+ * @memberOf module:lib/engine/NgxComponentDirective
1644
1653
  */
1645
1654
  setModelDefinitions(model: Model): void;
1646
1655
  /**
@@ -1659,7 +1668,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1659
1668
  * @mermaid
1660
1669
  * sequenceDiagram
1661
1670
  * participant C as Component
1662
- * participant D as NgxDecafComponentDirective
1671
+ * participant D as NgxComponentDirective
1663
1672
  * participant P as Props Object
1664
1673
  *
1665
1674
  * C->>D: parseProps(instance, skip)
@@ -1677,7 +1686,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1677
1686
  * end
1678
1687
  * end
1679
1688
  * @protected
1680
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1689
+ * @memberOf module:lib/engine/NgxComponentDirective
1681
1690
  */
1682
1691
  protected parseProps(instance: KeyValue, skip?: string[]): void;
1683
1692
  /**
@@ -1691,7 +1700,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1691
1700
  * @param {number} index - The index of the item in the list
1692
1701
  * @param {KeyValue | string | number} item - The item data to track
1693
1702
  * @return {string | number} A unique identifier for the item
1694
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1703
+ * @memberOf module:lib/engine/NgxComponentDirective
1695
1704
  */
1696
1705
  protected trackItemFn(index: number, item: KeyValue | string | number): string | number;
1697
1706
  /**
@@ -1706,7 +1715,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1706
1715
  * @mermaid
1707
1716
  * sequenceDiagram
1708
1717
  * participant C as Child Component
1709
- * participant D as NgxDecafComponentDirective
1718
+ * participant D as NgxComponentDirective
1710
1719
  * participant H as Event Handler
1711
1720
  * participant P as Parent Component
1712
1721
  *
@@ -1726,7 +1735,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1726
1735
  * else No handlers
1727
1736
  * D->>P: listenEvent.emit(event)
1728
1737
  * end
1729
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1738
+ * @memberOf module:lib/engine/NgxComponentDirective
1730
1739
  */
1731
1740
  handleEvent(event: IBaseCustomEvent | ICrudFormEvent | CustomEvent): Promise<void>;
1732
1741
  /**
@@ -1739,7 +1748,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1739
1748
  * @return {boolean} True if the operation is allowed, false otherwise
1740
1749
  * @mermaid
1741
1750
  * sequenceDiagram
1742
- * participant D as NgxDecafComponentDirective
1751
+ * participant D as NgxComponentDirective
1743
1752
  * participant U as UI
1744
1753
  *
1745
1754
  * U->>D: isAllowed(operation)
@@ -1750,7 +1759,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1750
1759
  * D->>D: Check if operation is not current operation
1751
1760
  * D-->>U: Return result
1752
1761
  * end
1753
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1762
+ * @memberOf module:lib/engine/NgxComponentDirective
1754
1763
  */
1755
1764
  isAllowed(operation: string): boolean;
1756
1765
  /**
@@ -1766,7 +1775,7 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1766
1775
  * @mermaid
1767
1776
  * sequenceDiagram
1768
1777
  * participant U as UI
1769
- * participant D as NgxDecafComponentDirective
1778
+ * participant D as NgxComponentDirective
1770
1779
  * participant R as Router
1771
1780
  *
1772
1781
  * U->>D: Click operation button
@@ -1777,11 +1786,11 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1777
1786
  * R->>R: Navigate to new route
1778
1787
  * R-->>D: Return navigation result
1779
1788
  * D-->>U: Display new operation view
1780
- * @memberOf module:lib/engine/NgxDecafComponentDirective
1789
+ * @memberOf module:lib/engine/NgxComponentDirective
1781
1790
  */
1782
1791
  changeOperation(operation: string, id?: string): Promise<boolean>;
1783
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxDecafComponentDirective, never>;
1784
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxDecafComponentDirective, never, never, { "name": { "alias": "name"; "required": false; }; "childOf": { "alias": "childOf"; "required": false; }; "uid": { "alias": "uid"; "required": false; }; "model": { "alias": "model"; "required": false; }; "modelId": { "alias": "modelId"; "required": false; }; "pk": { "alias": "pk"; "required": false; }; "mapper": { "alias": "mapper"; "required": false; }; "operations": { "alias": "operations"; "required": false; }; "operation": { "alias": "operation"; "required": false; }; "row": { "alias": "row"; "required": false; }; "col": { "alias": "col"; "required": false; }; "className": { "alias": "className"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "item": { "alias": "item"; "required": false; }; "props": { "alias": "props"; "required": false; }; "route": { "alias": "route"; "required": false; }; }, { "listenEvent": "listenEvent"; }, never, never, true, never>;
1792
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxComponentDirective, never>;
1793
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxComponentDirective, never, never, { "name": { "alias": "name"; "required": false; }; "childOf": { "alias": "childOf"; "required": false; }; "uid": { "alias": "uid"; "required": false; }; "model": { "alias": "model"; "required": false; }; "modelId": { "alias": "modelId"; "required": false; }; "pk": { "alias": "pk"; "required": false; }; "mapper": { "alias": "mapper"; "required": false; }; "operations": { "alias": "operations"; "required": false; }; "operation": { "alias": "operation"; "required": false; }; "row": { "alias": "row"; "required": false; }; "col": { "alias": "col"; "required": false; }; "className": { "alias": "className"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "item": { "alias": "item"; "required": false; }; "props": { "alias": "props"; "required": false; }; "route": { "alias": "route"; "required": false; }; }, { "listenEvent": "listenEvent"; }, never, never, true, never>;
1785
1794
  }
1786
1795
 
1787
1796
  /**
@@ -1792,8 +1801,8 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1792
1801
  * It handles form group lifecycle, error messaging, change detection, and parent-child form relationships.
1793
1802
  * Extend this class to create custom form field components that seamlessly integrate with Angular's
1794
1803
  * reactive forms and Decaf's validation system.
1795
- * @class NgxDecafFormFieldDirective
1796
- * @extends {NgxDecafComponentDirective}
1804
+ * @class NgxFormFieldDirective
1805
+ * @extends {NgxComponentDirective}
1797
1806
  * @implements {ControlValueAccessor}
1798
1807
  * @implements {FieldProperties}
1799
1808
  * @example
@@ -1807,14 +1816,14 @@ declare abstract class NgxDecafComponentDirective extends LoggedClass implements
1807
1816
  * multi: true
1808
1817
  * }]
1809
1818
  * })
1810
- * export class TextFieldComponent extends NgxDecafFormFieldDirective {
1819
+ * export class TextFieldComponent extends NgxFormFieldDirective {
1811
1820
  * constructor() {
1812
1821
  * super();
1813
1822
  * }
1814
1823
  * }
1815
1824
  * ```
1816
1825
  */
1817
- declare abstract class NgxDecafFormFieldDirective extends NgxDecafComponentDirective implements ControlValueAccessor, FieldProperties {
1826
+ declare abstract class NgxFormFieldDirective extends NgxComponentDirective implements ControlValueAccessor, FieldProperties {
1818
1827
  /**
1819
1828
  * @description Index of the currently active form group in a form array.
1820
1829
  * @summary When working with multiple form groups (form arrays), this indicates
@@ -2013,7 +2022,7 @@ declare abstract class NgxDecafFormFieldDirective extends NgxDecafComponentDirec
2013
2022
  * @protected
2014
2023
  */
2015
2024
  protected parent?: HTMLElement;
2016
- constructor();
2025
+ constructor(componentName?: string);
2017
2026
  /**
2018
2027
  * @description Gets the currently active form group based on context.
2019
2028
  * @summary Returns the appropriate FormGroup based on whether this field supports
@@ -2134,21 +2143,21 @@ declare abstract class NgxDecafFormFieldDirective extends NgxDecafComponentDirec
2134
2143
  * @public
2135
2144
  */
2136
2145
  getErrors(parent: HTMLElement): string | void;
2137
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxDecafFormFieldDirective, never>;
2138
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxDecafFormFieldDirective, never, never, { "activeFormGroupIndex": { "alias": "activeFormGroupIndex"; "required": false; }; "operation": { "alias": "operation"; "required": true; }; "parentComponent": { "alias": "parentComponent"; "required": false; }; "optionsMapper": { "alias": "optionsMapper"; "required": false; }; }, {}, never, never, true, never>;
2146
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxFormFieldDirective, never>;
2147
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxFormFieldDirective, never, never, { "activeFormGroupIndex": { "alias": "activeFormGroupIndex"; "required": false; }; "operation": { "alias": "operation"; "required": true; }; "parentComponent": { "alias": "parentComponent"; "required": false; }; "optionsMapper": { "alias": "optionsMapper"; "required": false; }; }, {}, never, never, true, never>;
2139
2148
  }
2140
2149
 
2141
2150
  /**
2142
- * @module lib/engine/NgxDecafFormService
2151
+ * @module lib/engine/NgxFormService
2143
2152
  * @description Utilities to create and manage Angular forms in Decaf components.
2144
- * @summary The NgxDecafFormService exposes helpers to build FormGroup/FormArray instances
2153
+ * @summary The NgxFormService exposes helpers to build FormGroup/FormArray instances
2145
2154
  * from component metadata or UI model definitions, register forms in a registry,
2146
2155
  * validate and extract form data, and create controls with appropriate validators.
2147
2156
  */
2148
2157
 
2149
2158
  /**
2150
2159
  * @description Service for managing Angular forms and form controls.
2151
- * @summary The NgxDecafFormService provides utility methods for creating, managing, and validating Angular forms and form controls. It includes functionality for registering forms, adding controls, validating fields, and handling form data.
2160
+ * @summary The NgxFormService provides utility methods for creating, managing, and validating Angular forms and form controls. It includes functionality for registering forms, adding controls, validating fields, and handling form data.
2152
2161
  *
2153
2162
  * @class
2154
2163
  * @param {WeakMap<AbstractControl, FieldProperties>} controls - A WeakMap to store control properties.
@@ -2160,17 +2169,17 @@ declare abstract class NgxDecafFormFieldDirective extends NgxDecafComponentDirec
2160
2169
  * { inputs: { name: 'username', type: 'text', required: true } },
2161
2170
  * { inputs: { name: 'password', type: 'password', minLength: 8 } }
2162
2171
  * ];
2163
- * const form = NgxDecafFormService.createFormFromComponents('loginForm', components, true);
2172
+ * const form = NgxFormService.createFormFromComponents('loginForm', components, true);
2164
2173
  *
2165
2174
  * // Validating fields
2166
- * NgxDecafFormService.validateFields(form);
2175
+ * NgxFormService.validateFields(form);
2167
2176
  *
2168
2177
  * // Getting form data
2169
- * const formData = NgxDecafFormService.getFormData(form);
2178
+ * const formData = NgxFormService.getFormData(form);
2170
2179
  * @mermaid
2171
2180
  * sequenceDiagram
2172
2181
  * participant C as Component
2173
- * participant NFS as NgxDecafFormService
2182
+ * participant NFS as NgxFormService
2174
2183
  * participant AF as Angular Forms
2175
2184
  * C->>NFS: createFormFromComponents()
2176
2185
  * NFS->>AF: new FormGroup()
@@ -2183,7 +2192,7 @@ declare abstract class NgxDecafFormFieldDirective extends NgxDecafComponentDirec
2183
2192
  * NFS->>AF: Get control values
2184
2193
  * NFS-->>C: Return form data
2185
2194
  */
2186
- declare class NgxDecafFormService {
2195
+ declare class NgxFormService {
2187
2196
  /**
2188
2197
  * @description WeakMap that stores control properties for form controls.
2189
2198
  * @summary A WeakMap that associates AbstractControl instances with their corresponding FieldProperties.
@@ -2215,7 +2224,7 @@ declare class NgxDecafFormService {
2215
2224
  * @mermaid
2216
2225
  * sequenceDiagram
2217
2226
  * participant C as Component
2218
- * participant NFS as NgxDecafFormService
2227
+ * participant NFS as NgxFormService
2219
2228
  * participant FR as Form Registry
2220
2229
  * participant AF as Angular Forms
2221
2230
  * C->>NFS: createForm(id, formArray, registry)
@@ -2281,7 +2290,7 @@ declare class NgxDecafFormService {
2281
2290
  * @private
2282
2291
  * @mermaid
2283
2292
  * sequenceDiagram
2284
- * participant NFS as NgxDecafFormService
2293
+ * participant NFS as NgxFormService
2285
2294
  * participant FG as FormGroup
2286
2295
  * participant FA as FormArray
2287
2296
  * NFS->>NFS: Split path into parts
@@ -2395,7 +2404,7 @@ declare class NgxDecafFormService {
2395
2404
  * @mermaid
2396
2405
  * sequenceDiagram
2397
2406
  * participant C as Component
2398
- * participant NFS as NgxDecafFormService
2407
+ * participant NFS as NgxFormService
2399
2408
  * participant FR as Form Registry
2400
2409
  * C->>NFS: getControlFromForm(formId, path?)
2401
2410
  * NFS->>FR: Get form by formId
@@ -2430,7 +2439,7 @@ declare class NgxDecafFormService {
2430
2439
  * @mermaid
2431
2440
  * sequenceDiagram
2432
2441
  * participant C as Component
2433
- * participant NFS as NgxDecafFormService
2442
+ * participant NFS as NgxFormService
2434
2443
  * participant AF as Angular Forms
2435
2444
  * C->>NFS: createFormFromChildren(id, registry, children)
2436
2445
  * NFS->>AF: new FormGroup({})
@@ -2457,7 +2466,7 @@ declare class NgxDecafFormService {
2457
2466
  * @mermaid
2458
2467
  * sequenceDiagram
2459
2468
  * participant C as Component
2460
- * participant NFS as NgxDecafFormService
2469
+ * participant NFS as NgxFormService
2461
2470
  * participant AF as Angular Forms
2462
2471
  * C->>NFS: createFormFromComponents(id, components, registry)
2463
2472
  * NFS->>AF: new FormGroup({})
@@ -2486,7 +2495,7 @@ declare class NgxDecafFormService {
2486
2495
  * @mermaid
2487
2496
  * sequenceDiagram
2488
2497
  * participant C as Component
2489
- * participant NFS as NgxDecafFormService
2498
+ * participant NFS as NgxFormService
2490
2499
  * participant F as Form
2491
2500
  * C->>NFS: addControlFromProps(id, componentProps, parentProps?)
2492
2501
  * NFS->>NFS: createForm(id, formArray, true)
@@ -2514,7 +2523,7 @@ declare class NgxDecafFormService {
2514
2523
  * @mermaid
2515
2524
  * sequenceDiagram
2516
2525
  * participant C as Component
2517
- * participant NFS as NgxDecafFormService
2526
+ * participant NFS as NgxFormService
2518
2527
  * participant FG as FormGroup
2519
2528
  * participant FC as FormControl
2520
2529
  * C->>NFS: getFormData(formGroup)
@@ -2556,7 +2565,7 @@ declare class NgxDecafFormService {
2556
2565
  * @mermaid
2557
2566
  * sequenceDiagram
2558
2567
  * participant C as Component
2559
- * participant NFS as NgxDecafFormService
2568
+ * participant NFS as NgxFormService
2560
2569
  * participant FC as FormControl
2561
2570
  * participant FG as FormGroup
2562
2571
  * participant FA as FormArray
@@ -2610,7 +2619,7 @@ declare class NgxDecafFormService {
2610
2619
  * @mermaid
2611
2620
  * sequenceDiagram
2612
2621
  * participant C as Component
2613
- * participant NFS as NgxDecafFormService
2622
+ * participant NFS as NgxFormService
2614
2623
  * participant VF as ValidatorFactory
2615
2624
  * participant AF as Angular Forms
2616
2625
  * C->>NFS: fromProps(props, updateMode?)
@@ -2652,7 +2661,7 @@ declare class NgxDecafFormService {
2652
2661
  * @mermaid
2653
2662
  * sequenceDiagram
2654
2663
  * participant C as Component
2655
- * participant NFS as NgxDecafFormService
2664
+ * participant NFS as NgxFormService
2656
2665
  * participant DOM as DOM Tree
2657
2666
  * C->>NFS: getParentEl(element, tagName)
2658
2667
  * loop Traverse up DOM tree
@@ -2717,7 +2726,7 @@ declare abstract class NgxEventHandler<PAYLOAD> extends LoggedClass {
2717
2726
  /**
2718
2727
  * @module lib/engine/NgxPageDirective
2719
2728
  * @description Base page component for Decaf Angular applications.
2720
- * @summary Provides a page-level base class (NgxPageDirective) that extends NgxDecafComponentDirective and
2729
+ * @summary Provides a page-level base class (NgxPageDirective) that extends NgxComponentDirective and
2721
2730
  * offers page-focused utilities such as menu management, title handling and router event hooks.
2722
2731
  * @link {@link NgxPageDirective}
2723
2732
  */
@@ -2725,16 +2734,14 @@ declare abstract class NgxEventHandler<PAYLOAD> extends LoggedClass {
2725
2734
  /**
2726
2735
  * @description Base directive for page-level components in Decaf Angular applications.
2727
2736
  * @summary Abstract directive that provides foundational functionality for page components.
2728
- * Extends NgxDecafComponentDirective to add page-specific features including menu management,
2737
+ * Extends NgxComponentDirective to add page-specific features including menu management,
2729
2738
  * page title handling, and Ionic lifecycle hooks. This directive serves as the base class for
2730
2739
  * all page-level components, providing consistent behavior for navigation, routing, and UI state.
2731
2740
  * @class NgxPageDirective
2732
- * @extends {NgxDecafComponentDirective}
2741
+ * @extends {NgxComponentDirective}
2733
2742
  * @memberOf module:lib/engine/NgxPageDirective
2734
2743
  */
2735
- declare abstract class NgxPageDirective extends NgxDecafComponentDirective implements AfterViewInit {
2736
- protected localeRoot?: string | undefined;
2737
- protected hasMenu: boolean;
2744
+ declare abstract class NgxPageDirective extends NgxComponentDirective implements AfterViewInit {
2738
2745
  /**
2739
2746
  * @description Page title text for the current view.
2740
2747
  * @summary Stores the title text to be displayed for this page. This can be set dynamically
@@ -2767,16 +2774,28 @@ declare abstract class NgxPageDirective extends NgxDecafComponentDirective imple
2767
2774
  * @memberOf module:lib/engine/NgxPageDirective
2768
2775
  */
2769
2776
  protected titleService: Title;
2777
+ /**
2778
+ * @description Flag indicating whether the page should display the navigation menu.
2779
+ * @summary Controls the visibility and availability of the application menu for this page.
2780
+ * When set to true, the menu is enabled and accessible to users. When false, the menu
2781
+ * is disabled, which is useful for pages like login screens or standalone views that
2782
+ * should not show navigation options.
2783
+ * @protected
2784
+ * @type {boolean}
2785
+ * @default true
2786
+ * @memberOf module:lib/engine/NgxPageDirective
2787
+ */
2788
+ protected hasMenu: boolean;
2770
2789
  /**
2771
2790
  * @description Constructor for NgxPageDirective.
2772
2791
  * @summary Initializes the page directive with optional locale root and menu visibility settings.
2773
- * Calls the parent NgxDecafComponentDirective constructor to set up base functionality including
2792
+ * Calls the parent NgxComponentDirective constructor to set up base functionality including
2774
2793
  * logging, localization, and component identification.
2775
2794
  * @param {string} [localeRoot] - Optional locale root key for internationalization
2776
2795
  * @param {boolean} [hasMenu=true] - Whether this page should display the menu
2777
2796
  * @memberOf module:lib/engine/NgxPageDirective
2778
2797
  */
2779
- constructor(localeRoot?: string | undefined, hasMenu?: boolean);
2798
+ constructor(localeRoot?: string, hasMenu?: boolean);
2780
2799
  /**
2781
2800
  * @description Ionic lifecycle hook called when the page is about to enter view.
2782
2801
  * @summary This lifecycle hook is triggered just before the page becomes visible to the user.
@@ -2805,208 +2824,595 @@ declare abstract class NgxPageDirective extends NgxDecafComponentDirective imple
2805
2824
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgxPageDirective, never, never, {}, {}, never, never, true, never>;
2806
2825
  }
2807
2826
 
2808
- /**
2809
- * @description Dynamic component renderer for Decaf Angular applications.
2810
- * @summary This component provides a flexible way to dynamically render Angular components
2811
- * at runtime based on a tag name. It handles the creation, property binding, and event
2812
- * subscription for dynamically loaded components. This is particularly useful for
2813
- * building configurable UIs where components need to be determined at runtime.
2814
- *
2815
- * @component {ComponentRendererComponent}
2816
- * @example
2817
- * <ngx-decaf-component-renderer
2818
- * [tag]="tag"
2819
- * [globals]="globals"
2820
- * (listenEvent)="listenEvent($event)">
2821
- * </ngx-decaf-component-renderer>
2822
- *
2823
- * @mermaid
2824
- * classDiagram
2825
- * class ComponentRendererComponent {
2826
- * +ViewContainerRef vcr
2827
- * +string tag
2828
- * +Record~string, unknown~ globals
2829
- * +EnvironmentInjector injector
2830
- * +ComponentRef~unknown~ component
2831
- * +EventEmitter~IBaseCustomEvent~ listenEvent
2832
- * +ngOnInit()
2833
- * +ngOnDestroy()
2834
- * +ngOnChanges(changes)
2835
- * -createComponent(tag, globals)
2836
- * -subscribeEvents()
2837
- * -unsubscribeEvents()
2838
- * }
2839
- * ComponentRendererComponent --|> OnInit
2840
- * ComponentRendererComponent --|> OnChanges
2841
- * ComponentRendererComponent --|> OnDestroy
2842
- *
2843
- * @implements {OnInit}
2844
- * @implements {OnChanges}
2845
- * @implements {OnDestroy}
2846
- */
2847
- declare class ComponentRendererComponent implements OnInit, OnDestroy {
2827
+ declare abstract class NgxModelPageDirective extends NgxPageDirective {
2848
2828
  /**
2849
- * @description Reference to the container where the dynamic component will be rendered.
2850
- * @summary This ViewContainerRef provides the container where the dynamically created
2851
- * component will be inserted into the DOM. It's marked as static to ensure it's available
2852
- * during the ngOnInit lifecycle hook when the component is created.
2829
+ * @description Primary key value of the current model instance.
2830
+ * @summary Specifies the primary key value for the current model record being displayed or
2831
+ * manipulated by the component. This identifier is used for CRUD operations that target
2832
+ * specific records, such as read, update, and delete operations. The value corresponds to
2833
+ * the field designated as the primary key in the model definition.
2834
+ * @type {EventIds}
2835
+ * @memberOf module:lib/engine/NgxComponentDirective
2836
+ */
2837
+ modelId: EventIds;
2838
+ /**
2839
+ * @description The CRUD operation type to be performed on the model.
2840
+ * @summary Specifies which operation (Create, Read, Update, Delete) this component instance
2841
+ * should perform. This determines the UI behavior, form configuration, and available actions.
2842
+ * The operation affects form validation, field availability, and the specific repository
2843
+ * method called during data submission.
2853
2844
  *
2854
- * @type {ViewContainerRef}
2855
- * @memberOf ComponentRendererComponent
2845
+ * @type {OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE}
2846
+ * @default OperationKeys.READ
2847
+ * @memberOf ModelPage
2856
2848
  */
2857
- vcr: ViewContainerRef;
2849
+ operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE;
2858
2850
  /**
2859
- * @description The tag name of the component to be dynamically rendered.
2860
- * @summary This input property specifies which component should be rendered by providing
2861
- * its registered tag name. The tag must correspond to a component that has been registered
2862
- * with the NgxRenderingEngine. This is a required input as it determines which component
2863
- * to create.
2851
+ * @description The name of the model class to operate on.
2852
+ * @summary Identifies which registered model class this component should work with.
2853
+ * This name is used to resolve the model constructor from the global model registry
2854
+ * and instantiate the appropriate repository for data operations. The model must
2855
+ * be properly registered using the @Model decorator for resolution to work.
2864
2856
  *
2865
2857
  * @type {string}
2866
- * @required
2867
- * @memberOf ComponentRendererComponent
2858
+ * @memberOf ModelPage
2868
2859
  */
2869
- tag: string;
2860
+ modelName: string;
2870
2861
  /**
2871
- * @description Global properties to pass to the rendered component.
2872
- * @summary This input property allows passing a set of properties to the dynamically
2873
- * rendered component. These properties will be mapped to the component's inputs if they
2874
- * match. Properties that don't match any input on the target component will be filtered out
2875
- * with a warning.
2862
+ * @description Array of operations allowed for the current model instance.
2863
+ * @summary Dynamically determined list of operations that are permitted based on
2864
+ * the current context and model state. Initially contains CREATE and READ operations,
2865
+ * with UPDATE and DELETE added when a modelId is present. This controls which
2866
+ * action buttons are displayed and which operations are accessible to the user.
2876
2867
  *
2877
- * @type {Record<string, unknown>}
2878
- * @default {}
2879
- * @memberOf ComponentRendererComponent
2868
+ * @type {OperationKeys[]}
2869
+ * @default [OperationKeys.CREATE, OperationKeys.READ]
2870
+ * @memberOf ModelPage
2880
2871
  */
2881
- globals: Record<string, unknown>;
2872
+ allowedOperations: OperationKeys[];
2882
2873
  /**
2883
- * @description Injector used for dependency injection in the dynamic component.
2884
- * @summary This injector is used when creating the dynamic component to provide it with
2885
- * access to the application's dependency injection system. It ensures that the dynamically
2886
- * created component can access the same services and dependencies as statically created
2887
- * components.
2888
- *
2889
- * @type {EnvironmentInjector}
2890
- * @memberOf ComponentRendererComponent
2874
+ * @description Current model data loaded from the repository.
2875
+ * @summary Stores the raw data object representing the current model instance retrieved
2876
+ * from the repository. This property holds the actual data values for the model being
2877
+ * displayed or edited, and is set to undefined when no data is available or when an
2878
+ * error occurs during data loading.
2879
+ * @type {KeyValue | undefined}
2880
+ * @default undefined
2881
+ * @memberOf NgxModelPageDirective
2882
+ */
2883
+ modelData: KeyValue | undefined;
2884
+ /**
2885
+ * @description Error message from failed operations.
2886
+ * @summary Stores error messages that occur during repository operations such as
2887
+ * data loading, creation, update, or deletion. When set, this indicates an error
2888
+ * state that should be displayed to the user. Cleared on successful operations.
2889
+ * @type {string | undefined}
2890
+ * @default undefined
2891
+ * @memberOf NgxModelPageDirective
2891
2892
  */
2892
- injector: EnvironmentInjector;
2893
+ errorMessage: string | undefined;
2893
2894
  /**
2894
- * @description Reference to the dynamically created component.
2895
- * @summary This property holds a reference to the ComponentRef of the dynamically created
2896
- * component. It's used to interact with the component instance, subscribe to its events,
2897
- * and properly destroy it when the renderer is destroyed.
2895
+ * @description Lazy-initialized repository getter with model resolution.
2896
+ * @summary Creates and returns a repository instance for the specified model name.
2897
+ * Resolves the model constructor from the global registry, instantiates the repository,
2898
+ * and creates a new model instance. Throws an InternalError if the model is not
2899
+ * properly registered with the @Model decorator.
2898
2900
  *
2899
- * @type {ComponentRef<unknown>}
2900
- * @memberOf ComponentRendererComponent
2901
+ * @return {DecafRepository<Model>} The repository instance for the current model
2902
+ *
2903
+ * @throws {InternalError} When the model is not found in the registry
2901
2904
  */
2902
- component: ComponentRef<unknown>;
2903
- children: KeyValue[];
2904
- projectable: boolean;
2905
+ protected get repository(): DecafRepository<Model>;
2905
2906
  /**
2906
- * @description Event emitter for events from the rendered component.
2907
- * @summary This output property emits events that originate from the dynamically rendered
2908
- * component. It allows the parent component to listen for and respond to events from the
2909
- * dynamic component, creating a communication channel between the parent and the dynamically
2910
- * rendered child.
2911
- *
2912
- * @type {EventEmitter<IBaseCustomEvent>}
2913
- * @memberOf ComponentRendererComponent
2907
+ * @description Angular lifecycle hook for component initialization.
2908
+ * @summary Initializes the component by setting up the logger instance using the getLogger
2909
+ * utility. This ensures that logging is available throughout the component's lifecycle
2910
+ * for error tracking and debugging purposes.
2914
2911
  */
2915
- listenEvent: EventEmitter<IBaseCustomEvent>;
2912
+ ionViewWillEnter(): Promise<void>;
2916
2913
  /**
2917
- * @description Logger instance for the component.
2918
- * @summary This property holds a Logger instance specific to this component.
2919
- * It's used to log information, warnings, and errors related to the component's
2920
- * operations, particularly useful for debugging and monitoring the dynamic
2921
- * component rendering process.
2914
+ * @description Refreshes the component data by loading the specified model instance.
2915
+ * @summary Loads model data from the repository based on the current operation type.
2916
+ * For READ, UPDATE, and DELETE operations, fetches the existing model data using
2917
+ * the provided unique identifier. Handles errors gracefully by logging them through
2918
+ * the logger instance.
2922
2919
  *
2923
- * @type {Logger}
2924
- * @memberOf ComponentRendererComponent
2920
+ * @param {string} [uid] - The unique identifier of the model to load; defaults to modelId
2925
2921
  */
2926
- logger: Logger;
2922
+ refresh(uid?: EventIds): Promise<void>;
2927
2923
  /**
2928
- * @description Repository model for data operations.
2929
- * @summary The data model repository that this component will use for CRUD operations.
2930
- * This provides a connection to the data layer for retrieving and manipulating data.
2924
+ * @description Generic event handler for component events.
2925
+ * @summary Processes incoming events from child components and routes them to appropriate
2926
+ * handlers based on the event name. Currently handles SUBMIT events by delegating to
2927
+ * the handleSubmit method. This centralized event handling approach allows for easy
2928
+ * extension and consistent event processing.
2931
2929
  *
2932
- * @type {Model| undefined}
2930
+ * @param {IBaseCustomEvent} event - The event object containing event data and metadata
2933
2931
  */
2934
- model: Model | undefined;
2935
- /**
2936
- * @description Repository model for data operations.
2937
- * @summary The data model repository that this component will use for CRUD operations.
2938
- * This provides a connection to the data layer for retrieving and manipulating data.
2939
- *
2940
- * @type {Model| undefined}
2941
- */
2942
- parentComponent: FormParent | ElementRef<unknown> | undefined;
2943
- parent: undefined | KeyValue;
2944
- inner?: TemplateRef<unknown>;
2945
- uid: string;
2932
+ handleEvent(event: IBaseCustomEvent): Promise<void>;
2946
2933
  /**
2947
- * @description Creates an instance of ComponentRendererComponent.
2948
- * @summary Initializes a new ComponentRendererComponent. This component doesn't require
2949
- * any dependencies to be injected in its constructor as it uses the inject function to
2950
- * obtain the EnvironmentInjector.
2934
+ * @description Handles form submission events for CRUD operations.
2935
+ * @summary Processes form submission by executing the appropriate repository operation
2936
+ * based on the current operation type. Handles CREATE, UPDATE, and DELETE operations,
2937
+ * processes the form data, refreshes the repository cache, navigates back to the previous
2938
+ * page, and displays success notifications. Comprehensive error handling ensures robust
2939
+ * operation with detailed logging.
2951
2940
  *
2952
- * @memberOf ComponentRendererComponent
2941
+ * @param {IBaseCustomEvent} event - The submit event containing form data
2942
+ * @return {Promise<IModelPageCustomEvent|void>} Promise that resolves on success or throws on error
2953
2943
  */
2954
- constructor();
2944
+ handleSubmit(event: IBaseCustomEvent): Promise<IModelPageCustomEvent | void>;
2955
2945
  /**
2956
- * @description Initializes the component after Angular first displays the data-bound properties.
2957
- * @summary Sets up the component by creating the dynamic component specified by the tag input.
2958
- * This method is called once when the component is initialized and triggers the dynamic
2959
- * component creation process with the provided tag name and global properties.
2946
+ * @description Retrieves a model instance from the repository by unique identifier.
2947
+ * @summary Fetches a specific model instance using the repository's read method.
2948
+ * Handles both string and numeric identifiers by automatically converting numeric
2949
+ * strings to numbers. If no identifier is provided, logs an informational message
2950
+ * and navigates back to the previous page. Returns undefined for missing instances.
2960
2951
  *
2961
- * @mermaid
2962
- * sequenceDiagram
2963
- * participant A as Angular Lifecycle
2964
- * participant C as ComponentRendererComponent
2965
- * participant R as NgxRenderingEngine
2966
- *
2967
- * A->>C: ngOnInit()
2968
- * C->>C: createComponent(tag, globals)
2969
- * C->>R: components(tag)
2970
- * R-->>C: Return component constructor
2971
- * C->>C: Process component inputs
2972
- * C->>C: Create component instance
2973
- * C->>C: subscribeEvents()
2974
- *
2975
- * @return {void}
2976
- * @memberOf ComponentRendererComponent
2952
+ * @param {string} uid - The unique identifier of the model instance to retrieve
2953
+ * @return {Promise<Model | undefined>} Promise resolving to the model instance or undefined
2977
2954
  */
2978
- ngOnInit(): void;
2955
+ handleGet(uid?: EventIds): Promise<Model | undefined>;
2979
2956
  /**
2980
- * @description Cleans up resources when the component is destroyed.
2981
- * @summary Performs cleanup operations when the component is being destroyed by Angular.
2982
- * This includes unsubscribing from all event emitters of the dynamic component and
2983
- * destroying the rendering engine instance to prevent memory leaks.
2957
+ * @description Parses and transforms form data for repository operations.
2958
+ * @summary Converts raw form data into the appropriate format for repository operations.
2959
+ * For DELETE operations, returns the primary key value (string or number). For CREATE
2960
+ * and UPDATE operations, builds a complete model instance using the Model.build method
2961
+ * with proper primary key assignment for updates.
2984
2962
  *
2985
- * @mermaid
2986
- * sequenceDiagram
2987
- * participant A as Angular Lifecycle
2988
- * participant C as ComponentRendererComponent
2989
- * participant R as NgxRenderingEngine
2963
+ * @param {Partial<Model>} data - The raw form data to be processed
2964
+ * @return {Model | string | number} Processed data ready for repository operations
2965
+ * @private
2966
+ */
2967
+ private parseData;
2968
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxModelPageDirective, never>;
2969
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxModelPageDirective, never, never, { "modelId": { "alias": "modelId"; "required": false; }; "operation": { "alias": "operation"; "required": false; }; "modelName": { "alias": "modelName"; "required": false; }; }, {}, never, never, true, never>;
2970
+ }
2971
+
2972
+ /**
2973
+ * @module module:lib/engine/NgxParentComponentDirective
2974
+ * @description Directive base for parent container components used by the rendering system.
2975
+ * @summary Provides NgxParentComponentDirective which offers inputs for children metadata,
2976
+ * column/row configuration and parent component wiring used by layout and container components.
2977
+ *
2978
+ * @link {@link NgxParentComponentDirective}
2979
+ */
2980
+
2981
+ /**
2982
+ * @description Layout component for creating responsive grid layouts in Angular applications.
2983
+ * @summary This component provides a flexible grid system that can be configured with dynamic
2984
+ * rows and columns. It supports responsive breakpoints and can render child components within
2985
+ * the grid structure. The component extends NgxComponentDirective to inherit common functionality
2986
+ * and integrates with the model and component renderer systems.
2987
+ *
2988
+ * @class NgxParentComponentDirective
2989
+ * @extends {NgxParentComponentDirective}
2990
+ * @implements {OnInit}
2991
+ */
2992
+ declare class NgxParentComponentDirective extends NgxComponentDirective implements OnInit {
2993
+ /**
2994
+ * @description The display name or title of the fieldset section.
2995
+ * @summary Sets the legend or header text that appears in the accordion header. This text
2996
+ * provides a clear label for the collapsible section, helping users understand what content
2997
+ * is contained within. The name is displayed prominently and serves as the clickable area
2998
+ * for expanding/collapsing the fieldset.
2990
2999
  *
2991
- * A->>C: ngOnDestroy()
2992
- * alt component exists
2993
- * C->>C: unsubscribeEvents()
2994
- * C->>R: destroy()
2995
- * end
3000
+ * @type {string}
3001
+ * @default 'Child'
3002
+ */
3003
+ parentComponent: FormParent;
3004
+ /**
3005
+ * @description Array of UI model metadata for all form fields.
3006
+ * @summary Contains the complete collection of UI model metadata that defines
3007
+ * the structure, validation, and presentation of form fields across all pages.
3008
+ * Each metadata object contains information about field type, validation rules,
3009
+ * page assignment, and display properties.
2996
3010
  *
2997
- * @return {Promise<void>} A promise that resolves when cleanup is complete
2998
- * @memberOf ComponentRendererComponent
3011
+ * @type {UIModelMetadata[]}
2999
3012
  */
3000
- ngOnDestroy(): Promise<void>;
3013
+ children: UIModelMetadata[] | KeyValue[];
3001
3014
  /**
3002
- * @description Creates and renders a dynamic component.
3003
- * @summary This method handles the creation of a dynamic component based on the provided tag.
3004
- * It retrieves the component constructor from the rendering engine, processes its inputs,
3005
- * filters out unmapped properties, creates the component instance, and sets up event subscriptions.
3015
+ * @description Number of columns or array of column definitions for the grid layout.
3016
+ * @summary Defines the column structure of the grid. When a number is provided, it creates
3017
+ * that many equal-width columns. When an array is provided, each element can define specific
3018
+ * column properties or sizing. This allows for flexible grid layouts that can adapt to
3019
+ * different content requirements.
3006
3020
  *
3007
- * @param {string} tag - The tag name of the component to create
3008
- * @param {KeyValue} globals - Global properties to pass to the component
3009
- * @return {void}
3021
+ * @type {(number | string[])}
3022
+ * @default 1
3023
+ */
3024
+ cols: number | string[];
3025
+ /**
3026
+ * @description Number of rows or array of row definitions for the grid layout.
3027
+ * @summary Defines the row structure of the grid. When a number is provided, it creates
3028
+ * that many equal-height rows. When an array is provided, each element can define specific
3029
+ * row properties or sizing. This provides control over vertical spacing and content organization.
3030
+ *
3031
+ * @type {(number | string[])}
3032
+ * @default 1
3033
+ */
3034
+ rows: number | KeyValue[] | string[];
3035
+ ngOnInit(model?: Model | string): Promise<void>;
3036
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxParentComponentDirective, never>;
3037
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxParentComponentDirective, never, never, { "parentComponent": { "alias": "parentComponent"; "required": false; }; "children": { "alias": "children"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, true, never>;
3038
+ }
3039
+
3040
+ declare abstract class NgxFormDirective extends NgxParentComponentDirective implements OnInit, IFormElement, OnDestroy, IRenderedModel {
3041
+ crudFieldComponent: string;
3042
+ /**
3043
+ * @description Reactive form group associated with this fieldset.
3044
+ * @summary The FormGroup instance that contains all form controls within this fieldset.
3045
+ * Used for form validation, value management, and integration with Angular's reactive forms.
3046
+ *
3047
+ * @type {FormGroup}
3048
+ */
3049
+ parentFormId: string;
3050
+ /**
3051
+ * @description Reference to the reactive form DOM element.
3052
+ * @summary ViewChild reference that provides direct access to the form's DOM element.
3053
+ * This enables programmatic manipulation of the form element and access to native
3054
+ * HTML form properties and methods when needed.
3055
+ *
3056
+ * @type {ElementRef}
3057
+ */
3058
+ component: ElementRef;
3059
+ /**
3060
+ * @description Field update trigger mode for form validation.
3061
+ * @summary Determines when form field validation should be triggered. Options include
3062
+ * 'change', 'blur', or 'submit'. This affects the user experience by controlling
3063
+ * when validation feedback is shown to the user during form interaction.
3064
+ *
3065
+ * @type {FieldUpdateMode}
3066
+ * @default 'change'
3067
+ */
3068
+ updateOn: FieldUpdateMode;
3069
+ /**
3070
+ * @description Form submission target specification.
3071
+ * @summary Specifies where to display the response after form submission, similar
3072
+ * to the HTML form target attribute. Options include '_self', '_blank', '_parent',
3073
+ * '_top', or a named frame. Controls the browser behavior for form responses.
3074
+ *
3075
+ * @type {HTMLFormTarget}
3076
+ * @default '_self'
3077
+ */
3078
+ target: HTMLFormTarget;
3079
+ /**
3080
+ * @description HTTP method or submission strategy for the form.
3081
+ * @summary Defines how the form should be submitted. 'get' and 'post' correspond
3082
+ * to standard HTTP methods for traditional form submission, while 'event' uses
3083
+ * Angular event-driven submission for single-page application workflows.
3084
+ *
3085
+ * @type {'get' | 'post' | 'event'}
3086
+ * @default 'event'
3087
+ */
3088
+ method: 'get' | 'post' | 'event';
3089
+ /**
3090
+ * @description Configuration options for the CRUD form behavior.
3091
+ * @summary Contains various configuration settings that control form rendering,
3092
+ * validation, and behavior. These options are merged with default settings
3093
+ * during component initialization to customize the form's functionality.
3094
+ *
3095
+ * @type {ICrudFormOptions}
3096
+ */
3097
+ options: ICrudFormOptions;
3098
+ /**
3099
+ * @description Optional action identifier for form submission context.
3100
+ * @summary Specifies a custom action name that will be included in the submit event.
3101
+ * If not provided, defaults to the standard submit event constant. Used to
3102
+ * distinguish between different types of form submissions within the same component.
3103
+ *
3104
+ * @type {string | undefined}
3105
+ */
3106
+ action?: string;
3107
+ /**
3108
+ * @description The current CRUD operation being performed.
3109
+ * @summary Specifies the type of operation this form is handling (CREATE, READ, UPDATE, DELETE).
3110
+ * This is a required input that determines form behavior, validation rules, and available actions.
3111
+ * The operation affects form state, button visibility, and submission logic.
3112
+ *
3113
+ * @type {CrudOperations}
3114
+ * @required
3115
+ */
3116
+ operation: CrudOperations;
3117
+ /**
3118
+ * @description Custom event handlers for form actions.
3119
+ * @summary A record of event handler functions keyed by event names that can be
3120
+ * triggered during form operations. These handlers provide extensibility for
3121
+ * custom business logic and can be invoked for various form events and actions.
3122
+ *
3123
+ * @type {HandlerLike}
3124
+ */
3125
+ handlers: HandlerLike;
3126
+ /**
3127
+ * @description Angular reactive FormGroup for form state management.
3128
+ * @summary The FormGroup instance that manages all form controls, validation,
3129
+ * and form state. This is the main interface for accessing form values and
3130
+ * controlling form behavior. May be undefined for read-only operations.
3131
+ *
3132
+ * @type {FormGroup | undefined}
3133
+ */
3134
+ formGroup: FormParent | undefined;
3135
+ /**
3136
+ * @description Unique identifier for the form renderer.
3137
+ * @summary A unique string identifier used to register and manage this form
3138
+ * instance within the NgxFormService. This ID is also used as the HTML id
3139
+ * attribute for the form element, enabling DOM queries and form management.
3140
+ *
3141
+ * @type {string}
3142
+ */
3143
+ rendererId: string;
3144
+ /**
3145
+ * @description Event emitter for form submission events.
3146
+ * @summary Emits ICrudFormEvent objects when the form is submitted, providing
3147
+ * form data, component information, and any associated handlers to parent
3148
+ * components. This enables decoupled handling of form submission logic.
3149
+ *
3150
+ * @type {EventEmitter<ICrudFormEvent>}
3151
+ */
3152
+ submitEvent: EventEmitter<ICrudFormEvent>;
3153
+ /**
3154
+ * @description Unique identifier for the current record instance.
3155
+ * @summary This property holds a unique string value that identifies the specific record being managed by the form.
3156
+ * It is automatically generated if not provided, ensuring each form instance has a distinct identifier.
3157
+ * The uid is used for tracking, referencing, and emitting events related to the current record, and may be used
3158
+ * in conjunction with the primary key for CRUD operations.
3159
+ *
3160
+ * @type {string}
3161
+ * @default Randomly generated 12-character string
3162
+ */
3163
+ allowClear: boolean;
3164
+ protected activeFormGroupIndex: number;
3165
+ get activeFormGroup(): FormParent;
3166
+ /**
3167
+ * @description Component initialization lifecycle method.
3168
+ * @summary Initializes the component by setting up the logger, configuring form state
3169
+ * based on the operation type, and merging configuration options. For READ and DELETE
3170
+ * operations, the formGroup is set to undefined since these operations don't require
3171
+ * form input. Configuration options are merged with default settings.
3172
+ *
3173
+ * @returns {Promise<void>}
3174
+ */
3175
+ ngOnInit(model?: Model | string): Promise<void>;
3176
+ /**
3177
+ * @description Component cleanup lifecycle method.
3178
+ * @summary Performs cleanup operations when the component is destroyed.
3179
+ * Unregisters the FormGroup from the NgxFormService to prevent memory leaks
3180
+ * and ensure proper resource cleanup.
3181
+ *
3182
+ * @returns {void}
3183
+ */
3184
+ ngOnDestroy(): void;
3185
+ getFormArrayIndex(index: number): FormParent | undefined;
3186
+ /**
3187
+ * @description Handles form reset or navigation back functionality.
3188
+ * @summary Provides different reset behavior based on the current operation.
3189
+ * For CREATE and UPDATE operations, resets the form to its initial state.
3190
+ * For READ and DELETE operations, navigates back in the browser history
3191
+ * since these operations don't have modifiable form data to reset.
3192
+ *
3193
+ * @returns {void}
3194
+ */
3195
+ handleReset(): void;
3196
+ handleSubmit(event?: SubmitEvent, eventName?: string, componentName?: string): Promise<boolean | void>;
3197
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxFormDirective, never>;
3198
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxFormDirective, never, never, { "parentFormId": { "alias": "parentFormId"; "required": false; }; "updateOn": { "alias": "updateOn"; "required": false; }; "target": { "alias": "target"; "required": false; }; "method": { "alias": "method"; "required": false; }; "options": { "alias": "options"; "required": false; }; "action": { "alias": "action"; "required": false; }; "operation": { "alias": "operation"; "required": true; }; "handlers": { "alias": "handlers"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "rendererId": { "alias": "rendererId"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; }, { "submitEvent": "submitEvent"; }, never, never, true, never>;
3199
+ }
3200
+
3201
+ declare abstract class NgxMediaDirective extends NgxComponentDirective implements OnDestroy {
3202
+ private destroy$;
3203
+ private resizeSubject;
3204
+ resize$: Observable<IWindowResizeEvent>;
3205
+ colorScheme$: Observable<WindowColorScheme>;
3206
+ protected zone: NgZone;
3207
+ constructor(localeRoot?: string);
3208
+ isDarkMode(): Promise<boolean>;
3209
+ ngOnDestroy(): void;
3210
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxMediaDirective, never>;
3211
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxMediaDirective, never, never, {}, {}, never, never, true, never>;
3212
+ }
3213
+
3214
+ /**
3215
+ * @description Dynamic component renderer for Decaf Angular applications.
3216
+ * @summary This component provides a flexible way to dynamically render Angular components
3217
+ * at runtime based on a tag name. It handles the creation, property binding, and event
3218
+ * subscription for dynamically loaded components. This is particularly useful for
3219
+ * building configurable UIs where components need to be determined at runtime.
3220
+ *
3221
+ * @component {ComponentRendererComponent}
3222
+ * @example
3223
+ * <ngx-decaf-component-renderer
3224
+ * [tag]="tag"
3225
+ * [globals]="globals"
3226
+ * (listenEvent)="listenEvent($event)">
3227
+ * </ngx-decaf-component-renderer>
3228
+ *
3229
+ * @mermaid
3230
+ * classDiagram
3231
+ * class ComponentRendererComponent {
3232
+ * +ViewContainerRef vcr
3233
+ * +string tag
3234
+ * +Record~string, unknown~ globals
3235
+ * +EnvironmentInjector injector
3236
+ * +ComponentRef~unknown~ component
3237
+ * +EventEmitter~IBaseCustomEvent~ listenEvent
3238
+ * +ngOnInit()
3239
+ * +ngOnDestroy()
3240
+ * +ngOnChanges(changes)
3241
+ * -createComponent(tag, globals)
3242
+ * -subscribeEvents()
3243
+ * -unsubscribeEvents()
3244
+ * }
3245
+ * ComponentRendererComponent --|> OnInit
3246
+ * ComponentRendererComponent --|> OnChanges
3247
+ * ComponentRendererComponent --|> OnDestroy
3248
+ *
3249
+ * @implements {OnInit}
3250
+ * @implements {OnChanges}
3251
+ * @implements {OnDestroy}
3252
+ */
3253
+ declare class ComponentRendererComponent implements OnInit, OnDestroy {
3254
+ /**
3255
+ * @description Reference to the container where the dynamic component will be rendered.
3256
+ * @summary This ViewContainerRef provides the container where the dynamically created
3257
+ * component will be inserted into the DOM. It's marked as static to ensure it's available
3258
+ * during the ngOnInit lifecycle hook when the component is created.
3259
+ *
3260
+ * @type {ViewContainerRef}
3261
+ * @memberOf ComponentRendererComponent
3262
+ */
3263
+ vcr: ViewContainerRef;
3264
+ /**
3265
+ * @description The tag name of the component to be dynamically rendered.
3266
+ * @summary This input property specifies which component should be rendered by providing
3267
+ * its registered tag name. The tag must correspond to a component that has been registered
3268
+ * with the NgxRenderingEngine. This is a required input as it determines which component
3269
+ * to create.
3270
+ *
3271
+ * @type {string}
3272
+ * @required
3273
+ * @memberOf ComponentRendererComponent
3274
+ */
3275
+ tag: string;
3276
+ /**
3277
+ * @description Global properties to pass to the rendered component.
3278
+ * @summary This input property allows passing a set of properties to the dynamically
3279
+ * rendered component. These properties will be mapped to the component's inputs if they
3280
+ * match. Properties that don't match any input on the target component will be filtered out
3281
+ * with a warning.
3282
+ *
3283
+ * @type {Record<string, unknown>}
3284
+ * @default {}
3285
+ * @memberOf ComponentRendererComponent
3286
+ */
3287
+ globals: Record<string, unknown>;
3288
+ /**
3289
+ * @description Injector used for dependency injection in the dynamic component.
3290
+ * @summary This injector is used when creating the dynamic component to provide it with
3291
+ * access to the application's dependency injection system. It ensures that the dynamically
3292
+ * created component can access the same services and dependencies as statically created
3293
+ * components.
3294
+ *
3295
+ * @type {EnvironmentInjector}
3296
+ * @memberOf ComponentRendererComponent
3297
+ */
3298
+ injector: EnvironmentInjector;
3299
+ /**
3300
+ * @description Reference to the dynamically created component.
3301
+ * @summary This property holds a reference to the ComponentRef of the dynamically created
3302
+ * component. It's used to interact with the component instance, subscribe to its events,
3303
+ * and properly destroy it when the renderer is destroyed.
3304
+ *
3305
+ * @type {ComponentRef<unknown>}
3306
+ * @memberOf ComponentRendererComponent
3307
+ */
3308
+ component: ComponentRef<unknown>;
3309
+ children: KeyValue[];
3310
+ projectable: boolean;
3311
+ /**
3312
+ * @description Event emitter for events from the rendered component.
3313
+ * @summary This output property emits events that originate from the dynamically rendered
3314
+ * component. It allows the parent component to listen for and respond to events from the
3315
+ * dynamic component, creating a communication channel between the parent and the dynamically
3316
+ * rendered child.
3317
+ *
3318
+ * @type {EventEmitter<IBaseCustomEvent>}
3319
+ * @memberOf ComponentRendererComponent
3320
+ */
3321
+ listenEvent: EventEmitter<IBaseCustomEvent>;
3322
+ /**
3323
+ * @description Logger instance for the component.
3324
+ * @summary This property holds a Logger instance specific to this component.
3325
+ * It's used to log information, warnings, and errors related to the component's
3326
+ * operations, particularly useful for debugging and monitoring the dynamic
3327
+ * component rendering process.
3328
+ *
3329
+ * @type {Logger}
3330
+ * @memberOf ComponentRendererComponent
3331
+ */
3332
+ logger: Logger;
3333
+ /**
3334
+ * @description Repository model for data operations.
3335
+ * @summary The data model repository that this component will use for CRUD operations.
3336
+ * This provides a connection to the data layer for retrieving and manipulating data.
3337
+ *
3338
+ * @type {Model| undefined}
3339
+ */
3340
+ model: Model | undefined;
3341
+ /**
3342
+ * @description Repository model for data operations.
3343
+ * @summary The data model repository that this component will use for CRUD operations.
3344
+ * This provides a connection to the data layer for retrieving and manipulating data.
3345
+ *
3346
+ * @type {Model| undefined}
3347
+ */
3348
+ parentComponent: FormParent | ElementRef<unknown> | undefined;
3349
+ parent: undefined | KeyValue;
3350
+ inner?: TemplateRef<unknown>;
3351
+ uid: string;
3352
+ /**
3353
+ * @description Creates an instance of ComponentRendererComponent.
3354
+ * @summary Initializes a new ComponentRendererComponent. This component doesn't require
3355
+ * any dependencies to be injected in its constructor as it uses the inject function to
3356
+ * obtain the EnvironmentInjector.
3357
+ *
3358
+ * @memberOf ComponentRendererComponent
3359
+ */
3360
+ constructor();
3361
+ /**
3362
+ * @description Initializes the component after Angular first displays the data-bound properties.
3363
+ * @summary Sets up the component by creating the dynamic component specified by the tag input.
3364
+ * This method is called once when the component is initialized and triggers the dynamic
3365
+ * component creation process with the provided tag name and global properties.
3366
+ *
3367
+ * @mermaid
3368
+ * sequenceDiagram
3369
+ * participant A as Angular Lifecycle
3370
+ * participant C as ComponentRendererComponent
3371
+ * participant R as NgxRenderingEngine
3372
+ *
3373
+ * A->>C: ngOnInit()
3374
+ * C->>C: createComponent(tag, globals)
3375
+ * C->>R: components(tag)
3376
+ * R-->>C: Return component constructor
3377
+ * C->>C: Process component inputs
3378
+ * C->>C: Create component instance
3379
+ * C->>C: subscribeEvents()
3380
+ *
3381
+ * @return {void}
3382
+ * @memberOf ComponentRendererComponent
3383
+ */
3384
+ ngOnInit(): void;
3385
+ /**
3386
+ * @description Cleans up resources when the component is destroyed.
3387
+ * @summary Performs cleanup operations when the component is being destroyed by Angular.
3388
+ * This includes unsubscribing from all event emitters of the dynamic component and
3389
+ * destroying the rendering engine instance to prevent memory leaks.
3390
+ *
3391
+ * @mermaid
3392
+ * sequenceDiagram
3393
+ * participant A as Angular Lifecycle
3394
+ * participant C as ComponentRendererComponent
3395
+ * participant R as NgxRenderingEngine
3396
+ *
3397
+ * A->>C: ngOnDestroy()
3398
+ * alt component exists
3399
+ * C->>C: unsubscribeEvents()
3400
+ * C->>R: destroy()
3401
+ * end
3402
+ *
3403
+ * @return {Promise<void>} A promise that resolves when cleanup is complete
3404
+ * @memberOf ComponentRendererComponent
3405
+ */
3406
+ ngOnDestroy(): Promise<void>;
3407
+ /**
3408
+ * @description Creates and renders a dynamic component.
3409
+ * @summary This method handles the creation of a dynamic component based on the provided tag.
3410
+ * It retrieves the component constructor from the rendering engine, processes its inputs,
3411
+ * filters out unmapped properties, creates the component instance, and sets up event subscriptions.
3412
+ *
3413
+ * @param {string} tag - The tag name of the component to create
3414
+ * @param {KeyValue} globals - Global properties to pass to the component
3415
+ * @return {void}
3010
3416
  *
3011
3417
  * @mermaid
3012
3418
  * sequenceDiagram
@@ -3092,7 +3498,7 @@ declare class ComponentRendererComponent implements OnInit, OnDestroy {
3092
3498
  * @module module:lib/components/crud-field/crud-field.component
3093
3499
  * @description CRUD field component module.
3094
3500
  * @summary Exposes `CrudFieldComponent`, a dynamic form field used in CRUD forms supporting
3095
- * many input types, validation and integration with `NgxDecafFormFieldDirective` utilities.
3501
+ * many input types, validation and integration with `NgxFormFieldDirective` utilities.
3096
3502
  *
3097
3503
  * @link {@link CrudFieldComponent}
3098
3504
  */
@@ -3100,7 +3506,7 @@ declare class ComponentRendererComponent implements OnInit, OnDestroy {
3100
3506
  /**
3101
3507
  * @description A dynamic form field component for CRUD operations.
3102
3508
  * @summary The CrudFieldComponent is a versatile form field component that adapts to different
3103
- * input types and CRUD operations. It extends NgxDecafFormFieldDirective to inherit form handling capabilities
3509
+ * input types and CRUD operations. It extends NgxFormFieldDirective to inherit form handling capabilities
3104
3510
  * and implements lifecycle hooks to properly initialize, render, and clean up. This component
3105
3511
  * supports various input types (text, number, date, select, etc.), validation rules, and styling
3106
3512
  * options, making it suitable for building dynamic forms for create, read, update, and delete
@@ -3140,7 +3546,7 @@ declare class ComponentRendererComponent implements OnInit, OnDestroy {
3140
3546
  *
3141
3547
  * @memberOf module:for-angular
3142
3548
  */
3143
- declare class CrudFieldComponent extends NgxDecafFormFieldDirective implements OnInit, OnDestroy, AfterViewInit {
3549
+ declare class CrudFieldComponent extends NgxFormFieldDirective implements OnInit, OnDestroy, AfterViewInit {
3144
3550
  /**
3145
3551
  * @description The CRUD operation being performed.
3146
3552
  * @summary Specifies which CRUD operation (Create, Read, Update, Delete) the field is being used for.
@@ -3461,394 +3867,165 @@ declare class CrudFieldComponent extends NgxDecafFormFieldDirective implements O
3461
3867
  /**
3462
3868
  * @description Input mode for text inputs.
3463
3869
  * @summary Hints at the type of data that might be entered by the user while editing the element.
3464
- * This can affect the virtual keyboard layout on mobile devices.
3465
- *
3466
- * @type {'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'}
3467
- * @default 'none'
3468
- * @memberOf CrudFieldComponent
3469
- */
3470
- inputmode: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
3471
- /**
3472
- * @description Autocomplete behavior for the field.
3473
- * @summary Specifies whether and how the browser should automatically complete the input.
3474
- * This can improve user experience by suggesting previously entered values.
3475
- *
3476
- * @type {AutocompleteTypes}
3477
- * @default 'off'
3478
- * @memberOf CrudFieldComponent
3479
- */
3480
- autocomplete: AutocompleteTypes;
3481
- /**
3482
- * @description Fill style for the field.
3483
- * @summary Determines the fill style of the field, such as 'outline' or 'solid'.
3484
- * This affects the border and background of the field.
3485
- *
3486
- * @type {'outline' | 'solid'}
3487
- * @default 'outline'
3488
- * @memberOf CrudFieldComponent
3489
- */
3490
- fill: 'outline' | 'solid';
3491
- /**
3492
- * @description Placement of the label relative to the field.
3493
- * @summary Specifies where the label should be placed relative to the field.
3494
- * Options include 'start', 'end', 'floating', 'stacked', and 'fixed'.
3495
- *
3496
- * @type {'start' | 'end' | 'floating' | 'stacked' | 'fixed'}
3497
- * @default 'floating'
3498
- * @memberOf CrudFieldComponent
3499
- */
3500
- labelPlacement: 'start' | 'end' | 'floating' | 'stacked' | 'fixed';
3501
- /**
3502
- * @description Update mode for the field.
3503
- * @summary Determines when the field value should be updated in the form model.
3504
- * Options include 'change', 'blur', and 'submit'.
3505
- *
3506
- * @type {FieldUpdateMode}
3507
- * @default 'change'
3508
- * @memberOf CrudFieldComponent
3509
- */
3510
- updateOn: FieldUpdateMode;
3511
- /**
3512
- * @description Reference to the field component.
3513
- * @summary Provides a reference to the field component element, allowing direct access to its properties and methods.
3514
- *
3515
- * @type {ElementRef}
3516
- * @memberOf CrudFieldComponent
3517
- */
3518
- component: ElementRef;
3519
- /**
3520
- * @description Parent form group.
3521
- * @summary References the parent form group to which this field belongs.
3522
- * This is necessary for integrating the field with Angular's reactive forms.
3523
- *
3524
- * @type {FormGroup}
3525
- * @memberOf CrudFieldComponent
3526
- */
3527
- formGroup: FormGroup | undefined;
3528
- /**
3529
- * @description Angular FormControl instance for this field.
3530
- * @summary The specific FormControl instance that manages this field's state, validation,
3531
- * and value. This provides direct access to Angular's reactive forms functionality
3532
- * for this individual field within the broader form structure.
3533
- *
3534
- * @type {FormControl}
3535
- * @memberOf CrudFieldComponent
3536
- */
3537
- formControl: FormControl;
3538
- /**
3539
- * @description Indicates if this field supports multiple values.
3540
- * @summary When true, this field can handle multiple values, typically used in
3541
- * multi-select scenarios or when the field is part of a form array structure
3542
- * that allows multiple entries of the same field type.
3543
- *
3544
- * @type {boolean}
3545
- * @default false
3546
- * @memberOf CrudFieldComponent
3547
- */
3548
- multiple: boolean;
3549
- /**
3550
- * @description Unique identifier for the current record.
3551
- * @summary A unique identifier for the current record being displayed or manipulated.
3552
- * This is typically used in conjunction with the primary key for operations on specific records.
3553
- *
3554
- * @type {string | number}
3555
- */
3556
- uid: string;
3557
- page: number;
3558
- /**
3559
- * @description Translatability of field labels.
3560
- * @summary Indicates whether the field labels should be translated based on the current language settings.
3561
- * This is useful for applications supporting multiple languages.
3562
- *
3563
- * @type {StringOrBoolean}
3564
- * @default true
3565
- * @memberOf CrudFieldComponent
3566
- */
3567
- translatable: StringOrBoolean;
3568
- /**
3569
- * @description Component initialization lifecycle method.
3570
- * @summary Initializes the field component based on the operation type and field configuration.
3571
- * For READ and DELETE operations, removes the form group to make fields read-only.
3572
- * For other operations, sets up icons, configures multi-value support if needed,
3573
- * and sets default values for radio buttons if no value is provided.
3574
- *
3575
- * @returns {void}
3576
- * @memberOf CrudFieldComponent
3577
- */
3578
- ngOnInit(): Promise<void>;
3579
- /**
3580
- * Returns a list of options for select or radio inputs, with their `text` property
3581
- * localized if it does not already include the word 'options'. The localization key
3582
- * is generated from the component's label, replacing 'label' with 'options'.
3583
- *
3584
- * @returns {CrudFieldOption[]} The array of parsed and localized options.
3585
- * @memberOf CrudFieldComponent
3586
- */
3587
- getOptions(): Promise<CrudFieldOption[]>;
3588
- /**
3589
- * @description Component after view initialization lifecycle method.
3590
- * @summary Calls the parent afterViewInit method for READ and DELETE operations.
3591
- * This ensures proper initialization of read-only fields that don't require
3592
- * form functionality but still need view setup.
3593
- *
3594
- * @returns {void}
3595
- * @memberOf CrudFieldComponent
3596
- */
3597
- ngAfterViewInit(): void;
3598
- /**
3599
- * @description Component cleanup lifecycle method.
3600
- * @summary Performs cleanup operations for READ and DELETE operations by calling
3601
- * the parent onDestroy method. This ensures proper resource cleanup for
3602
- * read-only field components.
3603
- *
3604
- * @returns {void}
3605
- * @memberOf CrudFieldComponent
3606
- */
3607
- ngOnDestroy(): void;
3608
- toggleOptionSelection(val: string, event: CheckboxCustomEvent): void;
3609
- isOptionChecked(value: string): boolean;
3610
- /**
3611
- * @description Handles fieldset group update events from parent fieldsets.
3612
- * @summary Processes events triggered when an existing group needs to be updated.
3613
- * Updates the active form group index and refreshes the form group and form control
3614
- * references to point to the group being edited.
3615
- *
3616
- * @param {CustomEvent} event - The fieldset update group event containing update details
3617
- * @returns {void}
3618
- * @memberOf CrudFieldComponent
3619
- */
3620
- handleFieldsetUpdateGroupEvent(event: CustomEvent): void;
3621
- static ɵfac: i0.ɵɵFactoryDeclaration<CrudFieldComponent, never>;
3622
- static ɵcmp: i0.ɵɵComponentDeclaration<CrudFieldComponent, "ngx-decaf-crud-field", never, { "operation": { "alias": "operation"; "required": true; }; "name": { "alias": "name"; "required": true; }; "className": { "alias": "className"; "required": false; }; "path": { "alias": "path"; "required": true; }; "childOf": { "alias": "childOf"; "required": false; }; "type": { "alias": "type"; "required": true; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "format": { "alias": "format"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "max": { "alias": "max"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "min": { "alias": "min"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "step": { "alias": "step"; "required": false; }; "equals": { "alias": "equals"; "required": false; }; "different": { "alias": "different"; "required": false; }; "lessThan": { "alias": "lessThan"; "required": false; }; "lessThanOrEqual": { "alias": "lessThanOrEqual"; "required": false; }; "greaterThan": { "alias": "greaterThan"; "required": false; }; "greaterThanOrEqual": { "alias": "greaterThanOrEqual"; "required": false; }; "alignment": { "alias": "alignment"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "justify": { "alias": "justify"; "required": false; }; "cancelText": { "alias": "cancelText"; "required": false; }; "interface": { "alias": "interface"; "required": false; }; "options": { "alias": "options"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "spellcheck": { "alias": "spellcheck"; "required": false; }; "inputmode": { "alias": "inputmode"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "fill": { "alias": "fill"; "required": false; }; "labelPlacement": { "alias": "labelPlacement"; "required": false; }; "updateOn": { "alias": "updateOn"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "uid": { "alias": "uid"; "required": false; }; "page": { "alias": "page"; "required": false; }; "translatable": { "alias": "translatable"; "required": false; }; }, {}, never, never, true, never>;
3623
- }
3624
-
3625
- /**
3626
- * @module module:lib/engine/NgxParentComponentDirective
3627
- * @description Directive base for parent container components used by the rendering system.
3628
- * @summary Provides NgxParentComponentDirective which offers inputs for children metadata,
3629
- * column/row configuration and parent component wiring used by layout and container components.
3630
- *
3631
- * @link {@link NgxParentComponentDirective}
3632
- */
3633
-
3634
- /**
3635
- * @description Layout component for creating responsive grid layouts in Angular applications.
3636
- * @summary This component provides a flexible grid system that can be configured with dynamic
3637
- * rows and columns. It supports responsive breakpoints and can render child components within
3638
- * the grid structure. The component extends NgxDecafComponentDirective to inherit common functionality
3639
- * and integrates with the model and component renderer systems.
3640
- *
3641
- * @class NgxParentComponentDirective
3642
- * @extends {NgxParentComponentDirective}
3643
- * @implements {OnInit}
3644
- */
3645
- declare class NgxParentComponentDirective extends NgxDecafComponentDirective implements OnInit {
3646
- /**
3647
- * @description The display name or title of the fieldset section.
3648
- * @summary Sets the legend or header text that appears in the accordion header. This text
3649
- * provides a clear label for the collapsible section, helping users understand what content
3650
- * is contained within. The name is displayed prominently and serves as the clickable area
3651
- * for expanding/collapsing the fieldset.
3652
- *
3653
- * @type {string}
3654
- * @default 'Child'
3655
- */
3656
- parentComponent: FormParent;
3657
- /**
3658
- * @description Array of UI model metadata for all form fields.
3659
- * @summary Contains the complete collection of UI model metadata that defines
3660
- * the structure, validation, and presentation of form fields across all pages.
3661
- * Each metadata object contains information about field type, validation rules,
3662
- * page assignment, and display properties.
3663
- *
3664
- * @type {UIModelMetadata[]}
3665
- */
3666
- children: UIModelMetadata[] | KeyValue[];
3667
- /**
3668
- * @description Number of columns or array of column definitions for the grid layout.
3669
- * @summary Defines the column structure of the grid. When a number is provided, it creates
3670
- * that many equal-width columns. When an array is provided, each element can define specific
3671
- * column properties or sizing. This allows for flexible grid layouts that can adapt to
3672
- * different content requirements.
3673
- *
3674
- * @type {(number | string[])}
3675
- * @default 1
3676
- */
3677
- cols: number | string[];
3678
- /**
3679
- * @description Number of rows or array of row definitions for the grid layout.
3680
- * @summary Defines the row structure of the grid. When a number is provided, it creates
3681
- * that many equal-height rows. When an array is provided, each element can define specific
3682
- * row properties or sizing. This provides control over vertical spacing and content organization.
3683
- *
3684
- * @type {(number | string[])}
3685
- * @default 1
3686
- */
3687
- rows: number | KeyValue[] | string[];
3688
- ngOnInit(model?: Model | string): Promise<void>;
3689
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxParentComponentDirective, never>;
3690
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxParentComponentDirective, never, never, { "parentComponent": { "alias": "parentComponent"; "required": false; }; "children": { "alias": "children"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, true, never>;
3691
- }
3692
-
3693
- declare abstract class NgxFormDirective extends NgxParentComponentDirective implements OnInit, IFormElement, OnDestroy, IRenderedModel {
3694
- crudFieldComponent: string;
3695
- /**
3696
- * @description Reactive form group associated with this fieldset.
3697
- * @summary The FormGroup instance that contains all form controls within this fieldset.
3698
- * Used for form validation, value management, and integration with Angular's reactive forms.
3870
+ * This can affect the virtual keyboard layout on mobile devices.
3699
3871
  *
3700
- * @type {FormGroup}
3872
+ * @type {'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'}
3873
+ * @default 'none'
3874
+ * @memberOf CrudFieldComponent
3701
3875
  */
3702
- parentFormId: string;
3876
+ inputmode: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
3703
3877
  /**
3704
- * @description Reference to the reactive form DOM element.
3705
- * @summary ViewChild reference that provides direct access to the form's DOM element.
3706
- * This enables programmatic manipulation of the form element and access to native
3707
- * HTML form properties and methods when needed.
3878
+ * @description Autocomplete behavior for the field.
3879
+ * @summary Specifies whether and how the browser should automatically complete the input.
3880
+ * This can improve user experience by suggesting previously entered values.
3708
3881
  *
3709
- * @type {ElementRef}
3882
+ * @type {AutocompleteTypes}
3883
+ * @default 'off'
3884
+ * @memberOf CrudFieldComponent
3710
3885
  */
3711
- component: ElementRef;
3886
+ autocomplete: AutocompleteTypes;
3712
3887
  /**
3713
- * @description Field update trigger mode for form validation.
3714
- * @summary Determines when form field validation should be triggered. Options include
3715
- * 'change', 'blur', or 'submit'. This affects the user experience by controlling
3716
- * when validation feedback is shown to the user during form interaction.
3888
+ * @description Fill style for the field.
3889
+ * @summary Determines the fill style of the field, such as 'outline' or 'solid'.
3890
+ * This affects the border and background of the field.
3717
3891
  *
3718
- * @type {FieldUpdateMode}
3719
- * @default 'change'
3892
+ * @type {'outline' | 'solid'}
3893
+ * @default 'outline'
3894
+ * @memberOf CrudFieldComponent
3720
3895
  */
3721
- updateOn: FieldUpdateMode;
3896
+ fill: 'outline' | 'solid';
3722
3897
  /**
3723
- * @description Form submission target specification.
3724
- * @summary Specifies where to display the response after form submission, similar
3725
- * to the HTML form target attribute. Options include '_self', '_blank', '_parent',
3726
- * '_top', or a named frame. Controls the browser behavior for form responses.
3898
+ * @description Placement of the label relative to the field.
3899
+ * @summary Specifies where the label should be placed relative to the field.
3900
+ * Options include 'start', 'end', 'floating', 'stacked', and 'fixed'.
3727
3901
  *
3728
- * @type {HTMLFormTarget}
3729
- * @default '_self'
3902
+ * @type {'start' | 'end' | 'floating' | 'stacked' | 'fixed'}
3903
+ * @default 'floating'
3904
+ * @memberOf CrudFieldComponent
3730
3905
  */
3731
- target: HTMLFormTarget;
3906
+ labelPlacement: 'start' | 'end' | 'floating' | 'stacked' | 'fixed';
3732
3907
  /**
3733
- * @description HTTP method or submission strategy for the form.
3734
- * @summary Defines how the form should be submitted. 'get' and 'post' correspond
3735
- * to standard HTTP methods for traditional form submission, while 'event' uses
3736
- * Angular event-driven submission for single-page application workflows.
3908
+ * @description Update mode for the field.
3909
+ * @summary Determines when the field value should be updated in the form model.
3910
+ * Options include 'change', 'blur', and 'submit'.
3737
3911
  *
3738
- * @type {'get' | 'post' | 'event'}
3739
- * @default 'event'
3912
+ * @type {FieldUpdateMode}
3913
+ * @default 'change'
3914
+ * @memberOf CrudFieldComponent
3740
3915
  */
3741
- method: 'get' | 'post' | 'event';
3916
+ updateOn: FieldUpdateMode;
3742
3917
  /**
3743
- * @description Configuration options for the CRUD form behavior.
3744
- * @summary Contains various configuration settings that control form rendering,
3745
- * validation, and behavior. These options are merged with default settings
3746
- * during component initialization to customize the form's functionality.
3918
+ * @description Reference to the field component.
3919
+ * @summary Provides a reference to the field component element, allowing direct access to its properties and methods.
3747
3920
  *
3748
- * @type {ICrudFormOptions}
3921
+ * @type {ElementRef}
3922
+ * @memberOf CrudFieldComponent
3749
3923
  */
3750
- options: ICrudFormOptions;
3924
+ component: ElementRef;
3751
3925
  /**
3752
- * @description Optional action identifier for form submission context.
3753
- * @summary Specifies a custom action name that will be included in the submit event.
3754
- * If not provided, defaults to the standard submit event constant. Used to
3755
- * distinguish between different types of form submissions within the same component.
3926
+ * @description Parent form group.
3927
+ * @summary References the parent form group to which this field belongs.
3928
+ * This is necessary for integrating the field with Angular's reactive forms.
3756
3929
  *
3757
- * @type {string | undefined}
3930
+ * @type {FormGroup}
3931
+ * @memberOf CrudFieldComponent
3758
3932
  */
3759
- action?: string;
3933
+ formGroup: FormGroup | undefined;
3760
3934
  /**
3761
- * @description The current CRUD operation being performed.
3762
- * @summary Specifies the type of operation this form is handling (CREATE, READ, UPDATE, DELETE).
3763
- * This is a required input that determines form behavior, validation rules, and available actions.
3764
- * The operation affects form state, button visibility, and submission logic.
3935
+ * @description Angular FormControl instance for this field.
3936
+ * @summary The specific FormControl instance that manages this field's state, validation,
3937
+ * and value. This provides direct access to Angular's reactive forms functionality
3938
+ * for this individual field within the broader form structure.
3765
3939
  *
3766
- * @type {CrudOperations}
3767
- * @required
3940
+ * @type {FormControl}
3941
+ * @memberOf CrudFieldComponent
3768
3942
  */
3769
- operation: CrudOperations;
3943
+ formControl: FormControl;
3770
3944
  /**
3771
- * @description Custom event handlers for form actions.
3772
- * @summary A record of event handler functions keyed by event names that can be
3773
- * triggered during form operations. These handlers provide extensibility for
3774
- * custom business logic and can be invoked for various form events and actions.
3945
+ * @description Indicates if this field supports multiple values.
3946
+ * @summary When true, this field can handle multiple values, typically used in
3947
+ * multi-select scenarios or when the field is part of a form array structure
3948
+ * that allows multiple entries of the same field type.
3775
3949
  *
3776
- * @type {HandlerLike}
3950
+ * @type {boolean}
3951
+ * @default false
3952
+ * @memberOf CrudFieldComponent
3777
3953
  */
3778
- handlers: HandlerLike;
3954
+ multiple: boolean;
3779
3955
  /**
3780
- * @description Angular reactive FormGroup for form state management.
3781
- * @summary The FormGroup instance that manages all form controls, validation,
3782
- * and form state. This is the main interface for accessing form values and
3783
- * controlling form behavior. May be undefined for read-only operations.
3956
+ * @description Unique identifier for the current record.
3957
+ * @summary A unique identifier for the current record being displayed or manipulated.
3958
+ * This is typically used in conjunction with the primary key for operations on specific records.
3784
3959
  *
3785
- * @type {FormGroup | undefined}
3960
+ * @type {string | number}
3786
3961
  */
3787
- formGroup: FormParent | undefined;
3962
+ uid: string;
3963
+ page: number;
3788
3964
  /**
3789
- * @description Unique identifier for the form renderer.
3790
- * @summary A unique string identifier used to register and manage this form
3791
- * instance within the NgxDecafFormService. This ID is also used as the HTML id
3792
- * attribute for the form element, enabling DOM queries and form management.
3965
+ * @description Translatability of field labels.
3966
+ * @summary Indicates whether the field labels should be translated based on the current language settings.
3967
+ * This is useful for applications supporting multiple languages.
3793
3968
  *
3794
- * @type {string}
3969
+ * @type {StringOrBoolean}
3970
+ * @default true
3971
+ * @memberOf CrudFieldComponent
3795
3972
  */
3796
- rendererId: string;
3797
- /**
3798
- * @description Event emitter for form submission events.
3799
- * @summary Emits ICrudFormEvent objects when the form is submitted, providing
3800
- * form data, component information, and any associated handlers to parent
3801
- * components. This enables decoupled handling of form submission logic.
3802
- *
3803
- * @type {EventEmitter<ICrudFormEvent>}
3804
- */
3805
- submitEvent: EventEmitter<ICrudFormEvent>;
3973
+ translatable: StringOrBoolean;
3806
3974
  /**
3807
- * @description Unique identifier for the current record instance.
3808
- * @summary This property holds a unique string value that identifies the specific record being managed by the form.
3809
- * It is automatically generated if not provided, ensuring each form instance has a distinct identifier.
3810
- * The uid is used for tracking, referencing, and emitting events related to the current record, and may be used
3811
- * in conjunction with the primary key for CRUD operations.
3975
+ * @description Component initialization lifecycle method.
3976
+ * @summary Initializes the field component based on the operation type and field configuration.
3977
+ * For READ and DELETE operations, removes the form group to make fields read-only.
3978
+ * For other operations, sets up icons, configures multi-value support if needed,
3979
+ * and sets default values for radio buttons if no value is provided.
3812
3980
  *
3813
- * @type {string}
3814
- * @default Randomly generated 12-character string
3981
+ * @returns {void}
3982
+ * @memberOf CrudFieldComponent
3815
3983
  */
3816
- allowClear: boolean;
3817
- protected activeFormGroupIndex: number;
3818
- get activeFormGroup(): FormParent;
3984
+ ngOnInit(): Promise<void>;
3819
3985
  /**
3820
- * @description Component initialization lifecycle method.
3821
- * @summary Initializes the component by setting up the logger, configuring form state
3822
- * based on the operation type, and merging configuration options. For READ and DELETE
3823
- * operations, the formGroup is set to undefined since these operations don't require
3824
- * form input. Configuration options are merged with default settings.
3986
+ * Returns a list of options for select or radio inputs, with their `text` property
3987
+ * localized if it does not already include the word 'options'. The localization key
3988
+ * is generated from the component's label, replacing 'label' with 'options'.
3825
3989
  *
3826
- * @returns {Promise<void>}
3990
+ * @returns {CrudFieldOption[]} The array of parsed and localized options.
3991
+ * @memberOf CrudFieldComponent
3827
3992
  */
3828
- ngOnInit(model?: Model | string): Promise<void>;
3993
+ getOptions(): Promise<CrudFieldOption[]>;
3994
+ /**
3995
+ * @description Component after view initialization lifecycle method.
3996
+ * @summary Calls the parent afterViewInit method for READ and DELETE operations.
3997
+ * This ensures proper initialization of read-only fields that don't require
3998
+ * form functionality but still need view setup.
3999
+ *
4000
+ * @returns {void}
4001
+ * @memberOf CrudFieldComponent
4002
+ */
4003
+ ngAfterViewInit(): void;
3829
4004
  /**
3830
4005
  * @description Component cleanup lifecycle method.
3831
- * @summary Performs cleanup operations when the component is destroyed.
3832
- * Unregisters the FormGroup from the NgxDecafFormService to prevent memory leaks
3833
- * and ensure proper resource cleanup.
4006
+ * @summary Performs cleanup operations for READ and DELETE operations by calling
4007
+ * the parent onDestroy method. This ensures proper resource cleanup for
4008
+ * read-only field components.
3834
4009
  *
3835
4010
  * @returns {void}
4011
+ * @memberOf CrudFieldComponent
3836
4012
  */
3837
4013
  ngOnDestroy(): void;
3838
- getFormArrayIndex(index: number): FormParent | undefined;
4014
+ toggleOptionSelection(val: string, event: CheckboxCustomEvent): void;
4015
+ isOptionChecked(value: string): boolean;
3839
4016
  /**
3840
- * @description Handles form reset or navigation back functionality.
3841
- * @summary Provides different reset behavior based on the current operation.
3842
- * For CREATE and UPDATE operations, resets the form to its initial state.
3843
- * For READ and DELETE operations, navigates back in the browser history
3844
- * since these operations don't have modifiable form data to reset.
4017
+ * @description Handles fieldset group update events from parent fieldsets.
4018
+ * @summary Processes events triggered when an existing group needs to be updated.
4019
+ * Updates the active form group index and refreshes the form group and form control
4020
+ * references to point to the group being edited.
3845
4021
  *
4022
+ * @param {CustomEvent} event - The fieldset update group event containing update details
3846
4023
  * @returns {void}
4024
+ * @memberOf CrudFieldComponent
3847
4025
  */
3848
- handleReset(): void;
3849
- handleSubmit(event?: SubmitEvent, eventName?: string, componentName?: string): Promise<boolean | void>;
3850
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxFormDirective, never>;
3851
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxFormDirective, never, never, { "parentFormId": { "alias": "parentFormId"; "required": false; }; "updateOn": { "alias": "updateOn"; "required": false; }; "target": { "alias": "target"; "required": false; }; "method": { "alias": "method"; "required": false; }; "options": { "alias": "options"; "required": false; }; "action": { "alias": "action"; "required": false; }; "operation": { "alias": "operation"; "required": true; }; "handlers": { "alias": "handlers"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "rendererId": { "alias": "rendererId"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; }, { "submitEvent": "submitEvent"; }, never, never, true, never>;
4026
+ handleFieldsetUpdateGroupEvent(event: CustomEvent): void;
4027
+ static ɵfac: i0.ɵɵFactoryDeclaration<CrudFieldComponent, never>;
4028
+ static ɵcmp: i0.ɵɵComponentDeclaration<CrudFieldComponent, "ngx-decaf-crud-field", never, { "operation": { "alias": "operation"; "required": true; }; "name": { "alias": "name"; "required": true; }; "className": { "alias": "className"; "required": false; }; "path": { "alias": "path"; "required": true; }; "childOf": { "alias": "childOf"; "required": false; }; "type": { "alias": "type"; "required": true; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "format": { "alias": "format"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "max": { "alias": "max"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "min": { "alias": "min"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "step": { "alias": "step"; "required": false; }; "equals": { "alias": "equals"; "required": false; }; "different": { "alias": "different"; "required": false; }; "lessThan": { "alias": "lessThan"; "required": false; }; "lessThanOrEqual": { "alias": "lessThanOrEqual"; "required": false; }; "greaterThan": { "alias": "greaterThan"; "required": false; }; "greaterThanOrEqual": { "alias": "greaterThanOrEqual"; "required": false; }; "alignment": { "alias": "alignment"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "justify": { "alias": "justify"; "required": false; }; "cancelText": { "alias": "cancelText"; "required": false; }; "interface": { "alias": "interface"; "required": false; }; "options": { "alias": "options"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "spellcheck": { "alias": "spellcheck"; "required": false; }; "inputmode": { "alias": "inputmode"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "fill": { "alias": "fill"; "required": false; }; "labelPlacement": { "alias": "labelPlacement"; "required": false; }; "updateOn": { "alias": "updateOn"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "uid": { "alias": "uid"; "required": false; }; "page": { "alias": "page"; "required": false; }; "translatable": { "alias": "translatable"; "required": false; }; }, {}, never, never, true, never>;
3852
4029
  }
3853
4030
 
3854
4031
  declare class CrudFormComponent extends NgxFormDirective {
@@ -3867,7 +4044,7 @@ declare class CrudFormComponent extends NgxFormDirective {
3867
4044
  /**
3868
4045
  * @description Handles form submission with validation and event emission.
3869
4046
  * @summary Processes form submission by first preventing default browser behavior,
3870
- * then validating all form fields using NgxDecafFormService. If validation passes,
4047
+ * then validating all form fields using NgxFormService. If validation passes,
3871
4048
  * extracts form data and emits a submitEvent with the data, component information,
3872
4049
  * and any associated handlers. Returns false if validation fails.
3873
4050
  *
@@ -3936,7 +4113,7 @@ declare class CrudFormComponent extends NgxFormDirective {
3936
4113
  * @extends {NgxBaseComponentDirective}
3937
4114
  * @implements {OnInit}
3938
4115
  */
3939
- declare class EmptyStateComponent extends NgxDecafComponentDirective implements OnInit {
4116
+ declare class EmptyStateComponent extends NgxComponentDirective implements OnInit {
3940
4117
  /**
3941
4118
  * @description The main title displayed in the empty state.
3942
4119
  * @summary Specifies the primary message to show in the empty state component.
@@ -4694,7 +4871,7 @@ declare class FieldsetComponent extends NgxFormDirective implements OnInit, Afte
4694
4871
  *
4695
4872
  * @memberOf ForAngularCommonModule
4696
4873
  */
4697
- declare class FilterComponent extends NgxDecafComponentDirective implements OnInit, OnDestroy {
4874
+ declare class FilterComponent extends NgxComponentDirective implements OnInit, OnDestroy {
4698
4875
  /**
4699
4876
  * @description Reference to the dropdown options container element.
4700
4877
  * @summary ViewChild reference used to access and manipulate the dropdown options element
@@ -5360,7 +5537,7 @@ declare class LayoutComponent extends NgxParentComponentDirective implements OnI
5360
5537
  * @extends {NgxBaseComponentDirective}
5361
5538
  * @implements {OnInit}
5362
5539
  */
5363
- declare class ListComponent extends NgxDecafComponentDirective implements OnInit, OnDestroy {
5540
+ declare class ListComponent extends NgxComponentDirective implements OnInit, OnDestroy {
5364
5541
  /**
5365
5542
  * @description The display mode for the list component.
5366
5543
  * @summary Determines how the list data is loaded and displayed. Options include:
@@ -6160,7 +6337,7 @@ declare class ListComponent extends NgxDecafComponentDirective implements OnInit
6160
6337
  * C->>C: Process action
6161
6338
  * C->>V: Update view or navigate
6162
6339
  */
6163
- declare class ListItemComponent extends NgxDecafComponentDirective implements OnInit {
6340
+ declare class ListItemComponent extends NgxComponentDirective implements OnInit {
6164
6341
  /**
6165
6342
  * @description Reference to the action menu popover component.
6166
6343
  * @summary ViewChild reference that provides access to the HTMLIonPopoverElement
@@ -6306,17 +6483,6 @@ declare class ListItemComponent extends NgxDecafComponentDirective implements On
6306
6483
  * @memberOf ListItemComponent
6307
6484
  */
6308
6485
  actionMenuOpen: boolean;
6309
- /**
6310
- * @description Angular NavController service for handling navigation.
6311
- * @summary Injected service that provides methods for programmatic navigation
6312
- * within the Ionic application. Used for navigating to different routes when
6313
- * list item actions are performed or when the item itself is clicked.
6314
- *
6315
- * @private
6316
- * @type {NavController}
6317
- * @memberOf ListItemComponent
6318
- */
6319
- private navController;
6320
6486
  /**
6321
6487
  * @description Creates an instance of ListItemComponent.
6322
6488
  * @summary Initializes a new ListItemComponent by calling the parent class constructor
@@ -6371,7 +6537,7 @@ declare class ListItemComponent extends NgxDecafComponentDirective implements On
6371
6537
  * participant U as User
6372
6538
  * participant L as ListItemComponent
6373
6539
  * participant P as Parent Component
6374
- * participant N as NavController
6540
+ * participant N as Router
6375
6541
  * participant E as Event System
6376
6542
  *
6377
6543
  * U->>L: Perform action (click/swipe)
@@ -6451,7 +6617,7 @@ declare class ListItemComponent extends NgxDecafComponentDirective implements On
6451
6617
  /**
6452
6618
  * @description Navigates to a new route based on the specified action and item ID.
6453
6619
  * @summary This method constructs a navigation URL using the component's route configuration,
6454
- * the specified action, and an item identifier. It uses Ionic's NavController to perform
6620
+ * the specified action, and an item identifier. It uses Ionic's Router to perform
6455
6621
  * forward navigation with appropriate animations. This method is typically used for
6456
6622
  * CRUD operations where each action (create, read, update, delete) has its own route.
6457
6623
  *
@@ -6462,7 +6628,7 @@ declare class ListItemComponent extends NgxDecafComponentDirective implements On
6462
6628
  * @mermaid
6463
6629
  * sequenceDiagram
6464
6630
  * participant L as ListItemComponent
6465
- * participant N as NavController
6631
+ * participant N as Router
6466
6632
  * participant R as Router
6467
6633
  *
6468
6634
  * L->>L: redirect(action, id)
@@ -6545,7 +6711,7 @@ declare class ListItemComponent extends NgxDecafComponentDirective implements On
6545
6711
  * ModelRenderer->>ModelRenderer: Subscribe to events
6546
6712
  * ModelRenderer-->>App: Emit events
6547
6713
  */
6548
- declare class ModelRendererComponent<M extends Model> extends NgxDecafComponentDirective implements OnChanges, OnDestroy, IRenderedModel {
6714
+ declare class ModelRendererComponent<M extends Model> extends NgxComponentDirective implements OnChanges, OnDestroy, IRenderedModel {
6549
6715
  /**
6550
6716
  * @description Global variables to be passed to the rendered component
6551
6717
  */
@@ -6652,7 +6818,7 @@ declare class ModelRendererComponent<M extends Model> extends NgxDecafComponentD
6652
6818
  * @extends {NgxBaseComponentDirective}
6653
6819
  * @implements {OnInit}
6654
6820
  */
6655
- declare class PaginationComponent extends NgxDecafComponentDirective implements OnInit {
6821
+ declare class PaginationComponent extends NgxComponentDirective implements OnInit {
6656
6822
  /**
6657
6823
  * @description The total number of pages to display in the pagination component.
6658
6824
  * @summary Specifies the total number of pages available for navigation. This is a required
@@ -6884,7 +7050,7 @@ declare class PaginationComponent extends NgxDecafComponentDirective implements
6884
7050
  * @implements {OnInit}
6885
7051
  * @memberOf SearchbarComponent
6886
7052
  */
6887
- declare class SearchbarComponent extends NgxDecafComponentDirective implements OnInit {
7053
+ declare class SearchbarComponent extends NgxComponentDirective implements OnInit {
6888
7054
  /**
6889
7055
  * @description The mode of the searchbar.
6890
7056
  * @summary Determines the visual style of the searchbar, either iOS or Material Design.
@@ -7965,39 +8131,152 @@ declare function provideI18n(config?: RootTranslateServiceConfig, resources?: I1
7965
8131
  } | i0.EnvironmentProviders | i0.Provider[])[];
7966
8132
 
7967
8133
  /**
7968
- * @module module:lib/for-angular-common.module
8134
+ * @module lib/for-angular-common.module
7969
8135
  * @description Core Angular module and providers for Decaf's for-angular package.
7970
8136
  * @summary Provides the shared Angular module, injection tokens and helper functions used
7971
8137
  * by the for-angular integration. This module wires up common imports (forms, translation)
7972
8138
  * and exposes helper providers such as DB adapter registration and logger utilities.
7973
- *
7974
8139
  * @link {@link ForAngularCommonModule}
7975
8140
  */
7976
8141
 
7977
- /** */
7978
8142
  declare const DB_ADAPTER_PROVIDER = "DB_ADAPTER_PROVIDER";
8143
+ /**
8144
+ * @description Injection token for registering the database adapter provider.
8145
+ * @summary Used to inject the database adapter instance that implements DecafRepositoryAdapter.
8146
+ * This token allows the framework to locate and use the application's specific database implementation.
8147
+ * @const {InjectionToken<DecafRepositoryAdapter>}
8148
+ * @memberOf module:lib/for-angular-common.module
8149
+ */
7979
8150
  declare const DB_ADAPTER_PROVIDER_TOKEN: InjectionToken<DecafRepositoryAdapter>;
8151
+ /**
8152
+ * @description Injection token for the root path of locale translation files.
8153
+ * @summary Used to configure the base path where i18n translation files are located.
8154
+ * This allows the translation loader to locate JSON files for different languages.
8155
+ * @const {InjectionToken<string>}
8156
+ * @memberOf module:lib/for-angular-common.module
8157
+ * @example
8158
+ * // Typical usage when providing the token
8159
+ * { provide: LOCALE_ROOT_TOKEN, useValue: './assets/i18n/' }
8160
+ */
7980
8161
  declare const LOCALE_ROOT_TOKEN: InjectionToken<string>;
8162
+ /**
8163
+ * @description Generic injection token for providing arbitrary values to constructors.
8164
+ * @summary Used to inject classes, strings, or any other value into component or service constructors.
8165
+ * This is a flexible token that can be used to provide any type of dependency when more specific
8166
+ * tokens are not appropriate. The actual type and purpose of the injected value is determined by
8167
+ * the provider configuration.
8168
+ * @const {InjectionToken<unknown>}
8169
+ * @memberOf module:lib/for-angular-common.module
8170
+ * @example
8171
+ * // Inject a string value
8172
+ * { provide: CPTKN, useValue: 'some-config-value' }
8173
+ *
8174
+ * // Inject a class
8175
+ * { provide: CPTKN, useClass: MyService }
8176
+ *
8177
+ * // Inject any arbitrary value
8178
+ * { provide: CPTKN, useValue: { key: 'value', data: [1, 2, 3] } }
8179
+ */
7981
8180
  declare const CPTKN: InjectionToken<unknown>;
8181
+ /**
8182
+ * @description Injection token for i18n resource configuration.
8183
+ * @summary Used to provide configuration for internationalization resources, including
8184
+ * translation file locations and supported languages. This token configures how the
8185
+ * application loads and manages translation resources.
8186
+ * @const {InjectionToken<{resources: I18nResourceConfig[]; versionedSuffix: boolean}>}
8187
+ * @memberOf module:lib/for-angular-common.module
8188
+ */
7982
8189
  declare const I18N_CONFIG_TOKEN: InjectionToken<{
7983
8190
  resources: I18nResourceConfig[];
7984
8191
  versionedSuffix: boolean;
7985
8192
  }>;
8193
+ /**
8194
+ * @description Provides an array of component types for dynamic rendering.
8195
+ * @summary Helper function to package component constructors for registration with the
8196
+ * rendering engine. This function accepts component classes and returns them as an array
8197
+ * suitable for use with the CPTKN injection token.
8198
+ * @param {...Constructor<unknown>[]} components - Component constructor classes to register
8199
+ * @return {Constructor<unknown>[]} Array of component constructors
8200
+ * @memberOf module:lib/for-angular-common.module
8201
+ * @example
8202
+ * // Register multiple custom components
8203
+ * providers: [
8204
+ * { provide: CPTKN, useValue: provideDynamicComponents(MyComponent, AnotherComponent) }
8205
+ * ]
8206
+ */
8207
+ declare function provideDynamicComponents(...components: Constructor<unknown>[]): Constructor<unknown>[];
8208
+ /**
8209
+ * @description Retrieves the repository instance for a given model.
8210
+ * @summary Creates or retrieves a DecafRepository instance for the specified model. This function
8211
+ * resolves the model by name or class, locates the registered database adapter, and returns
8212
+ * a fully initialized repository instance for performing CRUD operations.
8213
+ * @param {Model | string} model - The model class or model name string
8214
+ * @return {DecafRepository<Model>} Repository instance for the model
8215
+ * @throws {InternalError} If model is not found or not registered with @model decorator
8216
+ * @memberOf module:lib/for-angular-common.module
8217
+ * @example
8218
+ * // Get repository by model class
8219
+ * const userRepo = getModelRepository(User);
8220
+ *
8221
+ * // Get repository by model name
8222
+ * const productRepo = getModelRepository('Product');
8223
+ *
8224
+ * // Use repository for queries
8225
+ * const users = await userRepo.findAll();
8226
+ */
7986
8227
  declare function getModelRepository(model: Model | string): DecafRepository<Model>;
8228
+ /**
8229
+ * @description Provides a database adapter for dependency injection.
8230
+ * @summary Creates an Angular provider that registers a database adapter instance. This function
8231
+ * instantiates the adapter class, registers its flavour globally, and returns a provider object
8232
+ * for use in Angular's dependency injection system.
8233
+ * @template DbAdapter - The database adapter class type extending {flavour: string}
8234
+ * @param {Constructor<DbAdapter>} adapterClass - Database adapter constructor class
8235
+ * @param {KeyValue} [options={}] - Configuration options passed to adapter constructor
8236
+ * @param {string} [flavour] - Optional flavour override; uses adapter.flavour if not provided
8237
+ * @return {Provider} Angular provider object for DB_ADAPTER_PROVIDER_TOKEN
8238
+ * @memberOf module:lib/for-angular-common.module
8239
+ * @example
8240
+ * // Register a SQLite adapter
8241
+ * providers: [
8242
+ * provideDbAdapter(SqliteAdapter, { database: 'myapp.db' }, 'sqlite')
8243
+ * ]
8244
+ *
8245
+ * // Register with default flavour from adapter
8246
+ * providers: [
8247
+ * provideDbAdapter(PostgresAdapter, { host: 'localhost', port: 5432 })
8248
+ * ]
8249
+ */
7987
8250
  declare function provideDbAdapter<DbAdapter extends {
7988
8251
  flavour: string;
7989
8252
  }>(adapterClass: Constructor<DbAdapter>, options?: KeyValue, flavour?: string): Provider;
8253
+ /**
8254
+ * @description Retrieves a logger instance for the given context.
8255
+ * @summary Creates or retrieves a namespaced logger instance using the Decaf logging system.
8256
+ * The logger is automatically namespaced under "for-angular" and can be further scoped
8257
+ * to a specific instance, function, or string identifier.
8258
+ * @param {string | FunctionLike | unknown} instance - The instance, function, or string to scope the logger to
8259
+ * @return {Logger} Logger instance for the specified context
8260
+ * @memberOf module:lib/for-angular-common.module
8261
+ * @example
8262
+ * // Get logger for a class
8263
+ * const logger = getLogger(MyComponent);
8264
+ * logger.info('Component initialized');
8265
+ *
8266
+ * // Get logger with string identifier
8267
+ * const serviceLogger = getLogger('UserService');
8268
+ * serviceLogger.error('Operation failed', error);
8269
+ */
7990
8270
  declare function getLogger(instance: string | FunctionLike | unknown): Logger;
7991
8271
  /**
7992
- * @description Main Angular module for the Decaf framework
8272
+ * @description Main Angular module for the Decaf framework.
7993
8273
  * @summary The ForAngularCommonModule provides the core functionality for integrating Decaf with Angular applications.
7994
8274
  * It imports and exports common Angular and Ionic components and modules needed for Decaf applications,
7995
8275
  * including form handling, translation support, and Ionic UI components. This module can be imported
7996
8276
  * directly or via the forRoot() method for proper initialization in the application's root module.
7997
- *
7998
8277
  * @class ForAngularCommonModule
8278
+ * @memberOf module:lib/for-angular-common.module
7999
8279
  * @example
8000
- * ```typescript
8001
8280
  * // In your app module:
8002
8281
  * @NgModule({
8003
8282
  * imports: [
@@ -8007,17 +8286,24 @@ declare function getLogger(instance: string | FunctionLike | unknown): Logger;
8007
8286
  * // ...
8008
8287
  * })
8009
8288
  * export class AppModule {}
8010
- * ```
8011
8289
  */
8012
8290
  declare class ForAngularCommonModule {
8013
8291
  /**
8014
- * @description Creates a module with providers for root module import
8292
+ * @description Creates a module with providers for root module import.
8015
8293
  * @summary This static method provides the proper way to import the ForAngularCommonModule in the application's
8016
8294
  * root module. It returns a ModuleWithProviders object that includes the ForAngularCommonModule itself.
8017
8295
  * Using forRoot() ensures that the module and its providers are properly initialized and only
8018
8296
  * instantiated once in the application.
8019
- *
8020
8297
  * @return {ModuleWithProviders<ForAngularCommonModule>} The module with its providers
8298
+ * @memberOf ForAngularCommonModule
8299
+ * @static
8300
+ * @example
8301
+ * // Import in root module
8302
+ * @NgModule({
8303
+ * imports: [ForAngularCommonModule.forRoot()],
8304
+ * // ...
8305
+ * })
8306
+ * export class AppModule {}
8021
8307
  */
8022
8308
  static forRoot(): ModuleWithProviders<ForAngularCommonModule>;
8023
8309
  static ɵfac: i0.ɵɵFactoryDeclaration<ForAngularCommonModule, never>;
@@ -8025,5 +8311,5 @@ declare class ForAngularCommonModule {
8025
8311
  static ɵinj: i0.ɵɵInjectorDeclaration<ForAngularCommonModule>;
8026
8312
  }
8027
8313
 
8028
- export { AngularEngineKeys, BaseComponentProps, CPTKN, CollapsableDirective, ComponentRendererComponent, ComponentsTagNames, CrudFieldComponent, CrudFormComponent, CssClasses, DB_ADAPTER_PROVIDER, DB_ADAPTER_PROVIDER_TOKEN, DefaultFormReactiveOptions, DefaultListEmptyOptions, Dynamic, DynamicModule, EmptyStateComponent, EventConstants, FieldsetComponent, FilterComponent, ForAngularCommonModule, ForAngularComponentsModule, FormConstants, I18N_CONFIG_TOKEN, I18nLoader, I18nLoaderFactory, I18nParser, LOCALE_ROOT_TOKEN, LayoutComponent, ListComponent, ListComponentsTypes, ListItemComponent, LoggerLevels, ModelRendererComponent, NgxDecafComponentDirective, NgxDecafFormFieldDirective, NgxDecafFormService, NgxEventHandler, NgxPageDirective, NgxRenderingEngine, PaginationComponent, RouteDirections, SearchbarComponent, SteppedFormComponent, cleanSpaces, dataMapper, formatDate, generateRandomValue, getInjectablesRegistry, getLocaleContext, getLocaleContextByKey, getLocaleFromClassName, getLocaleLanguage, getLogger, getModelRepository, getOnWindow, getOnWindowDocument, getWindow, getWindowDocument, getWindowWidth, isDarkMode, isDevelopmentMode, isNotUndefined, isValidDate, itemMapper, parseToValidDate, provideDbAdapter, provideI18n, provideI18nLoader, removeFocusTrap, setOnWindow, stringToBoolean, windowEventEmitter };
8029
- export type { AngularDynamicOutput, AngularFieldDefinition, CheckboxOption, ComponentMetadata, CrudFieldOption, DecafRepository, DecafRepositoryAdapter, ElementPositions, ElementSizes, FieldUpdateMode, FlexPositions, FormParent, FormParentGroup, FormServiceControl, FormServiceControls, FunctionLike, HTMLFormTarget, HandlerLike, I18nResourceConfig, I18nResourceConfigType, IBaseCustomEvent, IComponentConfig, IComponentHolder, IComponentInput, ICrudFormEvent, ICrudFormOptions, IFieldSetItem, IFieldSetValidationEvent, IFilterQuery, IFilterQueryItem, IFormElement, IFormReactiveSubmitEvent, IListComponentRefreshEvent, IListEmptyOptions, IMenuItem, IPaginationCustomEvent, IRenderedModel, ISortObject, InputOption, KeyValue, ListItemCustomEvent, PossibleInputTypes, RadioOption, RawQuery, SelectOption, StringOrBoolean };
8314
+ export { AngularEngineKeys, BaseComponentProps, CPTKN, CollapsableDirective, ComponentRendererComponent, ComponentsTagNames, CrudFieldComponent, CrudFormComponent, CssClasses, DB_ADAPTER_PROVIDER, DB_ADAPTER_PROVIDER_TOKEN, DefaultFormReactiveOptions, DefaultListEmptyOptions, Dynamic, DynamicModule, EmptyStateComponent, EventConstants, FieldsetComponent, FilterComponent, ForAngularCommonModule, ForAngularComponentsModule, FormConstants, I18N_CONFIG_TOKEN, I18nLoader, I18nLoaderFactory, I18nParser, LOCALE_ROOT_TOKEN, LayoutComponent, ListComponent, ListComponentsTypes, ListItemComponent, LoggerLevels, ModelRendererComponent, NgxComponentDirective, NgxEventHandler, NgxFormDirective, NgxFormFieldDirective, NgxFormService, NgxMediaDirective, NgxModelPageDirective, NgxPageDirective, NgxParentComponentDirective, NgxRenderingEngine, PaginationComponent, RouteDirections, SearchbarComponent, SteppedFormComponent, cleanSpaces, dataMapper, formatDate, generateRandomValue, getInjectablesRegistry, getLocaleContext, getLocaleContextByKey, getLocaleFromClassName, getLocaleLanguage, getLogger, getModelRepository, getOnWindow, getOnWindowDocument, getWindow, getWindowDocument, getWindowWidth, isDarkMode, isDevelopmentMode, isNotUndefined, isValidDate, itemMapper, parseToValidDate, provideDbAdapter, provideDynamicComponents, provideI18n, provideI18nLoader, removeFocusTrap, setOnWindow, stringToBoolean, windowEventEmitter };
8315
+ export type { AngularDynamicOutput, AngularFieldDefinition, CheckboxOption, ComponentMetadata, CrudFieldOption, DecafRepository, DecafRepositoryAdapter, ElementPositions, ElementSizes, FieldUpdateMode, FlexPositions, FormParent, FormParentGroup, FormServiceControl, FormServiceControls, FunctionLike, HTMLFormTarget, HandlerLike, I18nResourceConfig, I18nResourceConfigType, IBaseCustomEvent, IComponentConfig, IComponentHolder, IComponentInput, ICrudFormEvent, ICrudFormOptions, IFieldSetItem, IFieldSetValidationEvent, IFilterQuery, IFilterQueryItem, IFormElement, IFormReactiveSubmitEvent, IListComponentRefreshEvent, IListEmptyOptions, IMenuItem, IModelPageCustomEvent, IPaginationCustomEvent, IRenderedModel, ISortObject, IWindowResizeEvent, InputOption, KeyValue, ListItemCustomEvent, PossibleInputTypes, RadioOption, RawQuery, SelectOption, StringOrBoolean, WindowColorScheme };