@decaf-ts/for-angular 0.0.41 → 0.0.42

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
@@ -5,11 +5,11 @@ import { TextFieldTypes, SelectInterface, AutocompleteTypes, CheckboxCustomEvent
5
5
  import * as i2 from '@angular/forms';
6
6
  import { FormGroup, FormControl, FormArray, ControlValueAccessor, AbstractControl } from '@angular/forms';
7
7
  import { OrderDirection, Repository, Adapter, EventIds, Paginator, Condition } from '@decaf-ts/core';
8
- import { FieldProperties, IPagedComponentProperties, CrudOperationKeys, UIModelMetadata, FieldDefinition, UIMediaBreakPointsType, RenderingEngine } from '@decaf-ts/ui-decorators';
8
+ import { FieldProperties, IPagedComponentProperties, CrudOperationKeys, HTML5InputTypes, UIModelMetadata, FieldDefinition, UIMediaBreakPointsType, RenderingEngine } from '@decaf-ts/ui-decorators';
9
9
  import * as _decaf_ts_decorator_validation from '@decaf-ts/decorator-validation';
10
10
  import { Model, VALIDATION_PARENT_KEY, Constructor, ModelConstructor } from '@decaf-ts/decorator-validation';
11
11
  import { RepositoryFlags, Context, CrudOperations, OperationKeys } from '@decaf-ts/db-decorators';
12
- import { ModalOptions, IonAccordionGroup, ItemReorderEventDetail, ModalController } from '@ionic/angular/standalone';
12
+ import { ModalOptions, IonAccordionGroup, ItemReorderEventDetail, IonModal } from '@ionic/angular/standalone';
13
13
  import { Router } from '@angular/router';
14
14
  import * as i1 from '@angular/common';
15
15
  import { Location } from '@angular/common';
@@ -18,8 +18,7 @@ import { TranslateService, TranslateLoader, TranslationObject, TranslateParser,
18
18
  import { LoggedClass, Logger } from '@decaf-ts/logging';
19
19
  import { HttpClient } from '@angular/common/http';
20
20
  import { Observable, Subscription } from 'rxjs';
21
- import { SafeHtml, Title } from '@angular/platform-browser';
22
- import { NgxMediaService as NgxMediaService$1 } from 'src/lib/engine';
21
+ import { SafeHtml, DomSanitizer, Title } from '@angular/platform-browser';
23
22
  import { InjectablesRegistry } from '@decaf-ts/injectable-decorators';
24
23
 
25
24
  /**
@@ -320,6 +319,18 @@ interface I18nResourceConfig {
320
319
  prefix: string;
321
320
  suffix: string;
322
321
  }
322
+ /**
323
+ * @description Internationalization token configuration
324
+ * @summary Defines the structure for i18n tokens, including resource configurations and versioned suffix flag.
325
+ * @interface I18nToken
326
+ * @property {I18nResourceConfig[]} resources - Array of i18n resource configurations
327
+ * @property {boolean} versionedSuffix - Whether to use a versioned suffix for resources
328
+ * @memberOf module:engine
329
+ */
330
+ interface I18nToken {
331
+ resources: I18nResourceConfig[];
332
+ versionedSuffix: boolean;
333
+ }
323
334
  /**
324
335
  * @description CRUD form event type
325
336
  * @summary Extends IBaseCustomEvent to include optional handlers for CRUD form operations.
@@ -448,6 +459,11 @@ interface IWindowResizeEvent {
448
459
  /** The new height of the window (innerHeight) in pixels */
449
460
  height: number;
450
461
  }
462
+ interface IFileUploadError {
463
+ name: string;
464
+ size?: number;
465
+ error: string;
466
+ }
451
467
 
452
468
  /**
453
469
  * @description Angular engine key constants.
@@ -512,7 +528,7 @@ declare const FormConstants: {
512
528
  * @summary Contains constants for standardized event names used throughout the application.
513
529
  * These constants ensure consistent event naming across components and make it easier to
514
530
  * track and handle events. Each constant represents a specific application event type.
515
- * @typedef {Object} EventConstants
531
+ * @typedef {Object} ComponentEventNames
516
532
  * @property {string} BACK_BUTTON_NAVIGATION - Event fired when back button navigation ends
517
533
  * @property {string} REFRESH - Event fired when a refresh action occurs
518
534
  * @property {string} CLICK - Event fired when a click action occurs
@@ -521,13 +537,14 @@ declare const FormConstants: {
521
537
  * @property {string} FIELDSET_ADD_GROUP - Event fired when adding a group to a fieldset
522
538
  * @property {string} FIELDSET_UPDATE_GROUP - Event fired when updating a fieldset group
523
539
  * @property {string} FIELDSET_REMOVE_GROUP - Event fired when removing a fieldset group
524
- * @const EventConstants
540
+ * @const ComponentEventNames
525
541
  * @memberOf module:lib/engine/constants
526
542
  */
527
- declare const EventConstants: {
543
+ declare const ComponentEventNames: {
528
544
  readonly BACK_BUTTON_NAVIGATION: "backButtonNavigationEndEvent";
529
545
  readonly REFRESH: "RefreshEvent";
530
546
  readonly CLICK: "ClickEvent";
547
+ readonly CHANGE: "ChangeEvent";
531
548
  readonly SUBMIT: "SubmitEvent";
532
549
  readonly VALIDATION_ERROR: "validationErrorEvent";
533
550
  readonly FIELDSET_ADD_GROUP: "fieldsetAddGroupEvent";
@@ -713,6 +730,7 @@ declare const ElementSizes: {
713
730
  readonly xsmall: "xsmall";
714
731
  readonly small: "small";
715
732
  readonly medium: "medium";
733
+ readonly default: "default";
716
734
  readonly large: "large";
717
735
  readonly xLarge: "xlarge";
718
736
  readonly '2xLarge': "2xlarge";
@@ -720,6 +738,13 @@ declare const ElementSizes: {
720
738
  readonly expand: "expand";
721
739
  readonly block: "block";
722
740
  };
741
+ declare const ElementPositions: {
742
+ readonly left: "left";
743
+ readonly center: "center";
744
+ readonly right: "right";
745
+ readonly top: "top";
746
+ readonly bottom: "bottom";
747
+ };
723
748
  declare const LayoutGridGaps: {
724
749
  readonly small: "small";
725
750
  readonly medium: "medium";
@@ -727,6 +752,13 @@ declare const LayoutGridGaps: {
727
752
  readonly collapse: "collapse";
728
753
  readonly none: "";
729
754
  };
755
+ declare const ListItemPositions: {
756
+ readonly uid: "uid";
757
+ readonly title: "title";
758
+ readonly description: "description";
759
+ readonly info: "info";
760
+ readonly subinfo: "subinfo";
761
+ };
730
762
 
731
763
  /**
732
764
  * @module module:lib/engine/types
@@ -769,7 +801,7 @@ type FunctionLike = (...args: any[]) => any;
769
801
  * @description Element size options for UI components
770
802
  * @summary Defines the possible size values that can be applied to UI elements.
771
803
  * These sizes control the dimensions and layout behavior of components.
772
- * @typedef {(''|'small'|'medium'|'large'|'xlarge'|'2xlarge'|'auto'|'expand'|'block')} ElementSize
804
+ * @typedef ElementSize
773
805
  * @memberOf module:engine
774
806
  */
775
807
  type ElementSize = typeof ElementSizes[keyof typeof ElementSizes];
@@ -777,18 +809,18 @@ type ElementSize = typeof ElementSizes[keyof typeof ElementSizes];
777
809
  * @description Basic position options for UI elements
778
810
  * @summary Defines the possible position values that can be applied to UI elements.
779
811
  * These positions control the alignment and placement of components.
780
- * @typedef {('left'|'center'|'right'|'top'|'bottom')} ElementPositions
812
+ * @typedef {('left'|'center'|'right'|'top'|'bottom')} ElementPosition
781
813
  * @memberOf module:engine
782
814
  */
783
- type ElementPositions = 'left' | 'center' | 'right' | 'top' | 'bottom';
815
+ type ElementPosition = typeof ElementPositions[keyof typeof ElementPositions];
784
816
  /**
785
817
  * @description Extended position options for flex layouts
786
- * @summary Extends the basic ElementPositions with additional flex-specific position values.
818
+ * @summary Extends the basic ElementPosition with additional flex-specific position values.
787
819
  * These positions are used for controlling alignment and distribution in flex containers.
788
- * @typedef {(ElementPositions|'stretch'|'middle'|'around'|'between')} FlexPositions
820
+ * @typedef {(ElementPosition |'stretch'|'middle'|'around'|'between')} FlexPosition
789
821
  * @memberOf module:engine
790
822
  */
791
- type FlexPositions = ElementPositions | 'stretch' | 'middle' | 'around' | 'between';
823
+ type FlexPosition = ElementPosition | 'stretch' | 'middle' | 'around' | 'between';
792
824
  /**
793
825
  * @description Update mode options for form fields
794
826
  * @summary Defines when form field values should be updated in the model.
@@ -799,15 +831,16 @@ type FlexPositions = ElementPositions | 'stretch' | 'middle' | 'around' | 'betwe
799
831
  * @memberOf module:engine
800
832
  */
801
833
  type FieldUpdateMode = 'change' | 'blur' | 'submit';
834
+ type HTML5InputType = typeof HTML5InputTypes[keyof typeof HTML5InputTypes];
802
835
  /**
803
836
  * @description Possible input types for form fields
804
837
  * @summary Defines the possible input types that can be used in form fields.
805
838
  * Includes standard HTML input types like checkbox, radio, and select,
806
839
  * as well as Ionic's TextFieldTypes and textarea.
807
- * @typedef {('checkbox'|'radio'|'select'|TextFieldTypes|'textarea')} PossibleInputTypes
840
+ * @typedef {TextFieldTypes | HTML5InputType} PossibleInputTypes
808
841
  * @memberOf module:engine
809
842
  */
810
- type PossibleInputTypes = 'checkbox' | 'radio' | 'select' | TextFieldTypes | 'file' | 'textarea';
843
+ type PossibleInputTypes = TextFieldTypes | HTML5InputType;
811
844
  /**
812
845
  * @description Field definition for Angular components
813
846
  * @summary A comprehensive type that combines properties from various Ionic components
@@ -900,30 +933,40 @@ type FormParent = FormGroup | FormArray;
900
933
  */
901
934
  type FormParentGroup = [FormParent, string];
902
935
  /**
903
- * @description Configuration for internationalization resources
904
- * @summary Represents a single or an array of internationalization resource configurations.
936
+ * @description Represents the configuration for internationalization resources.
937
+ * @summary This type can either be a single `I18nResourceConfig` object or an array of such objects.
905
938
  * @typedef {I18nResourceConfig | I18nResourceConfig[]} I18nResourceConfigType
906
939
  * @memberOf module:lib/engine/types
907
940
  */
908
941
  type I18nResourceConfigType = I18nResourceConfig | I18nResourceConfig[];
909
942
  /**
910
- * @description União de todos os valores definidos em `WindowColorSchemes`.
911
- * @summary Representa o esquema de cores possível para a janela (por exemplo 'light' | 'dark').
912
- * @see WindowColorSchemes
913
- * @example
914
- * // valor típico: 'light' ou 'dark'
915
- * const scheme: WindowColorScheme = 'dark';
943
+ * @description Represents the possible color schemes for a window.
944
+ * @summary This type is derived from the `WindowColorSchemes` constant, allowing only its defined keys as values.
945
+ * @typedef {typeof WindowColorSchemes[keyof typeof WindowColorSchemes]} WindowColorScheme
946
+ * @memberOf module:lib/engine/types
916
947
  */
917
948
  type WindowColorScheme = typeof WindowColorSchemes[keyof typeof WindowColorSchemes];
918
949
  /**
919
- * @description Tipo que representa as roles/ações possíveis definidas em `ActionRoles`.
920
- * @summary Usado para tipar valores que correspondem a uma ação semântica (ex.: 'submit', 'cancel').
921
- * @see ActionRoles
922
- * @example
923
- * const role: ActionRole = ActionRoles.cancel;
950
+ * @description Represents the possible roles for an action.
951
+ * @summary This type is derived from the `ActionRoles` constant, allowing only its defined keys as values.
952
+ * @typedef {typeof ActionRoles[keyof typeof ActionRoles]} ActionRole
953
+ * @memberOf module:lib/engine/types
924
954
  */
925
955
  type ActionRole = typeof ActionRoles[keyof typeof ActionRoles];
956
+ /**
957
+ * @description Represents the possible grid gap values for a layout.
958
+ * @summary This type is derived from the `LayoutGridGaps` constant, allowing only its defined keys as values.
959
+ * @typedef {typeof LayoutGridGaps[keyof typeof LayoutGridGaps]} LayoutGridGap
960
+ * @memberOf module:lib/engine/types
961
+ */
926
962
  type LayoutGridGap = typeof LayoutGridGaps[keyof typeof LayoutGridGaps];
963
+ /**
964
+ * @description Represents the possible positions for a list item.
965
+ * @summary This type is derived from the `ListItemPositions` constant, allowing only its defined keys as values.
966
+ * @typedef {typeof ListItemPositions[keyof typeof ListItemPositions]} ListItemPosition
967
+ * @memberOf module:lib/engine/types
968
+ */
969
+ type ListItemPosition = typeof ListItemPositions[keyof typeof ListItemPositions];
927
970
 
928
971
  /**
929
972
  * @module NgxMediaService
@@ -1533,7 +1576,7 @@ declare abstract class NgxComponentDirective extends LoggedClass implements OnCh
1533
1576
  * @default false
1534
1577
  * @memberOf module:lib/engine/NgxComponentDirective
1535
1578
  */
1536
- protected isModalChild: boolean;
1579
+ isModalChild: boolean;
1537
1580
  /**
1538
1581
  * @description Constructor for NgxComponentDirective.
1539
1582
  * @summary Initializes the directive by setting up the component name, locale root,
@@ -1793,7 +1836,7 @@ declare abstract class NgxComponentDirective extends LoggedClass implements OnCh
1793
1836
  */
1794
1837
  changeOperation(operation: string, id?: string): Promise<boolean>;
1795
1838
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxComponentDirective, never>;
1796
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxComponentDirective, never, never, { "enableDarkMode": { "alias": "enableDarkMode"; "required": false; }; "isDarkMode": { "alias": "isDarkMode"; "required": false; }; "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>;
1839
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxComponentDirective, never, never, { "enableDarkMode": { "alias": "enableDarkMode"; "required": false; }; "isDarkMode": { "alias": "isDarkMode"; "required": false; }; "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; }; "isModalChild": { "alias": "isModalChild"; "required": false; }; }, { "listenEvent": "listenEvent"; }, never, never, true, never>;
1797
1840
  }
1798
1841
 
1799
1842
  declare class NgxRenderableComponentDirective extends NgxComponentDirective implements OnChanges, OnDestroy, IRenderedModel {
@@ -1895,7 +1938,7 @@ declare class NgxRenderableComponentDirective extends NgxComponentDirective impl
1895
1938
  * @return {void}
1896
1939
  * @memberOf NgxComponentDirective
1897
1940
  */
1898
- protected subscribeEvents(): Promise<void>;
1941
+ protected subscribeEvents(component?: Type<unknown>): Promise<void>;
1899
1942
  /**
1900
1943
  * @description Unsubscribes from all events of the dynamic component.
1901
1944
  * @summary This method cleans up event subscriptions when the component is being destroyed.
@@ -2892,6 +2935,7 @@ declare class CrudFieldComponent extends NgxFormFieldDirective implements OnInit
2892
2935
  * @memberOf CrudFieldComponent
2893
2936
  */
2894
2937
  getOptions(): Promise<CrudFieldOption[]>;
2938
+ openSelectOptions(event: Event, selectInterface: SelectInterface): Promise<void>;
2895
2939
  /**
2896
2940
  * @description Component after view initialization lifecycle method.
2897
2941
  * @summary Calls the parent afterViewInit method for READ and DELETE operations.
@@ -2972,9 +3016,9 @@ declare class NgxParentComponentDirective extends NgxComponentDirective implemen
2972
3016
  * on the currently active page. This is a filtered subset of the children array,
2973
3017
  * updated whenever the user navigates between pages.
2974
3018
  *
2975
- * @type {UIModelMetadata | UIModelMetadata[] | undefined}
3019
+ * @type { UIModelMetadata | UIModelMetadata[] | FieldDefinition | FieldDefinition[] | undefined }
2976
3020
  */
2977
- activeContent: UIModelMetadata | UIModelMetadata[] | FieldDefinition | FieldDefinition[] | undefined;
3021
+ activePage: UIModelMetadata | UIModelMetadata[] | FieldDefinition | FieldDefinition[] | undefined;
2978
3022
  /**
2979
3023
  * @description The currently active page number.
2980
3024
  * @summary Tracks which page of the multi-step form is currently being displayed.
@@ -3023,13 +3067,81 @@ declare class NgxParentComponentDirective extends NgxComponentDirective implemen
3023
3067
  * @default 1
3024
3068
  */
3025
3069
  rows: number | KeyValue[] | string[];
3070
+ /**
3071
+ * @description Defines the body style of the card.
3072
+ * @summary Specifies the appearance of the card body, allowing customization
3073
+ * between default, small, or blank styles. This input is used to control the
3074
+ * visual presentation of the card content.
3075
+ * @type {'default' | 'small' | 'blank'}
3076
+ * @default 'default'
3077
+ */
3078
+ cardBody: 'default' | 'small' | 'blank';
3079
+ /**
3080
+ * @description Specifies the type of the card.
3081
+ * @summary Determines the card's visual style, such as clear or shadowed.
3082
+ * This input allows for flexible styling of the card component to match
3083
+ * different design requirements.
3084
+ * @type {'clear' | 'shadow'}
3085
+ * @default 'clear'
3086
+ */
3087
+ cardType: 'clear' | 'shadow';
3088
+ /**
3089
+ * @description Controls whether borders are displayed around the fieldset.
3090
+ * @summary Boolean flag that determines if the fieldset should be visually outlined with borders.
3091
+ * When true, borders are shown to visually separate the fieldset from surrounding content.
3092
+ *
3093
+ * @type {boolean}
3094
+ * @default true
3095
+ */
3096
+ borders: boolean;
3097
+ /**
3098
+ * @description Media breakpoint for responsive behavior.
3099
+ * @summary Determines the responsive breakpoint at which the layout should adapt.
3100
+ * This affects how the grid behaves on different screen sizes, allowing for
3101
+ * mobile-first or desktop-first responsive design patterns. The breakpoint
3102
+ * is automatically processed to ensure compatibility with the UI framework.
3103
+ *
3104
+ * @type {UIMediaBreakPointsType}
3105
+ * @default 'medium'
3106
+ */
3107
+ breakpoint?: UIMediaBreakPointsType | string;
3108
+ /**
3109
+ * @description Determines if the layout should match the parent container's size or configuration.
3110
+ * @summary Boolean flag that controls whether the component should adapt its layout to match its parent.
3111
+ * When true, the component will attempt to align or size itself according to the parent container.
3112
+ *
3113
+ * @type {boolean}
3114
+ * @default true
3115
+ */
3116
+ match: boolean;
3117
+ /**
3118
+ * @description Preloads card placeholders for rendering.
3119
+ * @summary Used to create an array of placeholder elements for card components,
3120
+ * typically to reserve space or trigger rendering logic before actual data is loaded.
3121
+ *
3122
+ * @type {any[]}
3123
+ * @default [undefined]
3124
+ */
3125
+ preloadCards: string[];
3126
+ /**
3127
+ * @description Subscription for timer-based operations.
3128
+ * @summary Manages the timer subscription used for asynchronous operations
3129
+ * like updating active children after page transitions. This subscription
3130
+ * is cleaned up in ngOnDestroy to prevent memory leaks.
3131
+ *
3132
+ * @private
3133
+ * @type {Subscription}
3134
+ * @memberOf SteppedFormComponent
3135
+ */
3136
+ protected timerSubscription: Subscription;
3026
3137
  ngOnInit(model?: Model | string): Promise<void>;
3138
+ ngOnDestroy(): Promise<void> | void;
3139
+ protected getActivePage(page: number): UIModelMetadata | UIModelMetadata[] | FieldDefinition | undefined;
3027
3140
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxParentComponentDirective, never>;
3028
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxParentComponentDirective, never, never, { "page": { "alias": "page"; "required": false; }; "pages": { "alias": "pages"; "required": false; }; "parentForm": { "alias": "parentForm"; "required": false; }; "children": { "alias": "children"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, {}, never, never, true, never>;
3141
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxParentComponentDirective, never, never, { "page": { "alias": "page"; "required": false; }; "pages": { "alias": "pages"; "required": false; }; "parentForm": { "alias": "parentForm"; "required": false; }; "children": { "alias": "children"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cardBody": { "alias": "cardBody"; "required": false; }; "cardType": { "alias": "cardType"; "required": false; }; "borders": { "alias": "borders"; "required": false; }; "breakpoint": { "alias": "breakpoint"; "required": false; }; "match": { "alias": "match"; "required": false; }; }, {}, never, never, true, never>;
3029
3142
  }
3030
3143
 
3031
3144
  declare abstract class NgxFormDirective extends NgxParentComponentDirective implements OnInit, AfterViewInit, IFormElement, OnDestroy, IRenderedModel {
3032
- crudFieldComponent: string;
3033
3145
  /**
3034
3146
  * @description Reactive form group associated with this fieldset.
3035
3147
  * @summary The FormGroup instance that contains all form controls within this fieldset.
@@ -3167,6 +3279,7 @@ declare abstract class NgxFormDirective extends NgxParentComponentDirective impl
3167
3279
  * @default Randomly generated 12-character string
3168
3280
  */
3169
3281
  allowClear: boolean;
3282
+ match: boolean;
3170
3283
  protected activeFormGroupIndex: number;
3171
3284
  get activeFormGroup(): FormParent;
3172
3285
  /**
@@ -3201,8 +3314,34 @@ declare abstract class NgxFormDirective extends NgxParentComponentDirective impl
3201
3314
  */
3202
3315
  handleReset(): void;
3203
3316
  handleSubmit(event?: SubmitEvent, eventName?: string, componentName?: string): Promise<boolean | void>;
3317
+ /**
3318
+ * @description Updates the active form group and children for the specified page.
3319
+ * @summary Extracts the FormGroup for the given page from the FormArray and filters
3320
+ * the children to show only fields belonging to that page. Uses a timer to ensure
3321
+ * proper Angular change detection when updating the activeContent.
3322
+ *
3323
+ * @param {number} page - The page number to activate
3324
+ * @return {UIModelMetadata | UIModelMetadata[] | FieldDefinition | undefined}
3325
+ *
3326
+ * @private
3327
+ * @mermaid
3328
+ * sequenceDiagram
3329
+ * participant S as SteppedFormComponent
3330
+ * participant F as FormArray
3331
+ * participant T as Timer
3332
+ *
3333
+ * S->>F: Extract FormGroup at index (page - 1)
3334
+ * F-->>S: Return page FormGroup
3335
+ * S->>S: Set activeContent = undefined
3336
+ * S->>T: timer(10).subscribe()
3337
+ * T-->>S: Filter children for active page
3338
+ * S->>S: Set activeContent
3339
+ *
3340
+ * @memberOf SteppedFormComponent
3341
+ */
3342
+ protected getActivePage(page: number): UIModelMetadata | UIModelMetadata[] | FieldDefinition | undefined;
3204
3343
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxFormDirective, never>;
3205
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxFormDirective, never, never, { "parentFormId": { "alias": "parentFormId"; "required": false; }; "modalForm": { "alias": "modalForm"; "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>;
3344
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxFormDirective, never, never, { "parentFormId": { "alias": "parentFormId"; "required": false; }; "modalForm": { "alias": "modalForm"; "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; }; "match": { "alias": "match"; "required": false; }; }, { "submitEvent": "submitEvent"; }, never, never, true, never>;
3206
3345
  }
3207
3346
 
3208
3347
  declare class CrudFormComponent extends NgxFormDirective {
@@ -3234,9 +3373,9 @@ declare class CrudFormComponent extends NgxFormDirective {
3234
3373
  }
3235
3374
 
3236
3375
  declare class CardComponent extends NgxComponentDirective implements OnInit {
3237
- type: 'default' | 'shadow';
3376
+ type: 'clear' | 'shadow';
3238
3377
  title: string;
3239
- body: 'small' | 'default';
3378
+ body: 'small' | 'default' | 'blank';
3240
3379
  subtitle: string;
3241
3380
  color: Color;
3242
3381
  separator: boolean;
@@ -3369,13 +3508,13 @@ declare class EmptyStateComponent extends CardComponent implements OnInit {
3369
3508
  * @default 'large'
3370
3509
  * @memberOf EmptyStateComponent
3371
3510
  */
3372
- iconSize?: 'large' | 'small';
3511
+ iconSize?: Extract<ElementSize, 'large' | 'small'>;
3373
3512
  /**
3374
3513
  * @description The color of the displayed icon.
3375
3514
  * @summary Specifies the color for the icon using Ionic's predefined color system.
3376
3515
  * This allows the icon to match the application's color scheme.
3377
3516
  *
3378
- * @type {PredefinedColors | undefined}
3517
+ * @type {string}
3379
3518
  * @default 'medium'
3380
3519
  * @memberOf EmptyStateComponent
3381
3520
  */
@@ -3430,7 +3569,7 @@ declare class EmptyStateComponent extends CardComponent implements OnInit {
3430
3569
  * @default 'default'
3431
3570
  * @memberOf EmptyStateComponent
3432
3571
  */
3433
- buttonSize: 'large' | 'small' | 'default';
3572
+ buttonSize: Extract<ElementSize, 'large' | 'small' | 'default'>;
3434
3573
  /**
3435
3574
  * @description The search value that resulted in no results.
3436
3575
  * @summary When the empty state is shown due to a search with no results,
@@ -3810,6 +3949,39 @@ declare class FieldsetComponent extends NgxFormDirective implements OnInit, Afte
3810
3949
  * @memberOf FieldsetComponent
3811
3950
  */
3812
3951
  max: number | undefined;
3952
+ /**
3953
+ * @description Maximum allowed items in the fieldset.
3954
+ * @summary Numeric limit that controls how many items can be added when `multiple` is true.
3955
+ * When set to Infinity there is no limit.
3956
+ *
3957
+ * @type {number}
3958
+ * @default Infinity
3959
+ * @memberOf FieldsetComponent
3960
+ */
3961
+ required: boolean;
3962
+ /**
3963
+ * @description Determines if the fieldset items can be reordered.
3964
+ * @summary Boolean flag that enables or disables the drag-and-drop reordering functionality
3965
+ * for the items within the fieldset. When set to true, users can rearrange the order
3966
+ * of items using drag-and-drop gestures. This is particularly useful for managing
3967
+ * lists where the order of items is significant.
3968
+ *
3969
+ * @type {boolean}
3970
+ * @default true
3971
+ * @memberOf FieldsetComponent
3972
+ */
3973
+ ordenable: boolean;
3974
+ /**
3975
+ * @description Determines if the fieldset items can be edited by the user.
3976
+ * @summary Boolean flag that enables or disables the editing functionality
3977
+ * for the items within the fieldset. When set to true, users can modify the items.
3978
+ *
3979
+ * @type {boolean}
3980
+ * @default true
3981
+ * @memberOf FieldsetComponent
3982
+ * @default true
3983
+ */
3984
+ editable: boolean;
3813
3985
  /**
3814
3986
  * @description Component constructor that initializes the fieldset with icons and component name.
3815
3987
  * @summary Calls the parent NgxFormDirective constructor with the component name and
@@ -3870,7 +4042,7 @@ declare class FieldsetComponent extends NgxFormDirective implements OnInit, Afte
3870
4042
  * @returns {void}
3871
4043
  * @memberOf FieldsetComponent
3872
4044
  */
3873
- handleRemoveComponent(event: Event): void;
4045
+ handleClear(event?: Event): void;
3874
4046
  /**
3875
4047
  * @description Handles creating new items or triggering group addition events.
3876
4048
  * @summary Processes form validation events for item creation or emits events to trigger
@@ -3981,10 +4153,10 @@ declare class FieldsetComponent extends NgxFormDirective implements OnInit, Afte
3981
4153
  * error state and accordion visibility accordingly.
3982
4154
  *
3983
4155
  * @param {CustomEvent} event - Custom event containing validation error details
3984
- * @returns {void}
4156
+ * @returns {UIModelMetadata[] | undefined}
3985
4157
  * @memberOf FieldsetComponent
3986
4158
  */
3987
- handleValidationError(event: CustomEvent): void;
4159
+ protected getActivePage(): UIModelMetadata[] | undefined;
3988
4160
  /**
3989
4161
  * @description Processes and stores a new or updated value in the fieldset.
3990
4162
  * @summary Handles both create and update operations for fieldset items. Parses and cleans
@@ -4009,7 +4181,7 @@ declare class FieldsetComponent extends NgxFormDirective implements OnInit, Afte
4009
4181
  */
4010
4182
  private getMapper;
4011
4183
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldsetComponent, never>;
4012
- static ɵcmp: i0.ɵɵComponentDeclaration<FieldsetComponent, "ngx-decaf-fieldset", never, { "formControl": { "alias": "formControl"; "required": false; }; "collapsable": { "alias": "collapsable"; "required": false; }; "customTypes": { "alias": "customTypes"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "value": { "alias": "value"; "required": false; }; "borders": { "alias": "borders"; "required": false; }; "max": { "alias": "max"; "required": false; }; }, {}, never, never, true, never>;
4184
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldsetComponent, "ngx-decaf-fieldset", never, { "formControl": { "alias": "formControl"; "required": false; }; "collapsable": { "alias": "collapsable"; "required": false; }; "customTypes": { "alias": "customTypes"; "required": false; }; "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "value": { "alias": "value"; "required": false; }; "borders": { "alias": "borders"; "required": false; }; "max": { "alias": "max"; "required": false; }; "required": { "alias": "required"; "required": false; }; "ordenable": { "alias": "ordenable"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; }, {}, never, never, true, never>;
4013
4185
  }
4014
4186
 
4015
4187
  /**
@@ -4557,18 +4729,6 @@ declare class LayoutComponent extends NgxParentComponentDirective implements OnI
4557
4729
  * @memberOf LayoutComponent
4558
4730
  */
4559
4731
  gap: LayoutGridGap;
4560
- /**
4561
- * @description Media breakpoint for responsive behavior.
4562
- * @summary Determines the responsive breakpoint at which the layout should adapt.
4563
- * This affects how the grid behaves on different screen sizes, allowing for
4564
- * mobile-first or desktop-first responsive design patterns. The breakpoint
4565
- * is automatically processed to ensure compatibility with the UI framework.
4566
- *
4567
- * @type {UIMediaBreakPointsType}
4568
- * @default 'medium'
4569
- * @memberOf LayoutComponent
4570
- */
4571
- breakpoint: UIMediaBreakPointsType | string;
4572
4732
  /**
4573
4733
  * @description Media breakpoint for responsive behavior.
4574
4734
  * @summary Determines the responsive breakpoint at which the layout should adapt.
@@ -4581,18 +4741,6 @@ declare class LayoutComponent extends NgxParentComponentDirective implements OnI
4581
4741
  * @memberOf LayoutComponent
4582
4742
  */
4583
4743
  grid: boolean;
4584
- /**
4585
- * @description Media breakpoint for responsive behavior.
4586
- * @summary Determines the responsive breakpoint at which the layout should adapt.
4587
- * This affects how the grid behaves on different screen sizes, allowing for
4588
- * mobile-first or desktop-first responsive design patterns. The breakpoint
4589
- * is automatically processed to ensure compatibility with the UI framework.
4590
- *
4591
- * @type {UIMediaBreakPointsType}
4592
- * @default 'medium'
4593
- * @memberOf LayoutComponent
4594
- */
4595
- match: boolean;
4596
4744
  /**
4597
4745
  * @description Media breakpoint for responsive behavior.
4598
4746
  * @summary Determines the responsive breakpoint at which the layout should adapt.
@@ -4681,7 +4829,7 @@ declare class LayoutComponent extends NgxParentComponentDirective implements OnI
4681
4829
  */
4682
4830
  ngOnInit(): Promise<void>;
4683
4831
  static ɵfac: i0.ɵɵFactoryDeclaration<LayoutComponent, never>;
4684
- static ɵcmp: i0.ɵɵComponentDeclaration<LayoutComponent, "ngx-decaf-layout", never, { "gap": { "alias": "gap"; "required": false; }; "breakpoint": { "alias": "breakpoint"; "required": false; }; "grid": { "alias": "grid"; "required": false; }; "match": { "alias": "match"; "required": false; }; "flexMode": { "alias": "flexMode"; "required": false; }; "rowCard": { "alias": "rowCard"; "required": false; }; "maxColsLength": { "alias": "maxColsLength"; "required": false; }; }, {}, never, never, true, never>;
4832
+ static ɵcmp: i0.ɵɵComponentDeclaration<LayoutComponent, "ngx-decaf-layout", never, { "gap": { "alias": "gap"; "required": false; }; "grid": { "alias": "grid"; "required": false; }; "flexMode": { "alias": "flexMode"; "required": false; }; "rowCard": { "alias": "rowCard"; "required": false; }; "maxColsLength": { "alias": "maxColsLength"; "required": false; }; }, {}, never, never, true, never>;
4685
4833
  }
4686
4834
 
4687
4835
  /**
@@ -6732,17 +6880,6 @@ declare class SteppedFormComponent extends NgxFormDirective implements OnInit, O
6732
6880
  * @memberOf SteppedFormComponent
6733
6881
  */
6734
6882
  pagesArray: UIModelMetadata[];
6735
- /**
6736
- * @description Subscription for timer-based operations.
6737
- * @summary Manages the timer subscription used for asynchronous operations
6738
- * like updating active children after page transitions. This subscription
6739
- * is cleaned up in ngOnDestroy to prevent memory leaks.
6740
- *
6741
- * @private
6742
- * @type {Subscription}
6743
- * @memberOf SteppedFormComponent
6744
- */
6745
- private timerSubscription;
6746
6883
  /**
6747
6884
  * @description Event emitter for form submission.
6748
6885
  * @summary Emits events when the form is submitted, typically on the last page
@@ -6843,58 +6980,198 @@ declare class SteppedFormComponent extends NgxFormDirective implements OnInit, O
6843
6980
  * @memberOf SteppedFormComponent
6844
6981
  */
6845
6982
  handleBack(): void;
6846
- /**
6847
- * @description Updates the active form group and children for the specified page.
6848
- * @summary Extracts the FormGroup for the given page from the FormArray and filters
6849
- * the children to show only fields belonging to that page. Uses a timer to ensure
6850
- * proper Angular change detection when updating the activeContent.
6851
- *
6852
- * @param {number} page - The page number to activate
6853
- * @return {void}
6854
- *
6855
- * @private
6856
- * @mermaid
6857
- * sequenceDiagram
6858
- * participant S as SteppedFormComponent
6859
- * participant F as FormArray
6860
- * participant T as Timer
6861
- *
6862
- * S->>F: Extract FormGroup at index (page - 1)
6863
- * F-->>S: Return page FormGroup
6864
- * S->>S: Set activeContent = undefined
6865
- * S->>T: timer(10).subscribe()
6866
- * T-->>S: Filter children for active page
6867
- * S->>S: Set activeContent
6868
- *
6869
- * @memberOf SteppedFormComponent
6870
- */
6871
- private getCurrentFormGroup;
6872
6983
  static ɵfac: i0.ɵɵFactoryDeclaration<SteppedFormComponent, never>;
6873
6984
  static ɵcmp: i0.ɵɵComponentDeclaration<SteppedFormComponent, "ngx-decaf-stepped-form", never, { "children": { "alias": "children"; "required": false; }; "paginated": { "alias": "paginated"; "required": false; }; "pages": { "alias": "pages"; "required": false; }; "pageTitles": { "alias": "pageTitles"; "required": false; }; "operation": { "alias": "operation"; "required": false; }; "startPage": { "alias": "startPage"; "required": false; }; }, {}, never, never, true, never>;
6874
6985
  }
6875
6986
 
6987
+ /**
6988
+ * @description Modal component for displaying dynamic content in a modal dialog.
6989
+ * @summary This component provides a flexible and reusable modal dialog implementation
6990
+ * for Angular applications. It supports dynamic content rendering, customizable options,
6991
+ * and event handling for modal lifecycle events. The modal can be used for various purposes,
6992
+ * such as displaying forms, lightboxes, or selection dialogs.
6993
+ *
6994
+ * @class ModalComponent
6995
+ * @example
6996
+ * ```typescript
6997
+ * <ngx-decaf-modal [isOpen]="true" [title]="'Example Modal'"></ngx-decaf-modal>
6998
+ * ```
6999
+ * @mermaid
7000
+ * sequenceDiagram
7001
+ * participant User
7002
+ * participant ModalComponent
7003
+ * User->>ModalComponent: Open modal
7004
+ * ModalComponent->>ModalController: Initialize modal
7005
+ * ModalController-->>ModalComponent: Modal options set
7006
+ * User->>ModalComponent: Interact with modal
7007
+ * ModalComponent->>ModalController: Handle dismiss event
7008
+ */
6876
7009
  declare class ModalComponent extends NgxParentComponentDirective implements OnInit {
7010
+ modal: IonModal;
7011
+ /**
7012
+ * @description Title of the modal dialog.
7013
+ * @summary Specifies the title text displayed in the modal header.
7014
+ * @type {string | undefined}
7015
+ */
6877
7016
  title?: string;
7017
+ /**
7018
+ * @description Determines whether the modal is open.
7019
+ * @summary Controls the visibility of the modal dialog. When set to true, the modal is displayed.
7020
+ * @type {boolean}
7021
+ * @default false
7022
+ */
6878
7023
  isOpen: boolean;
7024
+ /**
7025
+ * @description Tag identifier for the modal.
7026
+ * @summary Provides a unique tag for identifying the modal instance.
7027
+ * @type {string | undefined}
7028
+ */
7029
+ tag?: string;
7030
+ /**
7031
+ * @description Options for configuring the modal.
7032
+ * @summary Allows customization of modal behavior and appearance through the ModalOptions interface.
7033
+ * @type {ModalOptions | undefined}
7034
+ */
6879
7035
  options?: ModalOptions;
7036
+ /**
7037
+ * @description Global key-value pairs for modal configuration.
7038
+ * @summary Stores global settings that can be accessed within the modal instance.
7039
+ * @type {KeyValue | undefined}
7040
+ */
6880
7041
  globals?: KeyValue;
7042
+ /**
7043
+ * @description Inline content to be displayed in the modal.
7044
+ * @summary Specifies the HTML or SafeHtml content to be rendered inside the modal.
7045
+ * @type {string | SafeHtml | undefined}
7046
+ */
6881
7047
  inlineContent?: string | SafeHtml;
6882
- InlineContentPosition: 'top' | 'bottom';
7048
+ /**
7049
+ * @description Position of the inline content within the modal.
7050
+ * @summary Determines whether the inline content is displayed at the top or bottom of the modal.
7051
+ * @type {'top' | 'bottom'}
7052
+ * @default 'bottom'
7053
+ */
7054
+ inlineContentPosition: 'top' | 'bottom';
7055
+ /**
7056
+ * @description Enables fullscreen mode for the modal.
7057
+ * @summary When set to true, the modal occupies the entire screen.
7058
+ * @type {boolean}
7059
+ * @default false
7060
+ */
6883
7061
  fullscreen: boolean;
6884
- modalController: ModalController;
7062
+ /**
7063
+ * @description Enables lightbox mode for the modal.
7064
+ * @summary When set to true, the modal is displayed as a lightbox.
7065
+ * @type {boolean}
7066
+ * @default false
7067
+ */
7068
+ lightBox: boolean;
7069
+ /**
7070
+ * @description Event emitted when the modal is about to be dismissed.
7071
+ * @summary Emits an OverlayEventDetail object containing details about the dismiss event.
7072
+ * @type {EventEmitter<OverlayEventDetail>}
7073
+ */
7074
+ willDismissEvent: EventEmitter<OverlayEventDetail>;
7075
+ /**
7076
+ * @description Sanitizer instance for bypassing security and sanitizing HTML content.
7077
+ * @summary Used to sanitize dynamic HTML content, ensuring it is safe to render in the DOM.
7078
+ * @type {DomSanitizer}
7079
+ */
7080
+ domSanitizer: DomSanitizer;
6885
7081
  constructor();
7082
+ /**
7083
+ * @description Lifecycle hook that initializes the modal component.
7084
+ * @summary Sets up the modal controller and sanitizes inline content if provided.
7085
+ *
7086
+ * @returns {Promise<void>} - A promise that resolves when initialization is complete.
7087
+ */
6886
7088
  ngOnInit(): Promise<void>;
7089
+ /**
7090
+ * @description Initializes the modal with the provided options.
7091
+ * @summary Merges default options with user-provided options and sets global configuration.
7092
+ *
7093
+ * @param {KeyValue} [options={}] - Additional options for modal initialization.
7094
+ * @returns {Promise<void>} - A promise that resolves when initialization is complete.
7095
+ */
6887
7096
  initialize(options?: KeyValue): Promise<void>;
7097
+ /**
7098
+ * @description Creates and presents the modal.
7099
+ * @summary Initializes the modal with the provided properties and displays it.
7100
+ *
7101
+ * @param {KeyValue} [props={}] - Properties to initialize the modal.
7102
+ * @returns {Promise<ModalComponent>} - A promise that resolves with the modal instance.
7103
+ */
6888
7104
  create(props?: KeyValue): Promise<ModalComponent>;
6889
- present(): void;
6890
- handleEvent(event: CustomEvent<IBaseCustomEvent>): Promise<void>;
6891
- handleWillDismiss(event: CustomEvent<OverlayEventDetail>): void;
7105
+ /**
7106
+ * @description Presents the modal.
7107
+ * @summary Sets the modal's visibility to true and triggers change detection.
7108
+ *
7109
+ * @returns {Promise<void>} - A promise that resolves when the modal is presented.
7110
+ */
7111
+ present(): Promise<void>;
7112
+ /**
7113
+ * @description Handles custom events for the modal.
7114
+ * @summary Stops event propagation and triggers confirm or cancel actions based on event data.
7115
+ *
7116
+ * @param {IBaseCustomEvent} event - The custom event to handle.
7117
+ * @returns {Promise<void>} - A promise that resolves when the event is handled.
7118
+ */
7119
+ handleEvent(event: IBaseCustomEvent): Promise<void>;
7120
+ /**
7121
+ * @description Handles the modal dismiss event.
7122
+ * @summary This method is triggered when the modal is about to be dismissed. It emits the `willDismissEvent` with the event details.
7123
+ *
7124
+ * @param {CustomEvent<OverlayEventDetail>} event - The dismiss event containing overlay details.
7125
+ * @returns {Promise<OverlayEventDetail>} - A promise that resolves with the overlay event details.
7126
+ */
7127
+ handleWillDismiss(event: CustomEvent<OverlayEventDetail>): Promise<OverlayEventDetail>;
7128
+ /**
7129
+ * @description Cancels the modal and dismisses it with a cancel action.
7130
+ * @summary This method is used to programmatically close the modal with a cancel action.
7131
+ *
7132
+ * @returns {Promise<void>} - A promise that resolves when the modal is dismissed.
7133
+ */
6892
7134
  cancel(): Promise<void>;
6893
- confirm(event: CustomEvent<OverlayEventDetail>): Promise<void>;
7135
+ /**
7136
+ * @description Confirms the modal and dismisses it with a confirm action.
7137
+ * @summary This method is used to programmatically close the modal with a confirm action, passing optional event data.
7138
+ *
7139
+ * @param {IBaseCustomEvent} event - The custom event containing data to pass during confirmation.
7140
+ * @returns {Promise<void>} - A promise that resolves when the modal is dismissed.
7141
+ */
7142
+ confirm(event: IBaseCustomEvent): Promise<void>;
6894
7143
  static ɵfac: i0.ɵɵFactoryDeclaration<ModalComponent, never>;
6895
- static ɵcmp: i0.ɵɵComponentDeclaration<ModalComponent, "ngx-decaf-modal", never, { "title": { "alias": "title"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "options": { "alias": "options"; "required": false; }; "globals": { "alias": "globals"; "required": false; }; "inlineContent": { "alias": "inlineContent"; "required": false; }; "InlineContentPosition": { "alias": "InlineContentPosition"; "required": false; }; "fullscreen": { "alias": "fullscreen"; "required": false; }; }, {}, never, never, true, never>;
7144
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModalComponent, "ngx-decaf-modal", never, { "title": { "alias": "title"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "tag": { "alias": "tag"; "required": false; }; "options": { "alias": "options"; "required": false; }; "globals": { "alias": "globals"; "required": false; }; "inlineContent": { "alias": "inlineContent"; "required": false; }; "inlineContentPosition": { "alias": "inlineContentPosition"; "required": false; }; "fullscreen": { "alias": "fullscreen"; "required": false; }; "lightBox": { "alias": "lightBox"; "required": false; }; }, { "willDismissEvent": "willDismissEvent"; }, never, never, true, never>;
6896
7145
  }
6897
- declare function getNgxModalComponent(props?: Partial<ModalComponent>, modalProps?: Partial<ModalOptions>, injector?: EnvironmentInjector): Promise<ModalComponent>;
7146
+ /**
7147
+ * @description Retrieves a modal component instance.
7148
+ * @summary Creates and initializes a modal component with the provided properties and options.
7149
+ *
7150
+ * @param {Partial<ModalComponent>} [props={}] - Properties to initialize the modal component.
7151
+ * @param {Partial<ModalOptions>} [modalProps={}] - Additional modal options.
7152
+ * @param {EnvironmentInjector} [injector] - Optional environment injector for dependency injection.
7153
+ * @returns {Promise<IonModal>} - A promise that resolves with the modal instance.
7154
+ */
7155
+ declare function getNgxModalComponent(props?: Partial<ModalComponent>, modalProps?: Partial<ModalOptions>, injector?: EnvironmentInjector): Promise<IonModal>;
7156
+ /**
7157
+ * @description Presents a lightbox modal with inline content.
7158
+ * @summary Displays a modal in lightbox mode with the specified content and properties.
7159
+ *
7160
+ * @param {string | SafeHtml} inlineContent - The content to display in the lightbox modal.
7161
+ * @param {Partial<ModalComponent>} [props={}] - Properties to initialize the modal component.
7162
+ * @param {EnvironmentInjector} [injector] - Optional environment injector for dependency injection.
7163
+ * @returns {Promise<void>} - A promise that resolves when the modal is presented.
7164
+ */
7165
+ declare function presentNgxLightBoxModal(inlineContent: string | SafeHtml, props?: Partial<ModalComponent>, injector?: EnvironmentInjector): Promise<void>;
7166
+ /**
7167
+ * @description Retrieves a modal for selecting options.
7168
+ * @summary Creates and initializes a modal component for displaying a list of selectable options.
7169
+ *
7170
+ * @param {SelectOption[]} options - The list of options to display in the modal.
7171
+ * @param {EnvironmentInjector} [injector] - Optional environment injector for dependency injection.
7172
+ * @returns {Promise<IonModal>} - A promise that resolves with the modal instance.
7173
+ */
7174
+ declare function getNgxSelectOptionsModal(options: SelectOption[], injector?: EnvironmentInjector): Promise<IonModal>;
6898
7175
 
6899
7176
  declare class IconComponent implements OnInit, AfterViewInit {
6900
7177
  /** @description Reference to the component's native DOM element.
@@ -6918,7 +7195,8 @@ declare class IconComponent implements OnInit, AfterViewInit {
6918
7195
  isSvg: boolean;
6919
7196
  initialized: boolean;
6920
7197
  inline: boolean;
6921
- mediaService: NgxMediaService$1;
7198
+ isDarkMode: boolean;
7199
+ mediaService: NgxMediaService;
6922
7200
  constructor();
6923
7201
  ngOnInit(): void;
6924
7202
  ngAfterViewInit(): void;
@@ -6926,9 +7204,364 @@ declare class IconComponent implements OnInit, AfterViewInit {
6926
7204
  static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "ngx-decaf-icon", never, { "name": { "alias": "name"; "required": false; }; "color": { "alias": "color"; "required": false; }; "slot": { "alias": "slot"; "required": false; }; "button": { "alias": "button"; "required": false; }; "buttonFill": { "alias": "buttonFill"; "required": false; }; "buttonShape": { "alias": "buttonShape"; "required": false; }; "width": { "alias": "width"; "required": false; }; "size": { "alias": "size"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; }, {}, never, never, true, never>;
6927
7205
  }
6928
7206
 
7207
+ /**
7208
+ * @description File upload component for Angular applications.
7209
+ * @summary This component provides a user interface for uploading files with support for drag-and-drop,
7210
+ * file validation, and preview functionality. It integrates seamlessly with Angular reactive forms
7211
+ * and supports multiple file uploads, directory mode, and custom file size limits.
7212
+ *
7213
+ * @class FileUploadComponent
7214
+ * @example
7215
+ * ```typescript
7216
+ * <ngx-decaf-file-upload [formGroup]="formGroup" [name]="'fileInput'" [multiple]="true"></ngx-decaf-file-upload>
7217
+ * ```
7218
+ * @mermaid
7219
+ * sequenceDiagram
7220
+ * participant User
7221
+ * participant FileUploadComponent
7222
+ * User->>FileUploadComponent: Select or drag files
7223
+ * FileUploadComponent->>FileUploadComponent: Validate files
7224
+ * FileUploadComponent->>FileUploadComponent: Emit change event
7225
+ * User->>FileUploadComponent: Remove file
7226
+ * FileUploadComponent->>FileUploadComponent: Update file list
7227
+ */
7228
+ declare class FileUploadComponent extends NgxFormFieldDirective implements OnInit, OnDestroy {
7229
+ component: ElementRef<HTMLInputElement>;
7230
+ /**
7231
+ * @description Parent form group.
7232
+ * @summary References the parent form group to which this field belongs.
7233
+ * This is necessary for integrating the field with Angular's reactive forms.
7234
+ *
7235
+ * @type {FormGroup}
7236
+ */
7237
+ formGroup: FormGroup | undefined;
7238
+ /**
7239
+ * @summary The flat field name used as the form control identifier in immediate parent FormGroup.
7240
+ * @description Specifies the name of the field, which is used as the FormControl identifier in immediate parent FormGroup.
7241
+ * This value must be unique within the immediate parent FormGroup context and should not contain dots or nesting.
7242
+ *
7243
+ * @type {string}
7244
+ */
7245
+ name: string;
7246
+ /**
7247
+ * @description Angular FormControl instance for this field.
7248
+ * @summary The specific FormControl instance that manages this field's state, validation,
7249
+ * and value. This provides direct access to Angular's reactive forms functionality
7250
+ * for this individual field within the broader form structure.
7251
+ *
7252
+ * @type {FormControl}
7253
+ */
7254
+ formControl: FormControl;
7255
+ /**
7256
+ * @description Whether the field is required.
7257
+ * @summary When true, the field must have a value for the form to be valid.
7258
+ * Required fields are typically marked with an indicator in the UI.
7259
+ *
7260
+ * @type {boolean}
7261
+ */
7262
+ required?: boolean;
7263
+ /**
7264
+ * @description Allows multiple file selection.
7265
+ * @summary When true, the user can select multiple files for upload.
7266
+ *
7267
+ * @type {boolean}
7268
+ * @default false
7269
+ */
7270
+ multiple: boolean;
7271
+ /**
7272
+ * @description Specifies the input type for the file upload field.
7273
+ * @summary Defines the type of input element used for file uploads, such as file or directory.
7274
+ *
7275
+ * @type {PossibleInputTypes}
7276
+ * @default HTML5InputTypes.FILE
7277
+ */
7278
+ type: PossibleInputTypes;
7279
+ /**
7280
+ * @description Label for the file upload field.
7281
+ * @summary Provides a user-friendly label for the file upload input.
7282
+ *
7283
+ * @type {string | undefined}
7284
+ */
7285
+ label?: string;
7286
+ /**
7287
+ * @description Label for the upload button.
7288
+ * @summary Specifies the text displayed on the file upload button.
7289
+ *
7290
+ * @type {string | undefined}
7291
+ */
7292
+ buttonLabel?: string;
7293
+ /**
7294
+ * @description Size of the file upload component.
7295
+ * @summary Determines the visual size of the file upload component, such as large, small, or default.
7296
+ *
7297
+ * @type {Extract<ElementSize, 'large' | 'small' | 'default'>}
7298
+ * @default ElementSizes.large
7299
+ */
7300
+ size: Extract<ElementSize, 'large' | 'small' | 'default'>;
7301
+ /**
7302
+ * @description Flex positioning of the container's content.
7303
+ * @summary Controls how child elements are positioned within the container when flex layout
7304
+ * is enabled. Options include 'center', 'top', 'bottom', 'left', 'right', and combinations
7305
+ * like 'top-left'. This property is only applied when the flex property is true.
7306
+ *
7307
+ * @type {FlexPosition}
7308
+ * @default 'center'
7309
+ */
7310
+ position: FlexPosition;
7311
+ /**
7312
+ * @description Accepted file types for upload.
7313
+ * @summary Specifies the file types that are allowed for upload, such as images or documents.
7314
+ *
7315
+ * @type {string | string[]}
7316
+ * @default ['image/*']
7317
+ */
7318
+ accept: string | string[];
7319
+ /**
7320
+ * @description Whether to show an icon in the file upload field.
7321
+ * @summary When true, an icon is displayed alongside the file upload input.
7322
+ *
7323
+ * @type {boolean}
7324
+ * @default true
7325
+ */
7326
+ showIcon: boolean;
7327
+ /**
7328
+ * @description Enables directory mode for file uploads.
7329
+ * @summary When true, the user can upload entire directories instead of individual files.
7330
+ *
7331
+ * @type {boolean}
7332
+ * @default false
7333
+ */
7334
+ enableDirectoryMode: boolean;
7335
+ /**
7336
+ * @description Maximum file size allowed for upload.
7337
+ * @summary Specifies the maximum size (in MB) for files that can be uploaded.
7338
+ *
7339
+ * @type {number}
7340
+ * @default 1
7341
+ */
7342
+ maxFileSize: number;
7343
+ /**
7344
+ * @description Event emitted when the file upload field changes.
7345
+ * @summary Emits an event containing details about the change in the file upload field.
7346
+ *
7347
+ * @type {EventEmitter<IBaseCustomEvent>}
7348
+ */
7349
+ changeEvent: EventEmitter<IBaseCustomEvent>;
7350
+ /**
7351
+ * @description Preview of the first file in the upload list.
7352
+ * @summary Stores the data URL of the first file in the upload list for preview purposes.
7353
+ * This is typically used to display a thumbnail or preview image.
7354
+ *
7355
+ * @type {string | undefined}
7356
+ */
7357
+ preview: string | undefined;
7358
+ /**
7359
+ * @description List of files selected for upload.
7360
+ * @summary Contains the files selected by the user for upload. This array is updated
7361
+ * whenever files are added or removed from the upload list.
7362
+ *
7363
+ * @type {File[]}
7364
+ */
7365
+ files: File[];
7366
+ /**
7367
+ * @description List of errors encountered during file validation.
7368
+ * @summary Stores validation errors for files that do not meet the specified criteria,
7369
+ * such as file type or size restrictions. Each error includes the file name, size, and error message.
7370
+ *
7371
+ * @type {IFileUploadError[]}
7372
+ */
7373
+ errors: IFileUploadError[];
7374
+ /**
7375
+ * @description Indicates whether a drag operation is in progress.
7376
+ * @summary This flag is set to true when a file is being dragged over the upload area.
7377
+ * It is used to provide visual feedback to the user during drag-and-drop operations.
7378
+ *
7379
+ * @type {boolean}
7380
+ * @default false
7381
+ */
7382
+ dragging: boolean;
7383
+ /**
7384
+ * @description Counter for drag events.
7385
+ * @summary Tracks the number of drag events to ensure proper handling of drag-and-drop
7386
+ * operations. The counter is incremented on drag enter and decremented on drag leave.
7387
+ *
7388
+ * @type {number}
7389
+ * @default 0
7390
+ */
7391
+ private dragCounter;
7392
+ constructor();
7393
+ /**
7394
+ * @description Lifecycle hook that is called after Angular has initialized all data-bound properties of a directive.
7395
+ * @summary Sets up the component by enabling directory mode if specified, formatting the accepted file types,
7396
+ * and converting the maximum file size from megabytes to bytes.
7397
+ *
7398
+ * @returns {void}
7399
+ */
7400
+ ngOnInit(): void;
7401
+ /**
7402
+ * @description Lifecycle hook that is called when a directive, pipe, or service is destroyed.
7403
+ * @summary Cleans up the component by calling the parent ngOnDestroy method and clearing the file upload state.
7404
+ *
7405
+ * @returns {Promise<void> | void}
7406
+ */
7407
+ ngOnDestroy(): Promise<void> | void;
7408
+ /**
7409
+ * @description Handles the click event to trigger file selection.
7410
+ * @summary Simulates a click on the hidden file input element to open the file selection dialog.
7411
+ * This method is used to allow users to select files programmatically.
7412
+ *
7413
+ * @returns {void}
7414
+ */
7415
+ handleClickToSelect(): void;
7416
+ /**
7417
+ * @description Handles the file selection event.
7418
+ * @summary Processes the files selected by the user, validates them, and updates the file list.
7419
+ * This method is triggered when the user selects files using the file input element.
7420
+ *
7421
+ * @param {Event} event - The file selection event.
7422
+ * @returns {void}
7423
+ */
7424
+ handleSelection(event: Event): void;
7425
+ /**
7426
+ * @description Handles the drop event for drag-and-drop file uploads.
7427
+ * @summary Processes the files dropped by the user, validates them, and updates the file list.
7428
+ * This method is triggered when the user drops files onto the upload area.
7429
+ *
7430
+ * @param {DragEvent} event - The drag-and-drop event.
7431
+ * @returns {void}
7432
+ */
7433
+ handleDrop(event: DragEvent): void;
7434
+ /**
7435
+ * @description Handles the drag over event for drag-and-drop file uploads.
7436
+ * @summary Sets the dragging flag to true to provide visual feedback during drag-and-drop operations.
7437
+ * This method is triggered when the user drags files over the upload area.
7438
+ *
7439
+ * @param {DragEvent} event - The drag over event.
7440
+ * @returns {void}
7441
+ */
7442
+ handleDragOver(event: DragEvent): void;
7443
+ /**
7444
+ * @description Handles the drag leave event for drag-and-drop file uploads.
7445
+ * @summary Decrements the drag counter and clears the dragging flag when the counter reaches zero.
7446
+ * This method is triggered when the user drags files out of the upload area.
7447
+ *
7448
+ * @param {DragEvent} event - The drag leave event.
7449
+ * @returns {void}
7450
+ */
7451
+ handleDragLeave(event: DragEvent): void;
7452
+ /**
7453
+ * @description Clears the file list and validation errors.
7454
+ * @summary Resets the file upload component by clearing the selected files, preview, and errors.
7455
+ * This method is used to reset the component state.
7456
+ *
7457
+ * @returns {void}
7458
+ */
7459
+ handleClear(): void;
7460
+ /**
7461
+ * @description Confirms the file selection and updates the component state.
7462
+ * @summary Validates each file in the selection, updates the file list, and emits
7463
+ * the change event. If multiple or directory mode is enabled, adds files to the existing list.
7464
+ * Otherwise, replaces the existing files with the new selection.
7465
+ *
7466
+ * @param {File[]} files - The array of files selected by the user.
7467
+ * @returns {Promise<void>}
7468
+ */
7469
+ private handleSelectionConfirm;
7470
+ /**
7471
+ * @description Validates a single file against the component's constraints.
7472
+ * @summary Checks the file type and size against the accepted values and limits.
7473
+ * Returns true if the file is valid, or an error code if it is not.
7474
+ *
7475
+ * @param {File} file - The file to be validated.
7476
+ * @returns {true | string} - Returns true if valid, error code otherwise.
7477
+ */
7478
+ private validateFile;
7479
+ /**
7480
+ * @description Displays a preview of the selected file in a lightbox.
7481
+ * @summary If the file is an image, its data URL is retrieved and displayed in a modal lightbox.
7482
+ * The lightbox shows the image at its natural size, constrained to the viewport dimensions.
7483
+ *
7484
+ * @param {File | string} [file] - The file to be previewed. If not provided, the current preview file is used.
7485
+ * @returns {Promise<void>}
7486
+ */
7487
+ showFilePreview(file: File | string, fileExtension?: string): Promise<void>;
7488
+ /**
7489
+ * @description Checks if a file is an image based on its MIME type.
7490
+ * @summary Determines if the file can be accepted as an image by checking
7491
+ * if its type starts with 'image/'.
7492
+ *
7493
+ * @param {File} file - The file to be checked.
7494
+ * @returns {boolean} - True if the file is an image, false otherwise.
7495
+ */
7496
+ isImageFile(file: File): boolean;
7497
+ /**
7498
+ * @description Removes a file from the selection.
7499
+ * @summary Updates the file list to exclude the file at the specified index.
7500
+ * Emits the change event and updates the preview if necessary.
7501
+ *
7502
+ * @param {number} index - The index of the file to be removed.
7503
+ * @returns {Promise<void>}
7504
+ */
7505
+ removeFile(index: number): Promise<void>;
7506
+ /**
7507
+ * @description Retrieves the preview image for the selected files.
7508
+ * @summary If the first selected file is an image, its data URL is retrieved and set as the preview.
7509
+ * If the file is not an image, the preview is cleared.
7510
+ *
7511
+ * @returns {Promise<void>}
7512
+ */
7513
+ private getPreview;
7514
+ /**
7515
+ * @description Emits the change event for the file upload field.
7516
+ * @summary Triggers the change event, notifying any listeners that the value has changed.
7517
+ * The event contains the updated value, component name, and event type.
7518
+ *
7519
+ * @returns {void}
7520
+ */
7521
+ private changeEventEmit;
7522
+ /**
7523
+ * @description Retrieves the data URLs for the selected files.
7524
+ * @summary Converts the selected image files to data URLs using FileReader.
7525
+ * The resulting data URLs can be used for previewing images in the browser.
7526
+ *
7527
+ * @param {File[] | File} [files] - The files for which to generate data URLs.
7528
+ * If not provided, the currently selected files are used.
7529
+ *
7530
+ * @returns {Promise<string[] | undefined>} - A promise that resolves to an array of data URLs, or undefined if an error occurs.
7531
+ */
7532
+ private getDataURLs;
7533
+ /**
7534
+ * @description Validates the format of a data URL.
7535
+ * @summary Checks if the data URL is a non-empty string and matches the expected pattern
7536
+ * for base64-encoded image data URLs. Uses a regular expression to validate the format.
7537
+ *
7538
+ * @param {string | undefined} dataURL - The data URL to be validated.
7539
+ * @returns {boolean} - True if the data URL is valid, false otherwise.
7540
+ */
7541
+ private isValidDataURL;
7542
+ /**
7543
+ * @description Clears all error messages from the component.
7544
+ * @summary Resets the error state, removing all error messages from the display.
7545
+ *
7546
+ * @returns {void}
7547
+ */
7548
+ private clearErrors;
7549
+ /**
7550
+ * @description Reads the selected files as data URLs.
7551
+ * @summary Uses the FileReader API to read each file as a data URL.
7552
+ * Returns a promise that resolves to an array of data URLs.
7553
+ *
7554
+ * @param {File[]} files - The files to be read.
7555
+ * @returns {Promise<string[]>} - A promise that resolves to an array of data URLs.
7556
+ */
7557
+ private readFile;
7558
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadComponent, never>;
7559
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadComponent, "ngx-decaf-file-upload", never, { "formGroup": { "alias": "formGroup"; "required": false; }; "name": { "alias": "name"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "type": { "alias": "type"; "required": false; }; "label": { "alias": "label"; "required": false; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "position": { "alias": "position"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "enableDirectoryMode": { "alias": "enableDirectoryMode"; "required": false; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; }; }, { "changeEvent": "changeEvent"; }, never, never, true, never>;
7560
+ }
7561
+
6929
7562
  declare class ForAngularComponentsModule {
6930
7563
  static ɵfac: i0.ɵɵFactoryDeclaration<ForAngularComponentsModule, never>;
6931
- static ɵmod: i0.ɵɵNgModuleDeclaration<ForAngularComponentsModule, never, [typeof ModelRendererComponent, typeof ComponentRendererComponent, typeof CrudFieldComponent, typeof CrudFormComponent, typeof EmptyStateComponent, typeof ListComponent, typeof ListItemComponent, typeof SearchbarComponent, typeof PaginationComponent, typeof CrudFormComponent, typeof FieldsetComponent, typeof LayoutComponent, typeof FilterComponent, typeof SteppedFormComponent, typeof IconComponent, typeof CardComponent], [typeof ModelRendererComponent, typeof ComponentRendererComponent, typeof CrudFieldComponent, typeof CrudFormComponent, typeof EmptyStateComponent, typeof ListComponent, typeof ListItemComponent, typeof SearchbarComponent, typeof PaginationComponent, typeof CrudFormComponent, typeof FieldsetComponent, typeof LayoutComponent, typeof FilterComponent, typeof SteppedFormComponent, typeof IconComponent, typeof CardComponent]>;
7564
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ForAngularComponentsModule, never, [typeof ModelRendererComponent, typeof ComponentRendererComponent, typeof CrudFieldComponent, typeof CrudFormComponent, typeof EmptyStateComponent, typeof ListComponent, typeof ListItemComponent, typeof SearchbarComponent, typeof PaginationComponent, typeof CrudFormComponent, typeof FieldsetComponent, typeof LayoutComponent, typeof FilterComponent, typeof SteppedFormComponent, typeof IconComponent, typeof CardComponent, typeof FileUploadComponent], [typeof ModelRendererComponent, typeof ComponentRendererComponent, typeof CrudFieldComponent, typeof CrudFormComponent, typeof EmptyStateComponent, typeof ListComponent, typeof ListItemComponent, typeof SearchbarComponent, typeof PaginationComponent, typeof CrudFormComponent, typeof FieldsetComponent, typeof LayoutComponent, typeof FilterComponent, typeof SteppedFormComponent, typeof IconComponent, typeof CardComponent, typeof FileUploadComponent]>;
6932
7565
  static ɵinj: i0.ɵɵInjectorDeclaration<ForAngularComponentsModule>;
6933
7566
  }
6934
7567
 
@@ -7881,6 +8514,14 @@ declare abstract class NgxEventHandler<PAYLOAD> extends LoggedClass {
7881
8514
  * @memberOf module:lib/engine/NgxPageDirective
7882
8515
  */
7883
8516
  declare abstract class NgxPageDirective extends NgxComponentDirective implements OnInit, AfterViewInit {
8517
+ /**
8518
+ * @description Application name for display or identification purposes.
8519
+ * @summary Stores the name of the application, which can be used for display in headers,
8520
+ * titles, or for logging and identification throughout the app.
8521
+ * @type {string}
8522
+ * @memberOf module:lib/engine/NgxPageDirective
8523
+ */
8524
+ appName?: string;
7884
8525
  /**
7885
8526
  * @description Page title text for the current view.
7886
8527
  * @summary Stores the title text to be displayed for this page. This can be set dynamically
@@ -7992,7 +8633,7 @@ declare abstract class NgxPageDirective extends NgxComponentDirective implements
7992
8633
  * @return {void}
7993
8634
  * @memberOf module:lib/engine/NgxPageDirective
7994
8635
  */
7995
- protected setPageTitle(route?: string, menu?: IMenuItem[]): void;
8636
+ protected setPageTitle(route?: string, menu?: IMenuItem[]): Promise<void>;
7996
8637
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxPageDirective, never>;
7997
8638
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgxPageDirective, never, never, {}, {}, never, never, true, never>;
7998
8639
  }
@@ -8115,7 +8756,7 @@ declare abstract class NgxModelPageDirective extends NgxPageDirective {
8115
8756
  * @param {IBaseCustomEvent} event - The submit event containing form data
8116
8757
  * @return {Promise<IModelPageCustomEvent|void>} Promise that resolves on success or throws on error
8117
8758
  */
8118
- handleSubmit(event: IBaseCustomEvent): Promise<IModelPageCustomEvent | void>;
8759
+ handleSubmit(event: IBaseCustomEvent, redirect?: boolean): Promise<IModelPageCustomEvent | void>;
8119
8760
  /**
8120
8761
  * @description Retrieves a model instance from the repository by unique identifier.
8121
8762
  * @summary Fetches a specific model instance using the repository's read method.
@@ -8517,6 +9158,14 @@ declare class DecafFakerRepository<T extends Model> {
8517
9158
  }
8518
9159
  declare function getFakerData<T extends Model>(limit: number | undefined, data: Record<string, FunctionLike>, model?: string): T[];
8519
9160
 
9161
+ /**
9162
+ * @description Retrieves the locale context for a given class, object, or string.
9163
+ * @summary Resolves the locale context by extracting the class name or using the provided suffix.
9164
+ *
9165
+ * @param {FunctionLike | object | string} clazz - The class, object, or string to derive the locale context from.
9166
+ * @param {string} [suffix] - An optional suffix to append to the locale context.
9167
+ * @returns {string} - The resolved locale context string.
9168
+ */
8520
9169
  declare function getLocaleContext(clazz: FunctionLike | object | string, suffix?: string): string;
8521
9170
  /**
8522
9171
  * @description Generates a localized string by combining locale and phrase
@@ -8533,38 +9182,91 @@ declare function getLocaleContext(clazz: FunctionLike | object | string, suffix?
8533
9182
  * @memberOf module:for-angular
8534
9183
  */
8535
9184
  declare function getLocaleContextByKey(locale: string, phrase: string | undefined): string;
9185
+ /**
9186
+ * @description Factory function for creating an instance of I18nLoader.
9187
+ * @summary Configures and returns an I18nLoader instance with the specified HTTP client and translation resources.
9188
+ *
9189
+ * @param {HttpClient} http - The HTTP client used to fetch translation resources.
9190
+ * @returns {TranslateLoader} - An instance of I18nLoader configured with the provided HTTP client and resources.
9191
+ */
8536
9192
  declare function I18nLoaderFactory(http: HttpClient): TranslateLoader;
9193
+ /**
9194
+ * @description Provides the I18nLoader configuration.
9195
+ * @summary Configures the translation resources and versioned suffix for the I18nLoader.
9196
+ *
9197
+ * @param {I18nResourceConfigType} [resources=[]] - The translation resources to be used by the loader.
9198
+ * @param {boolean} [versionedSuffix=false] - Whether to append a versioned suffix to resource URLs.
9199
+ * @returns {object} - The configuration object for the I18nLoader.
9200
+ */
8537
9201
  declare function provideI18nLoader(resources?: I18nResourceConfigType, versionedSuffix?: boolean): {
8538
- provide: i0.InjectionToken<{
8539
- resources: I18nResourceConfig[];
8540
- versionedSuffix: boolean;
8541
- }>;
9202
+ provide: i0.InjectionToken<I18nToken>;
8542
9203
  useValue: {
8543
9204
  resources: I18nResourceConfig[];
8544
9205
  versionedSuffix: boolean;
8545
9206
  };
8546
9207
  };
9208
+ /**
9209
+ * @description Custom implementation of TranslateLoader for loading translations.
9210
+ * @summary Fetches and merges translation resources, supporting versioned suffixes and recursive merging.
9211
+ */
8547
9212
  declare class I18nLoader implements TranslateLoader {
8548
9213
  private http;
8549
9214
  private resources;
8550
9215
  private versionedSuffix;
9216
+ /**
9217
+ * @param {HttpClient} http - The HTTP client used to fetch translation resources.
9218
+ * @param {I18nResourceConfig[]} [resources=[]] - The translation resources to be loaded.
9219
+ * @param {boolean} [versionedSuffix=false] - Whether to append a versioned suffix to resource URLs.
9220
+ */
8551
9221
  constructor(http: HttpClient, resources?: I18nResourceConfig[], versionedSuffix?: boolean);
9222
+ /**
9223
+ * @description Appends a versioned suffix to the resource URL if enabled.
9224
+ * @summary Generates a versioned suffix based on the current date.
9225
+ *
9226
+ * @param {string} suffix - The original suffix of the resource URL.
9227
+ * @returns {string} - The modified suffix with a version string appended.
9228
+ */
8552
9229
  private getSuffix;
9230
+ /**
9231
+ * @description Fetches and merges translations for the specified language.
9232
+ * @summary Loads translation resources, merges them recursively, and includes library keys.
9233
+ *
9234
+ * @param {string} lang - The language code for the translations to load.
9235
+ * @returns {Observable<TranslationObject>} - An observable that emits the merged translation object.
9236
+ */
8553
9237
  getTranslation(lang: string): Observable<TranslationObject>;
8554
9238
  }
9239
+ /**
9240
+ * @description Custom implementation of TranslateParser for interpolation.
9241
+ * @summary Extends TranslateParser to support string formatting with parameters.
9242
+ */
8555
9243
  declare class I18nParser extends TranslateParser {
9244
+ /**
9245
+ * @description Interpolates a translation string with parameters.
9246
+ * @summary Replaces placeholders in the translation string with parameter values.
9247
+ *
9248
+ * @param {string} value - The translation string to interpolate.
9249
+ * @param {object | string} [params={}] - The parameters to replace placeholders with.
9250
+ * @returns {string} - The interpolated translation string.
9251
+ */
8556
9252
  interpolate(value: string, params?: object | string): string;
8557
9253
  }
8558
- declare function provideI18n(config?: RootTranslateServiceConfig, resources?: I18nResourceConfigType, versionedSuffix?: boolean): ({
8559
- provide: i0.InjectionToken<{
8560
- resources: I18nResourceConfig[];
8561
- versionedSuffix: boolean;
8562
- }>;
9254
+ /**
9255
+ * @description Provides the internationalization (i18n) configuration for the application.
9256
+ * @summary Configures the translation service with a fallback language, default language, custom parser, and loader.
9257
+ *
9258
+ * @param {RootTranslateServiceConfig} [config={fallbackLang: 'en', lang: 'en'}] - The configuration for the translation service, including fallback and default languages.
9259
+ * @param {I18nResourceConfigType} [resources=[]] - The translation resources to be used by the loader.
9260
+ * @param {boolean} [versionedSuffix=false] - Whether to append a versioned suffix to resource URLs.
9261
+ * @returns {Array} - An array of providers for the translation service and loader.
9262
+ */
9263
+ declare function provideI18n(config?: RootTranslateServiceConfig, resources?: I18nResourceConfigType, versionedSuffix?: boolean): (i0.EnvironmentProviders | {
9264
+ provide: i0.InjectionToken<I18nToken>;
8563
9265
  useValue: {
8564
9266
  resources: I18nResourceConfig[];
8565
9267
  versionedSuffix: boolean;
8566
9268
  };
8567
- } | i0.EnvironmentProviders | i0.Provider[])[];
9269
+ } | i0.Provider[])[];
8568
9270
 
8569
9271
  /**
8570
9272
  * @module lib/for-angular-common.module
@@ -8619,20 +9321,17 @@ declare const CPTKN: InjectionToken<unknown>;
8619
9321
  * @summary Used to provide configuration for internationalization resources, including
8620
9322
  * translation file locations and supported languages. This token configures how the
8621
9323
  * application loads and manages translation resources.
8622
- * @const {InjectionToken<{resources: I18nResourceConfig[]; versionedSuffix: boolean}>}
9324
+ * @const {InjectionToken<I18nToken>}
8623
9325
  * @memberOf module:lib/for-angular-common.module
8624
9326
  */
8625
- declare const I18N_CONFIG_TOKEN: InjectionToken<{
8626
- resources: I18nResourceConfig[];
8627
- versionedSuffix: boolean;
8628
- }>;
9327
+ declare const I18N_CONFIG_TOKEN: InjectionToken<I18nToken>;
8629
9328
  /**
8630
9329
  * @description Provides an array of component types for dynamic rendering.
8631
9330
  * @summary Helper function to package component constructors for registration with the
8632
9331
  * rendering engine. This function accepts component classes and returns them as an array
8633
9332
  * suitable for use with the CPTKN injection token.
8634
- * @param {...Constructor<unknown>[]} components - Component constructor classes to register
8635
- * @return {Constructor<unknown>[]} Array of component constructors
9333
+ * @param {...Constructor[]} components - Component constructor classes to register
9334
+ * @return {Constructor} Array of component constructors
8636
9335
  * @memberOf module:lib/for-angular-common.module
8637
9336
  * @example
8638
9337
  * // Register multiple custom components
@@ -8747,5 +9446,5 @@ declare class ForAngularCommonModule {
8747
9446
  static ɵinj: i0.ɵɵInjectorDeclaration<ForAngularCommonModule>;
8748
9447
  }
8749
9448
 
8750
- export { ActionRoles, AngularEngineKeys, BaseComponentProps, CPTKN, CardComponent, ComponentRendererComponent, ComponentsTagNames, CrudFieldComponent, CrudFormComponent, CssClasses, DB_ADAPTER_PROVIDER, DB_ADAPTER_PROVIDER_TOKEN, DecafFakerRepository, DefaultFormReactiveOptions, DefaultListEmptyOptions, DefaultModalOptions, Dynamic, DynamicModule, ElementSizes, EmptyStateComponent, EventConstants, FieldsetComponent, FilterComponent, ForAngularCommonModule, ForAngularComponentsModule, FormConstants, I18N_CONFIG_TOKEN, I18nLoader, I18nLoaderFactory, I18nParser, IconComponent, LOCALE_ROOT_TOKEN, LayoutComponent, LayoutGridGaps, ListComponent, ListComponentsTypes, ListItemComponent, LoggerLevels, ModalComponent, ModelRendererComponent, NgxComponentDirective, NgxEventHandler, NgxFormDirective, NgxFormFieldDirective, NgxFormService, NgxMediaService, NgxModelPageDirective, NgxPageDirective, NgxParentComponentDirective, NgxRenderingEngine, NgxSvgDirective, PaginationComponent, RouteDirections, SearchbarComponent, SteppedFormComponent, WindowColorSchemes, cleanSpaces, dataMapper, filterString, formatDate, generateRandomValue, getFakerData, getInjectablesRegistry, getLocaleContext, getLocaleContextByKey, getLocaleFromClassName, getLocaleLanguage, getLogger, getModelRepository, getNgxModalComponent, getOnWindow, getOnWindowDocument, getWindow, getWindowDocument, getWindowWidth, isDarkMode, isDevelopmentMode, isNotUndefined, isValidDate, itemMapper, parseToValidDate, provideDbAdapter, provideDynamicComponents, provideI18n, provideI18nLoader, removeFocusTrap, setOnWindow, stringToBoolean, windowEventEmitter };
8751
- export type { ActionRole, AngularDynamicOutput, AngularFieldDefinition, CheckboxOption, ComponentMetadata, CrudFieldOption, DecafRepository, DecafRepositoryAdapter, ElementPositions, ElementSize, FieldUpdateMode, FlexPositions, FormParent, FormParentGroup, FormServiceControl, FormServiceControls, FunctionLike, HTMLFormTarget, HandlerLike, I18nResourceConfig, I18nResourceConfigType, IBaseCustomEvent, IComponentConfig, IComponentHolder, IComponentProperties, ICrudFormEvent, ICrudFormOptions, IFieldSetItem, IFieldSetValidationEvent, IFilterQuery, IFilterQueryItem, IFormComponentProperties, IFormElement, IFormReactiveSubmitEvent, IListComponentRefreshEvent, IListEmptyOptions, IMenuItem, IModelPageCustomEvent, IPaginationCustomEvent, IRenderedModel, ISortObject, IWindowResizeEvent, InputOption, KeyValue, LayoutGridGap, ListItemCustomEvent, PossibleInputTypes, RadioOption, RawQuery, SelectOption, StringOrBoolean, WindowColorScheme };
9449
+ export { ActionRoles, AngularEngineKeys, BaseComponentProps, CPTKN, CardComponent, ComponentEventNames, ComponentRendererComponent, ComponentsTagNames, CrudFieldComponent, CrudFormComponent, CssClasses, DB_ADAPTER_PROVIDER, DB_ADAPTER_PROVIDER_TOKEN, DecafFakerRepository, DefaultFormReactiveOptions, DefaultListEmptyOptions, DefaultModalOptions, Dynamic, DynamicModule, ElementPositions, ElementSizes, EmptyStateComponent, FieldsetComponent, FileUploadComponent, FilterComponent, ForAngularCommonModule, ForAngularComponentsModule, FormConstants, I18N_CONFIG_TOKEN, I18nLoader, I18nLoaderFactory, I18nParser, IconComponent, LOCALE_ROOT_TOKEN, LayoutComponent, LayoutGridGaps, ListComponent, ListComponentsTypes, ListItemComponent, ListItemPositions, LoggerLevels, ModalComponent, ModelRendererComponent, NgxComponentDirective, NgxEventHandler, NgxFormDirective, NgxFormFieldDirective, NgxFormService, NgxMediaService, NgxModelPageDirective, NgxPageDirective, NgxParentComponentDirective, NgxRenderingEngine, NgxSvgDirective, PaginationComponent, RouteDirections, SearchbarComponent, SteppedFormComponent, WindowColorSchemes, cleanSpaces, dataMapper, filterString, formatDate, generateRandomValue, getFakerData, getInjectablesRegistry, getLocaleContext, getLocaleContextByKey, getLocaleFromClassName, getLocaleLanguage, getLogger, getModelRepository, getNgxModalComponent, getNgxSelectOptionsModal, getOnWindow, getOnWindowDocument, getWindow, getWindowDocument, getWindowWidth, isDarkMode, isDevelopmentMode, isNotUndefined, isValidDate, itemMapper, parseToValidDate, presentNgxLightBoxModal, provideDbAdapter, provideDynamicComponents, provideI18n, provideI18nLoader, removeFocusTrap, setOnWindow, stringToBoolean, windowEventEmitter };
9450
+ export type { ActionRole, AngularDynamicOutput, AngularFieldDefinition, CheckboxOption, ComponentMetadata, CrudFieldOption, DecafRepository, DecafRepositoryAdapter, ElementPosition, ElementSize, FieldUpdateMode, FlexPosition, FormParent, FormParentGroup, FormServiceControl, FormServiceControls, FunctionLike, HTML5InputType, HTMLFormTarget, HandlerLike, I18nResourceConfig, I18nResourceConfigType, I18nToken, IBaseCustomEvent, IComponentConfig, IComponentHolder, IComponentProperties, ICrudFormEvent, ICrudFormOptions, IFieldSetItem, IFieldSetValidationEvent, IFileUploadError, IFilterQuery, IFilterQueryItem, IFormComponentProperties, IFormElement, IFormReactiveSubmitEvent, IListComponentRefreshEvent, IListEmptyOptions, IMenuItem, IModelPageCustomEvent, IPaginationCustomEvent, IRenderedModel, ISortObject, IWindowResizeEvent, InputOption, KeyValue, LayoutGridGap, ListItemCustomEvent, ListItemPosition, PossibleInputTypes, RadioOption, RawQuery, SelectOption, StringOrBoolean, WindowColorScheme };